#!/usr/bin/env bash
set -eu
os=$(uname -s)
linux_headless() {
  case "${DGE_ENROLL_HEADLESS:-}" in 1|true|yes|TRUE|YES) return 0 ;; esac
  [ -z "${DISPLAY:-}" ] && [ -z "${WAYLAND_DISPLAY:-}" ]
}
if [ "$os" != Linux ] && [ "$os" != Darwin ]; then
  echo 'This file is for Linux, macOS, or Ubuntu in WSL. On Windows, download Dorian Gray Worker.cmd from the setup page and open it.'
  exit 1
fi
if [ "$os" = Linux ] && [ ! -d /run/systemd/system ]; then
  echo 'This installer needs a Linux machine running systemd.'
  exit 1
fi
if [ "$os" = Darwin ] && [ "$(id -u)" -eq 0 ]; then
  echo 'Do not run this installer with sudo on a Mac. Run it as yourself.'
  exit 1
fi
if [ "$os" = Linux ] && [ "$(id -u)" -ne 0 ]; then
  echo 'Your computer may ask for its administrator password. It stays on this computer.'
  if ! linux_headless && command -v pkexec >/dev/null 2>&1 && { [ -n "${DISPLAY:-}" ] || [ -n "${WAYLAND_DISPLAY:-}" ]; }; then
    exec pkexec env DISPLAY="${DISPLAY:-}" WAYLAND_DISPLAY="${WAYLAND_DISPLAY:-}" XAUTHORITY="${XAUTHORITY:-}" \
      DGE_ENROLL_NAME="${DGE_ENROLL_NAME:-}" DGE_ENROLL_EMAIL="${DGE_ENROLL_EMAIL:-}" \
      DGE_ENROLL_PHONE="${DGE_ENROLL_PHONE:-}" DGE_ENROLL_NOTE="${DGE_ENROLL_NOTE:-}" \
      DGE_ENROLL_HEADLESS="${DGE_ENROLL_HEADLESS:-}" bash "$0"
  fi
  exec sudo \
    DGE_ENROLL_NAME="${DGE_ENROLL_NAME:-}" DGE_ENROLL_EMAIL="${DGE_ENROLL_EMAIL:-}" \
    DGE_ENROLL_PHONE="${DGE_ENROLL_PHONE:-}" DGE_ENROLL_NOTE="${DGE_ENROLL_NOTE:-}" \
    DGE_ENROLL_HEADLESS="${DGE_ENROLL_HEADLESS:-}" bash "$0"
fi
gui_user="${SUDO_USER:-}"
if [ -z "$gui_user" ] && [ -n "${PKEXEC_UID:-}" ]; then
  gui_user=$(getent passwd "$PKEXEC_UID" | cut -d: -f1 || true)
fi
unset DOCKER_HOST DOCKER_CONTEXT
python_bin=python3
umask 077
bootstrap_log=""
trap 'if [ -n "$bootstrap_log" ]; then rm -f "$bootstrap_log"; fi' EXIT
printf '\nDGE Worker Setup\nPreparing this computer to run background tasks.\n\n'
macos_python_ok() {
  [ -x "$1" ] && "$1" -c 'import sys; assert sys.version_info >= (3, 11)' >/dev/null 2>&1
}
macos_python() {
  local candidate
  local globbed
  globbed=()
  shopt -s nullglob
  globbed+=(
    /usr/local/Cellar/python@3.*/*/bin/python3.*
    /opt/homebrew/Cellar/python@3.*/*/bin/python3.*
  )
  shopt -u nullglob
  for candidate in "${globbed[@]}" \
      /usr/local/opt/python@3/bin/python3 \
      /opt/homebrew/opt/python@3/bin/python3 \
      /usr/local/opt/python@3.12/bin/python3.12 \
      /usr/local/opt/python@3.13/bin/python3.13 \
      /opt/homebrew/opt/python@3.12/bin/python3.12 \
      /opt/homebrew/opt/python@3.13/bin/python3.13 \
      /usr/local/bin/python3 \
      /opt/homebrew/bin/python3 \
      /usr/bin/python3 \
      python3; do
    case "$candidate" in *config*) continue ;; esac
    if macos_python_ok "$candidate"; then
      echo "$candidate"
      return 0
    fi
  done
  return 1
}
find_macos_brew() {
  export PATH="/opt/homebrew/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:${PATH:-}"
  if command -v brew >/dev/null 2>&1; then
    command -v brew
    return 0
  fi
  local candidate
  for candidate in /opt/homebrew/bin/brew /usr/local/bin/brew; do
    if [ -x "$candidate" ]; then
      echo "$candidate"
      return 0
    fi
  done
  return 1
}
install_macos_homebrew() {
  echo 'Installing Homebrew. macOS will ask for your password.' >&2
  if [[ ! -r /dev/tty || ! -w /dev/tty ]]; then
    echo 'Homebrew needs a terminal so macOS can ask for your password. Open Terminal and run this installer again.' >&2
    return 1
  fi
  local script file installer_pid watchdog_pid result elapsed timeout_marker
  bootstrap_log=$(mktemp "${TMPDIR:-/tmp}/dge-homebrew-log.XXXXXX")
  export DGE_BOOTSTRAP_LOG="$bootstrap_log"
  printf '%s\n' 'Installing Homebrew' >> "$bootstrap_log"
  if ! script=$(curl --connect-timeout 15 --max-time 120 -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh); then
    echo 'Could not download Homebrew. Check the network and run this installer again.' >&2
    return 1
  fi
  file=$(mktemp "${TMPDIR:-/tmp}/dge-homebrew.XXXXXX")
  timeout_marker="$file.timeout"
  printf '%s\n' "$script" > "$file"
  echo 'Homebrew installer downloaded. Starting installation...' >&2
  printf '%s\n' 'Homebrew installer downloaded. Starting installation...' >> "$bootstrap_log"
  # Homebrew treats a non-terminal stdin as "no sudo" and then says the account
  # is not an administrator. Give it the terminal so sudo can prompt.
  env -u NONINTERACTIVE -u CI INTERACTIVE=1 /bin/bash "$file" </dev/tty > >(tee -a "$bootstrap_log") 2>&1 &
  installer_pid=$!
  (
    elapsed=0
    while [ "$elapsed" -lt 600 ]; do
      sleep 15
      if ! kill -0 "$installer_pid" 2>/dev/null; then exit 0; fi
      elapsed=$((elapsed + 15))
      if [ "$elapsed" -ge 600 ]; then
        echo 'Homebrew did not finish within 10 minutes. Check your Mac network, then run setup again.' >&2
        printf '%s\n' 'Error: Homebrew timed out after 10 minutes' >> "$bootstrap_log"
        : > "$timeout_marker"
        kill -TERM "$installer_pid" 2>/dev/null || true
        sleep 5
        kill -KILL "$installer_pid" 2>/dev/null || true
      elif [ $((elapsed % 60)) -eq 0 ]; then
        echo 'Homebrew is still installing. This may include Apple Command Line Tools...' >&2
        printf '%s\n' 'Homebrew is still installing' >> "$bootstrap_log"
      fi
    done
  ) &
  watchdog_pid=$!
  if wait "$installer_pid"; then result=0; else result=$?; fi
  kill "$watchdog_pid" 2>/dev/null || true
  wait "$watchdog_pid" 2>/dev/null || true
  rm -f "$file"
  if [ -f "$timeout_marker" ]; then
    rm -f "$timeout_marker"
    return 1
  fi
  if [ "$result" -ne 0 ]; then
    echo 'Could not install Homebrew. Enter your Mac password when asked and run this installer again.' >&2
    return 1
  fi
  export PATH="/opt/homebrew/bin:/usr/local/bin:${PATH:-}"
}
ensure_macos_python() {
  local found brew
  found=$(macos_python) || found=""
  if [ -n "$found" ]; then
    printf '%s\n' "$found"
    return 0
  fi
  echo 'Installing Python 3. This may take a few minutes...' >&2
  brew=$(find_macos_brew) || brew=""
  if [ -z "$brew" ]; then
    install_macos_homebrew || return 1
    brew=$(find_macos_brew) || brew=""
  fi
  if [ -z "$brew" ]; then
    echo 'Could not install Homebrew. Approve the password prompt and run this installer again.' >&2
    return 1
  fi
  if ! "$brew" install python; then
    echo 'Could not install Python 3. Check the network, approve any password prompt, and run this installer again.' >&2
    return 1
  fi
  export PATH="/opt/homebrew/bin:/usr/local/bin:${PATH:-}"
  found=$(macos_python) || found=""
  if [ -z "$found" ]; then
    echo 'Python 3.11 or newer is required and could not be installed automatically. Check the network and run this installer again.' >&2
    return 1
  fi
  python_bin="$found"
}
if [ "$os" = Darwin ]; then
  export PATH="/opt/homebrew/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:$PATH"
  if [ -n "${SSH_CONNECTION:-}" ] && [ "${DGE_MAC_AQUA_LAUNCHED:-}" != 1 ]; then
    case "${DGE_ENROLL_HEADLESS:-}" in 1|true|yes|TRUE|YES) ;; *)
      script_file=$(cd "$(dirname "$0")" && pwd)/$(basename "$0")
      inner=$(printf 'export DGE_MAC_AQUA_LAUNCHED=1; exec bash %q' "$script_file")
      as=${inner//\\/\\\\}
      as=${as//\"/\\\"}
      osascript -e 'tell application "Terminal" to activate' \
        -e "tell application \"Terminal\" to do script \"$as\""
      exit 0
    ;; esac
  fi
  ensure_macos_python || exit 1
  setup_directory=$(mktemp -d "${TMPDIR:-/tmp}/dge-worker-install.XXXXXX")
else
  if ! python3 -c 'import sys; assert sys.version_info >= (3, 11)' >/dev/null 2>&1; then
    . /etc/os-release
    case "${ID}:${VERSION_ID}" in
      ubuntu:24.*|ubuntu:25.*|ubuntu:26.*|debian:12|debian:13)
        echo 'Installing Python. This may take a few minutes...'
        apt-get update -qq && apt-get install -y -qq python3 ca-certificates || { echo 'Python installation failed. Check your internet connection and run setup again.'; exit 1; }
        ;;
      *) echo 'This Linux version needs Python 3.11 or newer installed first. Ask your administrator for help, then run this installer again.'; exit 1 ;;
    esac
  fi
  python3 -c 'import sys; assert sys.version_info >= (3, 11)' || { echo 'Python 3.11 or newer is required.'; exit 1; }
  setup_directory=$(mktemp -d /run/dge-worker-install.XXXXXX)
fi
trap 'rm -rf "$setup_directory"; if [ -n "$bootstrap_log" ]; then rm -f "$bootstrap_log"; fi' EXIT
cat > "$setup_directory/payload" <<'DGE_SETUP_PAYLOAD'
eyJob3N0X2FwcC5weSI6IiMhL3Vzci9iaW4vZW52IHB5dGhvbjNcblwiXCJcIkluc3RhbGwgYSBkdXJhYmxlIERvcmlhbiBHcmF5IFdvcmtlciBsYXVuY2hlciBzbyB2b2x1bnRlZXJzIHJlb3BlbiBpdCBsaWtlIGFueSBvdGhlciBhcHAuXCJcIlwiXG5pbXBvcnQgYmFzZTY0XG5pbXBvcnQganNvblxuaW1wb3J0IG9zXG5pbXBvcnQgcHdkXG5pbXBvcnQgc2hsZXhcbmltcG9ydCBzaHV0aWxcbmltcG9ydCBzdWJwcm9jZXNzXG5pbXBvcnQgc3lzXG5pbXBvcnQgdXJsbGliLmVycm9yXG5pbXBvcnQgdXJsbGliLnJlcXVlc3RcbmZyb20gcGF0aGxpYiBpbXBvcnQgUGF0aFxuXG5BUFBfTkFNRSA9ICdEb3JpYW4gR3JheSBXb3JrZXInXG5BUFBfSUQgPSAnY29tLmRnZS53b3JrZXInXG5MSU5VWF9JQ09OX05BTUUgPSAnZGdlLXdvcmtlci1zZXR1cCdcbkxJTlVYX1dNX0NMQVNTID0gJ0RHRVdvcmtlclNldHVwJ1xuSE9TVF9BUFBfRU5WID0gJ0RHRV9IT1NUX0FQUCdcbkZJTEVTID0gKFxuICAgICdob3N0X2FwcC5weScsXG4gICAgJ2hvc3RfZ3VpLnB5JyxcbiAgICAnaG9zdF93ZWIuaHRtbCcsXG4gICAgJ2hvc3RfaW52ZW50b3J5LnB5JyxcbiAgICAnaG9zdF9pbnZlbnRvcnkucHMxJyxcbiAgICAnZGdlLWljb24ucG5nJyxcbiAgICAnZGdlLWljb24uaWNvJyxcbiAgICAnZGdlLWljb24ueHBtJyxcbiAgICAnY29uZmlnLmpzb24nLFxuICAgICdpbnN0YWxsLnB5JyxcbiAgICAnaW5zdGFsbF9tYWNvcy5weScsXG4gICAgJ3NldHVwX2xvZ19yZXBvcnRlci5weScsXG4gICAgJ21hY29zX3IyX3Byb3h5LnB5JyxcbiAgICAncHJlcGFyZV9tYWNoaW5lLnB5JyxcbiAgICAnc2V0dXAucHknLFxuICAgICdhZ2VudC5weScsXG4gICAgJ2xhdW5jaGVyLnB5JyxcbiAgICAndW5pbnN0YWxsLnB5JyxcbiAgICAnaW52aXRhdGlvbi5qc29uJyxcbilcblJFRlJFU0hfTkFNRVMgPSAoXG4gICAgJ2hvc3RfYXBwLnB5JyxcbiAgICAnaG9zdF9ndWkucHknLFxuICAgICdob3N0X3dlYi5odG1sJyxcbiAgICAnaG9zdF9pbnZlbnRvcnkucHknLFxuICAgICdob3N0X2ludmVudG9yeS5wczEnLFxuICAgICdzZXR1cC5weScsXG4gICAgJ2luc3RhbGwucHknLFxuICAgICdpbnN0YWxsX21hY29zLnB5JyxcbiAgICAnc2V0dXBfbG9nX3JlcG9ydGVyLnB5JyxcbiAgICAnbWFjb3NfcjJfcHJveHkucHknLFxuICAgICdwcmVwYXJlX21hY2hpbmUucHknLFxuICAgICdsYXVuY2hlci5weScsXG4gICAgJ3VuaW5zdGFsbC5weScsXG4gICAgJ2FnZW50LnB5JyxcbiAgICAnZGdlLWljb24ucG5nJyxcbiAgICAnZGdlLWljb24uaWNvJyxcbiAgICAnZGdlLWljb24ueHBtJyxcbilcblxuXG5kZWYgc291cmNlX3Jvb3QoKTpcbiAgICByZXR1cm4gUGF0aChfX2ZpbGVfXykucmVzb2x2ZSgpLnBhcmVudFxuXG5cbmRlZiBydW5uaW5nX2luX3dzbCgpOlxuICAgIGlmIG9zLmVudmlyb24uZ2V0KCdXU0xfRElTVFJPX05BTUUnKTpcbiAgICAgICAgcmV0dXJuIFRydWVcbiAgICB0cnk6XG4gICAgICAgIHJldHVybiAnbWljcm9zb2Z0JyBpbiBQYXRoKCcvcHJvYy92ZXJzaW9uJykucmVhZF90ZXh0KCkubG93ZXIoKVxuICAgIGV4Y2VwdCBPU0Vycm9yOlxuICAgICAgICByZXR1cm4gRmFsc2VcblxuXG5kZWYgZ3VpX3VzZXIoKTpcbiAgICBpZiBvcy5nZXRldWlkKCkgIT0gMDpcbiAgICAgICAgcmV0dXJuIHB3ZC5nZXRwd3VpZChvcy5nZXR1aWQoKSlcbiAgICBuYW1lID0gb3MuZW52aXJvbi5nZXQoJ1NVRE9fVVNFUicpXG4gICAgaWYgbmFtZSBhbmQgbmFtZSAhPSAncm9vdCc6XG4gICAgICAgIHJldHVybiBwd2QuZ2V0cHduYW0obmFtZSlcbiAgICB1aWQgPSBvcy5lbnZpcm9uLmdldCgnUEtFWEVDX1VJRCcpXG4gICAgaWYgdWlkIGFuZCB1aWQuaXNkaWdpdCgpIGFuZCBpbnQodWlkKSAhPSAwOlxuICAgICAgICByZXR1cm4gcHdkLmdldHB3dWlkKGludCh1aWQpKVxuICAgIHJldHVybiBwd2QuZ2V0cHd1aWQoMClcblxuXG5kZWYgZ3VpX2hvbWUoKTpcbiAgICByZXR1cm4gUGF0aChndWlfdXNlcigpLnB3X2RpcilcblxuXG5kZWYgbWFjX2FwcF9idW5kbGUoKTpcbiAgICByZXR1cm4gZ3VpX2hvbWUoKSAvICdBcHBsaWNhdGlvbnMnIC8gKEFQUF9OQU1FICsgJy5hcHAnKVxuXG5cbmRlZiBhcHBfaW5zdGFsbF9kaXIoKTpcbiAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ2Rhcndpbic6XG4gICAgICAgIHJldHVybiBtYWNfYXBwX2J1bmRsZSgpIC8gJ0NvbnRlbnRzJyAvICdSZXNvdXJjZXMnIC8gJ2FwcCdcbiAgICBpZiBydW5uaW5nX2luX3dzbCgpOlxuICAgICAgICByZXR1cm4gUGF0aCgnL29wdC9kZ2Utd29ya2VyL2hvc3QtdWknKVxuICAgIHJldHVybiBndWlfaG9tZSgpIC8gJy5sb2NhbCcgLyAnc2hhcmUnIC8gJ2RnZS13b3JrZXInIC8gJ2hvc3QtdWknXG5cblxuZGVmIHB5dGhvbl9mb3JfbGF1bmNoKCk6XG4gICAgZXhlID0gUGF0aChzeXMuZXhlY3V0YWJsZSkucmVzb2x2ZSgpXG4gICAgaWYgZXhlLm5hbWUgPT0gJ1B5dGhvbicgYW5kICdQeXRob24uYXBwJyBpbiBzdHIoZXhlKTpcbiAgICAgICAgY2FuZGlkYXRlID0gZXhlLnBhcmVudHNbM10gLyAnYmluJyAvICdweXRob24zJ1xuICAgICAgICBpZiBjYW5kaWRhdGUuZXhpc3RzKCk6XG4gICAgICAgICAgICByZXR1cm4gc3RyKGNhbmRpZGF0ZSlcbiAgICByZXR1cm4gc3RyKGV4ZSlcblxuXG5kZWYgY2hvd25fdHJlZShwYXRoLCB1c2VyKTpcbiAgICBpZiBvcy5nZXRldWlkKCkgIT0gMCBvciB1c2VyLnB3X3VpZCA9PSAwOlxuICAgICAgICByZXR1cm5cbiAgICBmb3Igcm9vdCwgZGlycywgZmlsZXMgaW4gb3Mud2FsayhwYXRoKTpcbiAgICAgICAgb3MuY2hvd24ocm9vdCwgdXNlci5wd191aWQsIHVzZXIucHdfZ2lkKVxuICAgICAgICBmb3IgbmFtZSBpbiBkaXJzICsgZmlsZXM6XG4gICAgICAgICAgICBvcy5jaG93bihvcy5wYXRoLmpvaW4ocm9vdCwgbmFtZSksIHVzZXIucHdfdWlkLCB1c2VyLnB3X2dpZClcblxuXG5kZWYgY29weV9hcHBfZmlsZXMoZGVzdCwgc2NyaXB0X3BhdGgpOlxuICAgIGRlc3QubWtkaXIocGFyZW50cz1UcnVlLCBleGlzdF9vaz1UcnVlKVxuICAgIGRlc3QuY2htb2QoMG83NTUpXG4gICAgaWYgc3RyKGRlc3QpLnN0YXJ0c3dpdGgoJy9vcHQvZGdlLXdvcmtlcicpOlxuICAgICAgICBkZXN0LnBhcmVudC5ta2RpcihwYXJlbnRzPVRydWUsIGV4aXN0X29rPVRydWUpXG4gICAgICAgIGRlc3QucGFyZW50LmNobW9kKDBvNzU1KVxuICAgIHNyY19yb290ID0gc291cmNlX3Jvb3QoKVxuICAgIGZvciBuYW1lIGluIEZJTEVTOlxuICAgICAgICBzcmMgPSBzcmNfcm9vdCAvIG5hbWVcbiAgICAgICAgaWYgbm90IHNyYy5leGlzdHMoKTpcbiAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIHRhcmdldCA9IGRlc3QgLyBuYW1lXG4gICAgICAgIGlmIHNyYy5yZXNvbHZlKCkgPT0gdGFyZ2V0LnJlc29sdmUoKTpcbiAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIGlmIG5hbWUgPT0gJ2ludml0YXRpb24uanNvbicgYW5kIHRhcmdldC5leGlzdHMoKTpcbiAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIHNodXRpbC5jb3B5MihzcmMsIHRhcmdldClcbiAgICBpbnN0YWxsZXIgPSBQYXRoKHNjcmlwdF9wYXRoKSBpZiBzY3JpcHRfcGF0aCBlbHNlIE5vbmVcbiAgICBpZiBpbnN0YWxsZXIgYW5kIGluc3RhbGxlci5leGlzdHMoKSBhbmQgaW5zdGFsbGVyLnN1ZmZpeCBpbiAoJy5zaCcsICcuY29tbWFuZCcsICcucHMxJywgJy5jbWQnKTpcbiAgICAgICAgdGFyZ2V0ID0gZGVzdCAvICgnc2V0dXAtd29ya2VyJyArIGluc3RhbGxlci5zdWZmaXgpXG4gICAgICAgIGlmIGluc3RhbGxlci5yZXNvbHZlKCkgIT0gdGFyZ2V0LnJlc29sdmUoKTpcbiAgICAgICAgICAgIHNodXRpbC5jb3B5MihpbnN0YWxsZXIsIHRhcmdldClcbiAgICAoZGVzdCAvICdweXRob24ucGF0aCcpLndyaXRlX3RleHQocHl0aG9uX2Zvcl9sYXVuY2goKSArICdcXG4nKVxuICAgIGZvciBwYXRoIGluIGRlc3QuaXRlcmRpcigpOlxuICAgICAgICBpZiBwYXRoLnN1ZmZpeCBpbiAoJy5qc29uJywpOlxuICAgICAgICAgICAgcGF0aC5jaG1vZCgwbzYwMClcbiAgICAgICAgZWxpZiBwYXRoLmlzX2ZpbGUoKTpcbiAgICAgICAgICAgIHBhdGguY2htb2QoMG83NTUgaWYgcGF0aC5zdWZmaXggaW4gKCcucHknLCAnLnNoJywgJy5jb21tYW5kJykgZWxzZSAwbzY0NClcblxuXG5kZWYgY29uZmlndXJlZF9vcmlnaW4oKTpcbiAgICBwYXRoID0gc291cmNlX3Jvb3QoKSAvICdjb25maWcuanNvbidcbiAgICBpZiBub3QgcGF0aC5leGlzdHMoKTpcbiAgICAgICAgcmV0dXJuIE5vbmVcbiAgICB0cnk6XG4gICAgICAgIHJldHVybiBqc29uLmxvYWRzKHBhdGgucmVhZF90ZXh0KCkpLmdldCgnb3JpZ2luJylcbiAgICBleGNlcHQgKE9TRXJyb3IsIGpzb24uSlNPTkRlY29kZUVycm9yKTpcbiAgICAgICAgcmV0dXJuIE5vbmVcblxuXG5kZWYgZmlsZV9ieXRlcyhlbnRyeSk6XG4gICAgYm9keSA9IChlbnRyeSBvciB7fSkuZ2V0KCdib2R5JylcbiAgICBlbmNvZGluZyA9IChlbnRyeSBvciB7fSkuZ2V0KCdlbmNvZGluZycpXG4gICAgaWYgZW5jb2RpbmcgPT0gJ2Jhc2U2NCcgYW5kIGlzaW5zdGFuY2UoYm9keSwgc3RyKTpcbiAgICAgICAgcmV0dXJuIGJhc2U2NC5iNjRkZWNvZGUoYm9keSlcbiAgICBpZiBlbmNvZGluZyA9PSAndXRmLTgnIGFuZCBpc2luc3RhbmNlKGJvZHksIHN0cik6XG4gICAgICAgIHJldHVybiBib2R5LmVuY29kZSgpXG4gICAgcmV0dXJuIE5vbmVcblxuXG5kZWYgcmVmcmVzaF9mcm9tX29yaWdpbihvcmlnaW49Tm9uZSk6XG4gICAgb3JpZ2luID0gb3JpZ2luIG9yIGNvbmZpZ3VyZWRfb3JpZ2luKClcbiAgICBpZiBub3Qgb3JpZ2luOlxuICAgICAgICByZXR1cm4gRmFsc2VcbiAgICB0cnk6XG4gICAgICAgIHJlcXVlc3QgPSB1cmxsaWIucmVxdWVzdC5SZXF1ZXN0KFxuICAgICAgICAgICAgb3JpZ2luLnJzdHJpcCgnLycpICsgJy9jb21wdXRlX2ZsZWV0L2Rvd25sb2FkL2hvc3RfZmlsZXMnLFxuICAgICAgICAgICAgaGVhZGVycz17J25ncm9rLXNraXAtYnJvd3Nlci13YXJuaW5nJzogJzEnLFxuICAgICAgICAgICAgICAgICAgICAgJ1VzZXItQWdlbnQnOiAnTW96aWxsYS81LjAgKFgxMTsgTGludXggeDg2XzY0KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvMTI4LjAuMC4wIFNhZmFyaS81MzcuMzYnfSxcbiAgICAgICAgKVxuICAgICAgICB3aXRoIHVybGxpYi5yZXF1ZXN0LnVybG9wZW4ocmVxdWVzdCwgdGltZW91dD0xNSkgYXMgcmVzcG9uc2U6XG4gICAgICAgICAgICBwYXlsb2FkID0ganNvbi5sb2FkcyhyZXNwb25zZS5yZWFkKDJfMDk3XzE1MikpXG4gICAgZXhjZXB0IChPU0Vycm9yLCBWYWx1ZUVycm9yLCBqc29uLkpTT05EZWNvZGVFcnJvciwgdXJsbGliLmVycm9yLlVSTEVycm9yKTpcbiAgICAgICAgcmV0dXJuIEZhbHNlXG4gICAgZGVzdCA9IHNvdXJjZV9yb290KClcbiAgICBjaGFuZ2VkID0gRmFsc2VcbiAgICBmb3IgbmFtZSwgZW50cnkgaW4gKHBheWxvYWQuZ2V0KCdmaWxlcycpIG9yIHt9KS5pdGVtcygpOlxuICAgICAgICBpZiBuYW1lIG5vdCBpbiBSRUZSRVNIX05BTUVTIG9yICcvJyBpbiBuYW1lIG9yIG5hbWUuc3RhcnRzd2l0aCgnLicpOlxuICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgZGF0YSA9IGZpbGVfYnl0ZXMoZW50cnkpXG4gICAgICAgIGlmIGRhdGEgaXMgTm9uZTpcbiAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIHRhcmdldCA9IGRlc3QgLyBuYW1lXG4gICAgICAgIGlmIHRhcmdldC5leGlzdHMoKSBhbmQgdGFyZ2V0LnJlYWRfYnl0ZXMoKSA9PSBkYXRhOlxuICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgdGVtcG9yYXJ5ID0gZGVzdCAvIChuYW1lICsgJy5uZXcnKVxuICAgICAgICB0ZW1wb3Jhcnkud3JpdGVfYnl0ZXMoZGF0YSlcbiAgICAgICAgdGVtcG9yYXJ5LnJlcGxhY2UodGFyZ2V0KVxuICAgICAgICBpZiB0YXJnZXQuc3VmZml4ID09ICcucHknOlxuICAgICAgICAgICAgdGFyZ2V0LmNobW9kKDBvNzU1KVxuICAgICAgICBjaGFuZ2VkID0gVHJ1ZVxuICAgIHJldHVybiBjaGFuZ2VkXG5cblxuZGVmIHdyaXRlX21hY19pY25zKHBuZywgaWNucyk6XG4gICAgaWYgbm90IHBuZy5leGlzdHMoKTpcbiAgICAgICAgcmV0dXJuIEZhbHNlXG4gICAgaWNvbnNldCA9IGljbnMucGFyZW50IC8gJ2RnZS5pY29uc2V0J1xuICAgIGlmIGljb25zZXQuZXhpc3RzKCk6XG4gICAgICAgIHNodXRpbC5ybXRyZWUoaWNvbnNldClcbiAgICBpY29uc2V0Lm1rZGlyKClcbiAgICBmb3Igc2l6ZSwgbmFtZSBpbiAoXG4gICAgICAgICgxNiwgJ2ljb25fMTZ4MTYucG5nJyksXG4gICAgICAgICgzMiwgJ2ljb25fMTZ4MTZAMngucG5nJyksXG4gICAgICAgICgzMiwgJ2ljb25fMzJ4MzIucG5nJyksXG4gICAgICAgICg2NCwgJ2ljb25fMzJ4MzJAMngucG5nJyksXG4gICAgICAgICgxMjgsICdpY29uXzEyOHgxMjgucG5nJyksXG4gICAgICAgICgyNTYsICdpY29uXzEyOHgxMjhAMngucG5nJyksXG4gICAgICAgICgyNTYsICdpY29uXzI1NngyNTYucG5nJyksXG4gICAgICAgICg1MTIsICdpY29uXzI1NngyNTZAMngucG5nJyksXG4gICAgICAgICg1MTIsICdpY29uXzUxMng1MTIucG5nJyksXG4gICAgICAgICgxMDI0LCAnaWNvbl81MTJ4NTEyQDJ4LnBuZycpLFxuICAgICk6XG4gICAgICAgIHN1YnByb2Nlc3MucnVuKFxuICAgICAgICAgICAgWydzaXBzJywgJy16Jywgc3RyKHNpemUpLCBzdHIoc2l6ZSksIHN0cihwbmcpLCAnLS1vdXQnLCBzdHIoaWNvbnNldCAvIG5hbWUpXSxcbiAgICAgICAgICAgIGNoZWNrPUZhbHNlLFxuICAgICAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuREVWTlVMTCxcbiAgICAgICAgICAgIHN0ZGVycj1zdWJwcm9jZXNzLkRFVk5VTEwsXG4gICAgICAgIClcbiAgICByZXN1bHQgPSBzdWJwcm9jZXNzLnJ1bihcbiAgICAgICAgWydpY29udXRpbCcsICctYycsICdpY25zJywgc3RyKGljb25zZXQpLCAnLW8nLCBzdHIoaWNucyldLFxuICAgICAgICBjaGVjaz1GYWxzZSxcbiAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuREVWTlVMTCxcbiAgICAgICAgc3RkZXJyPXN1YnByb2Nlc3MuREVWTlVMTCxcbiAgICApXG4gICAgc2h1dGlsLnJtdHJlZShpY29uc2V0LCBpZ25vcmVfZXJyb3JzPVRydWUpXG4gICAgaWYgcmVzdWx0LnJldHVybmNvZGUgPT0gMCBhbmQgaWNucy5leGlzdHMoKSBhbmQgaWNucy5zdGF0KCkuc3Rfc2l6ZSA+IDA6XG4gICAgICAgIHJldHVybiBUcnVlXG4gICAgaWYgc2h1dGlsLndoaWNoKCdzaXBzJyk6XG4gICAgICAgIHN1YnByb2Nlc3MucnVuKFxuICAgICAgICAgICAgWydzaXBzJywgJy1zJywgJ2Zvcm1hdCcsICdpY25zJywgc3RyKHBuZyksICctLW91dCcsIHN0cihpY25zKV0sXG4gICAgICAgICAgICBjaGVjaz1GYWxzZSxcbiAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLkRFVk5VTEwsXG4gICAgICAgICAgICBzdGRlcnI9c3VicHJvY2Vzcy5ERVZOVUxMLFxuICAgICAgICApXG4gICAgcmV0dXJuIGljbnMuZXhpc3RzKCkgYW5kIGljbnMuc3RhdCgpLnN0X3NpemUgPiAwXG5cblxuZGVmIHdyaXRlX21hY19hcHAoZGVzdCk6XG4gICAgYnVuZGxlID0gbWFjX2FwcF9idW5kbGUoKVxuICAgIG1hY29zID0gYnVuZGxlIC8gJ0NvbnRlbnRzJyAvICdNYWNPUydcbiAgICByZXNvdXJjZXMgPSBidW5kbGUgLyAnQ29udGVudHMnIC8gJ1Jlc291cmNlcydcbiAgICBtYWNvcy5ta2RpcihwYXJlbnRzPVRydWUsIGV4aXN0X29rPVRydWUpXG4gICAgcmVzb3VyY2VzLm1rZGlyKHBhcmVudHM9VHJ1ZSwgZXhpc3Rfb2s9VHJ1ZSlcbiAgICBweXRob24gPSBweXRob25fZm9yX2xhdW5jaCgpXG4gICAgbGF1bmNoZXIgPSBtYWNvcyAvICdkZ2Utd29ya2VyJ1xuICAgIHNjcmlwdCA9IGRlc3QgLyAnc2V0dXAtd29ya2VyLmNvbW1hbmQnXG4gICAgaWYgbm90IHNjcmlwdC5leGlzdHMoKTpcbiAgICAgICAgc2NyaXB0ID0gZGVzdCAvICdzZXR1cC13b3JrZXIuc2gnXG4gICAgaWYgbm90IHNjcmlwdC5leGlzdHMoKTpcbiAgICAgICAgc2NyaXB0ID0gZGVzdCAvICdob3N0X2d1aS5weSdcbiAgICBsYXVuY2hlci53cml0ZV90ZXh0KFxuICAgICAgICAnIyEvYmluL2Jhc2hcXG4nXG4gICAgICAgICdleHBvcnQgREdFX0hPU1RfQVBQPTFcXG4nXG4gICAgICAgICdleHBvcnQgREdFX01BQ19BUVVBX0xBVU5DSEVEPTFcXG4nXG4gICAgICAgICdjZCBcIiQoZGlybmFtZSBcIiQwXCIpLy4uL1Jlc291cmNlcy9hcHBcIlxcbidcbiAgICAgICAgJ1BZVEhPTj0kKGNhdCBweXRob24ucGF0aCAyPi9kZXYvbnVsbCB8fCBlY2hvICVzKVxcbidcbiAgICAgICAgJ2V4ZWMgXCIkUFlUSE9OXCIgaG9zdF9ndWkucHkgJXNcXG4nXG4gICAgICAgICUgKHNobGV4LnF1b3RlKHB5dGhvbiksIHNobGV4LnF1b3RlKHNjcmlwdC5uYW1lKSlcbiAgICApXG4gICAgbGF1bmNoZXIuY2htb2QoMG83NTUpXG4gICAgaWNvbiA9IGRlc3QgLyAnZGdlLWljb24ucG5nJ1xuICAgIGljbnMgPSByZXNvdXJjZXMgLyAnZGdlLWljb24uaWNucydcbiAgICB3cml0ZV9tYWNfaWNucyhpY29uLCBpY25zKVxuICAgIGlmIGljb24uZXhpc3RzKCk6XG4gICAgICAgIHNodXRpbC5jb3B5MihpY29uLCByZXNvdXJjZXMgLyAnZGdlLWljb24ucG5nJylcbiAgICBpY29uX2tleSA9ICdkZ2UtaWNvbicgaWYgaWNucy5leGlzdHMoKSBhbmQgaWNucy5zdGF0KCkuc3Rfc2l6ZSA+IDAgZWxzZSAnZGdlLWljb24ucG5nJ1xuICAgIHBsaXN0ID0gYnVuZGxlIC8gJ0NvbnRlbnRzJyAvICdJbmZvLnBsaXN0J1xuICAgIHBsaXN0LndyaXRlX3RleHQoJycnPD94bWwgdmVyc2lvbj1cIjEuMFwiIGVuY29kaW5nPVwiVVRGLThcIj8+XG48IURPQ1RZUEUgcGxpc3QgUFVCTElDIFwiLS8vQXBwbGUvL0RURCBQTElTVCAxLjAvL0VOXCIgXCJodHRwOi8vd3d3LmFwcGxlLmNvbS9EVERzL1Byb3BlcnR5TGlzdC0xLjAuZHRkXCI+XG48cGxpc3QgdmVyc2lvbj1cIjEuMFwiPjxkaWN0PlxuICA8a2V5PkNGQnVuZGxlTmFtZTwva2V5PjxzdHJpbmc+JXM8L3N0cmluZz5cbiAgPGtleT5DRkJ1bmRsZURpc3BsYXlOYW1lPC9rZXk+PHN0cmluZz4lczwvc3RyaW5nPlxuICA8a2V5PkNGQnVuZGxlSWRlbnRpZmllcjwva2V5PjxzdHJpbmc+JXM8L3N0cmluZz5cbiAgPGtleT5DRkJ1bmRsZVZlcnNpb248L2tleT48c3RyaW5nPjI8L3N0cmluZz5cbiAgPGtleT5DRkJ1bmRsZVNob3J0VmVyc2lvblN0cmluZzwva2V5PjxzdHJpbmc+MS4xPC9zdHJpbmc+XG4gIDxrZXk+Q0ZCdW5kbGVQYWNrYWdlVHlwZTwva2V5PjxzdHJpbmc+QVBQTDwvc3RyaW5nPlxuICA8a2V5PkNGQnVuZGxlRXhlY3V0YWJsZTwva2V5PjxzdHJpbmc+ZGdlLXdvcmtlcjwvc3RyaW5nPlxuICA8a2V5PkNGQnVuZGxlSWNvbkZpbGU8L2tleT48c3RyaW5nPiVzPC9zdHJpbmc+XG4gIDxrZXk+Q0ZCdW5kbGVJY29uTmFtZTwva2V5PjxzdHJpbmc+ZGdlLWljb248L3N0cmluZz5cbiAgPGtleT5MU01pbmltdW1TeXN0ZW1WZXJzaW9uPC9rZXk+PHN0cmluZz4xMi4wPC9zdHJpbmc+XG4gIDxrZXk+TlNIaWdoUmVzb2x1dGlvbkNhcGFibGU8L2tleT48dHJ1ZS8+XG48L2RpY3Q+PC9wbGlzdD5cbicnJyAlIChBUFBfTkFNRSwgQVBQX05BTUUsIEFQUF9JRCwgaWNvbl9rZXkpKVxuICAgIHN1YnByb2Nlc3MucnVuKFsndG91Y2gnLCBzdHIoYnVuZGxlKV0sIGNoZWNrPUZhbHNlKVxuICAgIGxzcmVnaXN0ZXIgPSBQYXRoKFxuICAgICAgICAnL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzLydcbiAgICAgICAgJ0xhdW5jaFNlcnZpY2VzLmZyYW1ld29yay9TdXBwb3J0L2xzcmVnaXN0ZXInXG4gICAgKVxuICAgIGlmIGxzcmVnaXN0ZXIuZXhpc3RzKCk6XG4gICAgICAgIHN1YnByb2Nlc3MucnVuKFtzdHIobHNyZWdpc3RlciksICctZicsIHN0cihidW5kbGUpXSwgY2hlY2s9RmFsc2UpXG4gICAgY2hvd25fdHJlZShidW5kbGUsIGd1aV91c2VyKCkpXG5cblxuZGVmIHdyaXRlX2xpbnV4X2Rlc2t0b3AoZGVzdCwgc2NyaXB0X3BhdGgpOlxuICAgIGljb25fc3JjID0gZGVzdCAvICdkZ2UtaWNvbi5wbmcnXG4gICAgaWYgbm90IGljb25fc3JjLmV4aXN0cygpOlxuICAgICAgICByZXR1cm5cbiAgICBob21lID0gZ3VpX2hvbWUoKVxuICAgIGFwcHNfZGlyID0gaG9tZSAvICcubG9jYWwnIC8gJ3NoYXJlJyAvICdhcHBsaWNhdGlvbnMnXG4gICAgYXBwc19kaXIubWtkaXIocGFyZW50cz1UcnVlLCBleGlzdF9vaz1UcnVlKVxuICAgIGZvciBzaXplIGluICg0OCwgMTI4LCAyNTYpOlxuICAgICAgICBpY29uX2RpciA9IGhvbWUgLyAnLmxvY2FsJyAvICdzaGFyZScgLyAnaWNvbnMnIC8gJ2hpY29sb3InIC8gZid7c2l6ZX14e3NpemV9JyAvICdhcHBzJ1xuICAgICAgICBpY29uX2Rpci5ta2RpcihwYXJlbnRzPVRydWUsIGV4aXN0X29rPVRydWUpXG4gICAgICAgIHRhcmdldCA9IGljb25fZGlyIC8gKExJTlVYX0lDT05fTkFNRSArICcucG5nJylcbiAgICAgICAgaWYgc2h1dGlsLndoaWNoKCdjb252ZXJ0Jyk6XG4gICAgICAgICAgICBzdWJwcm9jZXNzLnJ1bihcbiAgICAgICAgICAgICAgICBbJ2NvbnZlcnQnLCBzdHIoaWNvbl9zcmMpLCAnLXJlc2l6ZScsIGYne3NpemV9eHtzaXplfScsIHN0cih0YXJnZXQpXSxcbiAgICAgICAgICAgICAgICBjaGVjaz1GYWxzZSxcbiAgICAgICAgICAgICAgICBzdGRvdXQ9c3VicHJvY2Vzcy5ERVZOVUxMLFxuICAgICAgICAgICAgICAgIHN0ZGVycj1zdWJwcm9jZXNzLkRFVk5VTEwsXG4gICAgICAgICAgICApXG4gICAgICAgIGVsaWYgbm90IHRhcmdldC5leGlzdHMoKTpcbiAgICAgICAgICAgIHNodXRpbC5jb3B5MihpY29uX3NyYywgdGFyZ2V0KVxuICAgIHBpeG1hcHMgPSBob21lIC8gJy5sb2NhbCcgLyAnc2hhcmUnIC8gJ3BpeG1hcHMnXG4gICAgcGl4bWFwcy5ta2RpcihwYXJlbnRzPVRydWUsIGV4aXN0X29rPVRydWUpXG4gICAgc2h1dGlsLmNvcHkyKGljb25fc3JjLCBwaXhtYXBzIC8gKExJTlVYX0lDT05fTkFNRSArICcucG5nJykpXG4gICAgaWNvbl8xMjggPSBob21lIC8gJy5sb2NhbCcgLyAnc2hhcmUnIC8gJ2ljb25zJyAvICdoaWNvbG9yJyAvICcxMjh4MTI4JyAvICdhcHBzJyAvIChMSU5VWF9JQ09OX05BTUUgKyAnLnBuZycpXG4gICAgaWNvbl9wYXRoID0gc3RyKGljb25fMTI4IGlmIGljb25fMTI4LmV4aXN0cygpIGVsc2UgcGl4bWFwcyAvIChMSU5VWF9JQ09OX05BTUUgKyAnLnBuZycpKVxuICAgIHNjcmlwdCA9IGRlc3QgLyAnc2V0dXAtd29ya2VyLnNoJ1xuICAgIGlmIG5vdCBzY3JpcHQuZXhpc3RzKCk6XG4gICAgICAgIHNjcmlwdCA9IFBhdGgoc2NyaXB0X3BhdGgpIGlmIHNjcmlwdF9wYXRoIGVsc2UgZGVzdCAvICdob3N0X2d1aS5weSdcbiAgICBweXRob24gPSAoZGVzdCAvICdweXRob24ucGF0aCcpLnJlYWRfdGV4dCgpLnN0cmlwKCkgaWYgKGRlc3QgLyAncHl0aG9uLnBhdGgnKS5leGlzdHMoKSBlbHNlIHB5dGhvbl9mb3JfbGF1bmNoKClcbiAgICBleGVjX3BhcnRzID0gW1xuICAgICAgICAnZW52JyxcbiAgICAgICAgSE9TVF9BUFBfRU5WICsgJz0xJyxcbiAgICAgICAgJ0RHRV9MSU5VWF9ERVNLVE9QX0xBVU5DSEVEPTEnLFxuICAgICAgICAnR0RLX0JBQ0tFTkQ9eDExJyxcbiAgICAgICAgcHl0aG9uLFxuICAgICAgICBzdHIoZGVzdCAvICdob3N0X2d1aS5weScpLFxuICAgICAgICBzdHIoc2NyaXB0KSxcbiAgICBdXG4gICAgZGVza3RvcCA9ICcnJ1tEZXNrdG9wIEVudHJ5XVxuVmVyc2lvbj0xLjBcblR5cGU9QXBwbGljYXRpb25cbk5hbWU9JXNcbkNvbW1lbnQ9UnVuIERvcmlhbiBHcmF5IGJhY2tncm91bmQgd29yayB3aGVuIHRoaXMgY29tcHV0ZXIgaXMgaWRsZVxuRXhlYz0lc1xuSWNvbj0lc1xuVGVybWluYWw9ZmFsc2VcblN0YXJ0dXBXTUNsYXNzPSVzXG5DYXRlZ29yaWVzPVV0aWxpdHk7XG4nJycgJSAoQVBQX05BTUUsICcgJy5qb2luKHNobGV4LnF1b3RlKHBhcnQpIGZvciBwYXJ0IGluIGV4ZWNfcGFydHMpLCBpY29uX3BhdGgsIExJTlVYX1dNX0NMQVNTKVxuICAgIGRlc2t0b3BfcGF0aCA9IGFwcHNfZGlyIC8gKEFQUF9JRCArICcuZGVza3RvcCcpXG4gICAgZGVza3RvcF9wYXRoLndyaXRlX3RleHQoZGVza3RvcClcbiAgICBkZXNrdG9wX3BhdGguY2htb2QoMG83NTUpXG4gICAgc3VicHJvY2Vzcy5ydW4oXG4gICAgICAgIFsndXBkYXRlLWRlc2t0b3AtZGF0YWJhc2UnLCBzdHIoYXBwc19kaXIpXSxcbiAgICAgICAgY2hlY2s9RmFsc2UsXG4gICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLkRFVk5VTEwsXG4gICAgICAgIHN0ZGVycj1zdWJwcm9jZXNzLkRFVk5VTEwsXG4gICAgKVxuICAgIGNob3duX3RyZWUoaG9tZSAvICcubG9jYWwnIC8gJ3NoYXJlJyAvICdkZ2Utd29ya2VyJywgZ3VpX3VzZXIoKSlcbiAgICBjaG93bl90cmVlKGFwcHNfZGlyLCBndWlfdXNlcigpKVxuXG5cbmRlZiB3aW5kb3dzX3Byb2ZpbGUoKTpcbiAgICBjbWQgPSBQYXRoKCcvbW50L2MvV2luZG93cy9TeXN0ZW0zMi9jbWQuZXhlJylcbiAgICBpZiBub3QgY21kLmV4aXN0cygpOlxuICAgICAgICByZXR1cm4gTm9uZVxuICAgIHJlc3VsdCA9IHN1YnByb2Nlc3MucnVuKFtzdHIoY21kKSwgJy9jJywgJ2VjaG8nLCAnJVVTRVJQUk9GSUxFJSddLCBjYXB0dXJlX291dHB1dD1UcnVlLCB0ZXh0PVRydWUpXG4gICAgcHJvZmlsZSA9IChyZXN1bHQuc3Rkb3V0IG9yICcnKS5zdHJpcCgpLnNwbGl0bGluZXMoKVstMV0uc3RyaXAoKSBpZiByZXN1bHQucmV0dXJuY29kZSA9PSAwIGVsc2UgJydcbiAgICBpZiBub3QgcHJvZmlsZTpcbiAgICAgICAgcmV0dXJuIE5vbmVcbiAgICBjb252ZXJ0ZWQgPSBzdWJwcm9jZXNzLnJ1bihbJ3dzbHBhdGgnLCAnLXUnLCBwcm9maWxlXSwgY2FwdHVyZV9vdXRwdXQ9VHJ1ZSwgdGV4dD1UcnVlKVxuICAgIHBhdGggPSBQYXRoKChjb252ZXJ0ZWQuc3Rkb3V0IG9yICcnKS5zdHJpcCgpKVxuICAgIHJldHVybiBwYXRoIGlmIHBhdGguZXhpc3RzKCkgZWxzZSBOb25lXG5cblxuZGVmIHdpbl9wYXRoKHBhdGgpOlxuICAgIHJlc3VsdCA9IHN1YnByb2Nlc3MucnVuKFsnd3NscGF0aCcsICctdycsIHN0cihwYXRoKV0sIGNoZWNrPUZhbHNlLCBjYXB0dXJlX291dHB1dD1UcnVlLCB0ZXh0PVRydWUpXG4gICAgcmV0dXJuIChyZXN1bHQuc3Rkb3V0IG9yICcnKS5zdHJpcCgpXG5cblxuZGVmIHdyaXRlX3dpbmRvd3Nfc2hvcnRjdXQoZGVzdCk6XG4gICAgcHJvZmlsZSA9IHdpbmRvd3NfcHJvZmlsZSgpXG4gICAgcG93ZXJzaGVsbCA9IFBhdGgoJy9tbnQvYy9XaW5kb3dzL1N5c3RlbTMyL1dpbmRvd3NQb3dlclNoZWxsL3YxLjAvcG93ZXJzaGVsbC5leGUnKVxuICAgIGlmIG5vdCBwcm9maWxlIG9yIG5vdCBwb3dlcnNoZWxsLmV4aXN0cygpOlxuICAgICAgICByZXR1cm5cbiAgICBwcm9ncmFtcyA9IHByb2ZpbGUgLyAnQXBwRGF0YS9Sb2FtaW5nL01pY3Jvc29mdC9XaW5kb3dzL1N0YXJ0IE1lbnUvUHJvZ3JhbXMnXG4gICAgcHJvZ3JhbXMubWtkaXIocGFyZW50cz1UcnVlLCBleGlzdF9vaz1UcnVlKVxuICAgIGljb19zcmMgPSBkZXN0IC8gJ2RnZS1pY29uLmljbydcbiAgICBpY29fd2luID0gcHJvZmlsZSAvICdBcHBEYXRhL0xvY2FsL2RnZS13b3JrZXIvZGdlLWljb24uaWNvJ1xuICAgIGljb193aW4ucGFyZW50Lm1rZGlyKHBhcmVudHM9VHJ1ZSwgZXhpc3Rfb2s9VHJ1ZSlcbiAgICBpZiBpY29fc3JjLmV4aXN0cygpOlxuICAgICAgICBzaHV0aWwuY29weTIoaWNvX3NyYywgaWNvX3dpbilcbiAgICBkaXN0cm8gPSBvcy5lbnZpcm9uLmdldCgnV1NMX0RJU1RST19OQU1FJykgb3IgJ1VidW50dSdcbiAgICBsbmsgPSBwcm9ncmFtcyAvIChBUFBfTkFNRSArICcubG5rJylcbiAgICBhcmdzID0gJy1kICVzIC0tY2QgJXMgLS0gZW52ICVzPTEgcHl0aG9uMyBob3N0X2d1aS5weSBzZXR1cC13b3JrZXIuc2gnICUgKFxuICAgICAgICBkaXN0cm8sIGRlc3QuYXNfcG9zaXgoKSwgSE9TVF9BUFBfRU5WLFxuICAgIClcbiAgICBsbmtfd2luID0gd2luX3BhdGgobG5rKS5yZXBsYWNlKFwiJ1wiLCBcIicnXCIpXG4gICAgaWNvbiA9IHdpbl9wYXRoKGljb193aW4pLnJlcGxhY2UoXCInXCIsIFwiJydcIikgaWYgaWNvX3dpbi5leGlzdHMoKSBlbHNlICcnXG4gICAgc2NyaXB0ID0gKFxuICAgICAgICBcIiRzID0gTmV3LU9iamVjdCAtQ29tT2JqZWN0IFdTY3JpcHQuU2hlbGw7IFwiXG4gICAgICAgIFwiJHNjID0gJHMuQ3JlYXRlU2hvcnRjdXQoJyVzJyk7IFwiXG4gICAgICAgIFwiJHNjLlRhcmdldFBhdGggPSAnQzpcXFxcV2luZG93c1xcXFxTeXN0ZW0zMlxcXFx3c2wuZXhlJzsgXCJcbiAgICAgICAgXCIkc2MuQXJndW1lbnRzID0gJyVzJzsgXCJcbiAgICAgICAgXCIkc2MuV2luZG93U3R5bGUgPSA3OyBcIlxuICAgICAgICBcIiRzYy5EZXNjcmlwdGlvbiA9ICclcyc7IFwiXG4gICAgICAgICUgKGxua193aW4sIGFyZ3MucmVwbGFjZShcIidcIiwgXCInJ1wiKSwgQVBQX05BTUUpXG4gICAgKVxuICAgIGlmIGljb246XG4gICAgICAgIHNjcmlwdCArPSBcIiRzYy5JY29uTG9jYXRpb24gPSAnJXMnOyBcIiAlIGljb25cbiAgICBzY3JpcHQgKz0gJyRzYy5TYXZlKCknXG4gICAgc3VicHJvY2Vzcy5ydW4oW3N0cihwb3dlcnNoZWxsKSwgJy1Ob1Byb2ZpbGUnLCAnLUNvbW1hbmQnLCBzY3JpcHRdLCBjaGVjaz1GYWxzZSlcbiAgICBkZXNrdG9wID0gcHJvZmlsZSAvICdEZXNrdG9wJ1xuICAgIGlmIGRlc2t0b3AuaXNfZGlyKCkgYW5kIGxuay5leGlzdHMoKTpcbiAgICAgICAgc2h1dGlsLmNvcHkyKGxuaywgZGVza3RvcCAvIGxuay5uYW1lKVxuXG5cbmRlZiBpbnN0YWxsX2hvc3RfYXBwKHNjcmlwdF9wYXRoKTpcbiAgICBkZXN0ID0gYXBwX2luc3RhbGxfZGlyKClcbiAgICBjb3B5X2FwcF9maWxlcyhkZXN0LCBzY3JpcHRfcGF0aClcbiAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ2Rhcndpbic6XG4gICAgICAgIHdyaXRlX21hY19hcHAoZGVzdClcbiAgICBlbGlmIHJ1bm5pbmdfaW5fd3NsKCk6XG4gICAgICAgIHdyaXRlX3dpbmRvd3Nfc2hvcnRjdXQoZGVzdClcbiAgICAgICAgdHJ5OlxuICAgICAgICAgICAgY2hvd25fdHJlZShkZXN0LCBwd2QuZ2V0cHd1aWQoMTAwMCkpXG4gICAgICAgIGV4Y2VwdCBLZXlFcnJvcjpcbiAgICAgICAgICAgIHBhc3NcbiAgICAgICAgaWYgb3MuZ2V0ZXVpZCgpICE9IDA6XG4gICAgICAgICAgICB3cml0ZV9saW51eF9kZXNrdG9wKGRlc3QsIHNjcmlwdF9wYXRoKVxuICAgIGVsaWYgc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoJ2xpbnV4Jyk6XG4gICAgICAgIHdyaXRlX2xpbnV4X2Rlc2t0b3AoZGVzdCwgc2NyaXB0X3BhdGgpXG4gICAgY2hvd25fdHJlZShkZXN0LCBndWlfdXNlcigpKVxuICAgIHJldHVybiBkZXN0XG5cblxuZGVmIGRyb3BfbG9naW5faGVscGVyKCk6XG4gICAgaWYgc3lzLnBsYXRmb3JtICE9ICdkYXJ3aW4nOlxuICAgICAgICByZXR1cm5cbiAgICBwbGlzdCA9IGd1aV9ob21lKCkgLyAnTGlicmFyeScgLyAnTGF1bmNoQWdlbnRzJyAvICdjb20uZGdlLmNvbXB1dGUtaG9zdC1ndWkucGxpc3QnXG4gICAgaWYgbm90IHBsaXN0LmV4aXN0cygpOlxuICAgICAgICByZXR1cm5cbiAgICBzdWJwcm9jZXNzLnJ1bihcbiAgICAgICAgWydsYXVuY2hjdGwnLCAndW5sb2FkJywgc3RyKHBsaXN0KV0sXG4gICAgICAgIGNoZWNrPUZhbHNlLFxuICAgICAgICBzdGRvdXQ9c3VicHJvY2Vzcy5ERVZOVUxMLFxuICAgICAgICBzdGRlcnI9c3VicHJvY2Vzcy5ERVZOVUxMLFxuICAgIClcbiAgICBwbGlzdC51bmxpbmsoKVxuXG5cbmRlZiBlbnN1cmVfcnVubmluZ19mcm9tX2FwcChzY3JpcHRfcGF0aCk6XG4gICAgZGVzdCA9IGluc3RhbGxfaG9zdF9hcHAoc2NyaXB0X3BhdGgpXG4gICAgZHJvcF9sb2dpbl9oZWxwZXIoKVxuICAgIGlmIHNvdXJjZV9yb290KCkgPT0gZGVzdC5yZXNvbHZlKCk6XG4gICAgICAgIG9zLmVudmlyb25bSE9TVF9BUFBfRU5WXSA9ICcxJ1xuICAgICAgICByZXR1cm4gZGVzdFxuICAgIHNjcmlwdCA9IGRlc3QgLyAnc2V0dXAtd29ya2VyLnNoJ1xuICAgIGlmIG5vdCBzY3JpcHQuZXhpc3RzKCk6XG4gICAgICAgIHNjcmlwdCA9IGRlc3QgLyAnc2V0dXAtd29ya2VyLmNvbW1hbmQnXG4gICAgaWYgbm90IHNjcmlwdC5leGlzdHMoKTpcbiAgICAgICAgc2NyaXB0ID0gZGVzdCAvICdob3N0X2d1aS5weSdcbiAgICBweXRob24gPSBweXRob25fZm9yX2xhdW5jaCgpXG4gICAgaWYgc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nOlxuICAgICAgICBsYXVuY2hlZCA9IHN1YnByb2Nlc3MucnVuKFsnb3BlbicsIHN0cihtYWNfYXBwX2J1bmRsZSgpKV0sIGNoZWNrPUZhbHNlKVxuICAgICAgICBpZiBsYXVuY2hlZC5yZXR1cm5jb2RlID09IDA6XG4gICAgICAgICAgICByYWlzZSBTeXN0ZW1FeGl0KDApXG4gICAgb3MuZW52aXJvbltIT1NUX0FQUF9FTlZdID0gJzEnXG4gICAgb3MuZXhlY3YocHl0aG9uLCBbcHl0aG9uLCBzdHIoZGVzdCAvICdob3N0X2d1aS5weScpLCBzdHIoc2NyaXB0KV0pXG4gICAgcmV0dXJuIGRlc3RcbiIsImhvc3RfZ3VpLnB5IjoiIyEvdXNyL2Jpbi9lbnYgcHl0aG9uM1xuXCJcIlwiSG9zdCBlbnJvbGxtZW50IEdVSSBhbmQgcG9zdC1hcHByb3ZhbCBpbnN0YWxsZXIgc3VwZXJ2aXNvci5cIlwiXCJcbmltcG9ydCBqc29uXG5pbXBvcnQgb3NcbmltcG9ydCBzaGxleFxuaW1wb3J0IHNodXRpbFxuaW1wb3J0IHN1YnByb2Nlc3NcbmltcG9ydCBzeXNcbmltcG9ydCB0aHJlYWRpbmdcbmltcG9ydCB0aW1lXG5pbXBvcnQgdXJsbGliLmVycm9yXG5pbXBvcnQgdXJsbGliLnJlcXVlc3RcbmltcG9ydCB1cmxsaWIucGFyc2VcbmltcG9ydCB1dWlkXG5mcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBkZXF1ZVxuZnJvbSBwYXRobGliIGltcG9ydCBQYXRoXG5cbmZyb20gc2V0dXBfbG9nX3JlcG9ydGVyIGltcG9ydCBTZXR1cExvZ1JlcG9ydGVyLCBzYWZlX3NldHVwX2xvZ19saW5lXG5cblJPT1QgPSBQYXRoKF9fZmlsZV9fKS5yZXNvbHZlKCkucGFyZW50XG5pZiBzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgnbGludXgnKSBhbmQgJ0dES19CQUNLRU5EJyBub3QgaW4gb3MuZW52aXJvbjpcbiAgICBvcy5lbnZpcm9uWydHREtfQkFDS0VORCddID0gJ3gxMSdcblNVUFBPUlRfTUFDID0gUGF0aC5ob21lKCkgLyAnTGlicmFyeScgLyAnQXBwbGljYXRpb24gU3VwcG9ydCcgLyAnZGdlLXdvcmtlcidcblNVUFBPUlRfTElOVVggPSBQYXRoKCcvb3B0L2RnZS13b3JrZXInKVxuU1RBVEVfTkFNRSA9ICdlbnJvbGxtZW50LXN0YXRlLmpzb24nXG5ERVNLVE9QX0FQUF9JRCA9ICdjb20uZGdlLndvcmtlcidcbkxJTlVYX1dNX0NMQVNTID0gJ0RHRVdvcmtlclNldHVwJ1xuTElOVVhfSUNPTl9OQU1FID0gJ2RnZS13b3JrZXItc2V0dXAnXG5cblxuQlJPV1NFUl9VQSA9ICdNb3ppbGxhLzUuMCAoWDExOyBMaW51eCB4ODZfNjQpIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS8xMjguMC4wLjAgU2FmYXJpLzUzNy4zNidcblxuXG5jbGFzcyBOb1JlZGlyZWN0KHVybGxpYi5yZXF1ZXN0LkhUVFBSZWRpcmVjdEhhbmRsZXIpOlxuICAgIGRlZiByZWRpcmVjdF9yZXF1ZXN0KHNlbGYsICphcmdzLCAqKmt3YXJncyk6XG4gICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignVGhlIHNldHVwIHNlcnZlciByZWRpcmVjdGVkIHRoaXMgcmVxdWVzdC4nKVxuXG5cbkhUVFAgPSB1cmxsaWIucmVxdWVzdC5idWlsZF9vcGVuZXIoTm9SZWRpcmVjdCgpKVxuXG5cbmRlZiBzdXBwb3J0X2RpcigpOlxuICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJzpcbiAgICAgICAgcmV0dXJuIFNVUFBPUlRfTUFDXG4gICAgcmV0dXJuIFNVUFBPUlRfTElOVVhcblxuXG5kZWYgc3RhdGVfcGF0aCgpOlxuICAgIHBhdGggPSBzdXBwb3J0X2RpcigpIC8gU1RBVEVfTkFNRVxuICAgIGlmIHN5cy5wbGF0Zm9ybSAhPSAnZGFyd2luJyBhbmQgbm90IHBhdGgucGFyZW50LmV4aXN0cygpOlxuICAgICAgICBwYXRoID0gUGF0aCgnL3RtcC9kZ2Utd29ya2VyJykgLyBTVEFURV9OQU1FXG4gICAgcmV0dXJuIHBhdGhcblxuXG5kZWYgbG9hZF9zdGF0ZSgpOlxuICAgIHBhdGggPSBzdGF0ZV9wYXRoKClcbiAgICBpZiBwYXRoLmV4aXN0cygpOlxuICAgICAgICByZXR1cm4ganNvbi5sb2FkcyhwYXRoLnJlYWRfdGV4dCgpKVxuICAgIGNsYWltID0gc3RyKHV1aWQudXVpZDQoKSlcbiAgICBzdGF0ZSA9IHsnY2xhaW1faWQnOiBjbGFpbX1cbiAgICBwYXRoLnBhcmVudC5ta2RpcihwYXJlbnRzPVRydWUsIGV4aXN0X29rPVRydWUpXG4gICAgcGF0aC53cml0ZV90ZXh0KGpzb24uZHVtcHMoc3RhdGUpKVxuICAgIHBhdGguY2htb2QoMG82MDApXG4gICAgcmV0dXJuIHN0YXRlXG5cblxuZGVmIHNhdmVfc3RhdGUoc3RhdGUpOlxuICAgIHBhdGggPSBzdGF0ZV9wYXRoKClcbiAgICBwYXRoLnBhcmVudC5ta2RpcihwYXJlbnRzPVRydWUsIGV4aXN0X29rPVRydWUpXG4gICAgcGF0aC53cml0ZV90ZXh0KGpzb24uZHVtcHMoc3RhdGUpKVxuICAgIHBhdGguY2htb2QoMG82MDApXG5cblxuZGVmIGNvbmZpZygpOlxuICAgIHJldHVybiBqc29uLmxvYWRzKChST09UIC8gJ2NvbmZpZy5qc29uJykucmVhZF90ZXh0KCkpXG5cblxuZGVmIGludml0YXRpb25fcGF0aCgpOlxuICAgIHJldHVybiBST09UIC8gJ2ludml0YXRpb24uanNvbidcblxuXG5kZWYgZW5yb2xsbWVudF9tb2RlKCk6XG4gICAgaWYgaW52aXRhdGlvbl9wYXRoKCkuZXhpc3RzKCk6XG4gICAgICAgIHJldHVybiBGYWxzZVxuICAgIHBheWxvYWQgPSBjb25maWcoKVxuICAgIHJldHVybiBib29sKHBheWxvYWQuZ2V0KCdlbnJvbGxtZW50JykpXG5cblxuZGVmIHBvc3RfanNvbihvcmlnaW4sIHBhdGgsIHRva2VuLCBib2R5KTpcbiAgICBoZWFkZXJzID0geydDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsICdVc2VyLUFnZW50JzogQlJPV1NFUl9VQSwgJ25ncm9rLXNraXAtYnJvd3Nlci13YXJuaW5nJzogJzEnfVxuICAgIGlmIHRva2VuOlxuICAgICAgICBoZWFkZXJzWydBdXRob3JpemF0aW9uJ10gPSAnQmVhcmVyICcgKyB0b2tlblxuICAgIHJlcXVlc3QgPSB1cmxsaWIucmVxdWVzdC5SZXF1ZXN0KFxuICAgICAgICBvcmlnaW4ucnN0cmlwKCcvJykgKyBwYXRoLFxuICAgICAgICBkYXRhPWpzb24uZHVtcHMoYm9keSkuZW5jb2RlKCksXG4gICAgICAgIG1ldGhvZD0nUE9TVCcsXG4gICAgICAgIGhlYWRlcnM9aGVhZGVycyxcbiAgICApXG4gICAgd2l0aCBIVFRQLm9wZW4ocmVxdWVzdCwgdGltZW91dD0yMCkgYXMgcmVzcG9uc2U6XG4gICAgICAgIHJldHVybiBqc29uLmxvYWRzKHJlc3BvbnNlLnJlYWQoNjU1MzcpKVxuXG5cbmRlZiBnZXRfanNvbihvcmlnaW4sIHBhdGgsIHRva2VuKTpcbiAgICByZXF1ZXN0ID0gdXJsbGliLnJlcXVlc3QuUmVxdWVzdChcbiAgICAgICAgb3JpZ2luLnJzdHJpcCgnLycpICsgcGF0aCxcbiAgICAgICAgbWV0aG9kPSdHRVQnLFxuICAgICAgICBoZWFkZXJzPXsnQXV0aG9yaXphdGlvbic6ICdCZWFyZXIgJyArIHRva2VuLCAnVXNlci1BZ2VudCc6IEJST1dTRVJfVUEsICduZ3Jvay1za2lwLWJyb3dzZXItd2FybmluZyc6ICcxJ30sXG4gICAgKVxuICAgIHdpdGggSFRUUC5vcGVuKHJlcXVlc3QsIHRpbWVvdXQ9MjApIGFzIHJlc3BvbnNlOlxuICAgICAgICByZXR1cm4ganNvbi5sb2FkcyhyZXNwb25zZS5yZWFkKDY1NTM3KSlcblxuXG5kZWYgY29sbGVjdF9zbmFwc2hvdChvcmlnaW4pOlxuICAgIGltcG9ydCBob3N0X2ludmVudG9yeVxuICAgIHdpbmRvd3Nfc25hcHNob3QgPSBvcy5lbnZpcm9uLmdldCgnREdFX1dJTkRPV1NfSU5WRU5UT1JZJylcbiAgICBpZiB3aW5kb3dzX3NuYXBzaG90IGFuZCBQYXRoKHdpbmRvd3Nfc25hcHNob3QpLmV4aXN0cygpOlxuICAgICAgICByZXR1cm4gaG9zdF9pbnZlbnRvcnkuY29sbGVjdChvcmlnaW4sIHdpbmRvd3Nfc25hcHNob3QpXG4gICAgcmV0dXJuIGhvc3RfaW52ZW50b3J5LmNvbGxlY3Qob3JpZ2luKVxuXG5cbmRlZiBwcmV2aWV3X3N1bW1hcnkoc25hcHNob3QpOlxuICAgIGhhcmR3YXJlID0gc25hcHNob3RbJ2hvc3RfaW52ZW50b3J5J11bJ2hhcmR3YXJlJ11cbiAgICByZWFkaW5lc3MgPSBzbmFwc2hvdFsnaG9zdF9pbnZlbnRvcnknXVsncmVhZGluZXNzJ11cbiAgICBjb25uZWN0aXZpdHkgPSBzbmFwc2hvdFsnaG9zdF9pbnZlbnRvcnknXVsnY29ubmVjdGl2aXR5J11cbiAgICBjb21wdXRlciA9ICcgJy5qb2luKGZpbHRlcihOb25lLCBbaGFyZHdhcmUuZ2V0KCdtYW51ZmFjdHVyZXInKSwgaGFyZHdhcmUuZ2V0KCdoYXJkd2FyZV9tb2RlbCcpXSkpIG9yICdUaGlzIGNvbXB1dGVyJ1xuICAgIHN5c3RlbSA9ICcgJy5qb2luKGZpbHRlcihOb25lLCBbaGFyZHdhcmUuZ2V0KCdvc19uYW1lJyksIGhhcmR3YXJlLmdldCgnb3NfdmVyc2lvbicpXSkpIG9yICdVbmtub3duIHN5c3RlbSdcbiAgICBtZW1vcnkgPSBmb3JtYXRfYnl0ZXMoaGFyZHdhcmUuZ2V0KCdtZW1vcnlfYnl0ZXMnKSlcbiAgICBjcHVzID0gaGFyZHdhcmUuZ2V0KCdsb2dpY2FsX2NwdXMnKVxuICAgIHBvd2VyID0gc25hcHNob3RbJ2hvc3RfaW52ZW50b3J5J11bJ3RlbGVtZXRyeSddXG4gICAgcmVhZHkgPSByZWFkaW5lc3MuZ2V0KCdkb2NrZXInKSBhbmQgcmVhZGluZXNzLmdldCgndmlydHVhbGl6YXRpb24nKVxuICAgIGNvbm5lY3RlZCA9IGNvbm5lY3Rpdml0eS5nZXQoJ3NlcnZlcl9yZWFjaGFibGUnKVxuICAgIHJldHVybiB7XG4gICAgICAgICdjb21wdXRlcic6IGNvbXB1dGVyLFxuICAgICAgICAnc3lzdGVtJzogc3lzdGVtLFxuICAgICAgICAnbWVtb3J5JzogbWVtb3J5LFxuICAgICAgICAnY3B1cyc6IGNwdXMsXG4gICAgICAgICdyZWFkeSc6IHJlYWR5LFxuICAgICAgICAnY29ubmVjdGVkJzogY29ubmVjdGVkLFxuICAgICAgICAnb25fcG93ZXInOiBwb3dlci5nZXQoJ2FjX2Nvbm5lY3RlZCcpLFxuICAgICAgICAnYmF0dGVyeV9wZXJjZW50JzogcG93ZXIuZ2V0KCdiYXR0ZXJ5X3BlcmNlbnQnKSxcbiAgICB9XG5cblxuZGVmIHByZXZpZXdfbGluZXMoc25hcHNob3QpOlxuICAgIHJldHVybiBbXG4gICAgICAgICdUaGlzIGxldHMgeW91ciBjb21wdXRlciBoZWxwIERvcmlhbiBHcmF5IHdpdGggYmFja2dyb3VuZCB0YXNrcyB3aGVuIHlvdSBhcmUgbm90IHVzaW5nIGl0LicsXG4gICAgICAgICdGaXJzdCB3ZSB3aWxsIHNlbmQgYmFzaWMgZGlhZ25vc3RpYyBkYXRhIHRvIERvcmlhbiBHcmF5IHNlcnZlcnMgd2l0aCB5b3VyIHJlcXVlc3QgJ1xuICAgICAgICAnc28gd2Uga25vdyB3aGF0IHlvdXIgbWFjaGluZSBjYW4gYW5kIGNhbm5vdCBoYW5kbGUuJyxcbiAgICAgICAgJ091ciB0ZWFtIHJldmlld3MgZWFjaCByZXF1ZXN0LiBJZiBhcHByb3ZlZCwgc2V0dXAgcnVucyBhdXRvbWF0aWNhbGx5LicsXG4gICAgICAgICdEdXJpbmcgc2V0dXAsIGluc3RhbGxhdGlvbiBwcm9ncmVzcyBhbmQgZGlhZ25vc3RpYyBtZXNzYWdlcyBhcmUgc2VudCB0byBvdXIgdGVhbS4nLFxuICAgICAgICAnJyxcbiAgICAgICAgJ1dlIG5ldmVyIGNvbGxlY3QgcGFzc3dvcmRzLCBmaWxlcywgcGhvdG9zLCBicm93c2luZyBoaXN0b3J5LCBzZXJpYWwgbnVtYmVycywgb3IgbmV0d29yayBhZGRyZXNzZXMuJyxcbiAgICBdXG5cblxuRU5ST0xMTUVOVF9TVEVQUyA9IFtcbiAgICAoXG4gICAgICAgICcxJyxcbiAgICAgICAgJ0FzayB0byBqb2luJyxcbiAgICAgICAgJ1RlbGwgdXMgd2hvIHlvdSBhcmUuIFdlIHdpbGwgc2VuZCBhIHJlcXVlc3QgZnJvbSB0aGlzIGNvbXB1dGVyLicsXG4gICAgKSxcbiAgICAoXG4gICAgICAgICcyJyxcbiAgICAgICAgJ1dlIGNoZWNrIHRoZSBiYXNpY3MnLFxuICAgICAgICAnRmlyc3Qgd2Ugc2VuZCBiYXNpYyBkaWFnbm9zdGljIGRhdGEgd2l0aCB5b3VyIHJlcXVlc3Qgc28gd2Uga25vdyB3aGF0IHRoaXMgbWFjaGluZSBjYW4gYW5kIGNhbm5vdCBoYW5kbGUuJyxcbiAgICApLFxuICAgIChcbiAgICAgICAgJzMnLFxuICAgICAgICAnV2Ugc2V0IGl0IHVwJyxcbiAgICAgICAgJ1NvbWVvbmUgb24gb3VyIHRlYW0gcmV2aWV3cyBpdC4gSWYgdGhleSBzYXkgeWVzLCBzZXR1cCBoYXBwZW5zIGhlcmUgYXV0b21hdGljYWxseS4nLFxuICAgICksXG5dXG5cblxuU0VUVVBfU1RFUFMgPSBbXG4gICAgKCdBcHByb3ZlZCcsICdEb3JpYW4gR3JheSBhY2NlcHRlZCB0aGlzIGNvbXB1dGVyLiBTZXR1cCBzdGFydHMgbm93LicpLFxuICAgICgnR2V0dGluZyB0aGlzIGNvbXB1dGVyIHJlYWR5JywgJ0NoZWNraW5nIG1lbW9yeSwgRG9ja2VyLCBhbmQgYSBmZXcgc3lzdGVtIHNldHRpbmdzLicpLFxuICAgICgnSW5zdGFsbGluZyB3aGF0IHdlIG5lZWQnLCAnVGhlIGZpcnN0IHRpbWUgdGhpcyBjYW4gdGFrZSBhIGZldyBtaW51dGVzLicpLFxuICAgICgnU3RhcnRpbmcgdGhlIGJhY2tncm91bmQgd29ya2VyJywgJ0l0IHdpbGwga2VlcCBydW5uaW5nIGFmdGVyIHlvdSBjbG9zZSB0aGlzIHdpbmRvdy4nKSxcbiAgICAoJ0Nvbm5lY3RpbmcnLCAnRG93bmxvYWRpbmcgdGhlIHdvcmtlciBzb2Z0d2FyZSBhbmQgY2hlY2tpbmcgaW4gd2l0aCBEb3JpYW4gR3JheS4nKSxcbiAgICAoJ0FsbCBzZXQnLCAnWW91IGNhbiBsZWF2ZSB0aGlzIHdpbmRvdyBvcGVuIG9yIHF1aXQuIFRoZSB3b3JrZXIgc3RheXMgb24uJyksXG5dXG5cblxuSU5TVEFMTF9MSU5FX0hJTlRTID0gKFxuICAgICgnQXBwcm92ZWQuIFN0YXJ0aW5nIHNldHVwJywgMCwgJ0FwcHJvdmVkJywgJ1NhdmluZyB0aGlzIGNvbXB1dGVyIG9uIHRoZSB3b3JrZXIgbGlzdC4nKSxcbiAgICAoJ0NoZWNraW5nIHRoaXMgY29tcHV0ZXInLCAxLCAnQ2hlY2tpbmcgdGhpcyBjb21wdXRlcicsICdNYWtpbmcgc3VyZSBpdCBoYXMgZW5vdWdoIG1lbW9yeSBhbmQgdGhlIHJpZ2h0IHRvb2xzLicpLFxuICAgICgnUHJlcGFyaW5nIHRoaXMgY29tcHV0ZXInLCAxLCAnUHJlcGFyaW5nIHRoaXMgY29tcHV0ZXInLCAnQWRqdXN0aW5nIGEgZmV3IHN5c3RlbSBzZXR0aW5ncyBzbyB3b3JrIHN0YXlzIGluIG1lbW9yeS4nKSxcbiAgICAoJ0luc3RhbGxpbmcgcmVxdWlyZWQgdG9vbHMnLCAyLCAnSW5zdGFsbGluZyB0b29scycsICdUaGlzIGNhbiB0YWtlIGEgZmV3IG1pbnV0ZXMgdGhlIGZpcnN0IHRpbWUuJyksXG4gICAgKCdJbnN0YWxsaW5nIEhvbWVicmV3JywgMiwgJ0luc3RhbGxpbmcgSG9tZWJyZXcnLCAnQXBwbGUgbWF5IGFsc28gaW5zdGFsbCBDb21tYW5kIExpbmUgVG9vbHMuIEZvbGxvdyB0aGUgc2V0dXAgbG9nIGZvciBwcm9ncmVzcy4nKSxcbiAgICAoJ0hvbWVicmV3IGlzIHN0aWxsIGluc3RhbGxpbmcnLCAyLCAnSW5zdGFsbGluZyBIb21lYnJldycsICdIb21lYnJldyBpcyBzdGlsbCBydW5uaW5nLiBBcHBsZSBDb21tYW5kIExpbmUgVG9vbHMgY2FuIHRha2Ugc2V2ZXJhbCBtaW51dGVzLicpLFxuICAgICgnSW5zdGFsbGluZyBMaW1hJywgMiwgJ0luc3RhbGxpbmcgYSBMaW51eCB2aXJ0dWFsIG1hY2hpbmUnLCAnVGhpcyBNYWMgcnVucyB0aGUgd29ya2VyIGluc2lkZSBMaW51eC4gRmlyc3QgZG93bmxvYWQgY2FuIHRha2UgYSB3aGlsZS4nKSxcbiAgICAoJ0NyZWF0aW5nIGEgTGludXggd29ya2VyIHZpcnR1YWwgbWFjaGluZScsIDIsICdDcmVhdGluZyBhIExpbnV4IHZpcnR1YWwgbWFjaGluZScsICdUaGUgZmlyc3QgZG93bmxvYWQgY2FuIHRha2Ugc2V2ZXJhbCBtaW51dGVzLicpLFxuICAgICgnU3RhcnRpbmcgdGhlIExpbnV4IHdvcmtlciB2aXJ0dWFsIG1hY2hpbmUnLCAyLCAnU3RhcnRpbmcgdGhlIExpbnV4IHZpcnR1YWwgbWFjaGluZScsICdUaGUgd29ya2VyIHJ1bnMgaW5zaWRlIHRoaXMgVk0gc28gaXQgbWF0Y2hlcyBhIExpbnV4IGhvc3QuJyksXG4gICAgKCdkaXNhYmxpbmcgZGlzayBzd2FwJywgMSwgJ0tlZXBpbmcgdGFzayBmaWxlcyBpbiBtZW1vcnknLCAnVGFzayBzY3JhdGNoIGlzIHRtcGZzOyB0aGUgd29ya2VyIGNncm91cCBkb2VzIG5vdCB1c2Ugc3dhcC4nKSxcbiAgICAoJ1NhdmluZyB0aGlzIGNvbXB1dGVyJywgMywgJ1NhdmluZyB0aGUgY29ubmVjdGlvbicsICdUaGlzIGNvbXB1dGVyIGNhbiBub3cgY2hlY2sgaW4gYXMgYSB3b3JrZXIuJyksXG4gICAgKCdJbnN0YWxsaW5nIHRoZSB3b3JrZXIgaW5zaWRlJywgMywgJ0luc3RhbGxpbmcgaW5zaWRlIHRoZSB2aXJ0dWFsIG1hY2hpbmUnLCAnVGhlIExpbnV4IGluc3RhbGxlciBpcyBydW5uaW5nIGluIHRoZSBiYWNrZ3JvdW5kLicpLFxuICAgICgnSW5zdGFsbGluZyB0aGUgYmFja2dyb3VuZCB3b3JrZXInLCAzLCAnU3RhcnRpbmcgdGhlIGJhY2tncm91bmQgd29ya2VyJywgJ1R1cm5pbmcgb24gdGhlIHNlcnZpY2UgdGhhdCBydW5zIGFmdGVyIHRoaXMgd2luZG93IGlzIGNsb3NlZC4nKSxcbiAgICAoJ01hYyBuZXR3b3JrIGhlbHBlcicsIDMsICdTdGFydGluZyBhIE1hYyBuZXR3b3JrIGhlbHBlcicsICdQaG90byBzdG9yYWdlIHdpbGwgdXNlIHRoaXMgY29tcHV0ZXLigJlzIG5ldHdvcmsuJyksXG4gICAgKCdDb25uZWN0aW5nIGFuZCBkb3dubG9hZGluZycsIDQsICdEb3dubG9hZGluZyB0aGUgd29ya2VyIHNvZnR3YXJlJywgJ1RoaXMgY2FuIHRha2Ugc2V2ZXJhbCBtaW51dGVzLiBZb3UgY2FuIGtlZXAgdXNpbmcgdGhpcyBjb21wdXRlci4nKSxcbiAgICAoJ1dvcmtlciBlbnJvbGxlZCcsIDMsICdXb3JrZXIgZW5yb2xsZWQnLCAnQ29uZmlndXJhdGlvbiBhbmQgdGFzayBpbWFnZXMgYXJlIG9idGFpbmVkIGF0IGNoZWNrLWluLicpLFxuICAgICgnQ29ubmVjdGVkIScsIDUsICdDb25uZWN0ZWQnLCAnVGhpcyBjb21wdXRlciBpcyBub3cgYW4gb2ZmaWNpYWwgd29ya2VyLicpLFxuICAgICgnU2V0dXAgbmVlZHMgYXR0ZW50aW9uJywgTm9uZSwgTm9uZSwgTm9uZSksXG4pXG5cblxuZGVmIGZyaWVuZGx5X2luc3RhbGxfbGluZShsaW5lKTpcbiAgICB0ZXh0ID0gJyAnLmpvaW4obGluZS5zdHJpcCgpLnNwbGl0KCkpXG4gICAgaWYgbm90IHRleHQ6XG4gICAgICAgIHJldHVybiBOb25lXG4gICAgZm9yIG5lZWRsZSwgc3RlcCwgdGl0bGUsIGRldGFpbCBpbiBJTlNUQUxMX0xJTkVfSElOVFM6XG4gICAgICAgIGlmIG5lZWRsZS5sb3dlcigpIGluIHRleHQubG93ZXIoKTpcbiAgICAgICAgICAgIHJldHVybiB7J3N0ZXAnOiBzdGVwLCAndGl0bGUnOiB0aXRsZSwgJ2RldGFpbCc6IGRldGFpbCBvciB0ZXh0LCAncmF3JzogdGV4dH1cbiAgICBpZiB0ZXh0LnN0YXJ0c3dpdGgoJ1NldHVwIG5lZWRzIGF0dGVudGlvbjonKTpcbiAgICAgICAgcmV0dXJuIHsnc3RlcCc6IE5vbmUsICd0aXRsZSc6IE5vbmUsICdkZXRhaWwnOiB0ZXh0LnNwbGl0KCc6JywgMSlbLTFdLnN0cmlwKCksICdyYXcnOiB0ZXh0LCAnZXJyb3InOiBUcnVlfVxuICAgIHJldHVybiB7J3N0ZXAnOiBOb25lLCAndGl0bGUnOiBOb25lLCAnZGV0YWlsJzogdGV4dCwgJ3Jhdyc6IHRleHR9XG5cblxuZGVmIGZyaWVuZGx5X2Jvb2wodmFsdWUpOlxuICAgIGlmIHZhbHVlIGlzIE5vbmU6XG4gICAgICAgIHJldHVybiAndW5rbm93bidcbiAgICByZXR1cm4gJ1llcycgaWYgdmFsdWUgZWxzZSAnTm8nXG5cblxuZGVmIGZvcm1hdF9ieXRlcyh2YWx1ZSk6XG4gICAgaWYgbm90IHZhbHVlOlxuICAgICAgICByZXR1cm4gJ3Vua25vd24nXG4gICAgdW5pdHMgPSBbJ0InLCAnS2lCJywgJ01pQicsICdHaUInLCAnVGlCJ11cbiAgICBzaXplID0gZmxvYXQodmFsdWUpXG4gICAgZm9yIHVuaXQgaW4gdW5pdHM6XG4gICAgICAgIGlmIHNpemUgPCAxMDI0IG9yIHVuaXQgPT0gdW5pdHNbLTFdOlxuICAgICAgICAgICAgcmV0dXJuIGYne3NpemU6LjBmfSB7dW5pdH0nIGlmIHVuaXQgPT0gJ0InIGVsc2UgZid7c2l6ZTouMWZ9IHt1bml0fSdcbiAgICAgICAgc2l6ZSAvPSAxMDI0XG5cblxuZGVmIGRyYXdfc2VyaWVzKGNhbnZhcywgdmFsdWVzLCBsaW5lLCBmaWxsLCBmbG9vcj1Ob25lLCBjZWlsaW5nPU5vbmUpOlxuICAgIGNhbnZhcy5kZWxldGUoJ2FsbCcpXG4gICAgd2lkdGggPSBtYXgoaW50KGNhbnZhcy53aW5mb193aWR0aCgpIG9yIGNhbnZhcy5jZ2V0KCd3aWR0aCcpIG9yIDApLCAyKVxuICAgIGhlaWdodCA9IG1heChpbnQoY2FudmFzLndpbmZvX2hlaWdodCgpIG9yIGNhbnZhcy5jZ2V0KCdoZWlnaHQnKSBvciAwKSwgMilcbiAgICBjYW52YXMuY3JlYXRlX3JlY3RhbmdsZSgwLCAwLCB3aWR0aCwgaGVpZ2h0LCBmaWxsPScjZmZmY2Y4Jywgb3V0bGluZT0nJylcbiAgICBpZiBsZW4odmFsdWVzKSA8IDI6XG4gICAgICAgIHJldHVyblxuICAgIGxvID0gZmxvb3IgaWYgZmxvb3IgaXMgbm90IE5vbmUgZWxzZSBtaW4odmFsdWVzKVxuICAgIGhpID0gY2VpbGluZyBpZiBjZWlsaW5nIGlzIG5vdCBOb25lIGVsc2UgbWF4KHZhbHVlcylcbiAgICBpZiBoaSA8PSBsbzpcbiAgICAgICAgaGkgPSBsbyArIDFcbiAgICBwYWQgPSA2XG4gICAgaW5uZXJfdyA9IG1heCh3aWR0aCAtIHBhZCAqIDIsIDEpXG4gICAgaW5uZXJfaCA9IG1heChoZWlnaHQgLSBwYWQgKiAyLCAxKVxuICAgIHBvaW50cyA9IFtdXG4gICAgbGFzdCA9IG1heChsZW4odmFsdWVzKSAtIDEsIDEpXG4gICAgZm9yIGluZGV4LCB2YWx1ZSBpbiBlbnVtZXJhdGUodmFsdWVzKTpcbiAgICAgICAgeCA9IHBhZCArIGlubmVyX3cgKiBpbmRleCAvIGxhc3RcbiAgICAgICAgeSA9IHBhZCArIGlubmVyX2ggKiAoMSAtICh2YWx1ZSAtIGxvKSAvIChoaSAtIGxvKSlcbiAgICAgICAgcG9pbnRzLmV4dGVuZCgoeCwgeSkpXG4gICAgY2FudmFzLmNyZWF0ZV9wb2x5Z29uKHBhZCwgaGVpZ2h0IC0gcGFkLCAqcG9pbnRzLCBwYWQgKyBpbm5lcl93LCBoZWlnaHQgLSBwYWQsIGZpbGw9ZmlsbCwgb3V0bGluZT0nJylcbiAgICBjYW52YXMuY3JlYXRlX2xpbmUoKnBvaW50cywgZmlsbD1saW5lLCB3aWR0aD0yKVxuXG5cbmRlZiBzZXR1cF9wbGFuKG9yaWdpbik6XG4gICAgaW1hZ2UgPSAncmVnaXN0cnkuZ2l0bGFiLmNvbS9kb3JpYW4tZ3JheS1lbnRlcnByaXNlcy9hdXRvbWF0aW9uL2NvbXB1dGUtd29ya2VyJ1xuICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJzpcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICdUaGlzIE1hYyB3aWxsIHJ1biB0aGUgd29ya2VyIGluc2lkZSBhIExpbnV4IHZpcnR1YWwgbWFjaGluZSAoTGltYSArIFVidW50dSAyNC4wNCkuICdcbiAgICAgICAgICAgICdIb21lYnJldyBtYXkgaW5zdGFsbCBMaW1hLiBTZXR1cCBuZWVkcyB5b3VyIE1hYyBwYXNzd29yZCBmb3IgdGhlIExpbnV4IGluc3RhbGxlciBpbnNpZGUgdGhlIFZNLicsXG4gICAgICAgICAgICAnXFxuJy5qb2luKFtcbiAgICAgICAgICAgICAgICAnSG9zdDogbWFjT1MuIEd1ZXN0OiBMaW1hIGluc3RhbmNlIGBkZ2Utd29ya2VyYCBmcm9tIHRlbXBsYXRlOi8vdWJ1bnR1LTI0LjA0LicsXG4gICAgICAgICAgICAgICAgJ0hvc3QgaGVscGVyOiBtYWNvc19yMl9wcm94eS5weSBvbiAxMjcuMC4wLjE6MTg3ODkgc28gUjIgVExTIHN0YXlzIG9uIHRoZSBNYWMuJyxcbiAgICAgICAgICAgICAgICAnTGF1bmNoQWdlbnQ6IH4vTGlicmFyeS9MYXVuY2hBZ2VudHMvY29tLmRnZS5jb21wdXRlLWhvc3QtZ3VpLnBsaXN0JyxcbiAgICAgICAgICAgICAgICBmJ0d1ZXN0IGltYWdlOiB7aW1hZ2V9OnN0YWJsZSwgcmVzb2x2ZWQgdG8gYW4gaW1tdXRhYmxlIHNoYTI1NiBkaWdlc3QgYXQgYXBwcm92YWwuJyxcbiAgICAgICAgICAgICAgICAnR3Vlc3QgbGF5b3V0OiAvb3B0L2RnZS13b3JrZXIve2xhdW5jaGVyLnB5LGJvb3RzdHJhcC9hZ2VudC5weSxpZGVudGl0eS5qc29ufScsXG4gICAgICAgICAgICAgICAgJ0d1ZXN0IHNlcnZpY2U6IHN5c3RlbWQgZGdlLXdvcmtlci5zZXJ2aWNlIGluIGNvbXB1dGUuc2xpY2U7IHRtcGZzIC9ydW4vZGdlLXdvcmtlci90YXNrcy4nLFxuICAgICAgICAgICAgICAgICdHdWVzdCBEb2NrZXI6IGRvY2tlci5pbywgY2dyb3VwIHYyLCBNZW1vcnlTd2FwTWF4PTAgZm9yIHRoZSB3b3JrZXIsIGRvY2tlciBwdWxsIG9mIHRoZSBkaWdlc3QgYXQgY2hlY2staW4uJyxcbiAgICAgICAgICAgICAgICBmJ0NoZWNrLWluOiB7b3JpZ2lufS9jb21wdXRlX2ZsZWV0L3N0YXR1cyB3aXRoIGEgd29ya2VyIGJlYXJlciB0b2tlbi4nLFxuICAgICAgICAgICAgICAgICdDb21tYW5kcyBpbmNsdWRlOiBicmV3IGluc3RhbGwgbGltYTsgbGltYWN0bCBzdGFydDsgbGltYWN0bCBzaGVsbCBzdWRvIGJhc2ggL3RtcC9zZXR1cC13b3JrZXIuc2gnLFxuICAgICAgICAgICAgXSksXG4gICAgICAgIClcbiAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJzpcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICdXaW5kb3dzIHdpbGwgcnVuIHRoZSB3b3JrZXIgaW5zaWRlIFVidW50dSAoV1NMKSB3aXRoIHN5c3RlbWQuICdcbiAgICAgICAgICAgICdJZiBVYnVudHUgaXMgbWlzc2luZywgV2luZG93cyB3aWxsIGFzayBmb3IgcGVybWlzc2lvbiBhbmQgbWF5IG5lZWQgb25lIHJlc3RhcnQuJyxcbiAgICAgICAgICAgICdcXG4nLmpvaW4oW1xuICAgICAgICAgICAgICAgICdIb3N0OiBXaW5kb3dzLiBHdWVzdDogV1NMIFVidW50dSB3aXRoIHN5c3RlbWQ9dHJ1ZS4nLFxuICAgICAgICAgICAgICAgIGYnR3Vlc3QgaW1hZ2U6IHtpbWFnZX06c3RhYmxlLCByZXNvbHZlZCB0byBhbiBpbW11dGFibGUgc2hhMjU2IGRpZ2VzdCBhdCBhcHByb3ZhbC4nLFxuICAgICAgICAgICAgICAgICdHdWVzdCBsYXlvdXQ6IC9vcHQvZGdlLXdvcmtlci97bGF1bmNoZXIucHksYm9vdHN0cmFwL2FnZW50LnB5LGlkZW50aXR5Lmpzb259JyxcbiAgICAgICAgICAgICAgICAnR3Vlc3Qgc2VydmljZTogc3lzdGVtZCBkZ2Utd29ya2VyLnNlcnZpY2UgaW4gY29tcHV0ZS5zbGljZTsgdG1wZnMgL3J1bi9kZ2Utd29ya2VyL3Rhc2tzLicsXG4gICAgICAgICAgICAgICAgJ0d1ZXN0IERvY2tlcjogZG9ja2VyLmlvLCBjZ3JvdXAgdjIsIE1lbW9yeVN3YXBNYXg9MCBmb3IgdGhlIHdvcmtlciwgZG9ja2VyIHB1bGwgb2YgdGhlIGRpZ2VzdCBhdCBjaGVjay1pbi4nLFxuICAgICAgICAgICAgICAgIGYnQ2hlY2staW46IHtvcmlnaW59L2NvbXB1dGVfZmxlZXQvc3RhdHVzIHdpdGggYSB3b3JrZXIgYmVhcmVyIHRva2VuLicsXG4gICAgICAgICAgICAgICAgJ0NvbW1hbmRzIGluY2x1ZGU6IHdzbCAtLWluc3RhbGwgLWQgVWJ1bnR1OyB3c2wgLWQgVWJ1bnR1IC0tIHN1ZG8gcHl0aG9uMyBpbnN0YWxsLnB5JyxcbiAgICAgICAgICAgIF0pLFxuICAgICAgICApXG4gICAgcmV0dXJuIChcbiAgICAgICAgJ1RoaXMgTGludXggY29tcHV0ZXIgd2lsbCBpbnN0YWxsIERvY2tlciBpZiBuZWVkZWQgJ1xuICAgICAgICAnYW5kIHJ1biBhIHN5c3RlbWQgd29ya2VyIHRoYXQgcHVsbHMgdGhlIHB1Ymxpc2hlZCBjb250YWluZXIgaW1hZ2UuIFNldHVwIG5lZWRzIHlvdXIgYWRtaW5pc3RyYXRvciBwYXNzd29yZC4nLFxuICAgICAgICAnXFxuJy5qb2luKFtcbiAgICAgICAgICAgICdIb3N0OiBMaW51eCAoVWJ1bnR1IDI04oCTMjYgb3IgRGViaWFuIDEy4oCTMTMpLiBQcml2aWxlZ2VkIHN0ZXBzIHVzZSBwa2V4ZWMvc3Vkby4nLFxuICAgICAgICAgICAgJ1BhY2thZ2VzIGlmIG1pc3Npbmc6IGRvY2tlci5pbyBpcHJvdXRlMiBwY2l1dGlscyB1dGlsLWxpbnV4IHZpYSBhcHQtZ2V0LicsXG4gICAgICAgICAgICAnSG9zdCBwcmVwOiBzeXN0ZW1jdGwgZW5hYmxlIC0tbm93IGRvY2tlci5zZXJ2aWNlLiBIb3N0IHN3YXAgaXMgbGVmdCBlbmFibGVkLicsXG4gICAgICAgICAgICBmJ0ltYWdlOiB7aW1hZ2V9OnN0YWJsZSwgcmVzb2x2ZWQgdG8gYW4gaW1tdXRhYmxlIHNoYTI1NiBkaWdlc3QgYXQgYXBwcm92YWwuJyxcbiAgICAgICAgICAgICdMYXlvdXQ6IC9vcHQvZGdlLXdvcmtlci97bGF1bmNoZXIucHksYm9vdHN0cmFwL2FnZW50LnB5LGlkZW50aXR5Lmpzb24sY3VycmVudC5qc29ufScsXG4gICAgICAgICAgICAnU2VydmljZTogL2V0Yy9zeXN0ZW1kL3N5c3RlbS9kZ2Utd29ya2VyLnNlcnZpY2UgaW4gY29tcHV0ZS5zbGljZSwgTWVtb3J5U3dhcE1heD0wLicsXG4gICAgICAgICAgICAnU2NyYXRjaDogdG1wZnMgL3J1bi9kZ2Utd29ya2VyL3Rhc2tzICgyNTZtLCBub3N1aWQsbm9kZXYsbm9leGVjKS4nLFxuICAgICAgICAgICAgJ0lmIEdpdExhYiBSdW5uZXIgaXMgcHJlc2VudDogL2V0Yy9naXRsYWItcnVubmVyL2NvbmZpZy50b21sIGNncm91cF9wYXJlbnQ9Y2kuc2xpY2UuJyxcbiAgICAgICAgICAgICdBdCBjaGVjay1pbiB0aGUgYWdlbnQgZG9ja2VyLXB1bGxzIHRoZSBkaWdlc3QgYW5kIHJ1bnMgdGhlIHdvcmtlciBjb250YWluZXIgd2l0aCAtLW1lbW9yeS1zd2FwIGVxdWFsIHRvIC0tbWVtb3J5LicsXG4gICAgICAgICAgICBmJ0FQSTogUE9TVCB7b3JpZ2lufS9jb21wdXRlX2ZsZWV0L3N0YXR1cyB3aXRoIEF1dGhvcml6YXRpb246IEJlYXJlciA8d29ya2VyIHRva2VuPi4nLFxuICAgICAgICAgICAgJ1R5cGljYWwgY29tbWFuZHM6IGFwdC1nZXQgdXBkYXRlOyBhcHQtZ2V0IGluc3RhbGwgLXkgZG9ja2VyLmlvOyBzeXN0ZW1jdGwgZW5hYmxlIC0tbm93IGRvY2tlcjsnLFxuICAgICAgICAgICAgJ3N5c3RlbWN0bCBkYWVtb24tcmVsb2FkOyBzeXN0ZW1jdGwgZW5hYmxlIC0tbm93IGRnZS13b3JrZXIuc2VydmljZS4nLFxuICAgICAgICBdKSxcbiAgICApXG5cblxuZGVmIGluc3RhbGxfbGludXhfZGVza3RvcF9lbnRyeShndWlfc2NyaXB0LCBzY3JpcHRfcGF0aCk6XG4gICAgaWNvbl9zcmMgPSBST09UIC8gJ2RnZS1pY29uLnBuZydcbiAgICBpZiBub3QgaWNvbl9zcmMuZXhpc3RzKCk6XG4gICAgICAgIHJldHVybiBGYWxzZVxuXG4gICAgYXBwc19kaXIgPSBQYXRoLmhvbWUoKSAvICcubG9jYWwnIC8gJ3NoYXJlJyAvICdhcHBsaWNhdGlvbnMnXG4gICAgYXBwc19kaXIubWtkaXIocGFyZW50cz1UcnVlLCBleGlzdF9vaz1UcnVlKVxuICAgIGZvciBzaXplIGluICg0OCwgMTI4LCAyNTYpOlxuICAgICAgICBpY29uX2RpciA9IFBhdGguaG9tZSgpIC8gJy5sb2NhbCcgLyAnc2hhcmUnIC8gJ2ljb25zJyAvICdoaWNvbG9yJyAvIGYne3NpemV9eHtzaXplfScgLyAnYXBwcydcbiAgICAgICAgaWNvbl9kaXIubWtkaXIocGFyZW50cz1UcnVlLCBleGlzdF9vaz1UcnVlKVxuICAgICAgICBkZXN0ID0gaWNvbl9kaXIgLyBmJ3tMSU5VWF9JQ09OX05BTUV9LnBuZydcbiAgICAgICAgaWYgc2h1dGlsLndoaWNoKCdjb252ZXJ0Jyk6XG4gICAgICAgICAgICBzdWJwcm9jZXNzLnJ1bihcbiAgICAgICAgICAgICAgICBbJ2NvbnZlcnQnLCBzdHIoaWNvbl9zcmMpLCAnLXJlc2l6ZScsIGYne3NpemV9eHtzaXplfScsIHN0cihkZXN0KV0sXG4gICAgICAgICAgICAgICAgY2hlY2s9RmFsc2UsXG4gICAgICAgICAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuREVWTlVMTCxcbiAgICAgICAgICAgICAgICBzdGRlcnI9c3VicHJvY2Vzcy5ERVZOVUxMLFxuICAgICAgICAgICAgKVxuICAgICAgICBlbGlmIG5vdCBkZXN0LmV4aXN0cygpOlxuICAgICAgICAgICAgc2h1dGlsLmNvcHkoaWNvbl9zcmMsIGRlc3QpXG5cbiAgICBwaXhtYXBzID0gUGF0aC5ob21lKCkgLyAnLmxvY2FsJyAvICdzaGFyZScgLyAncGl4bWFwcydcbiAgICBwaXhtYXBzLm1rZGlyKHBhcmVudHM9VHJ1ZSwgZXhpc3Rfb2s9VHJ1ZSlcbiAgICBwaXhtYXBfaWNvbiA9IHBpeG1hcHMgLyBmJ3tMSU5VWF9JQ09OX05BTUV9LnBuZydcbiAgICBzaHV0aWwuY29weShpY29uX3NyYywgcGl4bWFwX2ljb24pXG4gICAgaWNvbl8xMjggPSBQYXRoLmhvbWUoKSAvICcubG9jYWwnIC8gJ3NoYXJlJyAvICdpY29ucycgLyAnaGljb2xvcicgLyAnMTI4eDEyOCcgLyAnYXBwcycgLyBmJ3tMSU5VWF9JQ09OX05BTUV9LnBuZydcbiAgICBpY29uX3BhdGggPSBzdHIoaWNvbl8xMjggaWYgaWNvbl8xMjguZXhpc3RzKCkgZWxzZSBwaXhtYXBfaWNvbilcbiAgICBleGVjX3BhcnRzID0gW1xuICAgICAgICAnZW52JyxcbiAgICAgICAgJ0RHRV9MSU5VWF9ERVNLVE9QX0xBVU5DSEVEPTEnLFxuICAgICAgICAnR0RLX0JBQ0tFTkQ9eDExJyxcbiAgICAgICAgc3lzLmV4ZWN1dGFibGUsXG4gICAgICAgIHN0cihndWlfc2NyaXB0KSxcbiAgICAgICAgc3RyKHNjcmlwdF9wYXRoKSxcbiAgICBdXG4gICAgZGVza3RvcCA9IGZcIlwiXCJbRGVza3RvcCBFbnRyeV1cblZlcnNpb249MS4wXG5UeXBlPUFwcGxpY2F0aW9uXG5OYW1lPURvcmlhbiBHcmF5IFdvcmtlclxuQ29tbWVudD1SdW4gRG9yaWFuIEdyYXkgYmFja2dyb3VuZCB3b3JrIHdoZW4gdGhpcyBjb21wdXRlciBpcyBpZGxlXG5FeGVjPXsnICcuam9pbihzaGxleC5xdW90ZShwYXJ0KSBmb3IgcGFydCBpbiBleGVjX3BhcnRzKX1cbkljb249e2ljb25fcGF0aH1cblRlcm1pbmFsPWZhbHNlXG5TdGFydHVwV01DbGFzcz17TElOVVhfV01fQ0xBU1N9XG5DYXRlZ29yaWVzPVV0aWxpdHk7XG5cIlwiXCJcbiAgICAoYXBwc19kaXIgLyBmJ3tERVNLVE9QX0FQUF9JRH0uZGVza3RvcCcpLndyaXRlX3RleHQoZGVza3RvcClcbiAgICBzdWJwcm9jZXNzLnJ1bihcbiAgICAgICAgWyd1cGRhdGUtZGVza3RvcC1kYXRhYmFzZScsIHN0cihhcHBzX2RpcildLFxuICAgICAgICBjaGVjaz1GYWxzZSxcbiAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuREVWTlVMTCxcbiAgICAgICAgc3RkZXJyPXN1YnByb2Nlc3MuREVWTlVMTCxcbiAgICApXG4gICAgaWNvbl90aGVtZSA9IFBhdGguaG9tZSgpIC8gJy5sb2NhbCcgLyAnc2hhcmUnIC8gJ2ljb25zJyAvICdoaWNvbG9yJ1xuICAgIGlmIGljb25fdGhlbWUuZXhpc3RzKCk6XG4gICAgICAgIHN1YnByb2Nlc3MucnVuKFxuICAgICAgICAgICAgWydndGstdXBkYXRlLWljb24tY2FjaGUnLCAnLWYnLCAnLXQnLCBzdHIoaWNvbl90aGVtZSldLFxuICAgICAgICAgICAgY2hlY2s9RmFsc2UsXG4gICAgICAgICAgICBzdGRvdXQ9c3VicHJvY2Vzcy5ERVZOVUxMLFxuICAgICAgICAgICAgc3RkZXJyPXN1YnByb2Nlc3MuREVWTlVMTCxcbiAgICAgICAgKVxuICAgIHJldHVybiBUcnVlXG5cblxuZGVmIHdhbnRfaGVhZGxlc3MoKTpcbiAgICBmbGFnID0gb3MuZW52aXJvbi5nZXQoJ0RHRV9FTlJPTExfSEVBRExFU1MnLCAnJykuc3RyaXAoKS5sb3dlcigpXG4gICAgaWYgZmxhZyBpbiAoJzEnLCAndHJ1ZScsICd5ZXMnKTpcbiAgICAgICAgcmV0dXJuIFRydWVcbiAgICBpZiBub3Qgc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoJ2xpbnV4Jyk6XG4gICAgICAgIHJldHVybiBGYWxzZVxuICAgIHJldHVybiBub3QgKG9zLmVudmlyb24uZ2V0KCdESVNQTEFZJykgb3Igb3MuZW52aXJvbi5nZXQoJ1dBWUxBTkRfRElTUExBWScpKVxuXG5cbmRlZiBjbGlfY29udGFjdCgpOlxuICAgIG5hbWUgPSBvcy5lbnZpcm9uLmdldCgnREdFX0VOUk9MTF9OQU1FJywgJycpLnN0cmlwKClcbiAgICBlbWFpbCA9IG9zLmVudmlyb24uZ2V0KCdER0VfRU5ST0xMX0VNQUlMJywgJycpLnN0cmlwKClcbiAgICBwaG9uZSA9IG9zLmVudmlyb24uZ2V0KCdER0VfRU5ST0xMX1BIT05FJywgJycpLnN0cmlwKClcbiAgICBub3RlID0gb3MuZW52aXJvbi5nZXQoJ0RHRV9FTlJPTExfTk9URScsICcnKS5zdHJpcCgpXG4gICAgaWYgbmFtZSBhbmQgZW1haWwgYW5kIHBob25lOlxuICAgICAgICByZXR1cm4geydkaXNwbGF5X25hbWUnOiBuYW1lLCAnZW1haWwnOiBlbWFpbCwgJ3Bob25lJzogcGhvbmUsICdub3RlJzogbm90ZX1cbiAgICByZXR1cm4gTm9uZVxuXG5cbmRlZiBsaW51eF9yZWxhdW5jaF92aWFfZGVza3RvcChzY3JpcHRfcGF0aCk6XG4gICAgaWYgbm90IHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCdsaW51eCcpOlxuICAgICAgICByZXR1cm4gRmFsc2VcbiAgICBpZiB3YW50X2hlYWRsZXNzKCk6XG4gICAgICAgIHJldHVybiBGYWxzZVxuICAgIGlmIG9zLmVudmlyb24uZ2V0KCdER0VfTElOVVhfREVTS1RPUF9MQVVOQ0hFRCcpID09ICcxJzpcbiAgICAgICAgcmV0dXJuIEZhbHNlXG4gICAgZ3VpX3NjcmlwdCA9IFJPT1QgLyAnaG9zdF9ndWkucHknXG4gICAgaWYgbm90IGluc3RhbGxfbGludXhfZGVza3RvcF9lbnRyeShndWlfc2NyaXB0LCBzY3JpcHRfcGF0aCk6XG4gICAgICAgIHJldHVybiBGYWxzZVxuICAgIGRlc2t0b3BfZmlsZSA9IFBhdGguaG9tZSgpIC8gJy5sb2NhbCcgLyAnc2hhcmUnIC8gJ2FwcGxpY2F0aW9ucycgLyBmJ3tERVNLVE9QX0FQUF9JRH0uZGVza3RvcCdcbiAgICBmb3IgY29tbWFuZCBpbiAoXG4gICAgICAgIChbJ2dpbycsICdsYXVuY2gnLCBzdHIoZGVza3RvcF9maWxlKV0gaWYgc2h1dGlsLndoaWNoKCdnaW8nKSBlbHNlIE5vbmUpLFxuICAgICAgICAoWydndGstbGF1bmNoJywgREVTS1RPUF9BUFBfSURdIGlmIHNodXRpbC53aGljaCgnZ3RrLWxhdW5jaCcpIGVsc2UgTm9uZSksXG4gICAgKTpcbiAgICAgICAgaWYgbm90IGNvbW1hbmQ6XG4gICAgICAgICAgICBjb250aW51ZVxuICAgICAgICByZXN1bHQgPSBzdWJwcm9jZXNzLnJ1bihjb21tYW5kLCBjaGVjaz1GYWxzZSlcbiAgICAgICAgaWYgcmVzdWx0LnJldHVybmNvZGUgPT0gMDpcbiAgICAgICAgICAgIHN5cy5leGl0KDApXG4gICAgcmV0dXJuIEZhbHNlXG5cblxuZGVmIG1hY29zX3JlbGF1bmNoX3ZpYV9hcXVhKHNjcmlwdF9wYXRoKTpcbiAgICBpZiBzeXMucGxhdGZvcm0gIT0gJ2Rhcndpbic6XG4gICAgICAgIHJldHVybiBGYWxzZVxuICAgIGlmIHdhbnRfaGVhZGxlc3MoKTpcbiAgICAgICAgcmV0dXJuIEZhbHNlXG4gICAgaWYgb3MuZW52aXJvbi5nZXQoJ0RHRV9NQUNfQVFVQV9MQVVOQ0hFRCcpID09ICcxJzpcbiAgICAgICAgcmV0dXJuIEZhbHNlXG4gICAgaWYgbm90IG9zLmVudmlyb24uZ2V0KCdTU0hfQ09OTkVDVElPTicpOlxuICAgICAgICByZXR1cm4gRmFsc2VcbiAgICByb290ID0gc3RyKFJPT1QpXG4gICAgaWYgcm9vdC5zdGFydHN3aXRoKCgnL3RtcC8nLCAnL3Zhci9mb2xkZXJzLycpKSBvciAnZGdlLXdvcmtlci1pbnN0YWxsLicgaW4gcm9vdDpcbiAgICAgICAgcmV0dXJuIEZhbHNlXG4gICAgcHl0aG9uID0gc2hsZXgucXVvdGUoc3lzLmV4ZWN1dGFibGUpXG4gICAgZ3VpID0gc2hsZXgucXVvdGUoc3RyKFJPT1QgLyAnaG9zdF9ndWkucHknKSlcbiAgICBzY3JpcHQgPSBzaGxleC5xdW90ZShzY3JpcHRfcGF0aClcbiAgICBjb21tYW5kID0gZidleHBvcnQgREdFX01BQ19BUVVBX0xBVU5DSEVEPTE7IGV4ZWMge3B5dGhvbn0ge2d1aX0ge3NjcmlwdH0nXG4gICAgZXNjYXBlZCA9IGNvbW1hbmQucmVwbGFjZSgnXFxcXCcsICdcXFxcXFxcXCcpLnJlcGxhY2UoJ1wiJywgJ1xcXFxcIicpXG4gICAgcmVzdWx0ID0gc3VicHJvY2Vzcy5ydW4oXG4gICAgICAgIFtcbiAgICAgICAgICAgICdvc2FzY3JpcHQnLFxuICAgICAgICAgICAgJy1lJywgJ3RlbGwgYXBwbGljYXRpb24gXCJUZXJtaW5hbFwiIHRvIGFjdGl2YXRlJyxcbiAgICAgICAgICAgICctZScsIGYndGVsbCBhcHBsaWNhdGlvbiBcIlRlcm1pbmFsXCIgdG8gZG8gc2NyaXB0IFwie2VzY2FwZWR9XCInLFxuICAgICAgICBdLFxuICAgICAgICBjaGVjaz1GYWxzZSxcbiAgICApXG4gICAgaWYgcmVzdWx0LnJldHVybmNvZGUgPT0gMDpcbiAgICAgICAgc3lzLmV4aXQoMClcbiAgICByZXR1cm4gRmFsc2VcblxuXG5kZWYgbG9hZF9icmFuZF9pY29uKHRrLCBzaXplPTQ4KTpcbiAgICBpY29uX3BhdGggPSBST09UIC8gJ2RnZS1pY29uLnBuZydcbiAgICBpZiBub3QgaWNvbl9wYXRoLmV4aXN0cygpOlxuICAgICAgICByZXR1cm4gTm9uZVxuICAgIHRyeTpcbiAgICAgICAgaW1hZ2UgPSB0ay5QaG90b0ltYWdlKGZpbGU9c3RyKGljb25fcGF0aCkpXG4gICAgICAgIGlmIGltYWdlLndpZHRoKCkgPiBzaXplOlxuICAgICAgICAgICAgZmFjdG9yID0gbWF4KDEsIHJvdW5kKGltYWdlLndpZHRoKCkgLyBzaXplKSlcbiAgICAgICAgICAgIGltYWdlID0gaW1hZ2Uuc3Vic2FtcGxlKGZhY3RvciwgZmFjdG9yKVxuICAgICAgICByZXR1cm4gaW1hZ2VcbiAgICBleGNlcHQgdGsuVGNsRXJyb3I6XG4gICAgICAgIHJldHVybiBOb25lXG5cblxuZGVmIHdpbmRvd19pY29uX2ltYWdlcyh0ayk6XG4gICAgaWNvbl9wYXRoID0gUk9PVCAvICdkZ2UtaWNvbi5wbmcnXG4gICAgaWYgbm90IGljb25fcGF0aC5leGlzdHMoKTpcbiAgICAgICAgcmV0dXJuIFtdXG4gICAgdHJ5OlxuICAgICAgICBtYXN0ZXIgPSB0ay5QaG90b0ltYWdlKGZpbGU9c3RyKGljb25fcGF0aCkpXG4gICAgZXhjZXB0IHRrLlRjbEVycm9yOlxuICAgICAgICByZXR1cm4gW11cbiAgICBpY29ucyA9IFtdXG4gICAgc2VlbiA9IHNldCgpXG4gICAgZm9yIHRhcmdldCBpbiAoMTYsIDI0LCAzMiwgNDgsIDY0LCA5NiwgMTI4LCAxOTIsIDI1Nik6XG4gICAgICAgIGlmIG1hc3Rlci53aWR0aCgpIDwgdGFyZ2V0OlxuICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgZmFjdG9yID0gbWF4KDEsIG1hc3Rlci53aWR0aCgpIC8vIHRhcmdldClcbiAgICAgICAgc2l6ZSA9IG1hc3Rlci53aWR0aCgpIC8vIGZhY3RvclxuICAgICAgICBpZiBzaXplIGluIHNlZW46XG4gICAgICAgICAgICBjb250aW51ZVxuICAgICAgICBzZWVuLmFkZChzaXplKVxuICAgICAgICBpY29ucy5hcHBlbmQobWFzdGVyLnN1YnNhbXBsZShmYWN0b3IsIGZhY3RvcikpXG4gICAgcmV0dXJuIGljb25zIG9yIFttYXN0ZXJdXG5cblxuZGVmIGFwcGx5X3dpbmRvd19pY29uKHJvb3QpOlxuICAgIGltcG9ydCB0a2ludGVyIGFzIHRrXG5cbiAgICBpY29ucyA9IHdpbmRvd19pY29uX2ltYWdlcyh0aylcbiAgICBpZiBpY29uczpcbiAgICAgICAgcm9vdC5fd2luZG93X2ljb25zID0gaWNvbnNcbiAgICAgICAgdHJ5OlxuICAgICAgICAgICAgcm9vdC5pY29ucGhvdG8oVHJ1ZSwgKmljb25zKVxuICAgICAgICBleGNlcHQgdGsuVGNsRXJyb3I6XG4gICAgICAgICAgICB0cnk6XG4gICAgICAgICAgICAgICAgcm9vdC5pY29ucGhvdG8oVHJ1ZSwgaWNvbnNbLTFdKVxuICAgICAgICAgICAgZXhjZXB0IHRrLlRjbEVycm9yOlxuICAgICAgICAgICAgICAgIGljb25zID0gW11cbiAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJzpcbiAgICAgICAgaWNvbl9wYXRoID0gUk9PVCAvICdkZ2UtaWNvbi5pY28nXG4gICAgICAgIGlmIGljb25fcGF0aC5leGlzdHMoKTpcbiAgICAgICAgICAgIHRyeTpcbiAgICAgICAgICAgICAgICByb290Lmljb25iaXRtYXAoc3RyKGljb25fcGF0aCkpXG4gICAgICAgICAgICBleGNlcHQgdGsuVGNsRXJyb3I6XG4gICAgICAgICAgICAgICAgcGFzc1xuICAgIGVsaWYgc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nOlxuICAgICAgICBpY29uX3BhdGggPSBST09UIC8gJ2RnZS1pY29uLnBuZydcbiAgICAgICAgaWYgaWNvbl9wYXRoLmV4aXN0cygpOlxuICAgICAgICAgICAgdHJ5OlxuICAgICAgICAgICAgICAgIHJvb3QuaWNvbnBob3RvKFRydWUsIHRrLlBob3RvSW1hZ2UoZmlsZT1zdHIoaWNvbl9wYXRoKSkpXG4gICAgICAgICAgICBleGNlcHQgdGsuVGNsRXJyb3I6XG4gICAgICAgICAgICAgICAgcGFzc1xuICAgIHJldHVybiBpY29uc1xuXG5cbmRlZiBwcmVzZW50X3dpbmRvdyhyb290KTpcbiAgICBpbXBvcnQgdGtpbnRlciBhcyB0a1xuXG4gICAgYXBwbHlfd2luZG93X2ljb24ocm9vdClcbiAgICByb290LmRlaWNvbmlmeSgpXG4gICAgcm9vdC51cGRhdGVfaWRsZXRhc2tzKClcbiAgICB0cnk6XG4gICAgICAgIGlmIHJvb3Quc3RhdGUoKSA9PSAnem9vbWVkJzpcbiAgICAgICAgICAgIHJvb3Quc3RhdGUoJ25vcm1hbCcpXG4gICAgZXhjZXB0IHRrLlRjbEVycm9yOlxuICAgICAgICBwYXNzXG4gICAgZm9yIGZsYWcgaW4gKCctem9vbWVkJywgJy1mdWxsc2NyZWVuJyk6XG4gICAgICAgIHRyeTpcbiAgICAgICAgICAgIHJvb3QuYXR0cmlidXRlcyhmbGFnLCBGYWxzZSlcbiAgICAgICAgZXhjZXB0IHRrLlRjbEVycm9yOlxuICAgICAgICAgICAgcGFzc1xuICAgIHNjcmVlbl93ID0gcm9vdC53aW5mb19zY3JlZW53aWR0aCgpXG4gICAgc2NyZWVuX2ggPSByb290LndpbmZvX3NjcmVlbmhlaWdodCgpXG4gICAgd2lkdGggPSBtaW4oMTEwMCwgbWF4KDgyMCwgc2NyZWVuX3cgLSAyNDApKVxuICAgIGhlaWdodCA9IG1pbig3NjAsIG1heCg2MDAsIHNjcmVlbl9oIC0gMjAwKSlcbiAgICB4ID0gbWF4KDQwLCAoc2NyZWVuX3cgLSB3aWR0aCkgLy8gMilcbiAgICB5ID0gbWF4KDQwLCAoc2NyZWVuX2ggLSBoZWlnaHQpIC8vIDIpXG4gICAgcm9vdC5nZW9tZXRyeShmJ3t3aWR0aH14e2hlaWdodH0re3h9K3t5fScpXG4gICAgdHJ5OlxuICAgICAgICByb290LmF0dHJpYnV0ZXMoJy10b3Btb3N0JywgVHJ1ZSlcbiAgICAgICAgcm9vdC5saWZ0KClcbiAgICAgICAgcm9vdC5mb2N1c19mb3JjZSgpXG4gICAgICAgIHJvb3QuYWZ0ZXIoNDAwLCBsYW1iZGE6IHJvb3QuYXR0cmlidXRlcygnLXRvcG1vc3QnLCBGYWxzZSkpXG4gICAgZXhjZXB0IHRrLlRjbEVycm9yOlxuICAgICAgICBwYXNzXG5cblxuZGVmIGhvc3Rfd29ya2VyX3J1bm5pbmcoKTpcbiAgICBpZiBzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgnbGludXgnKTpcbiAgICAgICAgcmVzdWx0ID0gc3VicHJvY2Vzcy5ydW4oWydzeXN0ZW1jdGwnLCAnaXMtYWN0aXZlJywgJy0tcXVpZXQnLCAnZGdlLXdvcmtlci5zZXJ2aWNlJ10sIGNoZWNrPUZhbHNlKVxuICAgICAgICByZXR1cm4gcmVzdWx0LnJldHVybmNvZGUgPT0gMFxuICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJzpcbiAgICAgICAgcmV0dXJuIG1hY19saW1hX3dvcmtlcl9ydW5uaW5nKClcbiAgICByZXR1cm4gRmFsc2VcblxuXG5kZWYgbWFjX2xpbWFfd29ya2VyX3J1bm5pbmcoKTpcbiAgICBpbXBvcnQgaW5zdGFsbF9tYWNvc1xuICAgIGluc3RhbGxfbWFjb3MuYWRkX21hY19wcmVmaXhlcygpXG4gICAgbGltYWN0bCA9IHNodXRpbC53aGljaCgnbGltYWN0bCcpXG4gICAgaWYgbm90IGxpbWFjdGw6XG4gICAgICAgIHJldHVybiBGYWxzZVxuICAgIHJlc3VsdCA9IHN1YnByb2Nlc3MucnVuKFtsaW1hY3RsLCAnbGlzdCddLCBjYXB0dXJlX291dHB1dD1UcnVlLCB0ZXh0PVRydWUsIGNoZWNrPUZhbHNlKVxuICAgIGlmIHJlc3VsdC5yZXR1cm5jb2RlICE9IDA6XG4gICAgICAgIHJldHVybiBGYWxzZVxuICAgIGZvciBsaW5lIGluIHJlc3VsdC5zdGRvdXQuc3BsaXRsaW5lcygpWzE6XTpcbiAgICAgICAgcGFydHMgPSBsaW5lLnNwbGl0KClcbiAgICAgICAgaWYgbGVuKHBhcnRzKSA+PSAyIGFuZCBwYXJ0c1swXSA9PSBpbnN0YWxsX21hY29zLklOU1RBTkNFOlxuICAgICAgICAgICAgcmV0dXJuIHBhcnRzWzFdID09ICdSdW5uaW5nJ1xuICAgIHJldHVybiBGYWxzZVxuXG5cbmRlZiBzdWJtaXRfZW5yb2xsbWVudChvcmlnaW4sIHN0YXRlLCBzbmFwc2hvdCwgZGlzcGxheV9uYW1lLCBlbWFpbCwgcGhvbmUsIG5vdGUpOlxuICAgIGJvZHkgPSB7XG4gICAgICAgICdjbGFpbV9pZCc6IHN0YXRlWydjbGFpbV9pZCddLFxuICAgICAgICAnZGlzcGxheV9uYW1lJzogZGlzcGxheV9uYW1lLFxuICAgICAgICAnZW1haWwnOiBlbWFpbCxcbiAgICAgICAgJ3Bob25lJzogcGhvbmUsXG4gICAgICAgICdub3RlJzogbm90ZSxcbiAgICAgICAgJ2hvc3Rfb3MnOiBzbmFwc2hvdFsnaG9zdF9vcyddLFxuICAgICAgICAnaG9zdF9pbnZlbnRvcnknOiBzbmFwc2hvdFsnaG9zdF9pbnZlbnRvcnknXSxcbiAgICAgICAgJ3BsYW5uZWRfd29ya2VyX2NhcGFjaXR5Jzogc25hcHNob3RbJ3BsYW5uZWRfd29ya2VyX2NhcGFjaXR5J10sXG4gICAgfVxuICAgIHJlc3BvbnNlID0gcG9zdF9qc29uKG9yaWdpbiwgJy9jb21wdXRlX2ZsZWV0L2Vucm9sbG1lbnRzJywgJycsIGJvZHkpXG4gICAgc3RhdGVbJ3BvbGxfdG9rZW4nXSA9IHJlc3BvbnNlWydwb2xsX3Rva2VuJ11cbiAgICBzYXZlX3N0YXRlKHN0YXRlKVxuICAgIHJlcG9ydF9ib290c3RyYXBfbG9nKG9yaWdpbiwgcmVzcG9uc2VbJ3BvbGxfdG9rZW4nXSlcbiAgICByZXR1cm4gcmVzcG9uc2VcblxuXG5kZWYgcmVwb3J0X2Jvb3RzdHJhcF9sb2cob3JpZ2luLCB0b2tlbik6XG4gICAgcGF0aCA9IG9zLmVudmlyb24uZ2V0KCdER0VfQk9PVFNUUkFQX0xPRycpXG4gICAgaWYgbm90IHBhdGg6XG4gICAgICAgIHJldHVyblxuICAgIHRyeTpcbiAgICAgICAgd2l0aCBvcGVuKHBhdGgsIGVuY29kaW5nPSd1dGYtOCcsIGVycm9ycz0ncmVwbGFjZScpIGFzIGhhbmRsZTpcbiAgICAgICAgICAgIGhhbmRsZS5zZWVrKDAsIG9zLlNFRUtfRU5EKVxuICAgICAgICAgICAgaGFuZGxlLnNlZWsobWF4KDAsIGhhbmRsZS50ZWxsKCkgLSA2NF8wMDApKVxuICAgICAgICAgICAgaWYgaGFuZGxlLnRlbGwoKTpcbiAgICAgICAgICAgICAgICBoYW5kbGUucmVhZGxpbmUoKVxuICAgICAgICAgICAgbGluZXMgPSBoYW5kbGUucmVhZGxpbmVzKClcbiAgICBleGNlcHQgT1NFcnJvcjpcbiAgICAgICAgcmV0dXJuXG4gICAgcmVwb3J0ZXIgPSBTZXR1cExvZ1JlcG9ydGVyKG9yaWdpbiwgdG9rZW4pXG4gICAgdHJ5OlxuICAgICAgICBmb3IgbGluZSBpbiBsaW5lczpcbiAgICAgICAgICAgIHJlcG9ydGVyLnJlY29yZChsaW5lKVxuICAgIGZpbmFsbHk6XG4gICAgICAgIHJlcG9ydGVyLmNsb3NlKClcblxuXG5kZWYgcG9sbF9lbnJvbGxtZW50KG9yaWdpbiwgc3RhdGUpOlxuICAgIHJldHVybiBnZXRfanNvbihvcmlnaW4sICcvY29tcHV0ZV9mbGVldC9lbnJvbGxtZW50cycsIHN0YXRlWydwb2xsX3Rva2VuJ10pXG5cblxuZGVmIHdhaXRfZm9yX2Vucm9sbG1lbnQob3JpZ2luLCBzdGF0ZSwgcmV0cnlfZGVsYXk9Myk6XG4gICAgd2hpbGUgVHJ1ZTpcbiAgICAgICAgdHJ5OlxuICAgICAgICAgICAgcmVzdWx0ID0gcG9sbF9lbnJvbGxtZW50KG9yaWdpbiwgc3RhdGUpXG4gICAgICAgIGV4Y2VwdCB1cmxsaWIuZXJyb3IuSFRUUEVycm9yOlxuICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgZXhjZXB0IChPU0Vycm9yLCBqc29uLkpTT05EZWNvZGVFcnJvcik6XG4gICAgICAgICAgICB0aW1lLnNsZWVwKHJldHJ5X2RlbGF5KVxuICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgc3RhdHVzID0gcmVzdWx0LmdldCgnc3RhdHVzJylcbiAgICAgICAgaWYgc3RhdHVzID09ICdhcHByb3ZlZCc6XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0XG4gICAgICAgIGlmIHN0YXR1cyAhPSAncGVuZGluZyc6XG4gICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IocmVzdWx0LmdldCgnbWVzc2FnZScpIG9yICdUaGlzIGVucm9sbG1lbnQgcmVxdWVzdCB3YXMgZGVuaWVkIG9yIGV4cGlyZWQuJylcbiAgICAgICAgdGltZS5zbGVlcChyZXRyeV9kZWxheSlcblxuXG5kZWYgd29ya2VyX3N0YXR1cyhvcmlnaW4sIHRva2VuKTpcbiAgICByZXR1cm4gcG9zdF9qc29uKG9yaWdpbiwgJy9jb21wdXRlX2ZsZWV0L3N0YXR1cycsIHRva2VuLCB7fSlcblxuXG5XT1JLRVJfU1RBVEVfQ09QWSA9IHtcbiAgICAncmVhZHknOiAnQXZhaWxhYmxlJyxcbiAgICAnYnVzeSc6ICdXb3JraW5nJyxcbiAgICAncGF1c2VkJzogJ1BhdXNlZCcsXG4gICAgJ29mZmxpbmUnOiAnT2ZmbGluZScsXG4gICAgJ2xvdyBiYXR0ZXJ5JzogJ1dhaXRpbmcgZm9yIHBvd2VyJyxcbiAgICAndXBkYXRpbmcnOiAnVXBkYXRpbmcnLFxuICAgICd1cGRhdGUgZmFpbGVkJzogJ05lZWRzIGF0dGVudGlvbicsXG4gICAgJ3Jldm9rZWQnOiAnRGlzY29ubmVjdGVkJyxcbn1cblxuXG5kZWYgaG9zdF9tZW1vcnlfc25hcHNob3QoKTpcbiAgICB0cnk6XG4gICAgICAgIGltcG9ydCBob3N0X2ludmVudG9yeVxuICAgICAgICByZXR1cm4gaG9zdF9pbnZlbnRvcnkuYXZhaWxhYmxlX21lbW9yeV9ieXRlcygpLCBob3N0X2ludmVudG9yeS5tZW1vcnlfYnl0ZXMoKVxuICAgIGV4Y2VwdCBFeGNlcHRpb246XG4gICAgICAgIHJldHVybiBOb25lLCBOb25lXG5cblxuZGVmIGZyaWVuZGx5X3dvcmtlcl9zdGF0ZShwYXlsb2FkKTpcbiAgICBzdGF0ZSA9IChwYXlsb2FkIG9yIHt9KS5nZXQoJ3N0YXRlJykgb3IgJ3Vua25vd24nXG4gICAgaWYgKHBheWxvYWQgb3Ige30pLmdldCgnZHJhaW5pbmcnKSBhbmQgc3RhdGUgbm90IGluICgncGF1c2VkJywgJ3Jldm9rZWQnKTpcbiAgICAgICAgcmV0dXJuICdwYXVzZWQnXG4gICAgcmV0dXJuIHN0YXRlXG5cblxuZGVmIGN1cnJlbnRfd29ya19jb3B5KHBheWxvYWQpOlxuICAgIHRhc2sgPSAocGF5bG9hZCBvciB7fSkuZ2V0KCdjdXJyZW50X3Rhc2snKSBvciB7fVxuICAgIG9wZXJhdGlvbiA9ICh0YXNrLmdldCgnb3BlcmF0aW9uJykgb3IgJycpLnJlcGxhY2UoJ18nLCAnICcpLnN0cmlwKClcbiAgICBpZiBvcGVyYXRpb246XG4gICAgICAgIHJldHVybiAnV29ya2luZyBvbiAnICsgb3BlcmF0aW9uXG4gICAgc3RhdGUgPSBmcmllbmRseV93b3JrZXJfc3RhdGUocGF5bG9hZClcbiAgICBpZiBzdGF0ZSA9PSAnYnVzeSc6XG4gICAgICAgIHJldHVybiAnV29ya2luZyBvbiBhIHRhc2snXG4gICAgaWYgc3RhdGUgPT0gJ3BhdXNlZCc6XG4gICAgICAgIHJldHVybiAnTm90IHRha2luZyBuZXcgd29yaydcbiAgICBpZiBzdGF0ZSA9PSAncmVhZHknOlxuICAgICAgICByZXR1cm4gJ1dhaXRpbmcgZm9yIHdvcmsnXG4gICAgaWYgc3RhdGUgPT0gJ29mZmxpbmUnOlxuICAgICAgICByZXR1cm4gJ05vdCBjb25uZWN0ZWQgeWV0J1xuICAgIHJldHVybiBXT1JLRVJfU1RBVEVfQ09QWS5nZXQoc3RhdGUsIHN0YXRlLnJlcGxhY2UoJ18nLCAnICcpKVxuXG5cbmRlZiBpbnN0YWxsX2xhdW5jaF9hZ2VudChzY3JpcHRfcGF0aCk6XG4gICAgaW1wb3J0IGhvc3RfYXBwXG4gICAgaG9zdF9hcHAuaW5zdGFsbF9ob3N0X2FwcChzY3JpcHRfcGF0aClcbiAgICBob3N0X2FwcC5kcm9wX2xvZ2luX2hlbHBlcigpXG5cblxuZGVmIGFza3Bhc3Nfc2NyaXB0KCk6XG4gICAgcGF0aCA9IFJPT1QgLyAnZGdlLWFza3Bhc3MucHknXG4gICAgcGF0aC53cml0ZV90ZXh0KCcnJyMhL3Vzci9iaW4vZW52IHB5dGhvbjNcbmltcG9ydCBzaHV0aWwsIHN1YnByb2Nlc3MsIHN5c1xudGl0bGUgPSBcIkRvcmlhbiBHcmF5IFdvcmtlciBTZXR1cFwiXG5wcm9tcHQgPSBcIkFkbWluaXN0cmF0b3IgcGFzc3dvcmQgZm9yIGluc3RhbGxpbmcgdGhlIHdvcmtlclwiXG5pZiBzeXMucGxhdGZvcm0gPT0gXCJkYXJ3aW5cIjpcbiAgICBzY3JpcHQgPSBcIlwiXCJcbnRlbGwgYXBwbGljYXRpb24gXCJTeXN0ZW0gRXZlbnRzXCJcbiAgYWN0aXZhdGVcbiAgdHJ5XG4gICAgc2V0IGFuc3dlciB0byBkaXNwbGF5IGRpYWxvZyBcIkRvcmlhbiBHcmF5IFdvcmtlciBTZXR1cCBuZWVkcyB5b3VyIE1hYyBwYXNzd29yZCB0byBjb250aW51ZS5cIiBkZWZhdWx0IGFuc3dlciBcIlwiIHdpdGggaGlkZGVuIGFuc3dlciB3aXRoIHRpdGxlIFwiRG9yaWFuIEdyYXkgV29ya2VyIFNldHVwXCIgYnV0dG9ucyB7XCJDYW5jZWxcIiwgXCJPS1wifSBkZWZhdWx0IGJ1dHRvbiBcIk9LXCJcbiAgICBpZiBidXR0b24gcmV0dXJuZWQgb2YgYW5zd2VyIGlzIFwiT0tcIiB0aGVuXG4gICAgICByZXR1cm4gdGV4dCByZXR1cm5lZCBvZiBhbnN3ZXJcbiAgICBlbmQgaWZcbiAgb24gZXJyb3IgbnVtYmVyIC0xMjhcbiAgICByZXR1cm4gXCJcIlxuICBlbmQgdHJ5XG5lbmQgdGVsbFxuXCJcIlwiXG4gICAgcmVzdWx0ID0gc3VicHJvY2Vzcy5ydW4oW1wib3Nhc2NyaXB0XCIsIFwiLWVcIiwgc2NyaXB0XSwgY2FwdHVyZV9vdXRwdXQ9VHJ1ZSwgdGV4dD1UcnVlKVxuICAgIHN5cy5zdGRvdXQud3JpdGUocmVzdWx0LnN0ZG91dClcbiAgICBzeXMuZXhpdCgwIGlmIHJlc3VsdC5yZXR1cm5jb2RlID09IDAgYW5kIHJlc3VsdC5zdGRvdXQuc3RyaXAoKSBlbHNlIDEpXG5pZiBzaHV0aWwud2hpY2goXCJ6ZW5pdHlcIik6XG4gICAgcmVzdWx0ID0gc3VicHJvY2Vzcy5ydW4oW1wiemVuaXR5XCIsIFwiLS1wYXNzd29yZFwiLCBcIi0tdGl0bGU9XCIgKyB0aXRsZSwgXCItLXRleHQ9XCIgKyBwcm9tcHRdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcHR1cmVfb3V0cHV0PVRydWUsIHRleHQ9VHJ1ZSlcbiAgICBzeXMuc3Rkb3V0LndyaXRlKHJlc3VsdC5zdGRvdXQpXG4gICAgc3lzLmV4aXQoMCBpZiByZXN1bHQucmV0dXJuY29kZSA9PSAwIGVsc2UgMSlcbmlmIHNodXRpbC53aGljaChcImtkaWFsb2dcIik6XG4gICAgcmVzdWx0ID0gc3VicHJvY2Vzcy5ydW4oW1wia2RpYWxvZ1wiLCBcIi0tcGFzc3dvcmRcIiwgcHJvbXB0XSwgY2FwdHVyZV9vdXRwdXQ9VHJ1ZSwgdGV4dD1UcnVlKVxuICAgIHN5cy5zdGRvdXQud3JpdGUocmVzdWx0LnN0ZG91dClcbiAgICBzeXMuZXhpdCgwIGlmIHJlc3VsdC5yZXR1cm5jb2RlID09IDAgZWxzZSAxKVxudHJ5OlxuICAgIGltcG9ydCB0a2ludGVyIGFzIHRrXG4gICAgZnJvbSB0a2ludGVyIGltcG9ydCBzaW1wbGVkaWFsb2dcbiAgICByb290ID0gdGsuVGsoKVxuICAgIHJvb3Qud2l0aGRyYXcoKVxuICAgIHZhbHVlID0gc2ltcGxlZGlhbG9nLmFza3N0cmluZyh0aXRsZSwgcHJvbXB0LCBzaG93PVwiKlwiKVxuICAgIHJvb3QuZGVzdHJveSgpXG4gICAgc3lzLnN0ZG91dC53cml0ZSh2YWx1ZSBvciBcIlwiKVxuICAgIHN5cy5leGl0KDAgaWYgdmFsdWUgZWxzZSAxKVxuZXhjZXB0IEV4Y2VwdGlvbjpcbiAgICBzeXMuZXhpdCgxKVxuJycnKVxuICAgIHBhdGguY2htb2QoMG83MDApXG4gICAgcmV0dXJuIHBhdGhcblxuXG5kZWYgbGludXhfaW5zdGFsbF9jb21tYW5kKCk6XG4gICAgcHl0aG9uID0gc3RyKFBhdGgoc3lzLmV4ZWN1dGFibGUpLnJlc29sdmUoKSlcbiAgICBzY3JpcHQgPSBzdHIoKFJPT1QgLyAnaW5zdGFsbC5weScpLnJlc29sdmUoKSlcbiAgICBpZiBvcy5nZXRldWlkKCkgPT0gMDpcbiAgICAgICAgcmV0dXJuIFtweXRob24sICctdScsIHNjcmlwdF1cbiAgICBpZiB3YW50X2hlYWRsZXNzKCkgYW5kIHNodXRpbC53aGljaCgnc3VkbycpOlxuICAgICAgICByZXR1cm4gWydzdWRvJywgJy1FJywgcHl0aG9uLCAnLXUnLCBzY3JpcHRdXG4gICAgaWYgc2h1dGlsLndoaWNoKCdwa2V4ZWMnKTpcbiAgICAgICAgZW52ID0gWydlbnYnLCAnUFlUSE9OVU5CVUZGRVJFRD0xJ11cbiAgICAgICAgZGlzcGxheSA9IG9zLmVudmlyb24uZ2V0KCdESVNQTEFZJylcbiAgICAgICAgYXV0aG9yaXR5ID0gb3MuZW52aXJvbi5nZXQoJ1hBVVRIT1JJVFknKVxuICAgICAgICBpZiBkaXNwbGF5OlxuICAgICAgICAgICAgZW52LmFwcGVuZCgnRElTUExBWT0nICsgZGlzcGxheSlcbiAgICAgICAgaWYgYXV0aG9yaXR5OlxuICAgICAgICAgICAgZW52LmFwcGVuZCgnWEFVVEhPUklUWT0nICsgYXV0aG9yaXR5KVxuICAgICAgICByZXR1cm4gWydwa2V4ZWMnLCAqZW52LCBweXRob24sICctdScsIHNjcmlwdF1cbiAgICBpZiBzaHV0aWwud2hpY2goJ3N1ZG8nKTpcbiAgICAgICAgb3MuZW52aXJvblsnU1VET19BU0tQQVNTJ10gPSBzdHIoYXNrcGFzc19zY3JpcHQoKSlcbiAgICAgICAgb3MuZW52aXJvblsnU1VET19QUk9NUFQnXSA9ICcnXG4gICAgICAgIHJldHVybiBbJ3N1ZG8nLCAnLUEnLCAnLUUnLCBweXRob24sICctdScsIHNjcmlwdF1cbiAgICByZXR1cm4gW3B5dGhvbiwgJy11Jywgc2NyaXB0XVxuXG5cbmRlZiBtYWNfbmVlZHNfaW5zdGFsbCgpOlxuICAgIGlmIHN5cy5wbGF0Zm9ybSAhPSAnZGFyd2luJzpcbiAgICAgICAgcmV0dXJuIEZhbHNlXG4gICAgaW1wb3J0IGluc3RhbGxfbWFjb3NcbiAgICBpbnN0YWxsX21hY29zLmFkZF9tYWNfcHJlZml4ZXMoKVxuICAgIGxpbWFjdGwgPSBzaHV0aWwud2hpY2goJ2xpbWFjdGwnKVxuICAgIGlmIG5vdCBsaW1hY3RsOlxuICAgICAgICByZXR1cm4gVHJ1ZVxuICAgIHJlc3VsdCA9IHN1YnByb2Nlc3MucnVuKFtsaW1hY3RsLCAnbGlzdCcsICctcSddLCBjYXB0dXJlX291dHB1dD1UcnVlLCB0ZXh0PVRydWUsIGNoZWNrPUZhbHNlKVxuICAgIG5hbWVzID0ge2xpbmUuc3RyaXAoKSBmb3IgbGluZSBpbiByZXN1bHQuc3Rkb3V0LnNwbGl0bGluZXMoKSBpZiBsaW5lLnN0cmlwKCl9XG4gICAgcmV0dXJuIGluc3RhbGxfbWFjb3MuSU5TVEFOQ0Ugbm90IGluIG5hbWVzXG5cblxuZGVmIHNldHVwX2xvZ19yZXBvcnRlcigpOlxuICAgIHRyeTpcbiAgICAgICAgc2V0dGluZ3MgPSBjb25maWcoKSBpZiAoUk9PVCAvICdjb25maWcuanNvbicpLmV4aXN0cygpIGVsc2Uge31cbiAgICAgICAgaWYgc2V0dGluZ3MuZ2V0KCdlbnJvbGxtZW50Jyk6XG4gICAgICAgICAgICB0b2tlbiA9IGxvYWRfc3RhdGUoKS5nZXQoJ3BvbGxfdG9rZW4nKVxuICAgICAgICAgICAgb3JpZ2luID0gc2V0dGluZ3MuZ2V0KCdvcmlnaW4nKVxuICAgICAgICBlbHNlOlxuICAgICAgICAgICAgaW52aXRhdGlvbiA9IGludml0YXRpb25fcGF5bG9hZCgpXG4gICAgICAgICAgICB0b2tlbiA9IGludml0YXRpb24uZ2V0KCd0b2tlbicpIGlmIGludml0YXRpb24gZWxzZSBOb25lXG4gICAgICAgICAgICBvcmlnaW4gPSBpbnZpdGF0aW9uLmdldCgnb3JpZ2luJykgaWYgaW52aXRhdGlvbiBlbHNlIE5vbmVcbiAgICAgICAgcmV0dXJuIFNldHVwTG9nUmVwb3J0ZXIob3JpZ2luLCB0b2tlbikgaWYgb3JpZ2luIGFuZCB0b2tlbiBlbHNlIE5vbmVcbiAgICBleGNlcHQgKE9TRXJyb3IsIFZhbHVlRXJyb3IsIEtleUVycm9yLCBSdW50aW1lRXJyb3IpOlxuICAgICAgICByZXR1cm4gTm9uZVxuXG5cbmRlZiBydW5faW5zdGFsbGVyKHNjcmlwdF9wYXRoLCBvbl9saW5lPU5vbmUpOlxuICAgIHJlcG9ydGVyID0gc2V0dXBfbG9nX3JlcG9ydGVyKClcblxuICAgIGRlZiBlbWl0KGxpbmUpOlxuICAgICAgICBpZiByZXBvcnRlcjpcbiAgICAgICAgICAgIHJlcG9ydGVyLnJlY29yZChsaW5lKVxuICAgICAgICBpZiBvbl9saW5lIGFuZCBsaW5lLnN0cmlwKCk6XG4gICAgICAgICAgICBvbl9saW5lKGxpbmUucnN0cmlwKCkpXG5cbiAgICBlbnYgPSBvcy5lbnZpcm9uLmNvcHkoKVxuICAgIGVudlsnUFlUSE9OVU5CVUZGRVJFRCddID0gJzEnXG4gICAgaWYgc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nOlxuICAgICAgICBpbXBvcnQgaW5zdGFsbF9tYWNvc1xuICAgICAgICBpbnN0YWxsX21hY29zLmFkZF9tYWNfcHJlZml4ZXMoKVxuICAgICAgICBlbnZbJ1BBVEgnXSA9IG9zLmVudmlyb24uZ2V0KCdQQVRIJywgZW52LmdldCgnUEFUSCcsICcnKSlcbiAgICAgICAgcHJveHkgPSBST09UIC8gJ21hY29zX3IyX3Byb3h5LnB5J1xuICAgICAgICBpZiBwcm94eS5leGlzdHMoKTpcbiAgICAgICAgICAgIHRocmVhZGluZy5UaHJlYWQodGFyZ2V0PWxhbWJkYTogc3VicHJvY2Vzcy5ydW4oW3N5cy5leGVjdXRhYmxlLCBzdHIocHJveHkpXSwgY2hlY2s9RmFsc2UpLCBkYWVtb249VHJ1ZSkuc3RhcnQoKVxuICAgICAgICBlbnZbJ1NVRE9fQVNLUEFTUyddID0gc3RyKGFza3Bhc3Nfc2NyaXB0KCkpXG4gICAgICAgIGVudlsnREdFX1NFVFVQX0xPR19TVVBFUlZJU0VEJ10gPSAnMSdcbiAgICAgICAgY29tbWFuZCA9IFtzeXMuZXhlY3V0YWJsZSwgJy11Jywgc3RyKFJPT1QgLyAnaW5zdGFsbF9tYWNvcy5weScpLCBzY3JpcHRfcGF0aF1cbiAgICAgICAgZW1pdCgnSWYgbWFjT1Mgb3IgSG9tZWJyZXcgbmVlZHMgYSBwYXNzd29yZCwgYSBNYWMgZGlhbG9nIHdpbGwgYXBwZWFyLiBJbnNpZGUgdGhlIExpbnV4IFZNLCBzZXR1cCB1c2VzIHRoZSBWTeKAmXMgc3Vkby4nKVxuICAgIGVsaWYgc3lzLnBsYXRmb3JtID09ICd3aW4zMic6XG4gICAgICAgIGNvbW1hbmQgPSBsaW51eF9pbnN0YWxsX2NvbW1hbmQoKVxuICAgICAgICBlbWl0KCdXaW5kb3dzIHVzZXMgYSBVQUMgcHJvbXB0IHRvIGluc3RhbGwgVWJ1bnR1IChXU0wpLiBJbnNpZGUgVWJ1bnR1IHRoZSBpbnN0YWxsZXIgcnVucyBhcyByb290LCBzbyB0aGVyZSBpcyBubyBzZWNvbmQgcGFzc3dvcmQuJylcbiAgICBlbHNlOlxuICAgICAgICBjb21tYW5kID0gbGludXhfaW5zdGFsbF9jb21tYW5kKClcbiAgICAgICAgaWYgY29tbWFuZFswXSA9PSAncGtleGVjJzpcbiAgICAgICAgICAgIGVtaXQoJ1VidW50dSB3aWxsIGFzayBmb3IgeW91ciBhZG1pbmlzdHJhdG9yIHBhc3N3b3JkLiBUaGF0IHBlcm1pc3Npb24gaXMgbmVlZGVkIHRvIGluc3RhbGwgRG9ja2VyIGFuZCB0aGUgd29ya2VyIHNlcnZpY2UuJylcbiAgICAgICAgZWxpZiBjb21tYW5kWzBdID09ICdzdWRvJzpcbiAgICAgICAgICAgIGVtaXQoJ0VudGVyIHlvdXIgYWRtaW5pc3RyYXRvciBwYXNzd29yZCB3aGVuIGFza2VkLiBUaGF0IHBlcm1pc3Npb24gaXMgbmVlZGVkIHRvIGluc3RhbGwgRG9ja2VyIGFuZCB0aGUgd29ya2VyIHNlcnZpY2UuJylcbiAgICBlbWl0KCckICcgKyBzaGxleC5qb2luKGNvbW1hbmQpKVxuICAgIGVtaXQoJ0FwcHJvdmVkLiBTdGFydGluZyBzZXR1cCBvbiB0aGlzIGNvbXB1dGVyLi4uJylcbiAgICB0cnk6XG4gICAgICAgIHByb2Nlc3MgPSBzdWJwcm9jZXNzLlBvcGVuKFxuICAgICAgICAgICAgY29tbWFuZCxcbiAgICAgICAgICAgIGN3ZD1zdHIoUk9PVCksXG4gICAgICAgICAgICBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLFxuICAgICAgICAgICAgc3RkZXJyPXN1YnByb2Nlc3MuU1RET1VULFxuICAgICAgICAgICAgdGV4dD1UcnVlLFxuICAgICAgICAgICAgYnVmc2l6ZT0xLFxuICAgICAgICAgICAgZW52PWVudixcbiAgICAgICAgKVxuICAgICAgICBvdXRwdXQgPSBbXVxuICAgICAgICBmb3IgbGluZSBpbiBwcm9jZXNzLnN0ZG91dDpcbiAgICAgICAgICAgIG91dHB1dC5hcHBlbmQobGluZS5yc3RyaXAoKSlcbiAgICAgICAgICAgIGVtaXQobGluZSlcbiAgICAgICAgcHJvY2Vzcy53YWl0KClcbiAgICAgICAgaWYgc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nIGFuZCBwcm9jZXNzLnJldHVybmNvZGUgPT0gMDpcbiAgICAgICAgICAgIGVtaXQoJ0tlZXBpbmcgdGhpcyB3aW5kb3cgYXZhaWxhYmxlIGFmdGVyIHJlc3RhcnQuLi4nKVxuICAgICAgICAgICAgaW5zdGFsbF9sYXVuY2hfYWdlbnQoc2NyaXB0X3BhdGgpXG4gICAgICAgIGlmIHByb2Nlc3MucmV0dXJuY29kZTpcbiAgICAgICAgICAgIGlmIHByb2Nlc3MucmV0dXJuY29kZSBpbiAoMTI2LCAxMjcpIG9yIGFueSgnZGlzbWlzc2VkJyBpbiBpdGVtLmxvd2VyKCkgb3IgJ2NhbmNlbGxlZCcgaW4gaXRlbS5sb3dlcigpIGZvciBpdGVtIGluIG91dHB1dCk6XG4gICAgICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCdBZG1pbmlzdHJhdG9yIHBlcm1pc3Npb24gaXMgcmVxdWlyZWQgdG8gaW5zdGFsbCB0aGUgd29ya2VyLiBBcHByb3ZlIHRoZSBwYXNzd29yZCBwcm9tcHQgYW5kIHRyeSBhZ2Fpbi4nKVxuICAgICAgICAgICAgbWVzc2FnZSA9IG5leHQoKGl0ZW0uc3BsaXQoJ1NldHVwIG5lZWRzIGF0dGVudGlvbjonLCAxKVstMV0uc3RyaXAoKSBmb3IgaXRlbSBpbiByZXZlcnNlZChvdXRwdXQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgJ1NldHVwIG5lZWRzIGF0dGVudGlvbjonIGluIGl0ZW0pLCBOb25lKVxuICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKG1lc3NhZ2Ugb3IgKG91dHB1dFstMV0gaWYgb3V0cHV0IGVsc2UgJ1NldHVwIGNvdWxkIG5vdCBmaW5pc2guJykpXG4gICAgZmluYWxseTpcbiAgICAgICAgaWYgcmVwb3J0ZXI6XG4gICAgICAgICAgICByZXBvcnRlci5jbG9zZSgpXG5cblxuZGVmIGhlYWRsZXNzX3VzYWdlKG9yaWdpbik6XG4gICAgb3JpZ2luID0gb3JpZ2luLnJzdHJpcCgnLycpXG4gICAgcHJpbnQoXG4gICAgICAgICdUaGlzIGNvbXB1dGVyIGhhcyBubyBkZXNrdG9wIHNlc3Npb24uIEVucm9sbCBmcm9tIHRoZSBzaGVsbCB3aXRoIG5hbWUsIGVtYWlsLCBhbmQgcGhvbmU6XFxuJ1xuICAgICAgICBmJyAgY3VybCAtZnNTTCB7b3JpZ2lufS9jb21wdXRlX2ZsZWV0L2Rvd25sb2FkL3NjcmlwdCB8IFxcXFxcXG4nXG4gICAgICAgIFwiICAgIHN1ZG8gREdFX0VOUk9MTF9OQU1FPSdNYWNoaW5lIG5hbWUnIERHRV9FTlJPTExfRU1BSUw9J3lvdUBleGFtcGxlLmNvbScgXCJcbiAgICAgICAgXCJER0VfRU5ST0xMX1BIT05FPScrMVhYWFhYWFhYWFgnIGJhc2hcXG5cIlxuICAgICAgICAnT3B0aW9uYWw6IERHRV9FTlJPTExfTk9URS4gREdFX0VOUk9MTF9IRUFETEVTUz0xIHNraXBzIGEgbGVmdG92ZXIgZ3JhcGhpY2FsIHNlc3Npb24uJyxcbiAgICAgICAgZmx1c2g9VHJ1ZSxcbiAgICApXG5cblxuZGVmIGFkb3B0X2V4aXN0aW5nX2lkZW50aXR5KCk6XG4gICAgaWYgaW52aXRhdGlvbl9wYXRoKCkuZXhpc3RzKCk6XG4gICAgICAgIHJldHVybiBUcnVlXG4gICAgaWRlbnRpdHkgPSBzdXBwb3J0X2RpcigpIC8gJ2lkZW50aXR5Lmpzb24nXG4gICAgaWYgbm90IGlkZW50aXR5LmV4aXN0cygpOlxuICAgICAgICByZXR1cm4gRmFsc2VcbiAgICB0cnk6XG4gICAgICAgIGRhdGEgPSBqc29uLmxvYWRzKGlkZW50aXR5LnJlYWRfdGV4dCgpKVxuICAgIGV4Y2VwdCAoT1NFcnJvciwganNvbi5KU09ORGVjb2RlRXJyb3IsIFVuaWNvZGVEZWNvZGVFcnJvcik6XG4gICAgICAgIHJldHVybiBGYWxzZVxuICAgIGlmIG5vdCBkYXRhLmdldCgndG9rZW4nKTpcbiAgICAgICAgcmV0dXJuIEZhbHNlXG4gICAgaW52aXRhdGlvbl9wYXRoKCkud3JpdGVfdGV4dChqc29uLmR1bXBzKHtcbiAgICAgICAgJ29yaWdpbic6IGRhdGEuZ2V0KCdvcmlnaW4nKSBvciBjb25maWcoKS5nZXQoJ29yaWdpbicpLFxuICAgICAgICAndG9rZW4nOiBkYXRhWyd0b2tlbiddLFxuICAgICAgICAnd29ya2VyX2lkJzogZGF0YS5nZXQoJ3dvcmtlcl9pZCcpLFxuICAgIH0pKVxuICAgIHJldHVybiBUcnVlXG5cblxuZGVmIHByb21wdF9jb250YWN0KCk6XG4gICAgY29udGFjdCA9IGNsaV9jb250YWN0KClcbiAgICBpZiBjb250YWN0OlxuICAgICAgICByZXR1cm4gY29udGFjdFxuICAgIGlmIG5vdCBzeXMuc3RkaW4uaXNhdHR5KCk6XG4gICAgICAgIHJldHVybiBOb25lXG4gICAgZGlzcGxheV9uYW1lID0gaW5wdXQoJ1lvdXIgbmFtZTogJykuc3RyaXAoKVxuICAgIGVtYWlsID0gaW5wdXQoJ0VtYWlsOiAnKS5zdHJpcCgpXG4gICAgcGhvbmUgPSBpbnB1dCgnUGhvbmU6ICcpLnN0cmlwKClcbiAgICBub3RlID0gaW5wdXQoJ09wdGlvbmFsIG5vdGU6ICcpLnN0cmlwKClcbiAgICBjb25zZW50ID0gaW5wdXQoJ1NlbmQgdGhpcyByZXF1ZXN0PyBbeS9OXSAnKS5zdHJpcCgpLmxvd2VyKClcbiAgICBpZiBjb25zZW50IG5vdCBpbiAoJ3knLCAneWVzJyk6XG4gICAgICAgIHJhaXNlIFN5c3RlbUV4aXQoJ1NldHVwIGNhbmNlbGxlZC4nKVxuICAgIGlmIG5vdCBkaXNwbGF5X25hbWUgb3Igbm90IGVtYWlsIG9yIG5vdCBwaG9uZTpcbiAgICAgICAgcmFpc2UgU3lzdGVtRXhpdCgnTmFtZSwgZW1haWwsIGFuZCBwaG9uZSBhcmUgcmVxdWlyZWQuJylcbiAgICByZXR1cm4geydkaXNwbGF5X25hbWUnOiBkaXNwbGF5X25hbWUsICdlbWFpbCc6IGVtYWlsLCAncGhvbmUnOiBwaG9uZSwgJ25vdGUnOiBub3RlfVxuXG5cbmRlZiB0ZXJtaW5hbF9mbG93KG9yaWdpbiwgc2NyaXB0X3BhdGgpOlxuICAgIGRlZiBlbWl0KGxpbmUpOlxuICAgICAgICBpZiBsaW5lOlxuICAgICAgICAgICAgcHJpbnQobGluZSwgZmx1c2g9VHJ1ZSlcblxuICAgIGlmIGFkb3B0X2V4aXN0aW5nX2lkZW50aXR5KCk6XG4gICAgICAgIGVtaXQoJ1RoaXMgY29tcHV0ZXIgYWxyZWFkeSBoYXMgYSB3b3JrZXIgaWRlbnRpdHkuIEluc3RhbGxpbmcgb3IgdXBkYXRpbmcgdGhlIHdvcmtlciBzZXJ2aWNlLicpXG4gICAgICAgIHJ1bl9pbnN0YWxsZXIoc2NyaXB0X3BhdGgsIG9uX2xpbmU9ZW1pdClcbiAgICAgICAgZW1pdCgnV29ya2VyIHNldHVwIGZpbmlzaGVkLicpXG4gICAgICAgIHJldHVyblxuICAgIGNvbnRhY3QgPSBwcm9tcHRfY29udGFjdCgpXG4gICAgaWYgbm90IGNvbnRhY3Q6XG4gICAgICAgIGhlYWRsZXNzX3VzYWdlKG9yaWdpbilcbiAgICAgICAgcmFpc2UgU3lzdGVtRXhpdCgxKVxuICAgIGVtaXQoJ0NvbGxlY3RpbmcgbWFjaGluZSBkZXRhaWxz4oCmJylcbiAgICBzbmFwc2hvdCA9IGNvbGxlY3Rfc25hcHNob3Qob3JpZ2luKVxuICAgIGlmIHN5cy5zdGRpbi5pc2F0dHkoKSBhbmQgbm90IGNsaV9jb250YWN0KCk6XG4gICAgICAgIGVtaXQoJ1xcbicuam9pbihwcmV2aWV3X2xpbmVzKHNuYXBzaG90KSkpXG4gICAgc3RhdGUgPSBsb2FkX3N0YXRlKClcbiAgICBzdWJtaXRfZW5yb2xsbWVudChcbiAgICAgICAgb3JpZ2luLFxuICAgICAgICBzdGF0ZSxcbiAgICAgICAgc25hcHNob3QsXG4gICAgICAgIGNvbnRhY3RbJ2Rpc3BsYXlfbmFtZSddLFxuICAgICAgICBjb250YWN0WydlbWFpbCddLFxuICAgICAgICBjb250YWN0WydwaG9uZSddLFxuICAgICAgICBjb250YWN0Wydub3RlJ10sXG4gICAgKVxuICAgIGVtaXQoJ1JlcXVlc3Qgc2VudCBhcyAlcy4gV2FpdGluZyBmb3IgYXBwcm92YWwgaW4gV29ya2VyIGVucm9sbG1lbnRz4oCmJyAlIGNvbnRhY3RbJ2Rpc3BsYXlfbmFtZSddKVxuICAgIHJlc3VsdCA9IHdhaXRfZm9yX2Vucm9sbG1lbnQob3JpZ2luLCBzdGF0ZSwgcmV0cnlfZGVsYXk9NSlcbiAgICBzYXZlX2ludml0YXRpb24ocmVzdWx0LCBvcmlnaW4pXG4gICAgZW1pdCgnQXBwcm92ZWQuIEluc3RhbGxpbmcgdGhlIHdvcmtlci4nKVxuICAgIHJ1bl9pbnN0YWxsZXIoc2NyaXB0X3BhdGgsIG9uX2xpbmU9ZW1pdClcbiAgICBlbWl0KCdXb3JrZXIgc2V0dXAgZmluaXNoZWQuJylcblxuXG5kZWYgcGlja19mb250X2ZhbWlseShyb290KTpcbiAgICBmYW1pbGllcyA9IHtzdHIobmFtZSkgZm9yIG5hbWUgaW4gcm9vdC50ay5jYWxsKCdmb250JywgJ2ZhbWlsaWVzJyl9XG4gICAgZm9yIG5hbWUgaW4gKCdVYnVudHUnLCAnQ2FudGFyZWxsJywgJ05vdG8gU2FucycsICdEZWphVnUgU2FucycsICdTZWdvZSBVSScsICdIZWx2ZXRpY2EnKTpcbiAgICAgICAgaWYgbmFtZSBpbiBmYW1pbGllczpcbiAgICAgICAgICAgIHJldHVybiBuYW1lXG4gICAgcmV0dXJuICdUa0RlZmF1bHRGb250J1xuXG5cbmRlZiB0a2ludGVyX2Zsb3cob3JpZ2luLCBzY3JpcHRfcGF0aCk6XG4gICAgaW1wb3J0IHRraW50ZXIgYXMgdGtcbiAgICBmcm9tIHRraW50ZXIgaW1wb3J0IGZvbnQgYXMgdGtmb250XG4gICAgZnJvbSB0a2ludGVyIGltcG9ydCBzY3JvbGxlZHRleHRcblxuICAgIENPTE9SUyA9IHtcbiAgICAgICAgJ2luayc6ICcjMWMxOTE3JyxcbiAgICAgICAgJ211dGVkJzogJyM3ODcxNmMnLFxuICAgICAgICAncGFwZXInOiAnI2Y1ZjBlYScsXG4gICAgICAgICdjYXJkJzogJyNmZmZjZjgnLFxuICAgICAgICAnbGluZSc6ICcjZTdlMGQ2JyxcbiAgICAgICAgJ2hlYWRlcic6ICcjMWMxOTE3JyxcbiAgICAgICAgJ2hlYWRlcl90ZXh0JzogJyNmYWY3ZjInLFxuICAgICAgICAnaGVhZGVyX211dGVkJzogJyNjNGI4YWEnLFxuICAgICAgICAnYWNjZW50JzogJyM4YjFlMWUnLFxuICAgICAgICAnYWNjZW50X2hvdmVyJzogJyM2ZjE2MTYnLFxuICAgICAgICAnYWNjZW50X3NvZnQnOiAnI2Y0ZTdlNCcsXG4gICAgICAgICdvayc6ICcjM2Y2MjEyJyxcbiAgICAgICAgJ29rX3NvZnQnOiAnI2VlZjRlNCcsXG4gICAgICAgICd3YXJuJzogJyM5YTM0MTInLFxuICAgICAgICAnd2Fybl9zb2Z0JzogJyNmYWVjZTQnLFxuICAgICAgICAnd2hpdGUnOiAnI2ZmZmZmZicsXG4gICAgICAgICdiYWRnZSc6ICcjMWMxOTE3JyxcbiAgICB9XG5cbiAgICBzbmFwc2hvdCA9IHsndmFsdWUnOiBOb25lLCAnZXJyb3InOiBOb25lfVxuXG4gICAgZGVmIGxvYWRfc25hcHNob3QoKTpcbiAgICAgICAgdHJ5OlxuICAgICAgICAgICAgc25hcHNob3RbJ3ZhbHVlJ10gPSBjb2xsZWN0X3NuYXBzaG90KG9yaWdpbilcbiAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlcnJvcjpcbiAgICAgICAgICAgIHNuYXBzaG90WydlcnJvciddID0gc3RyKGVycm9yKVxuXG4gICAgdGhyZWFkaW5nLlRocmVhZCh0YXJnZXQ9bG9hZF9zbmFwc2hvdCwgZGFlbW9uPVRydWUpLnN0YXJ0KClcblxuICAgIGlmIHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCdsaW51eCcpOlxuICAgICAgICByb290ID0gdGsuVGsoY2xhc3NOYW1lPUxJTlVYX1dNX0NMQVNTLCBiYXNlTmFtZT1MSU5VWF9XTV9DTEFTUylcbiAgICBlbHNlOlxuICAgICAgICByb290ID0gdGsuVGsoKVxuICAgIGlmIHN5cy5wbGF0Zm9ybSAhPSAnZGFyd2luJzpcbiAgICAgICAgcm9vdC53aXRoZHJhdygpXG4gICAgcm9vdC50aXRsZSgnRG9yaWFuIEdyYXkgV29ya2VyJylcbiAgICBpZiBzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgnbGludXgnKTpcbiAgICAgICAgdHJ5OlxuICAgICAgICAgICAgcm9vdC50ay5jYWxsKCd3bScsICdjbGFzcycsIHJvb3QuX3csIExJTlVYX1dNX0NMQVNTICsgJyAnICsgTElOVVhfV01fQ0xBU1MpXG4gICAgICAgIGV4Y2VwdCB0ay5UY2xFcnJvcjpcbiAgICAgICAgICAgIHBhc3NcbiAgICByb290LmNvbmZpZ3VyZShiZz1DT0xPUlNbJ3BhcGVyJ10pXG4gICAgc2NyZWVuX3cgPSByb290LndpbmZvX3NjcmVlbndpZHRoKClcbiAgICBzY3JlZW5faCA9IHJvb3Qud2luZm9fc2NyZWVuaGVpZ2h0KClcbiAgICByb290Lm1pbnNpemUobWluKDcyMCwgc2NyZWVuX3cpLCBtaW4oNTIwLCBzY3JlZW5faCkpXG4gICAgYXBwbHlfd2luZG93X2ljb24ocm9vdClcbiAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ2Rhcndpbic6XG4gICAgICAgIHByZXNlbnRfd2luZG93KHJvb3QpXG4gICAgICAgIHJvb3QudXBkYXRlKClcbiAgICBmYW1pbHkgPSBwaWNrX2ZvbnRfZmFtaWx5KHJvb3QpXG4gICAgZm9udHMgPSB7XG4gICAgICAgICdkaXNwbGF5JzogdGtmb250LkZvbnQoZmFtaWx5PWZhbWlseSwgc2l6ZT0yNiwgd2VpZ2h0PSdib2xkJyksXG4gICAgICAgICd0aXRsZSc6IHRrZm9udC5Gb250KGZhbWlseT1mYW1pbHksIHNpemU9MTgsIHdlaWdodD0nYm9sZCcpLFxuICAgICAgICAnc3VidGl0bGUnOiB0a2ZvbnQuRm9udChmYW1pbHk9ZmFtaWx5LCBzaXplPTEyKSxcbiAgICAgICAgJ2hlYWRpbmcnOiB0a2ZvbnQuRm9udChmYW1pbHk9ZmFtaWx5LCBzaXplPTEzLCB3ZWlnaHQ9J2JvbGQnKSxcbiAgICAgICAgJ2JvZHknOiB0a2ZvbnQuRm9udChmYW1pbHk9ZmFtaWx5LCBzaXplPTEyKSxcbiAgICAgICAgJ3NtYWxsJzogdGtmb250LkZvbnQoZmFtaWx5PWZhbWlseSwgc2l6ZT0xMSksXG4gICAgICAgICdidXR0b24nOiB0a2ZvbnQuRm9udChmYW1pbHk9ZmFtaWx5LCBzaXplPTEyLCB3ZWlnaHQ9J2JvbGQnKSxcbiAgICAgICAgJ2JhZGdlJzogdGtmb250LkZvbnQoZmFtaWx5PWZhbWlseSwgc2l6ZT0xNCwgd2VpZ2h0PSdib2xkJyksXG4gICAgICAgICdsYWJlbCc6IHRrZm9udC5Gb250KGZhbWlseT1mYW1pbHksIHNpemU9MTEsIHdlaWdodD0nYm9sZCcpLFxuICAgICAgICAnbWV0cmljJzogdGtmb250LkZvbnQoZmFtaWx5PWZhbWlseSwgc2l6ZT0yMiwgd2VpZ2h0PSdib2xkJyksXG4gICAgICAgICdtb25vJzogdGtmb250LkZvbnQoZmFtaWx5PSdEZWphVnUgU2FucyBNb25vJywgc2l6ZT0xMCksXG4gICAgfVxuICAgIGJyYW5kX2ljb24gPSBsb2FkX2JyYW5kX2ljb24odGssIHNpemU9NTYpXG5cbiAgICBoZWFkZXIgPSB0ay5GcmFtZShyb290LCBiZz1DT0xPUlNbJ2hlYWRlciddLCBwYWR4PTM2LCBwYWR5PTIyKVxuICAgIGhlYWRlci5wYWNrKGZpbGw9J3gnKVxuICAgIGlmIGJyYW5kX2ljb246XG4gICAgICAgIHRrLkxhYmVsKGhlYWRlciwgaW1hZ2U9YnJhbmRfaWNvbiwgYmc9Q09MT1JTWydoZWFkZXInXSkucGFjayhzaWRlPSdsZWZ0JywgcGFkeD0oMCwgMTgpKVxuICAgIHRpdGxlX2Jsb2NrID0gdGsuRnJhbWUoaGVhZGVyLCBiZz1DT0xPUlNbJ2hlYWRlciddKVxuICAgIHRpdGxlX2Jsb2NrLnBhY2soc2lkZT0nbGVmdCcsIGFuY2hvcj0ndycpXG4gICAgdGsuTGFiZWwodGl0bGVfYmxvY2ssIHRleHQ9J0RvcmlhbiBHcmF5JywgZm9udD1mb250c1sndGl0bGUnXSwgYmc9Q09MT1JTWydoZWFkZXInXSxcbiAgICAgICAgICAgICBmZz1DT0xPUlNbJ2hlYWRlcl90ZXh0J10pLnBhY2soYW5jaG9yPSd3JylcbiAgICBoZWFkZXJfc3VidGl0bGUgPSB0ay5MYWJlbCh0aXRsZV9ibG9jaywgdGV4dD0nV29ya2VyIHNldHVwJywgZm9udD1mb250c1snc3VidGl0bGUnXSwgYmc9Q09MT1JTWydoZWFkZXInXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZz1DT0xPUlNbJ2hlYWRlcl9tdXRlZCddKVxuICAgIGhlYWRlcl9zdWJ0aXRsZS5wYWNrKGFuY2hvcj0ndycsIHBhZHk9KDIsIDApKVxuXG4gICAgc2hlbGwgPSB0ay5GcmFtZShyb290LCBiZz1DT0xPUlNbJ3BhcGVyJ10pXG4gICAgc2hlbGwucGFjayhmaWxsPSdib3RoJywgZXhwYW5kPVRydWUpXG4gICAgYm9keSA9IHRrLkZyYW1lKHNoZWxsLCBiZz1DT0xPUlNbJ3BhcGVyJ10pXG4gICAgYm9keS5wYWNrKGZpbGw9J2JvdGgnLCBleHBhbmQ9VHJ1ZSwgcGFkeD00OCwgcGFkeT0zMilcblxuICAgIHN0YXR1c190b25lID0geyd2YWx1ZSc6ICdyZWFkeSd9XG4gICAgc3RhdHVzID0gdGsuU3RyaW5nVmFyKHZhbHVlPSdHZXR0aW5nIHRoaXMgY29tcHV0ZXIgcmVhZHnigKYnKVxuICAgIGJhbm5lciA9IHRrLkZyYW1lKGJvZHksIGJnPUNPTE9SU1snYWNjZW50X3NvZnQnXSwgcGFkeD0xOCwgcGFkeT0xMilcbiAgICBiYW5uZXIucGFjayhmaWxsPSd4JywgcGFkeT0oMCwgMjIpKVxuICAgIGJhbm5lcl9kb3QgPSB0ay5DYW52YXMoYmFubmVyLCB3aWR0aD0xMiwgaGVpZ2h0PTEyLCBiZz1DT0xPUlNbJ2FjY2VudF9zb2Z0J10sIGhpZ2hsaWdodHRoaWNrbmVzcz0wKVxuICAgIGJhbm5lcl9kb3QucGFjayhzaWRlPSdsZWZ0JywgcGFkeD0oMCwgMTApKVxuICAgIGJhbm5lcl9kb3QuY3JlYXRlX292YWwoMiwgMiwgMTAsIDEwLCBmaWxsPUNPTE9SU1snYWNjZW50J10sIG91dGxpbmU9JycpXG4gICAgc3RhdHVzX2xhYmVsID0gdGsuTGFiZWwoYmFubmVyLCB0ZXh0dmFyaWFibGU9c3RhdHVzLCBmb250PWZvbnRzWydib2R5J10sIGJnPUNPTE9SU1snYWNjZW50X3NvZnQnXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZz1DT0xPUlNbJ2luayddLCB3cmFwbGVuZ3RoPTkwMCwganVzdGlmeT0nbGVmdCcsIGFuY2hvcj0ndycpXG4gICAgc3RhdHVzX2xhYmVsLnBhY2soc2lkZT0nbGVmdCcsIGZpbGw9J3gnLCBleHBhbmQ9VHJ1ZSlcblxuICAgIGRlZiBwYWludF9iYW5uZXIodG9uZT0ncmVhZHknKTpcbiAgICAgICAgcGFsZXR0ZXMgPSB7XG4gICAgICAgICAgICAncmVhZHknOiAoQ09MT1JTWydhY2NlbnRfc29mdCddLCBDT0xPUlNbJ2FjY2VudCddLCBDT0xPUlNbJ2luayddKSxcbiAgICAgICAgICAgICd3YWl0JzogKENPTE9SU1snb2tfc29mdCddLCBDT0xPUlNbJ29rJ10sIENPTE9SU1snb2snXSksXG4gICAgICAgICAgICAnZXJyb3InOiAoQ09MT1JTWyd3YXJuX3NvZnQnXSwgQ09MT1JTWyd3YXJuJ10sIENPTE9SU1snd2FybiddKSxcbiAgICAgICAgfVxuICAgICAgICBiYWNrZ3JvdW5kLCBkb3QsIHRleHQgPSBwYWxldHRlcy5nZXQodG9uZSwgcGFsZXR0ZXNbJ3JlYWR5J10pXG4gICAgICAgIHN0YXR1c190b25lWyd2YWx1ZSddID0gdG9uZVxuICAgICAgICBiYW5uZXIuY29uZmlndXJlKGJnPWJhY2tncm91bmQpXG4gICAgICAgIGJhbm5lcl9kb3QuY29uZmlndXJlKGJnPWJhY2tncm91bmQpXG4gICAgICAgIGJhbm5lcl9kb3QuaXRlbWNvbmZpZ3VyZSgxLCBmaWxsPWRvdClcbiAgICAgICAgc3RhdHVzX2xhYmVsLmNvbmZpZ3VyZShiZz1iYWNrZ3JvdW5kLCBmZz10ZXh0KVxuXG4gICAgaGVybyA9IHRrLkZyYW1lKGJvZHksIGJnPUNPTE9SU1sncGFwZXInXSlcbiAgICBoZXJvLnBhY2soZmlsbD0neCcsIHBhZHk9KDAsIDIyKSlcbiAgICB0ay5MYWJlbChoZXJvLCB0ZXh0PVwiUHV0IHRoaXMgY29tcHV0ZXIncyBpZGxlIHRpbWUgdG8gd29yay5cIiwgZm9udD1mb250c1snZGlzcGxheSddLFxuICAgICAgICAgICAgIGJnPUNPTE9SU1sncGFwZXInXSwgZmc9Q09MT1JTWydpbmsnXSwgd3JhcGxlbmd0aD05ODAsIGp1c3RpZnk9J2xlZnQnLCBhbmNob3I9J3cnKS5wYWNrKGZpbGw9J3gnKVxuICAgIHRrLkxhYmVsKFxuICAgICAgICBoZXJvLFxuICAgICAgICB0ZXh0PSdEb3JpYW4gR3JheSBjYW4gcHJvY2VzcyBiYWNrZ3JvdW5kIHRhc2tzIG9uIG1hY2hpbmVzIGxpa2UgdGhpcyBvbmUuICdcbiAgICAgICAgICAgICAnWW91IHN0YXkgaW4gY29udHJvbCDigJQgc2VuZCBhIHJlcXVlc3QsIHdhaXQgZm9yIGFwcHJvdmFsLCBhbmQgbGVhdmUgdGhpcyB3aW5kb3cgb3Blbi4nLFxuICAgICAgICBmb250PWZvbnRzWydzdWJ0aXRsZSddLCBiZz1DT0xPUlNbJ3BhcGVyJ10sIGZnPUNPTE9SU1snbXV0ZWQnXSwgd3JhcGxlbmd0aD05ODAsXG4gICAgICAgIGp1c3RpZnk9J2xlZnQnLCBhbmNob3I9J3cnLFxuICAgICkucGFjayhmaWxsPSd4JywgcGFkeT0oOCwgMCkpXG5cbiAgICBzdGVwcyA9IHRrLkZyYW1lKGJvZHksIGJnPUNPTE9SU1sncGFwZXInXSlcbiAgICBzdGVwcy5wYWNrKGZpbGw9J3gnLCBwYWR5PSgwLCAxOCkpXG4gICAgZm9yIGNvbHVtbiwgKG51bWJlciwgdGl0bGUsIGNvcHkpIGluIGVudW1lcmF0ZShFTlJPTExNRU5UX1NURVBTKTpcbiAgICAgICAgY2FyZCA9IHRrLkZyYW1lKHN0ZXBzLCBiZz1DT0xPUlNbJ2NhcmQnXSwgaGlnaGxpZ2h0YmFja2dyb3VuZD1DT0xPUlNbJ2xpbmUnXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhpZ2hsaWdodHRoaWNrbmVzcz0xLCBwYWR4PTIwLCBwYWR5PTIyKVxuICAgICAgICBjYXJkLmdyaWQocm93PTAsIGNvbHVtbj1jb2x1bW4sIHN0aWNreT0nbnNldycsIHBhZHg9KDAgaWYgY29sdW1uID09IDAgZWxzZSAxMCwgMCkpXG4gICAgICAgIGJhZGdlID0gdGsuQ2FudmFzKGNhcmQsIHdpZHRoPTQwLCBoZWlnaHQ9NDAsIGJnPUNPTE9SU1snY2FyZCddLCBoaWdobGlnaHR0aGlja25lc3M9MClcbiAgICAgICAgYmFkZ2UucGFjayhhbmNob3I9J3cnKVxuICAgICAgICBiYWRnZS5jcmVhdGVfb3ZhbCgyLCAyLCAzOCwgMzgsIGZpbGw9Q09MT1JTWydiYWRnZSddLCBvdXRsaW5lPScnKVxuICAgICAgICBiYWRnZS5jcmVhdGVfdGV4dCgyMCwgMjAsIHRleHQ9bnVtYmVyLCBmaWxsPUNPTE9SU1snd2hpdGUnXSwgZm9udD1mb250c1snYmFkZ2UnXSlcbiAgICAgICAgdGsuTGFiZWwoY2FyZCwgdGV4dD10aXRsZSwgZm9udD1mb250c1snaGVhZGluZyddLCBiZz1DT0xPUlNbJ2NhcmQnXSwgZmc9Q09MT1JTWydpbmsnXSxcbiAgICAgICAgICAgICAgICAgd3JhcGxlbmd0aD0yNjAsIGp1c3RpZnk9J2xlZnQnLCBhbmNob3I9J3cnKS5wYWNrKGZpbGw9J3gnLCBwYWR5PSgxNCwgNikpXG4gICAgICAgIHRrLkxhYmVsKGNhcmQsIHRleHQ9Y29weSwgZm9udD1mb250c1snYm9keSddLCBiZz1DT0xPUlNbJ2NhcmQnXSwgZmc9Q09MT1JTWydtdXRlZCddLFxuICAgICAgICAgICAgICAgICB3cmFwbGVuZ3RoPTI2MCwganVzdGlmeT0nbGVmdCcsIGFuY2hvcj0ndycpLnBhY2soZmlsbD0neCcpXG4gICAgICAgIHN0ZXBzLmNvbHVtbmNvbmZpZ3VyZShjb2x1bW4sIHdlaWdodD0xLCB1bmlmb3JtPSdzdGVwcycpXG5cbiAgICBwcml2YWN5ID0gdGsuRnJhbWUoYm9keSwgYmc9Q09MT1JTWyd3aGl0ZSddLCBoaWdobGlnaHRiYWNrZ3JvdW5kPUNPTE9SU1snbGluZSddLFxuICAgICAgICAgICAgICAgICAgICAgICBoaWdobGlnaHR0aGlja25lc3M9MSwgcGFkeD0xOCwgcGFkeT0xNClcbiAgICBwcml2YWN5LnBhY2soZmlsbD0neCcsIHBhZHk9KDAsIDIyKSlcbiAgICB0ay5MYWJlbChwcml2YWN5LCB0ZXh0PSdZb3VyIHByaXZhY3knLCBmb250PWZvbnRzWydsYWJlbCddLCBiZz1DT0xPUlNbJ3doaXRlJ10sXG4gICAgICAgICAgICAgZmc9Q09MT1JTWydpbmsnXSkucGFjayhhbmNob3I9J3cnKVxuICAgIHRrLkxhYmVsKFxuICAgICAgICBwcml2YWN5LFxuICAgICAgICB0ZXh0PSdXZSBuZXZlciBjb2xsZWN0IHBhc3N3b3JkcywgZmlsZXMsIHBob3RvcywgYnJvd3NpbmcgaGlzdG9yeSwgc2VyaWFsIG51bWJlcnMsIG9yIG5ldHdvcmsgYWRkcmVzc2VzLiAnXG4gICAgICAgICAgICAgJ0FmdGVyIGFwcHJvdmFsLCBzZXR1cCBwcm9ncmVzcyBhbmQgZGlhZ25vc3RpYyBtZXNzYWdlcyBhcmUgc2VudCB0byBvdXIgdGVhbS4nLFxuICAgICAgICBmb250PWZvbnRzWydzbWFsbCddLCBiZz1DT0xPUlNbJ3doaXRlJ10sIGZnPUNPTE9SU1snbXV0ZWQnXSwgd3JhcGxlbmd0aD05ODAsXG4gICAgICAgIGp1c3RpZnk9J2xlZnQnLCBhbmNob3I9J3cnLFxuICAgICkucGFjayhmaWxsPSd4JywgcGFkeT0oNCwgMCkpXG5cbiAgICBwbGFuX2JsdXJiLCBwbGFuX2RldGFpbHMgPSBzZXR1cF9wbGFuKG9yaWdpbilcbiAgICBkZXRhaWxzX2NhcmQgPSB0ay5GcmFtZShib2R5LCBiZz1DT0xPUlNbJ2NhcmQnXSwgaGlnaGxpZ2h0YmFja2dyb3VuZD1DT0xPUlNbJ2xpbmUnXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaWdobGlnaHR0aGlja25lc3M9MSwgcGFkeD0xOCwgcGFkeT0xNClcbiAgICBkZXRhaWxzX2NhcmQucGFjayhmaWxsPSd4JywgcGFkeT0oMCwgMjIpKVxuICAgIHRrLkxhYmVsKGRldGFpbHNfY2FyZCwgdGV4dD0nSWYgeW91IGFwcHJvdmUsIHRoaXMgY29tcHV0ZXIgd2lsbCcsIGZvbnQ9Zm9udHNbJ2xhYmVsJ10sXG4gICAgICAgICAgICAgYmc9Q09MT1JTWydjYXJkJ10sIGZnPUNPTE9SU1snaW5rJ10pLnBhY2soYW5jaG9yPSd3JylcbiAgICB0ay5MYWJlbChkZXRhaWxzX2NhcmQsIHRleHQ9cGxhbl9ibHVyYiwgZm9udD1mb250c1snc21hbGwnXSwgYmc9Q09MT1JTWydjYXJkJ10sIGZnPUNPTE9SU1snbXV0ZWQnXSxcbiAgICAgICAgICAgICB3cmFwbGVuZ3RoPTk4MCwganVzdGlmeT0nbGVmdCcsIGFuY2hvcj0ndycpLnBhY2soZmlsbD0neCcsIHBhZHk9KDQsIDEwKSlcbiAgICBkZXRhaWxzX3Zpc2libGUgPSB7J3ZhbHVlJzogRmFsc2V9XG4gICAgZGV0YWlsc19ib2R5ID0gdGsuRnJhbWUoZGV0YWlsc19jYXJkLCBiZz0nIzFjMTkxNycpXG4gICAgZGV0YWlsc190ZXh0ID0gc2Nyb2xsZWR0ZXh0LlNjcm9sbGVkVGV4dChkZXRhaWxzX2JvZHksIGhlaWdodD0xMCwgd3JhcD0nd29yZCcsIGZvbnQ9Zm9udHNbJ21vbm8nXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJnPScjMWMxOTE3JywgZmc9JyNlN2UwZDYnLCByZWxpZWY9J2ZsYXQnLCBiZD0wLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zZXJ0YmFja2dyb3VuZD0nI2U3ZTBkNicpXG4gICAgZGV0YWlsc190ZXh0Lmluc2VydCgnMS4wJywgcGxhbl9kZXRhaWxzKVxuICAgIGRldGFpbHNfdGV4dC5jb25maWd1cmUoc3RhdGU9J2Rpc2FibGVkJylcbiAgICBkZXRhaWxzX3RleHQucGFjayhmaWxsPSdib3RoJywgZXhwYW5kPVRydWUsIHBhZHg9MTIsIHBhZHk9MTIpXG5cbiAgICBkZWYgdG9nZ2xlX2RldGFpbHMoKTpcbiAgICAgICAgZGV0YWlsc192aXNpYmxlWyd2YWx1ZSddID0gbm90IGRldGFpbHNfdmlzaWJsZVsndmFsdWUnXVxuICAgICAgICBpZiBkZXRhaWxzX3Zpc2libGVbJ3ZhbHVlJ106XG4gICAgICAgICAgICBkZXRhaWxzX2JvZHkucGFjayhmaWxsPSdib3RoJywgZXhwYW5kPVRydWUsIHBhZHk9KDQsIDApKVxuICAgICAgICAgICAgZGV0YWlsc19idXR0b24uY29uZmlndXJlKHRleHQ9J0hpZGUgdGhlIGRldGFpbHMnKVxuICAgICAgICBlbHNlOlxuICAgICAgICAgICAgZGV0YWlsc19ib2R5LnBhY2tfZm9yZ2V0KClcbiAgICAgICAgICAgIGRldGFpbHNfYnV0dG9uLmNvbmZpZ3VyZSh0ZXh0PSdHaXZlIG1lIHRoZSBkZXRhaWxzJylcblxuICAgIGRldGFpbHNfYnV0dG9uID0gdGsuQnV0dG9uKGRldGFpbHNfY2FyZCwgdGV4dD0nR2l2ZSBtZSB0aGUgZGV0YWlscycsIGNvbW1hbmQ9dG9nZ2xlX2RldGFpbHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udD1mb250c1snYm9keSddLCByZWxpZWY9J2ZsYXQnLCBiZD0wLCBwYWR4PTEyLCBwYWR5PTgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmc9Q09MT1JTWyd3aGl0ZSddLCBmZz1DT0xPUlNbJ2luayddLCBjdXJzb3I9J2hhbmQyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaWdobGlnaHR0aGlja25lc3M9MSwgaGlnaGxpZ2h0YmFja2dyb3VuZD1DT0xPUlNbJ2xpbmUnXSlcbiAgICBkZXRhaWxzX2J1dHRvbi5wYWNrKGFuY2hvcj0ndycpXG5cbiAgICBmb3JtX2NhcmQgPSB0ay5GcmFtZShib2R5LCBiZz1DT0xPUlNbJ2NhcmQnXSwgaGlnaGxpZ2h0YmFja2dyb3VuZD1DT0xPUlNbJ2xpbmUnXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICBoaWdobGlnaHR0aGlja25lc3M9MSwgcGFkeD0yNCwgcGFkeT0yMilcbiAgICBmb3JtX2NhcmQucGFjayhmaWxsPSd4JylcbiAgICB0ay5MYWJlbChmb3JtX2NhcmQsIHRleHQ9J1NlbmQgYSByZXF1ZXN0JywgZm9udD1mb250c1snaGVhZGluZyddLCBiZz1DT0xPUlNbJ2NhcmQnXSxcbiAgICAgICAgICAgICBmZz1DT0xPUlNbJ2luayddKS5wYWNrKGFuY2hvcj0ndycpXG4gICAgdGsuTGFiZWwoZm9ybV9jYXJkLCB0ZXh0PSdXZSBuZWVkIGEgbmFtZSwgZW1haWwsIGFuZCBwaG9uZSBzbyB3ZSBjYW4gcmVhY2ggeW91IGFib3V0IHRoaXMgY29tcHV0ZXIuJyxcbiAgICAgICAgICAgICBmb250PWZvbnRzWydzbWFsbCddLCBiZz1DT0xPUlNbJ2NhcmQnXSwgZmc9Q09MT1JTWydtdXRlZCddKS5wYWNrKGFuY2hvcj0ndycsIHBhZHk9KDQsIDE2KSlcblxuICAgIGZpZWxkcyA9IHRrLkZyYW1lKGZvcm1fY2FyZCwgYmc9Q09MT1JTWydjYXJkJ10pXG4gICAgZmllbGRzLnBhY2soZmlsbD0neCcpXG5cbiAgICBkZWYgbGFiZWxlZF9lbnRyeShwYXJlbnQsIGxhYmVsLCByb3cpOlxuICAgICAgICB0ay5MYWJlbChwYXJlbnQsIHRleHQ9bGFiZWwsIGZvbnQ9Zm9udHNbJ2xhYmVsJ10sIGJnPUNPTE9SU1snY2FyZCddLFxuICAgICAgICAgICAgICAgICBmZz1DT0xPUlNbJ2luayddKS5ncmlkKHJvdz1yb3csIGNvbHVtbj0wLCBzdGlja3k9J3cnLCBwYWR5PSgwLCA4KSBpZiByb3cgZWxzZSAoMCwgMTIpKVxuICAgICAgICBlbnRyeSA9IHRrLkVudHJ5KHBhcmVudCwgZm9udD1mb250c1snYm9keSddLCByZWxpZWY9J2ZsYXQnLCBiZD0wLCBoaWdobGlnaHR0aGlja25lc3M9MSxcbiAgICAgICAgICAgICAgICAgICAgICAgICBoaWdobGlnaHRiYWNrZ3JvdW5kPUNPTE9SU1snbGluZSddLCBoaWdobGlnaHRjb2xvcj1DT0xPUlNbJ2FjY2VudCddLFxuICAgICAgICAgICAgICAgICAgICAgICAgIGJnPUNPTE9SU1snd2hpdGUnXSwgZmc9Q09MT1JTWydpbmsnXSwgaW5zZXJ0YmFja2dyb3VuZD1DT0xPUlNbJ2luayddKVxuICAgICAgICBlbnRyeS5ncmlkKHJvdz1yb3csIGNvbHVtbj0xLCBzdGlja3k9J3dlJywgcGFkeD0oMTYsIDApLCBwYWR5PSgwLCA4KSBpZiByb3cgZWxzZSAoMCwgMTIpLCBpcGFkeT0xMCwgaXBhZHg9OClcbiAgICAgICAgcmV0dXJuIGVudHJ5XG5cbiAgICBuYW1lX2VudHJ5ID0gbGFiZWxlZF9lbnRyeShmaWVsZHMsICdZb3VyIG5hbWUnLCAwKVxuICAgIGVtYWlsX2VudHJ5ID0gbGFiZWxlZF9lbnRyeShmaWVsZHMsICdFbWFpbCcsIDEpXG4gICAgcGhvbmVfZW50cnkgPSBsYWJlbGVkX2VudHJ5KGZpZWxkcywgJ1Bob25lJywgMilcbiAgICBub3RlX2VudHJ5ID0gbGFiZWxlZF9lbnRyeShmaWVsZHMsICdOb3RlIChvcHRpb25hbCknLCAzKVxuICAgIGZpZWxkcy5jb2x1bW5jb25maWd1cmUoMSwgd2VpZ2h0PTEpXG5cbiAgICBhY3Rpb24gPSB0ay5TdHJpbmdWYXIodmFsdWU9J3dhaXRpbmcnKVxuICAgIGJ1dHRvbnMgPSB0ay5GcmFtZShmb3JtX2NhcmQsIGJnPUNPTE9SU1snY2FyZCddKVxuICAgIGJ1dHRvbnMucGFjayhmaWxsPSd4JywgcGFkeT0oMTAsIDApKVxuXG4gICAgZGVmIHN0eWxlZF9idXR0b24ocGFyZW50LCB0ZXh0LCBjb21tYW5kLCBwcmltYXJ5PUZhbHNlKTpcbiAgICAgICAgaWYgcHJpbWFyeTpcbiAgICAgICAgICAgIGJ1dHRvbiA9IHRrLkJ1dHRvbihcbiAgICAgICAgICAgICAgICBwYXJlbnQsIHRleHQ9dGV4dCwgY29tbWFuZD1jb21tYW5kLCBmb250PWZvbnRzWydidXR0b24nXSwgcmVsaWVmPSdmbGF0JywgYmQ9MCxcbiAgICAgICAgICAgICAgICBwYWR4PTIyLCBwYWR5PTEyLCBiZz1DT0xPUlNbJ2FjY2VudCddLCBhY3RpdmViYWNrZ3JvdW5kPUNPTE9SU1snYWNjZW50X2hvdmVyJ10sXG4gICAgICAgICAgICAgICAgZmc9Q09MT1JTWyd3aGl0ZSddLCBhY3RpdmVmb3JlZ3JvdW5kPUNPTE9SU1snd2hpdGUnXSwgY3Vyc29yPSdoYW5kMicsXG4gICAgICAgICAgICAgICAgZGlzYWJsZWRmb3JlZ3JvdW5kPScjZWRjZGM4JyxcbiAgICAgICAgICAgIClcbiAgICAgICAgZWxzZTpcbiAgICAgICAgICAgIGJ1dHRvbiA9IHRrLkJ1dHRvbihcbiAgICAgICAgICAgICAgICBwYXJlbnQsIHRleHQ9dGV4dCwgY29tbWFuZD1jb21tYW5kLCBmb250PWZvbnRzWydib2R5J10sIHJlbGllZj0nZmxhdCcsIGJkPTAsXG4gICAgICAgICAgICAgICAgcGFkeD0xNiwgcGFkeT0xMiwgYmc9Q09MT1JTWyd3aGl0ZSddLCBhY3RpdmViYWNrZ3JvdW5kPUNPTE9SU1sncGFwZXInXSxcbiAgICAgICAgICAgICAgICBmZz1DT0xPUlNbJ2luayddLCBhY3RpdmVmb3JlZ3JvdW5kPUNPTE9SU1snaW5rJ10sIGN1cnNvcj0naGFuZDInLFxuICAgICAgICAgICAgICAgIGhpZ2hsaWdodHRoaWNrbmVzcz0xLCBoaWdobGlnaHRiYWNrZ3JvdW5kPUNPTE9SU1snbGluZSddLFxuICAgICAgICAgICAgKVxuICAgICAgICByZXR1cm4gYnV0dG9uXG5cbiAgICBzZW5kX2J1dHRvbiA9IHN0eWxlZF9idXR0b24oYnV0dG9ucywgJ1NlbmQgcmVxdWVzdCcsIGxhbWJkYTogTm9uZSwgcHJpbWFyeT1UcnVlKVxuICAgIHNlbmRfYnV0dG9uLnBhY2soc2lkZT0nbGVmdCcpXG4gICAgcGF1c2VfYnV0dG9uID0gc3R5bGVkX2J1dHRvbihidXR0b25zLCAnUGF1c2UnLCBsYW1iZGE6IE5vbmUpXG4gICAgcmVzdW1lX2J1dHRvbiA9IHN0eWxlZF9idXR0b24oYnV0dG9ucywgJ1Jlc3VtZScsIGxhbWJkYTogTm9uZSlcbiAgICBxdWl0X2J1dHRvbiA9IHN0eWxlZF9idXR0b24oYnV0dG9ucywgJ1F1aXQnLCByb290LmRlc3Ryb3kpXG4gICAgcXVpdF9idXR0b24ucGFjayhzaWRlPSdsZWZ0JywgcGFkeD0oMTAsIDApKVxuXG4gICAgc2V0dXBfdmlldyA9IHRrLkZyYW1lKGJvZHksIGJnPUNPTE9SU1sncGFwZXInXSlcbiAgICBzZXR1cF9oZWFkaW5nID0gdGsuTGFiZWwoc2V0dXBfdmlldywgdGV4dD0nU2V0dGluZyB1cCB0aGlzIGNvbXB1dGVyJywgZm9udD1mb250c1snZGlzcGxheSddLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZz1DT0xPUlNbJ3BhcGVyJ10sIGZnPUNPTE9SU1snaW5rJ10sIHdyYXBsZW5ndGg9OTgwLCBqdXN0aWZ5PSdsZWZ0JywgYW5jaG9yPSd3JylcbiAgICBzZXR1cF9oZWFkaW5nLnBhY2soZmlsbD0neCcpXG4gICAgc2V0dXBfY29weSA9IHRrLkxhYmVsKFxuICAgICAgICBzZXR1cF92aWV3LFxuICAgICAgICB0ZXh0PSdZb3UgY2FuIGtlZXAgdXNpbmcgdGhpcyBjb21wdXRlci4gV2Ugd2lsbCBoYW5kbGUgdGhlIHJlc3QgaW4gdGhlIGJhY2tncm91bmQgYW5kIHRlbGwgeW91IHdoYXQgaXMgaGFwcGVuaW5nLicsXG4gICAgICAgIGZvbnQ9Zm9udHNbJ3N1YnRpdGxlJ10sIGJnPUNPTE9SU1sncGFwZXInXSwgZmc9Q09MT1JTWydtdXRlZCddLCB3cmFwbGVuZ3RoPTk4MCwganVzdGlmeT0nbGVmdCcsIGFuY2hvcj0ndycsXG4gICAgKVxuICAgIHNldHVwX2NvcHkucGFjayhmaWxsPSd4JywgcGFkeT0oOCwgMjIpKVxuXG4gICAgc2V0dXBfY2FyZCA9IHRrLkZyYW1lKHNldHVwX3ZpZXcsIGJnPUNPTE9SU1snY2FyZCddLCBoaWdobGlnaHRiYWNrZ3JvdW5kPUNPTE9SU1snbGluZSddLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBoaWdobGlnaHR0aGlja25lc3M9MSwgcGFkeD0yNCwgcGFkeT0yMilcbiAgICBzZXR1cF9jYXJkLnBhY2soZmlsbD0nYm90aCcsIGV4cGFuZD1UcnVlKVxuICAgIHRrLkxhYmVsKHNldHVwX2NhcmQsIHRleHQ9J1doYXQgaXMgaGFwcGVuaW5nJywgZm9udD1mb250c1snaGVhZGluZyddLCBiZz1DT0xPUlNbJ2NhcmQnXSxcbiAgICAgICAgICAgICBmZz1DT0xPUlNbJ2luayddKS5wYWNrKGFuY2hvcj0ndycsIHBhZHk9KDAsIDEyKSlcblxuICAgIHNldHVwX3Jvd3MgPSBbXVxuICAgIGZvciBpbmRleCwgKHRpdGxlLCBkZXRhaWwpIGluIGVudW1lcmF0ZShTRVRVUF9TVEVQUyk6XG4gICAgICAgIHJvdyA9IHRrLkZyYW1lKHNldHVwX2NhcmQsIGJnPUNPTE9SU1snY2FyZCddLCBwYWR5PTgpXG4gICAgICAgIHJvdy5wYWNrKGZpbGw9J3gnKVxuICAgICAgICBiYWRnZSA9IHRrLkNhbnZhcyhyb3csIHdpZHRoPTI4LCBoZWlnaHQ9MjgsIGJnPUNPTE9SU1snY2FyZCddLCBoaWdobGlnaHR0aGlja25lc3M9MClcbiAgICAgICAgYmFkZ2UucGFjayhzaWRlPSdsZWZ0JywgcGFkeD0oMCwgMTIpKVxuICAgICAgICBjaXJjbGUgPSBiYWRnZS5jcmVhdGVfb3ZhbCg0LCA0LCAyNCwgMjQsIG91dGxpbmU9Q09MT1JTWydsaW5lJ10sIHdpZHRoPTIsIGZpbGw9Q09MT1JTWydjYXJkJ10pXG4gICAgICAgIG1hcmsgPSBiYWRnZS5jcmVhdGVfdGV4dCgxNCwgMTQsIHRleHQ9c3RyKGluZGV4ICsgMSksIGZpbGw9Q09MT1JTWydtdXRlZCddLCBmb250PWZvbnRzWydzbWFsbCddKVxuICAgICAgICB0ZXh0X2Jsb2NrID0gdGsuRnJhbWUocm93LCBiZz1DT0xPUlNbJ2NhcmQnXSlcbiAgICAgICAgdGV4dF9ibG9jay5wYWNrKHNpZGU9J2xlZnQnLCBmaWxsPSd4JywgZXhwYW5kPVRydWUpXG4gICAgICAgIHRpdGxlX2xhYmVsID0gdGsuTGFiZWwodGV4dF9ibG9jaywgdGV4dD10aXRsZSwgZm9udD1mb250c1snaGVhZGluZyddLCBiZz1DT0xPUlNbJ2NhcmQnXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZz1DT0xPUlNbJ211dGVkJ10sIGFuY2hvcj0ndycpXG4gICAgICAgIHRpdGxlX2xhYmVsLnBhY2soZmlsbD0neCcpXG4gICAgICAgIGRldGFpbF9sYWJlbCA9IHRrLkxhYmVsKHRleHRfYmxvY2ssIHRleHQ9ZGV0YWlsLCBmb250PWZvbnRzWydzbWFsbCddLCBiZz1DT0xPUlNbJ2NhcmQnXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmc9Q09MT1JTWydtdXRlZCddLCB3cmFwbGVuZ3RoPTc2MCwganVzdGlmeT0nbGVmdCcsIGFuY2hvcj0ndycpXG4gICAgICAgIGRldGFpbF9sYWJlbC5wYWNrKGZpbGw9J3gnKVxuICAgICAgICBzZXR1cF9yb3dzLmFwcGVuZCh7XG4gICAgICAgICAgICAnYmFkZ2UnOiBiYWRnZSwgJ2NpcmNsZSc6IGNpcmNsZSwgJ21hcmsnOiBtYXJrLFxuICAgICAgICAgICAgJ3RpdGxlJzogdGl0bGVfbGFiZWwsICdkZXRhaWwnOiBkZXRhaWxfbGFiZWwsICdkZWZhdWx0JzogZGV0YWlsLFxuICAgICAgICB9KVxuXG4gICAgYWN0aXZpdHkgPSB0ay5GcmFtZShzZXR1cF92aWV3LCBiZz1DT0xPUlNbJ3doaXRlJ10sIGhpZ2hsaWdodGJhY2tncm91bmQ9Q09MT1JTWydsaW5lJ10sXG4gICAgICAgICAgICAgICAgICAgICAgICBoaWdobGlnaHR0aGlja25lc3M9MSwgcGFkeD0xOCwgcGFkeT0xNClcbiAgICBhY3Rpdml0eS5wYWNrKGZpbGw9J3gnLCBwYWR5PSgxOCwgMCkpXG4gICAgdGsuTGFiZWwoYWN0aXZpdHksIHRleHQ9J1JpZ2h0IG5vdycsIGZvbnQ9Zm9udHNbJ2xhYmVsJ10sIGJnPUNPTE9SU1snd2hpdGUnXSxcbiAgICAgICAgICAgICBmZz1DT0xPUlNbJ2luayddKS5wYWNrKGFuY2hvcj0ndycpXG4gICAgYWN0aXZpdHlfdGV4dCA9IHRrLlN0cmluZ1Zhcih2YWx1ZT0nV2FpdGluZyB0byBzdGFydOKApicpXG4gICAgYWN0aXZpdHlfbGFiZWwgPSB0ay5MYWJlbChhY3Rpdml0eSwgdGV4dHZhcmlhYmxlPWFjdGl2aXR5X3RleHQsIGZvbnQ9Zm9udHNbJ2JvZHknXSwgYmc9Q09MT1JTWyd3aGl0ZSddLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmc9Q09MT1JTWydtdXRlZCddLCB3cmFwbGVuZ3RoPTk4MCwganVzdGlmeT0nbGVmdCcsIGFuY2hvcj0ndycpXG4gICAgYWN0aXZpdHlfbGFiZWwucGFjayhmaWxsPSd4JywgcGFkeT0oNCwgMCkpXG4gICAgY29uc29sZV9jYXJkID0gdGsuRnJhbWUoc2V0dXBfdmlldywgYmc9JyMxYzE5MTcnLCBoaWdobGlnaHRiYWNrZ3JvdW5kPUNPTE9SU1snbGluZSddLCBoaWdobGlnaHR0aGlja25lc3M9MSlcbiAgICBjb25zb2xlX2NhcmQucGFjayhmaWxsPSdib3RoJywgZXhwYW5kPVRydWUsIHBhZHk9KDE4LCAwKSlcbiAgICB0ay5MYWJlbChjb25zb2xlX2NhcmQsIHRleHQ9J0NvbW1hbmRzJywgZm9udD1mb250c1snbGFiZWwnXSwgYmc9JyMxYzE5MTcnLFxuICAgICAgICAgICAgIGZnPScjYzRiOGFhJykucGFjayhhbmNob3I9J3cnLCBwYWR4PTE0LCBwYWR5PSgxMiwgMCkpXG4gICAgY29uc29sZSA9IHNjcm9sbGVkdGV4dC5TY3JvbGxlZFRleHQoY29uc29sZV9jYXJkLCBoZWlnaHQ9OCwgd3JhcD0nd29yZCcsIGZvbnQ9Zm9udHNbJ21vbm8nXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZz0nIzFjMTkxNycsIGZnPScjZTdlMGQ2JywgcmVsaWVmPSdmbGF0JywgYmQ9MCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnNlcnRiYWNrZ3JvdW5kPScjZTdlMGQ2JylcbiAgICBjb25zb2xlLnBhY2soZmlsbD0nYm90aCcsIGV4cGFuZD1UcnVlLCBwYWR4PTEyLCBwYWR5PSg2LCAxMikpXG4gICAgY29uc29sZS5jb25maWd1cmUoc3RhdGU9J2Rpc2FibGVkJylcblxuICAgIGRlZiBhcHBlbmRfY29uc29sZShsaW5lKTpcbiAgICAgICAgY29uc29sZS5jb25maWd1cmUoc3RhdGU9J25vcm1hbCcpXG4gICAgICAgIGNvbnNvbGUuaW5zZXJ0KCdlbmQnLCBsaW5lICsgJ1xcbicpXG4gICAgICAgIGNvbnNvbGUuc2VlKCdlbmQnKVxuICAgICAgICBjb25zb2xlLmNvbmZpZ3VyZShzdGF0ZT0nZGlzYWJsZWQnKVxuICAgIHNldHVwX2J1dHRvbnMgPSB0ay5GcmFtZShzZXR1cF92aWV3LCBiZz1DT0xPUlNbJ3BhcGVyJ10pXG4gICAgc2V0dXBfYnV0dG9ucy5wYWNrKGZpbGw9J3gnLCBwYWR5PSgxOCwgMCkpXG4gICAgc2V0dXBfcXVpdCA9IHN0eWxlZF9idXR0b24oc2V0dXBfYnV0dG9ucywgJ1F1aXQnLCByb290LmRlc3Ryb3kpXG4gICAgc2V0dXBfcXVpdC5wYWNrKHNpZGU9J2xlZnQnKVxuICAgIHNldHVwX3BhdXNlID0gc3R5bGVkX2J1dHRvbihzZXR1cF9idXR0b25zLCAnUGF1c2UnLCBsYW1iZGE6IE5vbmUpXG4gICAgc2V0dXBfcmVzdW1lID0gc3R5bGVkX2J1dHRvbihzZXR1cF9idXR0b25zLCAnUmVzdW1lJywgbGFtYmRhOiBOb25lKVxuXG4gICAgc3RhdHVzX3ZpZXcgPSB0ay5GcmFtZShib2R5LCBiZz1DT0xPUlNbJ3BhcGVyJ10pXG4gICAgc3RhdHVzX2hlYWRpbmcgPSB0ay5MYWJlbChzdGF0dXNfdmlldywgdGV4dD0nVGhpcyBjb21wdXRlcicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250PWZvbnRzWyd0aXRsZSddLCBiZz1DT0xPUlNbJ3BhcGVyJ10sIGZnPUNPTE9SU1snaW5rJ10sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cmFwbGVuZ3RoPTcyMCwganVzdGlmeT0nbGVmdCcsIGFuY2hvcj0ndycpXG4gICAgc3RhdHVzX2hlYWRpbmcucGFjayhmaWxsPSd4JylcbiAgICBzdGF0dXNfY29weSA9IHRrLkxhYmVsKFxuICAgICAgICBzdGF0dXNfdmlldyxcbiAgICAgICAgdGV4dD0nVGhlIHdvcmtlciBzdGF5cyBvbiBhZnRlciB5b3UgY2xvc2UgdGhpcyB3aW5kb3cuIFBhdXNlIGl0IHdoZW4geW91IG5lZWQgdGhlIG1hY2hpbmUgdG8geW91cnNlbGYuJyxcbiAgICAgICAgZm9udD1mb250c1snc21hbGwnXSwgYmc9Q09MT1JTWydwYXBlciddLCBmZz1DT0xPUlNbJ211dGVkJ10sIHdyYXBsZW5ndGg9NzIwLFxuICAgICAgICBqdXN0aWZ5PSdsZWZ0JywgYW5jaG9yPSd3JyxcbiAgICApXG4gICAgc3RhdHVzX2NvcHkucGFjayhmaWxsPSd4JywgcGFkeT0oNCwgMTIpKVxuXG4gICAgZmFjdHMgPSB0ay5GcmFtZShzdGF0dXNfdmlldywgYmc9Q09MT1JTWydjYXJkJ10sIGhpZ2hsaWdodGJhY2tncm91bmQ9Q09MT1JTWydsaW5lJ10sXG4gICAgICAgICAgICAgICAgICAgICBoaWdobGlnaHR0aGlja25lc3M9MSwgcGFkeD0xNiwgcGFkeT0xMilcbiAgICBmYWN0cy5wYWNrKGZpbGw9J3gnKVxuICAgIHN0YXRlX3ZhbHVlID0gdGsuU3RyaW5nVmFyKHZhbHVlPSdDb25uZWN0aW5n4oCmJylcbiAgICBhY3Rpdml0eV92YWx1ZSA9IHRrLlN0cmluZ1Zhcih2YWx1ZT0nQ2hlY2tpbmfigKYnKVxuICAgIHRhc2tzX3ZhbHVlID0gdGsuU3RyaW5nVmFyKHZhbHVlPScwJylcbiAgICBtZW1vcnlfdmFsdWUgPSB0ay5TdHJpbmdWYXIodmFsdWU9J+KAlCcpXG4gICAgZmFjdF9zcGVjcyA9IChcbiAgICAgICAgKCdTdGF0dXMnLCBzdGF0ZV92YWx1ZSksXG4gICAgICAgICgnUmlnaHQgbm93JywgYWN0aXZpdHlfdmFsdWUpLFxuICAgICAgICAoJ1Rhc2tzIGZpbmlzaGVkJywgdGFza3NfdmFsdWUpLFxuICAgICAgICAoJ0ZyZWUgbWVtb3J5JywgbWVtb3J5X3ZhbHVlKSxcbiAgICApXG4gICAgZmFjdF9sYWJlbHMgPSBbXVxuICAgIGZvciBjb2x1bW4sIChsYWJlbCwgdmFyaWFibGUpIGluIGVudW1lcmF0ZShmYWN0X3NwZWNzKTpcbiAgICAgICAgY2VsbCA9IHRrLkZyYW1lKGZhY3RzLCBiZz1DT0xPUlNbJ2NhcmQnXSlcbiAgICAgICAgY2VsbC5ncmlkKHJvdz0wLCBjb2x1bW49Y29sdW1uLCBzdGlja3k9J253JywgcGFkeD0oMCBpZiBjb2x1bW4gPT0gMCBlbHNlIDE4LCAwKSlcbiAgICAgICAgdGsuTGFiZWwoY2VsbCwgdGV4dD1sYWJlbCwgZm9udD1mb250c1snbGFiZWwnXSwgYmc9Q09MT1JTWydjYXJkJ10sXG4gICAgICAgICAgICAgICAgIGZnPUNPTE9SU1snbXV0ZWQnXSkucGFjayhhbmNob3I9J3cnKVxuICAgICAgICB2YWx1ZV9sYWJlbCA9IHRrLkxhYmVsKGNlbGwsIHRleHR2YXJpYWJsZT12YXJpYWJsZSwgZm9udD1mb250c1snYm9keSddLCBiZz1DT0xPUlNbJ2NhcmQnXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZz1DT0xPUlNbJ2luayddLCB3cmFwbGVuZ3RoPTE2MCwganVzdGlmeT0nbGVmdCcsIGFuY2hvcj0ndycpXG4gICAgICAgIHZhbHVlX2xhYmVsLnBhY2soYW5jaG9yPSd3JywgcGFkeT0oMiwgMCkpXG4gICAgICAgIGZhY3RfbGFiZWxzLmFwcGVuZCh2YWx1ZV9sYWJlbClcbiAgICAgICAgZmFjdHMuY29sdW1uY29uZmlndXJlKGNvbHVtbiwgd2VpZ2h0PTEpXG5cbiAgICBjaGFydHMgPSB0ay5GcmFtZShzdGF0dXNfdmlldywgYmc9Q09MT1JTWydwYXBlciddKVxuICAgIGNoYXJ0cy5wYWNrKGZpbGw9J2JvdGgnLCBleHBhbmQ9VHJ1ZSwgcGFkeT0oMTIsIDApKVxuICAgIG1lbW9yeV9oaXN0b3J5ID0gZGVxdWUobWF4bGVuPTkwKVxuICAgIHRhc2tzX2hpc3RvcnkgPSBkZXF1ZShtYXhsZW49OTApXG5cbiAgICBkZWYgY2hhcnRfY2FyZChwYXJlbnQsIHRpdGxlLCBjb2x1bW4pOlxuICAgICAgICBjYXJkID0gdGsuRnJhbWUocGFyZW50LCBiZz1DT0xPUlNbJ2NhcmQnXSwgaGlnaGxpZ2h0YmFja2dyb3VuZD1DT0xPUlNbJ2xpbmUnXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhpZ2hsaWdodHRoaWNrbmVzcz0xLCBwYWR4PTEyLCBwYWR5PTEwKVxuICAgICAgICBjYXJkLmdyaWQocm93PTAsIGNvbHVtbj1jb2x1bW4sIHN0aWNreT0nbnNldycsIHBhZHg9KDAgaWYgY29sdW1uID09IDAgZWxzZSAxMCwgMCkpXG4gICAgICAgIHRrLkxhYmVsKGNhcmQsIHRleHQ9dGl0bGUsIGZvbnQ9Zm9udHNbJ2xhYmVsJ10sIGJnPUNPTE9SU1snY2FyZCddLFxuICAgICAgICAgICAgICAgICBmZz1DT0xPUlNbJ2luayddKS5wYWNrKGFuY2hvcj0ndycpXG4gICAgICAgIGNhbnZhcyA9IHRrLkNhbnZhcyhjYXJkLCBoZWlnaHQ9MTIwLCBiZz1DT0xPUlNbJ2NhcmQnXSwgaGlnaGxpZ2h0dGhpY2tuZXNzPTApXG4gICAgICAgIGNhbnZhcy5wYWNrKGZpbGw9J2JvdGgnLCBleHBhbmQ9VHJ1ZSwgcGFkeT0oOCwgMCkpXG4gICAgICAgIHBhcmVudC5jb2x1bW5jb25maWd1cmUoY29sdW1uLCB3ZWlnaHQ9MSlcbiAgICAgICAgcmV0dXJuIGNhbnZhc1xuXG4gICAgbWVtb3J5X2NoYXJ0ID0gY2hhcnRfY2FyZChjaGFydHMsICdNZW1vcnkgaW4gdXNlJywgMClcbiAgICB0YXNrc19jaGFydCA9IGNoYXJ0X2NhcmQoY2hhcnRzLCAnVGFza3MgZmluaXNoZWQnLCAxKVxuICAgIGNoYXJ0cy5yb3djb25maWd1cmUoMCwgd2VpZ2h0PTEpXG5cbiAgICBzdGF0dXNfbm90ZSA9IHRrLkZyYW1lKHN0YXR1c192aWV3LCBiZz1DT0xPUlNbJ3doaXRlJ10sIGhpZ2hsaWdodGJhY2tncm91bmQ9Q09MT1JTWydsaW5lJ10sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBoaWdobGlnaHR0aGlja25lc3M9MSwgcGFkeD0xNCwgcGFkeT0xMClcbiAgICBzdGF0dXNfbm90ZS5wYWNrKGZpbGw9J3gnLCBwYWR5PSgxMiwgMCkpXG4gICAgdGsuTGFiZWwoc3RhdHVzX25vdGUsIHRleHQ9J1BhdXNlJywgZm9udD1mb250c1snbGFiZWwnXSwgYmc9Q09MT1JTWyd3aGl0ZSddLFxuICAgICAgICAgICAgIGZnPUNPTE9SU1snaW5rJ10pLnBhY2soYW5jaG9yPSd3JylcbiAgICBzdGF0dXNfbm90ZV90ZXh0ID0gdGsuTGFiZWwoXG4gICAgICAgIHN0YXR1c19ub3RlLFxuICAgICAgICB0ZXh0PSdQYXVzZSBzdG9wcyBuZXcgd29yay4gQSB0YXNrIGFscmVhZHkgcnVubmluZyBpcyBhbGxvd2VkIHRvIGZpbmlzaC4nLFxuICAgICAgICBmb250PWZvbnRzWydzbWFsbCddLCBiZz1DT0xPUlNbJ3doaXRlJ10sIGZnPUNPTE9SU1snbXV0ZWQnXSwgd3JhcGxlbmd0aD03MjAsXG4gICAgICAgIGp1c3RpZnk9J2xlZnQnLCBhbmNob3I9J3cnLFxuICAgIClcbiAgICBzdGF0dXNfbm90ZV90ZXh0LnBhY2soZmlsbD0neCcsIHBhZHk9KDIsIDApKVxuXG4gICAgc3RhdHVzX2J1dHRvbnMgPSB0ay5GcmFtZShzdGF0dXNfdmlldywgYmc9Q09MT1JTWydwYXBlciddKVxuICAgIHN0YXR1c19idXR0b25zLnBhY2soZmlsbD0neCcsIHBhZHk9KDEyLCAwKSlcbiAgICBzdGF0dXNfcGF1c2UgPSBzdHlsZWRfYnV0dG9uKHN0YXR1c19idXR0b25zLCAnUGF1c2UnLCBsYW1iZGE6IE5vbmUsIHByaW1hcnk9VHJ1ZSlcbiAgICBzdGF0dXNfcmVzdW1lID0gc3R5bGVkX2J1dHRvbihzdGF0dXNfYnV0dG9ucywgJ1Jlc3VtZScsIGxhbWJkYTogTm9uZSwgcHJpbWFyeT1UcnVlKVxuICAgIGRlZiBlZGl0X3ByZWZlcmVuY2VzKCk6XG4gICAgICAgIHNhdmVkID0gaW52aXRhdGlvbl9wYXlsb2FkKClcbiAgICAgICAgaWYgbm90IHNhdmVkOlxuICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgIHdpbmRvdyA9IHRrLlRvcGxldmVsKHJvb3QpXG4gICAgICAgIHdpbmRvdy50aXRsZSgnQmFja2dyb3VuZCB3b3JrIHNldHRpbmdzJylcbiAgICAgICAgdmFsdWVzID0gd29ya2VyX3N0YXR1cyhjb25maWd1cmVkX29yaWdpbihzYXZlZC5nZXQoJ29yaWdpbicpLCBvcmlnaW4pLCBzYXZlZFsndG9rZW4nXSlbJ2V4ZWN1dGlvbl9wb2xpY3knXVxuICAgICAgICB2YXJpYWJsZXMgPSB7fVxuICAgICAgICBmb3Iga2V5LCBsYWJlbCBpbiBbKCdvd25lcl9tZW1vcnlfbGltaXRfbWInLCAnTWF4aW11bSBSQU0gKE1pQiknKSwgKCdvd25lcl9jcHVfbGltaXQnLCAnTWF4aW11bSBDUFUgY29yZXMnKV06XG4gICAgICAgICAgICB0ay5MYWJlbCh3aW5kb3csIHRleHQ9bGFiZWwpLnBhY2soYW5jaG9yPSd3JywgcGFkeD0xNilcbiAgICAgICAgICAgIHZhcmlhYmxlc1trZXldID0gdGsuU3RyaW5nVmFyKHZhbHVlPXN0cih2YWx1ZXNba2V5XSkpXG4gICAgICAgICAgICB0ay5FbnRyeSh3aW5kb3csIHRleHR2YXJpYWJsZT12YXJpYWJsZXNba2V5XSkucGFjayhmaWxsPSd4JywgcGFkeD0xNiwgcGFkeT00KVxuICAgICAgICBmb3Iga2V5LCBsYWJlbCBpbiBbKCdpZGxlX29ubHknLCAnT25seSB3aGVuIGlkbGUgZm9yIGZpdmUgbWludXRlcycpLCAoJ2FjX29ubHknLCAnT25seSBvbiBtYWlucyBwb3dlcicpXTpcbiAgICAgICAgICAgIHZhcmlhYmxlc1trZXldID0gdGsuQm9vbGVhblZhcih2YWx1ZT12YWx1ZXNba2V5XSlcbiAgICAgICAgICAgIHRrLkNoZWNrYnV0dG9uKHdpbmRvdywgdGV4dD1sYWJlbCwgdmFyaWFibGU9dmFyaWFibGVzW2tleV0pLnBhY2soYW5jaG9yPSd3JywgcGFkeD0xNilcbiAgICAgICAgZmVlZGJhY2sgPSB0ay5TdHJpbmdWYXIoKVxuICAgICAgICB0ay5MYWJlbCh3aW5kb3csIHRleHR2YXJpYWJsZT1mZWVkYmFjaywgd3JhcGxlbmd0aD0zMDApLnBhY2socGFkeD0xNiwgcGFkeT04KVxuICAgICAgICBkZWYgc2F2ZV9wcmVmZXJlbmNlcygpOlxuICAgICAgICAgICAgdHJ5OlxuICAgICAgICAgICAgICAgIGJvZHkgPSB7a2V5OiB2YWx1ZS5nZXQoKSBmb3Iga2V5LCB2YWx1ZSBpbiB2YXJpYWJsZXMuaXRlbXMoKX1cbiAgICAgICAgICAgICAgICBib2R5Wydvd25lcl9tZW1vcnlfbGltaXRfbWInXSA9IGludChib2R5Wydvd25lcl9tZW1vcnlfbGltaXRfbWInXSlcbiAgICAgICAgICAgICAgICBib2R5Wydvd25lcl9jcHVfbGltaXQnXSA9IGZsb2F0KGJvZHlbJ293bmVyX2NwdV9saW1pdCddKVxuICAgICAgICAgICAgICAgIHBvc3RfanNvbihjb25maWd1cmVkX29yaWdpbihzYXZlZC5nZXQoJ29yaWdpbicpLCBvcmlnaW4pLCAnL2NvbXB1dGVfZmxlZXQvcHJlZmVyZW5jZXMnLCBzYXZlZFsndG9rZW4nXSwgYm9keSlcbiAgICAgICAgICAgICAgICBmZWVkYmFjay5zZXQoJ1NhdmVkLiBSdW5uaW5nIHRhc2tzIGZpbmlzaCB3aXRoaW4gdGhlaXIgcHJldmlvdXMgbGltaXRzLicpXG4gICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uOlxuICAgICAgICAgICAgICAgIGZlZWRiYWNrLnNldCgnQ291bGQgbm90IHNhdmUuIENoZWNrIHRoZSBsaW1pdHMgYW5kIGNvbm5lY3Rpb24uJylcbiAgICAgICAgdGsuQnV0dG9uKHdpbmRvdywgdGV4dD0nU2F2ZScsIGNvbW1hbmQ9c2F2ZV9wcmVmZXJlbmNlcykucGFjayhwYWR5PTgpXG5cbiAgICBzdGF0dXNfc2V0dGluZ3MgPSBzdHlsZWRfYnV0dG9uKHN0YXR1c19idXR0b25zLCAnU2V0dGluZ3MnLCBlZGl0X3ByZWZlcmVuY2VzKVxuICAgIHN0YXR1c19zZXR0aW5ncy5wYWNrKHNpZGU9J2xlZnQnLCBwYWR4PSgxMCwgMCkpXG4gICAgc3RhdHVzX3F1aXQgPSBzdHlsZWRfYnV0dG9uKHN0YXR1c19idXR0b25zLCAnUXVpdCcsIHJvb3QuZGVzdHJveSlcbiAgICBzdGF0dXNfcXVpdC5wYWNrKHNpZGU9J2xlZnQnKVxuXG4gICAgZGVmIHJlZnJlc2hfY2hhcnRzKCk6XG4gICAgICAgIHVzZWRfc2hhcmUgPSBtZW1vcnlfaGlzdG9yeVstMV0gaWYgbWVtb3J5X2hpc3RvcnkgZWxzZSAwXG4gICAgICAgIGRyYXdfc2VyaWVzKG1lbW9yeV9jaGFydCwgbGlzdChtZW1vcnlfaGlzdG9yeSkgb3IgW3VzZWRfc2hhcmUsIHVzZWRfc2hhcmVdLFxuICAgICAgICAgICAgICAgICAgICBDT0xPUlNbJ2FjY2VudCddLCAnI2Y0ZTdlNCcsIGZsb29yPTAsIGNlaWxpbmc9MSlcbiAgICAgICAgcGVhayA9IG1heChsaXN0KHRhc2tzX2hpc3RvcnkpIG9yIFswXSlcbiAgICAgICAgZHJhd19zZXJpZXModGFza3NfY2hhcnQsIGxpc3QodGFza3NfaGlzdG9yeSkgb3IgWzAsIDBdLFxuICAgICAgICAgICAgICAgICAgICBDT0xPUlNbJ29rJ10sIENPTE9SU1snb2tfc29mdCddLCBmbG9vcj0wLCBjZWlsaW5nPW1heChwZWFrLCAxKSlcblxuICAgIGRlZiByZWNvcmRfc2FtcGxlKHBheWxvYWQpOlxuICAgICAgICBhdmFpbGFibGUsIHRvdGFsID0gaG9zdF9tZW1vcnlfc25hcHNob3QoKVxuICAgICAgICBpZiBhdmFpbGFibGUgYW5kIHRvdGFsOlxuICAgICAgICAgICAgbWVtb3J5X2hpc3RvcnkuYXBwZW5kKG1heCgwLjAsIG1pbigxLjAsIDEuMCAtIChhdmFpbGFibGUgLyB0b3RhbCkpKSlcbiAgICAgICAgICAgIG1lbW9yeV92YWx1ZS5zZXQoZm9ybWF0X2J5dGVzKGF2YWlsYWJsZSkgKyAnIGZyZWUnKVxuICAgICAgICBlbGlmIGF2YWlsYWJsZTpcbiAgICAgICAgICAgIG1lbW9yeV92YWx1ZS5zZXQoZm9ybWF0X2J5dGVzKGF2YWlsYWJsZSkgKyAnIGZyZWUnKVxuICAgICAgICBpZiBwYXlsb2FkIGFuZCAndGFza3NfY29tcGxldGVkJyBpbiBwYXlsb2FkOlxuICAgICAgICAgICAgdGFza3NfdmFsdWUuc2V0KHN0cihwYXlsb2FkLmdldCgndGFza3NfY29tcGxldGVkJykgb3IgMCkpXG4gICAgICAgIHRyeTpcbiAgICAgICAgICAgIHRhc2tzX2hpc3RvcnkuYXBwZW5kKGludCh0YXNrc192YWx1ZS5nZXQoKSkpXG4gICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOlxuICAgICAgICAgICAgdGFza3NfaGlzdG9yeS5hcHBlbmQoMClcbiAgICAgICAgcmVmcmVzaF9jaGFydHMoKVxuXG4gICAgZGVmIHBhaW50X3NldHVwX3N0ZXAoaW5kZXgsIHN0YXRlKTpcbiAgICAgICAgcm93ID0gc2V0dXBfcm93c1tpbmRleF1cbiAgICAgICAgaWYgc3RhdGUgPT0gJ2RvbmUnOlxuICAgICAgICAgICAgcm93WydiYWRnZSddLml0ZW1jb25maWd1cmUocm93WydjaXJjbGUnXSwgZmlsbD1DT0xPUlNbJ29rJ10sIG91dGxpbmU9Q09MT1JTWydvayddKVxuICAgICAgICAgICAgcm93WydiYWRnZSddLml0ZW1jb25maWd1cmUocm93WydtYXJrJ10sIHRleHQ9J+KckycsIGZpbGw9Q09MT1JTWyd3aGl0ZSddKVxuICAgICAgICAgICAgcm93Wyd0aXRsZSddLmNvbmZpZ3VyZShmZz1DT0xPUlNbJ2luayddKVxuICAgICAgICAgICAgcm93WydkZXRhaWwnXS5jb25maWd1cmUoZmc9Q09MT1JTWydtdXRlZCddKVxuICAgICAgICBlbGlmIHN0YXRlID09ICdjdXJyZW50JzpcbiAgICAgICAgICAgIHJvd1snYmFkZ2UnXS5pdGVtY29uZmlndXJlKHJvd1snY2lyY2xlJ10sIGZpbGw9Q09MT1JTWydhY2NlbnQnXSwgb3V0bGluZT1DT0xPUlNbJ2FjY2VudCddKVxuICAgICAgICAgICAgcm93WydiYWRnZSddLml0ZW1jb25maWd1cmUocm93WydtYXJrJ10sIHRleHQ9c3RyKGluZGV4ICsgMSksIGZpbGw9Q09MT1JTWyd3aGl0ZSddKVxuICAgICAgICAgICAgcm93Wyd0aXRsZSddLmNvbmZpZ3VyZShmZz1DT0xPUlNbJ2luayddKVxuICAgICAgICAgICAgcm93WydkZXRhaWwnXS5jb25maWd1cmUoZmc9Q09MT1JTWydpbmsnXSlcbiAgICAgICAgZWxpZiBzdGF0ZSA9PSAnZXJyb3InOlxuICAgICAgICAgICAgcm93WydiYWRnZSddLml0ZW1jb25maWd1cmUocm93WydjaXJjbGUnXSwgZmlsbD1DT0xPUlNbJ3dhcm4nXSwgb3V0bGluZT1DT0xPUlNbJ3dhcm4nXSlcbiAgICAgICAgICAgIHJvd1snYmFkZ2UnXS5pdGVtY29uZmlndXJlKHJvd1snbWFyayddLCB0ZXh0PSchJywgZmlsbD1DT0xPUlNbJ3doaXRlJ10pXG4gICAgICAgICAgICByb3dbJ3RpdGxlJ10uY29uZmlndXJlKGZnPUNPTE9SU1snd2FybiddKVxuICAgICAgICAgICAgcm93WydkZXRhaWwnXS5jb25maWd1cmUoZmc9Q09MT1JTWyd3YXJuJ10pXG4gICAgICAgIGVsc2U6XG4gICAgICAgICAgICByb3dbJ2JhZGdlJ10uaXRlbWNvbmZpZ3VyZShyb3dbJ2NpcmNsZSddLCBmaWxsPUNPTE9SU1snY2FyZCddLCBvdXRsaW5lPUNPTE9SU1snbGluZSddKVxuICAgICAgICAgICAgcm93WydiYWRnZSddLml0ZW1jb25maWd1cmUocm93WydtYXJrJ10sIHRleHQ9c3RyKGluZGV4ICsgMSksIGZpbGw9Q09MT1JTWydtdXRlZCddKVxuICAgICAgICAgICAgcm93Wyd0aXRsZSddLmNvbmZpZ3VyZShmZz1DT0xPUlNbJ211dGVkJ10pXG4gICAgICAgICAgICByb3dbJ2RldGFpbCddLmNvbmZpZ3VyZShmZz1DT0xPUlNbJ211dGVkJ10pXG5cbiAgICBkZWYgaGlkZV9pbnRybygpOlxuICAgICAgICBoZXJvLnBhY2tfZm9yZ2V0KClcbiAgICAgICAgc3RlcHMucGFja19mb3JnZXQoKVxuICAgICAgICBwcml2YWN5LnBhY2tfZm9yZ2V0KClcbiAgICAgICAgZm9ybV9jYXJkLnBhY2tfZm9yZ2V0KClcbiAgICAgICAgZGV0YWlsc19jYXJkLnBhY2tfZm9yZ2V0KClcblxuICAgIGRlZiBzaG93X3NldHVwX3ZpZXcoKTpcbiAgICAgICAgaGlkZV9pbnRybygpXG4gICAgICAgIHN0YXR1c192aWV3LnBhY2tfZm9yZ2V0KClcbiAgICAgICAgaGVhZGVyX3N1YnRpdGxlLmNvbmZpZ3VyZSh0ZXh0PSdXb3JrZXIgc2V0dXAnKVxuICAgICAgICByb290LnRpdGxlKCdEb3JpYW4gR3JheSBXb3JrZXIgU2V0dXAnKVxuICAgICAgICBzZXR1cF92aWV3LnBhY2soZmlsbD0nYm90aCcsIGV4cGFuZD1UcnVlKVxuXG4gICAgZGVmIHNob3dfc3RhdHVzX3ZpZXcoKTpcbiAgICAgICAgaGlkZV9pbnRybygpXG4gICAgICAgIHNldHVwX3ZpZXcucGFja19mb3JnZXQoKVxuICAgICAgICBoZWFkZXJfc3VidGl0bGUuY29uZmlndXJlKHRleHQ9J1RoaXMgY29tcHV0ZXInKVxuICAgICAgICByb290LnRpdGxlKCdEb3JpYW4gR3JheSBXb3JrZXInKVxuICAgICAgICBzdGF0dXNfdmlldy5wYWNrKGZpbGw9J2JvdGgnLCBleHBhbmQ9VHJ1ZSlcblxuICAgIGN1cnJlbnRfc2V0dXBfc3RlcCA9IHsnaW5kZXgnOiAwfVxuXG4gICAgZGVmIGFkdmFuY2Vfc2V0dXAoaW5kZXgsIGRldGFpbD1Ob25lKTpcbiAgICAgICAgaW5kZXggPSBtYXgoMCwgbWluKGluZGV4LCBsZW4oc2V0dXBfcm93cykgLSAxKSlcbiAgICAgICAgZm9yIHByaW9yIGluIHJhbmdlKGluZGV4KTpcbiAgICAgICAgICAgIHBhaW50X3NldHVwX3N0ZXAocHJpb3IsICdkb25lJylcbiAgICAgICAgcGFpbnRfc2V0dXBfc3RlcChpbmRleCwgJ2N1cnJlbnQnKVxuICAgICAgICBmb3IgbGF0ZXIgaW4gcmFuZ2UoaW5kZXggKyAxLCBsZW4oc2V0dXBfcm93cykpOlxuICAgICAgICAgICAgcGFpbnRfc2V0dXBfc3RlcChsYXRlciwgJ3BlbmRpbmcnKVxuICAgICAgICBpZiBkZXRhaWw6XG4gICAgICAgICAgICBzZXR1cF9yb3dzW2luZGV4XVsnZGV0YWlsJ10uY29uZmlndXJlKHRleHQ9ZGV0YWlsKVxuICAgICAgICAgICAgYWN0aXZpdHlfdGV4dC5zZXQoZGV0YWlsKVxuICAgICAgICBjdXJyZW50X3NldHVwX3N0ZXBbJ2luZGV4J10gPSBpbmRleFxuXG4gICAgZGVmIGhhbmRsZV9pbnN0YWxsX2xpbmUobGluZSk6XG4gICAgICAgIGhpbnQgPSBmcmllbmRseV9pbnN0YWxsX2xpbmUobGluZSlcbiAgICAgICAgaWYgbGluZS5sc3RyaXAoKS5zdGFydHN3aXRoKCckICcpIG9yIChoaW50IGFuZCBoaW50LmdldCgncmF3JywgJycpLmxzdHJpcCgpLnN0YXJ0c3dpdGgoJyQgJykpOlxuICAgICAgICAgICAgYXBwZW5kX2NvbnNvbGUobGluZSBpZiBsaW5lLmxzdHJpcCgpLnN0YXJ0c3dpdGgoJyQgJykgZWxzZSBoaW50WydyYXcnXSlcbiAgICAgICAgaWYgbm90IGhpbnQ6XG4gICAgICAgICAgICBpZiBsaW5lLmxzdHJpcCgpLnN0YXJ0c3dpdGgoJyQgJyk6XG4gICAgICAgICAgICAgICAgYWN0aXZpdHlfdGV4dC5zZXQoJ1J1bm5pbmcgJyArIGxpbmUubHN0cmlwKClbMjpdKVxuICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgIGlmIGhpbnQuZ2V0KCdlcnJvcicpOlxuICAgICAgICAgICAgYWN0aXZpdHlfdGV4dC5zZXQoaGludFsnZGV0YWlsJ10pXG4gICAgICAgICAgICBwYWludF9zZXR1cF9zdGVwKGN1cnJlbnRfc2V0dXBfc3RlcFsnaW5kZXgnXSwgJ2Vycm9yJylcbiAgICAgICAgICAgIHN0YXR1cy5zZXQoaGludFsnZGV0YWlsJ10pXG4gICAgICAgICAgICBwYWludF9iYW5uZXIoJ2Vycm9yJylcbiAgICAgICAgICAgIHJldHVyblxuICAgICAgICBpZiBoaW50WydzdGVwJ10gaXMgbm90IE5vbmU6XG4gICAgICAgICAgICBhZHZhbmNlX3NldHVwKGhpbnRbJ3N0ZXAnXSwgaGludFsnZGV0YWlsJ10pXG4gICAgICAgICAgICBzdGF0dXMuc2V0KGhpbnRbJ3RpdGxlJ10gb3IgaGludFsnZGV0YWlsJ10pXG4gICAgICAgIGVsaWYgaGludFsnZGV0YWlsJ10gYW5kIG5vdCBsaW5lLmxzdHJpcCgpLnN0YXJ0c3dpdGgoJyQgJyk6XG4gICAgICAgICAgICBhY3Rpdml0eV90ZXh0LnNldChoaW50WydkZXRhaWwnXSlcblxuICAgIGRlZiBzaG93X2Vucm9sbG1lbnRfY29udHJvbHMoKTpcbiAgICAgICAgc2VuZF9idXR0b24ucGFjayhzaWRlPSdsZWZ0JylcbiAgICAgICAgcGF1c2VfYnV0dG9uLnBhY2tfZm9yZ2V0KClcbiAgICAgICAgcmVzdW1lX2J1dHRvbi5wYWNrX2ZvcmdldCgpXG5cbiAgICBkZWYgc2hvd19ydW5uaW5nX2NvbnRyb2xzKCk6XG4gICAgICAgIHNlbmRfYnV0dG9uLnBhY2tfZm9yZ2V0KClcbiAgICAgICAgcGF1c2VfYnV0dG9uLnBhY2soc2lkZT0nbGVmdCcpXG4gICAgICAgIHJlc3VtZV9idXR0b24ucGFjayhzaWRlPSdsZWZ0JywgcGFkeD0oMTAsIDApKVxuXG4gICAgZGVmIHJlZnJlc2hfcHJldmlldygpOlxuICAgICAgICBpZiBzbmFwc2hvdFsnZXJyb3InXTpcbiAgICAgICAgICAgIHN0YXR1cy5zZXQoc25hcHNob3RbJ2Vycm9yJ10pXG4gICAgICAgICAgICBwYWludF9iYW5uZXIoJ2Vycm9yJylcbiAgICAgICAgICAgIHJldHVyblxuICAgICAgICBpZiBub3Qgc25hcHNob3RbJ3ZhbHVlJ106XG4gICAgICAgICAgICByb290LmFmdGVyKDI1MCwgcmVmcmVzaF9wcmV2aWV3KVxuICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgIHN0YXR1cy5zZXQoJ1JlYWR5IHdoZW4geW91IGFyZS4gQWRkIHlvdXIgbmFtZSwgZW1haWwsIGFuZCBwaG9uZSwgdGhlbiBzZW5kIGEgcmVxdWVzdC4nKVxuICAgICAgICBwYWludF9iYW5uZXIoJ3JlYWR5JylcbiAgICAgICAgYWN0aW9uLnNldCgncmVhZHknKVxuICAgICAgICBzZW5kX2J1dHRvbi5jb25maWd1cmUoc3RhdGU9J25vcm1hbCcpXG5cbiAgICBkZWYgc2VuZF9yZXF1ZXN0KCk6XG4gICAgICAgIGlmIGFjdGlvbi5nZXQoKSAhPSAncmVhZHknOlxuICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgIGRpc3BsYXlfbmFtZSA9IG5hbWVfZW50cnkuZ2V0KCkuc3RyaXAoKVxuICAgICAgICBlbWFpbCA9IGVtYWlsX2VudHJ5LmdldCgpLnN0cmlwKClcbiAgICAgICAgcGhvbmUgPSBwaG9uZV9lbnRyeS5nZXQoKS5zdHJpcCgpXG4gICAgICAgIGlmIG5vdCBkaXNwbGF5X25hbWU6XG4gICAgICAgICAgICBzdGF0dXMuc2V0KCdBZGQgeW91ciBuYW1lIGJlZm9yZSBzZW5kaW5nIHRoZSByZXF1ZXN0LicpXG4gICAgICAgICAgICBwYWludF9iYW5uZXIoJ2Vycm9yJylcbiAgICAgICAgICAgIG5hbWVfZW50cnkuZm9jdXNfc2V0KClcbiAgICAgICAgICAgIHJldHVyblxuICAgICAgICBpZiBub3QgZW1haWw6XG4gICAgICAgICAgICBzdGF0dXMuc2V0KCdBZGQgeW91ciBlbWFpbCBiZWZvcmUgc2VuZGluZyB0aGUgcmVxdWVzdC4nKVxuICAgICAgICAgICAgcGFpbnRfYmFubmVyKCdlcnJvcicpXG4gICAgICAgICAgICBlbWFpbF9lbnRyeS5mb2N1c19zZXQoKVxuICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgIGlmIG5vdCBwaG9uZTpcbiAgICAgICAgICAgIHN0YXR1cy5zZXQoJ0FkZCB5b3VyIHBob25lIG51bWJlciBiZWZvcmUgc2VuZGluZyB0aGUgcmVxdWVzdC4nKVxuICAgICAgICAgICAgcGFpbnRfYmFubmVyKCdlcnJvcicpXG4gICAgICAgICAgICBwaG9uZV9lbnRyeS5mb2N1c19zZXQoKVxuICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgIGFjdGlvbi5zZXQoJ3N1Ym1pdHRpbmcnKVxuICAgICAgICBzdGF0dXMuc2V0KCdTZW5kaW5nIHlvdXIgcmVxdWVzdOKApicpXG4gICAgICAgIHBhaW50X2Jhbm5lcignd2FpdCcpXG4gICAgICAgIHNlbmRfYnV0dG9uLmNvbmZpZ3VyZShzdGF0ZT0nZGlzYWJsZWQnKVxuXG4gICAgICAgIGRlZiBzdWJtaXQoKTpcbiAgICAgICAgICAgIHRyeTpcbiAgICAgICAgICAgICAgICBzdGF0ZSA9IGxvYWRfc3RhdGUoKVxuICAgICAgICAgICAgICAgIHN1Ym1pdF9lbnJvbGxtZW50KG9yaWdpbiwgc3RhdGUsIHNuYXBzaG90Wyd2YWx1ZSddLCBkaXNwbGF5X25hbWUsIGVtYWlsLCBwaG9uZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub3RlX2VudHJ5LmdldCgpLnN0cmlwKCkpXG4gICAgICAgICAgICAgICAgcm9vdC5hZnRlcigwLCBsYW1iZGE6IGJlZ2luX3BvbGwoc3RhdGUpKVxuICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlcnJvcjpcbiAgICAgICAgICAgICAgICBkZWYgZmFpbChtZXNzYWdlPXN0cihlcnJvcikpOlxuICAgICAgICAgICAgICAgICAgICBzdGF0dXMuc2V0KG1lc3NhZ2UpXG4gICAgICAgICAgICAgICAgICAgIHBhaW50X2Jhbm5lcignZXJyb3InKVxuICAgICAgICAgICAgICAgICAgICBhY3Rpb24uc2V0KCdyZWFkeScpXG4gICAgICAgICAgICAgICAgICAgIHNlbmRfYnV0dG9uLmNvbmZpZ3VyZShzdGF0ZT0nbm9ybWFsJylcbiAgICAgICAgICAgICAgICByb290LmFmdGVyKDAsIGZhaWwpXG5cbiAgICAgICAgdGhyZWFkaW5nLlRocmVhZCh0YXJnZXQ9c3VibWl0LCBkYWVtb249VHJ1ZSkuc3RhcnQoKVxuXG4gICAgc2VuZF9idXR0b24uY29uZmlndXJlKGNvbW1hbmQ9c2VuZF9yZXF1ZXN0LCBzdGF0ZT0nZGlzYWJsZWQnKVxuXG4gICAgZGVmIGJlZ2luX3BvbGwoc3RhdGUpOlxuICAgICAgICBzdGF0dXMuc2V0KCdSZXF1ZXN0IHNlbnQuIFlvdSBjYW4gbGVhdmUgdGhpcyB3aW5kb3cgb3BlbiB3aGlsZSB3ZSByZXZpZXcgaXQuJylcbiAgICAgICAgcGFpbnRfYmFubmVyKCd3YWl0JylcbiAgICAgICAgYWN0aW9uLnNldCgncG9sbGluZycpXG4gICAgICAgIG5hbWVfZW50cnkuY29uZmlndXJlKHN0YXRlPSdkaXNhYmxlZCcpXG4gICAgICAgIGVtYWlsX2VudHJ5LmNvbmZpZ3VyZShzdGF0ZT0nZGlzYWJsZWQnKVxuICAgICAgICBwaG9uZV9lbnRyeS5jb25maWd1cmUoc3RhdGU9J2Rpc2FibGVkJylcbiAgICAgICAgbm90ZV9lbnRyeS5jb25maWd1cmUoc3RhdGU9J2Rpc2FibGVkJylcbiAgICAgICAgc2VuZF9idXR0b24uY29uZmlndXJlKHN0YXRlPSdkaXNhYmxlZCcpXG5cbiAgICAgICAgZGVmIHBvbGxfbG9vcCgpOlxuICAgICAgICAgICAgd2hpbGUgYWN0aW9uLmdldCgpID09ICdwb2xsaW5nJzpcbiAgICAgICAgICAgICAgICB0cnk6XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHBvbGxfZW5yb2xsbWVudChvcmlnaW4sIHN0YXRlKVxuICAgICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZXJyb3I6XG4gICAgICAgICAgICAgICAgICAgIHJvb3QuYWZ0ZXIoMCwgbGFtYmRhOiAoc3RhdHVzLnNldChzdHIoZXJyb3IpKSwgcGFpbnRfYmFubmVyKCdlcnJvcicpKSlcbiAgICAgICAgICAgICAgICAgICAgdGltZS5zbGVlcCgzKVxuICAgICAgICAgICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgICAgICAgIGlmIHJlc3VsdC5nZXQoJ3N0YXR1cycpID09ICdwZW5kaW5nJzpcbiAgICAgICAgICAgICAgICAgICAgdGltZS5zbGVlcCgzKVxuICAgICAgICAgICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgICAgICAgIGlmIHJlc3VsdC5nZXQoJ3N0YXR1cycpID09ICdhcHByb3ZlZCc6XG4gICAgICAgICAgICAgICAgICAgIGludml0YXRpb25fcGF0aCgpLndyaXRlX3RleHQoanNvbi5kdW1wcyh7XG4gICAgICAgICAgICAgICAgICAgICAgICAnb3JpZ2luJzogb3JpZ2luLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3Rva2VuJzogcmVzdWx0Wyd0b2tlbiddLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3dvcmtlcl9pZCc6IHJlc3VsdFsnd29ya2VyX2lkJ10sXG4gICAgICAgICAgICAgICAgICAgIH0pKVxuICAgICAgICAgICAgICAgICAgICByb290LmFmdGVyKDAsIGxhbWJkYTogYmVnaW5faW5zdGFsbChyZXN1bHQpKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICAgICAgICByb290LmFmdGVyKDAsIGxhbWJkYTogKHN0YXR1cy5zZXQoJ1RoaXMgcmVxdWVzdCB3YXMgZGVuaWVkIG9yIGV4cGlyZWQuJyksIHBhaW50X2Jhbm5lcignZXJyb3InKSkpXG4gICAgICAgICAgICAgICAgcmV0dXJuXG5cbiAgICAgICAgdGhyZWFkaW5nLlRocmVhZCh0YXJnZXQ9cG9sbF9sb29wLCBkYWVtb249VHJ1ZSkuc3RhcnQoKVxuXG4gICAgZGVmIGJlZ2luX2luc3RhbGwocmVzdWx0KTpcbiAgICAgICAgc3RhdHVzLnNldCgnQXBwcm92ZWQuIFNldHRpbmcgdGhpcyBjb21wdXRlciB1cCBub3cg4oCUIHlvdSBjYW4gbGVhdmUgdGhpcyB3aW5kb3cgb3Blbi4nKVxuICAgICAgICBwYWludF9iYW5uZXIoJ3dhaXQnKVxuICAgICAgICBhY3Rpb24uc2V0KCdpbnN0YWxsaW5nJylcbiAgICAgICAgc2hvd19zZXR1cF92aWV3KClcbiAgICAgICAgYWR2YW5jZV9zZXR1cCgwLCAnRG9yaWFuIEdyYXkgYWNjZXB0ZWQgdGhpcyBjb21wdXRlci4gU2V0dXAgaXMgc3RhcnRpbmcuJylcbiAgICAgICAgYXBwZW5kX2NvbnNvbGUoJyMgJyArIHBsYW5fYmx1cmIpXG4gICAgICAgIGZvciBsaW5lIGluIHBsYW5fZGV0YWlscy5zcGxpdGxpbmVzKCk6XG4gICAgICAgICAgICBhcHBlbmRfY29uc29sZSgnIyAnICsgbGluZSlcblxuICAgICAgICBkZWYgaW5zdGFsbCgpOlxuICAgICAgICAgICAgdHJ5OlxuICAgICAgICAgICAgICAgIHJ1bl9pbnN0YWxsZXIoc2NyaXB0X3BhdGgsIG9uX2xpbmU9bGFtYmRhIGxpbmU6IHJvb3QuYWZ0ZXIoMCwgbGFtYmRhIHRleHQ9bGluZTogaGFuZGxlX2luc3RhbGxfbGluZSh0ZXh0KSkpXG4gICAgICAgICAgICAgICAgcm9vdC5hZnRlcigwLCBsYW1iZGE6IGJlZ2luX3N0YXR1cyhyZXN1bHQpKVxuICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlcnJvcjpcbiAgICAgICAgICAgICAgICBkZWYgZmFpbChtZXNzYWdlPXN0cihlcnJvcikpOlxuICAgICAgICAgICAgICAgICAgICBwYWludF9zZXR1cF9zdGVwKGN1cnJlbnRfc2V0dXBfc3RlcFsnaW5kZXgnXSwgJ2Vycm9yJylcbiAgICAgICAgICAgICAgICAgICAgYWN0aXZpdHlfdGV4dC5zZXQobWVzc2FnZSlcbiAgICAgICAgICAgICAgICAgICAgc3RhdHVzLnNldChtZXNzYWdlKVxuICAgICAgICAgICAgICAgICAgICBwYWludF9iYW5uZXIoJ2Vycm9yJylcbiAgICAgICAgICAgICAgICByb290LmFmdGVyKDAsIGZhaWwpXG5cbiAgICAgICAgdGhyZWFkaW5nLlRocmVhZCh0YXJnZXQ9aW5zdGFsbCwgZGFlbW9uPVRydWUpLnN0YXJ0KClcblxuICAgIGRlZiBiZWdpbl9zdGF0dXMocmVzdWx0KTpcbiAgICAgICAgYWN0aW9uLnNldCgncnVubmluZycpXG4gICAgICAgIHNob3dfc3RhdHVzX3ZpZXcoKVxuICAgICAgICB0b2tlbiA9IHJlc3VsdFsndG9rZW4nXVxuICAgICAgICBvcmlnaW5fdmFsdWUgPSBvcmlnaW5cbiAgICAgICAgYXBwbHlfc3RhdHVzKHsnc3RhdGUnOiAnb2ZmbGluZSd9KVxuXG4gICAgICAgIGRlZiBwb2xsX3N0YXR1cygpOlxuICAgICAgICAgICAgd2hpbGUgYWN0aW9uLmdldCgpID09ICdydW5uaW5nJzpcbiAgICAgICAgICAgICAgICB0cnk6XG4gICAgICAgICAgICAgICAgICAgIHBheWxvYWQgPSB3b3JrZXJfc3RhdHVzKG9yaWdpbl92YWx1ZSwgdG9rZW4pXG4gICAgICAgICAgICAgICAgICAgIHJvb3QuYWZ0ZXIoMCwgbGFtYmRhIGRhdGE9cGF5bG9hZDogYXBwbHlfc3RhdHVzKGRhdGEpKVxuICAgICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZXJyb3I6XG4gICAgICAgICAgICAgICAgICAgIHJvb3QuYWZ0ZXIoMCwgbGFtYmRhIG1lc3NhZ2U9c3RyKGVycm9yKTogYXBwbHlfc3RhdHVzKE5vbmUsIGVycm9yPW1lc3NhZ2UpKVxuICAgICAgICAgICAgICAgIHRpbWUuc2xlZXAoMilcblxuICAgICAgICB0aHJlYWRpbmcuVGhyZWFkKHRhcmdldD1wb2xsX3N0YXR1cywgZGFlbW9uPVRydWUpLnN0YXJ0KClcblxuICAgIGRlZiBhcHBseV9zdGF0dXMocGF5bG9hZCwgZXJyb3I9Tm9uZSk6XG4gICAgICAgIHJlY29yZF9zYW1wbGUocGF5bG9hZClcbiAgICAgICAgbG9jYWxfcnVubmluZyA9IGhvc3Rfd29ya2VyX3J1bm5pbmcoKVxuICAgICAgICBpZiBlcnJvcjpcbiAgICAgICAgICAgIGlmIGxvY2FsX3J1bm5pbmc6XG4gICAgICAgICAgICAgICAgc3RhdGVfdmFsdWUuc2V0KCdSdW5uaW5nJylcbiAgICAgICAgICAgICAgICBhY3Rpdml0eV92YWx1ZS5zZXQoJ0NoZWNraW5nIGluJylcbiAgICAgICAgICAgICAgICBzdGF0dXMuc2V0KCdUaGUgd29ya2VyIGlzIHJ1bm5pbmcgb24gdGhpcyBjb21wdXRlci4gU3RhdHVzIGZyb20gRG9yaWFuIEdyYXkgY291bGQgbm90IGJlIHJlZnJlc2hlZC4nKVxuICAgICAgICAgICAgICAgIHBhaW50X2Jhbm5lcignd2FpdCcpXG4gICAgICAgICAgICAgICAgc2hvd19wYXVzZV9jb250cm9scyhGYWxzZSlcbiAgICAgICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICAgIHN0YXRlX3ZhbHVlLnNldCgnVW5yZWFjaGFibGUnKVxuICAgICAgICAgICAgYWN0aXZpdHlfdmFsdWUuc2V0KCdDb3VsZCBub3QgcmVmcmVzaCcpXG4gICAgICAgICAgICBzdGF0dXMuc2V0KGVycm9yKVxuICAgICAgICAgICAgcGFpbnRfYmFubmVyKCdlcnJvcicpXG4gICAgICAgICAgICByZXR1cm5cbiAgICAgICAgcGF5bG9hZCA9IHBheWxvYWQgb3Ige31cbiAgICAgICAgc3RhdGVfbmFtZSA9IGZyaWVuZGx5X3dvcmtlcl9zdGF0ZShwYXlsb2FkKVxuICAgICAgICBpZiBzdGF0ZV9uYW1lID09ICdvZmZsaW5lJyBhbmQgbG9jYWxfcnVubmluZzpcbiAgICAgICAgICAgIHN0YXRlX3ZhbHVlLnNldCgnUnVubmluZycpXG4gICAgICAgICAgICBhY3Rpdml0eV92YWx1ZS5zZXQoJ0NoZWNraW5nIGluJylcbiAgICAgICAgICAgIHN0YXR1cy5zZXQoJ1RoZSB3b3JrZXIgaXMgcnVubmluZyBvbiB0aGlzIGNvbXB1dGVyIGFuZCBjaGVja2luZyBpbiB3aXRoIERvcmlhbiBHcmF5LicpXG4gICAgICAgICAgICBwYWludF9iYW5uZXIoJ3dhaXQnKVxuICAgICAgICAgICAgc2hvd19wYXVzZV9jb250cm9scyhib29sKHBheWxvYWQuZ2V0KCdkcmFpbmluZycpKSlcbiAgICAgICAgICAgIHJldHVyblxuICAgICAgICBzdGF0ZV92YWx1ZS5zZXQoV09SS0VSX1NUQVRFX0NPUFkuZ2V0KHN0YXRlX25hbWUsIHN0YXRlX25hbWUucmVwbGFjZSgnXycsICcgJykpKVxuICAgICAgICBhY3Rpdml0eV92YWx1ZS5zZXQoY3VycmVudF93b3JrX2NvcHkocGF5bG9hZCkpXG4gICAgICAgIGRyYWluaW5nID0gYm9vbChwYXlsb2FkLmdldCgnZHJhaW5pbmcnKSBvciBzdGF0ZV9uYW1lID09ICdwYXVzZWQnKVxuICAgICAgICBzaG93X3BhdXNlX2NvbnRyb2xzKGRyYWluaW5nKVxuICAgICAgICBpZiBkcmFpbmluZzpcbiAgICAgICAgICAgIHN0YXR1cy5zZXQoJ1RoaXMgY29tcHV0ZXIgaXMgcGF1c2VkLiBJdCB3aWxsIGZpbmlzaCBhbnkgY3VycmVudCB0YXNrLCB0aGVuIHN0b3AgdGFraW5nIG5ldyB3b3JrLicpXG4gICAgICAgICAgICBwYWludF9iYW5uZXIoJ3JlYWR5JylcbiAgICAgICAgZWxpZiBwYXlsb2FkLmdldCgnY3VycmVudF90YXNrJykgb3Igc3RhdGVfbmFtZSA9PSAnYnVzeSc6XG4gICAgICAgICAgICBzdGF0dXMuc2V0KCdUaGlzIGNvbXB1dGVyIGlzIHdvcmtpbmcgb24gYSB0YXNrLicpXG4gICAgICAgICAgICBwYWludF9iYW5uZXIoJ3dhaXQnKVxuICAgICAgICBlbGlmIHN0YXRlX25hbWUgPT0gJ3JlYWR5JzpcbiAgICAgICAgICAgIHN0YXR1cy5zZXQoJ1RoaXMgY29tcHV0ZXIgaXMgY29ubmVjdGVkIGFuZCB3YWl0aW5nIGZvciB3b3JrLicpXG4gICAgICAgICAgICBwYWludF9iYW5uZXIoJ3dhaXQnKVxuICAgICAgICBlbGlmIHN0YXRlX25hbWUgPT0gJ29mZmxpbmUnOlxuICAgICAgICAgICAgc3RhdHVzLnNldCgnVGhlIHdvcmtlciBpcyBub3QgY29ubmVjdGVkIHlldC4gSXQgd2lsbCBrZWVwIHRyeWluZyBpbiB0aGUgYmFja2dyb3VuZC4nKVxuICAgICAgICAgICAgcGFpbnRfYmFubmVyKCdlcnJvcicpXG4gICAgICAgIGVsc2U6XG4gICAgICAgICAgICBzdGF0dXMuc2V0KCdUaGlzIGNvbXB1dGVyIGlzICcgKyBzdGF0ZV9uYW1lLnJlcGxhY2UoJ18nLCAnICcpICsgJy4nKVxuICAgICAgICAgICAgcGFpbnRfYmFubmVyKCd3YWl0JylcblxuICAgIGRlZiBzaG93X3BhdXNlX2NvbnRyb2xzKGRyYWluaW5nKTpcbiAgICAgICAgc3RhdHVzX3BhdXNlLnBhY2tfZm9yZ2V0KClcbiAgICAgICAgc3RhdHVzX3Jlc3VtZS5wYWNrX2ZvcmdldCgpXG4gICAgICAgIHN0YXR1c19xdWl0LnBhY2tfZm9yZ2V0KClcbiAgICAgICAgaWYgZHJhaW5pbmc6XG4gICAgICAgICAgICBzdGF0dXNfcmVzdW1lLnBhY2soc2lkZT0nbGVmdCcpXG4gICAgICAgIGVsc2U6XG4gICAgICAgICAgICBzdGF0dXNfcGF1c2UucGFjayhzaWRlPSdsZWZ0JylcbiAgICAgICAgc3RhdHVzX3F1aXQucGFjayhzaWRlPSdsZWZ0JywgcGFkeD0oMTAsIDApKVxuXG4gICAgZGVmIGludml0YXRpb25fY3JlZGVudGlhbHMoKTpcbiAgICAgICAgc2F2ZWQgPSBqc29uLmxvYWRzKGludml0YXRpb25fcGF0aCgpLnJlYWRfdGV4dCgpKVxuICAgICAgICByZXR1cm4gb3JpZ2luIG9yIHNhdmVkLmdldCgnb3JpZ2luJyksIHNhdmVkWyd0b2tlbiddXG5cbiAgICBkZWYgcmVxdWVzdF9wYXVzZShwYXVzZSk6XG4gICAgICAgIHN0YXR1c19wYXVzZS5jb25maWd1cmUoc3RhdGU9J2Rpc2FibGVkJylcbiAgICAgICAgc3RhdHVzX3Jlc3VtZS5jb25maWd1cmUoc3RhdGU9J2Rpc2FibGVkJylcblxuICAgICAgICBkZWYgd29yaygpOlxuICAgICAgICAgICAgdHJ5OlxuICAgICAgICAgICAgICAgIG9yaWdpbl92YWx1ZSwgdG9rZW4gPSBpbnZpdGF0aW9uX2NyZWRlbnRpYWxzKClcbiAgICAgICAgICAgICAgICBwYXRoID0gJy9jb21wdXRlX2ZsZWV0L2RyYWluJyBpZiBwYXVzZSBlbHNlICcvY29tcHV0ZV9mbGVldC9yZXN1bWUnXG4gICAgICAgICAgICAgICAgcG9zdF9qc29uKG9yaWdpbl92YWx1ZSwgcGF0aCwgdG9rZW4sIHt9KVxuICAgICAgICAgICAgICAgIHBheWxvYWQgPSB3b3JrZXJfc3RhdHVzKG9yaWdpbl92YWx1ZSwgdG9rZW4pXG4gICAgICAgICAgICAgICAgcm9vdC5hZnRlcigwLCBsYW1iZGEgZGF0YT1wYXlsb2FkOiBhcHBseV9zdGF0dXMoZGF0YSkpXG4gICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGVycm9yOlxuICAgICAgICAgICAgICAgIGRlZiBmYWlsKG1lc3NhZ2U9c3RyKGVycm9yKSk6XG4gICAgICAgICAgICAgICAgICAgIHN0YXR1cy5zZXQobWVzc2FnZSlcbiAgICAgICAgICAgICAgICAgICAgcGFpbnRfYmFubmVyKCdlcnJvcicpXG4gICAgICAgICAgICAgICAgICAgIHN0YXR1c19wYXVzZS5jb25maWd1cmUoc3RhdGU9J25vcm1hbCcpXG4gICAgICAgICAgICAgICAgICAgIHN0YXR1c19yZXN1bWUuY29uZmlndXJlKHN0YXRlPSdub3JtYWwnKVxuICAgICAgICAgICAgICAgIHJvb3QuYWZ0ZXIoMCwgZmFpbClcbiAgICAgICAgICAgIGVsc2U6XG4gICAgICAgICAgICAgICAgcm9vdC5hZnRlcigwLCBsYW1iZGE6IChcbiAgICAgICAgICAgICAgICAgICAgc3RhdHVzX3BhdXNlLmNvbmZpZ3VyZShzdGF0ZT0nbm9ybWFsJyksXG4gICAgICAgICAgICAgICAgICAgIHN0YXR1c19yZXN1bWUuY29uZmlndXJlKHN0YXRlPSdub3JtYWwnKSxcbiAgICAgICAgICAgICAgICApKVxuXG4gICAgICAgIHRocmVhZGluZy5UaHJlYWQodGFyZ2V0PXdvcmssIGRhZW1vbj1UcnVlKS5zdGFydCgpXG5cbiAgICBkZWYgcGF1c2Vfd29ya2VyKCk6XG4gICAgICAgIHJlcXVlc3RfcGF1c2UoVHJ1ZSlcblxuICAgIGRlZiByZXN1bWVfd29ya2VyKCk6XG4gICAgICAgIHJlcXVlc3RfcGF1c2UoRmFsc2UpXG5cbiAgICBkZWYgb25fcmVzaXplKF9ldmVudD1Ob25lKTpcbiAgICAgICAgd3JhcCA9IG1heCg0MjAsIGJvZHkud2luZm9fd2lkdGgoKSAtIDgpXG4gICAgICAgIHN0YXR1c19sYWJlbC5jb25maWd1cmUod3JhcGxlbmd0aD13cmFwKVxuICAgICAgICBmb3Igd2lkZ2V0IGluIGhlcm8ud2luZm9fY2hpbGRyZW4oKTpcbiAgICAgICAgICAgIHdpZGdldC5jb25maWd1cmUod3JhcGxlbmd0aD13cmFwKVxuICAgICAgICBmb3Igd2lkZ2V0IGluIHByaXZhY3kud2luZm9fY2hpbGRyZW4oKTpcbiAgICAgICAgICAgIGlmIGlzaW5zdGFuY2Uod2lkZ2V0LCB0ay5MYWJlbCkgYW5kIHdpZGdldC5jZ2V0KCd3cmFwbGVuZ3RoJyk6XG4gICAgICAgICAgICAgICAgd2lkZ2V0LmNvbmZpZ3VyZSh3cmFwbGVuZ3RoPW1heCgzMjAsIHdyYXAgLSAyNCkpXG4gICAgICAgIGNhcmRfd3JhcCA9IG1heCgxODAsIChib2R5LndpbmZvX3dpZHRoKCkgLy8gMykgLSA2NClcbiAgICAgICAgZm9yIGNoaWxkIGluIHN0ZXBzLndpbmZvX2NoaWxkcmVuKCk6XG4gICAgICAgICAgICBmb3Igd2lkZ2V0IGluIGNoaWxkLndpbmZvX2NoaWxkcmVuKCk6XG4gICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZSh3aWRnZXQsIHRrLkxhYmVsKTpcbiAgICAgICAgICAgICAgICAgICAgd2lkZ2V0LmNvbmZpZ3VyZSh3cmFwbGVuZ3RoPWNhcmRfd3JhcClcbiAgICAgICAgYWN0aXZpdHlfbGFiZWwuY29uZmlndXJlKHdyYXBsZW5ndGg9d3JhcClcbiAgICAgICAgc2V0dXBfaGVhZGluZy5jb25maWd1cmUod3JhcGxlbmd0aD13cmFwKVxuICAgICAgICBzZXR1cF9jb3B5LmNvbmZpZ3VyZSh3cmFwbGVuZ3RoPXdyYXApXG4gICAgICAgIHN0YXR1c19oZWFkaW5nLmNvbmZpZ3VyZSh3cmFwbGVuZ3RoPXdyYXApXG4gICAgICAgIHN0YXR1c19jb3B5LmNvbmZpZ3VyZSh3cmFwbGVuZ3RoPXdyYXApXG4gICAgICAgIHN0YXR1c19ub3RlX3RleHQuY29uZmlndXJlKHdyYXBsZW5ndGg9d3JhcClcbiAgICAgICAgZmFjdF93cmFwID0gbWF4KDkwLCAoYm9keS53aW5mb193aWR0aCgpIC8vIDQpIC0gMjQpXG4gICAgICAgIGZvciB3aWRnZXQgaW4gZmFjdF9sYWJlbHM6XG4gICAgICAgICAgICB3aWRnZXQuY29uZmlndXJlKHdyYXBsZW5ndGg9ZmFjdF93cmFwKVxuICAgICAgICByZWZyZXNoX2NoYXJ0cygpXG4gICAgICAgIGZvciByb3cgaW4gc2V0dXBfcm93czpcbiAgICAgICAgICAgIHJvd1snZGV0YWlsJ10uY29uZmlndXJlKHdyYXBsZW5ndGg9bWF4KDMyMCwgd3JhcCAtIDgwKSlcblxuICAgIG1lbW9yeV9jaGFydC5iaW5kKCc8Q29uZmlndXJlPicsIGxhbWJkYSBfZXZlbnQ6IHJlZnJlc2hfY2hhcnRzKCkpXG4gICAgdGFza3NfY2hhcnQuYmluZCgnPENvbmZpZ3VyZT4nLCBsYW1iZGEgX2V2ZW50OiByZWZyZXNoX2NoYXJ0cygpKVxuICAgIGJvZHkuYmluZCgnPENvbmZpZ3VyZT4nLCBvbl9yZXNpemUpXG4gICAgcGF1c2VfYnV0dG9uLmNvbmZpZ3VyZShjb21tYW5kPXBhdXNlX3dvcmtlcilcbiAgICByZXN1bWVfYnV0dG9uLmNvbmZpZ3VyZShjb21tYW5kPXJlc3VtZV93b3JrZXIpXG4gICAgc2V0dXBfcGF1c2UuY29uZmlndXJlKGNvbW1hbmQ9cGF1c2Vfd29ya2VyKVxuICAgIHNldHVwX3Jlc3VtZS5jb25maWd1cmUoY29tbWFuZD1yZXN1bWVfd29ya2VyKVxuICAgIHN0YXR1c19wYXVzZS5jb25maWd1cmUoY29tbWFuZD1wYXVzZV93b3JrZXIpXG4gICAgc3RhdHVzX3Jlc3VtZS5jb25maWd1cmUoY29tbWFuZD1yZXN1bWVfd29ya2VyKVxuICAgIHNob3dfZW5yb2xsbWVudF9jb250cm9scygpXG4gICAgaWYgaW52aXRhdGlvbl9wYXRoKCkuZXhpc3RzKCk6XG4gICAgICAgIHNhdmVkID0ganNvbi5sb2FkcyhpbnZpdGF0aW9uX3BhdGgoKS5yZWFkX3RleHQoKSlcbiAgICAgICAgcm9vdC5hZnRlcigyMDAsIGxhbWJkYTogYmVnaW5fc3RhdHVzKHNhdmVkKSlcbiAgICBlbHNlOlxuICAgICAgICByZWZyZXNoX3ByZXZpZXcoKVxuICAgICAgICBuYW1lX2VudHJ5LmZvY3VzX3NldCgpXG4gICAgcHJlc2VudF93aW5kb3cocm9vdClcbiAgICByb290LmRlaWNvbmlmeSgpXG4gICAgcm9vdC5saWZ0KClcbiAgICByb290LmZvY3VzX2ZvcmNlKClcbiAgICByb290LmFmdGVyKDgwLCBsYW1iZGE6IHByZXNlbnRfd2luZG93KHJvb3QpKVxuICAgIHJvb3QubWFpbmxvb3AoKVxuXG5cbmRlZiB0a193aW5kb3dfYXZhaWxhYmxlKCk6XG4gICAgdHJ5OlxuICAgICAgICBpbXBvcnQgdGtpbnRlclxuICAgICAgICByb290ID0gdGtpbnRlci5UaygpXG4gICAgICAgIHJvb3Qud2l0aGRyYXcoKVxuICAgICAgICByb290LnVwZGF0ZV9pZGxldGFza3MoKVxuICAgICAgICBleGlzdHMgPSBib29sKHJvb3Qud2luZm9fZXhpc3RzKCkpXG4gICAgICAgIHJvb3QuZGVzdHJveSgpXG4gICAgICAgIHJldHVybiBleGlzdHNcbiAgICBleGNlcHQgRXhjZXB0aW9uOlxuICAgICAgICByZXR1cm4gRmFsc2VcblxuXG5kZWYgb3Blbl9zeXN0ZW1fYnJvd3Nlcih1cmwpOlxuICAgIG51bGwgPSBzdWJwcm9jZXNzLkRFVk5VTExcbiAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ2Rhcndpbic6XG4gICAgICAgIGVzY2FwZWQgPSB1cmwucmVwbGFjZSgnXFxcXCcsICdcXFxcXFxcXCcpLnJlcGxhY2UoJ1wiJywgJ1xcXFxcIicpXG4gICAgICAgIHN1YnByb2Nlc3MuUG9wZW4oWydvcGVuJywgdXJsXSwgc3Rkb3V0PW51bGwsIHN0ZGVycj1udWxsKVxuICAgICAgICBzdWJwcm9jZXNzLlBvcGVuKFsnb3Nhc2NyaXB0JywgJy1lJywgJ29wZW4gbG9jYXRpb24gXCIlc1wiJyAlIGVzY2FwZWRdLCBzdGRvdXQ9bnVsbCwgc3RkZXJyPW51bGwpXG4gICAgICAgIHJldHVyblxuICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInOlxuICAgICAgICBvcy5zdGFydGZpbGUodXJsKVxuICAgICAgICByZXR1cm5cbiAgICB3aW5kb3dzX2NtZCA9IFBhdGgoJy9tbnQvYy9XaW5kb3dzL1N5c3RlbTMyL2NtZC5leGUnKVxuICAgIGlmIHdpbmRvd3NfY21kLmV4aXN0cygpOlxuICAgICAgICBzdWJwcm9jZXNzLlBvcGVuKFtzdHIod2luZG93c19jbWQpLCAnL2MnLCAnc3RhcnQnLCAnJywgdXJsXSwgc3Rkb3V0PW51bGwsIHN0ZGVycj1udWxsKVxuICAgICAgICByZXR1cm5cbiAgICBmb3IgY29tbWFuZCBpbiAoXG4gICAgICAgIChbJ3hkZy1vcGVuJywgdXJsXSBpZiBzaHV0aWwud2hpY2goJ3hkZy1vcGVuJykgZWxzZSBOb25lKSxcbiAgICAgICAgKFsnZ2lvJywgJ29wZW4nLCB1cmxdIGlmIHNodXRpbC53aGljaCgnZ2lvJykgZWxzZSBOb25lKSxcbiAgICAgICAgKFsnd3NsdmlldycsIHVybF0gaWYgc2h1dGlsLndoaWNoKCd3c2x2aWV3JykgZWxzZSBOb25lKSxcbiAgICApOlxuICAgICAgICBpZiBjb21tYW5kOlxuICAgICAgICAgICAgc3VicHJvY2Vzcy5Qb3Blbihjb21tYW5kLCBzdGRvdXQ9bnVsbCwgc3RkZXJyPW51bGwpXG4gICAgICAgICAgICByZXR1cm5cbiAgICBpbXBvcnQgd2ViYnJvd3NlclxuICAgIHdlYmJyb3dzZXIub3Blbih1cmwpXG5cblxuZGVmIGNvbmZpZ3VyZWRfb3JpZ2luKCpjYW5kaWRhdGVzKTpcbiAgICB2YWx1ZXMgPSBbY29uZmlnKCkuZ2V0KCdvcmlnaW4nKSwgKmNhbmRpZGF0ZXNdXG4gICAgcmV0dXJuIG5leHQoKHZhbHVlIGZvciB2YWx1ZSBpbiB2YWx1ZXMgaWYgdmFsdWUpLCBOb25lKVxuXG5cbmRlZiBpbnZpdGF0aW9uX3BheWxvYWQocmVzdWx0PU5vbmUpOlxuICAgIGlmIHJlc3VsdDpcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICdvcmlnaW4nOiBjb25maWd1cmVkX29yaWdpbihyZXN1bHQuZ2V0KCdvcmlnaW4nKSksXG4gICAgICAgICAgICAndG9rZW4nOiByZXN1bHRbJ3Rva2VuJ10sXG4gICAgICAgICAgICAnd29ya2VyX2lkJzogcmVzdWx0LmdldCgnd29ya2VyX2lkJyksXG4gICAgICAgIH1cbiAgICBpZiBpbnZpdGF0aW9uX3BhdGgoKS5leGlzdHMoKTpcbiAgICAgICAgc2F2ZWQgPSBqc29uLmxvYWRzKGludml0YXRpb25fcGF0aCgpLnJlYWRfdGV4dCgpKVxuICAgICAgICBvcmlnaW4gPSBjb25maWd1cmVkX29yaWdpbihzYXZlZC5nZXQoJ29yaWdpbicpKVxuICAgICAgICBpZiBvcmlnaW4gYW5kIHNhdmVkLmdldCgnb3JpZ2luJykgIT0gb3JpZ2luOlxuICAgICAgICAgICAgc2F2ZWRbJ29yaWdpbiddID0gb3JpZ2luXG4gICAgICAgICAgICBpbnZpdGF0aW9uX3BhdGgoKS53cml0ZV90ZXh0KGpzb24uZHVtcHMoc2F2ZWQpKVxuICAgICAgICByZXR1cm4gc2F2ZWRcbiAgICByZXR1cm4gTm9uZVxuXG5cbmRlZiBzYXZlX2ludml0YXRpb24ocmVzdWx0LCBvcmlnaW4pOlxuICAgIHBheWxvYWQgPSB7XG4gICAgICAgICdvcmlnaW4nOiBjb25maWd1cmVkX29yaWdpbihvcmlnaW4sIHJlc3VsdC5nZXQoJ29yaWdpbicpKSxcbiAgICAgICAgJ3Rva2VuJzogcmVzdWx0Wyd0b2tlbiddLFxuICAgICAgICAnd29ya2VyX2lkJzogcmVzdWx0LmdldCgnd29ya2VyX2lkJyksXG4gICAgfVxuICAgIGludml0YXRpb25fcGF0aCgpLndyaXRlX3RleHQoanNvbi5kdW1wcyhwYXlsb2FkKSlcbiAgICByZXR1cm4gcGF5bG9hZFxuXG5cbmRlZiBwdWJsaWNfc3RhdGUoZGF0YSk6XG4gICAgcmV0dXJuIHtcbiAgICAgICAgJ3BoYXNlJzogZGF0YVsncGhhc2UnXSxcbiAgICAgICAgJ3ByZXZpZXcnOiBkYXRhWydwcmV2aWV3J10sXG4gICAgICAgICdlcnJvcic6IGRhdGFbJ2Vycm9yJ10sXG4gICAgICAgICdtZXNzYWdlJzogZGF0YVsnbWVzc2FnZSddLFxuICAgICAgICAnbG9ncyc6IGxpc3QoZGF0YVsnbG9ncyddKSxcbiAgICAgICAgJ3dvcmtlcic6IGRhdGFbJ3dvcmtlciddLFxuICAgICAgICAnbG9jYWxfcnVubmluZyc6IGRhdGFbJ2xvY2FsX3J1bm5pbmcnXSxcbiAgICAgICAgJ21lbW9yeV9mcmVlJzogZGF0YVsnbWVtb3J5X2ZyZWUnXSxcbiAgICAgICAgJ2RyYWluaW5nJzogZGF0YVsnZHJhaW5pbmcnXSxcbiAgICB9XG5cblxuZGVmIGZldGNoX3dvcmtlcl92aWV3KG9yaWdpbik6XG4gICAgc2F2ZWQgPSBpbnZpdGF0aW9uX3BheWxvYWQoKVxuICAgIGlmIG5vdCBzYXZlZDpcbiAgICAgICAgcmV0dXJuIE5vbmVcbiAgICBvcmlnaW5fdmFsdWUgPSBjb25maWd1cmVkX29yaWdpbihzYXZlZC5nZXQoJ29yaWdpbicpLCBvcmlnaW4pXG4gICAgYXZhaWxhYmxlLCBfdG90YWwgPSBob3N0X21lbW9yeV9zbmFwc2hvdCgpXG4gICAgbG9jYWxfcnVubmluZyA9IGhvc3Rfd29ya2VyX3J1bm5pbmcoKVxuICAgIHRyeTpcbiAgICAgICAgcGF5bG9hZCA9IHdvcmtlcl9zdGF0dXMob3JpZ2luX3ZhbHVlLCBzYXZlZFsndG9rZW4nXSlcbiAgICAgICAgcmV0dXJuIHsncGF5bG9hZCc6IHBheWxvYWQsICdlcnJvcic6IE5vbmUsICdhdmFpbGFibGUnOiBhdmFpbGFibGUsICdsb2NhbF9ydW5uaW5nJzogbG9jYWxfcnVubmluZ31cbiAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGVycm9yOlxuICAgICAgICByZXR1cm4geydwYXlsb2FkJzogTm9uZSwgJ2Vycm9yJzogc3RyKGVycm9yKSwgJ2F2YWlsYWJsZSc6IGF2YWlsYWJsZSwgJ2xvY2FsX3J1bm5pbmcnOiBsb2NhbF9ydW5uaW5nfVxuXG5cbmRlZiBhcHBseV93b3JrZXJfdmlldyhkYXRhLCB2aWV3KTpcbiAgICBpZiBub3QgdmlldzpcbiAgICAgICAgcmV0dXJuXG4gICAgcmVwb3J0ZWQgPSAodmlldy5nZXQoJ3BheWxvYWQnKSBvciB7fSkuZ2V0KCdtZW1vcnlfYXZhaWxhYmxlX2J5dGVzJylcbiAgICBhdmFpbGFibGUgPSByZXBvcnRlZCBvciB2aWV3WydhdmFpbGFibGUnXVxuICAgIGRhdGFbJ21lbW9yeV9mcmVlJ10gPSBmb3JtYXRfYnl0ZXMoYXZhaWxhYmxlKSBpZiBhdmFpbGFibGUgZWxzZSBOb25lXG4gICAgZGF0YVsnbG9jYWxfcnVubmluZyddID0gdmlld1snbG9jYWxfcnVubmluZyddXG4gICAgaWYgdmlld1snZXJyb3InXTpcbiAgICAgICAgZGF0YVsnd29ya2VyJ10gPSBOb25lXG4gICAgICAgIGlmIHZpZXdbJ2xvY2FsX3J1bm5pbmcnXTpcbiAgICAgICAgICAgIGRhdGFbJ21lc3NhZ2UnXSA9IChcbiAgICAgICAgICAgICAgICAnVGhlIHdvcmtlciBpcyBydW5uaW5nIG9uIHRoaXMgY29tcHV0ZXIuIFN0YXR1cyBmcm9tIERvcmlhbiBHcmF5IGNvdWxkIG5vdCBiZSByZWZyZXNoZWQuJ1xuICAgICAgICAgICAgKVxuICAgICAgICBlbHNlOlxuICAgICAgICAgICAgZGF0YVsnZXJyb3InXSA9IHZpZXdbJ2Vycm9yJ11cbiAgICAgICAgcmV0dXJuXG4gICAgZGF0YVsnZXJyb3InXSA9IE5vbmVcbiAgICBkYXRhWyd3b3JrZXInXSA9IHZpZXdbJ3BheWxvYWQnXVxuICAgIHN0YXRlX25hbWUgPSBmcmllbmRseV93b3JrZXJfc3RhdGUodmlld1sncGF5bG9hZCddKVxuICAgIGRhdGFbJ2RyYWluaW5nJ10gPSBib29sKHZpZXdbJ3BheWxvYWQnXS5nZXQoJ2RyYWluaW5nJykgb3Igc3RhdGVfbmFtZSA9PSAncGF1c2VkJylcbiAgICBpZiBkYXRhWydkcmFpbmluZyddOlxuICAgICAgICBkYXRhWydtZXNzYWdlJ10gPSAnVGhpcyBjb21wdXRlciBpcyBwYXVzZWQuIEl0IHdpbGwgZmluaXNoIGFueSBjdXJyZW50IHRhc2ssIHRoZW4gc3RvcCB0YWtpbmcgbmV3IHdvcmsuJ1xuICAgIGVsaWYgdmlld1sncGF5bG9hZCddLmdldCgnY3VycmVudF90YXNrJykgb3Igc3RhdGVfbmFtZSA9PSAnYnVzeSc6XG4gICAgICAgIGRhdGFbJ21lc3NhZ2UnXSA9ICdUaGlzIGNvbXB1dGVyIGlzIHdvcmtpbmcgb24gYSB0YXNrLidcbiAgICBlbGlmIHN0YXRlX25hbWUgPT0gJ3JlYWR5JzpcbiAgICAgICAgZGF0YVsnbWVzc2FnZSddID0gJ1RoaXMgY29tcHV0ZXIgaXMgY29ubmVjdGVkIGFuZCB3YWl0aW5nIGZvciB3b3JrLidcbiAgICBlbGlmIHN0YXRlX25hbWUgPT0gJ29mZmxpbmUnIGFuZCBkYXRhWydsb2NhbF9ydW5uaW5nJ106XG4gICAgICAgIGRhdGFbJ21lc3NhZ2UnXSA9ICdUaGUgd29ya2VyIGlzIHJ1bm5pbmcgb24gdGhpcyBjb21wdXRlciBhbmQgY2hlY2tpbmcgaW4gd2l0aCBEb3JpYW4gR3JheS4nXG4gICAgZWxpZiBzdGF0ZV9uYW1lID09ICdvZmZsaW5lJzpcbiAgICAgICAgZGF0YVsnbWVzc2FnZSddID0gJ1RoZSB3b3JrZXIgaXMgbm90IGNvbm5lY3RlZCB5ZXQuIEl0IHdpbGwga2VlcCB0cnlpbmcgaW4gdGhlIGJhY2tncm91bmQuJ1xuICAgIGVsc2U6XG4gICAgICAgIGRhdGFbJ21lc3NhZ2UnXSA9ICdUaGlzIGNvbXB1dGVyIGlzICcgKyBzdGF0ZV9uYW1lLnJlcGxhY2UoJ18nLCAnICcpICsgJy4nXG5cblxuZGVmIGJyb3dzZXJfZmxvdyhvcmlnaW4sIHNjcmlwdF9wYXRoKTpcbiAgICBmcm9tIGh0dHAuc2VydmVyIGltcG9ydCBCYXNlSFRUUFJlcXVlc3RIYW5kbGVyLCBUaHJlYWRpbmdIVFRQU2VydmVyXG5cbiAgICBzdGF0ZSA9IGxvYWRfc3RhdGUoKVxuICAgIHBhZ2UgPSAoUk9PVCAvICdob3N0X3dlYi5odG1sJykucmVhZF90ZXh0KClcbiAgICBpY29uX3BhdGggPSBST09UIC8gJ2RnZS1pY29uLnBuZydcbiAgICBkYXRhID0ge1xuICAgICAgICAncGhhc2UnOiAnbG9hZGluZycsXG4gICAgICAgICdwcmV2aWV3JzogTm9uZSxcbiAgICAgICAgJ2Vycm9yJzogTm9uZSxcbiAgICAgICAgJ21lc3NhZ2UnOiAnJyxcbiAgICAgICAgJ3NuYXBzaG90JzogTm9uZSxcbiAgICAgICAgJ2xvZ3MnOiBkZXF1ZShtYXhsZW49NDAwKSxcbiAgICAgICAgJ3dvcmtlcic6IE5vbmUsXG4gICAgICAgICdsb2NhbF9ydW5uaW5nJzogRmFsc2UsXG4gICAgICAgICdtZW1vcnlfZnJlZSc6IE5vbmUsXG4gICAgICAgICdkcmFpbmluZyc6IEZhbHNlLFxuICAgICAgICAnYWxpdmUnOiBUcnVlLFxuICAgIH1cbiAgICBsb2NrID0gdGhyZWFkaW5nLkxvY2soKVxuXG4gICAgZGVmIGNvbGxlY3QoKTpcbiAgICAgICAgdHJ5OlxuICAgICAgICAgICAgc25hcHNob3QgPSBjb2xsZWN0X3NuYXBzaG90KG9yaWdpbilcbiAgICAgICAgICAgIHdpdGggbG9jazpcbiAgICAgICAgICAgICAgICBkYXRhWydzbmFwc2hvdCddID0gc25hcHNob3RcbiAgICAgICAgICAgICAgICBkYXRhWydwcmV2aWV3J10gPSBwcmV2aWV3X3N1bW1hcnkoc25hcHNob3QpXG4gICAgICAgICAgICAgICAgaWYgZGF0YVsncGhhc2UnXSA9PSAnbG9hZGluZyc6XG4gICAgICAgICAgICAgICAgICAgIGRhdGFbJ3BoYXNlJ10gPSAnZm9ybSdcbiAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlcnJvcjpcbiAgICAgICAgICAgIHdpdGggbG9jazpcbiAgICAgICAgICAgICAgICBkYXRhWydlcnJvciddID0gc3RyKGVycm9yKVxuXG4gICAgZGVmIGFwcGVuZF9sb2cobGluZSk6XG4gICAgICAgIHRleHQgPSBsaW5lLnJzdHJpcCgpXG4gICAgICAgIGlmIG5vdCB0ZXh0OlxuICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgIGhpbnQgPSBmcmllbmRseV9pbnN0YWxsX2xpbmUodGV4dClcbiAgICAgICAgd2l0aCBsb2NrOlxuICAgICAgICAgICAgZGF0YVsnbG9ncyddLmFwcGVuZCh0ZXh0KVxuICAgICAgICAgICAgaWYgaGludCBhbmQgaGludC5nZXQoJ2RldGFpbCcpOlxuICAgICAgICAgICAgICAgIGRhdGFbJ21lc3NhZ2UnXSA9IGhpbnRbJ2RldGFpbCddXG5cbiAgICBkZWYgcG9sbF9zdGF0dXMoKTpcbiAgICAgICAgd2hpbGUgZGF0YVsnYWxpdmUnXTpcbiAgICAgICAgICAgIHZpZXcgPSBmZXRjaF93b3JrZXJfdmlldyhvcmlnaW4pXG4gICAgICAgICAgICB3aXRoIGxvY2s6XG4gICAgICAgICAgICAgICAgYXBwbHlfd29ya2VyX3ZpZXcoZGF0YSwgdmlldylcbiAgICAgICAgICAgIHRpbWUuc2xlZXAoMilcblxuICAgIGRlZiBmaW5pc2hfc2V0dXAoKTpcbiAgICAgICAgdHJ5OlxuICAgICAgICAgICAgd2l0aCBsb2NrOlxuICAgICAgICAgICAgICAgIGRhdGFbJ3BoYXNlJ10gPSAnc2V0dXAnXG4gICAgICAgICAgICAgICAgZGF0YVsnbWVzc2FnZSddID0gJ0FwcHJvdmVkLiBTZXR1cCBpcyBydW5uaW5nIG9uIHRoaXMgY29tcHV0ZXIuJ1xuICAgICAgICAgICAgcnVuX2luc3RhbGxlcihzY3JpcHRfcGF0aCwgb25fbGluZT1hcHBlbmRfbG9nKVxuICAgICAgICAgICAgd2l0aCBsb2NrOlxuICAgICAgICAgICAgICAgIGRhdGFbJ3BoYXNlJ10gPSAncnVubmluZydcbiAgICAgICAgICAgICAgICBkYXRhWydtZXNzYWdlJ10gPSAnU2V0dXAgZmluaXNoZWQuIFRoaXMgY29tcHV0ZXIgaXMgY2hlY2tpbmcgaW4gYXMgYSB3b3JrZXIuJ1xuICAgICAgICAgICAgcG9sbF9zdGF0dXMoKVxuICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGVycm9yOlxuICAgICAgICAgICAgd2l0aCBsb2NrOlxuICAgICAgICAgICAgICAgIGRhdGFbJ2Vycm9yJ10gPSBzdHIoZXJyb3IpXG5cbiAgICBkZWYgd2FpdF9hbmRfaW5zdGFsbCgpOlxuICAgICAgICB0cnk6XG4gICAgICAgICAgICByZXN1bHQgPSB3YWl0X2Zvcl9lbnJvbGxtZW50KG9yaWdpbiwgc3RhdGUpXG4gICAgICAgICAgICBzYXZlX2ludml0YXRpb24ocmVzdWx0LCBvcmlnaW4pXG4gICAgICAgICAgICBmaW5pc2hfc2V0dXAoKVxuICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGVycm9yOlxuICAgICAgICAgICAgd2l0aCBsb2NrOlxuICAgICAgICAgICAgICAgIGRhdGFbJ2Vycm9yJ10gPSBzdHIoZXJyb3IpXG5cbiAgICBjbGFzcyBIYW5kbGVyKEJhc2VIVFRQUmVxdWVzdEhhbmRsZXIpOlxuICAgICAgICBkZWYgbG9nX21lc3NhZ2Uoc2VsZiwgKl9hcmdzKTpcbiAgICAgICAgICAgIHJldHVyblxuXG4gICAgICAgIGRlZiBzZW5kX2J5dGVzKHNlbGYsIGJvZHksIGNvbnRlbnRfdHlwZSwgc3RhdHVzPTIwMCk6XG4gICAgICAgICAgICBzZWxmLnNlbmRfcmVzcG9uc2Uoc3RhdHVzKVxuICAgICAgICAgICAgc2VsZi5zZW5kX2hlYWRlcignQ29udGVudC1UeXBlJywgY29udGVudF90eXBlKVxuICAgICAgICAgICAgc2VsZi5zZW5kX2hlYWRlcignQ2FjaGUtQ29udHJvbCcsICduby1zdG9yZScpXG4gICAgICAgICAgICBzZWxmLnNlbmRfaGVhZGVyKCdDb250ZW50LUxlbmd0aCcsIHN0cihsZW4oYm9keSkpKVxuICAgICAgICAgICAgc2VsZi5lbmRfaGVhZGVycygpXG4gICAgICAgICAgICBzZWxmLndmaWxlLndyaXRlKGJvZHkpXG5cbiAgICAgICAgZGVmIHNlbmRfanNvbihzZWxmLCBwYXlsb2FkLCBzdGF0dXM9MjAwKTpcbiAgICAgICAgICAgIHNlbGYuc2VuZF9ieXRlcyhqc29uLmR1bXBzKHBheWxvYWQpLmVuY29kZSgpLCAnYXBwbGljYXRpb24vanNvbicsIHN0YXR1cylcblxuICAgICAgICBkZWYgcmVhZF9qc29uKHNlbGYpOlxuICAgICAgICAgICAgbGVuZ3RoID0gaW50KHNlbGYuaGVhZGVycy5nZXQoJ0NvbnRlbnQtTGVuZ3RoJykgb3IgMClcbiAgICAgICAgICAgIHJldHVybiBqc29uLmxvYWRzKHNlbGYucmZpbGUucmVhZChsZW5ndGgpIG9yIGIne30nKVxuXG4gICAgICAgIGRlZiBkb19HRVQoc2VsZik6XG4gICAgICAgICAgICBpZiBzZWxmLnBhdGggPT0gJy8nIG9yIHNlbGYucGF0aC5zdGFydHN3aXRoKCcvaW5kZXgnKTpcbiAgICAgICAgICAgICAgICBzZWxmLnNlbmRfYnl0ZXMocGFnZS5lbmNvZGUoKSwgJ3RleHQvaHRtbDsgY2hhcnNldD11dGYtOCcpXG4gICAgICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgICBpZiBzZWxmLnBhdGggaW4gKCcvaWNvbi5wbmcnLCAnL2Zhdmljb24uaWNvJykgYW5kIGljb25fcGF0aC5leGlzdHMoKTpcbiAgICAgICAgICAgICAgICBzZWxmLnNlbmRfYnl0ZXMoaWNvbl9wYXRoLnJlYWRfYnl0ZXMoKSwgJ2ltYWdlL3BuZycpXG4gICAgICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgICBpZiBzZWxmLnBhdGggPT0gJy9hcGkvc3RhdGUnOlxuICAgICAgICAgICAgICAgIHdpdGggbG9jazpcbiAgICAgICAgICAgICAgICAgICAgc2VsZi5zZW5kX2pzb24ocHVibGljX3N0YXRlKGRhdGEpKVxuICAgICAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgICAgc2VsZi5zZW5kX2Vycm9yKDQwNClcblxuICAgICAgICBkZWYgZG9fUE9TVChzZWxmKTpcbiAgICAgICAgICAgIG9yaWdpbl9oZWFkZXIgPSBzZWxmLmhlYWRlcnMuZ2V0KCdPcmlnaW4nKVxuICAgICAgICAgICAgY3Jvc3Nfb3JpZ2luID0gb3JpZ2luX2hlYWRlciBhbmQgdXJsbGliLnBhcnNlLnVybHNwbGl0KG9yaWdpbl9oZWFkZXIpLm5ldGxvYyAhPSBzZWxmLmhlYWRlcnMuZ2V0KCdIb3N0JylcbiAgICAgICAgICAgIGlmIGNyb3NzX29yaWdpbiBvciBzZWxmLmhlYWRlcnMuZ2V0KCdTZWMtRmV0Y2gtU2l0ZScpID09ICdjcm9zcy1zaXRlJzpcbiAgICAgICAgICAgICAgICBzZWxmLnNlbmRfZXJyb3IoNDAzKVxuICAgICAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgICAgaWYgc2VsZi5wYXRoID09ICcvYXBpL2Vucm9sbCc6XG4gICAgICAgICAgICAgICAgYm9keSA9IHNlbGYucmVhZF9qc29uKClcbiAgICAgICAgICAgICAgICB3aXRoIGxvY2s6XG4gICAgICAgICAgICAgICAgICAgIHNuYXBzaG90ID0gZGF0YVsnc25hcHNob3QnXVxuICAgICAgICAgICAgICAgIGlmIG5vdCBzbmFwc2hvdDpcbiAgICAgICAgICAgICAgICAgICAgc2VsZi5zZW5kX2pzb24oeydlcnJvcic6ICdTdGlsbCByZWFkaW5nIHRoaXMgY29tcHV0ZXIuJ30sIDQwOSlcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgICAgICAgbmFtZSA9IChib2R5LmdldCgnZGlzcGxheV9uYW1lJykgb3IgJycpLnN0cmlwKClcbiAgICAgICAgICAgICAgICBlbWFpbCA9IChib2R5LmdldCgnZW1haWwnKSBvciAnJykuc3RyaXAoKVxuICAgICAgICAgICAgICAgIHBob25lID0gKGJvZHkuZ2V0KCdwaG9uZScpIG9yICcnKS5zdHJpcCgpXG4gICAgICAgICAgICAgICAgaWYgbm90IG5hbWU6XG4gICAgICAgICAgICAgICAgICAgIHNlbGYuc2VuZF9qc29uKHsnZXJyb3InOiAnQWRkIHlvdXIgbmFtZS4nfSwgNDAwKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICAgICAgICBpZiBub3QgZW1haWw6XG4gICAgICAgICAgICAgICAgICAgIHNlbGYuc2VuZF9qc29uKHsnZXJyb3InOiAnQWRkIHlvdXIgZW1haWwuJ30sIDQwMClcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgICAgICAgaWYgbm90IHBob25lOlxuICAgICAgICAgICAgICAgICAgICBzZWxmLnNlbmRfanNvbih7J2Vycm9yJzogJ0FkZCB5b3VyIHBob25lIG51bWJlci4nfSwgNDAwKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICAgICAgICB0cnk6XG4gICAgICAgICAgICAgICAgICAgIHN1Ym1pdF9lbnJvbGxtZW50KG9yaWdpbiwgc3RhdGUsIHNuYXBzaG90LCBuYW1lLCBlbWFpbCwgcGhvbmUsIChib2R5LmdldCgnbm90ZScpIG9yICcnKS5zdHJpcCgpKVxuICAgICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZXJyb3I6XG4gICAgICAgICAgICAgICAgICAgIHNlbGYuc2VuZF9qc29uKHsnZXJyb3InOiBzdHIoZXJyb3IpfSwgNDAwKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICAgICAgICB3aXRoIGxvY2s6XG4gICAgICAgICAgICAgICAgICAgIGRhdGFbJ3BoYXNlJ10gPSAncGVuZGluZydcbiAgICAgICAgICAgICAgICAgICAgZGF0YVsnbWVzc2FnZSddID0gKFxuICAgICAgICAgICAgICAgICAgICAgICAgJ1JlcXVlc3Qgc2VudC4gV2Ugd2lsbCBzZXQgdGhpcyBjb21wdXRlciB1cCBoZXJlIGFmdGVyIHNvbWVvbmUgb24gdGhlIHRlYW0gYXBwcm92ZXMgaXQuJ1xuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgdGhyZWFkaW5nLlRocmVhZCh0YXJnZXQ9d2FpdF9hbmRfaW5zdGFsbCwgZGFlbW9uPVRydWUpLnN0YXJ0KClcbiAgICAgICAgICAgICAgICBzZWxmLnNlbmRfanNvbih7J29rJzogVHJ1ZX0pXG4gICAgICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgICBpZiBzZWxmLnBhdGggaW4gKCcvYXBpL3BhdXNlJywgJy9hcGkvcmVzdW1lJywgJy9hcGkvcHJlZmVyZW5jZXMnKTpcbiAgICAgICAgICAgICAgICBzYXZlZCA9IGludml0YXRpb25fcGF5bG9hZCgpXG4gICAgICAgICAgICAgICAgaWYgbm90IHNhdmVkOlxuICAgICAgICAgICAgICAgICAgICBzZWxmLnNlbmRfanNvbih7J2Vycm9yJzogJ1RoaXMgY29tcHV0ZXIgaXMgbm90IGVucm9sbGVkIHlldC4nfSwgNDA5KVxuICAgICAgICAgICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICAgICAgICBvcmlnaW5fdmFsdWUgPSBjb25maWd1cmVkX29yaWdpbihzYXZlZC5nZXQoJ29yaWdpbicpLCBvcmlnaW4pXG4gICAgICAgICAgICAgICAgcGF0aCA9ICcvY29tcHV0ZV9mbGVldC9kcmFpbicgaWYgc2VsZi5wYXRoLmVuZHN3aXRoKCdwYXVzZScpIGVsc2UgJy9jb21wdXRlX2ZsZWV0L3Jlc3VtZSdcbiAgICAgICAgICAgICAgICB0cnk6XG4gICAgICAgICAgICAgICAgICAgIGlmIHNlbGYucGF0aCA9PSAnL2FwaS9wcmVmZXJlbmNlcyc6XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiBub3Qgc2VsZi5oZWFkZXJzLmdldCgnQ29udGVudC1UeXBlJywgJycpLnN0YXJ0c3dpdGgoJ2FwcGxpY2F0aW9uL2pzb24nKTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdQcmVmZXJlbmNlcyByZXF1aXJlIEpTT04nKVxuICAgICAgICAgICAgICAgICAgICAgICAgcG9zdF9qc29uKG9yaWdpbl92YWx1ZSwgJy9jb21wdXRlX2ZsZWV0L3ByZWZlcmVuY2VzJywgc2F2ZWRbJ3Rva2VuJ10sIHNlbGYucmVhZF9qc29uKCkpXG4gICAgICAgICAgICAgICAgICAgIGVsc2U6XG4gICAgICAgICAgICAgICAgICAgICAgICBwb3N0X2pzb24ob3JpZ2luX3ZhbHVlLCBwYXRoLCBzYXZlZFsndG9rZW4nXSwge30pXG4gICAgICAgICAgICAgICAgICAgIHZpZXcgPSBmZXRjaF93b3JrZXJfdmlldyhvcmlnaW4pXG4gICAgICAgICAgICAgICAgICAgIHdpdGggbG9jazpcbiAgICAgICAgICAgICAgICAgICAgICAgIGFwcGx5X3dvcmtlcl92aWV3KGRhdGEsIHZpZXcpXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnNlbmRfanNvbihwdWJsaWNfc3RhdGUoZGF0YSkpXG4gICAgICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlcnJvcjpcbiAgICAgICAgICAgICAgICAgICAgc2VsZi5zZW5kX2pzb24oeydlcnJvcic6IHN0cihlcnJvcil9LCA0MDApXG4gICAgICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgICBzZWxmLnNlbmRfZXJyb3IoNDA0KVxuXG4gICAgaWYgaW52aXRhdGlvbl9wYXRoKCkuZXhpc3RzKCk6XG4gICAgICAgIGlmIG1hY19uZWVkc19pbnN0YWxsKCk6XG4gICAgICAgICAgICB0aHJlYWRpbmcuVGhyZWFkKHRhcmdldD1maW5pc2hfc2V0dXAsIGRhZW1vbj1UcnVlKS5zdGFydCgpXG4gICAgICAgIGVsc2U6XG4gICAgICAgICAgICBkYXRhWydwaGFzZSddID0gJ3J1bm5pbmcnXG4gICAgICAgICAgICBkYXRhWydtZXNzYWdlJ10gPSAnQ2hlY2tpbmcgaW4gd2l0aCBEb3JpYW4gR3JheeKApidcbiAgICAgICAgICAgIHRocmVhZGluZy5UaHJlYWQodGFyZ2V0PXBvbGxfc3RhdHVzLCBkYWVtb249VHJ1ZSkuc3RhcnQoKVxuICAgIGVsaWYgc3RhdGUuZ2V0KCdwb2xsX3Rva2VuJyk6XG4gICAgICAgIGRhdGFbJ3BoYXNlJ10gPSAncGVuZGluZydcbiAgICAgICAgZGF0YVsnbWVzc2FnZSddID0gJ1JlcXVlc3Qgc2VudC4gV2FpdGluZyBmb3IgYXBwcm92YWzigKYnXG4gICAgICAgIHRocmVhZGluZy5UaHJlYWQodGFyZ2V0PXdhaXRfYW5kX2luc3RhbGwsIGRhZW1vbj1UcnVlKS5zdGFydCgpXG4gICAgZWxzZTpcbiAgICAgICAgdGhyZWFkaW5nLlRocmVhZCh0YXJnZXQ9Y29sbGVjdCwgZGFlbW9uPVRydWUpLnN0YXJ0KClcbiAgICBzZXJ2ZXIgPSBUaHJlYWRpbmdIVFRQU2VydmVyKCgnMTI3LjAuMC4xJywgMCksIEhhbmRsZXIpXG4gICAgdXJsID0gJ2h0dHA6Ly8xMjcuMC4wLjE6JXMvJyAlIHNlcnZlci5zZXJ2ZXJfYWRkcmVzc1sxXVxuICAgIHByaW50KCdPcGVuaW5nIERvcmlhbiBHcmF5IFdvcmtlciBpbiB5b3VyIGJyb3dzZXI6XFxuICAnICsgdXJsLCBmbHVzaD1UcnVlKVxuICAgIHByaW50KCdJZiBhIHdpbmRvdyBkb2VzIG5vdCBhcHBlYXIsIG9wZW4gdGhhdCBhZGRyZXNzIGluIGFueSBicm93c2VyIG9uIHRoaXMgY29tcHV0ZXIuJywgZmx1c2g9VHJ1ZSlcbiAgICBvcGVuX3N5c3RlbV9icm93c2VyKHVybClcbiAgICB0cnk6XG4gICAgICAgIHNlcnZlci5zZXJ2ZV9mb3JldmVyKClcbiAgICBleGNlcHQgS2V5Ym9hcmRJbnRlcnJ1cHQ6XG4gICAgICAgIGRhdGFbJ2FsaXZlJ10gPSBGYWxzZVxuICAgICAgICByZXR1cm5cblxuXG5kZWYgbWFpbigpOlxuICAgIHBheWxvYWQgPSBjb25maWcoKVxuICAgIG9yaWdpbiA9IHBheWxvYWRbJ29yaWdpbiddXG4gICAgc2NyaXB0X3BhdGggPSBzeXMuYXJndlsxXSBpZiBsZW4oc3lzLmFyZ3YpID4gMSBlbHNlIF9fZmlsZV9fXG4gICAgaW1wb3J0IGhvc3RfYXBwXG4gICAgaG9zdF9hcHAuZW5zdXJlX3J1bm5pbmdfZnJvbV9hcHAoc2NyaXB0X3BhdGgpXG4gICAgaWYgaG9zdF9hcHAucmVmcmVzaF9mcm9tX29yaWdpbihvcmlnaW4pOlxuICAgICAgICBweXRob24gPSBob3N0X2FwcC5weXRob25fZm9yX2xhdW5jaCgpXG4gICAgICAgIG9zLmV4ZWN2KHB5dGhvbiwgW3B5dGhvbiwgc3RyKGhvc3RfYXBwLnNvdXJjZV9yb290KCkgLyAnaG9zdF9ndWkucHknKSwgc2NyaXB0X3BhdGhdKVxuICAgIGlmIHdhbnRfaGVhZGxlc3MoKTpcbiAgICAgICAgdGVybWluYWxfZmxvdyhvcmlnaW4sIHNjcmlwdF9wYXRoKVxuICAgICAgICByZXR1cm5cbiAgICBsaW51eF9yZWxhdW5jaF92aWFfZGVza3RvcChzY3JpcHRfcGF0aClcbiAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ2Rhcndpbic6XG4gICAgICAgIG1hY29zX3JlbGF1bmNoX3ZpYV9hcXVhKHNjcmlwdF9wYXRoKVxuICAgICAgICBicm93c2VyX2Zsb3cob3JpZ2luLCBzY3JpcHRfcGF0aClcbiAgICAgICAgcmV0dXJuXG4gICAgaWYgdGtfd2luZG93X2F2YWlsYWJsZSgpOlxuICAgICAgICB0a2ludGVyX2Zsb3cob3JpZ2luLCBzY3JpcHRfcGF0aClcbiAgICAgICAgcmV0dXJuXG4gICAgYnJvd3Nlcl9mbG93KG9yaWdpbiwgc2NyaXB0X3BhdGgpXG5cblxuaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzpcbiAgICBtYWluKClcbiIsImhvc3Rfd2ViLmh0bWwiOiI8IURPQ1RZUEUgaHRtbD5cbjxodG1sIGxhbmc9XCJlblwiPlxuPGhlYWQ+XG4gIDxtZXRhIGNoYXJzZXQ9XCJ1dGYtOFwiPlxuICA8bWV0YSBuYW1lPVwidmlld3BvcnRcIiBjb250ZW50PVwid2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTFcIj5cbiAgPHRpdGxlPkRvcmlhbiBHcmF5IFdvcmtlcjwvdGl0bGU+XG4gIDxsaW5rIHJlbD1cImljb25cIiBocmVmPVwiL2ljb24ucG5nXCI+XG4gIDxzdHlsZT5cbiAgICA6cm9vdCB7IGNvbG9yLXNjaGVtZTogbGlnaHQ7IH1cbiAgICBib2R5IHsgbWFyZ2luOiAwOyBmb250OiAxNnB4LzEuNDUgdWktc2Fucy1zZXJpZiwgc3lzdGVtLXVpLCBzYW5zLXNlcmlmOyBjb2xvcjogIzFjMTkxNzsgYmFja2dyb3VuZDogI2Y1ZjBlYTsgfVxuICAgIGhlYWRlciB7IGJhY2tncm91bmQ6ICMxYzE5MTc7IGNvbG9yOiAjZmFmN2YyOyBwYWRkaW5nOiAyOHB4IDMycHggMjRweDsgZGlzcGxheTogZmxleDsgZ2FwOiAxNnB4OyBhbGlnbi1pdGVtczogZmxleC1zdGFydDsgfVxuICAgIGhlYWRlciBpbWcgeyB3aWR0aDogNDhweDsgaGVpZ2h0OiA0OHB4OyBib3JkZXItcmFkaXVzOiAxMHB4OyB9XG4gICAgaGVhZGVyIHAgeyBtYXJnaW46IDhweCAwIDA7IGNvbG9yOiAjYzRiOGFhOyBtYXgtd2lkdGg6IDQwcmVtOyB9XG4gICAgbWFpbiB7IG1heC13aWR0aDogNDJyZW07IG1hcmdpbjogMCBhdXRvOyBwYWRkaW5nOiAyOHB4IDI0cHggNDhweDsgfVxuICAgIC5jYXJkIHsgYmFja2dyb3VuZDogI2ZmZmNmODsgYm9yZGVyOiAxcHggc29saWQgI2U3ZTBkNjsgYm9yZGVyLXJhZGl1czogMTRweDsgcGFkZGluZzogMjBweCAyMnB4OyBtYXJnaW46IDAgMCAxNnB4OyB9XG4gICAgbGFiZWwgeyBkaXNwbGF5OiBibG9jazsgZm9udC13ZWlnaHQ6IDYwMDsgbWFyZ2luOiAxMnB4IDAgNnB4OyB9XG4gICAgaW5wdXQsIHRleHRhcmVhIHsgd2lkdGg6IDEwMCU7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IGZvbnQ6IGluaGVyaXQ7IHBhZGRpbmc6IDEwcHggMTJweDsgYm9yZGVyOiAxcHggc29saWQgI2U3ZTBkNjsgYm9yZGVyLXJhZGl1czogMTBweDsgYmFja2dyb3VuZDogI2ZmZjsgfVxuICAgIGlucHV0W3R5cGU9XCJjaGVja2JveFwiXSB7IHdpZHRoOiBhdXRvOyBtYXJnaW4tcmlnaHQ6IDhweDsgfVxuICAgIGRldGFpbHMgeyBtYXJnaW4tdG9wOiAxNnB4OyB9XG4gICAgc3VtbWFyeSB7IGN1cnNvcjogcG9pbnRlcjsgfVxuICAgIGJ1dHRvbiB7IGZvbnQ6IGluaGVyaXQ7IGZvbnQtd2VpZ2h0OiA2NTA7IGJhY2tncm91bmQ6ICM4YjFlMWU7IGNvbG9yOiAjZmZmOyBib3JkZXI6IDA7IGJvcmRlci1yYWRpdXM6IDk5OXB4OyBwYWRkaW5nOiAxMnB4IDIycHg7IGN1cnNvcjogcG9pbnRlcjsgfVxuICAgIGJ1dHRvbi5zZWNvbmRhcnkgeyBiYWNrZ3JvdW5kOiAjMWMxOTE3OyB9XG4gICAgYnV0dG9uOmRpc2FibGVkIHsgb3BhY2l0eTogLjU1OyBjdXJzb3I6IGRlZmF1bHQ7IH1cbiAgICAubXV0ZWQgeyBjb2xvcjogIzc4NzE2YzsgfVxuICAgIC5mYWN0cywgLnN0YXRzIHsgZGlzcGxheTogZ3JpZDsgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgMWZyOyBnYXA6IDEwcHggMTZweDsgfVxuICAgIC5lcnIgeyBjb2xvcjogIzlhMzQxMjsgYmFja2dyb3VuZDogI2ZhZWNlNDsgcGFkZGluZzogMTJweCAxNHB4OyBib3JkZXItcmFkaXVzOiAxMHB4OyB9XG4gICAgcHJlIHsgbWFyZ2luOiAxMnB4IDAgMDsgbWF4LWhlaWdodDogMTZyZW07IG92ZXJmbG93OiBhdXRvOyBiYWNrZ3JvdW5kOiAjMWMxOTE3OyBjb2xvcjogI2ZhZjdmMjsgYm9yZGVyLXJhZGl1czogMTBweDsgcGFkZGluZzogMTJweCAxNHB4OyBmb250OiAxMnB4LzEuNCB1aS1tb25vc3BhY2UsIFNGTW9uby1SZWd1bGFyLCBNZW5sbywgbW9ub3NwYWNlOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IH1cbiAgICAuYWN0aW9ucyB7IGRpc3BsYXk6IGZsZXg7IGdhcDogMTBweDsgZmxleC13cmFwOiB3cmFwOyBtYXJnaW4tdG9wOiAxNHB4OyB9XG4gIDwvc3R5bGU+XG48L2hlYWQ+XG48Ym9keT5cbiAgPGhlYWRlcj5cbiAgICA8aW1nIHNyYz1cIi9pY29uLnBuZ1wiIGFsdD1cIlwiPlxuICAgIDxkaXY+XG4gICAgICA8aDE+UHV0IGlkbGUgdGltZSB0byB3b3JrPC9oMT5cbiAgICAgIDxwPldoZW4gdGhpcyBjb21wdXRlciBpcyBub3QgaW4gdXNlLCBpdCBjYW4gaGVscCBEb3JpYW4gR3JheSBwcm9jZXNzIGJhY2tncm91bmQgdGFza3MuIFdlIHJldmlldyB0aGUgcmVxdWVzdCBiZWZvcmUgaW5zdGFsbGluZyBhbnl0aGluZy48L3A+XG4gICAgPC9kaXY+XG4gIDwvaGVhZGVyPlxuICA8bWFpbj5cbiAgICA8ZGl2IGlkPVwic3RhdHVzXCIgY2xhc3M9XCJjYXJkIG11dGVkXCI+UmVhZGluZyB0aGlzIGNvbXB1dGVy4oCmPC9kaXY+XG4gICAgPGZvcm0gaWQ9XCJmb3JtXCIgY2xhc3M9XCJjYXJkXCIgaGlkZGVuPlxuICAgICAgPHAgY2xhc3M9XCJtdXRlZFwiPldlIG5ldmVyIGNvbGxlY3QgcGFzc3dvcmRzLCBmaWxlcywgcGhvdG9zLCBicm93c2luZyBoaXN0b3J5LCBzZXJpYWwgbnVtYmVycywgb3IgbmV0d29yayBhZGRyZXNzZXMuPC9wPlxuICAgICAgPHAgY2xhc3M9XCJtdXRlZFwiPkFmdGVyIGFwcHJvdmFsLCBzZXR1cCBwcm9ncmVzcyBhbmQgZGlhZ25vc3RpYyBtZXNzYWdlcyBhcmUgc2VudCB0byBvdXIgdGVhbS48L3A+XG4gICAgICA8ZGl2IGNsYXNzPVwiZmFjdHNcIiBpZD1cImZhY3RzXCI+PC9kaXY+XG4gICAgICA8bGFiZWwgZm9yPVwibmFtZVwiPllvdXIgbmFtZTwvbGFiZWw+XG4gICAgICA8aW5wdXQgaWQ9XCJuYW1lXCIgbmFtZT1cIm5hbWVcIiBhdXRvY29tcGxldGU9XCJuYW1lXCIgcmVxdWlyZWQ+XG4gICAgICA8bGFiZWwgZm9yPVwiZW1haWxcIj5FbWFpbDwvbGFiZWw+XG4gICAgICA8aW5wdXQgaWQ9XCJlbWFpbFwiIG5hbWU9XCJlbWFpbFwiIHR5cGU9XCJlbWFpbFwiIGF1dG9jb21wbGV0ZT1cImVtYWlsXCIgcmVxdWlyZWQ+XG4gICAgICA8bGFiZWwgZm9yPVwicGhvbmVcIj5QaG9uZTwvbGFiZWw+XG4gICAgICA8aW5wdXQgaWQ9XCJwaG9uZVwiIG5hbWU9XCJwaG9uZVwiIHR5cGU9XCJ0ZWxcIiBhdXRvY29tcGxldGU9XCJ0ZWxcIiByZXF1aXJlZD5cbiAgICAgIDxsYWJlbCBmb3I9XCJub3RlXCI+T3B0aW9uYWwgbm90ZTwvbGFiZWw+XG4gICAgICA8dGV4dGFyZWEgaWQ9XCJub3RlXCIgbmFtZT1cIm5vdGVcIiByb3dzPVwiM1wiIHBsYWNlaG9sZGVyPVwiQW55dGhpbmcgd2Ugc2hvdWxkIGtub3dcIj48L3RleHRhcmVhPlxuICAgICAgPHA+PGJ1dHRvbiB0eXBlPVwic3VibWl0XCI+U2VuZCByZXF1ZXN0PC9idXR0b24+PC9wPlxuICAgICAgPHAgaWQ9XCJmb3JtLWVycm9yXCIgY2xhc3M9XCJlcnJcIiBoaWRkZW4+PC9wPlxuICAgIDwvZm9ybT5cbiAgICA8c2VjdGlvbiBpZD1cInNldHVwXCIgY2xhc3M9XCJjYXJkXCIgaGlkZGVuPlxuICAgICAgPGRpdiBjbGFzcz1cIm11dGVkXCI+U2V0dXAgbG9nPC9kaXY+XG4gICAgICA8cHJlIGlkPVwibG9nXCI+PC9wcmU+XG4gICAgPC9zZWN0aW9uPlxuICAgIDxzZWN0aW9uIGlkPVwicnVubmluZ1wiIGNsYXNzPVwiY2FyZFwiIGhpZGRlbj5cbiAgICAgIDxkaXYgY2xhc3M9XCJzdGF0c1wiIGlkPVwic3RhdHNcIj48L2Rpdj5cbiAgICAgIDxwIGNsYXNzPVwibXV0ZWRcIiBzdHlsZT1cIm1hcmdpbjogMTRweCAwIDA7XCI+UGF1c2Ugc3RvcHMgbmV3IHdvcmsuIEEgdGFzayBhbHJlYWR5IHJ1bm5pbmcgaXMgYWxsb3dlZCB0byBmaW5pc2guPC9wPlxuICAgICAgPGRpdiBjbGFzcz1cImFjdGlvbnNcIj5cbiAgICAgICAgPGJ1dHRvbiBpZD1cInBhdXNlXCIgdHlwZT1cImJ1dHRvblwiPlBhdXNlPC9idXR0b24+XG4gICAgICAgIDxidXR0b24gaWQ9XCJyZXN1bWVcIiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJzZWNvbmRhcnlcIiBoaWRkZW4+UmVzdW1lPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkZXRhaWxzPjxzdW1tYXJ5PkJhY2tncm91bmQgd29yayBzZXR0aW5nczwvc3VtbWFyeT5cbiAgICAgICAgPGZvcm0gaWQ9XCJwcmVmZXJlbmNlc1wiPlxuICAgICAgICAgIDxsYWJlbD5NYXhpbXVtIFJBTSAoTWlCKSA8aW5wdXQgaWQ9XCJvd25lci1tZW1vcnlcIiB0eXBlPVwibnVtYmVyXCIgbWluPVwiNTEyXCIgbWF4PVwiMjYyMTQ0XCIgcmVxdWlyZWQ+PC9sYWJlbD5cbiAgICAgICAgICA8bGFiZWw+TWF4aW11bSBDUFUgY29yZXMgPGlucHV0IGlkPVwib3duZXItY3B1XCIgdHlwZT1cIm51bWJlclwiIG1pbj1cIjFcIiBtYXg9XCIyNTZcIiBzdGVwPVwiMC4yNVwiIHJlcXVpcmVkPjwvbGFiZWw+XG4gICAgICAgICAgPGxhYmVsPjxpbnB1dCBpZD1cIm93bmVyLWlkbGVcIiB0eXBlPVwiY2hlY2tib3hcIj4gT25seSB3aGVuIGlkbGUgZm9yIGZpdmUgbWludXRlczwvbGFiZWw+XG4gICAgICAgICAgPGxhYmVsPjxpbnB1dCBpZD1cIm93bmVyLWFjXCIgdHlwZT1cImNoZWNrYm94XCI+IE9ubHkgb24gbWFpbnMgcG93ZXI8L2xhYmVsPlxuICAgICAgICAgIDxidXR0b24gdHlwZT1cInN1Ym1pdFwiPlNhdmUgc2V0dGluZ3M8L2J1dHRvbj5cbiAgICAgICAgICA8cCBjbGFzcz1cIm11dGVkXCI+Q2hhbmdlcyBhcHBseSB0byBuZXcgd29yay4gUnVubmluZyB0YXNrcyBmaW5pc2ggd2l0aGluIHRoZSBwcmV2aW91cyBsaW1pdHMuPC9wPlxuICAgICAgICA8L2Zvcm0+XG4gICAgICA8L2RldGFpbHM+XG4gICAgICA8cCBpZD1cImNvbnRyb2wtZXJyb3JcIiBjbGFzcz1cImVyclwiIGhpZGRlbj48L3A+XG4gICAgPC9zZWN0aW9uPlxuICA8L21haW4+XG4gIDxzY3JpcHQ+XG4gICAgY29uc3Qgc3RhdHVzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3N0YXR1cycpO1xuICAgIGNvbnN0IGZvcm0gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZm9ybScpO1xuICAgIGNvbnN0IHNldHVwID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NldHVwJyk7XG4gICAgY29uc3QgcnVubmluZyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdydW5uaW5nJyk7XG4gICAgY29uc3QgZmFjdHMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZmFjdHMnKTtcbiAgICBjb25zdCBzdGF0cyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzdGF0cycpO1xuICAgIGNvbnN0IGxvZyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsb2cnKTtcbiAgICBjb25zdCBwYXVzZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwYXVzZScpO1xuICAgIGNvbnN0IHJlc3VtZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1bWUnKTtcblxuICAgIGZ1bmN0aW9uIHNob3coaWQsIHRleHQpIHtcbiAgICAgIGNvbnN0IGVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpO1xuICAgICAgZWwuaGlkZGVuID0gIXRleHQ7XG4gICAgICBlbC50ZXh0Q29udGVudCA9IHRleHQgfHwgJyc7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gc3RhdChsYWJlbCwgdmFsdWUpIHtcbiAgICAgIHJldHVybiBgPGRpdj48ZGl2IGNsYXNzPVwibXV0ZWRcIj4ke2xhYmVsfTwvZGl2PjxkaXY+JHt2YWx1ZSA/PyAn4oCUJ308L2Rpdj48L2Rpdj5gO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHdvcmtlckNvcHkoZGF0YSkge1xuICAgICAgY29uc3QgcGF5bG9hZCA9IGRhdGEud29ya2VyIHx8IHt9O1xuICAgICAgY29uc3QgcmF3ID0gcGF5bG9hZC5zdGF0ZSB8fCAoZGF0YS5sb2NhbF9ydW5uaW5nID8gJ3J1bm5pbmcnIDogJ29mZmxpbmUnKTtcbiAgICAgIGNvbnN0IHN0YXRlID0gKHJhdyA9PT0gJ29mZmxpbmUnICYmIGRhdGEubG9jYWxfcnVubmluZykgPyAnY2hlY2tpbmcgaW4nIDogcmF3O1xuICAgICAgY29uc3QgdGFzayA9IHBheWxvYWQuY3VycmVudF90YXNrIHx8IHt9O1xuICAgICAgY29uc3Qgb3BlcmF0aW9uID0gKHRhc2sub3BlcmF0aW9uIHx8ICcnKS5yZXBsYWNlKC9fL2csICcgJykudHJpbSgpO1xuICAgICAgY29uc3QgcnVubmluZyA9IHBheWxvYWQudGFza3NfcnVubmluZyB8fCAob3BlcmF0aW9uID8gMSA6IDApO1xuICAgICAgbGV0IGFjdGl2aXR5ID0gJ1dhaXRpbmcgZm9yIHdvcmsnO1xuICAgICAgaWYgKHJ1bm5pbmcgPiAxKSBhY3Rpdml0eSA9ICdXb3JraW5nIG9uICcgKyBydW5uaW5nICsgJyB0YXNrcyc7XG4gICAgICBlbHNlIGlmIChvcGVyYXRpb24pIGFjdGl2aXR5ID0gJ1dvcmtpbmcgb24gJyArIG9wZXJhdGlvbjtcbiAgICAgIGVsc2UgaWYgKGRhdGEuZHJhaW5pbmcgfHwgc3RhdGUgPT09ICdwYXVzZWQnKSBhY3Rpdml0eSA9ICdOb3QgdGFraW5nIG5ldyB3b3JrJztcbiAgICAgIGVsc2UgaWYgKHN0YXRlID09PSAnYnVzeScpIGFjdGl2aXR5ID0gJ1dvcmtpbmcgb24gYSB0YXNrJztcbiAgICAgIGVsc2UgaWYgKHN0YXRlID09PSAnb2ZmbGluZScgJiYgZGF0YS5sb2NhbF9ydW5uaW5nKSBhY3Rpdml0eSA9ICdDaGVja2luZyBpbic7XG4gICAgICBlbHNlIGlmIChzdGF0ZSA9PT0gJ29mZmxpbmUnKSBhY3Rpdml0eSA9ICdOb3QgY29ubmVjdGVkIHlldCc7XG4gICAgICByZXR1cm4geyBzdGF0ZSwgYWN0aXZpdHksIHJ1bm5pbmcsIHRhc2tzOiBwYXlsb2FkLnRhc2tzX2NvbXBsZXRlZCB9O1xuICAgIH1cblxuICAgIGFzeW5jIGZ1bmN0aW9uIGxvYWQoKSB7XG4gICAgICBjb25zdCByZXMgPSBhd2FpdCBmZXRjaCgnL2FwaS9zdGF0ZScpO1xuICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IHJlcy5qc29uKCk7XG4gICAgICBpZiAoZGF0YS5lcnJvciAmJiBkYXRhLnBoYXNlICE9PSAncnVubmluZycpIHtcbiAgICAgICAgc3RhdHVzLmhpZGRlbiA9IGZhbHNlO1xuICAgICAgICBzdGF0dXMuY2xhc3NOYW1lID0gJ2Vycic7XG4gICAgICAgIHN0YXR1cy50ZXh0Q29udGVudCA9IGRhdGEuZXJyb3I7XG4gICAgICAgIGZvcm0uaGlkZGVuID0gdHJ1ZTtcbiAgICAgICAgc2V0dXAuaGlkZGVuID0gdHJ1ZTtcbiAgICAgICAgcnVubmluZy5oaWRkZW4gPSB0cnVlO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAoZGF0YS5waGFzZSA9PT0gJ3BlbmRpbmcnKSB7XG4gICAgICAgIHN0YXR1cy5oaWRkZW4gPSBmYWxzZTtcbiAgICAgICAgc3RhdHVzLmNsYXNzTmFtZSA9ICdjYXJkJztcbiAgICAgICAgc3RhdHVzLnRleHRDb250ZW50ID0gZGF0YS5tZXNzYWdlIHx8ICdSZXF1ZXN0IHNlbnQuIFdlIHdpbGwgc2V0IHRoaXMgY29tcHV0ZXIgdXAgaGVyZSBhZnRlciBzb21lb25lIG9uIHRoZSB0ZWFtIGFwcHJvdmVzIGl0Lic7XG4gICAgICAgIGZvcm0uaGlkZGVuID0gdHJ1ZTtcbiAgICAgICAgc2V0dXAuaGlkZGVuID0gdHJ1ZTtcbiAgICAgICAgcnVubmluZy5oaWRkZW4gPSB0cnVlO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAoZGF0YS5waGFzZSA9PT0gJ3NldHVwJykge1xuICAgICAgICBzdGF0dXMuaGlkZGVuID0gZmFsc2U7XG4gICAgICAgIHN0YXR1cy5jbGFzc05hbWUgPSAnY2FyZCc7XG4gICAgICAgIHN0YXR1cy50ZXh0Q29udGVudCA9IGRhdGEubWVzc2FnZSB8fCAnQXBwcm92ZWQuIFNldHVwIGlzIHJ1bm5pbmcgb24gdGhpcyBjb21wdXRlci4nO1xuICAgICAgICBmb3JtLmhpZGRlbiA9IHRydWU7XG4gICAgICAgIHNldHVwLmhpZGRlbiA9IGZhbHNlO1xuICAgICAgICBydW5uaW5nLmhpZGRlbiA9IHRydWU7XG4gICAgICAgIGxvZy50ZXh0Q29udGVudCA9IChkYXRhLmxvZ3MgfHwgW10pLmpvaW4oJ1xcbicpO1xuICAgICAgICBsb2cuc2Nyb2xsVG9wID0gbG9nLnNjcm9sbEhlaWdodDtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKGRhdGEucGhhc2UgPT09ICdydW5uaW5nJykge1xuICAgICAgICBjb25zdCBjb3B5ID0gd29ya2VyQ29weShkYXRhKTtcbiAgICAgICAgc3RhdHVzLmhpZGRlbiA9IGZhbHNlO1xuICAgICAgICBzdGF0dXMuY2xhc3NOYW1lID0gJ2NhcmQnO1xuICAgICAgICBzdGF0dXMudGV4dENvbnRlbnQgPSBkYXRhLm1lc3NhZ2UgfHwgJ1RoaXMgY29tcHV0ZXIgaXMgY29ubmVjdGVkIGFzIGEgd29ya2VyLic7XG4gICAgICAgIGZvcm0uaGlkZGVuID0gdHJ1ZTtcbiAgICAgICAgc2V0dXAuaGlkZGVuID0gIShkYXRhLmxvZ3MgfHwgW10pLmxlbmd0aDtcbiAgICAgICAgaWYgKCFzZXR1cC5oaWRkZW4pIHtcbiAgICAgICAgICBsb2cudGV4dENvbnRlbnQgPSAoZGF0YS5sb2dzIHx8IFtdKS5qb2luKCdcXG4nKTtcbiAgICAgICAgICBsb2cuc2Nyb2xsVG9wID0gbG9nLnNjcm9sbEhlaWdodDtcbiAgICAgICAgfVxuICAgICAgICBydW5uaW5nLmhpZGRlbiA9IGZhbHNlO1xuICAgICAgICBjb25zdCBwb2xpY3kgPSAoZGF0YS53b3JrZXIgfHwge30pLmV4ZWN1dGlvbl9wb2xpY3k7XG4gICAgICAgIGNvbnN0IHByZWYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncHJlZmVyZW5jZXMnKTtcbiAgICAgICAgaWYgKHBvbGljeSAmJiAhcHJlZi5jb250YWlucyhkb2N1bWVudC5hY3RpdmVFbGVtZW50KSkge1xuICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdvd25lci1tZW1vcnknKS52YWx1ZSA9IHBvbGljeS5vd25lcl9tZW1vcnlfbGltaXRfbWI7XG4gICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ293bmVyLWNwdScpLnZhbHVlID0gcG9saWN5Lm93bmVyX2NwdV9saW1pdDtcbiAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnb3duZXItaWRsZScpLmNoZWNrZWQgPSBwb2xpY3kuaWRsZV9vbmx5O1xuICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdvd25lci1hYycpLmNoZWNrZWQgPSBwb2xpY3kuYWNfb25seTtcbiAgICAgICAgfVxuICAgICAgICBzdGF0cy5pbm5lckhUTUwgPSBbXG4gICAgICAgICAgc3RhdCgnU3RhdHVzJywgY29weS5zdGF0ZS5yZXBsYWNlKC9fL2csICcgJykpLFxuICAgICAgICAgIHN0YXQoJ0FjdGl2aXR5JywgY29weS5hY3Rpdml0eSksXG4gICAgICAgICAgc3RhdCgnTWVtb3J5IGZyZWUnLCBkYXRhLm1lbW9yeV9mcmVlKSxcbiAgICAgICAgICBzdGF0KCdUYXNrcyBydW5uaW5nJywgY29weS5ydW5uaW5nKSxcbiAgICAgICAgICBzdGF0KCdUYXNrcyBmaW5pc2hlZCcsIGNvcHkudGFza3MpLFxuICAgICAgICBdLmpvaW4oJycpO1xuICAgICAgICBwYXVzZS5oaWRkZW4gPSBkYXRhLmRyYWluaW5nO1xuICAgICAgICByZXN1bWUuaGlkZGVuID0gIWRhdGEuZHJhaW5pbmc7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmIChkYXRhLnByZXZpZXcpIHtcbiAgICAgICAgc3RhdHVzLmhpZGRlbiA9IHRydWU7XG4gICAgICAgIGZvcm0uaGlkZGVuID0gZmFsc2U7XG4gICAgICAgIHNldHVwLmhpZGRlbiA9IHRydWU7XG4gICAgICAgIHJ1bm5pbmcuaGlkZGVuID0gdHJ1ZTtcbiAgICAgICAgY29uc3QgcCA9IGRhdGEucHJldmlldztcbiAgICAgICAgZmFjdHMuaW5uZXJIVE1MID0gW1xuICAgICAgICAgIFsnQ29tcHV0ZXInLCBwLmNvbXB1dGVyXSxcbiAgICAgICAgICBbJ1N5c3RlbScsIHAuc3lzdGVtXSxcbiAgICAgICAgICBbJ01lbW9yeScsIHAubWVtb3J5XSxcbiAgICAgICAgICBbJ0NQVXMnLCBwLmNwdXNdLFxuICAgICAgICAgIFsnUmVhZHknLCBwLnJlYWR5ID8gJ1llcycgOiAnTm90IHlldCddLFxuICAgICAgICAgIFsnUmVhY2hhYmxlJywgcC5jb25uZWN0ZWQgPyAnWWVzJyA6ICdObyddLFxuICAgICAgICBdLm1hcCgoW2ssIHZdKSA9PiBzdGF0KGssIHYpKS5qb2luKCcnKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBmb3JtLmFkZEV2ZW50TGlzdGVuZXIoJ3N1Ym1pdCcsIGFzeW5jIChldmVudCkgPT4ge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGZvcm0ucXVlcnlTZWxlY3RvcignYnV0dG9uJykuZGlzYWJsZWQgPSB0cnVlO1xuICAgICAgc2hvdygnZm9ybS1lcnJvcicsICcnKTtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IGZldGNoKCcvYXBpL2Vucm9sbCcsIHtcbiAgICAgICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgICAgICBoZWFkZXJzOiB7ICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicgfSxcbiAgICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICBkaXNwbGF5X25hbWU6IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCduYW1lJykudmFsdWUsXG4gICAgICAgICAgICBlbWFpbDogZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2VtYWlsJykudmFsdWUsXG4gICAgICAgICAgICBwaG9uZTogZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Bob25lJykudmFsdWUsXG4gICAgICAgICAgICBub3RlOiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbm90ZScpLnZhbHVlLFxuICAgICAgICAgIH0pLFxuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IHJlcy5qc29uKCk7XG4gICAgICAgIGlmICghcmVzLm9rKSB0aHJvdyBuZXcgRXJyb3IoZGF0YS5lcnJvciB8fCAnQ291bGQgbm90IHNlbmQgdGhlIHJlcXVlc3QuJyk7XG4gICAgICAgIGF3YWl0IGxvYWQoKTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIHNob3coJ2Zvcm0tZXJyb3InLCBlcnJvci5tZXNzYWdlKTtcbiAgICAgICAgZm9ybS5xdWVyeVNlbGVjdG9yKCdidXR0b24nKS5kaXNhYmxlZCA9IGZhbHNlO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgYXN5bmMgZnVuY3Rpb24gY29udHJvbChhY3Rpb24pIHtcbiAgICAgIHBhdXNlLmRpc2FibGVkID0gdHJ1ZTtcbiAgICAgIHJlc3VtZS5kaXNhYmxlZCA9IHRydWU7XG4gICAgICBzaG93KCdjb250cm9sLWVycm9yJywgJycpO1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgcmVzID0gYXdhaXQgZmV0Y2goJy9hcGkvJyArIGFjdGlvbiwgeyBtZXRob2Q6ICdQT1NUJyB9KTtcbiAgICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IHJlcy5qc29uKCk7XG4gICAgICAgIGlmICghcmVzLm9rKSB0aHJvdyBuZXcgRXJyb3IoZGF0YS5lcnJvciB8fCAnQ291bGQgbm90IHVwZGF0ZSB0aGlzIGNvbXB1dGVyLicpO1xuICAgICAgICBhd2FpdCBsb2FkKCk7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBzaG93KCdjb250cm9sLWVycm9yJywgZXJyb3IubWVzc2FnZSk7XG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICBwYXVzZS5kaXNhYmxlZCA9IGZhbHNlO1xuICAgICAgICByZXN1bWUuZGlzYWJsZWQgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncHJlZmVyZW5jZXMnKS5hZGRFdmVudExpc3RlbmVyKCdzdWJtaXQnLCBhc3luYyAoZXZlbnQpID0+IHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCByZXMgPSBhd2FpdCBmZXRjaCgnL2FwaS9wcmVmZXJlbmNlcycsIHttZXRob2Q6ICdQT1NUJywgaGVhZGVyczogeydDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbid9LCBib2R5OiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgb3duZXJfbWVtb3J5X2xpbWl0X21iOiBOdW1iZXIoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ293bmVyLW1lbW9yeScpLnZhbHVlKSxcbiAgICAgICAgICBvd25lcl9jcHVfbGltaXQ6IE51bWJlcihkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnb3duZXItY3B1JykudmFsdWUpLFxuICAgICAgICAgIGlkbGVfb25seTogZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ293bmVyLWlkbGUnKS5jaGVja2VkLFxuICAgICAgICAgIGFjX29ubHk6IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdvd25lci1hYycpLmNoZWNrZWQsXG4gICAgICAgIH0pfSk7XG4gICAgICAgIGlmICghcmVzLm9rKSB0aHJvdyBuZXcgRXJyb3IoJ0NvdWxkIG5vdCBzYXZlIHNldHRpbmdzLiBDaGVjayB0aGUgbGltaXRzIGFuZCBjb25uZWN0aW9uLicpO1xuICAgICAgICBhd2FpdCBsb2FkKCk7XG4gICAgICAgIHNob3coJ2NvbnRyb2wtZXJyb3InLCAnU2V0dGluZ3Mgc2F2ZWQuJyk7XG4gICAgICB9IGNhdGNoIChlcnJvcikgeyBzaG93KCdjb250cm9sLWVycm9yJywgZXJyb3IubWVzc2FnZSk7IH1cbiAgICB9KTtcblxuICAgIHBhdXNlLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJyAsICgpID0+IGNvbnRyb2woJ3BhdXNlJykpO1xuICAgIHJlc3VtZS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IGNvbnRyb2woJ3Jlc3VtZScpKTtcbiAgICBsb2FkKCk7XG4gICAgc2V0SW50ZXJ2YWwobG9hZCwgMjAwMCk7XG4gIDwvc2NyaXB0PlxuPC9ib2R5PlxuPC9odG1sPlxuIiwiaG9zdF9pbnZlbnRvcnkucHkiOiJcIlwiXCJDb2xsZWN0IGhvc3Qgb3BlcmF0aW9uYWwgaW52ZW50b3J5IGZvciBlbnJvbGxtZW50IHJlcXVlc3RzLlwiXCJcIlxuaW1wb3J0IGpzb25cbmltcG9ydCBvc1xuaW1wb3J0IHBsYXRmb3JtXG5pbXBvcnQgcmVcbmltcG9ydCBzaHV0aWxcbmltcG9ydCBzb2NrZXRcbmltcG9ydCBzdWJwcm9jZXNzXG5pbXBvcnQgc3lzXG5pbXBvcnQgdGVtcGZpbGVcbmltcG9ydCB0aW1lXG5pbXBvcnQgdXJsbGliLmVycm9yXG5pbXBvcnQgdXJsbGliLnJlcXVlc3RcbmZyb20gcGF0aGxpYiBpbXBvcnQgUGF0aFxuXG5QUk9CRV9IT1NUID0gJ3NwZWVkLmNsb3VkZmxhcmUuY29tJ1xuUFJPQkVfUEFUSCA9ICcvX191cCdcblBST0JFX0JZVEVTID0gMiAqIDEwMjQgKiAxMDI0XG5QUk9CRV9USU1FT1VUID0gMTBcblxuXG5kZWYgY29tbWFuZF9vdXRwdXQoYXJncywgdGltZW91dD04KTpcbiAgICB0cnk6XG4gICAgICAgIHJldHVybiBzdWJwcm9jZXNzLnJ1bihhcmdzLCBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLCBzdGRlcnI9c3VicHJvY2Vzcy5ERVZOVUxMLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZW91dD10aW1lb3V0LCBjaGVjaz1GYWxzZSkuc3Rkb3V0LmRlY29kZShlcnJvcnM9J3JlcGxhY2UnKVxuICAgIGV4Y2VwdCAoT1NFcnJvciwgc3VicHJvY2Vzcy5TdWJwcm9jZXNzRXJyb3IpOlxuICAgICAgICByZXR1cm4gJydcblxuXG5kZWYgbnVtYmVyKHZhbHVlKTpcbiAgICB0cnk6XG4gICAgICAgIG51bWJlcl92YWx1ZSA9IGZsb2F0KHZhbHVlKVxuICAgIGV4Y2VwdCAoVHlwZUVycm9yLCBWYWx1ZUVycm9yKTpcbiAgICAgICAgcmV0dXJuIE5vbmVcbiAgICBpZiBub3QgbnVtYmVyX3ZhbHVlIG9yIG51bWJlcl92YWx1ZSA8IDAgb3IgbnVtYmVyX3ZhbHVlICE9IG51bWJlcl92YWx1ZTpcbiAgICAgICAgcmV0dXJuIE5vbmVcbiAgICByZXR1cm4gaW50KG51bWJlcl92YWx1ZSkgaWYgbnVtYmVyX3ZhbHVlID09IGludChudW1iZXJfdmFsdWUpIGVsc2UgbnVtYmVyX3ZhbHVlXG5cblxuZGVmIGhvc3Rfb3NfbmFtZSgpOlxuICAgIHN5c3RlbSA9IHBsYXRmb3JtLnN5c3RlbSgpXG4gICAgaWYgc3lzdGVtID09ICdEYXJ3aW4nOlxuICAgICAgICByZXR1cm4gJ21hY29zJ1xuICAgIGlmIHN5c3RlbSA9PSAnV2luZG93cyc6XG4gICAgICAgIHJldHVybiAnd2luZG93cydcbiAgICByZXR1cm4gJ2xpbnV4J1xuXG5cbmRlZiBsaW51eF9yZWxlYXNlKCk6XG4gICAgdHJ5OlxuICAgICAgICByZXR1cm4gcGxhdGZvcm0uZnJlZWRlc2t0b3Bfb3NfcmVsZWFzZSgpXG4gICAgZXhjZXB0IE9TRXJyb3I6XG4gICAgICAgIHJldHVybiB7fVxuXG5cbmRlZiBtZW1vcnlfYnl0ZXMoKTpcbiAgICBpZiBwbGF0Zm9ybS5zeXN0ZW0oKSA9PSAnRGFyd2luJzpcbiAgICAgICAgcmV0dXJuIG51bWJlcihjb21tYW5kX291dHB1dChbJ3N5c2N0bCcsICctbicsICdody5tZW1zaXplJ10pKVxuICAgIGlmIHBsYXRmb3JtLnN5c3RlbSgpID09ICdXaW5kb3dzJzpcbiAgICAgICAgcmV0dXJuIE5vbmVcbiAgICByZXR1cm4gbmV4dCgobnVtYmVyKGxpbmUuc3BsaXQoKVsxXSkgKiAxMDI0IGZvciBsaW5lIGluIFBhdGgoJy9wcm9jL21lbWluZm8nKS5yZWFkX3RleHQoKS5zcGxpdGxpbmVzKClcbiAgICAgICAgICAgICAgICAgaWYgbGluZS5zdGFydHN3aXRoKCdNZW1Ub3RhbDonKSksIE5vbmUpXG5cblxuZGVmIG1lbWluZm9fcGFnZXMoKTpcbiAgICBpbmZvID0ge31cbiAgICBmb3IgbGluZSBpbiBQYXRoKCcvcHJvYy9tZW1pbmZvJykucmVhZF90ZXh0KCkuc3BsaXRsaW5lcygpOlxuICAgICAgICBwYXJ0cyA9IGxpbmUuc3BsaXQoKVxuICAgICAgICBpZiBsZW4ocGFydHMpID09IDM6XG4gICAgICAgICAgICBpbmZvW3BhcnRzWzBdLnJzdHJpcCgnOicpXSA9IGludChwYXJ0c1sxXSlcbiAgICByZXR1cm4gaW5mb1xuXG5cbmRlZiBkYXJ3aW5fdm1fcGFnZXMoKTpcbiAgICB0ZXh0ID0gY29tbWFuZF9vdXRwdXQoWyd2bV9zdGF0J10pXG4gICAgcGFnZXMgPSB7fVxuICAgIHBhZ2Vfc2l6ZSA9IG51bWJlcihjb21tYW5kX291dHB1dChbJ3N5c2N0bCcsICctbicsICdody5wYWdlc2l6ZSddKSlcbiAgICBmb3IgbGluZSBpbiB0ZXh0LnNwbGl0bGluZXMoKTpcbiAgICAgICAgbWF0Y2ggPSByZS5tYXRjaChyJ3BhZ2Ugc2l6ZSBvZiAoXFxkKykgYnl0ZXMnLCBsaW5lKVxuICAgICAgICBpZiBtYXRjaDpcbiAgICAgICAgICAgIHBhZ2Vfc2l6ZSA9IGludChtYXRjaC5ncm91cCgxKSlcbiAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIGtleSwgXywgcmF3ID0gbGluZS5wYXJ0aXRpb24oJzonKVxuICAgICAgICBkaWdpdHMgPSByYXcuc3RyaXAoKS5yc3RyaXAoJy4nKVxuICAgICAgICBpZiBkaWdpdHMuaXNkaWdpdCgpOlxuICAgICAgICAgICAgcGFnZXNba2V5LnN0cmlwKCldID0gaW50KGRpZ2l0cylcbiAgICByZWNsYWltYWJsZSA9IHN1bShwYWdlcy5nZXQobmFtZSwgMCkgZm9yIG5hbWUgaW4gKFxuICAgICAgICAnUGFnZXMgZnJlZScsICdQYWdlcyBpbmFjdGl2ZScsICdQYWdlcyBzcGVjdWxhdGl2ZScsICdQYWdlcyBwdXJnZWFibGUnKSlcbiAgICByZXR1cm4gcGFnZV9zaXplLCByZWNsYWltYWJsZVxuXG5cbmRlZiBhdmFpbGFibGVfbWVtb3J5X2J5dGVzKCk6XG4gICAgaWYgcGxhdGZvcm0uc3lzdGVtKCkgPT0gJ0xpbnV4JzpcbiAgICAgICAgaW5mbyA9IG1lbWluZm9fcGFnZXMoKVxuICAgICAgICBraWIgPSBpbmZvLmdldCgnTWVtQXZhaWxhYmxlJywgaW5mby5nZXQoJ01lbUZyZWUnKSlcbiAgICAgICAgcmV0dXJuIGtpYiAqIDEwMjQgaWYga2liIGVsc2UgTm9uZVxuICAgIGlmIHBsYXRmb3JtLnN5c3RlbSgpID09ICdEYXJ3aW4nOlxuICAgICAgICBwYWdlX3NpemUsIHJlY2xhaW1hYmxlID0gZGFyd2luX3ZtX3BhZ2VzKClcbiAgICAgICAgcmV0dXJuIHBhZ2Vfc2l6ZSAqIHJlY2xhaW1hYmxlIGlmIHBhZ2Vfc2l6ZSBhbmQgcmVjbGFpbWFibGUgZWxzZSBOb25lXG4gICAgcmV0dXJuIE5vbmVcblxuXG5kZWYgY3B1X2ludmVudG9yeSgpOlxuICAgIGlmIHBsYXRmb3JtLnN5c3RlbSgpID09ICdEYXJ3aW4nOlxuICAgICAgICBtb2RlbCA9IGNvbW1hbmRfb3V0cHV0KFsnc3lzY3RsJywgJy1uJywgJ21hY2hkZXAuY3B1LmJyYW5kX3N0cmluZyddKS5zdHJpcCgpIG9yIE5vbmVcbiAgICAgICAgbG9naWNhbCA9IG51bWJlcihjb21tYW5kX291dHB1dChbJ3N5c2N0bCcsICctbicsICdody5sb2dpY2FsY3B1J10pKVxuICAgICAgICBwaHlzaWNhbCA9IG51bWJlcihjb21tYW5kX291dHB1dChbJ3N5c2N0bCcsICctbicsICdody5waHlzaWNhbGNwdSddKSlcbiAgICAgICAgc29ja2V0cyA9IG51bWJlcihjb21tYW5kX291dHB1dChbJ3N5c2N0bCcsICctbicsICdody5wYWNrYWdlcyddKSlcbiAgICAgICAgbWluX21oeiA9IG51bWJlcihjb21tYW5kX291dHB1dChbJ3N5c2N0bCcsICctbicsICdody5jcHVmcmVxdWVuY3lfbWluJ10pKVxuICAgICAgICBtYXhfbWh6ID0gbnVtYmVyKGNvbW1hbmRfb3V0cHV0KFsnc3lzY3RsJywgJy1uJywgJ2h3LmNwdWZyZXF1ZW5jeV9tYXgnXSkpXG4gICAgICAgIGlmIG1pbl9taHo6XG4gICAgICAgICAgICBtaW5fbWh6IC89IDFfMDAwXzAwMFxuICAgICAgICBpZiBtYXhfbWh6OlxuICAgICAgICAgICAgbWF4X21oeiAvPSAxXzAwMF8wMDBcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICdjcHVfbW9kZWwnOiBtb2RlbCxcbiAgICAgICAgICAgICdjcHVfdmVuZG9yJzogbW9kZWwuc3BsaXQoKVswXSBpZiBtb2RlbCBlbHNlIE5vbmUsXG4gICAgICAgICAgICAnY3B1X3NvY2tldHMnOiBzb2NrZXRzLFxuICAgICAgICAgICAgJ3BoeXNpY2FsX2NwdV9jb3Jlcyc6IHBoeXNpY2FsLFxuICAgICAgICAgICAgJ2xvZ2ljYWxfY3B1cyc6IGxvZ2ljYWwgb3Igb3NfY3B1X2NvdW50KCksXG4gICAgICAgICAgICAnY3B1X21pbl9taHonOiBtaW5fbWh6LFxuICAgICAgICAgICAgJ2NwdV9tYXhfbWh6JzogbWF4X21oeixcbiAgICAgICAgfVxuICAgIGlmIHBsYXRmb3JtLnN5c3RlbSgpID09ICdMaW51eCc6XG4gICAgICAgIG1vZGVsID0gTm9uZVxuICAgICAgICB2ZW5kb3IgPSBOb25lXG4gICAgICAgIHRyeTpcbiAgICAgICAgICAgIGZvciBsaW5lIGluIFBhdGgoJy9wcm9jL2NwdWluZm8nKS5yZWFkX3RleHQoKS5zcGxpdGxpbmVzKCk6XG4gICAgICAgICAgICAgICAgaWYgbGluZS5zdGFydHN3aXRoKCdtb2RlbCBuYW1lJyk6XG4gICAgICAgICAgICAgICAgICAgIG1vZGVsID0gbGluZS5zcGxpdCgnOicsIDEpWzFdLnN0cmlwKClcbiAgICAgICAgICAgICAgICBpZiBsaW5lLnN0YXJ0c3dpdGgoJ3ZlbmRvcl9pZCcpOlxuICAgICAgICAgICAgICAgICAgICB2ZW5kb3IgPSBsaW5lLnNwbGl0KCc6JywgMSlbMV0uc3RyaXAoKVxuICAgICAgICBleGNlcHQgT1NFcnJvcjpcbiAgICAgICAgICAgIHBhc3NcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICdjcHVfbW9kZWwnOiBtb2RlbCxcbiAgICAgICAgICAgICdjcHVfdmVuZG9yJzogdmVuZG9yLFxuICAgICAgICAgICAgJ2NwdV9zb2NrZXRzJzogTm9uZSxcbiAgICAgICAgICAgICdwaHlzaWNhbF9jcHVfY29yZXMnOiBOb25lLFxuICAgICAgICAgICAgJ2xvZ2ljYWxfY3B1cyc6IG9zX2NwdV9jb3VudCgpLFxuICAgICAgICAgICAgJ2NwdV9taW5fbWh6JzogTm9uZSxcbiAgICAgICAgICAgICdjcHVfbWF4X21oeic6IE5vbmUsXG4gICAgICAgIH1cbiAgICByZXR1cm4geydsb2dpY2FsX2NwdXMnOiBvc19jcHVfY291bnQoKX1cblxuXG5kZWYgb3NfY3B1X2NvdW50KCk6XG4gICAgcmV0dXJuIG9zLmNwdV9jb3VudCgpIG9yIDFcblxuXG5kZWYgZGlza19pbnZlbnRvcnlfZGFyd2luKCk6XG4gICAgZGlza3MgPSBbXVxuICAgIGxpc3RpbmcgPSBjb21tYW5kX291dHB1dChbJ2Rpc2t1dGlsJywgJ2xpc3QnLCAncGxpc3QnXSlcbiAgICBpZiBub3QgbGlzdGluZzpcbiAgICAgICAgcmV0dXJuIGRpc2tzXG4gICAgdHJ5OlxuICAgICAgICBpbXBvcnQgcGxpc3RsaWJcbiAgICAgICAgcGF5bG9hZCA9IHBsaXN0bGliLmxvYWRzKGxpc3RpbmcuZW5jb2RlKCkpXG4gICAgZXhjZXB0IChJbXBvcnRFcnJvciwgVmFsdWVFcnJvciwgcGxpc3RsaWIuSW52YWxpZEZpbGVFeGNlcHRpb24pOlxuICAgICAgICByZXR1cm4gZGlza3NcbiAgICBmb3IgaW5kZXgsIGVudHJ5IGluIGVudW1lcmF0ZShwYXlsb2FkLmdldCgnQWxsRGlza3NBbmRQYXJ0aXRpb25zJywgW10pWzo2NF0pOlxuICAgICAgICBzaXplID0gbnVtYmVyKGVudHJ5LmdldCgnU2l6ZScpKVxuICAgICAgICBtb2RlbCA9IGVudHJ5LmdldCgnRGV2aWNlSWRlbnRpZmllcicpIG9yIGVudHJ5LmdldCgnQ29udGVudCcsICcnKVxuICAgICAgICBtZWRpYSA9ICdzc2QnIGlmIGVudHJ5LmdldCgnU29saWRTdGF0ZScpIGVsc2UgJ2hkZCdcbiAgICAgICAgZGlza3MuYXBwZW5kKHtcbiAgICAgICAgICAgICdkZXZpY2Vfa2V5JzogZidkaXNrLXtpbmRleH0nLFxuICAgICAgICAgICAgJ21vZGVsJzogc3RyKG1vZGVsKVs6MjU1XSxcbiAgICAgICAgICAgICdtZWRpYV90eXBlJzogbWVkaWEsXG4gICAgICAgICAgICAndHJhbnNwb3J0JzogTm9uZSxcbiAgICAgICAgICAgICdjYXBhY2l0eV9ieXRlcyc6IHNpemUsXG4gICAgICAgICAgICAncmVtb3ZhYmxlJzogYm9vbChlbnRyeS5nZXQoJ1JlbW92YWJsZScpKSxcbiAgICAgICAgfSlcbiAgICByZXR1cm4gZGlza3NcblxuXG5kZWYgZGlza19ieXRlc190b3RhbCgpOlxuICAgIGlmIHBsYXRmb3JtLnN5c3RlbSgpID09ICdEYXJ3aW4nOlxuICAgICAgICB0b3RhbCA9IDBcbiAgICAgICAgZm9yIGRpc2sgaW4gZGlza19pbnZlbnRvcnlfZGFyd2luKCk6XG4gICAgICAgICAgICBpZiBkaXNrLmdldCgnY2FwYWNpdHlfYnl0ZXMnKTpcbiAgICAgICAgICAgICAgICB0b3RhbCArPSBkaXNrWydjYXBhY2l0eV9ieXRlcyddXG4gICAgICAgIHJldHVybiB0b3RhbCBvciBOb25lXG4gICAgaWYgcGxhdGZvcm0uc3lzdGVtKCkgPT0gJ0xpbnV4JzpcbiAgICAgICAgcmV0dXJuIHNodXRpbC5kaXNrX3VzYWdlKCcvJykudG90YWxcbiAgICByZXR1cm4gTm9uZVxuXG5cbmRlZiBwb3dlcl9pbnZlbnRvcnlfZGFyd2luKCk6XG4gICAgdGV4dCA9IGNvbW1hbmRfb3V0cHV0KFsncG1zZXQnLCAnLWcnLCAnYmF0dCddKVxuICAgIGFjID0gJ0FDIFBvd2VyJyBpbiB0ZXh0IG9yIFwiTm93IGRyYXdpbmcgZnJvbSAnQUMgUG93ZXInXCIgaW4gdGV4dFxuICAgIHBlcmNlbnQgPSBOb25lXG4gICAgbWF0Y2ggPSByZS5zZWFyY2gocicoXFxkKyklJywgdGV4dClcbiAgICBpZiBtYXRjaDpcbiAgICAgICAgcGVyY2VudCA9IGludChtYXRjaC5ncm91cCgxKSlcbiAgICBiYXR0ZXJ5X3ByZXNlbnQgPSAnSW50ZXJuYWxCYXR0ZXJ5JyBpbiB0ZXh0IG9yIHBlcmNlbnQgaXMgbm90IE5vbmVcbiAgICByZXR1cm4ge1xuICAgICAgICAnYmF0dGVyeV9wcmVzZW50JzogYmF0dGVyeV9wcmVzZW50LFxuICAgICAgICAnYWNfY29ubmVjdGVkJzogYWMsXG4gICAgICAgICdiYXR0ZXJ5X3BlcmNlbnQnOiBwZXJjZW50LFxuICAgICAgICAnYmF0dGVyeV9zdGF0dXMnOiAnRGlzY2hhcmdpbmcnIGlmICdkaXNjaGFyZ2luZycgaW4gdGV4dC5sb3dlcigpIGVsc2UgTm9uZSxcbiAgICAgICAgJ2JhdHRlcnlfcmVtYWluaW5nX3NlY29uZHMnOiBOb25lLFxuICAgICAgICAncG93ZXJfcHJvZmlsZSc6IE5vbmUsXG4gICAgfVxuXG5cbmRlZiBtYWNfbW9kZWwoKTpcbiAgICB0ZXh0ID0gY29tbWFuZF9vdXRwdXQoWydzeXNjdGwnLCAnLW4nLCAnaHcubW9kZWwnXSkuc3RyaXAoKVxuICAgIHJldHVybiAnQXBwbGUnLCB0ZXh0IG9yIE5vbmVcblxuXG5kZWYgbmV0d29ya19pbnZlbnRvcnlfZGFyd2luKCk6XG4gICAgaW50ZXJmYWNlcyA9IFtdXG4gICAgdGV4dCA9IGNvbW1hbmRfb3V0cHV0KFsnbmV0d29ya3NldHVwJywgJy1saXN0YWxsaGFyZHdhcmVwb3J0cyddKVxuICAgIGN1cnJlbnQgPSB7fVxuICAgIGZvciBsaW5lIGluIHRleHQuc3BsaXRsaW5lcygpOlxuICAgICAgICBpZiBsaW5lLnN0YXJ0c3dpdGgoJ0hhcmR3YXJlIFBvcnQ6Jyk6XG4gICAgICAgICAgICBjdXJyZW50ID0geydjb25uZWN0aW9uX3R5cGUnOiBsaW5lLnNwbGl0KCc6JywgMSlbMV0uc3RyaXAoKX1cbiAgICAgICAgZWxpZiBsaW5lLnN0YXJ0c3dpdGgoJ0RldmljZTonKTpcbiAgICAgICAgICAgIGRldmljZSA9IGxpbmUuc3BsaXQoJzonLCAxKVsxXS5zdHJpcCgpXG4gICAgICAgICAgICBzcGVlZCA9IG51bWJlcihjb21tYW5kX291dHB1dChbJ2lmY29uZmlnJywgZGV2aWNlXSkuc3BsaXQoJ21lZGlhOicpWy0xXS5zcGxpdCgpWzBdLnJlcGxhY2UoJ2Jhc2VUJywgJycpKSBpZiBzaHV0aWwud2hpY2goJ2lmY29uZmlnJykgZWxzZSBOb25lXG4gICAgICAgICAgICBpbnRlcmZhY2VzLmFwcGVuZCh7XG4gICAgICAgICAgICAgICAgJ2RldmljZV9rZXknOiBkZXZpY2UsXG4gICAgICAgICAgICAgICAgJ2Nvbm5lY3Rpb25fdHlwZSc6IGN1cnJlbnQuZ2V0KCdjb25uZWN0aW9uX3R5cGUnKSxcbiAgICAgICAgICAgICAgICAnbGlua19zdGF0ZSc6ICd1cCcsXG4gICAgICAgICAgICAgICAgJ3NwZWVkX21icHMnOiBzcGVlZCxcbiAgICAgICAgICAgIH0pXG4gICAgcmV0dXJuIGludGVyZmFjZXNbOjY0XVxuXG5cbmRlZiByZWFkaW5lc3NfZGFyd2luKCk6XG4gICAgaG9tZWJyZXcgPSBzaHV0aWwud2hpY2goJ2JyZXcnKSBpcyBub3QgTm9uZVxuICAgIGh5cGVydmlzb3Jfc3VwcG9ydCA9IGNvbW1hbmRfb3V0cHV0KFsnc3lzY3RsJywgJy1uJywgJ2tlcm4uaHZfc3VwcG9ydCddKS5zdHJpcCgpXG4gICAgcmV0dXJuIHtcbiAgICAgICAgIyBEb2NrZXIgcnVucyBpbnNpZGUgdGhlIExpbWEgZ3Vlc3QgYW5kIGlzIGluc3RhbGxlZCBhZnRlciBhcHByb3ZhbC5cbiAgICAgICAgJ2RvY2tlcic6IE5vbmUsXG4gICAgICAgICdzeXN0ZW1kX2Nncm91cHNfdjInOiBOb25lLFxuICAgICAgICAndmlydHVhbGl6YXRpb24nOiB7JzAnOiBGYWxzZSwgJzEnOiBUcnVlfS5nZXQoaHlwZXJ2aXNvcl9zdXBwb3J0KSxcbiAgICAgICAgJ2hvc3RfaHlwZXJ2aXNvcic6IHsnMCc6IEZhbHNlLCAnMSc6IFRydWV9LmdldChoeXBlcnZpc29yX3N1cHBvcnQpLFxuICAgICAgICAnbGltYSc6IHNodXRpbC53aGljaCgnbGltYWN0bCcpIGlzIG5vdCBOb25lLFxuICAgICAgICAnaG9tZWJyZXcnOiBob21lYnJldyxcbiAgICAgICAgJ3dzbCc6IE5vbmUsXG4gICAgICAgICd1YnVudHUnOiBOb25lLFxuICAgICAgICAnd3NsZyc6IE5vbmUsXG4gICAgICAgICdzd2FwX2VuYWJsZWQnOiBGYWxzZSxcbiAgICAgICAgJ2FkbWluX3JlcXVpcmVkJzogbm90IGhvbWVicmV3IGFuZCBvcy5nZXRldWlkKCkgIT0gMCxcbiAgICAgICAgJ3Jlc3RhcnRfcmVxdWlyZWQnOiBGYWxzZSxcbiAgICB9XG5cblxuZGVmIHBsYW5uZWRfY2FwYWNpdHlfZGFyd2luKG1lbW9yeSwgY3B1cyk6XG4gICAgaG9zdF9naWIgPSBtYXgobWVtb3J5IG9yIDAsIDEpIC8vICgxMDI0ICoqIDMpXG4gICAgZ2liID0gbWF4KDQsIG1pbigzMiwgaG9zdF9naWIgLy8gMikpXG4gICAgaWYgZ2liID49IGhvc3RfZ2liOlxuICAgICAgICBnaWIgPSBtYXgoMiwgaG9zdF9naWIgLSAyKVxuICAgIGNvcmVzID0gbWF4KDIsIG1pbig4LCBtYXgoaW50KGNwdXMgb3IgMiksIDIpIC8vIDIpKVxuICAgIHJldHVybiB7J21lbW9yeV9ieXRlcyc6IGdpYiAqIDEwMjQgKiogMywgJ2xvZ2ljYWxfY3B1cyc6IGNvcmVzLCAnY2lfbWVtb3J5X3Jlc2VydmVkX2J5dGVzJzogTm9uZX1cblxuXG5kZWYgcmVhZGluZXNzX2xpbnV4KCk6XG4gICAgc3dhcF90b3RhbCA9IDBcbiAgICB0cnk6XG4gICAgICAgIHN3YXBfdG90YWwgPSBuZXh0KGludChsaW5lLnNwbGl0KClbMV0pIGZvciBsaW5lIGluIFBhdGgoJy9wcm9jL21lbWluZm8nKS5yZWFkX3RleHQoKS5zcGxpdGxpbmVzKCkgaWYgbGluZS5zdGFydHN3aXRoKCdTd2FwVG90YWw6JykpXG4gICAgZXhjZXB0IChTdG9wSXRlcmF0aW9uLCBWYWx1ZUVycm9yLCBPU0Vycm9yKTpcbiAgICAgICAgcGFzc1xuICAgIGRvY2tlcl9vayA9IEZhbHNlXG4gICAgY2dyb3VwX29rID0gRmFsc2VcbiAgICBpZiBzaHV0aWwud2hpY2goJ2RvY2tlcicpOlxuICAgICAgICBpbmZvID0gY29tbWFuZF9vdXRwdXQoWydkb2NrZXInLCAnaW5mbycsICctLWZvcm1hdCcsICd7ey5DZ3JvdXBEcml2ZXJ9fSB7ey5DZ3JvdXBWZXJzaW9ufX0nXSlcbiAgICAgICAgZG9ja2VyX29rID0gVHJ1ZVxuICAgICAgICBjZ3JvdXBfb2sgPSBpbmZvLnN0cmlwKCkgPT0gJ3N5c3RlbWQgMidcbiAgICByZXR1cm4ge1xuICAgICAgICAnZG9ja2VyJzogZG9ja2VyX29rLFxuICAgICAgICAnc3lzdGVtZF9jZ3JvdXBzX3YyJzogY2dyb3VwX29rLFxuICAgICAgICAndmlydHVhbGl6YXRpb24nOiBQYXRoKCcvcnVuL3N5c3RlbWQvc3lzdGVtJykuZXhpc3RzKCksXG4gICAgICAgICdsaW1hJzogTm9uZSxcbiAgICAgICAgJ2hvbWVicmV3JzogTm9uZSxcbiAgICAgICAgJ3dzbCc6IE5vbmUsXG4gICAgICAgICd1YnVudHUnOiBsaW51eF9yZWxlYXNlKCkuZ2V0KCdJRCcpID09ICd1YnVudHUnLFxuICAgICAgICAnd3NsZyc6IGJvb2wob3MuZW52aXJvbi5nZXQoJ1dBWUxBTkRfRElTUExBWScpIG9yIG9zLmVudmlyb24uZ2V0KCdESVNQTEFZJykpLFxuICAgICAgICAnc3dhcF9lbmFibGVkJzogc3dhcF90b3RhbCA+IDAsXG4gICAgICAgICdhZG1pbl9yZXF1aXJlZCc6IG9zLmdldGV1aWQoKSAhPSAwLFxuICAgICAgICAncmVzdGFydF9yZXF1aXJlZCc6IEZhbHNlLFxuICAgIH1cblxuXG5kZWYgcGxhbm5lZF9jYXBhY2l0eV9saW51eChtZW1vcnksIGNwdXMsIHJlc2VydmVkPU5vbmUpOlxuICAgIFwiXCJcIkhvc3QgUkFNIGFuZCB0aGUgQ0kgY2FwLiBUaGUgc2VydmVyIHN1YnRyYWN0cyB0aGUgY2FwIGFuZCBhIDUxMiBNaUIgcmVzZXJ2ZSBvbmNlLlwiXCJcIlxuICAgIG1lbW9yeSA9IG1lbW9yeSBvciAwXG4gICAgY3B1cyA9IGNwdXMgb3IgMVxuICAgIHJlc2VydmVkID0gcmVzZXJ2ZWQgb3IgMFxuICAgIHJldHVybiB7J21lbW9yeV9ieXRlcyc6IG1lbW9yeSwgJ2xvZ2ljYWxfY3B1cyc6IGNwdXMsICdjaV9tZW1vcnlfcmVzZXJ2ZWRfYnl0ZXMnOiByZXNlcnZlZCBvciBOb25lfVxuXG5cbmRlZiBsb2FkX3dpbmRvd3Nfc25hcHNob3QocGF0aCk6XG4gICAgcmV0dXJuIGpzb24ubG9hZHMoUGF0aChwYXRoKS5yZWFkX3RleHQoKSlcblxuXG5kZWYgY29sbGVjdF93aW5kb3dzKHBhdGgpOlxuICAgIHNuYXBzaG90ID0gbG9hZF93aW5kb3dzX3NuYXBzaG90KHBhdGgpXG4gICAgaGFyZHdhcmUgPSBzbmFwc2hvdC5nZXQoJ2hhcmR3YXJlJywge30pXG4gICAgdGVsZW1ldHJ5ID0gc25hcHNob3QuZ2V0KCd0ZWxlbWV0cnknLCB7fSlcbiAgICByZWFkaW5lc3MgPSBzbmFwc2hvdC5nZXQoJ3JlYWRpbmVzcycsIHt9KVxuICAgIGNvbm5lY3Rpdml0eSA9IHNuYXBzaG90LmdldCgnY29ubmVjdGl2aXR5Jywge30pXG4gICAgY2FwYWNpdHkgPSBzbmFwc2hvdC5nZXQoJ3BsYW5uZWRfd29ya2VyX2NhcGFjaXR5Jywge30pXG4gICAgcmV0dXJuIGhhcmR3YXJlLCB0ZWxlbWV0cnksIHJlYWRpbmVzcywgY29ubmVjdGl2aXR5LCBjYXBhY2l0eVxuXG5cbmRlZiBjb2xsZWN0X2RhcndpbigpOlxuICAgIG1hbnVmYWN0dXJlciwgbW9kZWwgPSBtYWNfbW9kZWwoKVxuICAgIHJlbGVhc2UgPSBsaW51eF9yZWxlYXNlKCkgaWYgRmFsc2UgZWxzZSB7fVxuICAgIG1lbW9yeSA9IG1lbW9yeV9ieXRlcygpXG4gICAgY3B1cyA9IGNwdV9pbnZlbnRvcnkoKVxuICAgIGhhcmR3YXJlID0ge1xuICAgICAgICAnaG9zdG5hbWUnOiBzb2NrZXQuZ2V0aG9zdG5hbWUoKSxcbiAgICAgICAgJ21hbnVmYWN0dXJlcic6IG1hbnVmYWN0dXJlcixcbiAgICAgICAgJ2hhcmR3YXJlX21vZGVsJzogbW9kZWwsXG4gICAgICAgICdhcmNoaXRlY3R1cmUnOiBwbGF0Zm9ybS5tYWNoaW5lKCksXG4gICAgICAgICdvc19uYW1lJzogJ21hY09TJyxcbiAgICAgICAgJ29zX3ZlcnNpb24nOiBwbGF0Zm9ybS5tYWNfdmVyKClbMF0sXG4gICAgICAgICdrZXJuZWxfdmVyc2lvbic6IHBsYXRmb3JtLnJlbGVhc2UoKSxcbiAgICAgICAgJ21lbW9yeV9ieXRlcyc6IG1lbW9yeSxcbiAgICAgICAgJ2Rpc2tfYnl0ZXMnOiBkaXNrX2J5dGVzX3RvdGFsKCksXG4gICAgICAgICdsb2dpY2FsX2NwdXMnOiBjcHVzLmdldCgnbG9naWNhbF9jcHVzJyksXG4gICAgICAgICoqY3B1cyxcbiAgICAgICAgJ2Rpc2tzJzogZGlza19pbnZlbnRvcnlfZGFyd2luKCksXG4gICAgICAgICduZXR3b3JrX2ludGVyZmFjZXMnOiBuZXR3b3JrX2ludmVudG9yeV9kYXJ3aW4oKSxcbiAgICB9XG4gICAgdGVsZW1ldHJ5ID0ge1xuICAgICAgICAnbWVtb3J5X2F2YWlsYWJsZV9ieXRlcyc6IGF2YWlsYWJsZV9tZW1vcnlfYnl0ZXMoKSxcbiAgICAgICAgKipwb3dlcl9pbnZlbnRvcnlfZGFyd2luKCksXG4gICAgfVxuICAgIHJlYWRpbmVzcyA9IHJlYWRpbmVzc19kYXJ3aW4oKVxuICAgIGNvbm5lY3Rpdml0eSA9IHByb2JlX2Nvbm5lY3Rpdml0eShvcy5lbnZpcm9uLmdldCgnREdFX09SSUdJTicsICcnKSlcbiAgICBjYXBhY2l0eSA9IHBsYW5uZWRfY2FwYWNpdHlfZGFyd2luKG1lbW9yeSwgaGFyZHdhcmVbJ2xvZ2ljYWxfY3B1cyddKVxuICAgIHJldHVybiBoYXJkd2FyZSwgdGVsZW1ldHJ5LCByZWFkaW5lc3MsIGNvbm5lY3Rpdml0eSwgY2FwYWNpdHlcblxuXG5kZWYgY29sbGVjdF9saW51eCgpOlxuICAgIHJlbGVhc2UgPSBsaW51eF9yZWxlYXNlKClcbiAgICBtZW1vcnkgPSBtZW1vcnlfYnl0ZXMoKVxuICAgIGNwdXMgPSBjcHVfaW52ZW50b3J5KClcbiAgICByZXNlcnZlZCA9IE5vbmVcbiAgICByZXNlcnZhdGlvbiA9IFBhdGgoJy9zeXMvZnMvY2dyb3VwL2NpLnNsaWNlL21lbW9yeS5tYXgnKVxuICAgIGlmIHJlc2VydmF0aW9uLmV4aXN0cygpOlxuICAgICAgICByYXcgPSByZXNlcnZhdGlvbi5yZWFkX3RleHQoKS5zdHJpcCgpXG4gICAgICAgIHJlc2VydmVkID0gaW50KHJhdykgaWYgcmF3LmlzZGlnaXQoKSBlbHNlIE5vbmVcbiAgICBoYXJkd2FyZSA9IHtcbiAgICAgICAgJ2hvc3RuYW1lJzogc29ja2V0LmdldGhvc3RuYW1lKCksXG4gICAgICAgICdtYW51ZmFjdHVyZXInOiByZWFkX3RleHQoJy9zeXMvY2xhc3MvZG1pL2lkL3N5c192ZW5kb3InKSxcbiAgICAgICAgJ2hhcmR3YXJlX21vZGVsJzogcmVhZF90ZXh0KCcvc3lzL2NsYXNzL2RtaS9pZC9wcm9kdWN0X25hbWUnKSxcbiAgICAgICAgJ2FyY2hpdGVjdHVyZSc6IHBsYXRmb3JtLm1hY2hpbmUoKSxcbiAgICAgICAgJ29zX25hbWUnOiByZWxlYXNlLmdldCgnTkFNRScpLFxuICAgICAgICAnb3NfdmVyc2lvbic6IHJlbGVhc2UuZ2V0KCdWRVJTSU9OX0lEJyksXG4gICAgICAgICdrZXJuZWxfdmVyc2lvbic6IHBsYXRmb3JtLnJlbGVhc2UoKSxcbiAgICAgICAgJ21lbW9yeV9ieXRlcyc6IG1lbW9yeSxcbiAgICAgICAgJ2Rpc2tfYnl0ZXMnOiBkaXNrX2J5dGVzX3RvdGFsKCksXG4gICAgICAgICdjaV9tZW1vcnlfcmVzZXJ2ZWRfYnl0ZXMnOiByZXNlcnZlZCxcbiAgICAgICAgKipjcHVzLFxuICAgIH1cbiAgICB0ZWxlbWV0cnkgPSB7J21lbW9yeV9hdmFpbGFibGVfYnl0ZXMnOiBhdmFpbGFibGVfbWVtb3J5X2J5dGVzKCl9XG4gICAgcmVhZGluZXNzID0gcmVhZGluZXNzX2xpbnV4KClcbiAgICBjb25uZWN0aXZpdHkgPSBwcm9iZV9jb25uZWN0aXZpdHkob3MuZW52aXJvbi5nZXQoJ0RHRV9PUklHSU4nLCAnJykpXG4gICAgY2FwYWNpdHkgPSBwbGFubmVkX2NhcGFjaXR5X2xpbnV4KG1lbW9yeSwgaGFyZHdhcmUuZ2V0KCdsb2dpY2FsX2NwdXMnKSwgcmVzZXJ2ZWQpXG4gICAgcmV0dXJuIGhhcmR3YXJlLCB0ZWxlbWV0cnksIHJlYWRpbmVzcywgY29ubmVjdGl2aXR5LCBjYXBhY2l0eVxuXG5cbmRlZiByZWFkX3RleHQocGF0aCk6XG4gICAgdHJ5OlxuICAgICAgICByZXR1cm4gUGF0aChwYXRoKS5yZWFkX3RleHQoKS5zdHJpcCgpIG9yIE5vbmVcbiAgICBleGNlcHQgT1NFcnJvcjpcbiAgICAgICAgcmV0dXJuIE5vbmVcblxuXG5kZWYgcHJvYmVfY29ubmVjdGl2aXR5KG9yaWdpbik6XG4gICAgcmVzdWx0ID0geydzZXJ2ZXJfcmVhY2hhYmxlJzogRmFsc2UsICd1cGxpbmtfcHJvYmVfb2snOiBOb25lLCAndXBsaW5rX3Byb2JlX2Jwcyc6IE5vbmV9XG4gICAgaWYgb3JpZ2luOlxuICAgICAgICB0cnk6XG4gICAgICAgICAgICByZXF1ZXN0ID0gdXJsbGliLnJlcXVlc3QuUmVxdWVzdChvcmlnaW4gKyAnL3VwJywgbWV0aG9kPSdHRVQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzPXsnbmdyb2stc2tpcC1icm93c2VyLXdhcm5pbmcnOiAnMScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdVc2VyLUFnZW50JzogJ01vemlsbGEvNS4wIChYMTE7IExpbnV4IHg4Nl82NCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzEyOC4wLjAuMCBTYWZhcmkvNTM3LjM2J30pXG4gICAgICAgICAgICB3aXRoIHVybGxpYi5yZXF1ZXN0LnVybG9wZW4ocmVxdWVzdCwgdGltZW91dD0xMCkgYXMgcmVzcG9uc2U6XG4gICAgICAgICAgICAgICAgcmVzdWx0WydzZXJ2ZXJfcmVhY2hhYmxlJ10gPSByZXNwb25zZS5zdGF0dXMgPT0gMjAwXG4gICAgICAgIGV4Y2VwdCAodXJsbGliLmVycm9yLlVSTEVycm9yLCBWYWx1ZUVycm9yLCBUaW1lb3V0RXJyb3IsIE9TRXJyb3IpOlxuICAgICAgICAgICAgcmVzdWx0WydzZXJ2ZXJfcmVhY2hhYmxlJ10gPSBGYWxzZVxuICAgIHN0YXJ0ZWQgPSB0aW1lLm1vbm90b25pYygpXG4gICAgYm9keSA9IGInXFwwJyAqIFBST0JFX0JZVEVTXG4gICAgdHJ5OlxuICAgICAgICByZXF1ZXN0ID0gdXJsbGliLnJlcXVlc3QuUmVxdWVzdChcbiAgICAgICAgICAgIGYnaHR0cHM6Ly97UFJPQkVfSE9TVH17UFJPQkVfUEFUSH0nLCBkYXRhPWJvZHksIG1ldGhvZD0nUFVUJyxcbiAgICAgICAgICAgIGhlYWRlcnM9eydDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJ30pXG4gICAgICAgIHdpdGggdXJsbGliLnJlcXVlc3QudXJsb3BlbihyZXF1ZXN0LCB0aW1lb3V0PVBST0JFX1RJTUVPVVQpIGFzIHJlc3BvbnNlOlxuICAgICAgICAgICAgcmVzcG9uc2UucmVhZCgpXG4gICAgICAgICAgICBzdGF0dXMgPSByZXNwb25zZS5zdGF0dXNcbiAgICAgICAgZWxhcHNlZCA9IG1heCh0aW1lLm1vbm90b25pYygpIC0gc3RhcnRlZCwgMC4wMDEpXG4gICAgICAgIHJlc3VsdFsndXBsaW5rX3Byb2JlX29rJ10gPSBzdGF0dXMgaW4gKDIwMCwgNDAzKVxuICAgICAgICByZXN1bHRbJ3VwbGlua19wcm9iZV9icHMnXSA9IGludChQUk9CRV9CWVRFUyAvIGVsYXBzZWQpIGlmIHJlc3VsdFsndXBsaW5rX3Byb2JlX29rJ10gZWxzZSAwXG4gICAgZXhjZXB0IHVybGxpYi5lcnJvci5IVFRQRXJyb3IgYXMgZXJyb3I6XG4gICAgICAgIGVsYXBzZWQgPSBtYXgodGltZS5tb25vdG9uaWMoKSAtIHN0YXJ0ZWQsIDAuMDAxKVxuICAgICAgICByZXN1bHRbJ3VwbGlua19wcm9iZV9vayddID0gZXJyb3IuY29kZSA9PSA0MDNcbiAgICAgICAgcmVzdWx0Wyd1cGxpbmtfcHJvYmVfYnBzJ10gPSBpbnQoUFJPQkVfQllURVMgLyBlbGFwc2VkKSBpZiByZXN1bHRbJ3VwbGlua19wcm9iZV9vayddIGVsc2UgMFxuICAgIGV4Y2VwdCAodXJsbGliLmVycm9yLlVSTEVycm9yLCBUaW1lb3V0RXJyb3IsIE9TRXJyb3IpOlxuICAgICAgICByZXN1bHRbJ3VwbGlua19wcm9iZV9vayddID0gRmFsc2VcbiAgICAgICAgcmVzdWx0Wyd1cGxpbmtfcHJvYmVfYnBzJ10gPSAwXG4gICAgcmV0dXJuIHJlc3VsdFxuXG5cbmRlZiBjb2xsZWN0KG9yaWdpbj0nJywgd2luZG93c19zbmFwc2hvdD1Ob25lKTpcbiAgICBpZiB3aW5kb3dzX3NuYXBzaG90OlxuICAgICAgICBoYXJkd2FyZSwgdGVsZW1ldHJ5LCByZWFkaW5lc3MsIGNvbm5lY3Rpdml0eSwgY2FwYWNpdHkgPSBjb2xsZWN0X3dpbmRvd3Mod2luZG93c19zbmFwc2hvdClcbiAgICBlbGlmIHBsYXRmb3JtLnN5c3RlbSgpID09ICdEYXJ3aW4nOlxuICAgICAgICBvcy5lbnZpcm9uWydER0VfT1JJR0lOJ10gPSBvcmlnaW5cbiAgICAgICAgaGFyZHdhcmUsIHRlbGVtZXRyeSwgcmVhZGluZXNzLCBjb25uZWN0aXZpdHksIGNhcGFjaXR5ID0gY29sbGVjdF9kYXJ3aW4oKVxuICAgIGVsc2U6XG4gICAgICAgIG9zLmVudmlyb25bJ0RHRV9PUklHSU4nXSA9IG9yaWdpblxuICAgICAgICBoYXJkd2FyZSwgdGVsZW1ldHJ5LCByZWFkaW5lc3MsIGNvbm5lY3Rpdml0eSwgY2FwYWNpdHkgPSBjb2xsZWN0X2xpbnV4KClcbiAgICByZXR1cm4ge1xuICAgICAgICAnaG9zdF9vcyc6IGhvc3Rfb3NfbmFtZSgpLFxuICAgICAgICAnaG9zdF9pbnZlbnRvcnknOiB7XG4gICAgICAgICAgICAnaGFyZHdhcmUnOiBoYXJkd2FyZSxcbiAgICAgICAgICAgICd0ZWxlbWV0cnknOiB0ZWxlbWV0cnksXG4gICAgICAgICAgICAncmVhZGluZXNzJzogcmVhZGluZXNzLFxuICAgICAgICAgICAgJ2Nvbm5lY3Rpdml0eSc6IGNvbm5lY3Rpdml0eSxcbiAgICAgICAgfSxcbiAgICAgICAgJ3BsYW5uZWRfd29ya2VyX2NhcGFjaXR5JzogY2FwYWNpdHksXG4gICAgfVxuXG5cbmlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6XG4gICAgc25hcHNob3QgPSBzeXMuYXJndlsxXSBpZiBsZW4oc3lzLmFyZ3YpID4gMSBlbHNlIE5vbmVcbiAgICBwcmludChqc29uLmR1bXBzKGNvbGxlY3Qob3MuZW52aXJvbi5nZXQoJ0RHRV9PUklHSU4nLCAnJyksIHNuYXBzaG90KSwgaW5kZW50PTIpKVxuIiwiaG9zdF9pbnZlbnRvcnkucHMxIjoiJEVycm9yQWN0aW9uUHJlZmVyZW5jZSA9ICdTdG9wJ1xuXG5mdW5jdGlvbiBSZWFkTnVtYmVyKFtvYmplY3RdJFZhbHVlKSB7XG4gIGlmICgkbnVsbCAtZXEgJFZhbHVlKSB7IHJldHVybiAkbnVsbCB9XG4gICRwYXJzZWQgPSAwLjBcbiAgaWYgKFtkb3VibGVdOjpUcnlQYXJzZShbc3RyaW5nXSRWYWx1ZSwgW3JlZl0kcGFyc2VkKSAtYW5kICRwYXJzZWQgLWdlIDApIHtcbiAgICByZXR1cm4gW2ludDY0XSRwYXJzZWRcbiAgfVxuICByZXR1cm4gJG51bGxcbn1cblxuJGNvbXB1dGVyID0gR2V0LUNpbUluc3RhbmNlIFdpbjMyX0NvbXB1dGVyU3lzdGVtXG4kb3MgPSBHZXQtQ2ltSW5zdGFuY2UgV2luMzJfT3BlcmF0aW5nU3lzdGVtXG4kY3B1cyA9IEdldC1DaW1JbnN0YW5jZSBXaW4zMl9Qcm9jZXNzb3JcbiRsb2dpY2FsID0gKCRjcHVzIHwgTWVhc3VyZS1PYmplY3QgLVByb3BlcnR5IE51bWJlck9mTG9naWNhbFByb2Nlc3NvcnMgLVN1bSkuU3VtXG4kcGh5c2ljYWwgPSAoJGNwdXMgfCBNZWFzdXJlLU9iamVjdCAtUHJvcGVydHkgTnVtYmVyT2ZDb3JlcyAtU3VtKS5TdW1cbiRtZW1vcnkgPSBSZWFkTnVtYmVyKCRjb21wdXRlci5Ub3RhbFBoeXNpY2FsTWVtb3J5KVxuJGZyZWUgPSBSZWFkTnVtYmVyKCRvcy5GcmVlUGh5c2ljYWxNZW1vcnkpXG5pZiAoJGZyZWUpIHsgJGZyZWUgPSAkZnJlZSAqIDEwMjQgfVxuXG4kZGlza3MgPSBAKEdldC1QaHlzaWNhbERpc2sgfCBTZWxlY3QtT2JqZWN0IC1GaXJzdCA2NCB8IEZvckVhY2gtT2JqZWN0IHtcbiAgQHtcbiAgICBkZXZpY2Vfa2V5ID0gJF8uRGV2aWNlSWRcbiAgICBtb2RlbCA9ICRfLkZyaWVuZGx5TmFtZVxuICAgIG1lZGlhX3R5cGUgPSBpZiAoJF8uTWVkaWFUeXBlIC1lcSAnU1NEJykgeyAnc3NkJyB9IGVsc2VpZiAoJF8uTWVkaWFUeXBlIC1lcSAnSEREJykgeyAnaGRkJyB9IGVsc2UgeyAkbnVsbCB9XG4gICAgdHJhbnNwb3J0ID0gJF8uQnVzVHlwZVxuICAgIGNhcGFjaXR5X2J5dGVzID0gUmVhZE51bWJlcigkXy5TaXplKVxuICAgIHJlbW92YWJsZSA9IFtib29sXSRfLklzUmVtb3ZhYmxlXG4gIH1cbn0pXG5cbiRpbnRlcmZhY2VzID0gQChHZXQtTmV0QWRhcHRlciB8IFNlbGVjdC1PYmplY3QgLUZpcnN0IDY0IHwgRm9yRWFjaC1PYmplY3Qge1xuICBAe1xuICAgIGRldmljZV9rZXkgPSAkXy5OYW1lXG4gICAgY29ubmVjdGlvbl90eXBlID0gJF8uSW50ZXJmYWNlRGVzY3JpcHRpb25cbiAgICBsaW5rX3N0YXRlID0gJF8uU3RhdHVzXG4gICAgc3BlZWRfbWJwcyA9IGlmICgkXy5MaW5rU3BlZWQpIHsgW2ludF0oJF8uTGlua1NwZWVkIC8gMTAwMDAwMCkgfSBlbHNlIHsgJG51bGwgfVxuICB9XG59KVxuXG4kYmF0dGVyeSA9IEdldC1DaW1JbnN0YW5jZSBXaW4zMl9CYXR0ZXJ5IC1FcnJvckFjdGlvbiBTaWxlbnRseUNvbnRpbnVlIHwgU2VsZWN0LU9iamVjdCAtRmlyc3QgMVxuJHBvd2VyID0gR2V0LUNpbUluc3RhbmNlIEJhdHRlcnlTdGF0dXMgLU5hbWVzcGFjZSByb290L1dNSSAtRXJyb3JBY3Rpb24gU2lsZW50bHlDb250aW51ZSB8IFNlbGVjdC1PYmplY3QgLUZpcnN0IDFcblxuJHdzbCA9IEdldC1Db21tYW5kIHdzbC5leGUgLUVycm9yQWN0aW9uIFNpbGVudGx5Q29udGludWVcbiRkaXN0cm9zID0gQCgpXG5pZiAoJHdzbCkge1xuICAkcmF3ID0gJiB3c2wuZXhlIC1sIC1xIDI+JG51bGxcbiAgaWYgKCRyYXcpIHtcbiAgICAkdGV4dCA9IGlmICgkcmF3IC1pcyBbYXJyYXldKSB7ICRyYXcgLWpvaW4gXCJgblwiIH0gZWxzZSB7IFtzdHJpbmddJHJhdyB9XG4gICAgJGRpc3Ryb3MgPSBAKCR0ZXh0IC1yZXBsYWNlIFwiYDBcIiwgJycgLXNwbGl0IFwiYHI/YG5cIiB8IEZvckVhY2gtT2JqZWN0IHsgJF8uVHJpbSgpIH0gfCBXaGVyZS1PYmplY3QgeyAkXyB9KVxuICB9XG59XG5cbiR3c2xNZW1vcnkgPSAkbnVsbFxuJHdzbENwdXMgPSAkbnVsbFxuJGNvbmZpZyA9IEpvaW4tUGF0aCAkZW52OlVTRVJQUk9GSUxFICcud3NsY29uZmlnJ1xuaWYgKFRlc3QtUGF0aCAkY29uZmlnKSB7XG4gIGZvcmVhY2ggKCRsaW5lIGluIEdldC1Db250ZW50ICRjb25maWcpIHtcbiAgICBpZiAoJGxpbmUgLW1hdGNoICdeXFxzKm1lbW9yeVxccyo9XFxzKihcXGQrKUdCJykgeyAkd3NsTWVtb3J5ID0gW2ludDY0XSRNYXRjaGVzWzFdICogMUdCIH1cbiAgICBpZiAoJGxpbmUgLW1hdGNoICdeXFxzKnByb2Nlc3NvcnNcXHMqPVxccyooXFxkKyknKSB7ICR3c2xDcHVzID0gW2ludF0kTWF0Y2hlc1sxXSB9XG4gIH1cbn1cbmlmICgtbm90ICR3c2xNZW1vcnkpIHtcbiAgJGhvc3RHaUIgPSBbTWF0aF06Ok1heChbaW50XSgkbWVtb3J5IC8gMUdCKSwgMSlcbiAgJGd1ZXN0R2lCID0gW01hdGhdOjpNYXgoNCwgW01hdGhdOjpNaW4oMTYsIFtpbnRdKCRob3N0R2lCIC8gMikpKVxuICAkd3NsTWVtb3J5ID0gW2ludDY0XSRndWVzdEdpQiAqIDFHQlxufVxuaWYgKC1ub3QgJHdzbENwdXMpIHtcbiAgJHdzbENwdXMgPSBbTWF0aF06Ok1heCgyLCBbTWF0aF06Ok1pbig4LCBbaW50XSgkbG9naWNhbCAvIDIpKSlcbn1cblxuJHBheWxvYWQgPSBAe1xuICBoYXJkd2FyZSA9IEB7XG4gICAgaG9zdG5hbWUgPSAkZW52OkNPTVBVVEVSTkFNRVxuICAgIG1hbnVmYWN0dXJlciA9ICRjb21wdXRlci5NYW51ZmFjdHVyZXJcbiAgICBoYXJkd2FyZV9tb2RlbCA9ICRjb21wdXRlci5Nb2RlbFxuICAgIGFyY2hpdGVjdHVyZSA9ICRlbnY6UFJPQ0VTU09SX0FSQ0hJVEVDVFVSRVxuICAgIG9zX25hbWUgPSAnV2luZG93cydcbiAgICBvc192ZXJzaW9uID0gJG9zLlZlcnNpb25cbiAgICBrZXJuZWxfdmVyc2lvbiA9ICRvcy5CdWlsZE51bWJlclxuICAgIGNwdV9tb2RlbCA9ICgkY3B1cyB8IFNlbGVjdC1PYmplY3QgLUZpcnN0IDEpLk5hbWVcbiAgICBjcHVfdmVuZG9yID0gKCRjcHVzIHwgU2VsZWN0LU9iamVjdCAtRmlyc3QgMSkuTWFudWZhY3R1cmVyXG4gICAgY3B1X3NvY2tldHMgPSAoJGNwdXMgfCBNZWFzdXJlLU9iamVjdCkuQ291bnRcbiAgICBwaHlzaWNhbF9jcHVfY29yZXMgPSAkcGh5c2ljYWxcbiAgICBsb2dpY2FsX2NwdXMgPSAkbG9naWNhbFxuICAgIG1lbW9yeV9ieXRlcyA9ICRtZW1vcnlcbiAgICBkaXNrX2J5dGVzID0gKEdldC1DaW1JbnN0YW5jZSBXaW4zMl9Mb2dpY2FsRGlzayAtRmlsdGVyIFwiRHJpdmVUeXBlPTNcIiB8IE1lYXN1cmUtT2JqZWN0IFNpemUgLVN1bSkuU3VtXG4gICAgZGlza3MgPSAkZGlza3NcbiAgICBuZXR3b3JrX2ludGVyZmFjZXMgPSAkaW50ZXJmYWNlc1xuICB9XG4gIHRlbGVtZXRyeSA9IEB7XG4gICAgbWVtb3J5X2F2YWlsYWJsZV9ieXRlcyA9ICRmcmVlXG4gICAgYmF0dGVyeV9wcmVzZW50ID0gW2Jvb2xdJGJhdHRlcnlcbiAgICBhY19jb25uZWN0ZWQgPSBpZiAoJHBvd2VyKSB7ICRwb3dlci5Qb3dlck9ubGluZSAtZXEgMSB9IGVsc2UgeyAkbnVsbCB9XG4gICAgYmF0dGVyeV9wZXJjZW50ID0gaWYgKCRiYXR0ZXJ5KSB7IFtpbnRdJGJhdHRlcnkuRXN0aW1hdGVkQ2hhcmdlUmVtYWluaW5nIH0gZWxzZSB7ICRudWxsIH1cbiAgICBiYXR0ZXJ5X3N0YXR1cyA9ICRiYXR0ZXJ5LlN0YXR1c1xuICAgIGJhdHRlcnlfcmVtYWluaW5nX3NlY29uZHMgPSAkbnVsbFxuICAgIHBvd2VyX3Byb2ZpbGUgPSAkbnVsbFxuICB9XG4gIHJlYWRpbmVzcyA9IEB7XG4gICAgZG9ja2VyID0gJGZhbHNlXG4gICAgc3lzdGVtZF9jZ3JvdXBzX3YyID0gJG51bGxcbiAgICB2aXJ0dWFsaXphdGlvbiA9IFtib29sXSR3c2xcbiAgICBsaW1hID0gJGZhbHNlXG4gICAgaG9tZWJyZXcgPSAkZmFsc2VcbiAgICB3c2wgPSBbYm9vbF0kd3NsXG4gICAgdWJ1bnR1ID0gQCgnVWJ1bnR1JywgJ1VidW50dS0yNC4wNCcsICdVYnVudHUtMjIuMDQnKSB8IFdoZXJlLU9iamVjdCB7ICRkaXN0cm9zIC1jb250YWlucyAkXyB9IHwgU2VsZWN0LU9iamVjdCAtRmlyc3QgMVxuICAgIHdzbGcgPSAkdHJ1ZVxuICAgIHN3YXBfZW5hYmxlZCA9ICRmYWxzZVxuICAgIGFkbWluX3JlcXVpcmVkID0gJGZhbHNlXG4gICAgcmVzdGFydF9yZXF1aXJlZCA9ICRmYWxzZVxuICB9XG4gIGNvbm5lY3Rpdml0eSA9IEB7XG4gICAgc2VydmVyX3JlYWNoYWJsZSA9ICRudWxsXG4gICAgdXBsaW5rX3Byb2JlX29rID0gJG51bGxcbiAgICB1cGxpbmtfcHJvYmVfYnBzID0gJG51bGxcbiAgfVxuICBwbGFubmVkX3dvcmtlcl9jYXBhY2l0eSA9IEB7XG4gICAgbWVtb3J5X2J5dGVzID0gJHdzbE1lbW9yeVxuICAgIGxvZ2ljYWxfY3B1cyA9ICR3c2xDcHVzXG4gICAgY2lfbWVtb3J5X3Jlc2VydmVkX2J5dGVzID0gJG51bGxcbiAgfVxufVxuXG4kcGF5bG9hZCB8IENvbnZlcnRUby1Kc29uIC1EZXB0aCA2IC1Db21wcmVzc1xuIiwic2V0dXAucHkiOiIjIS91c3IvYmluL2VudiBweXRob24zXG5cIlwiXCJJZGVtcG90ZW50IExpbnV4L3N5c3RlbWQgaW5zdGFsbGVyOyBydW4gZnJvbSB0aGUgd29ya2VyIHNldHVwIGJ1bmRsZS5cblRoZSBlbnJvbGxtZW50IHRva2VuIGlzIHJlYWQgd2l0aG91dCBlY2hvLiBSZS1ydW5uaW5nIHByZXNlcnZlcyBlbnJvbGxtZW50XG5hbmQgYSByZWxlYXNlIG9mIHRoaXMgcHJvamVjdCdzIHdvcmtlciBpbWFnZS4gQSByZWxlYXNlIGZyb20gYW5vdGhlclxucmVwb3NpdG9yeSBpcyByZXR1cm5lZCB0byB0aGUgYm9vdHN0cmFwIHNvIHRoZSBhc3NpZ25lZCBpbWFnZSBjYW4gcmVwbGFjZSBpdC5cbk5vIHRhc2sgZGF0YSBpcyB3cml0dGVuIHVuZGVyIC9vcHQvZGdlLXdvcmtlci5cblwiXCJcIlxuaW1wb3J0IGFyZ3BhcnNlXG5pbXBvcnQgZ2V0cGFzc1xuaW1wb3J0IGpzb25cbmltcG9ydCBvc1xuZnJvbSBwYXRobGliIGltcG9ydCBQYXRoXG5pbXBvcnQgc2hsZXhcbmltcG9ydCBzaHV0aWxcbmltcG9ydCBzdWJwcm9jZXNzXG5pbXBvcnQgc3lzXG5pbXBvcnQgdXJsbGliLnBhcnNlXG5cblxuQ09NUFVURV9JTUFHRV9SRVBPU0lUT1JZID0gJ3JlZ2lzdHJ5LmdpdGxhYi5jb20vZG9yaWFuLWdyYXktZW50ZXJwcmlzZXMvY29tcHV0ZS9jb21wdXRlLXdvcmtlcidcblxuXG5kZWYgcmVsZWFzZV9pbWFnZShwb2ludGVyKTpcbiAgICB0cnk6XG4gICAgICAgIHJlbGVhc2UgPSBQYXRoKGpzb24ubG9hZHMocG9pbnRlci5yZWFkX3RleHQoKSkpXG4gICAgICAgIGltYWdlID0ganNvbi5sb2FkcygocmVsZWFzZSAvICdjb25maWcuanNvbicpLnJlYWRfdGV4dCgpKS5nZXQoJ2ltYWdlJykgb3IgJydcbiAgICBleGNlcHQgKE9TRXJyb3IsIGpzb24uSlNPTkRlY29kZUVycm9yLCBUeXBlRXJyb3IsIEF0dHJpYnV0ZUVycm9yKTpcbiAgICAgICAgcmV0dXJuICcnXG4gICAgcmV0dXJuIHN0cihpbWFnZSlcblxuXG5kZWYgZW5zdXJlX2N1cnJlbnRfcmVsZWFzZShyb290LCBib290c3RyYXApOlxuICAgIFwiXCJcIktlZXAgYSBjb21wdXRlLXJlcG9zaXRvcnkgcmVsZWFzZS4gUG9pbnQgYW55IG90aGVyIHJlbGVhc2UgYXQgdGhlIGJvb3RzdHJhcC5cIlwiXCJcbiAgICBwb2ludGVyID0gcm9vdCAvICdjdXJyZW50Lmpzb24nXG4gICAgaWYgcG9pbnRlci5leGlzdHMoKSBhbmQgcmVsZWFzZV9pbWFnZShwb2ludGVyKS5zdGFydHN3aXRoKENPTVBVVEVfSU1BR0VfUkVQT1NJVE9SWSArICdAJyk6XG4gICAgICAgIHJldHVyblxuICAgIGlmIHBvaW50ZXIuZXhpc3RzKCk6XG4gICAgICAgIHRyeTpcbiAgICAgICAgICAgIGlmIGpzb24ubG9hZHMocG9pbnRlci5yZWFkX3RleHQoKSkgPT0gc3RyKGJvb3RzdHJhcCk6XG4gICAgICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgIGV4Y2VwdCAoT1NFcnJvciwganNvbi5KU09ORGVjb2RlRXJyb3IsIFR5cGVFcnJvcik6XG4gICAgICAgICAgICBwYXNzXG4gICAgcG9pbnRlci53cml0ZV90ZXh0KGpzb24uZHVtcHMoc3RyKGJvb3RzdHJhcCkpKVxuICAgIHBvaW50ZXIuY2htb2QoMG82MDApXG5cblxuZGVmIHJ1bigqYXJncyk6XG4gICAgcHJpbnQoJyQgJyArIHNobGV4LmpvaW4oc3RyKGl0ZW0pIGZvciBpdGVtIGluIGFyZ3MpLCBmbHVzaD1UcnVlKVxuICAgIHRyeTpcbiAgICAgICAgcmV0dXJuIHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KGFyZ3MsIHN0ZGVycj1zdWJwcm9jZXNzLlNURE9VVCkuZGVjb2RlKCkuc3RyaXAoKVxuICAgIGV4Y2VwdCBzdWJwcm9jZXNzLkNhbGxlZFByb2Nlc3NFcnJvciBhcyBlcnJvcjpcbiAgICAgICAgb3V0cHV0ID0gZXJyb3Iub3V0cHV0LmRlY29kZSgpLnN0cmlwKCkgaWYgZXJyb3Iub3V0cHV0IGVsc2UgJydcbiAgICAgICAgaWYgb3V0cHV0OlxuICAgICAgICAgICAgcHJpbnQob3V0cHV0LCBmbHVzaD1UcnVlKVxuICAgICAgICByYWlzZVxuXG5cbmRlZiBtYWluKCk6XG4gICAgcGFyc2VyID0gYXJncGFyc2UuQXJndW1lbnRQYXJzZXIoKVxuICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0tb3JpZ2luJylcbiAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLWVucm9sbG1lbnQtZmlsZScsIGRlZmF1bHQ9J2Vucm9sbG1lbnQuanNvbicpXG4gICAgYXJncyA9IHBhcnNlci5wYXJzZV9hcmdzKClcbiAgICBlbnJvbGxtZW50X3BhdGggPSBQYXRoKGFyZ3MuZW5yb2xsbWVudF9maWxlKVxuICAgIGVucm9sbG1lbnQgPSBqc29uLmxvYWRzKGVucm9sbG1lbnRfcGF0aC5yZWFkX3RleHQoKSkgaWYgZW5yb2xsbWVudF9wYXRoLmV4aXN0cygpIGVsc2Uge31cbiAgICBhcmdzLm9yaWdpbiA9IGFyZ3Mub3JpZ2luIG9yIGVucm9sbG1lbnQuZ2V0KCdvcmlnaW4nLCAnJylcbiAgICBvcmlnaW4gPSB1cmxsaWIucGFyc2UudXJsc3BsaXQoYXJncy5vcmlnaW4pXG4gICAgbG9jYWwgPSBvcmlnaW4uaG9zdG5hbWUgaW4gKCcxMjcuMC4wLjEnLCAnbG9jYWxob3N0JywgJzo6MScpXG4gICAgaHR0cHNfb2sgPSBvcmlnaW4uc2NoZW1lID09ICdodHRwcycgYW5kIG5vdCBvcmlnaW4ucGF0aCBhbmQgbm90IG9yaWdpbi5xdWVyeSBhbmQgbm90IG9yaWdpbi5mcmFnbWVudFxuICAgIGh0dHBfbG9jYWxfb2sgPSBvcmlnaW4uc2NoZW1lID09ICdodHRwJyBhbmQgbG9jYWwgYW5kIG5vdCBvcmlnaW4ucGF0aCBhbmQgbm90IG9yaWdpbi5xdWVyeSBhbmQgbm90IG9yaWdpbi5mcmFnbWVudFxuICAgIGlmIG5vdCBodHRwc19vayBhbmQgbm90IGh0dHBfbG9jYWxfb2s6XG4gICAgICAgIHBhcnNlci5lcnJvcignVXNlIGFuIEhUVFBTIG9yaWdpbiB3aXRob3V0IGEgcGF0aCcpXG4gICAgaWYgb3MuZ2V0ZXVpZCgpICE9IDAgb3Igc3lzLnZlcnNpb25faW5mbyA8ICgzLCAxMSk6XG4gICAgICAgIHBhcnNlci5lcnJvcignUnVuIGFzIHJvb3Qgb24gTGludXggd2l0aCBQeXRob24gMy4xMSBvciBuZXdlcicpXG4gICAgaWYgcnVuKCdkb2NrZXInLCAnaW5mbycsICctLWZvcm1hdCcsICd7ey5DZ3JvdXBEcml2ZXJ9fSB7ey5DZ3JvdXBWZXJzaW9ufX0nKSAhPSAnc3lzdGVtZCAyJzpcbiAgICAgICAgcGFyc2VyLmVycm9yKCdEb2NrZXIgbXVzdCB1c2Ugc3lzdGVtZCBjZ3JvdXBzIHYyJylcbiAgICByb290ID0gUGF0aCgnL29wdC9kZ2Utd29ya2VyJylcbiAgICBwcmludCgnJCBta2RpciAtcCAtbSA3MDAgL29wdC9kZ2Utd29ya2VyIC9vcHQvZGdlLXdvcmtlci9ib290c3RyYXAnLCBmbHVzaD1UcnVlKVxuICAgIHJvb3QubWtkaXIobW9kZT0wbzcwMCwgZXhpc3Rfb2s9VHJ1ZSlcbiAgICBvcy5jaG1vZChyb290LCAwbzcwMClcbiAgICBzb3VyY2UgPSBQYXRoKF9fZmlsZV9fKS5yZXNvbHZlKCkucGFyZW50XG4gICAgYm9vdHN0cmFwID0gcm9vdCAvICdib290c3RyYXAnXG4gICAgYm9vdHN0cmFwLm1rZGlyKG1vZGU9MG83MDAsIGV4aXN0X29rPVRydWUpXG4gICAgcHJpbnQoJyQgY3AgbGF1bmNoZXIucHkgL29wdC9kZ2Utd29ya2VyL2xhdW5jaGVyLnB5JywgZmx1c2g9VHJ1ZSlcbiAgICBzaHV0aWwuY29weWZpbGUoc291cmNlIC8gJ2xhdW5jaGVyLnB5Jywgcm9vdCAvICdsYXVuY2hlci5weScpXG4gICAgaWYgKHNvdXJjZSAvICd1bmluc3RhbGwucHknKS5leGlzdHMoKTpcbiAgICAgICAgc2h1dGlsLmNvcHlmaWxlKHNvdXJjZSAvICd1bmluc3RhbGwucHknLCByb290IC8gJ3VuaW5zdGFsbC5weScpXG4gICAgcHJpbnQoJyQgY3AgYWdlbnQucHkgL29wdC9kZ2Utd29ya2VyL2Jvb3RzdHJhcC9hZ2VudC5weScsIGZsdXNoPVRydWUpXG4gICAgc2h1dGlsLmNvcHlmaWxlKHNvdXJjZSAvICdhZ2VudC5weScsIGJvb3RzdHJhcCAvICdhZ2VudC5weScpXG4gICAgaWRlbnRpdHkgPSByb290IC8gJ2lkZW50aXR5Lmpzb24nXG4gICAgaWYgbm90IGlkZW50aXR5LmV4aXN0cygpOlxuICAgICAgICB0b2tlbiA9IGVucm9sbG1lbnQuZ2V0KCd0b2tlbicpIG9yIGdldHBhc3MuZ2V0cGFzcygnV29ya2VyIGVucm9sbG1lbnQgdG9rZW4gKGhpZGRlbik6ICcpXG4gICAgICAgIGlmIG5vdCB0b2tlbjpcbiAgICAgICAgICAgIHBhcnNlci5lcnJvcignRW5yb2xsbWVudCB0b2tlbiBpcyByZXF1aXJlZCcpXG4gICAgICAgIGlkZW50aXR5LndyaXRlX3RleHQoanNvbi5kdW1wcyhkaWN0KG9yaWdpbj1hcmdzLm9yaWdpbiwgdG9rZW49dG9rZW4pKSlcbiAgICAgICAgaWRlbnRpdHkuY2htb2QoMG82MDApXG4gICAgZWxpZiBqc29uLmxvYWRzKGlkZW50aXR5LnJlYWRfdGV4dCgpKVsnb3JpZ2luJ10gIT0gYXJncy5vcmlnaW46XG4gICAgICAgIHBhcnNlci5lcnJvcignRXhpc3RpbmcgZW5yb2xsbWVudCB1c2VzIGEgZGlmZmVyZW50IG9yaWdpbicpXG4gICAgZW5zdXJlX2N1cnJlbnRfcmVsZWFzZShyb290LCBib290c3RyYXApXG4gICAgc2NyYXRjaCA9IFBhdGgoJy9ydW4vZGdlLXdvcmtlci90YXNrcycpXG4gICAgc2NyYXRjaC5ta2RpcihwYXJlbnRzPVRydWUsIGV4aXN0X29rPVRydWUpXG4gICAgaWYgbm90IG9zLnBhdGguaXNtb3VudChzY3JhdGNoKTpcbiAgICAgICAgcnVuKCdtb3VudCcsICctdCcsICd0bXBmcycsICctbycsICdzaXplPTI1Nm0sbW9kZT0wNzAwLG5vc3VpZCxub2Rldixub2V4ZWMnLCAndG1wZnMnLCBzdHIoc2NyYXRjaCkpXG4gICAgdW5pdF9yb290ID0gUGF0aCgnL2V0Yy9zeXN0ZW1kL3N5c3RlbScpXG4gICAgIyBQcmVzZXJ2ZSBDSSdzIGFscmVhZHkgcHJvdmlzaW9uZWQgY29tcHV0ZS5zbGljZSBtZW1vcnkgYnVkZ2V0LlxuICAgIGNvbXB1dGVfc2xpY2UgPSB1bml0X3Jvb3QgLyAnY29tcHV0ZS5zbGljZSdcbiAgICBpZiBub3QgY29tcHV0ZV9zbGljZS5leGlzdHMoKTpcbiAgICAgICAgY29tcHV0ZV9zbGljZS53cml0ZV90ZXh0KCdbU2xpY2VdXFxuQ1BVV2VpZ2h0PTEwXFxuSU9XZWlnaHQ9MTBcXG5NZW1vcnlTd2FwTWF4PTBcXG4nKVxuICAgIHByaW50KCckIGNhdCA+IC9ldGMvc3lzdGVtZC9zeXN0ZW0vZGdlLXdvcmtlci5zZXJ2aWNlJywgZmx1c2g9VHJ1ZSlcbiAgICAodW5pdF9yb290IC8gJ2RnZS13b3JrZXIuc2VydmljZScpLndyaXRlX3RleHQoJycnW1VuaXRdXG5EZXNjcmlwdGlvbj1ER0UgbWFuYWdlZCBjb21wdXRlIHdvcmtlclxuUmVxdWlyZXM9ZG9ja2VyLnNlcnZpY2UgY29tcHV0ZS5zbGljZVxuQWZ0ZXI9ZG9ja2VyLnNlcnZpY2UgbmV0d29yay1vbmxpbmUudGFyZ2V0XG5XYW50cz1uZXR3b3JrLW9ubGluZS50YXJnZXRcblxuW1NlcnZpY2VdXG5UeXBlPXNpbXBsZVxuU2xpY2U9Y29tcHV0ZS5zbGljZVxuRW52aXJvbm1lbnRGaWxlPS0vb3B0L2RnZS13b3JrZXIvc3RvcmFnZS5lbnZcbkVudmlyb25tZW50RmlsZT0tL29wdC9kZ2Utd29ya2VyL3Byb3h5LmVudlxuRXhlY1N0YXJ0UHJlPS91c3IvYmluL21rZGlyIC1wIC9ydW4vZGdlLXdvcmtlci90YXNrc1xuRXhlY1N0YXJ0UHJlPS9iaW4vc2ggLWMgJ21vdW50cG9pbnQgLXEgL3J1bi9kZ2Utd29ya2VyL3Rhc2tzIHx8IG1vdW50IC10IHRtcGZzIC1vIHNpemU9MjU2bSxtb2RlPTA3MDAsbm9zdWlkLG5vZGV2LG5vZXhlYyB0bXBmcyAvcnVuL2RnZS13b3JrZXIvdGFza3MnXG5FeGVjU3RhcnQ9L3Vzci9iaW4vcHl0aG9uMyAvb3B0L2RnZS13b3JrZXIvbGF1bmNoZXIucHlcblJlc3RhcnQ9YWx3YXlzXG5SZXN0YXJ0U2VjPTEwXG5UaW1lb3V0U3RvcFNlYz05NjBcbkxpbWl0Q09SRT0wXG5NZW1vcnlTd2FwTWF4PTBcblVNYXNrPTAwNzdcblxuW0luc3RhbGxdXG5XYW50ZWRCeT1tdWx0aS11c2VyLnRhcmdldFxuJycnKVxuICAgIGZyb20gYWdlbnQgaW1wb3J0IGNvbmZpZ3VyZV9jaVxuICAgIGNvbmZpZ3VyZV9jaSgpXG4gICAgcnVuKCdzeXN0ZW1jdGwnLCAnZGFlbW9uLXJlbG9hZCcpXG4gICAgcnVuKCdzeXN0ZW1jdGwnLCAnZW5hYmxlJywgJy0tbm93JywgJ2RnZS13b3JrZXIuc2VydmljZScpXG4gICAgcHJpbnQoJ1dvcmtlciBlbnJvbGxlZC4gQ29uZmlndXJhdGlvbiBhbmQgdGFzayBpbWFnZXMgYXJlIG9idGFpbmVkIGF0IGNoZWNrLWluLicsIGZsdXNoPVRydWUpXG5cblxuaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzpcbiAgICBtYWluKClcbiIsImFnZW50LnB5IjoiIyEvdXNyL2Jpbi9lbnYgcHl0aG9uM1xuXCJcIlwiVHJ1c3RlZCBMaW51eCBob3N0IHN1cGVydmlzb3IuIFBlcnNpc3RlbnQgc3RhdGUgY29udGFpbnMgY29kZS9jb25maWcgb25seS5cblRhc2sgc2NyYXRjaCBpcyB0bXBmcy4gVGhlIHdvcmtlciBjZ3JvdXAgYW5kIHRhc2sgY29udGFpbmVycyBzZXQgTWVtb3J5U3dhcE1heD0wXG5zbyB0YXNrIHBhZ2VzIGRvIG5vdCB1c2UgaG9zdCBzd2FwIGV2ZW4gd2hlbiB0aGUgbWFjaGluZSBoYXMgc3dhcCBlbmFibGVkLlxuVGFzayBjb250YWluZXJzIGhhdmUgbm8gbmV0d29yaywgRG9ja2VyIHNvY2tldCwgd29ya2VyIGlkZW50aXR5LCBvciBzdG9yYWdlIGNyZWRlbnRpYWxzLlxuXCJcIlwiXG5pbXBvcnQgYmFzZTY0XG5pbXBvcnQgY2FsZW5kYXJcbmltcG9ydCBjc3ZcbmltcG9ydCBtYXRoXG5pbXBvcnQgaGFzaGxpYlxuaW1wb3J0IGhtYWNcbmltcG9ydCBodHRwLmNsaWVudFxuaW1wb3J0IGpzb25cbmltcG9ydCBvc1xuZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgZGVxdWVcbmZyb20gcGF0aGxpYiBpbXBvcnQgUGF0aFxuaW1wb3J0IHBsYXRmb3JtXG5pbXBvcnQgcmVcbmltcG9ydCBzaHV0aWxcbmltcG9ydCBzaWduYWxcbmltcG9ydCBzb2NrZXRcbmltcG9ydCBzc2xcbmltcG9ydCBzdWJwcm9jZXNzXG5pbXBvcnQgc3lzXG5pbXBvcnQgdGVtcGZpbGVcbmltcG9ydCB0YXJmaWxlXG5pbXBvcnQgdGhyZWFkaW5nXG5pbXBvcnQgdGltZVxuaW1wb3J0IHVybGxpYi5lcnJvclxuaW1wb3J0IHVybGxpYi5wYXJzZVxuaW1wb3J0IHVybGxpYi5yZXF1ZXN0XG5cbiMgQ2xvdWRmbGFyZSBib3QgZmlnaHQgNDAzcyBQeXRob24ncyBkZWZhdWx0IFVBOyB0aGUgd29ya2VyIHRhbGtzIEhUVFBTIHRocm91Z2ggaXQuXG5CUk9XU0VSX1VBID0gJ01vemlsbGEvNS4wIChYMTE7IExpbnV4IHg4Nl82NCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzEyOC4wLjAuMCBTYWZhcmkvNTM3LjM2J1xuXG5SRUdJU1RSWV9BVVRIX1ZFUlNJT04gPSAxXG5DQVBBQklMSVRZX1RFU1RfVkVSU0lPTiA9IDFcblJVTlRJTUVfQUJJID0gJ19fUlVOVElNRV9BQklfXydcblZFUlNJT04gPSAnMS4zLjArJyArIGhhc2hsaWIuc2hhMjU2KFBhdGgoX19maWxlX18pLnJlYWRfYnl0ZXMoKSkuaGV4ZGlnZXN0KClbOjEyXVxuUk9PVCA9IFBhdGgob3MuZW52aXJvbi5nZXQoJ0RHRV9XT1JLRVJfUk9PVCcsICcvb3B0L2RnZS13b3JrZXInKSlcblNDUkFUQ0ggPSBQYXRoKG9zLmVudmlyb24uZ2V0KCdER0VfV09SS0VSX1NDUkFUQ0gnLCAnL3J1bi9kZ2Utd29ya2VyL3Rhc2tzJykpXG5DSV9SVU5ORVJfU1RBVEUgPSBST09UIC8gJ2NpX3J1bm5lci5qc29uJ1xuQ0lfUlVOTkVSX05BTUUgPSAnZGdlLWNvbXB1dGUnXG5DSV9ERUZBVUxUX0lNQUdFID0gJ3J1Ynk6My40LjInXG4jIGJ1aWxkLWNvbXB1dGUtaW1hZ2UgZHJpdmVzIHRoZSBob3N0IGRhZW1vbiB3aXRoIGJ1aWxkeDsgdGhlcmUgaXMgbm8gZGluZCBzZXJ2aWNlLlxuQ0lfRE9DS0VSX1NPQ0tFVCA9ICcvdmFyL3J1bi9kb2NrZXIuc29jazovdmFyL3J1bi9kb2NrZXIuc29jaydcbkNJX1NMSUNFID0gUGF0aCgnL2V0Yy9zeXN0ZW1kL3N5c3RlbS9jaS5zbGljZScpXG5HSVRMQUIgPSAnaHR0cHM6Ly9naXRsYWIuY29tJ1xuR0lUTEFCX1JVTk5FUl9SRVBPU0lUT1JZID0gJ2h0dHBzOi8vcGFja2FnZXMuZ2l0bGFiLmNvbS9pbnN0YWxsL3JlcG9zaXRvcmllcy9ydW5uZXIvZ2l0bGFiLXJ1bm5lci9zY3JpcHQuZGViLnNoJ1xuUlVOTkVSX0NPTkZJRyA9IFBhdGgoJy9ldGMvZ2l0bGFiLXJ1bm5lci9jb25maWcudG9tbCcpXG5TVE9QID0gdGhyZWFkaW5nLkV2ZW50KClcblNUQVRFX0xPQ0sgPSB0aHJlYWRpbmcuTG9jaygpXG5QT1NUX0xPQ0sgPSB0aHJlYWRpbmcuTG9jaygpXG5SRVBPUlQgPSB7fVxuVEFTS1MgPSBbXVxuQ09OVFJPTCA9IHt9XG5MT0dTID0gZGVxdWUobWF4bGVuPTQwKVxuXG5cbmNsYXNzIE5vUmVkaXJlY3QodXJsbGliLnJlcXVlc3QuSFRUUFJlZGlyZWN0SGFuZGxlcik6XG4gICAgZGVmIHJlZGlyZWN0X3JlcXVlc3Qoc2VsZiwgKmFyZ3MsICoqa3dhcmdzKTpcbiAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignUmVkaXJlY3RzIGFyZSBub3QgcGVybWl0dGVkJylcblxuXG5IVFRQID0gdXJsbGliLnJlcXVlc3QuYnVpbGRfb3BlbmVyKE5vUmVkaXJlY3QoKSlcbkhUVFAuYWRkaGVhZGVycyA9IFsoJ1VzZXItQWdlbnQnLCBCUk9XU0VSX1VBKV1cblNUT1JBR0VfSFRUUCA9IHVybGxpYi5yZXF1ZXN0LmJ1aWxkX29wZW5lcigpXG5TVE9SQUdFX0hUVFAuYWRkaGVhZGVycyA9IFsoJ1VzZXItQWdlbnQnLCBCUk9XU0VSX1VBKV1cblxuXG5kZWYgc3RvcmFnZV9wcm94eSgpOlxuICAgIHByb3h5ID0gb3MuZW52aXJvbi5nZXQoJ0RHRV9TVE9SQUdFX1BST1hZJylcbiAgICBpZiBub3QgcHJveHk6XG4gICAgICAgIHJldHVybiBOb25lXG4gICAgcGFyc2VkID0gdXJsbGliLnBhcnNlLnVybHNwbGl0KHByb3h5KVxuICAgIGlmIChwYXJzZWQuc2NoZW1lICE9ICdodHRwJyBvciBwYXJzZWQudXNlcm5hbWUgb3Igbm90IHBhcnNlZC5ob3N0bmFtZVxuICAgICAgICAgICAgb3IgcGFyc2VkLnBhdGggbm90IGluICgnJywgJy8nKSBvciBwYXJzZWQucXVlcnkgb3IgcGFyc2VkLmZyYWdtZW50KTpcbiAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignU3RvcmFnZSBwcm94eSBtdXN0IGJlIGFuIEhUVFAgVVJMJylcbiAgICByZXR1cm4gcGFyc2VkXG5cblxuZGVmIHN0b3JhZ2VfcHJveHlfZm9yKHVybCk6XG4gICAgcHJveHkgPSBzdG9yYWdlX3Byb3h5KClcbiAgICBpZiBwcm94eSBpcyBOb25lOlxuICAgICAgICByZXR1cm4gTm9uZVxuICAgIGhvc3QgPSAodXJsbGliLnBhcnNlLnVybHNwbGl0KHVybCkuaG9zdG5hbWUgb3IgJycpLmxvd2VyKCkucnN0cmlwKCcuJylcbiAgICBpZiBob3N0LmVuZHN3aXRoKCcucjIuY2xvdWRmbGFyZXN0b3JhZ2UuY29tJyk6XG4gICAgICAgIHJldHVybiBwcm94eVxuICAgIHJldHVybiBOb25lXG5cblxuY2xhc3MgUHJveGllZFJlc3BvbnNlOlxuICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjb25uZWN0aW9uLCByZXNwb25zZSk6XG4gICAgICAgIHNlbGYuX2Nvbm5lY3Rpb24gPSBjb25uZWN0aW9uXG4gICAgICAgIHNlbGYuc3RhdHVzID0gcmVzcG9uc2Uuc3RhdHVzXG4gICAgICAgIHNlbGYucmVhZCA9IHJlc3BvbnNlLnJlYWRcblxuICAgIGRlZiBfX2VudGVyX18oc2VsZik6XG4gICAgICAgIHJldHVybiBzZWxmXG5cbiAgICBkZWYgX19leGl0X18oc2VsZiwgKmFyZ3MpOlxuICAgICAgICBzZWxmLl9jb25uZWN0aW9uLmNsb3NlKClcblxuXG5TVE9SQUdFX1BST1hZX1RJTUVPVVQgPSA2MDBcblVQTElOS19JTlRFUlZBTCA9IDMwMFxuVVBMSU5LX0xPQ0sgPSB0aHJlYWRpbmcuTG9jaygpXG5VUExJTksgPSB7XG4gICAgJ3VwbGlua19raW5kJzogJ3Vua25vd24nLFxuICAgICd1cGxpbmtfcHJvYmVfb2snOiBGYWxzZSxcbiAgICAndXBsaW5rX3Byb2JlX2Jwcyc6IDAsXG4gICAgJ3VwbGlua19wcm9iZWRfYXQnOiBOb25lLFxufVxuSE9TVCA9IHt9XG5VUExJTktfQVQgPSAwLjBcblBST0JFX0hPU1QgPSAnc3BlZWQuY2xvdWRmbGFyZS5jb20nXG5QUk9CRV9QQVRIID0gJy9fX3VwJ1xuUFJPQkVfQllURVMgPSAyICogMTAyNCAqIDEwMjRcblBST0JFX1RJTUVPVVQgPSAxMFxuXG5cbmRlZiBzdG9yYWdlX2dldCh1cmwpOlxuICAgIHBhcnNlZCA9IHN0b3JhZ2VfcHJveHlfZm9yKHVybClcbiAgICBpZiBwYXJzZWQgaXMgTm9uZTpcbiAgICAgICAgcmV0dXJuIFNUT1JBR0VfSFRUUC5vcGVuKHVybCwgdGltZW91dD0zMClcbiAgICBjb25uZWN0aW9uID0gaHR0cC5jbGllbnQuSFRUUENvbm5lY3Rpb24ocGFyc2VkLmhvc3RuYW1lLCBwYXJzZWQucG9ydCBvciA4MCwgdGltZW91dD1TVE9SQUdFX1BST1hZX1RJTUVPVVQpXG4gICAgY29ubmVjdGlvbi5wdXRyZXF1ZXN0KCdHRVQnLCAnLycpXG4gICAgY29ubmVjdGlvbi5wdXRoZWFkZXIoJ1gtREdFLVRhcmdldCcsIHVybClcbiAgICBjb25uZWN0aW9uLmVuZGhlYWRlcnMoKVxuICAgIHJlc3BvbnNlID0gY29ubmVjdGlvbi5nZXRyZXNwb25zZSgpXG4gICAgaWYgcmVzcG9uc2Uuc3RhdHVzICE9IDIwMDpcbiAgICAgICAgc3RhdHVzLCByZWFzb24gPSByZXNwb25zZS5zdGF0dXMsIHJlc3BvbnNlLnJlYXNvblxuICAgICAgICBjb25uZWN0aW9uLmNsb3NlKClcbiAgICAgICAgcmFpc2UgdXJsbGliLmVycm9yLkhUVFBFcnJvcih1cmwsIHN0YXR1cywgcmVhc29uLCB7fSwgTm9uZSlcbiAgICByZXR1cm4gUHJveGllZFJlc3BvbnNlKGNvbm5lY3Rpb24sIHJlc3BvbnNlKVxuXG5cbmRlZiBzdG9yYWdlX3B1dF9jb25uZWN0aW9uKHVybCk6XG4gICAgcGFyc2VkID0gc3RvcmFnZV9wcm94eV9mb3IodXJsKVxuICAgIHVyaSA9IHVybGxpYi5wYXJzZS51cmxzcGxpdCh1cmwpXG4gICAgaWYgcGFyc2VkIGlzIE5vbmU6XG4gICAgICAgIGNvbm5lY3Rpb24gPSBodHRwLmNsaWVudC5IVFRQU0Nvbm5lY3Rpb24odXJpLmhvc3RuYW1lLCB1cmkucG9ydCBvciA0NDMsIHRpbWVvdXQ9MzApXG4gICAgICAgIHJldHVybiBjb25uZWN0aW9uLCB1cmkucGF0aCArICgnPycgKyB1cmkucXVlcnkgaWYgdXJpLnF1ZXJ5IGVsc2UgJycpXG4gICAgY29ubmVjdGlvbiA9IGh0dHAuY2xpZW50LkhUVFBDb25uZWN0aW9uKHBhcnNlZC5ob3N0bmFtZSwgcGFyc2VkLnBvcnQgb3IgODAsIHRpbWVvdXQ9U1RPUkFHRV9QUk9YWV9USU1FT1VUKVxuICAgIHJldHVybiBjb25uZWN0aW9uLCAnLydcblxuXG5kZWYgbm90ZShtZXNzYWdlKTpcbiAgICBsaW5lID0gdGltZS5zdHJmdGltZSgnJUg6JU06JVNaJywgdGltZS5nbXRpbWUoKSkgKyAnICcgKyAnICcuam9pbihzdHIobWVzc2FnZSkuc3BsaXQoKSlbOjM2MF1cbiAgICBwcmludChtZXNzYWdlLCBmbHVzaD1UcnVlKVxuICAgIHdpdGggU1RBVEVfTE9DSzpcbiAgICAgICAgTE9HUy5hcHBlbmQobGluZSlcblxuXG5kZWYgZGVzY3JpYmVfZXJyb3IoZXJyb3IpOlxuICAgIHRleHQgPSB0eXBlKGVycm9yKS5fX25hbWVfXyArICc6ICcgKyBzdHIoZXJyb3IpXG4gICAgc3RkZXJyID0gZ2V0YXR0cihlcnJvciwgJ3N0ZGVycicsIGInJykgb3IgYicnXG4gICAgaWYgc3RkZXJyOlxuICAgICAgICB0ZXh0ICs9ICcgJyArIChzdGRlcnIuZGVjb2RlKGVycm9ycz0ncmVwbGFjZScpIGlmIGlzaW5zdGFuY2Uoc3RkZXJyLCAoYnl0ZXMsIGJ5dGVhcnJheSkpIGVsc2Ugc3RyKHN0ZGVycikpXG4gICAgcmV0dXJuICcgJy5qb2luKHRleHQuc3BsaXQoKSlbOjQwMF1cblxuXG5kZWYgcHJvY2Vzc19vdXRwdXQodmFsdWUpOlxuICAgIGlmIHZhbHVlIGlzIE5vbmU6XG4gICAgICAgIHJldHVybiAnJ1xuICAgIGlmIGlzaW5zdGFuY2UodmFsdWUsIChieXRlcywgYnl0ZWFycmF5KSk6XG4gICAgICAgIHJldHVybiB2YWx1ZS5kZWNvZGUoZXJyb3JzPSdyZXBsYWNlJylcbiAgICByZXR1cm4gc3RyKHZhbHVlKVxuXG5cbmRlZiBkZXNjcmliZV9wcm9jZXNzX2Vycm9yKGVycm9yLCBsaW1pdD0xODApOlxuICAgIFwiXCJcIlNob3J0IGZhaWx1cmUgdGV4dCB3aXRob3V0IGFyZ3Y7IGtlZXBzIHRoZSB1c2VmdWwgdGFpbCB3aXRoaW4gdGhlIHNlcnZlciBjb2x1bW4uXCJcIlwiXG4gICAgbmFtZSA9IHR5cGUoZXJyb3IpLl9fbmFtZV9fXG4gICAgaWYgaXNpbnN0YW5jZShlcnJvciwgc3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3IpOlxuICAgICAgICBkZXRhaWwgPSAnICcuam9pbihwcm9jZXNzX291dHB1dChlcnJvci5zdGRlcnIpLnNwbGl0KCkpIG9yICcgJy5qb2luKHByb2Nlc3Nfb3V0cHV0KGVycm9yLnN0ZG91dCkuc3BsaXQoKSlcbiAgICAgICAgcHJlZml4ID0gbmFtZSArICcgZXhpdCAnICsgc3RyKGVycm9yLnJldHVybmNvZGUpXG4gICAgICAgIGlmIG5vdCBkZXRhaWw6XG4gICAgICAgICAgICByZXR1cm4gcHJlZml4WzpsaW1pdF1cbiAgICAgICAgYnVkZ2V0ID0gbWF4KDAsIGxpbWl0IC0gbGVuKHByZWZpeCkgLSAxKVxuICAgICAgICBpZiBsZW4oZGV0YWlsKSA+IGJ1ZGdldDpcbiAgICAgICAgICAgIGRldGFpbCA9IGRldGFpbFstYnVkZ2V0Ol1cbiAgICAgICAgcmV0dXJuIChwcmVmaXggKyAnICcgKyBkZXRhaWwpWzpsaW1pdF1cbiAgICByZXR1cm4gJyAnLmpvaW4oKG5hbWUgKyAnOiAnICsgc3RyKGVycm9yKSkuc3BsaXQoKSlbOmxpbWl0XVxuXG5cbmRlZiB1cGRhdGVfZmFpbHVyZV9yZWFzb24oZXJyb3IpOlxuICAgIGlmIHN0cihlcnJvcikgPT0gJ0NhcGFiaWxpdHlSZWdyZXNzaW9uJzpcbiAgICAgICAgcmV0dXJuICdDYXBhYmlsaXR5UmVncmVzc2lvbidcbiAgICByZXR1cm4gZGVzY3JpYmVfcHJvY2Vzc19lcnJvcihlcnJvcilcblxuXG5kZWYgcHJvYmVfb3BlcmF0aW9uX3Jlc3VsdChlcnJvcik6XG4gICAgXCJcIlwiUmV0dXJuIC0tcHJvYmUtb3BlcmF0aW9uIEpTT04gZnJvbSBhIG5vbi16ZXJvIGV4aXQsIG9yIE5vbmUuXCJcIlwiXG4gICAgaWYgbm90IGlzaW5zdGFuY2UoZXJyb3IsIHN1YnByb2Nlc3MuQ2FsbGVkUHJvY2Vzc0Vycm9yKTpcbiAgICAgICAgcmV0dXJuIE5vbmVcbiAgICB0cnk6XG4gICAgICAgIHBheWxvYWQgPSBqc29uLmxvYWRzKHByb2Nlc3Nfb3V0cHV0KGVycm9yLnN0ZG91dCkuc3RyaXAoKSBvciAnbnVsbCcpXG4gICAgZXhjZXB0IChUeXBlRXJyb3IsIFZhbHVlRXJyb3IsIGpzb24uSlNPTkRlY29kZUVycm9yKTpcbiAgICAgICAgcmV0dXJuIE5vbmVcbiAgICBpZiBpc2luc3RhbmNlKHBheWxvYWQsIGRpY3QpIGFuZCAnc3RhdHVzJyBpbiBwYXlsb2FkOlxuICAgICAgICByZXR1cm4gcGF5bG9hZFxuICAgIHJldHVybiBOb25lXG5cblxuZGVmIHByb2JlX2NhcGFiaWxpdHlfcmVzdWx0cyhlcnJvcik6XG4gICAgXCJcIlwiUmV0dXJuIC0tcHJvYmUgcmVzdWx0cyBKU09OIGZyb20gYSBub24temVybyBleGl0LCBvciBOb25lLlwiXCJcIlxuICAgIGlmIG5vdCBpc2luc3RhbmNlKGVycm9yLCBzdWJwcm9jZXNzLkNhbGxlZFByb2Nlc3NFcnJvcik6XG4gICAgICAgIHJldHVybiBOb25lXG4gICAgdHJ5OlxuICAgICAgICBwYXlsb2FkID0ganNvbi5sb2Fkcyhwcm9jZXNzX291dHB1dChlcnJvci5zdGRvdXQpLnN0cmlwKCkgb3IgJ251bGwnKVxuICAgIGV4Y2VwdCAoVHlwZUVycm9yLCBWYWx1ZUVycm9yLCBqc29uLkpTT05EZWNvZGVFcnJvcik6XG4gICAgICAgIHJldHVybiBOb25lXG4gICAgaWYgaXNpbnN0YW5jZShwYXlsb2FkLCBkaWN0KSBhbmQgcGF5bG9hZDpcbiAgICAgICAgcmV0dXJuIHBheWxvYWRcbiAgICByZXR1cm4gTm9uZVxuXG5cbmRlZiBjb21tYW5kKGFyZ3MsIHRpbWVvdXQ9NjAsIGVudj1Ob25lKTpcbiAgICByZXN1bHQgPSBzdWJwcm9jZXNzLnJ1bihhcmdzLCBzdGRpbj1zdWJwcm9jZXNzLkRFVk5VTEwsIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkZXJyPXN1YnByb2Nlc3MuUElQRSwgdGltZW91dD10aW1lb3V0LCBlbnY9ZW52KVxuICAgIGlmIHJlc3VsdC5yZXR1cm5jb2RlOlxuICAgICAgICByYWlzZSBzdWJwcm9jZXNzLkNhbGxlZFByb2Nlc3NFcnJvcihyZXN1bHQucmV0dXJuY29kZSwgYXJncywgcmVzdWx0LnN0ZG91dCwgcmVzdWx0LnN0ZGVycilcbiAgICByZXR1cm4gcmVzdWx0LnN0ZG91dC5kZWNvZGUoKS5zdHJpcCgpXG5cblxuZGVmIHJlYWRfanNvbihwYXRoLCBkZWZhdWx0PU5vbmUpOlxuICAgIHJldHVybiBqc29uLmxvYWRzKHBhdGgucmVhZF90ZXh0KCkpIGlmIHBhdGguZXhpc3RzKCkgZWxzZSBkZWZhdWx0XG5cblxuZGVmIHdyaXRlX2pzb24ocGF0aCwgdmFsdWUpOlxuICAgIHRlbXAgPSBwYXRoLndpdGhfc3VmZml4KCcudG1wJylcbiAgICB0ZW1wLndyaXRlX3RleHQoanNvbi5kdW1wcyh2YWx1ZSkpXG4gICAgdGVtcC5jaG1vZCgwbzYwMClcbiAgICBvcy5yZXBsYWNlKHRlbXAsIHBhdGgpXG5cblxuZGVmIG1lbW9yeSgpOlxuICAgIHJldHVybiB7bGluZS5zcGxpdCgnOicpWzBdOiBpbnQobGluZS5zcGxpdCgpWzFdKSAqIDEwMjRcbiAgICAgICAgICAgIGZvciBsaW5lIGluIFBhdGgoJy9wcm9jL21lbWluZm8nKS5yZWFkX3RleHQoKS5zcGxpdGxpbmVzKCkgaWYgbGVuKGxpbmUuc3BsaXQoKSkgPT0gM31cblxuXG5kZWYgcmVhZF90ZXh0KHBhdGgpOlxuICAgIHRyeTpcbiAgICAgICAgcmV0dXJuIFBhdGgocGF0aCkucmVhZF90ZXh0KCkuc3RyaXAoKVxuICAgIGV4Y2VwdCAoT1NFcnJvciwgVmFsdWVFcnJvcik6XG4gICAgICAgIHJldHVybiBOb25lXG5cblxuZGVmIG9wdGlvbmFsX2NvbW1hbmQoYXJncyk6XG4gICAgdHJ5OlxuICAgICAgICByZXR1cm4gY29tbWFuZChhcmdzLCA1KVxuICAgIGV4Y2VwdCAoT1NFcnJvciwgc3VicHJvY2Vzcy5TdWJwcm9jZXNzRXJyb3IpOlxuICAgICAgICByZXR1cm4gTm9uZVxuXG5cbmRlZiBudW1iZXIodmFsdWUsIHNjYWxlPTEpOlxuICAgIHRyeTpcbiAgICAgICAgcmVzdWx0ID0gZmxvYXQodmFsdWUpICogc2NhbGVcbiAgICAgICAgcmV0dXJuIHJlc3VsdCBpZiByZXN1bHQgPj0gMCBhbmQgbWF0aC5pc2Zpbml0ZShyZXN1bHQpIGVsc2UgTm9uZVxuICAgIGV4Y2VwdCAoVHlwZUVycm9yLCBWYWx1ZUVycm9yKTpcbiAgICAgICAgcmV0dXJuIE5vbmVcblxuXG5kZWYgcGNpX2RldGFpbHMoZGV2aWNlKTpcbiAgICBkZXRhaWxzID0ge31cbiAgICBvdXRwdXQgPSBvcHRpb25hbF9jb21tYW5kKFsnbHNwY2knLCAnLXZtbScsICctcycsIGRldmljZS5uYW1lXSlcbiAgICBmb3IgbGluZSBpbiAob3V0cHV0IG9yICcnKS5zcGxpdGxpbmVzKCk6XG4gICAgICAgIGtleSwgc2VwYXJhdG9yLCB2YWx1ZSA9IGxpbmUucGFydGl0aW9uKCc6JylcbiAgICAgICAgaWYgc2VwYXJhdG9yOlxuICAgICAgICAgICAgZGV0YWlsc1trZXldID0gdmFsdWUuc3RyaXAoKVxuICAgIHJldHVybiBkaWN0KHZlbmRvcj1kZXRhaWxzLmdldCgnVmVuZG9yJykgb3IgcmVhZF90ZXh0KGRldmljZSAvICd2ZW5kb3InKSxcbiAgICAgICAgICAgICAgICBtb2RlbD1kZXRhaWxzLmdldCgnRGV2aWNlJykgb3IgcmVhZF90ZXh0KGRldmljZSAvICdkZXZpY2UnKSlcblxuXG5kZWYgY3B1X2ludmVudG9yeSgpOlxuICAgIGJsb2NrcyA9IFBhdGgoJy9wcm9jL2NwdWluZm8nKS5yZWFkX3RleHQoKS5zdHJpcCgpLnNwbGl0KCdcXG5cXG4nKVxuICAgIGNwdXMgPSBbZGljdChsaW5lLnNwbGl0KCc6JywgMSkgZm9yIGxpbmUgaW4gYmxvY2suc3BsaXRsaW5lcygpIGlmICc6JyBpbiBsaW5lKSBmb3IgYmxvY2sgaW4gYmxvY2tzXVxuICAgIGNwdXMgPSBbe2tleS5zdHJpcCgpOiB2YWx1ZS5zdHJpcCgpIGZvciBrZXksIHZhbHVlIGluIGNwdS5pdGVtcygpfSBmb3IgY3B1IGluIGNwdXNdXG4gICAgZmlyc3QgPSBjcHVzWzBdIGlmIGNwdXMgZWxzZSB7fVxuICAgIHNvY2tldHMgPSB7Y3B1WydwaHlzaWNhbCBpZCddIGZvciBjcHUgaW4gY3B1cyBpZiAncGh5c2ljYWwgaWQnIGluIGNwdX1cbiAgICBjb3JlcyA9IHsoY3B1WydwaHlzaWNhbCBpZCddLCBjcHVbJ2NvcmUgaWQnXSkgZm9yIGNwdSBpbiBjcHVzIGlmICdwaHlzaWNhbCBpZCcgaW4gY3B1IGFuZCAnY29yZSBpZCcgaW4gY3B1fVxuICAgIHBvbGljaWVzID0gbGlzdChQYXRoKCcvc3lzL2RldmljZXMvc3lzdGVtL2NwdS9jcHVmcmVxJykuZ2xvYigncG9saWN5KicpKVxuICAgIG1pbmltdW0gPSBbbnVtYmVyKHJlYWRfdGV4dChwIC8gJ2NwdWluZm9fbWluX2ZyZXEnKSwgLjAwMSkgZm9yIHAgaW4gcG9saWNpZXNdXG4gICAgbWF4aW11bSA9IFtudW1iZXIocmVhZF90ZXh0KHAgLyAnY3B1aW5mb19tYXhfZnJlcScpLCAuMDAxKSBmb3IgcCBpbiBwb2xpY2llc11cbiAgICByZXR1cm4gZGljdChjcHVfbW9kZWw9Zmlyc3QuZ2V0KCdtb2RlbCBuYW1lJykgb3IgZmlyc3QuZ2V0KCdQcm9jZXNzb3InKSwgY3B1X3ZlbmRvcj1maXJzdC5nZXQoJ3ZlbmRvcl9pZCcpLFxuICAgICAgICAgICAgICAgIGNwdV9zb2NrZXRzPWxlbihzb2NrZXRzKSBvciBOb25lLCBwaHlzaWNhbF9jcHVfY29yZXM9bGVuKGNvcmVzKSBvciBOb25lLFxuICAgICAgICAgICAgICAgIGxvZ2ljYWxfY3B1cz1vcy5jcHVfY291bnQoKSwgY3B1X21pbl9taHo9bWluKCh4IGZvciB4IGluIG1pbmltdW0gaWYgeCBpcyBub3QgTm9uZSksIGRlZmF1bHQ9Tm9uZSksXG4gICAgICAgICAgICAgICAgY3B1X21heF9taHo9bWF4KCh4IGZvciB4IGluIG1heGltdW0gaWYgeCBpcyBub3QgTm9uZSksIGRlZmF1bHQ9Tm9uZSkpXG5cblxuZGVmIGRpc2tfaW52ZW50b3J5KCk6XG4gICAgb3V0cHV0ID0gb3B0aW9uYWxfY29tbWFuZChbJ2xzYmxrJywgJy0tanNvbicsICctLWJ5dGVzJywgJy0tbm9kZXBzJywgJy0tb3V0cHV0JywgJ05BTUUsVFlQRSxTSVpFLE1PREVMLFZFTkRPUixUUkFOLFJPVEEsUk0nXSlcbiAgICBpZiBvdXRwdXQgaXMgTm9uZTpcbiAgICAgICAgcmV0dXJuIE5vbmVcbiAgICB0cnk6XG4gICAgICAgIGRldmljZXMgPSBqc29uLmxvYWRzKG91dHB1dClbJ2Jsb2NrZGV2aWNlcyddXG4gICAgZXhjZXB0IChWYWx1ZUVycm9yLCBLZXlFcnJvciwgVHlwZUVycm9yKTpcbiAgICAgICAgcmV0dXJuIE5vbmVcbiAgICByZXN1bHQgPSBbXVxuICAgIGZvciBkaXNrIGluIGRldmljZXM6XG4gICAgICAgIGlmIGRpc2suZ2V0KCd0eXBlJykgIT0gJ2Rpc2snOlxuICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgcm90YXRpb25hbCA9IGRpc2suZ2V0KCdyb3RhJylcbiAgICAgICAgbWVkaWEgPSAnaGRkJyBpZiByb3RhdGlvbmFsIGVsc2UgJ3NzZCcgaWYgcm90YXRpb25hbCBpcyBub3QgTm9uZSBlbHNlIE5vbmVcbiAgICAgICAgcmVzdWx0LmFwcGVuZChkaWN0KGRldmljZV9rZXk9ZGlza1snbmFtZSddLCBtb2RlbD0oZGlzay5nZXQoJ21vZGVsJykgb3IgJycpLnN0cmlwKCkgb3IgTm9uZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlbmRvcj0oZGlzay5nZXQoJ3ZlbmRvcicpIG9yICcnKS5zdHJpcCgpIG9yIE5vbmUsIGNhcGFjaXR5X2J5dGVzPW51bWJlcihkaXNrLmdldCgnc2l6ZScpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zcG9ydD1kaXNrLmdldCgndHJhbicpLCBtZWRpYV90eXBlPW1lZGlhLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgcm90YXRpb25hbD1ib29sKHJvdGF0aW9uYWwpIGlmIHJvdGF0aW9uYWwgaXMgbm90IE5vbmUgZWxzZSBOb25lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3ZhYmxlPWJvb2woZGlza1sncm0nXSkgaWYgZGlzay5nZXQoJ3JtJykgaXMgbm90IE5vbmUgZWxzZSBOb25lKSlcbiAgICByZXR1cm4gcmVzdWx0Wzo2NF1cblxuXG5kZWYgZ3B1X2ludmVudG9yeSgpOlxuICAgIHJlc3VsdCA9IFtdXG4gICAgZm9yIGRldmljZSBpbiBQYXRoKCcvc3lzL2J1cy9wY2kvZGV2aWNlcycpLmdsb2IoJyonKTpcbiAgICAgICAgaWYgbm90IChyZWFkX3RleHQoZGV2aWNlIC8gJ2NsYXNzJykgb3IgJycpLnN0YXJ0c3dpdGgoJzB4MDMnKTpcbiAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIGdwdSA9IGRpY3QoZGV2aWNlX2tleT1kZXZpY2UubmFtZSwgcGNpX2FkZHJlc3M9ZGV2aWNlLm5hbWUsICoqcGNpX2RldGFpbHMoZGV2aWNlKSlcbiAgICAgICAgZ3B1WydtZW1vcnlfYnl0ZXMnXSA9IG51bWJlcihyZWFkX3RleHQoZGV2aWNlIC8gJ21lbV9pbmZvX3ZyYW1fdG90YWwnKSlcbiAgICAgICAgcmVzdWx0LmFwcGVuZChncHUpXG4gICAgb3V0cHV0ID0gb3B0aW9uYWxfY29tbWFuZChbJ252aWRpYS1zbWknLCAnLS1xdWVyeS1ncHU9cGNpLmJ1c19pZCxuYW1lLGRyaXZlcl92ZXJzaW9uLG1lbW9yeS50b3RhbCxjbG9ja3MubWF4LmdyYXBoaWNzJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS1mb3JtYXQ9Y3N2LG5vaGVhZGVyLG5vdW5pdHMnXSlcbiAgICBxdWVyeV9oZWxwID0gb3B0aW9uYWxfY29tbWFuZChbJ252aWRpYS1zbWknLCAnLS1oZWxwLXF1ZXJ5LWdwdSddKSBpZiBvdXRwdXQgZWxzZSBOb25lXG4gICAgZm9yIHJvdyBpbiBjc3YucmVhZGVyKChvdXRwdXQgb3IgJycpLnNwbGl0bGluZXMoKSwgc2tpcGluaXRpYWxzcGFjZT1UcnVlKTpcbiAgICAgICAgaWYgbGVuKHJvdykgIT0gNTpcbiAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIGFkZHJlc3MgPSByb3dbMF0ubG93ZXIoKVstMTI6XVxuICAgICAgICBncHUgPSBuZXh0KChpdGVtIGZvciBpdGVtIGluIHJlc3VsdCBpZiBpdGVtWydwY2lfYWRkcmVzcyddLmxvd2VyKCkgPT0gYWRkcmVzcyksIE5vbmUpXG4gICAgICAgIGlmIGdwdSBpcyBOb25lOlxuICAgICAgICAgICAgZ3B1ID0gZGljdChkZXZpY2Vfa2V5PWFkZHJlc3MsIHBjaV9hZGRyZXNzPWFkZHJlc3MpXG4gICAgICAgICAgICByZXN1bHQuYXBwZW5kKGdwdSlcbiAgICAgICAgZ3B1LnVwZGF0ZSh2ZW5kb3I9J05WSURJQScsIG1vZGVsPXJvd1sxXSwgZHJpdmVyX3ZlcnNpb249cm93WzJdLCBtZW1vcnlfYnl0ZXM9bnVtYmVyKHJvd1szXSwgMTAyNCoqMiksXG4gICAgICAgICAgICAgICAgICAgbWF4X2Nsb2NrX21oej1udW1iZXIocm93WzRdKSlcbiAgICAgICAgZm9yIGZpZWxkLCBrZXkgaW4gWygnbnVtX2NvcmVzJywgJ2NvcmVfY291bnQnKSwgKCdtdWx0aXByb2Nlc3Nvcl9jb3VudCcsICdtdWx0aXByb2Nlc3Nvcl9jb3VudCcpXTpcbiAgICAgICAgICAgIGlmIHF1ZXJ5X2hlbHAgYW5kICgnXFxcIicgKyBmaWVsZCArICdcXFwiJykgaW4gcXVlcnlfaGVscDpcbiAgICAgICAgICAgICAgICBncHVba2V5XSA9IG51bWJlcihvcHRpb25hbF9jb21tYW5kKFsnbnZpZGlhLXNtaScsICctLWlkPScgKyByb3dbMF0sICctLXF1ZXJ5LWdwdT0nICsgZmllbGQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLWZvcm1hdD1jc3Ysbm9oZWFkZXIsbm91bml0cyddKSlcbiAgICByZXR1cm4gcmVzdWx0Wzo2NF1cblxuXG5kZWYgbmV0d29ya19pbnZlbnRvcnkoKTpcbiAgICBvdXRwdXQgPSBvcHRpb25hbF9jb21tYW5kKFsnaXAnLCAnLWpzb24nLCAnYWRkcmVzcycsICdzaG93J10pXG4gICAgaWYgb3V0cHV0IGlzIE5vbmU6XG4gICAgICAgIHJldHVybiBOb25lXG4gICAgdHJ5OlxuICAgICAgICBpbnRlcmZhY2VzID0ganNvbi5sb2FkcyhvdXRwdXQpXG4gICAgZXhjZXB0IFZhbHVlRXJyb3I6XG4gICAgICAgIHJldHVybiBOb25lXG4gICAgcmVzdWx0ID0gW11cbiAgICBmb3IgaW50ZXJmYWNlIGluIGludGVyZmFjZXM6XG4gICAgICAgIG5hbWUgPSBpbnRlcmZhY2VbJ2lmbmFtZSddXG4gICAgICAgIHBhdGggPSBQYXRoKCcvc3lzL2NsYXNzL25ldCcpIC8gbmFtZVxuICAgICAgICBkZXZpY2UgPSAocGF0aCAvICdkZXZpY2UnKS5yZXNvbHZlKClcbiAgICAgICAgZGV0YWlscyA9IHBjaV9kZXRhaWxzKGRldmljZSkgaWYgKGRldmljZSAvICd2ZW5kb3InKS5leGlzdHMoKSBlbHNlIGRpY3QobW9kZWw9Tm9uZSwgdmVuZG9yPU5vbmUpXG4gICAgICAgIGNvbm5lY3Rpb24gPSAnd2lmaScgaWYgKHBhdGggLyAnd2lyZWxlc3MnKS5leGlzdHMoKSBlbHNlICdldGhlcm5ldCcgaWYgKHBhdGggLyAnZGV2aWNlJykuZXhpc3RzKCkgZWxzZSAndmlydHVhbCdcbiAgICAgICAgZHJpdmVyID0gKHBhdGggLyAnZGV2aWNlL2RyaXZlcicpLnJlc29sdmUoKS5uYW1lIGlmIChwYXRoIC8gJ2RldmljZS9kcml2ZXInKS5leGlzdHMoKSBlbHNlIE5vbmVcbiAgICAgICAgYWRkcmVzc2VzID0gW2RpY3QoYWRkcmVzcz1pdGVtWydsb2NhbCddLCBwcmVmaXhfbGVuZ3RoPWl0ZW1bJ3ByZWZpeGxlbiddLCBzY29wZT1pdGVtLmdldCgnc2NvcGUnKSlcbiAgICAgICAgICAgICAgICAgICAgIGZvciBpdGVtIGluIGludGVyZmFjZS5nZXQoJ2FkZHJfaW5mbycsIFtdKSBpZiBpdGVtLmdldCgnZmFtaWx5JykgaW4gKCdpbmV0JywgJ2luZXQ2JyldXG4gICAgICAgIHJlc3VsdC5hcHBlbmQoZGljdChkZXZpY2Vfa2V5PW5hbWUsICoqZGV0YWlscywgZHJpdmVyPWRyaXZlciwgY29ubmVjdGlvbl90eXBlPWNvbm5lY3Rpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBtYWNfYWRkcmVzcz1pbnRlcmZhY2UuZ2V0KCdhZGRyZXNzJyksIGxpbmtfc3RhdGU9aW50ZXJmYWNlLmdldCgnb3BlcnN0YXRlJyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVlZF9tYnBzPW51bWJlcihyZWFkX3RleHQocGF0aCAvICdzcGVlZCcpKSwgbXR1PWludGVyZmFjZS5nZXQoJ210dScpLCBhZGRyZXNzZXM9YWRkcmVzc2VzWzozMl0pKVxuICAgIHJldHVybiByZXN1bHRbOjY0XVxuXG5cbmRlZiBjaV9yZXNlcnZhdGlvbigpOlxuICAgIHBhdGggPSBQYXRoKCcvc3lzL2ZzL2Nncm91cC9jaS5zbGljZS9tZW1vcnkubWF4JylcbiAgICB2YWx1ZSA9IHBhdGgucmVhZF90ZXh0KCkuc3RyaXAoKSBpZiBwYXRoLmV4aXN0cygpIGVsc2UgJydcbiAgICByZXR1cm4gaW50KHZhbHVlKSBpZiB2YWx1ZS5pc2RpZ2l0KCkgZWxzZSBOb25lXG5cblxuZGVmIGludmVudG9yeSgpOlxuICAgIHRyeTpcbiAgICAgICAgcmVsZWFzZSA9IHBsYXRmb3JtLmZyZWVkZXNrdG9wX29zX3JlbGVhc2UoKVxuICAgIGV4Y2VwdCBPU0Vycm9yOlxuICAgICAgICByZWxlYXNlID0ge31cbiAgICByZXN1bHQgPSBkaWN0KGhvc3RuYW1lPXNvY2tldC5nZXRob3N0bmFtZSgpLCBtYW51ZmFjdHVyZXI9cmVhZF90ZXh0KCcvc3lzL2NsYXNzL2RtaS9pZC9zeXNfdmVuZG9yJyksXG4gICAgICAgICAgICAgICAgICBoYXJkd2FyZV9tb2RlbD1yZWFkX3RleHQoJy9zeXMvY2xhc3MvZG1pL2lkL3Byb2R1Y3RfbmFtZScpLCBhcmNoaXRlY3R1cmU9cGxhdGZvcm0ubWFjaGluZSgpLFxuICAgICAgICAgICAgICAgICAgb3NfbmFtZT1yZWxlYXNlLmdldCgnTkFNRScpLCBvc192ZXJzaW9uPXJlbGVhc2UuZ2V0KCdWRVJTSU9OX0lEJyksIGtlcm5lbF92ZXJzaW9uPXBsYXRmb3JtLnJlbGVhc2UoKSxcbiAgICAgICAgICAgICAgICAgIGNpX21lbW9yeV9yZXNlcnZlZF9ieXRlcz1jaV9yZXNlcnZhdGlvbigpLFxuICAgICAgICAgICAgICAgICAgbWVtb3J5X2J5dGVzPW1lbW9yeSgpLmdldCgnTWVtVG90YWwnKSwgZGlza19ieXRlcz1zaHV0aWwuZGlza191c2FnZShST09UKS50b3RhbCwgKipjcHVfaW52ZW50b3J5KCkpXG4gICAgaWYgSE9TVC5nZXQoJ2hhcmR3YXJlX21vZGVsJyk6XG4gICAgICAgIHJlc3VsdFsnbWFudWZhY3R1cmVyJ10gPSBIT1NULmdldCgnbWFudWZhY3R1cmVyJykgb3IgcmVzdWx0WydtYW51ZmFjdHVyZXInXSBvciAnQXBwbGUnXG4gICAgICAgIHJlc3VsdFsnaGFyZHdhcmVfbW9kZWwnXSA9IEhPU1RbJ2hhcmR3YXJlX21vZGVsJ11cbiAgICBmb3Iga2V5LCBjb2xsZWN0b3IgaW4gWygnZGlza3MnLCBkaXNrX2ludmVudG9yeSksICgnZ3B1cycsIGdwdV9pbnZlbnRvcnkpLCAoJ25ldHdvcmtfaW50ZXJmYWNlcycsIG5ldHdvcmtfaW52ZW50b3J5KV06XG4gICAgICAgIHRyeTpcbiAgICAgICAgICAgIHZhbHVlID0gY29sbGVjdG9yKClcbiAgICAgICAgICAgIGlmIHZhbHVlIGlzIG5vdCBOb25lOlxuICAgICAgICAgICAgICAgIHJlc3VsdFtrZXldID0gdmFsdWVcbiAgICAgICAgZXhjZXB0IChPU0Vycm9yLCBWYWx1ZUVycm9yLCBLZXlFcnJvciwgVHlwZUVycm9yKTpcbiAgICAgICAgICAgIHBhc3NcbiAgICByZXR1cm4gcmVzdWx0XG5cblxuZGVmIGFwcGx5X2hvc3RfcG93ZXIocmVzdWx0KTpcbiAgICBmb3Iga2V5IGluICgnYmF0dGVyeV9wcmVzZW50JywgJ2FjX2Nvbm5lY3RlZCcsICdiYXR0ZXJ5X3BlcmNlbnQnLCAnYmF0dGVyeV9zdGF0dXMnLCAnYmF0dGVyeV9yZW1haW5pbmdfc2Vjb25kcycpOlxuICAgICAgICBpZiBIT1NULmdldChrZXkpIGlzIG5vdCBOb25lOlxuICAgICAgICAgICAgcmVzdWx0W2tleV0gPSBIT1NUW2tleV1cbiAgICByZXR1cm4gcmVzdWx0XG5cblxuZGVmIHBvd2VyX2ludmVudG9yeShyb290PVBhdGgoJy9zeXMvY2xhc3MvcG93ZXJfc3VwcGx5JykpOlxuICAgIHJlc3VsdCA9IGRpY3QoYmF0dGVyeV9wcmVzZW50PU5vbmUsIGFjX2Nvbm5lY3RlZD1Ob25lLCBiYXR0ZXJ5X3BlcmNlbnQ9Tm9uZSxcbiAgICAgICAgICAgICAgICAgIGJhdHRlcnlfc3RhdHVzPU5vbmUsIGJhdHRlcnlfcmVtYWluaW5nX3NlY29uZHM9Tm9uZSxcbiAgICAgICAgICAgICAgICAgIHBvd2VyX3Byb2ZpbGU9cmVhZF90ZXh0KCcvc3lzL2Zpcm13YXJlL2FjcGkvcGxhdGZvcm1fcHJvZmlsZScpKVxuICAgIHRyeTpcbiAgICAgICAgc3VwcGxpZXMgPSBsaXN0KHJvb3QuaXRlcmRpcigpKVxuICAgIGV4Y2VwdCBPU0Vycm9yOlxuICAgICAgICByZXR1cm4gYXBwbHlfaG9zdF9wb3dlcihyZXN1bHQpXG4gICAgYmF0dGVyaWVzLCBleHRlcm5hbCA9IFtdLCBbXVxuICAgIGZvciBzdXBwbHkgaW4gc3VwcGxpZXM6XG4gICAgICAgIGlmIHJlYWRfdGV4dChzdXBwbHkgLyAnc2NvcGUnKSA9PSAnRGV2aWNlJzpcbiAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIGtpbmQgPSByZWFkX3RleHQoc3VwcGx5IC8gJ3R5cGUnKVxuICAgICAgICBpZiBraW5kID09ICdCYXR0ZXJ5JyBhbmQgcmVhZF90ZXh0KHN1cHBseSAvICdwcmVzZW50JykgIT0gJzAnOlxuICAgICAgICAgICAgYmF0dGVyaWVzLmFwcGVuZChzdXBwbHkpXG4gICAgICAgIGVsaWYga2luZCBpbiAoJ01haW5zJywgJ1VTQicsICdVU0JfQycsICdVU0JfUEQnLCAnVVNCX1BEX0RSUCcsICdXaXJlbGVzcycpOlxuICAgICAgICAgICAgb25saW5lID0gcmVhZF90ZXh0KHN1cHBseSAvICdvbmxpbmUnKVxuICAgICAgICAgICAgaWYgb25saW5lIGluICgnMCcsICcxJyk6XG4gICAgICAgICAgICAgICAgZXh0ZXJuYWwuYXBwZW5kKG9ubGluZSA9PSAnMScpXG4gICAgcmVzdWx0WydiYXR0ZXJ5X3ByZXNlbnQnXSA9IGJvb2woYmF0dGVyaWVzKVxuICAgIGlmIGV4dGVybmFsOlxuICAgICAgICByZXN1bHRbJ2FjX2Nvbm5lY3RlZCddID0gYW55KGV4dGVybmFsKVxuICAgIHBlcmNlbnRhZ2VzLCBzdGF0dXNlcywgcnVudGltZXMgPSBbXSwgW10sIFtdXG4gICAgZm9yIGJhdHRlcnkgaW4gYmF0dGVyaWVzOlxuICAgICAgICBwZXJjZW50ID0gbnVtYmVyKHJlYWRfdGV4dChiYXR0ZXJ5IC8gJ2NhcGFjaXR5JykpXG4gICAgICAgIGlmIHBlcmNlbnQgaXMgbm90IE5vbmUgYW5kIHBlcmNlbnQgPD0gMTAwOlxuICAgICAgICAgICAgcGVyY2VudGFnZXMuYXBwZW5kKHBlcmNlbnQpXG4gICAgICAgIHN0YXR1cyA9IHJlYWRfdGV4dChiYXR0ZXJ5IC8gJ3N0YXR1cycpXG4gICAgICAgIGlmIHN0YXR1czpcbiAgICAgICAgICAgIHN0YXR1c2VzLmFwcGVuZChzdGF0dXMpXG4gICAgICAgIGlmIHN0YXR1cyA9PSAnRGlzY2hhcmdpbmcnOlxuICAgICAgICAgICAgc2Vjb25kcyA9IG51bWJlcihyZWFkX3RleHQoYmF0dGVyeSAvICd0aW1lX3RvX2VtcHR5X25vdycpKVxuICAgICAgICAgICAgZW5lcmd5LCB3YXR0cyA9IG51bWJlcihyZWFkX3RleHQoYmF0dGVyeSAvICdlbmVyZ3lfbm93JykpLCBudW1iZXIocmVhZF90ZXh0KGJhdHRlcnkgLyAncG93ZXJfbm93JykpXG4gICAgICAgICAgICBpZiBzZWNvbmRzIGlzIE5vbmUgYW5kIGVuZXJneSBpcyBub3QgTm9uZSBhbmQgd2F0dHM6XG4gICAgICAgICAgICAgICAgc2Vjb25kcyA9IGVuZXJneSAvIHdhdHRzICogMzYwMFxuICAgICAgICAgICAgaWYgc2Vjb25kcyBpcyBub3QgTm9uZTpcbiAgICAgICAgICAgICAgICBydW50aW1lcy5hcHBlbmQoaW50KHNlY29uZHMpKVxuICAgIHJlc3VsdFsnYmF0dGVyeV9wZXJjZW50J10gPSBtaW4ocGVyY2VudGFnZXMsIGRlZmF1bHQ9Tm9uZSlcbiAgICByZXN1bHRbJ2JhdHRlcnlfcmVtYWluaW5nX3NlY29uZHMnXSA9IG1pbihydW50aW1lcywgZGVmYXVsdD1Ob25lKVxuICAgIHJlc3VsdFsnYmF0dGVyeV9zdGF0dXMnXSA9ICdEaXNjaGFyZ2luZycgaWYgJ0Rpc2NoYXJnaW5nJyBpbiBzdGF0dXNlcyBlbHNlIHN0YXR1c2VzWzBdIGlmIHN0YXR1c2VzIGVsc2UgTm9uZVxuICAgIGlmIHJlc3VsdFsnYWNfY29ubmVjdGVkJ10gaXMgTm9uZSBhbmQgJ0Rpc2NoYXJnaW5nJyBpbiBzdGF0dXNlczpcbiAgICAgICAgcmVzdWx0WydhY19jb25uZWN0ZWQnXSA9IEZhbHNlXG4gICAgcmV0dXJuIGFwcGx5X2hvc3RfcG93ZXIocmVzdWx0KVxuXG5cbmRlZiB1cGxpbmtfa2luZCh3aWZpLCBpZmFjZSk6XG4gICAgaWYgd2lmaTpcbiAgICAgICAgcmV0dXJuICd3aWZpJ1xuICAgIGlmIGlmYWNlOlxuICAgICAgICByZXR1cm4gJ2V0aGVybmV0J1xuICAgIHJldHVybiAndW5rbm93bidcblxuXG5kZWYgaXNvX2Zyb21fdW5peCh2YWx1ZSk6XG4gICAgdHJ5OlxuICAgICAgICBzdGFtcCA9IGZsb2F0KHZhbHVlKVxuICAgIGV4Y2VwdCAoVHlwZUVycm9yLCBWYWx1ZUVycm9yKTpcbiAgICAgICAgcmV0dXJuIE5vbmVcbiAgICBpZiBzdGFtcCA8PSAwOlxuICAgICAgICByZXR1cm4gTm9uZVxuICAgIHJldHVybiB0aW1lLnN0cmZ0aW1lKCclWS0lbS0lZFQlSDolTTolU1onLCB0aW1lLmdtdGltZShzdGFtcCkpXG5cblxuZGVmIGZhaWxlZF91cGxpbmsoa2luZD0ndW5rbm93bicpOlxuICAgIHJldHVybiB7XG4gICAgICAgICd1cGxpbmtfa2luZCc6IGtpbmQsXG4gICAgICAgICd1cGxpbmtfcHJvYmVfb2snOiBGYWxzZSxcbiAgICAgICAgJ3VwbGlua19wcm9iZV9icHMnOiAwLFxuICAgICAgICAndXBsaW5rX3Byb2JlZF9hdCc6IHRpbWUuc3RyZnRpbWUoJyVZLSVtLSVkVCVIOiVNOiVTWicsIHRpbWUuZ210aW1lKCkpLFxuICAgIH1cblxuXG5kZWYgb3B0aW9uYWxfYm9vbChib2R5LCBrZXkpOlxuICAgIHZhbHVlID0gYm9keS5nZXQoa2V5KVxuICAgIHJldHVybiB2YWx1ZSBpZiB2YWx1ZSBpbiAoVHJ1ZSwgRmFsc2UpIGVsc2UgTm9uZVxuXG5cbmRlZiBhcHBseV9ob3N0X2Zyb21faGVscGVyKGJvZHkpOlxuICAgIG1vZGVsID0gYm9keS5nZXQoJ2hhcmR3YXJlX21vZGVsJylcbiAgICBpZiBpc2luc3RhbmNlKG1vZGVsLCBzdHIpIGFuZCBtb2RlbC5zdHJpcCgpOlxuICAgICAgICBIT1NUWydoYXJkd2FyZV9tb2RlbCddID0gbW9kZWwuc3RyaXAoKVs6MjU1XVxuICAgICAgICBtYW51ZmFjdHVyZXIgPSBib2R5LmdldCgnbWFudWZhY3R1cmVyJylcbiAgICAgICAgSE9TVFsnbWFudWZhY3R1cmVyJ10gPSBtYW51ZmFjdHVyZXIuc3RyaXAoKVs6MjU1XSBpZiBpc2luc3RhbmNlKG1hbnVmYWN0dXJlciwgc3RyKSBhbmQgbWFudWZhY3R1cmVyLnN0cmlwKCkgZWxzZSAnQXBwbGUnXG4gICAgZm9yIGtleSBpbiAoJ2JhdHRlcnlfcHJlc2VudCcsICdhY19jb25uZWN0ZWQnKTpcbiAgICAgICAgdmFsdWUgPSBvcHRpb25hbF9ib29sKGJvZHksIGtleSlcbiAgICAgICAgaWYgdmFsdWUgaXMgbm90IE5vbmU6XG4gICAgICAgICAgICBIT1NUW2tleV0gPSB2YWx1ZVxuICAgIHBlcmNlbnQgPSBib2R5LmdldCgnYmF0dGVyeV9wZXJjZW50JylcbiAgICBpZiBpc2luc3RhbmNlKHBlcmNlbnQsIChpbnQsIGZsb2F0KSkgYW5kIDAgPD0gcGVyY2VudCA8PSAxMDA6XG4gICAgICAgIEhPU1RbJ2JhdHRlcnlfcGVyY2VudCddID0gaW50KHBlcmNlbnQpXG4gICAgc3RhdHVzID0gYm9keS5nZXQoJ2JhdHRlcnlfc3RhdHVzJylcbiAgICBpZiBpc2luc3RhbmNlKHN0YXR1cywgc3RyKSBhbmQgc3RhdHVzLnN0cmlwKCk6XG4gICAgICAgIEhPU1RbJ2JhdHRlcnlfc3RhdHVzJ10gPSBzdGF0dXMuc3RyaXAoKVs6MjU1XVxuXG5cbmRlZiByZWFkX2hlbHBlcl91cGxpbmsoKTpcbiAgICBwYXJzZWQgPSBzdG9yYWdlX3Byb3h5KClcbiAgICBjb25uZWN0aW9uID0gaHR0cC5jbGllbnQuSFRUUENvbm5lY3Rpb24ocGFyc2VkLmhvc3RuYW1lLCBwYXJzZWQucG9ydCBvciA4MCwgdGltZW91dD0xNSlcbiAgICB0cnk6XG4gICAgICAgIGNvbm5lY3Rpb24ucmVxdWVzdCgnR0VUJywgJy91cGxpbmsnKVxuICAgICAgICByZXNwb25zZSA9IGNvbm5lY3Rpb24uZ2V0cmVzcG9uc2UoKVxuICAgICAgICByYXcgPSByZXNwb25zZS5yZWFkKDY1NTM3KVxuICAgICAgICBpZiByZXNwb25zZS5zdGF0dXMgIT0gMjAwIG9yIGxlbihyYXcpID4gNjU1MzY6XG4gICAgICAgICAgICByYWlzZSBPU0Vycm9yKCd1cGxpbmsgcHJvYmUgdW5hdmFpbGFibGUnKVxuICAgICAgICBib2R5ID0ganNvbi5sb2FkcyhyYXcuZGVjb2RlKCkpXG4gICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGJvZHksIGRpY3QpOlxuICAgICAgICAgICAgcmFpc2UgT1NFcnJvcigndXBsaW5rIHByb2JlIHVuYXZhaWxhYmxlJylcbiAgICAgICAgYXBwbHlfaG9zdF9mcm9tX2hlbHBlcihib2R5KVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgJ3VwbGlua19raW5kJzogdXBsaW5rX2tpbmQoYm9vbChib2R5LmdldCgnd2lmaScpKSwgYm9keS5nZXQoJ2lmYWNlJykpLFxuICAgICAgICAgICAgJ3VwbGlua19wcm9iZV9vayc6IGJvZHkuZ2V0KCdvaycpIGlzIFRydWUsXG4gICAgICAgICAgICAndXBsaW5rX3Byb2JlX2Jwcyc6IGludChib2R5LmdldCgnYnBzJykgb3IgMCksXG4gICAgICAgICAgICAndXBsaW5rX3Byb2JlZF9hdCc6IGlzb19mcm9tX3VuaXgoYm9keS5nZXQoJ3Byb2JlZF9hdCcpKSxcbiAgICAgICAgfVxuICAgIGZpbmFsbHk6XG4gICAgICAgIGNvbm5lY3Rpb24uY2xvc2UoKVxuXG5cbmRlZiBwcm9iZV9jbG91ZGZsYXJlX3VwbGluaygpOlxuICAgIHN0YXJ0ZWQgPSB0aW1lLm1vbm90b25pYygpXG4gICAgcGF5bG9hZCA9IGInXFwwJyAqIFBST0JFX0JZVEVTXG4gICAgY3R4ID0gc3NsLmNyZWF0ZV9kZWZhdWx0X2NvbnRleHQoKVxuICAgIGN0eC5taW5pbXVtX3ZlcnNpb24gPSBzc2wuVExTVmVyc2lvbi5UTFN2MV8yXG4gICAgY29ubiA9IGh0dHAuY2xpZW50LkhUVFBTQ29ubmVjdGlvbihQUk9CRV9IT1NULCA0NDMsIHRpbWVvdXQ9UFJPQkVfVElNRU9VVCwgY29udGV4dD1jdHgpXG4gICAgdHJ5OlxuICAgICAgICBjb25uLnJlcXVlc3QoJ1BVVCcsIFBST0JFX1BBVEgsIGJvZHk9cGF5bG9hZCwgaGVhZGVycz17J0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nfSlcbiAgICAgICAgcmVzcG9uc2UgPSBjb25uLmdldHJlc3BvbnNlKClcbiAgICAgICAgcmVzcG9uc2UucmVhZCgpXG4gICAgICAgIGVsYXBzZWQgPSBtYXgodGltZS5tb25vdG9uaWMoKSAtIHN0YXJ0ZWQsIDAuMDAxKVxuICAgICAgICBvayA9IHJlc3BvbnNlLnN0YXR1cyBpbiAoMjAwLCA0MDMpXG4gICAgICAgIHJldHVybiBvaywgaW50KFBST0JFX0JZVEVTIC8gZWxhcHNlZCkgaWYgb2sgZWxzZSAwXG4gICAgZXhjZXB0IChPU0Vycm9yLCBzc2wuU1NMRXJyb3IsIGh0dHAuY2xpZW50LkhUVFBFeGNlcHRpb24sIFZhbHVlRXJyb3IpOlxuICAgICAgICByZXR1cm4gRmFsc2UsIDBcbiAgICBmaW5hbGx5OlxuICAgICAgICBjb25uLmNsb3NlKClcblxuXG5kZWYgcmVmcmVzaF91cGxpbmsoZm9yY2U9RmFsc2UpOlxuICAgIGdsb2JhbCBVUExJTktfQVRcbiAgICBub3cgPSB0aW1lLm1vbm90b25pYygpXG4gICAgcHJveHkgPSBzdG9yYWdlX3Byb3h5KClcbiAgICB3aXRoIFVQTElOS19MT0NLOlxuICAgICAgICBpZiBub3QgZm9yY2UgYW5kIG5vdCBwcm94eSBhbmQgVVBMSU5LWyd1cGxpbmtfcHJvYmVkX2F0J10gYW5kIG5vdyAtIFVQTElOS19BVCA8IFVQTElOS19JTlRFUlZBTDpcbiAgICAgICAgICAgIHJldHVybiBkaWN0KFVQTElOSylcbiAgICB0cnk6XG4gICAgICAgIGlmIHByb3h5OlxuICAgICAgICAgICAgc3RhdGUgPSByZWFkX2hlbHBlcl91cGxpbmsoKVxuICAgICAgICBlbHNlOlxuICAgICAgICAgICAgb2ssIGJwcyA9IHByb2JlX2Nsb3VkZmxhcmVfdXBsaW5rKClcbiAgICAgICAgICAgIHN0YXRlID0ge1xuICAgICAgICAgICAgICAgICd1cGxpbmtfa2luZCc6IHVwbGlua19raW5kKHdpZmlfZGVmYXVsdF9yb3V0ZSgpLCBUcnVlKSxcbiAgICAgICAgICAgICAgICAndXBsaW5rX3Byb2JlX29rJzogb2ssXG4gICAgICAgICAgICAgICAgJ3VwbGlua19wcm9iZV9icHMnOiBicHMsXG4gICAgICAgICAgICAgICAgJ3VwbGlua19wcm9iZWRfYXQnOiB0aW1lLnN0cmZ0aW1lKCclWS0lbS0lZFQlSDolTTolU1onLCB0aW1lLmdtdGltZSgpKSxcbiAgICAgICAgICAgIH1cbiAgICBleGNlcHQgRXhjZXB0aW9uOlxuICAgICAgICBzdGF0ZSA9IGZhaWxlZF91cGxpbmsoJ3Vua25vd24nIGlmIHByb3h5IGVsc2UgdXBsaW5rX2tpbmQod2lmaV9kZWZhdWx0X3JvdXRlKCksIFRydWUpKVxuICAgIHdpdGggVVBMSU5LX0xPQ0s6XG4gICAgICAgIFVQTElOSy51cGRhdGUoc3RhdGUpXG4gICAgICAgIFVQTElOS19BVCA9IG5vd1xuICAgICAgICByZXR1cm4gZGljdChVUExJTkspXG5cblxuQ1BVX1NBTVBMRSA9IE5vbmVcblxuXG5kZWYgaG9zdF9jcHVfcGVyY2VudCgpOlxuICAgIGdsb2JhbCBDUFVfU0FNUExFXG4gICAgY291bnRlcnMgPSBbaW50KHZhbHVlKSBmb3IgdmFsdWUgaW4gUGF0aCgnL3Byb2Mvc3RhdCcpLnJlYWRfdGV4dCgpLnNwbGl0bGluZXMoKVswXS5zcGxpdCgpWzE6OV1dXG4gICAgc2FtcGxlID0gKHN1bShjb3VudGVycyksIGNvdW50ZXJzWzNdICsgY291bnRlcnNbNF0pXG4gICAgcHJldmlvdXMsIENQVV9TQU1QTEUgPSBDUFVfU0FNUExFLCBzYW1wbGVcbiAgICBpZiBwcmV2aW91cyBpcyBOb25lIG9yIHNhbXBsZVswXSA8PSBwcmV2aW91c1swXTpcbiAgICAgICAgcmV0dXJuIE5vbmVcbiAgICByZXR1cm4gbWF4KDAsIG1pbigxMDAsIDEwMCAqICgxIC0gKHNhbXBsZVsxXSAtIHByZXZpb3VzWzFdKSAvIChzYW1wbGVbMF0gLSBwcmV2aW91c1swXSkpKSlcblxuXG5kZWYgaG9zdF9hY3Rpdml0eSgpOlxuICAgIFwiXCJcIkNvbGxlY3QgaG9zdCBtZWFzdXJlbWVudHMgbG9jYWxseSwgb3IgdXNlIGEgZnJlc2ggaG9zdCBoZWxwZXIgZm9yIFZNcy5cIlwiXCJcbiAgICB3aW5kb3dzID0gcmVhZF9qc29uKFJPT1QgLyAnaG9zdC1hY3Rpdml0eS1wYXRoLmpzb24nKVxuICAgIGlmIHdpbmRvd3M6XG4gICAgICAgIHJldHVybiByZWFkX2pzb24oUGF0aCh3aW5kb3dzKSwge30pXG4gICAgcHJveHkgPSBzdG9yYWdlX3Byb3h5KClcbiAgICBpZiBwcm94eTpcbiAgICAgICAgdHJ5OlxuICAgICAgICAgICAgdXJpID0gdXJsbGliLnBhcnNlLnVybHVuc3BsaXQoKCdodHRwJywgcHJveHkubmV0bG9jLCAnL2FjdGl2aXR5JywgJycsICcnKSlcbiAgICAgICAgICAgIHJlcXVlc3QgPSB1cmxsaWIucmVxdWVzdC5SZXF1ZXN0KHVyaSwgaGVhZGVycz17J1gtREdFLUhlbHBlci1Ub2tlbic6IG9zLmVudmlyb24uZ2V0KCdER0VfSEVMUEVSX1RPS0VOJywgJycpfSlcbiAgICAgICAgICAgIHdpdGggdXJsbGliLnJlcXVlc3QudXJsb3BlbihyZXF1ZXN0LCB0aW1lb3V0PTMpIGFzIHJlc3BvbnNlOlxuICAgICAgICAgICAgICAgIHJldHVybiBqc29uLmxvYWRzKHJlc3BvbnNlLnJlYWQoNDA5NykpXG4gICAgICAgIGV4Y2VwdCAoT1NFcnJvciwgVmFsdWVFcnJvcik6XG4gICAgICAgICAgICByZXR1cm4ge31cbiAgICBzZXNzaW9ucyA9IG9wdGlvbmFsX2NvbW1hbmQoWydsb2dpbmN0bCcsICdsaXN0LXNlc3Npb25zJywgJy0tbm8tbGVnZW5kJ10pXG4gICAgaWRsZSA9IFtdXG4gICAgaWYgc2Vzc2lvbnMgaXMgbm90IE5vbmU6XG4gICAgICAgIGZvciBsaW5lIGluIHNlc3Npb25zLnNwbGl0bGluZXMoKTpcbiAgICAgICAgICAgIGlmIG5vdCBsaW5lLnNwbGl0KCk6XG4gICAgICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgICAgIGlkZW50aWZpZXIgPSBsaW5lLnNwbGl0KClbMF1cbiAgICAgICAgICAgIGRldGFpbHMgPSBvcHRpb25hbF9jb21tYW5kKFsnbG9naW5jdGwnLCAnc2hvdy1zZXNzaW9uJywgaWRlbnRpZmllciwgJy1wJywgJ1R5cGUnLCAnLXAnLCAnSWRsZUhpbnQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctcCcsICdJZGxlU2luY2VIaW50TW9ub3RvbmljJ10pXG4gICAgICAgICAgICBmaWVsZHMgPSBkaWN0KHJvdy5zcGxpdCgnPScsIDEpIGZvciByb3cgaW4gKGRldGFpbHMgb3IgJycpLnNwbGl0bGluZXMoKSBpZiAnPScgaW4gcm93KVxuICAgICAgICAgICAgaWYgZmllbGRzLmdldCgnVHlwZScpIG5vdCBpbiAoJ3gxMScsICd3YXlsYW5kJyk6XG4gICAgICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgICAgIHNpbmNlID0gbnVtYmVyKGZpZWxkcy5nZXQoJ0lkbGVTaW5jZUhpbnRNb25vdG9uaWMnKSlcbiAgICAgICAgICAgIGlkbGUuYXBwZW5kKG1heCgwLCB0aW1lLm1vbm90b25pYygpIC0gc2luY2UgLyAxMDAwMDAwKVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgZmllbGRzLmdldCgnSWRsZUhpbnQnKSA9PSAneWVzJyBhbmQgc2luY2UgZWxzZSAwKVxuICAgIHBvd2VyID0gcG93ZXJfaW52ZW50b3J5KClcbiAgICByZXR1cm4gZGljdChyZXBvcnRlZF9hdD10aW1lLnN0cmZ0aW1lKCclWS0lbS0lZFQlSDolTTolU1onLCB0aW1lLmdtdGltZSgpKSxcbiAgICAgICAgICAgICAgICBpZGxlX3NlY29uZHM9bWluKGlkbGUpIGlmIGlkbGUgZWxzZSBOb25lLFxuICAgICAgICAgICAgICAgIGNwdV9wZXJjZW50PWhvc3RfY3B1X3BlcmNlbnQoKSxcbiAgICAgICAgICAgICAgICBtZW1vcnlfYXZhaWxhYmxlX2J5dGVzPW1lbW9yeSgpLmdldCgnTWVtQXZhaWxhYmxlJyksXG4gICAgICAgICAgICAgICAgYmF0dGVyeV9wcmVzZW50PXBvd2VyLmdldCgnYmF0dGVyeV9wcmVzZW50JyksIGFjX2Nvbm5lY3RlZD1wb3dlci5nZXQoJ2FjX2Nvbm5lY3RlZCcpKVxuXG5cbmRlZiBjbGFpbV9hbGxvd2VkKHBvbGljeSwgYWN0aXZpdHkpOlxuICAgIGlmIHBvbGljeSBpcyBOb25lOlxuICAgICAgICByZXR1cm4gRmFsc2VcbiAgICB0cnk6XG4gICAgICAgIGZvciBrZXkgaW4gKCdpZGxlX3NlY29uZHMnLCAnY3B1X3BlcmNlbnQnLCAnbWVtb3J5X2F2YWlsYWJsZV9ieXRlcycpOlxuICAgICAgICAgICAgdmFsdWUgPSBhY3Rpdml0eS5nZXQoa2V5KVxuICAgICAgICAgICAgaWYgdmFsdWUgaXMgbm90IE5vbmUgYW5kICh0eXBlKHZhbHVlKSBub3QgaW4gKGZsb2F0LCBpbnQpIG9yIG5vdCBtYXRoLmlzZmluaXRlKHZhbHVlKSBvciB2YWx1ZSA8IDApOlxuICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZVxuICAgICAgICBhZ2UgPSB0aW1lLnRpbWUoKSAtIGNhbGVuZGFyLnRpbWVnbSh0aW1lLnN0cnB0aW1lKGFjdGl2aXR5WydyZXBvcnRlZF9hdCddLCAnJVktJW0tJWRUJUg6JU06JVNaJykpXG4gICAgICAgIGlmIHBvbGljeS5nZXQoJ2lkbGVfb25seScsIFRydWUpIG9yIHBvbGljeS5nZXQoJ2FjX29ubHknLCBUcnVlKTpcbiAgICAgICAgICAgIGlmIG5vdCAtNSA8PSBhZ2UgPD0gNjAgb3IgYWN0aXZpdHkuZ2V0KCdtZW1vcnlfYXZhaWxhYmxlX2J5dGVzJykgaXMgTm9uZTpcbiAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2VcbiAgICAgICAgaWYgcG9saWN5LmdldCgnYWNfb25seScsIFRydWUpIGFuZCBub3QgKGFjdGl2aXR5LmdldCgnYmF0dGVyeV9wcmVzZW50JykgaXMgRmFsc2Ugb3IgYWN0aXZpdHkuZ2V0KCdhY19jb25uZWN0ZWQnKSBpcyBUcnVlKTpcbiAgICAgICAgICAgIHJldHVybiBGYWxzZVxuICAgICAgICBpZiBwb2xpY3kuZ2V0KCdpZGxlX29ubHknLCBUcnVlKTpcbiAgICAgICAgICAgIGlmIGFjdGl2aXR5LmdldCgnaWRsZV9zZWNvbmRzJykgaXMgTm9uZSBvciBhY3Rpdml0eS5nZXQoJ2NwdV9wZXJjZW50JykgaXMgTm9uZTpcbiAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2VcbiAgICAgICAgICAgIGlmIGFjdGl2aXR5WydpZGxlX3NlY29uZHMnXSA8IDMwMCBvciBhY3Rpdml0eVsnY3B1X3BlcmNlbnQnXSA+IDUwOlxuICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZVxuICAgICAgICByZXR1cm4gYWN0aXZpdHkuZ2V0KCdtZW1vcnlfYXZhaWxhYmxlX2J5dGVzJykgaXMgTm9uZSBvciBhY3Rpdml0eVsnbWVtb3J5X2F2YWlsYWJsZV9ieXRlcyddID49IDEwMjQgKiogM1xuICAgIGV4Y2VwdCAoS2V5RXJyb3IsIFR5cGVFcnJvciwgVmFsdWVFcnJvciwgT3ZlcmZsb3dFcnJvcik6XG4gICAgICAgIHJldHVybiBub3QgcG9saWN5LmdldCgnaWRsZV9vbmx5JywgVHJ1ZSkgYW5kIG5vdCBwb2xpY3kuZ2V0KCdhY19vbmx5JywgVHJ1ZSlcblxuXG5kZWYgdGVsZW1ldHJ5KCk6XG4gICAgcmV0dXJuIGRpY3QobG9hZF9hdmVyYWdlPWxpc3Qob3MuZ2V0bG9hZGF2ZygpKSwgbWVtb3J5X2F2YWlsYWJsZV9ieXRlcz1tZW1vcnkoKS5nZXQoJ01lbUF2YWlsYWJsZScpLFxuICAgICAgICAgICAgICAgIGRpc2tfZnJlZV9ieXRlcz1zaHV0aWwuZGlza191c2FnZShST09UKS5mcmVlLFxuICAgICAgICAgICAgICAgIHNjcmF0Y2hfZnJlZV9ieXRlcz1zaHV0aWwuZGlza191c2FnZShTQ1JBVENIKS5mcmVlLFxuICAgICAgICAgICAgICAgIHVwdGltZV9zZWNvbmRzPWludChmbG9hdChQYXRoKCcvcHJvYy91cHRpbWUnKS5yZWFkX3RleHQoKS5zcGxpdCgpWzBdKSksXG4gICAgICAgICAgICAgICAgKipyZWFkX2pzb24oUk9PVCAvICdtZXRyaWNzLmpzb24nLCB7fSksICoqcG93ZXJfaW52ZW50b3J5KCksICoqcmVmcmVzaF91cGxpbmsoKSlcblxuXG5jbGFzcyBBUEk6XG4gICAgZGVmIF9faW5pdF9fKHNlbGYpOlxuICAgICAgICBzZWxmLmlkZW50aXR5ID0gcmVhZF9qc29uKFJPT1QgLyAnaWRlbnRpdHkuanNvbicpXG4gICAgICAgIHNlbGYub3JpZ2luID0gc2VsZi5pZGVudGl0eVsnb3JpZ2luJ10ucnN0cmlwKCcvJylcbiAgICAgICAgcGFyc2VkID0gdXJsbGliLnBhcnNlLnVybHNwbGl0KHNlbGYub3JpZ2luKVxuICAgICAgICBpZiBwYXJzZWQuc2NoZW1lICE9ICdodHRwcycgb3IgcGFyc2VkLnVzZXJuYW1lIG9yIHBhcnNlZC5xdWVyeSBvciBwYXJzZWQuZnJhZ21lbnQgb3IgcGFyc2VkLnBhdGg6XG4gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdXb3JrZXIgb3JpZ2luIG11c3QgYmUgYW4gSFRUUFMgb3JpZ2luJylcblxuICAgIGRlZiB3b3JrZXJfaWQoc2VsZik6XG4gICAgICAgIHJldHVybiBzdHIoc2VsZi5pZGVudGl0eS5nZXQoJ3dvcmtlcl9pZCcpIG9yIHNlbGYuaWRlbnRpdHlbJ2lkJ10pXG5cbiAgICBkZWYgcG9zdChzZWxmLCBwYXRoLCBwYXlsb2FkKTpcbiAgICAgICAgcmVxdWVzdCA9IHVybGxpYi5yZXF1ZXN0LlJlcXVlc3Qoc2VsZi5vcmlnaW4gKyAnL2FwaS92MS8nICsgcGF0aCxcbiAgICAgICAgICAgICAgICAgICAgZGF0YT1qc29uLmR1bXBzKHBheWxvYWQpLmVuY29kZSgpLCBoZWFkZXJzPXsnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgICAgICAgICAgICAgICAnQXV0aG9yaXphdGlvbic6ICdCZWFyZXIgJyArIHNlbGYuaWRlbnRpdHlbJ3Rva2VuJ10sXG4gICAgICAgICAgICAgICAgICAgICdVc2VyLUFnZW50JzogQlJPV1NFUl9VQSxcbiAgICAgICAgICAgICAgICAgICAgJ25ncm9rLXNraXAtYnJvd3Nlci13YXJuaW5nJzogJzEnfSwgbWV0aG9kPSdQT1NUJylcbiAgICAgICAgd2l0aCBQT1NUX0xPQ0s6XG4gICAgICAgICAgICB3aXRoIEhUVFAub3BlbihyZXF1ZXN0LCB0aW1lb3V0PTE1KSBhcyByZXNwb25zZTpcbiAgICAgICAgICAgICAgICBib2R5ID0gcmVzcG9uc2UucmVhZCg2NTUzNylcbiAgICAgICAgICAgICAgICBpZiBsZW4oYm9keSkgPiA2NTUzNjpcbiAgICAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignQ29udHJvbCByZXNwb25zZSB0b28gbGFyZ2UnKVxuICAgICAgICAgICAgICAgIHJldHVybiBqc29uLmxvYWRzKGJvZHkpXG5cblxuTUFYX1RBU0tTID0gMzJcblxuXG5kZWYgc2xvdF9jb3VudChjb25maWcpOlxuICAgIHJldHVybiBtYXgoaW50KChjb25maWcgb3Ige30pLmdldCgnc2xvdHMnKSBvciAxKSwgMSlcblxuXG5kZWYgam9iX2NvbmZpZyhjb25maWcsIHRhc2s9Tm9uZSk6XG4gICAgdGFzayA9IHRhc2sgb3Ige31cbiAgICBtZW1vcnkgPSBpbnQodGFzay5nZXQoJ21lbW9yeV9tYicpIG9yIDApXG4gICAgY3B1cyA9IGZsb2F0KHRhc2suZ2V0KCdjcHVzJykgb3IgMClcbiAgICBzY3JhdGNoID0gaW50KHRhc2suZ2V0KCdzY3JhdGNoX21iJykgb3IgMClcbiAgICBpZiBtZW1vcnkgYW5kIGNwdXM6XG4gICAgICAgIGxpbWl0cyA9IGRpY3QoY29uZmlnLCBtZW1vcnlfbWI9bWVtb3J5LCBjcHVzPWNwdXMpXG4gICAgICAgIGlmIHNjcmF0Y2g6XG4gICAgICAgICAgICBsaW1pdHNbJ3NjcmF0Y2hfbWInXSA9IHNjcmF0Y2hcbiAgICAgICAgcmV0dXJuIGxpbWl0c1xuICAgIHNsb3RzID0gc2xvdF9jb3VudChjb25maWcpXG4gICAgcmV0dXJuIGRpY3QoY29uZmlnLCBtZW1vcnlfbWI9bWF4KGludChjb25maWdbJ21lbW9yeV9tYiddKSAvLyBzbG90cywgNTEyKSxcbiAgICAgICAgICAgICAgICBzY3JhdGNoX21iPW1heChpbnQoY29uZmlnWydzY3JhdGNoX21iJ10pIC8vIHNsb3RzLCAyNTYpLFxuICAgICAgICAgICAgICAgIGNwdXM9bWF4KHJvdW5kKGZsb2F0KGNvbmZpZ1snY3B1cyddKSAvIHNsb3RzLCAyKSwgMC4yNSkpXG5cblxuZGVmIGRyb3BfdGFzayh0YXNrKTpcbiAgICBUQVNLU1s6XSA9IFtpdGVtIGZvciBpdGVtIGluIFRBU0tTIGlmIGl0ZW0uZ2V0KCdpZCcpICE9IHRhc2suZ2V0KCdpZCcpIG9yIGl0ZW0uZ2V0KCdhdHRlbXB0JykgIT0gdGFzay5nZXQoJ2F0dGVtcHQnKV1cblxuXG5kZWYgaGVhcnRiZWF0KGFwaSk6XG4gICAgd2l0aCBTVEFURV9MT0NLOlxuICAgICAgICByZXBvcnQgPSBkaWN0KFJFUE9SVClcbiAgICAgICAgdGFza3MgPSBbeydpZCc6IGl0ZW1bJ2lkJ10sICdhdHRlbXB0JzogaXRlbVsnYXR0ZW1wdCddfSBmb3IgaXRlbSBpbiBUQVNLU11cbiAgICAgICAgbG9ncyA9IGxpc3QoTE9HUylcbiAgICBpZiB0YXNrczpcbiAgICAgICAgcmVwb3J0Wyd0YXNrcyddID0gdGFza3NcbiAgICAgICAgcmVwb3J0LnVwZGF0ZSh0YXNrX2lkPXRhc2tzWzBdWydpZCddLCBhdHRlbXB0PXRhc2tzWzBdWydhdHRlbXB0J10pXG4gICAgcmVwb3J0Wyd0ZWxlbWV0cnknXSA9IHRlbGVtZXRyeSgpXG4gICAgcmVwb3J0Wydob3N0X2FjdGl2aXR5J10gPSBob3N0X2FjdGl2aXR5KClcbiAgICBpZiBIT1NULmdldCgnaGFyZHdhcmVfbW9kZWwnKTpcbiAgICAgICAgaGFyZHdhcmUgPSBkaWN0KHJlcG9ydC5nZXQoJ2hhcmR3YXJlJykgb3Ige30pXG4gICAgICAgIGhhcmR3YXJlWydtYW51ZmFjdHVyZXInXSA9IEhPU1QuZ2V0KCdtYW51ZmFjdHVyZXInKSBvciBoYXJkd2FyZS5nZXQoJ21hbnVmYWN0dXJlcicpIG9yICdBcHBsZSdcbiAgICAgICAgaGFyZHdhcmVbJ2hhcmR3YXJlX21vZGVsJ10gPSBIT1NUWydoYXJkd2FyZV9tb2RlbCddXG4gICAgICAgIHJlcG9ydFsnaGFyZHdhcmUnXSA9IGhhcmR3YXJlXG4gICAgcmVwb3J0Wydsb2dzJ10gPSBsb2dzXG4gICAgcmVzcG9uc2UgPSBhcGkucG9zdCgnd29ya2Vycy8nICsgYXBpLndvcmtlcl9pZCgpICsgJy9oZWFydGJlYXQnLCByZXBvcnQpXG4gICAgd2l0aCBTVEFURV9MT0NLOlxuICAgICAgICBDT05UUk9MLmNsZWFyKClcbiAgICAgICAgQ09OVFJPTC51cGRhdGUocmVzcG9uc2UpXG4gICAgcmV0dXJuIHJlc3BvbnNlXG5cblxuZGVmIGhlYXJ0YmVhdF9sb29wKGFwaSk6XG4gICAgaW52ZW50b3J5X2F0ID0gdGltZS5tb25vdG9uaWMoKVxuICAgIHdoaWxlIG5vdCBTVE9QLndhaXQoMTUpOlxuICAgICAgICB0cnk6XG4gICAgICAgICAgICBpZiB0aW1lLm1vbm90b25pYygpIC0gaW52ZW50b3J5X2F0ID49IDMwMDpcbiAgICAgICAgICAgICAgICBoYXJkd2FyZSA9IGludmVudG9yeSgpXG4gICAgICAgICAgICAgICAgd2l0aCBTVEFURV9MT0NLOlxuICAgICAgICAgICAgICAgICAgICBSRVBPUlRbJ2hhcmR3YXJlJ10gPSBoYXJkd2FyZVxuICAgICAgICAgICAgICAgIGludmVudG9yeV9hdCA9IHRpbWUubW9ub3RvbmljKClcbiAgICAgICAgICAgIGhlYXJ0YmVhdChhcGkpXG4gICAgICAgIGV4Y2VwdCBFeGNlcHRpb246XG4gICAgICAgICAgICAjIE5vIHRhc2sgcGF5bG9hZHMsIFVSTHMgb3IgZXhjZXB0aW9uIG1lc3NhZ2VzIGVudGVyIHBlcnNpc3RlbnQgbG9ncy5cbiAgICAgICAgICAgIG5vdGUoJ1dvcmtlciBoZWFydGJlYXQgdW5hdmFpbGFibGUnKVxuXG5cbiMgdXJsbGliIHdyYXBzIFRMUyByZXNldHMgYXMgVVJMRXJyb3I7IFNTTENlcnRWZXJpZmljYXRpb25FcnJvciBpcyBTU0xFcnJvciBhbmQgbXVzdCBub3QgcmV0cnkuXG5UUkFOU0lFTlRfSFRUUCA9IChDb25uZWN0aW9uUmVzZXRFcnJvciwgQnJva2VuUGlwZUVycm9yLCBDb25uZWN0aW9uRXJyb3IsIFRpbWVvdXRFcnJvcixcbiAgICAgICAgICAgICAgICAgIGh0dHAuY2xpZW50LkluY29tcGxldGVSZWFkLCBodHRwLmNsaWVudC5SZW1vdGVEaXNjb25uZWN0ZWQsIHNzbC5TU0xFcnJvcilcblNFVFVQX1NFQ09ORFMgPSAyMTBcbiMgQnVyc3QgUFVUcyBvbiBXaS1GaSBmYWlsIFRMUyBNQUMgY2hlY2tzIGF0IENsb3VkZmxhcmUuIEV0aGVybmV0IGlzIGxlZnQgdW5jYXBwZWQuXG5ERUZBVUxUX1VQTE9BRF9CUFMgPSAyICogMTAyNCAqIDEwMjRcblxuXG5kZWYgY29tbWFuZF9vdXRwdXQoYXJncyk6XG4gICAgdHJ5OlxuICAgICAgICByZXR1cm4gc3VicHJvY2Vzcy5ydW4oYXJncywgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwgc3RkZXJyPXN1YnByb2Nlc3MuREVWTlVMTCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZW91dD01LCBjaGVjaz1GYWxzZSkuc3Rkb3V0LmRlY29kZShlcnJvcnM9J3JlcGxhY2UnKVxuICAgIGV4Y2VwdCAoT1NFcnJvciwgc3VicHJvY2Vzcy5TdWJwcm9jZXNzRXJyb3IpOlxuICAgICAgICByZXR1cm4gJydcblxuXG5kZWYgcGFyc2Vfcm91dGVfaW50ZXJmYWNlKHRleHQpOlxuICAgIGZvciBsaW5lIGluIHRleHQuc3BsaXRsaW5lcygpOlxuICAgICAgICBzdHJpcHBlZCA9IGxpbmUuc3RyaXAoKVxuICAgICAgICBpZiBzdHJpcHBlZC5zdGFydHN3aXRoKCdpbnRlcmZhY2U6Jyk6XG4gICAgICAgICAgICByZXR1cm4gc3RyaXBwZWQuc3BsaXQoJzonLCAxKVsxXS5zdHJpcCgpIG9yIE5vbmVcbiAgICByZXR1cm4gTm9uZVxuXG5cbmRlZiBwYXJzZV93aWZpX2RldmljZXModGV4dCk6XG4gICAgZGV2aWNlcyA9IHNldCgpXG4gICAgcG9ydCA9ICcnXG4gICAgZm9yIGxpbmUgaW4gdGV4dC5zcGxpdGxpbmVzKCk6XG4gICAgICAgIGlmIGxpbmUuc3RhcnRzd2l0aCgnSGFyZHdhcmUgUG9ydDonKTpcbiAgICAgICAgICAgIHBvcnQgPSBsaW5lLnNwbGl0KCc6JywgMSlbMV0uc3RyaXAoKS5sb3dlcigpXG4gICAgICAgIGVsaWYgbGluZS5zdGFydHN3aXRoKCdEZXZpY2U6JykgYW5kIHBvcnQ6XG4gICAgICAgICAgICBpZiAnd2ktZmknIGluIHBvcnQgb3IgcG9ydCBpbiAoJ3dpZmknLCAnYWlycG9ydCcsICd3bGFuJyk6XG4gICAgICAgICAgICAgICAgZGV2aWNlcy5hZGQobGluZS5zcGxpdCgnOicsIDEpWzFdLnN0cmlwKCkpXG4gICAgICAgICAgICBwb3J0ID0gJydcbiAgICByZXR1cm4gZGV2aWNlc1xuXG5cbmRlZiBwYXJzZV9pcF9kZWZhdWx0X2Rldih0ZXh0KTpcbiAgICBiZXN0ID0gTm9uZVxuICAgIGZvciBsaW5lIGluIHRleHQuc3BsaXRsaW5lcygpOlxuICAgICAgICBwYXJ0cyA9IGxpbmUuc3BsaXQoKVxuICAgICAgICBpZiBub3QgcGFydHMgb3IgcGFydHNbMF0gIT0gJ2RlZmF1bHQnIG9yICdkZXYnIG5vdCBpbiBwYXJ0czpcbiAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIGlmYWNlID0gcGFydHNbcGFydHMuaW5kZXgoJ2RldicpICsgMV1cbiAgICAgICAgaWYgbm90IGlmYWNlOlxuICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgdHJ5OlxuICAgICAgICAgICAgbWV0cmljID0gaW50KHBhcnRzW3BhcnRzLmluZGV4KCdtZXRyaWMnKSArIDFdKVxuICAgICAgICBleGNlcHQgKFZhbHVlRXJyb3IsIEluZGV4RXJyb3IpOlxuICAgICAgICAgICAgbWV0cmljID0gMFxuICAgICAgICBpZiBiZXN0IGlzIE5vbmUgb3IgbWV0cmljIDwgYmVzdFswXTpcbiAgICAgICAgICAgIGJlc3QgPSAobWV0cmljLCBpZmFjZSlcbiAgICByZXR1cm4gTm9uZSBpZiBiZXN0IGlzIE5vbmUgZWxzZSBiZXN0WzFdXG5cblxuZGVmIHdpZmlfZGVmYXVsdF9yb3V0ZSgpOlxuICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJzpcbiAgICAgICAgaWZhY2UgPSBwYXJzZV9yb3V0ZV9pbnRlcmZhY2UoY29tbWFuZF9vdXRwdXQoWycvc2Jpbi9yb3V0ZScsICctbicsICdnZXQnLCAnZGVmYXVsdCddKSlcbiAgICAgICAgcmV0dXJuIGJvb2woaWZhY2UpIGFuZCBpZmFjZSBpbiBwYXJzZV93aWZpX2RldmljZXMoY29tbWFuZF9vdXRwdXQoWycvdXNyL3NiaW4vbmV0d29ya3NldHVwJywgJy1saXN0YWxsaGFyZHdhcmVwb3J0cyddKSlcbiAgICB0ZXh0ID0gY29tbWFuZF9vdXRwdXQoWydpcCcsICctNCcsICctbycsICdyb3V0ZScsICdzaG93JywgJ2RlZmF1bHQnXSkgb3IgY29tbWFuZF9vdXRwdXQoWydpcCcsICctbycsICdyb3V0ZScsICdzaG93JywgJ2RlZmF1bHQnXSlcbiAgICBpZmFjZSA9IHBhcnNlX2lwX2RlZmF1bHRfZGV2KHRleHQpXG4gICAgcmV0dXJuIGJvb2woaWZhY2UpIGFuZCBQYXRoKCcvc3lzL2NsYXNzL25ldC8lcy93aXJlbGVzcycgJSBpZmFjZSkuaXNfZGlyKClcblxuXG5kZWYgdXBsb2FkX2JwcyhlbnZpcm9uPU5vbmUsIHdpZmk9Tm9uZSk6XG4gICAgZW52aXJvbiA9IG9zLmVudmlyb24gaWYgZW52aXJvbiBpcyBOb25lIGVsc2UgZW52aXJvblxuICAgIGlmICdER0VfU1RPUkFHRV9VUExPQURfQlBTJyBpbiBlbnZpcm9uOlxuICAgICAgICB0cnk6XG4gICAgICAgICAgICB2YWx1ZSA9IGludChzdHIoZW52aXJvbi5nZXQoJ0RHRV9TVE9SQUdFX1VQTE9BRF9CUFMnKSkuc3RyaXAoKSlcbiAgICAgICAgZXhjZXB0IChUeXBlRXJyb3IsIFZhbHVlRXJyb3IpIGFzIGVycm9yOlxuICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignREdFX1NUT1JBR0VfVVBMT0FEX0JQUyBtdXN0IGJlIGEgbm9uLW5lZ2F0aXZlIGludGVnZXInKSBmcm9tIGVycm9yXG4gICAgICAgIGlmIHZhbHVlIDwgMDpcbiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ0RHRV9TVE9SQUdFX1VQTE9BRF9CUFMgbXVzdCBiZSBhIG5vbi1uZWdhdGl2ZSBpbnRlZ2VyJylcbiAgICAgICAgcmV0dXJuIHZhbHVlXG4gICAgaWYgd2lmaSBpZiB3aWZpIGlzIG5vdCBOb25lIGVsc2Ugd2lmaV9kZWZhdWx0X3JvdXRlKCk6XG4gICAgICAgIHJldHVybiBERUZBVUxUX1VQTE9BRF9CUFNcbiAgICByZXR1cm4gMFxuXG5cbmRlZiBzZW5kX2JvZHkoY29ubmVjdGlvbiwgc291cmNlLCBkZWFkbGluZSwgc2xlZXA9dGltZS5zbGVlcCwgY2xvY2s9dGltZS5tb25vdG9uaWMpOlxuICAgIGJwcyA9IHVwbG9hZF9icHMoKVxuICAgIGNodW5rX3NpemUgPSA2NTUzNiBpZiBicHMgZWxzZSAxMDI0ICogMTAyNFxuICAgIHN0YXJ0ZWQgPSBjbG9jaygpXG4gICAgc2VudCA9IDBcbiAgICB3aXRoIHNvdXJjZS5vcGVuKCdyYicpIGFzIGZpbGU6XG4gICAgICAgIHdoaWxlIGNodW5rIDo9IGZpbGUucmVhZChjaHVua19zaXplKTpcbiAgICAgICAgICAgIGlmIGNsb2NrKCkgPiBkZWFkbGluZTpcbiAgICAgICAgICAgICAgICByYWlzZSBUaW1lb3V0RXJyb3IoJ1Rhc2sgZGVhZGxpbmUgZXhjZWVkZWQnKVxuICAgICAgICAgICAgY29ubmVjdGlvbi5zZW5kKGNodW5rKVxuICAgICAgICAgICAgc2VudCArPSBsZW4oY2h1bmspXG4gICAgICAgICAgICBpZiBub3QgYnBzOlxuICAgICAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgICAgICB3YWl0ID0gc3RhcnRlZCArIChzZW50IC8gYnBzKSAtIGNsb2NrKClcbiAgICAgICAgICAgIGlmIHdhaXQgPiAwOlxuICAgICAgICAgICAgICAgIHNsZWVwKHdhaXQpXG5cblxuZGVmIHVud3JhcF9odHRwKGVycm9yKTpcbiAgICBpZiBpc2luc3RhbmNlKGVycm9yLCB1cmxsaWIuZXJyb3IuSFRUUEVycm9yKTpcbiAgICAgICAgcmV0dXJuIGVycm9yXG4gICAgaWYgaXNpbnN0YW5jZShlcnJvciwgdXJsbGliLmVycm9yLlVSTEVycm9yKSBhbmQgZXJyb3IucmVhc29uIGlzIG5vdCBOb25lOlxuICAgICAgICByZXR1cm4gdW53cmFwX2h0dHAoZXJyb3IucmVhc29uKVxuICAgIHJldHVybiBlcnJvclxuXG5cbmRlZiB0cmFuc2llbnRfaHR0cChkZWFkbGluZSwgd29yaywgcGF1c2U9dGltZS5zbGVlcCk6XG4gICAgZXJyb3IgPSBOb25lXG4gICAgZm9yIGF0dGVtcHQgaW4gcmFuZ2UoMyk6XG4gICAgICAgIGlmIHRpbWUubW9ub3RvbmljKCkgPiBkZWFkbGluZTpcbiAgICAgICAgICAgIHJhaXNlIFRpbWVvdXRFcnJvcignVGFzayBkZWFkbGluZSBleGNlZWRlZCcpXG4gICAgICAgIHRyeTpcbiAgICAgICAgICAgIHJldHVybiB3b3JrKClcbiAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBjYXVnaHQ6XG4gICAgICAgICAgICByZWFzb24gPSB1bndyYXBfaHR0cChjYXVnaHQpXG4gICAgICAgICAgICBpZiBpc2luc3RhbmNlKHJlYXNvbiwgc3NsLlNTTENlcnRWZXJpZmljYXRpb25FcnJvcikgb3Igbm90IGlzaW5zdGFuY2UocmVhc29uLCBUUkFOU0lFTlRfSFRUUCk6XG4gICAgICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgIGlmIHRpbWUubW9ub3RvbmljKCkgPiBkZWFkbGluZSBvciBzdHIocmVhc29uKSA9PSAnVGFzayBkZWFkbGluZSBleGNlZWRlZCc6XG4gICAgICAgICAgICAgICAgcmFpc2UgVGltZW91dEVycm9yKCdUYXNrIGRlYWRsaW5lIGV4Y2VlZGVkJykgZnJvbSBjYXVnaHRcbiAgICAgICAgICAgIGVycm9yID0gY2F1Z2h0XG4gICAgICAgICAgICBwYXVzZShtaW4oMiAqKiBhdHRlbXB0LCA0KSlcbiAgICByYWlzZSBlcnJvclxuXG5cbmRlZiBkb3dubG9hZCh1cmwsIHRhcmdldCwgc2l6ZSwgY2hlY2tzdW0sIGRlYWRsaW5lKTpcbiAgICBpZiB1cmxsaWIucGFyc2UudXJsc3BsaXQodXJsKS5zY2hlbWUgIT0gJ2h0dHBzJzpcbiAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignU3RvcmFnZSByZXF1aXJlcyBIVFRQUycpXG4gICAgbGltaXQgPSBzaXplIGlmIHNpemUgaXMgbm90IE5vbmUgZWxzZSA1MCAqIDEwMjQgKiAxMDI0XG5cbiAgICBkZWYgcHVsbCgpOlxuICAgICAgICBkaWdlc3QgPSBoYXNobGliLm1kNSgpXG4gICAgICAgIHRvdGFsID0gMFxuICAgICAgICB3aXRoIHN0b3JhZ2VfZ2V0KHVybCkgYXMgcmVzcG9uc2UsIHRhcmdldC5vcGVuKCd3YicpIGFzIG91dHB1dDpcbiAgICAgICAgICAgIHdoaWxlIGNodW5rIDo9IHJlc3BvbnNlLnJlYWQoMTAyNCAqIDEwMjQpOlxuICAgICAgICAgICAgICAgIGlmIHRpbWUubW9ub3RvbmljKCkgPiBkZWFkbGluZTpcbiAgICAgICAgICAgICAgICAgICAgcmFpc2UgVGltZW91dEVycm9yKCdUYXNrIGRlYWRsaW5lIGV4Y2VlZGVkJylcbiAgICAgICAgICAgICAgICB0b3RhbCArPSBsZW4oY2h1bmspXG4gICAgICAgICAgICAgICAgaWYgdG90YWwgPiBsaW1pdDpcbiAgICAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignSW5wdXQgZXhjZWVkcyBkZWNsYXJlZCBzaXplJylcbiAgICAgICAgICAgICAgICBvdXRwdXQud3JpdGUoY2h1bmspXG4gICAgICAgICAgICAgICAgZGlnZXN0LnVwZGF0ZShjaHVuaylcbiAgICAgICAgZW5jb2RlZCA9IGJhc2U2NC5iNjRlbmNvZGUoZGlnZXN0LmRpZ2VzdCgpKS5kZWNvZGUoKVxuICAgICAgICBpZiBzaXplIGlzIG5vdCBOb25lIGFuZCB0b3RhbCAhPSBzaXplOlxuICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignSW5wdXQgY2hlY2tzdW0gbWlzbWF0Y2gnKVxuICAgICAgICBpZiBjaGVja3N1bSBhbmQgZW5jb2RlZCAhPSBjaGVja3N1bTpcbiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ0lucHV0IGNoZWNrc3VtIG1pc21hdGNoJylcblxuICAgIHRyYW5zaWVudF9odHRwKGRlYWRsaW5lLCBwdWxsKVxuXG5cbmRlZiB2ZXJpZnlfdGFza19zaWduYXR1cmUoYXBpLCB0YXNrKTpcbiAgICBrZXlzID0gKCdpZCcsICdhdHRlbXB0JywgJ29wZXJhdGlvbicsICdidW5kbGVfZGlnZXN0JywgJ3J1bnRpbWVfYWJpJywgJ2J1bmRsZV9zaXplJywgJ2J1bmRsZV9jaGVja3N1bScpXG4gICAgbWFuaWZlc3QgPSB7a2V5OiB0YXNrW2tleV0gZm9yIGtleSBpbiBrZXlzfVxuICAgIGVuY29kZWQgPSBqc29uLmR1bXBzKG1hbmlmZXN0LCBzb3J0X2tleXM9VHJ1ZSwgc2VwYXJhdG9ycz0oJywnLCAnOicpKS5lbmNvZGUoKVxuICAgIGtleSA9IGhhc2hsaWIuc2hhMjU2KGFwaS5pZGVudGl0eVsndG9rZW4nXS5lbmNvZGUoKSkuZGlnZXN0KClcbiAgICBleHBlY3RlZCA9IGhtYWMubmV3KGtleSwgZW5jb2RlZCwgaGFzaGxpYi5zaGEyNTYpLmhleGRpZ2VzdCgpXG4gICAgaWYgbm90IGhtYWMuY29tcGFyZV9kaWdlc3QoZXhwZWN0ZWQsIHRhc2tbJ2J1bmRsZV9zaWduYXR1cmUnXSk6XG4gICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ0ludmFsaWQgdGFzayBidW5kbGUgc2lnbmF0dXJlJylcblxuXG5kZWYgZXh0cmFjdF9idW5kbGUoYXJjaGl2ZSwgdGFyZ2V0LCB0YXNrKTpcbiAgICBpZiBoYXNobGliLnNoYTI1NihhcmNoaXZlLnJlYWRfYnl0ZXMoKSkuaGV4ZGlnZXN0KCkgIT0gdGFza1snYnVuZGxlX2RpZ2VzdCddOlxuICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdUYXNrIGJ1bmRsZSBkaWdlc3QgbWlzbWF0Y2gnKVxuICAgIHRhcmdldC5ta2Rpcihtb2RlPTBvNzU1KVxuICAgIHdpdGggdGFyZmlsZS5vcGVuKGFyY2hpdmUsICdyOmd6JykgYXMgYnVuZGxlOlxuICAgICAgICBtZW1iZXJzID0gYnVuZGxlLmdldG1lbWJlcnMoKVxuICAgICAgICBpZiBsZW4obWVtYmVycykgPiA2NCBvciBhbnkobm90IG1lbWJlci5pc2ZpbGUoKSBmb3IgbWVtYmVyIGluIG1lbWJlcnMpOlxuICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignSW52YWxpZCB0YXNrIGJ1bmRsZSBlbnRyaWVzJylcbiAgICAgICAgdG90YWwgPSBzdW0obWVtYmVyLnNpemUgZm9yIG1lbWJlciBpbiBtZW1iZXJzKVxuICAgICAgICBpZiB0b3RhbCA+IDEwICogMTAyNCAqIDEwMjQ6XG4gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdUYXNrIGJ1bmRsZSBpcyB0b28gbGFyZ2UnKVxuICAgICAgICBmb3IgbWVtYmVyIGluIG1lbWJlcnM6XG4gICAgICAgICAgICBwYXJ0cyA9IFBhdGgobWVtYmVyLm5hbWUpLnBhcnRzXG4gICAgICAgICAgICBpZiBub3QgcGFydHMgb3IgbWVtYmVyLm5hbWUuc3RhcnRzd2l0aCgnLycpIG9yICcuLicgaW4gcGFydHMgb3IgJ1xcXFwnIGluIG1lbWJlci5uYW1lOlxuICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ1Vuc2FmZSB0YXNrIGJ1bmRsZSBwYXRoJylcbiAgICAgICAgICAgIGRlc3RpbmF0aW9uID0gdGFyZ2V0LmpvaW5wYXRoKCpwYXJ0cylcbiAgICAgICAgICAgIGRlc3RpbmF0aW9uLnBhcmVudC5ta2Rpcihtb2RlPTBvNzU1LCBwYXJlbnRzPVRydWUsIGV4aXN0X29rPVRydWUpXG4gICAgICAgICAgICB3aXRoIGJ1bmRsZS5leHRyYWN0ZmlsZShtZW1iZXIpIGFzIHNvdXJjZSwgZGVzdGluYXRpb24ub3Blbignd2InKSBhcyBvdXRwdXQ6XG4gICAgICAgICAgICAgICAgc2h1dGlsLmNvcHlmaWxlb2JqKHNvdXJjZSwgb3V0cHV0KVxuICAgICAgICAgICAgZGVzdGluYXRpb24uY2htb2QoMG80NDQpXG4gICAgIyBTZXJ2aWNlIFVNYXNrPTAwNzcgd291bGQga2VlcCBta2RpciAwNzU1IGFzIDA3MDAuIFRhc2sgY29udGFpbmVycyBhcmUgdWlkIDEwMDAxLlxuICAgIGZvciBwYXRoIGluIFt0YXJnZXQsICp0YXJnZXQucmdsb2IoJyonKV06XG4gICAgICAgIHBhdGguY2htb2QoMG83NTUgaWYgcGF0aC5pc19kaXIoKSBlbHNlIDBvNDQ0KVxuICAgIG1hbmlmZXN0ID0gcmVhZF9qc29uKHRhcmdldCAvICd0YXNrLWJ1bmRsZS5qc29uJywge30pXG4gICAgaWYgbWFuaWZlc3QuZ2V0KCdvcGVyYXRpb24nKSAhPSB0YXNrWydvcGVyYXRpb24nXSBvciBtYW5pZmVzdC5nZXQoJ3J1bnRpbWVfYWJpJykgIT0gdGFza1sncnVudGltZV9hYmknXTpcbiAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignVGFzayBidW5kbGUgbWFuaWZlc3QgbWlzbWF0Y2gnKVxuXG5cbmRlZiB1cGxvYWQodXJsLCBoZWFkZXJzLCBzb3VyY2UsIGRlYWRsaW5lKTpcbiAgICB1cmkgPSB1cmxsaWIucGFyc2UudXJsc3BsaXQodXJsKVxuICAgIGlmIHVyaS5zY2hlbWUgIT0gJ2h0dHBzJyBvciB1cmkudXNlcm5hbWU6XG4gICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ1N0b3JhZ2UgcmVxdWlyZXMgSFRUUFMnKVxuXG4gICAgZGVmIHB1c2goKTpcbiAgICAgICAgY29ubmVjdGlvbiwgcGF0aCA9IHN0b3JhZ2VfcHV0X2Nvbm5lY3Rpb24odXJsKVxuICAgICAgICB0cnk6XG4gICAgICAgICAgICBjb25uZWN0aW9uLnB1dHJlcXVlc3QoJ1BVVCcsIHBhdGgpXG4gICAgICAgICAgICBpZiBzdG9yYWdlX3Byb3h5X2Zvcih1cmwpOlxuICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24ucHV0aGVhZGVyKCdYLURHRS1UYXJnZXQnLCB1cmwpXG4gICAgICAgICAgICBmb3Iga2V5LCB2YWx1ZSBpbiBoZWFkZXJzLml0ZW1zKCk6XG4gICAgICAgICAgICAgICAgaWYga2V5Lmxvd2VyKCkgbm90IGluICgnY29udGVudC1sZW5ndGgnLCAnaG9zdCcpOlxuICAgICAgICAgICAgICAgICAgICBjb25uZWN0aW9uLnB1dGhlYWRlcihrZXksIHZhbHVlKVxuICAgICAgICAgICAgY29ubmVjdGlvbi5wdXRoZWFkZXIoJ0NvbnRlbnQtTGVuZ3RoJywgc3RyKHNvdXJjZS5zdGF0KCkuc3Rfc2l6ZSkpXG4gICAgICAgICAgICBjb25uZWN0aW9uLmVuZGhlYWRlcnMoKVxuICAgICAgICAgICAgc2VuZF9ib2R5KGNvbm5lY3Rpb24sIHNvdXJjZSwgZGVhZGxpbmUpXG4gICAgICAgICAgICByZXNwb25zZSA9IGNvbm5lY3Rpb24uZ2V0cmVzcG9uc2UoKVxuICAgICAgICAgICAgaWYgcmVzcG9uc2Uuc3RhdHVzIGluICg1MDIsIDUwMywgNDI5KTpcbiAgICAgICAgICAgICAgICByYWlzZSBDb25uZWN0aW9uRXJyb3IoJ1N0b3JhZ2UgZ2F0ZXdheSB1bmF2YWlsYWJsZScpXG4gICAgICAgICAgICBpZiByZXNwb25zZS5zdGF0dXMgbm90IGluICgyMDAsIDIwMSwgMjA0KTpcbiAgICAgICAgICAgICAgICByYWlzZSBJT0Vycm9yKCdPdXRwdXQgdXBsb2FkIGZhaWxlZCcpXG4gICAgICAgIGZpbmFsbHk6XG4gICAgICAgICAgICBjb25uZWN0aW9uLmNsb3NlKClcblxuICAgIHRyYW5zaWVudF9odHRwKGRlYWRsaW5lLCBwdXNoKVxuXG5cbmRlZiBwdWJsaWNfd2ViX2VuYWJsZWQoKTpcbiAgICByZXR1cm4gb3MuZW52aXJvbi5nZXQoJ0RHRV9BTExPV19QVUJMSUNfV0VCX1JFUVVFU1RTJykgPT0gJzEnXG5cblxuZGVmIGFsbG93ZWRfY2FwYWJpbGl0aWVzKGNhcGFiaWxpdGllcyk6XG4gICAgcmV0dXJuIHtrZXk6IHZhbHVlIGZvciBrZXksIHZhbHVlIGluIGNhcGFiaWxpdGllcy5pdGVtcygpXG4gICAgICAgICAgICBpZiBrZXkgIT0gJ3dlYl9mZXRjaF9iYXRjaCcgb3IgcHVibGljX3dlYl9lbmFibGVkKCl9XG5cblxuZGVmIGRvY2tlcl9hcmdzKGNvbmZpZywgb3BlcmF0aW9uPU5vbmUpOlxuICAgIG5ldHdvcmsgPSAnbm9uZSdcbiAgICBpZiBvcGVyYXRpb24gPT0gJ3dlYl9mZXRjaF9iYXRjaCc6XG4gICAgICAgIGlmIG5vdCBwdWJsaWNfd2ViX2VuYWJsZWQoKTpcbiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ1B1YmxpYyB3ZWIgcmVxdWVzdHMgYXJlIGRpc2FibGVkIG9uIHRoaXMgd29ya2VyJylcbiAgICAgICAgbmV0d29yayA9ICdicmlkZ2UnXG4gICAgcmV0dXJuIFsnZG9ja2VyJywgJ3J1bicsICctLXJtJywgJy0taW5pdCcsICctLW5ldHdvcms9JyArIG5ldHdvcmssICctLXJlYWQtb25seScsICctLWNhcC1kcm9wPUFMTCcsXG4gICAgICAgICAgICAnLS1zZWN1cml0eS1vcHQ9bm8tbmV3LXByaXZpbGVnZXMnLCAnLS1waWRzLWxpbWl0PTEyOCcsICctLXVsaW1pdD1jb3JlPTAnLFxuICAgICAgICAgICAgJy0tbG9nLWRyaXZlcj1ub25lJywgJy0tbGFiZWw9Y29tLmRnZS5yb2xlPWNvbXB1dGUtdGFzaycsICctLWNncm91cC1wYXJlbnQ9Y29tcHV0ZS5zbGljZScsXG4gICAgICAgICAgICAnLS1tZW1vcnk9JyArIHN0cihjb25maWdbJ21lbW9yeV9tYiddKSArICdtJywgJy0tbWVtb3J5LXN3YXA9JyArIHN0cihjb25maWdbJ21lbW9yeV9tYiddKSArICdtJyxcbiAgICAgICAgICAgICctLWNwdXM9JyArIHN0cihjb25maWdbJ2NwdXMnXSksICctLXRtcGZzPS90bXA6cncsbm9leGVjLG5vc3VpZCxzaXplPTI1Nm0nXVxuXG5cbmRlZiBmaXJzdF9pbnB1dCh0YXNrKTpcbiAgICBkZWNsYXJlZCA9ICh0YXNrLmdldCgnaW5wdXRzJykgb3IgW3t9XSlbMF1cbiAgICByZXR1cm4gKHRhc2suZ2V0KCdpbnB1dF91cmwnKSBvciBkZWNsYXJlZC5nZXQoJ3VybCcpLFxuICAgICAgICAgICAgdGFzay5nZXQoJ2lucHV0X3NpemUnKSBpZiAnaW5wdXRfc2l6ZScgaW4gdGFzayBlbHNlIGRlY2xhcmVkLmdldCgnc2l6ZV9ieXRlcycpLFxuICAgICAgICAgICAgdGFzay5nZXQoJ2lucHV0X2NoZWNrc3VtJykgaWYgJ2lucHV0X2NoZWNrc3VtJyBpbiB0YXNrIGVsc2UgZGVjbGFyZWQuZ2V0KCdjaGVja3N1bScpKVxuXG5cbmRlZiBmaXJzdF9vdXRwdXQodGFzayk6XG4gICAgZGVjbGFyZWQgPSAodGFzay5nZXQoJ291dHB1dHMnKSBvciBbe31dKVswXVxuICAgIGhlYWRlcnMgPSB0YXNrLmdldCgnb3V0cHV0X3VwbG9hZF9oZWFkZXJzJykgb3IgZGVjbGFyZWQuZ2V0KCdoZWFkZXJzJykgb3Ige31cbiAgICByZXR1cm4gKGRlY2xhcmVkLmdldCgnbmFtZScpIG9yICdvdXRwdXQnLFxuICAgICAgICAgICAgdGFzay5nZXQoJ291dHB1dF91cGxvYWRfdXJsJykgb3IgZGVjbGFyZWQuZ2V0KCd1cGxvYWRfdXJsJyksXG4gICAgICAgICAgICBoZWFkZXJzLFxuICAgICAgICAgICAgZGVjbGFyZWQuZ2V0KCdtZWRpYV90eXBlJykgb3IgaGVhZGVycy5nZXQoJ0NvbnRlbnQtVHlwZScpIG9yICdhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nKVxuXG5cbmRlZiBzaGEyNTZfZmlsZShwYXRoKTpcbiAgICBkaWdlc3QgPSBoYXNobGliLnNoYTI1NigpXG4gICAgd2l0aCBwYXRoLm9wZW4oJ3JiJykgYXMgc291cmNlOlxuICAgICAgICB3aGlsZSBjaHVuayA6PSBzb3VyY2UucmVhZCgxMDI0ICogMTAyNCk6XG4gICAgICAgICAgICBkaWdlc3QudXBkYXRlKGNodW5rKVxuICAgIHJldHVybiBkaWdlc3QuaGV4ZGlnZXN0KClcblxuXG5kZWYgZXhlY3V0ZShhcGksIHRhc2ssIGNvbmZpZyk6XG4gICAgc3RhcnRlZCA9IHRpbWUubW9ub3RvbmljKClcbiAgICBzZXR1cF9kZWFkbGluZSA9IHN0YXJ0ZWQgKyBTRVRVUF9TRUNPTkRTXG4gICAgbmFtZSA9ICdkZ2UtdGFzay0nICsgc3RyKHRhc2tbJ2lkJ10pICsgJy0nICsgdGFza1snYXR0ZW1wdCddXG4gICAgd2l0aCB0ZW1wZmlsZS5UZW1wb3JhcnlEaXJlY3RvcnkoZGlyPVNDUkFUQ0gpIGFzIGRpcmVjdG9yeTpcbiAgICAgICAgZm9sZGVyID0gUGF0aChkaXJlY3RvcnkpXG4gICAgICAgIHNvdXJjZSA9IGZvbGRlciAvICdzb3VyY2UnXG4gICAgICAgIG91dHB1dCA9IGZvbGRlciAvICdvdXRwdXQnXG4gICAgICAgIGJ1bmRsZV9hcmNoaXZlID0gZm9sZGVyIC8gJ3Rhc2stYnVuZGxlLnRhci5neidcbiAgICAgICAgYnVuZGxlID0gZm9sZGVyIC8gJ2J1bmRsZSdcbiAgICAgICAgYXBpLnBvc3QoJ2pvYnMvJyArIHN0cih0YXNrWydpZCddKSArICcvc3RhcnQnLCBkaWN0KGF0dGVtcHQ9dGFza1snYXR0ZW1wdCddKSlcbiAgICAgICAgdmVyaWZ5X3Rhc2tfc2lnbmF0dXJlKGFwaSwgdGFzaylcbiAgICAgICAgZG93bmxvYWQodGFza1snYnVuZGxlX3VybCddLCBidW5kbGVfYXJjaGl2ZSwgdGFza1snYnVuZGxlX3NpemUnXSwgdGFza1snYnVuZGxlX2NoZWNrc3VtJ10sIHNldHVwX2RlYWRsaW5lKVxuICAgICAgICBleHRyYWN0X2J1bmRsZShidW5kbGVfYXJjaGl2ZSwgYnVuZGxlLCB0YXNrKVxuICAgICAgICB2ZXJpZnlfYnVuZGxlKGFwaSwgdGFzaywgY29uZmlnLCBidW5kbGUpXG4gICAgICAgIGRlYWRsaW5lID0gdGltZS5tb25vdG9uaWMoKSArIG1heCgxLCBpbnQodGFzay5nZXQoJ3RpbWVvdXQnKSBvciB0YXNrWyd0aW1lb3V0X3NlY29uZHMnXSkpXG4gICAgICAgIGlucHV0X3VybCwgaW5wdXRfc2l6ZSwgaW5wdXRfY2hlY2tzdW0gPSBmaXJzdF9pbnB1dCh0YXNrKVxuICAgICAgICBkb3dubG9hZChpbnB1dF91cmwsIHNvdXJjZSwgaW5wdXRfc2l6ZSwgaW5wdXRfY2hlY2tzdW0sIGRlYWRsaW5lKVxuICAgICAgICB3cml0ZV9qc29uKGZvbGRlciAvICd0YXNrLmpzb24nLCB7a2V5OiB0YXNrW2tleV0gZm9yIGtleSBpbiAoJ29wZXJhdGlvbicsICdmaW5nZXJwcmludCcsICdydW50aW1lX2FiaScpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBrZXkgaW4gdGFza30gfCB7J29wdGlvbnMnOiB0YXNrLmdldCgnb3B0aW9ucycpIG9yIHRhc2suZ2V0KCdwYXJhbWV0ZXJzJykgb3Ige319KVxuICAgICAgICBmb3IgZmlsZSBpbiBmb2xkZXIuaXRlcmRpcigpOlxuICAgICAgICAgICAgb3MuY2hvd24oZmlsZSwgMTAwMDEsIDEwMDAxKVxuICAgICAgICBvcy5jaG93bihmb2xkZXIsIDEwMDAxLCAxMDAwMSlcbiAgICAgICAgdHJ5OlxuICAgICAgICAgICAgY29tbWFuZChkb2NrZXJfYXJncyhjb25maWcsIHRhc2tbJ29wZXJhdGlvbiddKSArIFsnLS1uYW1lPScgKyBuYW1lLCAnLS1lbnY9VE1QRElSPS90YXNrJyxcbiAgICAgICAgICAgICAgICAgICAgJy0tbW91bnQ9dHlwZT1iaW5kLHNyYz0nICsgZGlyZWN0b3J5ICsgJyxkc3Q9L3Rhc2snLFxuICAgICAgICAgICAgICAgICAgICAnLS1tb3VudD10eXBlPWJpbmQsc3JjPScgKyBzdHIoYnVuZGxlKSArICcsZHN0PS9idW5kbGUscmVhZG9ubHknLCBjb25maWdbJ2ltYWdlJ10sXG4gICAgICAgICAgICAgICAgICAgICdydWJ5JywgJy9idW5kbGUvc2NyaXB0L2hlYXZ5X3Byb2Nlc3NpbmcvZXhlY3V0ZS5yYiddLCBtYXgoMSwgZGVhZGxpbmUgLSB0aW1lLm1vbm90b25pYygpKSlcbiAgICAgICAgZmluYWxseTpcbiAgICAgICAgICAgIHN1YnByb2Nlc3MucnVuKFsnZG9ja2VyJywgJ3JtJywgJy1mJywgbmFtZV0sIHN0ZG91dD1zdWJwcm9jZXNzLkRFVk5VTEwsIHN0ZGVycj1zdWJwcm9jZXNzLkRFVk5VTEwpXG4gICAgICAgIGxpbWl0ID0gNCAqIDEwMjQqKjMgaWYgdGFza1snb3BlcmF0aW9uJ10gPT0gJ3ppcF9hcmNoaXZlJyBlbHNlIDEwMCAqIDEwMjQqKjJcbiAgICAgICAgaWYgbm90IDAgPCBvdXRwdXQuc3RhdCgpLnN0X3NpemUgPD0gbGltaXQ6XG4gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdJbnZhbGlkIG91dHB1dCBzaXplJylcbiAgICAgICAgb3V0cHV0X25hbWUsIHVwbG9hZF91cmwsIGhlYWRlcnMsIG1lZGlhX3R5cGUgPSBmaXJzdF9vdXRwdXQodGFzaylcbiAgICAgICAgaWYgbm90IHVwbG9hZF91cmw6XG4gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdNaXNzaW5nIG91dHB1dCB1cGxvYWQgVVJMJylcbiAgICAgICAgdXBsb2FkKHVwbG9hZF91cmwsIGhlYWRlcnMsIG91dHB1dCwgZGVhZGxpbmUpXG4gICAgICAgIGRpZ2VzdCA9IHNoYTI1Nl9maWxlKG91dHB1dClcbiAgICAgICAgYXBpLnBvc3QoJ2pvYnMvJyArIHN0cih0YXNrWydpZCddKSArICcvY29tcGxldGUnLCBkaWN0KFxuICAgICAgICAgICAgYXR0ZW1wdD10YXNrWydhdHRlbXB0J10sIGR1cmF0aW9uX21zPWludCgodGltZS5tb25vdG9uaWMoKSAtIHN0YXJ0ZWQpICogMTAwMCksXG4gICAgICAgICAgICBvdXRwdXRzPVt7J25hbWUnOiBvdXRwdXRfbmFtZSwgJ21lZGlhX3R5cGUnOiBtZWRpYV90eXBlLFxuICAgICAgICAgICAgICAgICAgICAgICdzaXplX2J5dGVzJzogb3V0cHV0LnN0YXQoKS5zdF9zaXplLCAnc2hhMjU2JzogZGlnZXN0fV0pKVxuXG5cbmRlZiBhcHBseV9saW1pdHMoY29uZmlnKTpcbiAgICBjb21tYW5kKFsnbW91bnQnLCAnLW8nLCAncmVtb3VudCxzaXplPScgKyBzdHIoY29uZmlnWydzY3JhdGNoX21iJ10pICsgJ20nLCBzdHIoU0NSQVRDSCldKVxuICAgIGNvbW1hbmQoWydzeXN0ZW1jdGwnLCAnc2V0LXByb3BlcnR5JywgJy0tcnVudGltZScsICdjb21wdXRlLnNsaWNlJyxcbiAgICAgICAgICAgICAnTWVtb3J5TWF4PScgKyBzdHIoY29uZmlnWydtZW1vcnlfbWInXSkgKyAnTScsXG4gICAgICAgICAgICAgJ01lbW9yeUxvdz0wJywgJ01lbW9yeVN3YXBNYXg9MCcsICdDUFVXZWlnaHQ9MTAnLCAnSU9XZWlnaHQ9MTAnLFxuICAgICAgICAgICAgICdDUFVRdW90YT0nICsgc3RyKGZsb2F0KGNvbmZpZ1snY3B1cyddKSAqIDEwMCkgKyAnJSddKVxuXG5cbmRlZiB0ZXN0X2NhcGFiaWxpdGllcyhjb25maWcsIHJlcXVlc3RfaWQ9Tm9uZSk6XG4gICAgbmFtZSA9ICdkZ2UtcHJvYmUtJyArIHN0cihvcy5nZXRwaWQoKSlcbiAgICB0cnk6XG4gICAgICAgIHRyeTpcbiAgICAgICAgICAgIHJlc3VsdHMgPSBqc29uLmxvYWRzKGNvbW1hbmQoZG9ja2VyX2FyZ3MoY29uZmlnKSArIFsnLS1uYW1lPScgKyBuYW1lLCBjb25maWdbJ2ltYWdlJ10sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdydWJ5JywgJ3NjcmlwdC9oZWF2eV9wcm9jZXNzaW5nL2V4ZWN1dGUucmInLCAnLS1wcm9iZSddLCAyMTApKVxuICAgICAgICBleGNlcHQgc3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3IgYXMgZXJyb3I6XG4gICAgICAgICAgICByZXN1bHRzID0gcHJvYmVfY2FwYWJpbGl0eV9yZXN1bHRzKGVycm9yKVxuICAgICAgICAgICAgaWYgcmVzdWx0cyBpcyBOb25lOlxuICAgICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcihkZXNjcmliZV9wcm9jZXNzX2Vycm9yKGVycm9yKSkgZnJvbSBlcnJvclxuICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShyZXN1bHRzLCBkaWN0KSBvciBub3QgcmVzdWx0czpcbiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ0ludmFsaWQgY2FwYWJpbGl0eSByZXN1bHRzJylcbiAgICAgICAgaWYgJ3dlYl9mZXRjaF9iYXRjaCcgaW4gcmVzdWx0cyBhbmQgbm90IHB1YmxpY193ZWJfZW5hYmxlZCgpOlxuICAgICAgICAgICAgcmVzdWx0c1snd2ViX2ZldGNoX2JhdGNoJ10gPSBkaWN0KHN0YXR1cz0ndW5hdmFpbGFibGUnLCBlcnJvcj0nUHVibGljV2ViUmVxdWVzdHNEaXNhYmxlZCcpXG4gICAgICAgIHJldHVybiBkaWN0KGlkPXJlcXVlc3RfaWQgb3Igc3RyKHRpbWUudGltZV9ucygpKSwgaW1hZ2U9Y29uZmlnWydpbWFnZSddLCByZXN1bHRzPXJlc3VsdHMpXG4gICAgZmluYWxseTpcbiAgICAgICAgc3VicHJvY2Vzcy5ydW4oWydkb2NrZXInLCAncm0nLCAnLWYnLCBuYW1lXSwgc3Rkb3V0PXN1YnByb2Nlc3MuREVWTlVMTCwgc3RkZXJyPXN1YnByb2Nlc3MuREVWTlVMTCwgdGltZW91dD0xNSlcblxuXG5kZWYgcGFzc2luZ19jYXBhYmlsaXRpZXMocHJvYmUpOlxuICAgIHJldHVybiBhbGxvd2VkX2NhcGFiaWxpdGllcyh7b3BlcmF0aW9uOiByZXN1bHRbJ2ZpbmdlcnByaW50J10gZm9yIG9wZXJhdGlvbiwgcmVzdWx0IGluIHByb2JlWydyZXN1bHRzJ10uaXRlbXMoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgcmVzdWx0LmdldCgnc3RhdHVzJykgPT0gJ3Bhc3NlZCd9KVxuXG5cbmRlZiB2ZXJpZnlfYnVuZGxlKGFwaSwgdGFzaywgY29uZmlnLCBidW5kbGUpOlxuICAgIHRlc3RzID0gcmVhZF9qc29uKFJPT1QgLyAnYnVuZGxlLXRlc3RzLmpzb24nLCB7fSlcbiAgICBwcmV2aW91cyA9IHRlc3RzLmdldCh0YXNrWydidW5kbGVfZGlnZXN0J10pXG4gICAgaWYgcHJldmlvdXMgYW5kIHByZXZpb3VzLmdldCgnc3RhdHVzJykgPT0gJ3Bhc3NlZCc6XG4gICAgICAgIHJldHVyblxuICAgIGNvbW1hbmRfbGluZSA9IGRvY2tlcl9hcmdzKGNvbmZpZykgKyBbJy0tbW91bnQ9dHlwZT1iaW5kLHNyYz0nICsgc3RyKGJ1bmRsZSkgKyAnLGRzdD0vYnVuZGxlLHJlYWRvbmx5JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ1snaW1hZ2UnXSwgJ3J1YnknLCAnL2J1bmRsZS9zY3JpcHQvaGVhdnlfcHJvY2Vzc2luZy9leGVjdXRlLnJiJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLXByb2JlLW9wZXJhdGlvbicsIHRhc2tbJ29wZXJhdGlvbiddXVxuICAgIHRyeTpcbiAgICAgICAgcmVzdWx0ID0ganNvbi5sb2Fkcyhjb21tYW5kKGNvbW1hbmRfbGluZSwgMjEwKSlcbiAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGVycm9yOlxuICAgICAgICByZXN1bHQgPSBwcm9iZV9vcGVyYXRpb25fcmVzdWx0KGVycm9yKVxuICAgICAgICBpZiByZXN1bHQgaXMgTm9uZTpcbiAgICAgICAgICAgIHJlc3VsdCA9IHsnc3RhdHVzJzogJ2ZhaWxlZCcsICdmaW5nZXJwcmludCc6IHRhc2tbJ2J1bmRsZV9kaWdlc3QnXSxcbiAgICAgICAgICAgICAgICAgICAgICAnZXJyb3InOiBkZXNjcmliZV9wcm9jZXNzX2Vycm9yKGVycm9yKX1cbiAgICB0ZXN0c1t0YXNrWydidW5kbGVfZGlnZXN0J11dID0gcmVzdWx0XG4gICAgd3JpdGVfanNvbihST09UIC8gJ2J1bmRsZS10ZXN0cy5qc29uJywgZGljdChsaXN0KHRlc3RzLml0ZW1zKCkpWy0xMDA6XSkpXG4gICAgcmVwb3J0ID0gZGljdChpZD10YXNrWydidW5kbGVfZGlnZXN0J10sIGtpbmQ9J2J1bmRsZScsIGJ1bmRsZV9kaWdlc3Q9dGFza1snYnVuZGxlX2RpZ2VzdCddLFxuICAgICAgICAgICAgICAgICAgaW1hZ2U9Y29uZmlnWydpbWFnZSddLCByZXN1bHRzPXt0YXNrWydvcGVyYXRpb24nXTogcmVzdWx0fSlcbiAgICB3aXRoIFNUQVRFX0xPQ0s6XG4gICAgICAgIFJFUE9SVFsnY2FwYWJpbGl0eV90ZXN0J10gPSByZXBvcnRcbiAgICBoZWFydGJlYXQoYXBpKVxuICAgIGlmIHJlc3VsdC5nZXQoJ3N0YXR1cycpICE9ICdwYXNzZWQnOlxuICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ1Rhc2tCdW5kbGVDYXBhYmlsaXR5RmFpbGVkJylcblxuXG5kZWYgcmVmcmVzaF9jYXBhYmlsaXRpZXMoY29uZmlnLCByZWxlYXNlLCByZXF1ZXN0X2lkKTpcbiAgICBwcm9iZSA9IHRlc3RfY2FwYWJpbGl0aWVzKGNvbmZpZywgcmVxdWVzdF9pZClcbiAgICBjYXBhYmlsaXRpZXMgPSBwYXNzaW5nX2NhcGFiaWxpdGllcyhwcm9iZSlcbiAgICB3cml0ZV9qc29uKHJlbGVhc2UgLyAnY2FwYWJpbGl0eV90ZXN0Lmpzb24nLCBwcm9iZSlcbiAgICB3cml0ZV9qc29uKHJlbGVhc2UgLyAnY2FwYWJpbGl0aWVzLmpzb24nLCBjYXBhYmlsaXRpZXMpXG4gICAgd2l0aCBTVEFURV9MT0NLOlxuICAgICAgICBSRVBPUlQudXBkYXRlKGNhcGFiaWxpdHlfdGVzdD1wcm9iZSwgY2FwYWJpbGl0aWVzPWNhcGFiaWxpdGllcylcbiAgICAgICAgaWYgUkVQT1JULmdldCgndXBkYXRlX2Vycm9yJykgPT0gJ0NhcGFiaWxpdHlUZXN0RmFpbGVkJzpcbiAgICAgICAgICAgIFJFUE9SVFsndXBkYXRlX2Vycm9yJ10gPSBOb25lXG5cblxuZGVmIHN1cGVydmlzb3JfY2FuX2NoZWNrX2luKHNvdXJjZSk6XG4gICAgcmV0dXJuICgnUkVHSVNUUllfQVVUSF9WRVJTSU9OID0gMScgaW4gc291cmNlIGFuZCAnQlJPV1NFUl9VQScgaW4gc291cmNlIGFuZFxuICAgICAgICAgICAgXCJyZXR1cm4gc3RyKHNlbGYuaWRlbnRpdHkuZ2V0KCd3b3JrZXJfaWQnKVwiIGluIHNvdXJjZSlcblxuXG5kZWYgc3RhZ2VfdXBkYXRlKGNvbmZpZyk6XG4gICAgaW1wb3J0IHJlXG4gICAgaWYgbm90IHJlLmZ1bGxtYXRjaChyJ1thLXpBLVowLTkuXy1dezEsODB9JywgY29uZmlnWyd2ZXJzaW9uJ10pOlxuICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdJbnZhbGlkIGNvbmZpZ3VyYXRpb24gdmVyc2lvbicpXG4gICAgaWYgbm90IHJlLmZ1bGxtYXRjaChyJ1thLXpBLVowLTldW2EtekEtWjAtOS4vOl8tXSpAc2hhMjU2OlthLWYwLTldezY0fScsIGNvbmZpZ1snaW1hZ2UnXSk6XG4gICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ0ltYWdlIG11c3QgYmUgcGlubmVkIGJ5IGRpZ2VzdCcpXG4gICAgaWYgbm90IDUxMiA8PSBjb25maWdbJ21lbW9yeV9tYiddIDw9IG1lbW9yeSgpWydNZW1Ub3RhbCddIC8vIDEwMjQqKjIgLSA1MTI6XG4gICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ0luc3VmZmljaWVudCBob3N0IG1lbW9yeScpXG4gICAgaWYgbm90IDI1NiA8PSBjb25maWdbJ3NjcmF0Y2hfbWInXSA8PSBjb25maWdbJ21lbW9yeV9tYiddIC0gMjU2OlxuICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdJbnZhbGlkIHNjcmF0Y2ggbWVtb3J5JylcbiAgICBjaV9saW1pdCA9IFBhdGgoJy9zeXMvZnMvY2dyb3VwL2NpLnNsaWNlL21lbW9yeS5tYXgnKVxuICAgIGlmIGNpX2xpbWl0LmV4aXN0cygpIGFuZCBjaV9saW1pdC5yZWFkX3RleHQoKS5zdHJpcCgpLmlzZGlnaXQoKTpcbiAgICAgICAgYXZhaWxhYmxlID0gbWVtb3J5KClbJ01lbVRvdGFsJ10gLSBpbnQoY2lfbGltaXQucmVhZF90ZXh0KCkpIC0gNTEyICogMTAyNCoqMlxuICAgICAgICBpZiBjb25maWdbJ21lbW9yeV9tYiddICogMTAyNCoqMiA+IGF2YWlsYWJsZTpcbiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ0NvbmZpZ3VyYXRpb24gZXhjZWVkcyBtZW1vcnkgcmVtYWluaW5nIGFmdGVyIENJIHJlc2VydmF0aW9uJylcbiAgICBwdWxsX2ltYWdlKGNvbmZpZylcbiAgICBwcm9iZSA9IHRlc3RfY2FwYWJpbGl0aWVzKGNvbmZpZylcbiAgICBjYXBhYmlsaXRpZXMgPSBwYXNzaW5nX2NhcGFiaWxpdGllcyhwcm9iZSlcbiAgICBjdXJyZW50ID0gYWxsb3dlZF9jYXBhYmlsaXRpZXMocmVhZF9qc29uKFBhdGgocmVhZF9qc29uKFJPT1QgLyAnY3VycmVudC5qc29uJykpIC8gJ2NhcGFiaWxpdGllcy5qc29uJywge30pKVxuICAgIHByZXZpb3VzX2NvbmZpZyA9IHJlYWRfanNvbihQYXRoKHJlYWRfanNvbihST09UIC8gJ2N1cnJlbnQuanNvbicpKSAvICdjb25maWcuanNvbicsIHt9KVxuICAgIHJlZHVjZWQgPSAocHJldmlvdXNfY29uZmlnLmdldCgnaW1hZ2UnKSA9PSBjb25maWdbJ2ltYWdlJ10gYW5kXG4gICAgICAgICAgICAgICAoY29uZmlnWydtZW1vcnlfbWInXSA8IHByZXZpb3VzX2NvbmZpZy5nZXQoJ21lbW9yeV9tYicsIDApIG9yXG4gICAgICAgICAgICAgICAgY29uZmlnWydjcHVzJ10gPCBwcmV2aW91c19jb25maWcuZ2V0KCdjcHVzJywgMCkpKVxuICAgIGlmIG5vdCByZWR1Y2VkIGFuZCBhbnkob3BlcmF0aW9uIG5vdCBpbiBjYXBhYmlsaXRpZXMgZm9yIG9wZXJhdGlvbiBpbiBjdXJyZW50KTpcbiAgICAgICAgd2l0aCBTVEFURV9MT0NLOlxuICAgICAgICAgICAgUkVQT1JUWydjYXBhYmlsaXR5X3Rlc3QnXSA9IHByb2JlXG4gICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignQ2FwYWJpbGl0eVJlZ3Jlc3Npb24nKVxuICAgIHJlbGVhc2UgPSBST09UIC8gJ3JlbGVhc2VzJyAvIGNvbmZpZ1sndmVyc2lvbiddXG4gICAgcmVsZWFzZS5ta2RpcihwYXJlbnRzPVRydWUsIGV4aXN0X29rPVRydWUpXG4gICAgY29udGFpbmVyID0gY29tbWFuZChbJ2RvY2tlcicsICdjcmVhdGUnLCBjb25maWdbJ2ltYWdlJ11dKVxuICAgIHRyeTpcbiAgICAgICAgY29tbWFuZChbJ2RvY2tlcicsICdjcCcsIGNvbnRhaW5lciArICc6L2FwcC9zY3JpcHQvaGVhdnlfcHJvY2Vzc2luZy9hZ2VudC5weScsIHN0cihyZWxlYXNlIC8gJ2FnZW50LnB5JyldKVxuICAgIGZpbmFsbHk6XG4gICAgICAgIGNvbW1hbmQoWydkb2NrZXInLCAncm0nLCBjb250YWluZXJdKVxuICAgIGlmIG5vdCBzdXBlcnZpc29yX2Nhbl9jaGVja19pbigocmVsZWFzZSAvICdhZ2VudC5weScpLnJlYWRfdGV4dCgpKTpcbiAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignV29ya2VyIGltYWdlIGNhbm5vdCByZWFjaCB0aGUgY29udHJvbCBwbGFuZTsgYXNzaWduIGEgbmV3ZXIgaW1hZ2UnKVxuICAgIGNvbW1hbmQoW3N5cy5leGVjdXRhYmxlLCAnLW0nLCAncHlfY29tcGlsZScsIHN0cihyZWxlYXNlIC8gJ2FnZW50LnB5JyldKVxuICAgIHdyaXRlX2pzb24ocmVsZWFzZSAvICdjb25maWcuanNvbicsIGNvbmZpZylcbiAgICB3cml0ZV9qc29uKHJlbGVhc2UgLyAnY2FwYWJpbGl0aWVzLmpzb24nLCBjYXBhYmlsaXRpZXMpXG4gICAgd3JpdGVfanNvbihyZWxlYXNlIC8gJ2NhcGFiaWxpdHlfdGVzdC5qc29uJywgcHJvYmUpXG4gICAgYXBwbHlfbGltaXRzKGNvbmZpZylcbiAgICB3cml0ZV9qc29uKFJPT1QgLyAncGVuZGluZy5qc29uJywgZGljdChwcmV2aW91cz1yZWFkX2pzb24oUk9PVCAvICdjdXJyZW50Lmpzb24nKSwgdGFyZ2V0PXN0cihyZWxlYXNlKSwgdmVyc2lvbj1jb25maWdbJ3ZlcnNpb24nXSkpXG4gICAgd3JpdGVfanNvbihST09UIC8gJ2N1cnJlbnQuanNvbicsIHN0cihyZWxlYXNlKSlcblxuXG5kZWYgcHVsbF9pbWFnZShjb25maWcpOlxuICAgIGlmIG5vdCBjb25maWdbJ2ltYWdlJ10uc3RhcnRzd2l0aCgncmVnaXN0cnkuZ2l0bGFiLmNvbS8nKTpcbiAgICAgICAgcmV0dXJuIGNvbW1hbmQoWydkb2NrZXInLCAncHVsbCcsIGNvbmZpZ1snaW1hZ2UnXV0sIDYwMClcbiAgICBhdXRob3JpemF0aW9uID0gQVBJKCkucG9zdCgncmVnaXN0cnlfYXV0aG9yaXphdGlvbicsIHt9KVxuICAgIGlmIGF1dGhvcml6YXRpb24uZ2V0KCdpbWFnZScpICE9IGNvbmZpZ1snaW1hZ2UnXTpcbiAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignV29ya2VyIGltYWdlIGFzc2lnbm1lbnQgY2hhbmdlZDsgcmV0cnlpbmcgYXQgbmV4dCBjaGVjay1pbicpXG4gICAgcmVnaXN0cnkgPSBjb25maWdbJ2ltYWdlJ10uc3BsaXQoJy8nLCAxKVswXVxuICAgIGlmIGF1dGhvcml6YXRpb24uZ2V0KCdyZWdpc3RyeScpICE9IHJlZ2lzdHJ5OlxuICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdVbmV4cGVjdGVkIHJlZ2lzdHJ5IGF1dGhvcml6YXRpb24nKVxuICAgIHdpdGggdGVtcGZpbGUuVGVtcG9yYXJ5RGlyZWN0b3J5KHByZWZpeD0ncmVnaXN0cnktJywgZGlyPScvcnVuL2RnZS13b3JrZXInKSBhcyBkaXJlY3Rvcnk6XG4gICAgICAgIGNyZWRlbnRpYWxzID0gUGF0aChkaXJlY3RvcnkpIC8gJ2NvbmZpZy5qc29uJ1xuICAgICAgICB3cml0ZV9qc29uKGNyZWRlbnRpYWxzLCB7J2F1dGhzJzoge3JlZ2lzdHJ5OiB7J3JlZ2lzdHJ5dG9rZW4nOiBhdXRob3JpemF0aW9uWyd0b2tlbiddfX19KVxuICAgICAgICBjb21tYW5kKFsnZG9ja2VyJywgJy0tY29uZmlnJywgZGlyZWN0b3J5LCAncHVsbCcsIGNvbmZpZ1snaW1hZ2UnXV0sIDYwMClcblxuXG5kZWYgcmVwbGFjZV9maWVsZChib2R5LCBuYW1lLCB2YWx1ZSk6XG4gICAgbGluZSA9IG5hbWUgKyAnID0gJyArIGpzb24uZHVtcHModmFsdWUpICsgJ1xcbidcbiAgICBwYXR0ZXJuID0gcicoP20pXlxccyonICsgcmUuZXNjYXBlKG5hbWUpICsgcidcXHMqPS4qXFxuJ1xuICAgIHJldHVybiByZS5zdWIocGF0dGVybiwgbGFtYmRhIF86IGxpbmUsIGJvZHkpIGlmIHJlLnNlYXJjaChwYXR0ZXJuLCBib2R5KSBlbHNlIGJvZHkgKyBsaW5lXG5cblxuZGVmIHJld3JpdGVfcnVubmVyX2NvbmZpZyhwYXRoLCBleHBlY3RlZCwgZWRpdF9nbG9iYWwsIGVkaXRfcnVubmVyKTpcbiAgICBcIlwiXCJFZGl0IGNvbmZpZy50b21sIHRleHR1YWxseSwga2VlcGluZyB0b2tlbnMgYW5kIGNvbW1lbnRzOyBwYXJzZWQgcmVzdWx0IG11c3QgZXF1YWwgZXhwZWN0ZWQuXCJcIlwiXG4gICAgaW1wb3J0IHRvbWxsaWJcbiAgICBvcmlnaW5hbCA9IHBhdGgucmVhZF90ZXh0KClcbiAgICBibG9ja3MgPSByZS5zcGxpdChyJyg/bSleXFxzKlxcW1xcW3J1bm5lcnNcXF1cXF1cXHMqXFxuJywgb3JpZ2luYWwpXG4gICAgaWYgbGVuKGJsb2NrcykgLSAxICE9IGxlbihleHBlY3RlZC5nZXQoJ3J1bm5lcnMnLCBbXSkpOlxuICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdVbnN1cHBvcnRlZCBydW5uZXIgY29uZmlndXJhdGlvbiBsYXlvdXQnKVxuICAgIHVwZGF0ZWQgPSBlZGl0X2dsb2JhbChibG9ja3NbMF0pXG4gICAgZm9yIGJsb2NrLCBydW5uZXIgaW4gemlwKGJsb2Nrc1sxOl0sIGV4cGVjdGVkLmdldCgncnVubmVycycsIFtdKSk6XG4gICAgICAgIHNlY3Rpb25zID0gcmUuc3BsaXQocicoP20pXihcXHMqXFxbW15cXG5dK1xcXVxccypcXG4pJywgYmxvY2spXG4gICAgICAgIHVwZGF0ZWQgKz0gJ1tbcnVubmVyc11dXFxuJyArICcnLmpvaW4oZWRpdF9ydW5uZXIoc2VjdGlvbnMsIHJ1bm5lcikpXG4gICAgaWYgdG9tbGxpYi5sb2Fkcyh1cGRhdGVkKSAhPSBleHBlY3RlZDpcbiAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignUnVubmVyIGNvbmZpZ3VyYXRpb24gdmFsaWRhdGlvbiBmYWlsZWQ7IG5vIGNoYW5nZXMgd3JpdHRlbicpXG4gICAgaWYgdXBkYXRlZCAhPSBvcmlnaW5hbDpcbiAgICAgICAgYmFja3VwID0gcGF0aC53aXRoX25hbWUoJ2NvbmZpZy50b21sLmJlZm9yZS1jb21wdXRlLScgKyBzdHIodGltZS50aW1lX25zKCkpKVxuICAgICAgICBiYWNrdXAud3JpdGVfdGV4dChvcmlnaW5hbClcbiAgICAgICAgYmFja3VwLmNobW9kKDBvNjAwKVxuICAgICAgICB0ZW1wb3JhcnkgPSBwYXRoLndpdGhfbmFtZSgnY29uZmlnLnRvbWwuY29tcHV0ZS1wZW5kaW5nJylcbiAgICAgICAgdGVtcG9yYXJ5LndyaXRlX3RleHQodXBkYXRlZClcbiAgICAgICAgdGVtcG9yYXJ5LmNobW9kKDBvNjAwKVxuICAgICAgICBvcy5yZXBsYWNlKHRlbXBvcmFyeSwgcGF0aClcblxuXG5kZWYgY29uZmlndXJlX2NpKCk6XG4gICAgXCJcIlwiUGxhY2UgRG9ja2VyIGV4ZWN1dG9yIGpvYnMsIHNlcnZpY2VzIGFuZCBjbGFzc2ljIGJ1aWxkcyBiZWxvdyBjb21wdXRlLlwiXCJcIlxuICAgIGltcG9ydCBjb3B5XG4gICAgaW1wb3J0IHRvbWxsaWJcbiAgICBpZiBub3QgUlVOTkVSX0NPTkZJRy5leGlzdHMoKTpcbiAgICAgICAgcmV0dXJuXG4gICAgZXhwZWN0ZWQgPSBjb3B5LmRlZXBjb3B5KHRvbWxsaWIubG9hZHMoUlVOTkVSX0NPTkZJRy5yZWFkX3RleHQoKSkpXG4gICAgZm9yIHJ1bm5lciBpbiBleHBlY3RlZC5nZXQoJ3J1bm5lcnMnLCBbXSk6XG4gICAgICAgIGlmIHJ1bm5lci5nZXQoJ2V4ZWN1dG9yJykgIT0gJ2RvY2tlcic6XG4gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdBdXRvbWF0aWMgQ0kgcHJpb3JpdGl6YXRpb24gcmVxdWlyZXMgdGhlIERvY2tlciBleGVjdXRvcicpXG4gICAgICAgIGVudmlyb25tZW50ID0gW2l0ZW0gZm9yIGl0ZW0gaW4gcnVubmVyLmdldCgnZW52aXJvbm1lbnQnLCBbXSkgaWYgbm90IGl0ZW0uc3RhcnRzd2l0aCgnQ0lfRE9DS0VSX0NHUk9VUF9QQVJFTlQ9JyldXG4gICAgICAgIHJ1bm5lclsnZW52aXJvbm1lbnQnXSA9IGVudmlyb25tZW50ICsgWydDSV9ET0NLRVJfQ0dST1VQX1BBUkVOVD1jaS5zbGljZSddXG4gICAgICAgIHJ1bm5lci5zZXRkZWZhdWx0KCdkb2NrZXInLCB7fSkudXBkYXRlKGNncm91cF9wYXJlbnQ9J2NpLnNsaWNlJywgc2VydmljZV9jZ3JvdXBfcGFyZW50PSdjaS5zbGljZScpXG5cbiAgICBkZWYgZWRpdF9ydW5uZXIoc2VjdGlvbnMsIHJ1bm5lcik6XG4gICAgICAgIHNlY3Rpb25zWzBdID0gcmVwbGFjZV9maWVsZChzZWN0aW9uc1swXSwgJ2Vudmlyb25tZW50JywgcnVubmVyWydlbnZpcm9ubWVudCddKVxuICAgICAgICBmb3VuZCA9IEZhbHNlXG4gICAgICAgIGZvciBpbmRleCBpbiByYW5nZSgxLCBsZW4oc2VjdGlvbnMpLCAyKTpcbiAgICAgICAgICAgIGlmIHNlY3Rpb25zW2luZGV4XS5zdHJpcCgpID09ICdbcnVubmVycy5kb2NrZXJdJzpcbiAgICAgICAgICAgICAgICBib2R5ID0gcmVwbGFjZV9maWVsZChzZWN0aW9uc1tpbmRleCArIDFdLCAnY2dyb3VwX3BhcmVudCcsICdjaS5zbGljZScpXG4gICAgICAgICAgICAgICAgc2VjdGlvbnNbaW5kZXggKyAxXSA9IHJlcGxhY2VfZmllbGQoYm9keSwgJ3NlcnZpY2VfY2dyb3VwX3BhcmVudCcsICdjaS5zbGljZScpXG4gICAgICAgICAgICAgICAgZm91bmQgPSBUcnVlXG4gICAgICAgIGlmIG5vdCBmb3VuZDpcbiAgICAgICAgICAgIHNlY3Rpb25zICs9IFsnXFxuW3J1bm5lcnMuZG9ja2VyXVxcbicsICdjZ3JvdXBfcGFyZW50ID0gXCJjaS5zbGljZVwiXFxuc2VydmljZV9jZ3JvdXBfcGFyZW50ID0gXCJjaS5zbGljZVwiXFxuJ11cbiAgICAgICAgcmV0dXJuIHNlY3Rpb25zXG5cbiAgICByZXdyaXRlX3J1bm5lcl9jb25maWcoUlVOTkVSX0NPTkZJRywgZXhwZWN0ZWQsIGxhbWJkYSBoZWFkOiBoZWFkLCBlZGl0X3J1bm5lcilcbiAgICBpZiBub3QgQ0lfU0xJQ0UuZXhpc3RzKCk6XG4gICAgICAgIENJX1NMSUNFLndyaXRlX3RleHQoJ1tTbGljZV1cXG5DUFVXZWlnaHQ9MTBcXG5JT1dlaWdodD0xMFxcbicpXG5cblxuZGVmIG1hbmFnZWRfY2lfcnVubmVyKCk6XG4gICAgaW1wb3J0IHRvbWxsaWJcbiAgICBpZiBub3QgUlVOTkVSX0NPTkZJRy5leGlzdHMoKTpcbiAgICAgICAgcmV0dXJuIE5vbmVcbiAgICBydW5uZXJzID0gdG9tbGxpYi5sb2FkcyhSVU5ORVJfQ09ORklHLnJlYWRfdGV4dCgpKS5nZXQoJ3J1bm5lcnMnLCBbXSlcbiAgICByZXR1cm4gbmV4dCgocnVubmVyIGZvciBydW5uZXIgaW4gcnVubmVycyBpZiBydW5uZXIuZ2V0KCduYW1lJykgPT0gQ0lfUlVOTkVSX05BTUUpLCBOb25lKVxuXG5cbmRlZiBpbnN0YWxsX2dpdGxhYl9ydW5uZXIoKTpcbiAgICBpZiBzaHV0aWwud2hpY2goJ2dpdGxhYi1ydW5uZXInKTpcbiAgICAgICAgcmV0dXJuXG4gICAgaWYgbm90IHNodXRpbC53aGljaCgnYXB0LWdldCcpOlxuICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ0luc3RhbGwgZ2l0bGFiLXJ1bm5lciBvbiB0aGlzIGhvc3Q7IG9ubHkgYXB0IGhvc3RzIGFyZSBhdXRvbWF0ZWQnKVxuICAgIHdpdGggdGVtcGZpbGUuTmFtZWRUZW1wb3JhcnlGaWxlKHN1ZmZpeD0nLnNoJykgYXMgc2NyaXB0OlxuICAgICAgICB3aXRoIHVybGxpYi5yZXF1ZXN0LnVybG9wZW4oR0lUTEFCX1JVTk5FUl9SRVBPU0lUT1JZLCB0aW1lb3V0PTYwKSBhcyByZXNwb25zZTpcbiAgICAgICAgICAgIHNjcmlwdC53cml0ZShyZXNwb25zZS5yZWFkKCkpXG4gICAgICAgIHNjcmlwdC5mbHVzaCgpXG4gICAgICAgIGNvbW1hbmQoWydiYXNoJywgc2NyaXB0Lm5hbWVdLCA2MDApXG4gICAgY29tbWFuZChbJ2FwdC1nZXQnLCAnaW5zdGFsbCcsICcteScsICdnaXRsYWItcnVubmVyJ10sIDkwMClcblxuXG5kZWYgcmVnaXN0ZXJfY2lfcnVubmVyKHRva2VuKTpcbiAgICBjb21tYW5kKFsnZ2l0bGFiLXJ1bm5lcicsICdyZWdpc3RlcicsICctLW5vbi1pbnRlcmFjdGl2ZScsICctLXVybCcsIEdJVExBQiwgJy0tbmFtZScsIENJX1JVTk5FUl9OQU1FLFxuICAgICAgICAgICAgICctLWV4ZWN1dG9yJywgJ2RvY2tlcicsICctLWRvY2tlci1pbWFnZScsIENJX0RFRkFVTFRfSU1BR0UsXG4gICAgICAgICAgICAgJy0tZG9ja2VyLXZvbHVtZXMnLCBDSV9ET0NLRVJfU09DS0VULCAnLS1kb2NrZXItdm9sdW1lcycsICcvY2FjaGUnXSxcbiAgICAgICAgICAgIDEyMCwgZW52PXsqKm9zLmVudmlyb24sICdDSV9TRVJWRVJfVE9LRU4nOiB0b2tlbn0pXG5cblxuZGVmIGxpbWl0X2NpX3J1bm5lcihjb25jdXJyZW50KTpcbiAgICBcIlwiXCJDYXAgdGhlIG1hbmFnZWQgcnVubmVyIGF0IGBjb25jdXJyZW50YCBqb2JzOyByYWlzZSB0aGUgZ2xvYmFsIGNhcCBvbmx5IGFzIGZhciBhcyBpdCBuZWVkcy5cIlwiXCJcbiAgICBpbXBvcnQgY29weVxuICAgIGltcG9ydCB0b21sbGliXG4gICAgZXhwZWN0ZWQgPSBjb3B5LmRlZXBjb3B5KHRvbWxsaWIubG9hZHMoUlVOTkVSX0NPTkZJRy5yZWFkX3RleHQoKSkpXG4gICAgdG90YWwgPSBtYXgoaW50KGV4cGVjdGVkLmdldCgnY29uY3VycmVudCcpIG9yIDEpLCBjb25jdXJyZW50KVxuICAgIGV4cGVjdGVkWydjb25jdXJyZW50J10gPSB0b3RhbFxuICAgIGZvciBydW5uZXIgaW4gZXhwZWN0ZWQuZ2V0KCdydW5uZXJzJywgW10pOlxuICAgICAgICBpZiBydW5uZXIuZ2V0KCduYW1lJykgPT0gQ0lfUlVOTkVSX05BTUU6XG4gICAgICAgICAgICBydW5uZXIudXBkYXRlKGxpbWl0PWNvbmN1cnJlbnQsIHJlcXVlc3RfY29uY3VycmVuY3k9NClcblxuICAgIGRlZiBlZGl0X2dsb2JhbChoZWFkKTpcbiAgICAgICAgaGVhZGVyID0gcmUuc2VhcmNoKHInKD9tKV5cXHMqXFxbJywgaGVhZClcbiAgICAgICAgdG9wLCByZXN0ID0gKGhlYWRbOmhlYWRlci5zdGFydCgpXSwgaGVhZFtoZWFkZXIuc3RhcnQoKTpdKSBpZiBoZWFkZXIgZWxzZSAoaGVhZCwgJycpXG4gICAgICAgIHBhdHRlcm4gPSByJyg/bSleXFxzKmNvbmN1cnJlbnRcXHMqPS4qXFxuJ1xuICAgICAgICBsaW5lID0gJ2NvbmN1cnJlbnQgPSAnICsgc3RyKHRvdGFsKSArICdcXG4nXG4gICAgICAgIHJldHVybiAocmUuc3ViKHBhdHRlcm4sIGxhbWJkYSBfOiBsaW5lLCB0b3ApIGlmIHJlLnNlYXJjaChwYXR0ZXJuLCB0b3ApIGVsc2UgbGluZSArIHRvcCkgKyByZXN0XG5cbiAgICBkZWYgZWRpdF9ydW5uZXIoc2VjdGlvbnMsIHJ1bm5lcik6XG4gICAgICAgIGlmIHJ1bm5lci5nZXQoJ25hbWUnKSA9PSBDSV9SVU5ORVJfTkFNRTpcbiAgICAgICAgICAgIHNlY3Rpb25zWzBdID0gcmVwbGFjZV9maWVsZChyZXBsYWNlX2ZpZWxkKHNlY3Rpb25zWzBdLCAnbGltaXQnLCBjb25jdXJyZW50KSwgJ3JlcXVlc3RfY29uY3VycmVuY3knLCA0KVxuICAgICAgICByZXR1cm4gc2VjdGlvbnNcblxuICAgIHJld3JpdGVfcnVubmVyX2NvbmZpZyhSVU5ORVJfQ09ORklHLCBleHBlY3RlZCwgZWRpdF9nbG9iYWwsIGVkaXRfcnVubmVyKVxuXG5cbmRlZiBlbmFibGVfY2lfcnVubmVyKGFwaSwgY29uY3VycmVudCk6XG4gICAgaW5zdGFsbF9naXRsYWJfcnVubmVyKClcbiAgICB0b2tlbiA9IGFwaS5wb3N0KCdjaV9ydW5uZXJfdG9rZW4nLCB7fSkuZ2V0KCd0b2tlbicpIG9yICcnXG4gICAgaWYgbm90IHRva2VuLnN0YXJ0c3dpdGgoJ2dscnQtJyk6XG4gICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ0NvbXB1dGUgZGlkIG5vdCBpc3N1ZSBhIEdpdExhYiBydW5uZXIgdG9rZW4nKVxuICAgIHJ1bm5lciA9IG1hbmFnZWRfY2lfcnVubmVyKClcbiAgICBpZiBydW5uZXIgYW5kIHJ1bm5lci5nZXQoJ3Rva2VuJykgIT0gdG9rZW46XG4gICAgICAgIGNvbW1hbmQoWydnaXRsYWItcnVubmVyJywgJ3VucmVnaXN0ZXInLCAnLS1uYW1lJywgQ0lfUlVOTkVSX05BTUVdLCAxMjApXG4gICAgICAgIHJ1bm5lciA9IE5vbmVcbiAgICBpZiBub3QgcnVubmVyOlxuICAgICAgICByZWdpc3Rlcl9jaV9ydW5uZXIodG9rZW4pXG4gICAgbGltaXRfY2lfcnVubmVyKGNvbmN1cnJlbnQpXG4gICAgY29uZmlndXJlX2NpKClcbiAgICBjb21tYW5kKFsnc3lzdGVtY3RsJywgJ2RhZW1vbi1yZWxvYWQnXSlcbiAgICBjb21tYW5kKFsnc3lzdGVtY3RsJywgJ2VuYWJsZScsICctLW5vdycsICdnaXRsYWItcnVubmVyLnNlcnZpY2UnXSlcbiAgICBjb21tYW5kKFsnZ2l0bGFiLXJ1bm5lcicsICd2ZXJpZnknLCAnLS1uYW1lJywgQ0lfUlVOTkVSX05BTUVdLCAxMjApXG5cblxuZGVmIGRpc2FibGVfY2lfcnVubmVyKCk6XG4gICAgaWYgbWFuYWdlZF9jaV9ydW5uZXIoKTpcbiAgICAgICAgY29tbWFuZChbJ2dpdGxhYi1ydW5uZXInLCAndW5yZWdpc3RlcicsICctLW5hbWUnLCBDSV9SVU5ORVJfTkFNRV0sIDEyMClcblxuXG5kZWYgYXBwbHlfY2lfcnVubmVyKGFwaSwgZGVzaXJlZCk6XG4gICAgXCJcIlwiQXBwbHkgdGhlIG9wZXJhdG9yJ3MgQ0kgcnVubmVyIHNldHRpbmcgb25jZSBwZXIgdmVyc2lvbjsgYSBmYWlsdXJlIHdhaXRzIGZvciBhIG5ldyB2ZXJzaW9uLlwiXCJcIlxuICAgIGlmIG5vdCBkZXNpcmVkOlxuICAgICAgICByZXR1cm5cbiAgICBzdGF0ZSA9IHJlYWRfanNvbihDSV9SVU5ORVJfU1RBVEUsIHt9KVxuICAgIGlmIHN0YXRlLmdldCgndmVyc2lvbicpID09IGRlc2lyZWRbJ3ZlcnNpb24nXTpcbiAgICAgICAgcmV0dXJuXG4gICAgdHJ5OlxuICAgICAgICBpZiBkZXNpcmVkWydlbmFibGVkJ106XG4gICAgICAgICAgICBlbmFibGVfY2lfcnVubmVyKGFwaSwgaW50KGRlc2lyZWRbJ2NvbmN1cnJlbnQnXSkpXG4gICAgICAgIGVsc2U6XG4gICAgICAgICAgICBkaXNhYmxlX2NpX3J1bm5lcigpXG4gICAgICAgIHN0YXRlID0gZGljdCh2ZXJzaW9uPWRlc2lyZWRbJ3ZlcnNpb24nXSwgYXBwbGllZD1kZXNpcmVkWyd2ZXJzaW9uJ10pXG4gICAgICAgIG5vdGUoJ0NJIHJ1bm5lciAnICsgKCdyZWFkeScgaWYgZGVzaXJlZFsnZW5hYmxlZCddIGVsc2UgJ3JlbW92ZWQnKSlcbiAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGVycm9yOlxuICAgICAgICBzdGF0ZSA9IGRpY3QodmVyc2lvbj1kZXNpcmVkWyd2ZXJzaW9uJ10sIGFwcGxpZWQ9c3RhdGUuZ2V0KCdhcHBsaWVkJyksIGVycm9yPWRlc2NyaWJlX3Byb2Nlc3NfZXJyb3IoZXJyb3IpKVxuICAgICAgICBub3RlKCdDSSBydW5uZXIgc2V0dXAgZmFpbGVkOiAnICsgc3RhdGVbJ2Vycm9yJ10pXG4gICAgd3JpdGVfanNvbihDSV9SVU5ORVJfU1RBVEUsIHN0YXRlKVxuICAgIHdpdGggU1RBVEVfTE9DSzpcbiAgICAgICAgUkVQT1JULnVwZGF0ZShjaV9ydW5uZXJfYXBwbGllZF92ZXJzaW9uPXN0YXRlLmdldCgnYXBwbGllZCcpLCBjaV9ydW5uZXJfZXJyb3I9c3RhdGUuZ2V0KCdlcnJvcicpKVxuICAgIHRyeTpcbiAgICAgICAgaGVhcnRiZWF0KGFwaSlcbiAgICBleGNlcHQgRXhjZXB0aW9uOlxuICAgICAgICBub3RlKCdXb3JrZXIgaGVhcnRiZWF0IHVuYXZhaWxhYmxlJylcblxuXG5kZWYgcmVjb3JkX3Rhc2tfZmFpbHVyZShtZXNzYWdlKTpcbiAgICB3aXRoIFNUQVRFX0xPQ0s6XG4gICAgICAgIG1ldHJpY3MgPSByZWFkX2pzb24oUk9PVCAvICdtZXRyaWNzLmpzb24nLCB7fSlcbiAgICAgICAgbWV0cmljcy51cGRhdGUodGFza19lcnJvcnM9bWV0cmljcy5nZXQoJ3Rhc2tfZXJyb3JzJywgMCkgKyAxLFxuICAgICAgICAgICAgICAgICAgICAgICBsYXN0X3Rhc2tfZXJyb3I9bWVzc2FnZSwgbGFzdF90YXNrX2Vycm9yX2F0PXRpbWUuc3RyZnRpbWUoJyVZLSVtLSVkVCVIOiVNOiVTWicsIHRpbWUuZ210aW1lKCkpKVxuICAgICAgICB3cml0ZV9qc29uKFJPT1QgLyAnbWV0cmljcy5qc29uJywgbWV0cmljcylcblxuXG5kZWYgcnVuX3Rhc2soYXBpLCB0YXNrLCBjb25maWcpOlxuICAgIHRyeTpcbiAgICAgICAgZXhlY3V0ZShhcGksIHRhc2ssIGNvbmZpZylcbiAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGVycm9yOlxuICAgICAgICBtZXNzYWdlID0gZGVzY3JpYmVfZXJyb3IoZXJyb3IpXG4gICAgICAgIHJlY29yZF90YXNrX2ZhaWx1cmUobWVzc2FnZSlcbiAgICAgICAgbm90ZSgnV29ya2VyIHRhc2sgZmFpbGVkOiAnICsgbWVzc2FnZSlcbiAgICAgICAgdHJ5OlxuICAgICAgICAgICAgYXBpLnBvc3QoJ2pvYnMvJyArIHN0cih0YXNrWydpZCddKSArICcvZmFpbCcsIGRpY3QoYXR0ZW1wdD10YXNrWydhdHRlbXB0J10sIGVycm9yPW1lc3NhZ2UpKVxuICAgICAgICBleGNlcHQgRXhjZXB0aW9uOlxuICAgICAgICAgICAgcGFzc1xuICAgIGZpbmFsbHk6XG4gICAgICAgIHdpdGggU1RBVEVfTE9DSzpcbiAgICAgICAgICAgIGRyb3BfdGFzayh0YXNrKVxuXG5cbmRlZiBtYWluKCk6XG4gICAgYXBpID0gQVBJKClcbiAgICByZWxlYXNlID0gUGF0aChyZWFkX2pzb24oUk9PVCAvICdjdXJyZW50Lmpzb24nKSlcbiAgICBjb25maWcgPSByZWFkX2pzb24ocmVsZWFzZSAvICdjb25maWcuanNvbicsIHt9KVxuICAgIGZhaWx1cmUgPSB7fSBpZiAoUk9PVCAvICdwZW5kaW5nLmpzb24nKS5leGlzdHMoKSBlbHNlIHJlYWRfanNvbihST09UIC8gJ2ZhaWx1cmUuanNvbicsIHt9KVxuICAgIHJlZnJlc2hfdXBsaW5rKGZvcmNlPVRydWUpXG4gICAgcnVudGltZV9hYmkgPSBOb25lIGlmIFJVTlRJTUVfQUJJLnN0YXJ0c3dpdGgoJ19fJykgZWxzZSBSVU5USU1FX0FCSVxuICAgIFJFUE9SVC51cGRhdGUoaGFyZHdhcmU9aW52ZW50b3J5KCksIGFnZW50X3ZlcnNpb249VkVSU0lPTiwgcnVudGltZV9hYmk9cnVudGltZV9hYmksXG4gICAgICAgICAgICAgICAgICBhcHBsaWVkX3ZlcnNpb249Y29uZmlnLmdldCgndmVyc2lvbicpLFxuICAgICAgICAgICAgICAgICAgaW1hZ2U9Y29uZmlnLmdldCgnaW1hZ2UnKSwgbWVtb3J5X21iPWNvbmZpZy5nZXQoJ21lbW9yeV9tYicpLCBzY3JhdGNoX21iPWNvbmZpZy5nZXQoJ3NjcmF0Y2hfbWInKSxcbiAgICAgICAgICAgICAgICAgIGNwdXM9Y29uZmlnLmdldCgnY3B1cycpLCBjYXBhYmlsaXRpZXM9YWxsb3dlZF9jYXBhYmlsaXRpZXMocmVhZF9qc29uKHJlbGVhc2UgLyAnY2FwYWJpbGl0aWVzLmpzb24nLCB7fSkpLFxuICAgICAgICAgICAgICAgICAgdXBkYXRlX2Vycm9yPWZhaWx1cmUuZ2V0KCdlcnJvcicpLCBjYXBhYmlsaXR5X3Rlc3Q9cmVhZF9qc29uKHJlbGVhc2UgLyAnY2FwYWJpbGl0eV90ZXN0Lmpzb24nKSlcbiAgICBjaV9zdGF0ZSA9IHJlYWRfanNvbihDSV9SVU5ORVJfU1RBVEUsIHt9KVxuICAgIFJFUE9SVC51cGRhdGUoY2lfcnVubmVyX2FwcGxpZWRfdmVyc2lvbj1jaV9zdGF0ZS5nZXQoJ2FwcGxpZWQnKSwgY2lfcnVubmVyX2Vycm9yPWNpX3N0YXRlLmdldCgnZXJyb3InKSlcbiAgICBpZiBjb25maWc6XG4gICAgICAgIGFwcGx5X2xpbWl0cyhjb25maWcpXG4gICAgZm9yIGNvbnRhaW5lciBpbiBjb21tYW5kKFsnZG9ja2VyJywgJ3BzJywgJy1hcScsICctLWZpbHRlcj1sYWJlbD1jb20uZGdlLnJvbGU9Y29tcHV0ZS10YXNrJ10pLnNwbGl0bGluZXMoKTpcbiAgICAgICAgY29tbWFuZChbJ2RvY2tlcicsICdybScsICctZicsIGNvbnRhaW5lcl0pXG4gICAgZm9yIGRpcmVjdG9yeSBpbiBTQ1JBVENILml0ZXJkaXIoKTpcbiAgICAgICAgaWYgZGlyZWN0b3J5LmlzX2RpcigpOlxuICAgICAgICAgICAgc2h1dGlsLnJtdHJlZShkaXJlY3RvcnkpXG4gICAgaW5pdGlhbCA9IGhlYXJ0YmVhdChhcGkpXG4gICAgKFJPT1QgLyAncmVhZHknKS50b3VjaChtb2RlPTBvNjAwKVxuICAgIHRocmVhZGluZy5UaHJlYWQodGFyZ2V0PWhlYXJ0YmVhdF9sb29wLCBhcmdzPShhcGksKSwgZGFlbW9uPVRydWUpLnN0YXJ0KClcbiAgICByZXNwb25zZSA9IGluaXRpYWxcbiAgICB3aGlsZSBub3QgU1RPUC5pc19zZXQoKTpcbiAgICAgICAgd2l0aCBTVEFURV9MT0NLOlxuICAgICAgICAgICAgcmVzcG9uc2UgPSBkaWN0KENPTlRST0wpXG4gICAgICAgICAgICBidXN5ID0gYm9vbChUQVNLUylcbiAgICAgICAgZGVzaXJlZCA9IHJlc3BvbnNlLmdldCgnY29uZmlndXJhdGlvbicpXG4gICAgICAgIHRlc3RfcmVxdWVzdCA9IHJlc3BvbnNlLmdldCgnY2FwYWJpbGl0eV90ZXN0X3JlcXVlc3QnKVxuICAgICAgICB0ZXN0ZWQgPSBSRVBPUlQuZ2V0KCdjYXBhYmlsaXR5X3Rlc3QnKVxuICAgICAgICBpZiBub3QgYnVzeSBhbmQgY29uZmlnIGFuZCAobm90IHRlc3RlZCBvciAodGVzdF9yZXF1ZXN0IGFuZCB0ZXN0ZWQuZ2V0KCdpZCcpICE9IHRlc3RfcmVxdWVzdCkpOlxuICAgICAgICAgICAgdHJ5OlxuICAgICAgICAgICAgICAgIHJlZnJlc2hfY2FwYWJpbGl0aWVzKGNvbmZpZywgcmVsZWFzZSwgdGVzdF9yZXF1ZXN0KVxuICAgICAgICAgICAgICAgIGhlYXJ0YmVhdChhcGkpXG4gICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGVycm9yOlxuICAgICAgICAgICAgICAgIHdpdGggU1RBVEVfTE9DSzpcbiAgICAgICAgICAgICAgICAgICAgUkVQT1JULnVwZGF0ZShjYXBhYmlsaXRpZXM9e30sIHVwZGF0ZV9lcnJvcj0nQ2FwYWJpbGl0eVRlc3RGYWlsZWQnKVxuICAgICAgICAgICAgICAgIGhlYXJ0YmVhdChhcGkpXG4gICAgICAgICAgICAgICAgU1RPUC53YWl0KDE1KVxuICAgICAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIGFwcGx5X2NpX3J1bm5lcihhcGksIHJlc3BvbnNlLmdldCgnY2lfcnVubmVyJykpXG4gICAgICAgIGlmIGZhaWx1cmUgYW5kIGRlc2lyZWQgYW5kIGRlc2lyZWRbJ3ZlcnNpb24nXSAhPSBmYWlsdXJlLmdldCgndmVyc2lvbicpOlxuICAgICAgICAgICAgZmFpbHVyZSA9IHt9XG4gICAgICAgICAgICAoUk9PVCAvICdmYWlsdXJlLmpzb24nKS51bmxpbmsobWlzc2luZ19vaz1UcnVlKVxuICAgICAgICAgICAgd2l0aCBTVEFURV9MT0NLOlxuICAgICAgICAgICAgICAgIFJFUE9SVFsndXBkYXRlX2Vycm9yJ10gPSBOb25lXG4gICAgICAgICAgICBoZWFydGJlYXQoYXBpKVxuICAgICAgICBpZiBub3QgYnVzeSBhbmQgZGVzaXJlZCBhbmQgZGVzaXJlZCAhPSBjb25maWcgYW5kIGRlc2lyZWRbJ3ZlcnNpb24nXSAhPSBmYWlsdXJlLmdldCgndmVyc2lvbicpOlxuICAgICAgICAgICAgdHJ5OlxuICAgICAgICAgICAgICAgIHN0YWdlX3VwZGF0ZShkZXNpcmVkKVxuICAgICAgICAgICAgICAgIHJldHVybiA3NVxuICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlcnJvcjpcbiAgICAgICAgICAgICAgICBpZiBjb25maWc6XG4gICAgICAgICAgICAgICAgICAgIGFwcGx5X2xpbWl0cyhjb25maWcpXG4gICAgICAgICAgICAgICAgcmVhc29uID0gdXBkYXRlX2ZhaWx1cmVfcmVhc29uKGVycm9yKVxuICAgICAgICAgICAgICAgIGZhaWx1cmUgPSBkaWN0KHZlcnNpb249ZGVzaXJlZFsndmVyc2lvbiddLCBlcnJvcj1yZWFzb24pXG4gICAgICAgICAgICAgICAgd3JpdGVfanNvbihST09UIC8gJ2ZhaWx1cmUuanNvbicsIGZhaWx1cmUpXG4gICAgICAgICAgICAgICAgd2l0aCBTVEFURV9MT0NLOlxuICAgICAgICAgICAgICAgICAgICBSRVBPUlRbJ3VwZGF0ZV9lcnJvciddID0gZmFpbHVyZVsnZXJyb3InXVxuICAgICAgICAgICAgICAgIG5vdGUoJ1dvcmtlciB1cGRhdGUgZmFpbGVkOiAnICsgdHlwZShlcnJvcikuX19uYW1lX18gKyAnOiAnICsgc3RyKGVycm9yKSlcbiAgICAgICAgICAgICAgICB0cnk6XG4gICAgICAgICAgICAgICAgICAgIGhlYXJ0YmVhdChhcGkpXG4gICAgICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjpcbiAgICAgICAgICAgICAgICAgICAgcGFzc1xuICAgICAgICBhbGxvd2VkID0gY2xhaW1fYWxsb3dlZChyZXNwb25zZS5nZXQoJ2V4ZWN1dGlvbl9wb2xpY3knKSwgaG9zdF9hY3Rpdml0eSgpKVxuICAgICAgICBpZiBjb25maWcgYW5kIGFsbG93ZWQgYW5kIG5vdCByZXNwb25zZS5nZXQoJ2RyYWluaW5nJykgYW5kIGRlc2lyZWQgPT0gY29uZmlnIGFuZCBub3QgUkVQT1JULmdldCgndXBkYXRlX2Vycm9yJyk6XG4gICAgICAgICAgICB3aXRoIFNUQVRFX0xPQ0s6XG4gICAgICAgICAgICAgICAgcm9vbSA9IE1BWF9UQVNLUyAtIGxlbihUQVNLUylcbiAgICAgICAgICAgIGlmIHJvb20gPiAwOlxuICAgICAgICAgICAgICAgIHRhc2sgPSBhcGkucG9zdCgnd29ya2Vycy8nICsgYXBpLndvcmtlcl9pZCgpICsgJy9qb2JzL3JlcXVlc3QnLCB7fSlbJ2pvYiddXG4gICAgICAgICAgICAgICAgaWYgdGFzazpcbiAgICAgICAgICAgICAgICAgICAgd2l0aCBTVEFURV9MT0NLOlxuICAgICAgICAgICAgICAgICAgICAgICAgVEFTS1MuYXBwZW5kKHRhc2spXG4gICAgICAgICAgICAgICAgICAgIHRocmVhZGluZy5UaHJlYWQodGFyZ2V0PXJ1bl90YXNrLCBhcmdzPShhcGksIHRhc2ssIGpvYl9jb25maWcoZGVzaXJlZCBvciBjb25maWcsIHRhc2spKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYWVtb249VHJ1ZSkuc3RhcnQoKVxuICAgICAgICAgICAgICAgICAgICBjb250aW51ZVxuICAgICAgICBpZiBTVE9QLndhaXQoMik6XG4gICAgICAgICAgICBicmVha1xuICAgIHJldHVybiAwXG5cblxuaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzpcbiAgICBzaWduYWwuc2lnbmFsKHNpZ25hbC5TSUdURVJNLCBsYW1iZGEgKl86IFNUT1Auc2V0KCkpXG4gICAgc2lnbmFsLnNpZ25hbChzaWduYWwuU0lHSU5ULCBsYW1iZGEgKl86IFNUT1Auc2V0KCkpXG4gICAgdHJ5OlxuICAgICAgICBzeXMuZXhpdChtYWluKCkpXG4gICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlcnJvcjpcbiAgICAgICAgcHJpbnQoJ1dvcmtlciBzdG9wcGVkOiAnICsgdHlwZShlcnJvcikuX19uYW1lX18sIGZsdXNoPVRydWUpXG4gICAgICAgIHN5cy5leGl0KDEpXG4iLCJsYXVuY2hlci5weSI6IiMhL3Vzci9iaW4vZW52IHB5dGhvbjNcblwiXCJcIlN0YWJsZSBib290c3RyYXAgd2F0Y2hkb2c6IGEgY2FuZGlkYXRlIG11c3QgY29udGFjdCBwcm9kdWN0aW9uIHdpdGhpbiA2MHMuXG5Sb2xsYmFjayBzdXJ2aXZlcyBwb3dlciBsb3NzIGJlY2F1c2UgdGhlIHByZXZpb3VzIHBvaW50ZXIgaXMgcGVyc2lzdGVkIGZpcnN0LlxuXCJcIlwiXG5pbXBvcnQganNvblxuaW1wb3J0IG9zXG5mcm9tIHBhdGhsaWIgaW1wb3J0IFBhdGhcbmltcG9ydCBzaWduYWxcbmltcG9ydCBzdWJwcm9jZXNzXG5pbXBvcnQgc3lzXG5pbXBvcnQgdGltZVxuXG5ST09UID0gUGF0aChvcy5lbnZpcm9uLmdldCgnREdFX1dPUktFUl9ST09UJywgJy9vcHQvZGdlLXdvcmtlcicpKVxuY2hpbGQgPSBOb25lXG5zdG9wcGluZyA9IEZhbHNlXG5cblxuZGVmIHdyaXRlKHBhdGgsIHZhbHVlKTpcbiAgICB0ZW1wb3JhcnkgPSBwYXRoLndpdGhfc3VmZml4KCcudG1wJylcbiAgICB0ZW1wb3Jhcnkud3JpdGVfdGV4dChqc29uLmR1bXBzKHZhbHVlKSlcbiAgICB0ZW1wb3JhcnkuY2htb2QoMG82MDApXG4gICAgb3MucmVwbGFjZSh0ZW1wb3JhcnksIHBhdGgpXG5cblxuZGVmIHN0b3AoKl8pOlxuICAgIGdsb2JhbCBzdG9wcGluZ1xuICAgIHN0b3BwaW5nID0gVHJ1ZVxuICAgIGlmIGNoaWxkOlxuICAgICAgICBjaGlsZC50ZXJtaW5hdGUoKVxuXG5cbnNpZ25hbC5zaWduYWwoc2lnbmFsLlNJR1RFUk0sIHN0b3ApXG5zaWduYWwuc2lnbmFsKHNpZ25hbC5TSUdJTlQsIHN0b3ApXG53aGlsZSBub3Qgc3RvcHBpbmc6XG4gICAgcGVuZGluZ19wYXRoID0gUk9PVCAvICdwZW5kaW5nLmpzb24nXG4gICAgcGVuZGluZyA9IGpzb24ubG9hZHMocGVuZGluZ19wYXRoLnJlYWRfdGV4dCgpKSBpZiBwZW5kaW5nX3BhdGguZXhpc3RzKCkgZWxzZSBOb25lXG4gICAgY3VycmVudCA9IGpzb24ubG9hZHMoKFJPT1QgLyAnY3VycmVudC5qc29uJykucmVhZF90ZXh0KCkpXG4gICAgcmVhZHkgPSBST09UIC8gJ3JlYWR5J1xuICAgIHJlYWR5LnVubGluayhtaXNzaW5nX29rPVRydWUpXG4gICAgY2hpbGQgPSBzdWJwcm9jZXNzLlBvcGVuKFtzeXMuZXhlY3V0YWJsZSwgc3RyKFBhdGgoY3VycmVudCkgLyAnYWdlbnQucHknKV0pXG4gICAgZGVhZGxpbmUgPSB0aW1lLm1vbm90b25pYygpICsgNjBcbiAgICB3aGlsZSBjaGlsZC5wb2xsKCkgaXMgTm9uZSBhbmQgbm90IHJlYWR5LmV4aXN0cygpIGFuZCB0aW1lLm1vbm90b25pYygpIDwgZGVhZGxpbmUgYW5kIG5vdCBzdG9wcGluZzpcbiAgICAgICAgdGltZS5zbGVlcCgxKVxuICAgIGlmIHJlYWR5LmV4aXN0cygpOlxuICAgICAgICBpZiBwZW5kaW5nOlxuICAgICAgICAgICAgcGVuZGluZ19wYXRoLnVubGluayhtaXNzaW5nX29rPVRydWUpXG4gICAgICAgICAgICAoUk9PVCAvICdmYWlsdXJlLmpzb24nKS51bmxpbmsobWlzc2luZ19vaz1UcnVlKVxuICAgICAgICByZXN1bHQgPSBjaGlsZC53YWl0KClcbiAgICAgICAgaWYgcmVzdWx0ID09IDc1OlxuICAgICAgICAgICAgY29udGludWVcbiAgICBlbGlmIHBlbmRpbmcgYW5kIG5vdCBzdG9wcGluZzpcbiAgICAgICAgY2hpbGQudGVybWluYXRlKClcbiAgICAgICAgdHJ5OlxuICAgICAgICAgICAgY2hpbGQud2FpdCh0aW1lb3V0PTEwKVxuICAgICAgICBleGNlcHQgc3VicHJvY2Vzcy5UaW1lb3V0RXhwaXJlZDpcbiAgICAgICAgICAgIGNoaWxkLmtpbGwoKVxuICAgICAgICAgICAgY2hpbGQud2FpdCgpXG4gICAgICAgIHdyaXRlKFJPT1QgLyAnY3VycmVudC5qc29uJywgcGVuZGluZ1sncHJldmlvdXMnXSlcbiAgICAgICAgd3JpdGUoUk9PVCAvICdmYWlsdXJlLmpzb24nLCBkaWN0KHZlcnNpb249cGVuZGluZ1sndmVyc2lvbiddLCBlcnJvcj0nU3RhcnR1cEhlYWx0aENoZWNrRmFpbGVkJykpXG4gICAgICAgIHBlbmRpbmdfcGF0aC51bmxpbmsobWlzc2luZ19vaz1UcnVlKVxuICAgICAgICBjb250aW51ZVxuICAgIGVsc2U6XG4gICAgICAgIGNoaWxkLnRlcm1pbmF0ZSgpXG4gICAgICAgIGNoaWxkLndhaXQoKVxuICAgIGlmIG5vdCBzdG9wcGluZzpcbiAgICAgICAgdGltZS5zbGVlcCg1KVxuIiwiaW5zdGFsbC5weSI6IlwiXCJcIk9uZS1tYWNoaW5lIGVucm9sbG1lbnQgd2l0aCByZXRyeS1zYWZlIGNyZWRlbnRpYWwgZXhjaGFuZ2UgYW5kIHJlYWRpbmVzcyBjaGVjay5cIlwiXCJcbmltcG9ydCBmY250bFxuaW1wb3J0IGpzb25cbmltcG9ydCBvc1xuZnJvbSBwYXRobGliIGltcG9ydCBQYXRoXG5pbXBvcnQgc3VicHJvY2Vzc1xuaW1wb3J0IHN5c1xuaW1wb3J0IHRpbWVcbmltcG9ydCB1cmxsaWIuZXJyb3JcbmltcG9ydCB1cmxsaWIucmVxdWVzdFxuaW1wb3J0IHV1aWRcblxuZnJvbSBwcmVwYXJlX21hY2hpbmUgaW1wb3J0IHByZXBhcmVcblxuUk9PVCA9IFBhdGgoJy9vcHQvZGdlLXdvcmtlcicpXG5cblxuY2xhc3MgUmV0cnlhYmxlRXJyb3IoUnVudGltZUVycm9yKTpcbiAgICBwYXNzXG5cblxuY2xhc3MgTm9SZWRpcmVjdCh1cmxsaWIucmVxdWVzdC5IVFRQUmVkaXJlY3RIYW5kbGVyKTpcbiAgICBkZWYgcmVkaXJlY3RfcmVxdWVzdChzZWxmLCAqYXJncywgKiprd2FyZ3MpOlxuICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ1RoZSBzZXR1cCBzZXJ2ZXIgcmVkaXJlY3RlZCB0aGlzIHJlcXVlc3QuIEFzayB5b3VyIGFkbWluaXN0cmF0b3IgZm9yIGEgY3VycmVudCBsaW5rLicpXG5cblxuSFRUUCA9IHVybGxpYi5yZXF1ZXN0LmJ1aWxkX29wZW5lcihOb1JlZGlyZWN0KCkpXG5CUk9XU0VSX1VBID0gJ01vemlsbGEvNS4wIChYMTE7IExpbnV4IHg4Nl82NCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzEyOC4wLjAuMCBTYWZhcmkvNTM3LjM2J1xuXG5cbmRlZiBhbGxvd2VkX29yaWdpbihvcmlnaW4pOlxuICAgIGlmIG9yaWdpbi5zdGFydHN3aXRoKCdodHRwczovLycpOlxuICAgICAgICByZXR1cm4gVHJ1ZVxuICAgIGlmIG5vdCBvcmlnaW4uc3RhcnRzd2l0aCgnaHR0cDovLycpOlxuICAgICAgICByZXR1cm4gRmFsc2VcbiAgICBob3N0ID0gb3JpZ2luLnNwbGl0KCc6Ly8nLCAxKVstMV0uc3BsaXQoJy8nLCAxKVswXS5zcGxpdCgnOicsIDEpWzBdXG4gICAgcmV0dXJuIGhvc3QgaW4gKCcxMjcuMC4wLjEnLCAnbG9jYWxob3N0JywgJzo6MScpXG5cblxuZGVmIHBvc3Qob3JpZ2luLCBlbmRwb2ludCwgdG9rZW4sIHBheWxvYWQpOlxuICAgIGlmIG5vdCBhbGxvd2VkX29yaWdpbihvcmlnaW4pOlxuICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ1RoZSBzZXR1cCBsaW5rIG11c3QgdXNlIGEgc2VjdXJlIEhUVFBTIHNlcnZlci4nKVxuICAgIHJlcXVlc3QgPSB1cmxsaWIucmVxdWVzdC5SZXF1ZXN0KG9yaWdpbiArICcvY29tcHV0ZV9mbGVldC8nICsgZW5kcG9pbnQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhPWpzb24uZHVtcHMocGF5bG9hZCkuZW5jb2RlKCksIG1ldGhvZD0nUE9TVCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzPXsnQXV0aG9yaXphdGlvbic6ICdCZWFyZXIgJyArIHRva2VuLCAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1VzZXItQWdlbnQnOiBCUk9XU0VSX1VBLCAnbmdyb2stc2tpcC1icm93c2VyLXdhcm5pbmcnOiAnMSd9KVxuICAgIHRyeTpcbiAgICAgICAgd2l0aCBIVFRQLm9wZW4ocmVxdWVzdCwgdGltZW91dD0yMCkgYXMgcmVzcG9uc2U6XG4gICAgICAgICAgICBib2R5ID0gcmVzcG9uc2UucmVhZCg2NTUzNylcbiAgICAgICAgICAgIGlmIGxlbihib2R5KSA+IDY1NTM2OlxuICAgICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignVGhlIHNldHVwIHNlcnZlciByZXR1cm5lZCBhbiBpbnZhbGlkIHJlc3BvbnNlLicpXG4gICAgICAgICAgICByZXR1cm4ganNvbi5sb2Fkcyhib2R5KVxuICAgIGV4Y2VwdCB1cmxsaWIuZXJyb3IuSFRUUEVycm9yIGFzIGVycm9yOlxuICAgICAgICBpZiBlcnJvci5jb2RlIGluICg0MDEsIDQwMywgNDEwKTpcbiAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignVGhpcyBzZXR1cCBsaW5rIGhhcyBleHBpcmVkLCB3YXMgcmVwbGFjZWQsIG9yIGJlbG9uZ3MgdG8gYW5vdGhlciBtYWNoaW5lLiBBc2sgeW91ciBhZG1pbmlzdHJhdG9yIGZvciBhIG5ldyBsaW5rLicpIGZyb20gTm9uZVxuICAgICAgICByYWlzZSBSZXRyeWFibGVFcnJvcignVGhlIHNldHVwIHNlcnZlciBpcyB0ZW1wb3JhcmlseSB1bmF2YWlsYWJsZS4gUnVuIHRoZSBzYW1lIGluc3RhbGxlciBhZ2FpbiBpbiBhIGZldyBtaW51dGVzLicpIGZyb20gTm9uZVxuICAgIGV4Y2VwdCB1cmxsaWIuZXJyb3IuVVJMRXJyb3I6XG4gICAgICAgIHJhaXNlIFJldHJ5YWJsZUVycm9yKCdDYW5ub3QgcmVhY2ggdGhlIHNldHVwIHNlcnZlci4gQ2hlY2sgeW91ciBpbnRlcm5ldCBjb25uZWN0aW9uIGFuZCBydW4gdGhlIGluc3RhbGxlciBhZ2Fpbi4nKSBmcm9tIE5vbmVcblxuXG5kZWYgaGFyZHdhcmUoKTpcbiAgICB0b3RhbF9rYiA9IG5leHQoaW50KGxpbmUuc3BsaXQoKVsxXSkgZm9yIGxpbmUgaW4gUGF0aCgnL3Byb2MvbWVtaW5mbycpLnJlYWRfdGV4dCgpLnNwbGl0bGluZXMoKSBpZiBsaW5lLnN0YXJ0c3dpdGgoJ01lbVRvdGFsOicpKVxuICAgIHJlc2VydmF0aW9uID0gUGF0aCgnL3N5cy9mcy9jZ3JvdXAvY2kuc2xpY2UvbWVtb3J5Lm1heCcpXG4gICAgcmVzZXJ2ZWQgPSByZXNlcnZhdGlvbi5yZWFkX3RleHQoKS5zdHJpcCgpIGlmIHJlc2VydmF0aW9uLmV4aXN0cygpIGVsc2UgJydcbiAgICByZXR1cm4geydtZW1vcnlfYnl0ZXMnOiB0b3RhbF9rYiAqIDEwMjQsICdsb2dpY2FsX2NwdXMnOiBvcy5jcHVfY291bnQoKSBvciAxLFxuICAgICAgICAgICAgJ2NpX21lbW9yeV9yZXNlcnZlZF9ieXRlcyc6IGludChyZXNlcnZlZCkgaWYgcmVzZXJ2ZWQuaXNkaWdpdCgpIGVsc2UgTm9uZX1cblxuXG5kZWYgZGlyZWN0X2lkZW50aXR5KGludml0YXRpb24pOlxuICAgIGlmIG5vdCBpbnZpdGF0aW9uLmdldCgnd29ya2VyX2lkJyk6XG4gICAgICAgIHJldHVybiBOb25lXG4gICAgdHJ5OlxuICAgICAgICBzdGF0dXMgPSBwb3N0KGludml0YXRpb25bJ29yaWdpbiddLCAnc3RhdHVzJywgaW52aXRhdGlvblsndG9rZW4nXSwge30pXG4gICAgZXhjZXB0IFJldHJ5YWJsZUVycm9yOlxuICAgICAgICByYWlzZVxuICAgIGV4Y2VwdCBSdW50aW1lRXJyb3I6XG4gICAgICAgIHJldHVybiBOb25lXG4gICAgaWYgc3RhdHVzLmdldCgnd29ya2VyX2lkJykgIT0gaW52aXRhdGlvblsnd29ya2VyX2lkJ106XG4gICAgICAgIHJldHVybiBOb25lXG4gICAgcmV0dXJuIHtcbiAgICAgICAgJ29yaWdpbic6IGludml0YXRpb25bJ29yaWdpbiddLFxuICAgICAgICAndG9rZW4nOiBpbnZpdGF0aW9uWyd0b2tlbiddLFxuICAgICAgICAnd29ya2VyX2lkJzogaW52aXRhdGlvblsnd29ya2VyX2lkJ10sXG4gICAgICAgICd3b3JrZXJfbmFtZSc6IHN0YXR1cy5nZXQoJ3dvcmtlcl9uYW1lJyksXG4gICAgfVxuXG5cbmRlZiBzdG9yZV9pZGVudGl0eShpZGVudGl0eSk6XG4gICAgdGVtcG9yYXJ5ID0gUk9PVCAvICdpZGVudGl0eS5wZW5kaW5nJ1xuICAgIHRlbXBvcmFyeS53cml0ZV90ZXh0KGpzb24uZHVtcHMoaWRlbnRpdHkpKVxuICAgIHRlbXBvcmFyeS5jaG1vZCgwbzYwMClcbiAgICB0ZW1wb3JhcnkucmVwbGFjZShST09UIC8gJ2lkZW50aXR5Lmpzb24nKVxuICAgIHJldHVybiBpZGVudGl0eVxuXG5cbmRlZiBlbnJvbGxtZW50KHNvdXJjZSk6XG4gICAgaW52aXRhdGlvbiA9IGpzb24ubG9hZHMoKHNvdXJjZSAvICdpbnZpdGF0aW9uLmpzb24nKS5yZWFkX3RleHQoKSlcbiAgICBpZGVudGl0eSA9IFJPT1QgLyAnaWRlbnRpdHkuanNvbidcbiAgICBpZiBpZGVudGl0eS5leGlzdHMoKTpcbiAgICAgICAgZXhpc3RpbmcgPSBqc29uLmxvYWRzKGlkZW50aXR5LnJlYWRfdGV4dCgpKVxuICAgICAgICBzdGF0dXMgPSBwb3N0KGV4aXN0aW5nWydvcmlnaW4nXSwgJ3N0YXR1cycsIGV4aXN0aW5nWyd0b2tlbiddLCB7fSlcbiAgICAgICAgaWYgZXhpc3RpbmdbJ29yaWdpbiddICE9IGludml0YXRpb25bJ29yaWdpbiddIG9yIHN0YXR1c1snd29ya2VyX2lkJ10gIT0gaW52aXRhdGlvblsnd29ya2VyX2lkJ106XG4gICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ1RoaXMgY29tcHV0ZXIgaXMgYWxyZWFkeSBjb25uZWN0ZWQgdG8gYW5vdGhlciBzZXJ2ZXIuIEFzayB5b3VyIGFkbWluaXN0cmF0b3IgYmVmb3JlIGNoYW5naW5nIGl0LicpXG4gICAgICAgIHJldHVybiBleGlzdGluZ1xuICAgIGFwcHJvdmVkID0gZGlyZWN0X2lkZW50aXR5KGludml0YXRpb24pXG4gICAgaWYgYXBwcm92ZWQ6XG4gICAgICAgIHJldHVybiBzdG9yZV9pZGVudGl0eShhcHByb3ZlZClcbiAgICBjbGFpbSA9IFJPT1QgLyAnc2V0dXAtY2xhaW0nXG4gICAgaWYgbm90IGNsYWltLmV4aXN0cygpOlxuICAgICAgICBjbGFpbS53cml0ZV90ZXh0KHN0cih1dWlkLnV1aWQ0KCkpKVxuICAgICAgICBjbGFpbS5jaG1vZCgwbzYwMClcbiAgICByZXN1bHQgPSBwb3N0KGludml0YXRpb25bJ29yaWdpbiddLCAnc2V0dXAvcmVkZWVtJywgaW52aXRhdGlvblsndG9rZW4nXSwgeydjbGFpbV9pZCc6IGNsYWltLnJlYWRfdGV4dCgpLCAnaGFyZHdhcmUnOiBoYXJkd2FyZSgpfSlcbiAgICByZXR1cm4gc3RvcmVfaWRlbnRpdHkocmVzdWx0KVxuXG5cbmRlZiB3YWl0X3VudGlsX3JlYWR5KGlkZW50aXR5KTpcbiAgICBwcmludCgnQ29ubmVjdGluZyBhbmQgZG93bmxvYWRpbmcgdGhlIHdvcmtlciBzb2Z0d2FyZS4gVGhpcyBjYW4gdGFrZSBzZXZlcmFsIG1pbnV0ZXMuLi4nLCBmbHVzaD1UcnVlKVxuICAgIGRlYWRsaW5lID0gdGltZS5tb25vdG9uaWMoKSArIDYwMFxuICAgIHdoaWxlIHRpbWUubW9ub3RvbmljKCkgPCBkZWFkbGluZTpcbiAgICAgICAgdHJ5OlxuICAgICAgICAgICAgc3RhdHVzID0gcG9zdChpZGVudGl0eVsnb3JpZ2luJ10sICdzdGF0dXMnLCBpZGVudGl0eVsndG9rZW4nXSwge30pXG4gICAgICAgIGV4Y2VwdCBSZXRyeWFibGVFcnJvcjpcbiAgICAgICAgICAgIHRpbWUuc2xlZXAoMylcbiAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIHN0YXRlID0gc3RhdHVzWydzdGF0ZSddXG4gICAgICAgIGlmIHN0YXRlIGluICgncmVhZHknLCAnYnVzeScsICdsb3cgYmF0dGVyeScsICdkcmFpbmluZycsICdwYXVzZWQnLCAnd2FpdGluZyBmb3IgaG9zdCBtZWFzdXJlbWVudHMnLFxuICAgICAgICAgICAgICAgICAgICAgJ3VzaW5nIGJhdHRlcnknLCAnY29tcHV0ZXIgaW4gdXNlJywgJ2hvc3QgYnVzeScsICdsb3cgaG9zdCBtZW1vcnknLCAnb3duZXIgcmVzb3VyY2UgbGltaXQnKTpcbiAgICAgICAgICAgIHByaW50KCdcXG5Db25uZWN0ZWQhIFRoaXMgY29tcHV0ZXIgaXMgbm93IGFuIG9mZmljaWFsIHdvcmtlci4nLCBmbHVzaD1UcnVlKVxuICAgICAgICAgICAgaWYgc3RhdGUgaW4gKCdsb3cgYmF0dGVyeScsICdkcmFpbmluZycpOlxuICAgICAgICAgICAgICAgIHByaW50KCdOZXcgdGFza3MgYXJlIHBhdXNlZDogJyArIHN0YXRlICsgJy4nLCBmbHVzaD1UcnVlKVxuICAgICAgICAgICAgcHJpbnQoJ1lvdSBjYW4gY2xvc2UgdGhpcyB3aW5kb3cgYW5kIGRlbGV0ZSB0aGUgZG93bmxvYWRlZCBpbnN0YWxsZXIuIFRoZSB3b3JrZXIgc3RhcnRzIGF1dG9tYXRpY2FsbHkgYWZ0ZXIgYSByZXN0YXJ0LicsIGZsdXNoPVRydWUpXG4gICAgICAgICAgICByZXR1cm5cbiAgICAgICAgaWYgc3RhdHVzLmdldCgndXBkYXRlX2Vycm9yJyk6XG4gICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ1RoZSBjb21wdXRlciBjb25uZWN0ZWQsIGJ1dCB0aGUgd29ya2VyIHNvZnR3YXJlIGNvdWxkIG5vdCBzdGFydC4gWW91ciBhZG1pbmlzdHJhdG9yIGNhbiBzZWUgdGhlIHVwZGF0ZSBmYWlsdXJlIGluIENvbXB1dGUgV29ya2Vycy4nKVxuICAgICAgICB0aW1lLnNsZWVwKDMpXG4gICAgcmFpc2UgUnVudGltZUVycm9yKCdUaGUgY29tcHV0ZXIgaXMgZW5yb2xsZWQsIGJ1dCB0aGUgZmlyc3QgZG93bmxvYWQgaXMgc3RpbGwgdGFraW5nIHRpbWUuIEFzayB5b3VyIGFkbWluaXN0cmF0b3IgdG8gY2hlY2sgQ29tcHV0ZSBXb3JrZXJzOyB5b3UgY2FuIHNhZmVseSByZXJ1biB0aGlzIGluc3RhbGxlci4nKVxuXG5cbmRlZiBtYWluKCk6XG4gICAgc291cmNlID0gUGF0aChfX2ZpbGVfXykucmVzb2x2ZSgpLnBhcmVudFxuICAgIGludml0YXRpb24gPSBqc29uLmxvYWRzKChzb3VyY2UgLyAnaW52aXRhdGlvbi5qc29uJykucmVhZF90ZXh0KCkpXG4gICAgY2xhaW0gPSBST09UIC8gJ3NldHVwLWNsYWltJ1xuICAgIGFscmVhZHlfZW5yb2xsZWQgPSAoUk9PVCAvICdpZGVudGl0eS5qc29uJykuZXhpc3RzKClcbiAgICBpZiBhbHJlYWR5X2Vucm9sbGVkOlxuICAgICAgICBleGlzdGluZyA9IGVucm9sbG1lbnQoc291cmNlKVxuICAgICAgICBhc3NpZ25tZW50ID0gcG9zdChleGlzdGluZ1snb3JpZ2luJ10sICdzdGF0dXMnLCBleGlzdGluZ1sndG9rZW4nXSwge30pXG4gICAgICAgIGlmIGFzc2lnbm1lbnRbJ3N0YXRlJ10gbm90IGluICgncmV2b2tlZCcsICd1cGRhdGUgZmFpbGVkJyk6XG4gICAgICAgICAgICB3YWl0X3VudGlsX3JlYWR5KGV4aXN0aW5nKVxuICAgICAgICAgICAgcmV0dXJuXG4gICAgZWxzZTpcbiAgICAgICAgYXBwcm92ZWQgPSBkaXJlY3RfaWRlbnRpdHkoaW52aXRhdGlvbilcbiAgICAgICAgaWYgYXBwcm92ZWQ6XG4gICAgICAgICAgICBhc3NpZ25tZW50ID0gcG9zdChhcHByb3ZlZFsnb3JpZ2luJ10sICdzdGF0dXMnLCBhcHByb3ZlZFsndG9rZW4nXSwge30pXG4gICAgICAgIGVsc2U6XG4gICAgICAgICAgICBhc3NpZ25tZW50ID0gcG9zdChpbnZpdGF0aW9uWydvcmlnaW4nXSwgJ3NldHVwL2NoZWNrJywgaW52aXRhdGlvblsndG9rZW4nXSwgeydjbGFpbV9pZCc6IGNsYWltLnJlYWRfdGV4dCgpIGlmIGNsYWltLmV4aXN0cygpIGVsc2UgTm9uZX0pXG4gICAgcHJpbnQoJ0FwcHJvdmVkLiBTdGFydGluZyBzZXR1cCBvbiB0aGlzIGNvbXB1dGVyLi4uJywgZmx1c2g9VHJ1ZSlcbiAgICBwcmludCgnQ2hlY2tpbmcgdGhpcyBjb21wdXRlciBpcyByZWFkeS4uLicsIGZsdXNoPVRydWUpXG4gICAgdG90YWxfbWIgPSBoYXJkd2FyZSgpWydtZW1vcnlfYnl0ZXMnXSAvLyAoMTAyNCAqIDEwMjQpXG4gICAgaWYgdG90YWxfbWIgPCAyMDQ4OlxuICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ1RoaXMgY29tcHV0ZXIgbmVlZHMgYXQgbGVhc3QgMiBHaUIgb2YgUkFNLicpXG4gICAgaWYgYXNzaWdubWVudC5nZXQoJ21lbW9yeV9tYicpIGFuZCB0b3RhbF9tYiA8IGFzc2lnbm1lbnRbJ21lbW9yeV9tYiddOlxuICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ1RoaXMgY29tcHV0ZXIgbmVlZHMgYSBzbWFsbGVyIHdvcmtlciBjb25maWd1cmF0aW9uLiBBc2sgeW91ciBhZG1pbmlzdHJhdG9yIHRvIGxvd2VyIGl0cyBtZW1vcnkgYWxsb2NhdGlvbiwgdGhlbiByZXJ1biBzZXR1cC4nKVxuICAgIHByaW50KCdQcmVwYXJpbmcgdGhpcyBjb21wdXRlci4uLicsIGZsdXNoPVRydWUpXG4gICAgcHJlcGFyZSgpXG4gICAgcHJpbnQoJyQgbWtkaXIgLXAgL29wdC9kZ2Utd29ya2VyICYmIGNobW9kIDcwMCAvb3B0L2RnZS13b3JrZXInLCBmbHVzaD1UcnVlKVxuICAgIFJPT1QubWtkaXIobW9kZT0wbzcwMCwgcGFyZW50cz1UcnVlLCBleGlzdF9vaz1UcnVlKVxuICAgIFJPT1QuY2htb2QoMG83MDApXG4gICAgd2luZG93cyA9IG9zLmVudmlyb24uZ2V0KCdER0VfV0lORE9XU19BQ1RJVklUWScpXG4gICAgaWYgd2luZG93czpcbiAgICAgICAgKFJPT1QgLyAnaG9zdC1hY3Rpdml0eS1wYXRoLmpzb24nKS53cml0ZV90ZXh0KGpzb24uZHVtcHMod2luZG93cykpXG4gICAgcHJpbnQoJ1NhdmluZyB0aGlzIGNvbXB1dGVy4oCZcyBjb25uZWN0aW9uLi4uJywgZmx1c2g9VHJ1ZSlcbiAgICBpZGVudGl0eSA9IGVucm9sbG1lbnQoc291cmNlKVxuICAgIChzb3VyY2UgLyAnZW5yb2xsbWVudC5qc29uJykud3JpdGVfdGV4dChqc29uLmR1bXBzKGlkZW50aXR5KSlcbiAgICAoUk9PVCAvICdmYWlsdXJlLmpzb24nKS51bmxpbmsobWlzc2luZ19vaz1UcnVlKVxuICAgIHByaW50KCdJbnN0YWxsaW5nIHRoZSBiYWNrZ3JvdW5kIHdvcmtlci4uLicsIGZsdXNoPVRydWUpXG4gICAgcHJpbnQoJyQgcHl0aG9uMyAtdSBzZXR1cC5weScsIGZsdXNoPVRydWUpXG4gICAgc3VicHJvY2Vzcy5ydW4oW3N5cy5leGVjdXRhYmxlLCAnLXUnLCBzdHIoc291cmNlIC8gJ3NldHVwLnB5JyldLCBjd2Q9c291cmNlLCBjaGVjaz1UcnVlKVxuICAgIGlmIGFscmVhZHlfZW5yb2xsZWQ6XG4gICAgICAgIHByaW50KCckIHN5c3RlbWN0bCByZXN0YXJ0IGRnZS13b3JrZXIuc2VydmljZScsIGZsdXNoPVRydWUpXG4gICAgICAgIHN1YnByb2Nlc3MucnVuKFsnc3lzdGVtY3RsJywgJ3Jlc3RhcnQnLCAnZGdlLXdvcmtlci5zZXJ2aWNlJ10sIGNoZWNrPVRydWUpXG4gICAgcHJpbnQoJyQgc3lzdGVtY3RsIGRpc2FibGUgLS1ub3cgaGVhdnktcHJvY2Vzc2luZy5zZXJ2aWNlJywgZmx1c2g9VHJ1ZSlcbiAgICBzdWJwcm9jZXNzLnJ1bihbJ3N5c3RlbWN0bCcsICdkaXNhYmxlJywgJy0tbm93JywgJ2hlYXZ5LXByb2Nlc3Npbmcuc2VydmljZSddLCBzdGRvdXQ9c3VicHJvY2Vzcy5ERVZOVUxMLCBzdGRlcnI9c3VicHJvY2Vzcy5ERVZOVUxMKVxuICAgIHdhaXRfdW50aWxfcmVhZHkoaWRlbnRpdHkpXG5cblxuaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzpcbiAgICB0cnk6XG4gICAgICAgIGxvY2tfcGF0aCA9IFBhdGgoJy9ydW4vZGdlLXdvcmtlci1pbnN0YWxsLmxvY2snKVxuICAgICAgICB0cnk6XG4gICAgICAgICAgICBsb2NrX2ZpbGUgPSBsb2NrX3BhdGgub3BlbigndycpXG4gICAgICAgIGV4Y2VwdCBPU0Vycm9yOlxuICAgICAgICAgICAgbG9ja19wYXRoID0gUGF0aCgnL3RtcC9kZ2Utd29ya2VyLWluc3RhbGwubG9jaycpXG4gICAgICAgICAgICBsb2NrX2ZpbGUgPSBsb2NrX3BhdGgub3BlbigndycpXG4gICAgICAgIHdpdGggbG9ja19maWxlIGFzIGxvY2s6XG4gICAgICAgICAgICB0cnk6XG4gICAgICAgICAgICAgICAgZmNudGwuZmxvY2sobG9jaywgZmNudGwuTE9DS19FWCB8IGZjbnRsLkxPQ0tfTkIpXG4gICAgICAgICAgICBleGNlcHQgQmxvY2tpbmdJT0Vycm9yOlxuICAgICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignU2V0dXAgaXMgYWxyZWFkeSBydW5uaW5nIGluIGFub3RoZXIgd2luZG93LicpIGZyb20gTm9uZVxuICAgICAgICAgICAgbWFpbigpXG4gICAgZXhjZXB0IChSdW50aW1lRXJyb3IsIE9TRXJyb3IsIFZhbHVlRXJyb3IsIEtleUVycm9yLCBzdWJwcm9jZXNzLlN1YnByb2Nlc3NFcnJvcikgYXMgZXJyb3I6XG4gICAgICAgIG1lc3NhZ2UgPSBzdHIoZXJyb3IpIGlmIGlzaW5zdGFuY2UoZXJyb3IsIFJ1bnRpbWVFcnJvcikgZWxzZSAnU2V0dXAgY291bGQgbm90IGZpbmlzaC4gQ2hlY2sgeW91ciBjb25uZWN0aW9uIGFuZCByZXJ1biB0aGUgc2FtZSBpbnN0YWxsZXIuIElmIGl0IHN0aWxsIGZhaWxzLCBhc2sgeW91ciBhZG1pbmlzdHJhdG9yIHRvIGNoZWNrIHRoaXMgbWFjaGluZS4nXG4gICAgICAgIHByaW50KCdcXG5TZXR1cCBuZWVkcyBhdHRlbnRpb246ICcgKyBtZXNzYWdlLCBmbHVzaD1UcnVlKVxuICAgICAgICBwcmludCgnXFxuU2V0dXAgbmVlZHMgYXR0ZW50aW9uOiAnICsgbWVzc2FnZSwgZmlsZT1zeXMuc3RkZXJyKVxuICAgICAgICBzeXMuZXhpdCgxKVxuIiwiaW5zdGFsbF9tYWNvcy5weSI6IlwiXCJcIkNyZWF0ZSBhIExpbWEgVWJ1bnR1IFZNIGFuZCBydW4gdGhlIExpbnV4IGluc3RhbGxlciBpbnNpZGUgaXQuXCJcIlwiXG5pbXBvcnQganNvblxuaW1wb3J0IHNlY3JldHNcbmltcG9ydCBvc1xuaW1wb3J0IHNobGV4XG5pbXBvcnQgc2h1dGlsXG5pbXBvcnQgc2lnbmFsXG5pbXBvcnQgc3VicHJvY2Vzc1xuaW1wb3J0IHN5c1xuaW1wb3J0IHRlbXBmaWxlXG5pbXBvcnQgdGhyZWFkaW5nXG5pbXBvcnQgdGltZVxuZnJvbSBwYXRobGliIGltcG9ydCBQYXRoXG5cbmZyb20gc2V0dXBfbG9nX3JlcG9ydGVyIGltcG9ydCBTZXR1cExvZ1JlcG9ydGVyXG5cbklOU1RBTkNFID0gJ2RnZS13b3JrZXInXG5URU1QTEFURSA9ICd0ZW1wbGF0ZTovL3VidW50dS0yNC4wNCdcblBST1hZX1BPUlQgPSAxODc4OVxuUFJPWFlfTEFCRUwgPSAnY29tLmRnZS5jb21wdXRlLXN0b3JhZ2UtcHJveHknXG5NQUNfQklOID0gKCcvb3B0L2hvbWVicmV3L2JpbicsICcvdXNyL2xvY2FsL2JpbicpXG5CUkVXX0lOU1RBTEwgPSAnaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0hvbWVicmV3L2luc3RhbGwvSEVBRC9pbnN0YWxsLnNoJ1xuQlJFV19JTlNUQUxMX1RJTUVPVVQgPSAxMCAqIDYwXG5HVUVTVF9JTlNUQUxMX0ZJTEVTID0gKFxuICAgICdpbnN0YWxsLnB5JywgJ3NldHVwLnB5JywgJ2FnZW50LnB5JywgJ2xhdW5jaGVyLnB5JywgJ3ByZXBhcmVfbWFjaGluZS5weScsICd1bmluc3RhbGwucHknLFxuKVxuR1VFU1RfRElSID0gJy90bXAvZGdlLXdvcmtlci1pbnN0YWxsJ1xuUkVQT1JURVIgPSBOb25lXG5cblxuZGVmIHN0YXR1cyhtZXNzYWdlKTpcbiAgICBwcmludChtZXNzYWdlLCBmbHVzaD1UcnVlKVxuICAgIGlmIFJFUE9SVEVSOlxuICAgICAgICBSRVBPUlRFUi5yZWNvcmQobWVzc2FnZSlcblxuXG5kZWYgcmVsYXlfaG9tZWJyZXdfb3V0cHV0KHN0cmVhbSk6XG4gICAgZm9yIGxpbmUgaW4gc3RyZWFtOlxuICAgICAgICBwcmludChsaW5lLCBlbmQ9JycsIGZsdXNoPVRydWUpXG4gICAgICAgIGlmIFJFUE9SVEVSOlxuICAgICAgICAgICAgUkVQT1JURVIucmVjb3JkKGxpbmUpXG5cblxuZGVmIHByZXBlbmRfcGF0aChkaXJlY3RvcnkpOlxuICAgIGlmIG5vdCBkaXJlY3Rvcnkgb3Igbm90IFBhdGgoZGlyZWN0b3J5KS5pc19kaXIoKTpcbiAgICAgICAgcmV0dXJuXG4gICAgY3VycmVudCA9IG9zLmVudmlyb24uZ2V0KCdQQVRIJywgJycpXG4gICAgcGFydHMgPSBjdXJyZW50LnNwbGl0KCc6JykgaWYgY3VycmVudCBlbHNlIFtdXG4gICAgaWYgZGlyZWN0b3J5IG5vdCBpbiBwYXJ0czpcbiAgICAgICAgb3MuZW52aXJvblsnUEFUSCddID0gZGlyZWN0b3J5ICsgKCgnOicgKyBjdXJyZW50KSBpZiBjdXJyZW50IGVsc2UgJycpXG5cblxuZGVmIGFkZF9tYWNfcHJlZml4ZXMoKTpcbiAgICBmb3IgZGlyZWN0b3J5IGluICgnL3Vzci9sb2NhbC9iaW4nLCAnL29wdC9ob21lYnJldy9iaW4nKTpcbiAgICAgICAgcHJlcGVuZF9wYXRoKGRpcmVjdG9yeSlcblxuXG5kZWYgcnVuKGFyZ3MsICoqa3dhcmdzKTpcbiAgICBwcmludCgnJCAnICsgc2hsZXguam9pbihzdHIoaXRlbSkgZm9yIGl0ZW0gaW4gYXJncyksIGZsdXNoPVRydWUpXG4gICAgcmV0dXJuIHN1YnByb2Nlc3MucnVuKGFyZ3MsIGNoZWNrPVRydWUsICoqa3dhcmdzKVxuXG5cbmRlZiBob3N0X3Jlc291cmNlcygpOlxuICAgIHRyeTpcbiAgICAgICAgbWVtb3J5ID0gaW50KHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KFsnc3lzY3RsJywgJy1uJywgJ2h3Lm1lbXNpemUnXSkpXG4gICAgICAgIGNwdXMgPSBpbnQoc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoWydzeXNjdGwnLCAnLW4nLCAnaHcubmNwdSddKSlcbiAgICBleGNlcHQgKEZpbGVOb3RGb3VuZEVycm9yLCBzdWJwcm9jZXNzLkNhbGxlZFByb2Nlc3NFcnJvciwgT1NFcnJvcik6XG4gICAgICAgIG1lbW9yeSA9IG9zLnN5c2NvbmYoJ1NDX1BBR0VfU0laRScpICogb3Muc3lzY29uZignU0NfUEhZU19QQUdFUycpXG4gICAgICAgIGNwdXMgPSBvcy5jcHVfY291bnQoKSBvciAyXG4gICAgcmV0dXJuIG1lbW9yeSwgY3B1c1xuXG5cbmRlZiB2bV9zaXplKG1lbW9yeV9ieXRlcywgY3B1cyk6XG4gICAgIyBCb3VuZCB0aGUgVk0gaXRzZWxmIGFzIHdlbGwgYXMgdGFzayBjb250YWluZXJzOyBsZWF2ZSBSQU0gZm9yIGludGVyYWN0aXZlIGFwcHMuXG4gICAgaG9zdF9naWIgPSBtYXgobWVtb3J5X2J5dGVzLCAxKSAvLyAoMTAyNCAqKiAzKVxuICAgIHJldHVybiBtYXgoMiwgbWluKDQsIGhvc3RfZ2liIC8vIDIpKSwgbWF4KDEsIG1pbig0LCBjcHVzIC8vIDIpKVxuXG5cbmRlZiBpbnN0YW5jZV9uYW1lcygpOlxuICAgIHJlc3VsdCA9IHN1YnByb2Nlc3MucnVuKFsnbGltYWN0bCcsICdsaXN0JywgJy1xJ10sIGNoZWNrPVRydWUsIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsIHRleHQ9VHJ1ZSlcbiAgICByZXR1cm4ge2xpbmUuc3RyaXAoKSBmb3IgbGluZSBpbiByZXN1bHQuc3Rkb3V0LnNwbGl0bGluZXMoKSBpZiBsaW5lLnN0cmlwKCl9XG5cblxuZGVmIGZpbmRfYnJldygpOlxuICAgIGFkZF9tYWNfcHJlZml4ZXMoKVxuICAgIGZvdW5kID0gc2h1dGlsLndoaWNoKCdicmV3JylcbiAgICBpZiBmb3VuZDpcbiAgICAgICAgcmV0dXJuIGZvdW5kXG4gICAgZm9yIGRpcmVjdG9yeSBpbiBNQUNfQklOOlxuICAgICAgICBjYW5kaWRhdGUgPSBQYXRoKGRpcmVjdG9yeSkgLyAnYnJldydcbiAgICAgICAgaWYgb3MuYWNjZXNzKGNhbmRpZGF0ZSwgb3MuWF9PSyk6XG4gICAgICAgICAgICBwcmVwZW5kX3BhdGgoZGlyZWN0b3J5KVxuICAgICAgICAgICAgcmV0dXJuIHN0cihjYW5kaWRhdGUpXG4gICAgcmV0dXJuIE5vbmVcblxuXG5kZWYgaG9tZWJyZXdfc2NyaXB0X3N0ZGluKGVudik6XG4gICAgaWYgZW52LmdldCgnU1VET19BU0tQQVNTJyk6XG4gICAgICAgIHJldHVybiBOb25lXG4gICAgcmV0dXJuIG9wZW4oJy9kZXYvdHR5JywgJ3JiJylcblxuXG5kZWYgaW5zdGFsbF9ob21lYnJldygpOlxuICAgIGVudiA9IG9zLmVudmlyb24uY29weSgpXG4gICAgZW52LnBvcCgnTk9OSU5URVJBQ1RJVkUnLCBOb25lKVxuICAgIGVudi5wb3AoJ0NJJywgTm9uZSlcbiAgICBlbnZbJ0lOVEVSQUNUSVZFJ10gPSAnMSdcbiAgICBzdGF0dXMoJ0luc3RhbGxpbmcgSG9tZWJyZXcuIG1hY09TIG1heSBhc2sgZm9yIHlvdXIgcGFzc3dvcmQuLi4nKVxuICAgIHRyeTpcbiAgICAgICAgc2NyaXB0ID0gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoWydjdXJsJywgJy0tY29ubmVjdC10aW1lb3V0JywgJzE1JywgJy0tbWF4LXRpbWUnLCAnMTIwJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctZnNTTCcsIEJSRVdfSU5TVEFMTF0pXG4gICAgZXhjZXB0IChGaWxlTm90Rm91bmRFcnJvciwgc3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3IpIGFzIGVycm9yOlxuICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoXG4gICAgICAgICAgICAnQ291bGQgbm90IGRvd25sb2FkIEhvbWVicmV3LiBDaGVjayB0aGUgbmV0d29yayBhbmQgb3BlbiBEb3JpYW4gR3JheSBXb3JrZXIgYWdhaW4uJ1xuICAgICAgICApIGZyb20gZXJyb3JcbiAgICB3aXRoIHRlbXBmaWxlLlRlbXBvcmFyeURpcmVjdG9yeShwcmVmaXg9J2RnZS1ob21lYnJldy0nKSBhcyBkaXJlY3Rvcnk6XG4gICAgICAgIGluc3RhbGxlciA9IFBhdGgoZGlyZWN0b3J5KSAvICdpbnN0YWxsLnNoJ1xuICAgICAgICBpbnN0YWxsZXIud3JpdGVfYnl0ZXMoc2NyaXB0KVxuICAgICAgICBpbnN0YWxsZXIuY2htb2QoMG83MDApXG4gICAgICAgIGlmIGVudi5nZXQoJ1NVRE9fQVNLUEFTUycpOlxuICAgICAgICAgICAgd3JhcHBlciA9IFBhdGgoZGlyZWN0b3J5KSAvICdzdWRvJ1xuICAgICAgICAgICAgd3JhcHBlci53cml0ZV90ZXh0KCcjIS9iaW4vYmFzaFxcbmV4ZWMgL3Vzci9iaW4vc3VkbyAtQSBcIiRAXCJcXG4nKVxuICAgICAgICAgICAgd3JhcHBlci5jaG1vZCgwbzcwMClcbiAgICAgICAgICAgIGVudlsnUEFUSCddID0gZGlyZWN0b3J5ICsgJzonICsgZW52LmdldCgnUEFUSCcsICcnKVxuICAgICAgICBzdGF0dXMoJ0hvbWVicmV3IGluc3RhbGxlciBkb3dubG9hZGVkLiBTdGFydGluZyBpbnN0YWxsYXRpb24uLi4nKVxuICAgICAgICB0cnk6XG4gICAgICAgICAgICBzdGRpbiA9IGhvbWVicmV3X3NjcmlwdF9zdGRpbihlbnYpXG4gICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGVycm9yOlxuICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKFxuICAgICAgICAgICAgICAgICdIb21lYnJldyBuZWVkcyBhIHRlcm1pbmFsIHNvIG1hY09TIGNhbiBhc2sgZm9yIHlvdXIgcGFzc3dvcmQuIE9wZW4gVGVybWluYWwgYW5kIHJ1biB0aGlzIGluc3RhbGxlciBhZ2Fpbi4nXG4gICAgICAgICAgICApIGZyb20gZXJyb3JcbiAgICAgICAgdHJ5OlxuICAgICAgICAgICAgcHJvY2VzcyA9IHN1YnByb2Nlc3MuUG9wZW4oWycvYmluL2Jhc2gnLCBzdHIoaW5zdGFsbGVyKV0sIHN0ZGluPXN0ZGluLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwgc3RkZXJyPXN1YnByb2Nlc3MuU1RET1VULFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dD1UcnVlLCBidWZzaXplPTEsIGVudj1lbnYsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9uZXdfc2Vzc2lvbj1zdGRpbiBpcyBOb25lKVxuICAgICAgICBmaW5hbGx5OlxuICAgICAgICAgICAgaWYgc3RkaW46XG4gICAgICAgICAgICAgICAgc3RkaW4uY2xvc2UoKVxuICAgICAgICByZWFkZXIgPSB0aHJlYWRpbmcuVGhyZWFkKHRhcmdldD1yZWxheV9ob21lYnJld19vdXRwdXQsIGFyZ3M9KHByb2Nlc3Muc3Rkb3V0LCksIGRhZW1vbj1UcnVlKVxuICAgICAgICByZWFkZXIuc3RhcnQoKVxuICAgICAgICBkZWFkbGluZSA9IHRpbWUubW9ub3RvbmljKCkgKyBCUkVXX0lOU1RBTExfVElNRU9VVFxuICAgICAgICB0cnk6XG4gICAgICAgICAgICB3aGlsZSBwcm9jZXNzLnBvbGwoKSBpcyBOb25lOlxuICAgICAgICAgICAgICAgIHJlbWFpbmluZyA9IGRlYWRsaW5lIC0gdGltZS5tb25vdG9uaWMoKVxuICAgICAgICAgICAgICAgIGlmIHJlbWFpbmluZyA8PSAwOlxuICAgICAgICAgICAgICAgICAgICByYWlzZSBzdWJwcm9jZXNzLlRpbWVvdXRFeHBpcmVkKHByb2Nlc3MuYXJncywgQlJFV19JTlNUQUxMX1RJTUVPVVQpXG4gICAgICAgICAgICAgICAgdHJ5OlxuICAgICAgICAgICAgICAgICAgICBwcm9jZXNzLndhaXQodGltZW91dD1taW4oMTUsIHJlbWFpbmluZykpXG4gICAgICAgICAgICAgICAgZXhjZXB0IHN1YnByb2Nlc3MuVGltZW91dEV4cGlyZWQ6XG4gICAgICAgICAgICAgICAgICAgIHN0YXR1cygnSG9tZWJyZXcgaXMgc3RpbGwgaW5zdGFsbGluZy4gVGhpcyBtYXkgaW5jbHVkZSBBcHBsZSBDb21tYW5kIExpbmUgVG9vbHMgYW5kIHRha2Ugc2V2ZXJhbCBtaW51dGVzLi4uJylcbiAgICAgICAgZXhjZXB0IEJhc2VFeGNlcHRpb24gYXMgZXJyb3I6XG4gICAgICAgICAgICB0cnk6XG4gICAgICAgICAgICAgICAgaWYgc3RkaW4gaXMgTm9uZTpcbiAgICAgICAgICAgICAgICAgICAgb3Mua2lsbHBnKHByb2Nlc3MucGlkLCBzaWduYWwuU0lHVEVSTSlcbiAgICAgICAgICAgICAgICBlbHNlOlxuICAgICAgICAgICAgICAgICAgICBwcm9jZXNzLnRlcm1pbmF0ZSgpXG4gICAgICAgICAgICBleGNlcHQgT1NFcnJvcjpcbiAgICAgICAgICAgICAgICBwcm9jZXNzLnRlcm1pbmF0ZSgpXG4gICAgICAgICAgICB0cnk6XG4gICAgICAgICAgICAgICAgcHJvY2Vzcy53YWl0KHRpbWVvdXQ9NSlcbiAgICAgICAgICAgIGV4Y2VwdCBzdWJwcm9jZXNzLlRpbWVvdXRFeHBpcmVkOlxuICAgICAgICAgICAgICAgIHRyeTpcbiAgICAgICAgICAgICAgICAgICAgaWYgc3RkaW4gaXMgTm9uZTpcbiAgICAgICAgICAgICAgICAgICAgICAgIG9zLmtpbGxwZyhwcm9jZXNzLnBpZCwgc2lnbmFsLlNJR0tJTEwpXG4gICAgICAgICAgICAgICAgICAgIGVsc2U6XG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzLmtpbGwoKVxuICAgICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOlxuICAgICAgICAgICAgICAgICAgICBwcm9jZXNzLmtpbGwoKVxuICAgICAgICAgICAgICAgIHByb2Nlc3Mud2FpdCgpXG4gICAgICAgICAgICBpZiBpc2luc3RhbmNlKGVycm9yLCBzdWJwcm9jZXNzLlRpbWVvdXRFeHBpcmVkKTpcbiAgICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoXG4gICAgICAgICAgICAgICAgICAgICdIb21lYnJldyBkaWQgbm90IGZpbmlzaCB3aXRoaW4gMTAgbWludXRlcy4gQ2hlY2sgdGhlIHNldHVwIGxvZyBhbmQgeW91ciBNYWMgbmV0d29yaywgdGhlbiB0cnkgYWdhaW4uJ1xuICAgICAgICAgICAgICAgICkgZnJvbSBlcnJvclxuICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgcmVhZGVyLmpvaW4odGltZW91dD01KVxuICAgICAgICBpZiBwcm9jZXNzLnJldHVybmNvZGU6XG4gICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoXG4gICAgICAgICAgICAgICAgJ0NvdWxkIG5vdCBpbnN0YWxsIEhvbWVicmV3LiBDaGVjayB0aGUgc2V0dXAgbG9nIGFib3ZlLCB0aGVuIG9wZW4gRG9yaWFuIEdyYXkgV29ya2VyIGFnYWluLidcbiAgICAgICAgICAgIClcbiAgICBpZiBub3QgZmluZF9icmV3KCk6XG4gICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcihcbiAgICAgICAgICAgICdIb21lYnJldyBmaW5pc2hlZCBidXQgYnJldyB3YXMgbm90IGZvdW5kLiBPcGVuIERvcmlhbiBHcmF5IFdvcmtlciBhZ2Fpbi4nXG4gICAgICAgIClcbiAgICBhZGRfbWFjX3ByZWZpeGVzKClcblxuXG5kZWYgZW5zdXJlX2JyZXcoKTpcbiAgICBicmV3ID0gZmluZF9icmV3KClcbiAgICBpZiBicmV3OlxuICAgICAgICByZXR1cm4gYnJld1xuICAgIGluc3RhbGxfaG9tZWJyZXcoKVxuICAgIGJyZXcgPSBmaW5kX2JyZXcoKVxuICAgIGlmIG5vdCBicmV3OlxuICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ0hvbWVicmV3IGluc3RhbGxlZCBidXQgYnJldyBpcyBub3Qgb24gUEFUSC4gT3BlbiBEb3JpYW4gR3JheSBXb3JrZXIgYWdhaW4uJylcbiAgICByZXR1cm4gYnJld1xuXG5cbmRlZiBweXRob25fdXNhYmxlKHBhdGgpOlxuICAgIGlmIG5vdCBwYXRoIG9yIG5vdCBvcy5hY2Nlc3MocGF0aCwgb3MuWF9PSyk6XG4gICAgICAgIHJldHVybiBGYWxzZVxuICAgIHJlc3VsdCA9IHN1YnByb2Nlc3MucnVuKFxuICAgICAgICBbcGF0aCwgJy1jJywgJ2ltcG9ydCBzeXM7IGFzc2VydCBzeXMudmVyc2lvbl9pbmZvID49ICgzLCAxMSknXSxcbiAgICAgICAgY2hlY2s9RmFsc2UsIHN0ZG91dD1zdWJwcm9jZXNzLkRFVk5VTEwsIHN0ZGVycj1zdWJwcm9jZXNzLkRFVk5VTEwsXG4gICAgKVxuICAgIHJldHVybiByZXN1bHQucmV0dXJuY29kZSA9PSAwXG5cblxuZGVmIGZpbmRfcHl0aG9uKCk6XG4gICAgYWRkX21hY19wcmVmaXhlcygpXG4gICAgZm91bmQgPSBzaHV0aWwud2hpY2goJ3B5dGhvbjMnKVxuICAgIGlmIHB5dGhvbl91c2FibGUoZm91bmQpOlxuICAgICAgICByZXR1cm4gZm91bmRcbiAgICBmb3IgZGlyZWN0b3J5IGluICgqTUFDX0JJTiwgJy91c3IvYmluJyk6XG4gICAgICAgIGNhbmRpZGF0ZSA9IHN0cihQYXRoKGRpcmVjdG9yeSkgLyAncHl0aG9uMycpXG4gICAgICAgIGlmIHB5dGhvbl91c2FibGUoY2FuZGlkYXRlKTpcbiAgICAgICAgICAgIHJldHVybiBjYW5kaWRhdGVcbiAgICByZXR1cm4gTm9uZVxuXG5cbmRlZiBlbnN1cmVfcHl0aG9uKCk6XG4gICAgZm91bmQgPSBmaW5kX3B5dGhvbigpXG4gICAgaWYgZm91bmQ6XG4gICAgICAgIHJldHVybiBmb3VuZFxuICAgIGJyZXcgPSBlbnN1cmVfYnJldygpXG4gICAgcHJpbnQoJ0luc3RhbGxpbmcgUHl0aG9uIDMuIFRoaXMgbWF5IHRha2UgYSBmZXcgbWludXRlcy4uLicsIGZsdXNoPVRydWUpXG4gICAgcnVuKFticmV3LCAnaW5zdGFsbCcsICdweXRob24nXSlcbiAgICBhZGRfbWFjX3ByZWZpeGVzKClcbiAgICBmb3VuZCA9IGZpbmRfcHl0aG9uKClcbiAgICBpZiBub3QgZm91bmQ6XG4gICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcihcbiAgICAgICAgICAgICdQeXRob24gMy4xMSBvciBuZXdlciBpcyByZXF1aXJlZCBhbmQgY291bGQgbm90IGJlIGluc3RhbGxlZC4gQ2hlY2sgdGhlIG5ldHdvcmsgYW5kIG9wZW4gRG9yaWFuIEdyYXkgV29ya2VyIGFnYWluLidcbiAgICAgICAgKVxuICAgIHJldHVybiBmb3VuZFxuXG5cbmRlZiBlbnN1cmVfbGltYWN0bCgpOlxuICAgIGFkZF9tYWNfcHJlZml4ZXMoKVxuICAgIGlmIHNodXRpbC53aGljaCgnbGltYWN0bCcpOlxuICAgICAgICByZXR1cm5cbiAgICBicmV3ID0gZW5zdXJlX2JyZXcoKVxuICAgIHN0YXR1cygnSW5zdGFsbGluZyBMaW1hIChMaW51eCB2aXJ0dWFsIG1hY2hpbmUpLiBUaGlzIG1heSB0YWtlIGEgZmV3IG1pbnV0ZXMuLi4nKVxuICAgIHJ1bihbYnJldywgJ2luc3RhbGwnLCAnbGltYSddKVxuICAgIGFkZF9tYWNfcHJlZml4ZXMoKVxuICAgIGlmIG5vdCBzaHV0aWwud2hpY2goJ2xpbWFjdGwnKTpcbiAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCdMaW1hIGluc3RhbGxlZCBidXQgbGltYWN0bCBpcyBub3Qgb24gUEFUSC4gT3BlbiBEb3JpYW4gR3JheSBXb3JrZXIgYWdhaW4uJylcblxuXG5kZWYgc3RhcnRfdm0obWVtb3J5X2dpYiwgY3B1cyk6XG4gICAgaWYgSU5TVEFOQ0UgaW4gaW5zdGFuY2VfbmFtZXMoKTpcbiAgICAgICAgc3RhdHVzKCdTdGFydGluZyB0aGUgTGludXggd29ya2VyIHZpcnR1YWwgbWFjaGluZS4uLicpXG4gICAgICAgIHJ1bihbJ2xpbWFjdGwnLCAnc3RhcnQnLCAnLS10dHk9ZmFsc2UnLCBJTlNUQU5DRV0pXG4gICAgICAgIHJldHVyblxuICAgIHN0YXR1cygnQ3JlYXRpbmcgYSBMaW51eCB3b3JrZXIgdmlydHVhbCBtYWNoaW5lLiBUaGUgZmlyc3QgZG93bmxvYWQgY2FuIHRha2Ugc2V2ZXJhbCBtaW51dGVzLi4uJylcbiAgICBydW4oWydsaW1hY3RsJywgJ3N0YXJ0JywgJy0tdHR5PWZhbHNlJywgJy0tbmFtZT0nICsgSU5TVEFOQ0UsICctLXBsYWluJyxcbiAgICAgICAgICctLWNwdXM9JyArIHN0cihjcHVzKSwgJy0tbWVtb3J5PScgKyBzdHIobWVtb3J5X2dpYiksIFRFTVBMQVRFXSlcbiAgICBzdXBwb3J0ID0gUGF0aC5ob21lKCkgLyAnTGlicmFyeScgLyAnQXBwbGljYXRpb24gU3VwcG9ydCcgLyAnZGdlLXdvcmtlcidcbiAgICBzdXBwb3J0Lm1rZGlyKHBhcmVudHM9VHJ1ZSwgZXhpc3Rfb2s9VHJ1ZSlcbiAgICAoc3VwcG9ydCAvICdvd25lZC12bS5qc29uJykud3JpdGVfdGV4dChqc29uLmR1bXBzKHsnbmFtZSc6IElOU1RBTkNFfSkpXG5cblxuZGVmIHhtbF90ZXh0KHZhbHVlKTpcbiAgICByZXR1cm4gc3RyKHZhbHVlKS5yZXBsYWNlKCcmJywgJyZhbXA7JykucmVwbGFjZSgnPCcsICcmbHQ7JykucmVwbGFjZSgnPicsICcmZ3Q7JylcblxuXG5kZWYgaW5zdGFsbGVyX3NvdXJjZSgpOlxuICAgIHJldHVybiBQYXRoKF9fZmlsZV9fKS5yZXNvbHZlKCkucGFyZW50XG5cblxuZGVmIGNvcHlfZ3Vlc3RfZmlsZShzb3VyY2UsIG5hbWUpOlxuICAgIHBhdGggPSBzb3VyY2UgLyBuYW1lXG4gICAgaWYgbm90IHBhdGguZXhpc3RzKCk6XG4gICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignTWFjIHdvcmtlciBmaWxlcyBhcmUgbWlzc2luZzogJyArIG5hbWUpXG4gICAgd2l0aCBwYXRoLm9wZW4oJ3JiJykgYXMgaGFuZGxlOlxuICAgICAgICBydW4oWydsaW1hY3RsJywgJ3NoZWxsJywgSU5TVEFOQ0UsICdzdWRvJywgJ3RlZScsIEdVRVNUX0RJUiArICcvJyArIG5hbWVdLFxuICAgICAgICAgICAgc3RkaW49aGFuZGxlLCBzdGRvdXQ9c3VicHJvY2Vzcy5ERVZOVUxMKVxuXG5cbmRlZiBpbnN0YWxsX2d1ZXN0X2Zyb21fYXBwKHNvdXJjZSk6XG4gICAgcnVuKFsnbGltYWN0bCcsICdzaGVsbCcsIElOU1RBTkNFLCAnc3VkbycsICdybScsICctcmYnLCBHVUVTVF9ESVJdKVxuICAgIHJ1bihbJ2xpbWFjdGwnLCAnc2hlbGwnLCBJTlNUQU5DRSwgJ3N1ZG8nLCAnbWtkaXInLCAnLW0nLCAnNzAwJywgJy1wJywgR1VFU1RfRElSXSlcbiAgICBmb3IgbmFtZSBpbiAoKkdVRVNUX0lOU1RBTExfRklMRVMsICdpbnZpdGF0aW9uLmpzb24nKTpcbiAgICAgICAgY29weV9ndWVzdF9maWxlKHNvdXJjZSwgbmFtZSlcbiAgICBydW4oWydsaW1hY3RsJywgJ3NoZWxsJywgSU5TVEFOQ0UsICdzdWRvJywgJ3B5dGhvbjMnLCAnLXUnLCBHVUVTVF9ESVIgKyAnL2luc3RhbGwucHknXSlcblxuXG5kZWYgcnVuX2xpbnV4X2luc3RhbGxlcihzY3JpcHQpOlxuICAgIHN0YXR1cygnSW5zdGFsbGluZyB0aGUgd29ya2VyIGluc2lkZSB0aGUgTGludXggdmlydHVhbCBtYWNoaW5lLi4uJylcbiAgICBzb3VyY2UgPSBpbnN0YWxsZXJfc291cmNlKClcbiAgICBpZiAoc291cmNlIC8gJ2ludml0YXRpb24uanNvbicpLmV4aXN0cygpOlxuICAgICAgICBpbnN0YWxsX2d1ZXN0X2Zyb21fYXBwKHNvdXJjZSlcbiAgICAgICAgcmV0dXJuXG4gICAgd2l0aCBQYXRoKHNjcmlwdCkub3BlbigncmInKSBhcyBoYW5kbGU6XG4gICAgICAgIHJ1bihbJ2xpbWFjdGwnLCAnc2hlbGwnLCBJTlNUQU5DRSwgJ3N1ZG8nLCAndGVlJywgJy90bXAvc2V0dXAtd29ya2VyLnNoJ10sXG4gICAgICAgICAgICBzdGRpbj1oYW5kbGUsIHN0ZG91dD1zdWJwcm9jZXNzLkRFVk5VTEwpXG4gICAgcnVuKFsnbGltYWN0bCcsICdzaGVsbCcsIElOU1RBTkNFLCAnc3VkbycsICdlbnYnLCAnREdFX0dVRVNUX0lOU1RBTEw9MScsXG4gICAgICAgICAnYmFzaCcsICcvdG1wL3NldHVwLXdvcmtlci5zaCddKVxuXG5cbmRlZiBpbnN0YWxsX2hvc3RfcHJveHkocHl0aG9uPU5vbmUpOlxuICAgIHN0YXR1cygnU3RhcnRpbmcgYSBNYWMgbmV0d29yayBoZWxwZXIgc28gcGhvdG8gc3RvcmFnZSB1c2VzIHRoaXMgY29tcHV0ZXLigJlzIG5ldHdvcmsuLi4nKVxuICAgIHN1cHBvcnQgPSBQYXRoLmhvbWUoKSAvICdMaWJyYXJ5JyAvICdBcHBsaWNhdGlvbiBTdXBwb3J0JyAvICdkZ2Utd29ya2VyJ1xuICAgIHN1cHBvcnQubWtkaXIocGFyZW50cz1UcnVlLCBleGlzdF9vaz1UcnVlKVxuICAgIHRva2VuX3BhdGggPSBzdXBwb3J0IC8gJ2hlbHBlci10b2tlbidcbiAgICBpZiBub3QgdG9rZW5fcGF0aC5leGlzdHMoKTpcbiAgICAgICAgdG9rZW5fcGF0aC53cml0ZV90ZXh0KHNlY3JldHMudG9rZW5faGV4KDMyKSlcbiAgICAgICAgdG9rZW5fcGF0aC5jaG1vZCgwbzYwMClcbiAgICBkZXN0aW5hdGlvbiA9IHN1cHBvcnQgLyAnbWFjb3NfcjJfcHJveHkucHknXG4gICAgc2h1dGlsLmNvcHlmaWxlKFBhdGgoX19maWxlX18pLnJlc29sdmUoKS5wYXJlbnQgLyAnbWFjb3NfcjJfcHJveHkucHknLCBkZXN0aW5hdGlvbilcbiAgICBweXRob24gPSB4bWxfdGV4dChweXRob24gb3IgZmluZF9weXRob24oKSBvciBzaHV0aWwud2hpY2goJ3B5dGhvbjMnKSBvciAnL3Vzci9iaW4vcHl0aG9uMycpXG4gICAgYWdlbnRzID0gUGF0aC5ob21lKCkgLyAnTGlicmFyeScgLyAnTGF1bmNoQWdlbnRzJ1xuICAgIGFnZW50cy5ta2RpcihwYXJlbnRzPVRydWUsIGV4aXN0X29rPVRydWUpXG4gICAgbG9nID0gUGF0aC5ob21lKCkgLyAnTGlicmFyeScgLyAnTG9ncycgLyAnZGdlLXN0b3JhZ2UtcHJveHkubG9nJ1xuICAgIGxvZy5wYXJlbnQubWtkaXIocGFyZW50cz1UcnVlLCBleGlzdF9vaz1UcnVlKVxuICAgIHBsaXN0ID0gYWdlbnRzIC8gKFBST1hZX0xBQkVMICsgJy5wbGlzdCcpXG4gICAgcGxpc3Qud3JpdGVfdGV4dCgnJyc8P3htbCB2ZXJzaW9uPVwiMS4wXCIgZW5jb2Rpbmc9XCJVVEYtOFwiPz5cbjwhRE9DVFlQRSBwbGlzdCBQVUJMSUMgXCItLy9BcHBsZS8vRFREIFBMSVNUIDEuMC8vRU5cIiBcImh0dHA6Ly93d3cuYXBwbGUuY29tL0RURHMvUHJvcGVydHlMaXN0LTEuMC5kdGRcIj5cbjxwbGlzdCB2ZXJzaW9uPVwiMS4wXCI+XG48ZGljdD5cbiAgPGtleT5MYWJlbDwva2V5PlxuICA8c3RyaW5nPicnJyArIFBST1hZX0xBQkVMICsgJycnPC9zdHJpbmc+XG4gIDxrZXk+UHJvZ3JhbUFyZ3VtZW50czwva2V5PlxuICA8YXJyYXk+XG4gICAgPHN0cmluZz4nJycgKyBweXRob24gKyAnJyc8L3N0cmluZz5cbiAgICA8c3RyaW5nPicnJyArIHhtbF90ZXh0KGRlc3RpbmF0aW9uKSArICcnJzwvc3RyaW5nPlxuICA8L2FycmF5PlxuICA8a2V5PlJ1bkF0TG9hZDwva2V5PlxuICA8dHJ1ZS8+XG4gIDxrZXk+S2VlcEFsaXZlPC9rZXk+XG4gIDx0cnVlLz5cbiAgPGtleT5TdGFuZGFyZE91dFBhdGg8L2tleT5cbiAgPHN0cmluZz4nJycgKyB4bWxfdGV4dChsb2cpICsgJycnPC9zdHJpbmc+XG4gIDxrZXk+U3RhbmRhcmRFcnJvclBhdGg8L2tleT5cbiAgPHN0cmluZz4nJycgKyB4bWxfdGV4dChsb2cpICsgJycnPC9zdHJpbmc+XG48L2RpY3Q+XG48L3BsaXN0PlxuJycnKVxuICAgIHN1YnByb2Nlc3MucnVuKFsnbGF1bmNoY3RsJywgJ3VubG9hZCcsIHN0cihwbGlzdCldLCBjaGVjaz1GYWxzZSwgc3Rkb3V0PXN1YnByb2Nlc3MuREVWTlVMTCwgc3RkZXJyPXN1YnByb2Nlc3MuREVWTlVMTClcbiAgICBydW4oWydsYXVuY2hjdGwnLCAnbG9hZCcsICctdycsIHN0cihwbGlzdCldKVxuXG5cbmRlZiBjb25maWd1cmVfZ3Vlc3RfcHJveHkoKTpcbiAgICB0b2tlbl9wYXRoID0gUGF0aC5ob21lKCkgLyAnTGlicmFyeScgLyAnQXBwbGljYXRpb24gU3VwcG9ydCcgLyAnZGdlLXdvcmtlcicgLyAnaGVscGVyLXRva2VuJ1xuICAgIGVudiA9ICdER0VfU1RPUkFHRV9QUk9YWT1odHRwOi8vaG9zdC5saW1hLmludGVybmFsOiVzXFxuJyAlIFBST1hZX1BPUlRcbiAgICBpZiB0b2tlbl9wYXRoLmV4aXN0cygpOlxuICAgICAgICBlbnYgKz0gJ0RHRV9IRUxQRVJfVE9LRU49JyArIHRva2VuX3BhdGgucmVhZF90ZXh0KCkuc3RyaXAoKSArICdcXG4nXG4gICAgcnVuKFsnbGltYWN0bCcsICdzaGVsbCcsIElOU1RBTkNFLCAnc3VkbycsICd0ZWUnLCAnL29wdC9kZ2Utd29ya2VyL3Byb3h5LmVudiddLFxuICAgICAgICBpbnB1dD1lbnYuZW5jb2RlKCksIHN0ZG91dD1zdWJwcm9jZXNzLkRFVk5VTEwpXG4gICAgcnVuKFsnbGltYWN0bCcsICdzaGVsbCcsIElOU1RBTkNFLCAnc3VkbycsICdjaG1vZCcsICc2MDAnLCAnL29wdC9kZ2Utd29ya2VyL3Byb3h5LmVudiddKVxuICAgIHJ1bihbJ2xpbWFjdGwnLCAnc2hlbGwnLCBJTlNUQU5DRSwgJ3N1ZG8nLCAnc3lzdGVtY3RsJywgJ3Jlc3RhcnQnLCAnZGdlLXdvcmtlci5zZXJ2aWNlJ10pXG5cblxuZGVmIG1haW4oc2NyaXB0KTpcbiAgICBnbG9iYWwgUkVQT1JURVJcbiAgICBpZiBvcy5nZXRldWlkKCkgPT0gMDpcbiAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCdEbyBub3QgcnVuIHRoaXMgaW5zdGFsbGVyIHdpdGggc3VkbyBvbiBhIE1hYy4gUnVuIGl0IGFzIHlvdXJzZWxmLicpXG4gICAgaW52aXRhdGlvbl9maWxlID0gaW5zdGFsbGVyX3NvdXJjZSgpIC8gJ2ludml0YXRpb24uanNvbidcbiAgICBpZiBpbnZpdGF0aW9uX2ZpbGUuZXhpc3RzKCkgYW5kIG9zLmVudmlyb24uZ2V0KCdER0VfU0VUVVBfTE9HX1NVUEVSVklTRUQnKSAhPSAnMSc6XG4gICAgICAgIGludml0YXRpb24gPSBqc29uLmxvYWRzKGludml0YXRpb25fZmlsZS5yZWFkX3RleHQoKSlcbiAgICAgICAgUkVQT1JURVIgPSBTZXR1cExvZ1JlcG9ydGVyKGludml0YXRpb25bJ29yaWdpbiddLCBpbnZpdGF0aW9uWyd0b2tlbiddKVxuICAgIHRyeTpcbiAgICAgICAgaW5zdGFsbChzY3JpcHQpXG4gICAgZmluYWxseTpcbiAgICAgICAgaWYgUkVQT1JURVI6XG4gICAgICAgICAgICBSRVBPUlRFUi5jbG9zZSgpXG4gICAgICAgICAgICBSRVBPUlRFUiA9IE5vbmVcblxuXG5kZWYgaW5zdGFsbChzY3JpcHQpOlxuICAgIGFkZF9tYWNfcHJlZml4ZXMoKVxuICAgIHByaW50KCdUaGlzIE1hYyBydW5zIHRoZSB3b3JrZXIgaW5zaWRlIGEgTGludXggdmlydHVhbCBtYWNoaW5lIHNvIHRhc2sgaXNvbGF0aW9uIG1hdGNoZXMgYSBMaW51eCBob3N0LicsXG4gICAgICAgICAgZmx1c2g9VHJ1ZSlcbiAgICBweXRob24gPSBlbnN1cmVfcHl0aG9uKClcbiAgICBlbnN1cmVfbGltYWN0bCgpXG4gICAgbWVtb3J5X2dpYiwgY3B1cyA9IHZtX3NpemUoKmhvc3RfcmVzb3VyY2VzKCkpXG4gICAgc3RhcnRfdm0obWVtb3J5X2dpYiwgY3B1cylcbiAgICBpbnN0YWxsX2hvc3RfcHJveHkocHl0aG9uKVxuICAgIHJ1bl9saW51eF9pbnN0YWxsZXIoc2NyaXB0KVxuICAgIGNvbmZpZ3VyZV9ndWVzdF9wcm94eSgpXG5cblxuaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzpcbiAgICB0cnk6XG4gICAgICAgIG1haW4oc3lzLmFyZ3ZbMV0pXG4gICAgZXhjZXB0IHN1YnByb2Nlc3MuQ2FsbGVkUHJvY2Vzc0Vycm9yIGFzIGVycm9yOlxuICAgICAgICByYWlzZSBTeXN0ZW1FeGl0KCdMaW51eCB3b3JrZXIgc2V0dXAgZmFpbGVkOiAnICsgJyAnLmpvaW4oc3RyKGl0ZW0pIGZvciBpdGVtIGluIGVycm9yLmNtZCkpIGZyb20gTm9uZVxuICAgIGV4Y2VwdCBSdW50aW1lRXJyb3IgYXMgZXJyb3I6XG4gICAgICAgIHJhaXNlIFN5c3RlbUV4aXQoc3RyKGVycm9yKSkgZnJvbSBOb25lXG4iLCJtYWNvc19yMl9wcm94eS5weSI6IiMhL3Vzci9iaW4vZW52IHB5dGhvbjNcblwiXCJcIkhvc3QgSFRUUCBoZWxwZXI6IExpbWEgZ3Vlc3RzIHNlbmQgcGxhaW4gSFRUUDsgdGhlIE1hYyBkb2VzIFIyIFRMUy5cblxuU2VjdXJlIFRyYW5zcG9ydCAvIGxhcmdlIFRMUyByZWNvcmRzIGZhaWwgb24gdGhpcyBXaS1GaSBwYXRoIHRvIENsb3VkZmxhcmVcbk9SRC4gSG9tZWJyZXcgT3BlblNTTCB3aXRoIG1heF9zZW5kX2ZyYWdtZW50PTQwOTYgY29tcGxldGVzIDIwIE1pQiBQVVRzLlxuTGlzdGVucyBvbiBldmVyeSBpbnRlcmZhY2UgYmVjYXVzZSB0aGUgZ3Vlc3QgcmVhY2hlcyB0aGUgaG9zdCBhc1xuaG9zdC5saW1hLmludGVybmFsLiBHRVQgL3VwbGluayByZXBvcnRzIGFuIHVucGFjZWQgQ2xvdWRmbGFyZSBQVVQgcHJvYmVcbm9uIHRoZSBob3N0IE5JQy4gT25seSBHRVQvUFVUL0hFQUQgdG8gKi5yMi5jbG91ZGZsYXJlc3RvcmFnZS5jb20gYXJlXG5hbGxvd2VkIGFzIHN0b3JhZ2UuIFRoZSB3b3JrZXIgdG9rZW4gbmV2ZXIgbGVhdmVzIHRoZSBWTS5cblwiXCJcIlxuaW1wb3J0IGh0dHAuY2xpZW50XG5pbXBvcnQgaG1hY1xuZnJvbSBwYXRobGliIGltcG9ydCBQYXRoXG5pbXBvcnQgaXBhZGRyZXNzXG5pbXBvcnQganNvblxuaW1wb3J0IG9zXG5pbXBvcnQgcmVcbmltcG9ydCBzb2NrZXRcbmltcG9ydCBzc2xcbmltcG9ydCBzdWJwcm9jZXNzXG5pbXBvcnQgc3lzXG5pbXBvcnQgdGVtcGZpbGVcbmltcG9ydCB0aHJlYWRpbmdcbmltcG9ydCB0aW1lXG5pbXBvcnQgdXJsbGliLnBhcnNlXG5cbkxJU1RFTl9IT1NUID0gJzAuMC4wLjAnXG5MSVNURU5fUE9SVCA9IDE4Nzg5XG5BTExPV0VEX1NVRkZJWCA9ICcucjIuY2xvdWRmbGFyZXN0b3JhZ2UuY29tJ1xuQlVGRkVSID0gNjU1MzZcbkhFQURFUl9MSU1JVCA9IDY1NTM2XG5NQVhfUFVUID0gNTEyICogMTAyNCAqIDEwMjRcbkNVUkwgPSAnL3Vzci9iaW4vY3VybCdcblRMU19TRU5EX0ZSQUdNRU5UID0gMjA0OFxuVExTX1NFTkRfUEFDRSA9IDAuMDAyXG5PUklHSU4gPSB0aHJlYWRpbmcuTG9jaygpXG5GT1JXQVJEX1NLSVAgPSB7J2Nvbm5lY3Rpb24nLCAna2VlcC1hbGl2ZScsICdwcm94eS1hdXRoZW50aWNhdGUnLCAncHJveHktYXV0aG9yaXphdGlvbicsXG4gICAgICAgICAgICAgICAgICd0ZScsICd0cmFpbGVycycsICd0cmFuc2Zlci1lbmNvZGluZycsICd1cGdyYWRlJywgJ2hvc3QnLCAneC1kZ2UtdGFyZ2V0JyxcbiAgICAgICAgICAgICAgICAgJ2V4cGVjdCcsICdjb250ZW50LWxlbmd0aCd9XG5QUk9CRV9IT1NUID0gJ3NwZWVkLmNsb3VkZmxhcmUuY29tJ1xuUFJPQkVfUEFUSCA9ICcvX191cCdcblBST0JFX0JZVEVTID0gMiAqIDEwMjQgKiAxMDI0XG5QUk9CRV9USU1FT1VUID0gMTBcblBST0JFX0lOVEVSVkFMID0gMzAwXG5VUExJTktfUkVBRFkgPSB0aHJlYWRpbmcuRXZlbnQoKVxuVVBMSU5LX0xPQ0sgPSB0aHJlYWRpbmcuTG9jaygpXG5VUExJTksgPSB7J29rJzogTm9uZSwgJ2Jwcyc6IDAsICdwcm9iZWRfYXQnOiAwLjAsICdpZmFjZSc6IE5vbmUsICd3aWZpJzogRmFsc2V9XG5IT1NUX0xPQ0sgPSB0aHJlYWRpbmcuTG9jaygpXG5IT1NUX0lERU5USVRZID0ge31cbkRFU0tUT1BfTUFDID0gKCdtYWMgbWluaScsICdtYWMgc3R1ZGlvJywgJ21hYyBwcm8nLCAnaW1hYycpXG5cblxuZGVmIGNvbW1hbmRfb3V0cHV0KGFyZ3MpOlxuICAgIHRyeTpcbiAgICAgICAgcmV0dXJuIHN1YnByb2Nlc3MucnVuKGFyZ3MsIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsIHN0ZGVycj1zdWJwcm9jZXNzLkRFVk5VTEwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXQ9NSwgY2hlY2s9RmFsc2UpLnN0ZG91dC5kZWNvZGUoZXJyb3JzPSdyZXBsYWNlJylcbiAgICBleGNlcHQgKE9TRXJyb3IsIHN1YnByb2Nlc3MuU3VicHJvY2Vzc0Vycm9yKTpcbiAgICAgICAgcmV0dXJuICcnXG5cblxuZGVmIHBhcnNlX3JvdXRlX2ludGVyZmFjZSh0ZXh0KTpcbiAgICBmb3IgbGluZSBpbiB0ZXh0LnNwbGl0bGluZXMoKTpcbiAgICAgICAgc3RyaXBwZWQgPSBsaW5lLnN0cmlwKClcbiAgICAgICAgaWYgc3RyaXBwZWQuc3RhcnRzd2l0aCgnaW50ZXJmYWNlOicpOlxuICAgICAgICAgICAgcmV0dXJuIHN0cmlwcGVkLnNwbGl0KCc6JywgMSlbMV0uc3RyaXAoKSBvciBOb25lXG4gICAgcmV0dXJuIE5vbmVcblxuXG5kZWYgcGFyc2Vfd2lmaV9kZXZpY2VzKHRleHQpOlxuICAgIGRldmljZXMgPSBzZXQoKVxuICAgIHBvcnQgPSAnJ1xuICAgIGZvciBsaW5lIGluIHRleHQuc3BsaXRsaW5lcygpOlxuICAgICAgICBpZiBsaW5lLnN0YXJ0c3dpdGgoJ0hhcmR3YXJlIFBvcnQ6Jyk6XG4gICAgICAgICAgICBwb3J0ID0gbGluZS5zcGxpdCgnOicsIDEpWzFdLnN0cmlwKCkubG93ZXIoKVxuICAgICAgICBlbGlmIGxpbmUuc3RhcnRzd2l0aCgnRGV2aWNlOicpIGFuZCBwb3J0OlxuICAgICAgICAgICAgaWYgJ3dpLWZpJyBpbiBwb3J0IG9yIHBvcnQgaW4gKCd3aWZpJywgJ2FpcnBvcnQnLCAnd2xhbicpOlxuICAgICAgICAgICAgICAgIGRldmljZXMuYWRkKGxpbmUuc3BsaXQoJzonLCAxKVsxXS5zdHJpcCgpKVxuICAgICAgICAgICAgcG9ydCA9ICcnXG4gICAgcmV0dXJuIGRldmljZXNcblxuXG5kZWYgd2lmaV9kZWZhdWx0X3JvdXRlKCk6XG4gICAgaWZhY2UsIHdpZmkgPSBjdXJyZW50X3BhdGgoKVxuICAgIHJldHVybiB3aWZpXG5cblxuZGVmIGN1cnJlbnRfcGF0aCgpOlxuICAgIGlmYWNlID0gcGFyc2Vfcm91dGVfaW50ZXJmYWNlKGNvbW1hbmRfb3V0cHV0KFsnL3NiaW4vcm91dGUnLCAnLW4nLCAnZ2V0JywgJ2RlZmF1bHQnXSkpXG4gICAgd2lmaSA9IGJvb2woaWZhY2UpIGFuZCBpZmFjZSBpbiBwYXJzZV93aWZpX2RldmljZXMoY29tbWFuZF9vdXRwdXQoWycvdXNyL3NiaW4vbmV0d29ya3NldHVwJywgJy1saXN0YWxsaGFyZHdhcmVwb3J0cyddKSlcbiAgICByZXR1cm4gaWZhY2UsIHdpZmlcblxuXG5kZWYgcGFyc2VfaGFyZHdhcmVfcHJvZmlsZSh0ZXh0KTpcbiAgICBuYW1lLCBpZGVudGlmaWVyID0gTm9uZSwgTm9uZVxuICAgIGZvciBsaW5lIGluIHRleHQuc3BsaXRsaW5lcygpOlxuICAgICAgICBzdHJpcHBlZCA9IGxpbmUuc3RyaXAoKVxuICAgICAgICBpZiBzdHJpcHBlZC5zdGFydHN3aXRoKCdNb2RlbCBOYW1lOicpOlxuICAgICAgICAgICAgbmFtZSA9IHN0cmlwcGVkLnNwbGl0KCc6JywgMSlbMV0uc3RyaXAoKSBvciBOb25lXG4gICAgICAgIGVsaWYgc3RyaXBwZWQuc3RhcnRzd2l0aCgnTW9kZWwgSWRlbnRpZmllcjonKTpcbiAgICAgICAgICAgIGlkZW50aWZpZXIgPSBzdHJpcHBlZC5zcGxpdCgnOicsIDEpWzFdLnN0cmlwKCkgb3IgTm9uZVxuICAgIHJldHVybiBuYW1lLCBpZGVudGlmaWVyXG5cblxuZGVmIGRlc2t0b3BfbWFjKG5hbWUpOlxuICAgIGxvd2VyZWQgPSAobmFtZSBvciAnJykubG93ZXIoKVxuICAgIHJldHVybiBhbnkodG9rZW4gaW4gbG93ZXJlZCBmb3IgdG9rZW4gaW4gREVTS1RPUF9NQUMpXG5cblxuZGVmIHBhcnNlX3Btc2V0X2JhdHQodGV4dCk6XG4gICAgYWMgPSBOb25lXG4gICAgaWYgJ0FDIFBvd2VyJyBpbiB0ZXh0OlxuICAgICAgICBhYyA9IFRydWVcbiAgICBlbGlmICdCYXR0ZXJ5IFBvd2VyJyBpbiB0ZXh0OlxuICAgICAgICBhYyA9IEZhbHNlXG4gICAgcHJlc2VudCA9ICdJbnRlcm5hbEJhdHRlcnknIGluIHRleHRcbiAgICBwZXJjZW50ID0gTm9uZVxuICAgIHN0YXR1cyA9IE5vbmVcbiAgICBmb3IgcGFydCBpbiB0ZXh0LnJlcGxhY2UoJ1xcdCcsICcgJykuc3BsaXQoKTpcbiAgICAgICAgaWYgcGFydC5lbmRzd2l0aCgnJTsnKSBvciBwYXJ0LmVuZHN3aXRoKCclJyk6XG4gICAgICAgICAgICBkaWdpdHMgPSBwYXJ0LnN0cmlwKCclOycpXG4gICAgICAgICAgICBpZiBkaWdpdHMuaXNkaWdpdCgpOlxuICAgICAgICAgICAgICAgIHBlcmNlbnQgPSBpbnQoZGlnaXRzKVxuICAgICAgICBsb3dlcmVkID0gcGFydC5zdHJpcCgnOycpLmxvd2VyKClcbiAgICAgICAgaWYgbG93ZXJlZCBpbiAoJ2NoYXJnaW5nJywgJ2Rpc2NoYXJnaW5nJywgJ2NoYXJnZWQnLCAnZmluaXNoaW5nIGNoYXJnZScpOlxuICAgICAgICAgICAgc3RhdHVzID0gbG93ZXJlZC5jYXBpdGFsaXplKCkgaWYgbG93ZXJlZCAhPSAnZmluaXNoaW5nIGNoYXJnZScgZWxzZSAnQ2hhcmdpbmcnXG4gICAgcmV0dXJuIHsnYWNfY29ubmVjdGVkJzogYWMsICdiYXR0ZXJ5X3ByZXNlbnQnOiBwcmVzZW50LCAnYmF0dGVyeV9wZXJjZW50JzogcGVyY2VudCxcbiAgICAgICAgICAgICdiYXR0ZXJ5X3N0YXR1cyc6IHN0YXR1c31cblxuXG5kZWYgaG9zdF9pZGVudGl0eSgpOlxuICAgIHdpdGggSE9TVF9MT0NLOlxuICAgICAgICBpZiBIT1NUX0lERU5USVRZLmdldCgnaGFyZHdhcmVfbW9kZWwnKTpcbiAgICAgICAgICAgIHJldHVybiBkaWN0KEhPU1RfSURFTlRJVFkpXG4gICAgbmFtZSwgaWRlbnRpZmllciA9IHBhcnNlX2hhcmR3YXJlX3Byb2ZpbGUoY29tbWFuZF9vdXRwdXQoWycvdXNyL3NiaW4vc3lzdGVtX3Byb2ZpbGVyJywgJ1NQSGFyZHdhcmVEYXRhVHlwZSddKSlcbiAgICBtb2RlbCA9IG5hbWUgb3IgaWRlbnRpZmllclxuICAgIGlkZW50aXR5ID0geydtYW51ZmFjdHVyZXInOiAnQXBwbGUnIGlmIG1vZGVsIGVsc2UgTm9uZSwgJ2hhcmR3YXJlX21vZGVsJzogbW9kZWx9XG4gICAgd2l0aCBIT1NUX0xPQ0s6XG4gICAgICAgIEhPU1RfSURFTlRJVFkudXBkYXRlKGlkZW50aXR5KVxuICAgICAgICByZXR1cm4gZGljdChIT1NUX0lERU5USVRZKVxuXG5cbmRlZiBob3N0X3Bvd2VyKCk6XG4gICAgaWRlbnRpdHkgPSBob3N0X2lkZW50aXR5KClcbiAgICBwb3dlciA9IHBhcnNlX3Btc2V0X2JhdHQoY29tbWFuZF9vdXRwdXQoWycvdXNyL2Jpbi9wbXNldCcsICctZycsICdiYXR0J10pKVxuICAgIGlmIGRlc2t0b3BfbWFjKGlkZW50aXR5LmdldCgnaGFyZHdhcmVfbW9kZWwnKSk6XG4gICAgICAgIHBvd2VyWydiYXR0ZXJ5X3ByZXNlbnQnXSA9IEZhbHNlXG4gICAgICAgIHBvd2VyWydhY19jb25uZWN0ZWQnXSA9IFRydWUgaWYgcG93ZXJbJ2FjX2Nvbm5lY3RlZCddIGlzIE5vbmUgZWxzZSBwb3dlclsnYWNfY29ubmVjdGVkJ11cbiAgICAgICAgcG93ZXJbJ2JhdHRlcnlfcGVyY2VudCddID0gTm9uZVxuICAgICAgICBwb3dlclsnYmF0dGVyeV9zdGF0dXMnXSA9IE5vbmVcbiAgICByZXR1cm4gcG93ZXJcblxuXG5kZWYgcmVxdWVzdF9wYXRoKHJhdyk6XG4gICAgdHJ5OlxuICAgICAgICBfbWV0aG9kLCB0YXJnZXQsIF92ZXJzaW9uID0gcmF3LnNwbGl0KGInXFxyXFxuJywgMSlbMF0uZGVjb2RlKCdhc2NpaScpLnNwbGl0KClcbiAgICBleGNlcHQgKFZhbHVlRXJyb3IsIFVuaWNvZGVEZWNvZGVFcnJvcik6XG4gICAgICAgIHJldHVybiAnJ1xuICAgIHJldHVybiB1cmxsaWIucGFyc2UudXJsc3BsaXQodGFyZ2V0KS5wYXRoXG5cblxuZGVmIHByb2JlX2FjY2VwdGVkKHN0YXR1cyk6XG4gICAgcmV0dXJuIHN0YXR1cyBpbiAoMjAwLCA0MDMpXG5cblxuZGVmIHByb2JlX2Nsb3VkZmxhcmUoKTpcbiAgICBzdGFydGVkID0gdGltZS5tb25vdG9uaWMoKVxuICAgIHBheWxvYWQgPSBiJ1xcMCcgKiBQUk9CRV9CWVRFU1xuICAgIGN0eCA9IHNzbC5jcmVhdGVfZGVmYXVsdF9jb250ZXh0KClcbiAgICBjdHgubWluaW11bV92ZXJzaW9uID0gc3NsLlRMU1ZlcnNpb24uVExTdjFfMlxuICAgIGNvbm4gPSBodHRwLmNsaWVudC5IVFRQU0Nvbm5lY3Rpb24oUFJPQkVfSE9TVCwgNDQzLCB0aW1lb3V0PVBST0JFX1RJTUVPVVQsIGNvbnRleHQ9Y3R4KVxuICAgIHRyeTpcbiAgICAgICAgY29ubi5yZXF1ZXN0KCdQVVQnLCBQUk9CRV9QQVRILCBib2R5PXBheWxvYWQsIGhlYWRlcnM9eydDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJ30pXG4gICAgICAgIHJlc3BvbnNlID0gY29ubi5nZXRyZXNwb25zZSgpXG4gICAgICAgIHJlc3BvbnNlLnJlYWQoKVxuICAgICAgICBlbGFwc2VkID0gbWF4KHRpbWUubW9ub3RvbmljKCkgLSBzdGFydGVkLCAwLjAwMSlcbiAgICAgICAgb2sgPSBwcm9iZV9hY2NlcHRlZChyZXNwb25zZS5zdGF0dXMpXG4gICAgICAgIHJldHVybiBvaywgaW50KFBST0JFX0JZVEVTIC8gZWxhcHNlZCkgaWYgb2sgZWxzZSAwXG4gICAgZXhjZXB0IChPU0Vycm9yLCBzc2wuU1NMRXJyb3IsIGh0dHAuY2xpZW50LkhUVFBFeGNlcHRpb24sIFZhbHVlRXJyb3IpIGFzIGVycm9yOlxuICAgICAgICBsb2dfc3RvcmFnZSgndXBsaW5rIHByb2JlIGZhaWxlZDogJXMnICUgZXJyb3IpXG4gICAgICAgIHJldHVybiBGYWxzZSwgMFxuICAgIGZpbmFsbHk6XG4gICAgICAgIGNvbm4uY2xvc2UoKVxuXG5cbmRlZiByZWZyZXNoX3VwbGluayhmb3JjZT1GYWxzZSk6XG4gICAgaWZhY2UsIHdpZmkgPSBjdXJyZW50X3BhdGgoKVxuICAgIHdpdGggVVBMSU5LX0xPQ0s6XG4gICAgICAgIGFnZSA9IHRpbWUudGltZSgpIC0gKFVQTElOS1sncHJvYmVkX2F0J10gb3IgMClcbiAgICAgICAgY2hhbmdlZCA9IGlmYWNlICE9IFVQTElOS1snaWZhY2UnXSBvciB3aWZpICE9IFVQTElOS1snd2lmaSddXG4gICAgICAgIGlmIG5vdCBmb3JjZSBhbmQgVVBMSU5LWydvayddIGlzIG5vdCBOb25lIGFuZCBub3QgY2hhbmdlZCBhbmQgYWdlIDwgUFJPQkVfSU5URVJWQUw6XG4gICAgICAgICAgICByZXR1cm4gZGljdChVUExJTkspXG4gICAgd2l0aCBPUklHSU46XG4gICAgICAgIG9rLCBicHMgPSBwcm9iZV9jbG91ZGZsYXJlKClcbiAgICB3aXRoIFVQTElOS19MT0NLOlxuICAgICAgICBVUExJTksudXBkYXRlKG9rPW9rLCBicHM9YnBzLCBwcm9iZWRfYXQ9dGltZS50aW1lKCksIGlmYWNlPWlmYWNlLCB3aWZpPXdpZmkpXG4gICAgICAgIHJldHVybiBkaWN0KFVQTElOSylcblxuXG5kZWYgdXBsaW5rX3BheWxvYWQoKTpcbiAgICB3aXRoIFVQTElOS19MT0NLOlxuICAgICAgICBzdGF0ZSA9IGRpY3QoVVBMSU5LKVxuICAgIHBheWxvYWQgPSB7J29rJzogc3RhdGVbJ29rJ10sICdicHMnOiBzdGF0ZVsnYnBzJ10sICdwcm9iZWRfYXQnOiBzdGF0ZVsncHJvYmVkX2F0J10sXG4gICAgICAgICAgICAgICAnaWZhY2UnOiBzdGF0ZVsnaWZhY2UnXSwgJ3dpZmknOiBzdGF0ZVsnd2lmaSddfVxuICAgIHBheWxvYWQudXBkYXRlKGhvc3RfaWRlbnRpdHkoKSlcbiAgICBwYXlsb2FkLnVwZGF0ZShob3N0X3Bvd2VyKCkpXG4gICAgcmV0dXJuIHBheWxvYWRcblxuXG5kZWYgcmVwbHlfanNvbihzb2NrLCBwYXlsb2FkKTpcbiAgICBib2R5ID0ganNvbi5kdW1wcyhwYXlsb2FkKS5lbmNvZGUoKVxuICAgIHNvY2suc2VuZGFsbCgoJ0hUVFAvMS4xIDIwMCBPS1xcclxcbkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvblxcclxcbkNvbnRlbnQtTGVuZ3RoOiAlc1xcclxcbidcbiAgICAgICAgICAgICAgICAgICdDb25uZWN0aW9uOiBjbG9zZVxcclxcblxcclxcbicgJSBsZW4oYm9keSkpLmVuY29kZSgpICsgYm9keSlcblxuXG5kZWYgdXBsaW5rX2xvb3AoKTpcbiAgICB3aGlsZSBUcnVlOlxuICAgICAgICB0cnk6XG4gICAgICAgICAgICByZWZyZXNoX3VwbGluaygpXG4gICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZXJyb3I6XG4gICAgICAgICAgICBsb2dfc3RvcmFnZSgndXBsaW5rIHByb2JlIGZhaWxlZDogJXMnICUgZXJyb3IpXG4gICAgICAgICAgICBpZmFjZSwgd2lmaSA9IGN1cnJlbnRfcGF0aCgpXG4gICAgICAgICAgICB3aXRoIFVQTElOS19MT0NLOlxuICAgICAgICAgICAgICAgIFVQTElOSy51cGRhdGUob2s9RmFsc2UsIGJwcz0wLCBwcm9iZWRfYXQ9dGltZS50aW1lKCksIGlmYWNlPWlmYWNlLCB3aWZpPXdpZmkpXG4gICAgICAgIFVQTElOS19SRUFEWS5zZXQoKVxuICAgICAgICB0aW1lLnNsZWVwKDUpXG5cblxuZGVmIGFsbG93ZWRfaG9zdChob3N0KTpcbiAgICBob3N0ID0gKGhvc3Qgb3IgJycpLnN0cmlwKCkubG93ZXIoKS5yc3RyaXAoJy4nKVxuICAgIGlmIGhvc3Quc3RhcnRzd2l0aCgnWycpIG9yIG5vdCBob3N0LmVuZHN3aXRoKEFMTE9XRURfU1VGRklYKTpcbiAgICAgICAgcmV0dXJuIEZhbHNlXG4gICAgcHJlZml4ID0gaG9zdFs6LWxlbihBTExPV0VEX1NVRkZJWCldXG4gICAgaWYgbm90IHByZWZpeDpcbiAgICAgICAgcmV0dXJuIEZhbHNlXG4gICAgZm9yIGxhYmVsIGluIHByZWZpeC5zcGxpdCgnLicpOlxuICAgICAgICBpZiBub3QgbGFiZWwgb3IgbGFiZWwuc3RhcnRzd2l0aCgnLScpIG9yIGxhYmVsLmVuZHN3aXRoKCctJyk6XG4gICAgICAgICAgICByZXR1cm4gRmFsc2VcbiAgICAgICAgaWYgbm90IGFsbChjaGFyYWN0ZXIuaXNhbG51bSgpIG9yIGNoYXJhY3RlciA9PSAnLScgZm9yIGNoYXJhY3RlciBpbiBsYWJlbCk6XG4gICAgICAgICAgICByZXR1cm4gRmFsc2VcbiAgICB0cnk6XG4gICAgICAgIGlwYWRkcmVzcy5pcF9hZGRyZXNzKGhvc3QpXG4gICAgICAgIHJldHVybiBGYWxzZVxuICAgIGV4Y2VwdCBWYWx1ZUVycm9yOlxuICAgICAgICByZXR1cm4gVHJ1ZVxuXG5cbmRlZiBhbGxvd2VkX3VybCh1cmwpOlxuICAgIHBhcnNlZCA9IHVybGxpYi5wYXJzZS51cmxzcGxpdCh1cmwgb3IgJycpXG4gICAgaWYgKHBhcnNlZC5zY2hlbWUgIT0gJ2h0dHBzJyBvciBwYXJzZWQudXNlcm5hbWUgb3Igbm90IHBhcnNlZC5ob3N0bmFtZVxuICAgICAgICAgICAgb3IgcGFyc2VkLnBvcnQgbm90IGluIChOb25lLCA0NDMpIG9yIG5vdCBhbGxvd2VkX2hvc3QocGFyc2VkLmhvc3RuYW1lKSk6XG4gICAgICAgIHJldHVybiBOb25lXG4gICAgcmV0dXJuIHBhcnNlZFxuXG5cbmRlZiByZWFkX2hlYWRlcnMoc29jayk6XG4gICAgZGF0YSA9IGInJ1xuICAgIHdoaWxlIGInXFxyXFxuXFxyXFxuJyBub3QgaW4gZGF0YSBhbmQgbGVuKGRhdGEpIDwgSEVBREVSX0xJTUlUOlxuICAgICAgICBjaHVuayA9IHNvY2sucmVjdihIRUFERVJfTElNSVQgLSBsZW4oZGF0YSkpXG4gICAgICAgIGlmIG5vdCBjaHVuazpcbiAgICAgICAgICAgIHJldHVybiBOb25lLCBiJydcbiAgICAgICAgZGF0YSArPSBjaHVua1xuICAgIGlmIGInXFxyXFxuXFxyXFxuJyBub3QgaW4gZGF0YTpcbiAgICAgICAgcmV0dXJuIE5vbmUsIGInJ1xuICAgIGhlYWRlciwgcmVzdCA9IGRhdGEuc3BsaXQoYidcXHJcXG5cXHJcXG4nLCAxKVxuICAgIHJldHVybiBoZWFkZXIsIHJlc3RcblxuXG5kZWYgcGFyc2VfcmVxdWVzdChyYXcpOlxuICAgIHRyeTpcbiAgICAgICAgbGluZXMgPSByYXcuc3BsaXQoYidcXHJcXG4nKVxuICAgICAgICBtZXRob2QsIF90YXJnZXQsIF92ZXJzaW9uID0gbGluZXNbMF0uZGVjb2RlKCdhc2NpaScpLnNwbGl0KClcbiAgICBleGNlcHQgKFZhbHVlRXJyb3IsIFVuaWNvZGVEZWNvZGVFcnJvcik6XG4gICAgICAgIHJldHVybiBOb25lLCB7fSwgTm9uZVxuICAgIGhlYWRlcnMgPSB7fVxuICAgIGZvciBsaW5lIGluIGxpbmVzWzE6XTpcbiAgICAgICAgaWYgbm90IGxpbmU6XG4gICAgICAgICAgICBjb250aW51ZVxuICAgICAgICB0cnk6XG4gICAgICAgICAgICBuYW1lLCB2YWx1ZSA9IGxpbmUuZGVjb2RlKCdsYXRpbjEnKS5zcGxpdCgnOicsIDEpXG4gICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOlxuICAgICAgICAgICAgcmV0dXJuIE5vbmUsIHt9LCBOb25lXG4gICAgICAgIGhlYWRlcnNbbmFtZS5zdHJpcCgpLmxvd2VyKCldID0gdmFsdWUuc3RyaXAoKVxuICAgIHJldHVybiBtZXRob2QudXBwZXIoKSwgaGVhZGVycywgYWxsb3dlZF91cmwoaGVhZGVycy5nZXQoJ3gtZGdlLXRhcmdldCcpKVxuXG5cbmRlZiByZXBseShzb2NrLCBzdGF0dXMsIHJlYXNvbik6XG4gICAgc29jay5zZW5kYWxsKCgnSFRUUC8xLjEgJXMgJXNcXHJcXG5Db25uZWN0aW9uOiBjbG9zZVxcclxcblxcclxcbicgJSAoc3RhdHVzLCByZWFzb24pKS5lbmNvZGUoKSlcblxuXG5kZWYgY29weV9jbGllbnRfYm9keShjbGllbnQsIHJlc3QsIGxlbmd0aCwgd3JpdGUpOlxuICAgIHNlbnQgPSAwXG4gICAgaWYgcmVzdDpcbiAgICAgICAgdGFrZSA9IHJlc3RbOmxlbmd0aF1cbiAgICAgICAgd3JpdGUodGFrZSlcbiAgICAgICAgc2VudCArPSBsZW4odGFrZSlcbiAgICB3aGlsZSBzZW50IDwgbGVuZ3RoOlxuICAgICAgICBjaHVuayA9IGNsaWVudC5yZWN2KG1pbihCVUZGRVIsIGxlbmd0aCAtIHNlbnQpKVxuICAgICAgICBpZiBub3QgY2h1bms6XG4gICAgICAgICAgICByYWlzZSBPU0Vycm9yKCdzaG9ydCBib2R5JylcbiAgICAgICAgd3JpdGUoY2h1bmspXG4gICAgICAgIHNlbnQgKz0gbGVuKGNodW5rKVxuXG5cbmRlZiBwYXJzZV9kdW1wX2hlYWRlcihwYXRoKTpcbiAgICBzdGF0dXMsIHJlYXNvbiwgY29udGVudF90eXBlLCBsZW5ndGggPSA1MDIsICdCYWQgR2F0ZXdheScsIE5vbmUsIE5vbmVcbiAgICB0cnk6XG4gICAgICAgIHdpdGggb3BlbihwYXRoLCAncicsIGVycm9ycz0ncmVwbGFjZScpIGFzIGhhbmRsZTpcbiAgICAgICAgICAgIHRleHQgPSBoYW5kbGUucmVhZCgpXG4gICAgZXhjZXB0IE9TRXJyb3I6XG4gICAgICAgIHJldHVybiBzdGF0dXMsIHJlYXNvbiwgY29udGVudF90eXBlLCBsZW5ndGhcbiAgICBmb3IgbGluZSBpbiB0ZXh0LnNwbGl0bGluZXMoKTpcbiAgICAgICAgaWYgbGluZS51cHBlcigpLnN0YXJ0c3dpdGgoJ0hUVFAvJyk6XG4gICAgICAgICAgICBwYXJ0cyA9IGxpbmUuc3BsaXQoTm9uZSwgMilcbiAgICAgICAgICAgIGlmIGxlbihwYXJ0cykgPj0gMiBhbmQgcGFydHNbMV0uaXNkaWdpdCgpOlxuICAgICAgICAgICAgICAgIHN0YXR1cyA9IGludChwYXJ0c1sxXSlcbiAgICAgICAgICAgICAgICByZWFzb24gPSBwYXJ0c1syXSBpZiBsZW4ocGFydHMpID4gMiBlbHNlICdPSydcbiAgICAgICAgZWxpZiBsaW5lLmxvd2VyKCkuc3RhcnRzd2l0aCgnY29udGVudC10eXBlOicpOlxuICAgICAgICAgICAgY29udGVudF90eXBlID0gbGluZS5zcGxpdCgnOicsIDEpWzFdLnN0cmlwKClcbiAgICAgICAgZWxpZiBsaW5lLmxvd2VyKCkuc3RhcnRzd2l0aCgnY29udGVudC1sZW5ndGg6Jyk6XG4gICAgICAgICAgICBsZW5ndGggPSBsaW5lLnNwbGl0KCc6JywgMSlbMV0uc3RyaXAoKVxuICAgIHJldHVybiBzdGF0dXMsIHJlYXNvbiwgY29udGVudF90eXBlLCBsZW5ndGhcblxuXG5kZWYgc2VuZF9maWxlKGNsaWVudCwgc3RhdHVzLCByZWFzb24sIGNvbnRlbnRfdHlwZSwgbGVuZ3RoLCBwYXRoLCBza2lwX2JvZHk9RmFsc2UpOlxuICAgIHNpemUgPSBvcy5wYXRoLmdldHNpemUocGF0aCkgaWYgb3MucGF0aC5leGlzdHMocGF0aCkgZWxzZSAwXG4gICAgaWYgbm90IGxlbmd0aCBvciBub3Qgc3RyKGxlbmd0aCkuaXNkaWdpdCgpOlxuICAgICAgICBsZW5ndGggPSBzdHIoc2l6ZSlcbiAgICBoZWFkZXJzID0gWydIVFRQLzEuMSAlcyAlcycgJSAoc3RhdHVzLCByZWFzb24pXVxuICAgIGlmIGNvbnRlbnRfdHlwZTpcbiAgICAgICAgaGVhZGVycy5hcHBlbmQoJ0NvbnRlbnQtVHlwZTogJyArIGNvbnRlbnRfdHlwZSlcbiAgICBoZWFkZXJzLmFwcGVuZCgnQ29udGVudC1MZW5ndGg6ICcgKyBsZW5ndGgpXG4gICAgaGVhZGVycy5hcHBlbmQoJ0Nvbm5lY3Rpb246IGNsb3NlJylcbiAgICBjbGllbnQuc2VuZGFsbCgoJ1xcclxcbicuam9pbihoZWFkZXJzKSArICdcXHJcXG5cXHJcXG4nKS5lbmNvZGUoKSlcbiAgICBpZiBza2lwX2JvZHkgb3Igc3RhdHVzID09IDIwNDpcbiAgICAgICAgcmV0dXJuXG4gICAgd2l0aCBvcGVuKHBhdGgsICdyYicpIGFzIHBheWxvYWQ6XG4gICAgICAgIHdoaWxlIGNodW5rIDo9IHBheWxvYWQucmVhZChCVUZGRVIpOlxuICAgICAgICAgICAgY2xpZW50LnNlbmRhbGwoY2h1bmspXG5cblxuZGVmIG9yaWdpbl9zc2woKTpcbiAgICBjdHggPSBzc2wuY3JlYXRlX2RlZmF1bHRfY29udGV4dCgpXG4gICAgY3R4Lm1pbmltdW1fdmVyc2lvbiA9IHNzbC5UTFNWZXJzaW9uLlRMU3YxXzJcbiAgICBjdHgubWF4aW11bV92ZXJzaW9uID0gc3NsLlRMU1ZlcnNpb24uVExTdjFfMlxuICAgIGN0eC5tYXhfc2VuZF9mcmFnbWVudCA9IFRMU19TRU5EX0ZSQUdNRU5UXG4gICAgcmV0dXJuIGN0eFxuXG5cbmNsYXNzIE9yaWdpbkhUVFBTQ29ubmVjdGlvbihodHRwLmNsaWVudC5IVFRQU0Nvbm5lY3Rpb24pOlxuICAgIGRlZiBjb25uZWN0KHNlbGYpOlxuICAgICAgICBzdXBlcigpLmNvbm5lY3QoKVxuICAgICAgICBzZWxmLnNvY2suc2V0dGltZW91dCg2MDApXG4gICAgICAgIHNlbGYuc29jay5zZXRzb2Nrb3B0KHNvY2tldC5JUFBST1RPX1RDUCwgc29ja2V0LlRDUF9OT0RFTEFZLCAxKVxuXG5cbmRlZiBsb2dfc3RvcmFnZShtZXNzYWdlKTpcbiAgICBzeXMuc3RkZXJyLndyaXRlKG1lc3NhZ2UgKyAnXFxuJylcbiAgICBzeXMuc3RkZXJyLmZsdXNoKClcblxuXG5kZWYgb3JpZ2luX3B1dCh1cmksIHJlcXVlc3RfaGVhZGVycywgdXBsb2FkX3BhdGgsIG91dHB1dF9wYXRoKTpcbiAgICBwYXRoID0gdXJpLnBhdGggb3IgJy8nXG4gICAgaWYgdXJpLnF1ZXJ5OlxuICAgICAgICBwYXRoID0gcGF0aCArICc/JyArIHVyaS5xdWVyeVxuICAgIHNpemUgPSBvcy5wYXRoLmdldHNpemUodXBsb2FkX3BhdGgpXG4gICAgbGFzdF9lcnJvciA9IE5vbmVcbiAgICBmb3IgYXR0ZW1wdCBpbiByYW5nZSgzKTpcbiAgICAgICAgY29ubiA9IE9yaWdpbkhUVFBTQ29ubmVjdGlvbih1cmkuaG9zdG5hbWUsIDQ0MywgY29udGV4dD1vcmlnaW5fc3NsKCksIHRpbWVvdXQ9NjAwKVxuICAgICAgICBzZW50ID0gMFxuICAgICAgICBzdGFydGVkID0gdGltZS5tb25vdG9uaWMoKVxuICAgICAgICB0cnk6XG4gICAgICAgICAgICBjb25uLmNvbm5lY3QoKVxuICAgICAgICAgICAgY29ubi5wdXRyZXF1ZXN0KCdQVVQnLCBwYXRoLCBza2lwX2hvc3Q9RmFsc2UsIHNraXBfYWNjZXB0X2VuY29kaW5nPVRydWUpXG4gICAgICAgICAgICBmb3IgbmFtZSwgdmFsdWUgaW4gcmVxdWVzdF9oZWFkZXJzLml0ZW1zKCk6XG4gICAgICAgICAgICAgICAgaWYgbmFtZS5sb3dlcigpIG5vdCBpbiBGT1JXQVJEX1NLSVA6XG4gICAgICAgICAgICAgICAgICAgIGNvbm4ucHV0aGVhZGVyKG5hbWUsIHZhbHVlKVxuICAgICAgICAgICAgY29ubi5wdXRoZWFkZXIoJ0NvbnRlbnQtTGVuZ3RoJywgc3RyKHNpemUpKVxuICAgICAgICAgICAgY29ubi5lbmRoZWFkZXJzKClcbiAgICAgICAgICAgIHdpdGggb3Blbih1cGxvYWRfcGF0aCwgJ3JiJykgYXMgcGF5bG9hZDpcbiAgICAgICAgICAgICAgICB3aGlsZSBjaHVuayA6PSBwYXlsb2FkLnJlYWQoVExTX1NFTkRfRlJBR01FTlQpOlxuICAgICAgICAgICAgICAgICAgICBjb25uLnNlbmQoY2h1bmspXG4gICAgICAgICAgICAgICAgICAgIHNlbnQgKz0gbGVuKGNodW5rKVxuICAgICAgICAgICAgICAgICAgICBpZiBUTFNfU0VORF9QQUNFOlxuICAgICAgICAgICAgICAgICAgICAgICAgdGltZS5zbGVlcChUTFNfU0VORF9QQUNFKVxuICAgICAgICAgICAgcmVzcG9uc2UgPSBjb25uLmdldHJlc3BvbnNlKClcbiAgICAgICAgICAgIGJvZHkgPSByZXNwb25zZS5yZWFkKClcbiAgICAgICAgICAgIHdpdGggb3BlbihvdXRwdXRfcGF0aCwgJ3diJykgYXMgb3V0cHV0OlxuICAgICAgICAgICAgICAgIG91dHB1dC53cml0ZShib2R5KVxuICAgICAgICAgICAgbG9nX3N0b3JhZ2UoJ3N0b3JhZ2UgUFVUICVzIGF0dGVtcHQgJXMgb2sgJXMgYnl0ZXMgaW4gJS4xZnMgc3RhdHVzICVzJyAlIChcbiAgICAgICAgICAgICAgICB1cmkuaG9zdG5hbWUsIGF0dGVtcHQgKyAxLCBzZW50LCB0aW1lLm1vbm90b25pYygpIC0gc3RhcnRlZCwgcmVzcG9uc2Uuc3RhdHVzKSlcbiAgICAgICAgICAgIHJldHVybiByZXNwb25zZS5zdGF0dXMsIHJlc3BvbnNlLnJlYXNvbiBvciAnT0snLCByZXNwb25zZS5nZXRoZWFkZXIoJ0NvbnRlbnQtVHlwZScpLCBzdHIobGVuKGJvZHkpKVxuICAgICAgICBleGNlcHQgKE9TRXJyb3IsIHNzbC5TU0xFcnJvciwgaHR0cC5jbGllbnQuSFRUUEV4Y2VwdGlvbikgYXMgZXJyb3I6XG4gICAgICAgICAgICBsYXN0X2Vycm9yID0gZXJyb3JcbiAgICAgICAgICAgIGxvZ19zdG9yYWdlKCdzdG9yYWdlIFBVVCAlcyBhdHRlbXB0ICVzIGZhaWxlZCBhdCAlcy8lcyBieXRlcyBpbiAlLjFmczogJXMnICUgKFxuICAgICAgICAgICAgICAgIHVyaS5ob3N0bmFtZSwgYXR0ZW1wdCArIDEsIHNlbnQsIHNpemUsIHRpbWUubW9ub3RvbmljKCkgLSBzdGFydGVkLCBlcnJvcikpXG4gICAgICAgIGZpbmFsbHk6XG4gICAgICAgICAgICBjb25uLmNsb3NlKClcbiAgICByYWlzZSBsYXN0X2Vycm9yXG5cblxuZGVmIGN1cmxfYXJncyhtZXRob2QsIHVyaSwgaGVhZGVyX3BhdGgsIG91dHB1dF9wYXRoLCByZXF1ZXN0X2hlYWRlcnMpOlxuICAgIHVybCA9IHVybGxpYi5wYXJzZS51cmx1bnNwbGl0KCh1cmkuc2NoZW1lLCB1cmkubmV0bG9jLCB1cmkucGF0aCwgdXJpLnF1ZXJ5LCAnJykpXG4gICAgYXJncyA9IFtDVVJMLCAnLXNTJywgJy1nJywgJy00JywgJy0taHR0cDEuMScsICctLXRsc3YxLjInLCAnLS1tYXgtdGltZScsICc2MDAnLFxuICAgICAgICAgICAgJy1YJywgbWV0aG9kLCAnLUQnLCBoZWFkZXJfcGF0aCwgJy1vJywgb3V0cHV0X3BhdGhdXG4gICAgZm9yIG5hbWUsIHZhbHVlIGluIHJlcXVlc3RfaGVhZGVycy5pdGVtcygpOlxuICAgICAgICBpZiBuYW1lLmxvd2VyKCkgbm90IGluIEZPUldBUkRfU0tJUDpcbiAgICAgICAgICAgIGFyZ3MuZXh0ZW5kKFsnLUgnLCAnJXM6ICVzJyAlIChuYW1lLCB2YWx1ZSldKVxuICAgIGFyZ3MuYXBwZW5kKHVybClcbiAgICByZXR1cm4gYXJnc1xuXG5cbmRlZiBmZXRjaChjbGllbnQsIG1ldGhvZCwgdXJpLCByZXF1ZXN0X2hlYWRlcnMsIHJlc3QpOlxuICAgIHRyeTpcbiAgICAgICAgd2l0aCB0ZW1wZmlsZS5UZW1wb3JhcnlEaXJlY3RvcnkocHJlZml4PSdkZ2UtcjItJykgYXMgZm9sZGVyOlxuICAgICAgICAgICAgaGVhZGVyX3BhdGggPSBvcy5wYXRoLmpvaW4oZm9sZGVyLCAnaGVhZGVycycpXG4gICAgICAgICAgICBvdXRwdXRfcGF0aCA9IG9zLnBhdGguam9pbihmb2xkZXIsICdib2R5JylcbiAgICAgICAgICAgIHVwbG9hZF9wYXRoID0gTm9uZVxuICAgICAgICAgICAgaWYgbWV0aG9kID09ICdQVVQnOlxuICAgICAgICAgICAgICAgIHRyeTpcbiAgICAgICAgICAgICAgICAgICAgbGVuZ3RoID0gaW50KHJlcXVlc3RfaGVhZGVycy5nZXQoJ2NvbnRlbnQtbGVuZ3RoJywgJycpKVxuICAgICAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOlxuICAgICAgICAgICAgICAgICAgICByZXBseShjbGllbnQsIDQxMSwgJ0xlbmd0aCBSZXF1aXJlZCcpXG4gICAgICAgICAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgICAgICAgIGlmIGxlbmd0aCA8IDAgb3IgbGVuZ3RoID4gTUFYX1BVVDpcbiAgICAgICAgICAgICAgICAgICAgcmVwbHkoY2xpZW50LCA0MTMsICdQYXlsb2FkIFRvbyBMYXJnZScpXG4gICAgICAgICAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgICAgICAgIHVwbG9hZF9wYXRoID0gb3MucGF0aC5qb2luKGZvbGRlciwgJ3VwbG9hZCcpXG4gICAgICAgICAgICAgICAgY2xpZW50LnNldHRpbWVvdXQoTm9uZSlcbiAgICAgICAgICAgICAgICB3aXRoIG9wZW4odXBsb2FkX3BhdGgsICd3YicpIGFzIHBheWxvYWQ6XG4gICAgICAgICAgICAgICAgICAgIGNvcHlfY2xpZW50X2JvZHkoY2xpZW50LCByZXN0LCBsZW5ndGgsIHBheWxvYWQud3JpdGUpXG4gICAgICAgICAgICBlbHNlOlxuICAgICAgICAgICAgICAgIGNsaWVudC5zZXR0aW1lb3V0KE5vbmUpXG4gICAgICAgICAgICBpZiBtZXRob2QgPT0gJ1BVVCc6XG4gICAgICAgICAgICAgICAgdHJ5OlxuICAgICAgICAgICAgICAgICAgICB3aXRoIE9SSUdJTjpcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1cywgcmVhc29uLCBjb250ZW50X3R5cGUsIGxlbmd0aCA9IG9yaWdpbl9wdXQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJpLCByZXF1ZXN0X2hlYWRlcnMsIHVwbG9hZF9wYXRoLCBvdXRwdXRfcGF0aClcbiAgICAgICAgICAgICAgICBleGNlcHQgKE9TRXJyb3IsIHNzbC5TU0xFcnJvciwgaHR0cC5jbGllbnQuSFRUUEV4Y2VwdGlvbikgYXMgZXJyb3I6XG4gICAgICAgICAgICAgICAgICAgIGxvZ19zdG9yYWdlKCdzdG9yYWdlIFBVVCAlcyBmYWlsZWQ6ICVzJyAlICh1cmkuaG9zdG5hbWUsIGVycm9yKSlcbiAgICAgICAgICAgICAgICAgICAgcmVwbHkoY2xpZW50LCA1MDIsICdCYWQgR2F0ZXdheScpXG4gICAgICAgICAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgICAgZWxzZTpcbiAgICAgICAgICAgICAgICBhcmdzID0gY3VybF9hcmdzKG1ldGhvZCwgdXJpLCBoZWFkZXJfcGF0aCwgb3V0cHV0X3BhdGgsIHJlcXVlc3RfaGVhZGVycylcbiAgICAgICAgICAgICAgICB3aXRoIE9SSUdJTjpcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gc3VicHJvY2Vzcy5ydW4oYXJncywgc3RkZXJyPXN1YnByb2Nlc3MuUElQRSlcbiAgICAgICAgICAgICAgICBpZiByZXN1bHQucmV0dXJuY29kZTpcbiAgICAgICAgICAgICAgICAgICAgZGV0YWlsID0gKHJlc3VsdC5zdGRlcnIgb3IgYicnKS5kZWNvZGUoZXJyb3JzPSdyZXBsYWNlJykuc3RyaXAoKVxuICAgICAgICAgICAgICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCdzdG9yYWdlICVzICVzIGN1cmwgJXMgJXNcXG4nICUgKFxuICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kLCB1cmkuaG9zdG5hbWUsIHJlc3VsdC5yZXR1cm5jb2RlLCBkZXRhaWwpKVxuICAgICAgICAgICAgICAgICAgICByZXBseShjbGllbnQsIDUwMiwgJ0JhZCBHYXRld2F5JylcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgICAgICAgc3RhdHVzLCByZWFzb24sIGNvbnRlbnRfdHlwZSwgbGVuZ3RoID0gcGFyc2VfZHVtcF9oZWFkZXIoaGVhZGVyX3BhdGgpXG4gICAgICAgICAgICBzZW5kX2ZpbGUoY2xpZW50LCBzdGF0dXMsIHJlYXNvbiwgY29udGVudF90eXBlLCBsZW5ndGgsIG91dHB1dF9wYXRoLCBza2lwX2JvZHk9KG1ldGhvZCA9PSAnSEVBRCcpKVxuICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGVycm9yOlxuICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCdzdG9yYWdlICVzICVzIGZhaWxlZDogJXNcXG4nICUgKG1ldGhvZCwgdXJpLmhvc3RuYW1lLCBlcnJvcikpXG4gICAgICAgIHRyeTpcbiAgICAgICAgICAgIHJlcGx5KGNsaWVudCwgNTAyLCAnQmFkIEdhdGV3YXknKVxuICAgICAgICBleGNlcHQgT1NFcnJvcjpcbiAgICAgICAgICAgIHBhc3NcblxuXG5kZWYgYWN0aXZpdHlfcGF5bG9hZCgpOlxuICAgIHJhdyA9IGNvbW1hbmRfb3V0cHV0KFsnL3Vzci9zYmluL2lvcmVnJywgJy1jJywgJ0lPSElEU3lzdGVtJ10pXG4gICAgbWF0Y2ggPSByZS5zZWFyY2gocidcIkhJRElkbGVUaW1lXCJcXHMqPVxccyooXFxkKyknLCByYXcgb3IgJycpXG4gICAgbWVtb3J5X3JhdyA9IGNvbW1hbmRfb3V0cHV0KFsnL3Vzci9iaW4vdm1fc3RhdCddKVxuICAgIHBhZ2UgPSByZS5zZWFyY2gocidwYWdlIHNpemUgb2YgKFxcZCspIGJ5dGVzJywgbWVtb3J5X3JhdyBvciAnJylcbiAgICBmcmVlID0gc3VtKGludCh2YWx1ZSkgZm9yIHZhbHVlIGluIHJlLmZpbmRhbGwocidQYWdlcyAoPzpmcmVlfGluYWN0aXZlfHNwZWN1bGF0aXZlfHB1cmdlYWJsZSk6XFxzKyhcXGQrKScsIG1lbW9yeV9yYXcgb3IgJycpKVxuICAgIGNwdSA9IGNvbW1hbmRfb3V0cHV0KFsnL3Vzci9iaW4vdG9wJywgJy1sJywgJzInLCAnLXMnLCAnMScsICctbicsICcwJ10pXG4gICAgaWRsZV9zYW1wbGVzID0gcmUuZmluZGFsbChyJyhbMC05Ll0rKSUgaWRsZScsIGNwdSlcbiAgICBjcHVfaWRsZSA9IGZsb2F0KGlkbGVfc2FtcGxlc1stMV0pIGlmIGlkbGVfc2FtcGxlcyBlbHNlIE5vbmVcbiAgICBwb3dlciA9IGhvc3RfcG93ZXIoKVxuICAgIHJldHVybiBkaWN0KHJlcG9ydGVkX2F0PXRpbWUuc3RyZnRpbWUoJyVZLSVtLSVkVCVIOiVNOiVTWicsIHRpbWUuZ210aW1lKCkpLFxuICAgICAgICAgICAgICAgIGlkbGVfc2Vjb25kcz1pbnQobWF0Y2hbMV0pIC8gMTAwMDAwMDAwMCBpZiBtYXRjaCBlbHNlIE5vbmUsXG4gICAgICAgICAgICAgICAgY3B1X3BlcmNlbnQ9MTAwIC0gY3B1X2lkbGUgaWYgY3B1X2lkbGUgaXMgbm90IE5vbmUgZWxzZSBOb25lLFxuICAgICAgICAgICAgICAgIG1lbW9yeV9hdmFpbGFibGVfYnl0ZXM9ZnJlZSAqIGludChwYWdlWzFdKSBpZiBwYWdlIGVsc2UgTm9uZSxcbiAgICAgICAgICAgICAgICBiYXR0ZXJ5X3ByZXNlbnQ9cG93ZXIuZ2V0KCdiYXR0ZXJ5X3ByZXNlbnQnKSwgYWNfY29ubmVjdGVkPXBvd2VyLmdldCgnYWNfY29ubmVjdGVkJykpXG5cblxuZGVmIGhhbmRsZShjbGllbnQsIF9hZGRyZXNzKTpcbiAgICB0cnk6XG4gICAgICAgIGNsaWVudC5zZXR0aW1lb3V0KDMwKVxuICAgICAgICByYXcsIHJlc3QgPSByZWFkX2hlYWRlcnMoY2xpZW50KVxuICAgICAgICBpZiByYXcgaXMgTm9uZTpcbiAgICAgICAgICAgIHJldHVyblxuICAgICAgICBtZXRob2QsIGhlYWRlcnMsIHVyaSA9IHBhcnNlX3JlcXVlc3QocmF3KVxuICAgICAgICBpZiBtZXRob2QgaXMgTm9uZTpcbiAgICAgICAgICAgIHJlcGx5KGNsaWVudCwgNDAwLCAnQmFkIFJlcXVlc3QnKVxuICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgIGlmIG1ldGhvZCA9PSAnR0VUJyBhbmQgcmVxdWVzdF9wYXRoKHJhdykgPT0gJy9hY3Rpdml0eSc6XG4gICAgICAgICAgICB0b2tlbl9wYXRoID0gUGF0aC5ob21lKCkgLyAnTGlicmFyeScgLyAnQXBwbGljYXRpb24gU3VwcG9ydCcgLyAnZGdlLXdvcmtlcicgLyAnaGVscGVyLXRva2VuJ1xuICAgICAgICAgICAgZXhwZWN0ZWQgPSB0b2tlbl9wYXRoLnJlYWRfdGV4dCgpLnN0cmlwKCkgaWYgdG9rZW5fcGF0aC5leGlzdHMoKSBlbHNlICcnXG4gICAgICAgICAgICBzdXBwbGllZCA9IGhlYWRlcnMuZ2V0KCd4LWRnZS1oZWxwZXItdG9rZW4nLCAnJylcbiAgICAgICAgICAgIGlmIG5vdCBleHBlY3RlZCBvciBub3QgaG1hYy5jb21wYXJlX2RpZ2VzdChzdXBwbGllZCwgZXhwZWN0ZWQpOlxuICAgICAgICAgICAgICAgIHJlcGx5KGNsaWVudCwgNDAzLCAnRm9yYmlkZGVuJylcbiAgICAgICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICAgIHJlcGx5X2pzb24oY2xpZW50LCBhY3Rpdml0eV9wYXlsb2FkKCkpXG4gICAgICAgICAgICByZXR1cm5cbiAgICAgICAgaWYgbWV0aG9kID09ICdHRVQnIGFuZCByZXF1ZXN0X3BhdGgocmF3KSA9PSAnL3VwbGluayc6XG4gICAgICAgICAgICBVUExJTktfUkVBRFkud2FpdCgxMilcbiAgICAgICAgICAgIHJlcGx5X2pzb24oY2xpZW50LCB1cGxpbmtfcGF5bG9hZCgpKVxuICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgIGlmIG1ldGhvZCBub3QgaW4gKCdHRVQnLCAnUFVUJywgJ0hFQUQnKTpcbiAgICAgICAgICAgIHJlcGx5KGNsaWVudCwgNDA1LCAnTWV0aG9kIE5vdCBBbGxvd2VkJylcbiAgICAgICAgICAgIHJldHVyblxuICAgICAgICBpZiB1cmkgaXMgTm9uZTpcbiAgICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoJ3JlamVjdGVkIHN0b3JhZ2UgJXNcXG4nICUgbWV0aG9kKVxuICAgICAgICAgICAgcmVwbHkoY2xpZW50LCA0MDMsICdGb3JiaWRkZW4nKVxuICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgIGZldGNoKGNsaWVudCwgbWV0aG9kLCB1cmksIGhlYWRlcnMsIHJlc3QpXG4gICAgZXhjZXB0IE9TRXJyb3IgYXMgZXJyb3I6XG4gICAgICAgIHN5cy5zdGRlcnIud3JpdGUoJ3N0b3JhZ2UgY2xpZW50IGZhaWxlZDogJXNcXG4nICUgZXJyb3IpXG4gICAgICAgIHJldHVyblxuICAgIGZpbmFsbHk6XG4gICAgICAgIGNsaWVudC5jbG9zZSgpXG5cblxuZGVmIHNlcnZlKGhvc3Q9TElTVEVOX0hPU1QsIHBvcnQ9TElTVEVOX1BPUlQpOlxuICAgIHRocmVhZGluZy5UaHJlYWQodGFyZ2V0PXVwbGlua19sb29wLCBkYWVtb249VHJ1ZSkuc3RhcnQoKVxuICAgIHNlcnZlciA9IHNvY2tldC5jcmVhdGVfc2VydmVyKChob3N0LCBwb3J0KSwgcmV1c2VfcG9ydD1GYWxzZSlcbiAgICB3aGlsZSBUcnVlOlxuICAgICAgICBjbGllbnQsIGFkZHJlc3MgPSBzZXJ2ZXIuYWNjZXB0KClcbiAgICAgICAgdGhyZWFkaW5nLlRocmVhZCh0YXJnZXQ9aGFuZGxlLCBhcmdzPShjbGllbnQsIGFkZHJlc3MpLCBkYWVtb249VHJ1ZSkuc3RhcnQoKVxuXG5cbmRlZiBtYWluKCk6XG4gICAgdHJ5OlxuICAgICAgICBzZXJ2ZSgpXG4gICAgZXhjZXB0IE9TRXJyb3IgYXMgZXJyb3I6XG4gICAgICAgIHJhaXNlIFN5c3RlbUV4aXQoJ1IyIHN0b3JhZ2UgcHJveHkgZmFpbGVkIHRvIGxpc3RlbjogJyArIHN0cihlcnJvcikpIGZyb20gTm9uZVxuXG5cbmlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6XG4gICAgdHJ5OlxuICAgICAgICBtYWluKClcbiAgICBleGNlcHQgS2V5Ym9hcmRJbnRlcnJ1cHQ6XG4gICAgICAgIHN5cy5leGl0KDApXG4iLCJzZXR1cF9sb2dfcmVwb3J0ZXIucHkiOiJcIlwiXCJCZXN0LWVmZm9ydCB1cGxvYWQgb2Ygc2VsZWN0ZWQgc2V0dXAgZGlhZ25vc3RpY3Mgd2l0aG91dCBibG9ja2luZyBpbnN0YWxsYXRpb24uXCJcIlwiXG5pbXBvcnQganNvblxuaW1wb3J0IHF1ZXVlXG5pbXBvcnQgcmVcbmltcG9ydCB0aHJlYWRpbmdcbmltcG9ydCB1cmxsaWIucmVxdWVzdFxuXG5cblBSRUZJWEVTID0gKFxuICAgICc9PT4nLCAnV2FybmluZzonLCAnRXJyb3I6JywgJ2ZhdGFsOicsICdjdXJsOicsICdGQVRBWycsICdJTkZPWycsXG4gICAgJ0luc3RhbGxpbmcgSG9tZWJyZXcnLCAnSG9tZWJyZXcgaW5zdGFsbGVyIGRvd25sb2FkZWQnLCAnSG9tZWJyZXcgaXMgc3RpbGwgaW5zdGFsbGluZycsXG4gICAgJ0luc3RhbGxpbmcgTGltYScsICdDcmVhdGluZyBhIExpbnV4IHdvcmtlcicsICdTdGFydGluZyB0aGUgTGludXggd29ya2VyJyxcbiAgICAnU3RhcnRpbmcgYSBNYWMgbmV0d29yayBoZWxwZXInLCAnSW5zdGFsbGluZyB0aGUgd29ya2VyIGluc2lkZScsXG4gICAgJ0FwcHJvdmVkLiBTdGFydGluZyBzZXR1cCcsICdDaGVja2luZyB0aGlzIGNvbXB1dGVyJywgJ1ByZXBhcmluZyB0aGlzIGNvbXB1dGVyJyxcbiAgICAnQ29ubmVjdGluZyBhbmQgZG93bmxvYWRpbmcnLCAnQ29ubmVjdGVkIScsICdTZXR1cCBuZWVkcyBhdHRlbnRpb246JyxcbilcblxuXG5jbGFzcyBOb1JlZGlyZWN0KHVybGxpYi5yZXF1ZXN0LkhUVFBSZWRpcmVjdEhhbmRsZXIpOlxuICAgIGRlZiByZWRpcmVjdF9yZXF1ZXN0KHNlbGYsICphcmdzLCAqKmt3YXJncyk6XG4gICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignVGhlIHNldHVwIGxvZyBzZXJ2ZXIgcmVkaXJlY3RlZCB0aGUgdXBsb2FkLicpXG5cblxuSFRUUCA9IHVybGxpYi5yZXF1ZXN0LmJ1aWxkX29wZW5lcihOb1JlZGlyZWN0KCkpXG5cblxuZGVmIHNhZmVfc2V0dXBfbG9nX2xpbmUobGluZSk6XG4gICAgdGV4dCA9IHJlLnN1YihyJ1xceDFiXFxbWzAtOTtdKltBLVphLXpdJywgJycsIGxpbmUpLnN0cmlwKClcbiAgICBpZiBub3QgdGV4dC5zdGFydHN3aXRoKFBSRUZJWEVTKTpcbiAgICAgICAgcmV0dXJuIE5vbmVcbiAgICBpZiB0ZXh0LnN0YXJ0c3dpdGgoJ0luc3RhbGxpbmcgSG9tZWJyZXcnKTpcbiAgICAgICAgcmV0dXJuICdJbnN0YWxsaW5nIEhvbWVicmV3J1xuICAgIGlmIHJlLnNlYXJjaChyJyg/aSlwYXNzd29yZHx0b2tlbnxzZWNyZXR8Y3JlZGVudGlhbHxhdXRob3JpemF0aW9ufGJlYXJlclxccyt8YXBpLj9rZXknLCB0ZXh0KTpcbiAgICAgICAgcmV0dXJuIE5vbmVcbiAgICByZXR1cm4gdGV4dFs6MzAwXVxuXG5cbmNsYXNzIFNldHVwTG9nUmVwb3J0ZXI6XG4gICAgZGVmIF9faW5pdF9fKHNlbGYsIG9yaWdpbiwgdG9rZW4pOlxuICAgICAgICBzZWxmLm9yaWdpbiA9IG9yaWdpblxuICAgICAgICBzZWxmLnRva2VuID0gdG9rZW5cbiAgICAgICAgc2VsZi5saW5lcyA9IHF1ZXVlLlF1ZXVlKG1heHNpemU9MjAwKVxuICAgICAgICBzZWxmLmNsb3NlZCA9IEZhbHNlXG4gICAgICAgIHNlbGYudGhyZWFkID0gdGhyZWFkaW5nLlRocmVhZCh0YXJnZXQ9c2VsZi51cGxvYWQsIGRhZW1vbj1UcnVlKVxuICAgICAgICBzZWxmLnRocmVhZC5zdGFydCgpXG5cbiAgICBkZWYgcmVjb3JkKHNlbGYsIGxpbmUpOlxuICAgICAgICBzYWZlID0gc2FmZV9zZXR1cF9sb2dfbGluZShsaW5lKVxuICAgICAgICBpZiBzYWZlOlxuICAgICAgICAgICAgdHJ5OlxuICAgICAgICAgICAgICAgIHNlbGYubGluZXMucHV0X25vd2FpdChzYWZlKVxuICAgICAgICAgICAgZXhjZXB0IHF1ZXVlLkZ1bGw6XG4gICAgICAgICAgICAgICAgcGFzc1xuXG4gICAgZGVmIHNlbmQoc2VsZiwgYmF0Y2gpOlxuICAgICAgICByZXF1ZXN0ID0gdXJsbGliLnJlcXVlc3QuUmVxdWVzdChcbiAgICAgICAgICAgIHNlbGYub3JpZ2luLnJzdHJpcCgnLycpICsgJy9jb21wdXRlX2ZsZWV0L3NldHVwX2xvZ3MnLFxuICAgICAgICAgICAgZGF0YT1qc29uLmR1bXBzKHsnbGluZXMnOiBiYXRjaH0pLmVuY29kZSgpLFxuICAgICAgICAgICAgbWV0aG9kPSdQT1NUJyxcbiAgICAgICAgICAgIGhlYWRlcnM9eydDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsICdBdXRob3JpemF0aW9uJzogJ0JlYXJlciAnICsgc2VsZi50b2tlbn0sXG4gICAgICAgIClcbiAgICAgICAgdHJ5OlxuICAgICAgICAgICAgd2l0aCBIVFRQLm9wZW4ocmVxdWVzdCwgdGltZW91dD0zKTpcbiAgICAgICAgICAgICAgICBwYXNzXG4gICAgICAgIGV4Y2VwdCAoT1NFcnJvciwgVmFsdWVFcnJvciwgUnVudGltZUVycm9yKTpcbiAgICAgICAgICAgIHBhc3NcblxuICAgIGRlZiB1cGxvYWQoc2VsZik6XG4gICAgICAgIGJhdGNoID0gW11cbiAgICAgICAgd2hpbGUgVHJ1ZTpcbiAgICAgICAgICAgIHRyeTpcbiAgICAgICAgICAgICAgICBsaW5lID0gc2VsZi5saW5lcy5nZXQodGltZW91dD0yKVxuICAgICAgICAgICAgZXhjZXB0IHF1ZXVlLkVtcHR5OlxuICAgICAgICAgICAgICAgIGxpbmUgPSBOb25lXG4gICAgICAgICAgICBpZiBsaW5lIGlzIE5vbmU6XG4gICAgICAgICAgICAgICAgaWYgYmF0Y2g6XG4gICAgICAgICAgICAgICAgICAgIHNlbGYuc2VuZChiYXRjaClcbiAgICAgICAgICAgICAgICAgICAgYmF0Y2ggPSBbXVxuICAgICAgICAgICAgICAgIGlmIHNlbGYuY2xvc2VkOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICAgIGVsc2U6XG4gICAgICAgICAgICAgICAgYmF0Y2guYXBwZW5kKGxpbmUpXG4gICAgICAgICAgICAgICAgaWYgbGVuKGJhdGNoKSA+PSAyMDpcbiAgICAgICAgICAgICAgICAgICAgc2VsZi5zZW5kKGJhdGNoKVxuICAgICAgICAgICAgICAgICAgICBiYXRjaCA9IFtdXG5cbiAgICBkZWYgY2xvc2Uoc2VsZik6XG4gICAgICAgIHNlbGYuY2xvc2VkID0gVHJ1ZVxuICAgICAgICB0cnk6XG4gICAgICAgICAgICBzZWxmLmxpbmVzLnB1dF9ub3dhaXQoTm9uZSlcbiAgICAgICAgZXhjZXB0IHF1ZXVlLkZ1bGw6XG4gICAgICAgICAgICBwYXNzXG4gICAgICAgIHNlbGYudGhyZWFkLmpvaW4odGltZW91dD01KVxuIiwicHJlcGFyZV9tYWNoaW5lLnB5IjoiXCJcIlwiUHJlcGFyZSBzdXBwb3J0ZWQgTGludXggaG9zdHMgd2l0aG91dCByZXN0YXJ0aW5nIGFuIGV4aXN0aW5nIERvY2tlciBkYWVtb24uXCJcIlwiXG5pbXBvcnQgb3NcbmltcG9ydCBwbGF0Zm9ybVxuaW1wb3J0IHNobGV4XG5pbXBvcnQgc2h1dGlsXG5pbXBvcnQgc3VicHJvY2Vzc1xuXG5cbmRlZiBydW4oKmFyZ3MpOlxuICAgIHByaW50KCckICcgKyBzaGxleC5qb2luKHN0cihpdGVtKSBmb3IgaXRlbSBpbiBhcmdzKSwgZmx1c2g9VHJ1ZSlcbiAgICB0cnk6XG4gICAgICAgIHJldHVybiBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChhcmdzLCBzdGRlcnI9c3VicHJvY2Vzcy5TVERPVVQpLmRlY29kZSgpLnN0cmlwKClcbiAgICBleGNlcHQgc3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3IgYXMgZXJyb3I6XG4gICAgICAgIG91dHB1dCA9IGVycm9yLm91dHB1dC5kZWNvZGUoKS5zdHJpcCgpIGlmIGVycm9yLm91dHB1dCBlbHNlICcnXG4gICAgICAgIGlmIG91dHB1dDpcbiAgICAgICAgICAgIHByaW50KG91dHB1dCwgZmx1c2g9VHJ1ZSlcbiAgICAgICAgcmFpc2VcblxuXG5kZWYgZGVwZW5kZW5jaWVzKCk6XG4gICAgcmVsZWFzZSA9IHBsYXRmb3JtLmZyZWVkZXNrdG9wX29zX3JlbGVhc2UoKVxuICAgIHN1cHBvcnRlZCA9IChyZWxlYXNlLmdldCgnSUQnKSA9PSAndWJ1bnR1JyBhbmQgcmVsZWFzZS5nZXQoJ1ZFUlNJT05fSUQnLCAnJykuc3BsaXQoJy4nKVswXSBpbiAoJzI0JywgJzI1JywgJzI2JykpIG9yIChcbiAgICAgICAgcmVsZWFzZS5nZXQoJ0lEJykgPT0gJ2RlYmlhbicgYW5kIHJlbGVhc2UuZ2V0KCdWRVJTSU9OX0lEJykgaW4gKCcxMicsICcxMycpKVxuICAgIHBhY2thZ2VzID0gW11cbiAgICBmb3IgYmluYXJ5LCBwYWNrYWdlIGluIFsoJ2RvY2tlcicsICdkb2NrZXIuaW8nKSwgKCdpcCcsICdpcHJvdXRlMicpLCAoJ2xzcGNpJywgJ3BjaXV0aWxzJyksICgnbHNibGsnLCAndXRpbC1saW51eCcpXTpcbiAgICAgICAgaWYgbm90IHNodXRpbC53aGljaChiaW5hcnkpOlxuICAgICAgICAgICAgcGFja2FnZXMuYXBwZW5kKHBhY2thZ2UpXG4gICAgaWYgcGFja2FnZXMgYW5kIHN1cHBvcnRlZDpcbiAgICAgICAgcHJpbnQoJ0luc3RhbGxpbmcgcmVxdWlyZWQgdG9vbHMuIFRoaXMgbWF5IHRha2UgYSBmZXcgbWludXRlcy4uLicsIGZsdXNoPVRydWUpXG4gICAgICAgIHJ1bignYXB0LWdldCcsICd1cGRhdGUnLCAnLXFxJylcbiAgICAgICAgcnVuKCdhcHQtZ2V0JywgJ2luc3RhbGwnLCAnLXknLCAnLXFxJywgKnBhY2thZ2VzKVxuICAgIGlmIG5vdCBzaHV0aWwud2hpY2goJ2RvY2tlcicpOlxuICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ0RvY2tlciBtdXN0IGJlIGluc3RhbGxlZCBvbiB0aGlzIExpbnV4IHZlcnNpb24uIEFzayB5b3VyIGFkbWluaXN0cmF0b3IsIHRoZW4gcnVuIHNldHVwIGFnYWluLicpXG4gICAgcnVuKCdzeXN0ZW1jdGwnLCAnZW5hYmxlJywgJy0tbm93JywgJ2RvY2tlci5zZXJ2aWNlJylcbiAgICBpZiBydW4oJ2RvY2tlcicsICdpbmZvJywgJy0tZm9ybWF0JywgJ3t7LkNncm91cERyaXZlcn19IHt7LkNncm91cFZlcnNpb259fScpICE9ICdzeXN0ZW1kIDInOlxuICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ0RvY2tlciBuZWVkcyBzeXN0ZW1kIGNncm91cHMgdjIuIEFzayB5b3VyIGFkbWluaXN0cmF0b3IgdG8gdXBkYXRlIGl0cyBjb25maWd1cmF0aW9uLiBFeGlzdGluZyBjb250YWluZXJzIHdlcmUgbm90IHJlc3RhcnRlZC4nKVxuXG5cbmRlZiBwcmVwYXJlKCk6XG4gICAgaWYgb3MuZ2V0ZXVpZCgpICE9IDA6XG4gICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignUnVuIHRoZSBkb3dubG9hZGVkIHNldHVwIHNjcmlwdCB3aXRoIHlvdXIgYWRtaW5pc3RyYXRvciBwYXNzd29yZC4nKVxuICAgIGlmIHJ1bignc3RhdCcsICctZicsICctYycsICclVCcsICcvcnVuJykgIT0gJ3RtcGZzJzpcbiAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCdUaGlzIGNvbXB1dGVyIG5lZWRzIG1lbW9yeS1iYWNrZWQgdGVtcG9yYXJ5IHN0b3JhZ2UgYXQgL3J1bi4gQXNrIHlvdXIgYWRtaW5pc3RyYXRvciB0byBjb25maWd1cmUgaXQsIHRoZW4gcnVuIHNldHVwIGFnYWluLicpXG4gICAgZGVwZW5kZW5jaWVzKClcbiIsInVuaW5zdGFsbC5weSI6IiMhL3Vzci9iaW4vZW52IHB5dGhvbjNcblwiXCJcIlJlbW92ZSBvbmx5IHdvcmtlci1vd25lZCByZXNvdXJjZXMuIERlZmF1bHRzIHRvIGEgZHJ5IHJ1bjsgcmV2b2tlIGJlZm9yZSBkZWxldGlvbi5cIlwiXCJcbmltcG9ydCBhcmdwYXJzZVxuaW1wb3J0IGpzb25cbmltcG9ydCBvc1xuZnJvbSBwYXRobGliIGltcG9ydCBQYXRoXG5pbXBvcnQgc2h1dGlsXG5pbXBvcnQgc3VicHJvY2Vzc1xuaW1wb3J0IHN5c1xuaW1wb3J0IHVybGxpYi5lcnJvclxuXG5ST09UID0gUGF0aCgnL29wdC9kZ2Utd29ya2VyJylcblJVTk5FUl9DT05GSUcgPSBQYXRoKCcvZXRjL2dpdGxhYi1ydW5uZXIvY29uZmlnLnRvbWwnKVxuTUFDX1NVUFBPUlQgPSBQYXRoLmhvbWUoKSAvICdMaWJyYXJ5JyAvICdBcHBsaWNhdGlvbiBTdXBwb3J0JyAvICdkZ2Utd29ya2VyJ1xuXG5cbmRlZiByZXZva2Uocm9vdD1ST09UKTpcbiAgICBpbXBvcnQgdXJsbGliLnBhcnNlXG4gICAgaW1wb3J0IHVybGxpYi5yZXF1ZXN0XG4gICAgY2xhc3MgTm9SZWRpcmVjdCh1cmxsaWIucmVxdWVzdC5IVFRQUmVkaXJlY3RIYW5kbGVyKTpcbiAgICAgICAgZGVmIHJlZGlyZWN0X3JlcXVlc3Qoc2VsZiwgKmFyZ3MsICoqa3dhcmdzKTpcbiAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignUmVmdXNpbmcgYSByZWRpcmVjdGVkIHJldm9jYXRpb24nKVxuICAgIEhUVFAgPSB1cmxsaWIucmVxdWVzdC5idWlsZF9vcGVuZXIoTm9SZWRpcmVjdCgpKVxuICAgIGltcG9ydCB1cmxsaWIucmVxdWVzdFxuICAgIGlkZW50aXR5ID0ganNvbi5sb2Fkcygocm9vdCAvICdpZGVudGl0eS5qc29uJykucmVhZF90ZXh0KCkpXG4gICAgb3JpZ2luID0gdXJsbGliLnBhcnNlLnVybHNwbGl0KGlkZW50aXR5WydvcmlnaW4nXSlcbiAgICBpZiBvcmlnaW4uc2NoZW1lICE9ICdodHRwcycgb3Igbm90IG9yaWdpbi5ob3N0bmFtZSBvciBvcmlnaW4udXNlcm5hbWUgb3Igb3JpZ2luLnBhdGggbm90IGluICgnJywgJy8nKSBvciBvcmlnaW4ucXVlcnkgb3Igb3JpZ2luLmZyYWdtZW50OlxuICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ0ludmFsaWQgd29ya2VyIG9yaWdpbicpXG4gICAgcmVxdWVzdCA9IHVybGxpYi5yZXF1ZXN0LlJlcXVlc3QoaWRlbnRpdHlbJ29yaWdpbiddLnJzdHJpcCgnLycpICsgJy9jb21wdXRlX2ZsZWV0L2Rpc2Nvbm5lY3QnLFxuICAgICAgICBkYXRhPWIne30nLCBoZWFkZXJzPXsnQXV0aG9yaXphdGlvbic6ICdCZWFyZXIgJyArIGlkZW50aXR5Wyd0b2tlbiddLCAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nfSwgbWV0aG9kPSdQT1NUJylcbiAgICB0cnk6XG4gICAgICAgIHdpdGggSFRUUC5vcGVuKHJlcXVlc3QsIHRpbWVvdXQ9MjApIGFzIHJlc3BvbnNlOlxuICAgICAgICAgICAgaWYgbm90IGpzb24ubG9hZHMocmVzcG9uc2UucmVhZCg0MDk2KSkuZ2V0KCdkaXNjb25uZWN0ZWQnKTpcbiAgICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ1NlcnZlciBkaWQgbm90IGNvbmZpcm0gZGlzY29ubmVjdGlvbicpXG4gICAgZXhjZXB0IHVybGxpYi5lcnJvci5IVFRQRXJyb3IgYXMgZXJyb3I6XG4gICAgICAgIGlmIGVycm9yLmNvZGUgIT0gNDAxOiAgIyBBbiBhbHJlYWR5LXJldm9rZWQgaWRlbnRpdHkgaXMgc2FmZSB0byByZW1vdmUuXG4gICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ1NlcnZlciByZXZvY2F0aW9uIGZhaWxlZCcpIGZyb20gTm9uZVxuXG5cbmRlZiByZW1vdmVfbWFuYWdlZF9jaSgpOlxuICAgIGltcG9ydCB0b21sbGliXG4gICAgY29uZmlnID0gUlVOTkVSX0NPTkZJR1xuICAgIGlmIG5vdCBjb25maWcuZXhpc3RzKCk6XG4gICAgICAgIHJldHVyblxuICAgIHJ1bm5lcnMgPSB0b21sbGliLmxvYWRzKGNvbmZpZy5yZWFkX3RleHQoKSkuZ2V0KCdydW5uZXJzJywgW10pXG4gICAgaWYgbm90IGFueShyb3cuZ2V0KCduYW1lJykgPT0gJ2RnZS1jb21wdXRlJyBmb3Igcm93IGluIHJ1bm5lcnMpOlxuICAgICAgICByZXR1cm5cbiAgICBzdWJwcm9jZXNzLnJ1bihbJ2dpdGxhYi1ydW5uZXInLCAndW5yZWdpc3RlcicsICctLW5hbWUnLCAnZGdlLWNvbXB1dGUnXSwgY2hlY2s9VHJ1ZSwgY2FwdHVyZV9vdXRwdXQ9VHJ1ZSlcbiAgICBydW5uZXJzID0gdG9tbGxpYi5sb2Fkcyhjb25maWcucmVhZF90ZXh0KCkpLmdldCgncnVubmVycycsIFtdKSBpZiBjb25maWcuZXhpc3RzKCkgZWxzZSBbXVxuICAgIGlmIGFueShyb3cuZ2V0KCduYW1lJykgPT0gJ2RnZS1jb21wdXRlJyBmb3Igcm93IGluIHJ1bm5lcnMpOlxuICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ01hbmFnZWQgQ0kgcnVubmVyIHJlbW92YWwgd2FzIG5vdCBjb25maXJtZWQnKVxuXG5cbmRlZiBsaW51eF9jb21tYW5kcygpOlxuICAgIHJldHVybiBbXG4gICAgICAgIFsnc3lzdGVtY3RsJywgJ2Rpc2FibGUnLCAnLS1ub3cnLCAnZGdlLXdvcmtlci5zZXJ2aWNlJ10sXG4gICAgICAgIFsndW1vdW50JywgJy9ydW4vZGdlLXdvcmtlci90YXNrcyddLFxuICAgICAgICBbJ3N5c3RlbWN0bCcsICdkYWVtb24tcmVsb2FkJ10sXG4gICAgXVxuXG5cbmRlZiB1bmluc3RhbGxfbGludXgoYXBwbHkpOlxuICAgIGlmIG5vdCBhcHBseTpcbiAgICAgICAgcHJpbnQoJ0RyeSBydW46IHJldm9rZSBpZGVudGl0eSwgc3RvcCB3b3JrZXIgc2VydmljZSwgcmVtb3ZlIGxhYmVsZWQgdGFzayBjb250YWluZXJzLCB1bm1vdW50IHNjcmF0Y2gsIHJlbW92ZSAvb3B0L2RnZS13b3JrZXIgYW5kIGl0cyBzZXJ2aWNlIHVuaXQuJylcbiAgICAgICAgcmV0dXJuXG4gICAgaWYgb3MuZ2V0ZXVpZCgpICE9IDA6XG4gICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignUnVuIExpbnV4IHVuaW5zdGFsbCBhcyByb290JylcbiAgICByZW1vdmVfbWFuYWdlZF9jaSgpXG4gICAgcmV2b2tlKClcbiAgICBzdWJwcm9jZXNzLnJ1bihsaW51eF9jb21tYW5kcygpWzBdLCBjaGVjaz1UcnVlKVxuICAgIGNvbnRhaW5lcnMgPSBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChbJ2RvY2tlcicsICdwcycsICctYXEnLCAnLS1maWx0ZXI9bGFiZWw9Y29tLmRnZS5yb2xlPWNvbXB1dGUtdGFzayddLCB0ZXh0PVRydWUpLnNwbGl0KClcbiAgICBpZiBjb250YWluZXJzOlxuICAgICAgICBzdWJwcm9jZXNzLnJ1bihbJ2RvY2tlcicsICdybScsICctZicsICpjb250YWluZXJzXSwgY2hlY2s9VHJ1ZSlcbiAgICBzY3JhdGNoID0gUGF0aCgnL3J1bi9kZ2Utd29ya2VyL3Rhc2tzJylcbiAgICBpZiBvcy5wYXRoLmlzbW91bnQoc2NyYXRjaCk6XG4gICAgICAgIHN1YnByb2Nlc3MucnVuKGxpbnV4X2NvbW1hbmRzKClbMV0sIGNoZWNrPVRydWUpXG4gICAgUGF0aCgnL2V0Yy9zeXN0ZW1kL3N5c3RlbS9kZ2Utd29ya2VyLnNlcnZpY2UnKS51bmxpbmsobWlzc2luZ19vaz1UcnVlKVxuICAgIHNodXRpbC5ybXRyZWUoUk9PVClcbiAgICBzdWJwcm9jZXNzLnJ1bihsaW51eF9jb21tYW5kcygpWzJdLCBjaGVjaz1UcnVlKVxuXG5cbmRlZiB1bmluc3RhbGxfbWFjb3MoYXBwbHkpOlxuICAgIGlmIG5vdCBhcHBseTpcbiAgICAgICAgcHJpbnQoJ0RyeSBydW46IHJldm9rZSBWTSB3b3JrZXIsIHN0b3Agd29ya2VyIGhlbHBlciwgZGVsZXRlIGRnZS13b3JrZXIgTGltYSBWTSBhbmQgd29ya2VyIHN1cHBvcnQuIEhvbWVicmV3IGFuZCBMaW1hIHJlbWFpbiBpbnN0YWxsZWQuJylcbiAgICAgICAgcmV0dXJuXG4gICAgaWYgbm90IChNQUNfU1VQUE9SVCAvICdvd25lZC12bS5qc29uJykuZXhpc3RzKCk6XG4gICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignTm8gb3duZWQgd29ya2VyIFZNIHJlY29yZDsgbm90aGluZyByZW1vdmVkJylcbiAgICBpZiBqc29uLmxvYWRzKChNQUNfU1VQUE9SVCAvICdvd25lZC12bS5qc29uJykucmVhZF90ZXh0KCkpICE9IHsnbmFtZSc6ICdkZ2Utd29ya2VyJ306XG4gICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignSW52YWxpZCB3b3JrZXIgVk0gcmVjb3JkJylcbiAgICBzdWJwcm9jZXNzLnJ1bihbJ2xpbWFjdGwnLCAnc2hlbGwnLCAnZGdlLXdvcmtlcicsICdzdWRvJywgJ3B5dGhvbjMnLCAnL29wdC9kZ2Utd29ya2VyL3VuaW5zdGFsbC5weScsICctLXJldm9rZS1vbmx5J10sIGNoZWNrPVRydWUpXG4gICAgbGFiZWwgPSAnY29tLmRnZS5jb21wdXRlLXN0b3JhZ2UtcHJveHknXG4gICAgcGxpc3QgPSBQYXRoLmhvbWUoKSAvICdMaWJyYXJ5JyAvICdMYXVuY2hBZ2VudHMnIC8gKGxhYmVsICsgJy5wbGlzdCcpXG4gICAgaWYgcGxpc3QuZXhpc3RzKCk6XG4gICAgICAgIHN1YnByb2Nlc3MucnVuKFsnbGF1bmNoY3RsJywgJ2Jvb3RvdXQnLCAnZ3VpLycgKyBzdHIob3MuZ2V0dWlkKCkpLCBzdHIocGxpc3QpXSwgY2hlY2s9RmFsc2UsIHN0ZG91dD1zdWJwcm9jZXNzLkRFVk5VTEwsIHN0ZGVycj1zdWJwcm9jZXNzLkRFVk5VTEwpXG4gICAgICAgIHBsaXN0LnVubGluaygpXG4gICAgc3VicHJvY2Vzcy5ydW4oWydsaW1hY3RsJywgJ3N0b3AnLCAnZGdlLXdvcmtlciddLCBjaGVjaz1UcnVlKVxuICAgIHN1YnByb2Nlc3MucnVuKFsnbGltYWN0bCcsICdkZWxldGUnLCAnLS1mb3JjZScsICdkZ2Utd29ya2VyJ10sIGNoZWNrPVRydWUpXG4gICAgc2h1dGlsLnJtdHJlZShNQUNfU1VQUE9SVClcblxuXG5kZWYgbWFpbigpOlxuICAgIHBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKGRlc2NyaXB0aW9uPV9fZG9jX18pXG4gICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1hcHBseScsIGFjdGlvbj0nc3RvcmVfdHJ1ZScpXG4gICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1yZXZva2Utb25seScsIGFjdGlvbj0nc3RvcmVfdHJ1ZScpXG4gICAgYXJncyA9IHBhcnNlci5wYXJzZV9hcmdzKClcbiAgICBpZiBhcmdzLnJldm9rZV9vbmx5OlxuICAgICAgICByZW1vdmVfbWFuYWdlZF9jaSgpXG4gICAgICAgIHJldm9rZSgpXG4gICAgZWxpZiBzeXMucGxhdGZvcm0gPT0gJ2Rhcndpbic6XG4gICAgICAgIHVuaW5zdGFsbF9tYWNvcyhhcmdzLmFwcGx5KVxuICAgIGVsaWYgc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoJ2xpbnV4Jyk6XG4gICAgICAgIHVuaW5zdGFsbF9saW51eChhcmdzLmFwcGx5KVxuICAgIGVsc2U6XG4gICAgICAgIHBhcnNlci5lcnJvcignVXNlIHVuaW5zdGFsbF93aW5kb3dzLnBzMSBvbiBXaW5kb3dzJylcblxuXG5pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOlxuICAgIHRyeTpcbiAgICAgICAgbWFpbigpXG4gICAgZXhjZXB0IChPU0Vycm9yLCBSdW50aW1lRXJyb3IsIHN1YnByb2Nlc3MuU3VicHJvY2Vzc0Vycm9yLCBWYWx1ZUVycm9yKTpcbiAgICAgICAgc3lzLmV4aXQoJ1VuaW5zdGFsbCBpbmNvbXBsZXRlOyB3b3JrZXIgY3JlZGVudGlhbHMgaGF2ZSBiZWVuIHByZXNlcnZlZCB1bmxlc3MgcmVtb3ZhbCBzdWNjZWVkZWQuIENoZWNrIGNvbm5lY3Rpdml0eSBhbmQgb3duZWQgc2VydmljZXMsIHRoZW4gcmV0cnkuJylcbiIsImNvbmZpZy5qc29uIjoie1wib3JpZ2luXCI6XCJodHRwczovL2RvcmlhbmdyYXkubmV0XCIsXCJlbnJvbGxtZW50XCI6dHJ1ZX0iLCJkZ2UtaWNvbi5wbmciOiJpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBTUFBQUFEQUNBSUFBQURkdnZ0UUFBQUFJR05JVWswQUFIb21BQUNBaEFBQStnQUFBSURvQUFCMU1BQUE2bUFBQURxWUFBQVhjSnk2VVR3QUFBQUdZa3RIUkFEM0FQWUE4WGlrK3RvQUFBQUhkRWxOUlFmcUNBY0FJRFVWbXdHOUFBQlAxVWxFUVZSNDJ1MjlaMXhVMS9iL2Y5cjB6c0RRbS9RdUNJb0NDaGF3Vnl5eHhwaW9NYkhFOUtpcEpocExURXpzdmZmZUFBdUlJcjMzemxBSEJtYVkzazc1UHpoS3VDYngzdS9sL24raXp2dkJmZDBrdzV5eVA3UDIybXV2dFRhbzB5b0FNMmIrVzZDWGZRTm1YbTNNQWpMVEo4d0NNdE1uekFJeTB5Zk1BakxUSjh3Q010TW56QUl5MHlmTUFqTFRKOHdDTXRNbnpBSXkweWZNQWpMVEo4d0NNdE1uekFJeTB5Zk1BakxUSjh3Q010TW56QUl5MHlmTUFqTFRKOHdDTXRNbnpBSXkweWZNQWpMVEo4d0NNdE1uekFJeTB5Zk1BakxUSjh3Q010TW56QUl5MHlmTUFqTFRKOHdDTXRNbnpBSXkweWZNQWpMVEo4d0NNdE1uekFJeTB5Zk1BakxUSjh3Q010TW56QUl5MHlmTUFqTFRKOHdDTXRNbnpBSjZFUVJCRUFSQi9wK1hmUy85RkxPQS9oR0NJR0FZaGlDSUlBZ1FCRi8yN2ZSVHpBTDZHMGk3QTRLZ1Vxa3lHQXdnQ0JJRUFRQm1JL1EzbUFYMFBPUnNCWUlFQUlCYnR1NTQ5T2dKbmNGOE5wV1plUjZ6Z0FEZ21hOUQ5SklKQkVGYXJlNysvUWRGeFNVQUFQWjRRczk5ekF6eXNtL2dwZEZMQkdEdmZ5UW5MQXFGV2x0YldsRlJYbFJVWkRJYUlBZ0NYdWhLdjdGTzBodG5nWHJiRXZMZjREZ0d3ekNUeFdJd21Vd21rL1NhY1J3dktDeHljbkx1N2xZMGlCc1JCTUZ4bkVhak1Wa3NKcE5KWnpDZSt5cnl5OTVBeS9SbVdTQnlQVVVPTTQxR3d6QWNBQUVHbGRFdWFYMlkrbGlqMFZwWldnNGROa1Jvd1c5cGtUUTFOUThiTnBSQ29lVGxGUXh3ZGFIUmFKV1ZOZmtGaFFhRDNzUERmZWpRY0JpR2pRWURnc0E0anFNbUV3QytjYjlHNEUwVEVLa2VFQVFCRUhyeUpLdWt0QXpIY1NvRlNVcTYyOWpVeEdBd0FBQms3MlB0MzdlcnRLeU14K05uWm1iNisvdUx4WTBLaFNJeDZlNk9IVHN0TEN3VUNnVUlnbEZSRVo0ZW5ucURrY3ZsUkVRTWRYWnlNQm9NSVBUR2Flak5lbURTOXNBd2N1amcwVFVmclUxS1NqS1pUQUFBRnBlVURCdzRjTnEwYVdQSHhqVTN0NnhhL1hGeGNabFFhSkdXbGlZV2k2MnNMUC9ZdFcvRGhtOURRa0xDdzhNWExGaWcxK3ZyNnh2WWJIWkRnM2ovL2dNZmZMQzZvcUthU3FQaU9QNm16V0Z2bklDb1ZFcGRmY09UOUhRM043ZlEwRUVTaVdSZ2NORGh3d2RUVTFNQkFEQ1pUQkVSd3k1ZHVrU2hVUEx5OGpRYVRVcEtDcHZOdVh2M3JrcWw4dkR3NEhLNWVYbDU5dloyQnc3c2IrL280UE01UTRZTXB0TnBkeElTY1J3QVFSQjR3OXlnTjB0QUlBZ1NCQUJEME9EQmcxMWRYZVBqcHk5YU5EOGhJY25OYlFDWHk2MnJxd01Bb0txcUtqUTAxTUxDNHRTcFV3QUFkSFYxblQ5L1BqNCtIb0tnK3ZwNkFBRHk4dktpb2lJYnhXS05ScnR1M1ZmKy92NysvZ0ZPVGs0b2lyN3M1M3NKd092WGZmbXk3K0gvS1RpTzgvazhDd3VCaTR1VHM0c1RqVVp2Ym03Snk4dS9lZk5tZUhoNGJtNXVjM1B6b2tXTFRwNDhXVmxaT1diTUdCekhueng1TW1qUUlHdHI2NVNVRktGUXFOY2Jpb3FLM04zZFJWYVczdDZlUEM3SDJsbzBLQ1NZeWFTL2dac2ViNWFBUUJBay9XZ3JLNkdkblMyTHphcXZGKy9iZC9Ea3lST1RKazFxYTJ0NzlPalI4dVhMMDlMUzd0NjlhMjF0ZmZEQWZocWRscHI2S0Q4L1B5NHVEb2JoYTlldVQ1NDhxYkN3OE02ZE83YTJkcEVSNFR3ZXg4blJrVXFsNERqK3Bxa0hlQk9tTU9KZklmK04wV2lDWWJpclU3NWx5N1pyMTY1T25UcVZRcUdVbFpYOThjZnZ0YlcxMTY1ZEEwRnc3ZHFQd2dZUFdiNThhVlJVbEZxdDNyMTdkMXhjM0R2dnZIM3IxcTM0K0hnT2g3TnQyN1pMbDY1U0tGUU13M3Jtcjc5ZTd2WG10YlZBdlVNK3owV1pxVlFxUVFCMzd5V3ZXclUyTHk5djBhSkZYVjFkemMzTkJ3N3N5OHJNMnJaOU93QUFhOWV1M2JEaHk2eXNMSUdBUDNyMHFJY1BVOFZpY1dscDZiZmZiTEN4dFR0OSt2U29VYU40UE43K0F3YzdPam85UFQxRklxdmVHbnAyTlFBRVFBQWt5R0QzYThuckthQWU5UkFFZ1NBSWpVYWowcWdJZ21BWVJxRlFXbHJhVHB3OHMzdjNub0tDL01qSXlMUzB0SXFLaWtPSERsVlgxM3p5eWFjb2lrNlpNbVg3OW0zMTlYVmZmcldocWJFNWZzWTBkemVQK3c4ZU5EVTFWVlhYZlBIRkYxMWRYZHUzYjNkeGNhSFQ2VGR2M3BKMUt5QUljWGNiQUlJQWdpQjBPcDFDb1VBUWlPTTRUaEFnK0RvbmhMeUdBdXB0ZStoMHVreldYVnhTV2xKY0lwTjFXMXVMMnRvayt3NGNGb21zQ2dvS3RWcHRWVlZWZTN2N2lCRWpvcUtpdnY3NjY4YkdSaWNucDYxYnQ4cmwzYnQzNzEzNjNoS1pyQ3YxVWRxRWlSTVJCRWxPVGhhTHhSWVdGZ0VCQWRldlg2K3Fxc0p4RE1Qd3dXR2hHSWFWbEphRmhRMlN0SGZrNWhiVTF0V1pUQmlmeDZkU0VSVEZYdU9rb3Rjd0V0MmpIZ1NoSkNiZVQzMlVKaFFLV1N4R1ZuYmVtYlBuREFiai9QbHZLYnFWbVpsWkFQQjBVR1V5MmIxNzk4ckx5d0VBaUlpSVlEQVl1M2Z2aVl3Y0doczdOaVE0Nklzdk4xeStmRGtrSkVRa0VuVjBkQ1FsSlJtTlJnekRBQURvNkpEaU9KNmZYN0IrM1ZmSFQ1ejhjT1ZhR28zbTdPeEVvOUVmUDg2Z1VPQTVzMmU1dURnYURFKzNZMTgvWHNPbkltY3VHbzEySitIdXNlTW45SHBkWGw1T1hWM2Q2TkdqaGcrUHFxbXBjWFIwckt1dkp3Z2NlT2F2RkJZV0ZoY1hXMWxaQVFBQXcvRHQyN2ROSnNQNGNYRUd2ZExTeW1yczJOaWtwS1Npb2lJMm13MEFBSVZDU1VwS3dqQ3N4NkkwTmphaUdFcW4wOVZxOVpJbGl5MHRMYk95c3BxYUdzWGl4bTNiZjIxdmx5SUk4cnI2MUsrMkJmcFhUeGtBd2FkcEZUQU1LeFNLNjlkdmRIUjBYTDkrSGNkeEFBQ09Iejk1NHZqUmNlUEdYcnAwMWMvUEY0SWdITWRKdzJBd0dGSlNVdXpzN0hnOFhsMWRYVk5UazdPek00TkJ4ekFjUTAwV0FuNWRYUjJLb2thajBkN2V2cVdscGJhMmxyd0I4bksrdnI1cXRUWXZMMy9ONnBYSGo1L1l2djBYUHAvZjNkM3Q3ZTN0NU9TY2xIVHY3YmZuYTdYYTUyNFY2TDAzOThyeUNsdWczdXBCRUpoS1JVaFhBeURUd1hTRzJ0cmE1T1JrSHgrZmh5a1A5dTNiQTRKQWRrNnVzN05MYzNQVG9FSEI3NzIzbE5RUStTZGRYVjJscGFWR283R3VyazZoVUpTV2xxcFVHZ3FGQWlQMDZwcGFxVlFxa1VpNnVycGtNbGxWVlJVNWZ4RUVnV0dZalkzdG1qV3JwZElPQm9PaFZHbXlzM09pb2lJek01OXMzYnFsc2JFeE56ZEhKcGYzcEtRQkFBRERNSldLd0REMDNDTzhvcnpDVGpUNTZtRVlBa0N3bzZPclc2NmdVcWtVQ2tKbTh6Q1pUS1ZDbVpXVnZYbno1cmk0c2RldVhkUHI5VE5tekRBYWpXcTFPanA2dUtlSGw0Mk5EZW5OR0kxRzBrcVpUQ2ExV3QzZTN0N2Eyc29YQ0tKSFJOWFYxYTFiL3pYcGE1dE1KaFJGUVJDRUlJakw1VG82T280Y09mS2pqejZLamg2aFVpcXJxcXI5L2YwcEZFcEpTY25reVpPblRKbVdtNXVEb2RqcU5TdXRySVJrbUJHQ0lJVlMxU0h0QWdpUXhXS1NGMzJsTFJDbzB5cGU5ajM4bHhBRUFVR1FScXU5Y2VOT2MzTnJnN2hoY0ZqWW5Oa3pLQlFFeDNFR2c2SFI2ZzhjT05UZTNnSERVR05qNDZKRmkzeDhmRTZjT0ZGVlZmM2JyOXNwVkZwTlRWMWVYbDVwYVVsV1Z2YWpSNDh3REhOMWRiV3pzMk13R0hRNkhRQUFEdzhQbVV3bWFXK0hJVWlyMDZsVnFwcWEydTV1dVkyTnphaFJvM3g4ZklLRGd3Y09ETEt6czA5K2NQK1hIYjk5K3VsYVIwZm5xMWV2WkdmbitQdjdkWFIwVHBvMGZ0U28wUWE5R3NNd0twVlNXeWMrY3VTNFRxZHpkWFVkRkRJd1BEeU1qQjY5dWhwNlZRVkUrcVFNQnVQa3FYTXRMYTFzTnR2ZjM5ZlJ3VjRvdEtEVHFUQ001T2JtLy9yYkh6UWF6ZEhSd2NYWmVkeTRXSHNIbDVzM3IyZG41L2o3K3lja0pBWUUrSWxFTm0xdGJVMU5UVGs1T1UxTlRmUG16VjIwY0lGUWFFR2hVS2hVcWxLcExDOHY1M0M1WHA2ZUJBQ2dLR295R3ZJTGlyWnUzVjVSVVJrZVBzVEx5OHZSMFpITlp1Zm01dkw1ZkhkM3QrTGlrbFdyUHJDenMzdVlrcHFabGRYVzFsWlhWeDhhT3VqREQ1WXpHSFFRQktXZFhWcXROaTB0QThlSjJ0cmFkOTk5MjhuUndXZzA5WGh2cnh5dnNCTU5naUNLb3RYVk5Ud2VUeWFUV1ZvSzNkeTk5RG9sQUFEZEN1WG1uN2Y1K2ZrdWZudVJ3V0RFQ1FKR3FGZXVYTHAxNjQ2Zm4xOXE2cVBjM0Z3cWxZcWllSGQzTjQxR216aGh3cGd4STRORFFpQUlKZ2dNQkFHQ0lPZ01rYldOUFVFUUlJQUNUNHQ2OExpNDJMRFFrS1NrZTBYRkpTaUtkclMzS3hTSzh2SnlyVmJMWkRJeERQdnR0OS9mV2Z5Mms3TXpqOGRsY3pqdDdlM2ZmNytSeCtPdFd2bStXcTIydGJHRkVkcmp4MDgwR3ExT3AydHRhUnZnNm1JMEdsL2RVUFVyYVlGSTN4UERjQmFMbVphV3NmL0E0WXFLY2hxTnRuTGxCeU5IUmd1RjFybTUyWjk4OHRtS0ZTdjRmQzZmeHpjWUREZHUza3BPVHFaUUtOYlcxcEVSd3laTm11anM3QWhDSUFnQUNFSURRTmlnVjBzazdXMXRiUXFsVXFmVmEzVjYwcjhHUVFDR0VScU55dVd5TFN3c1JGWldsbFpDT3AwREFMakpxRWRSbEVxbDZIVDZqTXpzSzFldTFkYldTcVZTR3h1Ym1UUGpRMEpDRk4zZE9FRmN1blJacDlVY09MZ1B4OUNxcXBvTEZ5K2ZPblhhemMwdE9EajRzMC9YMG1pdjlpN3NLeWtnNEZuWnFGS3BPbnIwWkZsNVdXQmdnTUZnS2lvcXRyRGd6NXc1SXlucEhnaEM0OGVQRXdvdHNyT3pEeDgrV2xKU0Vod2NQR3RXL0xoeGNiYTJ0amhtQWtFSVJiRzJ0cmJxNnRxYTJycnViZ1dOUnFQVGFRS0J3TkpTU0tYU1dDd21ETUZHazFHdjE2dFVhcFZLMmQydFVLblVJQWhZV2xvT0dPRGk3ZVZwYVNuRWNkeGtNbEZwTkJ3bkNnc0t6NTIvZFBYcVZZUEJNSFhxMUZrejR5MkVGa1ZGSmFtcHFWR1JFUkFNWGJod3lkN2V3YzNOVlN3V2QzYko1czJkRXowaThwVjJnMTVKQVQxYnE4TzdkdStqMGFodnpabE5wVkxZSEY1VFUvUCsvUWNmUGt5SmpvNTJjWEdoVXFtRmhZVkpTWGROSnVPOGVYTVh2NzNRenM0R1JWRVlocFVxVlZGaFNYNUJVWGQzdDQyTnRiZTNwN096TTR2SjFPbTFDb1ZLcVZUSlpES0QzZ0JDSUVFUVRDYVR6K2R6dVJ3Qm40dFFhTjN5N3ZxR2h2THlTb1ZDWVdOdFBYaHdxSyt2TjRVQ0cvUUdLbzJHRTBENms0eGR1L2RtWkdSNGUzdVBIajNhenM2dXU3czdNek96dmIxOXhZb1ZFeWFNSndoVXE5RTJOallmT254azl1eVpRd1lQMHV2MVpLckp5MzYxLzJkZVBRR1I3ak9kUml1dnJMcDU4ODY0c1dOKzNySzl1YmtsTEN4MDJyUnBjbm4zM3IxN05ScU5wNmNuanVOWldWbk96czZmZkxJMll0Z1FETU1RR0ZhcE5ZOGVwK1ZrNXpHWWpNaklZYjQrUGxxZHJyS3lzckN3dUtHaFVhdFZ3ekRDWnJOSlA1cEdvMm0xV2hSRlRVYWp3V2pFTUpURjVqZzdPUVlHK250NmVPQUVVVkJRbUpPVFI2UFJSb3lJREFrZUNNT1F3V0JnTXBsS2xmcm8wUk5Iamh6bDgvbEJRVUZ0YlcwTkRRM1IwZEdMMzM2N3NLanc4dVVyWXJING5jVnZEM0J6eTh2TCsyak5oMlJnQ1hnRjdkQ3JJYUIvaVRnREFJSGpkRHBkSW1sUFNMeXZWQ3JYcmwwYkZCUTBlOWFzc3ZMeVFZTUdIVGx5aEU2bkJ3WUdabVJreE1URWZQWGxaeUtSSldveVFUQ2NucDZWbUhSWHdCZE1uRFRld2Q0dXY2RHcvdjFrc2JpUnorZDd1QS93OXZaeGRISVFDSGhNQnBOQ29jQXdERUlnanVFNGpwbU1KcTFPSjVOMzE5YzFsRmRVMU5VMWFEVHFBUU5jUjQ4ZTZlWHBVVnBXa1pSMGowS2hUSmt5MGQvUFI2ZlRBUURBWURMdjMwdis1dHZ2YVRTYWs1UFR2WHYzWW1KaTNOM2R4ZUlHS3l1cm4zL2VFaG9hK3NuSEg2T1lhZDdjMlZxdEZnQkFjbS91MVFwUHZ3SUNlaTQzZzN5ekJvTXhKeWYveE1sVGJXMXRKU1VsNDhhTisrM1g3VjkvODkyOWV3K2FtNXVDZzRQYjJ0cm16NSszWnZXSEJJRWpDTkxSSVQxNzdxSkNvWnd4ZllxN3UzdlMzWHUzN3lRaU1Cd2VQamc4ZkxDVG95T05UaWNJSE1jd0RNTkk5N2wzRmhFWkEwUmdHSVJoRUlSMFdtMkRXUHpvMFpQTXpHd1dpekZwMHNTaDRVT3ljM0lURXBKOGZMeW5UNXZFWXJGME9pMmJ6YW1xcXYzNGs4KzZ1N3ZWYXJWRUl2SHc4UGg1ODA4Y0RtZlc3TGRZTEphMXRYVmtaT1NNNlZOY1haMXduSUFnQ0VYUm51ZDlKVFQwQ2dnSUFNaEtCNEpLcGNwa2NwMU94K0Z3VHAwNjI2MVFob2NQRVl2RmQrNGt2UC8rOGxHalJzNmJ0K0QwNmRNOEhzL1IwZkhqano5YXRIQytYcStqMCtrWkdkbFhyOTBZUERoMHl1UUo2ZW1aeDArY29WSXAwNlpPR2pZc25NbGlZNmpKYURUMmxzcy8zMFpQNVR4SW9kSmdHT251N242VW1uYnoxaDBFZ2Q1ZXRORGIyK3ZrcVROTlRjMkxGczczOG5KVHFkUXNGcXU5by9QTEw5Y25KQ1JJcFZJWVJxNWN1VGhod3FSMTY5Zkx1am9uVFpxbzArbWZQSGt5ZGVya0FIOC91YnpiMmxwRW9TQmt2UHVWME5BcklDQnkyQ2dVYXRxVGpPenNYTEZZM05iVzV1bnA4ZldHTDZsVUtnVFRFeE51MzBsSTlQWDEvZlhYblIwZDdUaE9IRHE0YjlyMEtUcXRoa0toWGI1eUxTK3Y0TDEzRjF0YUNyZHMzZEhVMURUM3JWblJNU1BvTkxwZXIvdW56WVRuTnMvLzZ1RStLekdEYVhTR1dxVytrNUI0NmRLVjRPRGdEejljWGxoWWZPblNsZkhqNDBhTmlsYXIxRFFhVGFmVHIvaGcxZG16NTJ4c2JJWU5Helo2OUtqaTRwSWZOMzdMNVhFQkFNckt5dDZ5WlJ1THhYSnlkSFIwY3Bvd0lVNWtaVWxxNkdXLyszOVBmOTlNZlpxYlFhVVdGNWNrSnQ2enNMQ3d0N2NiT1RJR0FBQTZnMDJtWlBENS9PdlhiNVNYVnh3OWVuanQycld4c1dOY0J3ekFVQlFFNGNOSFRsUlYxV3hZLzRWTUxsLysva29lai92cnI5dkdqaHNMRUxoV3F5Ri80dVE0a2Y5TFhnNEVRUnFOeG1LeG1Td09rOFZtc2RsVUtwWDhqMEJQL3hjSUFrRVF4M0dOV29VZzBNeVo4Yi84c2tXcjFTNWI5b0dBei8vazQ5VVBIank4Y1A0S2c4RTBtWXdNQmowaUltTEtsQ2w3OXV4Kzk5MTNEaHc0MU5IUndXYXpjUXdEQUpqTllscFlXTVRGanFGUXFUUWEvZFNwY3lZVDJqTnJ2K3dSK0RmMDY4M1VuZ0dqMGVtWExsNFZXWXQwT2gyVlFsM3h3YkxFeEx0RlJVVXdCQmNYRjMvMzNRL3U3bTU3OSs1NjhpVGQzdDV1OXF4NHRVWWpzckk2ZFBpWXlXaFl1M2IxbGF2WDl1OC92R1RKNGtXTDVzRVFwTmZyU0orR3ZBb0lnZ0FBa2xxazBXZzBPbDJuTjlUVzF1WG01V2RsNWVUazVJa2JHaEVFRVZwYVVpa1VITWNvRkNvSUFqajJOUHBIcGdBWURYb3VoeE16TWhySDhWOSszZW5vNkxoZy90eGJ0eE1heEkyaGd3WjFkY2xvVkhwOC9MUzB0UFFSSXlLam9xSjI3dnhkMmlsak1wbmxaYVhIanArYU1HSDh5SkhSRnk5ZEhqa3lKamMzMTlISnlkWldSQnFoZm02SCt1OVdSbS9mR1FBUW9hV3dyVTFpWldWMStmTGw2T2poMzMvL3pka3paMi9mU1NRSXdtUXlmYkRpL1phVzFveU1yTFZyVnpvNU9tQVlmdWp3Y1FBQVZxMWV1Vy9mL3RUVXh6LzkrSzJYdDQ5V293SkFFSWJobnQ5Mnp5V29WQ29JUVJYbGxiZnZKS2FrUEN3cks1TklKSHE5SGdBQUJLRzR1cnJFeG82Wis5WmJRVUgralkwTkFndUJoWUJ2TXBsNmpBUU13eWFUeVdReXpad1o3K3JxdW1uVEZybE05dm5uSDIvZHV1UGMrWXR6WnMvZ2NqbDBCa2RrYlhYNjlQblBQbHM3Y2VMRWlvcHlPcDBHZ3VEOCtYTWpJaUozN05paDFXcFZLaFVJZ2tJTFBrRUFQVDVRZjNhRytxbUF5RmVHNHppTXdEUTZYUzZUMG1qVTY5ZHZCQWNQckt5c25CRS82K08xYXlaT21tQnJhNk5RcXJ1N0ZZNU9qbFZWdFJpR1VoQVlBS0VMRnkrcVZLcVBQMTYxNjQvZDJUbTVXMzcrMGQ3ZVRxTldRaERVNDV6MkZpaWR6cWlycno5OCtPanAwMmZGWXZGek40T2lwdXJxNnVycTZ2UG5MOFRHeGhZWEYxdGJXLy84ODJaUEQxY3lVWi84R0dtS05HcGxhR2p3NXMwYnYvcnFhNVBKdEhidHFpMWJmcm1UY0RkMnpDZ2NNL0M0bkh4cHAxNm5Dd3owOS9YMVdiNzhmWlZLWGxGUjlkNTc3MTI4ZUhuczJMaGp4NDdUYUZTMVJtc3dHSmxNbGw2bkpmcDMzbGwvRkZDUGVtZzBta3FsUG43eFRGbFpPWi9QV3pEL0xRNlhFeFU1dExtNXRhaTRORHNuejgzTnpjUERqWXk3S0pVS3RWb05nSEI2ZWtabFpmVVhuMzk4N09pSjdPeWNUWnMzV291c05Cb05ETU5BTDhQV294NGFqWjZRZU8vTEw3OHFLaW9pYjRDVXduTk9OQUFBVXFtVXJIY0dBS0N4c2RITnpXM2R1aStIRFlzd0diVW1rNG44R0FUQkdyWGF3MzNBcGswL2ZQSEZlZzZIczNMbCs3OXMvODNHMmlZNEpMU3pTNGFpYUdlWG5NRmdGQldWWEwxNjVlSERWSlZhYlNHdytQWFhiUndPUjZ2Vnl1WGRCdzhlZ1dGNHdvU3hFY1BDalFaRGYxN1k5enNCUGRzb3hSZ01SbE5UNjdidE8renNiRmV2K3NERzFnWkRzYzZ1VGdJbnhzU09ZZERwVXFrMFBTUHJ6cDNFZ29LQzZxcGFwVktGNC9qZHV3L0VZdkU3aXhjK2Z2ems1cTJFclZ0K3NyRVdhYlZhY3RvaWwxTUFHYk43bG5kMjVlck5wVXVYZDNWMTl1aUdYSm85ZDFmQXZ5N1dxcXFxS2lzcnU3dTdKMDJhR0R0bWRFaElvRTZuSTF0endqQ3MwV2pjM1FkOCs4MzZyNy81M3NuSmFkNzh0ODZldmVEbzVDQVdOK3IxZW5HRHVLcXk2dTdkZTBLaGNONjhPVDdlWG5RNnZVc21VNnRVTEJhTEw3QXdHdlM1dWZtSER4OHJLU2w3NzkzRktHcnN0eHJxWDh2NDNyYW50Vld5YnYyM1k4YU1uRGQzVG1aV2RsWldqbDV2SUZjL1ZDcVZUcWQ1ZXJnUEhSYU9ZZGllUGZ0emMvUHQ3R3hsTWxsalkrT1BQLzVnYlMzNjVKTXZQdm5rbzZGREIydlVhbEk5UGErK3QwYno4Z3Ruem5xcm9iNmVURy85UDd5NFh0OFdFaEt5YjkvdXdBQi9EUHR6V3hURE1CYWJlL3YybmVQSFQvN3h4Ni9aMmJtNXVmbE5UVTNraGRScTlYdnZ2Uk1kSGRNb2JraDdrdDdaMlFWQnNNRmdNQmlNSUFqWTJkbU1IQmxOcDlHKy9YYWpwNWZYaHg4c014aDBwUHI3bTRaZXNvQjZUU1VBQklFQUFPQTRUanFrbjMreFBpd3NkT1RJbUFNSERxdlZtc0dEdzRLQ0FseWNuUmdNdXNGZ2JHL3ZxS2lza3N1N3c4S0MzZHpjZi9ubDF3TUhEcnE3dXprN3Uzei8zZGNidnY0dUpDUjR5WkxGcE44RC9DWFNnK000aFVLUmRzcm16VnVZa3BMeWYxWFBuNjhQQkVuRjI5amFidCs2ZGZhY0dZWm4yNktrTFdPeU9GdTM3cEJLcFQvLy9PT0dEZC9sNStmcjlYcTkzckJueisrQkFYNFBIcVMydDNlNHU3dTVEbkFSQ1BnQVFYUjF5YXByNnJLeXNpc3JxNktpaHNWRVIzL3o3WGVqUnNiTWVXdTJScTNxOGVGNkFoQXZYVTh2ZVJuL0xLOFpodUduVVh3WWh1a014aytidG5HNW5Kam82QjgyYmhJS2hRc1d6STJLQ2hjS2hVV0Z4V2ZPbkR0OTVseEZSYVZBd1BQeDhXbHRsVUFnRVJzN3VxS2lLamtseGQzZHZiYTJYcVBSckYyN0NrT056NFY1Z0grWmpNRHZ2dnZ4M0xsemZVeHJKKzlacFZScXRkb3BVeVloQ05MemFBQUE0aGdXR0JodzZjcFZPbzBhRmpibzJyWHJqWTJOVzM3K0tTSnkySk1ubVZRYW5jZmxaR2RuWDc5Mkl5SHhycnhiN3VUazVPZm40K25wd1dLeHJseTUxdDRoZld2TzdBTUhEOXZiMjdtNWVSajBPbEl4VkNxMVIwWXZjZmlBbHk0Z2dpQVFCTzdxa3FuVUdrdExLd3FGZ3NESTc3L3ZxYW1wWGJSbzBROC9iSFIwZEh4M3lXSW5Kd2VaVEw1dTNkZHJQbHI3T0MyTndXQkFDRkpjVkhMNThwV2d3QUFXbTh0aE0zMTlmUzVldWx4UlVkSFZKZHV3NFVzYmF4R0tvbjliRWtwbWFGeTVlbjM5K2czL2s2WSs1RlhjM056aVoweW5VR0RTRStxWktMazhMcGZMUFhmdWdraGtmZVRJa1FrVEpueTBkbFZ0VFQxT0VGZXVYRDV5OUpnSlJidTd1N096cy9mdVBYRDc5aDFMUzJGSWNKQ3RqWTJqbytPWk0yZGhHSW1MaS8zOTk5M2VYaDVPemk1VUtvVWdpSWFHUmhhTCtkelUvRko0eVFMQ2NZTE9ZSlFVbC83d3d5WU9oMU5YMjdCMzMvNjJOc21QRzc4N2R1eDRaV1hsMm8vV0dFMG9CRU9mZnZyRjRjT0hvNktpamg0OXRHYjFoL0h4c3dSODN1RWpSeVNTanFpb0NKR1YwTXJLc3JxbTd0NjllNnRXcnB3NlpaSk9wLzNieVFzQUFCaUdOQnJ0dXZYZlZGUlU5RlFDOVFXQ0lNTEN3bjc0L3RzQkExeFFGQU9mUVk0dWFqSzZ1amdYRlpWY3ZYcTFxNnRydzRaMXJpNk9JQVFsSnQ0OWN1U29qWTNOc1dPSFo4MmNNV3RXdkxPVDg1VXJWNjlldmU3cDZXVWxFdUU0d0dhejkrL2Z2M0RoQWs5UGoxMjc5M1owZEJBRWVQYk11YVM3OStQaXh2UVVsNzNFRVh6Sld4a1FCT3AxdXFDZ0FEczd1ODgvL3lycDd2MUJvWVBXcmZzaVBUM3orUEVURVJFUk1ubTNnNzN0bzBlUFQ1OCs3ZUhoc2V1UG5VT0dEQ1lJSEVQMVo4NmVuVDkvL3BUSkV4TVNFdWgwT2tLaEJnVUZPRG82amgwN0JzZlI1Mll1a21jeFExcHhjVmxtWmlid3Yyak02K3JxK3ZQUG15OWZPaDhaT2ZRdnNXTlNSZ0FFUVRObnpTZ3JLeE1JQkY2ZUhpQUl5V1h5N095Y1AvN1lxVlNxSGo1OENBQUVrOGxZOGNHS3J6ZXMxMnExMjdiOVFrRmdnTUFkSEJ3NEhNNDMzM3puNWVueCtXZWZvQ2kyZGV2Mlk4ZFBUSm80bmthai9uZCsyLzk0QkYvdTVjbWZLWUlnMzMrMzRkTlBQMll5R1cydGt2MzdEbDYrY2xXbFVzbGtjaW9Wc2JTeXJxaW9BZ0FnTEN6TTNkMU5wVlF3bWN5R0JuRlJjY21ZTWFPQ2c0TzZ1dVI2dlFFQUNHdVJ5TlhWbGMxaC85czNtNW1aSlpmTCsrajlrQll1TUREd296VXJiYXl0ZERwZGorRjU5blJQVndrR2c4SFh4M3ZDaFBGMmRuWThIaGNBd1FaeEk1UEpqQjRSNWU0K0lDbnBIZ2lSdllMMVk4YU01dkY0OWZYMVhWMmQzdDd1TXBtTVRxY1hGeGNmT0hqNHhzM2JXcTNHMzkvdjBLRURZOGFNSkEveGVPayswRXVPQS9VNENoUUtNbWQyZkV0TFMzdUhWR2doWURBWU5UVTFPVG5abjM2eUdnRFFzTkFRQktFVUZ4ZDNkRWlGUWtGUmNYbEdSaWFMeVF3TkRTa3RMYVBSYU9TUVFSRGs0dXJLNS9QSnd2Vy9mYmtnQ0JxTnB0eThQS0JYRzRiLyt1WUJBRWhQVDgvTnpROExDK241dHQ3WC9mTVNJREIrM05qck4yNzFmQVpCRUJpR3hvd2VmZmpJMGZ5OFFoYWI2ZW5wVTFoWXBGQW9SbzhlSXhLSjZBeW13V0FvS0NqOC9QTlBWN3kvdEtxcUdnUkJWMWNYRG9ldDc3WFdlN2thZXNrQzZua0ZPSTRiREhvN08xdEhSd2NNUXhFS1plMUhxei8vWXAyMFUrYnM0ako4ZU9UUG16ZHQyNzc5dSs4M0NnUjhHeHVidXJwNlh4OGZEa2NnN1pCYVdBaW9WQVFBQUkxVzQrYnF3dVd3eVVMMHY3MGlCSUY2dmJHMXRiWHZOMC9lZVVkSHgvMEh5VU9HaFBVODBkOStHTWRRRDA4UENvV2lVcW00UEs2ZG5TMlZTbFVvRklNSEQvcDkxKzdDb3VLaW9pSjdPOXNMRnkrRmg0Zi8rT1AzQWdFUEFPQ3lzckxnNEtCRkMrZlI2ZFNnb0FBUUJJeEdVLzlSRC9EU3B6Q2dsNFpBRURTWlREcWR6bWcwYVRYYWFkTW1iVmovMWNXTGx6dWxVamFIcy9ianRZOGVwVENaektLaTRwRWpZMnByYTRZT0RRY0FvS0ZCSER3d0NJWmhBaWVrMGk1bloyZmczN3hUa0NEdy8yMUgxVnUzYm5kMmRpSEkwNjJTdno0Z0NJSW9pb21zaERRNnJhdExUdUM0dlowTmw4dXBycWx6OS9Dd3NiWldxWlJob2FIWHJ0LzhhTTJxdTNjVEJ3OGVRcUhTN3QrN3ExS3A5dTdaWldscG9kY2I5SHE5VHFmSGNSd0VlK2NSdkdUNnhWWkdqOFBiT3o2bTArbm56Smw1K3N5RjdiL3NkSE1iUUtmVFpESzVTQ1JhdmVwRGxWb2xrM1VQR2pTd3VhbSt0YTE5OXV4NERNTU1CbDE3ZTBkbzZDQ0FlTEVEUkVBUVJLUFIveWQzVHNxbG9LQWdKeWQzM0xoWWpVYnpUMzJBTUF6bDh3WFdJdXU2dXZxQUFGODJteFVTUERBakl6c3NMTnpYMXljN08rZlkwVU4wQnIyb3FGaXBQTU5nMHR2YnBSSkorN0psN3cwWTROSnJLNlpITkM5Zk9pUXYzd0w5Sy8rU3ZZQmg2S0pGODk5ZnZ0VEd4aG9FUVJhTGJXbHA2ZUJnVzFGZXp1UHhuSjFkYnQxTzhQUHpzYlMwQkVHd3Via1pSVkczQVM1R28rbkZQMDBDQUFqaWY3bCswZWwwYlcwU0FJUmY4RndFQWNBSUhPRHZXMVplanVPNHdXQU1Dd3R0YTJ1cnE2c09Dd3R0YUdoUXFSUWVIbTRDZ1FXRHlRUUlZTWlRd1Y5L3ZTNGtlS0JPcCt0UlR6K2tYd2lvVjZZZjBiT2RDWUtBeVlUZXVaTnc0K1l0ZDNlM2VmUG1TeVJ0eWNuSk8zL2ZVMWxWNCtIaFZsZGZMeFkzamg4WGF6UWFFQVJKZTVMcDdlMXBKYko4Y1owZTJXaWN3V0Q4VCs2Y3ZJcUxpOHVnUWNGazRQdWZIaEVFUVpQUkVCbzZTS0ZRMXRUVVFSQmtJZVJIUkF3N2YvNmlvNk1UaFVLNWV5OWwzNzRET1RsWnRyYTI4eGNzVWlnVXg0K2ZMQyt2SUE4SyttdWoyWmM5YUU5NStSbUp2ZE9tS0JRS2pVNmpVcWdRQkZFUXBMUzg0cWROUDFzS2hhZFBuMVVvdXV2cTZ0OTVaOUhqeDA5S3k4cjRmRjVOVGUzdzRTTjh2RDBCQUdocmt5UWxQWmd4ZlFxYnpYcHhwVEJCRUF3R3ZhcXFoanpib0krUWNjamhVVkhMbHkvRHNMOFBQZ0YvYnEvaUFvR2dvME5hVVZrOWVQQWdnOTVnNzJDZm5aTlhYVjB0bFVxTGkwdEhqeDVwYjIrWG4xOTAvLzY5a3BMUzl2YU9uSnpjMkRHallSaW0wV2hVS2hXRzRXY0YxLzNDZ3diNmd3WHFsWmRENit5VXBUNThjdnQyWWxGUnFkR0VlbnE0dVRnNytmdjVydnZxaTlPbno1U1dsc3E2NUJpR2RiUzNwNlE4ZEhaMjhmYjIxT3QxVkJyandzVXJGQXJzN094b05CcUJGLzVBQ1lLQVlOakZ4UVg0WC95T3lXOG9MaW1wcTY4bk54bithVkI3SnVWQmc0THYzYnRYVWxwT3A5RndIQjg5YXBSRUlpa3NMRFFZOUVxbHFydGJjZlhxRlJRMWZ2L2RCZ1JCQmc4T3BUTTRYVjJ5aDZtUDc5eEpLaWdvd1hHQ2JKalhIOVFEOUJNTFJLcm5TWHJXdnYwSHhlS21EcWswT3ljM0lmR3VwNmRIVFBTSXJkdDJqSjh3VHRHdHZIbnJGb1B4MU1BTUhqeDR5SkFoZEJyTjF0YTZwTGowMDg4K2o0Z1lOaXhpbU1uNDc4TnJDSUxvZGZxclY2K1RvYjgrM2o4SWduSzVuTThYakJ3WjA3TzQrOXN5ajZmMkNZTDI3ei9ZM053OGZ2dzRvOEhRM2Exa3NWZ0toY0xTMHJLN1cxRlFVRkJlWHJGejU4NExGeTRaallaUFBsNXovUGp4RXlmUHlHVHl4cWFXek96czZ1b2FMeThQQm9QUlQxb3l2SHdMQkFBQTJTYmh4SWxUS0lyeGVGeWowZWdmRUJBV0d2cjFOOS9qQkRFeUp2cnMyZk04UHIrcnF5c2g0WTVlcjQrSWlQRDE5WlZLcFVZVFdsVmRkL0RRRVJxTnhtRnpnSDkzc2pLcExZUEI0Ty92R3hrWkFmenZWc0puenB5cHFxcWgwYWd2dG1vNGp0T29OQ2NucC9yNmhyMzdEcUVZSVpmTElRZ2FQbnk0aTR0TFJVWEZ3NGNQK1h4ZVUxTnpkbmJPc21YdjdkdC9LRFgxMGZqeDR4a01CZ0FRdGpZMkdSbVppVWtQZW5ialgvYlE5UU1MQkFBQUNBQTRRYUFvSGhqa0h6RnNpTkJDY092V0hVc3JvWWVIKy8zN3lTRWhnOUxUTTFwYVdvcUtpanc4UENJakkrVnl1Y2xrSW5QL3JsMjdEaENFUkNMeDl2RUpEeDlxTXVyL3lSSHBBY2R4RHBkTjRNQ1ZLOWYrSjhzeDBnaloyZG1OR0I1RjN0Zy91VUV3RE92MGhsT256bGhhV2lvVUNxbTBrOFZpTlRRMHlPVnlCRUc0WEc1T1RvNWVyK2R5dVZRcTFkUFQ4L0xseTR2ZlhuVDZ6RmxMUytHa2llTjlmYjNaYkxhM3Q2ZTF0YWlmdE1mckZ4bUpwSG1IWVJpQ0lBQWdZSVRSMnRxOGV2WGE2ZE9uNStUa0NBU0N4NDhmVjFWVldWbFp4Y1RFdExhMjRqaHViMi92NCtPajErdUdoZzkyY25hcHFLaTRjdVhxd2dYemZIMjk5UG9YTldYdTZjS3BVbXZtemwxNDkrN2QvenFickFmeUd5SWlJaTVmT3MvbmMxRVVJNVBqL25wZEtwVjI2UEJ4cFZJeFovWXNPb1B4NEVGeVY1ZE1yOWVYbEpRb2xVcExTMHNBQUs1ZHUyWnJhK3ZqNCtQbDVjWGhjTHE3dXhFRVhyOStBNGJwZ1dkTDFCNVgrbVVQWFQrd1FEMXJDaHpIVVJURk1FeXYxMXBhV3JXMXRWVldWbUVZbXBhV1ZsVlZ4V2F6dVZ4dWVYbDVjM096UXFIQU1MeTB0TlRmMzIvNDhFaEZ0MEtwVXJHWXJQS0t5b0ZCQWVUWHZ0aVp4WEdjdzJHN3Vyb21KQ2FSbFRSOWZ4Q0J3R0xPN0hnMm00M2pHUGgzV1FBMEdxMnlxaVlyTzNmNDhFaVRFYld4c2VKeTJEZHUzQ3d1S1pWS3BYVjFkV0t4V0M2WDgzaTh6czVPdVZ5dTArbEVJbEZkWGQyU0pXOExMWGc2bmE1SE9rQS9zRDBrTHo4UzNTdTBTdlRZZVFCSHZiMDgwOU16R3NYaTNMdzhNbmpQNVhMSGpCbmo0ZUhoNU9RSVFXQkhSMGRkYmYzSG4zd3haZkpFSjJmbndxTGJxTW1vVXFrNXozYmovK2szU3M1d09wMHVhbmpFMXh2V3IvaGdaUjhuTW9GQU1IMzZ0Qmt6cGd1RndyK1dKUGRzOWtFUTFOTGNVbDFWN2VicU9uVFlrTjI3OTRuRmpiNitQaU5IeFFnRWd1NXVSWDE5UTI1dWJuWjJ0bGFyYld0cmswZ2tJQWc2T2pwYVcxdVRiWTE2NzlmMkV3djA4Z1ZFOHF4VzRxbXB4d21DeStPVmxwYlcxTlFZalVablorYzVjOTRhT3piVzFkV1Z3V0N3V1V3UUpCUUtsYjkvUUhaMnp1NDkrMmJNbU9idVBxQ2dvSkROWnBNTksxL3dmb21uOVRlUVFhK2JOVHYrd3NWTER4NDgrTzkyNXNtLzh2YjIzdkhMVmphYlJSWVlQWGZkbnJSZEVBUTVYQTZLbWdhNHVXN2V2QVVFb1JrelpyaTZ1bGhhQ2xoTXBsNXYxQTAxakI4M3RxQ2c4Tno1ODdkdTNlcnM3RXhOVFoweFl3YWRSdnRyNzRmK29CNmcvd2pvT1VBUTBPbTBEUTBOZXIxKzlPalJ5NWN2ajRxTUVBaTRCRUdnR0laanVGS2xhbTV1cWE2dWtVcWxLSXF0WExuYXljbHArUERoS0lhaEJoTU13V1RENkgvSzZDREhBOE53SHBjVEdCanc0TUdEUHIxRUJKSEx1eWtJVEpZR1BGY0JRbDVScDlPQklFVGdSSHQ3KzRJRkM1VksxZlRwMHdzS0Nnd0d2WWU3dTBoa1JhZlQrSHkyaFlEajdPd1lFQmc0Y09EQVE0Y09OVFkydHJhMG9DaEtac3IyUS9xamdBaUNBQ0ZLUlVXbHdXQll0bXpad29VTEdReEdnN2l4cEVTbFVxdEFFT1R6Qlk2T0RvR0Ivc0VEL1J2RVRTNHVUaTR1VG84ZnA1V1VsSHoyNlpjV1F1R2FOU3ZKc042TEx3U0NvTW1FZG5SSSszakQzdDVlSXBFVmptTi9tMk5LRUFTTlJzM016RGwrNGhTS29oS0p4TkhSS1NZbWV1alE4SUVEQTRVV0FwVksyOVRjMHRqWVpEQVlhRFFxajhlalVtbFRwMDcxOXZiZXVIRmpiVjJkVXFsa3MyMHh6QWowRzhQVFEvOFNVRStkdVU2cmVmSWtZOGlRSVg1K2ZubDVlWjJkbmJXMXRRaUNpRVFpb1ZCWVhWM2QydG82ZG14Y1pNUlFMeTlQRDQrNXMyYk9OQmgxMmRsNW16ZHZIUlFhWWlIZ2tVa3pMN3dXUUVGZ1NVZG5jWEZ4SDIvWXdzSUNoaUVjeC83NkFmSWVVQlR6OWZYVzZYUzJ0blozN3lhSXJJUVVLcFBBc1RaSmEyTGkvZnNQVW9xS0NpTWlJaEFFNmV6c2JHbHBFWWxFNUdGa1k4ZU92WGJ0V2s1TzN2UVpVOGtVeEg3aSt2ejVnUDFoR2Q4YnNubnZvOGRQNXMxYk9HVElrQUVEQmxSWFY5Ky9mOS9Pemk0dWJ1eTc3eTcyOXcrOGVPSGNEeHQvV3JObXRWUXFOUmlNRERxTnkrVzJ0clcydGtvbWpCODNmbndjaHFFdmZ0SGtvby9GWWlVbTNaczJmYVpPcS8wdmJwVmN2VWZIeEZ5NmNKYkZlbEZvR01keEdwWGEzaUU5Y3ZTRVdOdzRNQ2dRb1NCU2FhZEdvM01iNEZKYVZsNVNVbkwyN0VrdWgzUDEyczJUSjA4OWZweG1hU21NalkyRllUZ3BLY25UMC9QVXlhUFBUWTc5aEg0UmllNkJJQWdZaHJRNjNmNzloL2g4dnB1Ykc1VktiVzV1WHJIaS9XKy8vVWFsVW5aMWRRRUFNREI0b0kyTjdlREJnejVhOCtGYmI4M3FWaWkxT3AxT3A1Zkw1ZU1uL0ttZXY1M0NlZ2R3Y1J4UFRrN1YvWFA2NGd2b2lSWXF1cnVWU3VWZnkrbDdYeEdDSUwzQllHZnZPR3hvZUVGQkFZL1BMeWdvOHZMeVhMbHkrWkozMytQeGVFRkJnUllXSWdpQ0tpb3EvZjM5Zi8vOU4zYzN0NWFXRm10cjYwR0RRZ29LQ203ZlNhUXo2QVRlTDZMUHZlbEhBbnJXS0lPZW5wNVZXRmdVSGg0K2RPaFFpYVQ5Z3cvZTM3UnBzMUtwMUdxMUREcWpzREJQbzlZYURJYnM3RndLbGVYdTdqbHVYS3l6cy9PcWxSOTBkM2NYRmhhL29PaXVWNllSeG1Bd21wdGJiOTI2OVovZlllOHY3Q21obDBna0NvV0NQSDNuQlk4R2dpQUFZUGZ1UDRpS2lwdzRjYnkvdjM5YzNHaGJXd2VqVVplVGs4UGhjS3FxeXNzcktoMGM3Q3NySzhQRGg1dzdmOXJLeXBKR280OGNPY3JPenU3czJmTktoUnA2ZHNiUHl4NnJQK2xIQWdLZW5sNkFYYjE2RFFDSWQ5NVpYRnRieTJUUUZ5MWFuSk9kY2UvZWZRUkJ6cDY3Y1BEZ2tTTkhqMEVRZVByMDJaTW5UOGhsVWs5UGorcnFHZ2FENGVycW1wQ1FCTUdVdjAyYTZkMlJnODFtUzlvN1B2OWlYVWxKQ2ZBZkR3bTVHbWV4MlN3V204ZmoyZG5aQlFRRWZQcnBKeDRlN2dhRDhXOTNNSHFnSUVpN3BEMHpNMnZzMk5pQ2drSU9oOFhoQ1BMemNyLy8vc2ZtNXViS3lxcTlldzhjT0hDa3FLaEVvOUVjUFhvTUJNRlZxMVk5ZUhBL01EQWdOalkyTXpNckt6dUhUcWYzSy9VQS9jcUpKdk9CSkpLTzVPU1VTWk1tMmxpTEhxYWtmUFBOaHIxNzloU1hsTXlZTWQzYnk4UEt5cExENGFBb3F0Rm9pb3BLSGlTbkpDY252Nzk4bWFPalEzMTlRM3o4OU8zYmY1VzB0UW1GZkJSOTNxVWwxUU5CRUlWQ2VaaWF0dUhyYng2bFBnSkI0RDhaRWZKdm82T2pWNjc4ME1MQ2dpQUlLcFhDWmpFc2hFSWJHMnNjUTNIODc3MFRzaVVJam1NVUp1dE93bDAybXowNExPek1tWE1oZzBMMjdkdjcrUEdUMEVHRGpodytZR2RuUzJjd2NCenZsc3ZiSk8xUG5tU3UvZWl6OTk1N0p5b3E2dHk1Y3l0V3ZIL3k1TWtIRDFKR2o0NTUyYVAwUFAxS1FBQ0ZTcTJ1cmtKUmRQTGtLZWZPWDdLMHNycCs0ellNUTE5ditOTGEyaG9BRWExR3FWUXBVUlBLWkREaXhvNGZOMzdjOVd2WHRtejlKVHA2UkdsWnhmUnBrL2F4V1ZldjNWaStmS25ScUh5dXJwbFVqMEtwM3JIanQ5Mjc5eWlWeXY4OGVFZ1FCSXZGV3IvdXkxR2pZekZNLzNTdkRjZFJERU9OUnVEZjFFZ1FDSUlvRklwTGw2N01talZESnBjYmpLYmJkeEk3MnR0Lyt2RjdSeWRYdlY2ajZKWnBOV29LaGVMZzZPVGk2alprY09pVDlLejlCdzY1dXJvV0Y1Zks1ZDN4TTZibjUrZHBOQm9FaG5DOEh4bWgvaUlnTXA4VkFPRG01aFpYVjFjbWs1bWRuVlZmWCsvajQ3Tm05UWNnU0NoVnFpdVhyMTI4ZExtK3ZwNUNvZmo0K1ByNStVNmRNbkh5bE9rVUt1M0NoVXR1Ym01U2FkZWloZk4vM2ZuSGxNa1RMUzB0VENiVFgzZFZRUUJnTUpnTUJrT3BWQUwvV1drWStSbDdlM3RYVnhlalFXMDBHaUVJN0VscmYwR0Z6Wjk5Wkpqc3MrY3VtVXltS1pNbjNiMTdYeUtSR0kyR3paczJNcGpNYTFjdnB6eDhWRjFkM2REUXdHYXpCdzRjK082U3hVRkIvcEdSUXkwRS9COS8rcm1wcVRFckt5c2dNT2h4MmhPTldpTVE4SEg4ZjFsUzBrZjZsdzhFQUlUUmhEazZPb3JGNG9LQ0FnNkhzL1M5eFJpR21rellqbDkydnZQdWV6ZHYzalFZREd0V3IvcjBrN1crUHQ0WExsNHRMTWdiTnk3T3k4dlRZRENrUGNrWU96Yk8xc2JtNE1IREZDcXRkeEl4QUFEa2hoU1h5OTZ3L29zN2QyNU9uVHFsZHgvQ0YwQitRQ1FTOGZrQ2dzQmhHQVpCQ0FUSjdSRG9uN0pIZXJiQXFGU3FwSzMxNk5Gajc3MjNSS3ZWMXRVMzZIUzZ5Wk1uY25uY1k4ZE9sbGRVeHNkUDM3QmgzWWdSdzNOeWN2YnQyemQzM3NLOHZFS1QwZURyNTdOZy90ejYrb2JzN0J3QUFLMnNySHBDUVM5N21QNmszd21JeitPSVJOWk5UVTFxdFhyY3VIRUFBTUV3blBMdzBTODdmc1V4REVHUTlldS9XdlQyNG9BQW4yblRaNHdkTytibXJUc0FRZGpZMkloRUlyMWVYMVZkL2VXWG45Njlkejh6STR2RmVwcSsyT05Ua3lPcTAya0hCdmtmUFhMd3UrKytZVEpaLzFaRDVIOTFjSEJnc1puazlQR3Nld0x3NHI4aXIwdWhVbi83N1E5N2UvdXBVeWNtSk41MWNYRm1zOW51N202bEpXWHQ3ZTFyUDFvVkVSRStaTWlnN2R0K2pvdU5CUUNndXJycXg1ODJhYlU2alZydDQrTVhHQmpRMk5nb2w4dnM3T3hnR0FMNldTaW92d2pvNlVTQVkvWU85aXFWcXFLaWdzUGhPRGs3YTNVNkNJTHYzRWxVS2hVUUJCRUF3T1Z3QVFEWGFEUWF0VnpScmJDMXRRVkF1TG1weWNuUlBpcHk2SU1IS2Y1K2Z0T25UL3RwOHhhRlFrbWhVSG8wMUx2dVRLdlYwZW0wOWV1KzJMdm5ENkZRK09KY1pnekRMQ3dzWnMyS1I1RC90SlhIMHkxaEhHZXkyRGR2M0VsT2VmanROK3RMUzhwbE1ubGM3R2lOUnR2V0poRUkrRXdtczYxTm9sS3FOR29OaFVKaGN6amtuejk4bUZwU1VrNmhVSFI2dlp1Ym0wNm5hMnhzdExBUXNObHNyQjgwVk9oTmZ4RVE4SFJueXVUcTRvTGplRmxabVlXRkJReEJHSVlaak1iR3hrWUFBQ0FJd2xEMGoxMjdhMnVxZVh3TERDY2NIQjBXTFpwWFhGUlUzeUQyOC9mMTh2YmljRGkzYnQ5WnRmSURCcDIrYWROV0NvVUsvR3RqVGZKYU1BeGpHS2JYNnhZc25MZG45NHMwUkJERWhBa1RMbCs2TUg1Y25QSGZyZFY3L3VTcDY4T2cxOVRVYk5tNmZmWHFsUzR1em9sSjkyS2loM041RnY3K1B0ZXYzYlMxdFpreGZhckJhR0t4V0F3RzQ5VHBjd2tKQ2VSN1VDcVY5UTFpR0VZUUJMR3pzMU1xbFZWVlZXNXVBemdjVGs5VDJINUNQeElRQUFBb2lncUZGbjYrUG5WMWRXcTEybVF5WVNnR0VBU1pyME1HN21BWVBuam82UEhqSi9KeTh5U1N0c09IankxZDluNW82Q0EzdHdGNm5YYjh1TGpTMG9vR3NYanIxczBabVptSERoOWpzcmk5UzJHQVh1dDVFQVExYXZYTVdUTzJidjJaRExFODF4Y0JBSURnNE9COWUzZU5pSTdxNlgvNFlpUFUyL1ZScWJXZmZQTEZrQ0ZoYjcwMTcvU1o4MDVPam9HQi9ucWRJbjdHdExMeThzWHZMQzBxS201cmJibC8vOEh2disvTnpzN2g4WGprZHdBQVFCQTRUdUJhclZhdjF6YzJpdFZxOWFDUWtML2RibnU1OUM4QkFRQUFBTVNvVWRFY0RvZXNsbElxbFZRYTFjYkdGZ0FBc3JYUEYxOTg5czQ3YnhjWGwxNjhkRFVuTzQvRllnWDQrMmRuWit2MWVoekhyYXdzb3FPSFg3cDBWV1JsdVhuVHhuMzdEbHk4ZUluRjV2MnRoa2czV0t2UkxGZ3diODJhTmVUbG56TXdVNmRPc2JPelVhdFUvN2FmUVk5TGp1RTRnaUFtRlB2b28wOVpMT2JtVFQra3BhVjJkY2ttakk4MUdQUTBHcjI4b3Fxam95TXNMRlRTTHJsN0wvbnlsUnNNSm1QcjFzM2p4bzBsdjRmRllqazVPWm1NcHE2dXJzYkdScm04T3pRMDFOUFQvZDhXM2Y2LzUrV250UGJRczhrZ0VvbHduTGg1NjVhTGk4c0F0d0hPVG81S3BlcmF0ZXNFZ1lNZ3lHS3lsRXFsazVPVGhZV0ZuWjN0elBpcHc0WU4zYk4zdjhtRURZdUkwdXUxems2T25WMnkxRWVQcDAyYmJtOW4rK09QbTZ5c0xBT0Rnb3lHZjJscTBkc3hBZ0I4OEpEQmNya2lOemNYQUlDZVhwWTBHdTNERHovdzl2SHFTWlgvWi9VOC9VNE13NmhVS29yaEsxZCsxTlltT1h6NFFMdWsvZWF0aERtejQ0VkNBUVRCS3JWbTFlcTFNVEhSSDMvOENaMU83ZWpvOVBUME1KbU1HUmxaS1NrcFRVMU5BQUFNSERodzllb1BsVXAxUlVYbCtmUG51Vnp1dHEwL1cxcGFrRTM3K3BXRytwR0FnRDlQUE1FQ0F3T3JLbXV5c3JPQ2cwT01SalFvS0NBbkoxY3NGdU00enVQeFB2eHdCWnZOa3N1N0h6MUtVNnZWNGVFUk5qWldlL2Z1ZDNjYllHRWh3REFzSU1DL3RMU3NyTFI4Um55OFNDVDg4YWROYkRaNzBLQlExR1FrbDFHOXB5RnlVNTFPbzQyTWlhWlI2WGw1ZVFhRGdmeFBiRFo3OGRzTFhad2RUU1lUQVBUdUhQVXZFOW16UlI1Qm5sZXZVbXZXcnYxTUlwRWNQMzRVdzdEakowNVBuRERPMDh1bnEwdUtvdWd2TzNhcVZhcWZmdnhPcTlOczMvNGJBQUNPamc0eDBWRXltZXpvMGVQazRRb2JOcXp6OC9VcktDek96czUrOENCNTU4NGRJMFpFNm5SNk1sZmZMS0IvcEpjRFFSaytQQ28vdjFBaWtYQjVQQkNFSXlNakhqOU9rOHZsUC8zMG82ZUh4OW16RitKaVIxdFpXY0VRNHVuaDR1emk4dWhSMnQyNzkxQU1mL1RvQ1FMRFk4ZkdQa25QcUs2dW1qbHp0cXVMMDlhdHY4amxzcUhoUTJnMEt0bmNpV3dmMWxPa1FaNi9QR3IweU1qSVNCUkZ5UTMyV2JObXZ2WFdiRElhU2FWU0tSUUVCQUVNKzdPZWh2U2xFQVJCRUFTQ0lEcURWVlZWL2NHSHF5a1U1T0NCZlJpT0h6NThMSHBFcEwrLzMvSGpKOU16c3JLeWN5OWV2THhpeGZzREI0WW91cnRWS25WczdPaHVlWGRlZnNIQ1JRdVNrMU5xYTJ1WExsMjZZTUg4N0p6OGxwYVdoSVNFRmU4dmUvdnRCWVpuNXJOZnFRZm9id0xxTmEzZ1ZDcFZMRzRzTEN5aVVDaHF0WnJINDQ4WU1ieXVydDdXMXBiUDR5Y2wzWTJOR3pONGNMaVRreTBJUVFjT0hpNHVMZ2tORGZQeDhRNEtDcmgwK1FxTlJvdVBuNWFSa1ZsUlVURjEyclRRME9COSt3NmtwMmQ2ZUhqb0RRYTVURTRRSUlmTFFXQ0kzRFdqMFdnb2lvbkZqWHcrYjlxMHFiTm56NXc5Wi9hc21kT1lUQ1lFUVFoQ2FXcHFhV3VUQUFERTUvT2V0WDhBR1F5RzBXaVN0TGZMWkhLVENVMU9mdmpaNTErRmhRNzY5ZGRmNVBMdTR5ZE9qUm81SWpSMDBMWnR2OElRTkdiMFNLbTBpMHFsWm1abSt2cDRPVHJhQlFRRzJOZzRwR2M4S1N1dmNIRjJ2bkhqNXFoUm94WXNXSkNmWDlEVzFwcVhsNGRoMktUSkUxMWRuRkFVQlVHb3ArNmcvOUR2RXNwSXE4QmtNaytjUEZOYlcyODBHbXRyYTUyZG5hbFVxck96czBBZ1VDZ1VrUkVSSjA2ZXVIejV5dkpsUytmT25TMjB0RnE4K04yQUFQL0lpR0ZYcmw2UGlSN3U1amJncTNWZmp4b1ZNMlh5eE9TVVZMVmFNMy8rWExWYXZmR0hueDRrSjZ2VmFnOFBqeUZEaGxoYUNzZU9qWFViUUFZT0tuZit2cXVscFNVZ0lJREZZZzRiT2pSdWJLeE9xNFpodUt0TGZ2TFVHWVZDSlJZM2RIUklZMk5IdmJQNGJSYVRUZ0RBL2ZzUGMzTHpKQkxKbzBlUHRGcXRuWjNkOG1WTDU4MWZVRnhjY1B0MjR1alJNWFFhYmMvZUEwS2h4VWNmcmRxMWE2KzF0WFdBdjk4dk8zNmJPWE5HZlB5czNOek1IVHQrTHlnbytQWFhIVENNMU5mWDgzaTgydHJham80T285SFkzTndjRXhQVDBORHcvdkozWFYyZERRWWorTmQ2czVkTi83SkFKQ0FJRWdTUWt2TElaREpaV1ZrRkJRWGR1WE9ucnE0dU96dGJKcE5oR0taVUtVZVBIaTBRV0p3OWQvN0sxV3NTU1llMXRmWE0rSmwrL2dHdUxvNUhqcDBjTmpUY1lEQzF0a3BLUzhzbWpJL1Q2blFKQ1VrZUhoNXozbnJMMHRJaU16TXJQVDA5TURBd0tDam83Tm56TmpZMk50YldENUpUcmF5RW5wNmVDb1VpTGk3MjB1VXJUQWJkemMzVlpFSi8yN21ieStWNGVIaDB5K1VUSjR6clZpajVBb0d0bmMzZXZRZkx5aXVDQWdPUEh6OWVWbFkrY2VMRVgzN1pHaDBkY3pjcDhVbDYxdlRwVTJwcjY1S1RVNDFHNCt4Wk14OC9mcUxSYUZldVhPN2c2RUtsVWhzYkcwK2ZQck43OTE0K24vL1ZsMTh5R2ZUMGpBeXhXSHovL3Yyc3JLek96azR1bHp0bHlwVG01bVlBQUFVV0Z1N3ViaWFUQ2V4bkRoRFFmelpUZTBQbUpiSllUSWxFMHRnb3B0SG93NGNQYjI5dno4dkx1Mzc5T28xRzF4djBOQ3B0K1BDb2tTTmp1cnE2enAwN3AxUXFsVXJsaHg4dWQzUDM4dkh5eXMwcjhQSDJjblMwcDFBb3gwK2MyYkQrYzVISTZ0eTVDNkdoSWJObXpSdzFNbWI3TDc4bEppYXUvUEI5UzZIZzdObUwvbjYrOFRNbU01aGNyVmI3MVZmclBEM2RKMHdZK3pEMWNjeklNYzNOWXFsVSt0bG5INTArZlg1ZzhNRFpjK2JxZFdvNm5mbzRMYU9tcG5iTHp6L3UyTEdUd1dEY3ZIbHQzTGh4WFoyZGh3NGRRbEgwM1hjWFNUczZIajU4dE9TZFJmZnVKek5aelBMeWlubno1b0FnOGlUdDBhRkRoNHFMaTcyOXZXTmpZd21DK1BhNzc0cExTdWcwR2dBQURBWWpPRGpZMTljWFFaQnIxNjVaV1ZsUnFGUXVoMDMwc3dCMEQvM1JBZ0VBQU1Nd2g4TkpTWG1vMWVxR0RoMGFFaEppYTJ0cjBPdVh2UHZPd29VTEF2ejhUQ1pUV2xwYVVsSlNlM3U3bzZNamw4dTlkZXRXZW5ybXFKSERDUUNzcTZ0emR4dlExdFkyZWxSTVl0STlkdy8zZ0FCL1Z4ZW5uTno4OVBSTWUzdmJtVE5uTnphS3BSM1NtYk5tWDdod1h0R3RDQTRlaUpxTWh3NGR3VEJzMHFTSk5UVzFOVFYxQlFVRjVSV1ZScU14S2pLQ3krV2NPM2ZSMWxiazVPZ2dhVy9mc1dQbnFGSFJmbjYrZS9jZC9QYmJEVEV4SSsvZHUzdi9mb3FucDhla2llUFliTzYxNnpldHJLeENRNE9yYStwRUlxdkt5dW9KNDhlZVBIbnEvUlVmcXRWcWIyOXZoVUp4NDhhTmh3OVQyV3oyMUNtVGx5NTliK0dDQmZiMkRqd2VMejQrbms2bkl3aVNrNU16T0N4MDFLaG9NcnJZMzh3UDBBOHRFUGowVkcrRGo0OXZVRkNnUnFPMXRyYldhclhaMmRrTEY4MExDeHVNNDlpWU1iSExscjByRmpkbVorZGV2SFE1TlRVVmhtRTNON2UwdExTUDFuNjJjT0VDSE1jSWdyQzB0QUpCc0xPelU2dlJBZ0JoWVNGWU1IOU9kazcrM2JzUHlrb3J1cnBrY1hGalZDcTVUQ2E3ZWV0T2JsNEJnOEhJenNuWnQrY1BBQUF1WHJ4Y1dGUTBmOTdjK3ZyNjI3ZnZ4TVNNbURCaGtwZVgrOXExbjhUR2pxbXNyR3ByYTJ0dWJvVVJ1cE9qNDVNbkdZMk56WHE5WWRxMFNRNzJ0anFkSGdEZzl2WjJGb3RGb1ZBRkFvRlNxV1N6V1k4ZVAvNzBzODk1UEI2TlJrdE9Ublp3Y0ZpNmRPbTRzWEVCQWI0aWtUVUF3Z0JoaWhrNS9JOC85bVJsWlZsYld3Y0ZCVFUyTmc0ZkhzWGxjclJhN1FzSy9sOGkvZFFDQVFCQW9TQWRIVktaVEdaalk2TlVLcFVLeGJqeFkrbDBSbE5qVTNWMWxZMk55TUpDRUJRVU1HZk9yTmpZV0tWUy9manhJd3pENnVycVRDYlUxZFhWMWRYRjF0YW1xYW5wNE1IRE1ybDg0TUNCQW9FQU5SbWRuUndKQXRpeWRidUR2WDFrNUxDZmZ2bzVMR3h3ZUhoNGZYMTlkWFhOeXBVcklpTkgvUEg3cmdzWEwyMzVlZFBDaFhNakl5SWFHaHBQbmp3VkV6Tjg3Tmd4UlVVbERRMWlkM2YzSlVzV1AzaVEzTkVoaVlnWXRuZnZmZ1JCRnIrOXdGSW9JQUNBUm1ja1Azand4NjdkS0lxTkdUTWFSVkVxaFpLWm1YM3UzSVhLeWtxajBjaGlzZGF2WC9mYnI3OU1tVHJSeGRXWnlhQkxPN3VLaTBzc0xTMm9OTFpTcVJDTHhUYldJZ3FGMHRFaEhURThrazZuOWF0NitONzBVd0dCSUlqam1JMjFkV05qODhPSHFaWkNDMHNyeTl6Y2ZBU0JUNTQ4blY5UU5EWXVsandOSTcrZzhNNmRCQ2FUd2Vmek96bzZ5TmovOU9relltTkhhYldhYTlkdnNWaXM2dXJxaXhjdnE5VWE4aFNjd29LaTV1WVdvVkJZVUZCSUVJUkVJaEdKUkNLUnRiVzExYUpGQzVLU2tqWnUvSkZLcFV5Wk1zWFowVUZ2TkJRVmxkeTRjVU9sVkllSER3a01DS2lwcVIweFluaDZlb1phcmU3dVZrZ2tFamFiRFlKZ1NNaEFQcDlmV0ZqOHcvYy9uajEzM3NyS3lzN09YcS9YanhvWnpXYXpqeDAva1ppWWlDQ0l0N2QzVEV3TUNJSU5EUTNPVGs0SURFTVFWRmNuM3JoeGsxQW9iSk8wNXVZV0JBUUVKQ2VuTkRZMmpSa3p5cmRYSFB4bEQ4dmYwQjhGMUxQUFFLZlR2TDA5cmEydFMwdkxIUnpzaFVMTHVqcnhvMGVQWXNlTTh2ZnpRUkFrT3lmLzBLRmpJNFpIaFlXRnVyaTRCQVFFMXRiV3FGU3FEMVlzYzNKeXVIVTdpVUtoMWRmWFF4QmtiMi9YM3Q2ZWxIUmZxOVhGeEl5WVBHbUN0NWZIK1BGeE9FN29kUHB4NCtKdTNyeTErTzIzczdKeWpodzVHaDBkYldOajg5MTMzOWZVMXYveHgrNkNnb0tWSzFkMkt4U1BIcWRGUjBkcnRkclcxdGE0MkRGbFplV2ZmTHdtTERRa01uTFk1TWtUMnlTU1BYc08zTGh4aThsazBHaDB2VjQvWUlBcmpDQWdCTHE3ZTZhbnAyZG1aczZlUFd2WnN1V0JnWUdEUW9KTGlrdVRVMUtIREFtalVpa01PaU03TzZlNXVVVWtzbloyY2l3cks3ZTJGczJaTTlQUDE2dWZuOTNjSHdVRTlENTBGNEpjWFYxZFhaeXlzbkxrY3JsYzFoVVJHVEY1eWtTQ3dBMEcwNzU5aDZaUG4rYm43Nzl6NXg4UEhqd29MaTRXaThYMjl2YXJWbjNZSWUzVTZRekp5UThVQ2dXQ0lDT0dSODJlUGZ2cXRXdGJ0bXk1ZFN0QkpwZmIydG9DQUhqdDJzM2x5OS9OeU1pazAraHU3bTdIangvMzl2WW1DS0sxdGRYZDNkM1d4dHBDYU1GZ01EVWFqWitmWDFkWGwxVGFHUjA5SWlucFhsenNhSU5CWDE1UjZlbmhrWnlTdW0zYkwrdldmWjJabVRGelp2elNwVXRUVWxLc3JLd0tDZ3FDZ29MWWJJNjluYWk5WFhyNzloMEFBR3ByYXdzS0NoZ001dkxseXpJeU1sUXFkV0NBUHd4RGdZR0J6YzB0U3FXeVF5b2Q0T284WjNZOGo4ZEZVVlAvUEtpd2gzN25SSlAwM3VuVXFGWFcxcUozbDd6ZDJpYWgwMm5XSWl1ajBRaEJrRXFsbHN2bGNubjNybDE3SEJ6czMzMTNjWEZSOFJkZnJyY1NpYmhjTHAvUHUzbnpUbjVCd2FHRCs2OWZ2MWxhVnBHZGs1ZWRuYzFrTW1OalIxTW9sSDM3RHJhMHRMcTZ1bGdJQkRVMXRUNCtQc25KS1ZaV2x1OHVlV2ZkK2cyREI0Y3VYL1llak1BZ0NEWFVOM3o3M1VacmE5SElrZEcvL3ZwN1VGQVFoOFBPeWMzMzgvUDdhTzBuU1VsM2hVSmhTRWhJWjJkWFltTGlsU3RYWkRJNWg4T1pNbVd5V0N3K2VQRFF3WVA3S1JTS282TWpETU8rdnI3dkwzOFBKNGh6NXk3dytYd3FsZGJZMkFRQWdNbGtjckMzZlgvNWUyMXQ3VHdleDhKQ1lIaDIxbTUvVmcvUWJ3VUU5SElZWVJnbXpiaVRvejFCRUdSZU1JcGlscFpDSzB2TGpSczMydHJhYnR1NnhkdkhKemc0QktGUUxsMjZRZ0NBVEs3WXYzOC9qVVp6ZG5hY1BYdm0wV01uNnVycUpCTEozTGx2YmR1MmpjQnhqVmFaa0hBdk5mVlJnN2k1czFNbWs4bnI2dW9DQWdMdTNydkhZTkNYTDNzWHcwd0dnNTRnQ0JkWDEyVkxseHc2Zkd5QTZ3QUtCYW11cnNaeHZMVzFsY2xnK1BuNXJsMjcydGJHbHM1Z2p4bzFNak16czd5OGZQRGd3U0VoSVhGeHNlZlBuOC9NekxoMDZaSy8vemNHbzJITW1ERTdkKzRRV3ZBaG1GNWFXcjUzNzE2TlJyUGw1MDJrUHNnU0FHZG5CeHpIeWNMK25yUE0rcTE2Z1A0c0lCSVFCSHNPVHU4NVdoc0VRWndnQUlCNC8vMmxJQWpldUhuei9SVWZSRWVQbURoeHd2RGhVZmZ2SjlmVk5XUmtaTlhVMUJpTnB0OSsrMlBCZ3ZsVXl0TnF3L3o4Z2wyN2RuVktPNVVxSlFSQzFkWFZUNTZrVjFWVkNvVVdVcW0wdWJsWkx1K21VQ2d3REJzTmhxY0hObUVtRG9jamtVakt5c3ZiMjl2YjI5dXJxcW9JZ21ocmt6UTFOUjAvZmtxbFVybTV1ZFhYMXl1VlNnc0xDd3pEMkd4MlZWWFZqaDIvQWdCdzUwN2k5T2t6YW12ckl5TWplRHp1eVZQbnNyS3k3OSsvYjI5dnYyYk42aUZEd25vZm50TDdHZnV6NGVtaG4vcEF2WG5hd0t3WEJFRkFUMHNzT05FeEk0WU1Eck8yc1FrTThQZjM5Mld6MkE4ZXBEUTJOcGFXbHVibDVRRUFrWnI2cUxhMlRxdlZWbFNVZDNSMDBPbDBHbzFHb1ZBSUFpd29MSHowS0xXcnE2dTF0YlcrdnQ3VzFqWXRMWTNENGFTbFBmSDA5UEwwOGtFUWlFYWptVkJzNSsrN0tpc3IxV3AxZFhVMWs4bE1URXdrMng0ME5qWUtoWllzRnJ1clMxNVNVdExRMEFERE1JVkMwV2cwbXpadExpZ29CQUFBQUFoYlc5dTh2THp3OExEQXdFQW1rd0ZCME1pUk1SOStzRHdpWWlqMlRESFBQU1BRdnczUG42UFQzelpULzBPZWVka0VDQUkwT2gyQ0VJTEFERG9kalU0L2NmTE1qaDIvYVRTYTZ1cnFuc1FkQkVGUUZKMDNiOTZhTmFzUmhHSnRMVXBMZTNMMTZyWGEyaG9Nd3dHQUtDa3B0Yk96MCt0MVpITkNlM3VIK2ZQbitmbjU2UFg2cEtSN1Y2NWNwVkFRQ0lLY25aMWJXbHJZYkxhenM3UEJZQkFJQkVPR0RKazVNNTdINVVvN1pmWDF0Vjk5dGE2MnRwYk11U2F2em1ReS9mejhSQ0xScmo5K3M3T3pBUUNBUXFVREFJR2FER1NHNGF0aWJQNlcvajZGL1JQUDhwcEJnaUQwT2wzUEFCaU54b2tUeHFXa3BKNDhlWkw4SkFSQlpMclAzTGx2L2ZicmRvbWtnOC9uMzdwMU96czdlK0dDdVQ2K1BuUTZYU3FWMXRYVzNiNlRXRmRYNStMaWN2NzhlUTZIN1RiQXhXUXlNaGowQVFOY1lSZ0tDUW54OGZHcHE2dGI4czdpME5CQnpzN09MQmFyczdQelFYTEtybDI3MzN2dlhUcWRFVEZzNk5FakIyZlBtZGZhMm9vZ0NKa0FyOVZxR3hzYlYzNzRvYU9qUFprdlJyYlQ3MjFRWDFIMUFLL0VGUFpQOUxiejRMTTZQeHpIbVV6R29OQlFwVkpkWFYxTmV0d1locm03dSsvYTlVZDFUUTJYeXkwcEtiNXg0K2JHamQ4R2h3U3pXWFFxbFdKcGFlSHQ0ek0yTGxiV0pZK09pUkdKckxLenM1Y3NXVEp0Mmd3ZmIwOHlwcmR6NTI4bUV6cDdWdnpjZWZNZEhHM1piQWFEUVJNS0xZWU1DZGZwTkdmT25KMDBhWHgrUVpHYm01dVZwV1ZDUW1KUDYyQXZMKyt2dnZweTdsdXpTRDJST2FuazNiNUNVOVUvOGFwYW9ONDhWLzF1Tkpwc2JVVGJ0Lzg4ZCs2Y3pJeE1tVnlXblowYkdqb0lJSWoyOW83SWlLSGJ0djB5Wjg1c0J3Y25sVkt1VktvNVhBNlZndWowU2lhRFBtNWM3TEhqSjkzZDNmMzgvSDcvWTVlYis0Q0hLYW1abVZrVEprd29LeXN6R2czRGgwZG8xSElBQUJBRWtjbmtDQUp6T0t3WjA2Y2xKNmMrU24wY0ZSVjU5MTV5VEV4MGVIaTRyNiszbGFXVnU0ZEhaTVF3ZC9jQktHcnFWNGVrL0s5NEhRVFVRMCs5anNsa29pRHdpT0VSVVpGRFlZUng3TmdSdlY1ZlVWbnA2T2hnTkJyVWFyV1RreU1Bb0J3dS8vYWR1NDJOVFd2V2ZFQVFoRjV2OFBCd2QzUndLQzR1Q1FnSTBHcTE1ODlmYW10cmk0aUkwT3YxSlNWbGk5K2VEMEVRUVFBTUJyMjZwbTcvL2tPZmZySUdRU2d3UXJlMnRxNnFycDQxZTZiUmFHanY2QXdNRFB6aTg0OWRCN2pqdUluQThaNERjbDh6OVFEOXNxeW5UL1JvaUNBSW5VNm4wK2tBd2toQmtLNHV1VmFyMDJnME1sbTNyWTNOeFl1WHUrV0tUbWxIWldWbFltSmlTM01yaFVJaGU2eDZlWHRKcFowR3ZkN2YzMy9YcmwxaXNkalcxbFlxbFRJWTlBRURCaGlOUmhBRVlBUk9UOC9JeU1pc3Fxclc2WFFseFlXRmhZVitmdjUxdGZWVUtxV3RyWTFLcFVJUVpEUm9kVnJ0YTZ3ZTREV3pRQ1M5SFFzSWdqQU1EUTRlK0NROVU2ZlRXMXVMcXFyckprK2VlTzkrOHVhZnR6T1pUQnFON3VIaFlYeDZ4ZzlBRUxoUUtBQkJRS0ZTTVpsTXFWUkt4b1NVU3FXYjJ3QW1rLzYwRVNKQmdDQVFIQnljbFoyYjh2QlJaMmZYcEVrVDJHeVd0TE5McDlVVkZaZTR1cnJZMmRtWlRFWXlCK00xOEhYK2lkZk5BdldHL04wYkRFWVBEN2U0dU5qVTFOU1VsRlJ2TDgrVzFyYkl5SWpCWVlPOHZiMjd1N3NMQ3d0TktFcDJtaUpyZFF3R0E0SGpNQXdqQ0VLbjB5RUlRbEdzcDQ2SElBZ0FoTnJicGJtNXVVS2hwWit2Ny9oeGNUUWFBOGNKQnAxKzhkSVZITWRuVEo4S2duKzJZWGpaYitML1IxNURDOVFiY3ZCTUpsTmM3Q2duSjRmangwOGxKQ1pHUjQ5SVMwdnY2dW8wR2sxdGJXMElnaEE0UVo2MUFFRlFkN2RLcjlmYjJ0b2FqVWFGUXRIYTJrcWxVZ2tDNyt6c05CcE5WQ29GQUFEZ2FXVTBVRlZWSlJBSUdBeUd0N2UzdGJYVmdZT0hac2JQaUkrZnl1R3dqVWJUY3gydVhrdGVad3NFOU9xcWlhS21vS0NBcjc3NlhDcnRQSExrbU1GZ0JBQUl4M0Urbjc5OCtUSjNkN2VueFlRZ1dGSlNiREFZTFMwdEt5c3JDWUlvTFMzRk1Fd2dFRFEzdHpTSUc4a09ua2FqOGEwNXN5Wk5tb1FnaU1tRVFoQmNYbDYrZi8vQjBhTmlsaTVid21henlJMnQxMTQ5d0tzYmlmN1A2WDBhRUlWQ0FVQ3dyS3l5dXFwYWI5QkRFT3poN2hZV0ZxTFg2M0NjWUxFNTVlVVZHemR1SWdnaU1qTHkyTEZqV1ZsWkFBQjgvdm5uSUFoV1ZWWDUrL3Q5KzgwNms4bGtNcG1vVktyQllFeEplYXhRS2xDVDBVb2tDZ3dNc0xlejBlbDBBQUNTRWM3WDArdjVWMTdoUU9KL1NNOGdrbUZHQXNmdDdXejkvWDJEQWdPUEh6K1puWk03ZXRSSUtvVUNJMGhGWmRXdVhYc0pnaENKUkF3RzQ5YXRXNk5IajZiVDZlM3Q3U05HakpCS3BaMmRzcmEyTmw5Zkh3YURRYUZRaWt2S2Z2cHA4L2p4WTZkT20rSG01c3hrME1rRlYwOUg4TmRlUGNDYllJRjY2RzJLR0F4R2JsN2gxMTkvRnhZV3ltQXdiR3hFQ29WQ0xHN0NjVndxbFM1WnN2ajA2Yk5kWFYxcjFxeXByS3pjczJmUDU1OS8xdGJXbHB1Ykp4UUsyV3lXcTZzTEFBQlNhVmR6Y3pOQjREdCsyVW8yWG5tTmwrdi94R3Z1QS9XbVoxREp6UTJSeUZKa1pjVmdNUGg4Zmt1cnBMdGJxZEZvTWpNejU4eVp4V1F3aW91TFo4MmFGUmpvTjNyMHFHSERobDI3ZG4zUnd2a2NEcWVrcEJRRW9ZNk9UcVZTYld0cnE5UHAzZDNkU2MvNjFkcEYvMS94K2s5aHp3R0NJQUNBT0k3emVOekFvSUQ2K29iT3prNGFsVnBjWEp5ZW52N1RUeHNqSXlPWExsdE9wOU5YckZndXRPQnpPR3k5d2JSNzkyNCtYN0JodzFmNStma0pDUW1lbnA0NGpzdGtzdkR3d1cvTmlYOERkZFBEYTc2TS8xdkk0VVpSMU1YRmFmWHFEMUFUbXBkWFVGOWZmLzc4R1Q2UDk4TVBQd1lIaDhoa01pNkhoZU00bmNGQVlHakVpQkdOalUwSERoemF0blh6M24wSE9qdGxINnhZeXVGeUVRUXg2SFg5NUFUdWw4SWJOSVgxMEpNbmFqS2FOR28xaFlLMHRVa1VDc1hkdXcrKy8rR25xS2lJYjc5ZGo2Sm9mbjRSZzhuRVVDdzlJMlBreUpodnY5M1EwZEh4emJjL2RIY3JHaG9hVENhVXdGR3RSdjJDZzEzZUJONGdKL3F2OUNnSlJkR2MzSHlaVEJZU0V1ems2QUJCMEsxYkNXZlBYZHk3NS9ma2xJZm56MS9jdG5XelVDakFNRHkvb0xDNXFkblB6OWZWMWJrblllT05OVC9BR3k0Z0VqSkJsa3FqZ3hDRW1vemtkaW1WU3R1NWMwOStRUUdLWW10V2Z4Z1dGa0lXRjlQb2RBaUNVZFJvNm4vdENsOEtiK0lVMXB1bnFiRUVvZE5wTldxVjBVVEtBc1JRZE1tN2I4TXdQSHBVek9BaGc3VmFMUVRCQUFEb2RUcU5Xa1gyKy8ybkE4TGVLTXdXNkhsNmZCb0lnbEFNaHlDeU1xTWZuYlRkcjNnVFYyRXZwa2NvT0k3REVOa0kwYXllZjhRc29MK2hKNjd6WEZQcGwzMWYvUkd6Z0Y1RTcrRDF5NzZYZnNxYjdrU2I2U05tQVpucEUyWUJtZWtUWmdHWjZSTm1BWm5wRTJZQm1la1RaZ0daNlJObUFabnBFMllCbWVrVFpnR1o2Uk5tQVpucEUyWUJtZWtUWmdHWjZSTm1BWm5wRTJZQm1la1RaZ0daNlJObUFabnBFMllCbWVrVFpnR1o2Uk5tQVpucEUyWUJtZWtUWmdHWjZSTm1BWm5wRTJZQm1la1RaZ0daNlJObUFabnBFMllCbWVrVFpnR1o2Uk5tQVpucEUyWUJtZWtUWmdHWjZSTm1BWm5wRTJZQm1la1RaZ0daNlJObUFabnBFMllCbWVrVC94L053T1RiUUFQbFB3QUFBQUJKUlU1RXJrSmdnZz09IiwiZGdlLWljb24uaWNvIjoiQUFBQkFBWUFBQUFBQUFFQUlBRERmUUFBWmdBQUFJQ0FBQUFCQUNBQUtBZ0JBQ2wrQUFCQVFBQUFBUUFnQUNoQ0FBQlJoZ0VBTURBQUFBRUFJQUNvSlFBQWVjZ0JBQ0FnQUFBQkFDQUFxQkFBQUNIdUFRQVFFQUFBQVFBZ0FHZ0VBQURKL2dFQWlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFRQUFBQUVBQ0FJQUFBRFRFRDh4QUFCOWlrbEVRVlI0MnUzOTk1TmM1NW5uQ3g1djAzdHZxN0s4TDNoREVDQUFrcUtUMU9xWnRyZnZSTnlkamRqWS9YMWo5eSs1czdOM0pucHZkdzliclpGRVVSSkpBQ1E4VUNqdks4dWw5OTZjazhmdkR3Y29GUUU2aWFUWWhjb1BnNHlxWWxiV09TZWY3L3MrNy9zK0JtU1pPdENseTNFRitxRXZvRXVYSDVLdUFMb2NhN29DNkhLczZRcWd5N0dtSzRBdXg1cXVBTG9jYTdvQzZIS3M2UXFneTdHbUs0QXV4NXF1QUxvY2E3b0M2SEtzNlFxZ3k3R21LNEF1eDVxdUFMb2NhN29DNkhLczZRcWd5N0dtSzRBdXg1cXVBTG9jYTdvQzZIS3M2UXFneTdHbUs0QXV4NXF1QUxvY2E3b0M2SEtzNlFxZ3k3R21LNEF1eDVxdUFMb2NhN29DNkhLczZRcWd5N0dtSzRBdXg1cXVBTG9jYTdvQzZIS3M2UXFneTdHbUs0QXV4NXF1QUxvY2E3b0M2SEtzNlFxZ3k3R21LNEF1eDVxdUFMb2NhN29DNkhLczZRcWd5N0dtSzRBdXg1cXVBTG9jYTdvQzZIS3M2UXFneTdHbUs0QXV4NXF1QUxvY2E3b0M2SEtzNlFyZ2gwUlJGRVZSRHI3K29TL25PTklWd0EvR1lkTlh2KzVxNE05UFZ3QS9ES3F0Z3lENFExL0ljUWY1b1MvZ2VQSGlHQStDNE9kL3FBQkFWeFYvUHJvQytLRUFSVkVVQkI2R0VSUkZ1bFBCRDBYWEJmcnpjWGlrUnhBNG5jNTg4c210OWZVTmh1MmdLS1lvU25jVjhPZW5LNER2QytVRmdEKzQvZ0FJZ0lsRThwTWJ0NWFYVjF1dE5vd2dCeHRDTC81V2wrK1ByZ3YwbmZHRnh2cUZQNFFnaUJlRVhDNi90clp1TkJyT05sdmdsN3oraFJYQ0gzNytROS91UzBKM0J2aTIvQW1ETkFUQjlYb2ptVW9tRXZIOS9mMTZyYVlvOGhmYTlGZS9lWGQrK1BaMFo0QnZ4V0hINWpselZCUUFoaUVNd3lBWUJoUkZBUlJKbEFSQlVGK1d6K2NyNVNxRzRZMUdvMVFxdGRzTWdzQ3lMTU13akNBSUJFT0FBaWlLSWtxU0tBZ3YvRmxWS2svL2FIYzIrRFowQmZBbjh1TG9DMEVnQk1IcTF5QUlBZ0FvU1dLbFVtVllWcFlWSEVNMUdnMU80SUNpY0J5WHllWjRRUWdHZ3pTdEtaWEx4VkxaNDNaQmtDeUtZclBaYmpOdFdaSnhBdGRvYUlva242Nk9GUVVBQUZtV24zN2ROZnZ2Z3E0QXZqTVVCZUI1Z2VkNVdaWmhCRkVVc0ZESWJXeHNaakpaUlFGMFdtMHdGT3pwQ1ptTStrcWxXaTVYWUJqMitid0VRZFJxalZ3MjUzSTZPSTZMeHhPN3UvdlpYSTduT2FQUjJOTVQ3dW5wd1RCTWtrUkFVVkFVUVZBVUFnQ2xhLzNmRVYwQi9Jazh0enlGSUxoU3JlM3Q3aVZUYVk3alVSVGhPVzVwYVdrL0ZtZFpGc013Q0lKd0hMOTQ4Znc3Yi84b21VcUpvZ2dBWUsxVzgzZzg3WGE3WEs1VUtwWGxsZFhmZnZpN25kMDlITWNaaGxFVXhlVnlEZzhOT3AxT2RjQTNHUFM5dlQxT2g1M0FNVkVVZ2E3ejg2M3BDdUJQNUxEMXd6Qzh2Yk4zNys3OTJiazVBQURkYnJmTlptdlU2N096Y3hpR2UzMWVnOEVnQ01MV1Z2VG16VTg1anROcWRSaUdpNklZalVZSmdyRGI3WlZLOWZjZmZmTHBwNTlWcXpXdFZtc3ltWEFjWDE5ZjM0cEdRUkNrYVMzRHNQRkVvdG1zT3h6T2ExZXZURXlNa1FRdXlUS2dMZ1c2cDhkL0t0MWRvRzhMQ0lMdE5yTzh0SEx2L29Ob2RMdmRiakVNQTRLQTIrTWVHUjNSRzNRVVJZWERZYi9mNzNLNXN0bmNMMzd4eTB3bXl6Qk1yVlpOSnBNN096c0FvTlFiOVk4K3V2SGd3VU1Ndy9yNys3MWVyODFtMDJnMGJwZHJkSFFVd3pHZTV4aW1uYy9uWjJmbm5zek9wVkpwRUlLQVEydURMbjhhWFFIODZTaUtBa0VRQUFDVmFqV1R6WXFpR0FxRlJrZEhUU1lqRE1OK3YrL3YvLzd2REFiRC92NCt5N0k4ejF1dEZneERZN0VZQ0lMcGREb1dpekVNczcyOVhTcVZtODFXb1pEbk9JNmlLTDFlRHdEQXpzNk9MTXRuenB4NTk1MTNGRVdoYUxLdnIzZGdZTUJxdFJTTHhWUXFMY3VIb29hNkd2aFQ2UXJnVCtkZy94RUNJWmZMRlE2SGZUN2ZtVE9uWDMvOW10MXUyOWpZMHV2MVpyTlpGTVZpc1NpS1lybGNGa1V4SEE3cjlmcU5qWTJWbFJWWmxsdXQxdHpjWExsY25wNmVwbW02V3EzVzYzV2U1K1B4dU1HZ3Q5dHRwWEtKWmRuVHAwKy8vdnJyb1ZBb0dBeTYzUjZOVmlQTDBqUDNwOHVmRHZ6Ly9uLzlQMy9vYXpqQ3FDc0JCRUVRRk5GcU5FNkhQZExYYTdGWU9oMHVuODkzT3AwN2QrNVdxMVczMjEwcWxmYjI5aWlLR2gwZHpXUXlNek16clZiTDYvV0NJRmdxbFJBRUNZVkNnaUJVcTFXV1pRbUNLQlFLRE1NU0JHRTJtUlVBNk92cnM5bHNJS0RvZE5wUUtPajMrVFFhR25nbXd1NVJ3SjlNZHhIOEozSjRGNGdrQ2IvUFl6WWFaRVV4bVUyeUxBdUNrRTVuSGoxNm5NL25OUnBObzlGWVhWM0RNTlR0ZGdNQThQang0MVFxMWR2YisrcWxTNXRiVzdPenM2dXJxM3E5M3V2MThqeWZTQ1RiYmNaaXNhWlNxWWNQSDRtaUdBd0VRVURXMEVSdmI4amxkdEkwcmRWb0RsL0pELzB3ampEZEdlQ2I4dFZ4QnppTzZYUmF2VjZQNFZndWw3OS8vK0h2Zi8vUnlzcUswK20wMld5NVhLNVVLZzRQaitqMSt0bloyYlcxTlJ6SFgzLzkrdC84N2Q5b3RYUWlrWWhHbytWeU9SQUlXQ3lXVnF1ZFRDWkRvYUFzeS9GNFBCcmRoaUFvR1BDN1hBNk5oamJvOVRpT2ZlM1ZkbFh4RGVrSzRHdjRKckVHYXRnbUNJSVFCTFdhN2Q5LzlNbjc3NysvdHJZMk1USGhkRHFyMVZxalVYL3Z2WGNwaXBxZm41K1ptZUU0N3RLbFYzNzJzNStkUFh2T2JyY1ZDb1ZFSWxVcUZRdUZRbjkvLy9qNEdFSGcrL3Q3RG9mVFpyT2wwK21OalEwQ0o5eHV0ODFtVlJSRmtpUlpsci82cWtBUTdPYldmQk82QXZncVhnanZlUnArYy9qbklBZ2lDSUlnU0x2TnJLMnQvOXN2ZnZYaGg3K3RWQ285UGIwR2c2RmVyMXV0bHRkZXU2S2g2ZnNQSGp4OCtGQVV4Wk1uVC80di84dmZuenAxa3VjNWpZWXltWXlpS083czdKYkxaWTdqZkY3dnVmTm5BUUFxbFVvOHo3dGNMbG1XazZsa01wVUdGRUNqMFdvME5Jb2dzaXdmWE5YaFN3S2YvZ01jL052bEsrZ0s0RXQ1MGZvaENJSWdDRUVRR0liVkRWQUFBRUFRRkVVeG55L09MeXo5L3FPUGYvV3JYK2Z6QllQQm9OZnI4L204Mld3K2ZmcFVUMC9QclpzM2I5KytVeTZYKy9yNi92N3YvLzdLbGN2Tlp2UFdwNSt4RE52YjIydTMyNHJGY2pxZFRxZlRDSW9NRGd3T0RBNFdpOFZrTWluTHNsYXJ6ZWNMT3pzN3VYd2VRVEVNUlhHQ3dISHNZTnA1N3BLZUcvcTc3dEJYMEJYQUYvT0Z5YnNnQ0NvQUlNdXlKRXVLQW9BZ0FFR1FJSWpKWkhwaFllblRUMjkvOXRsbnNWak1hclZDRUxTNXVWbXBWTjU1NTUyeHNmRkhqeDc5OHovL1N6cWQ5dnNEYjc3NTVzOSs5aGVLSXQrL2YvL3VuWHZsY3RucGNBWkRJYjFPdjd1M2w4L244L2s4dzdDdnZQS0tUcWZiMk5qNDdMUFBTSklrQ0tKV3ErM3M3SWlTTE1zeWltRmFyUWJEVUFpQ1pFV1JaVmtOa2dOQk5UemllZWVucTRFdm95dUFMK0RGc1Y4ZFgxc3RKcHZON2NmaXFXU3EwV2hnR0FaQmNES1Z2bm5yczJhcnhiVGIrL3Y3blU2blZxdGxzMW1XWlh0N2U4K2VQVnV0VnQ5Ly8vMzkvWDBVUlM5ZXZQQVhmL0VYTUF6ZnZuMm5XcTJlT0RFdFNXSXlsWkpsdVRjU2tXVTVrVWhrTXBsbXMyazBHczFtYzZQUm1KdWJLeGFMN1hhYjV6a0VRU0tSWG8xVzI2ZzN5cFdLeCsyV1pDbVR5ZTN0eDdMWmJLdmRCa0dZSUFnWWhsWFA2TUR1dXdMNE1ycmJvRi9BNFMxT1JWRlFGRzIxMm52N3NlM3QzVTZIZ3lCUWxxVk9oME1XRmhWWkVTWFJvTmRwTmRwVU1wbElKQm1tTFFpQ0lBZ0VRU2lLa2s2bks1WEsxdFlXeDNIaGNMaS92MStqMFQ1NDhLaFNLUThORFowL2Z5NmJTZDI4K2VuaTRoSUV3YjI5dlQ2ZmIydHJxMTZ2ejg3T0lnakNzcXdzeXp6UFM1SUVnZ0JCa0xsYzd0S2xWMncyMjNaMCs5L0taVW1TRlVYQk1BeEZVVmxXWUJpeVdNd2p3ME5tc3dsQklGR1V1cWIvMVhRRjhEWEFNTnhvdGpZM3RoN1BQQ2tVU3JJc1V4U3AwMmxwV2xPdk4yS3hHTS96Zi9NM2Z3MEFRS3ZaS3BXS0I3OG9pbUl1bDl2YzNPeDBPb0lnQUFDZ2hyZ2xrNG10cmMzQndmNngwV0dYeTJrMkcvYjJZM056QzdPenM0RkFnS1pwaXFKa1dTNlZTbHRiVzlsc1ZsM3NxdStnS0VBeW1kTFFHcS9IczdxNnR2THdzY3ZsZExsY0xOdkpablB0ZHB2bkJacW1tczNXaWVsSmw4dHhZUDNkdkprdjQvZ0s0R3Z6Q1ZXakFVRndaMmZ2OXAxN3k4dkxCRUcwMnkxRlVkeHU5L1QwdE12bFZHTThRUkJzdDl0dHBxMytvanFCaUtLWXlXUjJkblpvbXRicjlSekhLWXFTeVdRYWpRYkhkWUtCZ052dEVIZ1d4N0JJcEhkblozZCtmb0ZsV1laaGNCem5lUjRFd2IyOXZVd21vd3BBZlU5WmxobUdZVHNzTHdpS29taTEyb0dCZnIzZXNMaTR1TEd4MmVsMFVCVEZNQ3lUeVdJb3F0VnFkRHF0SkVucWpYejEvUjViZVJ4ZkFieUlhaUVIbHFCYVA4dXk2MnRyYTJ0cm1VeEdEV3NEQUFCRjBaczNiLzN0My94Tk1CaFFGR1YxZGMzdGRsdXROZ2lDRHR1cklBaDdlM3RHbzVHaUtKcW0yKzMyOXZZMmp1TW1rd25ITVFSQlpGbVdaWWtrQ0JCUVVxbVVJQWpGWWhISGNZSWc2dlY2clZhclZDb0hGNk02WTI2M0c4ZUpYQzVmTHBkZnZmUktxVno2OWE5L2MvdjJiUmlHMVJnS3A5TnBzVmhYVjljOEh0ZkV4SmdrU1Y5eGoxMk9xUUMrS0tFUlVvM3NBSFZYc2RQaDA1bk0rdnA2TnB0RkVPVDY5V3VCZ0Q4V2k5KzVjM2Q3WjhmcGN0cHM5bVF5MmR2Yk16azVNVDE5WW1scGtlTzRnN2V0MStzY3grRTRyc2I1QUFCQTB6VFA4NjFXRzFBQUdJRWhHR1hZVHFWYXJWUXFJQWhXcTFXR1lTQUlhclZhTE11S29xaStqNm9yczlsOCtmSmxzOWxjS0JRVVJjRUpJaDVQeEdMN0xwZno3YmZmcWxTcVQ1NDgyZG5aclZhclBwKzNYbThBbjNlQjFIdFUxOGV5L1B4Qy8zaE9Bc2RVQUFlQTROUDhYVkVVRDNiNkQzc0VNQUpydFZvQUFCaUd1WGJ0MmovOHd6ODRIUGJmLy82amFEU0tJQWdFd1NTSkFRQ2cwZEF1bCt2ZGQ5NUJVU1FXaXpVYURZN2pCRUZRblJhR1lSQUVrU1NwMCttUUpBbEIwT3JhMnRqWWFEQVU0RHJjNXViVzZ1cGFzVmhrV2JiUmFLanBCS0lvQVFBQWdpQU13eWlLMGpSdHM5bW1wcVl1WDM3VlpETG04em1DSUNWSmhpQllvOUhxZE5xMzNucUxvbWk3M2ZGZi8rdC83YkFzUWVBYXJVYVJsV2REUGdpQ29DekxraXdEenphMXVuV0hnTzQyS0FpQ29pUTJtKzFDc1pUUEYxck5GZ2lDYWdhak91amlHQzVMY3JWYTdYUzRkOTU1WjJwcXVsNXZ6TTNOSVFoeTh1UXByOWZiYURSYXJWWnZiMDg0SExLWUxTYVRDU2NJOVdUcUlHd0JlT3JEQUpJa2Rqb2RsbVZ4bkRCYlRHYVRLUjVQZlBpYkR4OCtmRlN2MTlVaFgxRVVTWklCQUlBZ2lLSW9xOVhxZHJ0SFJrWXVYNzc4NXB0dmpvNk9RaENZU3FXTHhWSXdHTlRyZFJ6SE5adXRucDV3VDA4dkJNSFpiRWF2MTcvMjJwVVRKNllKQXBkbFdRMFk1WGsrWHlqbDg0VjZyU0dLRW9JZ01Bdzk5eWgrNkUvakIrQll6d0FnQ0VxU2xFeW1sNWZYaXNWeXZwREhjV3hrYU9qMDZaTjZ2VlkxQ0FTQng4ZkhSRW15Mld6bGN2bVh2L3hsczlsZ0dPYU5OOTRZR3h0ck5CcVpURHFYeXpXYkxReEZ2VDZ2ckNnR296RWNEc2RpKzl2Yk94c2JHOFZpRVVFUXE5VnFOcHRwbWtaUkZFVlJSVkUrL2ZST05McFRyemN5dVZ3d0dQVDVmTHdnY0oxT3JWWXJGSW9NMHlaSjB1LzNEdzBOZWIzZWNEamMxOWZYMjl0ak1CZ2E5WHFsWE1sbXN6elA5ZmNQYUxXNng0OGZmZkxKemRYVmRRQUFnc0hReU1qdytmUG56V2FMSlBJQUFNQXczT0g0ZUR4MSs4N2RZckZJa3BUYjVRcUZBcEZJMkdBd1BMZElPRzRjT3dFY3hQT28zc1YrTExHNnVwNU9aMlJac2R1c0Zvdlpack9DSUtDVzZKRWtLWnZOemM0dHJLeXNOUnBORkVWZ0dQSzRYUmN2bkJzYUhtMjMyenM3MjZJb2hzTWh0ZnFEeFdJR1FWaVNKQnpIU1pKQ0VBVERNTC9mUHprNWVlYjBLWmZiUlpFVWlpSW9pdkk4MzJxMUdKYjFlajFuejU0bVNSSUFBUFVBb1Z3cXJhMXYzTGx6TjV2TmdTQ0VZUmhKa2pBTXQxcXRyYTNvbzBlUFc2MldMTXM5UGVIOS9YMkh3ekV4TWVaeU9lYm5Gd3I1UXIxUjUzbCtkWFdONS9tcHlZbSt2bDRJQWdFQVVHUUZ3N0dlbmhDQ0lBekRObHV0eGFWbEZFTUhCa2djdzlRSlIwMnZPVzd6d0xFVHdPRU5RUkFFRS9IRS9uNGNBQUFVUlVPaFlLUzMxMlEySVRDa1drT3IxYjU3OS83TXpLd29pY0ZnVUtmVmFyWGFRTURmMjlzamlISTBHdDNmajZFb2hpREkzTng4cTlYczcrKzMyZXdzMjZuVmFySXNXeXdXaTlrYzdnbGZ1SEIrZkd6TWFEUWdLQUpCRUFqQ2tpUTI2dlZxclk3anVNbGtwQ2hTZVJyUklMVmE3ZjM5ZURBWVdGaFlWRlhITUV5eFVGRFBFMVpYVndWQjhQdjlmcjh2a1VodWJLenJkSnBRS0lpaTZPN3VicWxZYWpOTUpwT2RtNXVyMWFvb2lvUkNBWFZoWTdQWmJEWWJRWkQ3K3pHVzdhVFRHYWZEN3ZHNEtadjFhYTJoWXhrNWQ3d0U4TnlhVDVabGp1YzVqZ05Cc0Zhcm1jMG12OStQWVFRRXlUQUVTYktTeXhkdTN2b1VRZEJ6NTg1TVRVNHBpaUxKTW9JZ3FYUm1iVzF0Ym02KzArRWNEa2M4Rm04MDZnaUNRQkFFd3hCQllBYUQzbURRRHcwT1JpSTlrYjZJM1c1WEZFQ1dKZlUwUUZGa1JRRVFGTE5hN1FBQVNLTFVhamJWaFNvRWdUUk5EUThQaFlMK2MyZlBiRzF0NS9KNVdaWlJCRVVSR0ZBVUhNUHE5WG8rbnljSWdtR1l4NDluU3FYeXViTm50RnFkMys4UCtQMFFETmRxOVYvKzhwZExTeXNHZzhIcjgrQTREc015Z21BZFRtZzBtb1ZDUVpKa1NaSjRRUlFGNGJnTitjOXh2QVJ3Q0ZCUkFCaUdlM3ZDdVd6dXdjUEhtVXg2Ym01dWRYWDErdlZyQXdOOVZxdWQ0OWhpc2RSc05pT1JQcjNlV0NxWFNKSUVGR0F2azVtZlgxaGFXbW8wNmdSQnR0dnRubkRvcjgvK1ZVOVAyR0kxb3lpaXVoSVFoRUF3REVPZ0tBcjVYSzVXcTdYYWJZN2plRjdnZWVHWjF3RUFnQUpCRUF6REtJcVFKRUhUdEZhcjFXbTF0SVllR2g3cDZ4OFNSVjRVZUZtV0lRaUNJTERaYk1YaWlmWDFqWTJOeld3Mlc2bFV0cmQzb3RIb3FWT25JcEVJVFZGc3N5Vkprc1ZpS1pmTHlXUlNFRVFFeFJpR2ljZjNabVptUC83a2sydzI1M2E3UFI2UDIrVXlteTNxVHV1eFRhMDhwZ0pRZHo4NWppK1Z5b1ZpVVpLRVlEQUFBRUNqMGZ6b28wODJOemVucHFZQUFGaGRYYlBaN0lGQXdPR3dJd2hjTHBWWFZsYWV6TTd0N096QUNCTHA3UmtkSGVudjcvUDdmRTZuUTI4d1lCaXVLQXJYWWV2MWVxbFVMcFVyalVhanc3S2lLRXFTQk1Fd2ptTVloc013ak9NNGdpQ0FBa2l5SkVtU0tJcnROdE5zTmtSUmxtVVpna0FjeDdWYW5kRm9OSnVOWnBPUnBDZ1loaFZGTmhqMEpyUEo1L2NPRHcvdDdlMHRMUzJ2cnE0OWZQaG9mejgyTlRVMU1USHU5L2tvaWdxSGU5cHRwdDF1TFMrdFdDem1XQ3crTjcvUWFEU05SaE5OMDVJazFlcjFYRDVYYjlSdEZyUDhMWi9tVVFaa21mb1BmUTEvUGc1V3dEQU1DNEt3dmIyN3RMUlNybFFNQnIzTDVjUXhvbFF1Nyt6c0ZRcDVrOG1JWVZpN3pXaTEybUF3YURhYjZ2WDY0dUxpek14TUpwTTFtMDBuVDU0OE1UMDFORHpvOVhwSlVnTUNjcWZUcnRXYTFXcTFYS25VNncyR1lRUkJBQUFRd3pBY3g5U29mUXg3ZWdDc2p2b2dBRXF5cExyZ3NpeExraVJKb2lDSVBDOElQQzhyTWdoQ09JNFo5SHFUeVdnMEduUTZIVVZSS0laQ0VDendmTEZZakc3dnpNN09QMzc4ZUdkbmw2S280ZUdoRTlNblBGNlBLRXFwVkNxVHlWQVVLVWxTcTlXV0ZTWFNHL0Y0bkFBQUZBdkZRckVFSTNCZnBHZHFja0tqMGFqci9tTTREeHdqQVh5K2tpRlVMbGMrL08xSExNdUdnb0hlM2g0SWdtaU5Ca0hRWEs1dzY5YXQrL2Z2QzRJd01ERGdkRG9waXFyVnFwdWJXK3ZyRzRMQTkvVkZybHk1ZlBIQ2VZL0hoYUtvS0lxQ0lMYmFyVUtobUV5a3M3bDh1OTFHVWNSb05GcXRGcVBSUUpFVUNBSWN6N0ZzaDJVN25VNUhqVnA3RnFJakl3aENFQ1JGa1FSQjBCU0JFd1FFd1Z5SGF6UWFwVks1V0NxekxJTWlxTlZxOGZxOEhyZExwOWVpQ0F3Q0lJS2dBQVJXeXRXVmxkV1BQN2t4TS9Pa1hxODduYzdSMFZHUHg0TWdTS2xVaWthamxVcWx0N2YzUnovNjBkRFFJQVFCN1hhTFpWaUc2VHgrUE1NTC9LbFRKOGRHaDlRYk9ZYmgweSt6QUE0Nk1SNUVnNmsvUVZHVVpkbWQzZjBIRHg3NmZkNU9wM1A3OXQxS3RhcWFUazlQVDdGWXVuSGp4dWJtSmtWUmJyY2J4L0Y4UGgrUHgzVTYzU3V2WEh6MTBpdVJTQTlCRUJpR0tySlNxOWUzb3RIdDZFNmxVaU1wTWhnTWVEMGVtcWJaRGxzc0ZqT1piRDVYcU5acUhNZktzb0lnS0lxaUVBVEJFSVNnS0FSQmFxaXpvc2l5SkV1eXJDZ3lqTUFVUlp1TVJxZlQ0WERZOVhxOUpNbjVmRDZSU0paS0paSWdRK0ZnWDZUWDZYVEFNS1RHdWttU1ZDeVZIeng0ZE9QR3piVzFkWVBCRUF3R1NaTE01L09aVE1iaGNGeThlUEgwcVZPRlltRmhZWEZqWTBPV3BiTm56em9jam5hYmtTVGg3YmZlME90MHdnc0NPQTd4RVMvL0d1QVBpYnpQS3VvREFBQkJNSTVqV3EydTFXWVhGeGMvK00ySFdxMFdocEdkN1oxME9tMjMyOXZ0dGxxZ3ltZzBKcFBKWnJNWkNvV3VYN3M2ZldMSzUzVlRKQW1BWUxGWTJ0N2UyZG5kWTlxTXlXUUtoY002blpibitVUXlXY2dYS3RXcUlBZ1FCQkk0NGZmNWFBMU4weVJKa2dST0lDaUN3QWlNd0NBSVNxSWtTYUlrU1FJdmRIaU9aZGxXcTkxb3RGcXQ5dnJHNXRaV2xDSkprOWxrdFZuNyt5T1NGQzRVU3Nsa0twbE1PWjJPd2NGK3A4T080N2drU1U2bjQ4cVZWKzEyKzZlZmZuYi8vb1BkM1YyejJTeEpVcmxjMXVsMGxVcGxhV2xwYjMrL1ZxdW0wNm4xOVkxbW8zbjk5ZXMybTAwVVlSUkZRUWhVbjlPTFQrL2wxc0RMS1lBWFU3cEFFSVJBRUhoMkNDQkpFdGZoYTlWYXZsQllXbHF1VnFzdWwydHNkRVNqMGN6Tkw2VFRtZDNkdlhhN1RWRlVxVlNTSkdsZ29QL3ExZGZPbnp0anNWb0FBR2cwbXBsc2JtOC9sc3ZsRlZsMnU5MVdtd1ZGMFdxbG1zbG1pOFVpeTNaUUZMVllMRmFyeFdhMW1pMW12VTVIa2dTS29RZ01ReENrWHM0emsxTmtXWllsV1JSRmp1ZGJyWGFsVWkyV1NzVkNzVnl1TkZ2TlJyTlpyZFljRHJ2VllyRmFMUmlLbGtybFZDckRNRXd3R1BCNjNRYTlIb0lnbTgxeSt2UUpvMEdQWTlqOHdtS3RWa05SVkpibGZENC9QeitmeStWc051dncwQkRIY1FzTGk3dDdlNHNMaTMzOWZTNlhzOVBoU0pKRUVFaVdBUkQ4NHFmM1EzK2szeGN2cHdDZVF3MTNVNytHSUtqVmF1ZHkrVmdzbnMzbE1wbE1wOU1KQkFKalkyT1hMMThHQUdWcGVlWHg0NWxNSmszVE5BUkJ6V2J6NU1rVFAvclJHMmRPbjRJZ1VPRDVWcXVkU0NUbkZ4WWJqYWJMNlJ3YUd0Qm90Ykg5Mk16TWJES1ZJbkFpNFBkTlRrNEVBMzZUMlVRUUJBUkJpdnpzbUV1V242VzJQTjhMREFSQkNJWm9pdFJxYUtmTEFRQ2dKSXJOVmpPYnpVZWoyMXRiMGQzZFBacW1CZ1lHQmdmNlE2RmdQSkhZMk5qTTVRcWxVbWhrZU1ob05FcVNpQ0x3eU1pUXhXTFI2blIzN3R3dGw4c29pbWF6Mld3Mk96dzhmTzNxYTRPREF4aUdMUzB0d3pDY3krZHhnaUFJY250N054d09HZ3g2TlVKT0RWczZQQnU4eEcyOVgvSmdPRFYxSFVFUWp1T2J6UmJEc0xJc0x5NHVQM2t5VjZ2WCsvb2lIbzhiUlZHU0pDOWZ2anc1T1ZHdVZENysrSk9GaGZsbXN3bkRzTUZndUg3OTJrOS84dDdvNkFnTVFUQU01M0w1bVpuWjJibDVvOUZ3N3R5WlVDaVFTQ1IrKzd1UGw1WlhDQnc3ZmVya2xTdVhKcWNtL1Q2dlJrTkRFQ1JKc2lTS2FramM0VFRMNTY3endPZVdGVVY2dWgwa0FZQ01vWmpSWkF3RUFvT0QvVDZmVjViazlmV05wYVdsUnJNUkRvWEd4a2NsVWR6YWl1N3M3bW0xV29OQmo2S0lJQWhhclRZVURHcTBtbmc4a1Vna2lzVml0VnFWSlBua3FaTWpJNk1ZVGxTcVZhTkJmL0xrOU9qb0NBekRLNnVyTE1PU0pJa2dhTDNlQkFCQVRiZC9VYVUvOU9mNTNmTXl6d0JxbHk1WlZwTEo5SDRzbnNsazYvVWF5N0lNdzdxY3pyUFRwNncyS3dqQW9WQjRlWG14VWluUHpEeloyZG5kM2QwVkJFR1NaWmZMOWZaYmI3N3g1dXZCWUlDaVNKYnRiSzVGbDVaVzJFNW5iR3pVNS9Ya0M0WDc5eDVtY3ptRFhqOHlNaGdLQnAxT2gxYXJRUkJFT1ZTcDRVdXU3V3ZkREVWUkFBZ0NJQWdtU1lRa01LMUdZN1BaZ3NIQTlzNU9KcFA1L1VjZjkvZjFCVU5CczhXOHM3Tjc3OTZEWXJFd05EeG9zWmdsVWJKWXpSY3Zua2RSVkpMRWVyM09NQXpMTWc4ZlB0Um9OSUlvR2cyRzE2KzkxaHZwMFdwMWpVWnpkVlVUalVaWFZ0Zk1KaE5OMDBhVEtSRHdoWUlCdFFUZHl4MHkvUkxPQUFlclh0WDNLSlVyYy9PTDhYZ3lsOHVsVXVsY0xzOXhYSDkvMytVcmwvVjZyVTVuMUdob3B0MjZjZU5tT3AwUkJJRWtLYTFXZzZMWTJOaklYL3pGVHdjSGgwaVNxTmRxdTN2Nzh3dExnaWdHQTM2ZjE1UE9aQllXbHZMNWdzdmxQSDM2NU9Ua2hNL25KUWhTbGlYMTJPdkFiWGpPc3RVZ1BCaUdZUVNCWVJpQjRVTWxmVjVjZ3dMcUFZR2lLQ2lHR1EwR2w4dHB0bGdBRUN3VlM1bHNUbEVVczlsa3NWZ2F6VWFoVUdKWlZrUFRPSTdERUtqVGFpMFdjeTVYS0JTTEpxUHA1TWtUUnFNcG1VeEdvMUdDd0gveWszZDl2cEJHbzlWcTlTaUtMQzB0UmFQYmtpZzFtMDIydy9HOElDdXl5V1JVeFh6NDRuL29qL2M3NW1VVHdPR0dqUmlLTmhyTjlmWE5sZFYxRUFScG1xWnBxcTh2b2lnQVJkR0JnRjhTQlZtV2E3WDZ4c2JHSjUvY3dBbml4SW5wQ3hmT204MFdzOWtVNmUwZEdob3lHWFVDTDBTanUwK2V6UE84TUQwOTZYSTUxOWJXUC9ua0ZnU0I1OCtmdVg3OW1zL3ZReEJZRUhnMW1oODh4TUdGUGYzK2FVNFdJTXVLSk1taUtBbWlKTXV5QWlqUFh2NkgzM3Y2MWJPY0hWbVNCRUVBQU1Wb01vV0NBYS9YVTZsVUZ4ZVhDb1dDMysvdjc0dlVhclZZTE41dU1SYUxCY2R4QUFBRVFhelZHeWlLall3TXYvYmFhOFBEUTN0NysrdnI2eGlHalkrUGFXaENFa1cyMDhubE1wbDB4bVEyRFE4UHRkb3RuVTR2Q0h3cWxmYjV2VFJGSHl5TFh4VHpTOEJMSllERFk1V2lLQmlPWjdLNWhjVmxETU5nR0JaRjBhQTN2UGJhNVZxdHRyMjlXeXdXUlVFc0ZvcTM3OXo1elllL0pVbmliLy8ycjhmR1JsT3BsRmFybVpnWTYrM3RnU0JZcDlNdUxpMHZMaTRST0g3MTZoV1daVy9ldkRVM3R6ZzFOWEg5K3RYaDRVRU1SU1JKVkk5Um54YlBPdVRQSEZ3U2lxSUlpZ0lBd0xDZGZLNFFpOFdqMnp0Ylc5dmIyOXZKWktwUmIwSVFSRkUwaG1IcWNnQ0dFUWdDbiszZkFvY1ZKWWtTQUFBNnJiYTN0MGR2MENVU3ljY3pNeHFOWm14MFZLZlRybTlzVkNwVms5R28wMm1iemFZQ0FDUERReGF6cFZncVJTSTlmWDE5TE1zK2ZQaVE3WEN5ckxTWmRqUzY5ZGxuZDJpTjl2U3BrMTZ2WjM1K3dXNjNVeFNWeVdUc2RydlJxTWN4N0NDbjU3bTdld2w0ZWRZQUwzclZDZ0NCSUFKQkVBQklPSTQzR28xU3NjaXlaMDZmUG1Vd0dQYjI5bWFlekNvS3NMVzExV3cyWDc5K3JhY25YSy9YNC9IRTZkTW5lbnZDRkVYVkc4MmxwZFhOcmFqSlpCNGRIY2xtc3c4ZVBHdzBHNjljUEQ4MVBlMXdXQkVFRmtYcHl4YUxpcUpBRUl5aWlLSUF0Vm90bmtodWIrL3M3dTRsRTRsY1BsK3ZOemlPazJVWlFSQ1R5UlFNQmtaR2hzZEdSME9oZ0VaRHQxcHRCRUV3SEVOUjZNQ2hPcmc1OWE5b3RacUo4WEdLb3A4OG1Ydnc0QkhMc0lPRC9XZk9uSjZkblp1Ylh4Q2xFWmZUZ2NBSXBkRWtFc2xNTnJ1K3ZqazFOWG5tek9uVjFiWHQ3VzBJQXExV3F5eExIbzluYW1wS282SG41K2RydGZwQmVnQ0dJZ2dNQTRlV0tJZXpLWDdvRC95NzRTVVJ3SE1tQ0VFUWpDQUFBQ0FJakdIWTFsWlVwOU9YU3NYTnpVMkN3Qzljdk9EemVYRU1iYlhib2lqVkc0MTJteGtmSDRNZ0tCNVBWcXRWdlU2ck54Z2xTYXBXcXh1Ym0zcUR2cmNuekhIY3Zmc1AydTMyK05qb3BVc1hkVHE5SkVrOEwzeUZZNkNHL1pSSzVmMVliSGxwWlhGcGVXc3Jta3dtUzZWU3M5azhTSGdIQUFCRlVhUFIrT1RKay9HeDhhbXBTYS9Yazhsa1VSUUpoOE1EZy8wa2dRTUFjSGhkQVFDQUxNdXl6R3UxbXJHeFVaMU8rN3ZmZmJTeXVpb3I4dlQwWkU5UE9KbE1yYTZ1YVRTMDBXakFjRXFqb1FrQzM5N2VIUmdZOFB0OUl5UER0VnJOWnJPNzNTNFFCR3cybXl6TGQrL2UrK2lqajJWWlRpVGlLSXB4SEllZ0NBVEJhaFNUL0h4MWlaZEVBeStEQUo3ZnBnQUJCVkM0VHFkY0toY0xoVTZIVFNRU0JvTkJGSVZHby9HclgzK1FMeFJlZWVYQ3dNQ0F4V0pHVUpTbWFhN0RHWXpHVm91cFZDcUtJb01nS010aUlwbWNuWjJISUhoa2VFZ1ErSTkrLzNHcFhMNzYydVV6WjA0UkJNSHpIQUFBMEZjYWdTQ0lxWFQ2eVpQWkd6ZHVQWGp3TUpsTWRqcWRMM21sVUNnVUNvWEMwdEx5N1R0My9INS9PcDBHUWZEczJiTS8vZW1QdlI2WHlXUWtTUktDL2xEelVMVS9qdXNnQ05MVEUvclp6Mzc2aTEvOGFuWjJYaExGVnk2OUlrbFNJcEZjV0ZnNk1UMWx4akFJQkdBWTZuUTZyVmJMYkRLcVRmak9uVHNYQ1BpTHhWd3FsZm5zczgvdTNMbVhUS2JVaVU0VUpiUFpXQ2lVS0pMUzYzVTBUYXQxVVo5NzdDK0JCbzY4QUo3eit4RUVVUlNnVXFuTVBKbmIzZDFydGRvWWhwNDZlVUtyMDZBb2VtSjZzbHl1MWh2TisvY2Z6Yzh2T1owT3Q5dVZ6V1lGZ1FjQWhlTjRobWwzT3B5c0FPbDBabU45czlsc1hyOSt0Vkl1UDNqd3NGUXF2ZnZlTzBPREF4aUdxWVdydnVLU1lCam1CWEZsWmUzblAvKzNHemR1eHVOeGhtRU9JdSsvWW1PUlpkbnQ3ZTFZTEthdXA0dkY0dWJtaHR2dHZuNzkyc1dMRjkwdWx5UUpraVFlR0o5NjFBREtzc051ZS9mZHR6Nzk5UGFqeDA5SWtod2FIaUpKY25scHhXZzBFZ1F0U2tDejJSSUVvZDFtTkJvTkRFT2xVbmxsWldWemMyTnpjNnZaYXNtU05EazVjZTNhRmIzZW9DZ3l3N0FzeXo1OCtPamh3OGNlajJ0aWZLeTNONHdnaVBUNTVzUXZnUWFPdGdDZU8xcENVVlFVcGEzbzlxTkhqK3YxcHRQcG1KZ1lOeG9OSkVFOGpjaUhJQkFDT1k1dk5WdTFXcTFZS205c2JHNXRSVnV0VmlGZkJDR0k1NFZPcDdPN3U2L2E2K2pJTU05eGp4N05WQ3ExeTVkZkhSb2NvR25xc091aUFoN2F2NVJsR2NleFZvdFpXRmo2Yi8vOUgrL2N1WnRPcDlUVDMrZXUrY3Z1U00wTVZyL041L1AxZXAyaTFxclZXamFibjVxYUNQaDlkcnNOeDFIVit3S2VWYmxTRk5uamRwNDllMW9VeGNjenN6Uk4rL3krWUNpd3RyYWgxeHRFVVN5WEs1ME8xMmcwWUJqS1pESUxDd3ZOWnJPL3Y2Ky9QMkkybTNWYUxVRVNNQXhKb2dpQ0lJS2dDZ0RVNi9Wc05wZE1wajc4N2UvSHhrYW5KaWRzVmpQSGM0ZVRKNCs2Qm83d0x0QnorOU5xSVpPVjFZMlp4N1BGWXJHL0x6TFFIN0ZhTElvQ2REcGNzOWxxdGxvZGpvTWdtQ0pKZzBGdnNaaE5aaE1NdzgxbXM5Rm9xaUVTdFZxdFZxdVZ5eFZKRWtQQm9OL3Z2Zi9nVVRxVDdlL3Z1M0xsRWsxVEI1VUdELzd5Y3hjRXc3QWtLYXVyYS8vMEwrLy82dGUvem1UU1g5dk41YXZ2VVJBRWhtSFU5SzVFSWxHck40d0dnOGxrZk82a1ZzM2lOK2oxZXIxaGUzdW5YSzdvZE5wd1R5Z1dTM1E2blZ3dXU3T3oyK2x3TUF3WEM0VjRQSUZoK09EZ3dNakljQ2dZTUJtTk9JNUxzdHh1TTgxbWkrdndraXpETUt6VjBGYUxCY2V3YXJVV2l5VUFBTkRwZEJxTjVxQTN4K0huLzBPYnc1L0kwUWlIL3RwUkU0WmhXWlpqOGNSdlB2aGR0Vlk3ZS9iVTJPaG91VnplM3RuTjV3dHE5cU42NHFTZU90RVU1WERZUStHUVZxdUp4ZUtmZlhabmRYVmRra1FJQXR2dGRyM2VlTys5ZDg2Y09WTW9GSDd4aTE5T1RVMWV1ZktxMDJubk9RNDQ5R0VmM2hnNStBSkJrTjI5L1gvNWwvZi95Ly9uLzF2STV5VkordHE2bk44RTlVMHdEQXNFQW4vOTEzLzE5dHMvQ2dZQ09JRWR0anRabGxFVUV5VnBhV25sd3c5L3E5TnAzM25uclZLcHNyNitzYjI5bzFaWlZOVm90VnBlZSszeXlNZ29obUhwZEdwL1AxYXYxMlZaZ1NCSUVBU2VFM2lCQndDQXBxbFFLT2oxdWp0czU3ZS8vWWhobU1uSmlVdVhMbUFZOGsxdTZFaW80a2pPQUdxRXorR1lkUWlDU3FYU0wzN3hLMUVTSnliR1BSN1A3Yy91enM3TnQxcHRsOHMxTU5BM05qb3lOall5T0RnUURvY2RUZ2VPNGZWR0k1M09pS0xnZERwN2VucHF0ZXJ5OHZMK2ZnekhDYXZWZXZIQ2VVRVFidDY4NVhLNUxsdzRGd2o0QlA1cHdjTXZ6QnBSRDU1QkVLelhtei8vK1M5Ky92TmY3Ty90dlRoU2ZrdGtXVzQwR3RGb3RGQW9tTTBXbDl1Sm9lamhUQzVaa2RSZG5YYWJTU1NTeFdMcHpKbFRsVXAxZlgwemw4dXBGWWQ4UHQ5Zi91VlB4OFpHcXBYcTVzWldzVkEwR0F6aGNIaHdjR0Jnb0wrL0x4SU0rdTAyRzRaaDVYSjVkWFY5YjNjZlJaSHg4YkY4UHIrM3Y0OGdpTXZ0UmhGVWtzVG5qanRlUFBQK29TM2w2emxpQWxCdEhZS2Vsa3BXclora3FFd205OW50dTZsVXVxK3ZqeVRJbVpuWmZLSGdjcm5HeGtaSFJnWjhQaCtDSXNWQ2NYTnphM2xsSlI2TE41b05GRVhWWEJORlVReDZuY1BwS0pYS2UzdjcxV3JWNlhUU05KMU9aMHFsOHJWclYzckNZUlNCRDQ2NmdFTm5vb2VIZGdSQldMWno4OVpuNzcvLzg3bTV1Y04rLzNlSXFnR0dZV2tOUFRJeXJLSHB6N21DQUFBQUlJYWhXcTIyWG10c2JtNnB2U1hyOWZyYTJucWhVQmdhSFBqUmo5NlluSnFzMStxMVdrT1dGUkFFSzVWS01wSGMyOXRYUndTOVhtZTMyMjAycTA2bkEwR3dVQ3p1Nys4ak1HcXhXSGlPMjl6WXREdnNCcU1SdzdDRGUxUXpQRi84c0g1b2UvbDZqdElpV00xYlBVaW9oUkVFQkFBSWdvckYwdHpjL01yS1dtOXZEd2lBYStzYmUzdDdreE1UMHllbVFxRUFna0E3Ty91elQrYVdsNWN6bWF3b1NYcTkzbTYzMld4V285RmtNcGtWV2NaeFBPRDN2WHJwWWlxWit2U3p6K0x4T01keGRydDllSGd3RXVrbEtVTDQvTGJQaTJlOWFzQnBkSHZubDcvODFkTFMwdUg2dU44dDZsS25VcW5zN2UweERLTStsdWNrSUFpQ3grMGNIaGxNcGxLenMvT0Rnd01rU1ZhclZaSWt6NTAvZS9Ma0NVVldLcFZhb1Znc2x5dVZjcWxjTGhlTHBYS2x3bkdjWHEvckgraWZucG9hR1JucTYrczFtWXdrUWN6T3pUOTYvSGhxYXRKbXN4ZExwYnQzNzRFZzFOY1h3WEFDVUdTMXdCN0g4ZXJZOUVPYnlSL0hrWmtCVkQ5ZUVJUnl1WkxMRnlBWXdYRmNGTVJtcTMzLzNvUEZ4U1dTSUVaR1IyWm5aN2Uyb2tORFF4Zk9ud3NFZmJJc3I2MXQvT00vL3AvLzlFLy9QUFBrQ1Mvd05wdlZhcldCRUpTSUorN2Zmd2dDaXMxdTAycTFCSUZiclJhR1llYm5GNUxKSk1Pd1EwTkRiNy85cHNsb2ZMSGQwSXRqbTFxVi83ZS8vZWo5OS84MWw4dDlyNDhDQkVHYnpUWTJObmJ1M0JtOVR2ZmlBa005WFNZSUFnTEIrWVZGaG1IMzl2WldWMWZQbkRuejdydHYrL3plUXI3WVpwakZ4Y1ZQUC8xMGRYVk5vOVdTRkNtS1lqNmZtNXVkZi9Sb0pwNklZeWpxZHJtTUJxUEJhTUJ4ZkhWMXRWQW9tTTJtbnQ3ZXVkbDVudU8xV2kxTmF5QVk2blM0UXI2WXorZHBta1pSNVBCMS90Qlc4L1VjbVJsQVVSUVlSa1NSMmR2Yi8vaVRtMzE5a2I2K3ZsYXJ0YnE2bGtxbGUzdDdUcDA4OGZEUjQyaDAyMkczbnp4eEFnUWhwczF1UmFQLytJLy92NDgvL29Ra3lmZmVlL2ZkZDk4T2gwSkdrN2xhcmQrOWUrZC8vOS8veS8zN0R6UWFqZGZqQmtIQWFEUkUraUlEQXdPZmZQS0p4KzArTVQzbDlYaGtXVHBVdytjTFVPV2c5am05ZmZ0MnJWWUR2bTZ6LzF2aWNEZ3VYcmp3enR0dm1VMG10ZEQ1aTg0M3ovTmFEVDA0MkwreXNyYTJ0cmF4c2FIUmFNNmNPZVYwMmhFWVJqRjBiMi92MGFOSDI5czdnNE9EZi8vM2YrdjF1anNzbTA1bjd0MTc4SzgvLzdlN2QrN21zbGtRQUUrZFBrVVFsTkZvbXBpWXVISGpCZ1NCZi8zWGYzWDU4cVdGK2NWLy91ZC9HUjBkRFFRQzZWUnFLN3FGd01oZi9kVi8wR2pvbzFWczlNZ0lBQVFCU1JKeEhMTll6QnpIZi9UUkovTnppejYvRDhQUTAyZE9lZHp1Y3JuODJXZTNaVmwydWQwb2ltbzBkTGxTZWZEZ3dZMGJOM21lZi9mZGQvN3FyLzdqNk9nd2ptTUVvUzJWS3RsTU5oS0o2UFY2RUFLajBhalg2NElSd21xeDlQU0VaMmRuQjRjR0J2b2pLQXB6M05NeTVjOHU0M09lejdNYW8waTFXdC9hMmw1YlcxZlBlcjhQNjBkUjlHRGdQM2Yyek5EUUlJNWpoOWZaQjZvN0NGa3ptWXhUVXhOejgzUEpaRExnOTRlQ1FiMU9MMGxTcTlYYTN0NE85L1RvZFBwcXRkcHFOVW1LdGxnc0pwUEo0WEFDSVBoUC8vVFAwZWoycnovNGpkMXVIeG9lUmhIRTdYSlJGQldOYnQrN2QvL2l4Zk1VU1NhU3FYUTZzN2EydnJHK1FaRDR0YXRYU1pJNGN0RnkwTGQvaXo4UHFxT0pJSWpiN1Q1Ly9xelZhcWxVSytWeUdTY0lyVVpUTHBmdjNYdXd1cm9xeXpKRjA2SWs2ZzM2Y3JteXNiRlpMQmI5ZnYrcnIxNmFucDZrYVFvQ1FZRnZ4L1ozTjdZMng4ZkhYcjEwMFdJMngrSnhYaEFBQUtRb3l1VjBPcDBPbjg5cnNwaGtXVDQ0NC9xS21COElnbks1L003T2JqNmYvLzdHUDRxaUJnY0gvKzV2Lytadi91by9uanAxVXEvWGZWRVpuejk4TGNzeURDT0RRd05lcjBlcjFScU1SclBaUkJCRWgrTktwVkt0Vmo4eFBmWEtLeGRrV1Y1Y1hDcms4eUNnd0FqczgvdGZ1M0xsOU9sVGtpVE56YzJuVWlrVWhyUmFHa0VSbXFiTDVmTE5tN2QydG5jZ0NOWm9OSjFPSjUxT3d3ZzhORFI0NHNRVVFSRGYrY2JYOTgyUm1RRlVaRm5XYU9qcjExN3planpyNnh2bGNrVVV4T2hXdE5WcTVmSTVTWklhaldhNzFhSklncWExZ2lDMDIyMjFOTG5GYk1GUXROTmhZUml1VnV1eGVLTFJhRVFpdlFHL2IyTnpxMUFvOHJ3QUFCS0NJanE5em01MzZQVjZOWlR0WUNqL2lvRk43UVlaanllK0xOVG5XM0p3Q09Cd09FNmNtUFI0M2FJbzhqei9oODdZZjNqbFFSTWtVSlpsRUlJc1p2UEUrSGd5bWNJeG5DUkpDSVk3SGE1ZWI2QW82bkk1UVFDdzIyM1I2SFl1bC9ONjNRSXZ3QkJzc1ppY0RnZUtvaHpITVV3YnhSQ3IxYnkrc2RucGNLSW9OcHZOamMwdGd5RVBBQ0JGa2NQRFE3Mjl2Y1BEQXk2blF6MXVQMExEUDNEa0JLRFc5a0VRZUdob3dPdDFGNHVsWnF1Rm9TaE4wMm9ObkhRNlc2bVV6V1lqZ2dCT3A5M2o4U2dLa0U2bmM3bGNwOFBKc3BMSlpIWjI5eEtKcEliV2hNTWhraVJrV1VaUTVHRHNSQkhVYXJNYVRVWU13dzY3MTEvK3VZS2lLS1hUbVd3dUMzdy8zci82aHZWNmZYTnpJeHJkc1pqTkZFMTlJMmREVVVBSTdPa0pqNDZNbE1vVitGblZhelVyRFFKQm04M2ExOWQzNzk3OXJhMXRtOVdHWXFqRDRTb1VTcWxVU2hSRnY5L3ZkTG8wR2kwdkNLSW9wbElwQkVIZWZ1dEhQL3JSRzZJazFXdDFITWNzRm92SlpDUUkvSENOMFNQRUVST0FpaHIwWmpJWnRWb05Md2d3QkJFRVliV2FyMTE5N2VmLzlqOUxwWklnaUFBQWVEMmVWeSs5a2t5bWxwZVhiOTM2bE9NNWdpQkVVY3JsOHMxbTArbHdtRXptWnJNcENBSkZraWdDQXdBb1NaS3N5RmFMeFdRMFlpaktjZXFJL3FYT2orb1dDWUpZcmxUVTVlLzNCOC96NlhSbVpYVnRZS0JmcDljZFBtZDRMdlVNT0h3K0xjczJ1ODNsY2pXYUxaNFhKRkhDY1V5bjAySVl5dk84UmtQM2hFTTNiOTVLSmxOejh3djFldDNsZEQyWm5WMWIzd2lIUXovKzhYdkR3NE00UWJBZE1aOHZLSW84T0RqdzJtdVhnMEcvTE1zY3g4TXdoR0U0REVNSFp6SS9wRm44U1J3TkFieDQ2cVFlUStJNFRwS2tMTXNnQkdxMG1pdFhYczNsOHJWNll5dTZZN1ZhRFViRHVmUG5VQXkvY2VOR3E5VzZmZnN1anVOVFU1T1ZTbGtRaEw1SWhDQ29kQ290Q3FMTlpsTVR3QVZlNERqT1lqWnJ0Um9JZ3I1aFQwVkprbGlXN1hTK3I3My9BNXJONXRMUzB2bnpaNzFlaityL2YrSExQaDhqSkdtMUdvTlJEMEVnd3pBOHp4TTRZVGFaQ0lKb3RWb0FBUHI4WHBJaVc2MVdzVmpLNVhKTFM4dnRkbXQ0ZUNnU2lienh4aHVoa0U4U3hYd3VtOHZsaG9ZR3o1MDcwOXNiaG1FSVFSQ0N3QlVGa0NSSkZDVUFVRjRVNFpIZ3lDeUNnUzhhNXdSQlVIdlI4UndQS0VBazB2dVRuN3czUERTNHRyYTJ0N2RYS3BVMEdzMzU4K2YvODMvK3YweFBUNnUxYVNPUlhnQUFBRURwNlFuRE1GUXFseFZGQ1FUOEdJWURnTUt5TE5ObXpHWXpSVkVLOE1kNk10OTc5UVNPNDFaV1Z2ZDI5OXJ0TnZ3c1Z3dDRZZFBwY1A2a0xDc2tRV2kxV2dSRm04MVdwOVBCY2RSa01oZ01obHE5MFdpMnJGYWJ6V29UUlpHaXlQNit2bHF0N3ZQNS92Sm5QL3Zydi80cmw4dkY4K0orTExhOHZBeUN3T3ZYcjEyN2VnWEhNVkdVZUo3bk9KN25lYlVIMmRFdEtubzBab0N2NXVDaGk2TFkzOStISU9pangwOXUzUHpVYURRYVRVWVFBT3IxUnF2Vk9uM3ExTmo0S0lvaXpXWUx4ekNmejkxczFQTDVQQVJCWHE4YmhpRlI0SnJOVnB0aGVpTVJqWVpXdnZHR0JnaUNDSUtvT1dqZks0SWd4R0t4emMydDA2ZFBCb01CVWZ6YU9VZVJaUW5EY0lQZVFGTjBxVlJ1dHhtanlhVFZhb0pCZnlLUlNpUlNnNE5EYnJjckd0MFdSZkdOMTYvakJCNlBKMVpXVnd2RkFvNWpETU1XQ3NWT2h6dDc5dXpFK0loR294RUU0U0E1K0tzL2ppUEJVUkxBYzE3bWkwNm5MTXNvaWdSREFacldwRktwY3FYQ3ROdUNJUEM4U0pLVVArRHI3UWt0TDY5ME9oMkgzVzQwbWphM3RqcWRqdGZyTVptTWFoT3VlcjB1U2JMZFppVUo0by9ZMEFRUC92TzlQNEZXcTVYUEY2cTFlZ2lFQVFCVTg5ZSsvUFdnMm9ERFlORGJySlo4b2RCc05RRUFnR0VrSEFyRjQ4bFVLaDBJK1AxKzMvcjZScVZjMW1ycC92NEl5M1lxbFVxNzNXYmFiWklrSTVHSXpXWU4rUDBhTGZYY3NjTnpYeHhGanBJQVhoeDFEbGZ3VStkOGRSdU9waW1kVG9kaEtBUkRQQzlFbzl1bFVpbVZTaHVOK25nOGdjQ3d3V2pnZVdGN2U4ZGdNSVJEUVFSQlFSQXNGSXFWU2tXbjAxcXNaalczNWh0L3RPQlhuQko4dHhBRVFkTVVqbUdLb256Rk11QXdzaXpyOUZxdjEvTmtkcTVjcm5SWUJvSWd1OE5tczFvTHhlTDI5cmJOWmlOSnNsUXV4V0x4ZUR4UktCUkFFTFJhYldheldhM2VydGZyVUJRQlpFVUdsZWMraFJlLy9UTThoTytRb3lTQUw2b29DQnkyQUJBRVJWR0t4NU5MUzh1MVd0M3RkZzBPRGhJRXViQ3dtTS9uYTdWcUxwZGpHQWJETVFpQzltT3hkcHNaSFJueCtUeVNKRUlRbEVpbTY0MW1JT0RUNjNVUURCMXNhWC90aHdwREVFMVRhcWZIN3hVRVFad09SMitrMStHd3k3TDR0YTlYTDE4VVJacWlmSDdmd3VKU1BsOG9Ga3NPcDUxQThONUlUNnZkWGxsWkd4d2NvQ2lxV3EwL2VQZzRIbytYU2lXWHkwV1NWQ0FRak1YMlYxZlhCSjRmR09qdjcrOHptUXlIMndoODRXZDB0RFJ3WkFUd2hiVUUxU1NYZzlyL0lBQlVxL1g1aGNWUFBya1o4UHVpMGUzNStZVmdNSmpOWnNmSFIyRVlucHRiS0JTTE5FVm1zMWxKa3Z6K2dGcituK2Y1V3EyZVRtVWdDT3J2NjBNUlJKYStVUnFYZWxVNGpubzhicWZUc2JLeThqMkZBS24zaUNDSXgrc05CZ0lHZytIRnpNd3ZRNUlrRkVXdEZyUGY3eStWS3Z2N2NhZlRJWW1TMisycVZLckpWSHA1WmFYWmJKWktwU2RQWmtkR2hqMGVkN3ZOUEg0OHM3aTQyR3cybTgybUxNdnhSSktpU0t2VnJIeSswYnlhdS95OWYvemZHMGRHQU05TnRXckp2bmFicVZTcUxNc2lDS3pYNjYwV2kwNm4wMUFVRElFT2g3MjNweWVaVEgzeXlRMmU1MFBCSUk0VExNc1dDNFUwejNNYzUvZjdBd0VmcmFFQUFKUmxZSGxsTlp2TCtid2VwOE1PQU1BZmRhUVB3YkRaYkRHWlROL2Y3YXYzTHN0eXRWcXQxZW84ejZNb0lzdGZOVWNkZm1LS291QTRIZ29GdHJlM2wxZjR2cjVlZzBHUFlhamRiZzhHZzRzTEMvRjR2RnF0cWgyOFVSUXJGdVByNnhzK24rZmMyYk9DS003T3p0TTBSV20wTUl3MUdvMXlwZHJwZEJBWTBlbDBScU1CaGhHMUZPcWZ3dzYrYTQ2TUFBNmhRQkRNc3Axc0xyKy9GNnRXYXp6UHd6QkUwWlRGYkE0Ry9jR2dmM3Bxc3NOMmhvZUdTSXA4UERPVHlXU2kwVzJuMHdrODg5YTFXcDNiN2RGcXRSaUt5ckpVS0JSdjN2eTAwK0VHQi9zSml1UTU3bytheWtFQU1CbU5ack1GUmRIdktROUdSVDJPWFY1WkdaOFk3WXYwOEx4ODBQd0crRXBYVFYwcjIyeldWcXU1dTdzYkNnVXVYcnlBSUFoSmttNlhLeEdQb3lpS0lBaUtJcFZLdFZLcFJLUGJpVVRpL1BtekhxOG5uOHRydFpyVHAwOWlLTHEwdEp4SXh0dHRodXR3QUFocU5ScXZ6K1AzZVhRNjNaL1ZCTDQ3am93QURrZGZnaUFZanljZVBwcFpYOThnU1JMRE1BQUExRDNwaWZIUjBkR1JNMmRPLzdmLy9vODJ1ODFxdFlaRG9lWGw1Ym41aFVpa0RZS2d3K0V3R0F4OWZYMTZ2VjRVUkVWUjZ2WEcwdExTL1h2M3d6MDlGRVdCd05NcUM4QTM3aGdueTdMWmJQSjZQU2FUcVZnc2ZuOWpvVG9Eek13OEdSa1pDUVdEQjAvbWF5OVNmWGdFUVFBQXNMZTNmL3YyM2I1SXhPNndLN0lNUVZBd0dDeVZTdGxzbGlUSmJEWmJMQmFqMFNnTUk2T2o0NmxVWm10cnkrbHdSSHA3ZDNaMlo1NDhLWmVyR28wR0FFQ080d1JSMEsrdm56OTNabXhzUktQUnFQdG1SMnNaY0dRU1lsUlU2KzkwdUU4L3V6MC92d0JCa0U2blV4UUZKd2lYeTJVMm05Zlcxc3VWU2pnY1lobTJVcWxXcTdWT2gzdjgrSEc1WElZZzBHdzIrLzErajhlajErc2hDS0pwRGFBQUc1dGJuOXk0dFIrTCtmMytzZEZScjg5N3VQRE9Wd1JCQUllT3FBbUNhTlFiMGVoMlBwLy82bVhpdDZmZFpvd0d3OGpJc0ZhclViTkR2OWxpSFZRVVlIMWpNeDVQZERxY3JDaDZ2UUdDNFh5K3dIRWNpcUlhalFZRXdVUWlzYmEyVmlnVXJGYnJ4TVJFTkJyRk1PVEN4ZlByRzV1UFo1NUlrdHpmM3krS0lzOExLSW9nTUp4SUpFUkJNcHBNVHFmamNNbU1vNktCSXpNRC9BRkZVUlJGcjlNSEF3R2p5ZWh5T3RnT20waWtrb21Feit1eFdNenRkbnQrZnRGbXMxZWowWFE2MDJnMDFMTWJraVN0VnF2YWwwNDlTYTNWYXJ1N083dTdlL1Y2L2VtNXFRSUFBSHg0VWZjVjQ5bkI0bHNWUURnY09ubGllblYxdGRQcGZLL3J3bUt4c0xLNnNyUzBiTEZjd25IOGE3ZHJEK2N4QzRJZ1NiSWdDR3RyNndpQ2VqeHVuaGRxdFJyTHNoQUUwVFJ0dFZvQkFHZzJtN1ZhYlcxdHJkVnFlYjBlU1ZLV2wxZDBPaDFKRXJ1N3V5aUtCdnhlbTgzS0N3SkZrUmFyR1VQUkk3b1VQbUl6Z0FvSWdqaU9PWjJPY0U4d0VQQTc3QTRVdytyMWVxbGNWbyswa3NtVVZxdk5aREs3dTd1WlRLYlZhZ1VDZ1ZBb1JGR1VXcFFUUVJBY3gwVlJhRGFiSklGN1BHNE5yU0ZJd21ReWVqeHVCSUVPeDFwK0F3ZERRUkFZUVJGQmxCWVhsOHJsaXFKOFgxN1EwMHVDSUpQSk9Eb3lRdE8wMnZ6eWNEekNpNWVubG8ySnh4UHJtNXNFamsyTWp6dWNEbGxXT3AyT0pNdU5lcjFTcWFoTkFWRVVsU1NKNDdoT3A2UHVzR20xV2dnQ3M5bXN6V3FWWlNXZno0K05qWTJQallaQ0Fidk5hckZhZkY2UDFXYkJjZnk1eE5FZnlqeitLSTZNQUE0L1VBZ0NUU2FqMDJrM20wMDBUZWtOUm8vSGF6S1pIang0Q0VFSWh1R1ZTcVZhcmNaaXNWZ3NWaTZYclZacmIyOHZRUkNaVEtiWmJLcGJJaGlHQ1FMZjJ4TStjV0o2Y0dqUTUvTTJtMDJtM2RicnRDYVRBWUhoZzFqb3J4MWZRUkNVWlFYRGNaSWdNdGxzTnBOcE5CcmZrd1U4ZlZzRm9HbjY1S21USnBQcG1SZjAvSFVlRE1scUtZMUdzM1gvd1NOUkVDY25KaTVmdVR3K1BvcmplSzFXSzVWS0RNTVVpOFZzTmxzcWxVUlJOSmxNT0k1WHExV1daZFgzNFRqZWFEVFY2NDEydTlYYjIvdldXMi81ZkY2Q3hMUWFqY05oTjV0TkJJNGYvbk5IeGZxQkkrUUNQVGZESGxwb0tqTFBveGp1Y05qNysvdlQ2VXl6MldSWlptc3JFWThuMnUyMnVrcE9KQktDSUlpaWlLSW95M1lhalVZeW1aeWFtclJhTFhxOVZtMk01WGE1eStYS3htYlU3WFpxdGRybi92cFhmNmhxSHJyRFlmL3hlKyttVStsaXFmUTlKY2VvU0pMVVlUbEI0QlZGQmtFMXl2OExMdTlRWCtST09wMHBsY3MydTlWdXR6TnRScWZUZUQzdWZDNDNPenRYTGxlYXpXYXRWbTAwR2hBRXFTZDZScU94MVdxbFVpbVdaVm1XN2VucHFWYXJEb2Q5YW1xQ3dCR2U2NGlpOEdKR3pwSGp5QWpnT1E0SFFhZ3RnSEVjODNrOXlXUXFrVWhVS3VXdHphMXFyUWJEc0RyZU94d09tODFtTUJoTUpxTzZYOEV3VEt2Vit1eXpPMDZuMCsvM1lSakdzSjEwSnFOcmFscXR0dG9pOG5DczVSZHE0UEJldXlSSktJcE1UVTI4OWZhUEtwWEt2ZnYzdi9PN0JrR1FJQWl2MXpzeU1uemh3bm1yeGZxRlFXbUhCMk5abGlFSTVEZ3VsODFsMGhrWWhQeGVud0lvang4L3lXU3lsVXJGYXJFNEhBNGN4d1JCcU5WcTFXcXRWQ3JsODNtR1lkcnRkclZhclZhcnpXWVRnaUFNdy9WNm5kMXVBMEhnNEFqaXFEZVFQRElDT0pTTnJuNzdoekZQTFpRRmc0RFJhT3gwMkwyOXZYd3VsMHFuQVFDMDIrMCtueThVRGczMER3UUNBWXZGYkRJWlVSVGhPSzVTcVdhenVWZ3NuaThVQzRWQy8wQy9LSW9jeDdWQTRGbXR0VDlpWFhld1p0QWI5SzljdkpCTUpMZWkwWEs1L04xdWlVSVFaTEZZWHI5KzdmcjFhNzI5UFNhVFVUMGZlN0VxeE9jZEVraFJGSjduRzQyR0xNdnRkanVYejYydmI0aWlaTGZiKy92N3pXYWpUcWNEQWJEWmFwWExsVlFxdGIyOXM3VzFGWXZGMUFNeWhtRkFFQXlGd2dSQmtBUnhrSFVKSEdYVFZ6a3lBampnY05yckgwNDZBUUFBUVJURHF0WHEvdjUrclZaREVNUnV0MDlNVEZ5OGVIRjhmTXpqZG11MFdoUkZDUndEUVlEak9LUEJhRFFZU1pLYW01djc5TFBiNVVwWm85RWlDQ0xKTW9iaGFrdWx6LzlkOE9zdURBUUFRT0E1bjk5Nzh0U0pPM2Z2UFg3OCtMdDFoQkFFc2Rsc2x5NjljdTNhYXlBSThMendZalRvRjdhclFWQUVKd2cxMzIxN1ovdng0eG1DSUNjbUpvYUdobXcycTlHbzE5QVVCTUdDSVBLQ09ESThmR0s2RkkxRzc5MS9jTy9ldloyZG5YYTd2Yk96bzlGb1JGR0VZZmh3S2E0WFMxSDh1UTNpV3o3U0gvb0MvaFMrTUFwU0FSU2U1OHJsc3RvZGVuaDQrUExseXhjdVhCam83ek9ialJpR0txcHhLRUNINHh1TlpyRll5bVF5eFdLUjQ3aHF0ZmFQLy9oL0VnVGhjcm1tcHFaRVNlUjRYaFJGK0ZERnYyOTIzcVFvQ2tBUXFOVmk4WG85OC9QejMvbEtBSVpoWGhCWWxzVlE1R3N2U1MwdURRQ0FLRWlTS05icnRaLy8vT2ZOWmxNVXBlbnA2VktwdEwrL0w0b0NvQ2dnQUpJa2dTQXdpaUVhR2pjYWRVNm5JeEFNOWZiMjNycDE2OUdqUjVWS3BWS3VOQnNOU1pKUTlITlZFSS9jenM5aGpxUUFua05SRkJDRVpCa29Ga3ZsY2xtdjE1ODVjK2J5NWN0RFEwTU9oME5SZ0h5K3lIRWQ5VFNBSUVpYXBrbVM5UGs4WnJQQjRiRHI5Rm9NUXlFSVRDYVRxVlNhcHVsZi9mSUR2Y0hnODNuSHhrYklGMHBlUHNlQksveGNzZkx2STBvTVFXQ3IxV28wR0ZBVWxiOXlwMVhkK3BRa01aWEtiRzV1cFRQWlRDWVRqeWRxdFpyUmFPenA2Wm1hbW94RWV0MXVsOGxreEZCY0ZLVjh2dGhxdFNSWmdtR1l3SEVVdzdSYTdmVDB0TkZvOUhnOG4zenlTWnRwRjRwRm51ZEpFZ2VlRlpvK2lxUCs1eDdwRDMwQmZ6cWZEME1IT0k2UHhXS2lLUFgyOXA0NmRhcW5wd2NBZ0wyOXZVYWp3WFU0U1JZaENFSVFWRkVVRE1kc1ZxdmY3N05hVEVhRHdlbDBoRVBoeVltSnZmMzlVcW5FTU95alJ6Tm1zNW1tS2VTYkpYa2R1aElRQWdGQkVDdlZXaTczM2RjSWdpRFlaRExxOVRvTVE1L05MVisxNTZndWdsZFcxOWJYTjNRNjNlblRwL1I2bmR2dERvVkNMcGZMYkRaaEtOSnF0ZmVTKzhsVXF0Rm9LZ0FnUzVKNmlBSERpRWFqMGV2MVZxdDFiR3lzVUNpc3JxNlZpcVZTcWFUVDZkVGVxWWNMZFA4WlAvbnZraU1zQUpXRFU1NUt1Ynl4c1VVUWhNZmpvV2s2R28xV3E5VkNvZEJvTkNpS3N0bHNkcnNkdzdCWUxMYTN0NmZYNjgrY09kM2JFM1o3WEFhRE1STHBpL1QyaWlKZkxCV1hsMWR2M0xqbGREbjhQaTlKNEFldGY3L2lHZzZ2UmlBSWJqTk1KcE5OcGxMZmVXQ2NScU54dVZ3YURmMjE1OVBQL2d1NTNVNjN5NW5MNVoxTzU5V3JWL3crRDBYUkVJeElvdGhvTmhLSlFqeVdXRnBlVVdzblRreU1Jd2hhcjljeW1XeXBWTUp4M0dxMW1zMW1GRVZEb1ZBdWx5dVhLeHViV3g2dlYrM2I5eEp3aEFXZ0xzVVVCVUJSdE5Gc2JtNXRyYTZ1QUFDSTQzZ3VsOHZsY3F1cnE5VnExV2F6ajQ2T2pvMk5uamh4Z3FMb2h3L3V4K094VnFzRmd1RDZ4dWJLNnBvNjQ1TWsyV3EzOHZrQ3d6Qm5UcDg2ZWVwRU1PaFhoL0N2M2U0NE5BTW9NQUtYSzVWWVBQWWRWb2xUclZsdk1FeFBUNy8zN2pzK24rK3Jrd0VPWWpRQUFLQnArbzAzcmp0ZHpybTVoUTgrK0kzTDViUllMTElzTjV2TlZvdkJNSXpBTWZXRXhPTnh2L2ZlMnhSSmJXeHMzYmw3YjM5L2YyRmhFVUhnVUNnVWlVUUFBRUJSTkp2TDNidjM0TVQwTk9tMHZ3U0hBTUNSRnNEQlhoQUlnc2xFNnU3ZCsrMTIyK1B4R28xR1VSVFQ2YlJlcnhzY0hIQzVYTzAySThzU2p1TVdpN212TDJLejJXVlpHaGpvbzBpeTFXN3Y3ZTN2NzhXME9tMnoyY2hrc2ppT1Q1K1lDb2VDQ0FJZnR1QXZISFNmYTlHbnZpQ1pTTzN0N2pNTTgxMnRBWjRPNXdBQXd4QkpraWlLQWwvcGVIenVxbVRaNFhBTVMzSWhYL3oxQjc5UkZFVVVwVktwNUhBNFFxR0F4K05GRUxSYXExdXRWci9mNy9YNklRaGNYbG1WWlRrY0RvZENvWjJkblZhclZhbFVYQzZYMiszZTN0NWVYbDVaV1ZuVmFtbXRWc3R6UEhqVTZxRS94MUVWd01GbmpDQndzOVhhMk54YVdsb3hHSXlSU0svRllzbmxjaTZYYzNKeU1od09sOHZsbVprbm5RN1hZVm1tM2FZMUdvMUd3ekJ0a2lRSGgwWUFRQ0ZKaW1GWUJFRXNGb3NreWRsc0RzY3hCSUdmWnBsOW80SC82WW9RaG1HTzR6ZTN0cmEzZCtUdmJnR2cvcUZPcDFNcWxXcTFxaWdLT0k1SjBqZHl2aVZaeG1BRWhoRlpsakVVOWZtOFpyT2wyV3dORFBRTkRnNDRISzVLcGNaeEhFMVRlcjJlWlR1eUpMQXNLNHFpVHFjN2YvNWNxVlJjV2xvdUZJbzBUZmYyOW5RNjdON2UvcVBITTRHZ2YwQ3ZCNTZ0Qkk3dU11QklDdUR6bFpuaFJDSzF1cnBXcTlVbUp5ZjYrd2RZdHFNb3dQWHIxeTVlZktYZGFtOXVicklzSy9CQ1BwL1BGL0tLckxUYjdXS3h1TEt5Nm5KNTdIWjdNQmpnZVM2ZkwwUjZlMm1LM052YmkwYTNMV2F6MFdqNHN2amVMOHZQbENScGZ6OCtQNyt3djcvM1hkMnNHc2tEQUFDS291cHFSMUcrT1BEaEM1K1NXc0VrbTgxc1JhTzlrWjZ4c1ZHQ0lBVkJHQm9hc3BndFBNZG5zK21kblIwRWdSdU4rdnI2bWhvSkowbFNvVkFnU2VLdHQzN1UweFArOWE5L0k4dUsyKzBCQUxCU3FTNHNMRTVOVFFiOEFSaUdEb2FKSTZxQkl5bUFBMEFRbENSNVkyTnpZMk9Eb3NpTEZ5OG9DcEJPcFkwRy9mbnpGeEVZV2xwYVdGL2ZrQ1JwZTJjbm04dEprZ1NCWUxGWUxKVkt0MjU5QnNQbzZkTW5iRmFMeFdKWlg5L2tmSnpSYU5ScWRXdHJHNzI5dldhTFJWRTZoK3VoZitFSGZCQnZJeXRLSXBINnAzLytIM2Z2M2xNNzB2M0pOd1hETUlwaElBQ0NJSWdnTUVFUUJFRkVJcEhYWDc4ZURvZFFGUDJHS1FlcWVGaUdVWGQ0MzN6emRWbFdpc1VpUlpFVVJWY3FsZVdWbFFjUEhpV1RTWTFHczdLeW1rNW5aRmxSdTl2WGFyVzdkKytaVE1hZW5wNkxGeS8rNGhmLzArVnlqb3lNNVBQNXUzZnZyYTZ1alk0TyszMWVudWQvYUN2NFZoeFZBUnlZWTZ2VlhsdGJMNWNyUTBPRDRYRG80WU5IUE0rZFBIbGliMjkzZjM4L2w4c05EZzdhN1ZhajBVQ1JGSUlnaWlLZk9ERlZLQmFLaGRMdTdrNDZuZXp2Nnd1SHd4UkZzU3hMMC9UZzRNREt5bW9pa1F5SGd6QU1LY29mMHRDKzhFcGdHRVpSdEZhcnp5OHMvdWJEMzM3MCs0OWpzZmlmZkY4V2kyVm9hR2gwZEZTajBZQVFDSUVnaXFJVVNXaTBHby9IMHhlSm1Fekd3Ni8vNm1VSkFBQUlnc1JpaWIyOUdBekRmWkZJcTlWcXRWcG1zM2xoWVdGell6T1R6V0lvOXQ2Nzc5anROcFBKaE9HNExNdUNJTlRyOVVLaFVLdlZQL25rWm05dnI4MW1kYnRjaFVMZVlOQmZ1SEJlN2F3Uml5VUNmdjhQYlFqZmxpTXBBSFhDVld0M2xrcmxaREpKRU1URXhFU2owU3dVQ29JZ3lMSzh0TFFzeTFKUE9OelhGN0hhckJxYXdqQVVCQ0ZKa21SWlpoZzJseS9zN094RW85SFYxYlZ5cFlxaWFLVmFzOXVzb3lQRGp4L1A3T3pzRGc3ME81MzJnNjNNTDR2NmFqTk1LcG1hZVRKMzg5YW45KzdkeTJWejM3eGV3M1BBTUR3K052YVRuLzdrL1BuekJJRkRFS2pPQmhnSzR6aEJrQVNHb3BJa3l2SWZzYmFXRldWMWZTT2R6b1JDUWFQSldDNVg2clc2SkN0N3U3dWlJSGc5M2toZkpCandhYlVhREVNaEdBWUJVSlNrVG9lcjFXcXhXSHhqWTNObmU2ZGFxZWdOaHYzOVBhMVdlK0xFaVo2ZWNLMVdpOFZpNHZrejMyc3ZuRDhEUjA4QXp4WUFBQWhCc2lUbEMzbVdaWjFPWnpBWW1wOWZLSlhMSUFpdXJXL3FkTnB6NTA0UERRN2dPTUZ4UXFOUnorWnlETU5Ja2tUZ3VGYXI5M245a1Voa29ML3Z6cDE3czdQemZyK3YxV0wwT3AzWDYzRTZIZnY3KzZ0ckd3Nm40K0NQZm1Fb3FDd3I1WEwxdDcvNytPYy8vN2ZsNWVWdnMvRVBnaUJGVVdmT25McDI3V29nRUZRVUFUalFteXpMaWlKSmtxRDZHOTlnWGE0T0VBQUFsTXVWbGVWVmp1T21weSt4TE50c3RYTDVRaWVSQkJUNTFWZGZtUmlmZ0JHczNXNFdpa1dXWVJSRlFWRkVvOVhyOVhxZjF4ZncrM3A2d2pNelQrYm5GM0VjeitlTEJFRU9EZzZPajQ4L2VmSWtrOGx3SEllaHlGRjAvUTg0ZWdKNGhnSUNvQ1FwMVVxVndBbXIxUXFDNE43ZTd1Ym1wc1ZpR1JzYnZYNzlxc3RwZ3lDNFVxM01QcGwvK09qUjV1WldyVlpERU5obXMzdTkzbEFvTkRVMTd2Y0ZYcnQ2bGFUSXhjWGxXcTFtdFpvZER2dlpNNmMvK3ZqRzdPenM5TlNFVmtzRFh4a1hDb0VnaG1FNGpuL0xraEFRQkJtTlJxZlRxZGRwSmJIemZMbjlnNVh2TjdNMlJWRWdHT1k1WVg1dU1aMU91OTN1MFpIaDZQWk9PcFd1VnF0NnZlNmR0OThLaFVQMVduMXg2Y0g2K21ZeW1jem5jclY2blNCd2w4czlOVFY1L3R4WnY5L2o4YmdJNHJ4ZXAvdnd0NzlQcFZJQW9DUVNDWWZEUVpLVVdoc0NRMUgxVlBpSHRvYy9rU09URWZZY1Qzdm1DZExtVmpTWHkrdjFlcHFtYjk2OFdTZ1Vob2VIZnZ6ZXUzNi9oeVRKZERyNzBVZWYvQi8vN2IvZnV2WHB6czZPd0F2RHc4TWpvNk5PaDBNUWhFdzJpNkdvMCtrd21ZekpaTExUNlVBUVRKSmtYMTlrZnorV1RxVTFHdHJuOTJNb2Vyanh5ZWVMVkFNb2lqcnNkcC9QcDlmclc2MjJHbkw4UjkyTCtvWW9pcnJkN3F1dnZUWThQUGpVcEQ1blZTQUlnc0RuL2pUNFpSdFRpcUxBRUFSQlVMNVFmUDlmZnc3RHlLbFRKejF1MThyS1dpS1pKRWxpZEhSNGFtb3lseS9NemMwbmswbUR3V0MzMjBBSVNpUVNDd3VMVzF0YmUzdDdwVkxaN1hhWmpBYTlUcWZSYXRydDl1TGlVcUZRc0Zpc0pwTTVuOC9ydE5ySnlRazFlK2FybDBuL25qbTZNd0FBQUFBQUFnaUNHQXdHQkVIeitYdytuOWZwZEFQOS9lRndDSUxnV3EwK056Zi8vdnMvdjNQM0RzTXdMcGZyOUpsVFAvM3BUM3Q3d3lBSTV2UEZ6YTJ0cldnVUozQy8zKzkydXhVRjZIUTYrVUt4TjlJek1UN1dhRFR1M0wzWDM5L3Y5YnJWL2NjWDJ4UUFBRUJSWkg5L245Zm5DWVVDTHBmejk3Ly9lRzF0cmRscy9yRzNBa0dRWHEvWDZyUW9pc215OEp5NWYyMm81WE5sc0ZBQ3I1U3JDL1B6c1Zqc3lwVXJ2YjA5eVdTSzUza0FCQzBXU3lRUzRUaE9iYUFXRG9kRHdRQ3QwUlFLQmF2RlhDd1V0cUxSUXFGWUxwZHRkaHRGa2IyOVBRYTlmbUo4M09WeUxTOHZwMUlwaDhOSjA3UkdxMUdqaG82ZTFSL2lTQXRBZ1NCUW82RjBXbTJINDR2RklzL3pROFBEZ1VCUVRjNkt4eE4zN3Q2N2UrK2VtdHNhREFiZWZ2dXRjK2ZQMHhRdUs3TEQ2VUl4ZEc1MkxwRklCUHcra2lBTUJnT0tJQ0FJSkJLSmdjSCtlcVArMjk5K05EYzNyOUZRVnF1bDArbDhvUTFLa2lSSkxJRmpVNU1USG8vSDYvSCtqL2YvOWZIam1VYWova2M1QmhpR3VWd3VvOUVBSTVEWU9kakNWODM2YXpzaGZXNzRoeUJJbHBWb2RQdXoyM2NkRHNmWTJBaUdvZHM3dTFhcnRWNXZVQlJGMDFTcFZDNlh5MWFMNWRJckYzQUNCMEhBNjNWWnpPYlYxZFZpc1pndkZOTHA5RzkrODJGZnBNZmpjY3V5WWpTYWc4RmdJcEdvVkNxMVdoWERNSjFPQjhNd2NNUXp3bzVxT01mVGpTQVFOQm1ORUF5WHkrVnNOcXVlNXRKYURTOElBQURzN081dGJHeXlMS1ArQ293Z0pFRkNFQ0NJQXRkaE81MDJ5N1FKa3RScWRaSWtWeW9WRElWRG9VREE3OTNaMlZNVVlHSmlvcisvNzVPYk4xZFcxaVJKVXJNcnYvQktBQUFRQkZFVVJiUEorTjU3Ny93Ly91Ly90M2ZlL3BGT3AvdUdacUdhck5WcVBYUG10TnZ0QkY3SWFQbm0xcVdxQmNYdy9iM1kvZnNQMDZuMG0yKytiaklhNC9HRUtJcERRd01HZzZGZWI5VHJEWUlnYUpxV0ZibFdxek50cHNOMkpGRkNVWVFnU2JYUkFjL3pHeHNiRzV0YjVYSVZnaUJSRlBWNnZjRmdZRm0yVkNvQkFLRFRhUW1DVVA0TWZVRytUNDZlQUE1OFRiVVVnc1ZpSVFpOFdxMW1zMW1DSUdpS2hpRllGQ1ZSa29yRm9scW5UWDE5T3AyK2QvOStOcE9CUUFqRENRQUF0RHJkOVBSa2IwODRsOCtuTXhtU0pNTTlJYS9QQzRKQVBCWW5jUHpxMWRkRVFieDc5LzdpNGpLRzRWKzI1WGM0S2xpcnBjK2VPLzIzZi9jM1AvM3BUOHhtOHplNUk3dmRmdlhxMWYvcmYvN2ZybHg1MVdReS9iSGQ1ajYvOHdQQ0NOUnNObTdjL0RTNnZYUHkxSW5Sa1pGaXNaVFBGMExCb04zdWREb2RQTTl0ckcvcWROcUo4YkZnSU1nTEFvS2dGRVhWYXZXWkozUEx5eXRxc3pOWmxtdTFlaWFUcTlWcUVBU0RFR1F3R0RRYVRhdlZ5bWF6S0lwWUxCYUNJQlJGT2FKVlFWV09wQXVrbXBvc3l3QUFHbzBHczhrc1MxSTJtd1VBQUlKQVJaRVZXVmI3ZG5IY0gzcW9WQ3ZWcGFYbFI0OGZNeXhyTU9nbFVRUkJBRUhndmYyOWhmbEZTWkpkYnBmRFlaZEVLZUQzSjVKSmdpVDdJcjFuenB5ZWZUSjc2OVBiZHJ2OXVYend3enpyUnlUTHNxelRhaytkT3FGMjNQajAwOCtLeGVLWDNZaGFkZWZTcFZkKy9PUDNUcDgrYWJOYVFCRDhvenFOUGlkSUdFWllscjE3OS83Q3dxTEpaSHJ0dGF0dGhzbGtjemlPUnlLOU9JNzFoRU9aVEhweGNjbGcwRHVkVG9JazJxMTJCU2tMdkxDOXUvZm8wZU5FNGcvTlhtVlpaSmcyMitrQUlLQW9Nb3Fpc2l4WEtoV0tvaVluSjV3T0I0TEFQSCtFclI4NG9nSlFVV2NBTmJmTFpESldxMVVJZ2hpRzRYbEJGQ1VRQUdBWWhtRUllR1lsR28zR1lERHM3dXpWYW5XajBhQTJtbTYxMnZQekN5c3JxK2ZPblhPNW5BUkJNTzMyd0VCL3VWSkpwZEptcyttTk42Nlh5K1hOemMyUFA3bjUxbHMvTWhyMUFQQ2xjUy9xRHp1ZERra1NKMDlPZHpxZGRydDk2OWFuNmlMa1JUQU1pMFFpUC83eGUyKy85U2FHWThMVGxsdmZKTTRIZU03MVVJdW5jeHkvdWJYOTYxOS9pT1BZeFlzWHZGN3Y3ZHUzUlZIczc0dlliR1paRmowZWw4MW0rK2lqVDBybDh1VEVSQ0RnQXdCZ2U0Y3ZsNnUxYWswVUpZdkZVaTZYMiswMmNORDZDWVlsU2VwME9nekQxT3YxU3FYc2NybGNUcWZkYmovY1NQeUljb1FGQUR5cllCc01CaUtSSHZSalZDM3MybWcwT2gwV2dnMDZuVTZqMFFMUEJCQU9oMy8yczU4NkhJN0Z4ZVdscFdVRVFVd21rOFZzdGxnc2Rwc3RsVW9XaTZWd09BU0NvRTVIOS9kRjF0WTM1K2NYcjc1MitlMjMzdnpnQStWM3YvdElvOUZjdXZTS3pXcnBkQmpneTcwVUNJSWtVVUpnK055NXMvbDhzZGxzM2IxNzl3dDlKNElncHFZbUk3MDlCSUdyNCs0M0cvcy9Gd3lubmd1cVhzcks2dHI3Ny8rYzR6by8vdkU3RStOalcxdWI1WEpsZEhRb0hBNUtrb1FnU0xGWVRxZlRuVTdINS9PaEdCcUxKMHFsY3F2Vk1ocU5reFBqVjY5ZEVRUytWQ3FxQXNCeHdtdzJhYlZhZ1JmVUJnSnFDOXBBSUJBT2h3d0cvWjk4NXYzdmh5TXBnTU5KVDZJb21rekdzYkhSRTlQVHYvN2dnMEtoVUNqa1cyMC9DSUFlajhmbGNoMzhWcnZkanNmaWFuZGJpOFdxS0lwQnJ4OGNITkRwdEg2ZjkrYy8vOFhEaDQrdFZtdFBUNDhzQ1Y2dm0yVTdLNnRyQ3d1TFE4UERWNjlkYlRQTTczLy9rU0NLcjEyNWJMZGJ1UTc3dFJINU5FVysrdXJGZHJ2Tk1Nekt5b3JxangzZVN5VkpzcWVueDJRMkEwOEwrRUNINy9ITGJ2L1o4SzhXYmxFQUFFQVFCSVNnKy9jZmZmamg3N0xaM0U5Kzh0N0l5SEN4V0l4R3Q4T2hZRERnMTJob1NaSWtTYjU3Ny83eXl0cmc0TURycjcrTzQrak96azZ6MVNaSkVzZXhTclhTYURZcWxZcmFaUm1HWWF2VjZ2UDVESHA5cTlXdTFlcXBWTHBhclZvc2x2UG56L245UGhpR1JGRTVXS01mMFkyZ28zb1FkaENpckNnS2hxRWtTVUlRdEw2eDJlbDA5SHE5eCtPaEtBckQ4V0t4dUxxNnluR2M2aUdRRk9WeU9XMDJtMXI0cmRQcFdDeW1VQ2hrZHpqMjl2YVN5YVNpZ0lHQUh3UVZraUFvaWxJQVlIZDNEMFV3ajhkanQ5dWowV2dpa2VCNTNtYXowVFFOUVUvWElRZnQxNSs3UEVXUjlRYTkyV1RDQ2FKYXJkVnF0ZWRpSjgwbTA1dHZ2ajQ0MkU5UjVMTUF6NjgzcEdkUlNVKzNqeEFFNFhoK2NYSGxndzkrazgxbXo1dzUvZnJyMStxMXhsWjBCMFdRNmVrcGs4a0lBZ0RIOHh1Ylc3Ly8vY2M4ejczMW96Y25KaWNxbFdvOEhoY0V3ZUd3TzUwT0FGQzJ0cllmUEhpUVRxZDRYcUFvNnN5WjA5ZXZYM2M2bmVsVVpuZDM3KzdkdTgxbTg5S2xWLzdpcHo5MnVaeUs4b2ZtMkVmVStvR2pLNEFEUUJDVVpZbWlLSlBKVks4MTBwbU1LSXBPcDB1UkZaUEpDSUpBSnBQTjUvTTh6OU0wSFlsRXJsMTd6V0F3OER6ZllUdXhlS0xSYUdpMDJvQS9ZRERvVmxmWEV2R0VYcWZGY2F6VDZTQUlZaktiR28xR09wMEdGS0N2djk5bXMyNXNibTVzYklBZ2JMYzdTSkw0d3BPcWcyTlIxZXN4R2cyaFlFQ24xVEVzMDJ5MjFEMFRSVkZRRlBYNS9hOWZ2eG9LQlhFTUUwVUpCS0hEb1E4dkh2UStlOCtEbjROcXI1Q056YTEvL2RkL3kyUXlaODZjK2N1Ly9GbW4wMWxZWEJKRmNYSnlRbTh3TkpyTmVyMld5K1YvL2NHSDJXeDJlbXJxUno5NlF4U0ZPM2Z1Ym0xRk5ScU4wYUQzZVQxV3E3WGRhdDI5Y3krWHk4dXk3SGE3Ly9Jdi8ySmtaSVRyOE5zN3UrdnI2MXViVytGdytELzlwMzhZSGg1QUVFUVVSUWo2Z3RQeG84V1JGd0J3eUozdyszMnRWcnRVS2dtQ2dCTUVCTUZhcmRacXRlN3Q3UlVLaGI2K3Z2L3dILzZ5dDZkbmZYMnpYcXNQRHZicmREcUtwRXdtbzl0dDF4c015V1J5WTNNckZvdHp2TEM3dTUvT1pBa2NqL1QyTkpyTldEek9zdXpJeUtqUDY2MlV5M2Z2M20rMW1sYUwyV2F6d1RDa2h0MURFUFJjeGFpRGJWT1NKSHNqdmYzOUEwNm5Fd1JCTmRIZTQvRmN2bnpwNnJYWHJCYkxnU2VESUo5YnVEOW5XQkFFUVpEYW9RdUNZQmpGc0VhamVmdjIzWC81bC9kYnJmYTc3NzU5L2ZxMVRxZHo5KzQ5SEVPSGh3ZE5KdVBqbVptbHBhV3Q2TTdLNnVydDIzZENvZENycjc3cTgvbFpocTJVS3lhVGFXaHdRQlNsVkNwTlVsVC93TURLNmxvaWtiQllMRC82MFkrdVg3OHVpbEk4bmtpbFV2UHo4NEdBLzhmdnZmUEt4Zk1vaWp5M1dEKzZBamlTYTRBWFVSUUZRU0MvM3p2UTM1ZEtwZVB4dUZhckZRVEJack41UE42Zi92UW5CRUZRRktYV3dJckg0aWlHdXR3dWZ5REVzbTJTd0ZpV1hWMWR6V1N5SUFoU05JM2p1TkZvYkRUcUR4ODlPbjNxNUVCL0gwMVJ1N3Q3T0lhSHdxRjMzM3RYbzlVdUxDeFdLcFVMRjg2UGo0K2lLS3JJRWdDQUdJWVNCQUVBaWlpS2t2UTBTUktHWVVVQllGRUsrSDFhemV0VGt4UHBkTHBjcWVoMHV1R2hRWmZUcVZvMERDT3RWb3ZuZVJpR0tZb2tDRUtTSkRVbERRQUFETU1nRUJKRWdXRVpXWklSQkZFVUlKdk4zYmg1YTJscGlTTEoxMzk4Zld4c3RGRnZyS3l1YWJXYTRhRkJDQUx2M1h1UXorZHROaHNFUVpWSzFXZzBsY3ZscmEydGdOOUwwK1RZK0FpQ1lEaU9QM3p3TUo1TWdqQ3MwK2tnQ0l4RUlzUER3eGN2WG13MlcvVjZQWjFPcTN1andXQ2dyNzlQbzZHNXo3ZVFPcnJXRHh4cEFYeStHQWtvU1hJbW01TVZ4V0F3Y0J5WFRxY0ZRV0FZeG1ReTlmWDFjUnhYcnpjRVhsQUROcFBKNUtlZmZqWXhQdW54T0EwR1hibFNmZno0U2JWYUN3YURrZDVlVVJSSmtpQUliSDh2ZHUvK2c3SFJVYVBSWUxOWkU4azRqTUNCZ1ArdHQ5NEVRVEM2RmYzZDczNi90YldGb2dpTzR3YTl3V0t4NlBRNm05V2kwMm5WazJPZTV3dUY0dDVlckZBc1VpUnBNQmdNQm9QSDQ5RnF0YlNHSWdsTUxkeFpxVlF6bVZ5cFhLN1g2enpIa3lRWkNQbzhIcmRXbzFHbmwyYXpWUzVYaXFWU3ZWWXZsY3NzeTBxU1ZDeVc0ckc0MFdTNi9PcWw2ZW5KWXJHMHZiTXJDbnd3RUdaWWRqdTZFNDF1RHd6MmF6V2FScU5wTU9oUG5UcXhzcks2dnI0K1BEUXdQREppczVINWZIRmxaZTNobzBjZ0NJRWdXS2xVWFM2MzIrMEpoOE1ZaHUzdTdqV2J6V0t4VUN3V1hTNFhncUxWYXJYVmFxRW9xanBqUjlueW4vSXl1RUFBQUNBSXd2UEN3NGVQNHZHVTJqZXAzVzUzT3AxR28xRXVsem1PczlzZERvY0R3ekM3elM1SjBsWjA2OU5QUDYzVmFnZ01FU1RWYXJYdjNYdGdOQnBQbnB3T0JBTDdzUmpETUU2SHcrUHhmUHJablhnaVFWRmtNT0RuT0Q2WlNqRU1Fd2o0UjBaR0lCamUzTnk2ZWZQV3padTM1dVlXVXVsTW85a3FGSW9kanNNd1hLT2hJUWpLNVl1UEhzNzg5bmNmTFN3c3B0T1pRcUdRenhjNmJNZnVzRm5NWm5VY3JWYnJxNnZyRHg0K2lzV1M2K3ZyaTR0TEc1dGJ0VnJkWURDWXpXWVlobHF0MXNaR2RINWhjV2xwWldibXlXOS8rN3VQUC81a2VYbWwzVzVOVDArOS9jN2JJeU9qaVdSaVpXVkZFSVJ3T0tUSTh1M2JkOWZXMTExdTU4bVRKL1pqc1dReTVmRjRob2VHV3ExV3A5TXhHSXg2dlRHUlNOeTRjZU5Ydi9wMU5MbzlOamJhMnh0cHRWcHFIeDJlNTNkMmRuSzVYS1BSNkhRNkdJYjE5UFEwbTgxT3ArTncyUFY2SFFSQkIyVkpqL1FNOEpJSUFJWmhobUdYbDFkcnRScUtvaWFUeWVQeFpMUFo3ZTN0YkRhN3U3dGJLcFhhN2JZZ0NCMk9jem9kWHE5WFVZRGw1ZFVuVDJZM042T1ZTZ1VFd2FuSnlhbXBhWi9mWnpZWm85SHRhcjBXOFB2YURNT3lYS2xVcnRjYmtVZ3ZSWkg1ZkdGL1AyWTJtNGFIaC92NklpaUtKaExKN2UxdG51ZUR3WURQNTl2ZjMwK24wd2FEUWF2UjdzZmkyV3hPcDlNNG5VNFFoQ3dXY3pBWVdGbFo2M1JZdlU2cjV0M2Z2Lzl3WldXTnBFaTczUzRJZ3RGb0dCNGVCQlNGMW1pTVJpTUFBSi9ldXIyMHZDTExpbGFqdVgvLy91cnFLb0tnRnk2Yy8vdS8vN3VyMTY3U0ZMVzZ1ckt4dnVWeXUxd3VSemFiVzEvZnltU3pMcWRyZEd3MGxjcWsweG1mejNQMTZtV255NDNBcUN6TGhXSng1dkhNQng5OHNMUzBiRFFhMzN6ampiNUlwTmxxYkc5djUzSzVyYTJ0bFpXVm5aMGROYlBaNi9VT0RnNnlMTXV5SFpJa1RXYXozV0dEWVZpU1h3WUJIR0VYNkRsQUVJQWdTSktrZHJ2VmFEUndIS2NveXUxMjEycTFiRGFiVHFmVnJuZ1locHJOWm92RlFsR1V5K1ZrR0RhWlRPN3M3TWl5TFBDOHlXd2FIeDhMaFh2VzFqY0wrWHloVUhJNVhScU5odWQ1Q0lZMk5yZUdCZ2ZNSnROV2RHZCtmaUVROEhzOG5wLzk3S2VSM3A2UFB2cGtmV01qSGsrOGR1V3lRYTlMSkZNek0zTTJtODNuOCtoMU9nUkZSVkc2Y2VNR0JFR2hVTERSYUJTTHhmMzloTThmYnJVYXlWUWF4ZEJUcDZaM2QyTm1zOG5yOVk2TmpqWWFkYjFlaDZMSWZpeSt1Ulh0N2VreG0wMXpjL01NeTc3eXlzVkxseTZkTzNmTzQzWVZTNlg5L1ZpajBlanI3M1U0Yk1sa2FtOXYzKy8zd1JDb04rZzFOTDI4dkdJdzZQdjYreWxLVzhqbm85dGI5Ky9meitkekJFR1NKS251Rnk4dkw5LzY5RmF4V0dvMm16elBjeHlIWVpqVmFsVTdLbkFjdDdlM3B5aUtLRWtBQUJ6ZXFIb0pmS0NYUkFEcXJxTFRhVStsMHVWeVJSUkZ0ZEpUYjI5dkxwY0RBSUFrU1JSRlVCU3JWcXVibTFzQXNHVXlHUTBHQTRJZ0xNdldhaldPNHhpR3FkVnJ0V3JsOUprekhvKzcxV3JtOG5tbnc0R2dzT3JsUDNqd09CZ0lESThNSVNpNnNiRVpqOGNaaGcwRS9PZlBuL040dkI5L2NuTjliWlZoMllIK2Zsa0JaaDdQN1BaSEJnY0hYQzZQSUlqeGVGeFJGSW9pblU1SHZWNmZtNXZmMjQ5WnJHdlZTcmxhcmJyZHJwNXd1RktwbGtvbFJRSE1Gb3ZYNTRVZ1lEdTZQVCszZ0NEdzhQQ2dJQWlGWW5GNmV1cktsU3NuVGt4REVKUk9aK0tKQk1keFBwOW5aR1NvVkN6bDh3VUFBQ0s5UGVvMnBTUkw3WFo3b0wvZmFqWnRiS3pmdkhuei9yMEgrN0dZSkVsNnZWNFFCUFdRcmxBb3NDeEwwWlRWWXNWeHJOUGhNQXp6K1h6RHc4TXdEQmNLaFhRNnpmTzgzbURRNjNWbXN3bFVnRzhZc3ZIdm41ZEVBTElzb3lnU2lVUzJ0M2YzOWlTQ0lBS0JnTi92aHhHRXBpa1FBSnd1UnlBUXdEQXNrOGxzYm15dXJhL3Y3dTRtRWdrSWdnd0dnMTZ2eHpBc2xVckY0L0g5L1JpR29SU3RvV202V3EwaUNDeExFcVhUdXR3dVVieVh5eGNpZlpHZW5yREpaRmhmMzB6RVU1bE10cisvTnh6dWVWV1VHS2FWU1dmR3g4ZnRkbHVsV3JsNzd6NElncUZ3cUZLdWZITGpWcjFlNyszdG9XbTYzV1lhalZZdVY2aFdxNklvNW5KNW85SEFjVnc0Rk41WTMxcGNYTlJxNllIK1BsRVNuOHpPemM4dm5EZ3hhVEFhOS9iMk9oM3UrdlhYcHFhbWVWNVlYVjBwbGNwbXMzbGdJQkx3K3pDY1hGeGNybFJxVHFmVFlOQlJKTmxzdFRpT1J4Q0VvcWxNSnZ1TFgvelBYL3pQWDdiYmJiUFpyTmZyTzUxT0twVnF0OXNFUWZoODNyTm56d3dPRGdhREFhMUdtOHZsNG9tRTJoRlZraVNOUm9NZ3lPTGlvc3ZsOVB0OU5wdFZBUlRsbXpWUSsvZlB5eUFBTlRJVUJFR1h5eFVLaGVyMWhwb1lBTU53c1ZESTVmS25UcDhZSGg2eVdLeUtJb3VpY3ZXMUsrVnlPWmxNN2V6c0xpd3NMcStzN08vdmd5Q28xK3M1am52eTVNbi84ZC9vVjE1NWhhWnBOZU9Kb2lpYTFpaXkwbXcyMjYyV3dQTVFCR28xbXNtSk1hL1hzN2NYMjlyYXp1Y0srWHlCNTNpWDI0WGphS3ZWckZRcTgvUE5kRHByTXBsNG5sdmYyTGgyOWJYeHNWR1c3Y3pNUEhuNDZMSEpaTEpZek5WcWRXVmxwVmFyall5TWpJeU05ZlQyZlBUUjcvL0xmL212NCtOakRNUHM3ZTIxV3UxaXNjeHhnb2JXNmJUYS9iMFl4d2tJZ2tpU05ENCs2blk1YVpwVUZFQlJ3RmFyWGEvWGFKcUVJSmltYWJiVDRiZ09pcUw1ZkQ0YWpmN0wvM2hmRUFTU0pPdjFlaXFWTWhnTWc0T0RvNk9qdzBPRHdhRGY2WFJxdFRvRXhXQklrUlY1ZlgzajRjUEhzVmhNcTlYcTlmcGdNRmdzRnZ2NitrS2hJRW1TZ3NBZlBQa2Yrc1AvdGh4dEFUeVhvNGdpcU5sc3Nsak1ITWVUSkNGSkV0TnVReEFZRG9jY0RqY0lncTFXbldVN09xM1diRFo2UE82aG9jRno1ODdzeDJJcksydXpzM003Tzd2VmFyWFQ2ZHk3ZHg4QXdNSEJBYlBKQk1PSVRxY2pDQ0tmeisvdjczTWNaN2ZienVuUGtTU0ZFektLb2hpR2dTRDQ2UEZNSXBHMFdpeFdxMlYyZGk0YTNlbnY3eWNJc2xRcWJXNXVTckk4ME45LzhzUkpDRWJ1M0w3NzVNbWMyK1c2Y3VYVjBkR1JlcTBPZ2VERzVzYXZmdlZydTkwK01URldxMVUrK09ERGpZMU5ITWY5ZnIvRllpa1VDbzhlUFhJNkhYMzlmZmZ2UDRnblU1TVQ0NU1UNHk2WFhhUFJJQ2dxQ0dJaUhwdWJtMXRkWFJORlVSUWxyVTdIQzRJb0NBekQzTC8vWUdscEtSNlBVeFFseTdMUDU3MTI3ZXFKNmFsd1Q5amhjSmhNUmcxTkFTRFlick9OUnQxcU1XSzQzdUh3T0J6eGJEWkhFTGpSYUFBQVJhZlRXY3htblZiN0xQcnVDRmVETzh5UjN3WDZmRE5RUUJJbHR0T3AxV29NdzRpQ0lDc3lnaUI2dlI3SHNYSzV0TEt5dXJPOXJkVnExTXhEZzhGZ3NWbzB0RWFXRlk3anF0VnF2VjduT0s1V3E3VmFMWktrK3Z2NmV5TmhrOG5ZYnJmVzFqWTJOallxbGFxNmt5akxNb29ndElZbUNLcGFyYzArbWN0bXMxYXJsU0NJMWRXMVRDWnJzVmpjYmpjTUl5emJvU25xblhmZUNnU0NxeXVyLytQOTk3ZTJvaGN1bkgvenpUZjcrZ1pjTGtlOTBWaGVYbGxjWExSYUxYMlJYcXZWeXJKc3RWcHpPcDJxeXhTUHgwdWxraVRKTUF4dmJHeXlET3YzKzZhbkozVjZIYy94bVV4MmVXWGw3cDE3czdOejFWcE5yemQ0UEc2ajBXQXc2QVZCbUp1ZmYvRGc0ZHJhT3NzeUJFSFliTGIrL3Y2VEowOU9USTRQRFEyNlhFNEN4eUVJYk5TYmEyc2JDd3NMQkVFb2dGSXFsUXFGQWdpQ0FzODNtMDJHWVFpQzZPdnZkVGpzendVK2RRWHc3NEtEcVlDaVNCaUdxOVZhSXBFUUJWR3IwWkFrbWN2bE9ZNkx4V0wzN3QwdjVJdmhjTWpsY25LZERzL3pPenQ3QzR0TGUzdjdCSUViREhxQ0lEaU9VN3NqV3N6bVYxNjVPRG8yQW9IZzd0Nyt4a1pVVVJTV1pkVnlVYzFtQzhNd2lpUWxTY3JuQzgxbWs2WXB2VjVYcjlkNVhoQkZrV1ZaaThXTVlaaFdxd2tGQTFQVDA2bFUrcU9QUDM3OCtER0NJSUZBd0dHM1lTaGNLQlNpMFdnMHVwM0w1U1JSMHVuMUxxZkxhck9WeXhXWHkwbVNaREtaYWpZYktJcEJJQ1FJdkZhck5abU1Ub2ZENGJDTGtwUklwTzdkZS9EaGg3K2JlVExMY1p6VmFqV2JMUUFBdUYxT244OHJDdUtkdTNkblptYUt4YUxGWXVucjY1dVltQWdHQWdBSTVMSTVXWklJSEVjUUJBU2hWcXM5TzdkdzY5YW5HSXAxT213dWx5c1d5MmF6cFZBb3B0TVpCSUdIaDRkNmVzSnFWQ253TE5EanFGcy9jTlJkSU9DRmFnZ3dESHU5YmxwRGU3M3VyYTF0aG1XZEJvTldxMnMwMnR2YnU0VkM4ZFRKYVlOZUQwSVFBSUw3KzdGYnQyNjNXdTJod1FHRFFkOW9OUHY2K3ZyNitqNzY2UGQ3ZS9zWWpsa3NKaGlDNHZGa0xsZlVhRFJxU0tuSlpOSm82RXc2ODZ0ZmZmRGt5ZHpvNkdoZnBPYy8vSWVmTWd3ckNMeEdvOW5iajYydGJiQXMyOWNYV1ZoWWhHRm9kSFIwWjJmdnpwMDcrWHorL1BuejdYYjc3dDI3ODNOend5UEQyV3cybmM3bzlmcDMzbm1uM1c3ZnZuMm4yV3hQVFUzNi9iNWFyYWJUNlNZbnh0cnQxc1Q0K01qSWtLTElraVJSTkExQlVENWZtSnRiMk5uWmJUYWJNQUtiemFaMm00RmhHTWN4aG1FVHlaUk9wOWZwRFZhclZkM1RmUFhWUzJmT25IRTRuQWFESG9IaHRiWDFPM2Z1bDBybEsxZGVoU0ZZcDlNNjdEYUtvamEzb3JJQzJPMDJsOU9aeitkaEdCNGJHeGtlSG5ZNmJBU0IvN0hwbXYvK2VSbG1nT2Vpc2lBSW9taktZckhvdEZwSmtrcmxjcWZUcVZZcUhNZDVQTzd6NTgrNTNTNFVRZXIxeHAwNzkwUlI2dS92OTNqY0t5dXJLNnRyc1hnc204MG1reWxabGljbko2OWRmVTJXbFhLbG1zdmw0L0ZZUHAvbmVjRnFOUThQRFk2T2poWUt4ZnNQSHR5L2YzOTdlNmRlYTZBWWFqUWE5VHJkenZhZUlBckR3ME04ejVlS1piWGMxWU9IRHdxRkFrM1RHbzJtM1c2M1dpMEVobkVjYjdjWmRXMXFzVmpVeWtJc3k1SWthYmZiczlrY0JBS0RnLzNOWmhOQkVJUFJZTEdZOC9uaXl1cmF4eC9mK01VdmZubi8va01VUlNjbkowZEhSN1BackN3cmtpUzFXaTJueTZYUmFMUTZMVTJUNlZSbWVXV2xWcXNaREhwUmxOUU9JQ2FUYVdDZ3YxYXJWNnBWV2tOYkxDYUN3RkVVSlVpaTJXeUtvc2p6QXRmcG9CZzZOTmcvT2piaWROb0pISHZ1YWI4Y01qanlNOEJ6SEFSUjZyVGEzdDR3U1JMYk8zdWREa2ZUWkNEZzlYZzlvVkNRSkhCQkVCdU41dDdlZmlBUU1Cb04yVncrRmsvd1BJZGptS0xJSGJaRGtwVE5hdFhyOWFJa1NhSlVLcFZTcVZRNEhHcTEyZ2dNSXdnS3czQ2owZGphMmlvVUN2VjZvOVBwMU9yMVdDeU9JTWpPem00d0VBaUhnN2R2MzRVUm1DVEpWRHBkS0JSNmVucHdITnZhaWhJRWNmbnlxeTZua3lRSlFSU3IxV29pa2F6VmFpTWp3dzZIdlZxdGJXeHNYTGh3WHZWTWVGN3crM3lMUzh2eGVNSWY4S1hUMlV3bXZiYSt2cml3V0svWEtZcVVaUmxGTVFSQnZWNHZCRUdsVWpHWlNOaHRWZ3hGRVJoeU9wMWFqVWFTSkVFUUlRaUVZYkJjTG0zdjdQZ0Rmb1BSc0xlM3Y3dTcxeGZwSlFqUVpyZWVPWE5LcjlmWGEzVkZVUWlTc051czRYQlFiVGdpU1dyeTE4dGc5SWQ1U1FUd1hMMEdXWlk3SFJhR1liL2Y1M1E2YS9VR0FDZzBUZEVVcFJiSFZSUlpGRVdCRndxRllyM2V6T2Z6TnB0bFltSk1xOVV0TGk3bWM0Vm1xMFZyTkNSSkFpQlFLQmJXMXRZYmpjYTFhMWVyMWRycTZ0cmVmbXg1WmZYSmt5ZU5Sc1BuODEyNWN0bmo4YkFzdTdLeW1zdmxJUWdLQlB5S3JKUktaWUlnR0paSnBkTWFqWFo0ZUtqVmJDMHZyd3dPOWw5KzlWSTRIRklBQlFEQVZyTjEvLzZEVHorOURjUHc4UEJ3T3AxNTlPaHhMcGRYRkxuVDZTUlRhYXZGVWk2VjFqYzI0NG1FWHE4UEJBSVdpd1ZGME51M1A5dmMzQ1JKc3ErdkgwWFJzYkZScTlXeXNyTDZ3UWUvc2Rsc1o4K2NSbEZNcDlOcHRGcVh5M1g2OUttcnIxMDJta3libTF1TGkwdWZmWGE3MFdod0hNZHhuT3BaZ1FCZ01adk9uVDFkcnpja1NhSnBpcVlwUlZFT2N1UmZqdmpuNTNoSkJQQWNCN0g0a2lRaENHd3hQeTBwcmk3Z1pGbmRHdExwOWZvbk16TzFlc1BuODc1MjVkV1I0Vkc5UWU5eXVSQUUrZXoySFF6RFpFVmgydXlqUnpPenMwK0N3WURGWWdxSFF4QUUzYnYvb0Y2dkY0dEZnc0F2WHJ6d0QvL3dEeTZuczlOaFMrWGl3c0x5NnVvcXkzS0ZRcWxXcTlPMDJPbHcxV3JWNlhRV0NvVmNMbWN3Nks1Y3Z1VDF1Z1dCa3lRWkFBQmFRNCtOajNXNHp1UEhzeWFUR1FBVVJaSHorWHk3M1JaRm9Wd3FZU2hLYXpTblQ1KzZmdjAxczhtczFlcmJET1B6K1RZM04xS3BURGFiN2UzdDlmdjlFeE1UTkUxdGJHenU3dTQrZlBoZ2ZIenN6Sm5Ub2lSNnZaN2g0YUgvOUovK3dXRzNrU1NOSUZnc0ZyOXo1MDZoVUJnY0hMaHkrUktLb21wMnBTUkpFQVFaamZyRGordWxzZlV2NU9VUndPR0VMUFY3NEZrakdUWFhWdTJ0QW9LZ0FnQ3lvbWcwbXZQbno3YmFyY2VQWjZMUjZLOS8vY0hlL3Y3QXdJRGI3WnFjbkVna2tnQUE1UFBGZUR5eHRyYTJ1N3NyU2RMRGg0OWZlZVVWczltTW9hZ3N5NUlrZFRwY29WRGMzTnhNSlpPTlJxUGRicFhMMVdxMUNrSHc5bzRwbFVwYkxHYUNJS3JWcWw2dmI3ZmJsVXFacG1tanlZd2dhS2ZEcXMwSEFFWFI2N1JXaTZWU0thZFNLUXpER28xR3BWSXBsOHVDSUNBSTJtWVl0ZnYzMXRZMkNPNFlqU1lBQUJLSk9NT3draVJLa2dSQm9GNnZSMUUwSG84L2VQQ2dYcTl2YlVVWEY1Zjgva0N4V0xMYjdYMTlFWnZOdXJrVlRhZXpLeXVyang0OWFqYWJnVURnMU1tVHZiMDlhcCtSZzFIajRJc1h0L2xmUGpHOFBBSTRRRFZ4OVN0VkF3ZVZtdzQrUHpWMFluaDRFSVloaTltOHNycGFxVlppK3pHVDBlaXcyK3gydThsa0xCUktLeXVyT3p1NzZYU2E0N2hrTXZuKyt6OXZObHQ2dllGcHQ5dnR0aVJKRE1QczdPemN1dlVwVGROY3A4UHhQTU13dXp1N0dxMkdZWmhZYkw5ZXJ4bU5SbG1XdDdlM01ReGpHSWFpV3NWQ1FhdWhjWUpVTHd4QmtWYXBuVXFsYTdXYUdwMVJLcFVNQnNQKy9qN0xzaXpMTWd5VHkyVkprdUk0WGxGa25VNHZTYUphN0ZydEJWK3IxU3VWOHAwN2R4WVhGKy9mZjZDRzkyeHNiRVFpa2QzZFBZcWlYQzRYQk1HTlJtdHZieitkVG11MW1wR1JvVk9uVGsyTWo1bU1CdmxRZGk5d3FPbjNTMi85d0VzcEFPQlptcm9hcW5MNHBFdzV5S2hWRkFVQVNKS1lQakhWMDlzVGk4VlRxVFJKa2o2dngyNjN3akNpMCtxaTBaMTc5KzRWaTBXMVVockRNRGR2M3N4a01zRmdFQUNBVkNvcHk1TEpaRElhalJ6SEdRd0dpcUxxOVVZaWtVd2tFN0lzMSt2MVpyT3BubzVacmRaTUpxTytrbUdZVC92NkZBQjB1WndBb0lDQTBteTJGcGVXYnR5OGxjbGtXNjAyQUFDMVdnM0RzSjJkblU2bnczRmNLcFZpR01idGRydmRiclhiY2ExV0J3REFaclBWYWpWMUxkNW9OSkxKWkRRYVZlc1dzaXk3djcvLzVNbVRWQ28xTWpKa3NaZ0lndWpyNjBVUU9CUUswRFRWRXc3WkhYWWN3dzZYZEgreDlOMUwwQXI3cTNrNUJRQWN6aHYvOGs5T2ttUlpsclVhZW5ob3NMKy9Id1JCQ0FRZ0VFQlFOQkQwTDYrc1BIandzTlZxVmF2Vlo2K1hvdEZvTEJhRElJam4rWUdCZ2F0WHIxNjhlSUdpYUpQSnlERE15c3BxcFZMeCtmenRka3NVSlJ6SHM5bGNwVklwRklwcVlJL2FvYU5lcjYrc3JFNU9UcGpOUmtFUXRyZDM3OTI3LytUSkUxR1VFQVNtYVpxbTZYUTZyYlpxNURoT3E5V2FUQ2FYeStWMnUwNmZQbTIxV0hoQkxCWkxxVlRpZ3c5K016TXpNenM3aTZLb0dzbXNYcW9hd3d3QUFFM1REcnZkNlhBQWdHd3htOVFFQXhBRVlFZ3RhZnE1aGdaZlhmRHJwZVNsRmNBWDhsenNFUGlzeXljTVF3aUNBQUFneTVKYTNyQ25Kenc4UERRL3Z4Q05SdFZhNStydjhqelA4enlHWVgxOWtmLzRILy95MGl1dmFIVjZraURMNWZMT3ptNG1reGtmRzdsNDRSeE80SXFpTUF5VFRtZmlzWGdxbmFuWGF4aUdWU3FWL2YzOWVyM09jMXlIWlVvbENRQkFqdXN3RE5Oc3Rod091OFBoVUNzUURnNE8rUDErcjhkak5wc1JGSlVscWRscTFldU41ZVdWaVlseE5ZNC9FUEFhRFhxdGx2NzFyMzlUcjllQlE1WXFDRUkrbnljSTRzMDMzNHhFSW5xOVRoSkZFQVRWaGk0S29DaXl1aHYyTWh2M04rRjRDVUFGL0x4ZnBDNW5ENzRGQUVDU0pJdlpORDAxbVV5bWFyV2E2b1VmL2hXcjFmcldXMitkTzN2V2FyVXlETnRxTlJhWEZwUEpsTXZsbUo2YTlIZzlORTBEQ3NDdzdXYXpsVWxuMTlZM2xwYVd6V1p6bzlGNCtQQkJ2ZDZ3MmF5OWtRaEZVVEFFS1lxaTErdHNOdXVWSzVldFZwc2dDRGlPblRsOUpoRDBtMDFHalliR01GemcrWHl4dUxXMVBUOC92N3k4TElwaU1CZ1VlSDU4Zkp6anVIUXFNenMzMStsMERpNFNoaEd6MlR3OFBIejUxVXVCZ0U4dDc2enU4eHpjeFhPaERNZFRDY2RSQU1DaDJuSUgzeDcrdjRxaUFJQVNEQVYrK3RNZnd6RDh5U2Mzb3RFb3k3S0FvbkE4aitQNHdNREFhNjlkQVNFb2s4M3FkTHBvZENzYWpicGNybmZmZmR0a01nR0FvbmJKMXV0MVJxTXhHQXdPRGc1b05Sb0loZ1ZCUkZIa3hvMmJzcXc0SE02QmdRR20zWXB1YjRNZ0dBcUZybDY5cWhyeDJPakl3T0FRanFPeUpDaUtyQ2dBVG1DaFVORHBkRklVY2VQR3piVTFPUkR3bHNvbHJWWWJEdmU4OGVZYmUvdjdwVklKeDNFSWdsQUVzVHNjcDArZmZ1dXROOCtjT2FuUmFBUkJlREY4LzNDQnZlTnAvY0N4RlFEd2xRT2V1aTBJZ2FEZjUvbTd2L3ZyMDZkUHJxOXZ4bU94VnJ1MXZ4OVRGR0J5Y29Ja2lIcWpxZFZxdEJwNmVYblZaREtmUEhuU1pESUxQTWN3aktJQUJJa2pDQ0lLSWd5TEpJbVBqWTA4ZWpSVHFWYWRUcGZmNzkvWTNMeDM3NTVPcDluYzJKcDlNaWZMeXREUVVLVlM0VGd1RkF6MDlmV0NnTWgxaElOV3NBQUE0RGlHNC9qMDFPVFdWalNkenV6djdZZENvVlFxdy9QQzJPam8wTkNRTEV0T3AwT3YwOXNkanI2K3ZvSCtQcS9YamVPWUxFdGYvUkNPcmZVRHgxa0FCM3hGQzNnWWhtMVdxMTZuaS9UMk5CcE5RWlNmUEhtU1RxZk1aa3VsV29VZ1dLdWhGVVd1VkNvdWw4dmxjaUlJQWdMQWZpeVJpQ2RRREoyZW5pUUlYQzEzN3ZWNm90R2RiRFlyaUpMYjdXNDJXOWxzYm1abU5oNlBRekRrZHJzcGlrcWwwc0dnUHhEd2t4VEpkVG9RQ0ltU2xNdmxaMmZudytGZ1gxOHZCTUVhcmNGc3RpWVN5WFFtTXprMW1jNWttNjJtUnFNSkJnTjlrZDZwNlNtVDBVVFJwRjZubzJrYWhxRURuK2NMNzdkTFZ3Q2Y0OFdRQ2hCVVNKS2dhY3JsY29FUTJtNjNaVmtTUmFsZXIrdjFCZ2lDT0k2RFlialJhRmFyRlkvYm9RQkFQcCtmZWZKRWt1UndPT2h5T2RYM3BHbmE1WEx1N082bTkySVVTUnFOUnBabFAvNzRFeGlHbnhXdXFuUTZuTjFtYzd0ZHNpUXBDb0JnU0xQZDJ0amN1dlhwWjdJaUJ3SStraVRiclZhajBlQjVBWUpnMWJnNWpwZWtwbGFyaTBSNko4Ykh0VHFEb2dpeUpFbVM5R0pEK2E3MVAwZFhBTS96M0JJWkFBQkJFRlF2R2NkbERJVVZXYW5WNmdpQzREalJhclZSRkxWWmJmbGNmbUZoU2EvVHlvcVN5K2JTbVF6THNLVml5V2ExSWdnaVNTSUFLQ2F6VVMxWUJBS0F5KzNhMzkrL2QrOWVYMStmMjYxbXE3Vk1KcFBKWk5Kb05KSWtBWUNpdHRqWTM0L2xjcmxrTXBsTXBscXRkcUZRU2lUaUVBVFpiUFpLdWRicGRIaStVNi9YWVJoR0VGU1dSYTdUT2h5eS85eXQvZEJQOTk4ZFhRRjhBYy9OQTRlT1NHV0h3MjR5R2JlaTJ4ekgwVFRkWmxnQVlFZEdoNk5iMjd1N2U0VkNBY013U1pLTkJxTldvMUhiQngzOE5ra1NGRVVvaXN4MldBaUNGRVZwTkJyQTA2cGVmS2ZUSVFpY0pBa0VnWitOM0lyYXVkcnI5VEZNNS82RHh6elAxMnQxaXFiQzRSQ09ZNjEyaTJIWVlxRllLcGZWVnFjMFRYL2hlaGZvV3YrWDBCWEFGL1Bjd3VCd0w0TGUzcDU0SWpVN084Y3d6T25UUkNnWWJMVmFOcnROYjlDTG9naUNVS1BScU5mckRNTndQQThBNnU4Q2lnSkFFQVNBb0NnOXpTbUJZUmdFUVF6REVBVGhPRTVkS2tDd1dtRlhVUlFGQUNGQkVPdjFlcUdRMSttME9FN2dHS2JWYUZBTW95Z2FBRUFFUVhkM2Q1ZFhWaTBXeTlqb2lNdmxmSzVVZjlmb3Y1YXVBTDZlZzQxQ1dWWlFCUEg1dktkT1R0ZnJ0V3ExbGs1bm5FNG5TWklnQ0hZNkhhN0RDcUtzOWxIc2ROaUQ2Z25xMjBpaXpITzhLSWdFVGtBUUpNdXlLSXFxZjZXVzlPSTRUaFRFUDlTWEJnQkprcHJOZHFGUXNOdnRpcUtRQkVFUUJBUWpGRVdoS0JLUHg4dmxpc1ZzUGpFOU9USXlyTk5wRHk5NXU5Yi9UZWdLNEk4QUJFRkJGQ21LbkpnWXN6dnNEeDQ4ekdTeW01dWJrVWhFTmZwMnV5MElZcmxjQmdEQVpETGhPS0UyRkFNQUJZVEFOc00wR2kxSmttaWFWcytKMisxMm9WRGdlUjVCRU5VamFyWmFnaUNxZXBCbEdVVlFnMEd2MStzWWhzbGtNaFJGcVludEdJYXhMTHU4dk9KME9pY254MGRIQmdtQ1ZCUlpEZXI4b1ovVFVhSXJnRDhPOWVRWWhpRy8zMnN3R0phWFYyZG41M0s1dkVhamhXRklOWGNVUlNPUnlPRGdRQ2dZUUZIMFlDdW1VQ2prY2xsWmxqVWFqZHB5aStmNWREcGRyOWR0Tmh0QkVOVnFMWmZOTlp0Tms4a29TWklnQ0ZhcjVkS2xpNUlrMWVzTlJWRWtTUVlBc0ZhckpaUEpkcnNWQ2dWUG5UemhEL2hCUUhuYXRMMXIvWDhrWFFIODBUdzFNa1V4R0hTakk0TTZuU2FUeWJXYXJRN0hRUkFJd3pxL3ordnh1SHQ2UWpxZFZwWWxDSUlnR0tsVXF0SG9kamFib3loYXI5ZXJWZWhFVWN6bjg5bHNWaTJiWGlxVk5yZWkva0RnN05uVGlDeExrb1JoYUU4NFJCREUvbjY4V0N3SlBBK0FBSTdqSnBQUmFEVDBoSU4ydXcyQjRSZWIxWFdWOEEzcEN1QWI4ZHkra0xvZ2hpRElhRFRvRFhxdjExTXFsaG1XWVZsMloyZVg0M21Tb2x4dWp5enhzcXdvQUZDcjFXZG41N2EzZHdWQk5CajBhb1hHV3ExbXQ5czduVTQybTNVNEhEYWJyZFZxcFZMcHBhVmxoOFBtY2pvUUJJRWdDTWR4bCtLTWJtMXpYTWZuOCtxME9vb21qVWFEMVdxbFNFS1NKSjduUDdmaDJUWDlQNGF1QUw0cHowWE9IQndSZ0NCb01adnNOaXNFUWVsMDlyUFA3cVRUR1VrVUEzNHZocUVnQURhYXplajI3cDA3OXdxRmdtcTRITWMxR2cyTHhSS0pSTlRVeDBxbEhBcUZxdFZxcFZMZDJOaEVVZVQ4dWJOV213WERNSUVYZHZmMjd6OTR3SEZjSkJLWm5KcWlhVUlVQlZtUzFKWjdCNDI2Z0dmSlFGMEZmSE82QXZnaitNSUc4V3BPRmdSQmpVWnplMmMzRm90akdGWXNsWC81eTkvb0RUcFJGQ3VWU3FGUVVudTZtTTJtZ1lIK21aa25ORTBQRFExZHZIZ3hsVXJkdkhtVDQzaU5odmI1dktJb3ROdnQ3ZTJkY3Fsc3M5czBHbzBvaXVWeUJRUWhuaGRtWm1hR0J2dHh6Q3lLd2hjbWJRRmQ2LzhqNlFyZ2orYkZ0S21ETUdNRVFXQUl4bkVjUVpBMnd6UmFUVkVVVzgxbVBsL001YktSU08vSXlMQldvMDJuMDA2bjg5eTVjK1BqbzE2dnAxQW83Ty92SjVQSlZ5NWVrQ1hwOGN4c3E5VldGRUJXQUlLb3d6Q2lGbThEUVJCRkVSaUdBRUE5WCtzZTlINEhRTi8rTFk0aGh3c0RxbC9Jc295Z2lNdmxPSGx5MnVsMEFnQWdpbUtudzlWcjlYUTZrOHRseldiVHFWT25yRmJyMHRKU3BWSUpCZ01qdzBNMm15VVk4SStQanhFRU1UczcxK0c0MGJIUjRlRkJqdXVrVXVsS3BjS3lIWlpsQlVHZ2FhcTN0MmR5WXB3Z2lNTStHSGlJSC9xcEhFbTZBdmhXUEd0dERTcUtBa09ndzJGLzQ0MXI0K01qT3AwV3cxQ3RobVlZSnAvUGd5RHd4aHV2ajQrTjVmUDVUeis3RFVHZ3orZHpPR3dZaXVwMG1tQXdvTmZyOS9iMjd0NjliN2ZiM25qajlmNitTS0dRcjFhck1BeFRKQW1DUUc5ditOS2xpeWRQVG1NWXFwNFpBOTBoLzd1ZzZ3SjlKNEFBb01peUFnS0ExV1k1Ynp4NytyVEVNRXc4bG1qVUd3YUQvc0tGODA2SC9jbnNrOVhWdFdBd3lEQ01YcWRGVVFRQUZBUkZJUWkwV2l5OXZiMnRWdXZPblhzakk4UC82Ly82OTA2WE01OHZPQnoyVnk5ZEpDa1N4M0VVUmFBWEF2VzZmRXU2QXZqMmZMNk1BZ0RpT0tiUllBUkI3TzdzTXd3amlHSTJtMXRkWFpObGVXeHNUS2ZUZlBqaDcwcWxjcjNSY0RvZEVBam1zamxlNEUrY21KNmNuTmpmajgzUHpkdnNObEVVRzQxbXU5WFM2YlE2blJaNG1zTC9oMGlINDV6RzlSM1NGY0IzaHVvSXliSXNpektnQUlBaWE3VzAxK2NwbGNwcUs2VCsvc2pFeERpR29odnJtOGxrS3JxMTQzRFljL25penU2dW9paG5UcCthbkp3d0dRM0xLNnZsY2htQ1lMZmI1WEE2UUJCVTQ0VU9LbngxK1E3cEN1RGI4bUo2TVF6RDZpNU5KTkpEMFZRMm0xTVV4ZS8zMlcxV21xWlpsajE3OXZUdlA3cXh0THppY2prM05qZUx4WkxINHhrWkdTWUliSHg4ek8vM0paS3BhcVZxTWhsZGJoZEpmbTdWKytKZjdQSnRBRm1tL2tOZnc4dkQ4MVdsQUVBQlFMWE1HZ3lCYXFGR0VBUUVRYng1ODdQWnVRVzEyY3pFeFBpRjgyZDdlOE5QSXhxZWhrOHJJQWlBNEhNZWx2ci91NmIvbmRHZFVyOUxudHVPVkFBQWdrQVVSVkFVQVEvQy9CV0FJSWpwNmNtZWNLaFVLcG1NeHRHUmtVQXdJRW5TVTdzSEFBU0dNQlNCWVJnRXdLOTQveTdmbnE0TDlCM3ozQ1FnU1pJa1NVODlsbWZtSzBtUzNXNmZtcDZVWk1ubjlZYkNBUnpIT2l3TFFSQUFnR3BscnVmY25vTTM3d3JndTZYckFuMzNIQVFwUENlR3d6eXQzaTRyRVBRMUZnMTJ0ejYvVDdvendIZlBWOWJiK3R6WENBd0JMMHdhUURlZDk4OUlkdzN3NStORk96NG9SUDdWTCt2eS9kR2RBZjZzZkVVUnJoZGYwT1hQUUhjRytNRTQ3Q2wxWTN0K0tMb3p3QS9KUzlsMjdtalJuUUc2SEd1NkF1aHlyT2tLb011eHBpdUFMc2VhcmdDNkhHdTZBdWh5ck9rS29NdXhwaXVBTHNlYXJnQzZIR3U2QXVoeXJPa0tvTXV4cGl1QUxzZWFyZ0M2SEd1NkF1aHlyT2tLb011eHBpdUFMc2VhcmdDNkhHdTZBdWh5ck9rS29NdXhwaXVBTHNlYXJnQzZIR3U2QXVoeXJPa0tvTXV4cGl1QUxzZWFyZ0M2SEd1NkF1aHlyT2tLb011eHBpdUFMc2VhcmdDNkhHdTZBdWh5ck9rS29NdXhwaXVBTHNlYXJnQzZIR3U2QXVoeXJPa0tvTXV4cGl1QUxzZWFyZ0M2SEd1NkF1aHlyT2tLb011eHBpdUFMc2VhcmdDNkhHdTZBdWh5ck9rS29NdXhwaXVBTHNlYXJnQzZIR3U2QXVoeXJPa0tvTXV4NXY4UEgvS1JGcTRvejI0QUFBQUFTVVZPUks1Q1lJSW9BQUFBZ0FBQUFBQUJBQUFCQUNBQUFBQUFBQUFBQVFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzcvVDEvL0QxOXYveDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvKy8wOWYvMy9Qei85UG42LysvMDlmL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly92OVBYLzcvVDEvKy8wOVAvdTgvVC8rUDMrLzlMVzF2L2c1T1gvOXZ2OC8rN3o5UC92OVBYLzcvVDEvL0QxOXYveDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhQWDIvL2Y4L2YvNS9mMy8rZno4Ly9UNi9QL2s2T24vWTJOai80T0RnLy8yK3Z2Lzh2ZjQvL3IrLy8vNS9mMy85Zm42Ly9EMTl2L3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvKzN5OC8vMy9QMy94OHJMLzVpWm1mKzZ2cjcvKy96OS80V0Zodi9Lek16L29hT2svNmlwcXYvNCt2ci9xcTJ0LzUyZm4vL2IzdC8vOXZ2OC8rM3k4Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0QxOXYveTkvai85dnY3Ly9iNisvK1NrcFAvaDRpSS82eXVydjk2ZW5yL2c0U0YvLy8vLy8vaTQrUC9iRzF0LzRtS2lmK3p0YlgvY0hGeC83YTR1Zi82L3YvLzl2djcvL0QxOXYveDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84UFgyLyszeTh2K3JyYTMvakl5TS80Q0FmLzlJU0VqL3NiT3ovNFdHaHY5aVltTC8rdjcrLzkzZzRQOUZSRVQvc0xLeS80cUxpLzlVVkZUL2pJeU0vNHVMaS8rK3djSC84L242LysvMDlmL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLyszeTgvLzUvdi8vMmR6Yy8xUlRVLytKaVluL21adWIvM1oyZHY5UlVWSC9ySzZ1LzFkWFdQK3lzckwvaG9hRy8zSnpjLytibkp6L1NrbEovNGVJaVArZG41Ly9kbloyLzJocGFQLzMrL3YvOGZiMy8rLzA5Zi94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLysvMDlmL3U5UFgvK3Y3Ky8renc4Zi9hM2Q3L2c0U0UvOVRZMmYvNi8vLy80dWJtLzNwNmV2OXFhbXIvYTJ0ci95QWdJUDhyS3l2L2ZuNSsvMWxaV1ArYW5KMy83UEh5Ly96Ly8vK3p0cmIvbHBlWC8rVG01di93OWZYLytQejkvKzN5OC8vdzlmYi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3Y5UFgvOHZmNC8vMy8vLys0dXJyL2xKU1UvNDZPanYrS2k0di9zclMwLysvejlQLzcvLy8vMDlmWC8xVlZWZitFaElUL0ZoWVcvem82T3Y5NGVIai9abWRuLy9EeDhmLzMrL3ovNXVyci82U2xwZitLaW9yL2taR1IvNVNWbGYvTzB0TC8vLy8vLysvMDlmL3c5ZmIvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOFBYMi8vUDQrZi9yNy9EL2pJMk4vNVdXbHYrNnZMei9uNkNnLzRHQmdmOUVSRVAvMWRuWi8vZjgvZi93OVBYL2EyeHIvMzkvZi84K1BqNy9aR1JrLzJoblovK1NsSlQvK2Y3Ly8vci8vLyttcUtqL1JFTkQvNU9VbFArbnA2Zi91YnE2LzRHQmd2K3BxNnYvOWZyNy8vRDE5di94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vRDA5Zi9zOHZMLzh2ZjUvNU9VbFA5cmFtci94OGpKLzZTbHBmK0lpWW4vazVPVC8yUmxaZi9WMmRyLzkvejkvL0wzK1A5MWRuYi9lWGw1LzBGQlFmOW5aMmYvYUdoby81NmdvZi80L2Y3Lyt2Ly8vNjJ3c1A5bVpXWC9tSnFhLzRhSGlQKzR1cnIvdHJlNC8xdGJXLys1dTd2LzlmdjgvK3p3OGYveDlmYi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly91OC9ULzhmZjQvLy8vLy8vbTV1Zi9qSTJOLzZ1dHJQL1AwdEwvZG5aMi85TFYxdi9QMHRML1ltSmkvK0RrNVAvMisvei81K3ZyLzNCd2NQOTlmSDMvVTFOVC8yaG9aLzl5Y1hIL2pJMk4vL2I2Ky8vNC92Ly91YjI4LzJwcWF2L3Q4ZkwvcksydC80aUppZi9WMk5qL2xwYVcvNVdXbHYvLy8vLy8rZjMrLy9EMTl2L3Y5UFgvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzcvVDEvL2o5L3YvbzdPei9zN2EyLzRLQ2d2OTNlWG4vdnNEQS84ck56Zjk5Zm43LzhQSHgvKy95OC8vTno5RC84UFgyLy83Ly8vL0Z4OGovaDRlSS8xTlRVdit5czdQL2pvK1AvMkJnWC8rT2o0Ly8zZC9mLy8zLy8vL243T3oveWMzTi8vLy8vLy9LeWNuL2g0bUovOUhUMC8reHNyTC9ZbU5qLzVhWG1QKyt3TUQvOC9mNC8vWDYrLy92OVBYLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vRDE5di90OHZQLzd2UDAvKzd5OC8vMy9QNy96dExTL3pZMk52OEFBQUQvQUFBQS94VVZGZis0dXJyLzRPTGovNTZmbi8rVmxwYi85dm41Ly8vLy8vLzQvZjMvMHRUVi81S1NrLzlzYkd6L1JFVkYvK0hpNC8rK3dNSC9OVFUxLzRhSGgvK1VsWlgvNWVmby8vcisvdi8vLy8vLzVPZm4vNEdEZy8rN3ZiMy80dVRsLzQ2UGtQOEFBQUQvQUFBQS93TUNBdjliVzF2LzZPdnMvL1A0K2YvdTgvVC83dlAwLys3ejlQL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly93OWZiLzh2ZjQvLzMvLy8vNy92Ny85L3orLytydjhQOVhXRmovQlFVRi93SUNBdjhDQWdML0FBQUEvek0wTlArN3ZMMy8yZHJhLzUrZm4vOW9hR24vYW1wcS8xWlhWLzh1TFMzL0p5Y24vd2NIQi84K1BUMy9uNkdoLzVLVGsvOGRIQnovRUJBUS95a3BLZjgwTkRYL1lXRmkvMmhvYWY5eWNuTC90cmEyLzliVzF2K2NuWjMvRXhNVC93QUFBUDhDQWdML0FBQUEvdzhQRC8rSWlZbi8rZjcvLy9iNisvLzkvLy8vK3YzKy8vRDE5di93OWZiLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOFBYMi8rLzA5Zi92OVBYLzhQWDEvL1A0K2YvdzlQWC9vNmFtLzNsNmV2L1gyOXYvdzhYRi8zMTlmZjlUVWxML0FBQUEvMEZCUWY5NWVYci9IeDhmL3hZV0ZmOXZiMi8vZTN0Ny96YzJOLzh3TUREL05EUXovMUpTVXY5V1ZWWC9VRkJRLzgzUDBQLzArUGovOXZ2OC82YXBxZjlIUjBmL1ZsWlcvME5EUS84M056Zi9LQ2dvLzA1T1R2K0JnWUgvWFYxZC93QUFBUDg3T3p2L2ZIeDgveUFnSVA4QUFBRC9kblYxLzMxOWZmL2k1ZVgvdHJpNC8zWjNkLys3dnIvLzl2cjgvL0QxOXYvdzlmYi83L1QxLysvMDlmL3c5ZmIvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOFBYMi8rLzA5UC8yKy96LytmNy8vL1g2Ky8vdjlQWC85Zm42LzRDQmd2OHNLeXovcWFxcS8vVDI5ditIaVluL3dNTEMvNk9rcFA4VEV4UC81dW5wLzZxcXF2OGxKQ1QvTXpRMC85N2YzLy9CdzhUL2ZIeDgvNkdpb3YrSmlJai9nSUNBLzUrZm4vK0ppb3IvOC9iMi8vci8vLy8vLy8vL3o5RFIvNHlOamYrU2twUC9mWDE5LzVHUmtmK1VsWlgvakk2Ty85VFcxLysvd2NIL0Nnb0svMFZGUmYvVDA5UC9ycSt2L3hRVkZmL2EydHIva1pLUy82K3hzZi93OC9QL2ZuOS8veTR0TGYrc3JxLy8rZjcvLys3ejlQLzMvUDcvK2Y3Ly8vTDQrUC91OC9ULzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vRDE5di94OXZmLyt2Ly8vOXpmNFArK3dNSC8ydDdmLy96Ly8vL2Q0ZUwvZjM5Ly82cXFxditUbEpUL2pZNlAveFlWRmYrN3ZiNy80ZVBrLzJKaVl2K1JrcEwvaUlpSS8zUjFkZjhGQlFYL1pHUmsvNVdYbC85dmIyLy93Y1RFLzZTbHBmK2RucDcvbVpxYS81Q1JrZitQa0pILzFkalovOHZPenY5N2Uzdi9wS1NrLzVHUmtmK2VucDMvcnErdy82YW9xUDkyZG5iL2twT1QvME5DUXY4VEV4UC9pNHVMLzRhR2h2K0VoWVgvZFhWMC8vMy8vLzk1ZW52L0tTZ28vNkdrcFArVWxaWC9xS2lvLzRhSGgvLzErdnIvOWZyNy84N1EwZi9EeGNiLzZlM3UvL24rLy8vdjlQWC84ZlgyLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly93OWZiLzh2ZjQvL0wzOS8rL3dzTC9uSjJkLzUyY25QOXRiVzMveE1mSS8vdi8vLytibkp6L3FLbXAvNktqby85d2NIRC9Dd3NMLzVHVGsvL3I3dS8vam8yTi8wOVBUdjltWjJqL2dJQ0IvMmxwYWYrcHFxdi8yZDNlLzg3UjB2K2VuNS8vcEtXbC83Mit2ditRa1pIL2EydHIvMDVPVHY5TlRVMy9RME5ELzJKaVl2OW1abWIvcnErdi82eXRyZitxcTZ6L25wK2cvOS9qNVAvTjBOSC9sWmVYLzJWa1pQK0VoSVQvVWxKUy8xeGNYUCtrcGFYLzh2WDEvMUpUVS84akl5UC9oSU9ELzYrd3NQK1ZscGIvczdhMi8vLy8vLytmb0tEL2QzZDMvNkNob2YrYm5Kei8wZFRVLy9YNisvL3c5ZmIvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhQWDIvL0gyOS8veDl2Zi9xNjJ0LzRhR2h2K1ptWnIvek03Ty82T2twZitrcHFmLy8vLy8vL1gzOS8rMnVMbi9kSFIwL3lzcksvOEFBQUQvZTN0Ny8vVDQrUCtyckszL1RFeE0vMkZpWXYrNnZiMy8vLy8vLzZlb3FQOXRiVzMvakkyTi8zSnhjZitnb0tEL2VIaDQvK3JzN1A5bFpHWC9TVWxKLy8zKy92L1YyTmovSmlZbS82U25wLy9RMHRQL2QzZDMvNldtcHY5cWFtci9sSldWLzJOalkvL1UxdGYvL1A3Ky81MmZvUDlQVDAvL1cxdGIvOG5MelAvbjZ1di9RME5EL3dBQUFQOCtQajcvaDRlSS84dk96Ly8vLy8vLzlQajUvNG1LaXYvQnhNVC91cnU3LzVLU2svK0ZoWVgvdzhYRi8vYjcvUC92OVBYLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8vdjlQWC85L3o5Lzl6ZDNmK0VoSVQvdnI2Ky81T1RrLy9kNE9ELy8vLy8vL3I5L3YvZTR1UC9wS2FuLzJWbFpmOHJLeXYvQWdJQy8xeGNYUCtlb0tEL3ZMMisvODNRMGY5dGJtLy82K3ZyLy8vLy8vL1IxZFgvblo2ZS8zdDdlLy9GeU1qL2lZdUwvMmRuWi85Ylcxdi9pSW1KLytuczdQOVJVVkQvbXB5Yi8zWjNkLzl5YzNQLzdPN3UvMTloWWY5b2FHai9ZMlJrLzZxcnEvK3RycTcvZlgxOS82dXNyZi9pNXViLy8vLy8vOERCd2Y5NGVYbi8zTi9nLzY2d3NQK2FuSnovTlRZMi93UUVCUDg2T2pyL2QzbDUvN08xdGYvcTd1Ly8vZjcrLy8vLy8vKzh2YjMvblo2ZS83VzJ0ditKaVluLzlmbjUvL0gyOS8vdzlmYi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLys3ejlQLzMvUDMvcXF5cy8xWldWditYbDVmL29xS2kvMTFkWHY5NmZIei9WVlZWL3kwc0xQOHVMaTcvSmlZbS95TWpJLzlvYVduLzNON2YvNTJkbmYrNHVyci91NzIrLzZXbnAvLzErdnIvcjdHeC83VzJ0di96OXZiL2hJU0UvOFhIeVArVmxaWC9zN2EzLy8vLy8vK1hsNWYvMGRQVC82YW5wLytQam83L2dJQ0EvOHpOemYrdnNMSC90YlcwLy8vLy8vK0xqWTMvdXJ1Ny81cWJtLytzcnE3LzdmRHcvNm1xcXYvRnlNai82ZXJyLzUyZm4vL0d5Y24vcmErdi82MnZyLy9SMDlQL1FrTkQveWNuSi84ckt5di9MeTh2L3pFeE1mOW5hR2ovZEhWMS8ybHBhZit5c2JIL2ZYMTkvMXhjWFAvTHpzLy85dnY5LysvMDlmL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vRDA5ZitHaG9iL2hJV0YvM2w1ZWY5RFEwUC9PRGMzLzBwSlNmOTBkWFQvZVhsNS8xRlJVZjlrWkdUL2dZR0IvLzM5L3YrNHVibi9xYXFyLzVpWm1mK09qNC8vd3NYRi82aXFxdi9TMDlQLzBOTFMvMEJBUWY4OVBUMy9vS0doLzZTbXB2L3A2K3Yvc3JPMC81U1VsUCtWbHBiL2pvK1EvKy93OFAvTno5RC9rSkdSLzVLU2t2K2ZvS0gvdkw2Ly8rZnE2LytTazVQL2xwYVgveDhlSHY5c2JXMy80K1hsLzcyK3Z2KzF0cmYvdUx1Ny80R0NnditzcnE3L21wdWIvK0hoNGYvazVlWC9ibTV1LzJKaVl2OVpXVm4vaFlhRy8yWm1aLzlGUlVYL056YzMvMUZSVWYrRGc0UC9lSGgzLzZLam8vLzUvdi8vN3ZQMC8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly92OVBYLzgvbjYvNit4c2Y5dGJXMy9hR2hvLzRpSWlQK2NuWjMvbnArZi83dTh2UDlxYTJyL3dNTEQvL1AzOS85NGVIai9uSjJkLzZPbHBmK3dzclAvakkyTi84TEZ4ditvcXFyLzRlVGsvNktqcFA5WVdGai9WRlZWLzVDUmtmKzh2cjcvNy9UMS8vRDA5ZitabXB2L2RuZDMvNm1ycS8vYTI5ei8vZi8vLy9QNCtmKzd2YjcvajQrUC8zSnpjLys0dTd2LytmNy8vK0xtNS8rdnNMRC9lbnQ3LzA5UVVQOWlZbUwvd2NMQy85UFYxZitxcTZ6L3ZMKy8vNGlJaWYrMXVMai9vcVNrLzR1TGkvK1dsNWYvK3YzOS81dWNuUDkwZEhUL3hNWEYvNU9Uay8rZW5wNy9lSGg0LzJOalkvOTVlWG4veU12TS8vYjcvUC92OVBULzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvKzN5OC8vOS8vLy92OExELzB4TVRQK2pvNlAveU1uSi95NHVMdjlyYkd6L3VicTcvN1MxdGYvTnpzNy82dTd2LzdDenMvOUhSMGYvcEtXbC82NnZzUC9ZM056L3FhcXEvK1RsNWYrQmdvTC9mSDE5Ly9EMDlmLy8vLy8vOXZ2OC8vcisvLy94OXZmLzcvWDIvLy8vLy8vMDlQVC9ucUdoLzFGU1V2OTVlbnIvN2ZMei8vcisvdi96OS9uLytmMysvL3IrL3YvdjlQWC85UG41Ly9yKy8vLzMrL3YvLy8vLy85ZloydjlnWUdIL3A2bXEvOXZkM2YreHM3UC8xZGpaLzZPa3BmK1FrWkgvU0VoSS85N2c0UC9aM2Q3LzFkZlgvNk9rcGYvSHljai9Nek16LzJGaFlmL056czcvZzRPQy8xVlZWZi9tNStmLzl2djgvKy96OVAveDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8vdjlQWC85ZnY4LytEajVQOHpNelAvZzRPRC8rM3U3LzlqWkdUL0FBQUEvejA5UGYvRnlNai9vNlNrLzR5TmpmL3o5ZlgvZTN4OC81K2dvUC94OXZmLzVPam8vNk9rcFAvajQrVC9jM1IwLzVHU2tmLy8vLy8vOHZmNC8rM3k4Ly92OWZYLzd2UDAvKzN5OC8vMisvei8yZHpkLzBKQ1EvOEFBQUQvQUFBQS93Z0lDUC9KemMzLzlmcjcvKzd6OVAvdjlmYi83dlAwLy9IMjkvL3Y5UFgvN3ZQMC8vRDA5Zi90OHZQLytmejkvL0wwOVA5cGFtci9tWnFhLzlmWjJ2K3JySzMvOHZYMS8rbnU3Lzk1ZW5yL3JLNnUvK1BsNWY5OGZIei91NzIrLzYydnNQOFhGeGYvQUFBQS82Q2lvdi9qNU9UL1VsSlMvMWhaV2YvNi92Ly83L1QxLy9EMTl2L3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLys3ejlQLysvLy8vYW10cy94c2JHLy9OenMvLzJkemMveDBjSFA4QUFBRC9kWFoyLzZxcnEvOXZiM0QvcTZ5dC80eU9qdjkzZUhqLy92Ly8vL1AzOS8ranBLVC8zK0hpLzN4OGZQK1VsSlQvLy8vLy8rN3o5UC92OVBYLzhQWDIvL0gyOS8vdTh2VC85ZnY4LyticDZmODNOemYvQUFBQS93UUVCUDhFQkFUL0FBRUIvNjZ1cnYvLy8vLy82L0h5Ly9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhQWDIvL0gxOXYvdDh2UC85UG42Ly9iNCtQOW9hV24vcGFpby84bk16UCt5dGJYLy8vLy8vK1BsNWY5aFlXSC9xS21wLzVXV2x2OTJkbmIvdUxxNi8waEpTZjhBQUFEL1NFbEovL2Y2Ky8rYm01di9DUWtKLzZxc3JQLzkvLy8vN3ZQei8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3Y5UFgvOXZ2OC85cmQzdjgwTkRUL1NVbEovK1RsNWYvQnhNWC9EUTBOL3dBQUFQOHdNREQvcHFpby84SEV4UC9GeU1qL2RYVjEvNkdrby8vLy8vLy9zTEd5LzgvUjBmK1ZsNWYvaElXRi8vLy8vLy91OC9ULzhQWDIvL0gyOS8veDl2Zi83Zkx6Ly9QNCtmLzErZm4vVTFSVS93QUFBUDhGQlFYL0FBQUEvd0lDQXY4QUFBRC9TMHhNLyszeDh2LzIrL3ovNy9UMS8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3U4L1QvOVBuNS8vUDM5LzloWW1ML3Y4REEvN1MxdGYvTXpzLy8vLy8vLzN4OWZ2K1NrNVQveHNqSi84TEZ4ditOalk3L0V4TVQvd0FBQVA4ckt5di82dTN1LzhQRHcvOG1KaWIvWVdGaC8vUDMrUC93OXZmLzhQWDIvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8rLzA5Zi81L3YvL3M3VzEvMU5TVXY5UlVWSC81T2JtLzlEUzAvOFhGaGIvQUFBQS8yaHBhZi8vLy8vLytQMzkvOFhIeC8vYzN0Ny9sWmFYLzhyTnpmKzV2THovdkw2Ly8ydHJhLy80K2ZyLzhQWDIvKy8wOWYveDl2Zi84UFgyLyt6eDh2LzUvdjcvOFBUMS8xeGRYZjhBQUFEL0F3TUQvd0FBQVA4QUFBRC9BQUFBL3dFQkFmOEFBQUQvTkRRMC85SFYxZi8yKy96LzcvVDEvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly90OHZQLytmNy8vOW5iMi85aFlXSC8wZFRVLzdHeXN2Ky93TUQvb3FPay85dmQzdi9PME5ILy8vLy8vK25zN2Y4MU5UWC9BQUFBL3pvNk92LzErUG4vdXJ1Ny8wRkJRZjluWjJmLzBOVFUvL2o5L3YvdjlQWC84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzcvVDEvL2Y3Ky8rYW01di9nWUdCL3pFeE1mL1IwOVQvL1AvLy8xWldWdjhBQUFEL1dscGEvKy94OGYvbTZPbi9scGFXLzlmWDEvK2dvYUgvazVPVC85amIyLzlvYVduLzF0alkvL245L2YvdTgvVC84ZmIzLy9EMTl2L3g5ZmIvLy8vLy85WFoyZjlCUVVIL0FBQUEvd01EQS84QUFBRC9BQUFBL3dBQUFQOEFBQUQvQUFBQS93SURBLzhBQUFEL2dZS0MvLzcvLy8vczhmTC84UFgyLy9EMTl2L3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8vczh2UC8vLy8vLzZXbHB2OStnSUQvMWRqWS8zOS9mLy9EeHNiL3dNTEMvNmFvcVAvMStmbi8xdG5hL3ljbkovOEFBQUQvajVHUy8vLy8vLytabVpyL09qbzYvNEdCZ2YrenRyZi8rLy8vLys3ejlQL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8vdTgvVC8vUC8vLzMrQWdmK1ptWm4vUTBOQy8zeDlmZi8rLy8vLzVPYm0vMkpqWS84aUlpTC9XMXRjLzQyTmp2L1cyTmovMU5iVy8yZG5aLy9CdzhQL2xKV1YvNU9VbFAvLy8vLy83UEh5Ly9IMjkvL3g5dmYvOGZiMy8rL3k4LytJaVluL0ZCUVUvd0FBQVA4Q0FnTC9BQUFBL3dBQUFQOEFBQUQvQUFBQS93QUFBUDhBQUFEL0F3TUQvd0FBQVA5a1pHWC8vLy8vLyszejlQL3c5ZmIvNy9UMS8rN3o5UC94OWZiLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3Y5UFgvK2Z2OC8yNXVidisrdjhEL25aMmUvM3A3ZS8vdjh2TC91YnU3LzRXR2h2OUhSMGYvSmlZbS80ZUlpZi8rLy8vLzUrbnAvMDVPVC85cWFtci9nb0tDLzZTbXAvLy8vLy8vN3ZQMC8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLys3eTgvLy8vLy8vaFllSS8zNStmditWbFpiL2RuWjIvNVdXbC8vYzM5Ly8vdi8vLyt2dzhQL2Y1T1gvNnV6dC83M0F3UDk1ZW5yL21wcWEvOG5NelA5cmJHei81K25wLy9QNCtmL3Y5UFgvOGZiMy8vSDI5Ly94OXZmLzcvUHovNENCZ2Y4TEN3ci9BQUFBL3dFQ0F2OEFBQUQvQUFBQS93QUFBUDhBQUFEL0FBQUEvd0FBQVA4Q0FnTC9BQUFBL3k4dkwvL2c0ZUwvOS9yNi8vUDQrUC81L2Y3LysvLy8vL0gzK1AvdzlmYi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8rM3k4Ly85Ly8vL3ZjQy8vM2g1ZWYvTXpzLy9ob2FGLzRhSGgvL1UxZGIvNSt2ci8rTG42UC94OXZiLy92Ly8vOFBHeHYrTmpvNy9hbXBxLzZ1c3JQOWNYVjMvdWIyOS8vei8vLy91OC9ULzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvN3ZQMC8vdi8vLysvd2NML1JVVkYvNit3c1ArTGk0ei8xTlhXLzNkNGVQOS9nSUgvb0tHaS81S1RsUDlsWm1mL2xKV1YvOVBXMXYvRng4Zi9sNWlaLzVPVWsvLy8vLy8vN1BIeS8vSDI5Ly94OXZmLzhmYjMvL0QxOXYveDl2Zi8vLy8vLzhuTXpQOHJLeXIvQUFBQS93RUJBZjhBQUFEL0FBQUEvd0FBQVA4QUFBRC9BQUFBL3dBQUFQOEFBQUQvQUFBQS95Y29LUDlDUWtML1EwTkQvMDlRVVArWG1aai84UFgyLy9EMTl2L3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhQWDIvKy8wOWYvMSt2di9jbk56LzdTMnQvL0J3OFAvenMvUS8zMTlmdjlzYlc3L25KMmQvNTZmbi85eGNuTC9rNVNVLzgzUHovK0ppWW4vblo2ZS8wSkJRZi9xN3U3LzgvajUvKy8wOWYveDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly93OWZiLzhQWDIvL2Y3L1A5YVdsci9hV2xvLzN0N2UvK2twYVgvdHJlMy8yNXVidi9lNE9EL2twS1QvM3Q4ZlAvLy8vLy92OERBLzZlcHFmOXhjbkwvMk56Yy8vZjgvZi92OVBYLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9EMTl2L3E3L0gvLy8vLy83YTR1ZjhHQlFYL0FBQUEvd0VCQWY4QUFBRC9BQUFBL3dBQUFQOEFBQUQvQUFBQS93QUFBUDhBQUFEL0FBQUEvd0FBQVA4QkFRSC9BQUFBL3hrWUdQL1ozZDcvOXZ2OC8rLzA5Zi94OXZmLzhmYjMvL0gyOS8veDl2Zi83Zkx6Ly8vLy8vK3BxcXIvZm45Ly82V21wdi9nNHVMLy9QejgvMXhjWFArK3dNRC94Y2ZILzJob2FQL1MxTlQvZ29TRS80eU1qUDlJU0VqL2k0eU0vLy8vLy8vdDh2UC84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8vdTgvVC8vUC8vLzdpN3UvOHVMaTcvZUhoNC96TXpNLzg0T0RqL2c0U0UvLzMrL3YrRGhZWC9lSGw1LzdLMHRmK09qNC8vbHBlWS8zVjFkZi9RMHRQLytQMysvKy8wOWYveDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8rLzA5Zi93OWZiLzdQRHcvek0wTS84QUFBRC9Bd01EL3dBQUFQOEFBQUQvQUFBQS93QUFBUDhBQUFEL0FBQUEvd0FBQVA4Q0FnTC9Bd01EL3dVRkJmOEFBQUQvTGk0dS8rVG82Zi96K1BuLzhQWDIvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3c5ZmIvK1B6Ky82MnVyLzkzZUhqL25KMmQvNCtRa1ArenM3VC9YVnhjLzd5K3Z2L3A3TzMvWjJkbS95c3JLLzlQVDAvL1ptZG4vem82T3YvajZPai85UG42Ly9EMTl2L3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9EMTl2L3c5ZmIvOS9yNy8xRlJVZjluWjJmL3NiR3gvM2g0ZVA5NmVuci9rWkdSLzNkMmR2K2JuWjMvMnQ3Zi8ranE2di9Kek16L2tKS1MvMVpWVmYvVjJkbi85dnY4LysvMDlmL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhQYjIvKzd5OC8vOC8vLy9iVzV1L3dBQUFQOENBd1AvQUFBQS93QUFBUDhBQUFEL0FBQUEvd0FBQVA4QUFBRC9BQUFBL3dBQUFQOEFBQUQvQUFBQS93QUFBZjhBQUFEL25aK2YvL3ovLy8vdDh2UC84ZmIzLy9IMjkvL3g5dmYvN3ZQMC8vdi8vLytycnE3L1VsRlIvNmFvcWYvVTF0Yi81K3JxLzg3UjB2K0lpWW4vZjM5Ly81R1JrUDl5YzNML2lJaUkvN0N3c1A5QVFFRC9ob2VJLy8vLy8vL3M4ZkwvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8rM3k4Ly8vLy8vL2ZYOS8vd1FFQlArSGg0Zi81T1hsLy9EeTgvL2g1T1QvN2U3di8ranE2di9IeWNuL2NIQncveHNiRy85SlNVbi93Y1BFLzk3aTR2L3orUG4vOFBYMi8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi83UEh5Ly83Ly8vK1ltcHIvQUFBQS93RUJBZjhBQUFEL0FBQUEvd0FBQVA4QUFBRC9BQUFBL3dBQUFQOEFBQUQvQUFBQS93QUFBUDhBQUFEL0FnSUMvd0FBQVA5N2ZYMy8vLy8vLyszeTgvL3g5dmYvOGZiMy8vSDI5Ly93OWZiLzhmYjMvOWJhMi8rbnFhbi9MUzR0L3ljbkovK0ppb3IvME5MVC8rN3c4Zi9uNmVyLzQrYm4vL1AyOS8vUzB0TC9YVjFkL3drSUNmKzR1N3ovKy8vLy8rN3o5UC94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vRDE5di92OVBYLzdmTHovL3IvLy8rZW42RC9EUTBOL3dJQ0F2OUpTVW4vcHFlbi85bmEydi9yN2U3LzE5cmEvNXljblA5cWFtci9tcHljLzM5L2YvL3g5ZmIvOS92OC8rLzA5Zi94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9EMTl2L3U4L1QvL1AvLy8ySmpZLzhBQUFEL0FnSUQvd0FBQVA4QUFBRC9BQUFBL3dBQUFQOEFBQUQvQUFBQS93QUFBUDhBQUFEL0FBQUEvd0FBQVA4Q0FnTC9BQUFBLzFsYVd2L3Y5UFQvOGZiMy8vRDE5di94OXZmLzhmYjMvL0gyOS8vdTlQWC8vdi8vLzgzT3ovOThmWDMvazVXVi8ybHBhUCt5c3JMLzMrUGovK3Z0N3YvUDBOSC9rSkdSL3kwdExmOEFBQUQvS3lzci84ck16Zi8zL1AzLzd2UDAvKy8wOWYveDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly93OWZiLzh2ZjQvL1Q1K3Yvdzl2Zi8rUHI2LzQ2T2ovOWtaR1QvSmlZbS94UVVGUDg1T1RqL1JrWkcvMkZoWWY5c2Eydi9tNXljLytYbzZmL0V4Y2IvaVltSy8rbnU3Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvN2ZMei8vei8vLytvcXFyL0JRVUYvd0FBQVA4QkFRSC9BQUFBL3dBQUFQOEFBQUQvQUFBQS93QUFBUDhBQUFEL0FBQUEvd0FBQVA4QUFBRC9BQUFBL3dBQUFQOEFBQUQvQXdNRC8wVkZSUC9tNnV2LzgvajUvL0QxOXYveDl2Zi84ZmIzLysvMDlmLzIrL3ovejlMVC80V0ZoZi9nNHVMLzF0blovNE9FaGY5cWFtci9WRlZWLzBSRFEvOHRMUzMvRXhNVC96dzhQUDlwYUdqL3NiT3ovLy8vLy8vdTlQWC85ZnI3Ly9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0wzK1AvcDd1Ly81T2pwLy9mNy9QKy93Y0gvZ0lHQi80dUxpLzkrZm4zL01qSXkvem82T3Y5bVptYi9YbDVlLzRtSWlQK29xcXIvd3NURi80dU1qUCsvd2NILytmNy8vKzd6OVAveDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8rLzA5Zi8xK3Z2LzRPUGsveVVsSmY4QUFBRC9BZ0lDL3dBQUFQOEFBQUQvQUFBQS93QUFBUDhBQUFEL0FBQUEvd0FBQVA4QUFBRC9BQUFBL3dBQUFQOEFBQUQvQUFBQS93SUNBdjhBQUFEL016TXovK3Z2OFAveTkvai84UFgyLy9IMjkvL3g5dmYvOGZiMy8vRDE5di8zL1B6L25wK2YvNTJlbnYrK3Y3Ly9uSjJkLzNoNGVQOWJXMXYvWUdCZy95WW1KdjlEUTBQL2lJaUkvNHFMaS8rRWhJWC8yZHZiLy9QNCtmL2g1ZWIvNy9QMC8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8vdjlQWC8rZi8vLzhUR3gvOXRiR3ovazVXVi80S0NnditBZ0lEL282V2wvNW1abXY5NGVIai9EQXdNLzFwYVd2K1RrNVAvcDZlbi84bkt5djl5YzNQL096czcvK2ZuNS8vMCtmci83L1QxLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzdmTHovLzMvLy8rTmpvLy9BQUFBL3dJQ0F2OEFBQUQvQUFBQS93QUFBUDhBQUFEL0FBQUEvd0FBQVA4QUFBRC9BQUFBL3dBQUFQOEFBQUQvQUFBQS93QUFBUDhBQUFEL0FnSUMvd0FBQVArUWtaTC8vLy8vLyszeTgvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzdmTHovLzMvLy8rN3ZiNy9MeTh2LzVlWW1QL0h5TWovbnA2ZS80K1BqLzgyTmpiL0dCZ1kvNFdGaGYra3BhWC9rNVdWLzM5L2YvK0VoWVgvajVDUS8zUjFkZi9rNk9uLzlQbjYvKy8wOWYveDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9EMTl2L3k5L2ovNi9EeC81NmZuLytEZ29ML2pJMk4vN0swdFArOXdNSC9uNkdoLzRXR2gvODVPVG4vZG5aMy8wUkVSUCtZbDVmLzhmUDAvOTdoNHY5VFUxUC8ydDNkLy9iNy9mL3Y5UFgvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0QxOXYveDl2Zi84dmIzL3o0K1B2OEFBQUQvQXdNRC93QUFBUDhBQUFEL0FBQUEvd0FBQVA4QUFBRC9BQUFBL3dBQUFQOEFBQUQvQUFBQS93QUFBUDhBQUFEL0FBQUEvd0lDQXY4QUFBRC9MQ3dyLytQbjUvLzArdnYvNy9UMS8vSDI5Ly94OXZmLzhmYjMvL0gyOS8vdDh2UC8vLy8vLzZlcXF2OWxabWIvL1AvLy85L2c0UDkyZG5iL1RVMU4vM056Yy84d01ERC9xYXVyLzVLVWxQL016czcvbjZDZy80Mk5qZitDZ1lIL3VMdTcvL1Q1K3YvdzlmYi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vRDE5di96K1BuLytmNy8vK251N3YvcjcvRC8vLy8vLzNaNGQvOStmMy8vZVhsNi80ZUlpUCtHaG9iL1BqNDkvM04wZFAvUjA5VC8vLy8vLzZxcnEvKzZ2YjMvKy8vLy8rN3o5UC94OXZmLzhmYjMvL0gyOS8veDl2Zi83L1QxLy9YNy9QL2MzK0QvSUNBZy93QUFBUDhDQWdML0FBQUEvd0FBQVA4QUFBRC9BQUFBL3dBQUFQOEFBQUQvQUFBQS93QUFBUDhBQUFEL0FBQUEvd0FBQVA4QUFBRC9Bd01EL3dBQUFQOTVlbnIvLy8vLy8reng4di94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLysvMDlmLzUvdjcvbTV5Yi84bk16UC8vLy8vL3RMVzEvMTllWHY5RVEwUC9tSnFhLzNOemMvK0lpWW4vYm05di81eWNuUC8vLy8vLzVlbnEvKy95OC8vNS92Ny84ZmIzLy9EMTl2L3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0QxOXYvdjlQWC84L241Ly9MMytQL3U4L1QvMXRuWi82K3hzZi9WMTlmL2c0T0QvNTJmbi85K2dJRC9wYWVuLzZHam8vLzArZnIvNGVYbC81ZVltUC92OWZYLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3U4L1QvKy8vLy83N0J3ZjhLQ2dyL0FBQUEvd0VCQWY4QUFBRC9BQUFBL3dBQUFQOEFBQUQvQUFBQS93QUFBUDhBQUFEL0FBQUEvd0FBQVA4QUFBRC9BQUFBL3dBQUFQOERBd1AvQUFBQS8waEpTdi95OWZiLzhmYjMvL0QxOXYveDl2Zi84ZmIzLy9IMjkvL3Y5UFgvOS96OS85YmEyditYbUpuLy9QLy8vOWZiMi8raG82UC9rSkdSLzQyT2ovK09qNC8vbkoyZC84N1AwUCt4czdQLzR1Ym4vKy8xOXYveitQbi84dmY0LysvMDlmL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9EMDlmL3U4dlAvN2ZMei8vdi8vLy9SMDlQL29LR2kvNmlxcXYrWGw1Zi8xdGpaLzVTV2x2K2pwYWIvdUxxNy83L0J3Zi8vLy8vL21wdWMvOURUMC8vNC92Ly83L1QxLy9IMjkvL3g5dmYvOGZiMy8rN3o5UC84Ly8vL3U3Mjkvd2NIQi84QUFBRC9BUUVCL3dBQUFQOEFBQUQvQUFBQS93QUFBUDhBQUFEL0FBQUEvd0FBQVA4QUFBRC9BQUFBL3dBQUFQOEFBQUQvQUFBQS93TURBLzhBQUFEL01EQXcvK3p3OGYveTkvai83L1QxLy9IMjkvL3g5dmYvOGZiMy8rN3o5UC84Ly8vL3JLMnUvN1c0dVAvLy8vLy9wYWFuLzlMVDAvOTRlWG4vdjhEQS83dTh2UCtibTV6L3BLYW0vNk9rcFAvbDV1Yi85L3Y4Lyt6eDgvL3U4L1AvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9EMTl2L3U4L1QvOC9qNS8vWDcvUC8rLy8vL3hNZkkvMzE5ZmYvcDdlMy83Tzd2LzRLRGcvOWRYVjMvaUltSi80S0RnLy9jM04zL25KNmYvLy8vLy8reHM3UC9zYkt6Ly8zLy8vL3U4L1QvOGZiMy8vSDI5Ly94OXZmLzd2UDAvL3ovLy8rM3Vici9CUVVGL3dBQUFQOEJBUUgvQUFBQS93QUFBUDhBQUFEL0FBQUEvd0FBQVA4QUFBRC9BQUFBL3dBQUFQOEFBQUQvQUFBQS93QUFBUDhBQUFEL0FnSUMvd0FBQVA5NmUzei8vdi8vLyszeTgvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzcvVDEvL2Y4L2YrU2xKVC8xOXJiLytydTcvK2JuWjMvNHVibS8ybHBhZitQajQvL1ZWVlcvNlNscHYvOC8vLy95Y3ZNLzNkM2QvL2w2dXYvK3YvLy8vYjcvUC93OWZiLzd2UDAvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3c5ZmIvOFBYMi8vei8vLy9xN3UvLzB0YlgvOTdpNC84K1BqLy9ucUNnLy8vLy8vOUpTVXIvUlVWRi85WFkyZityckt6L1kyTmovOTNnNFArVGxKVC84L2Y0Lzc3QndmK1JrcEwvL1AvLy8rN3o5UC94OXZmLzhmYjMvL0gyOS8vdTgvVC8rdi8vLzhQR3h2OE5EUXovQUFBQS93RUJBZjhBQUFEL0FBQUEvd0FBQVA4QUFBRC9BQUFBL3dBQUFQOEFBQUQvQUFBQS93QUFBUDhBQUFEL0FBQUEvd0VCQWY4QUFBRC9FQkFRLzh2T3ovLzMvUDMvN3ZQMC8vSDI5Ly94OXZmLzhmYjMvL0QxOXYveStQai82Ky92LzM5L2dQL3M4ZkgveWN6TC82YW9xUC9FeDhqL1kyTmovOGZJeWYvQndzTC9JQjhmLzRhSWlQLy8vLy8vWDE1ZS8yNXZiLy9tNnV2LzBkWFcvL1gzK1AvNCsvei83L1QxLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8rLzA5Zi8zL1A3L3I3R3gvMjFzYlAra3BhWC9nWUtDL3lZbUp2KzV1cnIvMytEaC94Z1lHUDkrZm43Ly8vLy8vLzMvLy85MGRYWC9xcXlzLzVPVWxmLzArUG4vdUxxNy8ydHNiUC83Ly8vLzd2UDAvL0QxOXYveDl2Zi84ZmIzLysvMDlmLzArZnIvNXVucS95c3FLdjhBQUFEL0FnSUMvd0FBQVA4QUFBRC9BQUFBL3dBQUFQOEFBQUQvQUFBQS93QUFBUDhBQUFEL0FBQUEvd0FBQVA4QUFBRC9BZ0lDL3dBQUFQOHhNVEgvNXVucS8vdi8vLy93OWZiLzhmWDIvL0gyOS8veDl2Zi83Zkx6Ly8zLy8vKzl3TUgvT1RrNS8vUDQrUC9IeXNyL25xQ2cvNHVOamYrYm5Kei8vLy8vLy8vLy8vODFOVGIvUFQ0Ky8vZjcvUCtMaTR2L0tDY24vNktqby8rUmtwTC9ibTF0LzgzUTBmLzMvUDMvNy9UMS8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly92OVBYLzkvejkvOWJhMi85bloyZi9tNXljLzR1TWpQKy93Y0wvWUdGaC81aVptZi93OHZQL1oyaG8vdzhPRHYrc3I2Ly8vUC8vLzdHeHN2ODFORFQvbnFDZy8vLy8vLytWbHBYL0p5Y28vK3ZzN1AveitQbi83L1QxLy9IMjkvL3g5dmYvOGZiMy8rN3o5UC85Ly8vL2FtdHMvd0FBQVA4REJBVC9BQUFBL3dBQUFQOEFBQUQvQUFBQS93QUFBUDhBQUFEL0FBQUEvd0FBQVA4QUFBRC9BQUFBL3dBQUFQOEFBQUQvQUFBQS93TURBLzh3TUREL3RiZTQvL2I3L1AvdjlQWC84ZmIzLy9IMTl2L3U5UFgvK2Y3Ky8zaDVlZjhiR3h2LzA5YlcvL0wyOXY5MmQzZi9QejgvLzkzaDRmL3c5UFgvZlgxKy93SUNBditpcEtULzYrenMvMjF0YmYrRWhZWC90TGEyLzVPVGsvK0tpNHYvZFhWMi8vSDE5di94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0QxOXYveitQbi81dXZzLytuczdQLy8vLy8vMmQzZC80R0JnZitqcEtUL2FtcHEvOGZJeWYvNi8vLy9mb0NBL3kwdEx2OVdWbGIvZEhWMS8zbDVlZi9PenMvLzgvYjMvMHBMVFA4bkp5Yi9tWm1aLy96Ly8vL3Q4L1QvOGZiMy8vSDI5Ly94OXZmLzd2UDAvL2o5L3YvTzB0TC9GeGNYL3dBQUFQOEJBUUgvQUFBQS93QUFBUDhBQUFEL0FBQUEvd0FBQVA4QUFBRC9BQUFBL3dBQUFQOEFBQUQvQUFBQS93QUFBUDhBQUFEL0FnSUMvd0FBQVA4eE1USC82Ky93Ly9MMytQL3c5ZmIvN2ZMei8vMy8vLyswdExUL2xaYVcvMUJRVVA5eWRIVC8vLy8vLzdDd3NQOXdjSEQvYzNOei8wZEhSLzgwTkRUL3FhdXIvLy8vLy8raXBLVC9kbloyLzU2Zm4vK05qWTMvNy9MeS8vNy8vLy9pNXVmLzdQSHkvL0wzK1AveDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9EMTl2L3orUG4vOC9qNS8reng4di85Ly8vLzFOYlcvNEdEZy8rMXQ3Zi9oSVNFLzZxcnEvL202T24vMmR6ZC83YTN1UCt3c2JML3pjL1AvL1Q0K1ArSGlJai9KaVltLzVhWGwvK1BrSkQvdkwyOS8vNy8vLy9zOHZQLzhmYjMvL0gyOS8veDl2Zi83Zkx6Ly83Ly8vK2NuWjMvQVFFQi93SUNBdjhCQVFIL0FBQUEvd0FBQVA4QUFBRC9BQUFBL3dBQUFQOEFBQUQvQUFBQS93QUFBUDhBQUFEL0FRRUIvd0lDQXY4QkFRSC9BQUFBLzJ0cmEvLzErdnYvNy9UMS8rN3o5UC8yKy96LzRPSGgvMzUvZnYvUDB0TC9XbHBhL3pFeE1mKzF1TGovOGZUMC83Ky93UCt0cnEvL3ZzREEvK1BuNS8vYjNkNy9sWldWLzVDUmtmK3VzTEQvaElXRi8vSDE5Zi8xK3Z2LzdmTHovL1Q1K3YveDl2Zi84UFgyLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDE5di93OWZiLzhmYjMvKzN5OC8vOC8vLy93OFhGLzRhSGgvL04wTkgvdTcyOS82NnVyLyt6dGJYL3ljdkwvOC9SMHYvUjFOVC9oWWFHLzNCd2NQOW1abWIvZEhSMC85UFcxdjk3ZTN2LzNlRGcvL24vLy8vdDh2UC84ZmIzLy9IMjkvL3c5ZmIvN3ZQMS8vci8vLzl3Y1hIL0FBQUEvd01EQS84REF3UC9BUUVCL3dBQUFQOEFBQUQvQUFBQS93QUFBUDhDQWdML0FnSUMvd01EQS84QkFRSC9BUUVCL3hVVkZmK0Fnb0wvOVBuNi8vSDI5Ly92OC9ULzh2ZjQvL2o4L1ArQmdvTC92YisvLzdDeXN2OTFkbmIvYlcxdC8ybHBhZitlb0tELzF0blovOHpQei8vSHljbi9zYkt6LzYydXJ2L0V4OGYvdkw2Ly80S0RnLy9pNXVmLzl2ejkvKzd6OVAveDl2Zi84UFgyLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLyszeTgvLzgvLy8vemREUS80NlFrUCtxckszL3RybTYvN2E1dXYrZm9LSC9sNW1aLzU2Zm4vOXJiR3ovd2NQRC8zOS9mLys3dmIzL3FLbXEvOFRHeC85N2ZIMy82ZXpzLy9qNy9QL3Q4L1QvOGZiMy8vSDI5Ly92OVBYLzhmYjMvL0gxOXY5cmJHei9BZ0lDL3dBQUFQOEJBUUgvQWdJQy93TURBLzhEQXdQL0FnSUMvd0FBQVA4QkFRSC9BQUFBL3hBUEQvOVVWVlgvMU5YVi8vajgvZi94OS9qLzd2UDAvL0gyOS8vOC92Ny9qSXlOLzZ5dHJ2K3hzN1QveTh2TC83YTN0LytUazVQL3NyUzAvM0J2Yi8rbHA2Yi9sSmFXLzZXb3FQKzN1N3YvdHJpNS82Q2hvZitVbFpYLzQrYm0vL2Y4L1AvdTgvVC84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8rN3o5UC8zKy96LzkvdjcvNnl0cmY5b2FHai9TRWhJLzJ0c2JQL0F3OFAveXMzTi80V0dodi9OejlEL2g0aUkvK25zN1AvT3o4Ly9xYXVyLzhMRXhmOTdmSHovNU9qcC8vei8vLy90OHZQLzhQWDIvL0gyOS8vdjlQWC84dmY0Ly9qNysvK3ZzckwvUlVaRy93NE9EdjhBQUFEL0FBQUEvd0VCQWY4QUFBRC9JaUlpLzNaM2QvOWtaV1gvdUxxNi8vZjgvZi8yKy96LzcvVDEvK3p4OHYvMit2ci8rZno4LzR5T2p2K2pwYVgvdkw2Ky82cXRyZi8vLy8vL3Q3bTUvNldtcHYrNnZiMy9rNU9ULzh6TnpmKzB0YlgvVEV4TS8xaFlXUDlzYkd6L3pkRFEvL3IrL3YvMCtmci83L1QxLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvK3Z4OHYvOC8vLy91N3U3LzVPVGsvK1ptWnIvM2Q3ZS81T1ZsZitucWFyL1VsSlMvNU9WbGYvRng4Zi93OFhHLytudDd2KzN1Ym4vcTZ5cy84UEd4djk2ZTN2L3pNL1AvLy8vLy8veDl2Zi83Zkx6Ly9EMTl2L3c5UFgvNy9UMS8vei8vLy8wK1BqL3lNdkwvNVNXbHY5MWRuYi9iMjl3LzVXWGwvL2M0T0QvL2YvLy8vcisvdi80L2YzLzhQWDIvK3p4OHYvdTgvVC8vdi8vLytYbzZQK0NnNFAvcXF5cy83eTl2ditucUtqLzdmTHovK0RpNC8rMnQ3ai8wZFBULzJablovOXhjbkwvb3FXbC82ZW9xUC9TMU5UL2pvNk8vNWFWbGYvWTNOei85dno4Lys3eTgvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi83L1QxLy9UNSsvL2M0T0gvajQrUC80T0RnLzlsWm1iL3k4M04vLy8vLy8vS3k4ei9SMGhJLzVLVGsvOVBUazcvbTV5Yy8vLy8vLys1dkx6L29LR2gvOHZPenYrSGlJai9vYU9qLysvejgvLzkvLy8vOHZmNC8rN3o5UC91OC9ULzdQSHkvL0QxOXYvNi92Ny8vLy8vLy8vLy8vLysvLy8vL3YvLy8vWDcvUC90OHZQLzdQSHkvK3p4OHYvdzlmYi8rdjcvLy9qOC9QKzV1N3YvZ0lDQS83bTh2UCt2c2JIL3FLcXEvL1g2K3YvOS8vLy9hMnhzLzJscWF2K0Jnb0wvVTFOVC8vajUrZi8vLy8vL29LR2kvMmxwYWYrSGhvYi9wS1NrLyt6eDh2L3g5dmYvOFBYMi8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOFBUMS8vYjcvUC9nNU9UL3U3Ni8vNk9scHYrZW42RC94c2pJLzRPRGcvL0Z4OGYvZkh4OC93QUFBUDgrUGo3L3lzN08vLy8vLy8vSnk4ei9tcHViLzhYSXlmK29xcXYvaG9hSC83TzF0di9yOFBILy9mLy8vL3IrLy8vMCtmci83L1QxLyt6dzhmL3E3L0QvNnUvdy8rcnY4UC9xNy9ELzdmTHovL0wzK1AvNC9mNy8vZi8vLy9QMzkvL0d5TWovalkyTi81YVhtUC9EeE1YL242Q2cvN2k3dS8vNS9mMy8vdi8vLzZPbHBmOGFHeHYvQUFBQS83UzF0ZitscGFYL2xwbVovOFRHeHYrVWxwWC9yYkN3LzhMRXhmL3I4UEQvOVBuNi8vRDE5di94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzcvVDEvL1A1K3YvNi8vLy8vZi8vLzh2TnovOTBkSFQvRkJRVC80Q0FnZithbTV2L016SXkveW9xS3Y5RVJFVC9zYk8wLy8vLy8vL2s1K2ovb0tLaS82dXRyZi9DdzhUL29hS2kvNDJPanYranBhWC95TXZMLytUbzZQLzErZnIvK3YvLy8vei8vLy85Ly8vLy9QLy8vL3IvLy8vMisvMy82dTd1LzlEVDAvK3VzTEQvam8rUC81V1hsLys0dWJyL3NiS3kvNTJmbi8vVDE5ai8vLy8vLy9mNSt2K0xqSTMvT1RnNC95Y25KLzlCUVVIL3RyaTUvMHRMUy84cEtDai9pNHVMLytEbDVmLysvLy8vK1AzKy8vTDMrUC93OWZiLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84UFgyLyszeTh2LzArZnIvM2VIaS82aXBxdjl2Y1hIL1JFUkUvNnVzclArTWk0di9Pams1LzJWbFpmODBORFQvaDRtSi8vZjQrUC8vLy8vL3lNek4vNTJmbi8rdXNMRC92Y0RBLzY2dnNQK1ptcHIvajVDUS81T1VsUCtkbjUvL282V2wvNm1xcXYra3BhWC9uNkdpLzVpYW12K1JrcEwvbEpXVi82YW5xUCszdWJuL3NMS3kvNkdpb3YrOHY4RC84L2IzLy8vLy8vL2Y0K1AvWW1KaS96czdPLzloWVdIL09qbzYvNit2c1ArUGtKRC9PVGs2LzQ2T2ovK29xYW4vNy9QMC8rN3o5UC91OC9ULzhQWDIvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly92OVBYL25xQ2cvNnl2ci8vWTI5ei92cjYrLzJ0cmEvOXNiR3ovbzZPai81NmZuLzg0T0RmL1IwZEgvOEREeFAvOS92Ny8rLzM5LzlEVTFmK3dzYkgvcks2dS83SzB0UCszdWJuL3RMZTMvN08xdGYrc3JhNy9yYTZ1LzZ1dHJmK3hzckwvdGJlMy83ZTZ1dit4czdQL3FxeXMvNjJ2ci8vSHlzdi84dlgxLy8vLy8vL3U4dkwvbnArZy96SXhNdjlRVVZIL3E2dXMvNU9Uay85alkyVC9nSUNBLzlMVDAvL08wZEgvbXB1Yi83YTR1UC8yKy96LzcvVDEvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzcvVDEvL2I2Ky8vbTZ1di9hMnRzLzBoSVNQOTJkbmIvMmR6Yy83L0F3UDlwYVduLzE5blovOGJJeWY5aFlXSC9MeTh2LzNKemMvKzV1N3ovOHZmNC8vWDYrLy9qNWViLzJkcmEvOHJOemYrenRiWC9zN1cxLzdTMXRmKzh2THovdUxtNS83R3lzdit6dGJYL3Y4SEIvOW5jM1AvbjZPai84ZlgyLy9qOS92L2k1dWYvbzZXbC8xMWVYdjh0TFMzL2hJV0YvOXZjM2YrN3ZMei9aR1ZsLytUbzZQKzh2Ny8vWldWbC8wTkRRLytOam83LytmNy8vL0QxOXYveDlmYi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8vdjlQWC85LzMrLzlUWDJQOTdlbnIvbEpXVi8vRHk4di82Ly8vLzdQSHgvMmhvYVArT2o1RC91cnU4LytyczdmK3dzYkgvZFhaMi8yVmtaUDlaV1ZuL2twS1MvMzE5ZmYrQWdZTC96dEhSLy8vLy8vLysvdjcvLy8vLy8rdnQ3Zi95OHZMLy8vLy8vLy8vLy8vOS8vLy9zTE8wLzNSMGRQK0FnSUQvaTR1TC8wMU5UZjkwZEhUL2NuTnovOVRXMS8vYTNOei90YmUzLzNSMGRQK0tpNHYvKy8vLy8vMy8vLy9aMjl2L2c0T0QvNDJPanYvdjgvVC84ZmIzLy9EMTl2L3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9EMTl2L3g5L2ovN2ZMei82dXRyZitHaFlYL282U2svK3Z3OGYveitmci81K3ZzLzRhSGgvOTRlSGovaG9lSS85N2YzLytmb0tEL2pvK1AvOXZkM2YrL3Y3Ly9lbnA2L3lBZ0lQOFBFQkQvWGw5Zi8zWjNkLzk2ZW52L2hZYUgvMytCZ2Y5NGVYbi9kSFYxLzBwTFMvOENBZ0wvT2prNS80Mk5qZi9PejgvL3o4L1EvMzE5ZnYvQXdjSC94OGpKLzMxOWZ2OXpjM1Avb0tHaC8vWDUrZi95K1BuLzN1TGovNUNSa2YrTWk0di93Y1BFLy9YNisvL3c5UFgvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vRDE5di95K1BuLzh2ajQvOXpnNGYvaTV1Zi84UFgyLy9iNy9QL1UxOWYvSmljbi82cXFxdit0cnE3L1VWRlIvNmlvcVArbHBxYi8zOS9nLzA1T1R2OFpHUm4vQndjSC93QUFBUDhDQWdML0FBQUEveWdvS1AvajV1Zi9zN1cxL3drSkNmOENBZ0wvQVFFQi93RUJBZjhNREF6L0lDQWcvM1YwZFAvbzZlci9qbytQLzZHZ29QOURSRVQvNHVUay8ycHFhdjlQVUZELzhmWDIvL0gyOS8vdjlQWC8zZUhoLytMbTUvLzErdnYvOFBYMi8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0QxOXYvdzlmYi85ZnI3Ly9UNSt2L3U4L1QvKy8vLy83aTd1LzhnSHgvL0ppWW4vem83Ty85UFQwLy9uWjZlLzZhbnB2OVRVMVAvQUFBQS93SUNBdjhFQkFUL0dob2EveDhmSC84eU1qTC9pSXFLLy8vLy8vL3g4dlAvV0ZsWi95MHRMZjhhR2hyL0ZCUVUvd0FBQVA4QkFRSC9BQUFBLzRhSGgvK2JtNXYvbTV5Yy96WTNOLzlDUTBQL0dCZ1kvMEpDUXYvZzVPVC85ZnI3LysvMDlmLzErdnovOVBuNi8rLzA5Zi93OWZiLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3c5ZmIvOFBYMi8vRDE5di94OS9qLzdmSHkvNDJOamY5WVYxZi9aV1ZsLzUrZ29QOWxabVgveU1ySy96SXlNdjhBQUFEL0FBQUEvekl5TXY4c0xDei9HeHNiLzRPRGcvOTZmSHovL3YvLy85emUzdjl1YjIvL2NYRngvd1VGQmY5QlFVSC9HeHNiL3dBQUFQOEFBQUQvYTJ4cy83SzB0UDlzYkd6L21wdWIvMWhYVi85ZFhWMy9xcXVzLy9iNy9QL3Y5UFgvOGZiMy8vRDE5di93OWZiLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0QxOXYvMCtmci83Zkh5LzhURnh2K3p0YmIvdGJlNC83bTd2UCtnb2FEL1NFaEkvd29LQ3Y4QUFBRC9jbkp5LzExZFhmOEFBQUQvcGFXbC81MmRuZitpbzZML2pvK1AvN3k4dlA5eGNYSC9BQUFBLzQ2T2p2ODVPVG4vQUFBQS93d01EUDlyYkd6L3BLYW0vN3kvdi8reHM3UC91YnU3LzgzUTBQLzArZnIvOGZiMy8vRDE5di94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLysvMDlmL3k5L2ovK1AzKy8vVDYrLy81L3Y3LysvLy8vOVhZMmY5c2JXMy9HeG9hL3prNU9mOVFUMC8vdTd5OC95RWhJZjhqSXlQLzRlUGovNG1MaXYrenRiWC92TDIrL3dBQUFQOVhXRmovc3JLeS96YzNOLzg1T1RuL0hoNGUvNU9VbFAvbDZlci8vZi8vLy9mOC9QLzErdnYvOS8zKy8vRDE5di93OWZiLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vRDE5di91OC9ULzcvVDEvKzd6OVAvdTgvVC85dnY4Ly9iNysvK1ZscGYvS2lvcS8xRlJVZjlsWldYL2lZbUsvd29LQ3Y4N1BEei8rUG41LzlEVDAvOFFFQkQvS3lzci80K1FrUDlaV1ZuL1JVVkYvelUxTmYrK3dzTC8vUC8vLy9MNCtQL3U4dlAvNy9UMS8rLzA5Zi91OC9ULzhmWDMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3c5ZmIvN2ZMei8vNy8vLzkvZjMvL05qWTIvMDFOVGY4L1B6Ly9iMjl2L3dBQUFQOTVlWHIvVEV4TS94b2FHdjlzYkd6L05UUTAvMDlPVHY4ek16UC9yYTJ0Ly8vLy8vL3E3L0QvOHZmNC8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3c5ZlgvOXZ2OC84dk56ditRa0pELzE5cmEvNy9Cd2YrUWtaSC9VbEpTLzJWbFpmOVBUMC8vWW1KaS93QUFBUDhTRWhML2MzTnovMEJBUVA5eWNuTC9Sa2RILzYreHNmL0h5TW4veXN6TS81R1Nrdi9pNWViLzlQbjYvL0QxOXYveDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8rN3o5UC81Ly8vL3VyeTkvejQrUHY5c2JHei9xYXFxLzNWMmR2OTFkWFgvaG9hRy95RWdJUCtPam83L0lDQWcvMUJRVVA5dGJXMy9LeXNyLzV5Y25QOWZZR0Qvam8rUS81eWRuZjlaV2xuL1ZGUlUvK0RqNVAvMSt2di83L1QxLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhQWDIvL0gyOS8veTkvZi9wS2FtLzRTRWhQK1ltWm4vUVVGQy8xWlZWZjlIUmtiL2taU1UvN0t6dFA5VlZWWC9iR3hzLzcyL3dQOXljM1AvVFV4TS8wcEpTZjlVVmxiL29LQ2gvMzkvZi8vQXc4UC85L3orLysvMDlmL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84UFgyLy9IMjkvLzcvLy8vOC9mMy8vWDUrZi9jMytEL3JyR3cvOG5NemYvLy8vLy96Yy9RLzFaVlZmOXhjWEgvN2ZEdy8vVDQrZis4dnI3L3RiaTQvK3Z2Ny8vejkvZi85dnY4Ly9uOS9mL3c5ZmIvOGZiMi8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8rN3o5UC93OWZiLzhQWDIvL2I2Ky8vOS8vLy8rUHo4LysvMTl2LzArUG4vT0RnNC8zVjNkLy8vLy8vLzdmTDAvL3YvLy8vOC8vLy84dmo1Ly9EMTl2L3Y5UFgvN3ZQMC8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi83L1QxLyszeTgvL3U4L1QvN2ZMei8vLy8vLzl3Y1hIL3BLU2svLy8vLy8vczhmUC83dlAwLys3eTlQL3c5ZmIvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly92OVBYLzlQbjYvOVhaMmYvaDVlYi85UG42Ly9EMTl2L3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8vdzlmYi85dnY4Ly9QNSt2L3c5ZmIvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3Y5UFgvOFBYMi8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUtBQUFBRUFBQUFDQUFBQUFBUUFnQUFBQUFBQUFRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUEgyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vRDE5di93OWZiLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8rLzA5Zi8zL1B6LzlmcjcvKy8wOWYveDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3c5ZmIvOHZmNC8vTDMrUC84Ly8vL3dNUEQvOHpPenYvOC8vLy84dmY0Ly9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3c5ZmIvOGZiMy8rL3o5UCtscHFmL3JhK3YvN2k2dXYrenRiWC9ySzZ2LzZ1dHJmLzArZnIvOFBYMi8vRDE5di94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3Y5UFgvOS96OS8rcnY4UCtYbUpqL2ZIMTkvM0J3Y2YraXBLVC9tSm1aLzI5d2NQK0JnWUgvbjZDZy8vUDQrZi8wK2ZyLzhQWDIvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3U4L1QvOWZyNy8rYnE2Lyt5czdQL25wK2cvKzd5OC8rUWtaSC9RRUJBLzBkSFIvK2VvS0QvN2ZIeS81aVltZis2dkx6LzZ1N3YvL1Q1K3YvdjlQWC84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3U4L1QvL1AvLy85bmMzUCtXbHBiL29LR2gvMnh0YmYvajV1Zi92YisvLzFKU1V2OVlXRmovMU5mWS84L1QxUDl0YlczL3BLV2wvNWFYbC8vbTZ1ci8rZjcvLysvMDlmL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9EMTl2L3c5ZmIvOXZ2Ny8rRGs1UCtYbUpuL3NiT3ovN3E5dmYvUzFkWC8rUHI3LzdHeXMvOXpjM1AvYzNOei84VEd4di93OHZMLzBOUFUvN2U1dXYrdHJxNy9tWnViLytqczdQLzErZnIvOFBYMi8vRDE5di94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8vdzlmYi84UFgyLy9IMjkvLzIrdnIvOS96OC84REV4UDhPRGc3L0JBUUUvNW1ibS8rdXI2Ly9xcTJ0LzVTV2x2ODlQVDMvaTQyTi8zcDdlLzlGUlVYL25KNmUvNm1yclArenRMVC9oWWFIL3dBQUFQOGhJU0gvMWRqWi8vVDUrdi8zKy96LzhQWDIvL0QxOXYvdzlmYi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi85ZnY4Ly9mOC9QLzErdnYva3BPVS83SzB0UCt0cnE3L1EwTkQvM1IwZFA4eE1USC9qNCtRLzF0YlcvOVlXRmovYW10ci8rWHA2di9VMk5qL1lHQmcvMVZWVmY5bFptYi9ob2VIL3pBd01QOXljbkwvUzB0TC83cTh2UCtucUtqL25xQ2cvL3YvLy8vMisvdi85ZnI4Ly9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84dmY0LzhyTnp2K3NyYTMvM09EaC82cXJxLzk4Zkh6L2EyeHMvN3k5dmY5eGNYSC9ZbUppLzVpYW0vK3VzTEgvdExXMS80eU5qZitRa3BML2lveU0vNVdWbGYreXNyUC9yN0d5LzQ2UGtQOWhZV0gvZEhSMC83L0F3UDlmWDEvL2k0eU0vNit3c1AvYTNOMy9xcXVyLzlIVjFmLzArZnIvOFBYMi8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8vdjlQWC85LzMrLzhEQ3d2K1ptWm4vd01MQy85WFoyditycnE3L0pDUWsvMkpqWS8vRXhzZi9nNFNFLytUbzZmK3JyYTMvajVDUS80YUdoditlbjUvL2ZuOS8vNEdDZ3YranBhWC9nNE9FLzVPVWxQKzF0N2YvM2VIaS8zNS9mLy9Lek0zL1NVbEsvekl5TXYrNnZiNy8wdFhXLzcyK3YvK1ZsWlgvek0vUC8vZjkvdi93OVBYLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLysvMDlQK05qbzcvY25KeS8zVjJkdjlwYVduL1BEczcvNENBZ1ArOXZyNy9uSjJlLzg3UjBmL0J3OFAvZFhWMS82V25wLys3dmI3L3BLYW0vN3krdi8rc3JxNy9uNkNnLzhIRHhQK1ptcHYvZVhwNi84M1B6Ly9HeWNuL25aNmUvOERDd3Y5dmNIRC9RRUJBLzNCd2NmOTFkbmIvY25KeS81bWFtdi8xK3Z2LzhQWDIvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9EMTl2LzQrL3ovalk2Ty80R0JnZjl6YzNQL282U2wvOURTMHYrYW1wci9wcWVvLzdtN3UvK3VyNi8vbnArZi82dXVyLy9pNStmLzYrL3cvNXlkbmYrb3Fxdi80K2pvLzdhNXV2L282K3ovM2VEaC82YXBxZitjbnA3L3M3UzAvN2k2dS8rZW41Ly9wYWVuLzgvUjB2K2NuWjMvY25KeS8zNStmditjblozLy9QLy8vKzcwOWYveDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLysvMDlmLzcvLy8vdXI2Ly8zMTlmZitNalkzL0lTSWkvNlNscGYraG9xTC9ySyt2Lzk3aDR2K3VyNi8vcTZ5cy8vYjYrdi81L1AzLy8vLy8vNzdBd2Y4V0ZoZi9BZ0lDLzlmWTJQLy8vLy8vOGZiMy8vVDUrdi8vLy8vLzd2UHovNkdqby8rMnQ3Zi8zT0RoLzZhb3FmK2pwS1QvbTV5ZC94c2JHLytobzZQL2NIQncvOUhWMXYvMy9mNy84UFgyLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3Y5UFgvLy8vLy8zWjNkLytjblozL2RIWjIveG9hR3YvZDMrRC9xNjJ0LzhIRXhQKyt3TUgvbzZXbC8vZjcrLy93OWZiLy8vLy8vOGZLeXY4VUZCVC9BQUFBL3dBQUFQOWJYRnovNnUvdy8rM3k4Ly90OHZQLzdmTHovL1Q1K3YvdjlQVC9tWnViLzhiSXlQKzR1cnIvdHJpNC85RFQxUDhFQkFUL2xwaVkvNE9EZy8rUGtaTC8vLy8vLys3ejlQL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOHZmNC8vRDA5ZitFaElUL2c0U0UvOExGeGY5SVNFai93TUxDLzhMRXhQK2ZvS0QvblorZi8rWHA2di8wK2ZyLzgvajQvNUdUbFA4TkRRMy9BQUFBL3dNREEvOENBZ0wvQUFBQS83YTR1UC8vLy8vLytmdjcvL0gzK1AvdjlQWC8rUDMrLzluYzNmK1ptcHIvb3FPai84ck16Zit3czdQL1NrdEwvODdSMHY5eGNYTC9rNVdWLy9iNy9QL3c5ZmIvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vRDE5di8xK3Z2L2pZNk8vNFNFaFArOXY3Ly92Y0RBLzZXbnFQK3hzN1AvbnArZy84REN3di81L3YvLzdmTHovL1g2Ky8rS2pJei9CUVVGL3dBQkFmOEFBQUQvQWdJQy93QUFBUDlOVFU3L201MmQvNit5c3YvdzlmYi84ZmIzLys3ejlQLzUvZjcvczdXMS82R2lvdit3c2JML3BxaW8vOFBGeGYrM3Vibi9lM3Q3LzVxY25mLzYvLy8vNy9UMS8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly92OVBYLy9QLy8vN2k3dS85b2FHai9jSEJ3LzVhV2wvK0xqSXoveHNqSS81ZVltUC9UMTlqLzl2ejkvL0QxOXYvdTgvVC8vLy8vLzNaM2QvOEFBQUQvQXdRRS93QUFBUDhBQUFEL0FRRUIvd0FBQVA4WUdCai80T1RsLy9UNSt2L3Y4L1QvK1A3Ly84UEd4LytlbjUvL3ZzREEvNDZQai8rUGtKRC9jM1IwLzJabVp2L0x6OC8vK2Y3Ly8rLzA5Zi94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0QxOXYveDlmYi9WRlJVLzRTRWhmL0d4OGoveXN6TS82NndzUDlwYVduL3VMdTcvL2Y4L2YvdzlmYi83dlAwLy9yLy8vKzl2Ny8vQUFBQS93RUJBZjhBQUFEL0FBQUEvd01EQS84RUJBVC9BUUVCLzhiSHgvLzkvLy8vN2ZMei8vYjcvUCttcUtuL2EyeHMvN2EzdVAvS3pNei94Y2JILzNKeWN2OW5aMmovKy83Ly8rN3o5UC94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0QxOXYvMisvdi8vLy8vLzJWbVp2OGxKU1gvajVDUS82cXJxLytnb3FML2xaYVcvK250N3YveitQbi84ZmIzLys3ejlQLy8vLy8vZ29TRS93QUFBUDhDQWdML0FBQUEvd0FBQVA4QUFBRC9BZ0lDL3dBQUFQOWdZV0wvOHZmNC8vRDE5di8xKy96LzNOL2YvNUdTa3YraG82UC9xYXFyLzRPRGhQOGRIUjMvZ29PRC8vLy8vLy96K1BuLzhQWDIvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0QxOXYvMCtmci94c25KLzZDaG92K1dscGYvWjJkbi95d3JLLytHaG9iL3BxZW8vNk9rcFAvNC9mNy83L1QxLysvMDlmLzQvZjcvME5QVS93d01EUDhBQUFEL0FRRUIvd0FBQVA4QUFBRC9BQUFBL3dJQ0F2OEFBQUQvTURFeC8vSDE5di94OXZmLzhQWDIvL1AzK1ArWm1wci9xNnVyLzNkM2QvOGxKU1gvZFhaMi81T1VsUCtscHFiL3p0TFQvL1g3L1AvdzlmYi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8vdzlmYi85ZnI3LzlIVjF2KzF0N2YvdXIyKy80bUtpLzlsWm1iL2UzdDcvOUxWMWYrcnJhNy85L3o5Ly9EMTl2L3Q4dlAvLy8vLy80ZUppZjhBQUFEL0JBUUUvd0FBQVA4QUFBRC9BQUFBL3dBQUFQOENBZ0wvQUFBQS81NmZuLy8vLy8vLzdmTHovL0gyOS8vdzlQWC9wNm1wLzlMVTFmOXVibTcvYVdwcS81Q1JrZis5d01EL3M3VzIvOXZmNFAvMCt2di84UFgyLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9EMTl2LzIrdnYvLy8vLy85emUzdit4czdQL29hS2kvNHlOanYvUTB0UC96TTNPLzk3aTQvLzErdnYvN2ZMei8vLy8vLzltWjJmL0FBQUEvd01EQS84QUFBRC9BQUFBL3dBQUFQOEFBQUQvQXdNRC93QUFBUCtUbFpiLy8vLy8vKzN5OC8vMy9QMy8xTmpaLzlIVDAvL0Z4c2IvaUltSi82YW5xUCt3c3JMLzV1Zm4vLy8vLy8vMStQbi84UFgyLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9EMTl2L3orUG4vN2ZIeS85WFoyditnb3FQL3NiT3ovNDJQai8rZW41Ly91N3k5LzhqS3l2L1AwZEwvOS8zKy8reng4di8vLy8vL1oyaG8vd0FBQVA4REF3UC9BQUFBL3dBQUFQOEFBQUQvQVFFQi93QUFBUDhIQmdiL3pkSFIvL3IvLy8vdDh2UC8rUHo5LzhYR3gvL0t6czcvdExhMi82Q2hvditNalk3L3RyaTQvNTZnb2YvZTR1UC83Zkx6Ly9QNCtmL3g5ZmIvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMTl2L3orUG4vNk8zdC81dWNuZitHaG9iL2k0dU0vNHlOamYrQ2hJVC91NzIrLzQyT2ovL0F3Y0gvbUpxYi8vLy8vLy9xNy9ELy8vLy8vNW1iblA4QUFBRC9CQVFFL3dBQUFQOEFBQUQvQUFBQS93RUJBZjhBQUFEL0R3OFAvNnF0cmYvMCtmci83L1AwLy9iNy9QOTJkM2YveTh6Ti8zMStmdi9MenM3L2EyeHQvNXllbi85L2dJRC9qWTZPLzZDaW92L3Y5UFgvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOHZmNC8rdnY4UC9zOGZML3p0SFMvNHVMaS8rL3djSC9tNXlkLzQrUGtQL0Z4OGYvZTN4OC8ycHFhdi90OGZILzgvajUvL0QxOXYvdDhmTC9ORFUxL3dBQUFQOEZCUVgvQXdNRC93TURBLzhEQXdQL0F3TUQvd0FBQVA4d01ERC83Zkh5Ly9uKy8vL08wZEwvWjJoby81Q1Nrdis5dnIvL2k0eU4vNlNtcHYrNHVyci9qSTJOLzluYzNmL3E3L0QvN1BIeS8vTDMrUC94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly95OS9qLzgvajUvL2Y4L2YvSXk4di9xYXFxLzdlNXV2KzV1N3ovcUtxcS8zNStmdittcDZmL3JhK3YvKzd6OVAveitQbi85L3o5LzlIVDAvOGVIaDcvQUFBQS93RUJBZjhBQUFEL0FBQUEvd0lDQXY5UlVsTC8wOWZZLy8vLy8vL1UxOWovcDZpby82MnZyLzkvZjMvL3I3Q3cvN2k3dS8rM3Vibi9wcWlvLzlEVTFmLzQvZjcvOHZmNC8vTDMrUC94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8vdjlQWC8rdi8vLzgvUzAvOXdjSEQvbzZXbC81NmdvUCtpcEtULzNOL2YvN08xdGYrbnFhbi82ZTN0Ly9iOC9mLzYvZjcvNGVUbC80Q0NndjlCUWtML1FrTkQvNUdUbFAvQXhNWC8rdno4Ly8zLy8vL1IxZGIvbXB1Yi84dk96di9mNHVML201eWMvNlducC8rWW1abi9kbloyLzk3aTQvLzQvZjcvNy9UMS8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3U4dlAvcjdHeC82MnZyLys1dTd2L2MzUjAvMVpYVi8vaDVlWC92Yi9BLzUyZm4vL0t6YzMvNnUvdy8vbjkvZi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vZi8vLytMbTUvKzB0cmIvbVpxYS85YmEydi9ZM04zL1NVbEovNENBZ1ArL3djSC9wYWVuLzdxOHZmL3k5L2ovOFBYMi8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vaisvLy9pNXVmL2JtNXYvNGVJaVA5QVFFRC9hR2xwLzh2UDBQL1YyZHIvcXF1cy82ZXBxZiswdHJmL3djVEUvOHZPei8vSnpNMy92TC9BLzZ5dXJ2K2hvcUwvdExhMi8rYnE2Ly9FeDhqL1ZsWlcvMHhNVFArRWhJWC9kM2QzLyt6eDh2LzMvUDMvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly92OVBYLzlmcjcvNmVwcWYrVmxwYi9vNlNrLzQ2UGovOTRlWG4vbko2Zi85SFUxZi9HeWNuL3hNYkcvNy9Cd2YrNXVici91THE2LzhQRnhmL0h5Y24vejlMUy85VFkyUCtQa1pIL2ZIeDgvNDJPanYrcHE2di9qbzZPLzdTMnQvLzMvUDMvN3ZQMC8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzcvVDEvL3IvLy8rMnVMai9uNkNnLy9iNSt2K2dvcUwvdDdpNC81T1RrLytabXByL25KeWQvMk5rWlArbnFxci90YmUzLzdXM3QvK2hvNlAvWVdGaS82V21wditPam83L25KMmQvN0t6cy8rcXJLei85dnI2LzVPVGsvL0p6TXovK2Y3Ly8rLzA5Zi94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLytQbjZQLzkvLy8vZ29PRS8wZEhSLytJaVluL3BLV2wveDRlSHY4QUFBRC9CQVFFLzZhcHF2K0ppNHYvQUFBQS93QUFBUDh3TUREL3JLMnQvMzErZnY5RFJFUC9uWjJkLy92Ly8vL2s2T24vOHZmNC8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3orUG4vOXZ2OC84elAwUCtGaG9iL3FxeXMvMmhwYWY4QUFBRC9RVUZCLzA1T1R2L0N4TVgvdDdtNS8wSkNRdjg4UER6L0FBQUEvMytBZ1AranBhWC9pSW1KLzlqYzNmLzErdnYvOC9qNS8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vRDE5di8zKy96LytmMzkvL2Y4L2YvUzF0Yi9Ta3BLLzJWbFpmOC9Qei8vblo2ZS80bUtpdjlIUjBmL1hWMWQvMVpZV1AvZjQrVC85L3o5Ly9yKy92LzErdnYvOFBYMi8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhQWDIvKy8wOWYvdzlmYi8xOXJiLzdlNnV2OWNYRnovVDA5UC96YzRPUDgzTnpmL1VGQlEvMkppWXYvRHhjYi8ydDdlLy9MMytQL3U4L1QvOFBYMi8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8vdjlQWC8rZjcvLzZPa3BmK0xpNHYvYm01dS8zRnhjZjlqWTJQL2FtcHIvMnRyYS85MmQzZi9pSWlKLzdTMnQvLzYvLy8vNy9UMS8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvLzIrL3ovN2ZIeS84L1QxUC95OWZiL2twT1QvNnFzclAvczhQSC8wdGJYLysvMDlmLzIrL3ovOFBYMi8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOFBYMi8vTDMrUC8yKy96LysvLy8vOG5NemYvVDF0Yi8rLy8vLy9iNy9QL3g5L2ovOFBYMi8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhQWDIvKy8wOWYvMStmci85UG41LysvMDlmL3c5ZmIvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84UFgyLy9EMTl2L3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS84QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNnQUFBQXdBQUFBWUFBQUFBRUFJQUFBQUFBQUFDUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRHg5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvNy9UMS8vTDMrUC94OXZmLzcvVDEvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vRDE5di94OXZmLytmMysvKzd5OC8vdjlQWC8rUDMrLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhQWDIvL1A0K2YvcjcvRC8xTmpaLzhIRXhQL0V4OGovMWRqWi8rN3o5UC95OS9qLzhQWDIvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8vdzlmYi85dnY4Ly9EMTl2K25xYW4vZEhWMS81dWNuZitVbFpYL2QzZDMvN0N5c3YvMCtmci85UG42Ly9EMTl2L3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLysvMDlmL3orUG4vNWVycS82dXNyUCtobzZUL3pkSFIvMHhNVFA5V1ZsYi8wOWZYLzV1Y25QK3l0TFQvNk8zdS8vTDMrUC92OVBYLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOFBYMi8vYjYrLy8wK1BuL3FxeXMvNlNtcHYrMHRyYi82dXJxLzJscWF2OTNlSGovN2U3dS82eXVyditscHFiL3JyQ3gvL245L2YvMCtQbi84UGIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOFBYMi8vUDQrZi95OS9qLzlmcjcvOWpiM1A4b0tTbi9YRjFkLzd1OHZQKzR1N3YvZTN4OC8zNS9mLzkzZUhqL2c0V0YvN203dlArNXVyci9Ta3RML3pZM04vL2s2T24vOC9qNS8vUDQrZi96K1BuLzhQWDIvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzgvajUvK3Z2OFAvVzJ0di9uNkNnLzZLa3BQOWVYMS8vU1VsSi8zRnljdjk2ZW5yL1kyTmovNzNBd2YreHRMVC9YMTVlLzM1L2YvOXBhbXIvU2twSy8ySmpZLytwcXFyL25xQ2cvOTNpNC8vcTd1Ly85UG42Ly9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veitQbi93OGJHLzdHenMvL2Q0T0gvZVhsNS8xWlhWLyt5dExUL2lveU0vNjJ2ci8rZm9hSC9ucCtmLzMxK2Z2K0VoWVgvb3FLai82Q2hvZitzcnEvL2g0aUkvN1MydHY5SlNrci9pb3VMLzl2ZjMvK3VyNi8veWN6Ti8vVDUrLy93OWZiLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84UFgyLy9UNisvL2g1ZWIvZlgxOS80eU5qZjkrZjMvL1ZWWlcvNWVZbVArcnJhNy8wTlBULzVPVWxQK2JuSjMvcTYydC83VzJ0LytpcEtUL3A2bXAvNWlabXYrYW01di96OUxTLzZ1dHJmK1JrcEwvVlZaVy80U0ZoditJaVluL2c0T0QvK250N3YveitQbi84ZlgyLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOFBYMi8vZjkvdi9XMnR2L2dZR0IvMmRuWi8rZW41Ly9zN1MxLzdDeXN2KzJ0N2YvcXF1ci83ZTd1Ly96OS9mL3VMcTYvMzErZi8vZTR1TC8ydDdmLytmcjdQKzN1cnIvcWFxcS83aTZ1dit1c0xEL3RyZTQvNWFYbC85b2FHai9oWVdGLytEazVmLzErdnYvOFBYMi8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzcvVDEvL3YvLy8rUWtaTC9qNUNRL3pFeE1mK3p0YlgvcTYydC84N1Iwdityckt6LzUrenMvLy8vLy8vZDMrRC9KQ1VsL3dBQUFQKzV2THovL2YvLy8rM3g4di8vLy8vLzRlYm4vNm1xcS8vTzBkTC9xcXlzLzZxc3JQOHdNVEgva3BPVC81bWJuUC8rLy8vLzd2UDAvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmY0Ly9IMTl2OThmSHovcWF1cy8xOWdZUC9FeHNiL3RMVzEvNkNob2YvZDRlTC8vdi8vLzdhNXVmOGZIeC8vQUFBQS93QUFBUDhrSkNYLzkvZjMvLy8vLy8vdDh2UC8rZi8vLzliWjJ2K2NuWjcvdTd5OS83bTh2UDlqWldYL3BxaW8vNEtEZy8vMy9QMy84UFgyLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vVDUrditNalk3L2xKV1YvN0d6cy8raW82VC9xcXlzLzd5L3YvLzMvUDMvOXZ2OC83UzN1UDhPRGc3L0FBQUEvd0VCQWY4REF3UC9XbHRiLzQyUGovL3Q4ZkwvOFBYMi8vZjgvZiswdHJiL3JLMnQvNkdpb3YrMHRyYi9qSXlOLzVXWGwvLzQvZjcvOFBYMi8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzcvVDEvL3YvLy8rNXZMMy9YMTVlLzZTbHBmKzR1Ym4vbVp1Yi82NnhzZi81L3YvLzYvRHgvLy8vLy85L2dJRC9BQUFBL3dRRUJQOEJBUUgvQUFBQS93b0tDdi9iM2QzLzl2djgvL1g3L1AraXBhWC9ucUNnLzdlNXVmK2dvYUgvWFYxZC84akx6UC81Ly8vLzcvVDEvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi83L1QxLy9uKy8vL2U0ZUgvUERzNy80dU1qUCs1dXJ2L2lvdUwvOGJKeXYvMy9mNy83UEh5Ly83Ly8vOXdjbkwvQUFBQS93TURBLzhBQUFEL0JnWUcvd0FBQVArTGpZMy8rLy8vLy9YNisvKzd2YjcvakkyTi83cTd2UDk5Zm43L1JVVkYvKzN4OGYvMSsvei84UFgyLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3c5ZmIvOWZyOC85SFUxZitmb0tEL2hJV0YvelkxTmYrTWpJei9wcWlvLyticjYvL3k5L2ovK1A3Ly84elAwUDhIQndmL0FBQUEvd0VCQWY4QUFBRC9Bd01EL3dBQUFQOXNiVzcvL3YvLy8vUDQrZi9lNHVQL3BxZW4vNEdCZ2Y4Mk5UWC9pNHlNLzZDaG9mL1ozZDMvOWZyNy8vRDE5di94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzh2ZjQvK251Ny8vbDZlci91NzI5LzRhSGgvK1dtSmovemREUi85emc0Zi94OXZqLy8vLy8vNUtVbGY4QUFBRC9Bd01EL3dBQUFQOEFBQUQvQWdJQy93QUFBUCt3c3JMLy9mLy8vL1A0K2YvWDI5di96ZERRLzQyT2p2K0xqSXovd01MQy8rYnE2Ly9yOFBILzh2ZjQvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLysvMDlmL1QxOWovc2JPei81eWRuditrcHFmL3g4akkvOVBWMWYveDl2Zi8vLy8vLzRlSmlmOEFBQUQvQkFRRS93QUFBUDhCQVFIL0FBQUEvd1lGQmYvTzBkTC8rUDMrLy9MMytQL0x6czcvd3NURS82S2pwUCtlbjUvL3M3VzEvOWpjM2YvdjlQWC84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOHZmNC83L0J3ditIaDRmL2s1U1UvNHVOamYrZm9LSC9ySzZ2LzVhWW1mLzErdnYvK3YvLy83aTd2UDhBQUFEL0F3UUUvd01EQS84REF3UC9Bd01FL3dFQkFmK1htcHYvL1AvLy8rZnM3ZitLaTR6L3JhK3cvNTJmb1ArSWlvdi9rcE9VLzRxTGkvL0V4OGovOVBuNi8vRDE5di94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzcvVDEvL2I3L1AvWjNkNy9wNmlvLzdTMnQvK3ZzYkgvbVpxYS8zWjNkLy9WMmRuLzkvejkvL3IvLy85bFptZi9BQUFBL3dJQ0EvOEJBUUgvQUFBQS93UURBLytPa1pILy8vLy8vNzdCd2Y5OWZYMy9vS0doLzYydnIvKzJ1TGovcHFlbi8rSGw1Zi8xK3Z2LzhQWDIvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9EMTl2LzIrL3ovNHVibi80dU1qUCttcUtqL21weWMvOGZKeWYrenRiYi95OC9QLy9uKy8vLzIrZm4valpDUS96WTJOdjlBUUVEL2c0V0YvOWJaMnYvLy8vLy90N201LzcvQnd2L0l5OHYvbkoyZC82R2pvLytRa1pILzZlM3UvL1g2Ky8vdzlmYi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly93OWZiLzlmcjcvOGpMelArenRiWC9qWTZPLzFwYVcvL0F3OFQvdTc2Ky83ZTZ1di9iNE9ILyt2MysvL2o4L2YvMysvei8rZjcrLzluZDN2K3JyYTMveU12TC83eS93UDlWVlZYL2xwZVgvN0swdGYvUDB0UC85dnY4LysvMDlmL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi83L1QxLy96Ly8vL1cydHYvZzRTRS8zUjBkUDkyZG5iL3M3VzIvOExGeGYrMnVMai92TDYrLzcyL3YvKzh2Ny8vdXJ5OC83YTR1UC9MenM3L3NiUzAvMjF1YnY5NWVuci9oWVdHLytIbDV2LzYvLy8vNy9UMS8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vRDE5di92OVBUL29hS2kvOWZhMnYrbXFLai9rcE9ULzZpcHF2K2NuWjMvaTQyTi83UzJ0dit6dGJYL2lJcUsvNlNscGYraW82UC9rcEtULzY2d3NQL1QxdGIvcGFhbS8vVDUrdi92OVBYLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDkvai82ZTN1Ly9uKy8vOS9nWUgvYW1wcS80eU1qUDhQRHcvL0FnRUIvNVdYbC8rQmc0UC9BQUFBL3hvWkdmK1RrNVAvWVdKaS81R1Nrdi82Ly8vLzZlN3YvL0wzK1AveDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOHZmNC8vVDUrdi9lNHVQL3o5UFUvNTZob2Y4cUtpci9UMDlQLzZLam8vK1dsNWYvUzB0TC95b3FLdit1c2JIL3pkSFIvK0xuNlAvMCtmci84dmY0Ly9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0QxOXYvMCtmci8rdi8vLytUbzZQK1FrcEwvVEV4TS8waElTUDlHUmtiL1QwNU8vNXVjbmYvcDd1Ly8rLy8vLy9QNCtmL3c5ZmIvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3Y5UFgvOWZyNy84Zkx5LythbTV6L2hvZUgvM0J4Y2Y5MWRuYi9oWWFILzU2Zm9QL1EwOVQvOWZyNy8rLzA5Zi94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhQWDIvL2Y3L1AveTl2Zi8rLy8vLzhIRXhQL016OC8vK2Y3Ly8vUDQrZi8yK3Z2LzhQWDIvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9EMTl2L3c5ZmIvOGZiMy8vRDE5di93OWZiLzhmYjMvL0QxOXYvdzlmYi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvOEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBb0FBQUFJQUFBQUVBQUFBQUJBQ0FBQUFBQUFBQVFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUE4ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8vdzlmYi84UFgyLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOFBYMi8vUDQrZi96K1BuLzhQWDIvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhQWDIvL0gyOS8vMisvei82TzN0LytudTcvLzIrL3YvOGZiMy8vRDE5di94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLysvMDlmL3c5ZmIvOC9qNS82NnhzZitZbVpuL2xwaVkvN1MzdC8vMSt2di84UFgyLy9EMTl2L3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vRDE5di93OWZiLzlmbjYvL2o2K3Yrd3NyUC92OExDLzNwN2UvK0RoWVgvdkw2Ly83VzN0Ly82L1B6LzlQbjUvL0QxOXYvdzlmYi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi85UG42Ly9MMytQL202ZW4vYUdwcS81ZVltZisxdUxqL2hvZUgvNG1LaXYrM3Vici9rWkdTLzIxdWIvL3I3L0QvOGZiMy8vVDUrdi94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vRDA5Zi9qNStqL3lzM04vNGVJaVA5Z1lHRC9lbnQ4LzM1L2YvK1FrcEwvanBDUS80S0NndjkyZG5mL1ltSmkvNHFMalAvTzBOSC80K2ZvLy9EMTl2L3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvKy8wOWYvNC9mNy96Yy9QLzVLU2t2K0tpNHYvYjI5dy83Mi92LytrcGFiL3BxZW8vNnl0cmYrZW41Ly9vcU9rLzZpcXF2KzZ2THovYkd4cy80K1FrUCtSa1pILzA5YlgvL2Y5L3YvdzlmYi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvNy9UMS8vZjkvdit4dExUL1dscGEvNW1hbXYrOHZyNy9zck96LzlqYzNmL2IzOS8vWW1Oai85bmQzdi9tNnV2L3ljek4vN08xdHYrOHZyNy9sSldWLzFwYVd2KzZ2TDMvK1AzKy8rLzA5Zi94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veitQbi82ZTd2LzVPVWxmOXljM1Avc0xHeS83R3pzLy9lNHVQLzVPbnEvem83Ty84QUFBRC9oSWFHLy8vLy8vLzQvZjMvMU5qWi83TzF0ZitycmE3L2NYTnovNWVZbWYvdTgvVC84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly96K1BuL2xKV1cvNktqby8rc3JhMy9yN0d5Ly9yLy8vL1UyTm4vSGg0ZS93QUFBUDhTRWhML1lXSmkvK3Z2OFAvMSt2di9xNjJ0LzY2dnNQK2ZvS0QvbUpxYS8vYjcvUC93OWZiLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi83dlAwLy83Ly8vK2RuNS8vYlcxdC82cXNyUCt0c0xELzgvajUvLy8vLy85VlZsYi9BQUFBL3dVRkJmOEFBQUQvdHJtNi8vLy8vLytscDZmL3E2eXQvMlptWi8rcHJLei8vZi8vLysvejlQL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vRDE5di96K1BuLzVPanAvN1MydHY5alkyUC9rWktTLzliWjJmLysvLy8veDh2TS93TURBLzhBQUFEL0JBUUUvd0FBQVArZ282VC8vLy8vLzlMVTFmK0tpNHYvWldWbC83bTd1Ly9uNit6LzgvajUvL0QxOXYveDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3M4ZkwvME5QVS81MmVuditxckszLzF0cmEvLy8vLy8rcHJLei9BQUFBL3dZR0J2OEJBUUgvQ1FrSi85TFYxZi80L3YvLzB0YlcvNmVwcWYrZm9LSC8wOWJYLyszeTgvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly93OWZiLzlQbjYvOXZmNFArYm5Kei9tWnFiLzZlcHFmK1VscGIvOGZYMi85bmQzdjhQRHcvL0FBQUEvd0lDQXY4QUFBRC9zN2UzLyt2djhQK1BrSkQvcWF1ci81ZVltZitlbjZELzMrUGsvL1A0K2YvdzlmYi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3c5ZmIvOWZ2OC8reng4ditycmEzL242R2gvNkdpb3YvR3ljbi85dnY3LzdTM3VQOHdNVEgvT0RrNS80ZUtpdi9XMmRyL3hzbkovNlducC8rZW9LRC9yN0d4LysvMDlmLzErdnYvOFBYMi8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8vdjlQWC85ZnI3LytMbTUvK3JyYTMvYlc1dS82ZXBxZi9BdzhQLzQrZm8vK250N2YvbzdPei81T2pwLzhiSXlmK2xxS2ovYlc1dS83Q3lzdi9sNmVyLzlQcjcvKy8wOWYveDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly91OC9ULy9QLy8vOURUMVArbHA2Zi9rWktTLzZpcHF2K1VsWmIvcGFhbi82S2twUCtYbUpuL3A2aXAvNUtUay8rbXFLai8xZG5hLy9yLy8vL3Y5UFgvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3c5ZmIvNy9UMS8vVDUrZitnb2FML2c0U0UveEVSRWY5K2dJRC9jbk56L3hZVkZmK0doNGYvcGFlbi8vYjcvUC91OC9ULzhQWDIvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84UFgyLy9mOC9mL1gyOXovWVdGaC8xcGFXdjlYVjFmL1ptZG4vOTdqNC8vMisvei84UFgyLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly93OWZiLzgvajUvK1hwNnYrNXZMei9pb3lNLzQyUGovKzh2Ny8vNk96dC8vTDMrUC93OWZiLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3c5ZmIvOC9qNS8vdi8vLy92OC9QLzhmVDEvL3IvLy8veTkvai84ZlgyLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDlmYi83L1AwLy9IMjkvL3g5dmYvNy9UMS8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBS0FBQUFCQUFBQUFnQUFBQUFRQWdBQUFBQUFBQUJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFQSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84UFgyLy9EMTl2L3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly93OWZiLzhQWDIvL2Y4L2YvMy9QMy84UFgyLy9EMTl2L3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3Y5UFgvOC9qNS8vajgvUC9Jek16L3lzM08vL244L2Yvejkvai83L1QxLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8vdzlmYi8rUDMrLyt2dzhmK3RzTEQvakkyTi80K1FrUCt2c3JMLzdmTHovL2Y4L2YvdzlmYi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly93OWZiLzlQbjYvOC9TMC8rU2xKVC9ob2VJLzZpcHF2K2VuNkQvZ29PRC81V1dsLy9SMU5ULzlmcjcvL0QxOXYveDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDE5ditLakl6L29LR2gvOXZlMy85Y1hsNy93TVRFLytqczdmK1ptNXYvam8rUC8vTDMrUC94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9MMytQL3Y5UFgva3BPVS83Q3lzdi9yOFBIL0doc2IveUFnSVAvZzVPWC9yN0d4LzVTV2x2L3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDkvai84UFgyLzVlWW1QKzh2ci8vMTl6ZC93TURBLzhBQUFELzB0YlgvN2k2dS8rWm01di84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzh2ZjQvKzd6OVArNXZMei9ucUNnLzl2ZjRQOUhTVW4vT3p3OC84M1Iwditmb2FIL3U3NisvKy8wOWYveDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vRDE5di96K1BuLzh2ZjQvNmFvcWYrZW9LRC93c1hGLzcvQnd2K2RuNS8vcXF5cy8vUDQrZi95OS9qLzhQWDIvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOFBYMi8vSDI5Ly8xK3ZyL3NyVzEvMU5UVS85VVZWWC90N202Ly9YNisvL3g5dmYvOFBYMi8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3c5ZmIvOHZmNC8vZjgvUC9HeXNyL3lNek0vL2o4L2YveDl2Zi84UFgyLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3c5ZmIvK2YzKy8vajkvdi93OWZiLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLysvMDlmL3Y5UFgvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS84QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQSJ9
DGE_SETUP_PAYLOAD
"$python_bin" - "$setup_directory" <<'PY'
import base64, json, sys
from pathlib import Path
root = Path(sys.argv[1])
for name, content in json.loads(base64.b64decode((root / 'payload').read_text())).items():
    path = root / name
    if name.endswith(('.png', '.ico')):
        path.write_bytes(base64.b64decode(content))
    else:
        path.write_text(content)
PY
linux_guest=0
if [ "$os" = Linux ] && { [ -n "${DGE_GUEST_INSTALL:-}" ] || [ -d /mnt/lima-cidata ]; }; then
  linux_guest=1
fi
if [ "$linux_guest" = 1 ] && [ -f "$setup_directory/install.py" ]; then
  if [ ! -f "$setup_directory/invitation.json" ]; then
    echo 'This Linux VM is missing the worker invitation from the Mac or Windows app. Open Dorian Gray Worker on the host and try again.'
    exit 1
  fi
  "$python_bin" "$setup_directory/install.py"
elif [ -f "$setup_directory/host_gui.py" ]; then
  if [ "$os" = Darwin ]; then
    "$python_bin" "$setup_directory/host_gui.py" "$0"
  elif linux_headless; then
    "$python_bin" "$setup_directory/host_gui.py" "$0"
  elif [ -n "${gui_user:-}" ] && [ "$gui_user" != root ]; then
    sudo -u "$gui_user" -E env DISPLAY="${DISPLAY:-}" WAYLAND_DISPLAY="${WAYLAND_DISPLAY:-}" \
      XAUTHORITY="${XAUTHORITY:-}" \
      DGE_ENROLL_NAME="${DGE_ENROLL_NAME:-}" DGE_ENROLL_EMAIL="${DGE_ENROLL_EMAIL:-}" \
      DGE_ENROLL_PHONE="${DGE_ENROLL_PHONE:-}" DGE_ENROLL_NOTE="${DGE_ENROLL_NOTE:-}" \
      DGE_ENROLL_HEADLESS="${DGE_ENROLL_HEADLESS:-}" \
      "$python_bin" "$setup_directory/host_gui.py" "$0"
  else
    "$python_bin" "$setup_directory/host_gui.py" "$0"
  fi
elif [ "$os" = Darwin ]; then
  "$python_bin" "$setup_directory/install_macos.py" "$0"
else
  "$python_bin" "$setup_directory/install.py"
fi
