@nsshunt/stsoauth2plugin 0.1.12 → 0.1.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -456,7 +456,7 @@ var common = setup;
456
456
  } catch (error2) {
457
457
  }
458
458
  if (!r2 && typeof process !== "undefined" && "env" in process) {
459
- r2 = {}.DEBUG;
459
+ r2 = { "DEPLOYMENT_BASEPATH": "/opt/runner", "DOTNET_NOLOGO": "1", "USER": "runner", "npm_config_always_auth": "", "npm_config_user_agent": "npm/8.11.0 node/v18.3.0 linux x64 workspaces/false ci/github-actions", "CI": "true", "GITHUB_ENV": "/home/runner/work/_temp/_runner_file_commands/set_env_5c4f6f18-1665-4638-b420-bcd02f665810", "PIPX_HOME": "/opt/pipx", "npm_node_execpath": "/opt/hostedtoolcache/node/18.3.0/x64/bin/node", "JAVA_HOME_8_X64": "/usr/lib/jvm/temurin-8-jdk-amd64", "NODE_AUTH_TOKEN": "XXXXX-XXXXX-XXXXX-XXXXX", "SHLVL": "1", "npm_config_noproxy": "", "HOME": "/home/runner", "RUNNER_TEMP": "/home/runner/work/_temp", "GITHUB_EVENT_PATH": "/home/runner/work/_temp/_github_workflow/event.json", "npm_package_json": "/home/runner/work/stsoauth2plugin/stsoauth2plugin/package.json", "JAVA_HOME_11_X64": "/usr/lib/jvm/temurin-11-jdk-amd64", "PIPX_BIN_DIR": "/opt/pipx_bin", "GRAALVM_11_ROOT": "/usr/local/graalvm/graalvm-ce-java11-22.1.0", "GITHUB_REPOSITORY_OWNER": "nsshunt", "GRADLE_HOME": "/usr/share/gradle-7.4.2", "HOMEBREW_PREFIX": "/home/linuxbrew/.linuxbrew", "ANDROID_NDK_LATEST_HOME": "/usr/local/lib/android/sdk/ndk/24.0.8215888", "GITHUB_RETENTION_DAYS": "90", "POWERSHELL_DISTRIBUTION_CHANNEL": "GitHub-Actions-ubuntu20", "AZURE_EXTENSION_DIR": "/opt/az/azcliextensions", "GITHUB_HEAD_REF": "", "npm_config_local_prefix": "/home/runner/work/stsoauth2plugin/stsoauth2plugin", "GITHUB_GRAPHQL_URL": "https://api.github.com/graphql", "COLOR": "0", "NVM_DIR": "/home/runner/.nvm", "npm_config_metrics_registry": "https://registry.npmjs.org/", "DOTNET_SKIP_FIRST_TIME_EXPERIENCE": "1", "JAVA_HOME_17_X64": "/usr/lib/jvm/temurin-17-jdk-amd64", "ImageVersion": "20220605.1", "RUNNER_OS": "Linux", "GITHUB_API_URL": "https://api.github.com", "SWIFT_PATH": "/usr/share/swift/usr/bin", "RUNNER_USER": "runner", "CHROMEWEBDRIVER": "/usr/local/share/chrome_driver", "JOURNAL_STREAM": "8:21834", "GITHUB_WORKFLOW": "Node.js Package", "_": "/opt/hostedtoolcache/node/18.3.0/x64/bin/npm", "npm_config_prefix": "/opt/hostedtoolcache/node/18.3.0/x64", "GITHUB_RUN_ID": "2483506035", "GOROOT_1_16_X64": "/opt/hostedtoolcache/go/1.16.15/x64", "npm_config_cache": "/home/runner/.npm", "GOROOT_1_17_X64": "/opt/hostedtoolcache/go/1.17.11/x64", "GITHUB_REF_TYPE": "branch", "BOOTSTRAP_HASKELL_NONINTERACTIVE": "1", "GITHUB_BASE_REF": "", "ImageOS": "ubuntu20", "PERFLOG_LOCATION_SETTING": "RUNNER_PERFLOG", "GOROOT_1_18_X64": "/opt/hostedtoolcache/go/1.18.3/x64", "GITHUB_ACTION_REPOSITORY": "", "npm_config_node_gyp": "/opt/hostedtoolcache/node/18.3.0/x64/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js", "PATH": "/home/runner/work/stsoauth2plugin/stsoauth2plugin/node_modules/.bin:/home/runner/work/stsoauth2plugin/node_modules/.bin:/home/runner/work/node_modules/.bin:/home/runner/node_modules/.bin:/home/node_modules/.bin:/node_modules/.bin:/opt/hostedtoolcache/node/18.3.0/x64/lib/node_modules/npm/node_modules/@npmcli/run-script/lib/node-gyp-bin:/opt/hostedtoolcache/node/18.3.0/x64/bin:/home/linuxbrew/.linuxbrew/bin:/home/linuxbrew/.linuxbrew/sbin:/home/runner/.local/bin:/opt/pipx_bin:/home/runner/.cargo/bin:/home/runner/.config/composer/vendor/bin:/usr/local/.ghcup/bin:/home/runner/.dotnet/tools:/snap/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin", "ANT_HOME": "/usr/share/ant", "DOTNET_MULTILEVEL_LOOKUP": "0", "RUNNER_TRACKING_ID": "github_9e0a5c7a-978f-4fce-be9f-1597a45d3f8d", "INVOCATION_ID": "82315040f6cb4b1891b8755075dbe749", "HOMEBREW_CELLAR": "/home/linuxbrew/.linuxbrew/Cellar", "NPM_CONFIG_USERCONFIG": "/home/runner/work/_temp/.npmrc", "RUNNER_TOOL_CACHE": "/opt/hostedtoolcache", "NODE": "/opt/hostedtoolcache/node/18.3.0/x64/bin/node", "npm_package_name": "@nsshunt/stsoauth2plugin", "GITHUB_ACTION": "__run_2", "GITHUB_RUN_NUMBER": "24", "RUNNER_ARCH": "X64", "AGENT_TOOLSDIRECTORY": "/opt/hostedtoolcache", "LANG": "C.UTF-8", "VCPKG_INSTALLATION_ROOT": "/usr/local/share/vcpkg", "CONDA": "/usr/share/miniconda", "RUNNER_NAME": "Hosted Agent", "XDG_CONFIG_HOME": "/home/runner/.config", "GITHUB_REF_NAME": "main", "GITHUB_REPOSITORY": "nsshunt/stsoauth2plugin", "npm_lifecycle_script": "vite build", "ANDROID_NDK_ROOT": "/usr/local/lib/android/sdk/ndk-bundle", "GITHUB_ACTION_REF": "", "DEBIAN_FRONTEND": "noninteractive", "GITHUB_ACTIONS": "true", "npm_package_version": "0.1.13", "npm_lifecycle_event": "build", "GITHUB_REF_PROTECTED": "false", "GITHUB_WORKSPACE": "/home/runner/work/stsoauth2plugin/stsoauth2plugin", "ACCEPT_EULA": "Y", "GITHUB_JOB": "publish-npm", "RUNNER_PERFLOG": "/home/runner/perflog", "GITHUB_SHA": "f6598d18861c6084a30243c9d6a9d0200e1f9e96", "GITHUB_RUN_ATTEMPT": "1", "GITHUB_REF": "refs/heads/main", "GITHUB_ACTOR": "nsshunt", "ANDROID_SDK_ROOT": "/usr/local/lib/android/sdk", "LEIN_HOME": "/usr/local/lib/lein", "npm_config_globalconfig": "/opt/hostedtoolcache/node/18.3.0/x64/etc/npmrc", "npm_config_init_module": "/home/runner/.npm-init.js", "GITHUB_PATH": "/home/runner/work/_temp/_runner_file_commands/add_path_5c4f6f18-1665-4638-b420-bcd02f665810", "JAVA_HOME": "/usr/lib/jvm/temurin-11-jdk-amd64", "PWD": "/home/runner/work/stsoauth2plugin/stsoauth2plugin", "RUNNER_WORKSPACE": "/home/runner/work/stsoauth2plugin", "npm_execpath": "/opt/hostedtoolcache/node/18.3.0/x64/lib/node_modules/npm/bin/npm-cli.js", "HOMEBREW_CLEANUP_PERIODIC_FULL_DAYS": "3650", "GITHUB_EVENT_NAME": "push", "HOMEBREW_NO_AUTO_UPDATE": "1", "ANDROID_HOME": "/usr/local/lib/android/sdk", "GITHUB_SERVER_URL": "https://github.com", "GECKOWEBDRIVER": "/usr/local/share/gecko_driver", "LEIN_JAR": "/usr/local/lib/lein/self-installs/leiningen-2.9.8-standalone.jar", "npm_config_global_prefix": "/opt/hostedtoolcache/node/18.3.0/x64", "HOMEBREW_REPOSITORY": "/home/linuxbrew/.linuxbrew/Homebrew", "npm_command": "run-script", "SGX_AESM_ADDR": "1", "CHROME_BIN": "/usr/bin/google-chrome", "SELENIUM_JAR_PATH": "/usr/share/java/selenium-server.jar", "ANDROID_NDK_HOME": "/usr/local/lib/android/sdk/ndk-bundle", "GITHUB_STEP_SUMMARY": "/home/runner/work/_temp/_runner_file_commands/step_summary_5c4f6f18-1665-4638-b420-bcd02f665810", "INIT_CWD": "/home/runner/work/stsoauth2plugin/stsoauth2plugin", "EDITOR": "vi", "NODE_ENV": "production" }.DEBUG;
460
460
  }
461
461
  return r2;
462
462
  }
@@ -7019,7 +7019,7 @@ function remove(name, attributes) {
7019
7019
  set(name, "", __assign(__assign({}, attributes), { expires: -1 }));
7020
7020
  }
7021
7021
  var remove_1 = remove;
7022
- const debug$1 = Debug(`proc:${process.pid}:storage.ts`);
7022
+ const debug$1 = Debug(`proc:${0}:storage.ts`);
7023
7023
  var ClientStorageType = /* @__PURE__ */ ((ClientStorageType2) => {
7024
7024
  ClientStorageType2["LOCAL_STORAGE"] = "LocalStorage";
7025
7025
  ClientStorageType2["SESSION_STORAGE"] = "SessionStorage";
@@ -7201,7 +7201,7 @@ function o(e2, r2) {
7201
7201
  }
7202
7202
  }
7203
7203
  n.prototype = new Error(), n.prototype.name = "InvalidTokenError";
7204
- const encodedJs = "dmFyIGlkPU9iamVjdC5kZWZpbmVQcm9wZXJ0eSxjZD1PYmplY3QuZGVmaW5lUHJvcGVydGllczt2YXIgdWQ9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM7dmFyIFZvPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHM7dmFyIGxkPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksZmQ9T2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZTt2YXIgT3M9KGVlLGFlLGllKT0+YWUgaW4gZWU/aWQoZWUsYWUse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOmllfSk6ZWVbYWVdPWllLFE9KGVlLGFlKT0+e2Zvcih2YXIgaWUgaW4gYWV8fChhZT17fSkpbGQuY2FsbChhZSxpZSkmJk9zKGVlLGllLGFlW2llXSk7aWYoVm8pZm9yKHZhciBpZSBvZiBWbyhhZSkpZmQuY2FsbChhZSxpZSkmJk9zKGVlLGllLGFlW2llXSk7cmV0dXJuIGVlfSxsZT0oZWUsYWUpPT5jZChlZSx1ZChhZSkpO3ZhciBfcj0oZWUsYWUsaWUpPT4oT3MoZWUsdHlwZW9mIGFlIT0ic3ltYm9sIj9hZSsiIjphZSxpZSksaWUpLHpvPShlZSxhZSxpZSk9PntpZighYWUuaGFzKGVlKSl0aHJvdyBUeXBlRXJyb3IoIkNhbm5vdCAiK2llKX07dmFyIFY9KGVlLGFlLGllKT0+KHpvKGVlLGFlLCJyZWFkIGZyb20gcHJpdmF0ZSBmaWVsZCIpLGllP2llLmNhbGwoZWUpOmFlLmdldChlZSkpLFNlPShlZSxhZSxpZSk9PntpZihhZS5oYXMoZWUpKXRocm93IFR5cGVFcnJvcigiQ2Fubm90IGFkZCB0aGUgc2FtZSBwcml2YXRlIG1lbWJlciBtb3JlIHRoYW4gb25jZSIpO2FlIGluc3RhbmNlb2YgV2Vha1NldD9hZS5hZGQoZWUpOmFlLnNldChlZSxpZSl9LGNlPShlZSxhZSxpZSxjdCk9Pih6byhlZSxhZSwid3JpdGUgdG8gcHJpdmF0ZSBmaWVsZCIpLGN0P2N0LmNhbGwoZWUsaWUpOmFlLnNldChlZSxpZSksaWUpOyhmdW5jdGlvbigpe3ZhciBIdCxidCxGZSxPdCxBcix5bixIZSx2dCxOdCxLZSxLdCwkbix0dCxDcixJcixEcixjcixqcixrcixVcjsidXNlIHN0cmljdCI7dmFyIGVlPXR5cGVvZiBnbG9iYWxUaGlzIT0idW5kZWZpbmVkIj9nbG9iYWxUaGlzOnR5cGVvZiB3aW5kb3chPSJ1bmRlZmluZWQiP3dpbmRvdzp0eXBlb2YgZ2xvYmFsIT0idW5kZWZpbmVkIj9nbG9iYWw6dHlwZW9mIHNlbGYhPSJ1bmRlZmluZWQiP3NlbGY6e30sYWU9e2V4cG9ydHM6e319LGllPTFlMyxjdD1pZSo2MCxRdD1jdCo2MCxUdD1RdCoyNCxIbz1UdCo3LEtvPVR0KjM2NS4yNSxCbz1mdW5jdGlvbihlLHQpe3Q9dHx8e307dmFyIHI9dHlwZW9mIGU7aWYocj09PSJzdHJpbmciJiZlLmxlbmd0aD4wKXJldHVybiBKbyhlKTtpZihyPT09Im51bWJlciImJmlzRmluaXRlKGUpKXJldHVybiB0Lmxvbmc/R28oZSk6cW8oZSk7dGhyb3cgbmV3IEVycm9yKCJ2YWwgaXMgbm90IGEgbm9uLWVtcHR5IHN0cmluZyBvciBhIHZhbGlkIG51bWJlci4gdmFsPSIrSlNPTi5zdHJpbmdpZnkoZSkpfTtmdW5jdGlvbiBKbyhlKXtpZihlPVN0cmluZyhlKSwhKGUubGVuZ3RoPjEwMCkpe3ZhciB0PS9eKC0/KD86XGQrKT9cLj9cZCspICoobWlsbGlzZWNvbmRzP3xtc2Vjcz98bXN8c2Vjb25kcz98c2Vjcz98c3xtaW51dGVzP3xtaW5zP3xtfGhvdXJzP3xocnM/fGh8ZGF5cz98ZHx3ZWVrcz98d3x5ZWFycz98eXJzP3x5KT8kL2kuZXhlYyhlKTtpZighIXQpe3ZhciByPXBhcnNlRmxvYXQodFsxXSksbj0odFsyXXx8Im1zIikudG9Mb3dlckNhc2UoKTtzd2l0Y2gobil7Y2FzZSJ5ZWFycyI6Y2FzZSJ5ZWFyIjpjYXNlInlycyI6Y2FzZSJ5ciI6Y2FzZSJ5IjpyZXR1cm4gcipLbztjYXNlIndlZWtzIjpjYXNlIndlZWsiOmNhc2UidyI6cmV0dXJuIHIqSG87Y2FzZSJkYXlzIjpjYXNlImRheSI6Y2FzZSJkIjpyZXR1cm4gcipUdDtjYXNlImhvdXJzIjpjYXNlImhvdXIiOmNhc2UiaHJzIjpjYXNlImhyIjpjYXNlImgiOnJldHVybiByKlF0O2Nhc2UibWludXRlcyI6Y2FzZSJtaW51dGUiOmNhc2UibWlucyI6Y2FzZSJtaW4iOmNhc2UibSI6cmV0dXJuIHIqY3Q7Y2FzZSJzZWNvbmRzIjpjYXNlInNlY29uZCI6Y2FzZSJzZWNzIjpjYXNlInNlYyI6Y2FzZSJzIjpyZXR1cm4gcippZTtjYXNlIm1pbGxpc2Vjb25kcyI6Y2FzZSJtaWxsaXNlY29uZCI6Y2FzZSJtc2VjcyI6Y2FzZSJtc2VjIjpjYXNlIm1zIjpyZXR1cm4gcjtkZWZhdWx0OnJldHVybn19fX1mdW5jdGlvbiBxbyhlKXt2YXIgdD1NYXRoLmFicyhlKTtyZXR1cm4gdD49VHQ/TWF0aC5yb3VuZChlL1R0KSsiZCI6dD49UXQ/TWF0aC5yb3VuZChlL1F0KSsiaCI6dD49Y3Q/TWF0aC5yb3VuZChlL2N0KSsibSI6dD49aWU/TWF0aC5yb3VuZChlL2llKSsicyI6ZSsibXMifWZ1bmN0aW9uIEdvKGUpe3ZhciB0PU1hdGguYWJzKGUpO3JldHVybiB0Pj1UdD9xcihlLHQsVHQsImRheSIpOnQ+PVF0P3FyKGUsdCxRdCwiaG91ciIpOnQ+PWN0P3FyKGUsdCxjdCwibWludXRlIik6dD49aWU/cXIoZSx0LGllLCJzZWNvbmQiKTplKyIgbXMifWZ1bmN0aW9uIHFyKGUsdCxyLG4pe3ZhciBzPXQ+PXIqMS41O3JldHVybiBNYXRoLnJvdW5kKGUvcikrIiAiK24rKHM/InMiOiIiKX1mdW5jdGlvbiBRbyhlKXtyLmRlYnVnPXIsci5kZWZhdWx0PXIsci5jb2VyY2U9ZixyLmRpc2FibGU9YSxyLmVuYWJsZT1zLHIuZW5hYmxlZD1vLHIuaHVtYW5pemU9Qm8sci5kZXN0cm95PXAsT2JqZWN0LmtleXMoZSkuZm9yRWFjaChpPT57cltpXT1lW2ldfSksci5uYW1lcz1bXSxyLnNraXBzPVtdLHIuZm9ybWF0dGVycz17fTtmdW5jdGlvbiB0KGkpe2xldCBoPTA7Zm9yKGxldCBFPTA7RTxpLmxlbmd0aDtFKyspaD0oaDw8NSktaCtpLmNoYXJDb2RlQXQoRSksaHw9MDtyZXR1cm4gci5jb2xvcnNbTWF0aC5hYnMoaCklci5jb2xvcnMubGVuZ3RoXX1yLnNlbGVjdENvbG9yPXQ7ZnVuY3Rpb24gcihpKXtsZXQgaCxFPW51bGwsVCxJO2Z1bmN0aW9uIGooLi4ueSl7aWYoIWouZW5hYmxlZClyZXR1cm47Y29uc3QgXz1qLGI9TnVtYmVyKG5ldyBEYXRlKSxPPWItKGh8fGIpO18uZGlmZj1PLF8ucHJldj1oLF8uY3Vycj1iLGg9Yix5WzBdPXIuY29lcmNlKHlbMF0pLHR5cGVvZiB5WzBdIT0ic3RyaW5nIiYmeS51bnNoaWZ0KCIlTyIpO2xldCBBPTA7eVswXT15WzBdLnJlcGxhY2UoLyUoW2EtekEtWiVdKS9nLCgkLE4pPT57aWYoJD09PSIlJSIpcmV0dXJuIiUiO0ErKztjb25zdCBEPXIuZm9ybWF0dGVyc1tOXTtpZih0eXBlb2YgRD09ImZ1bmN0aW9uIil7Y29uc3QgQj15W0FdOyQ9RC5jYWxsKF8sQikseS5zcGxpY2UoQSwxKSxBLS19cmV0dXJuICR9KSxyLmZvcm1hdEFyZ3MuY2FsbChfLHkpLChfLmxvZ3x8ci5sb2cpLmFwcGx5KF8seSl9cmV0dXJuIGoubmFtZXNwYWNlPWksai51c2VDb2xvcnM9ci51c2VDb2xvcnMoKSxqLmNvbG9yPXIuc2VsZWN0Q29sb3IoaSksai5leHRlbmQ9bixqLmRlc3Ryb3k9ci5kZXN0cm95LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShqLCJlbmFibGVkIix7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITEsZ2V0OigpPT5FIT09bnVsbD9FOihUIT09ci5uYW1lc3BhY2VzJiYoVD1yLm5hbWVzcGFjZXMsST1yLmVuYWJsZWQoaSkpLEkpLHNldDp5PT57RT15fX0pLHR5cGVvZiByLmluaXQ9PSJmdW5jdGlvbiImJnIuaW5pdChqKSxqfWZ1bmN0aW9uIG4oaSxoKXtjb25zdCBFPXIodGhpcy5uYW1lc3BhY2UrKHR5cGVvZiBoPT0idW5kZWZpbmVkIj8iOiI6aCkraSk7cmV0dXJuIEUubG9nPXRoaXMubG9nLEV9ZnVuY3Rpb24gcyhpKXtyLnNhdmUoaSksci5uYW1lc3BhY2VzPWksci5uYW1lcz1bXSxyLnNraXBzPVtdO2xldCBoO2NvbnN0IEU9KHR5cGVvZiBpPT0ic3RyaW5nIj9pOiIiKS5zcGxpdCgvW1xzLF0rLyksVD1FLmxlbmd0aDtmb3IoaD0wO2g8VDtoKyspIUVbaF18fChpPUVbaF0ucmVwbGFjZSgvXCovZywiLio/IiksaVswXT09PSItIj9yLnNraXBzLnB1c2gobmV3IFJlZ0V4cCgiXiIraS5zbGljZSgxKSsiJCIpKTpyLm5hbWVzLnB1c2gobmV3IFJlZ0V4cCgiXiIraSsiJCIpKSl9ZnVuY3Rpb24gYSgpe2NvbnN0IGk9Wy4uLnIubmFtZXMubWFwKGwpLC4uLnIuc2tpcHMubWFwKGwpLm1hcChoPT4iLSIraCldLmpvaW4oIiwiKTtyZXR1cm4gci5lbmFibGUoIiIpLGl9ZnVuY3Rpb24gbyhpKXtpZihpW2kubGVuZ3RoLTFdPT09IioiKXJldHVybiEwO2xldCBoLEU7Zm9yKGg9MCxFPXIuc2tpcHMubGVuZ3RoO2g8RTtoKyspaWYoci5za2lwc1toXS50ZXN0KGkpKXJldHVybiExO2ZvcihoPTAsRT1yLm5hbWVzLmxlbmd0aDtoPEU7aCsrKWlmKHIubmFtZXNbaF0udGVzdChpKSlyZXR1cm4hMDtyZXR1cm4hMX1mdW5jdGlvbiBsKGkpe3JldHVybiBpLnRvU3RyaW5nKCkuc3Vic3RyaW5nKDIsaS50b1N0cmluZygpLmxlbmd0aC0yKS5yZXBsYWNlKC9cLlwqXD8kLywiKiIpfWZ1bmN0aW9uIGYoaSl7cmV0dXJuIGkgaW5zdGFuY2VvZiBFcnJvcj9pLnN0YWNrfHxpLm1lc3NhZ2U6aX1mdW5jdGlvbiBwKCl7Y29uc29sZS53YXJuKCJJbnN0YW5jZSBtZXRob2QgYGRlYnVnLmRlc3Ryb3koKWAgaXMgZGVwcmVjYXRlZCBhbmQgbm8gbG9uZ2VyIGRvZXMgYW55dGhpbmcuIEl0IHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgbmV4dCBtYWpvciB2ZXJzaW9uIG9mIGBkZWJ1Z2AuIil9cmV0dXJuIHIuZW5hYmxlKHIubG9hZCgpKSxyfXZhciBZbz1RbzsoZnVuY3Rpb24oZSx0KXt0LmZvcm1hdEFyZ3M9bix0LnNhdmU9cyx0LmxvYWQ9YSx0LnVzZUNvbG9ycz1yLHQuc3RvcmFnZT1vKCksdC5kZXN0cm95PSgoKT0+e2xldCBmPSExO3JldHVybigpPT57Znx8KGY9ITAsY29uc29sZS53YXJuKCJJbnN0YW5jZSBtZXRob2QgYGRlYnVnLmRlc3Ryb3koKWAgaXMgZGVwcmVjYXRlZCBhbmQgbm8gbG9uZ2VyIGRvZXMgYW55dGhpbmcuIEl0IHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgbmV4dCBtYWpvciB2ZXJzaW9uIG9mIGBkZWJ1Z2AuIikpfX0pKCksdC5jb2xvcnM9WyIjMDAwMENDIiwiIzAwMDBGRiIsIiMwMDMzQ0MiLCIjMDAzM0ZGIiwiIzAwNjZDQyIsIiMwMDY2RkYiLCIjMDA5OUNDIiwiIzAwOTlGRiIsIiMwMENDMDAiLCIjMDBDQzMzIiwiIzAwQ0M2NiIsIiMwMENDOTkiLCIjMDBDQ0NDIiwiIzAwQ0NGRiIsIiMzMzAwQ0MiLCIjMzMwMEZGIiwiIzMzMzNDQyIsIiMzMzMzRkYiLCIjMzM2NkNDIiwiIzMzNjZGRiIsIiMzMzk5Q0MiLCIjMzM5OUZGIiwiIzMzQ0MwMCIsIiMzM0NDMzMiLCIjMzNDQzY2IiwiIzMzQ0M5OSIsIiMzM0NDQ0MiLCIjMzNDQ0ZGIiwiIzY2MDBDQyIsIiM2NjAwRkYiLCIjNjYzM0NDIiwiIzY2MzNGRiIsIiM2NkNDMDAiLCIjNjZDQzMzIiwiIzk5MDBDQyIsIiM5OTAwRkYiLCIjOTkzM0NDIiwiIzk5MzNGRiIsIiM5OUNDMDAiLCIjOTlDQzMzIiwiI0NDMDAwMCIsIiNDQzAwMzMiLCIjQ0MwMDY2IiwiI0NDMDA5OSIsIiNDQzAwQ0MiLCIjQ0MwMEZGIiwiI0NDMzMwMCIsIiNDQzMzMzMiLCIjQ0MzMzY2IiwiI0NDMzM5OSIsIiNDQzMzQ0MiLCIjQ0MzM0ZGIiwiI0NDNjYwMCIsIiNDQzY2MzMiLCIjQ0M5OTAwIiwiI0NDOTkzMyIsIiNDQ0NDMDAiLCIjQ0NDQzMzIiwiI0ZGMDAwMCIsIiNGRjAwMzMiLCIjRkYwMDY2IiwiI0ZGMDA5OSIsIiNGRjAwQ0MiLCIjRkYwMEZGIiwiI0ZGMzMwMCIsIiNGRjMzMzMiLCIjRkYzMzY2IiwiI0ZGMzM5OSIsIiNGRjMzQ0MiLCIjRkYzM0ZGIiwiI0ZGNjYwMCIsIiNGRjY2MzMiLCIjRkY5OTAwIiwiI0ZGOTkzMyIsIiNGRkNDMDAiLCIjRkZDQzMzIl07ZnVuY3Rpb24gcigpe3JldHVybiB0eXBlb2Ygd2luZG93IT0idW5kZWZpbmVkIiYmd2luZG93LnByb2Nlc3MmJih3aW5kb3cucHJvY2Vzcy50eXBlPT09InJlbmRlcmVyInx8d2luZG93LnByb2Nlc3MuX19ud2pzKT8hMDp0eXBlb2YgbmF2aWdhdG9yIT0idW5kZWZpbmVkIiYmbmF2aWdhdG9yLnVzZXJBZ2VudCYmbmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpLm1hdGNoKC8oZWRnZXx0cmlkZW50KVwvKFxkKykvKT8hMTp0eXBlb2YgZG9jdW1lbnQhPSJ1bmRlZmluZWQiJiZkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQmJmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZSYmZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLldlYmtpdEFwcGVhcmFuY2V8fHR5cGVvZiB3aW5kb3chPSJ1bmRlZmluZWQiJiZ3aW5kb3cuY29uc29sZSYmKHdpbmRvdy5jb25zb2xlLmZpcmVidWd8fHdpbmRvdy5jb25zb2xlLmV4Y2VwdGlvbiYmd2luZG93LmNvbnNvbGUudGFibGUpfHx0eXBlb2YgbmF2aWdhdG9yIT0idW5kZWZpbmVkIiYmbmF2aWdhdG9yLnVzZXJBZ2VudCYmbmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpLm1hdGNoKC9maXJlZm94XC8oXGQrKS8pJiZwYXJzZUludChSZWdFeHAuJDEsMTApPj0zMXx8dHlwZW9mIG5hdmlnYXRvciE9InVuZGVmaW5lZCImJm5hdmlnYXRvci51c2VyQWdlbnQmJm5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKS5tYXRjaCgvYXBwbGV3ZWJraXRcLyhcZCspLyl9ZnVuY3Rpb24gbihmKXtpZihmWzBdPSh0aGlzLnVzZUNvbG9ycz8iJWMiOiIiKSt0aGlzLm5hbWVzcGFjZSsodGhpcy51c2VDb2xvcnM/IiAlYyI6IiAiKStmWzBdKyh0aGlzLnVzZUNvbG9ycz8iJWMgIjoiICIpKyIrIitlLmV4cG9ydHMuaHVtYW5pemUodGhpcy5kaWZmKSwhdGhpcy51c2VDb2xvcnMpcmV0dXJuO2NvbnN0IHA9ImNvbG9yOiAiK3RoaXMuY29sb3I7Zi5zcGxpY2UoMSwwLHAsImNvbG9yOiBpbmhlcml0Iik7bGV0IGk9MCxoPTA7ZlswXS5yZXBsYWNlKC8lW2EtekEtWiVdL2csRT0+e0UhPT0iJSUiJiYoaSsrLEU9PT0iJWMiJiYoaD1pKSl9KSxmLnNwbGljZShoLDAscCl9dC5sb2c9Y29uc29sZS5kZWJ1Z3x8Y29uc29sZS5sb2d8fCgoKT0+e30pO2Z1bmN0aW9uIHMoZil7dHJ5e2Y/dC5zdG9yYWdlLnNldEl0ZW0oImRlYnVnIixmKTp0LnN0b3JhZ2UucmVtb3ZlSXRlbSgiZGVidWciKX1jYXRjaHt9fWZ1bmN0aW9uIGEoKXtsZXQgZjt0cnl7Zj10LnN0b3JhZ2UuZ2V0SXRlbSgiZGVidWciKX1jYXRjaHt9cmV0dXJuIWYmJnR5cGVvZiBwcm9jZXNzIT0idW5kZWZpbmVkIiYmImVudiJpbiBwcm9jZXNzJiYoZj17fS5ERUJVRyksZn1mdW5jdGlvbiBvKCl7dHJ5e3JldHVybiBsb2NhbFN0b3JhZ2V9Y2F0Y2h7fX1lLmV4cG9ydHM9WW8odCk7Y29uc3R7Zm9ybWF0dGVyczpsfT1lLmV4cG9ydHM7bC5qPWZ1bmN0aW9uKGYpe3RyeXtyZXR1cm4gSlNPTi5zdHJpbmdpZnkoZil9Y2F0Y2gocCl7cmV0dXJuIltVbmV4cGVjdGVkSlNPTlBhcnNlRXJyb3JdOiAiK3AubWVzc2FnZX19fSkoYWUsYWUuZXhwb3J0cyk7dmFyIE5zPWFlLmV4cG9ydHMsT249e2V4cG9ydHM6e319LFBzPWZ1bmN0aW9uKHQscil7cmV0dXJuIGZ1bmN0aW9uKCl7Zm9yKHZhciBzPW5ldyBBcnJheShhcmd1bWVudHMubGVuZ3RoKSxhPTA7YTxzLmxlbmd0aDthKyspc1thXT1hcmd1bWVudHNbYV07cmV0dXJuIHQuYXBwbHkocixzKX19LFdvPVBzLE5uPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcsUG49ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3ZhciByPU5uLmNhbGwodCk7cmV0dXJuIGVbcl18fChlW3JdPXIuc2xpY2UoOCwtMSkudG9Mb3dlckNhc2UoKSl9fShPYmplY3QuY3JlYXRlKG51bGwpKTtmdW5jdGlvbiBBdChlKXtyZXR1cm4gZT1lLnRvTG93ZXJDYXNlKCksZnVuY3Rpb24ocil7cmV0dXJuIFBuKHIpPT09ZX19ZnVuY3Rpb24gVG4oZSl7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSl9ZnVuY3Rpb24gR3IoZSl7cmV0dXJuIHR5cGVvZiBlPT0idW5kZWZpbmVkIn1mdW5jdGlvbiBYbyhlKXtyZXR1cm4gZSE9PW51bGwmJiFHcihlKSYmZS5jb25zdHJ1Y3RvciE9PW51bGwmJiFHcihlLmNvbnN0cnVjdG9yKSYmdHlwZW9mIGUuY29uc3RydWN0b3IuaXNCdWZmZXI9PSJmdW5jdGlvbiImJmUuY29uc3RydWN0b3IuaXNCdWZmZXIoZSl9dmFyIFRzPUF0KCJBcnJheUJ1ZmZlciIpO2Z1bmN0aW9uIFpvKGUpe3ZhciB0O3JldHVybiB0eXBlb2YgQXJyYXlCdWZmZXIhPSJ1bmRlZmluZWQiJiZBcnJheUJ1ZmZlci5pc1ZpZXc/dD1BcnJheUJ1ZmZlci5pc1ZpZXcoZSk6dD1lJiZlLmJ1ZmZlciYmVHMoZS5idWZmZXIpLHR9ZnVuY3Rpb24geG8oZSl7cmV0dXJuIHR5cGVvZiBlPT0ic3RyaW5nIn1mdW5jdGlvbiBlaShlKXtyZXR1cm4gdHlwZW9mIGU9PSJudW1iZXIifWZ1bmN0aW9uIEFzKGUpe3JldHVybiBlIT09bnVsbCYmdHlwZW9mIGU9PSJvYmplY3QifWZ1bmN0aW9uIFFyKGUpe2lmKFBuKGUpIT09Im9iamVjdCIpcmV0dXJuITE7dmFyIHQ9T2JqZWN0LmdldFByb3RvdHlwZU9mKGUpO3JldHVybiB0PT09bnVsbHx8dD09PU9iamVjdC5wcm90b3R5cGV9dmFyIHRpPUF0KCJEYXRlIikscmk9QXQoIkZpbGUiKSxuaT1BdCgiQmxvYiIpLHNpPUF0KCJGaWxlTGlzdCIpO2Z1bmN0aW9uIEFuKGUpe3JldHVybiBObi5jYWxsKGUpPT09IltvYmplY3QgRnVuY3Rpb25dIn1mdW5jdGlvbiBhaShlKXtyZXR1cm4gQXMoZSkmJkFuKGUucGlwZSl9ZnVuY3Rpb24gb2koZSl7dmFyIHQ9IltvYmplY3QgRm9ybURhdGFdIjtyZXR1cm4gZSYmKHR5cGVvZiBGb3JtRGF0YT09ImZ1bmN0aW9uIiYmZSBpbnN0YW5jZW9mIEZvcm1EYXRhfHxObi5jYWxsKGUpPT09dHx8QW4oZS50b1N0cmluZykmJmUudG9TdHJpbmcoKT09PXQpfXZhciBpaT1BdCgiVVJMU2VhcmNoUGFyYW1zIik7ZnVuY3Rpb24gY2koZSl7cmV0dXJuIGUudHJpbT9lLnRyaW0oKTplLnJlcGxhY2UoL15ccyt8XHMrJC9nLCIiKX1mdW5jdGlvbiB1aSgpe3JldHVybiB0eXBlb2YgbmF2aWdhdG9yIT0idW5kZWZpbmVkIiYmKG5hdmlnYXRvci5wcm9kdWN0PT09IlJlYWN0TmF0aXZlInx8bmF2aWdhdG9yLnByb2R1Y3Q9PT0iTmF0aXZlU2NyaXB0Inx8bmF2aWdhdG9yLnByb2R1Y3Q9PT0iTlMiKT8hMTp0eXBlb2Ygd2luZG93IT0idW5kZWZpbmVkIiYmdHlwZW9mIGRvY3VtZW50IT0idW5kZWZpbmVkIn1mdW5jdGlvbiBDbihlLHQpe2lmKCEoZT09PW51bGx8fHR5cGVvZiBlPT0idW5kZWZpbmVkIikpaWYodHlwZW9mIGUhPSJvYmplY3QiJiYoZT1bZV0pLFRuKGUpKWZvcih2YXIgcj0wLG49ZS5sZW5ndGg7cjxuO3IrKyl0LmNhbGwobnVsbCxlW3JdLHIsZSk7ZWxzZSBmb3IodmFyIHMgaW4gZSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxzKSYmdC5jYWxsKG51bGwsZVtzXSxzLGUpfWZ1bmN0aW9uIEluKCl7dmFyIGU9e307ZnVuY3Rpb24gdChzLGEpe1FyKGVbYV0pJiZRcihzKT9lW2FdPUluKGVbYV0scyk6UXIocyk/ZVthXT1Jbih7fSxzKTpUbihzKT9lW2FdPXMuc2xpY2UoKTplW2FdPXN9Zm9yKHZhciByPTAsbj1hcmd1bWVudHMubGVuZ3RoO3I8bjtyKyspQ24oYXJndW1lbnRzW3JdLHQpO3JldHVybiBlfWZ1bmN0aW9uIGxpKGUsdCxyKXtyZXR1cm4gQ24odCxmdW5jdGlvbihzLGEpe3ImJnR5cGVvZiBzPT0iZnVuY3Rpb24iP2VbYV09V28ocyxyKTplW2FdPXN9KSxlfWZ1bmN0aW9uIGZpKGUpe3JldHVybiBlLmNoYXJDb2RlQXQoMCk9PT02NTI3OSYmKGU9ZS5zbGljZSgxKSksZX1mdW5jdGlvbiBkaShlLHQscixuKXtlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQucHJvdG90eXBlLG4pLGUucHJvdG90eXBlLmNvbnN0cnVjdG9yPWUsciYmT2JqZWN0LmFzc2lnbihlLnByb3RvdHlwZSxyKX1mdW5jdGlvbiBoaShlLHQscil7dmFyIG4scyxhLG89e307dD10fHx7fTtkb3tmb3Iobj1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhlKSxzPW4ubGVuZ3RoO3MtLSA+MDspYT1uW3NdLG9bYV18fCh0W2FdPWVbYV0sb1thXT0hMCk7ZT1PYmplY3QuZ2V0UHJvdG90eXBlT2YoZSl9d2hpbGUoZSYmKCFyfHxyKGUsdCkpJiZlIT09T2JqZWN0LnByb3RvdHlwZSk7cmV0dXJuIHR9ZnVuY3Rpb24gcGkoZSx0LHIpe2U9U3RyaW5nKGUpLChyPT09dm9pZCAwfHxyPmUubGVuZ3RoKSYmKHI9ZS5sZW5ndGgpLHItPXQubGVuZ3RoO3ZhciBuPWUuaW5kZXhPZih0LHIpO3JldHVybiBuIT09LTEmJm49PT1yfWZ1bmN0aW9uIG1pKGUpe2lmKCFlKXJldHVybiBudWxsO3ZhciB0PWUubGVuZ3RoO2lmKEdyKHQpKXJldHVybiBudWxsO2Zvcih2YXIgcj1uZXcgQXJyYXkodCk7dC0tID4wOylyW3RdPWVbdF07cmV0dXJuIHJ9dmFyIHZpPWZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gZSYmdCBpbnN0YW5jZW9mIGV9fSh0eXBlb2YgVWludDhBcnJheSE9InVuZGVmaW5lZCImJk9iamVjdC5nZXRQcm90b3R5cGVPZihVaW50OEFycmF5KSksUGU9e2lzQXJyYXk6VG4saXNBcnJheUJ1ZmZlcjpUcyxpc0J1ZmZlcjpYbyxpc0Zvcm1EYXRhOm9pLGlzQXJyYXlCdWZmZXJWaWV3OlpvLGlzU3RyaW5nOnhvLGlzTnVtYmVyOmVpLGlzT2JqZWN0OkFzLGlzUGxhaW5PYmplY3Q6UXIsaXNVbmRlZmluZWQ6R3IsaXNEYXRlOnRpLGlzRmlsZTpyaSxpc0Jsb2I6bmksaXNGdW5jdGlvbjpBbixpc1N0cmVhbTphaSxpc1VSTFNlYXJjaFBhcmFtczppaSxpc1N0YW5kYXJkQnJvd3NlckVudjp1aSxmb3JFYWNoOkNuLG1lcmdlOkluLGV4dGVuZDpsaSx0cmltOmNpLHN0cmlwQk9NOmZpLGluaGVyaXRzOmRpLHRvRmxhdE9iamVjdDpoaSxraW5kT2Y6UG4sa2luZE9mVGVzdDpBdCxlbmRzV2l0aDpwaSx0b0FycmF5Om1pLGlzVHlwZWRBcnJheTp2aSxpc0ZpbGVMaXN0OnNpfSxZdD1QZTtmdW5jdGlvbiBDcyhlKXtyZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KGUpLnJlcGxhY2UoLyUzQS9naSwiOiIpLnJlcGxhY2UoLyUyNC9nLCIkIikucmVwbGFjZSgvJTJDL2dpLCIsIikucmVwbGFjZSgvJTIwL2csIisiKS5yZXBsYWNlKC8lNUIvZ2ksIlsiKS5yZXBsYWNlKC8lNUQvZ2ksIl0iKX12YXIgSXM9ZnVuY3Rpb24odCxyLG4pe2lmKCFyKXJldHVybiB0O3ZhciBzO2lmKG4pcz1uKHIpO2Vsc2UgaWYoWXQuaXNVUkxTZWFyY2hQYXJhbXMocikpcz1yLnRvU3RyaW5nKCk7ZWxzZXt2YXIgYT1bXTtZdC5mb3JFYWNoKHIsZnVuY3Rpb24oZixwKXtmPT09bnVsbHx8dHlwZW9mIGY9PSJ1bmRlZmluZWQifHwoWXQuaXNBcnJheShmKT9wPXArIltdIjpmPVtmXSxZdC5mb3JFYWNoKGYsZnVuY3Rpb24oaCl7WXQuaXNEYXRlKGgpP2g9aC50b0lTT1N0cmluZygpOll0LmlzT2JqZWN0KGgpJiYoaD1KU09OLnN0cmluZ2lmeShoKSksYS5wdXNoKENzKHApKyI9IitDcyhoKSl9KSl9KSxzPWEuam9pbigiJiIpfWlmKHMpe3ZhciBvPXQuaW5kZXhPZigiIyIpO28hPT0tMSYmKHQ9dC5zbGljZSgwLG8pKSx0Kz0odC5pbmRleE9mKCI/Iik9PT0tMT8iPyI6IiYiKStzfXJldHVybiB0fSxfaT1QZTtmdW5jdGlvbiBZcigpe3RoaXMuaGFuZGxlcnM9W119WXIucHJvdG90eXBlLnVzZT1mdW5jdGlvbih0LHIsbil7cmV0dXJuIHRoaXMuaGFuZGxlcnMucHVzaCh7ZnVsZmlsbGVkOnQscmVqZWN0ZWQ6cixzeW5jaHJvbm91czpuP24uc3luY2hyb25vdXM6ITEscnVuV2hlbjpuP24ucnVuV2hlbjpudWxsfSksdGhpcy5oYW5kbGVycy5sZW5ndGgtMX0sWXIucHJvdG90eXBlLmVqZWN0PWZ1bmN0aW9uKHQpe3RoaXMuaGFuZGxlcnNbdF0mJih0aGlzLmhhbmRsZXJzW3RdPW51bGwpfSxZci5wcm90b3R5cGUuZm9yRWFjaD1mdW5jdGlvbih0KXtfaS5mb3JFYWNoKHRoaXMuaGFuZGxlcnMsZnVuY3Rpb24obil7biE9PW51bGwmJnQobil9KX07dmFyIGdpPVlyLEVpPVBlLHlpPWZ1bmN0aW9uKHQscil7RWkuZm9yRWFjaCh0LGZ1bmN0aW9uKHMsYSl7YSE9PXImJmEudG9VcHBlckNhc2UoKT09PXIudG9VcHBlckNhc2UoKSYmKHRbcl09cyxkZWxldGUgdFthXSl9KX0sRHM9UGU7ZnVuY3Rpb24gV3QoZSx0LHIsbixzKXtFcnJvci5jYWxsKHRoaXMpLHRoaXMubWVzc2FnZT1lLHRoaXMubmFtZT0iQXhpb3NFcnJvciIsdCYmKHRoaXMuY29kZT10KSxyJiYodGhpcy5jb25maWc9ciksbiYmKHRoaXMucmVxdWVzdD1uKSxzJiYodGhpcy5yZXNwb25zZT1zKX1Ecy5pbmhlcml0cyhXdCxFcnJvcix7dG9KU09OOmZ1bmN0aW9uKCl7cmV0dXJue21lc3NhZ2U6dGhpcy5tZXNzYWdlLG5hbWU6dGhpcy5uYW1lLGRlc2NyaXB0aW9uOnRoaXMuZGVzY3JpcHRpb24sbnVtYmVyOnRoaXMubnVtYmVyLGZpbGVOYW1lOnRoaXMuZmlsZU5hbWUsbGluZU51bWJlcjp0aGlzLmxpbmVOdW1iZXIsY29sdW1uTnVtYmVyOnRoaXMuY29sdW1uTnVtYmVyLHN0YWNrOnRoaXMuc3RhY2ssY29uZmlnOnRoaXMuY29uZmlnLGNvZGU6dGhpcy5jb2RlLHN0YXR1czp0aGlzLnJlc3BvbnNlJiZ0aGlzLnJlc3BvbnNlLnN0YXR1cz90aGlzLnJlc3BvbnNlLnN0YXR1czpudWxsfX19KTt2YXIganM9V3QucHJvdG90eXBlLGtzPXt9O1siRVJSX0JBRF9PUFRJT05fVkFMVUUiLCJFUlJfQkFEX09QVElPTiIsIkVDT05OQUJPUlRFRCIsIkVUSU1FRE9VVCIsIkVSUl9ORVRXT1JLIiwiRVJSX0ZSX1RPT19NQU5ZX1JFRElSRUNUUyIsIkVSUl9ERVBSRUNBVEVEIiwiRVJSX0JBRF9SRVNQT05TRSIsIkVSUl9CQURfUkVRVUVTVCIsIkVSUl9DQU5DRUxFRCJdLmZvckVhY2goZnVuY3Rpb24oZSl7a3NbZV09e3ZhbHVlOmV9fSksT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoV3Qsa3MpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShqcywiaXNBeGlvc0Vycm9yIix7dmFsdWU6ITB9KSxXdC5mcm9tPWZ1bmN0aW9uKGUsdCxyLG4scyxhKXt2YXIgbz1PYmplY3QuY3JlYXRlKGpzKTtyZXR1cm4gRHMudG9GbGF0T2JqZWN0KGUsbyxmdW5jdGlvbihmKXtyZXR1cm4gZiE9PUVycm9yLnByb3RvdHlwZX0pLFd0LmNhbGwobyxlLm1lc3NhZ2UsdCxyLG4scyksby5uYW1lPWUubmFtZSxhJiZPYmplY3QuYXNzaWduKG8sYSksb307dmFyIFh0PVd0LFVzPXtzaWxlbnRKU09OUGFyc2luZzohMCxmb3JjZWRKU09OUGFyc2luZzohMCxjbGFyaWZ5VGltZW91dEVycm9yOiExfSxHZT1QZTtmdW5jdGlvbiAkaShlLHQpe3Q9dHx8bmV3IEZvcm1EYXRhO3ZhciByPVtdO2Z1bmN0aW9uIG4oYSl7cmV0dXJuIGE9PT1udWxsPyIiOkdlLmlzRGF0ZShhKT9hLnRvSVNPU3RyaW5nKCk6R2UuaXNBcnJheUJ1ZmZlcihhKXx8R2UuaXNUeXBlZEFycmF5KGEpP3R5cGVvZiBCbG9iPT0iZnVuY3Rpb24iP25ldyBCbG9iKFthXSk6QnVmZmVyLmZyb20oYSk6YX1mdW5jdGlvbiBzKGEsbyl7aWYoR2UuaXNQbGFpbk9iamVjdChhKXx8R2UuaXNBcnJheShhKSl7aWYoci5pbmRleE9mKGEpIT09LTEpdGhyb3cgRXJyb3IoIkNpcmN1bGFyIHJlZmVyZW5jZSBkZXRlY3RlZCBpbiAiK28pO3IucHVzaChhKSxHZS5mb3JFYWNoKGEsZnVuY3Rpb24oZixwKXtpZighR2UuaXNVbmRlZmluZWQoZikpe3ZhciBpPW8/bysiLiIrcDpwLGg7aWYoZiYmIW8mJnR5cGVvZiBmPT0ib2JqZWN0Iil7aWYoR2UuZW5kc1dpdGgocCwie30iKSlmPUpTT04uc3RyaW5naWZ5KGYpO2Vsc2UgaWYoR2UuZW5kc1dpdGgocCwiW10iKSYmKGg9R2UudG9BcnJheShmKSkpe2guZm9yRWFjaChmdW5jdGlvbihFKXshR2UuaXNVbmRlZmluZWQoRSkmJnQuYXBwZW5kKGksbihFKSl9KTtyZXR1cm59fXMoZixpKX19KSxyLnBvcCgpfWVsc2UgdC5hcHBlbmQobyxuKGEpKX1yZXR1cm4gcyhlKSx0fXZhciBGcz0kaSxEbj1YdCx3aT1mdW5jdGlvbih0LHIsbil7dmFyIHM9bi5jb25maWcudmFsaWRhdGVTdGF0dXM7IW4uc3RhdHVzfHwhc3x8cyhuLnN0YXR1cyk/dChuKTpyKG5ldyBEbigiUmVxdWVzdCBmYWlsZWQgd2l0aCBzdGF0dXMgY29kZSAiK24uc3RhdHVzLFtEbi5FUlJfQkFEX1JFUVVFU1QsRG4uRVJSX0JBRF9SRVNQT05TRV1bTWF0aC5mbG9vcihuLnN0YXR1cy8xMDApLTRdLG4uY29uZmlnLG4ucmVxdWVzdCxuKSl9LFdyPVBlLFNpPVdyLmlzU3RhbmRhcmRCcm93c2VyRW52KCk/ZnVuY3Rpb24oKXtyZXR1cm57d3JpdGU6ZnVuY3Rpb24ocixuLHMsYSxvLGwpe3ZhciBmPVtdO2YucHVzaChyKyI9IitlbmNvZGVVUklDb21wb25lbnQobikpLFdyLmlzTnVtYmVyKHMpJiZmLnB1c2goImV4cGlyZXM9IituZXcgRGF0ZShzKS50b0dNVFN0cmluZygpKSxXci5pc1N0cmluZyhhKSYmZi5wdXNoKCJwYXRoPSIrYSksV3IuaXNTdHJpbmcobykmJmYucHVzaCgiZG9tYWluPSIrbyksbD09PSEwJiZmLnB1c2goInNlY3VyZSIpLGRvY3VtZW50LmNvb2tpZT1mLmpvaW4oIjsgIil9LHJlYWQ6ZnVuY3Rpb24ocil7dmFyIG49ZG9jdW1lbnQuY29va2llLm1hdGNoKG5ldyBSZWdFeHAoIihefDtcXHMqKSgiK3IrIik9KFteO10qKSIpKTtyZXR1cm4gbj9kZWNvZGVVUklDb21wb25lbnQoblszXSk6bnVsbH0scmVtb3ZlOmZ1bmN0aW9uKHIpe3RoaXMud3JpdGUociwiIixEYXRlLm5vdygpLTg2NGU1KX19fSgpOmZ1bmN0aW9uKCl7cmV0dXJue3dyaXRlOmZ1bmN0aW9uKCl7fSxyZWFkOmZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9LHJlbW92ZTpmdW5jdGlvbigpe319fSgpLFJpPWZ1bmN0aW9uKHQpe3JldHVybi9eKFthLXpdW2EtelxkK1wtLl0qOik/XC9cLy9pLnRlc3QodCl9LGJpPWZ1bmN0aW9uKHQscil7cmV0dXJuIHI/dC5yZXBsYWNlKC9cLyskLywiIikrIi8iK3IucmVwbGFjZSgvXlwvKy8sIiIpOnR9LE9pPVJpLE5pPWJpLE1zPWZ1bmN0aW9uKHQscil7cmV0dXJuIHQmJiFPaShyKT9OaSh0LHIpOnJ9LGpuPVBlLFBpPVsiYWdlIiwiYXV0aG9yaXphdGlvbiIsImNvbnRlbnQtbGVuZ3RoIiwiY29udGVudC10eXBlIiwiZXRhZyIsImV4cGlyZXMiLCJmcm9tIiwiaG9zdCIsImlmLW1vZGlmaWVkLXNpbmNlIiwiaWYtdW5tb2RpZmllZC1zaW5jZSIsImxhc3QtbW9kaWZpZWQiLCJsb2NhdGlvbiIsIm1heC1mb3J3YXJkcyIsInByb3h5LWF1dGhvcml6YXRpb24iLCJyZWZlcmVyIiwicmV0cnktYWZ0ZXIiLCJ1c2VyLWFnZW50Il0sVGk9ZnVuY3Rpb24odCl7dmFyIHI9e30sbixzLGE7cmV0dXJuIHQmJmpuLmZvckVhY2godC5zcGxpdChgCmApLGZ1bmN0aW9uKGwpe2lmKGE9bC5pbmRleE9mKCI6Iiksbj1qbi50cmltKGwuc3Vic3RyKDAsYSkpLnRvTG93ZXJDYXNlKCkscz1qbi50cmltKGwuc3Vic3RyKGErMSkpLG4pe2lmKHJbbl0mJlBpLmluZGV4T2Yobik+PTApcmV0dXJuO249PT0ic2V0LWNvb2tpZSI/cltuXT0ocltuXT9yW25dOltdKS5jb25jYXQoW3NdKTpyW25dPXJbbl0/cltuXSsiLCAiK3M6c319KSxyfSxMcz1QZSxBaT1Mcy5pc1N0YW5kYXJkQnJvd3NlckVudigpP2Z1bmN0aW9uKCl7dmFyIHQ9Lyhtc2llfHRyaWRlbnQpL2kudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSxyPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImEiKSxuO2Z1bmN0aW9uIHMoYSl7dmFyIG89YTtyZXR1cm4gdCYmKHIuc2V0QXR0cmlidXRlKCJocmVmIixvKSxvPXIuaHJlZiksci5zZXRBdHRyaWJ1dGUoImhyZWYiLG8pLHtocmVmOnIuaHJlZixwcm90b2NvbDpyLnByb3RvY29sP3IucHJvdG9jb2wucmVwbGFjZSgvOiQvLCIiKToiIixob3N0OnIuaG9zdCxzZWFyY2g6ci5zZWFyY2g/ci5zZWFyY2gucmVwbGFjZSgvXlw/LywiIik6IiIsaGFzaDpyLmhhc2g/ci5oYXNoLnJlcGxhY2UoL14jLywiIik6IiIsaG9zdG5hbWU6ci5ob3N0bmFtZSxwb3J0OnIucG9ydCxwYXRobmFtZTpyLnBhdGhuYW1lLmNoYXJBdCgwKT09PSIvIj9yLnBhdGhuYW1lOiIvIityLnBhdGhuYW1lfX1yZXR1cm4gbj1zKHdpbmRvdy5sb2NhdGlvbi5ocmVmKSxmdW5jdGlvbihvKXt2YXIgbD1Mcy5pc1N0cmluZyhvKT9zKG8pOm87cmV0dXJuIGwucHJvdG9jb2w9PT1uLnByb3RvY29sJiZsLmhvc3Q9PT1uLmhvc3R9fSgpOmZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuITB9fSgpLGtuPVh0LENpPVBlO2Z1bmN0aW9uIFZzKGUpe2tuLmNhbGwodGhpcyxlPT1udWxsPyJjYW5jZWxlZCI6ZSxrbi5FUlJfQ0FOQ0VMRUQpLHRoaXMubmFtZT0iQ2FuY2VsZWRFcnJvciJ9Q2kuaW5oZXJpdHMoVnMsa24se19fQ0FOQ0VMX186ITB9KTt2YXIgWHI9VnMsSWk9ZnVuY3Rpb24odCl7dmFyIHI9L14oWy0rXHddezEsMjV9KSg6P1wvXC98OikvLmV4ZWModCk7cmV0dXJuIHImJnJbMV18fCIifSxncj1QZSxEaT13aSxqaT1TaSxraT1JcyxVaT1NcyxGaT1UaSxNaT1BaSxMaT1Vcyx1dD1YdCxWaT1Ycix6aT1JaSx6cz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24obixzKXt2YXIgYT10LmRhdGEsbz10LmhlYWRlcnMsbD10LnJlc3BvbnNlVHlwZSxmO2Z1bmN0aW9uIHAoKXt0LmNhbmNlbFRva2VuJiZ0LmNhbmNlbFRva2VuLnVuc3Vic2NyaWJlKGYpLHQuc2lnbmFsJiZ0LnNpZ25hbC5yZW1vdmVFdmVudExpc3RlbmVyKCJhYm9ydCIsZil9Z3IuaXNGb3JtRGF0YShhKSYmZ3IuaXNTdGFuZGFyZEJyb3dzZXJFbnYoKSYmZGVsZXRlIG9bIkNvbnRlbnQtVHlwZSJdO3ZhciBpPW5ldyBYTUxIdHRwUmVxdWVzdDtpZih0LmF1dGgpe3ZhciBoPXQuYXV0aC51c2VybmFtZXx8IiIsRT10LmF1dGgucGFzc3dvcmQ/dW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KHQuYXV0aC5wYXNzd29yZCkpOiIiO28uQXV0aG9yaXphdGlvbj0iQmFzaWMgIitidG9hKGgrIjoiK0UpfXZhciBUPVVpKHQuYmFzZVVSTCx0LnVybCk7aS5vcGVuKHQubWV0aG9kLnRvVXBwZXJDYXNlKCksa2koVCx0LnBhcmFtcyx0LnBhcmFtc1NlcmlhbGl6ZXIpLCEwKSxpLnRpbWVvdXQ9dC50aW1lb3V0O2Z1bmN0aW9uIEkoKXtpZighIWkpe3ZhciBfPSJnZXRBbGxSZXNwb25zZUhlYWRlcnMiaW4gaT9GaShpLmdldEFsbFJlc3BvbnNlSGVhZGVycygpKTpudWxsLGI9IWx8fGw9PT0idGV4dCJ8fGw9PT0ianNvbiI/aS5yZXNwb25zZVRleHQ6aS5yZXNwb25zZSxPPXtkYXRhOmIsc3RhdHVzOmkuc3RhdHVzLHN0YXR1c1RleHQ6aS5zdGF0dXNUZXh0LGhlYWRlcnM6Xyxjb25maWc6dCxyZXF1ZXN0Oml9O0RpKGZ1bmN0aW9uKEgpe24oSCkscCgpfSxmdW5jdGlvbihIKXtzKEgpLHAoKX0sTyksaT1udWxsfX1pZigib25sb2FkZW5kImluIGk/aS5vbmxvYWRlbmQ9STppLm9ucmVhZHlzdGF0ZWNoYW5nZT1mdW5jdGlvbigpeyFpfHxpLnJlYWR5U3RhdGUhPT00fHxpLnN0YXR1cz09PTAmJiEoaS5yZXNwb25zZVVSTCYmaS5yZXNwb25zZVVSTC5pbmRleE9mKCJmaWxlOiIpPT09MCl8fHNldFRpbWVvdXQoSSl9LGkub25hYm9ydD1mdW5jdGlvbigpeyFpfHwocyhuZXcgdXQoIlJlcXVlc3QgYWJvcnRlZCIsdXQuRUNPTk5BQk9SVEVELHQsaSkpLGk9bnVsbCl9LGkub25lcnJvcj1mdW5jdGlvbigpe3MobmV3IHV0KCJOZXR3b3JrIEVycm9yIix1dC5FUlJfTkVUV09SSyx0LGksaSkpLGk9bnVsbH0saS5vbnRpbWVvdXQ9ZnVuY3Rpb24oKXt2YXIgYj10LnRpbWVvdXQ/InRpbWVvdXQgb2YgIit0LnRpbWVvdXQrIm1zIGV4Y2VlZGVkIjoidGltZW91dCBleGNlZWRlZCIsTz10LnRyYW5zaXRpb25hbHx8TGk7dC50aW1lb3V0RXJyb3JNZXNzYWdlJiYoYj10LnRpbWVvdXRFcnJvck1lc3NhZ2UpLHMobmV3IHV0KGIsTy5jbGFyaWZ5VGltZW91dEVycm9yP3V0LkVUSU1FRE9VVDp1dC5FQ09OTkFCT1JURUQsdCxpKSksaT1udWxsfSxnci5pc1N0YW5kYXJkQnJvd3NlckVudigpKXt2YXIgaj0odC53aXRoQ3JlZGVudGlhbHN8fE1pKFQpKSYmdC54c3JmQ29va2llTmFtZT9qaS5yZWFkKHQueHNyZkNvb2tpZU5hbWUpOnZvaWQgMDtqJiYob1t0LnhzcmZIZWFkZXJOYW1lXT1qKX0ic2V0UmVxdWVzdEhlYWRlciJpbiBpJiZnci5mb3JFYWNoKG8sZnVuY3Rpb24oYixPKXt0eXBlb2YgYT09InVuZGVmaW5lZCImJk8udG9Mb3dlckNhc2UoKT09PSJjb250ZW50LXR5cGUiP2RlbGV0ZSBvW09dOmkuc2V0UmVxdWVzdEhlYWRlcihPLGIpfSksZ3IuaXNVbmRlZmluZWQodC53aXRoQ3JlZGVudGlhbHMpfHwoaS53aXRoQ3JlZGVudGlhbHM9ISF0LndpdGhDcmVkZW50aWFscyksbCYmbCE9PSJqc29uIiYmKGkucmVzcG9uc2VUeXBlPXQucmVzcG9uc2VUeXBlKSx0eXBlb2YgdC5vbkRvd25sb2FkUHJvZ3Jlc3M9PSJmdW5jdGlvbiImJmkuYWRkRXZlbnRMaXN0ZW5lcigicHJvZ3Jlc3MiLHQub25Eb3dubG9hZFByb2dyZXNzKSx0eXBlb2YgdC5vblVwbG9hZFByb2dyZXNzPT0iZnVuY3Rpb24iJiZpLnVwbG9hZCYmaS51cGxvYWQuYWRkRXZlbnRMaXN0ZW5lcigicHJvZ3Jlc3MiLHQub25VcGxvYWRQcm9ncmVzcyksKHQuY2FuY2VsVG9rZW58fHQuc2lnbmFsKSYmKGY9ZnVuY3Rpb24oXyl7IWl8fChzKCFffHxfJiZfLnR5cGU/bmV3IFZpOl8pLGkuYWJvcnQoKSxpPW51bGwpfSx0LmNhbmNlbFRva2VuJiZ0LmNhbmNlbFRva2VuLnN1YnNjcmliZShmKSx0LnNpZ25hbCYmKHQuc2lnbmFsLmFib3J0ZWQ/ZigpOnQuc2lnbmFsLmFkZEV2ZW50TGlzdGVuZXIoImFib3J0IixmKSkpLGF8fChhPW51bGwpO3ZhciB5PXppKFQpO2lmKHkmJlsiaHR0cCIsImh0dHBzIiwiZmlsZSJdLmluZGV4T2YoeSk9PT0tMSl7cyhuZXcgdXQoIlVuc3VwcG9ydGVkIHByb3RvY29sICIreSsiOiIsdXQuRVJSX0JBRF9SRVFVRVNULHQpKTtyZXR1cm59aS5zZW5kKGEpfSl9LEhpPW51bGwsT2U9UGUsSHM9eWksS3M9WHQsS2k9VXMsQmk9RnMsSmk9eyJDb250ZW50LVR5cGUiOiJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQifTtmdW5jdGlvbiBCcyhlLHQpeyFPZS5pc1VuZGVmaW5lZChlKSYmT2UuaXNVbmRlZmluZWQoZVsiQ29udGVudC1UeXBlIl0pJiYoZVsiQ29udGVudC1UeXBlIl09dCl9ZnVuY3Rpb24gcWkoKXt2YXIgZTtyZXR1cm4odHlwZW9mIFhNTEh0dHBSZXF1ZXN0IT0idW5kZWZpbmVkInx8dHlwZW9mIHByb2Nlc3MhPSJ1bmRlZmluZWQiJiZPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwocHJvY2Vzcyk9PT0iW29iamVjdCBwcm9jZXNzXSIpJiYoZT16cyksZX1mdW5jdGlvbiBHaShlLHQscil7aWYoT2UuaXNTdHJpbmcoZSkpdHJ5e3JldHVybih0fHxKU09OLnBhcnNlKShlKSxPZS50cmltKGUpfWNhdGNoKG4pe2lmKG4ubmFtZSE9PSJTeW50YXhFcnJvciIpdGhyb3cgbn1yZXR1cm4ocnx8SlNPTi5zdHJpbmdpZnkpKGUpfXZhciBacj17dHJhbnNpdGlvbmFsOktpLGFkYXB0ZXI6cWkoKSx0cmFuc2Zvcm1SZXF1ZXN0OltmdW5jdGlvbih0LHIpe2lmKEhzKHIsIkFjY2VwdCIpLEhzKHIsIkNvbnRlbnQtVHlwZSIpLE9lLmlzRm9ybURhdGEodCl8fE9lLmlzQXJyYXlCdWZmZXIodCl8fE9lLmlzQnVmZmVyKHQpfHxPZS5pc1N0cmVhbSh0KXx8T2UuaXNGaWxlKHQpfHxPZS5pc0Jsb2IodCkpcmV0dXJuIHQ7aWYoT2UuaXNBcnJheUJ1ZmZlclZpZXcodCkpcmV0dXJuIHQuYnVmZmVyO2lmKE9lLmlzVVJMU2VhcmNoUGFyYW1zKHQpKXJldHVybiBCcyhyLCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7Y2hhcnNldD11dGYtOCIpLHQudG9TdHJpbmcoKTt2YXIgbj1PZS5pc09iamVjdCh0KSxzPXImJnJbIkNvbnRlbnQtVHlwZSJdLGE7aWYoKGE9T2UuaXNGaWxlTGlzdCh0KSl8fG4mJnM9PT0ibXVsdGlwYXJ0L2Zvcm0tZGF0YSIpe3ZhciBvPXRoaXMuZW52JiZ0aGlzLmVudi5Gb3JtRGF0YTtyZXR1cm4gQmkoYT97ImZpbGVzW10iOnR9OnQsbyYmbmV3IG8pfWVsc2UgaWYobnx8cz09PSJhcHBsaWNhdGlvbi9qc29uIilyZXR1cm4gQnMociwiYXBwbGljYXRpb24vanNvbiIpLEdpKHQpO3JldHVybiB0fV0sdHJhbnNmb3JtUmVzcG9uc2U6W2Z1bmN0aW9uKHQpe3ZhciByPXRoaXMudHJhbnNpdGlvbmFsfHxaci50cmFuc2l0aW9uYWwsbj1yJiZyLnNpbGVudEpTT05QYXJzaW5nLHM9ciYmci5mb3JjZWRKU09OUGFyc2luZyxhPSFuJiZ0aGlzLnJlc3BvbnNlVHlwZT09PSJqc29uIjtpZihhfHxzJiZPZS5pc1N0cmluZyh0KSYmdC5sZW5ndGgpdHJ5e3JldHVybiBKU09OLnBhcnNlKHQpfWNhdGNoKG8pe2lmKGEpdGhyb3cgby5uYW1lPT09IlN5bnRheEVycm9yIj9Lcy5mcm9tKG8sS3MuRVJSX0JBRF9SRVNQT05TRSx0aGlzLG51bGwsdGhpcy5yZXNwb25zZSk6b31yZXR1cm4gdH1dLHRpbWVvdXQ6MCx4c3JmQ29va2llTmFtZToiWFNSRi1UT0tFTiIseHNyZkhlYWRlck5hbWU6IlgtWFNSRi1UT0tFTiIsbWF4Q29udGVudExlbmd0aDotMSxtYXhCb2R5TGVuZ3RoOi0xLGVudjp7Rm9ybURhdGE6SGl9LHZhbGlkYXRlU3RhdHVzOmZ1bmN0aW9uKHQpe3JldHVybiB0Pj0yMDAmJnQ8MzAwfSxoZWFkZXJzOntjb21tb246e0FjY2VwdDoiYXBwbGljYXRpb24vanNvbiwgdGV4dC9wbGFpbiwgKi8qIn19fTtPZS5mb3JFYWNoKFsiZGVsZXRlIiwiZ2V0IiwiaGVhZCJdLGZ1bmN0aW9uKHQpe1pyLmhlYWRlcnNbdF09e319KSxPZS5mb3JFYWNoKFsicG9zdCIsInB1dCIsInBhdGNoIl0sZnVuY3Rpb24odCl7WnIuaGVhZGVyc1t0XT1PZS5tZXJnZShKaSl9KTt2YXIgVW49WnIsUWk9UGUsWWk9VW4sV2k9ZnVuY3Rpb24odCxyLG4pe3ZhciBzPXRoaXN8fFlpO3JldHVybiBRaS5mb3JFYWNoKG4sZnVuY3Rpb24obyl7dD1vLmNhbGwocyx0LHIpfSksdH0sSnM9ZnVuY3Rpb24odCl7cmV0dXJuISEodCYmdC5fX0NBTkNFTF9fKX0scXM9UGUsRm49V2ksWGk9SnMsWmk9VW4seGk9WHI7ZnVuY3Rpb24gTW4oZSl7aWYoZS5jYW5jZWxUb2tlbiYmZS5jYW5jZWxUb2tlbi50aHJvd0lmUmVxdWVzdGVkKCksZS5zaWduYWwmJmUuc2lnbmFsLmFib3J0ZWQpdGhyb3cgbmV3IHhpfXZhciBlYz1mdW5jdGlvbih0KXtNbih0KSx0LmhlYWRlcnM9dC5oZWFkZXJzfHx7fSx0LmRhdGE9Rm4uY2FsbCh0LHQuZGF0YSx0LmhlYWRlcnMsdC50cmFuc2Zvcm1SZXF1ZXN0KSx0LmhlYWRlcnM9cXMubWVyZ2UodC5oZWFkZXJzLmNvbW1vbnx8e30sdC5oZWFkZXJzW3QubWV0aG9kXXx8e30sdC5oZWFkZXJzKSxxcy5mb3JFYWNoKFsiZGVsZXRlIiwiZ2V0IiwiaGVhZCIsInBvc3QiLCJwdXQiLCJwYXRjaCIsImNvbW1vbiJdLGZ1bmN0aW9uKHMpe2RlbGV0ZSB0LmhlYWRlcnNbc119KTt2YXIgcj10LmFkYXB0ZXJ8fFppLmFkYXB0ZXI7cmV0dXJuIHIodCkudGhlbihmdW5jdGlvbihzKXtyZXR1cm4gTW4odCkscy5kYXRhPUZuLmNhbGwodCxzLmRhdGEscy5oZWFkZXJzLHQudHJhbnNmb3JtUmVzcG9uc2UpLHN9LGZ1bmN0aW9uKHMpe3JldHVybiBYaShzKXx8KE1uKHQpLHMmJnMucmVzcG9uc2UmJihzLnJlc3BvbnNlLmRhdGE9Rm4uY2FsbCh0LHMucmVzcG9uc2UuZGF0YSxzLnJlc3BvbnNlLmhlYWRlcnMsdC50cmFuc2Zvcm1SZXNwb25zZSkpKSxQcm9taXNlLnJlamVjdChzKX0pfSxVZT1QZSxHcz1mdW5jdGlvbih0LHIpe3I9cnx8e307dmFyIG49e307ZnVuY3Rpb24gcyhpLGgpe3JldHVybiBVZS5pc1BsYWluT2JqZWN0KGkpJiZVZS5pc1BsYWluT2JqZWN0KGgpP1VlLm1lcmdlKGksaCk6VWUuaXNQbGFpbk9iamVjdChoKT9VZS5tZXJnZSh7fSxoKTpVZS5pc0FycmF5KGgpP2guc2xpY2UoKTpofWZ1bmN0aW9uIGEoaSl7aWYoVWUuaXNVbmRlZmluZWQocltpXSkpe2lmKCFVZS5pc1VuZGVmaW5lZCh0W2ldKSlyZXR1cm4gcyh2b2lkIDAsdFtpXSl9ZWxzZSByZXR1cm4gcyh0W2ldLHJbaV0pfWZ1bmN0aW9uIG8oaSl7aWYoIVVlLmlzVW5kZWZpbmVkKHJbaV0pKXJldHVybiBzKHZvaWQgMCxyW2ldKX1mdW5jdGlvbiBsKGkpe2lmKFVlLmlzVW5kZWZpbmVkKHJbaV0pKXtpZighVWUuaXNVbmRlZmluZWQodFtpXSkpcmV0dXJuIHModm9pZCAwLHRbaV0pfWVsc2UgcmV0dXJuIHModm9pZCAwLHJbaV0pfWZ1bmN0aW9uIGYoaSl7aWYoaSBpbiByKXJldHVybiBzKHRbaV0scltpXSk7aWYoaSBpbiB0KXJldHVybiBzKHZvaWQgMCx0W2ldKX12YXIgcD17dXJsOm8sbWV0aG9kOm8sZGF0YTpvLGJhc2VVUkw6bCx0cmFuc2Zvcm1SZXF1ZXN0OmwsdHJhbnNmb3JtUmVzcG9uc2U6bCxwYXJhbXNTZXJpYWxpemVyOmwsdGltZW91dDpsLHRpbWVvdXRNZXNzYWdlOmwsd2l0aENyZWRlbnRpYWxzOmwsYWRhcHRlcjpsLHJlc3BvbnNlVHlwZTpsLHhzcmZDb29raWVOYW1lOmwseHNyZkhlYWRlck5hbWU6bCxvblVwbG9hZFByb2dyZXNzOmwsb25Eb3dubG9hZFByb2dyZXNzOmwsZGVjb21wcmVzczpsLG1heENvbnRlbnRMZW5ndGg6bCxtYXhCb2R5TGVuZ3RoOmwsYmVmb3JlUmVkaXJlY3Q6bCx0cmFuc3BvcnQ6bCxodHRwQWdlbnQ6bCxodHRwc0FnZW50OmwsY2FuY2VsVG9rZW46bCxzb2NrZXRQYXRoOmwscmVzcG9uc2VFbmNvZGluZzpsLHZhbGlkYXRlU3RhdHVzOmZ9O3JldHVybiBVZS5mb3JFYWNoKE9iamVjdC5rZXlzKHQpLmNvbmNhdChPYmplY3Qua2V5cyhyKSksZnVuY3Rpb24oaCl7dmFyIEU9cFtoXXx8YSxUPUUoaCk7VWUuaXNVbmRlZmluZWQoVCkmJkUhPT1mfHwobltoXT1UKX0pLG59LFFzPXt2ZXJzaW9uOiIwLjI3LjIifSx0Yz1Rcy52ZXJzaW9uLGd0PVh0LExuPXt9O1sib2JqZWN0IiwiYm9vbGVhbiIsIm51bWJlciIsImZ1bmN0aW9uIiwic3RyaW5nIiwic3ltYm9sIl0uZm9yRWFjaChmdW5jdGlvbihlLHQpe0xuW2VdPWZ1bmN0aW9uKG4pe3JldHVybiB0eXBlb2Ygbj09PWV8fCJhIisodDwxPyJuICI6IiAiKStlfX0pO3ZhciBZcz17fTtMbi50cmFuc2l0aW9uYWw9ZnVuY3Rpb24odCxyLG4pe2Z1bmN0aW9uIHMoYSxvKXtyZXR1cm4iW0F4aW9zIHYiK3RjKyJdIFRyYW5zaXRpb25hbCBvcHRpb24gJyIrYSsiJyIrbysobj8iLiAiK246IiIpfXJldHVybiBmdW5jdGlvbihhLG8sbCl7aWYodD09PSExKXRocm93IG5ldyBndChzKG8sIiBoYXMgYmVlbiByZW1vdmVkIisocj8iIGluICIrcjoiIikpLGd0LkVSUl9ERVBSRUNBVEVEKTtyZXR1cm4gciYmIVlzW29dJiYoWXNbb109ITAsY29uc29sZS53YXJuKHMobywiIGhhcyBiZWVuIGRlcHJlY2F0ZWQgc2luY2UgdiIrcisiIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIG5lYXIgZnV0dXJlIikpKSx0P3QoYSxvLGwpOiEwfX07ZnVuY3Rpb24gcmMoZSx0LHIpe2lmKHR5cGVvZiBlIT0ib2JqZWN0Iil0aHJvdyBuZXcgZ3QoIm9wdGlvbnMgbXVzdCBiZSBhbiBvYmplY3QiLGd0LkVSUl9CQURfT1BUSU9OX1ZBTFVFKTtmb3IodmFyIG49T2JqZWN0LmtleXMoZSkscz1uLmxlbmd0aDtzLS0gPjA7KXt2YXIgYT1uW3NdLG89dFthXTtpZihvKXt2YXIgbD1lW2FdLGY9bD09PXZvaWQgMHx8byhsLGEsZSk7aWYoZiE9PSEwKXRocm93IG5ldyBndCgib3B0aW9uICIrYSsiIG11c3QgYmUgIitmLGd0LkVSUl9CQURfT1BUSU9OX1ZBTFVFKTtjb250aW51ZX1pZihyIT09ITApdGhyb3cgbmV3IGd0KCJVbmtub3duIG9wdGlvbiAiK2EsZ3QuRVJSX0JBRF9PUFRJT04pfX12YXIgbmM9e2Fzc2VydE9wdGlvbnM6cmMsdmFsaWRhdG9yczpMbn0sV3M9UGUsc2M9SXMsWHM9Z2ksWnM9ZWMseHI9R3MsYWM9TXMseHM9bmMsWnQ9eHMudmFsaWRhdG9ycztmdW5jdGlvbiB4dChlKXt0aGlzLmRlZmF1bHRzPWUsdGhpcy5pbnRlcmNlcHRvcnM9e3JlcXVlc3Q6bmV3IFhzLHJlc3BvbnNlOm5ldyBYc319eHQucHJvdG90eXBlLnJlcXVlc3Q9ZnVuY3Rpb24odCxyKXt0eXBlb2YgdD09InN0cmluZyI/KHI9cnx8e30sci51cmw9dCk6cj10fHx7fSxyPXhyKHRoaXMuZGVmYXVsdHMsciksci5tZXRob2Q/ci5tZXRob2Q9ci5tZXRob2QudG9Mb3dlckNhc2UoKTp0aGlzLmRlZmF1bHRzLm1ldGhvZD9yLm1ldGhvZD10aGlzLmRlZmF1bHRzLm1ldGhvZC50b0xvd2VyQ2FzZSgpOnIubWV0aG9kPSJnZXQiO3ZhciBuPXIudHJhbnNpdGlvbmFsO24hPT12b2lkIDAmJnhzLmFzc2VydE9wdGlvbnMobix7c2lsZW50SlNPTlBhcnNpbmc6WnQudHJhbnNpdGlvbmFsKFp0LmJvb2xlYW4pLGZvcmNlZEpTT05QYXJzaW5nOlp0LnRyYW5zaXRpb25hbChadC5ib29sZWFuKSxjbGFyaWZ5VGltZW91dEVycm9yOlp0LnRyYW5zaXRpb25hbChadC5ib29sZWFuKX0sITEpO3ZhciBzPVtdLGE9ITA7dGhpcy5pbnRlcmNlcHRvcnMucmVxdWVzdC5mb3JFYWNoKGZ1bmN0aW9uKFQpe3R5cGVvZiBULnJ1bldoZW49PSJmdW5jdGlvbiImJlQucnVuV2hlbihyKT09PSExfHwoYT1hJiZULnN5bmNocm9ub3VzLHMudW5zaGlmdChULmZ1bGZpbGxlZCxULnJlamVjdGVkKSl9KTt2YXIgbz1bXTt0aGlzLmludGVyY2VwdG9ycy5yZXNwb25zZS5mb3JFYWNoKGZ1bmN0aW9uKFQpe28ucHVzaChULmZ1bGZpbGxlZCxULnJlamVjdGVkKX0pO3ZhciBsO2lmKCFhKXt2YXIgZj1bWnMsdm9pZCAwXTtmb3IoQXJyYXkucHJvdG90eXBlLnVuc2hpZnQuYXBwbHkoZixzKSxmPWYuY29uY2F0KG8pLGw9UHJvbWlzZS5yZXNvbHZlKHIpO2YubGVuZ3RoOylsPWwudGhlbihmLnNoaWZ0KCksZi5zaGlmdCgpKTtyZXR1cm4gbH1mb3IodmFyIHA9cjtzLmxlbmd0aDspe3ZhciBpPXMuc2hpZnQoKSxoPXMuc2hpZnQoKTt0cnl7cD1pKHApfWNhdGNoKEUpe2goRSk7YnJlYWt9fXRyeXtsPVpzKHApfWNhdGNoKEUpe3JldHVybiBQcm9taXNlLnJlamVjdChFKX1mb3IoO28ubGVuZ3RoOylsPWwudGhlbihvLnNoaWZ0KCksby5zaGlmdCgpKTtyZXR1cm4gbH0seHQucHJvdG90eXBlLmdldFVyaT1mdW5jdGlvbih0KXt0PXhyKHRoaXMuZGVmYXVsdHMsdCk7dmFyIHI9YWModC5iYXNlVVJMLHQudXJsKTtyZXR1cm4gc2Mocix0LnBhcmFtcyx0LnBhcmFtc1NlcmlhbGl6ZXIpfSxXcy5mb3JFYWNoKFsiZGVsZXRlIiwiZ2V0IiwiaGVhZCIsIm9wdGlvbnMiXSxmdW5jdGlvbih0KXt4dC5wcm90b3R5cGVbdF09ZnVuY3Rpb24ocixuKXtyZXR1cm4gdGhpcy5yZXF1ZXN0KHhyKG58fHt9LHttZXRob2Q6dCx1cmw6cixkYXRhOihufHx7fSkuZGF0YX0pKX19KSxXcy5mb3JFYWNoKFsicG9zdCIsInB1dCIsInBhdGNoIl0sZnVuY3Rpb24odCl7ZnVuY3Rpb24gcihuKXtyZXR1cm4gZnVuY3Rpb24oYSxvLGwpe3JldHVybiB0aGlzLnJlcXVlc3QoeHIobHx8e30se21ldGhvZDp0LGhlYWRlcnM6bj97IkNvbnRlbnQtVHlwZSI6Im11bHRpcGFydC9mb3JtLWRhdGEifTp7fSx1cmw6YSxkYXRhOm99KSl9fXh0LnByb3RvdHlwZVt0XT1yKCkseHQucHJvdG90eXBlW3QrIkZvcm0iXT1yKCEwKX0pO3ZhciBvYz14dCxpYz1YcjtmdW5jdGlvbiBlcihlKXtpZih0eXBlb2YgZSE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgVHlwZUVycm9yKCJleGVjdXRvciBtdXN0IGJlIGEgZnVuY3Rpb24uIik7dmFyIHQ7dGhpcy5wcm9taXNlPW5ldyBQcm9taXNlKGZ1bmN0aW9uKHMpe3Q9c30pO3ZhciByPXRoaXM7dGhpcy5wcm9taXNlLnRoZW4oZnVuY3Rpb24obil7aWYoISFyLl9saXN0ZW5lcnMpe3ZhciBzLGE9ci5fbGlzdGVuZXJzLmxlbmd0aDtmb3Iocz0wO3M8YTtzKyspci5fbGlzdGVuZXJzW3NdKG4pO3IuX2xpc3RlbmVycz1udWxsfX0pLHRoaXMucHJvbWlzZS50aGVuPWZ1bmN0aW9uKG4pe3ZhciBzLGE9bmV3IFByb21pc2UoZnVuY3Rpb24obyl7ci5zdWJzY3JpYmUobykscz1vfSkudGhlbihuKTtyZXR1cm4gYS5jYW5jZWw9ZnVuY3Rpb24oKXtyLnVuc3Vic2NyaWJlKHMpfSxhfSxlKGZ1bmN0aW9uKHMpe3IucmVhc29ufHwoci5yZWFzb249bmV3IGljKHMpLHQoci5yZWFzb24pKX0pfWVyLnByb3RvdHlwZS50aHJvd0lmUmVxdWVzdGVkPWZ1bmN0aW9uKCl7aWYodGhpcy5yZWFzb24pdGhyb3cgdGhpcy5yZWFzb259LGVyLnByb3RvdHlwZS5zdWJzY3JpYmU9ZnVuY3Rpb24odCl7aWYodGhpcy5yZWFzb24pe3QodGhpcy5yZWFzb24pO3JldHVybn10aGlzLl9saXN0ZW5lcnM/dGhpcy5fbGlzdGVuZXJzLnB1c2godCk6dGhpcy5fbGlzdGVuZXJzPVt0XX0sZXIucHJvdG90eXBlLnVuc3Vic2NyaWJlPWZ1bmN0aW9uKHQpe2lmKCEhdGhpcy5fbGlzdGVuZXJzKXt2YXIgcj10aGlzLl9saXN0ZW5lcnMuaW5kZXhPZih0KTtyIT09LTEmJnRoaXMuX2xpc3RlbmVycy5zcGxpY2UociwxKX19LGVyLnNvdXJjZT1mdW5jdGlvbigpe3ZhciB0LHI9bmV3IGVyKGZ1bmN0aW9uKHMpe3Q9c30pO3JldHVybnt0b2tlbjpyLGNhbmNlbDp0fX07dmFyIGNjPWVyLHVjPWZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihuKXtyZXR1cm4gdC5hcHBseShudWxsLG4pfX0sbGM9UGUsZmM9ZnVuY3Rpb24odCl7cmV0dXJuIGxjLmlzT2JqZWN0KHQpJiZ0LmlzQXhpb3NFcnJvcj09PSEwfSxlYT1QZSxkYz1Qcyxlbj1vYyxoYz1HcyxwYz1VbjtmdW5jdGlvbiB0YShlKXt2YXIgdD1uZXcgZW4oZSkscj1kYyhlbi5wcm90b3R5cGUucmVxdWVzdCx0KTtyZXR1cm4gZWEuZXh0ZW5kKHIsZW4ucHJvdG90eXBlLHQpLGVhLmV4dGVuZChyLHQpLHIuY3JlYXRlPWZ1bmN0aW9uKHMpe3JldHVybiB0YShoYyhlLHMpKX0scn12YXIgRGU9dGEocGMpO0RlLkF4aW9zPWVuLERlLkNhbmNlbGVkRXJyb3I9WHIsRGUuQ2FuY2VsVG9rZW49Y2MsRGUuaXNDYW5jZWw9SnMsRGUuVkVSU0lPTj1Rcy52ZXJzaW9uLERlLnRvRm9ybURhdGE9RnMsRGUuQXhpb3NFcnJvcj1YdCxEZS5DYW5jZWw9RGUuQ2FuY2VsZWRFcnJvcixEZS5hbGw9ZnVuY3Rpb24odCl7cmV0dXJuIFByb21pc2UuYWxsKHQpfSxEZS5zcHJlYWQ9dWMsRGUuaXNBeGlvc0Vycm9yPWZjLE9uLmV4cG9ydHM9RGUsT24uZXhwb3J0cy5kZWZhdWx0PURlO3ZhciBWbj1Pbi5leHBvcnRzLEN0PXt9LHRuPXt9O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0biwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksdG4uR2V0RXJyb3JQYXlsb2FkPXZvaWQgMDtmdW5jdGlvbiBtYyhlLHQ9bnVsbCl7cmV0dXJue2Vycm9yOmUuY29kZSxlcnJvcl9kZXNjcmlwdGlvbjplLmRlc2NyaXB0aW9uLHRpbWVzdGFtcDpEYXRlLm5vdygpLGRldGFpbHM6dH19dG4uR2V0RXJyb3JQYXlsb2FkPW1jO3ZhciBybj17fSxJdD17fSx6bj17ZXhwb3J0czp7fX0scmE9e30sV2U9e30sdHI9e30sRXI9e30sdWU9e30seXI9e307KGZ1bmN0aW9uKGUpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxlLnJlZ2V4cENvZGU9ZS5nZXRFc21FeHBvcnROYW1lPWUuZ2V0UHJvcGVydHk9ZS5zYWZlU3RyaW5naWZ5PWUuc3RyaW5naWZ5PWUuc3RyQ29uY2F0PWUuYWRkQ29kZUFyZz1lLnN0cj1lLl89ZS5uaWw9ZS5fQ29kZT1lLk5hbWU9ZS5JREVOVElGSUVSPWUuX0NvZGVPck5hbWU9dm9pZCAwO2NsYXNzIHR7fWUuX0NvZGVPck5hbWU9dCxlLklERU5USUZJRVI9L15bYS16JF9dW2EteiRfMC05XSokL2k7Y2xhc3MgciBleHRlbmRzIHR7Y29uc3RydWN0b3IoYil7aWYoc3VwZXIoKSwhZS5JREVOVElGSUVSLnRlc3QoYikpdGhyb3cgbmV3IEVycm9yKCJDb2RlR2VuOiBuYW1lIG11c3QgYmUgYSB2YWxpZCBpZGVudGlmaWVyIik7dGhpcy5zdHI9Yn10b1N0cmluZygpe3JldHVybiB0aGlzLnN0cn1lbXB0eVN0cigpe3JldHVybiExfWdldCBuYW1lcygpe3JldHVybntbdGhpcy5zdHJdOjF9fX1lLk5hbWU9cjtjbGFzcyBuIGV4dGVuZHMgdHtjb25zdHJ1Y3RvcihiKXtzdXBlcigpLHRoaXMuX2l0ZW1zPXR5cGVvZiBiPT0ic3RyaW5nIj9bYl06Yn10b1N0cmluZygpe3JldHVybiB0aGlzLnN0cn1lbXB0eVN0cigpe2lmKHRoaXMuX2l0ZW1zLmxlbmd0aD4xKXJldHVybiExO2NvbnN0IGI9dGhpcy5faXRlbXNbMF07cmV0dXJuIGI9PT0iInx8Yj09PSciIid9Z2V0IHN0cigpe3ZhciBiO3JldHVybihiPXRoaXMuX3N0cikhPT1udWxsJiZiIT09dm9pZCAwP2I6dGhpcy5fc3RyPXRoaXMuX2l0ZW1zLnJlZHVjZSgoTyxBKT0+YCR7T30ke0F9YCwiIil9Z2V0IG5hbWVzKCl7dmFyIGI7cmV0dXJuKGI9dGhpcy5fbmFtZXMpIT09bnVsbCYmYiE9PXZvaWQgMD9iOnRoaXMuX25hbWVzPXRoaXMuX2l0ZW1zLnJlZHVjZSgoTyxBKT0+KEEgaW5zdGFuY2VvZiByJiYoT1tBLnN0cl09KE9bQS5zdHJdfHwwKSsxKSxPKSx7fSl9fWUuX0NvZGU9bixlLm5pbD1uZXcgbigiIik7ZnVuY3Rpb24gcyhfLC4uLmIpe2NvbnN0IE89W19bMF1dO2xldCBBPTA7Zm9yKDtBPGIubGVuZ3RoOylsKE8sYltBXSksTy5wdXNoKF9bKytBXSk7cmV0dXJuIG5ldyBuKE8pfWUuXz1zO2NvbnN0IGE9bmV3IG4oIisiKTtmdW5jdGlvbiBvKF8sLi4uYil7Y29uc3QgTz1bVChfWzBdKV07bGV0IEE9MDtmb3IoO0E8Yi5sZW5ndGg7KU8ucHVzaChhKSxsKE8sYltBXSksTy5wdXNoKGEsVChfWysrQV0pKTtyZXR1cm4gZihPKSxuZXcgbihPKX1lLnN0cj1vO2Z1bmN0aW9uIGwoXyxiKXtiIGluc3RhbmNlb2Ygbj9fLnB1c2goLi4uYi5faXRlbXMpOmIgaW5zdGFuY2VvZiByP18ucHVzaChiKTpfLnB1c2goaChiKSl9ZS5hZGRDb2RlQXJnPWw7ZnVuY3Rpb24gZihfKXtsZXQgYj0xO2Zvcig7YjxfLmxlbmd0aC0xOyl7aWYoX1tiXT09PWEpe2NvbnN0IE89cChfW2ItMV0sX1tiKzFdKTtpZihPIT09dm9pZCAwKXtfLnNwbGljZShiLTEsMyxPKTtjb250aW51ZX1fW2IrK109IisifWIrK319ZnVuY3Rpb24gcChfLGIpe2lmKGI9PT0nIiInKXJldHVybiBfO2lmKF89PT0nIiInKXJldHVybiBiO2lmKHR5cGVvZiBfPT0ic3RyaW5nIilyZXR1cm4gYiBpbnN0YW5jZW9mIHJ8fF9bXy5sZW5ndGgtMV0hPT0nIic/dm9pZCAwOnR5cGVvZiBiIT0ic3RyaW5nIj9gJHtfLnNsaWNlKDAsLTEpfSR7Yn0iYDpiWzBdPT09JyInP18uc2xpY2UoMCwtMSkrYi5zbGljZSgxKTp2b2lkIDA7aWYodHlwZW9mIGI9PSJzdHJpbmciJiZiWzBdPT09JyInJiYhKF8gaW5zdGFuY2VvZiByKSlyZXR1cm5gIiR7X30ke2Iuc2xpY2UoMSl9YH1mdW5jdGlvbiBpKF8sYil7cmV0dXJuIGIuZW1wdHlTdHIoKT9fOl8uZW1wdHlTdHIoKT9iOm9gJHtffSR7Yn1gfWUuc3RyQ29uY2F0PWk7ZnVuY3Rpb24gaChfKXtyZXR1cm4gdHlwZW9mIF89PSJudW1iZXIifHx0eXBlb2YgXz09ImJvb2xlYW4ifHxfPT09bnVsbD9fOlQoQXJyYXkuaXNBcnJheShfKT9fLmpvaW4oIiwiKTpfKX1mdW5jdGlvbiBFKF8pe3JldHVybiBuZXcgbihUKF8pKX1lLnN0cmluZ2lmeT1FO2Z1bmN0aW9uIFQoXyl7cmV0dXJuIEpTT04uc3RyaW5naWZ5KF8pLnJlcGxhY2UoL1x1MjAyOC9nLCJcXHUyMDI4IikucmVwbGFjZSgvXHUyMDI5L2csIlxcdTIwMjkiKX1lLnNhZmVTdHJpbmdpZnk9VDtmdW5jdGlvbiBJKF8pe3JldHVybiB0eXBlb2YgXz09InN0cmluZyImJmUuSURFTlRJRklFUi50ZXN0KF8pP25ldyBuKGAuJHtffWApOnNgWyR7X31dYH1lLmdldFByb3BlcnR5PUk7ZnVuY3Rpb24gaihfKXtpZih0eXBlb2YgXz09InN0cmluZyImJmUuSURFTlRJRklFUi50ZXN0KF8pKXJldHVybiBuZXcgbihgJHtffWApO3Rocm93IG5ldyBFcnJvcihgQ29kZUdlbjogaW52YWxpZCBleHBvcnQgbmFtZTogJHtffSwgdXNlIGV4cGxpY2l0ICRpZCBuYW1lIG1hcHBpbmdgKX1lLmdldEVzbUV4cG9ydE5hbWU9ajtmdW5jdGlvbiB5KF8pe3JldHVybiBuZXcgbihfLnRvU3RyaW5nKCkpfWUucmVnZXhwQ29kZT15fSkoeXIpO3ZhciBIbj17fTsoZnVuY3Rpb24oZSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLGUuVmFsdWVTY29wZT1lLlZhbHVlU2NvcGVOYW1lPWUuU2NvcGU9ZS52YXJLaW5kcz1lLlVzZWRWYWx1ZVN0YXRlPXZvaWQgMDtjb25zdCB0PXlyO2NsYXNzIHIgZXh0ZW5kcyBFcnJvcntjb25zdHJ1Y3RvcihwKXtzdXBlcihgQ29kZUdlbjogImNvZGUiIGZvciAke3B9IG5vdCBkZWZpbmVkYCksdGhpcy52YWx1ZT1wLnZhbHVlfX12YXIgbjsoZnVuY3Rpb24oZil7ZltmLlN0YXJ0ZWQ9MF09IlN0YXJ0ZWQiLGZbZi5Db21wbGV0ZWQ9MV09IkNvbXBsZXRlZCJ9KShuPWUuVXNlZFZhbHVlU3RhdGV8fChlLlVzZWRWYWx1ZVN0YXRlPXt9KSksZS52YXJLaW5kcz17Y29uc3Q6bmV3IHQuTmFtZSgiY29uc3QiKSxsZXQ6bmV3IHQuTmFtZSgibGV0IiksdmFyOm5ldyB0Lk5hbWUoInZhciIpfTtjbGFzcyBze2NvbnN0cnVjdG9yKHtwcmVmaXhlczpwLHBhcmVudDppfT17fSl7dGhpcy5fbmFtZXM9e30sdGhpcy5fcHJlZml4ZXM9cCx0aGlzLl9wYXJlbnQ9aX10b05hbWUocCl7cmV0dXJuIHAgaW5zdGFuY2VvZiB0Lk5hbWU/cDp0aGlzLm5hbWUocCl9bmFtZShwKXtyZXR1cm4gbmV3IHQuTmFtZSh0aGlzLl9uZXdOYW1lKHApKX1fbmV3TmFtZShwKXtjb25zdCBpPXRoaXMuX25hbWVzW3BdfHx0aGlzLl9uYW1lR3JvdXAocCk7cmV0dXJuYCR7cH0ke2kuaW5kZXgrK31gfV9uYW1lR3JvdXAocCl7dmFyIGksaDtpZigoKGg9KGk9dGhpcy5fcGFyZW50KT09PW51bGx8fGk9PT12b2lkIDA/dm9pZCAwOmkuX3ByZWZpeGVzKT09PW51bGx8fGg9PT12b2lkIDA/dm9pZCAwOmguaGFzKHApKXx8dGhpcy5fcHJlZml4ZXMmJiF0aGlzLl9wcmVmaXhlcy5oYXMocCkpdGhyb3cgbmV3IEVycm9yKGBDb2RlR2VuOiBwcmVmaXggIiR7cH0iIGlzIG5vdCBhbGxvd2VkIGluIHRoaXMgc2NvcGVgKTtyZXR1cm4gdGhpcy5fbmFtZXNbcF09e3ByZWZpeDpwLGluZGV4OjB9fX1lLlNjb3BlPXM7Y2xhc3MgYSBleHRlbmRzIHQuTmFtZXtjb25zdHJ1Y3RvcihwLGkpe3N1cGVyKGkpLHRoaXMucHJlZml4PXB9c2V0VmFsdWUocCx7cHJvcGVydHk6aSxpdGVtSW5kZXg6aH0pe3RoaXMudmFsdWU9cCx0aGlzLnNjb3BlUGF0aD0oMCx0Ll8pYC4ke25ldyB0Lk5hbWUoaSl9WyR7aH1dYH19ZS5WYWx1ZVNjb3BlTmFtZT1hO2NvbnN0IG89KDAsdC5fKWBcbmA7Y2xhc3MgbCBleHRlbmRzIHN7Y29uc3RydWN0b3IocCl7c3VwZXIocCksdGhpcy5fdmFsdWVzPXt9LHRoaXMuX3Njb3BlPXAuc2NvcGUsdGhpcy5vcHRzPWxlKFEoe30scCkse19uOnAubGluZXM/bzp0Lm5pbH0pfWdldCgpe3JldHVybiB0aGlzLl9zY29wZX1uYW1lKHApe3JldHVybiBuZXcgYShwLHRoaXMuX25ld05hbWUocCkpfXZhbHVlKHAsaSl7dmFyIGg7aWYoaS5yZWY9PT12b2lkIDApdGhyb3cgbmV3IEVycm9yKCJDb2RlR2VuOiByZWYgbXVzdCBiZSBwYXNzZWQgaW4gdmFsdWUiKTtjb25zdCBFPXRoaXMudG9OYW1lKHApLHtwcmVmaXg6VH09RSxJPShoPWkua2V5KSE9PW51bGwmJmghPT12b2lkIDA/aDppLnJlZjtsZXQgaj10aGlzLl92YWx1ZXNbVF07aWYoail7Y29uc3QgYj1qLmdldChJKTtpZihiKXJldHVybiBifWVsc2Ugaj10aGlzLl92YWx1ZXNbVF09bmV3IE1hcDtqLnNldChJLEUpO2NvbnN0IHk9dGhpcy5fc2NvcGVbVF18fCh0aGlzLl9zY29wZVtUXT1bXSksXz15Lmxlbmd0aDtyZXR1cm4geVtfXT1pLnJlZixFLnNldFZhbHVlKGkse3Byb3BlcnR5OlQsaXRlbUluZGV4Ol99KSxFfWdldFZhbHVlKHAsaSl7Y29uc3QgaD10aGlzLl92YWx1ZXNbcF07aWYoISFoKXJldHVybiBoLmdldChpKX1zY29wZVJlZnMocCxpPXRoaXMuX3ZhbHVlcyl7cmV0dXJuIHRoaXMuX3JlZHVjZVZhbHVlcyhpLGg9PntpZihoLnNjb3BlUGF0aD09PXZvaWQgMCl0aHJvdyBuZXcgRXJyb3IoYENvZGVHZW46IG5hbWUgIiR7aH0iIGhhcyBubyB2YWx1ZWApO3JldHVybigwLHQuXylgJHtwfSR7aC5zY29wZVBhdGh9YH0pfXNjb3BlQ29kZShwPXRoaXMuX3ZhbHVlcyxpLGgpe3JldHVybiB0aGlzLl9yZWR1Y2VWYWx1ZXMocCxFPT57aWYoRS52YWx1ZT09PXZvaWQgMCl0aHJvdyBuZXcgRXJyb3IoYENvZGVHZW46IG5hbWUgIiR7RX0iIGhhcyBubyB2YWx1ZWApO3JldHVybiBFLnZhbHVlLmNvZGV9LGksaCl9X3JlZHVjZVZhbHVlcyhwLGksaD17fSxFKXtsZXQgVD10Lm5pbDtmb3IoY29uc3QgSSBpbiBwKXtjb25zdCBqPXBbSV07aWYoIWopY29udGludWU7Y29uc3QgeT1oW0ldPWhbSV18fG5ldyBNYXA7ai5mb3JFYWNoKF89PntpZih5LmhhcyhfKSlyZXR1cm47eS5zZXQoXyxuLlN0YXJ0ZWQpO2xldCBiPWkoXyk7aWYoYil7Y29uc3QgTz10aGlzLm9wdHMuZXM1P2UudmFyS2luZHMudmFyOmUudmFyS2luZHMuY29uc3Q7VD0oMCx0Ll8pYCR7VH0ke099ICR7X30gPSAke2J9OyR7dGhpcy5vcHRzLl9ufWB9ZWxzZSBpZihiPUU9PW51bGw/dm9pZCAwOkUoXykpVD0oMCx0Ll8pYCR7VH0ke2J9JHt0aGlzLm9wdHMuX259YDtlbHNlIHRocm93IG5ldyByKF8pO3kuc2V0KF8sbi5Db21wbGV0ZWQpfSl9cmV0dXJuIFR9fWUuVmFsdWVTY29wZT1sfSkoSG4pLGZ1bmN0aW9uKGUpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxlLm9yPWUuYW5kPWUubm90PWUuQ29kZUdlbj1lLm9wZXJhdG9ycz1lLnZhcktpbmRzPWUuVmFsdWVTY29wZU5hbWU9ZS5WYWx1ZVNjb3BlPWUuU2NvcGU9ZS5OYW1lPWUucmVnZXhwQ29kZT1lLnN0cmluZ2lmeT1lLmdldFByb3BlcnR5PWUubmlsPWUuc3RyQ29uY2F0PWUuc3RyPWUuXz12b2lkIDA7Y29uc3QgdD15cixyPUhuO3ZhciBuPXlyO09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbi5ffX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJzdHIiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBuLnN0cn19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwic3RyQ29uY2F0Iix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbi5zdHJDb25jYXR9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIm5pbCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG4ubmlsfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJnZXRQcm9wZXJ0eSIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG4uZ2V0UHJvcGVydHl9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsInN0cmluZ2lmeSIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG4uc3RyaW5naWZ5fX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJyZWdleHBDb2RlIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbi5yZWdleHBDb2RlfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJOYW1lIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbi5OYW1lfX0pO3ZhciBzPUhuO09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJTY29wZSIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHMuU2NvcGV9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIlZhbHVlU2NvcGUiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBzLlZhbHVlU2NvcGV9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIlZhbHVlU2NvcGVOYW1lIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gcy5WYWx1ZVNjb3BlTmFtZX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwidmFyS2luZHMiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBzLnZhcktpbmRzfX0pLGUub3BlcmF0b3JzPXtHVDpuZXcgdC5fQ29kZSgiPiIpLEdURTpuZXcgdC5fQ29kZSgiPj0iKSxMVDpuZXcgdC5fQ29kZSgiPCIpLExURTpuZXcgdC5fQ29kZSgiPD0iKSxFUTpuZXcgdC5fQ29kZSgiPT09IiksTkVROm5ldyB0Ll9Db2RlKCIhPT0iKSxOT1Q6bmV3IHQuX0NvZGUoIiEiKSxPUjpuZXcgdC5fQ29kZSgifHwiKSxBTkQ6bmV3IHQuX0NvZGUoIiYmIiksQUREOm5ldyB0Ll9Db2RlKCIrIil9O2NsYXNzIGF7b3B0aW1pemVOb2Rlcygpe3JldHVybiB0aGlzfW9wdGltaXplTmFtZXMoYyxtKXtyZXR1cm4gdGhpc319Y2xhc3MgbyBleHRlbmRzIGF7Y29uc3RydWN0b3IoYyxtLFApe3N1cGVyKCksdGhpcy52YXJLaW5kPWMsdGhpcy5uYW1lPW0sdGhpcy5yaHM9UH1yZW5kZXIoe2VzNTpjLF9uOm19KXtjb25zdCBQPWM/ci52YXJLaW5kcy52YXI6dGhpcy52YXJLaW5kLFU9dGhpcy5yaHM9PT12b2lkIDA/IiI6YCA9ICR7dGhpcy5yaHN9YDtyZXR1cm5gJHtQfSAke3RoaXMubmFtZX0ke1V9O2ArbX1vcHRpbWl6ZU5hbWVzKGMsbSl7aWYoISFjW3RoaXMubmFtZS5zdHJdKXJldHVybiB0aGlzLnJocyYmKHRoaXMucmhzPVgodGhpcy5yaHMsYyxtKSksdGhpc31nZXQgbmFtZXMoKXtyZXR1cm4gdGhpcy5yaHMgaW5zdGFuY2VvZiB0Ll9Db2RlT3JOYW1lP3RoaXMucmhzLm5hbWVzOnt9fX1jbGFzcyBsIGV4dGVuZHMgYXtjb25zdHJ1Y3RvcihjLG0sUCl7c3VwZXIoKSx0aGlzLmxocz1jLHRoaXMucmhzPW0sdGhpcy5zaWRlRWZmZWN0cz1QfXJlbmRlcih7X246Y30pe3JldHVybmAke3RoaXMubGhzfSA9ICR7dGhpcy5yaHN9O2ArY31vcHRpbWl6ZU5hbWVzKGMsbSl7aWYoISh0aGlzLmxocyBpbnN0YW5jZW9mIHQuTmFtZSYmIWNbdGhpcy5saHMuc3RyXSYmIXRoaXMuc2lkZUVmZmVjdHMpKXJldHVybiB0aGlzLnJocz1YKHRoaXMucmhzLGMsbSksdGhpc31nZXQgbmFtZXMoKXtjb25zdCBjPXRoaXMubGhzIGluc3RhbmNlb2YgdC5OYW1lP3t9OlEoe30sdGhpcy5saHMubmFtZXMpO3JldHVybiBvZShjLHRoaXMucmhzKX19Y2xhc3MgZiBleHRlbmRzIGx7Y29uc3RydWN0b3IoYyxtLFAsVSl7c3VwZXIoYyxQLFUpLHRoaXMub3A9bX1yZW5kZXIoe19uOmN9KXtyZXR1cm5gJHt0aGlzLmxoc30gJHt0aGlzLm9wfT0gJHt0aGlzLnJoc307YCtjfX1jbGFzcyBwIGV4dGVuZHMgYXtjb25zdHJ1Y3RvcihjKXtzdXBlcigpLHRoaXMubGFiZWw9Yyx0aGlzLm5hbWVzPXt9fXJlbmRlcih7X246Y30pe3JldHVybmAke3RoaXMubGFiZWx9OmArY319Y2xhc3MgaSBleHRlbmRzIGF7Y29uc3RydWN0b3IoYyl7c3VwZXIoKSx0aGlzLmxhYmVsPWMsdGhpcy5uYW1lcz17fX1yZW5kZXIoe19uOmN9KXtyZXR1cm5gYnJlYWske3RoaXMubGFiZWw/YCAke3RoaXMubGFiZWx9YDoiIn07YCtjfX1jbGFzcyBoIGV4dGVuZHMgYXtjb25zdHJ1Y3RvcihjKXtzdXBlcigpLHRoaXMuZXJyb3I9Y31yZW5kZXIoe19uOmN9KXtyZXR1cm5gdGhyb3cgJHt0aGlzLmVycm9yfTtgK2N9Z2V0IG5hbWVzKCl7cmV0dXJuIHRoaXMuZXJyb3IubmFtZXN9fWNsYXNzIEUgZXh0ZW5kcyBhe2NvbnN0cnVjdG9yKGMpe3N1cGVyKCksdGhpcy5jb2RlPWN9cmVuZGVyKHtfbjpjfSl7cmV0dXJuYCR7dGhpcy5jb2RlfTtgK2N9b3B0aW1pemVOb2Rlcygpe3JldHVybmAke3RoaXMuY29kZX1gP3RoaXM6dm9pZCAwfW9wdGltaXplTmFtZXMoYyxtKXtyZXR1cm4gdGhpcy5jb2RlPVgodGhpcy5jb2RlLGMsbSksdGhpc31nZXQgbmFtZXMoKXtyZXR1cm4gdGhpcy5jb2RlIGluc3RhbmNlb2YgdC5fQ29kZU9yTmFtZT90aGlzLmNvZGUubmFtZXM6e319fWNsYXNzIFQgZXh0ZW5kcyBhe2NvbnN0cnVjdG9yKGM9W10pe3N1cGVyKCksdGhpcy5ub2Rlcz1jfXJlbmRlcihjKXtyZXR1cm4gdGhpcy5ub2Rlcy5yZWR1Y2UoKG0sUCk9Pm0rUC5yZW5kZXIoYyksIiIpfW9wdGltaXplTm9kZXMoKXtjb25zdHtub2RlczpjfT10aGlzO2xldCBtPWMubGVuZ3RoO2Zvcig7bS0tOyl7Y29uc3QgUD1jW21dLm9wdGltaXplTm9kZXMoKTtBcnJheS5pc0FycmF5KFApP2Muc3BsaWNlKG0sMSwuLi5QKTpQP2NbbV09UDpjLnNwbGljZShtLDEpfXJldHVybiBjLmxlbmd0aD4wP3RoaXM6dm9pZCAwfW9wdGltaXplTmFtZXMoYyxtKXtjb25zdHtub2RlczpQfT10aGlzO2xldCBVPVAubGVuZ3RoO2Zvcig7VS0tOyl7Y29uc3QgRj1QW1VdO0Yub3B0aW1pemVOYW1lcyhjLG0pfHwodmUoYyxGLm5hbWVzKSxQLnNwbGljZShVLDEpKX1yZXR1cm4gUC5sZW5ndGg+MD90aGlzOnZvaWQgMH1nZXQgbmFtZXMoKXtyZXR1cm4gdGhpcy5ub2Rlcy5yZWR1Y2UoKGMsbSk9PlcoYyxtLm5hbWVzKSx7fSl9fWNsYXNzIEkgZXh0ZW5kcyBUe3JlbmRlcihjKXtyZXR1cm4ieyIrYy5fbitzdXBlci5yZW5kZXIoYykrIn0iK2MuX259fWNsYXNzIGogZXh0ZW5kcyBUe31jbGFzcyB5IGV4dGVuZHMgSXt9eS5raW5kPSJlbHNlIjtjbGFzcyBfIGV4dGVuZHMgSXtjb25zdHJ1Y3RvcihjLG0pe3N1cGVyKG0pLHRoaXMuY29uZGl0aW9uPWN9cmVuZGVyKGMpe2xldCBtPWBpZigke3RoaXMuY29uZGl0aW9ufSlgK3N1cGVyLnJlbmRlcihjKTtyZXR1cm4gdGhpcy5lbHNlJiYobSs9ImVsc2UgIit0aGlzLmVsc2UucmVuZGVyKGMpKSxtfW9wdGltaXplTm9kZXMoKXtzdXBlci5vcHRpbWl6ZU5vZGVzKCk7Y29uc3QgYz10aGlzLmNvbmRpdGlvbjtpZihjPT09ITApcmV0dXJuIHRoaXMubm9kZXM7bGV0IG09dGhpcy5lbHNlO2lmKG0pe2NvbnN0IFA9bS5vcHRpbWl6ZU5vZGVzKCk7bT10aGlzLmVsc2U9QXJyYXkuaXNBcnJheShQKT9uZXcgeShQKTpQfWlmKG0pcmV0dXJuIGM9PT0hMT9tIGluc3RhbmNlb2YgXz9tOm0ubm9kZXM6dGhpcy5ub2Rlcy5sZW5ndGg/dGhpczpuZXcgXyhFZShjKSxtIGluc3RhbmNlb2YgXz9bbV06bS5ub2Rlcyk7aWYoIShjPT09ITF8fCF0aGlzLm5vZGVzLmxlbmd0aCkpcmV0dXJuIHRoaXN9b3B0aW1pemVOYW1lcyhjLG0pe3ZhciBQO2lmKHRoaXMuZWxzZT0oUD10aGlzLmVsc2UpPT09bnVsbHx8UD09PXZvaWQgMD92b2lkIDA6UC5vcHRpbWl6ZU5hbWVzKGMsbSksISEoc3VwZXIub3B0aW1pemVOYW1lcyhjLG0pfHx0aGlzLmVsc2UpKXJldHVybiB0aGlzLmNvbmRpdGlvbj1YKHRoaXMuY29uZGl0aW9uLGMsbSksdGhpc31nZXQgbmFtZXMoKXtjb25zdCBjPXN1cGVyLm5hbWVzO3JldHVybiBvZShjLHRoaXMuY29uZGl0aW9uKSx0aGlzLmVsc2UmJlcoYyx0aGlzLmVsc2UubmFtZXMpLGN9fV8ua2luZD0iaWYiO2NsYXNzIGIgZXh0ZW5kcyBJe31iLmtpbmQ9ImZvciI7Y2xhc3MgTyBleHRlbmRzIGJ7Y29uc3RydWN0b3IoYyl7c3VwZXIoKSx0aGlzLml0ZXJhdGlvbj1jfXJlbmRlcihjKXtyZXR1cm5gZm9yKCR7dGhpcy5pdGVyYXRpb259KWArc3VwZXIucmVuZGVyKGMpfW9wdGltaXplTmFtZXMoYyxtKXtpZighIXN1cGVyLm9wdGltaXplTmFtZXMoYyxtKSlyZXR1cm4gdGhpcy5pdGVyYXRpb249WCh0aGlzLml0ZXJhdGlvbixjLG0pLHRoaXN9Z2V0IG5hbWVzKCl7cmV0dXJuIFcoc3VwZXIubmFtZXMsdGhpcy5pdGVyYXRpb24ubmFtZXMpfX1jbGFzcyBBIGV4dGVuZHMgYntjb25zdHJ1Y3RvcihjLG0sUCxVKXtzdXBlcigpLHRoaXMudmFyS2luZD1jLHRoaXMubmFtZT1tLHRoaXMuZnJvbT1QLHRoaXMudG89VX1yZW5kZXIoYyl7Y29uc3QgbT1jLmVzNT9yLnZhcktpbmRzLnZhcjp0aGlzLnZhcktpbmQse25hbWU6UCxmcm9tOlUsdG86Rn09dGhpcztyZXR1cm5gZm9yKCR7bX0gJHtQfT0ke1V9OyAke1B9PCR7Rn07ICR7UH0rKylgK3N1cGVyLnJlbmRlcihjKX1nZXQgbmFtZXMoKXtjb25zdCBjPW9lKHN1cGVyLm5hbWVzLHRoaXMuZnJvbSk7cmV0dXJuIG9lKGMsdGhpcy50byl9fWNsYXNzIEggZXh0ZW5kcyBie2NvbnN0cnVjdG9yKGMsbSxQLFUpe3N1cGVyKCksdGhpcy5sb29wPWMsdGhpcy52YXJLaW5kPW0sdGhpcy5uYW1lPVAsdGhpcy5pdGVyYWJsZT1VfXJlbmRlcihjKXtyZXR1cm5gZm9yKCR7dGhpcy52YXJLaW5kfSAke3RoaXMubmFtZX0gJHt0aGlzLmxvb3B9ICR7dGhpcy5pdGVyYWJsZX0pYCtzdXBlci5yZW5kZXIoYyl9b3B0aW1pemVOYW1lcyhjLG0pe2lmKCEhc3VwZXIub3B0aW1pemVOYW1lcyhjLG0pKXJldHVybiB0aGlzLml0ZXJhYmxlPVgodGhpcy5pdGVyYWJsZSxjLG0pLHRoaXN9Z2V0IG5hbWVzKCl7cmV0dXJuIFcoc3VwZXIubmFtZXMsdGhpcy5pdGVyYWJsZS5uYW1lcyl9fWNsYXNzICQgZXh0ZW5kcyBJe2NvbnN0cnVjdG9yKGMsbSxQKXtzdXBlcigpLHRoaXMubmFtZT1jLHRoaXMuYXJncz1tLHRoaXMuYXN5bmM9UH1yZW5kZXIoYyl7cmV0dXJuYCR7dGhpcy5hc3luYz8iYXN5bmMgIjoiIn1mdW5jdGlvbiAke3RoaXMubmFtZX0oJHt0aGlzLmFyZ3N9KWArc3VwZXIucmVuZGVyKGMpfX0kLmtpbmQ9ImZ1bmMiO2NsYXNzIE4gZXh0ZW5kcyBUe3JlbmRlcihjKXtyZXR1cm4icmV0dXJuICIrc3VwZXIucmVuZGVyKGMpfX1OLmtpbmQ9InJldHVybiI7Y2xhc3MgRCBleHRlbmRzIEl7cmVuZGVyKGMpe2xldCBtPSJ0cnkiK3N1cGVyLnJlbmRlcihjKTtyZXR1cm4gdGhpcy5jYXRjaCYmKG0rPXRoaXMuY2F0Y2gucmVuZGVyKGMpKSx0aGlzLmZpbmFsbHkmJihtKz10aGlzLmZpbmFsbHkucmVuZGVyKGMpKSxtfW9wdGltaXplTm9kZXMoKXt2YXIgYyxtO3JldHVybiBzdXBlci5vcHRpbWl6ZU5vZGVzKCksKGM9dGhpcy5jYXRjaCk9PT1udWxsfHxjPT09dm9pZCAwfHxjLm9wdGltaXplTm9kZXMoKSwobT10aGlzLmZpbmFsbHkpPT09bnVsbHx8bT09PXZvaWQgMHx8bS5vcHRpbWl6ZU5vZGVzKCksdGhpc31vcHRpbWl6ZU5hbWVzKGMsbSl7dmFyIFAsVTtyZXR1cm4gc3VwZXIub3B0aW1pemVOYW1lcyhjLG0pLChQPXRoaXMuY2F0Y2gpPT09bnVsbHx8UD09PXZvaWQgMHx8UC5vcHRpbWl6ZU5hbWVzKGMsbSksKFU9dGhpcy5maW5hbGx5KT09PW51bGx8fFU9PT12b2lkIDB8fFUub3B0aW1pemVOYW1lcyhjLG0pLHRoaXN9Z2V0IG5hbWVzKCl7Y29uc3QgYz1zdXBlci5uYW1lcztyZXR1cm4gdGhpcy5jYXRjaCYmVyhjLHRoaXMuY2F0Y2gubmFtZXMpLHRoaXMuZmluYWxseSYmVyhjLHRoaXMuZmluYWxseS5uYW1lcyksY319Y2xhc3MgQiBleHRlbmRzIEl7Y29uc3RydWN0b3IoYyl7c3VwZXIoKSx0aGlzLmVycm9yPWN9cmVuZGVyKGMpe3JldHVybmBjYXRjaCgke3RoaXMuZXJyb3J9KWArc3VwZXIucmVuZGVyKGMpfX1CLmtpbmQ9ImNhdGNoIjtjbGFzcyBHIGV4dGVuZHMgSXtyZW5kZXIoYyl7cmV0dXJuImZpbmFsbHkiK3N1cGVyLnJlbmRlcihjKX19Ry5raW5kPSJmaW5hbGx5IjtjbGFzcyBwZXtjb25zdHJ1Y3RvcihjLG09e30pe3RoaXMuX3ZhbHVlcz17fSx0aGlzLl9ibG9ja1N0YXJ0cz1bXSx0aGlzLl9jb25zdGFudHM9e30sdGhpcy5vcHRzPWxlKFEoe30sbSkse19uOm0ubGluZXM/YApgOiIifSksdGhpcy5fZXh0U2NvcGU9Yyx0aGlzLl9zY29wZT1uZXcgci5TY29wZSh7cGFyZW50OmN9KSx0aGlzLl9ub2Rlcz1bbmV3IGpdfXRvU3RyaW5nKCl7cmV0dXJuIHRoaXMuX3Jvb3QucmVuZGVyKHRoaXMub3B0cyl9bmFtZShjKXtyZXR1cm4gdGhpcy5fc2NvcGUubmFtZShjKX1zY29wZU5hbWUoYyl7cmV0dXJuIHRoaXMuX2V4dFNjb3BlLm5hbWUoYyl9c2NvcGVWYWx1ZShjLG0pe2NvbnN0IFA9dGhpcy5fZXh0U2NvcGUudmFsdWUoYyxtKTtyZXR1cm4odGhpcy5fdmFsdWVzW1AucHJlZml4XXx8KHRoaXMuX3ZhbHVlc1tQLnByZWZpeF09bmV3IFNldCkpLmFkZChQKSxQfWdldFNjb3BlVmFsdWUoYyxtKXtyZXR1cm4gdGhpcy5fZXh0U2NvcGUuZ2V0VmFsdWUoYyxtKX1zY29wZVJlZnMoYyl7cmV0dXJuIHRoaXMuX2V4dFNjb3BlLnNjb3BlUmVmcyhjLHRoaXMuX3ZhbHVlcyl9c2NvcGVDb2RlKCl7cmV0dXJuIHRoaXMuX2V4dFNjb3BlLnNjb3BlQ29kZSh0aGlzLl92YWx1ZXMpfV9kZWYoYyxtLFAsVSl7Y29uc3QgRj10aGlzLl9zY29wZS50b05hbWUobSk7cmV0dXJuIFAhPT12b2lkIDAmJlUmJih0aGlzLl9jb25zdGFudHNbRi5zdHJdPVApLHRoaXMuX2xlYWZOb2RlKG5ldyBvKGMsRixQKSksRn1jb25zdChjLG0sUCl7cmV0dXJuIHRoaXMuX2RlZihyLnZhcktpbmRzLmNvbnN0LGMsbSxQKX1sZXQoYyxtLFApe3JldHVybiB0aGlzLl9kZWYoci52YXJLaW5kcy5sZXQsYyxtLFApfXZhcihjLG0sUCl7cmV0dXJuIHRoaXMuX2RlZihyLnZhcktpbmRzLnZhcixjLG0sUCl9YXNzaWduKGMsbSxQKXtyZXR1cm4gdGhpcy5fbGVhZk5vZGUobmV3IGwoYyxtLFApKX1hZGQoYyxtKXtyZXR1cm4gdGhpcy5fbGVhZk5vZGUobmV3IGYoYyxlLm9wZXJhdG9ycy5BREQsbSkpfWNvZGUoYyl7cmV0dXJuIHR5cGVvZiBjPT0iZnVuY3Rpb24iP2MoKTpjIT09dC5uaWwmJnRoaXMuX2xlYWZOb2RlKG5ldyBFKGMpKSx0aGlzfW9iamVjdCguLi5jKXtjb25zdCBtPVsieyJdO2Zvcihjb25zdFtQLFVdb2YgYyltLmxlbmd0aD4xJiZtLnB1c2goIiwiKSxtLnB1c2goUCksKFAhPT1VfHx0aGlzLm9wdHMuZXM1KSYmKG0ucHVzaCgiOiIpLCgwLHQuYWRkQ29kZUFyZykobSxVKSk7cmV0dXJuIG0ucHVzaCgifSIpLG5ldyB0Ll9Db2RlKG0pfWlmKGMsbSxQKXtpZih0aGlzLl9ibG9ja05vZGUobmV3IF8oYykpLG0mJlApdGhpcy5jb2RlKG0pLmVsc2UoKS5jb2RlKFApLmVuZElmKCk7ZWxzZSBpZihtKXRoaXMuY29kZShtKS5lbmRJZigpO2Vsc2UgaWYoUCl0aHJvdyBuZXcgRXJyb3IoJ0NvZGVHZW46ICJlbHNlIiBib2R5IHdpdGhvdXQgInRoZW4iIGJvZHknKTtyZXR1cm4gdGhpc31lbHNlSWYoYyl7cmV0dXJuIHRoaXMuX2Vsc2VOb2RlKG5ldyBfKGMpKX1lbHNlKCl7cmV0dXJuIHRoaXMuX2Vsc2VOb2RlKG5ldyB5KX1lbmRJZigpe3JldHVybiB0aGlzLl9lbmRCbG9ja05vZGUoXyx5KX1fZm9yKGMsbSl7cmV0dXJuIHRoaXMuX2Jsb2NrTm9kZShjKSxtJiZ0aGlzLmNvZGUobSkuZW5kRm9yKCksdGhpc31mb3IoYyxtKXtyZXR1cm4gdGhpcy5fZm9yKG5ldyBPKGMpLG0pfWZvclJhbmdlKGMsbSxQLFUsRj10aGlzLm9wdHMuZXM1P3IudmFyS2luZHMudmFyOnIudmFyS2luZHMubGV0KXtjb25zdCBaPXRoaXMuX3Njb3BlLnRvTmFtZShjKTtyZXR1cm4gdGhpcy5fZm9yKG5ldyBBKEYsWixtLFApLCgpPT5VKFopKX1mb3JPZihjLG0sUCxVPXIudmFyS2luZHMuY29uc3Qpe2NvbnN0IEY9dGhpcy5fc2NvcGUudG9OYW1lKGMpO2lmKHRoaXMub3B0cy5lczUpe2NvbnN0IFo9bSBpbnN0YW5jZW9mIHQuTmFtZT9tOnRoaXMudmFyKCJfYXJyIixtKTtyZXR1cm4gdGhpcy5mb3JSYW5nZSgiX2kiLDAsKDAsdC5fKWAke1p9Lmxlbmd0aGAscmU9Pnt0aGlzLnZhcihGLCgwLHQuXylgJHtafVske3JlfV1gKSxQKEYpfSl9cmV0dXJuIHRoaXMuX2ZvcihuZXcgSCgib2YiLFUsRixtKSwoKT0+UChGKSl9Zm9ySW4oYyxtLFAsVT10aGlzLm9wdHMuZXM1P3IudmFyS2luZHMudmFyOnIudmFyS2luZHMuY29uc3Qpe2lmKHRoaXMub3B0cy5vd25Qcm9wZXJ0aWVzKXJldHVybiB0aGlzLmZvck9mKGMsKDAsdC5fKWBPYmplY3Qua2V5cygke219KWAsUCk7Y29uc3QgRj10aGlzLl9zY29wZS50b05hbWUoYyk7cmV0dXJuIHRoaXMuX2ZvcihuZXcgSCgiaW4iLFUsRixtKSwoKT0+UChGKSl9ZW5kRm9yKCl7cmV0dXJuIHRoaXMuX2VuZEJsb2NrTm9kZShiKX1sYWJlbChjKXtyZXR1cm4gdGhpcy5fbGVhZk5vZGUobmV3IHAoYykpfWJyZWFrKGMpe3JldHVybiB0aGlzLl9sZWFmTm9kZShuZXcgaShjKSl9cmV0dXJuKGMpe2NvbnN0IG09bmV3IE47aWYodGhpcy5fYmxvY2tOb2RlKG0pLHRoaXMuY29kZShjKSxtLm5vZGVzLmxlbmd0aCE9PTEpdGhyb3cgbmV3IEVycm9yKCdDb2RlR2VuOiAicmV0dXJuIiBzaG91bGQgaGF2ZSBvbmUgbm9kZScpO3JldHVybiB0aGlzLl9lbmRCbG9ja05vZGUoTil9dHJ5KGMsbSxQKXtpZighbSYmIVApdGhyb3cgbmV3IEVycm9yKCdDb2RlR2VuOiAidHJ5IiB3aXRob3V0ICJjYXRjaCIgYW5kICJmaW5hbGx5IicpO2NvbnN0IFU9bmV3IEQ7aWYodGhpcy5fYmxvY2tOb2RlKFUpLHRoaXMuY29kZShjKSxtKXtjb25zdCBGPXRoaXMubmFtZSgiZSIpO3RoaXMuX2N1cnJOb2RlPVUuY2F0Y2g9bmV3IEIoRiksbShGKX1yZXR1cm4gUCYmKHRoaXMuX2N1cnJOb2RlPVUuZmluYWxseT1uZXcgRyx0aGlzLmNvZGUoUCkpLHRoaXMuX2VuZEJsb2NrTm9kZShCLEcpfXRocm93KGMpe3JldHVybiB0aGlzLl9sZWFmTm9kZShuZXcgaChjKSl9YmxvY2soYyxtKXtyZXR1cm4gdGhpcy5fYmxvY2tTdGFydHMucHVzaCh0aGlzLl9ub2Rlcy5sZW5ndGgpLGMmJnRoaXMuY29kZShjKS5lbmRCbG9jayhtKSx0aGlzfWVuZEJsb2NrKGMpe2NvbnN0IG09dGhpcy5fYmxvY2tTdGFydHMucG9wKCk7aWYobT09PXZvaWQgMCl0aHJvdyBuZXcgRXJyb3IoIkNvZGVHZW46IG5vdCBpbiBzZWxmLWJhbGFuY2luZyBibG9jayIpO2NvbnN0IFA9dGhpcy5fbm9kZXMubGVuZ3RoLW07aWYoUDwwfHxjIT09dm9pZCAwJiZQIT09Yyl0aHJvdyBuZXcgRXJyb3IoYENvZGVHZW46IHdyb25nIG51bWJlciBvZiBub2RlczogJHtQfSB2cyAke2N9IGV4cGVjdGVkYCk7cmV0dXJuIHRoaXMuX25vZGVzLmxlbmd0aD1tLHRoaXN9ZnVuYyhjLG09dC5uaWwsUCxVKXtyZXR1cm4gdGhpcy5fYmxvY2tOb2RlKG5ldyAkKGMsbSxQKSksVSYmdGhpcy5jb2RlKFUpLmVuZEZ1bmMoKSx0aGlzfWVuZEZ1bmMoKXtyZXR1cm4gdGhpcy5fZW5kQmxvY2tOb2RlKCQpfW9wdGltaXplKGM9MSl7Zm9yKDtjLS0gPjA7KXRoaXMuX3Jvb3Qub3B0aW1pemVOb2RlcygpLHRoaXMuX3Jvb3Qub3B0aW1pemVOYW1lcyh0aGlzLl9yb290Lm5hbWVzLHRoaXMuX2NvbnN0YW50cyl9X2xlYWZOb2RlKGMpe3JldHVybiB0aGlzLl9jdXJyTm9kZS5ub2Rlcy5wdXNoKGMpLHRoaXN9X2Jsb2NrTm9kZShjKXt0aGlzLl9jdXJyTm9kZS5ub2Rlcy5wdXNoKGMpLHRoaXMuX25vZGVzLnB1c2goYyl9X2VuZEJsb2NrTm9kZShjLG0pe2NvbnN0IFA9dGhpcy5fY3Vyck5vZGU7aWYoUCBpbnN0YW5jZW9mIGN8fG0mJlAgaW5zdGFuY2VvZiBtKXJldHVybiB0aGlzLl9ub2Rlcy5wb3AoKSx0aGlzO3Rocm93IG5ldyBFcnJvcihgQ29kZUdlbjogbm90IGluIGJsb2NrICIke20/YCR7Yy5raW5kfS8ke20ua2luZH1gOmMua2luZH0iYCl9X2Vsc2VOb2RlKGMpe2NvbnN0IG09dGhpcy5fY3Vyck5vZGU7aWYoIShtIGluc3RhbmNlb2YgXykpdGhyb3cgbmV3IEVycm9yKCdDb2RlR2VuOiAiZWxzZSIgd2l0aG91dCAiaWYiJyk7cmV0dXJuIHRoaXMuX2N1cnJOb2RlPW0uZWxzZT1jLHRoaXN9Z2V0IF9yb290KCl7cmV0dXJuIHRoaXMuX25vZGVzWzBdfWdldCBfY3Vyck5vZGUoKXtjb25zdCBjPXRoaXMuX25vZGVzO3JldHVybiBjW2MubGVuZ3RoLTFdfXNldCBfY3Vyck5vZGUoYyl7Y29uc3QgbT10aGlzLl9ub2RlczttW20ubGVuZ3RoLTFdPWN9fWUuQ29kZUdlbj1wZTtmdW5jdGlvbiBXKHcsYyl7Zm9yKGNvbnN0IG0gaW4gYyl3W21dPSh3W21dfHwwKSsoY1ttXXx8MCk7cmV0dXJuIHd9ZnVuY3Rpb24gb2UodyxjKXtyZXR1cm4gYyBpbnN0YW5jZW9mIHQuX0NvZGVPck5hbWU/Vyh3LGMubmFtZXMpOnd9ZnVuY3Rpb24gWCh3LGMsbSl7aWYodyBpbnN0YW5jZW9mIHQuTmFtZSlyZXR1cm4gUCh3KTtpZighVSh3KSlyZXR1cm4gdztyZXR1cm4gbmV3IHQuX0NvZGUody5faXRlbXMucmVkdWNlKChGLFopPT4oWiBpbnN0YW5jZW9mIHQuTmFtZSYmKFo9UChaKSksWiBpbnN0YW5jZW9mIHQuX0NvZGU/Ri5wdXNoKC4uLlouX2l0ZW1zKTpGLnB1c2goWiksRiksW10pKTtmdW5jdGlvbiBQKEYpe2NvbnN0IFo9bVtGLnN0cl07cmV0dXJuIFo9PT12b2lkIDB8fGNbRi5zdHJdIT09MT9GOihkZWxldGUgY1tGLnN0cl0sWil9ZnVuY3Rpb24gVShGKXtyZXR1cm4gRiBpbnN0YW5jZW9mIHQuX0NvZGUmJkYuX2l0ZW1zLnNvbWUoWj0+WiBpbnN0YW5jZW9mIHQuTmFtZSYmY1taLnN0cl09PT0xJiZtW1ouc3RyXSE9PXZvaWQgMCl9fWZ1bmN0aW9uIHZlKHcsYyl7Zm9yKGNvbnN0IG0gaW4gYyl3W21dPSh3W21dfHwwKS0oY1ttXXx8MCl9ZnVuY3Rpb24gRWUodyl7cmV0dXJuIHR5cGVvZiB3PT0iYm9vbGVhbiJ8fHR5cGVvZiB3PT0ibnVtYmVyInx8dz09PW51bGw/IXc6KDAsdC5fKWAhJHtDKHcpfWB9ZS5ub3Q9RWU7Y29uc3QgTmU9ZyhlLm9wZXJhdG9ycy5BTkQpO2Z1bmN0aW9uIEJlKC4uLncpe3JldHVybiB3LnJlZHVjZShOZSl9ZS5hbmQ9QmU7Y29uc3QgdXI9ZyhlLm9wZXJhdG9ycy5PUik7ZnVuY3Rpb24gayguLi53KXtyZXR1cm4gdy5yZWR1Y2UodXIpfWUub3I9aztmdW5jdGlvbiBnKHcpe3JldHVybihjLG0pPT5jPT09dC5uaWw/bTptPT09dC5uaWw/YzooMCx0Ll8pYCR7QyhjKX0gJHt3fSAke0MobSl9YH1mdW5jdGlvbiBDKHcpe3JldHVybiB3IGluc3RhbmNlb2YgdC5OYW1lP3c6KDAsdC5fKWAoJHt3fSlgfX0odWUpO3ZhciBiZT17fTsoZnVuY3Rpb24oZSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLGUuY2hlY2tTdHJpY3RNb2RlPWUuZ2V0RXJyb3JQYXRoPWUuVHlwZT1lLnVzZUZ1bmM9ZS5zZXRFdmFsdWF0ZWQ9ZS5ldmFsdWF0ZWRQcm9wc1RvTmFtZT1lLm1lcmdlRXZhbHVhdGVkPWUuZWFjaEl0ZW09ZS51bmVzY2FwZUpzb25Qb2ludGVyPWUuZXNjYXBlSnNvblBvaW50ZXI9ZS5lc2NhcGVGcmFnbWVudD1lLnVuZXNjYXBlRnJhZ21lbnQ9ZS5zY2hlbWFSZWZPclZhbD1lLnNjaGVtYUhhc1J1bGVzQnV0UmVmPWUuc2NoZW1hSGFzUnVsZXM9ZS5jaGVja1Vua25vd25SdWxlcz1lLmFsd2F5c1ZhbGlkU2NoZW1hPWUudG9IYXNoPXZvaWQgMDtjb25zdCB0PXVlLHI9eXI7ZnVuY3Rpb24gbigkKXtjb25zdCBOPXt9O2Zvcihjb25zdCBEIG9mICQpTltEXT0hMDtyZXR1cm4gTn1lLnRvSGFzaD1uO2Z1bmN0aW9uIHMoJCxOKXtyZXR1cm4gdHlwZW9mIE49PSJib29sZWFuIj9OOk9iamVjdC5rZXlzKE4pLmxlbmd0aD09PTA/ITA6KGEoJCxOKSwhbyhOLCQuc2VsZi5SVUxFUy5hbGwpKX1lLmFsd2F5c1ZhbGlkU2NoZW1hPXM7ZnVuY3Rpb24gYSgkLE49JC5zY2hlbWEpe2NvbnN0e29wdHM6RCxzZWxmOkJ9PSQ7aWYoIUQuc3RyaWN0U2NoZW1hfHx0eXBlb2YgTj09ImJvb2xlYW4iKXJldHVybjtjb25zdCBHPUIuUlVMRVMua2V5d29yZHM7Zm9yKGNvbnN0IHBlIGluIE4pR1twZV18fEgoJCxgdW5rbm93biBrZXl3b3JkOiAiJHtwZX0iYCl9ZS5jaGVja1Vua25vd25SdWxlcz1hO2Z1bmN0aW9uIG8oJCxOKXtpZih0eXBlb2YgJD09ImJvb2xlYW4iKXJldHVybiEkO2Zvcihjb25zdCBEIGluICQpaWYoTltEXSlyZXR1cm4hMDtyZXR1cm4hMX1lLnNjaGVtYUhhc1J1bGVzPW87ZnVuY3Rpb24gbCgkLE4pe2lmKHR5cGVvZiAkPT0iYm9vbGVhbiIpcmV0dXJuISQ7Zm9yKGNvbnN0IEQgaW4gJClpZihEIT09IiRyZWYiJiZOLmFsbFtEXSlyZXR1cm4hMDtyZXR1cm4hMX1lLnNjaGVtYUhhc1J1bGVzQnV0UmVmPWw7ZnVuY3Rpb24gZih7dG9wU2NoZW1hUmVmOiQsc2NoZW1hUGF0aDpOfSxELEIsRyl7aWYoIUcpe2lmKHR5cGVvZiBEPT0ibnVtYmVyInx8dHlwZW9mIEQ9PSJib29sZWFuIilyZXR1cm4gRDtpZih0eXBlb2YgRD09InN0cmluZyIpcmV0dXJuKDAsdC5fKWAke0R9YH1yZXR1cm4oMCx0Ll8pYCR7JH0ke059JHsoMCx0LmdldFByb3BlcnR5KShCKX1gfWUuc2NoZW1hUmVmT3JWYWw9ZjtmdW5jdGlvbiBwKCQpe3JldHVybiBFKGRlY29kZVVSSUNvbXBvbmVudCgkKSl9ZS51bmVzY2FwZUZyYWdtZW50PXA7ZnVuY3Rpb24gaSgkKXtyZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KGgoJCkpfWUuZXNjYXBlRnJhZ21lbnQ9aTtmdW5jdGlvbiBoKCQpe3JldHVybiB0eXBlb2YgJD09Im51bWJlciI/YCR7JH1gOiQucmVwbGFjZSgvfi9nLCJ+MCIpLnJlcGxhY2UoL1wvL2csIn4xIil9ZS5lc2NhcGVKc29uUG9pbnRlcj1oO2Z1bmN0aW9uIEUoJCl7cmV0dXJuICQucmVwbGFjZSgvfjEvZywiLyIpLnJlcGxhY2UoL34wL2csIn4iKX1lLnVuZXNjYXBlSnNvblBvaW50ZXI9RTtmdW5jdGlvbiBUKCQsTil7aWYoQXJyYXkuaXNBcnJheSgkKSlmb3IoY29uc3QgRCBvZiAkKU4oRCk7ZWxzZSBOKCQpfWUuZWFjaEl0ZW09VDtmdW5jdGlvbiBJKHttZXJnZU5hbWVzOiQsbWVyZ2VUb05hbWU6TixtZXJnZVZhbHVlczpELHJlc3VsdFRvTmFtZTpCfSl7cmV0dXJuKEcscGUsVyxvZSk9Pntjb25zdCBYPVc9PT12b2lkIDA/cGU6VyBpbnN0YW5jZW9mIHQuTmFtZT8ocGUgaW5zdGFuY2VvZiB0Lk5hbWU/JChHLHBlLFcpOk4oRyxwZSxXKSxXKTpwZSBpbnN0YW5jZW9mIHQuTmFtZT8oTihHLFcscGUpLHBlKTpEKHBlLFcpO3JldHVybiBvZT09PXQuTmFtZSYmIShYIGluc3RhbmNlb2YgdC5OYW1lKT9CKEcsWCk6WH19ZS5tZXJnZUV2YWx1YXRlZD17cHJvcHM6SSh7bWVyZ2VOYW1lczooJCxOLEQpPT4kLmlmKCgwLHQuXylgJHtEfSAhPT0gdHJ1ZSAmJiAke059ICE9PSB1bmRlZmluZWRgLCgpPT57JC5pZigoMCx0Ll8pYCR7Tn0gPT09IHRydWVgLCgpPT4kLmFzc2lnbihELCEwKSwoKT0+JC5hc3NpZ24oRCwoMCx0Ll8pYCR7RH0gfHwge31gKS5jb2RlKCgwLHQuXylgT2JqZWN0LmFzc2lnbigke0R9LCAke059KWApKX0pLG1lcmdlVG9OYW1lOigkLE4sRCk9PiQuaWYoKDAsdC5fKWAke0R9ICE9PSB0cnVlYCwoKT0+e049PT0hMD8kLmFzc2lnbihELCEwKTooJC5hc3NpZ24oRCwoMCx0Ll8pYCR7RH0gfHwge31gKSx5KCQsRCxOKSl9KSxtZXJnZVZhbHVlczooJCxOKT0+JD09PSEwPyEwOlEoUSh7fSwkKSxOKSxyZXN1bHRUb05hbWU6an0pLGl0ZW1zOkkoe21lcmdlTmFtZXM6KCQsTixEKT0+JC5pZigoMCx0Ll8pYCR7RH0gIT09IHRydWUgJiYgJHtOfSAhPT0gdW5kZWZpbmVkYCwoKT0+JC5hc3NpZ24oRCwoMCx0Ll8pYCR7Tn0gPT09IHRydWUgPyB0cnVlIDogJHtEfSA+ICR7Tn0gPyAke0R9IDogJHtOfWApKSxtZXJnZVRvTmFtZTooJCxOLEQpPT4kLmlmKCgwLHQuXylgJHtEfSAhPT0gdHJ1ZWAsKCk9PiQuYXNzaWduKEQsTj09PSEwPyEwOigwLHQuXylgJHtEfSA+ICR7Tn0gPyAke0R9IDogJHtOfWApKSxtZXJnZVZhbHVlczooJCxOKT0+JD09PSEwPyEwOk1hdGgubWF4KCQsTikscmVzdWx0VG9OYW1lOigkLE4pPT4kLnZhcigiaXRlbXMiLE4pfSl9O2Z1bmN0aW9uIGooJCxOKXtpZihOPT09ITApcmV0dXJuICQudmFyKCJwcm9wcyIsITApO2NvbnN0IEQ9JC52YXIoInByb3BzIiwoMCx0Ll8pYHt9YCk7cmV0dXJuIE4hPT12b2lkIDAmJnkoJCxELE4pLER9ZS5ldmFsdWF0ZWRQcm9wc1RvTmFtZT1qO2Z1bmN0aW9uIHkoJCxOLEQpe09iamVjdC5rZXlzKEQpLmZvckVhY2goQj0+JC5hc3NpZ24oKDAsdC5fKWAke059JHsoMCx0LmdldFByb3BlcnR5KShCKX1gLCEwKSl9ZS5zZXRFdmFsdWF0ZWQ9eTtjb25zdCBfPXt9O2Z1bmN0aW9uIGIoJCxOKXtyZXR1cm4gJC5zY29wZVZhbHVlKCJmdW5jIix7cmVmOk4sY29kZTpfW04uY29kZV18fChfW04uY29kZV09bmV3IHIuX0NvZGUoTi5jb2RlKSl9KX1lLnVzZUZ1bmM9Yjt2YXIgTzsoZnVuY3Rpb24oJCl7JFskLk51bT0wXT0iTnVtIiwkWyQuU3RyPTFdPSJTdHIifSkoTz1lLlR5cGV8fChlLlR5cGU9e30pKTtmdW5jdGlvbiBBKCQsTixEKXtpZigkIGluc3RhbmNlb2YgdC5OYW1lKXtjb25zdCBCPU49PT1PLk51bTtyZXR1cm4gRD9CPygwLHQuXylgIlsiICsgJHskfSArICJdImA6KDAsdC5fKWAiWyciICsgJHskfSArICInXSJgOkI/KDAsdC5fKWAiLyIgKyAkeyR9YDooMCx0Ll8pYCIvIiArICR7JH0ucmVwbGFjZSgvfi9nLCAifjAiKS5yZXBsYWNlKC9cXC8vZywgIn4xIilgfXJldHVybiBEPygwLHQuZ2V0UHJvcGVydHkpKCQpLnRvU3RyaW5nKCk6Ii8iK2goJCl9ZS5nZXRFcnJvclBhdGg9QTtmdW5jdGlvbiBIKCQsTixEPSQub3B0cy5zdHJpY3RTY2hlbWEpe2lmKCEhRCl7aWYoTj1gc3RyaWN0IG1vZGU6ICR7Tn1gLEQ9PT0hMCl0aHJvdyBuZXcgRXJyb3IoTik7JC5zZWxmLmxvZ2dlci53YXJuKE4pfX1lLmNoZWNrU3RyaWN0TW9kZT1IfSkoYmUpO3ZhciBMZT17fTtPYmplY3QuZGVmaW5lUHJvcGVydHkoTGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO2NvbnN0IEFlPXVlLHZjPXtkYXRhOm5ldyBBZS5OYW1lKCJkYXRhIiksdmFsQ3h0Om5ldyBBZS5OYW1lKCJ2YWxDeHQiKSxpbnN0YW5jZVBhdGg6bmV3IEFlLk5hbWUoImluc3RhbmNlUGF0aCIpLHBhcmVudERhdGE6bmV3IEFlLk5hbWUoInBhcmVudERhdGEiKSxwYXJlbnREYXRhUHJvcGVydHk6bmV3IEFlLk5hbWUoInBhcmVudERhdGFQcm9wZXJ0eSIpLHJvb3REYXRhOm5ldyBBZS5OYW1lKCJyb290RGF0YSIpLGR5bmFtaWNBbmNob3JzOm5ldyBBZS5OYW1lKCJkeW5hbWljQW5jaG9ycyIpLHZFcnJvcnM6bmV3IEFlLk5hbWUoInZFcnJvcnMiKSxlcnJvcnM6bmV3IEFlLk5hbWUoImVycm9ycyIpLHRoaXM6bmV3IEFlLk5hbWUoInRoaXMiKSxzZWxmOm5ldyBBZS5OYW1lKCJzZWxmIiksc2NvcGU6bmV3IEFlLk5hbWUoInNjb3BlIiksanNvbjpuZXcgQWUuTmFtZSgianNvbiIpLGpzb25Qb3M6bmV3IEFlLk5hbWUoImpzb25Qb3MiKSxqc29uTGVuOm5ldyBBZS5OYW1lKCJqc29uTGVuIiksanNvblBhcnQ6bmV3IEFlLk5hbWUoImpzb25QYXJ0Iil9O0xlLmRlZmF1bHQ9dmMsZnVuY3Rpb24oZSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLGUuZXh0ZW5kRXJyb3JzPWUucmVzZXRFcnJvcnNDb3VudD1lLnJlcG9ydEV4dHJhRXJyb3I9ZS5yZXBvcnRFcnJvcj1lLmtleXdvcmQkRGF0YUVycm9yPWUua2V5d29yZEVycm9yPXZvaWQgMDtjb25zdCB0PXVlLHI9YmUsbj1MZTtlLmtleXdvcmRFcnJvcj17bWVzc2FnZTooe2tleXdvcmQ6eX0pPT4oMCx0LnN0cilgbXVzdCBwYXNzICIke3l9IiBrZXl3b3JkIHZhbGlkYXRpb25gfSxlLmtleXdvcmQkRGF0YUVycm9yPXttZXNzYWdlOih7a2V5d29yZDp5LHNjaGVtYVR5cGU6X30pPT5fPygwLHQuc3RyKWAiJHt5fSIga2V5d29yZCBtdXN0IGJlICR7X30gKCRkYXRhKWA6KDAsdC5zdHIpYCIke3l9IiBrZXl3b3JkIGlzIGludmFsaWQgKCRkYXRhKWB9O2Z1bmN0aW9uIHMoeSxfPWUua2V5d29yZEVycm9yLGIsTyl7Y29uc3R7aXQ6QX09eSx7Z2VuOkgsY29tcG9zaXRlUnVsZTokLGFsbEVycm9yczpOfT1BLEQ9aCh5LF8sYik7KE8hPW51bGw/TzokfHxOKT9mKEgsRCk6cChBLCgwLHQuXylgWyR7RH1dYCl9ZS5yZXBvcnRFcnJvcj1zO2Z1bmN0aW9uIGEoeSxfPWUua2V5d29yZEVycm9yLGIpe2NvbnN0e2l0Ok99PXkse2dlbjpBLGNvbXBvc2l0ZVJ1bGU6SCxhbGxFcnJvcnM6JH09TyxOPWgoeSxfLGIpO2YoQSxOKSxIfHwkfHxwKE8sbi5kZWZhdWx0LnZFcnJvcnMpfWUucmVwb3J0RXh0cmFFcnJvcj1hO2Z1bmN0aW9uIG8oeSxfKXt5LmFzc2lnbihuLmRlZmF1bHQuZXJyb3JzLF8pLHkuaWYoKDAsdC5fKWAke24uZGVmYXVsdC52RXJyb3JzfSAhPT0gbnVsbGAsKCk9PnkuaWYoXywoKT0+eS5hc3NpZ24oKDAsdC5fKWAke24uZGVmYXVsdC52RXJyb3JzfS5sZW5ndGhgLF8pLCgpPT55LmFzc2lnbihuLmRlZmF1bHQudkVycm9ycyxudWxsKSkpfWUucmVzZXRFcnJvcnNDb3VudD1vO2Z1bmN0aW9uIGwoe2dlbjp5LGtleXdvcmQ6XyxzY2hlbWFWYWx1ZTpiLGRhdGE6TyxlcnJzQ291bnQ6QSxpdDpIfSl7aWYoQT09PXZvaWQgMCl0aHJvdyBuZXcgRXJyb3IoImFqdiBpbXBsZW1lbnRhdGlvbiBlcnJvciIpO2NvbnN0ICQ9eS5uYW1lKCJlcnIiKTt5LmZvclJhbmdlKCJpIixBLG4uZGVmYXVsdC5lcnJvcnMsTj0+e3kuY29uc3QoJCwoMCx0Ll8pYCR7bi5kZWZhdWx0LnZFcnJvcnN9WyR7Tn1dYCkseS5pZigoMCx0Ll8pYCR7JH0uaW5zdGFuY2VQYXRoID09PSB1bmRlZmluZWRgLCgpPT55LmFzc2lnbigoMCx0Ll8pYCR7JH0uaW5zdGFuY2VQYXRoYCwoMCx0LnN0ckNvbmNhdCkobi5kZWZhdWx0Lmluc3RhbmNlUGF0aCxILmVycm9yUGF0aCkpKSx5LmFzc2lnbigoMCx0Ll8pYCR7JH0uc2NoZW1hUGF0aGAsKDAsdC5zdHIpYCR7SC5lcnJTY2hlbWFQYXRofS8ke199YCksSC5vcHRzLnZlcmJvc2UmJih5LmFzc2lnbigoMCx0Ll8pYCR7JH0uc2NoZW1hYCxiKSx5LmFzc2lnbigoMCx0Ll8pYCR7JH0uZGF0YWAsTykpfSl9ZS5leHRlbmRFcnJvcnM9bDtmdW5jdGlvbiBmKHksXyl7Y29uc3QgYj15LmNvbnN0KCJlcnIiLF8pO3kuaWYoKDAsdC5fKWAke24uZGVmYXVsdC52RXJyb3JzfSA9PT0gbnVsbGAsKCk9PnkuYXNzaWduKG4uZGVmYXVsdC52RXJyb3JzLCgwLHQuXylgWyR7Yn1dYCksKDAsdC5fKWAke24uZGVmYXVsdC52RXJyb3JzfS5wdXNoKCR7Yn0pYCkseS5jb2RlKCgwLHQuXylgJHtuLmRlZmF1bHQuZXJyb3JzfSsrYCl9ZnVuY3Rpb24gcCh5LF8pe2NvbnN0e2dlbjpiLHZhbGlkYXRlTmFtZTpPLHNjaGVtYUVudjpBfT15O0EuJGFzeW5jP2IudGhyb3coKDAsdC5fKWBuZXcgJHt5LlZhbGlkYXRpb25FcnJvcn0oJHtffSlgKTooYi5hc3NpZ24oKDAsdC5fKWAke099LmVycm9yc2AsXyksYi5yZXR1cm4oITEpKX1jb25zdCBpPXtrZXl3b3JkOm5ldyB0Lk5hbWUoImtleXdvcmQiKSxzY2hlbWFQYXRoOm5ldyB0Lk5hbWUoInNjaGVtYVBhdGgiKSxwYXJhbXM6bmV3IHQuTmFtZSgicGFyYW1zIikscHJvcGVydHlOYW1lOm5ldyB0Lk5hbWUoInByb3BlcnR5TmFtZSIpLG1lc3NhZ2U6bmV3IHQuTmFtZSgibWVzc2FnZSIpLHNjaGVtYTpuZXcgdC5OYW1lKCJzY2hlbWEiKSxwYXJlbnRTY2hlbWE6bmV3IHQuTmFtZSgicGFyZW50U2NoZW1hIil9O2Z1bmN0aW9uIGgoeSxfLGIpe2NvbnN0e2NyZWF0ZUVycm9yczpPfT15Lml0O3JldHVybiBPPT09ITE/KDAsdC5fKWB7fWA6RSh5LF8sYil9ZnVuY3Rpb24gRSh5LF8sYj17fSl7Y29uc3R7Z2VuOk8saXQ6QX09eSxIPVtUKEEsYiksSSh5LGIpXTtyZXR1cm4gaih5LF8sSCksTy5vYmplY3QoLi4uSCl9ZnVuY3Rpb24gVCh7ZXJyb3JQYXRoOnl9LHtpbnN0YW5jZVBhdGg6X30pe2NvbnN0IGI9Xz8oMCx0LnN0cilgJHt5fSR7KDAsci5nZXRFcnJvclBhdGgpKF8sci5UeXBlLlN0cil9YDp5O3JldHVybltuLmRlZmF1bHQuaW5zdGFuY2VQYXRoLCgwLHQuc3RyQ29uY2F0KShuLmRlZmF1bHQuaW5zdGFuY2VQYXRoLGIpXX1mdW5jdGlvbiBJKHtrZXl3b3JkOnksaXQ6e2VyclNjaGVtYVBhdGg6X319LHtzY2hlbWFQYXRoOmIscGFyZW50U2NoZW1hOk99KXtsZXQgQT1PP186KDAsdC5zdHIpYCR7X30vJHt5fWA7cmV0dXJuIGImJihBPSgwLHQuc3RyKWAke0F9JHsoMCxyLmdldEVycm9yUGF0aCkoYixyLlR5cGUuU3RyKX1gKSxbaS5zY2hlbWFQYXRoLEFdfWZ1bmN0aW9uIGooeSx7cGFyYW1zOl8sbWVzc2FnZTpifSxPKXtjb25zdHtrZXl3b3JkOkEsZGF0YTpILHNjaGVtYVZhbHVlOiQsaXQ6Tn09eSx7b3B0czpELHByb3BlcnR5TmFtZTpCLHRvcFNjaGVtYVJlZjpHLHNjaGVtYVBhdGg6cGV9PU47Ty5wdXNoKFtpLmtleXdvcmQsQV0sW2kucGFyYW1zLHR5cGVvZiBfPT0iZnVuY3Rpb24iP18oeSk6X3x8KDAsdC5fKWB7fWBdKSxELm1lc3NhZ2VzJiZPLnB1c2goW2kubWVzc2FnZSx0eXBlb2YgYj09ImZ1bmN0aW9uIj9iKHkpOmJdKSxELnZlcmJvc2UmJk8ucHVzaChbaS5zY2hlbWEsJF0sW2kucGFyZW50U2NoZW1hLCgwLHQuXylgJHtHfSR7cGV9YF0sW24uZGVmYXVsdC5kYXRhLEhdKSxCJiZPLnB1c2goW2kucHJvcGVydHlOYW1lLEJdKX19KEVyKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodHIsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLHRyLmJvb2xPckVtcHR5U2NoZW1hPXRyLnRvcEJvb2xPckVtcHR5U2NoZW1hPXZvaWQgMDtjb25zdCBfYz1FcixnYz11ZSxFYz1MZSx5Yz17bWVzc2FnZToiYm9vbGVhbiBzY2hlbWEgaXMgZmFsc2UifTtmdW5jdGlvbiAkYyhlKXtjb25zdHtnZW46dCxzY2hlbWE6cix2YWxpZGF0ZU5hbWU6bn09ZTtyPT09ITE/bmEoZSwhMSk6dHlwZW9mIHI9PSJvYmplY3QiJiZyLiRhc3luYz09PSEwP3QucmV0dXJuKEVjLmRlZmF1bHQuZGF0YSk6KHQuYXNzaWduKCgwLGdjLl8pYCR7bn0uZXJyb3JzYCxudWxsKSx0LnJldHVybighMCkpfXRyLnRvcEJvb2xPckVtcHR5U2NoZW1hPSRjO2Z1bmN0aW9uIHdjKGUsdCl7Y29uc3R7Z2VuOnIsc2NoZW1hOm59PWU7bj09PSExPyhyLnZhcih0LCExKSxuYShlKSk6ci52YXIodCwhMCl9dHIuYm9vbE9yRW1wdHlTY2hlbWE9d2M7ZnVuY3Rpb24gbmEoZSx0KXtjb25zdHtnZW46cixkYXRhOm59PWUscz17Z2VuOnIsa2V5d29yZDoiZmFsc2Ugc2NoZW1hIixkYXRhOm4sc2NoZW1hOiExLHNjaGVtYUNvZGU6ITEsc2NoZW1hVmFsdWU6ITEscGFyYW1zOnt9LGl0OmV9OygwLF9jLnJlcG9ydEVycm9yKShzLHljLHZvaWQgMCx0KX12YXIgbm49e30sRHQ9e307T2JqZWN0LmRlZmluZVByb3BlcnR5KER0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxEdC5nZXRSdWxlcz1EdC5pc0pTT05UeXBlPXZvaWQgMDtjb25zdCBTYz1bInN0cmluZyIsIm51bWJlciIsImludGVnZXIiLCJib29sZWFuIiwibnVsbCIsIm9iamVjdCIsImFycmF5Il0sUmM9bmV3IFNldChTYyk7ZnVuY3Rpb24gYmMoZSl7cmV0dXJuIHR5cGVvZiBlPT0ic3RyaW5nIiYmUmMuaGFzKGUpfUR0LmlzSlNPTlR5cGU9YmM7ZnVuY3Rpb24gT2MoKXtjb25zdCBlPXtudW1iZXI6e3R5cGU6Im51bWJlciIscnVsZXM6W119LHN0cmluZzp7dHlwZToic3RyaW5nIixydWxlczpbXX0sYXJyYXk6e3R5cGU6ImFycmF5IixydWxlczpbXX0sb2JqZWN0Ont0eXBlOiJvYmplY3QiLHJ1bGVzOltdfX07cmV0dXJue3R5cGVzOmxlKFEoe30sZSkse2ludGVnZXI6ITAsYm9vbGVhbjohMCxudWxsOiEwfSkscnVsZXM6W3tydWxlczpbXX0sZS5udW1iZXIsZS5zdHJpbmcsZS5hcnJheSxlLm9iamVjdF0scG9zdDp7cnVsZXM6W119LGFsbDp7fSxrZXl3b3Jkczp7fX19RHQuZ2V0UnVsZXM9T2M7dmFyIGx0PXt9O09iamVjdC5kZWZpbmVQcm9wZXJ0eShsdCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksbHQuc2hvdWxkVXNlUnVsZT1sdC5zaG91bGRVc2VHcm91cD1sdC5zY2hlbWFIYXNSdWxlc0ZvclR5cGU9dm9pZCAwO2Z1bmN0aW9uIE5jKHtzY2hlbWE6ZSxzZWxmOnR9LHIpe2NvbnN0IG49dC5SVUxFUy50eXBlc1tyXTtyZXR1cm4gbiYmbiE9PSEwJiZzYShlLG4pfWx0LnNjaGVtYUhhc1J1bGVzRm9yVHlwZT1OYztmdW5jdGlvbiBzYShlLHQpe3JldHVybiB0LnJ1bGVzLnNvbWUocj0+YWEoZSxyKSl9bHQuc2hvdWxkVXNlR3JvdXA9c2E7ZnVuY3Rpb24gYWEoZSx0KXt2YXIgcjtyZXR1cm4gZVt0LmtleXdvcmRdIT09dm9pZCAwfHwoKHI9dC5kZWZpbml0aW9uLmltcGxlbWVudHMpPT09bnVsbHx8cj09PXZvaWQgMD92b2lkIDA6ci5zb21lKG49PmVbbl0hPT12b2lkIDApKX1sdC5zaG91bGRVc2VSdWxlPWFhLGZ1bmN0aW9uKGUpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxlLnJlcG9ydFR5cGVFcnJvcj1lLmNoZWNrRGF0YVR5cGVzPWUuY2hlY2tEYXRhVHlwZT1lLmNvZXJjZUFuZENoZWNrRGF0YVR5cGU9ZS5nZXRKU09OVHlwZXM9ZS5nZXRTY2hlbWFUeXBlcz1lLkRhdGFUeXBlPXZvaWQgMDtjb25zdCB0PUR0LHI9bHQsbj1FcixzPXVlLGE9YmU7dmFyIG87KGZ1bmN0aW9uKE8pe09bTy5Db3JyZWN0PTBdPSJDb3JyZWN0IixPW08uV3Jvbmc9MV09Ildyb25nIn0pKG89ZS5EYXRhVHlwZXx8KGUuRGF0YVR5cGU9e30pKTtmdW5jdGlvbiBsKE8pe2NvbnN0IEE9ZihPLnR5cGUpO2lmKEEuaW5jbHVkZXMoIm51bGwiKSl7aWYoTy5udWxsYWJsZT09PSExKXRocm93IG5ldyBFcnJvcigidHlwZTogbnVsbCBjb250cmFkaWN0cyBudWxsYWJsZTogZmFsc2UiKX1lbHNle2lmKCFBLmxlbmd0aCYmTy5udWxsYWJsZSE9PXZvaWQgMCl0aHJvdyBuZXcgRXJyb3IoJyJudWxsYWJsZSIgY2Fubm90IGJlIHVzZWQgd2l0aG91dCAidHlwZSInKTtPLm51bGxhYmxlPT09ITAmJkEucHVzaCgibnVsbCIpfXJldHVybiBBfWUuZ2V0U2NoZW1hVHlwZXM9bDtmdW5jdGlvbiBmKE8pe2NvbnN0IEE9QXJyYXkuaXNBcnJheShPKT9POk8/W09dOltdO2lmKEEuZXZlcnkodC5pc0pTT05UeXBlKSlyZXR1cm4gQTt0aHJvdyBuZXcgRXJyb3IoInR5cGUgbXVzdCBiZSBKU09OVHlwZSBvciBKU09OVHlwZVtdOiAiK0Euam9pbigiLCIpKX1lLmdldEpTT05UeXBlcz1mO2Z1bmN0aW9uIHAoTyxBKXtjb25zdHtnZW46SCxkYXRhOiQsb3B0czpOfT1PLEQ9aChBLE4uY29lcmNlVHlwZXMpLEI9QS5sZW5ndGg+MCYmIShELmxlbmd0aD09PTAmJkEubGVuZ3RoPT09MSYmKDAsci5zY2hlbWFIYXNSdWxlc0ZvclR5cGUpKE8sQVswXSkpO2lmKEIpe2NvbnN0IEc9aihBLCQsTi5zdHJpY3ROdW1iZXJzLG8uV3JvbmcpO0guaWYoRywoKT0+e0QubGVuZ3RoP0UoTyxBLEQpOl8oTyl9KX1yZXR1cm4gQn1lLmNvZXJjZUFuZENoZWNrRGF0YVR5cGU9cDtjb25zdCBpPW5ldyBTZXQoWyJzdHJpbmciLCJudW1iZXIiLCJpbnRlZ2VyIiwiYm9vbGVhbiIsIm51bGwiXSk7ZnVuY3Rpb24gaChPLEEpe3JldHVybiBBP08uZmlsdGVyKEg9PmkuaGFzKEgpfHxBPT09ImFycmF5IiYmSD09PSJhcnJheSIpOltdfWZ1bmN0aW9uIEUoTyxBLEgpe2NvbnN0e2dlbjokLGRhdGE6TixvcHRzOkR9PU8sQj0kLmxldCgiZGF0YVR5cGUiLCgwLHMuXylgdHlwZW9mICR7Tn1gKSxHPSQubGV0KCJjb2VyY2VkIiwoMCxzLl8pYHVuZGVmaW5lZGApO0QuY29lcmNlVHlwZXM9PT0iYXJyYXkiJiYkLmlmKCgwLHMuXylgJHtCfSA9PSAnb2JqZWN0JyAmJiBBcnJheS5pc0FycmF5KCR7Tn0pICYmICR7Tn0ubGVuZ3RoID09IDFgLCgpPT4kLmFzc2lnbihOLCgwLHMuXylgJHtOfVswXWApLmFzc2lnbihCLCgwLHMuXylgdHlwZW9mICR7Tn1gKS5pZihqKEEsTixELnN0cmljdE51bWJlcnMpLCgpPT4kLmFzc2lnbihHLE4pKSksJC5pZigoMCxzLl8pYCR7R30gIT09IHVuZGVmaW5lZGApO2Zvcihjb25zdCBXIG9mIEgpKGkuaGFzKFcpfHxXPT09ImFycmF5IiYmRC5jb2VyY2VUeXBlcz09PSJhcnJheSIpJiZwZShXKTskLmVsc2UoKSxfKE8pLCQuZW5kSWYoKSwkLmlmKCgwLHMuXylgJHtHfSAhPT0gdW5kZWZpbmVkYCwoKT0+eyQuYXNzaWduKE4sRyksVChPLEcpfSk7ZnVuY3Rpb24gcGUoVyl7c3dpdGNoKFcpe2Nhc2Uic3RyaW5nIjokLmVsc2VJZigoMCxzLl8pYCR7Qn0gPT0gIm51bWJlciIgfHwgJHtCfSA9PSAiYm9vbGVhbiJgKS5hc3NpZ24oRywoMCxzLl8pYCIiICsgJHtOfWApLmVsc2VJZigoMCxzLl8pYCR7Tn0gPT09IG51bGxgKS5hc3NpZ24oRywoMCxzLl8pYCIiYCk7cmV0dXJuO2Nhc2UibnVtYmVyIjokLmVsc2VJZigoMCxzLl8pYCR7Qn0gPT0gImJvb2xlYW4iIHx8ICR7Tn0gPT09IG51bGwKICAgICAgICAgICAgICB8fCAoJHtCfSA9PSAic3RyaW5nIiAmJiAke059ICYmICR7Tn0gPT0gKyR7Tn0pYCkuYXNzaWduKEcsKDAscy5fKWArJHtOfWApO3JldHVybjtjYXNlImludGVnZXIiOiQuZWxzZUlmKCgwLHMuXylgJHtCfSA9PT0gImJvb2xlYW4iIHx8ICR7Tn0gPT09IG51bGwKICAgICAgICAgICAgICB8fCAoJHtCfSA9PT0gInN0cmluZyIgJiYgJHtOfSAmJiAke059ID09ICske059ICYmICEoJHtOfSAlIDEpKWApLmFzc2lnbihHLCgwLHMuXylgKyR7Tn1gKTtyZXR1cm47Y2FzZSJib29sZWFuIjokLmVsc2VJZigoMCxzLl8pYCR7Tn0gPT09ICJmYWxzZSIgfHwgJHtOfSA9PT0gMCB8fCAke059ID09PSBudWxsYCkuYXNzaWduKEcsITEpLmVsc2VJZigoMCxzLl8pYCR7Tn0gPT09ICJ0cnVlIiB8fCAke059ID09PSAxYCkuYXNzaWduKEcsITApO3JldHVybjtjYXNlIm51bGwiOiQuZWxzZUlmKCgwLHMuXylgJHtOfSA9PT0gIiIgfHwgJHtOfSA9PT0gMCB8fCAke059ID09PSBmYWxzZWApLCQuYXNzaWduKEcsbnVsbCk7cmV0dXJuO2Nhc2UiYXJyYXkiOiQuZWxzZUlmKCgwLHMuXylgJHtCfSA9PT0gInN0cmluZyIgfHwgJHtCfSA9PT0gIm51bWJlciIKICAgICAgICAgICAgICB8fCAke0J9ID09PSAiYm9vbGVhbiIgfHwgJHtOfSA9PT0gbnVsbGApLmFzc2lnbihHLCgwLHMuXylgWyR7Tn1dYCl9fX1mdW5jdGlvbiBUKHtnZW46TyxwYXJlbnREYXRhOkEscGFyZW50RGF0YVByb3BlcnR5Okh9LCQpe08uaWYoKDAscy5fKWAke0F9ICE9PSB1bmRlZmluZWRgLCgpPT5PLmFzc2lnbigoMCxzLl8pYCR7QX1bJHtIfV1gLCQpKX1mdW5jdGlvbiBJKE8sQSxILCQ9by5Db3JyZWN0KXtjb25zdCBOPSQ9PT1vLkNvcnJlY3Q/cy5vcGVyYXRvcnMuRVE6cy5vcGVyYXRvcnMuTkVRO2xldCBEO3N3aXRjaChPKXtjYXNlIm51bGwiOnJldHVybigwLHMuXylgJHtBfSAke059IG51bGxgO2Nhc2UiYXJyYXkiOkQ9KDAscy5fKWBBcnJheS5pc0FycmF5KCR7QX0pYDticmVhaztjYXNlIm9iamVjdCI6RD0oMCxzLl8pYCR7QX0gJiYgdHlwZW9mICR7QX0gPT0gIm9iamVjdCIgJiYgIUFycmF5LmlzQXJyYXkoJHtBfSlgO2JyZWFrO2Nhc2UiaW50ZWdlciI6RD1CKCgwLHMuXylgISgke0F9ICUgMSkgJiYgIWlzTmFOKCR7QX0pYCk7YnJlYWs7Y2FzZSJudW1iZXIiOkQ9QigpO2JyZWFrO2RlZmF1bHQ6cmV0dXJuKDAscy5fKWB0eXBlb2YgJHtBfSAke059ICR7T31gfXJldHVybiAkPT09by5Db3JyZWN0P0Q6KDAscy5ub3QpKEQpO2Z1bmN0aW9uIEIoRz1zLm5pbCl7cmV0dXJuKDAscy5hbmQpKCgwLHMuXylgdHlwZW9mICR7QX0gPT0gIm51bWJlciJgLEcsSD8oMCxzLl8pYGlzRmluaXRlKCR7QX0pYDpzLm5pbCl9fWUuY2hlY2tEYXRhVHlwZT1JO2Z1bmN0aW9uIGooTyxBLEgsJCl7aWYoTy5sZW5ndGg9PT0xKXJldHVybiBJKE9bMF0sQSxILCQpO2xldCBOO2NvbnN0IEQ9KDAsYS50b0hhc2gpKE8pO2lmKEQuYXJyYXkmJkQub2JqZWN0KXtjb25zdCBCPSgwLHMuXylgdHlwZW9mICR7QX0gIT0gIm9iamVjdCJgO049RC5udWxsP0I6KDAscy5fKWAhJHtBfSB8fCAke0J9YCxkZWxldGUgRC5udWxsLGRlbGV0ZSBELmFycmF5LGRlbGV0ZSBELm9iamVjdH1lbHNlIE49cy5uaWw7RC5udW1iZXImJmRlbGV0ZSBELmludGVnZXI7Zm9yKGNvbnN0IEIgaW4gRClOPSgwLHMuYW5kKShOLEkoQixBLEgsJCkpO3JldHVybiBOfWUuY2hlY2tEYXRhVHlwZXM9ajtjb25zdCB5PXttZXNzYWdlOih7c2NoZW1hOk99KT0+YG11c3QgYmUgJHtPfWAscGFyYW1zOih7c2NoZW1hOk8sc2NoZW1hVmFsdWU6QX0pPT50eXBlb2YgTz09InN0cmluZyI/KDAscy5fKWB7dHlwZTogJHtPfX1gOigwLHMuXylge3R5cGU6ICR7QX19YH07ZnVuY3Rpb24gXyhPKXtjb25zdCBBPWIoTyk7KDAsbi5yZXBvcnRFcnJvcikoQSx5KX1lLnJlcG9ydFR5cGVFcnJvcj1fO2Z1bmN0aW9uIGIoTyl7Y29uc3R7Z2VuOkEsZGF0YTpILHNjaGVtYTokfT1PLE49KDAsYS5zY2hlbWFSZWZPclZhbCkoTywkLCJ0eXBlIik7cmV0dXJue2dlbjpBLGtleXdvcmQ6InR5cGUiLGRhdGE6SCxzY2hlbWE6JC50eXBlLHNjaGVtYUNvZGU6TixzY2hlbWFWYWx1ZTpOLHBhcmVudFNjaGVtYTokLHBhcmFtczp7fSxpdDpPfX19KG5uKTt2YXIgc249e307T2JqZWN0LmRlZmluZVByb3BlcnR5KHNuLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxzbi5hc3NpZ25EZWZhdWx0cz12b2lkIDA7Y29uc3QgcnI9dWUsUGM9YmU7ZnVuY3Rpb24gVGMoZSx0KXtjb25zdHtwcm9wZXJ0aWVzOnIsaXRlbXM6bn09ZS5zY2hlbWE7aWYodD09PSJvYmplY3QiJiZyKWZvcihjb25zdCBzIGluIHIpb2EoZSxzLHJbc10uZGVmYXVsdCk7ZWxzZSB0PT09ImFycmF5IiYmQXJyYXkuaXNBcnJheShuKSYmbi5mb3JFYWNoKChzLGEpPT5vYShlLGEscy5kZWZhdWx0KSl9c24uYXNzaWduRGVmYXVsdHM9VGM7ZnVuY3Rpb24gb2EoZSx0LHIpe2NvbnN0e2dlbjpuLGNvbXBvc2l0ZVJ1bGU6cyxkYXRhOmEsb3B0czpvfT1lO2lmKHI9PT12b2lkIDApcmV0dXJuO2NvbnN0IGw9KDAscnIuXylgJHthfSR7KDAscnIuZ2V0UHJvcGVydHkpKHQpfWA7aWYocyl7KDAsUGMuY2hlY2tTdHJpY3RNb2RlKShlLGBkZWZhdWx0IGlzIGlnbm9yZWQgZm9yOiAke2x9YCk7cmV0dXJufWxldCBmPSgwLHJyLl8pYCR7bH0gPT09IHVuZGVmaW5lZGA7by51c2VEZWZhdWx0cz09PSJlbXB0eSImJihmPSgwLHJyLl8pYCR7Zn0gfHwgJHtsfSA9PT0gbnVsbCB8fCAke2x9ID09PSAiImApLG4uaWYoZiwoMCxyci5fKWAke2x9ID0gJHsoMCxyci5zdHJpbmdpZnkpKHIpfWApfXZhciBYZT17fSxuZT17fTtPYmplY3QuZGVmaW5lUHJvcGVydHkobmUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLG5lLnZhbGlkYXRlVW5pb249bmUudmFsaWRhdGVBcnJheT1uZS51c2VQYXR0ZXJuPW5lLmNhbGxWYWxpZGF0ZUNvZGU9bmUuc2NoZW1hUHJvcGVydGllcz1uZS5hbGxTY2hlbWFQcm9wZXJ0aWVzPW5lLm5vUHJvcGVydHlJbkRhdGE9bmUucHJvcGVydHlJbkRhdGE9bmUuaXNPd25Qcm9wZXJ0eT1uZS5oYXNQcm9wRnVuYz1uZS5yZXBvcnRNaXNzaW5nUHJvcD1uZS5jaGVja01pc3NpbmdQcm9wPW5lLmNoZWNrUmVwb3J0TWlzc2luZ1Byb3A9dm9pZCAwO2NvbnN0IGRlPXVlLEtuPWJlLEV0PUxlLEFjPWJlO2Z1bmN0aW9uIENjKGUsdCl7Y29uc3R7Z2VuOnIsZGF0YTpuLGl0OnN9PWU7ci5pZihKbihyLG4sdCxzLm9wdHMub3duUHJvcGVydGllcyksKCk9PntlLnNldFBhcmFtcyh7bWlzc2luZ1Byb3BlcnR5OigwLGRlLl8pYCR7dH1gfSwhMCksZS5lcnJvcigpfSl9bmUuY2hlY2tSZXBvcnRNaXNzaW5nUHJvcD1DYztmdW5jdGlvbiBJYyh7Z2VuOmUsZGF0YTp0LGl0OntvcHRzOnJ9fSxuLHMpe3JldHVybigwLGRlLm9yKSguLi5uLm1hcChhPT4oMCxkZS5hbmQpKEpuKGUsdCxhLHIub3duUHJvcGVydGllcyksKDAsZGUuXylgJHtzfSA9ICR7YX1gKSkpfW5lLmNoZWNrTWlzc2luZ1Byb3A9SWM7ZnVuY3Rpb24gRGMoZSx0KXtlLnNldFBhcmFtcyh7bWlzc2luZ1Byb3BlcnR5OnR9LCEwKSxlLmVycm9yKCl9bmUucmVwb3J0TWlzc2luZ1Byb3A9RGM7ZnVuY3Rpb24gaWEoZSl7cmV0dXJuIGUuc2NvcGVWYWx1ZSgiZnVuYyIse3JlZjpPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LGNvZGU6KDAsZGUuXylgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eWB9KX1uZS5oYXNQcm9wRnVuYz1pYTtmdW5jdGlvbiBCbihlLHQscil7cmV0dXJuKDAsZGUuXylgJHtpYShlKX0uY2FsbCgke3R9LCAke3J9KWB9bmUuaXNPd25Qcm9wZXJ0eT1CbjtmdW5jdGlvbiBqYyhlLHQscixuKXtjb25zdCBzPSgwLGRlLl8pYCR7dH0keygwLGRlLmdldFByb3BlcnR5KShyKX0gIT09IHVuZGVmaW5lZGA7cmV0dXJuIG4/KDAsZGUuXylgJHtzfSAmJiAke0JuKGUsdCxyKX1gOnN9bmUucHJvcGVydHlJbkRhdGE9amM7ZnVuY3Rpb24gSm4oZSx0LHIsbil7Y29uc3Qgcz0oMCxkZS5fKWAke3R9JHsoMCxkZS5nZXRQcm9wZXJ0eSkocil9ID09PSB1bmRlZmluZWRgO3JldHVybiBuPygwLGRlLm9yKShzLCgwLGRlLm5vdCkoQm4oZSx0LHIpKSk6c31uZS5ub1Byb3BlcnR5SW5EYXRhPUpuO2Z1bmN0aW9uIGNhKGUpe3JldHVybiBlP09iamVjdC5rZXlzKGUpLmZpbHRlcih0PT50IT09Il9fcHJvdG9fXyIpOltdfW5lLmFsbFNjaGVtYVByb3BlcnRpZXM9Y2E7ZnVuY3Rpb24ga2MoZSx0KXtyZXR1cm4gY2EodCkuZmlsdGVyKHI9PiEoMCxLbi5hbHdheXNWYWxpZFNjaGVtYSkoZSx0W3JdKSl9bmUuc2NoZW1hUHJvcGVydGllcz1rYztmdW5jdGlvbiBVYyh7c2NoZW1hQ29kZTplLGRhdGE6dCxpdDp7Z2VuOnIsdG9wU2NoZW1hUmVmOm4sc2NoZW1hUGF0aDpzLGVycm9yUGF0aDphfSxpdDpvfSxsLGYscCl7Y29uc3QgaT1wPygwLGRlLl8pYCR7ZX0sICR7dH0sICR7bn0ke3N9YDp0LGg9W1tFdC5kZWZhdWx0Lmluc3RhbmNlUGF0aCwoMCxkZS5zdHJDb25jYXQpKEV0LmRlZmF1bHQuaW5zdGFuY2VQYXRoLGEpXSxbRXQuZGVmYXVsdC5wYXJlbnREYXRhLG8ucGFyZW50RGF0YV0sW0V0LmRlZmF1bHQucGFyZW50RGF0YVByb3BlcnR5LG8ucGFyZW50RGF0YVByb3BlcnR5XSxbRXQuZGVmYXVsdC5yb290RGF0YSxFdC5kZWZhdWx0LnJvb3REYXRhXV07by5vcHRzLmR5bmFtaWNSZWYmJmgucHVzaChbRXQuZGVmYXVsdC5keW5hbWljQW5jaG9ycyxFdC5kZWZhdWx0LmR5bmFtaWNBbmNob3JzXSk7Y29uc3QgRT0oMCxkZS5fKWAke2l9LCAke3Iub2JqZWN0KC4uLmgpfWA7cmV0dXJuIGYhPT1kZS5uaWw/KDAsZGUuXylgJHtsfS5jYWxsKCR7Zn0sICR7RX0pYDooMCxkZS5fKWAke2x9KCR7RX0pYH1uZS5jYWxsVmFsaWRhdGVDb2RlPVVjO2NvbnN0IEZjPSgwLGRlLl8pYG5ldyBSZWdFeHBgO2Z1bmN0aW9uIE1jKHtnZW46ZSxpdDp7b3B0czp0fX0scil7Y29uc3Qgbj10LnVuaWNvZGVSZWdFeHA/InUiOiIiLHtyZWdFeHA6c309dC5jb2RlLGE9cyhyLG4pO3JldHVybiBlLnNjb3BlVmFsdWUoInBhdHRlcm4iLHtrZXk6YS50b1N0cmluZygpLHJlZjphLGNvZGU6KDAsZGUuXylgJHtzLmNvZGU9PT0ibmV3IFJlZ0V4cCI/RmM6KDAsQWMudXNlRnVuYykoZSxzKX0oJHtyfSwgJHtufSlgfSl9bmUudXNlUGF0dGVybj1NYztmdW5jdGlvbiBMYyhlKXtjb25zdHtnZW46dCxkYXRhOnIsa2V5d29yZDpuLGl0OnN9PWUsYT10Lm5hbWUoInZhbGlkIik7aWYocy5hbGxFcnJvcnMpe2NvbnN0IGw9dC5sZXQoInZhbGlkIiwhMCk7cmV0dXJuIG8oKCk9PnQuYXNzaWduKGwsITEpKSxsfXJldHVybiB0LnZhcihhLCEwKSxvKCgpPT50LmJyZWFrKCkpLGE7ZnVuY3Rpb24gbyhsKXtjb25zdCBmPXQuY29uc3QoImxlbiIsKDAsZGUuXylgJHtyfS5sZW5ndGhgKTt0LmZvclJhbmdlKCJpIiwwLGYscD0+e2Uuc3Vic2NoZW1hKHtrZXl3b3JkOm4sZGF0YVByb3A6cCxkYXRhUHJvcFR5cGU6S24uVHlwZS5OdW19LGEpLHQuaWYoKDAsZGUubm90KShhKSxsKX0pfX1uZS52YWxpZGF0ZUFycmF5PUxjO2Z1bmN0aW9uIFZjKGUpe2NvbnN0e2dlbjp0LHNjaGVtYTpyLGtleXdvcmQ6bixpdDpzfT1lO2lmKCFBcnJheS5pc0FycmF5KHIpKXRocm93IG5ldyBFcnJvcigiYWp2IGltcGxlbWVudGF0aW9uIGVycm9yIik7aWYoci5zb21lKGY9PigwLEtuLmFsd2F5c1ZhbGlkU2NoZW1hKShzLGYpKSYmIXMub3B0cy51bmV2YWx1YXRlZClyZXR1cm47Y29uc3Qgbz10LmxldCgidmFsaWQiLCExKSxsPXQubmFtZSgiX3ZhbGlkIik7dC5ibG9jaygoKT0+ci5mb3JFYWNoKChmLHApPT57Y29uc3QgaT1lLnN1YnNjaGVtYSh7a2V5d29yZDpuLHNjaGVtYVByb3A6cCxjb21wb3NpdGVSdWxlOiEwfSxsKTt0LmFzc2lnbihvLCgwLGRlLl8pYCR7b30gfHwgJHtsfWApLGUubWVyZ2VWYWxpZEV2YWx1YXRlZChpLGwpfHx0LmlmKCgwLGRlLm5vdCkobykpfSkpLGUucmVzdWx0KG8sKCk9PmUucmVzZXQoKSwoKT0+ZS5lcnJvcighMCkpfW5lLnZhbGlkYXRlVW5pb249VmMsT2JqZWN0LmRlZmluZVByb3BlcnR5KFhlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxYZS52YWxpZGF0ZUtleXdvcmRVc2FnZT1YZS52YWxpZFNjaGVtYVR5cGU9WGUuZnVuY0tleXdvcmRDb2RlPVhlLm1hY3JvS2V5d29yZENvZGU9dm9pZCAwO2NvbnN0IEllPXVlLGp0PUxlLHpjPW5lLEhjPUVyO2Z1bmN0aW9uIEtjKGUsdCl7Y29uc3R7Z2VuOnIsa2V5d29yZDpuLHNjaGVtYTpzLHBhcmVudFNjaGVtYTphLGl0Om99PWUsbD10Lm1hY3JvLmNhbGwoby5zZWxmLHMsYSxvKSxmPWxhKHIsbixsKTtvLm9wdHMudmFsaWRhdGVTY2hlbWEhPT0hMSYmby5zZWxmLnZhbGlkYXRlU2NoZW1hKGwsITApO2NvbnN0IHA9ci5uYW1lKCJ2YWxpZCIpO2Uuc3Vic2NoZW1hKHtzY2hlbWE6bCxzY2hlbWFQYXRoOkllLm5pbCxlcnJTY2hlbWFQYXRoOmAke28uZXJyU2NoZW1hUGF0aH0vJHtufWAsdG9wU2NoZW1hUmVmOmYsY29tcG9zaXRlUnVsZTohMH0scCksZS5wYXNzKHAsKCk9PmUuZXJyb3IoITApKX1YZS5tYWNyb0tleXdvcmRDb2RlPUtjO2Z1bmN0aW9uIEJjKGUsdCl7dmFyIHI7Y29uc3R7Z2VuOm4sa2V5d29yZDpzLHNjaGVtYTphLHBhcmVudFNjaGVtYTpvLCRkYXRhOmwsaXQ6Zn09ZTtxYyhmLHQpO2NvbnN0IHA9IWwmJnQuY29tcGlsZT90LmNvbXBpbGUuY2FsbChmLnNlbGYsYSxvLGYpOnQudmFsaWRhdGUsaT1sYShuLHMscCksaD1uLmxldCgidmFsaWQiKTtlLmJsb2NrJGRhdGEoaCxFKSxlLm9rKChyPXQudmFsaWQpIT09bnVsbCYmciE9PXZvaWQgMD9yOmgpO2Z1bmN0aW9uIEUoKXtpZih0LmVycm9ycz09PSExKWooKSx0Lm1vZGlmeWluZyYmdWEoZSkseSgoKT0+ZS5lcnJvcigpKTtlbHNle2NvbnN0IF89dC5hc3luYz9UKCk6SSgpO3QubW9kaWZ5aW5nJiZ1YShlKSx5KCgpPT5KYyhlLF8pKX19ZnVuY3Rpb24gVCgpe2NvbnN0IF89bi5sZXQoInJ1bGVFcnJzIixudWxsKTtyZXR1cm4gbi50cnkoKCk9PmooKDAsSWUuXylgYXdhaXQgYCksYj0+bi5hc3NpZ24oaCwhMSkuaWYoKDAsSWUuXylgJHtifSBpbnN0YW5jZW9mICR7Zi5WYWxpZGF0aW9uRXJyb3J9YCwoKT0+bi5hc3NpZ24oXywoMCxJZS5fKWAke2J9LmVycm9yc2ApLCgpPT5uLnRocm93KGIpKSksX31mdW5jdGlvbiBJKCl7Y29uc3QgXz0oMCxJZS5fKWAke2l9LmVycm9yc2A7cmV0dXJuIG4uYXNzaWduKF8sbnVsbCksaihJZS5uaWwpLF99ZnVuY3Rpb24gaihfPXQuYXN5bmM/KDAsSWUuXylgYXdhaXQgYDpJZS5uaWwpe2NvbnN0IGI9Zi5vcHRzLnBhc3NDb250ZXh0P2p0LmRlZmF1bHQudGhpczpqdC5kZWZhdWx0LnNlbGYsTz0hKCJjb21waWxlImluIHQmJiFsfHx0LnNjaGVtYT09PSExKTtuLmFzc2lnbihoLCgwLEllLl8pYCR7X30keygwLHpjLmNhbGxWYWxpZGF0ZUNvZGUpKGUsaSxiLE8pfWAsdC5tb2RpZnlpbmcpfWZ1bmN0aW9uIHkoXyl7dmFyIGI7bi5pZigoMCxJZS5ub3QpKChiPXQudmFsaWQpIT09bnVsbCYmYiE9PXZvaWQgMD9iOmgpLF8pfX1YZS5mdW5jS2V5d29yZENvZGU9QmM7ZnVuY3Rpb24gdWEoZSl7Y29uc3R7Z2VuOnQsZGF0YTpyLGl0Om59PWU7dC5pZihuLnBhcmVudERhdGEsKCk9PnQuYXNzaWduKHIsKDAsSWUuXylgJHtuLnBhcmVudERhdGF9WyR7bi5wYXJlbnREYXRhUHJvcGVydHl9XWApKX1mdW5jdGlvbiBKYyhlLHQpe2NvbnN0e2dlbjpyfT1lO3IuaWYoKDAsSWUuXylgQXJyYXkuaXNBcnJheSgke3R9KWAsKCk9PntyLmFzc2lnbihqdC5kZWZhdWx0LnZFcnJvcnMsKDAsSWUuXylgJHtqdC5kZWZhdWx0LnZFcnJvcnN9ID09PSBudWxsID8gJHt0fSA6ICR7anQuZGVmYXVsdC52RXJyb3JzfS5jb25jYXQoJHt0fSlgKS5hc3NpZ24oanQuZGVmYXVsdC5lcnJvcnMsKDAsSWUuXylgJHtqdC5kZWZhdWx0LnZFcnJvcnN9Lmxlbmd0aGApLCgwLEhjLmV4dGVuZEVycm9ycykoZSl9LCgpPT5lLmVycm9yKCkpfWZ1bmN0aW9uIHFjKHtzY2hlbWFFbnY6ZX0sdCl7aWYodC5hc3luYyYmIWUuJGFzeW5jKXRocm93IG5ldyBFcnJvcigiYXN5bmMga2V5d29yZCBpbiBzeW5jIHNjaGVtYSIpfWZ1bmN0aW9uIGxhKGUsdCxyKXtpZihyPT09dm9pZCAwKXRocm93IG5ldyBFcnJvcihga2V5d29yZCAiJHt0fSIgZmFpbGVkIHRvIGNvbXBpbGVgKTtyZXR1cm4gZS5zY29wZVZhbHVlKCJrZXl3b3JkIix0eXBlb2Ygcj09ImZ1bmN0aW9uIj97cmVmOnJ9OntyZWY6cixjb2RlOigwLEllLnN0cmluZ2lmeSkocil9KX1mdW5jdGlvbiBHYyhlLHQscj0hMSl7cmV0dXJuIXQubGVuZ3RofHx0LnNvbWUobj0+bj09PSJhcnJheSI/QXJyYXkuaXNBcnJheShlKTpuPT09Im9iamVjdCI/ZSYmdHlwZW9mIGU9PSJvYmplY3QiJiYhQXJyYXkuaXNBcnJheShlKTp0eXBlb2YgZT09bnx8ciYmdHlwZW9mIGU9PSJ1bmRlZmluZWQiKX1YZS52YWxpZFNjaGVtYVR5cGU9R2M7ZnVuY3Rpb24gUWMoe3NjaGVtYTplLG9wdHM6dCxzZWxmOnIsZXJyU2NoZW1hUGF0aDpufSxzLGEpe2lmKEFycmF5LmlzQXJyYXkocy5rZXl3b3JkKT8hcy5rZXl3b3JkLmluY2x1ZGVzKGEpOnMua2V5d29yZCE9PWEpdGhyb3cgbmV3IEVycm9yKCJhanYgaW1wbGVtZW50YXRpb24gZXJyb3IiKTtjb25zdCBvPXMuZGVwZW5kZW5jaWVzO2lmKG8hPW51bGwmJm8uc29tZShsPT4hT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsbCkpKXRocm93IG5ldyBFcnJvcihgcGFyZW50IHNjaGVtYSBtdXN0IGhhdmUgZGVwZW5kZW5jaWVzIG9mICR7YX06ICR7by5qb2luKCIsIil9YCk7aWYocy52YWxpZGF0ZVNjaGVtYSYmIXMudmFsaWRhdGVTY2hlbWEoZVthXSkpe2NvbnN0IGY9YGtleXdvcmQgIiR7YX0iIHZhbHVlIGlzIGludmFsaWQgYXQgcGF0aCAiJHtufSI6IGArci5lcnJvcnNUZXh0KHMudmFsaWRhdGVTY2hlbWEuZXJyb3JzKTtpZih0LnZhbGlkYXRlU2NoZW1hPT09ImxvZyIpci5sb2dnZXIuZXJyb3IoZik7ZWxzZSB0aHJvdyBuZXcgRXJyb3IoZil9fVhlLnZhbGlkYXRlS2V5d29yZFVzYWdlPVFjO3ZhciB5dD17fTtPYmplY3QuZGVmaW5lUHJvcGVydHkoeXQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLHl0LmV4dGVuZFN1YnNjaGVtYU1vZGU9eXQuZXh0ZW5kU3Vic2NoZW1hRGF0YT15dC5nZXRTdWJzY2hlbWE9dm9pZCAwO2NvbnN0IFplPXVlLGZhPWJlO2Z1bmN0aW9uIFljKGUse2tleXdvcmQ6dCxzY2hlbWFQcm9wOnIsc2NoZW1hOm4sc2NoZW1hUGF0aDpzLGVyclNjaGVtYVBhdGg6YSx0b3BTY2hlbWFSZWY6b30pe2lmKHQhPT12b2lkIDAmJm4hPT12b2lkIDApdGhyb3cgbmV3IEVycm9yKCdib3RoICJrZXl3b3JkIiBhbmQgInNjaGVtYSIgcGFzc2VkLCBvbmx5IG9uZSBhbGxvd2VkJyk7aWYodCE9PXZvaWQgMCl7Y29uc3QgbD1lLnNjaGVtYVt0XTtyZXR1cm4gcj09PXZvaWQgMD97c2NoZW1hOmwsc2NoZW1hUGF0aDooMCxaZS5fKWAke2Uuc2NoZW1hUGF0aH0keygwLFplLmdldFByb3BlcnR5KSh0KX1gLGVyclNjaGVtYVBhdGg6YCR7ZS5lcnJTY2hlbWFQYXRofS8ke3R9YH06e3NjaGVtYTpsW3JdLHNjaGVtYVBhdGg6KDAsWmUuXylgJHtlLnNjaGVtYVBhdGh9JHsoMCxaZS5nZXRQcm9wZXJ0eSkodCl9JHsoMCxaZS5nZXRQcm9wZXJ0eSkocil9YCxlcnJTY2hlbWFQYXRoOmAke2UuZXJyU2NoZW1hUGF0aH0vJHt0fS8keygwLGZhLmVzY2FwZUZyYWdtZW50KShyKX1gfX1pZihuIT09dm9pZCAwKXtpZihzPT09dm9pZCAwfHxhPT09dm9pZCAwfHxvPT09dm9pZCAwKXRocm93IG5ldyBFcnJvcignInNjaGVtYVBhdGgiLCAiZXJyU2NoZW1hUGF0aCIgYW5kICJ0b3BTY2hlbWFSZWYiIGFyZSByZXF1aXJlZCB3aXRoICJzY2hlbWEiJyk7cmV0dXJue3NjaGVtYTpuLHNjaGVtYVBhdGg6cyx0b3BTY2hlbWFSZWY6byxlcnJTY2hlbWFQYXRoOmF9fXRocm93IG5ldyBFcnJvcignZWl0aGVyICJrZXl3b3JkIiBvciAic2NoZW1hIiBtdXN0IGJlIHBhc3NlZCcpfXl0LmdldFN1YnNjaGVtYT1ZYztmdW5jdGlvbiBXYyhlLHQse2RhdGFQcm9wOnIsZGF0YVByb3BUeXBlOm4sZGF0YTpzLGRhdGFUeXBlczphLHByb3BlcnR5TmFtZTpvfSl7aWYocyE9PXZvaWQgMCYmciE9PXZvaWQgMCl0aHJvdyBuZXcgRXJyb3IoJ2JvdGggImRhdGEiIGFuZCAiZGF0YVByb3AiIHBhc3NlZCwgb25seSBvbmUgYWxsb3dlZCcpO2NvbnN0e2dlbjpsfT10O2lmKHIhPT12b2lkIDApe2NvbnN0e2Vycm9yUGF0aDpwLGRhdGFQYXRoQXJyOmksb3B0czpofT10LEU9bC5sZXQoImRhdGEiLCgwLFplLl8pYCR7dC5kYXRhfSR7KDAsWmUuZ2V0UHJvcGVydHkpKHIpfWAsITApO2YoRSksZS5lcnJvclBhdGg9KDAsWmUuc3RyKWAke3B9JHsoMCxmYS5nZXRFcnJvclBhdGgpKHIsbixoLmpzUHJvcGVydHlTeW50YXgpfWAsZS5wYXJlbnREYXRhUHJvcGVydHk9KDAsWmUuXylgJHtyfWAsZS5kYXRhUGF0aEFycj1bLi4uaSxlLnBhcmVudERhdGFQcm9wZXJ0eV19aWYocyE9PXZvaWQgMCl7Y29uc3QgcD1zIGluc3RhbmNlb2YgWmUuTmFtZT9zOmwubGV0KCJkYXRhIixzLCEwKTtmKHApLG8hPT12b2lkIDAmJihlLnByb3BlcnR5TmFtZT1vKX1hJiYoZS5kYXRhVHlwZXM9YSk7ZnVuY3Rpb24gZihwKXtlLmRhdGE9cCxlLmRhdGFMZXZlbD10LmRhdGFMZXZlbCsxLGUuZGF0YVR5cGVzPVtdLHQuZGVmaW5lZFByb3BlcnRpZXM9bmV3IFNldCxlLnBhcmVudERhdGE9dC5kYXRhLGUuZGF0YU5hbWVzPVsuLi50LmRhdGFOYW1lcyxwXX19eXQuZXh0ZW5kU3Vic2NoZW1hRGF0YT1XYztmdW5jdGlvbiBYYyhlLHtqdGREaXNjcmltaW5hdG9yOnQsanRkTWV0YWRhdGE6cixjb21wb3NpdGVSdWxlOm4sY3JlYXRlRXJyb3JzOnMsYWxsRXJyb3JzOmF9KXtuIT09dm9pZCAwJiYoZS5jb21wb3NpdGVSdWxlPW4pLHMhPT12b2lkIDAmJihlLmNyZWF0ZUVycm9ycz1zKSxhIT09dm9pZCAwJiYoZS5hbGxFcnJvcnM9YSksZS5qdGREaXNjcmltaW5hdG9yPXQsZS5qdGRNZXRhZGF0YT1yfXl0LmV4dGVuZFN1YnNjaGVtYU1vZGU9WGM7dmFyIFRlPXt9LFpjPWZ1bmN0aW9uIGUodCxyKXtpZih0PT09cilyZXR1cm4hMDtpZih0JiZyJiZ0eXBlb2YgdD09Im9iamVjdCImJnR5cGVvZiByPT0ib2JqZWN0Iil7aWYodC5jb25zdHJ1Y3RvciE9PXIuY29uc3RydWN0b3IpcmV0dXJuITE7dmFyIG4scyxhO2lmKEFycmF5LmlzQXJyYXkodCkpe2lmKG49dC5sZW5ndGgsbiE9ci5sZW5ndGgpcmV0dXJuITE7Zm9yKHM9bjtzLS0hPT0wOylpZighZSh0W3NdLHJbc10pKXJldHVybiExO3JldHVybiEwfWlmKHQuY29uc3RydWN0b3I9PT1SZWdFeHApcmV0dXJuIHQuc291cmNlPT09ci5zb3VyY2UmJnQuZmxhZ3M9PT1yLmZsYWdzO2lmKHQudmFsdWVPZiE9PU9iamVjdC5wcm90b3R5cGUudmFsdWVPZilyZXR1cm4gdC52YWx1ZU9mKCk9PT1yLnZhbHVlT2YoKTtpZih0LnRvU3RyaW5nIT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZylyZXR1cm4gdC50b1N0cmluZygpPT09ci50b1N0cmluZygpO2lmKGE9T2JqZWN0LmtleXModCksbj1hLmxlbmd0aCxuIT09T2JqZWN0LmtleXMocikubGVuZ3RoKXJldHVybiExO2ZvcihzPW47cy0tIT09MDspaWYoIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChyLGFbc10pKXJldHVybiExO2ZvcihzPW47cy0tIT09MDspe3ZhciBvPWFbc107aWYoIWUodFtvXSxyW29dKSlyZXR1cm4hMX1yZXR1cm4hMH1yZXR1cm4gdCE9PXQmJnIhPT1yfSxkYT17ZXhwb3J0czp7fX0sJHQ9ZGEuZXhwb3J0cz1mdW5jdGlvbihlLHQscil7dHlwZW9mIHQ9PSJmdW5jdGlvbiImJihyPXQsdD17fSkscj10LmNifHxyO3ZhciBuPXR5cGVvZiByPT0iZnVuY3Rpb24iP3I6ci5wcmV8fGZ1bmN0aW9uKCl7fSxzPXIucG9zdHx8ZnVuY3Rpb24oKXt9O2FuKHQsbixzLGUsIiIsZSl9OyR0LmtleXdvcmRzPXthZGRpdGlvbmFsSXRlbXM6ITAsaXRlbXM6ITAsY29udGFpbnM6ITAsYWRkaXRpb25hbFByb3BlcnRpZXM6ITAscHJvcGVydHlOYW1lczohMCxub3Q6ITAsaWY6ITAsdGhlbjohMCxlbHNlOiEwfSwkdC5hcnJheUtleXdvcmRzPXtpdGVtczohMCxhbGxPZjohMCxhbnlPZjohMCxvbmVPZjohMH0sJHQucHJvcHNLZXl3b3Jkcz17JGRlZnM6ITAsZGVmaW5pdGlvbnM6ITAscHJvcGVydGllczohMCxwYXR0ZXJuUHJvcGVydGllczohMCxkZXBlbmRlbmNpZXM6ITB9LCR0LnNraXBLZXl3b3Jkcz17ZGVmYXVsdDohMCxlbnVtOiEwLGNvbnN0OiEwLHJlcXVpcmVkOiEwLG1heGltdW06ITAsbWluaW11bTohMCxleGNsdXNpdmVNYXhpbXVtOiEwLGV4Y2x1c2l2ZU1pbmltdW06ITAsbXVsdGlwbGVPZjohMCxtYXhMZW5ndGg6ITAsbWluTGVuZ3RoOiEwLHBhdHRlcm46ITAsZm9ybWF0OiEwLG1heEl0ZW1zOiEwLG1pbkl0ZW1zOiEwLHVuaXF1ZUl0ZW1zOiEwLG1heFByb3BlcnRpZXM6ITAsbWluUHJvcGVydGllczohMH07ZnVuY3Rpb24gYW4oZSx0LHIsbixzLGEsbyxsLGYscCl7aWYobiYmdHlwZW9mIG49PSJvYmplY3QiJiYhQXJyYXkuaXNBcnJheShuKSl7dChuLHMsYSxvLGwsZixwKTtmb3IodmFyIGkgaW4gbil7dmFyIGg9bltpXTtpZihBcnJheS5pc0FycmF5KGgpKXtpZihpIGluICR0LmFycmF5S2V5d29yZHMpZm9yKHZhciBFPTA7RTxoLmxlbmd0aDtFKyspYW4oZSx0LHIsaFtFXSxzKyIvIitpKyIvIitFLGEscyxpLG4sRSl9ZWxzZSBpZihpIGluICR0LnByb3BzS2V5d29yZHMpe2lmKGgmJnR5cGVvZiBoPT0ib2JqZWN0Iilmb3IodmFyIFQgaW4gaClhbihlLHQscixoW1RdLHMrIi8iK2krIi8iK3hjKFQpLGEscyxpLG4sVCl9ZWxzZShpIGluICR0LmtleXdvcmRzfHxlLmFsbEtleXMmJiEoaSBpbiAkdC5za2lwS2V5d29yZHMpKSYmYW4oZSx0LHIsaCxzKyIvIitpLGEscyxpLG4pfXIobixzLGEsbyxsLGYscCl9fWZ1bmN0aW9uIHhjKGUpe3JldHVybiBlLnJlcGxhY2UoL34vZywifjAiKS5yZXBsYWNlKC9cLy9nLCJ+MSIpfU9iamVjdC5kZWZpbmVQcm9wZXJ0eShUZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksVGUuZ2V0U2NoZW1hUmVmcz1UZS5yZXNvbHZlVXJsPVRlLm5vcm1hbGl6ZUlkPVRlLl9nZXRGdWxsUGF0aD1UZS5nZXRGdWxsUGF0aD1UZS5pbmxpbmVSZWY9dm9pZCAwO2NvbnN0IGV1PWJlLHR1PVpjLHJ1PWRhLmV4cG9ydHMsbnU9bmV3IFNldChbInR5cGUiLCJmb3JtYXQiLCJwYXR0ZXJuIiwibWF4TGVuZ3RoIiwibWluTGVuZ3RoIiwibWF4UHJvcGVydGllcyIsIm1pblByb3BlcnRpZXMiLCJtYXhJdGVtcyIsIm1pbkl0ZW1zIiwibWF4aW11bSIsIm1pbmltdW0iLCJ1bmlxdWVJdGVtcyIsIm11bHRpcGxlT2YiLCJyZXF1aXJlZCIsImVudW0iLCJjb25zdCJdKTtmdW5jdGlvbiBzdShlLHQ9ITApe3JldHVybiB0eXBlb2YgZT09ImJvb2xlYW4iPyEwOnQ9PT0hMD8hcW4oZSk6dD9oYShlKTw9dDohMX1UZS5pbmxpbmVSZWY9c3U7Y29uc3QgYXU9bmV3IFNldChbIiRyZWYiLCIkcmVjdXJzaXZlUmVmIiwiJHJlY3Vyc2l2ZUFuY2hvciIsIiRkeW5hbWljUmVmIiwiJGR5bmFtaWNBbmNob3IiXSk7ZnVuY3Rpb24gcW4oZSl7Zm9yKGNvbnN0IHQgaW4gZSl7aWYoYXUuaGFzKHQpKXJldHVybiEwO2NvbnN0IHI9ZVt0XTtpZihBcnJheS5pc0FycmF5KHIpJiZyLnNvbWUocW4pfHx0eXBlb2Ygcj09Im9iamVjdCImJnFuKHIpKXJldHVybiEwfXJldHVybiExfWZ1bmN0aW9uIGhhKGUpe2xldCB0PTA7Zm9yKGNvbnN0IHIgaW4gZSl7aWYocj09PSIkcmVmIilyZXR1cm4gMS8wO2lmKHQrKywhbnUuaGFzKHIpJiYodHlwZW9mIGVbcl09PSJvYmplY3QiJiYoMCxldS5lYWNoSXRlbSkoZVtyXSxuPT50Kz1oYShuKSksdD09PTEvMCkpcmV0dXJuIDEvMH1yZXR1cm4gdH1mdW5jdGlvbiBwYShlLHQ9IiIscil7ciE9PSExJiYodD1ucih0KSk7Y29uc3Qgbj1lLnBhcnNlKHQpO3JldHVybiBtYShlLG4pfVRlLmdldEZ1bGxQYXRoPXBhO2Z1bmN0aW9uIG1hKGUsdCl7cmV0dXJuIGUuc2VyaWFsaXplKHQpLnNwbGl0KCIjIilbMF0rIiMifVRlLl9nZXRGdWxsUGF0aD1tYTtjb25zdCBvdT0vI1wvPyQvO2Z1bmN0aW9uIG5yKGUpe3JldHVybiBlP2UucmVwbGFjZShvdSwiIik6IiJ9VGUubm9ybWFsaXplSWQ9bnI7ZnVuY3Rpb24gaXUoZSx0LHIpe3JldHVybiByPW5yKHIpLGUucmVzb2x2ZSh0LHIpfVRlLnJlc29sdmVVcmw9aXU7Y29uc3QgY3U9L15bYS16X11bLWEtejAtOS5fXSokL2k7ZnVuY3Rpb24gdXUoZSx0KXtpZih0eXBlb2YgZT09ImJvb2xlYW4iKXJldHVybnt9O2NvbnN0e3NjaGVtYUlkOnIsdXJpUmVzb2x2ZXI6bn09dGhpcy5vcHRzLHM9bnIoZVtyXXx8dCksYT17IiI6c30sbz1wYShuLHMsITEpLGw9e30sZj1uZXcgU2V0O3JldHVybiBydShlLHthbGxLZXlzOiEwfSwoaCxFLFQsSSk9PntpZihJPT09dm9pZCAwKXJldHVybjtjb25zdCBqPW8rRTtsZXQgeT1hW0ldO3R5cGVvZiBoW3JdPT0ic3RyaW5nIiYmKHk9Xy5jYWxsKHRoaXMsaFtyXSkpLGIuY2FsbCh0aGlzLGguJGFuY2hvciksYi5jYWxsKHRoaXMsaC4kZHluYW1pY0FuY2hvciksYVtFXT15O2Z1bmN0aW9uIF8oTyl7Y29uc3QgQT10aGlzLm9wdHMudXJpUmVzb2x2ZXIucmVzb2x2ZTtpZihPPW5yKHk/QSh5LE8pOk8pLGYuaGFzKE8pKXRocm93IGkoTyk7Zi5hZGQoTyk7bGV0IEg9dGhpcy5yZWZzW09dO3JldHVybiB0eXBlb2YgSD09InN0cmluZyImJihIPXRoaXMucmVmc1tIXSksdHlwZW9mIEg9PSJvYmplY3QiP3AoaCxILnNjaGVtYSxPKTpPIT09bnIoaikmJihPWzBdPT09IiMiPyhwKGgsbFtPXSxPKSxsW09dPWgpOnRoaXMucmVmc1tPXT1qKSxPfWZ1bmN0aW9uIGIoTyl7aWYodHlwZW9mIE89PSJzdHJpbmciKXtpZighY3UudGVzdChPKSl0aHJvdyBuZXcgRXJyb3IoYGludmFsaWQgYW5jaG9yICIke099ImApO18uY2FsbCh0aGlzLGAjJHtPfWApfX19KSxsO2Z1bmN0aW9uIHAoaCxFLFQpe2lmKEUhPT12b2lkIDAmJiF0dShoLEUpKXRocm93IGkoVCl9ZnVuY3Rpb24gaShoKXtyZXR1cm4gbmV3IEVycm9yKGByZWZlcmVuY2UgIiR7aH0iIHJlc29sdmVzIHRvIG1vcmUgdGhhbiBvbmUgc2NoZW1hYCl9fVRlLmdldFNjaGVtYVJlZnM9dXUsT2JqZWN0LmRlZmluZVByb3BlcnR5KFdlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxXZS5nZXREYXRhPVdlLktleXdvcmRDeHQ9V2UudmFsaWRhdGVGdW5jdGlvbkNvZGU9dm9pZCAwO2NvbnN0IHZhPXRyLF9hPW5uLEduPWx0LG9uPW5uLGx1PXNuLCRyPVhlLFFuPXl0LE09dWUsSj1MZSxmdT1UZSxmdD1iZSx3cj1FcjtmdW5jdGlvbiBkdShlKXtpZigkYShlKSYmKHdhKGUpLHlhKGUpKSl7bXUoZSk7cmV0dXJufWdhKGUsKCk9PigwLHZhLnRvcEJvb2xPckVtcHR5U2NoZW1hKShlKSl9V2UudmFsaWRhdGVGdW5jdGlvbkNvZGU9ZHU7ZnVuY3Rpb24gZ2Eoe2dlbjplLHZhbGlkYXRlTmFtZTp0LHNjaGVtYTpyLHNjaGVtYUVudjpuLG9wdHM6c30sYSl7cy5jb2RlLmVzNT9lLmZ1bmModCwoMCxNLl8pYCR7Si5kZWZhdWx0LmRhdGF9LCAke0ouZGVmYXVsdC52YWxDeHR9YCxuLiRhc3luYywoKT0+e2UuY29kZSgoMCxNLl8pYCJ1c2Ugc3RyaWN0IjsgJHtFYShyLHMpfWApLHB1KGUscyksZS5jb2RlKGEpfSk6ZS5mdW5jKHQsKDAsTS5fKWAke0ouZGVmYXVsdC5kYXRhfSwgJHtodShzKX1gLG4uJGFzeW5jLCgpPT5lLmNvZGUoRWEocixzKSkuY29kZShhKSl9ZnVuY3Rpb24gaHUoZSl7cmV0dXJuKDAsTS5fKWB7JHtKLmRlZmF1bHQuaW5zdGFuY2VQYXRofT0iIiwgJHtKLmRlZmF1bHQucGFyZW50RGF0YX0sICR7Si5kZWZhdWx0LnBhcmVudERhdGFQcm9wZXJ0eX0sICR7Si5kZWZhdWx0LnJvb3REYXRhfT0ke0ouZGVmYXVsdC5kYXRhfSR7ZS5keW5hbWljUmVmPygwLE0uXylgLCAke0ouZGVmYXVsdC5keW5hbWljQW5jaG9yc309e31gOk0ubmlsfX09e31gfWZ1bmN0aW9uIHB1KGUsdCl7ZS5pZihKLmRlZmF1bHQudmFsQ3h0LCgpPT57ZS52YXIoSi5kZWZhdWx0Lmluc3RhbmNlUGF0aCwoMCxNLl8pYCR7Si5kZWZhdWx0LnZhbEN4dH0uJHtKLmRlZmF1bHQuaW5zdGFuY2VQYXRofWApLGUudmFyKEouZGVmYXVsdC5wYXJlbnREYXRhLCgwLE0uXylgJHtKLmRlZmF1bHQudmFsQ3h0fS4ke0ouZGVmYXVsdC5wYXJlbnREYXRhfWApLGUudmFyKEouZGVmYXVsdC5wYXJlbnREYXRhUHJvcGVydHksKDAsTS5fKWAke0ouZGVmYXVsdC52YWxDeHR9LiR7Si5kZWZhdWx0LnBhcmVudERhdGFQcm9wZXJ0eX1gKSxlLnZhcihKLmRlZmF1bHQucm9vdERhdGEsKDAsTS5fKWAke0ouZGVmYXVsdC52YWxDeHR9LiR7Si5kZWZhdWx0LnJvb3REYXRhfWApLHQuZHluYW1pY1JlZiYmZS52YXIoSi5kZWZhdWx0LmR5bmFtaWNBbmNob3JzLCgwLE0uXylgJHtKLmRlZmF1bHQudmFsQ3h0fS4ke0ouZGVmYXVsdC5keW5hbWljQW5jaG9yc31gKX0sKCk9PntlLnZhcihKLmRlZmF1bHQuaW5zdGFuY2VQYXRoLCgwLE0uXylgIiJgKSxlLnZhcihKLmRlZmF1bHQucGFyZW50RGF0YSwoMCxNLl8pYHVuZGVmaW5lZGApLGUudmFyKEouZGVmYXVsdC5wYXJlbnREYXRhUHJvcGVydHksKDAsTS5fKWB1bmRlZmluZWRgKSxlLnZhcihKLmRlZmF1bHQucm9vdERhdGEsSi5kZWZhdWx0LmRhdGEpLHQuZHluYW1pY1JlZiYmZS52YXIoSi5kZWZhdWx0LmR5bmFtaWNBbmNob3JzLCgwLE0uXylge31gKX0pfWZ1bmN0aW9uIG11KGUpe2NvbnN0e3NjaGVtYTp0LG9wdHM6cixnZW46bn09ZTtnYShlLCgpPT57ci4kY29tbWVudCYmdC4kY29tbWVudCYmUmEoZSkseXUoZSksbi5sZXQoSi5kZWZhdWx0LnZFcnJvcnMsbnVsbCksbi5sZXQoSi5kZWZhdWx0LmVycm9ycywwKSxyLnVuZXZhbHVhdGVkJiZ2dShlKSxTYShlKSxTdShlKX0pfWZ1bmN0aW9uIHZ1KGUpe2NvbnN0e2dlbjp0LHZhbGlkYXRlTmFtZTpyfT1lO2UuZXZhbHVhdGVkPXQuY29uc3QoImV2YWx1YXRlZCIsKDAsTS5fKWAke3J9LmV2YWx1YXRlZGApLHQuaWYoKDAsTS5fKWAke2UuZXZhbHVhdGVkfS5keW5hbWljUHJvcHNgLCgpPT50LmFzc2lnbigoMCxNLl8pYCR7ZS5ldmFsdWF0ZWR9LnByb3BzYCwoMCxNLl8pYHVuZGVmaW5lZGApKSx0LmlmKCgwLE0uXylgJHtlLmV2YWx1YXRlZH0uZHluYW1pY0l0ZW1zYCwoKT0+dC5hc3NpZ24oKDAsTS5fKWAke2UuZXZhbHVhdGVkfS5pdGVtc2AsKDAsTS5fKWB1bmRlZmluZWRgKSl9ZnVuY3Rpb24gRWEoZSx0KXtjb25zdCByPXR5cGVvZiBlPT0ib2JqZWN0IiYmZVt0LnNjaGVtYUlkXTtyZXR1cm4gciYmKHQuY29kZS5zb3VyY2V8fHQuY29kZS5wcm9jZXNzKT8oMCxNLl8pYC8qIyBzb3VyY2VVUkw9JHtyfSAqL2A6TS5uaWx9ZnVuY3Rpb24gX3UoZSx0KXtpZigkYShlKSYmKHdhKGUpLHlhKGUpKSl7Z3UoZSx0KTtyZXR1cm59KDAsdmEuYm9vbE9yRW1wdHlTY2hlbWEpKGUsdCl9ZnVuY3Rpb24geWEoe3NjaGVtYTplLHNlbGY6dH0pe2lmKHR5cGVvZiBlPT0iYm9vbGVhbiIpcmV0dXJuIWU7Zm9yKGNvbnN0IHIgaW4gZSlpZih0LlJVTEVTLmFsbFtyXSlyZXR1cm4hMDtyZXR1cm4hMX1mdW5jdGlvbiAkYShlKXtyZXR1cm4gdHlwZW9mIGUuc2NoZW1hIT0iYm9vbGVhbiJ9ZnVuY3Rpb24gZ3UoZSx0KXtjb25zdHtzY2hlbWE6cixnZW46bixvcHRzOnN9PWU7cy4kY29tbWVudCYmci4kY29tbWVudCYmUmEoZSksJHUoZSksd3UoZSk7Y29uc3QgYT1uLmNvbnN0KCJfZXJycyIsSi5kZWZhdWx0LmVycm9ycyk7U2EoZSxhKSxuLnZhcih0LCgwLE0uXylgJHthfSA9PT0gJHtKLmRlZmF1bHQuZXJyb3JzfWApfWZ1bmN0aW9uIHdhKGUpeygwLGZ0LmNoZWNrVW5rbm93blJ1bGVzKShlKSxFdShlKX1mdW5jdGlvbiBTYShlLHQpe2lmKGUub3B0cy5qdGQpcmV0dXJuIGJhKGUsW10sITEsdCk7Y29uc3Qgcj0oMCxfYS5nZXRTY2hlbWFUeXBlcykoZS5zY2hlbWEpLG49KDAsX2EuY29lcmNlQW5kQ2hlY2tEYXRhVHlwZSkoZSxyKTtiYShlLHIsIW4sdCl9ZnVuY3Rpb24gRXUoZSl7Y29uc3R7c2NoZW1hOnQsZXJyU2NoZW1hUGF0aDpyLG9wdHM6bixzZWxmOnN9PWU7dC4kcmVmJiZuLmlnbm9yZUtleXdvcmRzV2l0aFJlZiYmKDAsZnQuc2NoZW1hSGFzUnVsZXNCdXRSZWYpKHQscy5SVUxFUykmJnMubG9nZ2VyLndhcm4oYCRyZWY6IGtleXdvcmRzIGlnbm9yZWQgaW4gc2NoZW1hIGF0IHBhdGggIiR7cn0iYCl9ZnVuY3Rpb24geXUoZSl7Y29uc3R7c2NoZW1hOnQsb3B0czpyfT1lO3QuZGVmYXVsdCE9PXZvaWQgMCYmci51c2VEZWZhdWx0cyYmci5zdHJpY3RTY2hlbWEmJigwLGZ0LmNoZWNrU3RyaWN0TW9kZSkoZSwiZGVmYXVsdCBpcyBpZ25vcmVkIGluIHRoZSBzY2hlbWEgcm9vdCIpfWZ1bmN0aW9uICR1KGUpe2NvbnN0IHQ9ZS5zY2hlbWFbZS5vcHRzLnNjaGVtYUlkXTt0JiYoZS5iYXNlSWQ9KDAsZnUucmVzb2x2ZVVybCkoZS5vcHRzLnVyaVJlc29sdmVyLGUuYmFzZUlkLHQpKX1mdW5jdGlvbiB3dShlKXtpZihlLnNjaGVtYS4kYXN5bmMmJiFlLnNjaGVtYUVudi4kYXN5bmMpdGhyb3cgbmV3IEVycm9yKCJhc3luYyBzY2hlbWEgaW4gc3luYyBzY2hlbWEiKX1mdW5jdGlvbiBSYSh7Z2VuOmUsc2NoZW1hRW52OnQsc2NoZW1hOnIsZXJyU2NoZW1hUGF0aDpuLG9wdHM6c30pe2NvbnN0IGE9ci4kY29tbWVudDtpZihzLiRjb21tZW50PT09ITApZS5jb2RlKCgwLE0uXylgJHtKLmRlZmF1bHQuc2VsZn0ubG9nZ2VyLmxvZygke2F9KWApO2Vsc2UgaWYodHlwZW9mIHMuJGNvbW1lbnQ9PSJmdW5jdGlvbiIpe2NvbnN0IG89KDAsTS5zdHIpYCR7bn0vJGNvbW1lbnRgLGw9ZS5zY29wZVZhbHVlKCJyb290Iix7cmVmOnQucm9vdH0pO2UuY29kZSgoMCxNLl8pYCR7Si5kZWZhdWx0LnNlbGZ9Lm9wdHMuJGNvbW1lbnQoJHthfSwgJHtvfSwgJHtsfS5zY2hlbWEpYCl9fWZ1bmN0aW9uIFN1KGUpe2NvbnN0e2dlbjp0LHNjaGVtYUVudjpyLHZhbGlkYXRlTmFtZTpuLFZhbGlkYXRpb25FcnJvcjpzLG9wdHM6YX09ZTtyLiRhc3luYz90LmlmKCgwLE0uXylgJHtKLmRlZmF1bHQuZXJyb3JzfSA9PT0gMGAsKCk9PnQucmV0dXJuKEouZGVmYXVsdC5kYXRhKSwoKT0+dC50aHJvdygoMCxNLl8pYG5ldyAke3N9KCR7Si5kZWZhdWx0LnZFcnJvcnN9KWApKToodC5hc3NpZ24oKDAsTS5fKWAke259LmVycm9yc2AsSi5kZWZhdWx0LnZFcnJvcnMpLGEudW5ldmFsdWF0ZWQmJlJ1KGUpLHQucmV0dXJuKCgwLE0uXylgJHtKLmRlZmF1bHQuZXJyb3JzfSA9PT0gMGApKX1mdW5jdGlvbiBSdSh7Z2VuOmUsZXZhbHVhdGVkOnQscHJvcHM6cixpdGVtczpufSl7ciBpbnN0YW5jZW9mIE0uTmFtZSYmZS5hc3NpZ24oKDAsTS5fKWAke3R9LnByb3BzYCxyKSxuIGluc3RhbmNlb2YgTS5OYW1lJiZlLmFzc2lnbigoMCxNLl8pYCR7dH0uaXRlbXNgLG4pfWZ1bmN0aW9uIGJhKGUsdCxyLG4pe2NvbnN0e2dlbjpzLHNjaGVtYTphLGRhdGE6byxhbGxFcnJvcnM6bCxvcHRzOmYsc2VsZjpwfT1lLHtSVUxFUzppfT1wO2lmKGEuJHJlZiYmKGYuaWdub3JlS2V5d29yZHNXaXRoUmVmfHwhKDAsZnQuc2NoZW1hSGFzUnVsZXNCdXRSZWYpKGEsaSkpKXtzLmJsb2NrKCgpPT5UYShlLCIkcmVmIixpLmFsbC4kcmVmLmRlZmluaXRpb24pKTtyZXR1cm59Zi5qdGR8fGJ1KGUsdCkscy5ibG9jaygoKT0+e2Zvcihjb25zdCBFIG9mIGkucnVsZXMpaChFKTtoKGkucG9zdCl9KTtmdW5jdGlvbiBoKEUpeyEoMCxHbi5zaG91bGRVc2VHcm91cCkoYSxFKXx8KEUudHlwZT8ocy5pZigoMCxvbi5jaGVja0RhdGFUeXBlKShFLnR5cGUsbyxmLnN0cmljdE51bWJlcnMpKSxPYShlLEUpLHQubGVuZ3RoPT09MSYmdFswXT09PUUudHlwZSYmciYmKHMuZWxzZSgpLCgwLG9uLnJlcG9ydFR5cGVFcnJvcikoZSkpLHMuZW5kSWYoKSk6T2EoZSxFKSxsfHxzLmlmKCgwLE0uXylgJHtKLmRlZmF1bHQuZXJyb3JzfSA9PT0gJHtufHwwfWApKX19ZnVuY3Rpb24gT2EoZSx0KXtjb25zdHtnZW46cixzY2hlbWE6bixvcHRzOnt1c2VEZWZhdWx0czpzfX09ZTtzJiYoMCxsdS5hc3NpZ25EZWZhdWx0cykoZSx0LnR5cGUpLHIuYmxvY2soKCk9Pntmb3IoY29uc3QgYSBvZiB0LnJ1bGVzKSgwLEduLnNob3VsZFVzZVJ1bGUpKG4sYSkmJlRhKGUsYS5rZXl3b3JkLGEuZGVmaW5pdGlvbix0LnR5cGUpfSl9ZnVuY3Rpb24gYnUoZSx0KXtlLnNjaGVtYUVudi5tZXRhfHwhZS5vcHRzLnN0cmljdFR5cGVzfHwoT3UoZSx0KSxlLm9wdHMuYWxsb3dVbmlvblR5cGVzfHxOdShlLHQpLFB1KGUsZS5kYXRhVHlwZXMpKX1mdW5jdGlvbiBPdShlLHQpe2lmKCEhdC5sZW5ndGgpe2lmKCFlLmRhdGFUeXBlcy5sZW5ndGgpe2UuZGF0YVR5cGVzPXQ7cmV0dXJufXQuZm9yRWFjaChyPT57TmEoZS5kYXRhVHlwZXMscil8fFluKGUsYHR5cGUgIiR7cn0iIG5vdCBhbGxvd2VkIGJ5IGNvbnRleHQgIiR7ZS5kYXRhVHlwZXMuam9pbigiLCIpfSJgKX0pLGUuZGF0YVR5cGVzPWUuZGF0YVR5cGVzLmZpbHRlcihyPT5OYSh0LHIpKX19ZnVuY3Rpb24gTnUoZSx0KXt0Lmxlbmd0aD4xJiYhKHQubGVuZ3RoPT09MiYmdC5pbmNsdWRlcygibnVsbCIpKSYmWW4oZSwidXNlIGFsbG93VW5pb25UeXBlcyB0byBhbGxvdyB1bmlvbiB0eXBlIGtleXdvcmQiKX1mdW5jdGlvbiBQdShlLHQpe2NvbnN0IHI9ZS5zZWxmLlJVTEVTLmFsbDtmb3IoY29uc3QgbiBpbiByKXtjb25zdCBzPXJbbl07aWYodHlwZW9mIHM9PSJvYmplY3QiJiYoMCxHbi5zaG91bGRVc2VSdWxlKShlLnNjaGVtYSxzKSl7Y29uc3R7dHlwZTphfT1zLmRlZmluaXRpb247YS5sZW5ndGgmJiFhLnNvbWUobz0+VHUodCxvKSkmJlluKGUsYG1pc3NpbmcgdHlwZSAiJHthLmpvaW4oIiwiKX0iIGZvciBrZXl3b3JkICIke259ImApfX19ZnVuY3Rpb24gVHUoZSx0KXtyZXR1cm4gZS5pbmNsdWRlcyh0KXx8dD09PSJudW1iZXIiJiZlLmluY2x1ZGVzKCJpbnRlZ2VyIil9ZnVuY3Rpb24gTmEoZSx0KXtyZXR1cm4gZS5pbmNsdWRlcyh0KXx8dD09PSJpbnRlZ2VyIiYmZS5pbmNsdWRlcygibnVtYmVyIil9ZnVuY3Rpb24gWW4oZSx0KXt0Kz1gIGF0ICIke2Uuc2NoZW1hRW52LmJhc2VJZCtlLmVyclNjaGVtYVBhdGh9IiAoc3RyaWN0VHlwZXMpYCwoMCxmdC5jaGVja1N0cmljdE1vZGUpKGUsdCxlLm9wdHMuc3RyaWN0VHlwZXMpfWNsYXNzIFBhe2NvbnN0cnVjdG9yKHQscixuKXtpZigoMCwkci52YWxpZGF0ZUtleXdvcmRVc2FnZSkodCxyLG4pLHRoaXMuZ2VuPXQuZ2VuLHRoaXMuYWxsRXJyb3JzPXQuYWxsRXJyb3JzLHRoaXMua2V5d29yZD1uLHRoaXMuZGF0YT10LmRhdGEsdGhpcy5zY2hlbWE9dC5zY2hlbWFbbl0sdGhpcy4kZGF0YT1yLiRkYXRhJiZ0Lm9wdHMuJGRhdGEmJnRoaXMuc2NoZW1hJiZ0aGlzLnNjaGVtYS4kZGF0YSx0aGlzLnNjaGVtYVZhbHVlPSgwLGZ0LnNjaGVtYVJlZk9yVmFsKSh0LHRoaXMuc2NoZW1hLG4sdGhpcy4kZGF0YSksdGhpcy5zY2hlbWFUeXBlPXIuc2NoZW1hVHlwZSx0aGlzLnBhcmVudFNjaGVtYT10LnNjaGVtYSx0aGlzLnBhcmFtcz17fSx0aGlzLml0PXQsdGhpcy5kZWY9cix0aGlzLiRkYXRhKXRoaXMuc2NoZW1hQ29kZT10Lmdlbi5jb25zdCgidlNjaGVtYSIsQWEodGhpcy4kZGF0YSx0KSk7ZWxzZSBpZih0aGlzLnNjaGVtYUNvZGU9dGhpcy5zY2hlbWFWYWx1ZSwhKDAsJHIudmFsaWRTY2hlbWFUeXBlKSh0aGlzLnNjaGVtYSxyLnNjaGVtYVR5cGUsci5hbGxvd1VuZGVmaW5lZCkpdGhyb3cgbmV3IEVycm9yKGAke259IHZhbHVlIG11c3QgYmUgJHtKU09OLnN0cmluZ2lmeShyLnNjaGVtYVR5cGUpfWApOygiY29kZSJpbiByP3IudHJhY2tFcnJvcnM6ci5lcnJvcnMhPT0hMSkmJih0aGlzLmVycnNDb3VudD10Lmdlbi5jb25zdCgiX2VycnMiLEouZGVmYXVsdC5lcnJvcnMpKX1yZXN1bHQodCxyLG4pe3RoaXMuZmFpbFJlc3VsdCgoMCxNLm5vdCkodCkscixuKX1mYWlsUmVzdWx0KHQscixuKXt0aGlzLmdlbi5pZih0KSxuP24oKTp0aGlzLmVycm9yKCkscj8odGhpcy5nZW4uZWxzZSgpLHIoKSx0aGlzLmFsbEVycm9ycyYmdGhpcy5nZW4uZW5kSWYoKSk6dGhpcy5hbGxFcnJvcnM/dGhpcy5nZW4uZW5kSWYoKTp0aGlzLmdlbi5lbHNlKCl9cGFzcyh0LHIpe3RoaXMuZmFpbFJlc3VsdCgoMCxNLm5vdCkodCksdm9pZCAwLHIpfWZhaWwodCl7aWYodD09PXZvaWQgMCl7dGhpcy5lcnJvcigpLHRoaXMuYWxsRXJyb3JzfHx0aGlzLmdlbi5pZighMSk7cmV0dXJufXRoaXMuZ2VuLmlmKHQpLHRoaXMuZXJyb3IoKSx0aGlzLmFsbEVycm9ycz90aGlzLmdlbi5lbmRJZigpOnRoaXMuZ2VuLmVsc2UoKX1mYWlsJGRhdGEodCl7aWYoIXRoaXMuJGRhdGEpcmV0dXJuIHRoaXMuZmFpbCh0KTtjb25zdHtzY2hlbWFDb2RlOnJ9PXRoaXM7dGhpcy5mYWlsKCgwLE0uXylgJHtyfSAhPT0gdW5kZWZpbmVkICYmICgkeygwLE0ub3IpKHRoaXMuaW52YWxpZCRkYXRhKCksdCl9KWApfWVycm9yKHQscixuKXtpZihyKXt0aGlzLnNldFBhcmFtcyhyKSx0aGlzLl9lcnJvcih0LG4pLHRoaXMuc2V0UGFyYW1zKHt9KTtyZXR1cm59dGhpcy5fZXJyb3IodCxuKX1fZXJyb3IodCxyKXsodD93ci5yZXBvcnRFeHRyYUVycm9yOndyLnJlcG9ydEVycm9yKSh0aGlzLHRoaXMuZGVmLmVycm9yLHIpfSRkYXRhRXJyb3IoKXsoMCx3ci5yZXBvcnRFcnJvcikodGhpcyx0aGlzLmRlZi4kZGF0YUVycm9yfHx3ci5rZXl3b3JkJERhdGFFcnJvcil9cmVzZXQoKXtpZih0aGlzLmVycnNDb3VudD09PXZvaWQgMCl0aHJvdyBuZXcgRXJyb3IoJ2FkZCAidHJhY2tFcnJvcnMiIHRvIGtleXdvcmQgZGVmaW5pdGlvbicpOygwLHdyLnJlc2V0RXJyb3JzQ291bnQpKHRoaXMuZ2VuLHRoaXMuZXJyc0NvdW50KX1vayh0KXt0aGlzLmFsbEVycm9yc3x8dGhpcy5nZW4uaWYodCl9c2V0UGFyYW1zKHQscil7cj9PYmplY3QuYXNzaWduKHRoaXMucGFyYW1zLHQpOnRoaXMucGFyYW1zPXR9YmxvY2skZGF0YSh0LHIsbj1NLm5pbCl7dGhpcy5nZW4uYmxvY2soKCk9Pnt0aGlzLmNoZWNrJGRhdGEodCxuKSxyKCl9KX1jaGVjayRkYXRhKHQ9TS5uaWwscj1NLm5pbCl7aWYoIXRoaXMuJGRhdGEpcmV0dXJuO2NvbnN0e2dlbjpuLHNjaGVtYUNvZGU6cyxzY2hlbWFUeXBlOmEsZGVmOm99PXRoaXM7bi5pZigoMCxNLm9yKSgoMCxNLl8pYCR7c30gPT09IHVuZGVmaW5lZGAscikpLHQhPT1NLm5pbCYmbi5hc3NpZ24odCwhMCksKGEubGVuZ3RofHxvLnZhbGlkYXRlU2NoZW1hKSYmKG4uZWxzZUlmKHRoaXMuaW52YWxpZCRkYXRhKCkpLHRoaXMuJGRhdGFFcnJvcigpLHQhPT1NLm5pbCYmbi5hc3NpZ24odCwhMSkpLG4uZWxzZSgpfWludmFsaWQkZGF0YSgpe2NvbnN0e2dlbjp0LHNjaGVtYUNvZGU6cixzY2hlbWFUeXBlOm4sZGVmOnMsaXQ6YX09dGhpcztyZXR1cm4oMCxNLm9yKShvKCksbCgpKTtmdW5jdGlvbiBvKCl7aWYobi5sZW5ndGgpe2lmKCEociBpbnN0YW5jZW9mIE0uTmFtZSkpdGhyb3cgbmV3IEVycm9yKCJhanYgaW1wbGVtZW50YXRpb24gZXJyb3IiKTtjb25zdCBmPUFycmF5LmlzQXJyYXkobik/bjpbbl07cmV0dXJuKDAsTS5fKWAkeygwLG9uLmNoZWNrRGF0YVR5cGVzKShmLHIsYS5vcHRzLnN0cmljdE51bWJlcnMsb24uRGF0YVR5cGUuV3JvbmcpfWB9cmV0dXJuIE0ubmlsfWZ1bmN0aW9uIGwoKXtpZihzLnZhbGlkYXRlU2NoZW1hKXtjb25zdCBmPXQuc2NvcGVWYWx1ZSgidmFsaWRhdGUkZGF0YSIse3JlZjpzLnZhbGlkYXRlU2NoZW1hfSk7cmV0dXJuKDAsTS5fKWAhJHtmfSgke3J9KWB9cmV0dXJuIE0ubmlsfX1zdWJzY2hlbWEodCxyKXtjb25zdCBuPSgwLFFuLmdldFN1YnNjaGVtYSkodGhpcy5pdCx0KTsoMCxRbi5leHRlbmRTdWJzY2hlbWFEYXRhKShuLHRoaXMuaXQsdCksKDAsUW4uZXh0ZW5kU3Vic2NoZW1hTW9kZSkobix0KTtjb25zdCBzPWxlKFEoUSh7fSx0aGlzLml0KSxuKSx7aXRlbXM6dm9pZCAwLHByb3BzOnZvaWQgMH0pO3JldHVybiBfdShzLHIpLHN9bWVyZ2VFdmFsdWF0ZWQodCxyKXtjb25zdHtpdDpuLGdlbjpzfT10aGlzOyFuLm9wdHMudW5ldmFsdWF0ZWR8fChuLnByb3BzIT09ITAmJnQucHJvcHMhPT12b2lkIDAmJihuLnByb3BzPWZ0Lm1lcmdlRXZhbHVhdGVkLnByb3BzKHMsdC5wcm9wcyxuLnByb3BzLHIpKSxuLml0ZW1zIT09ITAmJnQuaXRlbXMhPT12b2lkIDAmJihuLml0ZW1zPWZ0Lm1lcmdlRXZhbHVhdGVkLml0ZW1zKHMsdC5pdGVtcyxuLml0ZW1zLHIpKSl9bWVyZ2VWYWxpZEV2YWx1YXRlZCh0LHIpe2NvbnN0e2l0Om4sZ2VuOnN9PXRoaXM7aWYobi5vcHRzLnVuZXZhbHVhdGVkJiYobi5wcm9wcyE9PSEwfHxuLml0ZW1zIT09ITApKXJldHVybiBzLmlmKHIsKCk9PnRoaXMubWVyZ2VFdmFsdWF0ZWQodCxNLk5hbWUpKSwhMH19V2UuS2V5d29yZEN4dD1QYTtmdW5jdGlvbiBUYShlLHQscixuKXtjb25zdCBzPW5ldyBQYShlLHIsdCk7ImNvZGUiaW4gcj9yLmNvZGUocyxuKTpzLiRkYXRhJiZyLnZhbGlkYXRlPygwLCRyLmZ1bmNLZXl3b3JkQ29kZSkocyxyKToibWFjcm8iaW4gcj8oMCwkci5tYWNyb0tleXdvcmRDb2RlKShzLHIpOihyLmNvbXBpbGV8fHIudmFsaWRhdGUpJiYoMCwkci5mdW5jS2V5d29yZENvZGUpKHMscil9Y29uc3QgQXU9L15cLyg/Oltefl18fjB8fjEpKiQvLEN1PS9eKFswLTldKykoI3xcLyg/Oltefl18fjB8fjEpKik/JC87ZnVuY3Rpb24gQWEoZSx7ZGF0YUxldmVsOnQsZGF0YU5hbWVzOnIsZGF0YVBhdGhBcnI6bn0pe2xldCBzLGE7aWYoZT09PSIiKXJldHVybiBKLmRlZmF1bHQucm9vdERhdGE7aWYoZVswXT09PSIvIil7aWYoIUF1LnRlc3QoZSkpdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIEpTT04tcG9pbnRlcjogJHtlfWApO3M9ZSxhPUouZGVmYXVsdC5yb290RGF0YX1lbHNle2NvbnN0IHA9Q3UuZXhlYyhlKTtpZighcCl0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgSlNPTi1wb2ludGVyOiAke2V9YCk7Y29uc3QgaT0rcFsxXTtpZihzPXBbMl0scz09PSIjIil7aWYoaT49dCl0aHJvdyBuZXcgRXJyb3IoZigicHJvcGVydHkvaW5kZXgiLGkpKTtyZXR1cm4gblt0LWldfWlmKGk+dCl0aHJvdyBuZXcgRXJyb3IoZigiZGF0YSIsaSkpO2lmKGE9clt0LWldLCFzKXJldHVybiBhfWxldCBvPWE7Y29uc3QgbD1zLnNwbGl0KCIvIik7Zm9yKGNvbnN0IHAgb2YgbClwJiYoYT0oMCxNLl8pYCR7YX0keygwLE0uZ2V0UHJvcGVydHkpKCgwLGZ0LnVuZXNjYXBlSnNvblBvaW50ZXIpKHApKX1gLG89KDAsTS5fKWAke299ICYmICR7YX1gKTtyZXR1cm4gbztmdW5jdGlvbiBmKHAsaSl7cmV0dXJuYENhbm5vdCBhY2Nlc3MgJHtwfSAke2l9IGxldmVscyB1cCwgY3VycmVudCBsZXZlbCBpcyAke3R9YH19V2UuZ2V0RGF0YT1BYTt2YXIgY249e307T2JqZWN0LmRlZmluZVByb3BlcnR5KGNuLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTtjbGFzcyBJdSBleHRlbmRzIEVycm9ye2NvbnN0cnVjdG9yKHQpe3N1cGVyKCJ2YWxpZGF0aW9uIGZhaWxlZCIpLHRoaXMuZXJyb3JzPXQsdGhpcy5hanY9dGhpcy52YWxpZGF0aW9uPSEwfX1jbi5kZWZhdWx0PUl1O3ZhciBrdD17fTtPYmplY3QuZGVmaW5lUHJvcGVydHkoa3QsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO2NvbnN0IFduPVRlO2NsYXNzIER1IGV4dGVuZHMgRXJyb3J7Y29uc3RydWN0b3IodCxyLG4scyl7c3VwZXIoc3x8YGNhbid0IHJlc29sdmUgcmVmZXJlbmNlICR7bn0gZnJvbSBpZCAke3J9YCksdGhpcy5taXNzaW5nUmVmPSgwLFduLnJlc29sdmVVcmwpKHQscixuKSx0aGlzLm1pc3NpbmdTY2hlbWE9KDAsV24ubm9ybWFsaXplSWQpKCgwLFduLmdldEZ1bGxQYXRoKSh0LHRoaXMubWlzc2luZ1JlZikpfX1rdC5kZWZhdWx0PUR1O3ZhciBDZT17fTtPYmplY3QuZGVmaW5lUHJvcGVydHkoQ2UsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLENlLnJlc29sdmVTY2hlbWE9Q2UuZ2V0Q29tcGlsaW5nU2NoZW1hPUNlLnJlc29sdmVSZWY9Q2UuY29tcGlsZVNjaGVtYT1DZS5TY2hlbWFFbnY9dm9pZCAwO2NvbnN0IFFlPXVlLGp1PWNuLFV0PUxlLFllPVRlLENhPWJlLGt1PVdlO2NsYXNzIHVue2NvbnN0cnVjdG9yKHQpe3ZhciByO3RoaXMucmVmcz17fSx0aGlzLmR5bmFtaWNBbmNob3JzPXt9O2xldCBuO3R5cGVvZiB0LnNjaGVtYT09Im9iamVjdCImJihuPXQuc2NoZW1hKSx0aGlzLnNjaGVtYT10LnNjaGVtYSx0aGlzLnNjaGVtYUlkPXQuc2NoZW1hSWQsdGhpcy5yb290PXQucm9vdHx8dGhpcyx0aGlzLmJhc2VJZD0ocj10LmJhc2VJZCkhPT1udWxsJiZyIT09dm9pZCAwP3I6KDAsWWUubm9ybWFsaXplSWQpKG49PW51bGw/dm9pZCAwOm5bdC5zY2hlbWFJZHx8IiRpZCJdKSx0aGlzLnNjaGVtYVBhdGg9dC5zY2hlbWFQYXRoLHRoaXMubG9jYWxSZWZzPXQubG9jYWxSZWZzLHRoaXMubWV0YT10Lm1ldGEsdGhpcy4kYXN5bmM9bj09bnVsbD92b2lkIDA6bi4kYXN5bmMsdGhpcy5yZWZzPXt9fX1DZS5TY2hlbWFFbnY9dW47ZnVuY3Rpb24gWG4oZSl7Y29uc3QgdD1JYS5jYWxsKHRoaXMsZSk7aWYodClyZXR1cm4gdDtjb25zdCByPSgwLFllLmdldEZ1bGxQYXRoKSh0aGlzLm9wdHMudXJpUmVzb2x2ZXIsZS5yb290LmJhc2VJZCkse2VzNTpuLGxpbmVzOnN9PXRoaXMub3B0cy5jb2RlLHtvd25Qcm9wZXJ0aWVzOmF9PXRoaXMub3B0cyxvPW5ldyBRZS5Db2RlR2VuKHRoaXMuc2NvcGUse2VzNTpuLGxpbmVzOnMsb3duUHJvcGVydGllczphfSk7bGV0IGw7ZS4kYXN5bmMmJihsPW8uc2NvcGVWYWx1ZSgiRXJyb3IiLHtyZWY6anUuZGVmYXVsdCxjb2RlOigwLFFlLl8pYHJlcXVpcmUoImFqdi9kaXN0L3J1bnRpbWUvdmFsaWRhdGlvbl9lcnJvciIpLmRlZmF1bHRgfSkpO2NvbnN0IGY9by5zY29wZU5hbWUoInZhbGlkYXRlIik7ZS52YWxpZGF0ZU5hbWU9Zjtjb25zdCBwPXtnZW46byxhbGxFcnJvcnM6dGhpcy5vcHRzLmFsbEVycm9ycyxkYXRhOlV0LmRlZmF1bHQuZGF0YSxwYXJlbnREYXRhOlV0LmRlZmF1bHQucGFyZW50RGF0YSxwYXJlbnREYXRhUHJvcGVydHk6VXQuZGVmYXVsdC5wYXJlbnREYXRhUHJvcGVydHksZGF0YU5hbWVzOltVdC5kZWZhdWx0LmRhdGFdLGRhdGFQYXRoQXJyOltRZS5uaWxdLGRhdGFMZXZlbDowLGRhdGFUeXBlczpbXSxkZWZpbmVkUHJvcGVydGllczpuZXcgU2V0LHRvcFNjaGVtYVJlZjpvLnNjb3BlVmFsdWUoInNjaGVtYSIsdGhpcy5vcHRzLmNvZGUuc291cmNlPT09ITA/e3JlZjplLnNjaGVtYSxjb2RlOigwLFFlLnN0cmluZ2lmeSkoZS5zY2hlbWEpfTp7cmVmOmUuc2NoZW1hfSksdmFsaWRhdGVOYW1lOmYsVmFsaWRhdGlvbkVycm9yOmwsc2NoZW1hOmUuc2NoZW1hLHNjaGVtYUVudjplLHJvb3RJZDpyLGJhc2VJZDplLmJhc2VJZHx8cixzY2hlbWFQYXRoOlFlLm5pbCxlcnJTY2hlbWFQYXRoOmUuc2NoZW1hUGF0aHx8KHRoaXMub3B0cy5qdGQ/IiI6IiMiKSxlcnJvclBhdGg6KDAsUWUuXylgIiJgLG9wdHM6dGhpcy5vcHRzLHNlbGY6dGhpc307bGV0IGk7dHJ5e3RoaXMuX2NvbXBpbGF0aW9ucy5hZGQoZSksKDAsa3UudmFsaWRhdGVGdW5jdGlvbkNvZGUpKHApLG8ub3B0aW1pemUodGhpcy5vcHRzLmNvZGUub3B0aW1pemUpO2NvbnN0IGg9by50b1N0cmluZygpO2k9YCR7by5zY29wZVJlZnMoVXQuZGVmYXVsdC5zY29wZSl9cmV0dXJuICR7aH1gLHRoaXMub3B0cy5jb2RlLnByb2Nlc3MmJihpPXRoaXMub3B0cy5jb2RlLnByb2Nlc3MoaSxlKSk7Y29uc3QgVD1uZXcgRnVuY3Rpb24oYCR7VXQuZGVmYXVsdC5zZWxmfWAsYCR7VXQuZGVmYXVsdC5zY29wZX1gLGkpKHRoaXMsdGhpcy5zY29wZS5nZXQoKSk7aWYodGhpcy5zY29wZS52YWx1ZShmLHtyZWY6VH0pLFQuZXJyb3JzPW51bGwsVC5zY2hlbWE9ZS5zY2hlbWEsVC5zY2hlbWFFbnY9ZSxlLiRhc3luYyYmKFQuJGFzeW5jPSEwKSx0aGlzLm9wdHMuY29kZS5zb3VyY2U9PT0hMCYmKFQuc291cmNlPXt2YWxpZGF0ZU5hbWU6Zix2YWxpZGF0ZUNvZGU6aCxzY29wZVZhbHVlczpvLl92YWx1ZXN9KSx0aGlzLm9wdHMudW5ldmFsdWF0ZWQpe2NvbnN0e3Byb3BzOkksaXRlbXM6an09cDtULmV2YWx1YXRlZD17cHJvcHM6SSBpbnN0YW5jZW9mIFFlLk5hbWU/dm9pZCAwOkksaXRlbXM6aiBpbnN0YW5jZW9mIFFlLk5hbWU/dm9pZCAwOmosZHluYW1pY1Byb3BzOkkgaW5zdGFuY2VvZiBRZS5OYW1lLGR5bmFtaWNJdGVtczpqIGluc3RhbmNlb2YgUWUuTmFtZX0sVC5zb3VyY2UmJihULnNvdXJjZS5ldmFsdWF0ZWQ9KDAsUWUuc3RyaW5naWZ5KShULmV2YWx1YXRlZCkpfXJldHVybiBlLnZhbGlkYXRlPVQsZX1jYXRjaChoKXt0aHJvdyBkZWxldGUgZS52YWxpZGF0ZSxkZWxldGUgZS52YWxpZGF0ZU5hbWUsaSYmdGhpcy5sb2dnZXIuZXJyb3IoIkVycm9yIGNvbXBpbGluZyBzY2hlbWEsIGZ1bmN0aW9uIGNvZGU6IixpKSxofWZpbmFsbHl7dGhpcy5fY29tcGlsYXRpb25zLmRlbGV0ZShlKX19Q2UuY29tcGlsZVNjaGVtYT1YbjtmdW5jdGlvbiBVdShlLHQscil7dmFyIG47cj0oMCxZZS5yZXNvbHZlVXJsKSh0aGlzLm9wdHMudXJpUmVzb2x2ZXIsdCxyKTtjb25zdCBzPWUucmVmc1tyXTtpZihzKXJldHVybiBzO2xldCBhPUx1LmNhbGwodGhpcyxlLHIpO2lmKGE9PT12b2lkIDApe2NvbnN0IG89KG49ZS5sb2NhbFJlZnMpPT09bnVsbHx8bj09PXZvaWQgMD92b2lkIDA6bltyXSx7c2NoZW1hSWQ6bH09dGhpcy5vcHRzO28mJihhPW5ldyB1bih7c2NoZW1hOm8sc2NoZW1hSWQ6bCxyb290OmUsYmFzZUlkOnR9KSl9aWYoYSE9PXZvaWQgMClyZXR1cm4gZS5yZWZzW3JdPUZ1LmNhbGwodGhpcyxhKX1DZS5yZXNvbHZlUmVmPVV1O2Z1bmN0aW9uIEZ1KGUpe3JldHVybigwLFllLmlubGluZVJlZikoZS5zY2hlbWEsdGhpcy5vcHRzLmlubGluZVJlZnMpP2Uuc2NoZW1hOmUudmFsaWRhdGU/ZTpYbi5jYWxsKHRoaXMsZSl9ZnVuY3Rpb24gSWEoZSl7Zm9yKGNvbnN0IHQgb2YgdGhpcy5fY29tcGlsYXRpb25zKWlmKE11KHQsZSkpcmV0dXJuIHR9Q2UuZ2V0Q29tcGlsaW5nU2NoZW1hPUlhO2Z1bmN0aW9uIE11KGUsdCl7cmV0dXJuIGUuc2NoZW1hPT09dC5zY2hlbWEmJmUucm9vdD09PXQucm9vdCYmZS5iYXNlSWQ9PT10LmJhc2VJZH1mdW5jdGlvbiBMdShlLHQpe2xldCByO2Zvcig7dHlwZW9mKHI9dGhpcy5yZWZzW3RdKT09InN0cmluZyI7KXQ9cjtyZXR1cm4gcnx8dGhpcy5zY2hlbWFzW3RdfHxsbi5jYWxsKHRoaXMsZSx0KX1mdW5jdGlvbiBsbihlLHQpe2NvbnN0IHI9dGhpcy5vcHRzLnVyaVJlc29sdmVyLnBhcnNlKHQpLG49KDAsWWUuX2dldEZ1bGxQYXRoKSh0aGlzLm9wdHMudXJpUmVzb2x2ZXIscik7bGV0IHM9KDAsWWUuZ2V0RnVsbFBhdGgpKHRoaXMub3B0cy51cmlSZXNvbHZlcixlLmJhc2VJZCx2b2lkIDApO2lmKE9iamVjdC5rZXlzKGUuc2NoZW1hKS5sZW5ndGg+MCYmbj09PXMpcmV0dXJuIFpuLmNhbGwodGhpcyxyLGUpO2NvbnN0IGE9KDAsWWUubm9ybWFsaXplSWQpKG4pLG89dGhpcy5yZWZzW2FdfHx0aGlzLnNjaGVtYXNbYV07aWYodHlwZW9mIG89PSJzdHJpbmciKXtjb25zdCBsPWxuLmNhbGwodGhpcyxlLG8pO3JldHVybiB0eXBlb2YobD09bnVsbD92b2lkIDA6bC5zY2hlbWEpIT0ib2JqZWN0Ij92b2lkIDA6Wm4uY2FsbCh0aGlzLHIsbCl9aWYodHlwZW9mKG89PW51bGw/dm9pZCAwOm8uc2NoZW1hKT09Im9iamVjdCIpe2lmKG8udmFsaWRhdGV8fFhuLmNhbGwodGhpcyxvKSxhPT09KDAsWWUubm9ybWFsaXplSWQpKHQpKXtjb25zdHtzY2hlbWE6bH09byx7c2NoZW1hSWQ6Zn09dGhpcy5vcHRzLHA9bFtmXTtyZXR1cm4gcCYmKHM9KDAsWWUucmVzb2x2ZVVybCkodGhpcy5vcHRzLnVyaVJlc29sdmVyLHMscCkpLG5ldyB1bih7c2NoZW1hOmwsc2NoZW1hSWQ6Zixyb290OmUsYmFzZUlkOnN9KX1yZXR1cm4gWm4uY2FsbCh0aGlzLHIsbyl9fUNlLnJlc29sdmVTY2hlbWE9bG47Y29uc3QgVnU9bmV3IFNldChbInByb3BlcnRpZXMiLCJwYXR0ZXJuUHJvcGVydGllcyIsImVudW0iLCJkZXBlbmRlbmNpZXMiLCJkZWZpbml0aW9ucyJdKTtmdW5jdGlvbiBabihlLHtiYXNlSWQ6dCxzY2hlbWE6cixyb290Om59KXt2YXIgcztpZigoKHM9ZS5mcmFnbWVudCk9PT1udWxsfHxzPT09dm9pZCAwP3ZvaWQgMDpzWzBdKSE9PSIvIilyZXR1cm47Zm9yKGNvbnN0IGwgb2YgZS5mcmFnbWVudC5zbGljZSgxKS5zcGxpdCgiLyIpKXtpZih0eXBlb2Ygcj09ImJvb2xlYW4iKXJldHVybjtjb25zdCBmPXJbKDAsQ2EudW5lc2NhcGVGcmFnbWVudCkobCldO2lmKGY9PT12b2lkIDApcmV0dXJuO3I9Zjtjb25zdCBwPXR5cGVvZiByPT0ib2JqZWN0IiYmclt0aGlzLm9wdHMuc2NoZW1hSWRdOyFWdS5oYXMobCkmJnAmJih0PSgwLFllLnJlc29sdmVVcmwpKHRoaXMub3B0cy51cmlSZXNvbHZlcix0LHApKX1sZXQgYTtpZih0eXBlb2YgciE9ImJvb2xlYW4iJiZyLiRyZWYmJiEoMCxDYS5zY2hlbWFIYXNSdWxlc0J1dFJlZikocix0aGlzLlJVTEVTKSl7Y29uc3QgbD0oMCxZZS5yZXNvbHZlVXJsKSh0aGlzLm9wdHMudXJpUmVzb2x2ZXIsdCxyLiRyZWYpO2E9bG4uY2FsbCh0aGlzLG4sbCl9Y29uc3R7c2NoZW1hSWQ6b309dGhpcy5vcHRzO2lmKGE9YXx8bmV3IHVuKHtzY2hlbWE6cixzY2hlbWFJZDpvLHJvb3Q6bixiYXNlSWQ6dH0pLGEuc2NoZW1hIT09YS5yb290LnNjaGVtYSlyZXR1cm4gYX12YXIgenU9eyRpZDoiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2Fqdi12YWxpZGF0b3IvYWp2L21hc3Rlci9saWIvcmVmcy9kYXRhLmpzb24jIixkZXNjcmlwdGlvbjoiTWV0YS1zY2hlbWEgZm9yICRkYXRhIHJlZmVyZW5jZSAoSlNPTiBBbnlTY2hlbWEgZXh0ZW5zaW9uIHByb3Bvc2FsKSIsdHlwZToib2JqZWN0IixyZXF1aXJlZDpbIiRkYXRhIl0scHJvcGVydGllczp7JGRhdGE6e3R5cGU6InN0cmluZyIsYW55T2Y6W3tmb3JtYXQ6InJlbGF0aXZlLWpzb24tcG9pbnRlciJ9LHtmb3JtYXQ6Impzb24tcG9pbnRlciJ9XX19LGFkZGl0aW9uYWxQcm9wZXJ0aWVzOiExfSx4bj17fSxlcz17ZXhwb3J0czp7fX07LyoqIEBsaWNlbnNlIFVSSS5qcyB2NC40LjEgKGMpIDIwMTEgR2FyeSBDb3VydC4gTGljZW5zZTogaHR0cDovL2dpdGh1Yi5jb20vZ2FyeWNvdXJ0L3VyaS1qcyAqLyhmdW5jdGlvbihlLHQpeyhmdW5jdGlvbihyLG4pe24odCl9KShlZSxmdW5jdGlvbihyKXtmdW5jdGlvbiBuKCl7Zm9yKHZhciBkPWFyZ3VtZW50cy5sZW5ndGgsdT1BcnJheShkKSx2PTA7djxkO3YrKyl1W3ZdPWFyZ3VtZW50c1t2XTtpZih1Lmxlbmd0aD4xKXt1WzBdPXVbMF0uc2xpY2UoMCwtMSk7Zm9yKHZhciBSPXUubGVuZ3RoLTEsUz0xO1M8UjsrK1MpdVtTXT11W1NdLnNsaWNlKDEsLTEpO3JldHVybiB1W1JdPXVbUl0uc2xpY2UoMSksdS5qb2luKCIiKX1lbHNlIHJldHVybiB1WzBdfWZ1bmN0aW9uIHMoZCl7cmV0dXJuIig/OiIrZCsiKSJ9ZnVuY3Rpb24gYShkKXtyZXR1cm4gZD09PXZvaWQgMD8idW5kZWZpbmVkIjpkPT09bnVsbD8ibnVsbCI6T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGQpLnNwbGl0KCIgIikucG9wKCkuc3BsaXQoIl0iKS5zaGlmdCgpLnRvTG93ZXJDYXNlKCl9ZnVuY3Rpb24gbyhkKXtyZXR1cm4gZC50b1VwcGVyQ2FzZSgpfWZ1bmN0aW9uIGwoZCl7cmV0dXJuIGQhPW51bGw/ZCBpbnN0YW5jZW9mIEFycmF5P2Q6dHlwZW9mIGQubGVuZ3RoIT0ibnVtYmVyInx8ZC5zcGxpdHx8ZC5zZXRJbnRlcnZhbHx8ZC5jYWxsP1tkXTpBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChkKTpbXX1mdW5jdGlvbiBmKGQsdSl7dmFyIHY9ZDtpZih1KWZvcih2YXIgUiBpbiB1KXZbUl09dVtSXTtyZXR1cm4gdn1mdW5jdGlvbiBwKGQpe3ZhciB1PSJbQS1aYS16XSIsdj0iWzAtOV0iLFI9bih2LCJbQS1GYS1mXSIpLFM9cyhzKCIlW0VGZWZdIitSKyIlIitSK1IrIiUiK1IrUikrInwiK3MoIiVbODlBLUZhLWZdIitSKyIlIitSK1IpKyJ8IitzKCIlIitSK1IpKSx6PSJbXFw6XFwvXFw/XFwjXFxbXFxdXFxAXSIsSz0iW1xcIVxcJFxcJlxcJ1xcKFxcKVxcKlxcK1xcLFxcO1xcPV0iLHNlPW4oeixLKSxtZT1kPyJbXFx4QTAtXFx1MjAwRFxcdTIwMTAtXFx1MjAyOVxcdTIwMkYtXFx1RDdGRlxcdUY5MDAtXFx1RkRDRlxcdUZERjAtXFx1RkZFRl0iOiJbXSIsJGU9ZD8iW1xcdUUwMDAtXFx1RjhGRl0iOiJbXSIseD1uKHUsdiwiW1xcLVxcLlxcX1xcfl0iLG1lKTtzKHUrbih1LHYsIltcXCtcXC1cXC5dIikrIioiKSxzKHMoUysifCIrbih4LEssIltcXDpdIikpKyIqIik7dmFyIGZlPXMocygiMjVbMC01XSIpKyJ8IitzKCIyWzAtNF0iK3YpKyJ8IitzKCIxIit2K3YpKyJ8IitzKCIwP1sxLTldIit2KSsifDA/MD8iK3YpLHdlPXMoZmUrIlxcLiIrZmUrIlxcLiIrZmUrIlxcLiIrZmUpLHE9cyhSKyJ7MSw0fSIpLF9lPXMocyhxKyJcXDoiK3EpKyJ8Iit3ZSksUmU9cyhzKHErIlxcOiIpKyJ7Nn0iK19lKSxnZT1zKCJcXDpcXDoiK3MocSsiXFw6IikrIns1fSIrX2UpLFB0PXMocyhxKSsiP1xcOlxcOiIrcyhxKyJcXDoiKSsiezR9IitfZSksYXQ9cyhzKHMocSsiXFw6IikrInswLDF9IitxKSsiP1xcOlxcOiIrcyhxKyJcXDoiKSsiezN9IitfZSksb3Q9cyhzKHMocSsiXFw6IikrInswLDJ9IitxKSsiP1xcOlxcOiIrcyhxKyJcXDoiKSsiezJ9IitfZSksdnI9cyhzKHMocSsiXFw6IikrInswLDN9IitxKSsiP1xcOlxcOiIrcSsiXFw6IitfZSkscXQ9cyhzKHMocSsiXFw6IikrInswLDR9IitxKSsiP1xcOlxcOiIrX2UpLHFlPXMocyhzKHErIlxcOiIpKyJ7MCw1fSIrcSkrIj9cXDpcXDoiK3EpLGl0PXMocyhzKHErIlxcOiIpKyJ7MCw2fSIrcSkrIj9cXDpcXDoiKSxHdD1zKFtSZSxnZSxQdCxhdCxvdCx2cixxdCxxZSxpdF0uam9pbigifCIpKSxfdD1zKHMoeCsifCIrUykrIisiKTtzKCJbdlZdIitSKyIrXFwuIituKHgsSywiW1xcOl0iKSsiKyIpLHMocyhTKyJ8IituKHgsSykpKyIqIik7dmFyIEJyPXMoUysifCIrbih4LEssIltcXDpcXEBdIikpO3JldHVybiBzKHMoUysifCIrbih4LEssIltcXEBdIikpKyIrIikscyhzKEJyKyJ8IituKCJbXFwvXFw/XSIsJGUpKSsiKiIpLHtOT1RfU0NIRU1FOm5ldyBSZWdFeHAobigiW15dIix1LHYsIltcXCtcXC1cXC5dIiksImciKSxOT1RfVVNFUklORk86bmV3IFJlZ0V4cChuKCJbXlxcJVxcOl0iLHgsSyksImciKSxOT1RfSE9TVDpuZXcgUmVnRXhwKG4oIlteXFwlXFxbXFxdXFw6XSIseCxLKSwiZyIpLE5PVF9QQVRIOm5ldyBSZWdFeHAobigiW15cXCVcXC9cXDpcXEBdIix4LEspLCJnIiksTk9UX1BBVEhfTk9TQ0hFTUU6bmV3IFJlZ0V4cChuKCJbXlxcJVxcL1xcQF0iLHgsSyksImciKSxOT1RfUVVFUlk6bmV3IFJlZ0V4cChuKCJbXlxcJV0iLHgsSywiW1xcOlxcQFxcL1xcP10iLCRlKSwiZyIpLE5PVF9GUkFHTUVOVDpuZXcgUmVnRXhwKG4oIlteXFwlXSIseCxLLCJbXFw6XFxAXFwvXFw/XSIpLCJnIiksRVNDQVBFOm5ldyBSZWdFeHAobigiW15dIix4LEspLCJnIiksVU5SRVNFUlZFRDpuZXcgUmVnRXhwKHgsImciKSxPVEhFUl9DSEFSUzpuZXcgUmVnRXhwKG4oIlteXFwlXSIseCxzZSksImciKSxQQ1RfRU5DT0RFRDpuZXcgUmVnRXhwKFMsImciKSxJUFY0QUREUkVTUzpuZXcgUmVnRXhwKCJeKCIrd2UrIikkIiksSVBWNkFERFJFU1M6bmV3IFJlZ0V4cCgiXlxcWz8oIitHdCsiKSIrcyhzKCJcXCUyNXxcXCUoPyEiK1IrInsyfSkiKSsiKCIrX3QrIikiKSsiP1xcXT8kIil9fXZhciBpPXAoITEpLGg9cCghMCksRT1mdW5jdGlvbigpe2Z1bmN0aW9uIGQodSx2KXt2YXIgUj1bXSxTPSEwLHo9ITEsSz12b2lkIDA7dHJ5e2Zvcih2YXIgc2U9dVtTeW1ib2wuaXRlcmF0b3JdKCksbWU7IShTPShtZT1zZS5uZXh0KCkpLmRvbmUpJiYoUi5wdXNoKG1lLnZhbHVlKSwhKHYmJlIubGVuZ3RoPT09dikpO1M9ITApO31jYXRjaCgkZSl7ej0hMCxLPSRlfWZpbmFsbHl7dHJ5eyFTJiZzZS5yZXR1cm4mJnNlLnJldHVybigpfWZpbmFsbHl7aWYoeil0aHJvdyBLfX1yZXR1cm4gUn1yZXR1cm4gZnVuY3Rpb24odSx2KXtpZihBcnJheS5pc0FycmF5KHUpKXJldHVybiB1O2lmKFN5bWJvbC5pdGVyYXRvciBpbiBPYmplY3QodSkpcmV0dXJuIGQodSx2KTt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlIil9fSgpLFQ9ZnVuY3Rpb24oZCl7aWYoQXJyYXkuaXNBcnJheShkKSl7Zm9yKHZhciB1PTAsdj1BcnJheShkLmxlbmd0aCk7dTxkLmxlbmd0aDt1Kyspdlt1XT1kW3VdO3JldHVybiB2fWVsc2UgcmV0dXJuIEFycmF5LmZyb20oZCl9LEk9MjE0NzQ4MzY0NyxqPTM2LHk9MSxfPTI2LGI9MzgsTz03MDAsQT03MixIPTEyOCwkPSItIixOPS9eeG4tLS8sRD0vW15cMC1ceDdFXS8sQj0vW1x4MkVcdTMwMDJcdUZGMEVcdUZGNjFdL2csRz17b3ZlcmZsb3c6Ik92ZXJmbG93OiBpbnB1dCBuZWVkcyB3aWRlciBpbnRlZ2VycyB0byBwcm9jZXNzIiwibm90LWJhc2ljIjoiSWxsZWdhbCBpbnB1dCA+PSAweDgwIChub3QgYSBiYXNpYyBjb2RlIHBvaW50KSIsImludmFsaWQtaW5wdXQiOiJJbnZhbGlkIGlucHV0In0scGU9ai15LFc9TWF0aC5mbG9vcixvZT1TdHJpbmcuZnJvbUNoYXJDb2RlO2Z1bmN0aW9uIFgoZCl7dGhyb3cgbmV3IFJhbmdlRXJyb3IoR1tkXSl9ZnVuY3Rpb24gdmUoZCx1KXtmb3IodmFyIHY9W10sUj1kLmxlbmd0aDtSLS07KXZbUl09dShkW1JdKTtyZXR1cm4gdn1mdW5jdGlvbiBFZShkLHUpe3ZhciB2PWQuc3BsaXQoIkAiKSxSPSIiO3YubGVuZ3RoPjEmJihSPXZbMF0rIkAiLGQ9dlsxXSksZD1kLnJlcGxhY2UoQiwiLiIpO3ZhciBTPWQuc3BsaXQoIi4iKSx6PXZlKFMsdSkuam9pbigiLiIpO3JldHVybiBSK3p9ZnVuY3Rpb24gTmUoZCl7Zm9yKHZhciB1PVtdLHY9MCxSPWQubGVuZ3RoO3Y8Ujspe3ZhciBTPWQuY2hhckNvZGVBdCh2KyspO2lmKFM+PTU1Mjk2JiZTPD01NjMxOSYmdjxSKXt2YXIgej1kLmNoYXJDb2RlQXQodisrKTsoeiY2NDUxMik9PTU2MzIwP3UucHVzaCgoKFMmMTAyMyk8PDEwKSsoeiYxMDIzKSs2NTUzNik6KHUucHVzaChTKSx2LS0pfWVsc2UgdS5wdXNoKFMpfXJldHVybiB1fXZhciBCZT1mdW5jdGlvbih1KXtyZXR1cm4gU3RyaW5nLmZyb21Db2RlUG9pbnQuYXBwbHkoU3RyaW5nLFQodSkpfSx1cj1mdW5jdGlvbih1KXtyZXR1cm4gdS00ODwxMD91LTIyOnUtNjU8MjY/dS02NTp1LTk3PDI2P3UtOTc6an0saz1mdW5jdGlvbih1LHYpe3JldHVybiB1KzIyKzc1Kih1PDI2KS0oKHYhPTApPDw1KX0sZz1mdW5jdGlvbih1LHYsUil7dmFyIFM9MDtmb3IodT1SP1codS9PKTp1Pj4xLHUrPVcodS92KTt1PnBlKl8+PjE7Uys9ail1PVcodS9wZSk7cmV0dXJuIFcoUysocGUrMSkqdS8odStiKSl9LEM9ZnVuY3Rpb24odSl7dmFyIHY9W10sUj11Lmxlbmd0aCxTPTAsej1ILEs9QSxzZT11Lmxhc3RJbmRleE9mKCQpO3NlPDAmJihzZT0wKTtmb3IodmFyIG1lPTA7bWU8c2U7KyttZSl1LmNoYXJDb2RlQXQobWUpPj0xMjgmJlgoIm5vdC1iYXNpYyIpLHYucHVzaCh1LmNoYXJDb2RlQXQobWUpKTtmb3IodmFyICRlPXNlPjA/c2UrMTowOyRlPFI7KXtmb3IodmFyIHg9UyxmZT0xLHdlPWo7O3dlKz1qKXskZT49UiYmWCgiaW52YWxpZC1pbnB1dCIpO3ZhciBxPXVyKHUuY2hhckNvZGVBdCgkZSsrKSk7KHE+PWp8fHE+VygoSS1TKS9mZSkpJiZYKCJvdmVyZmxvdyIpLFMrPXEqZmU7dmFyIF9lPXdlPD1LP3k6d2U+PUsrXz9fOndlLUs7aWYocTxfZSlicmVhazt2YXIgUmU9ai1fZTtmZT5XKEkvUmUpJiZYKCJvdmVyZmxvdyIpLGZlKj1SZX12YXIgZ2U9di5sZW5ndGgrMTtLPWcoUy14LGdlLHg9PTApLFcoUy9nZSk+SS16JiZYKCJvdmVyZmxvdyIpLHorPVcoUy9nZSksUyU9Z2Usdi5zcGxpY2UoUysrLDAseil9cmV0dXJuIFN0cmluZy5mcm9tQ29kZVBvaW50LmFwcGx5KFN0cmluZyx2KX0sdz1mdW5jdGlvbih1KXt2YXIgdj1bXTt1PU5lKHUpO3ZhciBSPXUubGVuZ3RoLFM9SCx6PTAsSz1BLHNlPSEwLG1lPSExLCRlPXZvaWQgMDt0cnl7Zm9yKHZhciB4PXVbU3ltYm9sLml0ZXJhdG9yXSgpLGZlOyEoc2U9KGZlPXgubmV4dCgpKS5kb25lKTtzZT0hMCl7dmFyIHdlPWZlLnZhbHVlO3dlPDEyOCYmdi5wdXNoKG9lKHdlKSl9fWNhdGNoKEpyKXttZT0hMCwkZT1Kcn1maW5hbGx5e3RyeXshc2UmJngucmV0dXJuJiZ4LnJldHVybigpfWZpbmFsbHl7aWYobWUpdGhyb3cgJGV9fXZhciBxPXYubGVuZ3RoLF9lPXE7Zm9yKHEmJnYucHVzaCgkKTtfZTxSOyl7dmFyIFJlPUksZ2U9ITAsUHQ9ITEsYXQ9dm9pZCAwO3RyeXtmb3IodmFyIG90PXVbU3ltYm9sLml0ZXJhdG9yXSgpLHZyOyEoZ2U9KHZyPW90Lm5leHQoKSkuZG9uZSk7Z2U9ITApe3ZhciBxdD12ci52YWx1ZTtxdD49UyYmcXQ8UmUmJihSZT1xdCl9fWNhdGNoKEpyKXtQdD0hMCxhdD1Kcn1maW5hbGx5e3RyeXshZ2UmJm90LnJldHVybiYmb3QucmV0dXJuKCl9ZmluYWxseXtpZihQdCl0aHJvdyBhdH19dmFyIHFlPV9lKzE7UmUtUz5XKChJLXopL3FlKSYmWCgib3ZlcmZsb3ciKSx6Kz0oUmUtUykqcWUsUz1SZTt2YXIgaXQ9ITAsR3Q9ITEsX3Q9dm9pZCAwO3RyeXtmb3IodmFyIEJyPXVbU3ltYm9sLml0ZXJhdG9yXSgpLFVvOyEoaXQ9KFVvPUJyLm5leHQoKSkuZG9uZSk7aXQ9ITApe3ZhciBGbz1Vby52YWx1ZTtpZihGbzxTJiYrK3o+SSYmWCgib3ZlcmZsb3ciKSxGbz09Uyl7Zm9yKHZhciBTbj16LFJuPWo7O1JuKz1qKXt2YXIgYm49Um48PUs/eTpSbj49SytfP186Um4tSztpZihTbjxibilicmVhazt2YXIgTW89U24tYm4sTG89ai1ibjt2LnB1c2gob2UoayhibitNbyVMbywwKSkpLFNuPVcoTW8vTG8pfXYucHVzaChvZShrKFNuLDApKSksSz1nKHoscWUsX2U9PXEpLHo9MCwrK19lfX19Y2F0Y2goSnIpe0d0PSEwLF90PUpyfWZpbmFsbHl7dHJ5eyFpdCYmQnIucmV0dXJuJiZCci5yZXR1cm4oKX1maW5hbGx5e2lmKEd0KXRocm93IF90fX0rK3osKytTfXJldHVybiB2LmpvaW4oIiIpfSxjPWZ1bmN0aW9uKHUpe3JldHVybiBFZSh1LGZ1bmN0aW9uKHYpe3JldHVybiBOLnRlc3Qodik/Qyh2LnNsaWNlKDQpLnRvTG93ZXJDYXNlKCkpOnZ9KX0sbT1mdW5jdGlvbih1KXtyZXR1cm4gRWUodSxmdW5jdGlvbih2KXtyZXR1cm4gRC50ZXN0KHYpPyJ4bi0tIit3KHYpOnZ9KX0sUD17dmVyc2lvbjoiMi4xLjAiLHVjczI6e2RlY29kZTpOZSxlbmNvZGU6QmV9LGRlY29kZTpDLGVuY29kZTp3LHRvQVNDSUk6bSx0b1VuaWNvZGU6Y30sVT17fTtmdW5jdGlvbiBGKGQpe3ZhciB1PWQuY2hhckNvZGVBdCgwKSx2PXZvaWQgMDtyZXR1cm4gdTwxNj92PSIlMCIrdS50b1N0cmluZygxNikudG9VcHBlckNhc2UoKTp1PDEyOD92PSIlIit1LnRvU3RyaW5nKDE2KS50b1VwcGVyQ2FzZSgpOnU8MjA0OD92PSIlIisodT4+NnwxOTIpLnRvU3RyaW5nKDE2KS50b1VwcGVyQ2FzZSgpKyIlIisodSY2M3wxMjgpLnRvU3RyaW5nKDE2KS50b1VwcGVyQ2FzZSgpOnY9IiUiKyh1Pj4xMnwyMjQpLnRvU3RyaW5nKDE2KS50b1VwcGVyQ2FzZSgpKyIlIisodT4+NiY2M3wxMjgpLnRvU3RyaW5nKDE2KS50b1VwcGVyQ2FzZSgpKyIlIisodSY2M3wxMjgpLnRvU3RyaW5nKDE2KS50b1VwcGVyQ2FzZSgpLHZ9ZnVuY3Rpb24gWihkKXtmb3IodmFyIHU9IiIsdj0wLFI9ZC5sZW5ndGg7djxSOyl7dmFyIFM9cGFyc2VJbnQoZC5zdWJzdHIodisxLDIpLDE2KTtpZihTPDEyOCl1Kz1TdHJpbmcuZnJvbUNoYXJDb2RlKFMpLHYrPTM7ZWxzZSBpZihTPj0xOTQmJlM8MjI0KXtpZihSLXY+PTYpe3ZhciB6PXBhcnNlSW50KGQuc3Vic3RyKHYrNCwyKSwxNik7dSs9U3RyaW5nLmZyb21DaGFyQ29kZSgoUyYzMSk8PDZ8eiY2Myl9ZWxzZSB1Kz1kLnN1YnN0cih2LDYpO3YrPTZ9ZWxzZSBpZihTPj0yMjQpe2lmKFItdj49OSl7dmFyIEs9cGFyc2VJbnQoZC5zdWJzdHIodis0LDIpLDE2KSxzZT1wYXJzZUludChkLnN1YnN0cih2KzcsMiksMTYpO3UrPVN0cmluZy5mcm9tQ2hhckNvZGUoKFMmMTUpPDwxMnwoSyY2Myk8PDZ8c2UmNjMpfWVsc2UgdSs9ZC5zdWJzdHIodiw5KTt2Kz05fWVsc2UgdSs9ZC5zdWJzdHIodiwzKSx2Kz0zfXJldHVybiB1fWZ1bmN0aW9uIHJlKGQsdSl7ZnVuY3Rpb24gdihSKXt2YXIgUz1aKFIpO3JldHVybiBTLm1hdGNoKHUuVU5SRVNFUlZFRCk/UzpSfXJldHVybiBkLnNjaGVtZSYmKGQuc2NoZW1lPVN0cmluZyhkLnNjaGVtZSkucmVwbGFjZSh1LlBDVF9FTkNPREVELHYpLnRvTG93ZXJDYXNlKCkucmVwbGFjZSh1Lk5PVF9TQ0hFTUUsIiIpKSxkLnVzZXJpbmZvIT09dm9pZCAwJiYoZC51c2VyaW5mbz1TdHJpbmcoZC51c2VyaW5mbykucmVwbGFjZSh1LlBDVF9FTkNPREVELHYpLnJlcGxhY2UodS5OT1RfVVNFUklORk8sRikucmVwbGFjZSh1LlBDVF9FTkNPREVELG8pKSxkLmhvc3QhPT12b2lkIDAmJihkLmhvc3Q9U3RyaW5nKGQuaG9zdCkucmVwbGFjZSh1LlBDVF9FTkNPREVELHYpLnRvTG93ZXJDYXNlKCkucmVwbGFjZSh1Lk5PVF9IT1NULEYpLnJlcGxhY2UodS5QQ1RfRU5DT0RFRCxvKSksZC5wYXRoIT09dm9pZCAwJiYoZC5wYXRoPVN0cmluZyhkLnBhdGgpLnJlcGxhY2UodS5QQ1RfRU5DT0RFRCx2KS5yZXBsYWNlKGQuc2NoZW1lP3UuTk9UX1BBVEg6dS5OT1RfUEFUSF9OT1NDSEVNRSxGKS5yZXBsYWNlKHUuUENUX0VOQ09ERUQsbykpLGQucXVlcnkhPT12b2lkIDAmJihkLnF1ZXJ5PVN0cmluZyhkLnF1ZXJ5KS5yZXBsYWNlKHUuUENUX0VOQ09ERUQsdikucmVwbGFjZSh1Lk5PVF9RVUVSWSxGKS5yZXBsYWNlKHUuUENUX0VOQ09ERUQsbykpLGQuZnJhZ21lbnQhPT12b2lkIDAmJihkLmZyYWdtZW50PVN0cmluZyhkLmZyYWdtZW50KS5yZXBsYWNlKHUuUENUX0VOQ09ERUQsdikucmVwbGFjZSh1Lk5PVF9GUkFHTUVOVCxGKS5yZXBsYWNlKHUuUENUX0VOQ09ERUQsbykpLGR9ZnVuY3Rpb24geWUoZCl7cmV0dXJuIGQucmVwbGFjZSgvXjAqKC4qKS8sIiQxIil8fCIwIn1mdW5jdGlvbiBydChkLHUpe3ZhciB2PWQubWF0Y2godS5JUFY0QUREUkVTUyl8fFtdLFI9RSh2LDIpLFM9UlsxXTtyZXR1cm4gUz9TLnNwbGl0KCIuIikubWFwKHllKS5qb2luKCIuIik6ZH1mdW5jdGlvbiBscihkLHUpe3ZhciB2PWQubWF0Y2godS5JUFY2QUREUkVTUyl8fFtdLFI9RSh2LDMpLFM9UlsxXSx6PVJbMl07aWYoUyl7Zm9yKHZhciBLPVMudG9Mb3dlckNhc2UoKS5zcGxpdCgiOjoiKS5yZXZlcnNlKCksc2U9RShLLDIpLG1lPXNlWzBdLCRlPXNlWzFdLHg9JGU/JGUuc3BsaXQoIjoiKS5tYXAoeWUpOltdLGZlPW1lLnNwbGl0KCI6IikubWFwKHllKSx3ZT11LklQVjRBRERSRVNTLnRlc3QoZmVbZmUubGVuZ3RoLTFdKSxxPXdlPzc6OCxfZT1mZS5sZW5ndGgtcSxSZT1BcnJheShxKSxnZT0wO2dlPHE7KytnZSlSZVtnZV09eFtnZV18fGZlW19lK2dlXXx8IiI7d2UmJihSZVtxLTFdPXJ0KFJlW3EtMV0sdSkpO3ZhciBQdD1SZS5yZWR1Y2UoZnVuY3Rpb24ocWUsaXQsR3Qpe2lmKCFpdHx8aXQ9PT0iMCIpe3ZhciBfdD1xZVtxZS5sZW5ndGgtMV07X3QmJl90LmluZGV4K190Lmxlbmd0aD09PUd0P190Lmxlbmd0aCsrOnFlLnB1c2goe2luZGV4Okd0LGxlbmd0aDoxfSl9cmV0dXJuIHFlfSxbXSksYXQ9UHQuc29ydChmdW5jdGlvbihxZSxpdCl7cmV0dXJuIGl0Lmxlbmd0aC1xZS5sZW5ndGh9KVswXSxvdD12b2lkIDA7aWYoYXQmJmF0Lmxlbmd0aD4xKXt2YXIgdnI9UmUuc2xpY2UoMCxhdC5pbmRleCkscXQ9UmUuc2xpY2UoYXQuaW5kZXgrYXQubGVuZ3RoKTtvdD12ci5qb2luKCI6IikrIjo6IitxdC5qb2luKCI6Iil9ZWxzZSBvdD1SZS5qb2luKCI6Iik7cmV0dXJuIHomJihvdCs9IiUiK3opLG90fWVsc2UgcmV0dXJuIGR9dmFyIEZyPS9eKD86KFteOlwvPyNdKyk6KT8oPzpcL1wvKCg/OihbXlwvPyNAXSopQCk/KFxbW15cLz8jXF1dK1xdfFteXC8/IzpdKikoPzpcOihcZCopKT8pKT8oW14/I10qKSg/Olw/KFteI10qKSk/KD86IygoPzoufFxufFxyKSopKT8vaSxNcj0iIi5tYXRjaCgvKCl7MH0vKVsxXT09PXZvaWQgMDtmdW5jdGlvbiBNZShkKXt2YXIgdT1hcmd1bWVudHMubGVuZ3RoPjEmJmFyZ3VtZW50c1sxXSE9PXZvaWQgMD9hcmd1bWVudHNbMV06e30sdj17fSxSPXUuaXJpIT09ITE/aDppO3UucmVmZXJlbmNlPT09InN1ZmZpeCImJihkPSh1LnNjaGVtZT91LnNjaGVtZSsiOiI6IiIpKyIvLyIrZCk7dmFyIFM9ZC5tYXRjaChGcik7aWYoUyl7TXI/KHYuc2NoZW1lPVNbMV0sdi51c2VyaW5mbz1TWzNdLHYuaG9zdD1TWzRdLHYucG9ydD1wYXJzZUludChTWzVdLDEwKSx2LnBhdGg9U1s2XXx8IiIsdi5xdWVyeT1TWzddLHYuZnJhZ21lbnQ9U1s4XSxpc05hTih2LnBvcnQpJiYodi5wb3J0PVNbNV0pKToodi5zY2hlbWU9U1sxXXx8dm9pZCAwLHYudXNlcmluZm89ZC5pbmRleE9mKCJAIikhPT0tMT9TWzNdOnZvaWQgMCx2Lmhvc3Q9ZC5pbmRleE9mKCIvLyIpIT09LTE/U1s0XTp2b2lkIDAsdi5wb3J0PXBhcnNlSW50KFNbNV0sMTApLHYucGF0aD1TWzZdfHwiIix2LnF1ZXJ5PWQuaW5kZXhPZigiPyIpIT09LTE/U1s3XTp2b2lkIDAsdi5mcmFnbWVudD1kLmluZGV4T2YoIiMiKSE9PS0xP1NbOF06dm9pZCAwLGlzTmFOKHYucG9ydCkmJih2LnBvcnQ9ZC5tYXRjaCgvXC9cLyg/Oi58XG4pKlw6KD86XC98XD98XCN8JCkvKT9TWzRdOnZvaWQgMCkpLHYuaG9zdCYmKHYuaG9zdD1scihydCh2Lmhvc3QsUiksUikpLHYuc2NoZW1lPT09dm9pZCAwJiZ2LnVzZXJpbmZvPT09dm9pZCAwJiZ2Lmhvc3Q9PT12b2lkIDAmJnYucG9ydD09PXZvaWQgMCYmIXYucGF0aCYmdi5xdWVyeT09PXZvaWQgMD92LnJlZmVyZW5jZT0ic2FtZS1kb2N1bWVudCI6di5zY2hlbWU9PT12b2lkIDA/di5yZWZlcmVuY2U9InJlbGF0aXZlIjp2LmZyYWdtZW50PT09dm9pZCAwP3YucmVmZXJlbmNlPSJhYnNvbHV0ZSI6di5yZWZlcmVuY2U9InVyaSIsdS5yZWZlcmVuY2UmJnUucmVmZXJlbmNlIT09InN1ZmZpeCImJnUucmVmZXJlbmNlIT09di5yZWZlcmVuY2UmJih2LmVycm9yPXYuZXJyb3J8fCJVUkkgaXMgbm90IGEgIit1LnJlZmVyZW5jZSsiIHJlZmVyZW5jZS4iKTt2YXIgej1VWyh1LnNjaGVtZXx8di5zY2hlbWV8fCIiKS50b0xvd2VyQ2FzZSgpXTtpZighdS51bmljb2RlU3VwcG9ydCYmKCF6fHwhei51bmljb2RlU3VwcG9ydCkpe2lmKHYuaG9zdCYmKHUuZG9tYWluSG9zdHx8eiYmei5kb21haW5Ib3N0KSl0cnl7di5ob3N0PVAudG9BU0NJSSh2Lmhvc3QucmVwbGFjZShSLlBDVF9FTkNPREVELFopLnRvTG93ZXJDYXNlKCkpfWNhdGNoKEspe3YuZXJyb3I9di5lcnJvcnx8Ikhvc3QncyBkb21haW4gbmFtZSBjYW4gbm90IGJlIGNvbnZlcnRlZCB0byBBU0NJSSB2aWEgcHVueWNvZGU6ICIrS31yZSh2LGkpfWVsc2UgcmUodixSKTt6JiZ6LnBhcnNlJiZ6LnBhcnNlKHYsdSl9ZWxzZSB2LmVycm9yPXYuZXJyb3J8fCJVUkkgY2FuIG5vdCBiZSBwYXJzZWQuIjtyZXR1cm4gdn1mdW5jdGlvbiBMcihkLHUpe3ZhciB2PXUuaXJpIT09ITE/aDppLFI9W107cmV0dXJuIGQudXNlcmluZm8hPT12b2lkIDAmJihSLnB1c2goZC51c2VyaW5mbyksUi5wdXNoKCJAIikpLGQuaG9zdCE9PXZvaWQgMCYmUi5wdXNoKGxyKHJ0KFN0cmluZyhkLmhvc3QpLHYpLHYpLnJlcGxhY2Uodi5JUFY2QUREUkVTUyxmdW5jdGlvbihTLHosSyl7cmV0dXJuIlsiK3orKEs/IiUyNSIrSzoiIikrIl0ifSkpLCh0eXBlb2YgZC5wb3J0PT0ibnVtYmVyInx8dHlwZW9mIGQucG9ydD09InN0cmluZyIpJiYoUi5wdXNoKCI6IiksUi5wdXNoKFN0cmluZyhkLnBvcnQpKSksUi5sZW5ndGg/Ui5qb2luKCIiKTp2b2lkIDB9dmFyIGZyPS9eXC5cLj9cLy8sZHI9L15cL1wuKFwvfCQpLyxocj0vXlwvXC5cLihcL3wkKS8sVnI9L15cLz8oPzoufFxuKSo/KD89XC98JCkvO2Z1bmN0aW9uIG50KGQpe2Zvcih2YXIgdT1bXTtkLmxlbmd0aDspaWYoZC5tYXRjaChmcikpZD1kLnJlcGxhY2UoZnIsIiIpO2Vsc2UgaWYoZC5tYXRjaChkcikpZD1kLnJlcGxhY2UoZHIsIi8iKTtlbHNlIGlmKGQubWF0Y2goaHIpKWQ9ZC5yZXBsYWNlKGhyLCIvIiksdS5wb3AoKTtlbHNlIGlmKGQ9PT0iLiJ8fGQ9PT0iLi4iKWQ9IiI7ZWxzZXt2YXIgdj1kLm1hdGNoKFZyKTtpZih2KXt2YXIgUj12WzBdO2Q9ZC5zbGljZShSLmxlbmd0aCksdS5wdXNoKFIpfWVsc2UgdGhyb3cgbmV3IEVycm9yKCJVbmV4cGVjdGVkIGRvdCBzZWdtZW50IGNvbmRpdGlvbiIpfXJldHVybiB1LmpvaW4oIiIpfWZ1bmN0aW9uIGtlKGQpe3ZhciB1PWFyZ3VtZW50cy5sZW5ndGg+MSYmYXJndW1lbnRzWzFdIT09dm9pZCAwP2FyZ3VtZW50c1sxXTp7fSx2PXUuaXJpP2g6aSxSPVtdLFM9VVsodS5zY2hlbWV8fGQuc2NoZW1lfHwiIikudG9Mb3dlckNhc2UoKV07aWYoUyYmUy5zZXJpYWxpemUmJlMuc2VyaWFsaXplKGQsdSksZC5ob3N0JiYhdi5JUFY2QUREUkVTUy50ZXN0KGQuaG9zdCkpe2lmKHUuZG9tYWluSG9zdHx8UyYmUy5kb21haW5Ib3N0KXRyeXtkLmhvc3Q9dS5pcmk/UC50b1VuaWNvZGUoZC5ob3N0KTpQLnRvQVNDSUkoZC5ob3N0LnJlcGxhY2Uodi5QQ1RfRU5DT0RFRCxaKS50b0xvd2VyQ2FzZSgpKX1jYXRjaChzZSl7ZC5lcnJvcj1kLmVycm9yfHwiSG9zdCdzIGRvbWFpbiBuYW1lIGNhbiBub3QgYmUgY29udmVydGVkIHRvICIrKHUuaXJpPyJVbmljb2RlIjoiQVNDSUkiKSsiIHZpYSBwdW55Y29kZTogIitzZX19cmUoZCx2KSx1LnJlZmVyZW5jZSE9PSJzdWZmaXgiJiZkLnNjaGVtZSYmKFIucHVzaChkLnNjaGVtZSksUi5wdXNoKCI6IikpO3ZhciB6PUxyKGQsdSk7aWYoeiE9PXZvaWQgMCYmKHUucmVmZXJlbmNlIT09InN1ZmZpeCImJlIucHVzaCgiLy8iKSxSLnB1c2goeiksZC5wYXRoJiZkLnBhdGguY2hhckF0KDApIT09Ii8iJiZSLnB1c2goIi8iKSksZC5wYXRoIT09dm9pZCAwKXt2YXIgSz1kLnBhdGg7IXUuYWJzb2x1dGVQYXRoJiYoIVN8fCFTLmFic29sdXRlUGF0aCkmJihLPW50KEspKSx6PT09dm9pZCAwJiYoSz1LLnJlcGxhY2UoL15cL1wvLywiLyUyRiIpKSxSLnB1c2goSyl9cmV0dXJuIGQucXVlcnkhPT12b2lkIDAmJihSLnB1c2goIj8iKSxSLnB1c2goZC5xdWVyeSkpLGQuZnJhZ21lbnQhPT12b2lkIDAmJihSLnB1c2goIiMiKSxSLnB1c2goZC5mcmFnbWVudCkpLFIuam9pbigiIil9ZnVuY3Rpb24gcHIoZCx1KXt2YXIgdj1hcmd1bWVudHMubGVuZ3RoPjImJmFyZ3VtZW50c1syXSE9PXZvaWQgMD9hcmd1bWVudHNbMl06e30sUj1hcmd1bWVudHNbM10sUz17fTtyZXR1cm4gUnx8KGQ9TWUoa2UoZCx2KSx2KSx1PU1lKGtlKHUsdiksdikpLHY9dnx8e30sIXYudG9sZXJhbnQmJnUuc2NoZW1lPyhTLnNjaGVtZT11LnNjaGVtZSxTLnVzZXJpbmZvPXUudXNlcmluZm8sUy5ob3N0PXUuaG9zdCxTLnBvcnQ9dS5wb3J0LFMucGF0aD1udCh1LnBhdGh8fCIiKSxTLnF1ZXJ5PXUucXVlcnkpOih1LnVzZXJpbmZvIT09dm9pZCAwfHx1Lmhvc3QhPT12b2lkIDB8fHUucG9ydCE9PXZvaWQgMD8oUy51c2VyaW5mbz11LnVzZXJpbmZvLFMuaG9zdD11Lmhvc3QsUy5wb3J0PXUucG9ydCxTLnBhdGg9bnQodS5wYXRofHwiIiksUy5xdWVyeT11LnF1ZXJ5KToodS5wYXRoPyh1LnBhdGguY2hhckF0KDApPT09Ii8iP1MucGF0aD1udCh1LnBhdGgpOigoZC51c2VyaW5mbyE9PXZvaWQgMHx8ZC5ob3N0IT09dm9pZCAwfHxkLnBvcnQhPT12b2lkIDApJiYhZC5wYXRoP1MucGF0aD0iLyIrdS5wYXRoOmQucGF0aD9TLnBhdGg9ZC5wYXRoLnNsaWNlKDAsZC5wYXRoLmxhc3RJbmRleE9mKCIvIikrMSkrdS5wYXRoOlMucGF0aD11LnBhdGgsUy5wYXRoPW50KFMucGF0aCkpLFMucXVlcnk9dS5xdWVyeSk6KFMucGF0aD1kLnBhdGgsdS5xdWVyeSE9PXZvaWQgMD9TLnF1ZXJ5PXUucXVlcnk6Uy5xdWVyeT1kLnF1ZXJ5KSxTLnVzZXJpbmZvPWQudXNlcmluZm8sUy5ob3N0PWQuaG9zdCxTLnBvcnQ9ZC5wb3J0KSxTLnNjaGVtZT1kLnNjaGVtZSksUy5mcmFnbWVudD11LmZyYWdtZW50LFN9ZnVuY3Rpb24genIoZCx1LHYpe3ZhciBSPWYoe3NjaGVtZToibnVsbCJ9LHYpO3JldHVybiBrZShwcihNZShkLFIpLE1lKHUsUiksUiwhMCksUil9ZnVuY3Rpb24gQnQoZCx1KXtyZXR1cm4gdHlwZW9mIGQ9PSJzdHJpbmciP2Q9a2UoTWUoZCx1KSx1KTphKGQpPT09Im9iamVjdCImJihkPU1lKGtlKGQsdSksdSkpLGR9ZnVuY3Rpb24gSHIoZCx1LHYpe3JldHVybiB0eXBlb2YgZD09InN0cmluZyI/ZD1rZShNZShkLHYpLHYpOmEoZCk9PT0ib2JqZWN0IiYmKGQ9a2UoZCx2KSksdHlwZW9mIHU9PSJzdHJpbmciP3U9a2UoTWUodSx2KSx2KTphKHUpPT09Im9iamVjdCImJih1PWtlKHUsdikpLGQ9PT11fWZ1bmN0aW9uIHduKGQsdSl7cmV0dXJuIGQmJmQudG9TdHJpbmcoKS5yZXBsYWNlKCF1fHwhdS5pcmk/aS5FU0NBUEU6aC5FU0NBUEUsRil9ZnVuY3Rpb24gSmUoZCx1KXtyZXR1cm4gZCYmZC50b1N0cmluZygpLnJlcGxhY2UoIXV8fCF1LmlyaT9pLlBDVF9FTkNPREVEOmguUENUX0VOQ09ERUQsWil9dmFyIEp0PXtzY2hlbWU6Imh0dHAiLGRvbWFpbkhvc3Q6ITAscGFyc2U6ZnVuY3Rpb24odSx2KXtyZXR1cm4gdS5ob3N0fHwodS5lcnJvcj11LmVycm9yfHwiSFRUUCBVUklzIG11c3QgaGF2ZSBhIGhvc3QuIiksdX0sc2VyaWFsaXplOmZ1bmN0aW9uKHUsdil7dmFyIFI9U3RyaW5nKHUuc2NoZW1lKS50b0xvd2VyQ2FzZSgpPT09Imh0dHBzIjtyZXR1cm4odS5wb3J0PT09KFI/NDQzOjgwKXx8dS5wb3J0PT09IiIpJiYodS5wb3J0PXZvaWQgMCksdS5wYXRofHwodS5wYXRoPSIvIiksdX19LFBvPXtzY2hlbWU6Imh0dHBzIixkb21haW5Ib3N0Okp0LmRvbWFpbkhvc3QscGFyc2U6SnQucGFyc2Usc2VyaWFsaXplOkp0LnNlcmlhbGl6ZX07ZnVuY3Rpb24gVG8oZCl7cmV0dXJuIHR5cGVvZiBkLnNlY3VyZT09ImJvb2xlYW4iP2Quc2VjdXJlOlN0cmluZyhkLnNjaGVtZSkudG9Mb3dlckNhc2UoKT09PSJ3c3MifXZhciBLcj17c2NoZW1lOiJ3cyIsZG9tYWluSG9zdDohMCxwYXJzZTpmdW5jdGlvbih1LHYpe3ZhciBSPXU7cmV0dXJuIFIuc2VjdXJlPVRvKFIpLFIucmVzb3VyY2VOYW1lPShSLnBhdGh8fCIvIikrKFIucXVlcnk/Ij8iK1IucXVlcnk6IiIpLFIucGF0aD12b2lkIDAsUi5xdWVyeT12b2lkIDAsUn0sc2VyaWFsaXplOmZ1bmN0aW9uKHUsdil7aWYoKHUucG9ydD09PShUbyh1KT80NDM6ODApfHx1LnBvcnQ9PT0iIikmJih1LnBvcnQ9dm9pZCAwKSx0eXBlb2YgdS5zZWN1cmU9PSJib29sZWFuIiYmKHUuc2NoZW1lPXUuc2VjdXJlPyJ3c3MiOiJ3cyIsdS5zZWN1cmU9dm9pZCAwKSx1LnJlc291cmNlTmFtZSl7dmFyIFI9dS5yZXNvdXJjZU5hbWUuc3BsaXQoIj8iKSxTPUUoUiwyKSx6PVNbMF0sSz1TWzFdO3UucGF0aD16JiZ6IT09Ii8iP3o6dm9pZCAwLHUucXVlcnk9Syx1LnJlc291cmNlTmFtZT12b2lkIDB9cmV0dXJuIHUuZnJhZ21lbnQ9dm9pZCAwLHV9fSxBbz17c2NoZW1lOiJ3c3MiLGRvbWFpbkhvc3Q6S3IuZG9tYWluSG9zdCxwYXJzZTpLci5wYXJzZSxzZXJpYWxpemU6S3Iuc2VyaWFsaXplfSxXZj17fSxDbz0iW0EtWmEtejAtOVxcLVxcLlxcX1xcflxceEEwLVxcdTIwMERcXHUyMDEwLVxcdTIwMjlcXHUyMDJGLVxcdUQ3RkZcXHVGOTAwLVxcdUZEQ0ZcXHVGREYwLVxcdUZGRUZdIixzdD0iWzAtOUEtRmEtZl0iLFhmPXMocygiJVtFRmVmXSIrc3QrIiUiK3N0K3N0KyIlIitzdCtzdCkrInwiK3MoIiVbODlBLUZhLWZdIitzdCsiJSIrc3Qrc3QpKyJ8IitzKCIlIitzdCtzdCkpLFpmPSJbQS1aYS16MC05XFwhXFwkXFwlXFwnXFwqXFwrXFwtXFxeXFxfXFxgXFx7XFx8XFx9XFx+XSIseGY9IltcXCFcXCRcXCVcXCdcXChcXClcXCpcXCtcXCxcXC1cXC4wLTlcXDxcXD5BLVpcXHg1RS1cXHg3RV0iLGVkPW4oeGYsJ1tcXCJcXFxcXScpLHRkPSJbXFwhXFwkXFwnXFwoXFwpXFwqXFwrXFwsXFw7XFw6XFxAXSIscmQ9bmV3IFJlZ0V4cChDbywiZyIpLG1yPW5ldyBSZWdFeHAoWGYsImciKSxuZD1uZXcgUmVnRXhwKG4oIlteXSIsWmYsIltcXC5dIiwnW1xcIl0nLGVkKSwiZyIpLElvPW5ldyBSZWdFeHAobigiW15dIixDbyx0ZCksImciKSxzZD1JbztmdW5jdGlvbiBicyhkKXt2YXIgdT1aKGQpO3JldHVybiB1Lm1hdGNoKHJkKT91OmR9dmFyIERvPXtzY2hlbWU6Im1haWx0byIscGFyc2U6ZnVuY3Rpb24odSx2KXt2YXIgUj11LFM9Ui50bz1SLnBhdGg/Ui5wYXRoLnNwbGl0KCIsIik6W107aWYoUi5wYXRoPXZvaWQgMCxSLnF1ZXJ5KXtmb3IodmFyIHo9ITEsSz17fSxzZT1SLnF1ZXJ5LnNwbGl0KCImIiksbWU9MCwkZT1zZS5sZW5ndGg7bWU8JGU7KyttZSl7dmFyIHg9c2VbbWVdLnNwbGl0KCI9Iik7c3dpdGNoKHhbMF0pe2Nhc2UidG8iOmZvcih2YXIgZmU9eFsxXS5zcGxpdCgiLCIpLHdlPTAscT1mZS5sZW5ndGg7d2U8cTsrK3dlKVMucHVzaChmZVt3ZV0pO2JyZWFrO2Nhc2Uic3ViamVjdCI6Ui5zdWJqZWN0PUplKHhbMV0sdik7YnJlYWs7Y2FzZSJib2R5IjpSLmJvZHk9SmUoeFsxXSx2KTticmVhaztkZWZhdWx0Ono9ITAsS1tKZSh4WzBdLHYpXT1KZSh4WzFdLHYpO2JyZWFrfX16JiYoUi5oZWFkZXJzPUspfVIucXVlcnk9dm9pZCAwO2Zvcih2YXIgX2U9MCxSZT1TLmxlbmd0aDtfZTxSZTsrK19lKXt2YXIgZ2U9U1tfZV0uc3BsaXQoIkAiKTtpZihnZVswXT1KZShnZVswXSksdi51bmljb2RlU3VwcG9ydClnZVsxXT1KZShnZVsxXSx2KS50b0xvd2VyQ2FzZSgpO2Vsc2UgdHJ5e2dlWzFdPVAudG9BU0NJSShKZShnZVsxXSx2KS50b0xvd2VyQ2FzZSgpKX1jYXRjaChQdCl7Ui5lcnJvcj1SLmVycm9yfHwiRW1haWwgYWRkcmVzcydzIGRvbWFpbiBuYW1lIGNhbiBub3QgYmUgY29udmVydGVkIHRvIEFTQ0lJIHZpYSBwdW55Y29kZTogIitQdH1TW19lXT1nZS5qb2luKCJAIil9cmV0dXJuIFJ9LHNlcmlhbGl6ZTpmdW5jdGlvbih1LHYpe3ZhciBSPXUsUz1sKHUudG8pO2lmKFMpe2Zvcih2YXIgej0wLEs9Uy5sZW5ndGg7ejxLOysreil7dmFyIHNlPVN0cmluZyhTW3pdKSxtZT1zZS5sYXN0SW5kZXhPZigiQCIpLCRlPXNlLnNsaWNlKDAsbWUpLnJlcGxhY2UobXIsYnMpLnJlcGxhY2UobXIsbykucmVwbGFjZShuZCxGKSx4PXNlLnNsaWNlKG1lKzEpO3RyeXt4PXYuaXJpP1AudG9Vbmljb2RlKHgpOlAudG9BU0NJSShKZSh4LHYpLnRvTG93ZXJDYXNlKCkpfWNhdGNoKF9lKXtSLmVycm9yPVIuZXJyb3J8fCJFbWFpbCBhZGRyZXNzJ3MgZG9tYWluIG5hbWUgY2FuIG5vdCBiZSBjb252ZXJ0ZWQgdG8gIisodi5pcmk/IlVuaWNvZGUiOiJBU0NJSSIpKyIgdmlhIHB1bnljb2RlOiAiK19lfVNbel09JGUrIkAiK3h9Ui5wYXRoPVMuam9pbigiLCIpfXZhciBmZT11LmhlYWRlcnM9dS5oZWFkZXJzfHx7fTt1LnN1YmplY3QmJihmZS5zdWJqZWN0PXUuc3ViamVjdCksdS5ib2R5JiYoZmUuYm9keT11LmJvZHkpO3ZhciB3ZT1bXTtmb3IodmFyIHEgaW4gZmUpZmVbcV0hPT1XZltxXSYmd2UucHVzaChxLnJlcGxhY2UobXIsYnMpLnJlcGxhY2UobXIsbykucmVwbGFjZShJbyxGKSsiPSIrZmVbcV0ucmVwbGFjZShtcixicykucmVwbGFjZShtcixvKS5yZXBsYWNlKHNkLEYpKTtyZXR1cm4gd2UubGVuZ3RoJiYoUi5xdWVyeT13ZS5qb2luKCImIikpLFJ9fSxhZD0vXihbXlw6XSspXDooLiopLyxqbz17c2NoZW1lOiJ1cm4iLHBhcnNlOmZ1bmN0aW9uKHUsdil7dmFyIFI9dS5wYXRoJiZ1LnBhdGgubWF0Y2goYWQpLFM9dTtpZihSKXt2YXIgej12LnNjaGVtZXx8Uy5zY2hlbWV8fCJ1cm4iLEs9UlsxXS50b0xvd2VyQ2FzZSgpLHNlPVJbMl0sbWU9eisiOiIrKHYubmlkfHxLKSwkZT1VW21lXTtTLm5pZD1LLFMubnNzPXNlLFMucGF0aD12b2lkIDAsJGUmJihTPSRlLnBhcnNlKFMsdikpfWVsc2UgUy5lcnJvcj1TLmVycm9yfHwiVVJOIGNhbiBub3QgYmUgcGFyc2VkLiI7cmV0dXJuIFN9LHNlcmlhbGl6ZTpmdW5jdGlvbih1LHYpe3ZhciBSPXYuc2NoZW1lfHx1LnNjaGVtZXx8InVybiIsUz11Lm5pZCx6PVIrIjoiKyh2Lm5pZHx8UyksSz1VW3pdO0smJih1PUsuc2VyaWFsaXplKHUsdikpO3ZhciBzZT11LG1lPXUubnNzO3JldHVybiBzZS5wYXRoPShTfHx2Lm5pZCkrIjoiK21lLHNlfX0sb2Q9L15bMC05QS1GYS1mXXs4fSg/OlwtWzAtOUEtRmEtZl17NH0pezN9XC1bMC05QS1GYS1mXXsxMn0kLyxrbz17c2NoZW1lOiJ1cm46dXVpZCIscGFyc2U6ZnVuY3Rpb24odSx2KXt2YXIgUj11O3JldHVybiBSLnV1aWQ9Ui5uc3MsUi5uc3M9dm9pZCAwLCF2LnRvbGVyYW50JiYoIVIudXVpZHx8IVIudXVpZC5tYXRjaChvZCkpJiYoUi5lcnJvcj1SLmVycm9yfHwiVVVJRCBpcyBub3QgdmFsaWQuIiksUn0sc2VyaWFsaXplOmZ1bmN0aW9uKHUsdil7dmFyIFI9dTtyZXR1cm4gUi5uc3M9KHUudXVpZHx8IiIpLnRvTG93ZXJDYXNlKCksUn19O1VbSnQuc2NoZW1lXT1KdCxVW1BvLnNjaGVtZV09UG8sVVtLci5zY2hlbWVdPUtyLFVbQW8uc2NoZW1lXT1BbyxVW0RvLnNjaGVtZV09RG8sVVtqby5zY2hlbWVdPWpvLFVba28uc2NoZW1lXT1rbyxyLlNDSEVNRVM9VSxyLnBjdEVuY0NoYXI9RixyLnBjdERlY0NoYXJzPVosci5wYXJzZT1NZSxyLnJlbW92ZURvdFNlZ21lbnRzPW50LHIuc2VyaWFsaXplPWtlLHIucmVzb2x2ZUNvbXBvbmVudHM9cHIsci5yZXNvbHZlPXpyLHIubm9ybWFsaXplPUJ0LHIuZXF1YWw9SHIsci5lc2NhcGVDb21wb25lbnQ9d24sci51bmVzY2FwZUNvbXBvbmVudD1KZSxPYmplY3QuZGVmaW5lUHJvcGVydHkociwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSl9KX0pKGVzLGVzLmV4cG9ydHMpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh4biwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7Y29uc3QgRGE9ZXMuZXhwb3J0cztEYS5jb2RlPSdyZXF1aXJlKCJhanYvZGlzdC9ydW50aW1lL3VyaSIpLmRlZmF1bHQnLHhuLmRlZmF1bHQ9RGEsZnVuY3Rpb24oZSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLGUuQ29kZUdlbj1lLk5hbWU9ZS5uaWw9ZS5zdHJpbmdpZnk9ZS5zdHI9ZS5fPWUuS2V5d29yZEN4dD12b2lkIDA7dmFyIHQ9V2U7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIktleXdvcmRDeHQiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0LktleXdvcmRDeHR9fSk7dmFyIHI9dWU7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl8iLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiByLl99fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsInN0ciIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHIuc3RyfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJzdHJpbmdpZnkiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiByLnN0cmluZ2lmeX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwibmlsIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gci5uaWx9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIk5hbWUiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiByLk5hbWV9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIkNvZGVHZW4iLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiByLkNvZGVHZW59fSk7Y29uc3Qgbj1jbixzPWt0LGE9RHQsbz1DZSxsPXVlLGY9VGUscD1ubixpPWJlLGg9enUsRT14bixUPShrLGcpPT5uZXcgUmVnRXhwKGssZyk7VC5jb2RlPSJuZXcgUmVnRXhwIjtjb25zdCBJPVsicmVtb3ZlQWRkaXRpb25hbCIsInVzZURlZmF1bHRzIiwiY29lcmNlVHlwZXMiXSxqPW5ldyBTZXQoWyJ2YWxpZGF0ZSIsInNlcmlhbGl6ZSIsInBhcnNlIiwid3JhcHBlciIsInJvb3QiLCJzY2hlbWEiLCJrZXl3b3JkIiwicGF0dGVybiIsImZvcm1hdHMiLCJ2YWxpZGF0ZSRkYXRhIiwiZnVuYyIsIm9iaiIsIkVycm9yIl0pLHk9e2Vycm9yRGF0YVBhdGg6IiIsZm9ybWF0OiJgdmFsaWRhdGVGb3JtYXRzOiBmYWxzZWAgY2FuIGJlIHVzZWQgaW5zdGVhZC4iLG51bGxhYmxlOicibnVsbGFibGUiIGtleXdvcmQgaXMgc3VwcG9ydGVkIGJ5IGRlZmF1bHQuJyxqc29uUG9pbnRlcnM6IkRlcHJlY2F0ZWQganNQcm9wZXJ0eVN5bnRheCBjYW4gYmUgdXNlZCBpbnN0ZWFkLiIsZXh0ZW5kUmVmczoiRGVwcmVjYXRlZCBpZ25vcmVLZXl3b3Jkc1dpdGhSZWYgY2FuIGJlIHVzZWQgaW5zdGVhZC4iLG1pc3NpbmdSZWZzOiJQYXNzIGVtcHR5IHNjaGVtYSB3aXRoICRpZCB0aGF0IHNob3VsZCBiZSBpZ25vcmVkIHRvIGFqdi5hZGRTY2hlbWEuIixwcm9jZXNzQ29kZToiVXNlIG9wdGlvbiBgY29kZToge3Byb2Nlc3M6IChjb2RlLCBzY2hlbWFFbnY6IG9iamVjdCkgPT4gc3RyaW5nfWAiLHNvdXJjZUNvZGU6IlVzZSBvcHRpb24gYGNvZGU6IHtzb3VyY2U6IHRydWV9YCIsc3RyaWN0RGVmYXVsdHM6Ikl0IGlzIGRlZmF1bHQgbm93LCBzZWUgb3B0aW9uIGBzdHJpY3RgLiIsc3RyaWN0S2V5d29yZHM6Ikl0IGlzIGRlZmF1bHQgbm93LCBzZWUgb3B0aW9uIGBzdHJpY3RgLiIsdW5pcXVlSXRlbXM6JyJ1bmlxdWVJdGVtcyIga2V5d29yZCBpcyBhbHdheXMgdmFsaWRhdGVkLicsdW5rbm93bkZvcm1hdHM6IkRpc2FibGUgc3RyaWN0IG1vZGUgb3IgcGFzcyBgdHJ1ZWAgdG8gYGFqdi5hZGRGb3JtYXRgIChvciBgZm9ybWF0c2Agb3B0aW9uKS4iLGNhY2hlOiJNYXAgaXMgdXNlZCBhcyBjYWNoZSwgc2NoZW1hIG9iamVjdCBhcyBrZXkuIixzZXJpYWxpemU6Ik1hcCBpcyB1c2VkIGFzIGNhY2hlLCBzY2hlbWEgb2JqZWN0IGFzIGtleS4iLGFqdkVycm9yczoiSXQgaXMgZGVmYXVsdCBub3cuIn0sXz17aWdub3JlS2V5d29yZHNXaXRoUmVmOiIiLGpzUHJvcGVydHlTeW50YXg6IiIsdW5pY29kZTonIm1pbkxlbmd0aCIvIm1heExlbmd0aCIgYWNjb3VudCBmb3IgdW5pY29kZSBjaGFyYWN0ZXJzIGJ5IGRlZmF1bHQuJ30sYj0yMDA7ZnVuY3Rpb24gTyhrKXt2YXIgZyxDLHcsYyxtLFAsVSxGLFoscmUseWUscnQsbHIsRnIsTXIsTWUsTHIsZnIsZHIsaHIsVnIsbnQsa2UscHIsenI7Y29uc3QgQnQ9ay5zdHJpY3QsSHI9KGc9ay5jb2RlKT09PW51bGx8fGc9PT12b2lkIDA/dm9pZCAwOmcub3B0aW1pemUsd249SHI9PT0hMHx8SHI9PT12b2lkIDA/MTpIcnx8MCxKZT0odz0oQz1rLmNvZGUpPT09bnVsbHx8Qz09PXZvaWQgMD92b2lkIDA6Qy5yZWdFeHApIT09bnVsbCYmdyE9PXZvaWQgMD93OlQsSnQ9KGM9ay51cmlSZXNvbHZlcikhPT1udWxsJiZjIT09dm9pZCAwP2M6RS5kZWZhdWx0O3JldHVybntzdHJpY3RTY2hlbWE6KFA9KG09ay5zdHJpY3RTY2hlbWEpIT09bnVsbCYmbSE9PXZvaWQgMD9tOkJ0KSE9PW51bGwmJlAhPT12b2lkIDA/UDohMCxzdHJpY3ROdW1iZXJzOihGPShVPWsuc3RyaWN0TnVtYmVycykhPT1udWxsJiZVIT09dm9pZCAwP1U6QnQpIT09bnVsbCYmRiE9PXZvaWQgMD9GOiEwLHN0cmljdFR5cGVzOihyZT0oWj1rLnN0cmljdFR5cGVzKSE9PW51bGwmJlohPT12b2lkIDA/WjpCdCkhPT1udWxsJiZyZSE9PXZvaWQgMD9yZToibG9nIixzdHJpY3RUdXBsZXM6KHJ0PSh5ZT1rLnN0cmljdFR1cGxlcykhPT1udWxsJiZ5ZSE9PXZvaWQgMD95ZTpCdCkhPT1udWxsJiZydCE9PXZvaWQgMD9ydDoibG9nIixzdHJpY3RSZXF1aXJlZDooRnI9KGxyPWsuc3RyaWN0UmVxdWlyZWQpIT09bnVsbCYmbHIhPT12b2lkIDA/bHI6QnQpIT09bnVsbCYmRnIhPT12b2lkIDA/RnI6ITEsY29kZTprLmNvZGU/bGUoUSh7fSxrLmNvZGUpLHtvcHRpbWl6ZTp3bixyZWdFeHA6SmV9KTp7b3B0aW1pemU6d24scmVnRXhwOkplfSxsb29wUmVxdWlyZWQ6KE1yPWsubG9vcFJlcXVpcmVkKSE9PW51bGwmJk1yIT09dm9pZCAwP01yOmIsbG9vcEVudW06KE1lPWsubG9vcEVudW0pIT09bnVsbCYmTWUhPT12b2lkIDA/TWU6YixtZXRhOihMcj1rLm1ldGEpIT09bnVsbCYmTHIhPT12b2lkIDA/THI6ITAsbWVzc2FnZXM6KGZyPWsubWVzc2FnZXMpIT09bnVsbCYmZnIhPT12b2lkIDA/ZnI6ITAsaW5saW5lUmVmczooZHI9ay5pbmxpbmVSZWZzKSE9PW51bGwmJmRyIT09dm9pZCAwP2RyOiEwLHNjaGVtYUlkOihocj1rLnNjaGVtYUlkKSE9PW51bGwmJmhyIT09dm9pZCAwP2hyOiIkaWQiLGFkZFVzZWRTY2hlbWE6KFZyPWsuYWRkVXNlZFNjaGVtYSkhPT1udWxsJiZWciE9PXZvaWQgMD9WcjohMCx2YWxpZGF0ZVNjaGVtYToobnQ9ay52YWxpZGF0ZVNjaGVtYSkhPT1udWxsJiZudCE9PXZvaWQgMD9udDohMCx2YWxpZGF0ZUZvcm1hdHM6KGtlPWsudmFsaWRhdGVGb3JtYXRzKSE9PW51bGwmJmtlIT09dm9pZCAwP2tlOiEwLHVuaWNvZGVSZWdFeHA6KHByPWsudW5pY29kZVJlZ0V4cCkhPT1udWxsJiZwciE9PXZvaWQgMD9wcjohMCxpbnQzMnJhbmdlOih6cj1rLmludDMycmFuZ2UpIT09bnVsbCYmenIhPT12b2lkIDA/enI6ITAsdXJpUmVzb2x2ZXI6SnR9fWNsYXNzIEF7Y29uc3RydWN0b3IoZz17fSl7dGhpcy5zY2hlbWFzPXt9LHRoaXMucmVmcz17fSx0aGlzLmZvcm1hdHM9e30sdGhpcy5fY29tcGlsYXRpb25zPW5ldyBTZXQsdGhpcy5fbG9hZGluZz17fSx0aGlzLl9jYWNoZT1uZXcgTWFwLGc9dGhpcy5vcHRzPVEoUSh7fSxnKSxPKGcpKTtjb25zdHtlczU6QyxsaW5lczp3fT10aGlzLm9wdHMuY29kZTt0aGlzLnNjb3BlPW5ldyBsLlZhbHVlU2NvcGUoe3Njb3BlOnt9LHByZWZpeGVzOmosZXM1OkMsbGluZXM6d30pLHRoaXMubG9nZ2VyPVcoZy5sb2dnZXIpO2NvbnN0IGM9Zy52YWxpZGF0ZUZvcm1hdHM7Zy52YWxpZGF0ZUZvcm1hdHM9ITEsdGhpcy5SVUxFUz0oMCxhLmdldFJ1bGVzKSgpLEguY2FsbCh0aGlzLHksZywiTk9UIFNVUFBPUlRFRCIpLEguY2FsbCh0aGlzLF8sZywiREVQUkVDQVRFRCIsIndhcm4iKSx0aGlzLl9tZXRhT3B0cz1HLmNhbGwodGhpcyksZy5mb3JtYXRzJiZELmNhbGwodGhpcyksdGhpcy5fYWRkVm9jYWJ1bGFyaWVzKCksdGhpcy5fYWRkRGVmYXVsdE1ldGFTY2hlbWEoKSxnLmtleXdvcmRzJiZCLmNhbGwodGhpcyxnLmtleXdvcmRzKSx0eXBlb2YgZy5tZXRhPT0ib2JqZWN0IiYmdGhpcy5hZGRNZXRhU2NoZW1hKGcubWV0YSksTi5jYWxsKHRoaXMpLGcudmFsaWRhdGVGb3JtYXRzPWN9X2FkZFZvY2FidWxhcmllcygpe3RoaXMuYWRkS2V5d29yZCgiJGFzeW5jIil9X2FkZERlZmF1bHRNZXRhU2NoZW1hKCl7Y29uc3R7JGRhdGE6ZyxtZXRhOkMsc2NoZW1hSWQ6d309dGhpcy5vcHRzO2xldCBjPWg7dz09PSJpZCImJihjPVEoe30saCksYy5pZD1jLiRpZCxkZWxldGUgYy4kaWQpLEMmJmcmJnRoaXMuYWRkTWV0YVNjaGVtYShjLGNbd10sITEpfWRlZmF1bHRNZXRhKCl7Y29uc3R7bWV0YTpnLHNjaGVtYUlkOkN9PXRoaXMub3B0cztyZXR1cm4gdGhpcy5vcHRzLmRlZmF1bHRNZXRhPXR5cGVvZiBnPT0ib2JqZWN0Ij9nW0NdfHxnOnZvaWQgMH12YWxpZGF0ZShnLEMpe2xldCB3O2lmKHR5cGVvZiBnPT0ic3RyaW5nIil7aWYodz10aGlzLmdldFNjaGVtYShnKSwhdyl0aHJvdyBuZXcgRXJyb3IoYG5vIHNjaGVtYSB3aXRoIGtleSBvciByZWYgIiR7Z30iYCl9ZWxzZSB3PXRoaXMuY29tcGlsZShnKTtjb25zdCBjPXcoQyk7cmV0dXJuIiRhc3luYyJpbiB3fHwodGhpcy5lcnJvcnM9dy5lcnJvcnMpLGN9Y29tcGlsZShnLEMpe2NvbnN0IHc9dGhpcy5fYWRkU2NoZW1hKGcsQyk7cmV0dXJuIHcudmFsaWRhdGV8fHRoaXMuX2NvbXBpbGVTY2hlbWFFbnYodyl9Y29tcGlsZUFzeW5jKGcsQyl7aWYodHlwZW9mIHRoaXMub3B0cy5sb2FkU2NoZW1hIT0iZnVuY3Rpb24iKXRocm93IG5ldyBFcnJvcigib3B0aW9ucy5sb2FkU2NoZW1hIHNob3VsZCBiZSBhIGZ1bmN0aW9uIik7Y29uc3R7bG9hZFNjaGVtYTp3fT10aGlzLm9wdHM7cmV0dXJuIGMuY2FsbCh0aGlzLGcsQyk7YXN5bmMgZnVuY3Rpb24gYyhyZSx5ZSl7YXdhaXQgbS5jYWxsKHRoaXMscmUuJHNjaGVtYSk7Y29uc3QgcnQ9dGhpcy5fYWRkU2NoZW1hKHJlLHllKTtyZXR1cm4gcnQudmFsaWRhdGV8fFAuY2FsbCh0aGlzLHJ0KX1hc3luYyBmdW5jdGlvbiBtKHJlKXtyZSYmIXRoaXMuZ2V0U2NoZW1hKHJlKSYmYXdhaXQgYy5jYWxsKHRoaXMseyRyZWY6cmV9LCEwKX1hc3luYyBmdW5jdGlvbiBQKHJlKXt0cnl7cmV0dXJuIHRoaXMuX2NvbXBpbGVTY2hlbWFFbnYocmUpfWNhdGNoKHllKXtpZighKHllIGluc3RhbmNlb2Ygcy5kZWZhdWx0KSl0aHJvdyB5ZTtyZXR1cm4gVS5jYWxsKHRoaXMseWUpLGF3YWl0IEYuY2FsbCh0aGlzLHllLm1pc3NpbmdTY2hlbWEpLFAuY2FsbCh0aGlzLHJlKX19ZnVuY3Rpb24gVSh7bWlzc2luZ1NjaGVtYTpyZSxtaXNzaW5nUmVmOnllfSl7aWYodGhpcy5yZWZzW3JlXSl0aHJvdyBuZXcgRXJyb3IoYEFueVNjaGVtYSAke3JlfSBpcyBsb2FkZWQgYnV0ICR7eWV9IGNhbm5vdCBiZSByZXNvbHZlZGApfWFzeW5jIGZ1bmN0aW9uIEYocmUpe2NvbnN0IHllPWF3YWl0IFouY2FsbCh0aGlzLHJlKTt0aGlzLnJlZnNbcmVdfHxhd2FpdCBtLmNhbGwodGhpcyx5ZS4kc2NoZW1hKSx0aGlzLnJlZnNbcmVdfHx0aGlzLmFkZFNjaGVtYSh5ZSxyZSxDKX1hc3luYyBmdW5jdGlvbiBaKHJlKXtjb25zdCB5ZT10aGlzLl9sb2FkaW5nW3JlXTtpZih5ZSlyZXR1cm4geWU7dHJ5e3JldHVybiBhd2FpdCh0aGlzLl9sb2FkaW5nW3JlXT13KHJlKSl9ZmluYWxseXtkZWxldGUgdGhpcy5fbG9hZGluZ1tyZV19fX1hZGRTY2hlbWEoZyxDLHcsYz10aGlzLm9wdHMudmFsaWRhdGVTY2hlbWEpe2lmKEFycmF5LmlzQXJyYXkoZykpe2Zvcihjb25zdCBQIG9mIGcpdGhpcy5hZGRTY2hlbWEoUCx2b2lkIDAsdyxjKTtyZXR1cm4gdGhpc31sZXQgbTtpZih0eXBlb2YgZz09Im9iamVjdCIpe2NvbnN0e3NjaGVtYUlkOlB9PXRoaXMub3B0cztpZihtPWdbUF0sbSE9PXZvaWQgMCYmdHlwZW9mIG0hPSJzdHJpbmciKXRocm93IG5ldyBFcnJvcihgc2NoZW1hICR7UH0gbXVzdCBiZSBzdHJpbmdgKX1yZXR1cm4gQz0oMCxmLm5vcm1hbGl6ZUlkKShDfHxtKSx0aGlzLl9jaGVja1VuaXF1ZShDKSx0aGlzLnNjaGVtYXNbQ109dGhpcy5fYWRkU2NoZW1hKGcsdyxDLGMsITApLHRoaXN9YWRkTWV0YVNjaGVtYShnLEMsdz10aGlzLm9wdHMudmFsaWRhdGVTY2hlbWEpe3JldHVybiB0aGlzLmFkZFNjaGVtYShnLEMsITAsdyksdGhpc312YWxpZGF0ZVNjaGVtYShnLEMpe2lmKHR5cGVvZiBnPT0iYm9vbGVhbiIpcmV0dXJuITA7bGV0IHc7aWYodz1nLiRzY2hlbWEsdyE9PXZvaWQgMCYmdHlwZW9mIHchPSJzdHJpbmciKXRocm93IG5ldyBFcnJvcigiJHNjaGVtYSBtdXN0IGJlIGEgc3RyaW5nIik7aWYodz13fHx0aGlzLm9wdHMuZGVmYXVsdE1ldGF8fHRoaXMuZGVmYXVsdE1ldGEoKSwhdylyZXR1cm4gdGhpcy5sb2dnZXIud2FybigibWV0YS1zY2hlbWEgbm90IGF2YWlsYWJsZSIpLHRoaXMuZXJyb3JzPW51bGwsITA7Y29uc3QgYz10aGlzLnZhbGlkYXRlKHcsZyk7aWYoIWMmJkMpe2NvbnN0IG09InNjaGVtYSBpcyBpbnZhbGlkOiAiK3RoaXMuZXJyb3JzVGV4dCgpO2lmKHRoaXMub3B0cy52YWxpZGF0ZVNjaGVtYT09PSJsb2ciKXRoaXMubG9nZ2VyLmVycm9yKG0pO2Vsc2UgdGhyb3cgbmV3IEVycm9yKG0pfXJldHVybiBjfWdldFNjaGVtYShnKXtsZXQgQztmb3IoO3R5cGVvZihDPSQuY2FsbCh0aGlzLGcpKT09InN0cmluZyI7KWc9QztpZihDPT09dm9pZCAwKXtjb25zdHtzY2hlbWFJZDp3fT10aGlzLm9wdHMsYz1uZXcgby5TY2hlbWFFbnYoe3NjaGVtYTp7fSxzY2hlbWFJZDp3fSk7aWYoQz1vLnJlc29sdmVTY2hlbWEuY2FsbCh0aGlzLGMsZyksIUMpcmV0dXJuO3RoaXMucmVmc1tnXT1DfXJldHVybiBDLnZhbGlkYXRlfHx0aGlzLl9jb21waWxlU2NoZW1hRW52KEMpfXJlbW92ZVNjaGVtYShnKXtpZihnIGluc3RhbmNlb2YgUmVnRXhwKXJldHVybiB0aGlzLl9yZW1vdmVBbGxTY2hlbWFzKHRoaXMuc2NoZW1hcyxnKSx0aGlzLl9yZW1vdmVBbGxTY2hlbWFzKHRoaXMucmVmcyxnKSx0aGlzO3N3aXRjaCh0eXBlb2YgZyl7Y2FzZSJ1bmRlZmluZWQiOnJldHVybiB0aGlzLl9yZW1vdmVBbGxTY2hlbWFzKHRoaXMuc2NoZW1hcyksdGhpcy5fcmVtb3ZlQWxsU2NoZW1hcyh0aGlzLnJlZnMpLHRoaXMuX2NhY2hlLmNsZWFyKCksdGhpcztjYXNlInN0cmluZyI6e2NvbnN0IEM9JC5jYWxsKHRoaXMsZyk7cmV0dXJuIHR5cGVvZiBDPT0ib2JqZWN0IiYmdGhpcy5fY2FjaGUuZGVsZXRlKEMuc2NoZW1hKSxkZWxldGUgdGhpcy5zY2hlbWFzW2ddLGRlbGV0ZSB0aGlzLnJlZnNbZ10sdGhpc31jYXNlIm9iamVjdCI6e2NvbnN0IEM9Zzt0aGlzLl9jYWNoZS5kZWxldGUoQyk7bGV0IHc9Z1t0aGlzLm9wdHMuc2NoZW1hSWRdO3JldHVybiB3JiYodz0oMCxmLm5vcm1hbGl6ZUlkKSh3KSxkZWxldGUgdGhpcy5zY2hlbWFzW3ddLGRlbGV0ZSB0aGlzLnJlZnNbd10pLHRoaXN9ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoImFqdi5yZW1vdmVTY2hlbWE6IGludmFsaWQgcGFyYW1ldGVyIil9fWFkZFZvY2FidWxhcnkoZyl7Zm9yKGNvbnN0IEMgb2YgZyl0aGlzLmFkZEtleXdvcmQoQyk7cmV0dXJuIHRoaXN9YWRkS2V5d29yZChnLEMpe2xldCB3O2lmKHR5cGVvZiBnPT0ic3RyaW5nIil3PWcsdHlwZW9mIEM9PSJvYmplY3QiJiYodGhpcy5sb2dnZXIud2FybigidGhlc2UgcGFyYW1ldGVycyBhcmUgZGVwcmVjYXRlZCwgc2VlIGRvY3MgZm9yIGFkZEtleXdvcmQiKSxDLmtleXdvcmQ9dyk7ZWxzZSBpZih0eXBlb2YgZz09Im9iamVjdCImJkM9PT12b2lkIDApe2lmKEM9Zyx3PUMua2V5d29yZCxBcnJheS5pc0FycmF5KHcpJiYhdy5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJhZGRLZXl3b3Jkczoga2V5d29yZCBtdXN0IGJlIHN0cmluZyBvciBub24tZW1wdHkgYXJyYXkiKX1lbHNlIHRocm93IG5ldyBFcnJvcigiaW52YWxpZCBhZGRLZXl3b3JkcyBwYXJhbWV0ZXJzIik7aWYoWC5jYWxsKHRoaXMsdyxDKSwhQylyZXR1cm4oMCxpLmVhY2hJdGVtKSh3LG09PnZlLmNhbGwodGhpcyxtKSksdGhpcztOZS5jYWxsKHRoaXMsQyk7Y29uc3QgYz1sZShRKHt9LEMpLHt0eXBlOigwLHAuZ2V0SlNPTlR5cGVzKShDLnR5cGUpLHNjaGVtYVR5cGU6KDAscC5nZXRKU09OVHlwZXMpKEMuc2NoZW1hVHlwZSl9KTtyZXR1cm4oMCxpLmVhY2hJdGVtKSh3LGMudHlwZS5sZW5ndGg9PT0wP209PnZlLmNhbGwodGhpcyxtLGMpOm09PmMudHlwZS5mb3JFYWNoKFA9PnZlLmNhbGwodGhpcyxtLGMsUCkpKSx0aGlzfWdldEtleXdvcmQoZyl7Y29uc3QgQz10aGlzLlJVTEVTLmFsbFtnXTtyZXR1cm4gdHlwZW9mIEM9PSJvYmplY3QiP0MuZGVmaW5pdGlvbjohIUN9cmVtb3ZlS2V5d29yZChnKXtjb25zdHtSVUxFUzpDfT10aGlzO2RlbGV0ZSBDLmtleXdvcmRzW2ddLGRlbGV0ZSBDLmFsbFtnXTtmb3IoY29uc3QgdyBvZiBDLnJ1bGVzKXtjb25zdCBjPXcucnVsZXMuZmluZEluZGV4KG09Pm0ua2V5d29yZD09PWcpO2M+PTAmJncucnVsZXMuc3BsaWNlKGMsMSl9cmV0dXJuIHRoaXN9YWRkRm9ybWF0KGcsQyl7cmV0dXJuIHR5cGVvZiBDPT0ic3RyaW5nIiYmKEM9bmV3IFJlZ0V4cChDKSksdGhpcy5mb3JtYXRzW2ddPUMsdGhpc31lcnJvcnNUZXh0KGc9dGhpcy5lcnJvcnMse3NlcGFyYXRvcjpDPSIsICIsZGF0YVZhcjp3PSJkYXRhIn09e30pe3JldHVybiFnfHxnLmxlbmd0aD09PTA/Ik5vIGVycm9ycyI6Zy5tYXAoYz0+YCR7d30ke2MuaW5zdGFuY2VQYXRofSAke2MubWVzc2FnZX1gKS5yZWR1Y2UoKGMsbSk9PmMrQyttKX0kZGF0YU1ldGFTY2hlbWEoZyxDKXtjb25zdCB3PXRoaXMuUlVMRVMuYWxsO2c9SlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShnKSk7Zm9yKGNvbnN0IGMgb2YgQyl7Y29uc3QgbT1jLnNwbGl0KCIvIikuc2xpY2UoMSk7bGV0IFA9Zztmb3IoY29uc3QgVSBvZiBtKVA9UFtVXTtmb3IoY29uc3QgVSBpbiB3KXtjb25zdCBGPXdbVV07aWYodHlwZW9mIEYhPSJvYmplY3QiKWNvbnRpbnVlO2NvbnN0eyRkYXRhOlp9PUYuZGVmaW5pdGlvbixyZT1QW1VdO1omJnJlJiYoUFtVXT11cihyZSkpfX1yZXR1cm4gZ31fcmVtb3ZlQWxsU2NoZW1hcyhnLEMpe2Zvcihjb25zdCB3IGluIGcpe2NvbnN0IGM9Z1t3XTsoIUN8fEMudGVzdCh3KSkmJih0eXBlb2YgYz09InN0cmluZyI/ZGVsZXRlIGdbd106YyYmIWMubWV0YSYmKHRoaXMuX2NhY2hlLmRlbGV0ZShjLnNjaGVtYSksZGVsZXRlIGdbd10pKX19X2FkZFNjaGVtYShnLEMsdyxjPXRoaXMub3B0cy52YWxpZGF0ZVNjaGVtYSxtPXRoaXMub3B0cy5hZGRVc2VkU2NoZW1hKXtsZXQgUDtjb25zdHtzY2hlbWFJZDpVfT10aGlzLm9wdHM7aWYodHlwZW9mIGc9PSJvYmplY3QiKVA9Z1tVXTtlbHNle2lmKHRoaXMub3B0cy5qdGQpdGhyb3cgbmV3IEVycm9yKCJzY2hlbWEgbXVzdCBiZSBvYmplY3QiKTtpZih0eXBlb2YgZyE9ImJvb2xlYW4iKXRocm93IG5ldyBFcnJvcigic2NoZW1hIG11c3QgYmUgb2JqZWN0IG9yIGJvb2xlYW4iKX1sZXQgRj10aGlzLl9jYWNoZS5nZXQoZyk7aWYoRiE9PXZvaWQgMClyZXR1cm4gRjt3PSgwLGYubm9ybWFsaXplSWQpKFB8fHcpO2NvbnN0IFo9Zi5nZXRTY2hlbWFSZWZzLmNhbGwodGhpcyxnLHcpO3JldHVybiBGPW5ldyBvLlNjaGVtYUVudih7c2NoZW1hOmcsc2NoZW1hSWQ6VSxtZXRhOkMsYmFzZUlkOncsbG9jYWxSZWZzOlp9KSx0aGlzLl9jYWNoZS5zZXQoRi5zY2hlbWEsRiksbSYmIXcuc3RhcnRzV2l0aCgiIyIpJiYodyYmdGhpcy5fY2hlY2tVbmlxdWUodyksdGhpcy5yZWZzW3ddPUYpLGMmJnRoaXMudmFsaWRhdGVTY2hlbWEoZywhMCksRn1fY2hlY2tVbmlxdWUoZyl7aWYodGhpcy5zY2hlbWFzW2ddfHx0aGlzLnJlZnNbZ10pdGhyb3cgbmV3IEVycm9yKGBzY2hlbWEgd2l0aCBrZXkgb3IgaWQgIiR7Z30iIGFscmVhZHkgZXhpc3RzYCl9X2NvbXBpbGVTY2hlbWFFbnYoZyl7aWYoZy5tZXRhP3RoaXMuX2NvbXBpbGVNZXRhU2NoZW1hKGcpOm8uY29tcGlsZVNjaGVtYS5jYWxsKHRoaXMsZyksIWcudmFsaWRhdGUpdGhyb3cgbmV3IEVycm9yKCJhanYgaW1wbGVtZW50YXRpb24gZXJyb3IiKTtyZXR1cm4gZy52YWxpZGF0ZX1fY29tcGlsZU1ldGFTY2hlbWEoZyl7Y29uc3QgQz10aGlzLm9wdHM7dGhpcy5vcHRzPXRoaXMuX21ldGFPcHRzO3RyeXtvLmNvbXBpbGVTY2hlbWEuY2FsbCh0aGlzLGcpfWZpbmFsbHl7dGhpcy5vcHRzPUN9fX1lLmRlZmF1bHQ9QSxBLlZhbGlkYXRpb25FcnJvcj1uLmRlZmF1bHQsQS5NaXNzaW5nUmVmRXJyb3I9cy5kZWZhdWx0O2Z1bmN0aW9uIEgoayxnLEMsdz0iZXJyb3IiKXtmb3IoY29uc3QgYyBpbiBrKXtjb25zdCBtPWM7bSBpbiBnJiZ0aGlzLmxvZ2dlclt3XShgJHtDfTogb3B0aW9uICR7Y30uICR7a1ttXX1gKX19ZnVuY3Rpb24gJChrKXtyZXR1cm4gaz0oMCxmLm5vcm1hbGl6ZUlkKShrKSx0aGlzLnNjaGVtYXNba118fHRoaXMucmVmc1trXX1mdW5jdGlvbiBOKCl7Y29uc3Qgaz10aGlzLm9wdHMuc2NoZW1hcztpZighIWspaWYoQXJyYXkuaXNBcnJheShrKSl0aGlzLmFkZFNjaGVtYShrKTtlbHNlIGZvcihjb25zdCBnIGluIGspdGhpcy5hZGRTY2hlbWEoa1tnXSxnKX1mdW5jdGlvbiBEKCl7Zm9yKGNvbnN0IGsgaW4gdGhpcy5vcHRzLmZvcm1hdHMpe2NvbnN0IGc9dGhpcy5vcHRzLmZvcm1hdHNba107ZyYmdGhpcy5hZGRGb3JtYXQoayxnKX19ZnVuY3Rpb24gQihrKXtpZihBcnJheS5pc0FycmF5KGspKXt0aGlzLmFkZFZvY2FidWxhcnkoayk7cmV0dXJufXRoaXMubG9nZ2VyLndhcm4oImtleXdvcmRzIG9wdGlvbiBhcyBtYXAgaXMgZGVwcmVjYXRlZCwgcGFzcyBhcnJheSIpO2Zvcihjb25zdCBnIGluIGspe2NvbnN0IEM9a1tnXTtDLmtleXdvcmR8fChDLmtleXdvcmQ9ZyksdGhpcy5hZGRLZXl3b3JkKEMpfX1mdW5jdGlvbiBHKCl7Y29uc3Qgaz1RKHt9LHRoaXMub3B0cyk7Zm9yKGNvbnN0IGcgb2YgSSlkZWxldGUga1tnXTtyZXR1cm4ga31jb25zdCBwZT17bG9nKCl7fSx3YXJuKCl7fSxlcnJvcigpe319O2Z1bmN0aW9uIFcoayl7aWYoaz09PSExKXJldHVybiBwZTtpZihrPT09dm9pZCAwKXJldHVybiBjb25zb2xlO2lmKGsubG9nJiZrLndhcm4mJmsuZXJyb3IpcmV0dXJuIGs7dGhyb3cgbmV3IEVycm9yKCJsb2dnZXIgbXVzdCBpbXBsZW1lbnQgbG9nLCB3YXJuIGFuZCBlcnJvciBtZXRob2RzIil9Y29uc3Qgb2U9L15bYS16XyRdW2EtejAtOV8kOi1dKiQvaTtmdW5jdGlvbiBYKGssZyl7Y29uc3R7UlVMRVM6Q309dGhpcztpZigoMCxpLmVhY2hJdGVtKShrLHc9PntpZihDLmtleXdvcmRzW3ddKXRocm93IG5ldyBFcnJvcihgS2V5d29yZCAke3d9IGlzIGFscmVhZHkgZGVmaW5lZGApO2lmKCFvZS50ZXN0KHcpKXRocm93IG5ldyBFcnJvcihgS2V5d29yZCAke3d9IGhhcyBpbnZhbGlkIG5hbWVgKX0pLCEhZyYmZy4kZGF0YSYmISgiY29kZSJpbiBnfHwidmFsaWRhdGUiaW4gZykpdGhyb3cgbmV3IEVycm9yKCckZGF0YSBrZXl3b3JkIG11c3QgaGF2ZSAiY29kZSIgb3IgInZhbGlkYXRlIiBmdW5jdGlvbicpfWZ1bmN0aW9uIHZlKGssZyxDKXt2YXIgdztjb25zdCBjPWc9PW51bGw/dm9pZCAwOmcucG9zdDtpZihDJiZjKXRocm93IG5ldyBFcnJvcigna2V5d29yZCB3aXRoICJwb3N0IiBmbGFnIGNhbm5vdCBoYXZlICJ0eXBlIicpO2NvbnN0e1JVTEVTOm19PXRoaXM7bGV0IFA9Yz9tLnBvc3Q6bS5ydWxlcy5maW5kKCh7dHlwZTpGfSk9PkY9PT1DKTtpZihQfHwoUD17dHlwZTpDLHJ1bGVzOltdfSxtLnJ1bGVzLnB1c2goUCkpLG0ua2V5d29yZHNba109ITAsIWcpcmV0dXJuO2NvbnN0IFU9e2tleXdvcmQ6ayxkZWZpbml0aW9uOmxlKFEoe30sZykse3R5cGU6KDAscC5nZXRKU09OVHlwZXMpKGcudHlwZSksc2NoZW1hVHlwZTooMCxwLmdldEpTT05UeXBlcykoZy5zY2hlbWFUeXBlKX0pfTtnLmJlZm9yZT9FZS5jYWxsKHRoaXMsUCxVLGcuYmVmb3JlKTpQLnJ1bGVzLnB1c2goVSksbS5hbGxba109VSwodz1nLmltcGxlbWVudHMpPT09bnVsbHx8dz09PXZvaWQgMHx8dy5mb3JFYWNoKEY9PnRoaXMuYWRkS2V5d29yZChGKSl9ZnVuY3Rpb24gRWUoayxnLEMpe2NvbnN0IHc9ay5ydWxlcy5maW5kSW5kZXgoYz0+Yy5rZXl3b3JkPT09Qyk7dz49MD9rLnJ1bGVzLnNwbGljZSh3LDAsZyk6KGsucnVsZXMucHVzaChnKSx0aGlzLmxvZ2dlci53YXJuKGBydWxlICR7Q30gaXMgbm90IGRlZmluZWRgKSl9ZnVuY3Rpb24gTmUoayl7bGV0e21ldGFTY2hlbWE6Z309aztnIT09dm9pZCAwJiYoay4kZGF0YSYmdGhpcy5vcHRzLiRkYXRhJiYoZz11cihnKSksay52YWxpZGF0ZVNjaGVtYT10aGlzLmNvbXBpbGUoZywhMCkpfWNvbnN0IEJlPXskcmVmOiJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vYWp2LXZhbGlkYXRvci9hanYvbWFzdGVyL2xpYi9yZWZzL2RhdGEuanNvbiMifTtmdW5jdGlvbiB1cihrKXtyZXR1cm57YW55T2Y6W2ssQmVdfX19KHJhKTt2YXIgdHM9e30sRnQ9e30sTXQ9e307T2JqZWN0LmRlZmluZVByb3BlcnR5KE10LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxNdC5jYWxsUmVmPU10LmdldFZhbGlkYXRlPXZvaWQgMDtjb25zdCBIdT1rdCxqYT1uZSxqZT11ZSxzcj1MZSxrYT1DZSxmbj1iZSxLdT17a2V5d29yZDoiJHJlZiIsc2NoZW1hVHlwZToic3RyaW5nIixjb2RlKGUpe2NvbnN0e2dlbjp0LHNjaGVtYTpyLGl0Om59PWUse2Jhc2VJZDpzLHNjaGVtYUVudjphLHZhbGlkYXRlTmFtZTpvLG9wdHM6bCxzZWxmOmZ9PW4se3Jvb3Q6cH09YTtpZigocj09PSIjInx8cj09PSIjLyIpJiZzPT09cC5iYXNlSWQpcmV0dXJuIGgoKTtjb25zdCBpPWthLnJlc29sdmVSZWYuY2FsbChmLHAscyxyKTtpZihpPT09dm9pZCAwKXRocm93IG5ldyBIdS5kZWZhdWx0KG4ub3B0cy51cmlSZXNvbHZlcixzLHIpO2lmKGkgaW5zdGFuY2VvZiBrYS5TY2hlbWFFbnYpcmV0dXJuIEUoaSk7cmV0dXJuIFQoaSk7ZnVuY3Rpb24gaCgpe2lmKGE9PT1wKXJldHVybiBkbihlLG8sYSxhLiRhc3luYyk7Y29uc3QgST10LnNjb3BlVmFsdWUoInJvb3QiLHtyZWY6cH0pO3JldHVybiBkbihlLCgwLGplLl8pYCR7SX0udmFsaWRhdGVgLHAscC4kYXN5bmMpfWZ1bmN0aW9uIEUoSSl7Y29uc3Qgaj1VYShlLEkpO2RuKGUsaixJLEkuJGFzeW5jKX1mdW5jdGlvbiBUKEkpe2NvbnN0IGo9dC5zY29wZVZhbHVlKCJzY2hlbWEiLGwuY29kZS5zb3VyY2U9PT0hMD97cmVmOkksY29kZTooMCxqZS5zdHJpbmdpZnkpKEkpfTp7cmVmOkl9KSx5PXQubmFtZSgidmFsaWQiKSxfPWUuc3Vic2NoZW1hKHtzY2hlbWE6SSxkYXRhVHlwZXM6W10sc2NoZW1hUGF0aDpqZS5uaWwsdG9wU2NoZW1hUmVmOmosZXJyU2NoZW1hUGF0aDpyfSx5KTtlLm1lcmdlRXZhbHVhdGVkKF8pLGUub2soeSl9fX07ZnVuY3Rpb24gVWEoZSx0KXtjb25zdHtnZW46cn09ZTtyZXR1cm4gdC52YWxpZGF0ZT9yLnNjb3BlVmFsdWUoInZhbGlkYXRlIix7cmVmOnQudmFsaWRhdGV9KTooMCxqZS5fKWAke3Iuc2NvcGVWYWx1ZSgid3JhcHBlciIse3JlZjp0fSl9LnZhbGlkYXRlYH1NdC5nZXRWYWxpZGF0ZT1VYTtmdW5jdGlvbiBkbihlLHQscixuKXtjb25zdHtnZW46cyxpdDphfT1lLHthbGxFcnJvcnM6byxzY2hlbWFFbnY6bCxvcHRzOmZ9PWEscD1mLnBhc3NDb250ZXh0P3NyLmRlZmF1bHQudGhpczpqZS5uaWw7bj9pKCk6aCgpO2Z1bmN0aW9uIGkoKXtpZighbC4kYXN5bmMpdGhyb3cgbmV3IEVycm9yKCJhc3luYyBzY2hlbWEgcmVmZXJlbmNlZCBieSBzeW5jIHNjaGVtYSIpO2NvbnN0IEk9cy5sZXQoInZhbGlkIik7cy50cnkoKCk9PntzLmNvZGUoKDAsamUuXylgYXdhaXQgJHsoMCxqYS5jYWxsVmFsaWRhdGVDb2RlKShlLHQscCl9YCksVCh0KSxvfHxzLmFzc2lnbihJLCEwKX0saj0+e3MuaWYoKDAsamUuXylgISgke2p9IGluc3RhbmNlb2YgJHthLlZhbGlkYXRpb25FcnJvcn0pYCwoKT0+cy50aHJvdyhqKSksRShqKSxvfHxzLmFzc2lnbihJLCExKX0pLGUub2soSSl9ZnVuY3Rpb24gaCgpe2UucmVzdWx0KCgwLGphLmNhbGxWYWxpZGF0ZUNvZGUpKGUsdCxwKSwoKT0+VCh0KSwoKT0+RSh0KSl9ZnVuY3Rpb24gRShJKXtjb25zdCBqPSgwLGplLl8pYCR7SX0uZXJyb3JzYDtzLmFzc2lnbihzci5kZWZhdWx0LnZFcnJvcnMsKDAsamUuXylgJHtzci5kZWZhdWx0LnZFcnJvcnN9ID09PSBudWxsID8gJHtqfSA6ICR7c3IuZGVmYXVsdC52RXJyb3JzfS5jb25jYXQoJHtqfSlgKSxzLmFzc2lnbihzci5kZWZhdWx0LmVycm9ycywoMCxqZS5fKWAke3NyLmRlZmF1bHQudkVycm9yc30ubGVuZ3RoYCl9ZnVuY3Rpb24gVChJKXt2YXIgajtpZighYS5vcHRzLnVuZXZhbHVhdGVkKXJldHVybjtjb25zdCB5PShqPXI9PW51bGw/dm9pZCAwOnIudmFsaWRhdGUpPT09bnVsbHx8aj09PXZvaWQgMD92b2lkIDA6ai5ldmFsdWF0ZWQ7aWYoYS5wcm9wcyE9PSEwKWlmKHkmJiF5LmR5bmFtaWNQcm9wcyl5LnByb3BzIT09dm9pZCAwJiYoYS5wcm9wcz1mbi5tZXJnZUV2YWx1YXRlZC5wcm9wcyhzLHkucHJvcHMsYS5wcm9wcykpO2Vsc2V7Y29uc3QgXz1zLnZhcigicHJvcHMiLCgwLGplLl8pYCR7SX0uZXZhbHVhdGVkLnByb3BzYCk7YS5wcm9wcz1mbi5tZXJnZUV2YWx1YXRlZC5wcm9wcyhzLF8sYS5wcm9wcyxqZS5OYW1lKX1pZihhLml0ZW1zIT09ITApaWYoeSYmIXkuZHluYW1pY0l0ZW1zKXkuaXRlbXMhPT12b2lkIDAmJihhLml0ZW1zPWZuLm1lcmdlRXZhbHVhdGVkLml0ZW1zKHMseS5pdGVtcyxhLml0ZW1zKSk7ZWxzZXtjb25zdCBfPXMudmFyKCJpdGVtcyIsKDAsamUuXylgJHtJfS5ldmFsdWF0ZWQuaXRlbXNgKTthLml0ZW1zPWZuLm1lcmdlRXZhbHVhdGVkLml0ZW1zKHMsXyxhLml0ZW1zLGplLk5hbWUpfX19TXQuY2FsbFJlZj1kbixNdC5kZWZhdWx0PUt1O3ZhciBWZT17fTtPYmplY3QuZGVmaW5lUHJvcGVydHkoVmUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLFZlLmNoZWNrTWV0YWRhdGE9dm9pZCAwO2NvbnN0IEJ1PWJlLEp1PXtrZXl3b3JkOiJtZXRhZGF0YSIsc2NoZW1hVHlwZToib2JqZWN0Iixjb2RlKGUpe0ZhKGUpO2NvbnN0e2dlbjp0LHNjaGVtYTpyLGl0Om59PWU7aWYoKDAsQnUuYWx3YXlzVmFsaWRTY2hlbWEpKG4scikpcmV0dXJuO2NvbnN0IHM9dC5uYW1lKCJ2YWxpZCIpO2Uuc3Vic2NoZW1hKHtrZXl3b3JkOiJtZXRhZGF0YSIsanRkTWV0YWRhdGE6ITB9LHMpLGUub2socyl9fTtmdW5jdGlvbiBGYSh7aXQ6ZSxrZXl3b3JkOnR9LHIpe2lmKGUuanRkTWV0YWRhdGEhPT1yKXRocm93IG5ldyBFcnJvcihgSlREOiAiJHt0fSIgY2Fubm90IGJlIHVzZWQgaW4gdGhpcyBzY2hlbWEgbG9jYXRpb25gKX1WZS5jaGVja01ldGFkYXRhPUZhLFZlLmRlZmF1bHQ9SnUsT2JqZWN0LmRlZmluZVByb3BlcnR5KEZ0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxGdC5oYXNSZWY9dm9pZCAwO2NvbnN0IE1hPUNlLFNyPXVlLHF1PWt0LExhPUxlLFZhPU10LEd1PVZlLFF1PXtrZXl3b3JkOiJyZWYiLHNjaGVtYVR5cGU6InN0cmluZyIsY29kZShlKXsoMCxHdS5jaGVja01ldGFkYXRhKShlKTtjb25zdHtnZW46dCxkYXRhOnIsc2NoZW1hOm4scGFyZW50U2NoZW1hOnMsaXQ6YX09ZSx7c2NoZW1hRW52Ontyb290Om99fT1hLGw9dC5uYW1lKCJ2YWxpZCIpO3MubnVsbGFibGU/KHQudmFyKGwsKDAsU3IuXylgJHtyfSA9PT0gbnVsbGApLHQuaWYoKDAsU3Iubm90KShsKSxmKSk6KHQudmFyKGwsITEpLGYoKSksZS5vayhsKTtmdW5jdGlvbiBmKCl7dmFyIGg7Y29uc3QgRT0oaD1vLnNjaGVtYS5kZWZpbml0aW9ucyk9PT1udWxsfHxoPT09dm9pZCAwP3ZvaWQgMDpoW25dO2lmKCFFKXRocm93IG5ldyBxdS5kZWZhdWx0KGEub3B0cy51cmlSZXNvbHZlciwiIixuLGBObyBkZWZpbml0aW9uICR7bn1gKTtycyhFKXx8IWEub3B0cy5pbmxpbmVSZWZzP3AoRSk6aShFKX1mdW5jdGlvbiBwKGgpe2NvbnN0IEU9TWEuY29tcGlsZVNjaGVtYS5jYWxsKGEuc2VsZixuZXcgTWEuU2NoZW1hRW52KHtzY2hlbWE6aCxyb290Om8sc2NoZW1hUGF0aDpgL2RlZmluaXRpb25zLyR7bn1gfSkpLFQ9KDAsVmEuZ2V0VmFsaWRhdGUpKGUsRSksST10LmNvbnN0KCJfZXJycyIsTGEuZGVmYXVsdC5lcnJvcnMpOygwLFZhLmNhbGxSZWYpKGUsVCxFLEUuJGFzeW5jKSx0LmFzc2lnbihsLCgwLFNyLl8pYCR7SX0gPT09ICR7TGEuZGVmYXVsdC5lcnJvcnN9YCl9ZnVuY3Rpb24gaShoKXtjb25zdCBFPXQuc2NvcGVWYWx1ZSgic2NoZW1hIixhLm9wdHMuY29kZS5zb3VyY2U9PT0hMD97cmVmOmgsY29kZTooMCxTci5zdHJpbmdpZnkpKGgpfTp7cmVmOmh9KTtlLnN1YnNjaGVtYSh7c2NoZW1hOmgsZGF0YVR5cGVzOltdLHNjaGVtYVBhdGg6U3IubmlsLHRvcFNjaGVtYVJlZjpFLGVyclNjaGVtYVBhdGg6YC9kZWZpbml0aW9ucy8ke259YH0sbCl9fX07ZnVuY3Rpb24gcnMoZSl7Zm9yKGNvbnN0IHQgaW4gZSl7bGV0IHI7aWYodD09PSJyZWYifHx0eXBlb2Yocj1lW3RdKT09Im9iamVjdCImJnJzKHIpKXJldHVybiEwfXJldHVybiExfUZ0Lmhhc1JlZj1ycyxGdC5kZWZhdWx0PVF1O3ZhciBucz17fSxobj17fTtPYmplY3QuZGVmaW5lUHJvcGVydHkoaG4sIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO2NvbnN0IFl1PS90fFxzL2ksV3U9L14oXGRcZFxkXGQpLShcZFxkKS0oXGRcZCkkLyxYdT0vXihcZFxkKTooXGRcZCk6KFxkXGQpKD86XC5cZCspPyg/Onp8KFsrLV1cZFxkKSg/Ojo/KFxkXGQpKT8pJC9pLFp1PVswLDMxLDI4LDMxLDMwLDMxLDMwLDMxLDMxLDMwLDMxLDMwLDMxXTtmdW5jdGlvbiB6YShlLHQpe2NvbnN0IHI9ZS5zcGxpdChZdSk7cmV0dXJuIHIubGVuZ3RoPT09MiYmSGEoclswXSkmJnh1KHJbMV0pfHx0JiZyLmxlbmd0aD09PTEmJkhhKHJbMF0pfWhuLmRlZmF1bHQ9emE7ZnVuY3Rpb24gSGEoZSl7Y29uc3QgdD1XdS5leGVjKGUpO2lmKCF0KXJldHVybiExO2NvbnN0IHI9K3RbMV0sbj0rdFsyXSxzPSt0WzNdO3JldHVybiBuPj0xJiZuPD0xMiYmcz49MSYmKHM8PVp1W25dfHxuPT09MiYmcz09PTI5JiYociUxMDA9PT0wP3IlNDAwPT09MDpyJTQ9PT0wKSl9ZnVuY3Rpb24geHUoZSl7Y29uc3QgdD1YdS5leGVjKGUpO2lmKCF0KXJldHVybiExO2NvbnN0IHI9K3RbMV0sbj0rdFsyXSxzPSt0WzNdLGE9Kyh0WzRdfHwwKSxvPSsodFs1XXx8MCk7cmV0dXJuIHI8PTIzJiZuPD01OSYmczw9NTl8fHItYT09PTIzJiZuLW89PT01OSYmcz09PTYwfXphLmNvZGU9J3JlcXVpcmUoImFqdi9kaXN0L3J1bnRpbWUvdGltZXN0YW1wIikuZGVmYXVsdCc7dmFyIHplPXt9O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh6ZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksemUudHlwZUVycm9yUGFyYW1zPXplLnR5cGVFcnJvck1lc3NhZ2U9emUudHlwZUVycm9yPXZvaWQgMDtjb25zdCBlbD11ZTtmdW5jdGlvbiB0bChlKXtyZXR1cm57bWVzc2FnZTp0PT5LYSh0LGUpLHBhcmFtczp0PT5CYSh0LGUpfX16ZS50eXBlRXJyb3I9dGw7ZnVuY3Rpb24gS2Eoe3BhcmVudFNjaGVtYTplfSx0KXtyZXR1cm4gZSE9bnVsbCYmZS5udWxsYWJsZT9gbXVzdCBiZSAke3R9IG9yIG51bGxgOmBtdXN0IGJlICR7dH1gfXplLnR5cGVFcnJvck1lc3NhZ2U9S2E7ZnVuY3Rpb24gQmEoe3BhcmVudFNjaGVtYTplfSx0KXtyZXR1cm4oMCxlbC5fKWB7dHlwZTogJHt0fSwgbnVsbGFibGU6ICR7ISEoZSE9bnVsbCYmZS5udWxsYWJsZSl9fWB9emUudHlwZUVycm9yUGFyYW1zPUJhLGZ1bmN0aW9uKGUpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxlLmludFJhbmdlPXZvaWQgMDtjb25zdCB0PXVlLHI9aG4sbj1iZSxzPVZlLGE9emU7ZS5pbnRSYW5nZT17aW50ODpbLTEyOCwxMjcsM10sdWludDg6WzAsMjU1LDNdLGludDE2OlstMzI3NjgsMzI3NjcsNV0sdWludDE2OlswLDY1NTM1LDVdLGludDMyOlstMjE0NzQ4MzY0OCwyMTQ3NDgzNjQ3LDEwXSx1aW50MzI6WzAsNDI5NDk2NzI5NSwxMF19O2NvbnN0IG89e21lc3NhZ2U6cD0+KDAsYS50eXBlRXJyb3JNZXNzYWdlKShwLHAuc2NoZW1hKSxwYXJhbXM6cD0+KDAsYS50eXBlRXJyb3JQYXJhbXMpKHAscC5zY2hlbWEpfTtmdW5jdGlvbiBsKHApe2NvbnN0e2dlbjppLGRhdGE6aCxpdDpFfT1wLHt0aW1lc3RhbXA6VCxhbGxvd0RhdGU6SX09RS5vcHRzO2lmKFQ9PT0iZGF0ZSIpcmV0dXJuKDAsdC5fKWAke2h9IGluc3RhbmNlb2YgRGF0ZSBgO2NvbnN0IGo9KDAsbi51c2VGdW5jKShpLHIuZGVmYXVsdCkseT1JPygwLHQuXylgLCB0cnVlYDp0Lm5pbCxfPSgwLHQuXylgdHlwZW9mICR7aH0gPT0gInN0cmluZyIgJiYgJHtqfSgke2h9JHt5fSlgO3JldHVybiBUPT09InN0cmluZyI/XzooMCx0Lm9yKSgoMCx0Ll8pYCR7aH0gaW5zdGFuY2VvZiBEYXRlYCxfKX1jb25zdCBmPXtrZXl3b3JkOiJ0eXBlIixzY2hlbWFUeXBlOiJzdHJpbmciLGVycm9yOm8sY29kZShwKXsoMCxzLmNoZWNrTWV0YWRhdGEpKHApO2NvbnN0e2RhdGE6aSxzY2hlbWE6aCxwYXJlbnRTY2hlbWE6RSxpdDpUfT1wO2xldCBJO3N3aXRjaChoKXtjYXNlImJvb2xlYW4iOmNhc2Uic3RyaW5nIjpJPSgwLHQuXylgdHlwZW9mICR7aX0gPT0gJHtofWA7YnJlYWs7Y2FzZSJ0aW1lc3RhbXAiOntJPWwocCk7YnJlYWt9Y2FzZSJmbG9hdDMyIjpjYXNlImZsb2F0NjQiOkk9KDAsdC5fKWB0eXBlb2YgJHtpfSA9PSAibnVtYmVyImA7YnJlYWs7ZGVmYXVsdDp7Y29uc3Qgaj1oO2lmKEk9KDAsdC5fKWB0eXBlb2YgJHtpfSA9PSAibnVtYmVyIiAmJiBpc0Zpbml0ZSgke2l9KSAmJiAhKCR7aX0gJSAxKWAsIVQub3B0cy5pbnQzMnJhbmdlJiYoaj09PSJpbnQzMiJ8fGo9PT0idWludDMyIikpaj09PSJ1aW50MzIiJiYoST0oMCx0Ll8pYCR7SX0gJiYgJHtpfSA+PSAwYCk7ZWxzZXtjb25zdFt5LF9dPWUuaW50UmFuZ2Vbal07ST0oMCx0Ll8pYCR7SX0gJiYgJHtpfSA+PSAke3l9ICYmICR7aX0gPD0gJHtffWB9fX1wLnBhc3MoRS5udWxsYWJsZT8oMCx0Lm9yKSgoMCx0Ll8pYCR7aX0gPT09IG51bGxgLEkpOkkpfX07ZS5kZWZhdWx0PWZ9KG5zKTt2YXIgc3M9e30seGU9e307T2JqZWN0LmRlZmluZVByb3BlcnR5KHhlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSx4ZS5jaGVja051bGxhYmxlT2JqZWN0PXhlLmNoZWNrTnVsbGFibGU9dm9pZCAwO2NvbnN0IHBuPXVlO2Z1bmN0aW9uIEphKHtnZW46ZSxkYXRhOnQscGFyZW50U2NoZW1hOnJ9LG49cG4ubmlsKXtjb25zdCBzPWUubmFtZSgidmFsaWQiKTtyZXR1cm4gci5udWxsYWJsZT8oZS5sZXQocywoMCxwbi5fKWAke3R9ID09PSBudWxsYCksbj0oMCxwbi5ub3QpKHMpKTplLmxldChzLCExKSxbcyxuXX14ZS5jaGVja051bGxhYmxlPUphO2Z1bmN0aW9uIHJsKGUsdCl7Y29uc3RbcixuXT1KYShlLHQpO3JldHVybltyLCgwLHBuLl8pYCR7bn0gJiYgdHlwZW9mICR7ZS5kYXRhfSA9PSAib2JqZWN0IiAmJiAhQXJyYXkuaXNBcnJheSgke2UuZGF0YX0pYF19eGUuY2hlY2tOdWxsYWJsZU9iamVjdD1ybCxPYmplY3QuZGVmaW5lUHJvcGVydHkoc3MsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO2NvbnN0IHd0PXVlLG5sPVZlLHNsPXhlLGFsPXtrZXl3b3JkOiJlbnVtIixzY2hlbWFUeXBlOiJhcnJheSIsZXJyb3I6e21lc3NhZ2U6Im11c3QgYmUgZXF1YWwgdG8gb25lIG9mIHRoZSBhbGxvd2VkIHZhbHVlcyIscGFyYW1zOih7c2NoZW1hQ29kZTplfSk9PigwLHd0Ll8pYHthbGxvd2VkVmFsdWVzOiAke2V9fWB9LGNvZGUoZSl7KDAsbmwuY2hlY2tNZXRhZGF0YSkoZSk7Y29uc3R7Z2VuOnQsZGF0YTpyLHNjaGVtYTpuLHNjaGVtYVZhbHVlOnMscGFyZW50U2NoZW1hOmEsaXQ6b309ZTtpZihuLmxlbmd0aD09PTApdGhyb3cgbmV3IEVycm9yKCJlbnVtIG11c3QgaGF2ZSBub24tZW1wdHkgYXJyYXkiKTtpZihuLmxlbmd0aCE9PW5ldyBTZXQobikuc2l6ZSl0aHJvdyBuZXcgRXJyb3IoImVudW0gaXRlbXMgbXVzdCBiZSB1bmlxdWUiKTtsZXQgbDtjb25zdCBmPSgwLHd0Ll8pYHR5cGVvZiAke3J9ID09ICJzdHJpbmciYDtpZihuLmxlbmd0aD49by5vcHRzLmxvb3BFbnVtKXtsZXQgaTtbbCxpXT0oMCxzbC5jaGVja051bGxhYmxlKShlLGYpLHQuaWYoaSxwKX1lbHNle2lmKCFBcnJheS5pc0FycmF5KG4pKXRocm93IG5ldyBFcnJvcigiYWp2IGltcGxlbWVudGF0aW9uIGVycm9yIik7bD0oMCx3dC5hbmQpKGYsKDAsd3Qub3IpKC4uLm4ubWFwKGk9PigwLHd0Ll8pYCR7cn0gPT09ICR7aX1gKSkpLGEubnVsbGFibGUmJihsPSgwLHd0Lm9yKSgoMCx3dC5fKWAke3J9ID09PSBudWxsYCxsKSl9ZS5wYXNzKGwpO2Z1bmN0aW9uIHAoKXt0LmZvck9mKCJ2IixzLGk9PnQuaWYoKDAsd3QuXylgJHtsfSA9ICR7cn0gPT09ICR7aX1gLCgpPT50LmJyZWFrKCkpKX19fTtzcy5kZWZhdWx0PWFsO3ZhciBhcz17fTtPYmplY3QuZGVmaW5lUHJvcGVydHkoYXMsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO2NvbnN0IG9sPWJlLGlsPW5lLHFhPXVlLGNsPVZlLHVsPXhlLGxsPXtrZXl3b3JkOiJlbGVtZW50cyIsc2NoZW1hVHlwZToib2JqZWN0IixlcnJvcjooMCx6ZS50eXBlRXJyb3IpKCJhcnJheSIpLGNvZGUoZSl7KDAsY2wuY2hlY2tNZXRhZGF0YSkoZSk7Y29uc3R7Z2VuOnQsZGF0YTpyLHNjaGVtYTpuLGl0OnN9PWU7aWYoKDAsb2wuYWx3YXlzVmFsaWRTY2hlbWEpKHMsbikpcmV0dXJuO2NvbnN0W2FdPSgwLHVsLmNoZWNrTnVsbGFibGUpKGUpO3QuaWYoKDAscWEubm90KShhKSwoKT0+dC5pZigoMCxxYS5fKWBBcnJheS5pc0FycmF5KCR7cn0pYCwoKT0+dC5hc3NpZ24oYSwoMCxpbC52YWxpZGF0ZUFycmF5KShlKSksKCk9PmUuZXJyb3IoKSkpLGUub2soYSl9fTthcy5kZWZhdWx0PWxsO3ZhciBvcz17fTsoZnVuY3Rpb24oZSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLGUudmFsaWRhdGVQcm9wZXJ0aWVzPWUuZXJyb3I9dm9pZCAwO2NvbnN0IHQ9bmUscj1iZSxuPXVlLHM9VmUsYT14ZSxvPXplO3ZhciBsOyhmdW5jdGlvbihpKXtpLkFkZGl0aW9uYWw9ImFkZGl0aW9uYWwiLGkuTWlzc2luZz0ibWlzc2luZyJ9KShsfHwobD17fSkpLGUuZXJyb3I9e21lc3NhZ2U6aT0+e2NvbnN0e3BhcmFtczpofT1pO3JldHVybiBoLnByb3BFcnJvcj9oLnByb3BFcnJvcj09PWwuQWRkaXRpb25hbD8ibXVzdCBOT1QgaGF2ZSBhZGRpdGlvbmFsIHByb3BlcnRpZXMiOmBtdXN0IGhhdmUgcHJvcGVydHkgJyR7aC5taXNzaW5nUHJvcGVydHl9J2A6KDAsby50eXBlRXJyb3JNZXNzYWdlKShpLCJvYmplY3QiKX0scGFyYW1zOmk9Pntjb25zdHtwYXJhbXM6aH09aTtyZXR1cm4gaC5wcm9wRXJyb3I/aC5wcm9wRXJyb3I9PT1sLkFkZGl0aW9uYWw/KDAsbi5fKWB7ZXJyb3I6ICR7aC5wcm9wRXJyb3J9LCBhZGRpdGlvbmFsUHJvcGVydHk6ICR7aC5hZGRpdGlvbmFsUHJvcGVydHl9fWA6KDAsbi5fKWB7ZXJyb3I6ICR7aC5wcm9wRXJyb3J9LCBtaXNzaW5nUHJvcGVydHk6ICR7aC5taXNzaW5nUHJvcGVydHl9fWA6KDAsby50eXBlRXJyb3JQYXJhbXMpKGksIm9iamVjdCIpfX07Y29uc3QgZj17a2V5d29yZDoicHJvcGVydGllcyIsc2NoZW1hVHlwZToib2JqZWN0IixlcnJvcjplLmVycm9yLGNvZGU6cH07ZnVuY3Rpb24gcChpKXsoMCxzLmNoZWNrTWV0YWRhdGEpKGkpO2NvbnN0e2dlbjpoLGRhdGE6RSxwYXJlbnRTY2hlbWE6VCxpdDpJfT1pLHthZGRpdGlvbmFsUHJvcGVydGllczpqLG51bGxhYmxlOnl9PVQ7aWYoSS5qdGREaXNjcmltaW5hdG9yJiZ5KXRocm93IG5ldyBFcnJvcigiSlREOiBudWxsYWJsZSBpbnNpZGUgZGlzY3JpbWluYXRvciBtYXBwaW5nIik7aWYoTigpKXRocm93IG5ldyBFcnJvcigiSlREOiBwcm9wZXJ0aWVzIGFuZCBvcHRpb25hbFByb3BlcnRpZXMgaGF2ZSBjb21tb24gbWVtYmVycyIpO2NvbnN0W18sYl09RCgicHJvcGVydGllcyIpLFtPLEFdPUQoIm9wdGlvbmFsUHJvcGVydGllcyIpO2lmKGIubGVuZ3RoPT09MCYmQS5sZW5ndGg9PT0wJiZqKXJldHVybjtjb25zdFtILCRdPUkuanRkRGlzY3JpbWluYXRvcj09PXZvaWQgMD8oMCxhLmNoZWNrTnVsbGFibGVPYmplY3QpKGksRSk6W2gubGV0KCJ2YWxpZCIsITEpLCEwXTtoLmlmKCQsKCk9PmguYXNzaWduKEgsITApLmJsb2NrKCgpPT57QihiLCJwcm9wZXJ0aWVzIiwhMCksQihBLCJvcHRpb25hbFByb3BlcnRpZXMiKSxqfHxwZSgpfSkpLGkucGFzcyhIKTtmdW5jdGlvbiBOKCl7Y29uc3Qgb2U9VC5wcm9wZXJ0aWVzLFg9VC5vcHRpb25hbFByb3BlcnRpZXM7aWYoIShvZSYmWCkpcmV0dXJuITE7Zm9yKGNvbnN0IHZlIGluIG9lKWlmKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChYLHZlKSlyZXR1cm4hMDtyZXR1cm4hMX1mdW5jdGlvbiBEKG9lKXtjb25zdCBYPVRbb2VdLHZlPVg/KDAsdC5hbGxTY2hlbWFQcm9wZXJ0aWVzKShYKTpbXTtpZihJLmp0ZERpc2NyaW1pbmF0b3ImJnZlLnNvbWUoTmU9Pk5lPT09SS5qdGREaXNjcmltaW5hdG9yKSl0aHJvdyBuZXcgRXJyb3IoYEpURDogZGlzY3JpbWluYXRvciB0YWcgdXNlZCBpbiAke29lfWApO2NvbnN0IEVlPXZlLmZpbHRlcihOZT0+ISgwLHIuYWx3YXlzVmFsaWRTY2hlbWEpKEksWFtOZV0pKTtyZXR1cm5bdmUsRWVdfWZ1bmN0aW9uIEIob2UsWCx2ZSl7Y29uc3QgRWU9aC52YXIoInZhbGlkIik7Zm9yKGNvbnN0IEJlIG9mIG9lKWguaWYoKDAsdC5wcm9wZXJ0eUluRGF0YSkoaCxFLEJlLEkub3B0cy5vd25Qcm9wZXJ0aWVzKSwoKT0+RyhCZSxYLEVlKSwoKT0+TmUoQmUpKSxpLm9rKEVlKTtmdW5jdGlvbiBOZShCZSl7dmU/KGguYXNzaWduKEVlLCExKSxpLmVycm9yKCExLHtwcm9wRXJyb3I6bC5NaXNzaW5nLG1pc3NpbmdQcm9wZXJ0eTpCZX0se3NjaGVtYVBhdGg6QmV9KSk6aC5hc3NpZ24oRWUsITApfX1mdW5jdGlvbiBHKG9lLFgsdmUpe2kuc3Vic2NoZW1hKHtrZXl3b3JkOlgsc2NoZW1hUHJvcDpvZSxkYXRhUHJvcDpvZX0sdmUpfWZ1bmN0aW9uIHBlKCl7aC5mb3JJbigia2V5IixFLG9lPT57Y29uc3QgWD1JLmp0ZERpc2NyaW1pbmF0b3I9PT12b2lkIDA/XzpbSS5qdGREaXNjcmltaW5hdG9yXS5jb25jYXQoXyksdmU9VyhvZSxYLCJwcm9wZXJ0aWVzIiksRWU9VyhvZSxPLCJvcHRpb25hbFByb3BlcnRpZXMiKSxOZT12ZT09PSEwP0VlOkVlPT09ITA/dmU6KDAsbi5hbmQpKHZlLEVlKTtoLmlmKE5lLCgpPT57SS5vcHRzLnJlbW92ZUFkZGl0aW9uYWw/aC5jb2RlKCgwLG4uXylgZGVsZXRlICR7RX1bJHtvZX1dYCk6KGkuZXJyb3IoITEse3Byb3BFcnJvcjpsLkFkZGl0aW9uYWwsYWRkaXRpb25hbFByb3BlcnR5Om9lfSx7aW5zdGFuY2VQYXRoOm9lLHBhcmVudFNjaGVtYTohMH0pLEkub3B0cy5hbGxFcnJvcnN8fGguYnJlYWsoKSl9KX0pfWZ1bmN0aW9uIFcob2UsWCx2ZSl7bGV0IEVlO2lmKFgubGVuZ3RoPjgpe2NvbnN0IE5lPSgwLHIuc2NoZW1hUmVmT3JWYWwpKEksVFt2ZV0sdmUpO0VlPSgwLG4ubm90KSgoMCx0LmlzT3duUHJvcGVydHkpKGgsTmUsb2UpKX1lbHNlIFgubGVuZ3RoP0VlPSgwLG4uYW5kKSguLi5YLm1hcChOZT0+KDAsbi5fKWAke29lfSAhPT0gJHtOZX1gKSk6RWU9ITA7cmV0dXJuIEVlfX1lLnZhbGlkYXRlUHJvcGVydGllcz1wLGUuZGVmYXVsdD1mfSkob3MpO3ZhciBpcz17fTtPYmplY3QuZGVmaW5lUHJvcGVydHkoaXMsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO2NvbnN0IEdhPW9zLGZsPXtrZXl3b3JkOiJvcHRpb25hbFByb3BlcnRpZXMiLHNjaGVtYVR5cGU6Im9iamVjdCIsZXJyb3I6R2EuZXJyb3IsY29kZShlKXtlLnBhcmVudFNjaGVtYS5wcm9wZXJ0aWVzfHwoMCxHYS52YWxpZGF0ZVByb3BlcnRpZXMpKGUpfX07aXMuZGVmYXVsdD1mbDt2YXIgY3M9e30sUWE9e307KGZ1bmN0aW9uKGUpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxlLkRpc2NyRXJyb3I9dm9pZCAwLGZ1bmN0aW9uKHQpe3QuVGFnPSJ0YWciLHQuTWFwcGluZz0ibWFwcGluZyJ9KGUuRGlzY3JFcnJvcnx8KGUuRGlzY3JFcnJvcj17fSkpfSkoUWEpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjcywiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7Y29uc3QgTHQ9dWUsZGw9VmUsaGw9eGUsWWE9emUsbW49UWEscGw9e2tleXdvcmQ6ImRpc2NyaW1pbmF0b3IiLHNjaGVtYVR5cGU6InN0cmluZyIsaW1wbGVtZW50czpbIm1hcHBpbmciXSxlcnJvcjp7bWVzc2FnZTplPT57Y29uc3R7c2NoZW1hOnQscGFyYW1zOnJ9PWU7cmV0dXJuIHIuZGlzY3JFcnJvcj9yLmRpc2NyRXJyb3I9PT1tbi5EaXNjckVycm9yLlRhZz9gdGFnICIke3R9IiBtdXN0IGJlIHN0cmluZ2A6YHZhbHVlIG9mIHRhZyAiJHt0fSIgbXVzdCBiZSBpbiBtYXBwaW5nYDooMCxZYS50eXBlRXJyb3JNZXNzYWdlKShlLCJvYmplY3QiKX0scGFyYW1zOmU9Pntjb25zdHtzY2hlbWE6dCxwYXJhbXM6cn09ZTtyZXR1cm4gci5kaXNjckVycm9yPygwLEx0Ll8pYHtlcnJvcjogJHtyLmRpc2NyRXJyb3J9LCB0YWc6ICR7dH0sIHRhZ1ZhbHVlOiAke3IudGFnfX1gOigwLFlhLnR5cGVFcnJvclBhcmFtcykoZSwib2JqZWN0Iil9fSxjb2RlKGUpeygwLGRsLmNoZWNrTWV0YWRhdGEpKGUpO2NvbnN0e2dlbjp0LGRhdGE6cixzY2hlbWE6bixwYXJlbnRTY2hlbWE6c309ZSxbYSxvXT0oMCxobC5jaGVja051bGxhYmxlT2JqZWN0KShlLHIpO3QuaWYobyksbCgpLHQuZWxzZUlmKCgwLEx0Lm5vdCkoYSkpLGUuZXJyb3IoKSx0LmVuZElmKCksZS5vayhhKTtmdW5jdGlvbiBsKCl7Y29uc3QgaT10LmNvbnN0KCJ0YWciLCgwLEx0Ll8pYCR7cn0keygwLEx0LmdldFByb3BlcnR5KShuKX1gKTt0LmlmKCgwLEx0Ll8pYCR7aX0gPT09IHVuZGVmaW5lZGApLGUuZXJyb3IoITEse2Rpc2NyRXJyb3I6bW4uRGlzY3JFcnJvci5UYWcsdGFnOml9KSx0LmVsc2VJZigoMCxMdC5fKWB0eXBlb2YgJHtpfSA9PSAic3RyaW5nImApLGYoaSksdC5lbHNlKCksZS5lcnJvcighMSx7ZGlzY3JFcnJvcjptbi5EaXNjckVycm9yLlRhZyx0YWc6aX0se2luc3RhbmNlUGF0aDpufSksdC5lbmRJZigpfWZ1bmN0aW9uIGYoaSl7dC5pZighMSk7Zm9yKGNvbnN0IGggaW4gcy5tYXBwaW5nKXQuZWxzZUlmKCgwLEx0Ll8pYCR7aX0gPT09ICR7aH1gKSx0LmFzc2lnbihhLHAoaCkpO3QuZWxzZSgpLGUuZXJyb3IoITEse2Rpc2NyRXJyb3I6bW4uRGlzY3JFcnJvci5NYXBwaW5nLHRhZzppfSx7aW5zdGFuY2VQYXRoOm4sc2NoZW1hUGF0aDoibWFwcGluZyIscGFyZW50U2NoZW1hOiEwfSksdC5lbmRJZigpfWZ1bmN0aW9uIHAoaSl7Y29uc3QgaD10Lm5hbWUoInZhbGlkIik7cmV0dXJuIGUuc3Vic2NoZW1hKHtrZXl3b3JkOiJtYXBwaW5nIixzY2hlbWFQcm9wOmksanRkRGlzY3JpbWluYXRvcjpufSxoKSxofX19O2NzLmRlZmF1bHQ9cGw7dmFyIHVzPXt9O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh1cywiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7Y29uc3QgV2E9YmUsWGE9dWUsbWw9VmUsdmw9eGUsX2w9e2tleXdvcmQ6InZhbHVlcyIsc2NoZW1hVHlwZToib2JqZWN0IixlcnJvcjooMCx6ZS50eXBlRXJyb3IpKCJvYmplY3QiKSxjb2RlKGUpeygwLG1sLmNoZWNrTWV0YWRhdGEpKGUpO2NvbnN0e2dlbjp0LGRhdGE6cixzY2hlbWE6bixpdDpzfT1lO2lmKCgwLFdhLmFsd2F5c1ZhbGlkU2NoZW1hKShzLG4pKXJldHVybjtjb25zdFthLG9dPSgwLHZsLmNoZWNrTnVsbGFibGVPYmplY3QpKGUscik7dC5pZihvKSx0LmFzc2lnbihhLGwoKSksdC5lbHNlSWYoKDAsWGEubm90KShhKSksZS5lcnJvcigpLHQuZW5kSWYoKSxlLm9rKGEpO2Z1bmN0aW9uIGwoKXtjb25zdCBmPXQubmFtZSgidmFsaWQiKTtpZihzLmFsbEVycm9ycyl7Y29uc3QgaT10LmxldCgidmFsaWQiLCEwKTtyZXR1cm4gcCgoKT0+dC5hc3NpZ24oaSwhMSkpLGl9cmV0dXJuIHQudmFyKGYsITApLHAoKCk9PnQuYnJlYWsoKSksZjtmdW5jdGlvbiBwKGkpe3QuZm9ySW4oImtleSIscixoPT57ZS5zdWJzY2hlbWEoe2tleXdvcmQ6InZhbHVlcyIsZGF0YVByb3A6aCxkYXRhUHJvcFR5cGU6V2EuVHlwZS5TdHJ9LGYpLHQuaWYoKDAsWGEubm90KShmKSxpKX0pfX19fTt1cy5kZWZhdWx0PV9sO3ZhciBscz17fTtPYmplY3QuZGVmaW5lUHJvcGVydHkobHMsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO2NvbnN0IGdsPXtrZXl3b3JkOiJ1bmlvbiIsc2NoZW1hVHlwZToiYXJyYXkiLHRyYWNrRXJyb3JzOiEwLGNvZGU6bmUudmFsaWRhdGVVbmlvbixlcnJvcjp7bWVzc2FnZToibXVzdCBtYXRjaCBhIHNjaGVtYSBpbiB1bmlvbiJ9fTtscy5kZWZhdWx0PWdsLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0cywiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7Y29uc3QgRWw9RnQseWw9bnMsJGw9c3Msd2w9YXMsU2w9b3MsUmw9aXMsYmw9Y3MsT2w9dXMsTmw9bHMsUGw9VmUsVGw9WyJkZWZpbml0aW9ucyIsRWwuZGVmYXVsdCx5bC5kZWZhdWx0LCRsLmRlZmF1bHQsd2wuZGVmYXVsdCxTbC5kZWZhdWx0LFJsLmRlZmF1bHQsYmwuZGVmYXVsdCxPbC5kZWZhdWx0LE5sLmRlZmF1bHQsUGwuZGVmYXVsdCx7a2V5d29yZDoiYWRkaXRpb25hbFByb3BlcnRpZXMiLHNjaGVtYVR5cGU6ImJvb2xlYW4ifSx7a2V5d29yZDoibnVsbGFibGUiLHNjaGVtYVR5cGU6ImJvb2xlYW4ifV07dHMuZGVmYXVsdD1UbDt2YXIgZnM9e307T2JqZWN0LmRlZmluZVByb3BlcnR5KGZzLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTtjb25zdCBkdD1lPT57Y29uc3QgdD17bnVsbGFibGU6e3R5cGU6ImJvb2xlYW4ifSxtZXRhZGF0YTp7b3B0aW9uYWxQcm9wZXJ0aWVzOnt1bmlvbjp7ZWxlbWVudHM6e3JlZjoic2NoZW1hIn19fSxhZGRpdGlvbmFsUHJvcGVydGllczohMH19O3JldHVybiBlJiYodC5kZWZpbml0aW9ucz17dmFsdWVzOntyZWY6InNjaGVtYSJ9fSksdH0sQWw9ZT0+KHtvcHRpb25hbFByb3BlcnRpZXM6ZHQoZSl9KSxDbD1lPT4oe3Byb3BlcnRpZXM6e3JlZjp7dHlwZToic3RyaW5nIn19LG9wdGlvbmFsUHJvcGVydGllczpkdChlKX0pLElsPWU9Pih7cHJvcGVydGllczp7dHlwZTp7ZW51bTpbImJvb2xlYW4iLCJ0aW1lc3RhbXAiLCJzdHJpbmciLCJmbG9hdDMyIiwiZmxvYXQ2NCIsImludDgiLCJ1aW50OCIsImludDE2IiwidWludDE2IiwiaW50MzIiLCJ1aW50MzIiXX19LG9wdGlvbmFsUHJvcGVydGllczpkdChlKX0pLERsPWU9Pih7cHJvcGVydGllczp7ZW51bTp7ZWxlbWVudHM6e3R5cGU6InN0cmluZyJ9fX0sb3B0aW9uYWxQcm9wZXJ0aWVzOmR0KGUpfSksamw9ZT0+KHtwcm9wZXJ0aWVzOntlbGVtZW50czp7cmVmOiJzY2hlbWEifX0sb3B0aW9uYWxQcm9wZXJ0aWVzOmR0KGUpfSksWmE9ZT0+KHtwcm9wZXJ0aWVzOntwcm9wZXJ0aWVzOnt2YWx1ZXM6e3JlZjoic2NoZW1hIn19fSxvcHRpb25hbFByb3BlcnRpZXM6USh7b3B0aW9uYWxQcm9wZXJ0aWVzOnt2YWx1ZXM6e3JlZjoic2NoZW1hIn19LGFkZGl0aW9uYWxQcm9wZXJ0aWVzOnt0eXBlOiJib29sZWFuIn19LGR0KGUpKX0pLHhhPWU9Pih7cHJvcGVydGllczp7b3B0aW9uYWxQcm9wZXJ0aWVzOnt2YWx1ZXM6e3JlZjoic2NoZW1hIn19fSxvcHRpb25hbFByb3BlcnRpZXM6USh7YWRkaXRpb25hbFByb3BlcnRpZXM6e3R5cGU6ImJvb2xlYW4ifX0sZHQoZSkpfSksa2w9ZT0+KHtwcm9wZXJ0aWVzOntkaXNjcmltaW5hdG9yOnt0eXBlOiJzdHJpbmcifSxtYXBwaW5nOnt2YWx1ZXM6e21ldGFkYXRhOnt1bmlvbjpbWmEoITEpLHhhKCExKV19fX19LG9wdGlvbmFsUHJvcGVydGllczpkdChlKX0pLFVsPWU9Pih7cHJvcGVydGllczp7dmFsdWVzOntyZWY6InNjaGVtYSJ9fSxvcHRpb25hbFByb3BlcnRpZXM6ZHQoZSl9KSxlbz1lPT4oe21ldGFkYXRhOnt1bmlvbjpbQWwsQ2wsSWwsRGwsamwsWmEseGEsa2wsVWxdLm1hcCh0PT50KGUpKX19KSxGbD1RKHtkZWZpbml0aW9uczp7c2NoZW1hOmVvKCExKX19LGVvKCEwKSk7ZnMuZGVmYXVsdD1GbDt2YXIgZHM9e30sUnI9e307T2JqZWN0LmRlZmluZVByb3BlcnR5KFJyLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxSci5qdGRGb3Jtcz12b2lkIDAsUnIuanRkRm9ybXM9WyJlbGVtZW50cyIsInZhbHVlcyIsImRpc2NyaW1pbmF0b3IiLCJwcm9wZXJ0aWVzIiwib3B0aW9uYWxQcm9wZXJ0aWVzIiwiZW51bSIsInR5cGUiLCJyZWYiXTt2YXIgaHM9e307T2JqZWN0LmRlZmluZVByb3BlcnR5KGhzLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTtjb25zdCBwcz0vW1xcIlx1MDAwMC1cdTAwMWZcdTAwN2YtXHUwMDlmXHUwMGFkXHUwNjAwLVx1MDYwNFx1MDcwZlx1MTdiNFx1MTdiNVx1MjAwYy1cdTIwMGZcdTIwMjgtXHUyMDJmXHUyMDYwLVx1MjA2Zlx1ZmVmZlx1ZmZmMC1cdWZmZmZdL2csTWw9eyJcYiI6IlxcYiIsIgkiOiJcXHQiLCJcbiI6IlxcbiIsIlxmIjoiXFxmIiwiXHIiOiJcXHIiLCciJzonXFwiJywiXFwiOiJcXFxcIn07ZnVuY3Rpb24gdG8oZSl7cmV0dXJuIHBzLmxhc3RJbmRleD0wLCciJysocHMudGVzdChlKT9lLnJlcGxhY2UocHMsdD0+e2NvbnN0IHI9TWxbdF07cmV0dXJuIHR5cGVvZiByPT0ic3RyaW5nIj9yOiJcXHUiKygiMDAwMCIrdC5jaGFyQ29kZUF0KDApLnRvU3RyaW5nKDE2KSkuc2xpY2UoLTQpfSk6ZSkrJyInfWhzLmRlZmF1bHQ9dG8sdG8uY29kZT0ncmVxdWlyZSgiYWp2L2Rpc3QvcnVudGltZS9xdW90ZSIpLmRlZmF1bHQnLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkcywiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7Y29uc3QgTGw9UnIscm89Q2UsdGU9dWUsVmw9a3QsaGU9TGUsemw9bmUsSGw9RnQsS2w9YmUsQmw9aHMsSmw9e2VsZW1lbnRzOkdsLHZhbHVlczpRbCxkaXNjcmltaW5hdG9yOllsLHByb3BlcnRpZXM6YW8sb3B0aW9uYWxQcm9wZXJ0aWVzOmFvLGVudW06T3IsdHlwZTpXbCxyZWY6Wmx9O2Z1bmN0aW9uIG5vKGUsdCl7Y29uc3Qgcj1yby5nZXRDb21waWxpbmdTY2hlbWEuY2FsbCh0aGlzLGUpO2lmKHIpcmV0dXJuIHI7Y29uc3R7ZXM1Om4sbGluZXM6c309dGhpcy5vcHRzLmNvZGUse293blByb3BlcnRpZXM6YX09dGhpcy5vcHRzLG89bmV3IHRlLkNvZGVHZW4odGhpcy5zY29wZSx7ZXM1Om4sbGluZXM6cyxvd25Qcm9wZXJ0aWVzOmF9KSxsPW8uc2NvcGVOYW1lKCJzZXJpYWxpemUiKSxmPXtzZWxmOnRoaXMsZ2VuOm8sc2NoZW1hOmUuc2NoZW1hLHNjaGVtYUVudjplLGRlZmluaXRpb25zOnQsZGF0YTpoZS5kZWZhdWx0LmRhdGF9O2xldCBwO3RyeXt0aGlzLl9jb21waWxhdGlvbnMuYWRkKGUpLGUuc2VyaWFsaXplTmFtZT1sLG8uZnVuYyhsLGhlLmRlZmF1bHQuZGF0YSwhMSwoKT0+e28ubGV0KGhlLmRlZmF1bHQuanNvbiwoMCx0ZS5zdHIpYGApLGJyKGYpLG8ucmV0dXJuKGhlLmRlZmF1bHQuanNvbil9KSxvLm9wdGltaXplKHRoaXMub3B0cy5jb2RlLm9wdGltaXplKTtjb25zdCBpPW8udG9TdHJpbmcoKTtwPWAke28uc2NvcGVSZWZzKGhlLmRlZmF1bHQuc2NvcGUpfXJldHVybiAke2l9YDtjb25zdCBFPW5ldyBGdW5jdGlvbihgJHtoZS5kZWZhdWx0LnNjb3BlfWAscCkodGhpcy5zY29wZS5nZXQoKSk7dGhpcy5zY29wZS52YWx1ZShsLHtyZWY6RX0pLGUuc2VyaWFsaXplPUV9Y2F0Y2goaSl7dGhyb3cgcCYmdGhpcy5sb2dnZXIuZXJyb3IoIkVycm9yIGNvbXBpbGluZyBzZXJpYWxpemVyLCBmdW5jdGlvbiBjb2RlOiIscCksZGVsZXRlIGUuc2VyaWFsaXplLGRlbGV0ZSBlLnNlcmlhbGl6ZU5hbWUsaX1maW5hbGx5e3RoaXMuX2NvbXBpbGF0aW9ucy5kZWxldGUoZSl9cmV0dXJuIGV9ZHMuZGVmYXVsdD1ubztmdW5jdGlvbiBicihlKXtsZXQgdDtmb3IoY29uc3QgciBvZiBMbC5qdGRGb3JtcylpZihyIGluIGUuc2NoZW1hKXt0PXI7YnJlYWt9cWwoZSx0P0psW3RdOmVmKX1mdW5jdGlvbiBxbChlLHQpe2NvbnN0e2dlbjpyLHNjaGVtYTpuLGRhdGE6c309ZTtpZighbi5udWxsYWJsZSlyZXR1cm4gdChlKTtyLmlmKCgwLHRlLl8pYCR7c30gPT09IHVuZGVmaW5lZCB8fCAke3N9ID09PSBudWxsYCwoKT0+ci5hZGQoaGUuZGVmYXVsdC5qc29uLCgwLHRlLl8pYCJudWxsImApLCgpPT50KGUpKX1mdW5jdGlvbiBHbChlKXtjb25zdHtnZW46dCxzY2hlbWE6cixkYXRhOm59PWU7dC5hZGQoaGUuZGVmYXVsdC5qc29uLCgwLHRlLnN0cilgW2ApO2NvbnN0IHM9dC5sZXQoImZpcnN0IiwhMCk7dC5mb3JPZigiZWwiLG4sYT0+e2lvKGUscyksYnIobGUoUSh7fSxlKSx7c2NoZW1hOnIuZWxlbWVudHMsZGF0YTphfSkpfSksdC5hZGQoaGUuZGVmYXVsdC5qc29uLCgwLHRlLnN0cilgXWApfWZ1bmN0aW9uIFFsKGUpe2NvbnN0e2dlbjp0LHNjaGVtYTpyLGRhdGE6bn09ZTt0LmFkZChoZS5kZWZhdWx0Lmpzb24sKDAsdGUuc3RyKWB7YCk7Y29uc3Qgcz10LmxldCgiZmlyc3QiLCEwKTt0LmZvckluKCJrZXkiLG4sYT0+c28oZSxhLHIudmFsdWVzLHMpKSx0LmFkZChoZS5kZWZhdWx0Lmpzb24sKDAsdGUuc3RyKWB9YCl9ZnVuY3Rpb24gc28oZSx0LHIsbil7Y29uc3R7Z2VuOnMsZGF0YTphfT1lO2lvKGUsbiksT3IobGUoUSh7fSxlKSx7ZGF0YTp0fSkpLHMuYWRkKGhlLmRlZmF1bHQuanNvbiwoMCx0ZS5zdHIpYDpgKTtjb25zdCBvPXMuY29uc3QoInZhbHVlIiwoMCx0ZS5fKWAke2F9JHsoMCx0ZS5nZXRQcm9wZXJ0eSkodCl9YCk7YnIobGUoUSh7fSxlKSx7c2NoZW1hOnIsZGF0YTpvfSkpfWZ1bmN0aW9uIFlsKGUpe2NvbnN0e2dlbjp0LHNjaGVtYTpyLGRhdGE6bn09ZSx7ZGlzY3JpbWluYXRvcjpzfT1yO3QuYWRkKGhlLmRlZmF1bHQuanNvbiwoMCx0ZS5zdHIpYHske0pTT04uc3RyaW5naWZ5KHMpfTpgKTtjb25zdCBhPXQuY29uc3QoInRhZyIsKDAsdGUuXylgJHtufSR7KDAsdGUuZ2V0UHJvcGVydHkpKHMpfWApO09yKGxlKFEoe30sZSkse2RhdGE6YX0pKSx0LmlmKCExKTtmb3IoY29uc3QgbyBpbiByLm1hcHBpbmcpe3QuZWxzZUlmKCgwLHRlLl8pYCR7YX0gPT09ICR7b31gKTtjb25zdCBsPXIubWFwcGluZ1tvXTtvbyhsZShRKHt9LGUpLHtzY2hlbWE6bH0pLHMpfXQuZW5kSWYoKSx0LmFkZChoZS5kZWZhdWx0Lmpzb24sKDAsdGUuc3RyKWB9YCl9ZnVuY3Rpb24gYW8oZSl7Y29uc3R7Z2VuOnR9PWU7dC5hZGQoaGUuZGVmYXVsdC5qc29uLCgwLHRlLnN0cilge2ApLG9vKGUpLHQuYWRkKGhlLmRlZmF1bHQuanNvbiwoMCx0ZS5zdHIpYH1gKX1mdW5jdGlvbiBvbyhlLHQpe2NvbnN0e2dlbjpyLHNjaGVtYTpuLGRhdGE6c309ZSx7cHJvcGVydGllczphLG9wdGlvbmFsUHJvcGVydGllczpvfT1uLGw9aChhKSxmPWgobykscD1FKGwuY29uY2F0KGYpKTtsZXQgaT0hdDtmb3IoY29uc3QgeSBvZiBsKUkoeSxhW3ldLFQoeSkpO2Zvcihjb25zdCB5IG9mIGYpe2NvbnN0IF89VCh5KTtyLmlmKCgwLHRlLmFuZCkoKDAsdGUuXylgJHtffSAhPT0gdW5kZWZpbmVkYCwoMCx6bC5pc093blByb3BlcnR5KShyLHMseSkpLCgpPT5JKHksb1t5XSxfKSl9bi5hZGRpdGlvbmFsUHJvcGVydGllcyYmci5mb3JJbigia2V5IixzLHk9PnIuaWYoaih5LHApLCgpPT5zbyhlLHkse30sci5sZXQoImZpcnN0IixpKSkpKTtmdW5jdGlvbiBoKHkpe3JldHVybiB5P09iamVjdC5rZXlzKHkpOltdfWZ1bmN0aW9uIEUoeSl7aWYodCYmeS5wdXNoKHQpLG5ldyBTZXQoeSkuc2l6ZSE9PXkubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiSlREOiBwcm9wZXJ0aWVzL29wdGlvbmFsUHJvcGVydGllcy9kaXNjaW1pbmF0b3Igb3ZlcmxhcCIpO3JldHVybiB5fWZ1bmN0aW9uIFQoeSl7cmV0dXJuIHIuY29uc3QoInZhbHVlIiwoMCx0ZS5fKWAke3N9JHsoMCx0ZS5nZXRQcm9wZXJ0eSkoeSl9YCl9ZnVuY3Rpb24gSSh5LF8sYil7aT9pPSExOnIuYWRkKGhlLmRlZmF1bHQuanNvbiwoMCx0ZS5zdHIpYCxgKSxyLmFkZChoZS5kZWZhdWx0Lmpzb24sKDAsdGUuc3RyKWAke0pTT04uc3RyaW5naWZ5KHkpfTpgKSxicihsZShRKHt9LGUpLHtzY2hlbWE6XyxkYXRhOmJ9KSl9ZnVuY3Rpb24gaih5LF8pe3JldHVybiBfLmxlbmd0aD8oMCx0ZS5hbmQpKC4uLl8ubWFwKGI9PigwLHRlLl8pYCR7eX0gIT09ICR7Yn1gKSk6ITB9fWZ1bmN0aW9uIFdsKGUpe2NvbnN0e2dlbjp0LHNjaGVtYTpyLGRhdGE6bn09ZTtzd2l0Y2goci50eXBlKXtjYXNlImJvb2xlYW4iOnQuYWRkKGhlLmRlZmF1bHQuanNvbiwoMCx0ZS5fKWAke259ID8gInRydWUiIDogImZhbHNlImApO2JyZWFrO2Nhc2Uic3RyaW5nIjpPcihlKTticmVhaztjYXNlInRpbWVzdGFtcCI6dC5pZigoMCx0ZS5fKWAke259IGluc3RhbmNlb2YgRGF0ZWAsKCk9PnQuYWRkKGhlLmRlZmF1bHQuanNvbiwoMCx0ZS5fKWAnIicgKyAke259LnRvSVNPU3RyaW5nKCkgKyAnIidgKSwoKT0+T3IoZSkpO2JyZWFrO2RlZmF1bHQ6WGwoZSl9fWZ1bmN0aW9uIE9yKHtnZW46ZSxkYXRhOnR9KXtlLmFkZChoZS5kZWZhdWx0Lmpzb24sKDAsdGUuXylgJHsoMCxLbC51c2VGdW5jKShlLEJsLmRlZmF1bHQpfSgke3R9KWApfWZ1bmN0aW9uIFhsKHtnZW46ZSxkYXRhOnR9KXtlLmFkZChoZS5kZWZhdWx0Lmpzb24sKDAsdGUuXylgIiIgKyAke3R9YCl9ZnVuY3Rpb24gWmwoZSl7Y29uc3R7Z2VuOnQsc2VsZjpyLGRhdGE6bixkZWZpbml0aW9uczpzLHNjaGVtYTphLHNjaGVtYUVudjpvfT1lLHtyZWY6bH09YSxmPXNbbF07aWYoIWYpdGhyb3cgbmV3IFZsLmRlZmF1bHQoci5vcHRzLnVyaVJlc29sdmVyLCIiLGwsYE5vIGRlZmluaXRpb24gJHtsfWApO2lmKCEoMCxIbC5oYXNSZWYpKGYpKXJldHVybiBicihsZShRKHt9LGUpLHtzY2hlbWE6Zn0pKTtjb25zdHtyb290OnB9PW8saT1uby5jYWxsKHIsbmV3IHJvLlNjaGVtYUVudih7c2NoZW1hOmYscm9vdDpwfSkscyk7dC5hZGQoaGUuZGVmYXVsdC5qc29uLCgwLHRlLl8pYCR7eGwodCxpKX0oJHtufSlgKX1mdW5jdGlvbiB4bChlLHQpe3JldHVybiB0LnNlcmlhbGl6ZT9lLnNjb3BlVmFsdWUoInNlcmlhbGl6ZSIse3JlZjp0LnNlcmlhbGl6ZX0pOigwLHRlLl8pYCR7ZS5zY29wZVZhbHVlKCJ3cmFwcGVyIix7cmVmOnR9KX0uc2VyaWFsaXplYH1mdW5jdGlvbiBlZih7Z2VuOmUsZGF0YTp0fSl7ZS5hZGQoaGUuZGVmYXVsdC5qc29uLCgwLHRlLl8pYEpTT04uc3RyaW5naWZ5KCR7dH0pYCl9ZnVuY3Rpb24gaW8oe2dlbjplfSx0KXtlLmlmKHQsKCk9PmUuYXNzaWduKHQsITEpLCgpPT5lLmFkZChoZS5kZWZhdWx0Lmpzb24sKDAsdGUuc3RyKWAsYCkpfXZhciBtcz17fSxTdD17fTtPYmplY3QuZGVmaW5lUHJvcGVydHkoU3QsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLFN0LnBhcnNlSnNvblN0cmluZz1TdC5wYXJzZUpzb25OdW1iZXI9U3QucGFyc2VKc29uPXZvaWQgMDtjb25zdCB0Zj0vcG9zaXRpb25ccyhcZCspJC87ZnVuY3Rpb24gaHQoZSx0KXtsZXQgcjtodC5tZXNzYWdlPXZvaWQgMDtsZXQgbjt0JiYoZT1lLnNsaWNlKHQpKTt0cnl7cmV0dXJuIGh0LnBvc2l0aW9uPXQrZS5sZW5ndGgsSlNPTi5wYXJzZShlKX1jYXRjaChzKXtpZihuPXRmLmV4ZWMocy5tZXNzYWdlKSwhbil7aHQubWVzc2FnZT0idW5leHBlY3RlZCBlbmQiO3JldHVybn1yPStuWzFdO2NvbnN0IGE9ZVtyXTtlPWUuc2xpY2UoMCxyKSxodC5wb3NpdGlvbj10K3I7dHJ5e3JldHVybiBKU09OLnBhcnNlKGUpfWNhdGNoe2h0Lm1lc3NhZ2U9YHVuZXhwZWN0ZWQgdG9rZW4gJHthfWA7cmV0dXJufX19U3QucGFyc2VKc29uPWh0LGh0Lm1lc3NhZ2U9dm9pZCAwLGh0LnBvc2l0aW9uPTAsaHQuY29kZT0ncmVxdWlyZSgiYWp2L2Rpc3QvcnVudGltZS9wYXJzZUpzb24iKS5wYXJzZUpzb24nO2Z1bmN0aW9uIHB0KGUsdCxyKXtsZXQgbj0iIixzO2lmKHB0Lm1lc3NhZ2U9dm9pZCAwLGVbdF09PT0iLSImJihuKz0iLSIsdCsrKSxlW3RdPT09IjAiKW4rPSIwIix0Kys7ZWxzZSBpZighYShyKSl7bygpO3JldHVybn1pZihyKXJldHVybiBwdC5wb3NpdGlvbj10LCtuO2lmKGVbdF09PT0iLiImJihuKz0iLiIsdCsrLCFhKCkpKXtvKCk7cmV0dXJufWlmKHM9ZVt0XSwocz09PSJlInx8cz09PSJFIikmJihuKz0iZSIsdCsrLHM9ZVt0XSwocz09PSIrInx8cz09PSItIikmJihuKz1zLHQrKyksIWEoKSkpe28oKTtyZXR1cm59cmV0dXJuIHB0LnBvc2l0aW9uPXQsK247ZnVuY3Rpb24gYShsKXtsZXQgZj0hMTtmb3IoO3M9ZVt0XSxzPj0iMCImJnM8PSI5IiYmKGw9PT12b2lkIDB8fGwtLSA+MCk7KWY9ITAsbis9cyx0Kys7cmV0dXJuIGZ9ZnVuY3Rpb24gbygpe3B0LnBvc2l0aW9uPXQscHQubWVzc2FnZT10PGUubGVuZ3RoP2B1bmV4cGVjdGVkIHRva2VuICR7ZVt0XX1gOiJ1bmV4cGVjdGVkIGVuZCJ9fVN0LnBhcnNlSnNvbk51bWJlcj1wdCxwdC5tZXNzYWdlPXZvaWQgMCxwdC5wb3NpdGlvbj0wLHB0LmNvZGU9J3JlcXVpcmUoImFqdi9kaXN0L3J1bnRpbWUvcGFyc2VKc29uIikucGFyc2VKc29uTnVtYmVyJztjb25zdCBjbz17YjoiXGIiLGY6IlxmIixuOmAKYCxyOiJcciIsdDoiCSIsJyInOiciJywiLyI6Ii8iLCJcXCI6IlxcIn0scmY9ImEiLmNoYXJDb2RlQXQoMCksbmY9IjAiLmNoYXJDb2RlQXQoMCk7ZnVuY3Rpb24gUnQoZSx0KXtsZXQgcj0iIixuO2ZvcihSdC5tZXNzYWdlPXZvaWQgMDtuPWVbdCsrXSxuIT09JyInOylpZihuPT09IlxcIilpZihuPWVbdF0sbiBpbiBjbylyKz1jb1tuXSx0Kys7ZWxzZSBpZihuPT09InUiKXt0Kys7bGV0IGE9NCxvPTA7Zm9yKDthLS07KXtpZihvPDw9NCxuPWVbdF0sbj09PXZvaWQgMCl7cygidW5leHBlY3RlZCBlbmQiKTtyZXR1cm59aWYobj1uLnRvTG93ZXJDYXNlKCksbj49ImEiJiZuPD0iZiIpbys9bi5jaGFyQ29kZUF0KDApLXJmKzEwO2Vsc2UgaWYobj49IjAiJiZuPD0iOSIpbys9bi5jaGFyQ29kZUF0KDApLW5mO2Vsc2V7cyhgdW5leHBlY3RlZCB0b2tlbiAke259YCk7cmV0dXJufXQrK31yKz1TdHJpbmcuZnJvbUNoYXJDb2RlKG8pfWVsc2V7cyhgdW5leHBlY3RlZCB0b2tlbiAke259YCk7cmV0dXJufWVsc2UgaWYobj09PXZvaWQgMCl7cygidW5leHBlY3RlZCBlbmQiKTtyZXR1cm59ZWxzZSBpZihuLmNoYXJDb2RlQXQoMCk+PTMyKXIrPW47ZWxzZXtzKGB1bmV4cGVjdGVkIHRva2VuICR7bn1gKTtyZXR1cm59cmV0dXJuIFJ0LnBvc2l0aW9uPXQscjtmdW5jdGlvbiBzKGEpe1J0LnBvc2l0aW9uPXQsUnQubWVzc2FnZT1hfX1TdC5wYXJzZUpzb25TdHJpbmc9UnQsUnQubWVzc2FnZT12b2lkIDAsUnQucG9zaXRpb249MCxSdC5jb2RlPSdyZXF1aXJlKCJhanYvZGlzdC9ydW50aW1lL3BhcnNlSnNvbiIpLnBhcnNlSnNvblN0cmluZycsT2JqZWN0LmRlZmluZVByb3BlcnR5KG1zLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTtjb25zdCBzZj1Scix1bz1DZSxMPXVlLGFmPWt0LFk9TGUsb2Y9bmUsY2Y9RnQsdWY9bnMsdnM9U3QsbG89YmUsbGY9aG4sZmY9e2VsZW1lbnRzOm1mLHZhbHVlczp2ZixkaXNjcmltaW5hdG9yOmdmLHByb3BlcnRpZXM6cG8sb3B0aW9uYWxQcm9wZXJ0aWVzOnBvLGVudW06eWYsdHlwZTpFZixyZWY6JGZ9O2Z1bmN0aW9uIGZvKGUsdCl7Y29uc3Qgcj11by5nZXRDb21waWxpbmdTY2hlbWEuY2FsbCh0aGlzLGUpO2lmKHIpcmV0dXJuIHI7Y29uc3R7ZXM1Om4sbGluZXM6c309dGhpcy5vcHRzLmNvZGUse293blByb3BlcnRpZXM6YX09dGhpcy5vcHRzLG89bmV3IEwuQ29kZUdlbih0aGlzLnNjb3BlLHtlczU6bixsaW5lczpzLG93blByb3BlcnRpZXM6YX0pLGw9by5zY29wZU5hbWUoInBhcnNlIiksZj17c2VsZjp0aGlzLGdlbjpvLHNjaGVtYTplLnNjaGVtYSxzY2hlbWFFbnY6ZSxkZWZpbml0aW9uczp0LGRhdGE6WS5kZWZhdWx0LmRhdGEscGFyc2VOYW1lOmwsY2hhcjpvLm5hbWUoImMiKX07bGV0IHA7dHJ5e3RoaXMuX2NvbXBpbGF0aW9ucy5hZGQoZSksZS5wYXJzZU5hbWU9bCxkZihmKSxvLm9wdGltaXplKHRoaXMub3B0cy5jb2RlLm9wdGltaXplKTtjb25zdCBpPW8udG9TdHJpbmcoKTtwPWAke28uc2NvcGVSZWZzKFkuZGVmYXVsdC5zY29wZSl9cmV0dXJuICR7aX1gO2NvbnN0IEU9bmV3IEZ1bmN0aW9uKGAke1kuZGVmYXVsdC5zY29wZX1gLHApKHRoaXMuc2NvcGUuZ2V0KCkpO3RoaXMuc2NvcGUudmFsdWUobCx7cmVmOkV9KSxlLnBhcnNlPUV9Y2F0Y2goaSl7dGhyb3cgcCYmdGhpcy5sb2dnZXIuZXJyb3IoIkVycm9yIGNvbXBpbGluZyBwYXJzZXIsIGZ1bmN0aW9uIGNvZGU6IixwKSxkZWxldGUgZS5wYXJzZSxkZWxldGUgZS5wYXJzZU5hbWUsaX1maW5hbGx5e3RoaXMuX2NvbXBpbGF0aW9ucy5kZWxldGUoZSl9cmV0dXJuIGV9bXMuZGVmYXVsdD1mbztjb25zdCBfcz0oMCxMLl8pYHVuZGVmaW5lZGA7ZnVuY3Rpb24gZGYoZSl7Y29uc3R7Z2VuOnQscGFyc2VOYW1lOnIsY2hhcjpufT1lO3QuZnVuYyhyLCgwLEwuXylgJHtZLmRlZmF1bHQuanNvbn0sICR7WS5kZWZhdWx0Lmpzb25Qb3N9LCAke1kuZGVmYXVsdC5qc29uUGFydH1gLCExLCgpPT57dC5sZXQoWS5kZWZhdWx0LmRhdGEpLHQubGV0KG4pLHQuYXNzaWduKCgwLEwuXylgJHtyfS5tZXNzYWdlYCxfcyksdC5hc3NpZ24oKDAsTC5fKWAke3J9LnBvc2l0aW9uYCxfcyksdC5hc3NpZ24oWS5kZWZhdWx0Lmpzb25Qb3MsKDAsTC5fKWAke1kuZGVmYXVsdC5qc29uUG9zfSB8fCAwYCksdC5jb25zdChZLmRlZmF1bHQuanNvbkxlbiwoMCxMLl8pYCR7WS5kZWZhdWx0Lmpzb259Lmxlbmd0aGApLHZuKGUpLHdzKGUpLHQuaWYoWS5kZWZhdWx0Lmpzb25QYXJ0LCgpPT57dC5hc3NpZ24oKDAsTC5fKWAke3J9LnBvc2l0aW9uYCxZLmRlZmF1bHQuanNvblBvcyksdC5yZXR1cm4oWS5kZWZhdWx0LmRhdGEpfSksdC5pZigoMCxMLl8pYCR7WS5kZWZhdWx0Lmpzb25Qb3N9ID09PSAke1kuZGVmYXVsdC5qc29uTGVufWAsKCk9PnQucmV0dXJuKFkuZGVmYXVsdC5kYXRhKSksYXIoZSl9KX1mdW5jdGlvbiB2bihlKXtsZXQgdDtmb3IoY29uc3QgciBvZiBzZi5qdGRGb3JtcylpZihyIGluIGUuc2NoZW1hKXt0PXI7YnJlYWt9dD9wZihlLGZmW3RdKTp5cyhlKX1jb25zdCBoZj1nbyghMCxnbyghMSxhcikpO2Z1bmN0aW9uIHBmKGUsdCl7Y29uc3R7Z2VuOnIsc2NoZW1hOm4sZGF0YTpzfT1lO2lmKCFuLm51bGxhYmxlKXJldHVybiB0KGUpO05yKGUsIm51bGwiLHQsKCk9PnIuYXNzaWduKHMsbnVsbCkpfWZ1bmN0aW9uIG1mKGUpe2NvbnN0e2dlbjp0LHNjaGVtYTpyLGRhdGE6bn09ZTtldChlLCJbIik7Y29uc3Qgcz10LmxldCgiaSIsMCk7dC5hc3NpZ24obiwoMCxMLl8pYFtdYCksZ3MoZSwiXSIsKCk9Pntjb25zdCBhPXQubGV0KCJlbCIpO3ZuKGxlKFEoe30sZSkse3NjaGVtYTpyLmVsZW1lbnRzLGRhdGE6YX0pKSx0LmFzc2lnbigoMCxMLl8pYCR7bn1bJHtzfSsrXWAsYSl9KX1mdW5jdGlvbiB2ZihlKXtjb25zdHtnZW46dCxzY2hlbWE6cixkYXRhOm59PWU7ZXQoZSwieyIpLHQuYXNzaWduKG4sKDAsTC5fKWB7fWApLGdzKGUsIn0iLCgpPT5fZihlLHIudmFsdWVzKSl9ZnVuY3Rpb24gZ3MoZSx0LHIpe2hvKGUsdCxyKSxldChlLHQpfWZ1bmN0aW9uIGhvKGUsdCxyKXtjb25zdHtnZW46bn09ZTtuLmZvcigoMCxMLl8pYDske1kuZGVmYXVsdC5qc29uUG9zfTwke1kuZGVmYXVsdC5qc29uTGVufSAmJiAke19uKDEpfSE9PSR7dH07YCwoKT0+e3IoKSxOcihlLCIsIiwoKT0+bi5icmVhaygpLHMpfSk7ZnVuY3Rpb24gcygpe05yKGUsdCwoKT0+e30sYXIpfX1mdW5jdGlvbiBfZihlLHQpe2NvbnN0e2dlbjpyfT1lLG49ci5sZXQoImtleSIpO1Z0KGxlKFEoe30sZSkse2RhdGE6bn0pKSxldChlLCI6IiksX28oZSxuLHQpfWZ1bmN0aW9uIGdmKGUpe2NvbnN0e2dlbjp0LGRhdGE6cixzY2hlbWE6bn09ZSx7ZGlzY3JpbWluYXRvcjpzLG1hcHBpbmc6YX09bjtldChlLCJ7IiksdC5hc3NpZ24ociwoMCxMLl8pYHt9YCk7Y29uc3Qgbz10LmNvbnN0KCJwb3MiLFkuZGVmYXVsdC5qc29uUG9zKSxsPXQubGV0KCJ2YWx1ZSIpLGY9dC5sZXQoInRhZyIpO2hvKGUsIn0iLCgpPT57Y29uc3QgcD10LmxldCgia2V5Iik7VnQobGUoUSh7fSxlKSx7ZGF0YTpwfSkpLGV0KGUsIjoiKSx0LmlmKCgwLEwuXylgJHtwfSA9PT0gJHtzfWAsKCk9PntWdChsZShRKHt9LGUpLHtkYXRhOmZ9KSksdC5hc3NpZ24oKDAsTC5fKWAke3J9WyR7cH1dYCxmKSx0LmJyZWFrKCl9LCgpPT55cyhsZShRKHt9LGUpLHtkYXRhOmx9KSkpfSksdC5hc3NpZ24oWS5kZWZhdWx0Lmpzb25Qb3MsbyksdC5pZigoMCxMLl8pYCR7Zn0gPT09IHVuZGVmaW5lZGApLG10KGUsKDAsTC5zdHIpYGRpc2NyaW1pbmF0b3IgdGFnIG5vdCBmb3VuZGApO2Zvcihjb25zdCBwIGluIGEpdC5lbHNlSWYoKDAsTC5fKWAke2Z9ID09PSAke3B9YCksbW8obGUoUSh7fSxlKSx7c2NoZW1hOmFbcF19KSxzKTt0LmVsc2UoKSxtdChlLCgwLEwuc3RyKWBkaXNjcmltaW5hdG9yIHZhbHVlIG5vdCBpbiBzY2hlbWFgKSx0LmVuZElmKCl9ZnVuY3Rpb24gcG8oZSl7Y29uc3R7Z2VuOnQsZGF0YTpyfT1lO2V0KGUsInsiKSx0LmFzc2lnbihyLCgwLEwuXylge31gKSxtbyhlKX1mdW5jdGlvbiBtbyhlLHQpe2NvbnN0e2dlbjpyLHNjaGVtYTpuLGRhdGE6c309ZSx7cHJvcGVydGllczphLG9wdGlvbmFsUHJvcGVydGllczpvLGFkZGl0aW9uYWxQcm9wZXJ0aWVzOmx9PW47aWYoZ3MoZSwifSIsKCk9Pntjb25zdCBmPXIubGV0KCJrZXkiKTtpZihWdChsZShRKHt9LGUpLHtkYXRhOmZ9KSksZXQoZSwiOiIpLHIuaWYoITEpLHZvKGUsZixhKSx2byhlLGYsbyksdCl7ci5lbHNlSWYoKDAsTC5fKWAke2Z9ID09PSAke3R9YCk7Y29uc3QgcD1yLmxldCgidGFnIik7VnQobGUoUSh7fSxlKSx7ZGF0YTpwfSkpfXIuZWxzZSgpLGw/eXMobGUoUSh7fSxlKSx7ZGF0YTooMCxMLl8pYCR7c31bJHtmfV1gfSkpOm10KGUsKDAsTC5zdHIpYHByb3BlcnR5ICR7Zn0gbm90IGFsbG93ZWRgKSxyLmVuZElmKCl9KSxhKXtjb25zdCBmPSgwLG9mLmhhc1Byb3BGdW5jKShyKSxwPSgwLEwuYW5kKSguLi5PYmplY3Qua2V5cyhhKS5tYXAoaT0+KDAsTC5fKWAke2Z9LmNhbGwoJHtzfSwgJHtpfSlgKSk7ci5pZigoMCxMLm5vdCkocCksKCk9Pm10KGUsKDAsTC5zdHIpYG1pc3NpbmcgcmVxdWlyZWQgcHJvcGVydGllc2ApKX19ZnVuY3Rpb24gdm8oZSx0LHI9e30pe2NvbnN0e2dlbjpufT1lO2Zvcihjb25zdCBzIGluIHIpbi5lbHNlSWYoKDAsTC5fKWAke3R9ID09PSAke3N9YCksX28oZSx0LHJbc10pfWZ1bmN0aW9uIF9vKGUsdCxyKXt2bihsZShRKHt9LGUpLHtzY2hlbWE6cixkYXRhOigwLEwuXylgJHtlLmRhdGF9WyR7dH1dYH0pKX1mdW5jdGlvbiBFZihlKXtjb25zdHtnZW46dCxzY2hlbWE6cixkYXRhOm4sc2VsZjpzfT1lO3N3aXRjaChyLnR5cGUpe2Nhc2UiYm9vbGVhbiI6aGYoZSk7YnJlYWs7Y2FzZSJzdHJpbmciOlZ0KGUpO2JyZWFrO2Nhc2UidGltZXN0YW1wIjp7VnQoZSk7Y29uc3QgYT0oMCxsby51c2VGdW5jKSh0LGxmLmRlZmF1bHQpLHthbGxvd0RhdGU6byxwYXJzZURhdGU6bH09cy5vcHRzLGY9bz8oMCxMLl8pYCEke2F9KCR7bn0sIHRydWUpYDooMCxMLl8pYCEke2F9KCR7bn0pYCxwPWw/KDAsTC5vcikoZiwoMCxMLl8pYCgke259ID0gbmV3IERhdGUoJHtufSksIGZhbHNlKWAsKDAsTC5fKWBpc05hTigke259LnZhbHVlT2YoKSlgKTpmO3QuaWYocCwoKT0+bXQoZSwoMCxMLnN0cilgaW52YWxpZCB0aW1lc3RhbXBgKSk7YnJlYWt9Y2FzZSJmbG9hdDMyIjpjYXNlImZsb2F0NjQiOkVzKGUpO2JyZWFrO2RlZmF1bHQ6e2NvbnN0IGE9ci50eXBlO2lmKCFzLm9wdHMuaW50MzJyYW5nZSYmKGE9PT0iaW50MzIifHxhPT09InVpbnQzMiIpKUVzKGUsMTYpLGE9PT0idWludDMyIiYmdC5pZigoMCxMLl8pYCR7bn0gPCAwYCwoKT0+bXQoZSwoMCxMLnN0cilgaW50ZWdlciBvdXQgb2YgcmFuZ2VgKSk7ZWxzZXtjb25zdFtvLGwsZl09dWYuaW50UmFuZ2VbYV07RXMoZSxmKSx0LmlmKCgwLEwuXylgJHtufSA8ICR7b30gfHwgJHtufSA+ICR7bH1gLCgpPT5tdChlLCgwLEwuc3RyKWBpbnRlZ2VyIG91dCBvZiByYW5nZWApKX19fX1mdW5jdGlvbiBWdChlKXtldChlLCciJyksJHMoZSx2cy5wYXJzZUpzb25TdHJpbmcpfWZ1bmN0aW9uIHlmKGUpe2NvbnN0e2dlbjp0LGRhdGE6cixzY2hlbWE6bn09ZSxzPW4uZW51bTtldChlLCciJyksdC5pZighMSk7Zm9yKGNvbnN0IGEgb2Ygcyl7Y29uc3Qgbz1KU09OLnN0cmluZ2lmeShhKS5zbGljZSgxKTt0LmVsc2VJZigoMCxMLl8pYCR7X24oby5sZW5ndGgpfSA9PT0gJHtvfWApLHQuYXNzaWduKHIsKDAsTC5zdHIpYCR7YX1gKSx0LmFkZChZLmRlZmF1bHQuanNvblBvcyxvLmxlbmd0aCl9dC5lbHNlKCksYXIoZSksdC5lbmRJZigpfWZ1bmN0aW9uIEVzKGUsdCl7Y29uc3R7Z2VuOnJ9PWU7d3MoZSksci5pZigoMCxMLl8pYCItMDEyMzQ1Njc4OSIuaW5kZXhPZigke19uKDEpfSkgPCAwYCwoKT0+YXIoZSksKCk9PiRzKGUsdnMucGFyc2VKc29uTnVtYmVyLHQpKX1mdW5jdGlvbiBnbyhlLHQpe3JldHVybiByPT57Y29uc3R7Z2VuOm4sZGF0YTpzfT1yO05yKHIsYCR7ZX1gLCgpPT50KHIpLCgpPT5uLmFzc2lnbihzLGUpKX19ZnVuY3Rpb24gJGYoZSl7Y29uc3R7Z2VuOnQsc2VsZjpyLGRlZmluaXRpb25zOm4sc2NoZW1hOnMsc2NoZW1hRW52OmF9PWUse3JlZjpvfT1zLGw9bltvXTtpZighbCl0aHJvdyBuZXcgYWYuZGVmYXVsdChyLm9wdHMudXJpUmVzb2x2ZXIsIiIsbyxgTm8gZGVmaW5pdGlvbiAke299YCk7aWYoISgwLGNmLmhhc1JlZikobCkpcmV0dXJuIHZuKGxlKFEoe30sZSkse3NjaGVtYTpsfSkpO2NvbnN0e3Jvb3Q6Zn09YSxwPWZvLmNhbGwocixuZXcgdW8uU2NoZW1hRW52KHtzY2hlbWE6bCxyb290OmZ9KSxuKTtFbyhlLHdmKHQscCksITApfWZ1bmN0aW9uIHdmKGUsdCl7cmV0dXJuIHQucGFyc2U/ZS5zY29wZVZhbHVlKCJwYXJzZSIse3JlZjp0LnBhcnNlfSk6KDAsTC5fKWAke2Uuc2NvcGVWYWx1ZSgid3JhcHBlciIse3JlZjp0fSl9LnBhcnNlYH1mdW5jdGlvbiB5cyhlKXskcyhlLHZzLnBhcnNlSnNvbil9ZnVuY3Rpb24gJHMoZSx0LHIpe0VvKGUsKDAsbG8udXNlRnVuYykoZS5nZW4sdCkscil9ZnVuY3Rpb24gRW8oZSx0LHIpe2NvbnN0e2dlbjpuLGRhdGE6c309ZTtuLmFzc2lnbihzLCgwLEwuXylgJHt0fSgke1kuZGVmYXVsdC5qc29ufSwgJHtZLmRlZmF1bHQuanNvblBvc30ke3I/KDAsTC5fKWAsICR7cn1gOkwubmlsfSlgKSxuLmFzc2lnbihZLmRlZmF1bHQuanNvblBvcywoMCxMLl8pYCR7dH0ucG9zaXRpb25gKSxuLmlmKCgwLEwuXylgJHtzfSA9PT0gdW5kZWZpbmVkYCwoKT0+bXQoZSwoMCxMLl8pYCR7dH0ubWVzc2FnZWApKX1mdW5jdGlvbiBldChlLHQpe05yKGUsdCxhcil9ZnVuY3Rpb24gTnIoZSx0LHIsbil7Y29uc3R7Z2VuOnN9PWUsYT10Lmxlbmd0aDt3cyhlKSxzLmlmKCgwLEwuXylgJHtfbihhKX0gPT09ICR7dH1gLCgpPT57cy5hZGQoWS5kZWZhdWx0Lmpzb25Qb3MsYSksbj09bnVsbHx8bihlKX0sKCk9PnIoZSkpfWZ1bmN0aW9uIHdzKHtnZW46ZSxjaGFyOnR9KXtlLmNvZGUoKDAsTC5fKWB3aGlsZSgoJHt0fT0ke1kuZGVmYXVsdC5qc29ufVske1kuZGVmYXVsdC5qc29uUG9zfV0sJHt0fT09PSIgInx8JHt0fT09PSJcXG4ifHwke3R9PT09IlxcciJ8fCR7dH09PT0iXFx0IikpJHtZLmRlZmF1bHQuanNvblBvc30rKztgKX1mdW5jdGlvbiBfbihlKXtyZXR1cm4gZT09PTE/KDAsTC5fKWAke1kuZGVmYXVsdC5qc29ufVske1kuZGVmYXVsdC5qc29uUG9zfV1gOigwLEwuXylgJHtZLmRlZmF1bHQuanNvbn0uc2xpY2UoJHtZLmRlZmF1bHQuanNvblBvc30sICR7WS5kZWZhdWx0Lmpzb25Qb3N9KyR7ZX0pYH1mdW5jdGlvbiBhcihlKXttdChlLCgwLEwuXylgInVuZXhwZWN0ZWQgdG9rZW4gIiArICR7WS5kZWZhdWx0Lmpzb259WyR7WS5kZWZhdWx0Lmpzb25Qb3N9XWApfWZ1bmN0aW9uIG10KHtnZW46ZSxwYXJzZU5hbWU6dH0scil7ZS5hc3NpZ24oKDAsTC5fKWAke3R9Lm1lc3NhZ2VgLHIpLGUuYXNzaWduKCgwLEwuXylgJHt0fS5wb3NpdGlvbmAsWS5kZWZhdWx0Lmpzb25Qb3MpLGUucmV0dXJuKF9zKX0oZnVuY3Rpb24oZSx0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksdC5Db2RlR2VuPXQuTmFtZT10Lm5pbD10LnN0cmluZ2lmeT10LnN0cj10Ll89dC5LZXl3b3JkQ3h0PXZvaWQgMDtjb25zdCByPXJhLG49dHMscz1mcyxhPWRzLG89bXMsbD0iSlRELW1ldGEtc2NoZW1hIjtjbGFzcyBmIGV4dGVuZHMgci5kZWZhdWx0e2NvbnN0cnVjdG9yKEU9e30pe3N1cGVyKGxlKFEoe30sRSkse2p0ZDohMH0pKX1fYWRkVm9jYWJ1bGFyaWVzKCl7c3VwZXIuX2FkZFZvY2FidWxhcmllcygpLHRoaXMuYWRkVm9jYWJ1bGFyeShuLmRlZmF1bHQpfV9hZGREZWZhdWx0TWV0YVNjaGVtYSgpe3N1cGVyLl9hZGREZWZhdWx0TWV0YVNjaGVtYSgpLHRoaXMub3B0cy5tZXRhJiZ0aGlzLmFkZE1ldGFTY2hlbWEocy5kZWZhdWx0LGwsITEpfWRlZmF1bHRNZXRhKCl7cmV0dXJuIHRoaXMub3B0cy5kZWZhdWx0TWV0YT1zdXBlci5kZWZhdWx0TWV0YSgpfHwodGhpcy5nZXRTY2hlbWEobCk/bDp2b2lkIDApfWNvbXBpbGVTZXJpYWxpemVyKEUpe2NvbnN0IFQ9dGhpcy5fYWRkU2NoZW1hKEUpO3JldHVybiBULnNlcmlhbGl6ZXx8dGhpcy5fY29tcGlsZVNlcmlhbGl6ZXIoVCl9Y29tcGlsZVBhcnNlcihFKXtjb25zdCBUPXRoaXMuX2FkZFNjaGVtYShFKTtyZXR1cm4gVC5wYXJzZXx8dGhpcy5fY29tcGlsZVBhcnNlcihUKX1fY29tcGlsZVNlcmlhbGl6ZXIoRSl7aWYoYS5kZWZhdWx0LmNhbGwodGhpcyxFLEUuc2NoZW1hLmRlZmluaXRpb25zfHx7fSksIUUuc2VyaWFsaXplKXRocm93IG5ldyBFcnJvcigiYWp2IGltcGxlbWVudGF0aW9uIGVycm9yIik7cmV0dXJuIEUuc2VyaWFsaXplfV9jb21waWxlUGFyc2VyKEUpe2lmKG8uZGVmYXVsdC5jYWxsKHRoaXMsRSxFLnNjaGVtYS5kZWZpbml0aW9uc3x8e30pLCFFLnBhcnNlKXRocm93IG5ldyBFcnJvcigiYWp2IGltcGxlbWVudGF0aW9uIGVycm9yIik7cmV0dXJuIEUucGFyc2V9fWUuZXhwb3J0cz10PWYsT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLHQuZGVmYXVsdD1mO3ZhciBwPVdlO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJLZXl3b3JkQ3h0Iix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gcC5LZXl3b3JkQ3h0fX0pO3ZhciBpPXVlO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gaS5ffX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJzdHIiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBpLnN0cn19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCwic3RyaW5naWZ5Iix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gaS5zdHJpbmdpZnl9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIm5pbCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGkubmlsfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJOYW1lIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gaS5OYW1lfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJDb2RlR2VuIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gaS5Db2RlR2VufX0pfSkoem4sem4uZXhwb3J0cyk7dmFyIFNmPWVlJiZlZS5fX2ltcG9ydERlZmF1bHR8fGZ1bmN0aW9uKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX07T2JqZWN0LmRlZmluZVByb3BlcnR5KEl0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxJdC5WYWxpZGF0ZT1JdC5BZGRTY2hlbWE9dm9pZCAwO2NvbnN0IFJmPVNmKHpuLmV4cG9ydHMpLHlvPW5ldyBSZi5kZWZhdWx0LGJmPShlLHQpPT5lKHQpP251bGw6ZS5lcnJvcnM7ZnVuY3Rpb24gT2YoZSx0KXt5by5hZGRTY2hlbWEodCxlKX1JdC5BZGRTY2hlbWE9T2Y7ZnVuY3Rpb24gTmYoZSx0KXtjb25zdCByPXlvLmdldFNjaGVtYShlKTtpZihyKXJldHVybiBiZihyLHQpfUl0LlZhbGlkYXRlPU5mLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShybiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSkscm4uU1RTT3B0aW9uc0Jhc2U9dm9pZCAwO2NvbnN0IFBmPUl0O2NsYXNzIFRme2NvbnN0cnVjdG9yKHQ9bnVsbCl7X3IodGhpcywiX29wdGlvbnMiKTt0aGlzLl9vcHRpb25zPXQsdCE9PW51bGwmJih0eXBlb2YgdC52YWxpZGF0b3I9PSJ1bmRlZmluZWQifHwoMCxQZi5WYWxpZGF0ZSkodC52YWxpZGF0b3IsdCkpfWdldCBvcHRpb25zKCl7cmV0dXJuIHRoaXMuX29wdGlvbnN9fXJuLlNUU09wdGlvbnNCYXNlPVRmO3ZhciBvcj17fTtPYmplY3QuZGVmaW5lUHJvcGVydHkob3IsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLG9yLkplc3RTbGVlcD1vci5TbGVlcD12b2lkIDA7YXN5bmMgZnVuY3Rpb24gJG8oZT0xZTMpe3JldHVybiBuZXcgUHJvbWlzZSh0PT5zZXRUaW1lb3V0KHQsZSkpfW9yLlNsZWVwPSRvO2FzeW5jIGZ1bmN0aW9uIEFmKCl7cmV0dXJuICRvKDEwMCl9b3IuSmVzdFNsZWVwPUFmO3ZhciB3bz17fTsoZnVuY3Rpb24oZSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLGUuY29tcGFyZVBhcmFtZXRlclR5cGVzPWUuT0F1dGgyUGFyYW1ldGVyRXJyb3JUeXBlPWUuT0lEQ0FkZHJlc3NDbGFpbT1lLk9JRENTdGFuZGFyZENsYWltPWUuT0F1dGgyUGFyYW1ldGVyVHlwZT12b2lkIDAsZnVuY3Rpb24obil7bi5BVURJRU5DRT0iQVVESUVOQ0UiLG4uQ0xJRU5UX0lEPSJjbGllbnRfaWQiLG4uQ0xJRU5UX1NFQ1JFVD0iY2xpZW50X3NlY3JldCIsbi5SRVNQT05TRV9UWVBFPSJyZXNwb25zZV90eXBlIixuLlNDT1BFPSJzY29wZSIsbi5TVEFURT0ic3RhdGUiLG4uUkVESVJFQ1RfVVJJPSJyZWRpcmVjdF91cmkiLG4uRVJST1I9ImVycm9yIixuLkVSUk9SX0RFU0NSSVBUSU9OPSJlcnJvcl9kZXNjcmlwdGlvbiIsbi5FUlJPUl9DT0RFUz0iZXJyb3JfY29kZXMiLG4uRVJST1JfVVJJPSJlcnJvcl91cmkiLG4uR1JBTlRfVFlQRT0iZ3JhbnRfdHlwZSIsbi5DT0RFPSJjb2RlIixuLkFDQ0VTU19UT0tFTj0iYWNjZXNzX3Rva2VuIixuLlRPS0VOX1RZUEU9InRva2VuX3R5cGUiLG4uRVhQSVJFU19JTj0iZXhwaXJlc19pbiIsbi5VU0VSTkFNRT0idXNlcm5hbWUiLG4uUEFTU1dPUkQ9InBhc3N3b3JkIixuLlJFRlJFU0hfVE9LRU49InJlZnJlc2hfdG9rZW4iLG4uUkVTUE9OU0VfTU9ERT0icmVzcG9uc2VfbW9kZSIsbi5USU1FU1RBTVA9InRpbWVzdGFtcCIsbi5UUkFDRV9JRD0idHJhY2VfaWQiLG4uQ09SUkVMQVRJT05fSUQ9ImNvcnJlbGF0aW9uX2lkIn0oZS5PQXV0aDJQYXJhbWV0ZXJUeXBlfHwoZS5PQXV0aDJQYXJhbWV0ZXJUeXBlPXt9KSksZnVuY3Rpb24obil7bi5TVUI9InN1YiIsbi5OQU1FPSJuYW1lIixuLkdJVkVOX05BTUU9ImdpdmVuX25hbWUiLG4uRkFNSUxZX05BTUU9ImZhbWlseV9uYW1lIixuLk1JRERMRV9OQU1FPSJtaWRkbGVfbmFtZSIsbi5OSUNLTkFNRT0ibmlja25hbWUiLG4uUFJFRkVSUkVEX1VTRVJOQU1FPSJwcmVmZXJyZWRfdXNlcm5hbWUiLG4uUFJPRklMRT0icHJvZmlsZSIsbi5QSUNUVVJFPSJwaWN0dXJlIixuLldFQlNJVEU9IndlYnNpdGUiLG4uRU1BSUw9ImVtYWlsIixuLkVNQUlMX1ZFUklGSUVEPSJlbWFpbF92ZXJpZmllZCIsbi5HRU5ERVI9ImdlbmRlciIsbi5CSVJUSERBVEU9ImJpcnRoZGF0ZSIsbi5aT05FSU5GTz0iem9uZWluZm8iLG4uTE9DQUxFPSJsb2NhbGUiLG4uUEhPTkVfTlVNQkVSPSJwaG9uZV9udW1iZXIiLG4uUEhPTkVfTlVNQkVSX1ZFUklGSUVEPSJwaG9uZV9udW1iZXJfdmVyaWZpZWQiLG4uQUREUkVTUz0iYWRkcmVzcyIsbi5DTElFTlRfU0VDUkVUPSJjbGllbnRfc2VjcmV0IixuLk5PTkNFPSJub25jZSJ9KGUuT0lEQ1N0YW5kYXJkQ2xhaW18fChlLk9JRENTdGFuZGFyZENsYWltPXt9KSksZnVuY3Rpb24obil7bi5GT1JNQVRURUQ9ImZvcm1hdHRlZCIsbi5TVFJFRVRfQUREUkVTUz0ic3RyZWV0X2FkZHJlc3MiLG4uTE9DQUxJVFk9ImxvY2FsaXR5IixuLlJFR0lPTj0icmVnaW9uIixuLkNPVU5UUlk9ImNvdW50cnkifShlLk9JRENBZGRyZXNzQ2xhaW18fChlLk9JRENBZGRyZXNzQ2xhaW09e30pKTtjbGFzcyB0e31fcih0LCJOT1RfRVFVQUwiLHtjb2RlOiJTVFNfT0FVVEgyX0VSUl8wMDAxIixkZXNjcmlwdGlvbjoiUGFyYW1ldGVyIHZhbHVlcyBub3QgZXF1YWwuIn0pLF9yKHQsIk5PVF9QUkVTRU5UIix7Y29kZToiU1RTX09BVVRIMl9FUlJfMDAwMiIsZGVzY3JpcHRpb246IlBhcmFtZXRlciBub3QgcHJvdmlkZWQuIn0pLF9yKHQsIklOVkFMSURfRk9STUFUIix7Y29kZToiU1RTX09BVVRIMl9FUlJfMDAwMyIsZGVzY3JpcHRpb246IlBhcmFtZXRlciB2YWx1ZSBmb3JtYXQgaW52YWxpZC4ifSksX3IodCwiRVhQSVJFRCIse2NvZGU6IlNUU19PQVVUSDJfRVJSXzAwMDQiLGRlc2NyaXB0aW9uOiJQYXJhbWV0ZXIgdmFsdWUgZXhwaXJlZC4ifSksZS5PQXV0aDJQYXJhbWV0ZXJFcnJvclR5cGU9dDtmdW5jdGlvbiByKG4scyxhKXtjb25zdCBvPVtdO2ZvcihsZXQgbD0wO2w8YS5sZW5ndGg7bCsrKXtjb25zdCBmPWFbbF07aWYobltsXS5sb2NhbGVDb21wYXJlKHNbbF0pIT09MCl7Y29uc3QgcD17ZXJyb3I6dC5OT1RfRVFVQUwuY29kZSxlcnJvcl9kZXNjcmlwdGlvbjp0Lk5PVF9FUVVBTC5kZXNjcmlwdGlvbix0aW1lc3RhbXA6RGF0ZS5ub3coKSxkZXRhaWxzOmAke3QuTk9UX0VRVUFMLmRlc2NyaXB0aW9ufTogUGFyYW1ldGVyOiBbJHtmfV1gfTtvLnB1c2gocCl9fXJldHVybiBvfWUuY29tcGFyZVBhcmFtZXRlclR5cGVzPXJ9KSh3byksZnVuY3Rpb24oZSl7dmFyIHQ9ZWUmJmVlLl9fY3JlYXRlQmluZGluZ3x8KE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24ocyxhLG8sbCl7bD09PXZvaWQgMCYmKGw9byk7dmFyIGY9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihhLG8pOyghZnx8KCJnZXQiaW4gZj8hYS5fX2VzTW9kdWxlOmYud3JpdGFibGV8fGYuY29uZmlndXJhYmxlKSkmJihmPXtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBhW29dfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShzLGwsZil9OmZ1bmN0aW9uKHMsYSxvLGwpe2w9PT12b2lkIDAmJihsPW8pLHNbbF09YVtvXX0pLHI9ZWUmJmVlLl9fZXhwb3J0U3Rhcnx8ZnVuY3Rpb24ocyxhKXtmb3IodmFyIG8gaW4gcylvIT09ImRlZmF1bHQiJiYhT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGEsbykmJnQoYSxzLG8pfTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksZS4kc3RzZ2RmPWUuJHN0c2dkPXZvaWQgMCxyKHRuLGUpLHIocm4sZSkscihvcixlKSxyKEl0LGUpLHIod28sZSksZS4kc3RzZ2Q9e307ZnVuY3Rpb24gbigpe3JldHVybiBlLiRzdHNnZH1lLiRzdHNnZGY9bn0oQ3QpO2NsYXNzIENme2NvbnN0cnVjdG9yKCl7dGhpcy5EaWdlc3RNZXNzYWdlPWFzeW5jIGZ1bmN0aW9uKHQpe2NvbnN0IG49bmV3IFRleHRFbmNvZGVyKCkuZW5jb2RlKHQpLHM9YXdhaXQgY3J5cHRvLnN1YnRsZS5kaWdlc3QoIlNIQS0yNTYiLG4pLGE9QXJyYXkuZnJvbShuZXcgVWludDhBcnJheShzKSk7cmV0dXJuIGJ0b2EoU3RyaW5nLmZyb21DaGFyQ29kZSguLi5hKSl9LHRoaXMuQ3JlYXRlUmFuZG9tU3RyaW5nPSh0PTQzKT0+e2NvbnN0IHI9QXJyYXkuZnJvbShjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKG5ldyBVaW50OEFycmF5KHQpKSk7cmV0dXJuIGJ0b2EoU3RyaW5nLmZyb21DaGFyQ29kZSguLi5yKSl9LHRoaXMuQ3JlYXRlUmFuZG9tU3RyaW5nRXg9KCk9Pntjb25zdCB0PSIwMTIzNDU2Nzg5QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ei1ffi4iO2xldCByPSIiO3JldHVybiBBcnJheS5mcm9tKGNyeXB0by5nZXRSYW5kb21WYWx1ZXMobmV3IFVpbnQ4QXJyYXkoNDMpKSkuZm9yRWFjaChzPT5yKz10W3MldC5sZW5ndGhdKSxyfX19Y2xhc3MgSWZ7Y29uc3RydWN0b3IoKXt0aGlzLkRlY29kZVF1ZXJ5UGFyYW1zPXQ9Pntjb25zdCByPXt9O3JldHVybiBPYmplY3Qua2V5cyh0KS5maWx0ZXIobj0+dHlwZW9mIHRbbl0hPSJ1bmRlZmluZWQiKS5tYXAobj0+e3JbZGVjb2RlVVJJQ29tcG9uZW50KG4pXT1kZWNvZGVVUklDb21wb25lbnQodFtuXSl9KSxyfSx0aGlzLkNyZWF0ZVF1ZXJ5UGFyYW1zPXQ9Pk9iamVjdC5rZXlzKHQpLmZpbHRlcihyPT50eXBlb2YgdFtyXSE9InVuZGVmaW5lZCIpLm1hcChyPT5BcnJheS5pc0FycmF5KHRbcl0pP2VuY29kZVVSSUNvbXBvbmVudChyKSsiPSIrZW5jb2RlVVJJQ29tcG9uZW50KHRbcl0uam9pbigiICIpKTplbmNvZGVVUklDb21wb25lbnQocikrIj0iK2VuY29kZVVSSUNvbXBvbmVudCh0W3JdKSkuam9pbigiJiIpLHRoaXMuX0dldFF1ZXJ5UGFyYW1zPXQ9PntsZXQgcj17fTtjb25zdCBuPXQuc3BsaXQoIj8iKTtpZihuLmxlbmd0aD09Mil7Y29uc3Qgcz1uWzFdLnNwbGl0KCImIiksYT17fTtsZXQgbz0iIjtzLmZvckVhY2goZnVuY3Rpb24obCl7bz1sLnNwbGl0KCI9Iiksby5sZW5ndGg9PTImJihhW29bMF1dPW9bMV0pfSkscj10aGlzLkRlY29kZVF1ZXJ5UGFyYW1zKGEpfXJldHVybiByfSx0aGlzLkdldFF1ZXJ5UGFyYW1zPSgpPT50aGlzLl9HZXRRdWVyeVBhcmFtcyh3aW5kb3cubG9jYXRpb24uaHJlZil9fWZ1bmN0aW9uIFNzKGUpe3RoaXMubWVzc2FnZT1lfVNzLnByb3RvdHlwZT1uZXcgRXJyb3IsU3MucHJvdG90eXBlLm5hbWU9IkludmFsaWRDaGFyYWN0ZXJFcnJvciI7dmFyIFNvPXR5cGVvZiB3aW5kb3chPSJ1bmRlZmluZWQiJiZ3aW5kb3cuYXRvYiYmd2luZG93LmF0b2IuYmluZCh3aW5kb3cpfHxmdW5jdGlvbihlKXt2YXIgdD1TdHJpbmcoZSkucmVwbGFjZSgvPSskLywiIik7aWYodC5sZW5ndGglND09MSl0aHJvdyBuZXcgU3MoIidhdG9iJyBmYWlsZWQ6IFRoZSBzdHJpbmcgdG8gYmUgZGVjb2RlZCBpcyBub3QgY29ycmVjdGx5IGVuY29kZWQuIik7Zm9yKHZhciByLG4scz0wLGE9MCxvPSIiO249dC5jaGFyQXQoYSsrKTt+biYmKHI9cyU0PzY0KnIrbjpuLHMrKyU0KT9vKz1TdHJpbmcuZnJvbUNoYXJDb2RlKDI1NSZyPj4oLTIqcyY2KSk6MCluPSJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvPSIuaW5kZXhPZihuKTtyZXR1cm4gb307ZnVuY3Rpb24gRGYoZSl7dmFyIHQ9ZS5yZXBsYWNlKC8tL2csIisiKS5yZXBsYWNlKC9fL2csIi8iKTtzd2l0Y2godC5sZW5ndGglNCl7Y2FzZSAwOmJyZWFrO2Nhc2UgMjp0Kz0iPT0iO2JyZWFrO2Nhc2UgMzp0Kz0iPSI7YnJlYWs7ZGVmYXVsdDp0aHJvdyJJbGxlZ2FsIGJhc2U2NHVybCBzdHJpbmchIn10cnl7cmV0dXJuIGZ1bmN0aW9uKHIpe3JldHVybiBkZWNvZGVVUklDb21wb25lbnQoU28ocikucmVwbGFjZSgvKC4pL2csZnVuY3Rpb24obixzKXt2YXIgYT1zLmNoYXJDb2RlQXQoMCkudG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKCk7cmV0dXJuIGEubGVuZ3RoPDImJihhPSIwIithKSwiJSIrYX0pKX0odCl9Y2F0Y2h7cmV0dXJuIFNvKHQpfX1mdW5jdGlvbiBnbihlKXt0aGlzLm1lc3NhZ2U9ZX1mdW5jdGlvbiBqZihlLHQpe2lmKHR5cGVvZiBlIT0ic3RyaW5nIil0aHJvdyBuZXcgZ24oIkludmFsaWQgdG9rZW4gc3BlY2lmaWVkIik7dmFyIHI9KHQ9dHx8e30pLmhlYWRlcj09PSEwPzA6MTt0cnl7cmV0dXJuIEpTT04ucGFyc2UoRGYoZS5zcGxpdCgiLiIpW3JdKSl9Y2F0Y2gobil7dGhyb3cgbmV3IGduKCJJbnZhbGlkIHRva2VuIHNwZWNpZmllZDogIituLm1lc3NhZ2UpfX1nbi5wcm90b3R5cGU9bmV3IEVycm9yLGduLnByb3RvdHlwZS5uYW1lPSJJbnZhbGlkVG9rZW5FcnJvciI7dmFyIFByPWVlJiZlZS5fX2Fzc2lnbnx8ZnVuY3Rpb24oKXtyZXR1cm4gUHI9T2JqZWN0LmFzc2lnbnx8ZnVuY3Rpb24oZSl7Zm9yKHZhciB0LHI9MSxuPWFyZ3VtZW50cy5sZW5ndGg7cjxuO3IrKyl7dD1hcmd1bWVudHNbcl07Zm9yKHZhciBzIGluIHQpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQscykmJihlW3NdPXRbc10pfXJldHVybiBlfSxQci5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O2Z1bmN0aW9uIFRyKGUsdCl7aWYoIXQpcmV0dXJuIiI7dmFyIHI9IjsgIitlO3JldHVybiB0PT09ITA/cjpyKyI9Iit0fWZ1bmN0aW9uIGtmKGUpe2lmKHR5cGVvZiBlLmV4cGlyZXM9PSJudW1iZXIiKXt2YXIgdD1uZXcgRGF0ZTt0LnNldE1pbGxpc2Vjb25kcyh0LmdldE1pbGxpc2Vjb25kcygpK2UuZXhwaXJlcyo4NjRlNSksZS5leHBpcmVzPXR9cmV0dXJuIFRyKCJFeHBpcmVzIixlLmV4cGlyZXM/ZS5leHBpcmVzLnRvVVRDU3RyaW5nKCk6IiIpK1RyKCJEb21haW4iLGUuZG9tYWluKStUcigiUGF0aCIsZS5wYXRoKStUcigiU2VjdXJlIixlLnNlY3VyZSkrVHIoIlNhbWVTaXRlIixlLnNhbWVTaXRlKX1mdW5jdGlvbiBVZihlLHQscil7cmV0dXJuIGVuY29kZVVSSUNvbXBvbmVudChlKS5yZXBsYWNlKC8lKDIzfDI0fDI2fDJCfDVFfDYwfDdDKS9nLGRlY29kZVVSSUNvbXBvbmVudCkucmVwbGFjZSgvXCgvZywiJTI4IikucmVwbGFjZSgvXCkvZywiJTI5IikrIj0iK2VuY29kZVVSSUNvbXBvbmVudCh0KS5yZXBsYWNlKC8lKDIzfDI0fDI2fDJCfDNBfDNDfDNFfDNEfDJGfDNGfDQwfDVCfDVEfDVFfDYwfDdCfDdEfDdDKS9nLGRlY29kZVVSSUNvbXBvbmVudCkra2Yocil9ZnVuY3Rpb24gRmYoZSl7Zm9yKHZhciB0PXt9LHI9ZT9lLnNwbGl0KCI7ICIpOltdLG49LyglW1xkQS1GXXsyfSkrL2dpLHM9MDtzPHIubGVuZ3RoO3MrKyl7dmFyIGE9cltzXS5zcGxpdCgiPSIpLG89YS5zbGljZSgxKS5qb2luKCI9Iik7by5jaGFyQXQoMCk9PT0nIicmJihvPW8uc2xpY2UoMSwtMSkpO3RyeXt2YXIgbD1hWzBdLnJlcGxhY2UobixkZWNvZGVVUklDb21wb25lbnQpO3RbbF09by5yZXBsYWNlKG4sZGVjb2RlVVJJQ29tcG9uZW50KX1jYXRjaHt9fXJldHVybiB0fWZ1bmN0aW9uIE1mKCl7cmV0dXJuIEZmKGRvY3VtZW50LmNvb2tpZSl9ZnVuY3Rpb24gTGYoZSl7cmV0dXJuIE1mKClbZV19dmFyIFZmPUxmO2Z1bmN0aW9uIFJvKGUsdCxyKXtkb2N1bWVudC5jb29raWU9VWYoZSx0LFByKHtwYXRoOiIvIn0scikpfXZhciB6Zj1SbztmdW5jdGlvbiBIZihlLHQpe1JvKGUsIiIsUHIoUHIoe30sdCkse2V4cGlyZXM6LTF9KSl9dmFyIEtmPUhmO2NvbnN0IEVuPU5zKGBwcm9jOiR7cHJvY2Vzcy5waWR9OnN0b3JhZ2UudHNgKTt2YXIgYm89KGU9PihlLkxPQ0FMX1NUT1JBR0U9IkxvY2FsU3RvcmFnZSIsZS5TRVNTSU9OX1NUT1JBR0U9IlNlc3Npb25TdG9yYWdlIixlLkNPT0tJRV9TVE9SQUdFPSJDb29raWVTdG9yYWdlIixlLk1FTU9SWV9TVE9SQUdFPSJNZW1vcnlTdG9yYWdlIixlKSkoYm98fHt9KTtjbGFzcyBCZntjb25zdHJ1Y3Rvcigpe3RoaXMuZ2V0PXQ9Pntjb25zdCByPVZmKHQpO3JldHVybiByP0pTT04ucGFyc2Uocik6bnVsbH0sdGhpcy5zZXQ9KHQscixuPXt9KT0+e2xldCBzPXt9O3dpbmRvdy5sb2NhdGlvbi5wcm90b2NvbD09PSJodHRwczoiJiYocz17c2VjdXJlOiEwLHNhbWVTaXRlOiJub25lIn0pLG4mJm4uZGF5c1VudGlsRXhwaXJlP3MuZXhwaXJlcz1uLmRheXNVbnRpbEV4cGlyZTpzLmV4cGlyZXM9MSxFbihgQ29va2llU3RvcmFnZS5zZXQ6IGtleTogJHt0fSwgdmFsdWU6IFske3J9XWApLHpmKHQsSlNPTi5zdHJpbmdpZnkocikscyl9LHRoaXMucmVtb3ZlPXQ9PntLZih0KX19fWNsYXNzIEpme2NvbnN0cnVjdG9yKCl7dGhpcy5nZXQ9dD0+e2NvbnN0IHI9c2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSh0KTtyZXR1cm4gdHlwZW9mIHI9PSJ1bmRlZmluZWQifHxyPT09bnVsbD9udWxsOkpTT04ucGFyc2Uocil9LHRoaXMuc2V0PSh0LHIpPT57RW4oYFNlc3Npb25TdG9yYWdlLnNldDoga2V5OiAke3R9LCB2YWx1ZTogWyR7cn1dYCksc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSh0LEpTT04uc3RyaW5naWZ5KHIpKX0sdGhpcy5yZW1vdmU9dD0+e3Nlc3Npb25TdG9yYWdlLnJlbW92ZUl0ZW0odCl9fX1jbGFzcyBxZntjb25zdHJ1Y3Rvcigpe3RoaXMuZ2V0PXQ9Pntjb25zdCByPWxvY2FsU3RvcmFnZS5nZXRJdGVtKHQpO3JldHVybiB0eXBlb2Ygcj09InVuZGVmaW5lZCJ8fHI9PT1udWxsP251bGw6SlNPTi5wYXJzZShyKX0sdGhpcy5zZXQ9KHQscik9PntFbihgTG9jYWxTdG9yYWdlLnNldDoga2V5OiAke3R9LCB2YWx1ZTogWyR7cn1dYCksbG9jYWxTdG9yYWdlLnNldEl0ZW0odCxKU09OLnN0cmluZ2lmeShyKSl9LHRoaXMucmVtb3ZlPXQ9Pntsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSh0KX19fWNsYXNzIEdme2NvbnN0cnVjdG9yKCl7U2UodGhpcyxIdCx2b2lkIDApO2NlKHRoaXMsSHQse30pLHRoaXMuZ2V0PXQ9Pntjb25zdCByPVYodGhpcyxIdClbdF07cmV0dXJuIHR5cGVvZiByPT0idW5kZWZpbmVkInx8cj09PW51bGw/bnVsbDpyfSx0aGlzLnNldD0odCxyKT0+e0VuKGBNZW1vcnlTdG9yYWdlLnNldDoga2V5OiAke3R9LCB2YWx1ZTogWyR7cn1dYCksVih0aGlzLEh0KVt0XT1yfSx0aGlzLnJlbW92ZT10PT57ZGVsZXRlIFYodGhpcyxIdClbdF19fX1IdD1uZXcgV2Vha01hcDtjbGFzcyBRZntjb25zdHJ1Y3Rvcih0KXtTZSh0aGlzLGJ0LG51bGwpO3N3aXRjaCh0LmNsaWVudFN0b3JhZ2VUeXBlKXtjYXNlIlNlc3Npb25TdG9yYWdlIjpjZSh0aGlzLGJ0LG5ldyBKZik7YnJlYWs7Y2FzZSJMb2NhbFN0b3JhZ2UiOmNlKHRoaXMsYnQsbmV3IHFmKTticmVhaztjYXNlIkNvb2tpZVN0b3JhZ2UiOmNlKHRoaXMsYnQsbmV3IEJmKTticmVhaztjYXNlIk1lbW9yeVN0b3JhZ2UiOmNlKHRoaXMsYnQsbmV3IEdmKTticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcihgVW5rbm93biBbJHt0LmNsaWVudFN0b3JhZ2VUeXBlfV0gc3RvcmFnZSB0eXBlLmApfX1HZXRTdG9yYWdlKCl7cmV0dXJuIFYodGhpcyxidCl9fWJ0PW5ldyBXZWFrTWFwO3ZhciBpcjsoZnVuY3Rpb24oZSl7ZVtlLkFDQ0VQVEVEPTIwMl09IkFDQ0VQVEVEIixlW2UuQkFEX0dBVEVXQVk9NTAyXT0iQkFEX0dBVEVXQVkiLGVbZS5CQURfUkVRVUVTVD00MDBdPSJCQURfUkVRVUVTVCIsZVtlLkNPTkZMSUNUPTQwOV09IkNPTkZMSUNUIixlW2UuQ09OVElOVUU9MTAwXT0iQ09OVElOVUUiLGVbZS5DUkVBVEVEPTIwMV09IkNSRUFURUQiLGVbZS5FWFBFQ1RBVElPTl9GQUlMRUQ9NDE3XT0iRVhQRUNUQVRJT05fRkFJTEVEIixlW2UuRkFJTEVEX0RFUEVOREVOQ1k9NDI0XT0iRkFJTEVEX0RFUEVOREVOQ1kiLGVbZS5GT1JCSURERU49NDAzXT0iRk9SQklEREVOIixlW2UuR0FURVdBWV9USU1FT1VUPTUwNF09IkdBVEVXQVlfVElNRU9VVCIsZVtlLkdPTkU9NDEwXT0iR09ORSIsZVtlLkhUVFBfVkVSU0lPTl9OT1RfU1VQUE9SVEVEPTUwNV09IkhUVFBfVkVSU0lPTl9OT1RfU1VQUE9SVEVEIixlW2UuSU1fQV9URUFQT1Q9NDE4XT0iSU1fQV9URUFQT1QiLGVbZS5JTlNVRkZJQ0lFTlRfU1BBQ0VfT05fUkVTT1VSQ0U9NDE5XT0iSU5TVUZGSUNJRU5UX1NQQUNFX09OX1JFU09VUkNFIixlW2UuSU5TVUZGSUNJRU5UX1NUT1JBR0U9NTA3XT0iSU5TVUZGSUNJRU5UX1NUT1JBR0UiLGVbZS5JTlRFUk5BTF9TRVJWRVJfRVJST1I9NTAwXT0iSU5URVJOQUxfU0VSVkVSX0VSUk9SIixlW2UuTEVOR1RIX1JFUVVJUkVEPTQxMV09IkxFTkdUSF9SRVFVSVJFRCIsZVtlLkxPQ0tFRD00MjNdPSJMT0NLRUQiLGVbZS5NRVRIT0RfRkFJTFVSRT00MjBdPSJNRVRIT0RfRkFJTFVSRSIsZVtlLk1FVEhPRF9OT1RfQUxMT1dFRD00MDVdPSJNRVRIT0RfTk9UX0FMTE9XRUQiLGVbZS5NT1ZFRF9QRVJNQU5FTlRMWT0zMDFdPSJNT1ZFRF9QRVJNQU5FTlRMWSIsZVtlLk1PVkVEX1RFTVBPUkFSSUxZPTMwMl09Ik1PVkVEX1RFTVBPUkFSSUxZIixlW2UuTVVMVElfU1RBVFVTPTIwN109Ik1VTFRJX1NUQVRVUyIsZVtlLk1VTFRJUExFX0NIT0lDRVM9MzAwXT0iTVVMVElQTEVfQ0hPSUNFUyIsZVtlLk5FVFdPUktfQVVUSEVOVElDQVRJT05fUkVRVUlSRUQ9NTExXT0iTkVUV09SS19BVVRIRU5USUNBVElPTl9SRVFVSVJFRCIsZVtlLk5PX0NPTlRFTlQ9MjA0XT0iTk9fQ09OVEVOVCIsZVtlLk5PTl9BVVRIT1JJVEFUSVZFX0lORk9STUFUSU9OPTIwM109Ik5PTl9BVVRIT1JJVEFUSVZFX0lORk9STUFUSU9OIixlW2UuTk9UX0FDQ0VQVEFCTEU9NDA2XT0iTk9UX0FDQ0VQVEFCTEUiLGVbZS5OT1RfRk9VTkQ9NDA0XT0iTk9UX0ZPVU5EIixlW2UuTk9UX0lNUExFTUVOVEVEPTUwMV09Ik5PVF9JTVBMRU1FTlRFRCIsZVtlLk5PVF9NT0RJRklFRD0zMDRdPSJOT1RfTU9ESUZJRUQiLGVbZS5PSz0yMDBdPSJPSyIsZVtlLlBBUlRJQUxfQ09OVEVOVD0yMDZdPSJQQVJUSUFMX0NPTlRFTlQiLGVbZS5QQVlNRU5UX1JFUVVJUkVEPTQwMl09IlBBWU1FTlRfUkVRVUlSRUQiLGVbZS5QRVJNQU5FTlRfUkVESVJFQ1Q9MzA4XT0iUEVSTUFORU5UX1JFRElSRUNUIixlW2UuUFJFQ09ORElUSU9OX0ZBSUxFRD00MTJdPSJQUkVDT05ESVRJT05fRkFJTEVEIixlW2UuUFJFQ09ORElUSU9OX1JFUVVJUkVEPTQyOF09IlBSRUNPTkRJVElPTl9SRVFVSVJFRCIsZVtlLlBST0NFU1NJTkc9MTAyXT0iUFJPQ0VTU0lORyIsZVtlLlBST1hZX0FVVEhFTlRJQ0FUSU9OX1JFUVVJUkVEPTQwN109IlBST1hZX0FVVEhFTlRJQ0FUSU9OX1JFUVVJUkVEIixlW2UuUkVRVUVTVF9IRUFERVJfRklFTERTX1RPT19MQVJHRT00MzFdPSJSRVFVRVNUX0hFQURFUl9GSUVMRFNfVE9PX0xBUkdFIixlW2UuUkVRVUVTVF9USU1FT1VUPTQwOF09IlJFUVVFU1RfVElNRU9VVCIsZVtlLlJFUVVFU1RfVE9PX0xPTkc9NDEzXT0iUkVRVUVTVF9UT09fTE9ORyIsZVtlLlJFUVVFU1RfVVJJX1RPT19MT05HPTQxNF09IlJFUVVFU1RfVVJJX1RPT19MT05HIixlW2UuUkVRVUVTVEVEX1JBTkdFX05PVF9TQVRJU0ZJQUJMRT00MTZdPSJSRVFVRVNURURfUkFOR0VfTk9UX1NBVElTRklBQkxFIixlW2UuUkVTRVRfQ09OVEVOVD0yMDVdPSJSRVNFVF9DT05URU5UIixlW2UuU0VFX09USEVSPTMwM109IlNFRV9PVEhFUiIsZVtlLlNFUlZJQ0VfVU5BVkFJTEFCTEU9NTAzXT0iU0VSVklDRV9VTkFWQUlMQUJMRSIsZVtlLlNXSVRDSElOR19QUk9UT0NPTFM9MTAxXT0iU1dJVENISU5HX1BST1RPQ09MUyIsZVtlLlRFTVBPUkFSWV9SRURJUkVDVD0zMDddPSJURU1QT1JBUllfUkVESVJFQ1QiLGVbZS5UT09fTUFOWV9SRVFVRVNUUz00MjldPSJUT09fTUFOWV9SRVFVRVNUUyIsZVtlLlVOQVVUSE9SSVpFRD00MDFdPSJVTkFVVEhPUklaRUQiLGVbZS5VTkFWQUlMQUJMRV9GT1JfTEVHQUxfUkVBU09OUz00NTFdPSJVTkFWQUlMQUJMRV9GT1JfTEVHQUxfUkVBU09OUyIsZVtlLlVOUFJPQ0VTU0FCTEVfRU5USVRZPTQyMl09IlVOUFJPQ0VTU0FCTEVfRU5USVRZIixlW2UuVU5TVVBQT1JURURfTUVESUFfVFlQRT00MTVdPSJVTlNVUFBPUlRFRF9NRURJQV9UWVBFIixlW2UuVVNFX1BST1hZPTMwNV09IlVTRV9QUk9YWSIsZVtlLk1JU0RJUkVDVEVEX1JFUVVFU1Q9NDIxXT0iTUlTRElSRUNURURfUkVRVUVTVCJ9KShpcnx8KGlyPXt9KSk7dmFyIE9vPShlPT4oZS5DT0RFPSJjb2RlIixlLklEX1RPS0VOPSJpZF90b2tlbiIsZS5UT0tFTj0idG9rZW4iLGUpKShPb3x8e30pLE5vPShlPT4oZS5RVUVSWT0icXVlcnkiLGUuRlJBR01FTlQ9ImZyYWdtZW50IixlLkZPUk1fUE9TVD0iZm9ybV9wb3N0IixlKSkoTm98fHt9KSxScz0oZT0+KGUuQ0xJRU5UX0NSRURFTlRJQUxTPSJjbGllbnRfY3JlZGVudGlhbHMiLGUuQVVUSE9SSVpBVElPTl9DT0RFPSJhdXRob3JpemF0aW9uX2NvZGUiLGUuUkVGUkVTSF9UT0tFTj0icmVmcmVzaF90b2tlbiIsZSkpKFJzfHx7fSksenQ9KGU9PihlLlJFU1RPUkVfU0VTU0lPTj0iUmVzdG9yZVNlc3Npb24iLGUuQVVUSE9SSVpFPSJBdXRob3JpemUiLGUuSEFORExFX1JFRElSRUNUPSJIYW5kbGVSZWRpcmVjdCIsZS5MT0dPVVQ9IkxvZ291dCIsZS5BVVRIRU5USUNBVEVfRVZFTlQ9IkF1dGhlbnRpY2F0ZUV2ZW50IixlLkVSUk9SPSJFcnJvciIsZSkpKHp0fHx7fSk7TnMoYHByb2M6JHtwcm9jZXNzLnBpZH06c3Rzb2F1dGgyd29ya2VyLnRzYCk7Y2xhc3MgWWZ7Y29uc3RydWN0b3IodCl7U2UodGhpcyxGZSx2b2lkIDApO1NlKHRoaXMsT3Qsdm9pZCAwKTtTZSh0aGlzLEFyLHZvaWQgMCk7U2UodGhpcyx5bix2b2lkIDApO1NlKHRoaXMsSGUsdm9pZCAwKTtTZSh0aGlzLHZ0LHZvaWQgMCk7U2UodGhpcyxOdCx2b2lkIDApO1NlKHRoaXMsS2Usdm9pZCAwKTtTZSh0aGlzLEt0LHZvaWQgMCk7U2UodGhpcywkbix2b2lkIDApO1NlKHRoaXMsdHQsdm9pZCAwKTtTZSh0aGlzLENyLHZvaWQgMCk7U2UodGhpcyxJcix2b2lkIDApO1NlKHRoaXMsRHIsdm9pZCAwKTtTZSh0aGlzLGNyLHZvaWQgMCk7U2UodGhpcyxqcix2b2lkIDApO1NlKHRoaXMsa3Isdm9pZCAwKTtTZSh0aGlzLFVyLHZvaWQgMCk7Y2UodGhpcyxGZSxudWxsKSxjZSh0aGlzLE90LG5ldyBDZiksY2UodGhpcyxBcixuZXcgSWYpLGNlKHRoaXMseW4sImF1dGhvcml6ZV9vcHRpb25zLnN0c21kYS5jb20uYXUiKSxjZSh0aGlzLEhlLCJzZXNzaW9uLnN0c21kYS5jb20uYXUiKSxjZSh0aGlzLHZ0LG51bGwpLGNlKHRoaXMsTnQsbnVsbCksY2UodGhpcyxLZSxudWxsKSxjZSh0aGlzLEt0LG51bGwpLGNlKHRoaXMsJG4sMCksdGhpcy5TZXR1cExpc3RlbmVyPSgpPT57Vih0aGlzLEt0KS5vbm1lc3NhZ2U9YXN5bmMgcj0+e2NvbnN0IG49ci5kYXRhO3N3aXRjaChuLmNvbW1hbmQpe2Nhc2UgenQuUkVTVE9SRV9TRVNTSU9OOlYodGhpcyx0dCkuY2FsbCh0aGlzLG4sYXdhaXQgVih0aGlzLENyKS5jYWxsKHRoaXMpKTticmVhaztjYXNlIHp0LkFVVEhPUklaRTpWKHRoaXMsdHQpLmNhbGwodGhpcyxuLGF3YWl0IFYodGhpcyxJcikuY2FsbCh0aGlzKSk7YnJlYWs7Y2FzZSB6dC5IQU5ETEVfUkVESVJFQ1Q6Vih0aGlzLHR0KS5jYWxsKHRoaXMsbixhd2FpdCBWKHRoaXMsRHIpLmNhbGwodGhpcyxuLnBheWxvYWQpKTticmVhaztjYXNlIHp0LkxPR09VVDpWKHRoaXMsdHQpLmNhbGwodGhpcyxuLGF3YWl0IFYodGhpcyxVcikuY2FsbCh0aGlzKSk7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoYENvbW1hbmQ6IFske24uY29tbWFuZH0nXSBub3QgZm91bmQuYCl9fX0sY2UodGhpcyx0dCxhc3luYyhyLG4pPT57Y29uc3Qgcz17bWVzc2FnZUlkOnIubWVzc2FnZUlkLGNvbW1hbmQ6ci5jb21tYW5kLHBheWxvYWQ6bn07Vih0aGlzLEt0KS5wb3N0TWVzc2FnZShzKX0pLGNlKHRoaXMsQ3IsYXN5bmMoKT0+e2xldCByPW51bGw7aWYocj1WKHRoaXMsRmUpLmdldChWKHRoaXMsSGUpKSxyIT09bnVsbCljb25zb2xlLmxvZygiU2Vzc2lvbiByZXN0b3JlZCBmcm9tIGNsaWVudCBzdG9yYWdlLiIpLFYodGhpcyx2dCkmJlYodGhpcyx2dCkuVXBkYXRlSW5zdHJ1bWVudCgibSIse0xvZ01lc3NhZ2U6IlNlc3Npb24gcmVzdG9yZWQgZnJvbSBjbGllbnQgc3RvcmFnZS4ifSk7ZWxzZXtjb25zdCBuPWAke3t9LkJST0tFUl9FTkRQT0lOVH06JHt7fS5CUk9LRVJfUE9SVH0ke3t9LkJST0tFUl9BUElfUk9PVH0vc2Vzc2lvbmA7Y29uc29sZS5sb2coIlJlc3RvcmVTZXNzaW9uIiksY29uc29sZS5sb2cobiksVih0aGlzLHZ0KSYmKFYodGhpcyx2dCkuVXBkYXRlSW5zdHJ1bWVudCgibSIse0xvZ01lc3NhZ2U6IlJlc3RvcmVTZXNzaW9uIn0pLFYodGhpcyx2dCkuVXBkYXRlSW5zdHJ1bWVudCgibSIse0xvZ01lc3NhZ2U6bn0pKTt0cnl7Y29uc3Qgcz1hd2FpdCBWbih7bWV0aG9kOiJwb3N0Iix1cmw6bixkYXRhOntbQ3QuT0F1dGgyUGFyYW1ldGVyVHlwZS5DTElFTlRfSURdOnt9LkNMSUVOVF9JRCxbQ3QuT0F1dGgyUGFyYW1ldGVyVHlwZS5TQ09QRV06e30uU0NPUEUsW0N0Lk9BdXRoMlBhcmFtZXRlclR5cGUuUkVESVJFQ1RfVVJJXTp7fS5SRURJUkVDVF9VUkksW0N0Lk9BdXRoMlBhcmFtZXRlclR5cGUuQVVESUVOQ0VdOnt9LkFVRElFTkNFfSx3aXRoQ3JlZGVudGlhbHM6ITAsdGltZW91dDpwYXJzZUludCh7fS5USU1FT1VUKX0pO3MuZGF0YS5zdGF0dXM9PT1pci5PSz8ocj1zLmRhdGEuZGV0YWlsLFYodGhpcyxGZSkuc2V0KFYodGhpcyxIZSksciksY29uc29sZS5sb2coIlNlc3Npb24gcmVzdG9yZWQgZnJvbSBzZXJ2ZXIgc2lkZSBjb29raWUuIikpOihjb25zb2xlLmxvZygiQ291bGQgbm90IHJlc3RvcmUgcHJldmlvdXMgc2Vzc2lvbjotIiksY29uc29sZS5sb2coSlNPTi5zdHJpbmdpZnkocy5kYXRhKSkpfWNhdGNoKHMpe2NvbnNvbGUubG9nKCJDb3VsZCBub3QgcmVzdG9yZSBwcmV2aW91cyBzZXNzaW9uIChlcnJvciBzdGF0ZSk6LSIpLGNvbnNvbGUubG9nKHMpLGNvbnNvbGUubG9nKEpTT04uc3RyaW5naWZ5KHMpKX19cmV0dXJuIHIhPT1udWxsPyhWKHRoaXMsS2UpLmNhbGwodGhpcyxyLmlkX3Rva2VuKSxjb25zb2xlLmxvZygiUmVmcmVzaGluZyB0b2tlbnMgLi4uIiksVih0aGlzLGtyKS5jYWxsKHRoaXMpKTooVih0aGlzLEtlKS5jYWxsKHRoaXMsbnVsbCksITEpfSksY2UodGhpcyxJcixhc3luYygpPT57Y29uc29sZS5sb2coIkF1dGhvcml6ZSAuLi4iKTtjb25zdCByPXt9LkNMSUVOVF9JRCxuPVYodGhpcyxPdCkuQ3JlYXRlUmFuZG9tU3RyaW5nKCkscz1bT28uQ09ERV0sYT17fS5SRURJUkVDVF9VUkksbz1Oby5RVUVSWSxsPXt9LlNDT1BFLGY9Vih0aGlzLE90KS5DcmVhdGVSYW5kb21TdHJpbmcoKSxwPVYodGhpcyxPdCkuQ3JlYXRlUmFuZG9tU3RyaW5nKCksaT1hd2FpdCBWKHRoaXMsT3QpLkRpZ2VzdE1lc3NhZ2UocCksRT17Y2xpZW50X2lkOnIsbm9uY2U6bixyZXNwb25zZV90eXBlOnMscmVkaXJlY3RfdXJpOmEscmVzcG9uc2VfbW9kZTpvLHNjb3BlOmwsc3RhdGU6Zixjb2RlX2NoYWxsZW5nZTppLGNvZGVfY2hhbGxlbmdlX21ldGhvZDoiUzI1NiJ9LFQ9YCR7e30uQVVUSF9FTkRQT0lOVH06JHt7fS5BVVRIX1BPUlR9JHt7fS5BVVRIX0FQSVJPT1R9PyR7Vih0aGlzLEFyKS5DcmVhdGVRdWVyeVBhcmFtcyhFKX1gO3JldHVybiBjb25zb2xlLmxvZyhUKSxFLmNvZGVfdmVyaWZpZXI9cCxjb25zb2xlLmxvZyhgQXV0aG9yaXplOmF1dGhvcml6ZU9wdGlvbnM6IFske0pTT04uc3RyaW5naWZ5KEUpfV1gKSx7dXJsOlQsYXV0aG9yaXplT3B0aW9uczpFfX0pLGNlKHRoaXMsRHIsYXN5bmMgcj0+e2NvbnN0IG49ci5xdWVyeVZhcnMscz1yLmF1dGhvcml6ZU9wdGlvbnM7aWYoY29uc29sZS5sb2coIkhhbmRsZVJlZGlyZWN0IiksY29uc29sZS5sb2coYEhhbmRsZVJlZGlyZWN0OlF1ZXJ5IFZhcnM6IFske0pTT04uc3RyaW5naWZ5KG4pfV1gKSxuW0N0Lk9BdXRoMlBhcmFtZXRlclR5cGUuQ09ERV0pe2NvbnN0IGE9bjtjb25zb2xlLmxvZyhgYXV0aG9yaXplT3B0aW9ucyBmcm9tIHRyYW5zYWN0aW9uIHN0YXRlOiBbJHtKU09OLnN0cmluZ2lmeShzKX1dYCk7Y29uc3Qgbz1hLnN0YXRlO3JldHVybiBzLnN0YXRlLmxvY2FsZUNvbXBhcmUobyk9PT0wPyhjb25zb2xlLmxvZygicmVkaXJlY3RlZCBzdGF0ZSAoZnJvbSBxdWVyeVZhcnMpIG1hdGNoZWQgcHJldmlvdXNseSBzYXZlZCB0cmFuc2FjdGlvbiBhdXRob3JpemVPcHRpb25zIHN0YXRlIiksYXdhaXQgVih0aGlzLGpyKS5jYWxsKHRoaXMscyxhKSk6KGNvbnNvbGUubG9nKCJyZWRpcmVjdGVkIHN0YXRlIChmcm9tIHF1ZXJ5VmFycykgZGlkIE5PVCBtYXRjaCBwcmV2aW91c2x5IHNhdmVkIHRyYW5zYWN0aW9uIGF1dGhvcml6ZU9wdGlvbnMgc3RhdGUiKSxWKHRoaXMsTnQpLmNhbGwodGhpcyx7bWVzc2FnZToiU3RhdGUgdW4tbWF0Y2hlZCJ9KSwhMSl9ZWxzZSBpZihuW0N0Lk9BdXRoMlBhcmFtZXRlclR5cGUuRVJST1JdKXtjb25zdCBhPW47cmV0dXJuIGEuZXJyb3IsYS5lcnJvcl9kZXNjcmlwdGlvbixWKHRoaXMsTnQpLmNhbGwodGhpcyx7bWVzc2FnZToiU3RhdGUgdW4tbWF0Y2hlZCJ9KSwhMX1lbHNlIHJldHVybiBWKHRoaXMsTnQpLmNhbGwodGhpcyx7bWVzc2FnZToiU3RhdGUgdW4tbWF0Y2hlZCJ9KSwhMX0pLGNlKHRoaXMsY3IsYXN5bmMgcj0+e2NvbnNvbGUubG9nKCIjR2V0VG9rZW5Gcm9tQnJva2VyIiksVih0aGlzLEZlKS5yZW1vdmUoVih0aGlzLEhlKSk7Y29uc3Qgbj1gJHt7fS5CUk9LRVJfRU5EUE9JTlR9OiR7e30uQlJPS0VSX1BPUlR9JHt7fS5CUk9LRVJfQVBJX1JPT1R9L3Rva2VuYDtjb25zb2xlLmxvZyhgI0dldFRva2VuRnJvbUJyb2tlcjp1cmwgPSBbJHtufV1gKSxjb25zb2xlLmxvZyhyKTt0cnl7Y29uc3Qgcz1hd2FpdCBWbih7bWV0aG9kOiJwb3N0Iix1cmw6bixkYXRhOnIsd2l0aENyZWRlbnRpYWxzOiEwLHRpbWVvdXQ6cGFyc2VJbnQoe30uVElNRU9VVCl9KTtpZihjb25zb2xlLmxvZyhgcmV0VmFsOiAke0pTT04uc3RyaW5naWZ5KHMpfWApLHMuc3RhdHVzPT09aXIuT0spe2NvbnNvbGUubG9nKCJTdG9yaW5nIHRva2Vucy4uLiIpO2NvbnN0IGE9cy5kYXRhO3JldHVybiBWKHRoaXMsS2UpLmNhbGwodGhpcyxhLmlkX3Rva2VuKSxWKHRoaXMsRmUpLnNldChWKHRoaXMsSGUpLGEpLCEwfWVsc2UgaWYocy5zdGF0dXM9PT1pci5VTkFVVEhPUklaRUQpe2NvbnNvbGUubG9nKCJOT1QgU3RvcmluZyB0b2tlbnMuLi4iKSxjb25zb2xlLmxvZyhzLnN0YXR1cyksVih0aGlzLEtlKS5jYWxsKHRoaXMsbnVsbCk7Y29uc3QgYT1zLmRhdGE7cmV0dXJuITF9ZWxzZSByZXR1cm4gY29uc29sZS5sb2coIk5PVCBTdG9yaW5nIHRva2Vucy4uLiIpLGNvbnNvbGUubG9nKHMuc3RhdHVzKSxWKHRoaXMsS2UpLmNhbGwodGhpcyxudWxsKSxjb25zb2xlLmxvZygiQ291bGQgbm90IG9idGFpbiBhY2Nlc3NfdG9rZW4gZnJvbSB0b2tlbiBlbmQtcG9pbnQ6LSIpLGNvbnNvbGUubG9nKEpTT04uc3RyaW5naWZ5KHMuZGF0YSkpLCExfWNhdGNoKHMpe3JldHVybiBWKHRoaXMsS2UpLmNhbGwodGhpcyxudWxsKSxjb25zb2xlLmxvZyhzKSxjb25zb2xlLmxvZyhKU09OLnN0cmluZ2lmeShzKSksITF9fSksY2UodGhpcyxqcixhc3luYyhyLG4pPT57Y29uc29sZS5sb2coIiNHZXRUb2tlbiIpLGNvbnNvbGUubG9nKG4pLFYodGhpcyxGZSkuc2V0KFYodGhpcyxIZSksbnVsbCk7Y29uc3Qgcz17Y2xpZW50X2lkOnt9LkNMSUVOVF9JRCxzY29wZTp7fS5TQ09QRSxjb2RlOm4uY29kZSxyZWRpcmVjdF91cmk6e30uUkVESVJFQ1RfVVJJLGdyYW50X3R5cGU6UnMuQVVUSE9SSVpBVElPTl9DT0RFLGNvZGVfdmVyaWZpZXI6ci5jb2RlX3ZlcmlmaWVyfTtyZXR1cm4gVih0aGlzLGNyKS5jYWxsKHRoaXMscyl9KSxjZSh0aGlzLGtyLGFzeW5jKCk9Pntjb25zb2xlLmxvZygiUmVmcmVzaFRva2VuIik7Y29uc3Qgcj1WKHRoaXMsRmUpLmdldChWKHRoaXMsSGUpKTtpZihyKXtjb25zdCBuPXtjbGllbnRfaWQ6e30uQ0xJRU5UX0lELHNjb3BlOnt9LlNDT1BFLHJlZnJlc2hfdG9rZW46ci5yZWZyZXNoX3Rva2VuLGdyYW50X3R5cGU6UnMuUkVGUkVTSF9UT0tFTn07cmV0dXJuIFYodGhpcyxjcikuY2FsbCh0aGlzLG4pfWVsc2UgcmV0dXJuITF9KSxjZSh0aGlzLFVyLGFzeW5jKCk9Pntjb25zb2xlLmxvZygiTG9nb3V0Iik7Y29uc3Qgcj1gJHt7fS5CUk9LRVJfRU5EUE9JTlR9OiR7e30uQlJPS0VSX1BPUlR9JHt7fS5CUk9LRVJfQVBJX1JPT1R9L2xvZ291dGA7Y29uc29sZS5sb2cocik7Y29uc3Qgcz1WKHRoaXMsRmUpLmdldChWKHRoaXMsSGUpKS5yZWZyZXNoX3Rva2VuO2NvbnNvbGUubG9nKHMpO2NvbnN0IGE9amYocyk7Y29uc29sZS5sb2coYSk7Y29uc3Qgbz1hLnN0c19zZXNzaW9uO2NvbnNvbGUubG9nKG8pLFYodGhpcyxGZSkucmVtb3ZlKFYodGhpcyxIZSkpLFYodGhpcyxLZSkuY2FsbCh0aGlzLG51bGwpO3RyeXtjb25zdCBsPWF3YWl0IFZuKHttZXRob2Q6InBvc3QiLHVybDpyLGRhdGE6e3Nlc3Npb25JZDpvfSx3aXRoQ3JlZGVudGlhbHM6ITAsdGltZW91dDpwYXJzZUludCh7fS5USU1FT1VUKX0pO3JldHVybiBsLmRhdGEuc3RhdHVzPT09aXIuT0s/ITA6KGNvbnNvbGUubG9nKCJFcnJvciBkdXJpbmcgbG9nb3V0IChzZXJ2ZXIgc2lkZSkiKSxjb25zb2xlLmxvZyhKU09OLnN0cmluZ2lmeShsLmRhdGEpKSwhMSl9Y2F0Y2gobCl7cmV0dXJuIGNvbnNvbGUubG9nKCJFcnJvciBkdXJpbmcgbG9nb3V0IChzZXJ2ZXIgc2lkZSkiKSxjb25zb2xlLmxvZyhsKSxjb25zb2xlLmxvZyhKU09OLnN0cmluZ2lmeShsKSksITF9fSksY2UodGhpcyxGZSxuZXcgUWYoe2NsaWVudFN0b3JhZ2VUeXBlOmJvLk1FTU9SWV9TVE9SQUdFfSkuR2V0U3RvcmFnZSgpKSxjZSh0aGlzLEtlLHI9Pntjb25zdCBuPXttZXNzYWdlSWQ6LTEsY29tbWFuZDp6dC5BVVRIRU5USUNBVEVfRVZFTlR9O1YodGhpcyx0dCkuY2FsbCh0aGlzLG4scil9KSxjZSh0aGlzLE50LHI9Pntjb25zdCBuPXttZXNzYWdlSWQ6LTEsY29tbWFuZDp6dC5FUlJPUn07Vih0aGlzLHR0KS5jYWxsKHRoaXMsbixyKX0pLGNlKHRoaXMsS3QsdCksdGhpcy5TZXR1cExpc3RlbmVyKCl9fUZlPW5ldyBXZWFrTWFwLE90PW5ldyBXZWFrTWFwLEFyPW5ldyBXZWFrTWFwLHluPW5ldyBXZWFrTWFwLEhlPW5ldyBXZWFrTWFwLHZ0PW5ldyBXZWFrTWFwLE50PW5ldyBXZWFrTWFwLEtlPW5ldyBXZWFrTWFwLEt0PW5ldyBXZWFrTWFwLCRuPW5ldyBXZWFrTWFwLHR0PW5ldyBXZWFrTWFwLENyPW5ldyBXZWFrTWFwLElyPW5ldyBXZWFrTWFwLERyPW5ldyBXZWFrTWFwLGNyPW5ldyBXZWFrTWFwLGpyPW5ldyBXZWFrTWFwLGtyPW5ldyBXZWFrTWFwLFVyPW5ldyBXZWFrTWFwLG9ubWVzc2FnZT1hc3luYyBmdW5jdGlvbihlKXtjb25zdCB0PWUuZGF0YTtuZXcgWWYodCl9fSkoKTsK";
7204
+ const encodedJs = "dmFyIGlkPU9iamVjdC5kZWZpbmVQcm9wZXJ0eSxhZD1PYmplY3QuZGVmaW5lUHJvcGVydGllczt2YXIgdWQ9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM7dmFyIFhpPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHM7dmFyIF9kPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksbGQ9T2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZTt2YXIgSHQ9KGVlLHNlLGFlKT0+c2UgaW4gZWU/aWQoZWUsc2Use2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOmFlfSk6ZWVbc2VdPWFlLFk9KGVlLHNlKT0+e2Zvcih2YXIgYWUgaW4gc2V8fChzZT17fSkpX2QuY2FsbChzZSxhZSkmJkh0KGVlLGFlLHNlW2FlXSk7aWYoWGkpZm9yKHZhciBhZSBvZiBYaShzZSkpbGQuY2FsbChzZSxhZSkmJkh0KGVlLGFlLHNlW2FlXSk7cmV0dXJuIGVlfSxsZT0oZWUsc2UpPT5hZChlZSx1ZChzZSkpO3ZhciBScj0oZWUsc2UsYWUpPT4oSHQoZWUsdHlwZW9mIHNlIT0ic3ltYm9sIj9zZSsiIjpzZSxhZSksYWUpLCRpPShlZSxzZSxhZSk9PntpZighc2UuaGFzKGVlKSl0aHJvdyBUeXBlRXJyb3IoIkNhbm5vdCAiK2FlKX07dmFyIFg9KGVlLHNlLGFlKT0+KCRpKGVlLHNlLCJyZWFkIGZyb20gcHJpdmF0ZSBmaWVsZCIpLGFlP2FlLmNhbGwoZWUpOnNlLmdldChlZSkpLEllPShlZSxzZSxhZSk9PntpZihzZS5oYXMoZWUpKXRocm93IFR5cGVFcnJvcigiQ2Fubm90IGFkZCB0aGUgc2FtZSBwcml2YXRlIG1lbWJlciBtb3JlIHRoYW4gb25jZSIpO3NlIGluc3RhbmNlb2YgV2Vha1NldD9zZS5hZGQoZWUpOnNlLnNldChlZSxhZSl9LHVlPShlZSxzZSxhZSxfbik9PigkaShlZSxzZSwid3JpdGUgdG8gcHJpdmF0ZSBmaWVsZCIpLF9uP19uLmNhbGwoZWUsYWUpOnNlLnNldChlZSxhZSksYWUpOyhmdW5jdGlvbigpe3ZhciB4bixVbixCZSxIbixQcixObyxqZSxmbix2bix4ZSxGbixnbyxubix3cixHcixDcixfcix5cixMcixCcjsidXNlIHN0cmljdCI7dmFyIGVlPXR5cGVvZiBnbG9iYWxUaGlzIT0idW5kZWZpbmVkIj9nbG9iYWxUaGlzOnR5cGVvZiB3aW5kb3chPSJ1bmRlZmluZWQiP3dpbmRvdzp0eXBlb2YgZ2xvYmFsIT0idW5kZWZpbmVkIj9nbG9iYWw6dHlwZW9mIHNlbGYhPSJ1bmRlZmluZWQiP3NlbGY6e30sc2U9e2V4cG9ydHM6e319LGFlPTFlMyxfbj1hZSo2MCxKbj1fbio2MCxTbj1KbioyNCxqaT1Tbio3LHhpPVNuKjM2NS4yNSxGaT1mdW5jdGlvbihlLG4pe249bnx8e307dmFyIHI9dHlwZW9mIGU7aWYocj09PSJzdHJpbmciJiZlLmxlbmd0aD4wKXJldHVybiBWaShlKTtpZihyPT09Im51bWJlciImJmlzRmluaXRlKGUpKXJldHVybiBuLmxvbmc/V2koZSk6S2koZSk7dGhyb3cgbmV3IEVycm9yKCJ2YWwgaXMgbm90IGEgbm9uLWVtcHR5IHN0cmluZyBvciBhIHZhbGlkIG51bWJlci4gdmFsPSIrSlNPTi5zdHJpbmdpZnkoZSkpfTtmdW5jdGlvbiBWaShlKXtpZihlPVN0cmluZyhlKSwhKGUubGVuZ3RoPjEwMCkpe3ZhciBuPS9eKC0/KD86XGQrKT9cLj9cZCspICoobWlsbGlzZWNvbmRzP3xtc2Vjcz98bXN8c2Vjb25kcz98c2Vjcz98c3xtaW51dGVzP3xtaW5zP3xtfGhvdXJzP3xocnM/fGh8ZGF5cz98ZHx3ZWVrcz98d3x5ZWFycz98eXJzP3x5KT8kL2kuZXhlYyhlKTtpZighIW4pe3ZhciByPXBhcnNlRmxvYXQoblsxXSksbz0oblsyXXx8Im1zIikudG9Mb3dlckNhc2UoKTtzd2l0Y2gobyl7Y2FzZSJ5ZWFycyI6Y2FzZSJ5ZWFyIjpjYXNlInlycyI6Y2FzZSJ5ciI6Y2FzZSJ5IjpyZXR1cm4gcip4aTtjYXNlIndlZWtzIjpjYXNlIndlZWsiOmNhc2UidyI6cmV0dXJuIHIqamk7Y2FzZSJkYXlzIjpjYXNlImRheSI6Y2FzZSJkIjpyZXR1cm4gcipTbjtjYXNlImhvdXJzIjpjYXNlImhvdXIiOmNhc2UiaHJzIjpjYXNlImhyIjpjYXNlImgiOnJldHVybiByKkpuO2Nhc2UibWludXRlcyI6Y2FzZSJtaW51dGUiOmNhc2UibWlucyI6Y2FzZSJtaW4iOmNhc2UibSI6cmV0dXJuIHIqX247Y2FzZSJzZWNvbmRzIjpjYXNlInNlY29uZCI6Y2FzZSJzZWNzIjpjYXNlInNlYyI6Y2FzZSJzIjpyZXR1cm4gciphZTtjYXNlIm1pbGxpc2Vjb25kcyI6Y2FzZSJtaWxsaXNlY29uZCI6Y2FzZSJtc2VjcyI6Y2FzZSJtc2VjIjpjYXNlIm1zIjpyZXR1cm4gcjtkZWZhdWx0OnJldHVybn19fX1mdW5jdGlvbiBLaShlKXt2YXIgbj1NYXRoLmFicyhlKTtyZXR1cm4gbj49U24/TWF0aC5yb3VuZChlL1NuKSsiZCI6bj49Sm4/TWF0aC5yb3VuZChlL0puKSsiaCI6bj49X24/TWF0aC5yb3VuZChlL19uKSsibSI6bj49YWU/TWF0aC5yb3VuZChlL2FlKSsicyI6ZSsibXMifWZ1bmN0aW9uIFdpKGUpe3ZhciBuPU1hdGguYWJzKGUpO3JldHVybiBuPj1Tbj9XcihlLG4sU24sImRheSIpOm4+PUpuP1dyKGUsbixKbiwiaG91ciIpOm4+PV9uP1dyKGUsbixfbiwibWludXRlIik6bj49YWU/V3IoZSxuLGFlLCJzZWNvbmQiKTplKyIgbXMifWZ1bmN0aW9uIFdyKGUsbixyLG8pe3ZhciB0PW4+PXIqMS41O3JldHVybiBNYXRoLnJvdW5kKGUvcikrIiAiK28rKHQ/InMiOiIiKX1mdW5jdGlvbiBZaShlKXtyLmRlYnVnPXIsci5kZWZhdWx0PXIsci5jb2VyY2U9YyxyLmRpc2FibGU9cyxyLmVuYWJsZT10LHIuZW5hYmxlZD1pLHIuaHVtYW5pemU9Rmksci5kZXN0cm95PW0sT2JqZWN0LmtleXMoZSkuZm9yRWFjaChhPT57clthXT1lW2FdfSksci5uYW1lcz1bXSxyLnNraXBzPVtdLHIuZm9ybWF0dGVycz17fTtmdW5jdGlvbiBuKGEpe2xldCBoPTA7Zm9yKGxldCBPPTA7TzxhLmxlbmd0aDtPKyspaD0oaDw8NSktaCthLmNoYXJDb2RlQXQoTyksaHw9MDtyZXR1cm4gci5jb2xvcnNbTWF0aC5hYnMoaCklci5jb2xvcnMubGVuZ3RoXX1yLnNlbGVjdENvbG9yPW47ZnVuY3Rpb24gcihhKXtsZXQgaCxPPW51bGwsRCx3O2Z1bmN0aW9uIEMoLi4uVCl7aWYoIUMuZW5hYmxlZClyZXR1cm47Y29uc3QgZj1DLEE9TnVtYmVyKG5ldyBEYXRlKSxVPUEtKGh8fEEpO2YuZGlmZj1VLGYucHJldj1oLGYuY3Vycj1BLGg9QSxUWzBdPXIuY29lcmNlKFRbMF0pLHR5cGVvZiBUWzBdIT0ic3RyaW5nIiYmVC51bnNoaWZ0KCIlTyIpO2xldCBTPTA7VFswXT1UWzBdLnJlcGxhY2UoLyUoW2EtekEtWiVdKS9nLChOLEgpPT57aWYoTj09PSIlJSIpcmV0dXJuIiUiO1MrKztjb25zdCBHPXIuZm9ybWF0dGVyc1tIXTtpZih0eXBlb2YgRz09ImZ1bmN0aW9uIil7Y29uc3QgRj1UW1NdO049Ry5jYWxsKGYsRiksVC5zcGxpY2UoUywxKSxTLS19cmV0dXJuIE59KSxyLmZvcm1hdEFyZ3MuY2FsbChmLFQpLChmLmxvZ3x8ci5sb2cpLmFwcGx5KGYsVCl9cmV0dXJuIEMubmFtZXNwYWNlPWEsQy51c2VDb2xvcnM9ci51c2VDb2xvcnMoKSxDLmNvbG9yPXIuc2VsZWN0Q29sb3IoYSksQy5leHRlbmQ9byxDLmRlc3Ryb3k9ci5kZXN0cm95LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShDLCJlbmFibGVkIix7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITEsZ2V0OigpPT5PIT09bnVsbD9POihEIT09ci5uYW1lc3BhY2VzJiYoRD1yLm5hbWVzcGFjZXMsdz1yLmVuYWJsZWQoYSkpLHcpLHNldDpUPT57Tz1UfX0pLHR5cGVvZiByLmluaXQ9PSJmdW5jdGlvbiImJnIuaW5pdChDKSxDfWZ1bmN0aW9uIG8oYSxoKXtjb25zdCBPPXIodGhpcy5uYW1lc3BhY2UrKHR5cGVvZiBoPT0idW5kZWZpbmVkIj8iOiI6aCkrYSk7cmV0dXJuIE8ubG9nPXRoaXMubG9nLE99ZnVuY3Rpb24gdChhKXtyLnNhdmUoYSksci5uYW1lc3BhY2VzPWEsci5uYW1lcz1bXSxyLnNraXBzPVtdO2xldCBoO2NvbnN0IE89KHR5cGVvZiBhPT0ic3RyaW5nIj9hOiIiKS5zcGxpdCgvW1xzLF0rLyksRD1PLmxlbmd0aDtmb3IoaD0wO2g8RDtoKyspIU9baF18fChhPU9baF0ucmVwbGFjZSgvXCovZywiLio/IiksYVswXT09PSItIj9yLnNraXBzLnB1c2gobmV3IFJlZ0V4cCgiXiIrYS5zbGljZSgxKSsiJCIpKTpyLm5hbWVzLnB1c2gobmV3IFJlZ0V4cCgiXiIrYSsiJCIpKSl9ZnVuY3Rpb24gcygpe2NvbnN0IGE9Wy4uLnIubmFtZXMubWFwKGwpLC4uLnIuc2tpcHMubWFwKGwpLm1hcChoPT4iLSIraCldLmpvaW4oIiwiKTtyZXR1cm4gci5lbmFibGUoIiIpLGF9ZnVuY3Rpb24gaShhKXtpZihhW2EubGVuZ3RoLTFdPT09IioiKXJldHVybiEwO2xldCBoLE87Zm9yKGg9MCxPPXIuc2tpcHMubGVuZ3RoO2g8TztoKyspaWYoci5za2lwc1toXS50ZXN0KGEpKXJldHVybiExO2ZvcihoPTAsTz1yLm5hbWVzLmxlbmd0aDtoPE87aCsrKWlmKHIubmFtZXNbaF0udGVzdChhKSlyZXR1cm4hMDtyZXR1cm4hMX1mdW5jdGlvbiBsKGEpe3JldHVybiBhLnRvU3RyaW5nKCkuc3Vic3RyaW5nKDIsYS50b1N0cmluZygpLmxlbmd0aC0yKS5yZXBsYWNlKC9cLlwqXD8kLywiKiIpfWZ1bmN0aW9uIGMoYSl7cmV0dXJuIGEgaW5zdGFuY2VvZiBFcnJvcj9hLnN0YWNrfHxhLm1lc3NhZ2U6YX1mdW5jdGlvbiBtKCl7Y29uc29sZS53YXJuKCJJbnN0YW5jZSBtZXRob2QgYGRlYnVnLmRlc3Ryb3koKWAgaXMgZGVwcmVjYXRlZCBhbmQgbm8gbG9uZ2VyIGRvZXMgYW55dGhpbmcuIEl0IHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgbmV4dCBtYWpvciB2ZXJzaW9uIG9mIGBkZWJ1Z2AuIil9cmV0dXJuIHIuZW5hYmxlKHIubG9hZCgpKSxyfXZhciBKaT1ZaTsoZnVuY3Rpb24oZSxuKXtuLmZvcm1hdEFyZ3M9byxuLnNhdmU9dCxuLmxvYWQ9cyxuLnVzZUNvbG9ycz1yLG4uc3RvcmFnZT1pKCksbi5kZXN0cm95PSgoKT0+e2xldCBjPSExO3JldHVybigpPT57Y3x8KGM9ITAsY29uc29sZS53YXJuKCJJbnN0YW5jZSBtZXRob2QgYGRlYnVnLmRlc3Ryb3koKWAgaXMgZGVwcmVjYXRlZCBhbmQgbm8gbG9uZ2VyIGRvZXMgYW55dGhpbmcuIEl0IHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgbmV4dCBtYWpvciB2ZXJzaW9uIG9mIGBkZWJ1Z2AuIikpfX0pKCksbi5jb2xvcnM9WyIjMDAwMENDIiwiIzAwMDBGRiIsIiMwMDMzQ0MiLCIjMDAzM0ZGIiwiIzAwNjZDQyIsIiMwMDY2RkYiLCIjMDA5OUNDIiwiIzAwOTlGRiIsIiMwMENDMDAiLCIjMDBDQzMzIiwiIzAwQ0M2NiIsIiMwMENDOTkiLCIjMDBDQ0NDIiwiIzAwQ0NGRiIsIiMzMzAwQ0MiLCIjMzMwMEZGIiwiIzMzMzNDQyIsIiMzMzMzRkYiLCIjMzM2NkNDIiwiIzMzNjZGRiIsIiMzMzk5Q0MiLCIjMzM5OUZGIiwiIzMzQ0MwMCIsIiMzM0NDMzMiLCIjMzNDQzY2IiwiIzMzQ0M5OSIsIiMzM0NDQ0MiLCIjMzNDQ0ZGIiwiIzY2MDBDQyIsIiM2NjAwRkYiLCIjNjYzM0NDIiwiIzY2MzNGRiIsIiM2NkNDMDAiLCIjNjZDQzMzIiwiIzk5MDBDQyIsIiM5OTAwRkYiLCIjOTkzM0NDIiwiIzk5MzNGRiIsIiM5OUNDMDAiLCIjOTlDQzMzIiwiI0NDMDAwMCIsIiNDQzAwMzMiLCIjQ0MwMDY2IiwiI0NDMDA5OSIsIiNDQzAwQ0MiLCIjQ0MwMEZGIiwiI0NDMzMwMCIsIiNDQzMzMzMiLCIjQ0MzMzY2IiwiI0NDMzM5OSIsIiNDQzMzQ0MiLCIjQ0MzM0ZGIiwiI0NDNjYwMCIsIiNDQzY2MzMiLCIjQ0M5OTAwIiwiI0NDOTkzMyIsIiNDQ0NDMDAiLCIjQ0NDQzMzIiwiI0ZGMDAwMCIsIiNGRjAwMzMiLCIjRkYwMDY2IiwiI0ZGMDA5OSIsIiNGRjAwQ0MiLCIjRkYwMEZGIiwiI0ZGMzMwMCIsIiNGRjMzMzMiLCIjRkYzMzY2IiwiI0ZGMzM5OSIsIiNGRjMzQ0MiLCIjRkYzM0ZGIiwiI0ZGNjYwMCIsIiNGRjY2MzMiLCIjRkY5OTAwIiwiI0ZGOTkzMyIsIiNGRkNDMDAiLCIjRkZDQzMzIl07ZnVuY3Rpb24gcigpe3JldHVybiB0eXBlb2Ygd2luZG93IT0idW5kZWZpbmVkIiYmd2luZG93LnByb2Nlc3MmJih3aW5kb3cucHJvY2Vzcy50eXBlPT09InJlbmRlcmVyInx8d2luZG93LnByb2Nlc3MuX19ud2pzKT8hMDp0eXBlb2YgbmF2aWdhdG9yIT0idW5kZWZpbmVkIiYmbmF2aWdhdG9yLnVzZXJBZ2VudCYmbmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpLm1hdGNoKC8oZWRnZXx0cmlkZW50KVwvKFxkKykvKT8hMTp0eXBlb2YgZG9jdW1lbnQhPSJ1bmRlZmluZWQiJiZkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQmJmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZSYmZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLldlYmtpdEFwcGVhcmFuY2V8fHR5cGVvZiB3aW5kb3chPSJ1bmRlZmluZWQiJiZ3aW5kb3cuY29uc29sZSYmKHdpbmRvdy5jb25zb2xlLmZpcmVidWd8fHdpbmRvdy5jb25zb2xlLmV4Y2VwdGlvbiYmd2luZG93LmNvbnNvbGUudGFibGUpfHx0eXBlb2YgbmF2aWdhdG9yIT0idW5kZWZpbmVkIiYmbmF2aWdhdG9yLnVzZXJBZ2VudCYmbmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpLm1hdGNoKC9maXJlZm94XC8oXGQrKS8pJiZwYXJzZUludChSZWdFeHAuJDEsMTApPj0zMXx8dHlwZW9mIG5hdmlnYXRvciE9InVuZGVmaW5lZCImJm5hdmlnYXRvci51c2VyQWdlbnQmJm5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKS5tYXRjaCgvYXBwbGV3ZWJraXRcLyhcZCspLyl9ZnVuY3Rpb24gbyhjKXtpZihjWzBdPSh0aGlzLnVzZUNvbG9ycz8iJWMiOiIiKSt0aGlzLm5hbWVzcGFjZSsodGhpcy51c2VDb2xvcnM/IiAlYyI6IiAiKStjWzBdKyh0aGlzLnVzZUNvbG9ycz8iJWMgIjoiICIpKyIrIitlLmV4cG9ydHMuaHVtYW5pemUodGhpcy5kaWZmKSwhdGhpcy51c2VDb2xvcnMpcmV0dXJuO2NvbnN0IG09ImNvbG9yOiAiK3RoaXMuY29sb3I7Yy5zcGxpY2UoMSwwLG0sImNvbG9yOiBpbmhlcml0Iik7bGV0IGE9MCxoPTA7Y1swXS5yZXBsYWNlKC8lW2EtekEtWiVdL2csTz0+e08hPT0iJSUiJiYoYSsrLE89PT0iJWMiJiYoaD1hKSl9KSxjLnNwbGljZShoLDAsbSl9bi5sb2c9Y29uc29sZS5kZWJ1Z3x8Y29uc29sZS5sb2d8fCgoKT0+e30pO2Z1bmN0aW9uIHQoYyl7dHJ5e2M/bi5zdG9yYWdlLnNldEl0ZW0oImRlYnVnIixjKTpuLnN0b3JhZ2UucmVtb3ZlSXRlbSgiZGVidWciKX1jYXRjaHt9fWZ1bmN0aW9uIHMoKXtsZXQgYzt0cnl7Yz1uLnN0b3JhZ2UuZ2V0SXRlbSgiZGVidWciKX1jYXRjaHt9cmV0dXJuIWMmJnR5cGVvZiBwcm9jZXNzIT0idW5kZWZpbmVkIiYmImVudiJpbiBwcm9jZXNzJiYoYz17REVQTE9ZTUVOVF9CQVNFUEFUSDoiL29wdC9ydW5uZXIiLERPVE5FVF9OT0xPR086IjEiLFVTRVI6InJ1bm5lciIsbnBtX2NvbmZpZ19hbHdheXNfYXV0aDoiIixucG1fY29uZmlnX3VzZXJfYWdlbnQ6Im5wbS84LjExLjAgbm9kZS92MTguMy4wIGxpbnV4IHg2NCB3b3Jrc3BhY2VzL2ZhbHNlIGNpL2dpdGh1Yi1hY3Rpb25zIixDSToidHJ1ZSIsR0lUSFVCX0VOVjoiL2hvbWUvcnVubmVyL3dvcmsvX3RlbXAvX3J1bm5lcl9maWxlX2NvbW1hbmRzL3NldF9lbnZfNWM0ZjZmMTgtMTY2NS00NjM4LWI0MjAtYmNkMDJmNjY1ODEwIixQSVBYX0hPTUU6Ii9vcHQvcGlweCIsbnBtX25vZGVfZXhlY3BhdGg6Ii9vcHQvaG9zdGVkdG9vbGNhY2hlL25vZGUvMTguMy4wL3g2NC9iaW4vbm9kZSIsSkFWQV9IT01FXzhfWDY0OiIvdXNyL2xpYi9qdm0vdGVtdXJpbi04LWpkay1hbWQ2NCIsTk9ERV9BVVRIX1RPS0VOOiJYWFhYWC1YWFhYWC1YWFhYWC1YWFhYWCIsU0hMVkw6IjEiLG5wbV9jb25maWdfbm9wcm94eToiIixIT01FOiIvaG9tZS9ydW5uZXIiLFJVTk5FUl9URU1QOiIvaG9tZS9ydW5uZXIvd29yay9fdGVtcCIsR0lUSFVCX0VWRU5UX1BBVEg6Ii9ob21lL3J1bm5lci93b3JrL190ZW1wL19naXRodWJfd29ya2Zsb3cvZXZlbnQuanNvbiIsbnBtX3BhY2thZ2VfanNvbjoiL2hvbWUvcnVubmVyL3dvcmsvc3Rzb2F1dGgycGx1Z2luL3N0c29hdXRoMnBsdWdpbi9wYWNrYWdlLmpzb24iLEpBVkFfSE9NRV8xMV9YNjQ6Ii91c3IvbGliL2p2bS90ZW11cmluLTExLWpkay1hbWQ2NCIsUElQWF9CSU5fRElSOiIvb3B0L3BpcHhfYmluIixHUkFBTFZNXzExX1JPT1Q6Ii91c3IvbG9jYWwvZ3JhYWx2bS9ncmFhbHZtLWNlLWphdmExMS0yMi4xLjAiLEdJVEhVQl9SRVBPU0lUT1JZX09XTkVSOiJuc3NodW50IixHUkFETEVfSE9NRToiL3Vzci9zaGFyZS9ncmFkbGUtNy40LjIiLEhPTUVCUkVXX1BSRUZJWDoiL2hvbWUvbGludXhicmV3Ly5saW51eGJyZXciLEFORFJPSURfTkRLX0xBVEVTVF9IT01FOiIvdXNyL2xvY2FsL2xpYi9hbmRyb2lkL3Nkay9uZGsvMjQuMC44MjE1ODg4IixHSVRIVUJfUkVURU5USU9OX0RBWVM6IjkwIixQT1dFUlNIRUxMX0RJU1RSSUJVVElPTl9DSEFOTkVMOiJHaXRIdWItQWN0aW9ucy11YnVudHUyMCIsQVpVUkVfRVhURU5TSU9OX0RJUjoiL29wdC9hei9hemNsaWV4dGVuc2lvbnMiLEdJVEhVQl9IRUFEX1JFRjoiIixucG1fY29uZmlnX2xvY2FsX3ByZWZpeDoiL2hvbWUvcnVubmVyL3dvcmsvc3Rzb2F1dGgycGx1Z2luL3N0c29hdXRoMnBsdWdpbiIsR0lUSFVCX0dSQVBIUUxfVVJMOiJodHRwczovL2FwaS5naXRodWIuY29tL2dyYXBocWwiLENPTE9SOiIwIixOVk1fRElSOiIvaG9tZS9ydW5uZXIvLm52bSIsbnBtX2NvbmZpZ19tZXRyaWNzX3JlZ2lzdHJ5OiJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy8iLERPVE5FVF9TS0lQX0ZJUlNUX1RJTUVfRVhQRVJJRU5DRToiMSIsSkFWQV9IT01FXzE3X1g2NDoiL3Vzci9saWIvanZtL3RlbXVyaW4tMTctamRrLWFtZDY0IixJbWFnZVZlcnNpb246IjIwMjIwNjA1LjEiLFJVTk5FUl9PUzoiTGludXgiLEdJVEhVQl9BUElfVVJMOiJodHRwczovL2FwaS5naXRodWIuY29tIixTV0lGVF9QQVRIOiIvdXNyL3NoYXJlL3N3aWZ0L3Vzci9iaW4iLFJVTk5FUl9VU0VSOiJydW5uZXIiLENIUk9NRVdFQkRSSVZFUjoiL3Vzci9sb2NhbC9zaGFyZS9jaHJvbWVfZHJpdmVyIixKT1VSTkFMX1NUUkVBTToiODoyMTgzNCIsR0lUSFVCX1dPUktGTE9XOiJOb2RlLmpzIFBhY2thZ2UiLF86Ii9vcHQvaG9zdGVkdG9vbGNhY2hlL25vZGUvMTguMy4wL3g2NC9iaW4vbnBtIixucG1fY29uZmlnX3ByZWZpeDoiL29wdC9ob3N0ZWR0b29sY2FjaGUvbm9kZS8xOC4zLjAveDY0IixHSVRIVUJfUlVOX0lEOiIyNDgzNTA2MDM1IixHT1JPT1RfMV8xNl9YNjQ6Ii9vcHQvaG9zdGVkdG9vbGNhY2hlL2dvLzEuMTYuMTUveDY0IixucG1fY29uZmlnX2NhY2hlOiIvaG9tZS9ydW5uZXIvLm5wbSIsR09ST09UXzFfMTdfWDY0OiIvb3B0L2hvc3RlZHRvb2xjYWNoZS9nby8xLjE3LjExL3g2NCIsR0lUSFVCX1JFRl9UWVBFOiJicmFuY2giLEJPT1RTVFJBUF9IQVNLRUxMX05PTklOVEVSQUNUSVZFOiIxIixHSVRIVUJfQkFTRV9SRUY6IiIsSW1hZ2VPUzoidWJ1bnR1MjAiLFBFUkZMT0dfTE9DQVRJT05fU0VUVElORzoiUlVOTkVSX1BFUkZMT0ciLEdPUk9PVF8xXzE4X1g2NDoiL29wdC9ob3N0ZWR0b29sY2FjaGUvZ28vMS4xOC4zL3g2NCIsR0lUSFVCX0FDVElPTl9SRVBPU0lUT1JZOiIiLG5wbV9jb25maWdfbm9kZV9neXA6Ii9vcHQvaG9zdGVkdG9vbGNhY2hlL25vZGUvMTguMy4wL3g2NC9saWIvbm9kZV9tb2R1bGVzL25wbS9ub2RlX21vZHVsZXMvbm9kZS1neXAvYmluL25vZGUtZ3lwLmpzIixQQVRIOiIvaG9tZS9ydW5uZXIvd29yay9zdHNvYXV0aDJwbHVnaW4vc3Rzb2F1dGgycGx1Z2luL25vZGVfbW9kdWxlcy8uYmluOi9ob21lL3J1bm5lci93b3JrL3N0c29hdXRoMnBsdWdpbi9ub2RlX21vZHVsZXMvLmJpbjovaG9tZS9ydW5uZXIvd29yay9ub2RlX21vZHVsZXMvLmJpbjovaG9tZS9ydW5uZXIvbm9kZV9tb2R1bGVzLy5iaW46L2hvbWUvbm9kZV9tb2R1bGVzLy5iaW46L25vZGVfbW9kdWxlcy8uYmluOi9vcHQvaG9zdGVkdG9vbGNhY2hlL25vZGUvMTguMy4wL3g2NC9saWIvbm9kZV9tb2R1bGVzL25wbS9ub2RlX21vZHVsZXMvQG5wbWNsaS9ydW4tc2NyaXB0L2xpYi9ub2RlLWd5cC1iaW46L29wdC9ob3N0ZWR0b29sY2FjaGUvbm9kZS8xOC4zLjAveDY0L2JpbjovaG9tZS9saW51eGJyZXcvLmxpbnV4YnJldy9iaW46L2hvbWUvbGludXhicmV3Ly5saW51eGJyZXcvc2JpbjovaG9tZS9ydW5uZXIvLmxvY2FsL2Jpbjovb3B0L3BpcHhfYmluOi9ob21lL3J1bm5lci8uY2FyZ28vYmluOi9ob21lL3J1bm5lci8uY29uZmlnL2NvbXBvc2VyL3ZlbmRvci9iaW46L3Vzci9sb2NhbC8uZ2hjdXAvYmluOi9ob21lL3J1bm5lci8uZG90bmV0L3Rvb2xzOi9zbmFwL2JpbjovdXNyL2xvY2FsL3NiaW46L3Vzci9sb2NhbC9iaW46L3Vzci9zYmluOi91c3IvYmluOi9zYmluOi9iaW46L3Vzci9nYW1lczovdXNyL2xvY2FsL2dhbWVzOi9zbmFwL2JpbiIsQU5UX0hPTUU6Ii91c3Ivc2hhcmUvYW50IixET1RORVRfTVVMVElMRVZFTF9MT09LVVA6IjAiLFJVTk5FUl9UUkFDS0lOR19JRDoiZ2l0aHViXzllMGE1YzdhLTk3OGYtNGZjZS1iZTlmLTE1OTdhNDVkM2Y4ZCIsSU5WT0NBVElPTl9JRDoiODIzMTUwNDBmNmNiNGIxODkxYjg3NTUwNzVkYmU3NDkiLEhPTUVCUkVXX0NFTExBUjoiL2hvbWUvbGludXhicmV3Ly5saW51eGJyZXcvQ2VsbGFyIixOUE1fQ09ORklHX1VTRVJDT05GSUc6Ii9ob21lL3J1bm5lci93b3JrL190ZW1wLy5ucG1yYyIsUlVOTkVSX1RPT0xfQ0FDSEU6Ii9vcHQvaG9zdGVkdG9vbGNhY2hlIixOT0RFOiIvb3B0L2hvc3RlZHRvb2xjYWNoZS9ub2RlLzE4LjMuMC94NjQvYmluL25vZGUiLG5wbV9wYWNrYWdlX25hbWU6IkBuc3NodW50L3N0c29hdXRoMnBsdWdpbiIsR0lUSFVCX0FDVElPTjoiX19ydW5fMiIsR0lUSFVCX1JVTl9OVU1CRVI6IjI0IixSVU5ORVJfQVJDSDoiWDY0IixBR0VOVF9UT09MU0RJUkVDVE9SWToiL29wdC9ob3N0ZWR0b29sY2FjaGUiLExBTkc6IkMuVVRGLTgiLFZDUEtHX0lOU1RBTExBVElPTl9ST09UOiIvdXNyL2xvY2FsL3NoYXJlL3ZjcGtnIixDT05EQToiL3Vzci9zaGFyZS9taW5pY29uZGEiLFJVTk5FUl9OQU1FOiJIb3N0ZWQgQWdlbnQiLFhER19DT05GSUdfSE9NRToiL2hvbWUvcnVubmVyLy5jb25maWciLEdJVEhVQl9SRUZfTkFNRToibWFpbiIsR0lUSFVCX1JFUE9TSVRPUlk6Im5zc2h1bnQvc3Rzb2F1dGgycGx1Z2luIixucG1fbGlmZWN5Y2xlX3NjcmlwdDoidml0ZSBidWlsZCIsQU5EUk9JRF9OREtfUk9PVDoiL3Vzci9sb2NhbC9saWIvYW5kcm9pZC9zZGsvbmRrLWJ1bmRsZSIsR0lUSFVCX0FDVElPTl9SRUY6IiIsREVCSUFOX0ZST05URU5EOiJub25pbnRlcmFjdGl2ZSIsR0lUSFVCX0FDVElPTlM6InRydWUiLG5wbV9wYWNrYWdlX3ZlcnNpb246IjAuMS4xMyIsbnBtX2xpZmVjeWNsZV9ldmVudDoiYnVpbGQiLEdJVEhVQl9SRUZfUFJPVEVDVEVEOiJmYWxzZSIsR0lUSFVCX1dPUktTUEFDRToiL2hvbWUvcnVubmVyL3dvcmsvc3Rzb2F1dGgycGx1Z2luL3N0c29hdXRoMnBsdWdpbiIsQUNDRVBUX0VVTEE6IlkiLEdJVEhVQl9KT0I6InB1Ymxpc2gtbnBtIixSVU5ORVJfUEVSRkxPRzoiL2hvbWUvcnVubmVyL3BlcmZsb2ciLEdJVEhVQl9TSEE6ImY2NTk4ZDE4ODYxYzYwODRhMzAyNDNjOWQ2YTlkMDIwMGUxZjllOTYiLEdJVEhVQl9SVU5fQVRURU1QVDoiMSIsR0lUSFVCX1JFRjoicmVmcy9oZWFkcy9tYWluIixHSVRIVUJfQUNUT1I6Im5zc2h1bnQiLEFORFJPSURfU0RLX1JPT1Q6Ii91c3IvbG9jYWwvbGliL2FuZHJvaWQvc2RrIixMRUlOX0hPTUU6Ii91c3IvbG9jYWwvbGliL2xlaW4iLG5wbV9jb25maWdfZ2xvYmFsY29uZmlnOiIvb3B0L2hvc3RlZHRvb2xjYWNoZS9ub2RlLzE4LjMuMC94NjQvZXRjL25wbXJjIixucG1fY29uZmlnX2luaXRfbW9kdWxlOiIvaG9tZS9ydW5uZXIvLm5wbS1pbml0LmpzIixHSVRIVUJfUEFUSDoiL2hvbWUvcnVubmVyL3dvcmsvX3RlbXAvX3J1bm5lcl9maWxlX2NvbW1hbmRzL2FkZF9wYXRoXzVjNGY2ZjE4LTE2NjUtNDYzOC1iNDIwLWJjZDAyZjY2NTgxMCIsSkFWQV9IT01FOiIvdXNyL2xpYi9qdm0vdGVtdXJpbi0xMS1qZGstYW1kNjQiLFBXRDoiL2hvbWUvcnVubmVyL3dvcmsvc3Rzb2F1dGgycGx1Z2luL3N0c29hdXRoMnBsdWdpbiIsUlVOTkVSX1dPUktTUEFDRToiL2hvbWUvcnVubmVyL3dvcmsvc3Rzb2F1dGgycGx1Z2luIixucG1fZXhlY3BhdGg6Ii9vcHQvaG9zdGVkdG9vbGNhY2hlL25vZGUvMTguMy4wL3g2NC9saWIvbm9kZV9tb2R1bGVzL25wbS9iaW4vbnBtLWNsaS5qcyIsSE9NRUJSRVdfQ0xFQU5VUF9QRVJJT0RJQ19GVUxMX0RBWVM6IjM2NTAiLEdJVEhVQl9FVkVOVF9OQU1FOiJwdXNoIixIT01FQlJFV19OT19BVVRPX1VQREFURToiMSIsQU5EUk9JRF9IT01FOiIvdXNyL2xvY2FsL2xpYi9hbmRyb2lkL3NkayIsR0lUSFVCX1NFUlZFUl9VUkw6Imh0dHBzOi8vZ2l0aHViLmNvbSIsR0VDS09XRUJEUklWRVI6Ii91c3IvbG9jYWwvc2hhcmUvZ2Vja29fZHJpdmVyIixMRUlOX0pBUjoiL3Vzci9sb2NhbC9saWIvbGVpbi9zZWxmLWluc3RhbGxzL2xlaW5pbmdlbi0yLjkuOC1zdGFuZGFsb25lLmphciIsbnBtX2NvbmZpZ19nbG9iYWxfcHJlZml4OiIvb3B0L2hvc3RlZHRvb2xjYWNoZS9ub2RlLzE4LjMuMC94NjQiLEhPTUVCUkVXX1JFUE9TSVRPUlk6Ii9ob21lL2xpbnV4YnJldy8ubGludXhicmV3L0hvbWVicmV3IixucG1fY29tbWFuZDoicnVuLXNjcmlwdCIsU0dYX0FFU01fQUREUjoiMSIsQ0hST01FX0JJTjoiL3Vzci9iaW4vZ29vZ2xlLWNocm9tZSIsU0VMRU5JVU1fSkFSX1BBVEg6Ii91c3Ivc2hhcmUvamF2YS9zZWxlbml1bS1zZXJ2ZXIuamFyIixBTkRST0lEX05ES19IT01FOiIvdXNyL2xvY2FsL2xpYi9hbmRyb2lkL3Nkay9uZGstYnVuZGxlIixHSVRIVUJfU1RFUF9TVU1NQVJZOiIvaG9tZS9ydW5uZXIvd29yay9fdGVtcC9fcnVubmVyX2ZpbGVfY29tbWFuZHMvc3RlcF9zdW1tYXJ5XzVjNGY2ZjE4LTE2NjUtNDYzOC1iNDIwLWJjZDAyZjY2NTgxMCIsSU5JVF9DV0Q6Ii9ob21lL3J1bm5lci93b3JrL3N0c29hdXRoMnBsdWdpbi9zdHNvYXV0aDJwbHVnaW4iLEVESVRPUjoidmkiLE5PREVfRU5WOiJwcm9kdWN0aW9uIn0uREVCVUcpLGN9ZnVuY3Rpb24gaSgpe3RyeXtyZXR1cm4gbG9jYWxTdG9yYWdlfWNhdGNoe319ZS5leHBvcnRzPUppKG4pO2NvbnN0e2Zvcm1hdHRlcnM6bH09ZS5leHBvcnRzO2wuaj1mdW5jdGlvbihjKXt0cnl7cmV0dXJuIEpTT04uc3RyaW5naWZ5KGMpfWNhdGNoKG0pe3JldHVybiJbVW5leHBlY3RlZEpTT05QYXJzZUVycm9yXTogIittLm1lc3NhZ2V9fX0pKHNlLHNlLmV4cG9ydHMpO3ZhciB2dD1zZS5leHBvcnRzLEhvPXtleHBvcnRzOnt9fSxEdD1mdW5jdGlvbihuLHIpe3JldHVybiBmdW5jdGlvbigpe2Zvcih2YXIgdD1uZXcgQXJyYXkoYXJndW1lbnRzLmxlbmd0aCkscz0wO3M8dC5sZW5ndGg7cysrKXRbc109YXJndW1lbnRzW3NdO3JldHVybiBuLmFwcGx5KHIsdCl9fSx6aT1EdCx2bz1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLERvPWZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbihuKXt2YXIgcj12by5jYWxsKG4pO3JldHVybiBlW3JdfHwoZVtyXT1yLnNsaWNlKDgsLTEpLnRvTG93ZXJDYXNlKCkpfX0oT2JqZWN0LmNyZWF0ZShudWxsKSk7ZnVuY3Rpb24gUG4oZSl7cmV0dXJuIGU9ZS50b0xvd2VyQ2FzZSgpLGZ1bmN0aW9uKHIpe3JldHVybiBEbyhyKT09PWV9fWZ1bmN0aW9uIFNvKGUpe3JldHVybiBBcnJheS5pc0FycmF5KGUpfWZ1bmN0aW9uIFlyKGUpe3JldHVybiB0eXBlb2YgZT09InVuZGVmaW5lZCJ9ZnVuY3Rpb24gcWkoZSl7cmV0dXJuIGUhPT1udWxsJiYhWXIoZSkmJmUuY29uc3RydWN0b3IhPT1udWxsJiYhWXIoZS5jb25zdHJ1Y3RvcikmJnR5cGVvZiBlLmNvbnN0cnVjdG9yLmlzQnVmZmVyPT0iZnVuY3Rpb24iJiZlLmNvbnN0cnVjdG9yLmlzQnVmZmVyKGUpfXZhciBTdD1QbigiQXJyYXlCdWZmZXIiKTtmdW5jdGlvbiBRaShlKXt2YXIgbjtyZXR1cm4gdHlwZW9mIEFycmF5QnVmZmVyIT0idW5kZWZpbmVkIiYmQXJyYXlCdWZmZXIuaXNWaWV3P249QXJyYXlCdWZmZXIuaXNWaWV3KGUpOm49ZSYmZS5idWZmZXImJlN0KGUuYnVmZmVyKSxufWZ1bmN0aW9uIFppKGUpe3JldHVybiB0eXBlb2YgZT09InN0cmluZyJ9ZnVuY3Rpb24gZWEoZSl7cmV0dXJuIHR5cGVvZiBlPT0ibnVtYmVyIn1mdW5jdGlvbiBQdChlKXtyZXR1cm4gZSE9PW51bGwmJnR5cGVvZiBlPT0ib2JqZWN0In1mdW5jdGlvbiBKcihlKXtpZihEbyhlKSE9PSJvYmplY3QiKXJldHVybiExO3ZhciBuPU9iamVjdC5nZXRQcm90b3R5cGVPZihlKTtyZXR1cm4gbj09PW51bGx8fG49PT1PYmplY3QucHJvdG90eXBlfXZhciBuYT1QbigiRGF0ZSIpLHJhPVBuKCJGaWxlIiksb2E9UG4oIkJsb2IiKSx0YT1QbigiRmlsZUxpc3QiKTtmdW5jdGlvbiBQbyhlKXtyZXR1cm4gdm8uY2FsbChlKT09PSJbb2JqZWN0IEZ1bmN0aW9uXSJ9ZnVuY3Rpb24gc2EoZSl7cmV0dXJuIFB0KGUpJiZQbyhlLnBpcGUpfWZ1bmN0aW9uIGlhKGUpe3ZhciBuPSJbb2JqZWN0IEZvcm1EYXRhXSI7cmV0dXJuIGUmJih0eXBlb2YgRm9ybURhdGE9PSJmdW5jdGlvbiImJmUgaW5zdGFuY2VvZiBGb3JtRGF0YXx8dm8uY2FsbChlKT09PW58fFBvKGUudG9TdHJpbmcpJiZlLnRvU3RyaW5nKCk9PT1uKX12YXIgYWE9UG4oIlVSTFNlYXJjaFBhcmFtcyIpO2Z1bmN0aW9uIHVhKGUpe3JldHVybiBlLnRyaW0/ZS50cmltKCk6ZS5yZXBsYWNlKC9eXHMrfFxzKyQvZywiIil9ZnVuY3Rpb24gX2EoKXtyZXR1cm4gdHlwZW9mIG5hdmlnYXRvciE9InVuZGVmaW5lZCImJihuYXZpZ2F0b3IucHJvZHVjdD09PSJSZWFjdE5hdGl2ZSJ8fG5hdmlnYXRvci5wcm9kdWN0PT09Ik5hdGl2ZVNjcmlwdCJ8fG5hdmlnYXRvci5wcm9kdWN0PT09Ik5TIik/ITE6dHlwZW9mIHdpbmRvdyE9InVuZGVmaW5lZCImJnR5cGVvZiBkb2N1bWVudCE9InVuZGVmaW5lZCJ9ZnVuY3Rpb24gd28oZSxuKXtpZighKGU9PT1udWxsfHx0eXBlb2YgZT09InVuZGVmaW5lZCIpKWlmKHR5cGVvZiBlIT0ib2JqZWN0IiYmKGU9W2VdKSxTbyhlKSlmb3IodmFyIHI9MCxvPWUubGVuZ3RoO3I8bztyKyspbi5jYWxsKG51bGwsZVtyXSxyLGUpO2Vsc2UgZm9yKHZhciB0IGluIGUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsdCkmJm4uY2FsbChudWxsLGVbdF0sdCxlKX1mdW5jdGlvbiBHbygpe3ZhciBlPXt9O2Z1bmN0aW9uIG4odCxzKXtKcihlW3NdKSYmSnIodCk/ZVtzXT1HbyhlW3NdLHQpOkpyKHQpP2Vbc109R28oe30sdCk6U28odCk/ZVtzXT10LnNsaWNlKCk6ZVtzXT10fWZvcih2YXIgcj0wLG89YXJndW1lbnRzLmxlbmd0aDtyPG87cisrKXdvKGFyZ3VtZW50c1tyXSxuKTtyZXR1cm4gZX1mdW5jdGlvbiBsYShlLG4scil7cmV0dXJuIHdvKG4sZnVuY3Rpb24odCxzKXtyJiZ0eXBlb2YgdD09ImZ1bmN0aW9uIj9lW3NdPXppKHQscik6ZVtzXT10fSksZX1mdW5jdGlvbiBjYShlKXtyZXR1cm4gZS5jaGFyQ29kZUF0KDApPT09NjUyNzkmJihlPWUuc2xpY2UoMSkpLGV9ZnVuY3Rpb24gZGEoZSxuLHIsbyl7ZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShuLnByb3RvdHlwZSxvKSxlLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1lLHImJk9iamVjdC5hc3NpZ24oZS5wcm90b3R5cGUscil9ZnVuY3Rpb24gaGEoZSxuLHIpe3ZhciBvLHQscyxpPXt9O249bnx8e307ZG97Zm9yKG89T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoZSksdD1vLmxlbmd0aDt0LS0gPjA7KXM9b1t0XSxpW3NdfHwobltzXT1lW3NdLGlbc109ITApO2U9T2JqZWN0LmdldFByb3RvdHlwZU9mKGUpfXdoaWxlKGUmJighcnx8cihlLG4pKSYmZSE9PU9iamVjdC5wcm90b3R5cGUpO3JldHVybiBufWZ1bmN0aW9uIG1hKGUsbixyKXtlPVN0cmluZyhlKSwocj09PXZvaWQgMHx8cj5lLmxlbmd0aCkmJihyPWUubGVuZ3RoKSxyLT1uLmxlbmd0aDt2YXIgbz1lLmluZGV4T2YobixyKTtyZXR1cm4gbyE9PS0xJiZvPT09cn1mdW5jdGlvbiBwYShlKXtpZighZSlyZXR1cm4gbnVsbDt2YXIgbj1lLmxlbmd0aDtpZihZcihuKSlyZXR1cm4gbnVsbDtmb3IodmFyIHI9bmV3IEFycmF5KG4pO24tLSA+MDspcltuXT1lW25dO3JldHVybiByfXZhciBFYT1mdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJuIGUmJm4gaW5zdGFuY2VvZiBlfX0odHlwZW9mIFVpbnQ4QXJyYXkhPSJ1bmRlZmluZWQiJiZPYmplY3QuZ2V0UHJvdG90eXBlT2YoVWludDhBcnJheSkpLHZlPXtpc0FycmF5OlNvLGlzQXJyYXlCdWZmZXI6U3QsaXNCdWZmZXI6cWksaXNGb3JtRGF0YTppYSxpc0FycmF5QnVmZmVyVmlldzpRaSxpc1N0cmluZzpaaSxpc051bWJlcjplYSxpc09iamVjdDpQdCxpc1BsYWluT2JqZWN0OkpyLGlzVW5kZWZpbmVkOllyLGlzRGF0ZTpuYSxpc0ZpbGU6cmEsaXNCbG9iOm9hLGlzRnVuY3Rpb246UG8saXNTdHJlYW06c2EsaXNVUkxTZWFyY2hQYXJhbXM6YWEsaXNTdGFuZGFyZEJyb3dzZXJFbnY6X2EsZm9yRWFjaDp3byxtZXJnZTpHbyxleHRlbmQ6bGEsdHJpbTp1YSxzdHJpcEJPTTpjYSxpbmhlcml0czpkYSx0b0ZsYXRPYmplY3Q6aGEsa2luZE9mOkRvLGtpbmRPZlRlc3Q6UG4sZW5kc1dpdGg6bWEsdG9BcnJheTpwYSxpc1R5cGVkQXJyYXk6RWEsaXNGaWxlTGlzdDp0YX0sem49dmU7ZnVuY3Rpb24gd3QoZSl7cmV0dXJuIGVuY29kZVVSSUNvbXBvbmVudChlKS5yZXBsYWNlKC8lM0EvZ2ksIjoiKS5yZXBsYWNlKC8lMjQvZywiJCIpLnJlcGxhY2UoLyUyQy9naSwiLCIpLnJlcGxhY2UoLyUyMC9nLCIrIikucmVwbGFjZSgvJTVCL2dpLCJbIikucmVwbGFjZSgvJTVEL2dpLCJdIil9dmFyIEd0PWZ1bmN0aW9uKG4scixvKXtpZighcilyZXR1cm4gbjt2YXIgdDtpZihvKXQ9byhyKTtlbHNlIGlmKHpuLmlzVVJMU2VhcmNoUGFyYW1zKHIpKXQ9ci50b1N0cmluZygpO2Vsc2V7dmFyIHM9W107em4uZm9yRWFjaChyLGZ1bmN0aW9uKGMsbSl7Yz09PW51bGx8fHR5cGVvZiBjPT0idW5kZWZpbmVkInx8KHpuLmlzQXJyYXkoYyk/bT1tKyJbXSI6Yz1bY10sem4uZm9yRWFjaChjLGZ1bmN0aW9uKGgpe3puLmlzRGF0ZShoKT9oPWgudG9JU09TdHJpbmcoKTp6bi5pc09iamVjdChoKSYmKGg9SlNPTi5zdHJpbmdpZnkoaCkpLHMucHVzaCh3dChtKSsiPSIrd3QoaCkpfSkpfSksdD1zLmpvaW4oIiYiKX1pZih0KXt2YXIgaT1uLmluZGV4T2YoIiMiKTtpIT09LTEmJihuPW4uc2xpY2UoMCxpKSksbis9KG4uaW5kZXhPZigiPyIpPT09LTE/Ij8iOiImIikrdH1yZXR1cm4gbn0sZmE9dmU7ZnVuY3Rpb24genIoKXt0aGlzLmhhbmRsZXJzPVtdfXpyLnByb3RvdHlwZS51c2U9ZnVuY3Rpb24obixyLG8pe3JldHVybiB0aGlzLmhhbmRsZXJzLnB1c2goe2Z1bGZpbGxlZDpuLHJlamVjdGVkOnIsc3luY2hyb25vdXM6bz9vLnN5bmNocm9ub3VzOiExLHJ1bldoZW46bz9vLnJ1bldoZW46bnVsbH0pLHRoaXMuaGFuZGxlcnMubGVuZ3RoLTF9LHpyLnByb3RvdHlwZS5lamVjdD1mdW5jdGlvbihuKXt0aGlzLmhhbmRsZXJzW25dJiYodGhpcy5oYW5kbGVyc1tuXT1udWxsKX0senIucHJvdG90eXBlLmZvckVhY2g9ZnVuY3Rpb24obil7ZmEuZm9yRWFjaCh0aGlzLmhhbmRsZXJzLGZ1bmN0aW9uKG8pe28hPT1udWxsJiZuKG8pfSl9O3ZhciBSYT16cixPYT12ZSxUYT1mdW5jdGlvbihuLHIpe09hLmZvckVhY2gobixmdW5jdGlvbih0LHMpe3MhPT1yJiZzLnRvVXBwZXJDYXNlKCk9PT1yLnRvVXBwZXJDYXNlKCkmJihuW3JdPXQsZGVsZXRlIG5bc10pfSl9LEN0PXZlO2Z1bmN0aW9uIHFuKGUsbixyLG8sdCl7RXJyb3IuY2FsbCh0aGlzKSx0aGlzLm1lc3NhZ2U9ZSx0aGlzLm5hbWU9IkF4aW9zRXJyb3IiLG4mJih0aGlzLmNvZGU9biksciYmKHRoaXMuY29uZmlnPXIpLG8mJih0aGlzLnJlcXVlc3Q9byksdCYmKHRoaXMucmVzcG9uc2U9dCl9Q3QuaW5oZXJpdHMocW4sRXJyb3Ise3RvSlNPTjpmdW5jdGlvbigpe3JldHVybnttZXNzYWdlOnRoaXMubWVzc2FnZSxuYW1lOnRoaXMubmFtZSxkZXNjcmlwdGlvbjp0aGlzLmRlc2NyaXB0aW9uLG51bWJlcjp0aGlzLm51bWJlcixmaWxlTmFtZTp0aGlzLmZpbGVOYW1lLGxpbmVOdW1iZXI6dGhpcy5saW5lTnVtYmVyLGNvbHVtbk51bWJlcjp0aGlzLmNvbHVtbk51bWJlcixzdGFjazp0aGlzLnN0YWNrLGNvbmZpZzp0aGlzLmNvbmZpZyxjb2RlOnRoaXMuY29kZSxzdGF0dXM6dGhpcy5yZXNwb25zZSYmdGhpcy5yZXNwb25zZS5zdGF0dXM/dGhpcy5yZXNwb25zZS5zdGF0dXM6bnVsbH19fSk7dmFyIHl0PXFuLnByb3RvdHlwZSxMdD17fTtbIkVSUl9CQURfT1BUSU9OX1ZBTFVFIiwiRVJSX0JBRF9PUFRJT04iLCJFQ09OTkFCT1JURUQiLCJFVElNRURPVVQiLCJFUlJfTkVUV09SSyIsIkVSUl9GUl9UT09fTUFOWV9SRURJUkVDVFMiLCJFUlJfREVQUkVDQVRFRCIsIkVSUl9CQURfUkVTUE9OU0UiLCJFUlJfQkFEX1JFUVVFU1QiLCJFUlJfQ0FOQ0VMRUQiXS5mb3JFYWNoKGZ1bmN0aW9uKGUpe0x0W2VdPXt2YWx1ZTplfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHFuLEx0KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoeXQsImlzQXhpb3NFcnJvciIse3ZhbHVlOiEwfSkscW4uZnJvbT1mdW5jdGlvbihlLG4scixvLHQscyl7dmFyIGk9T2JqZWN0LmNyZWF0ZSh5dCk7cmV0dXJuIEN0LnRvRmxhdE9iamVjdChlLGksZnVuY3Rpb24oYyl7cmV0dXJuIGMhPT1FcnJvci5wcm90b3R5cGV9KSxxbi5jYWxsKGksZS5tZXNzYWdlLG4scixvLHQpLGkubmFtZT1lLm5hbWUscyYmT2JqZWN0LmFzc2lnbihpLHMpLGl9O3ZhciBRbj1xbixCdD17c2lsZW50SlNPTlBhcnNpbmc6ITAsZm9yY2VkSlNPTlBhcnNpbmc6ITAsY2xhcmlmeVRpbWVvdXRFcnJvcjohMX0sV2U9dmU7ZnVuY3Rpb24gTmEoZSxuKXtuPW58fG5ldyBGb3JtRGF0YTt2YXIgcj1bXTtmdW5jdGlvbiBvKHMpe3JldHVybiBzPT09bnVsbD8iIjpXZS5pc0RhdGUocyk/cy50b0lTT1N0cmluZygpOldlLmlzQXJyYXlCdWZmZXIocyl8fFdlLmlzVHlwZWRBcnJheShzKT90eXBlb2YgQmxvYj09ImZ1bmN0aW9uIj9uZXcgQmxvYihbc10pOkJ1ZmZlci5mcm9tKHMpOnN9ZnVuY3Rpb24gdChzLGkpe2lmKFdlLmlzUGxhaW5PYmplY3Qocyl8fFdlLmlzQXJyYXkocykpe2lmKHIuaW5kZXhPZihzKSE9PS0xKXRocm93IEVycm9yKCJDaXJjdWxhciByZWZlcmVuY2UgZGV0ZWN0ZWQgaW4gIitpKTtyLnB1c2gocyksV2UuZm9yRWFjaChzLGZ1bmN0aW9uKGMsbSl7aWYoIVdlLmlzVW5kZWZpbmVkKGMpKXt2YXIgYT1pP2krIi4iK206bSxoO2lmKGMmJiFpJiZ0eXBlb2YgYz09Im9iamVjdCIpe2lmKFdlLmVuZHNXaXRoKG0sInt9IikpYz1KU09OLnN0cmluZ2lmeShjKTtlbHNlIGlmKFdlLmVuZHNXaXRoKG0sIltdIikmJihoPVdlLnRvQXJyYXkoYykpKXtoLmZvckVhY2goZnVuY3Rpb24oTyl7IVdlLmlzVW5kZWZpbmVkKE8pJiZuLmFwcGVuZChhLG8oTykpfSk7cmV0dXJufX10KGMsYSl9fSksci5wb3AoKX1lbHNlIG4uYXBwZW5kKGksbyhzKSl9cmV0dXJuIHQoZSksbn12YXIga3Q9TmEsQ289UW4sZ2E9ZnVuY3Rpb24obixyLG8pe3ZhciB0PW8uY29uZmlnLnZhbGlkYXRlU3RhdHVzOyFvLnN0YXR1c3x8IXR8fHQoby5zdGF0dXMpP24obyk6cihuZXcgQ28oIlJlcXVlc3QgZmFpbGVkIHdpdGggc3RhdHVzIGNvZGUgIitvLnN0YXR1cyxbQ28uRVJSX0JBRF9SRVFVRVNULENvLkVSUl9CQURfUkVTUE9OU0VdW01hdGguZmxvb3Ioby5zdGF0dXMvMTAwKS00XSxvLmNvbmZpZyxvLnJlcXVlc3QsbykpfSxxcj12ZSxJYT1xci5pc1N0YW5kYXJkQnJvd3NlckVudigpP2Z1bmN0aW9uKCl7cmV0dXJue3dyaXRlOmZ1bmN0aW9uKHIsbyx0LHMsaSxsKXt2YXIgYz1bXTtjLnB1c2gocisiPSIrZW5jb2RlVVJJQ29tcG9uZW50KG8pKSxxci5pc051bWJlcih0KSYmYy5wdXNoKCJleHBpcmVzPSIrbmV3IERhdGUodCkudG9HTVRTdHJpbmcoKSkscXIuaXNTdHJpbmcocykmJmMucHVzaCgicGF0aD0iK3MpLHFyLmlzU3RyaW5nKGkpJiZjLnB1c2goImRvbWFpbj0iK2kpLGw9PT0hMCYmYy5wdXNoKCJzZWN1cmUiKSxkb2N1bWVudC5jb29raWU9Yy5qb2luKCI7ICIpfSxyZWFkOmZ1bmN0aW9uKHIpe3ZhciBvPWRvY3VtZW50LmNvb2tpZS5tYXRjaChuZXcgUmVnRXhwKCIoXnw7XFxzKikoIityKyIpPShbXjtdKikiKSk7cmV0dXJuIG8/ZGVjb2RlVVJJQ29tcG9uZW50KG9bM10pOm51bGx9LHJlbW92ZTpmdW5jdGlvbihyKXt0aGlzLndyaXRlKHIsIiIsRGF0ZS5ub3coKS04NjRlNSl9fX0oKTpmdW5jdGlvbigpe3JldHVybnt3cml0ZTpmdW5jdGlvbigpe30scmVhZDpmdW5jdGlvbigpe3JldHVybiBudWxsfSxyZW1vdmU6ZnVuY3Rpb24oKXt9fX0oKSxiYT1mdW5jdGlvbihuKXtyZXR1cm4vXihbYS16XVthLXpcZCtcLS5dKjopP1wvXC8vaS50ZXN0KG4pfSxBYT1mdW5jdGlvbihuLHIpe3JldHVybiByP24ucmVwbGFjZSgvXC8rJC8sIiIpKyIvIityLnJlcGxhY2UoL15cLysvLCIiKTpufSxVYT1iYSxIYT1BYSxNdD1mdW5jdGlvbihuLHIpe3JldHVybiBuJiYhVWEocik/SGEobixyKTpyfSx5bz12ZSx2YT1bImFnZSIsImF1dGhvcml6YXRpb24iLCJjb250ZW50LWxlbmd0aCIsImNvbnRlbnQtdHlwZSIsImV0YWciLCJleHBpcmVzIiwiZnJvbSIsImhvc3QiLCJpZi1tb2RpZmllZC1zaW5jZSIsImlmLXVubW9kaWZpZWQtc2luY2UiLCJsYXN0LW1vZGlmaWVkIiwibG9jYXRpb24iLCJtYXgtZm9yd2FyZHMiLCJwcm94eS1hdXRob3JpemF0aW9uIiwicmVmZXJlciIsInJldHJ5LWFmdGVyIiwidXNlci1hZ2VudCJdLERhPWZ1bmN0aW9uKG4pe3ZhciByPXt9LG8sdCxzO3JldHVybiBuJiZ5by5mb3JFYWNoKG4uc3BsaXQoYApgKSxmdW5jdGlvbihsKXtpZihzPWwuaW5kZXhPZigiOiIpLG89eW8udHJpbShsLnN1YnN0cigwLHMpKS50b0xvd2VyQ2FzZSgpLHQ9eW8udHJpbShsLnN1YnN0cihzKzEpKSxvKXtpZihyW29dJiZ2YS5pbmRleE9mKG8pPj0wKXJldHVybjtvPT09InNldC1jb29raWUiP3Jbb109KHJbb10/cltvXTpbXSkuY29uY2F0KFt0XSk6cltvXT1yW29dP3Jbb10rIiwgIit0OnR9fSkscn0sWHQ9dmUsU2E9WHQuaXNTdGFuZGFyZEJyb3dzZXJFbnYoKT9mdW5jdGlvbigpe3ZhciBuPS8obXNpZXx0cmlkZW50KS9pLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCkscj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJhIiksbztmdW5jdGlvbiB0KHMpe3ZhciBpPXM7cmV0dXJuIG4mJihyLnNldEF0dHJpYnV0ZSgiaHJlZiIsaSksaT1yLmhyZWYpLHIuc2V0QXR0cmlidXRlKCJocmVmIixpKSx7aHJlZjpyLmhyZWYscHJvdG9jb2w6ci5wcm90b2NvbD9yLnByb3RvY29sLnJlcGxhY2UoLzokLywiIik6IiIsaG9zdDpyLmhvc3Qsc2VhcmNoOnIuc2VhcmNoP3Iuc2VhcmNoLnJlcGxhY2UoL15cPy8sIiIpOiIiLGhhc2g6ci5oYXNoP3IuaGFzaC5yZXBsYWNlKC9eIy8sIiIpOiIiLGhvc3RuYW1lOnIuaG9zdG5hbWUscG9ydDpyLnBvcnQscGF0aG5hbWU6ci5wYXRobmFtZS5jaGFyQXQoMCk9PT0iLyI/ci5wYXRobmFtZToiLyIrci5wYXRobmFtZX19cmV0dXJuIG89dCh3aW5kb3cubG9jYXRpb24uaHJlZiksZnVuY3Rpb24oaSl7dmFyIGw9WHQuaXNTdHJpbmcoaSk/dChpKTppO3JldHVybiBsLnByb3RvY29sPT09by5wcm90b2NvbCYmbC5ob3N0PT09by5ob3N0fX0oKTpmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiEwfX0oKSxMbz1RbixQYT12ZTtmdW5jdGlvbiAkdChlKXtMby5jYWxsKHRoaXMsZT09bnVsbD8iY2FuY2VsZWQiOmUsTG8uRVJSX0NBTkNFTEVEKSx0aGlzLm5hbWU9IkNhbmNlbGVkRXJyb3IifVBhLmluaGVyaXRzKCR0LExvLHtfX0NBTkNFTF9fOiEwfSk7dmFyIFFyPSR0LHdhPWZ1bmN0aW9uKG4pe3ZhciByPS9eKFstK1x3XXsxLDI1fSkoOj9cL1wvfDopLy5leGVjKG4pO3JldHVybiByJiZyWzFdfHwiIn0sT3I9dmUsR2E9Z2EsQ2E9SWEseWE9R3QsTGE9TXQsQmE9RGEsa2E9U2EsTWE9QnQsbG49UW4sWGE9UXIsJGE9d2EsanQ9ZnVuY3Rpb24obil7cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKG8sdCl7dmFyIHM9bi5kYXRhLGk9bi5oZWFkZXJzLGw9bi5yZXNwb25zZVR5cGUsYztmdW5jdGlvbiBtKCl7bi5jYW5jZWxUb2tlbiYmbi5jYW5jZWxUb2tlbi51bnN1YnNjcmliZShjKSxuLnNpZ25hbCYmbi5zaWduYWwucmVtb3ZlRXZlbnRMaXN0ZW5lcigiYWJvcnQiLGMpfU9yLmlzRm9ybURhdGEocykmJk9yLmlzU3RhbmRhcmRCcm93c2VyRW52KCkmJmRlbGV0ZSBpWyJDb250ZW50LVR5cGUiXTt2YXIgYT1uZXcgWE1MSHR0cFJlcXVlc3Q7aWYobi5hdXRoKXt2YXIgaD1uLmF1dGgudXNlcm5hbWV8fCIiLE89bi5hdXRoLnBhc3N3b3JkP3VuZXNjYXBlKGVuY29kZVVSSUNvbXBvbmVudChuLmF1dGgucGFzc3dvcmQpKToiIjtpLkF1dGhvcml6YXRpb249IkJhc2ljICIrYnRvYShoKyI6IitPKX12YXIgRD1MYShuLmJhc2VVUkwsbi51cmwpO2Eub3BlbihuLm1ldGhvZC50b1VwcGVyQ2FzZSgpLHlhKEQsbi5wYXJhbXMsbi5wYXJhbXNTZXJpYWxpemVyKSwhMCksYS50aW1lb3V0PW4udGltZW91dDtmdW5jdGlvbiB3KCl7aWYoISFhKXt2YXIgZj0iZ2V0QWxsUmVzcG9uc2VIZWFkZXJzImluIGE/QmEoYS5nZXRBbGxSZXNwb25zZUhlYWRlcnMoKSk6bnVsbCxBPSFsfHxsPT09InRleHQifHxsPT09Impzb24iP2EucmVzcG9uc2VUZXh0OmEucmVzcG9uc2UsVT17ZGF0YTpBLHN0YXR1czphLnN0YXR1cyxzdGF0dXNUZXh0OmEuc3RhdHVzVGV4dCxoZWFkZXJzOmYsY29uZmlnOm4scmVxdWVzdDphfTtHYShmdW5jdGlvbihqKXtvKGopLG0oKX0sZnVuY3Rpb24oail7dChqKSxtKCl9LFUpLGE9bnVsbH19aWYoIm9ubG9hZGVuZCJpbiBhP2Eub25sb2FkZW5kPXc6YS5vbnJlYWR5c3RhdGVjaGFuZ2U9ZnVuY3Rpb24oKXshYXx8YS5yZWFkeVN0YXRlIT09NHx8YS5zdGF0dXM9PT0wJiYhKGEucmVzcG9uc2VVUkwmJmEucmVzcG9uc2VVUkwuaW5kZXhPZigiZmlsZToiKT09PTApfHxzZXRUaW1lb3V0KHcpfSxhLm9uYWJvcnQ9ZnVuY3Rpb24oKXshYXx8KHQobmV3IGxuKCJSZXF1ZXN0IGFib3J0ZWQiLGxuLkVDT05OQUJPUlRFRCxuLGEpKSxhPW51bGwpfSxhLm9uZXJyb3I9ZnVuY3Rpb24oKXt0KG5ldyBsbigiTmV0d29yayBFcnJvciIsbG4uRVJSX05FVFdPUkssbixhLGEpKSxhPW51bGx9LGEub250aW1lb3V0PWZ1bmN0aW9uKCl7dmFyIEE9bi50aW1lb3V0PyJ0aW1lb3V0IG9mICIrbi50aW1lb3V0KyJtcyBleGNlZWRlZCI6InRpbWVvdXQgZXhjZWVkZWQiLFU9bi50cmFuc2l0aW9uYWx8fE1hO24udGltZW91dEVycm9yTWVzc2FnZSYmKEE9bi50aW1lb3V0RXJyb3JNZXNzYWdlKSx0KG5ldyBsbihBLFUuY2xhcmlmeVRpbWVvdXRFcnJvcj9sbi5FVElNRURPVVQ6bG4uRUNPTk5BQk9SVEVELG4sYSkpLGE9bnVsbH0sT3IuaXNTdGFuZGFyZEJyb3dzZXJFbnYoKSl7dmFyIEM9KG4ud2l0aENyZWRlbnRpYWxzfHxrYShEKSkmJm4ueHNyZkNvb2tpZU5hbWU/Q2EucmVhZChuLnhzcmZDb29raWVOYW1lKTp2b2lkIDA7QyYmKGlbbi54c3JmSGVhZGVyTmFtZV09Qyl9InNldFJlcXVlc3RIZWFkZXIiaW4gYSYmT3IuZm9yRWFjaChpLGZ1bmN0aW9uKEEsVSl7dHlwZW9mIHM9PSJ1bmRlZmluZWQiJiZVLnRvTG93ZXJDYXNlKCk9PT0iY29udGVudC10eXBlIj9kZWxldGUgaVtVXTphLnNldFJlcXVlc3RIZWFkZXIoVSxBKX0pLE9yLmlzVW5kZWZpbmVkKG4ud2l0aENyZWRlbnRpYWxzKXx8KGEud2l0aENyZWRlbnRpYWxzPSEhbi53aXRoQ3JlZGVudGlhbHMpLGwmJmwhPT0ianNvbiImJihhLnJlc3BvbnNlVHlwZT1uLnJlc3BvbnNlVHlwZSksdHlwZW9mIG4ub25Eb3dubG9hZFByb2dyZXNzPT0iZnVuY3Rpb24iJiZhLmFkZEV2ZW50TGlzdGVuZXIoInByb2dyZXNzIixuLm9uRG93bmxvYWRQcm9ncmVzcyksdHlwZW9mIG4ub25VcGxvYWRQcm9ncmVzcz09ImZ1bmN0aW9uIiYmYS51cGxvYWQmJmEudXBsb2FkLmFkZEV2ZW50TGlzdGVuZXIoInByb2dyZXNzIixuLm9uVXBsb2FkUHJvZ3Jlc3MpLChuLmNhbmNlbFRva2VufHxuLnNpZ25hbCkmJihjPWZ1bmN0aW9uKGYpeyFhfHwodCghZnx8ZiYmZi50eXBlP25ldyBYYTpmKSxhLmFib3J0KCksYT1udWxsKX0sbi5jYW5jZWxUb2tlbiYmbi5jYW5jZWxUb2tlbi5zdWJzY3JpYmUoYyksbi5zaWduYWwmJihuLnNpZ25hbC5hYm9ydGVkP2MoKTpuLnNpZ25hbC5hZGRFdmVudExpc3RlbmVyKCJhYm9ydCIsYykpKSxzfHwocz1udWxsKTt2YXIgVD0kYShEKTtpZihUJiZbImh0dHAiLCJodHRwcyIsImZpbGUiXS5pbmRleE9mKFQpPT09LTEpe3QobmV3IGxuKCJVbnN1cHBvcnRlZCBwcm90b2NvbCAiK1QrIjoiLGxuLkVSUl9CQURfUkVRVUVTVCxuKSk7cmV0dXJufWEuc2VuZChzKX0pfSxqYT1udWxsLFVlPXZlLHh0PVRhLEZ0PVFuLHhhPUJ0LEZhPWt0LFZhPXsiQ29udGVudC1UeXBlIjoiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIn07ZnVuY3Rpb24gVnQoZSxuKXshVWUuaXNVbmRlZmluZWQoZSkmJlVlLmlzVW5kZWZpbmVkKGVbIkNvbnRlbnQtVHlwZSJdKSYmKGVbIkNvbnRlbnQtVHlwZSJdPW4pfWZ1bmN0aW9uIEthKCl7dmFyIGU7cmV0dXJuKHR5cGVvZiBYTUxIdHRwUmVxdWVzdCE9InVuZGVmaW5lZCJ8fHR5cGVvZiBwcm9jZXNzIT0idW5kZWZpbmVkIiYmT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHByb2Nlc3MpPT09IltvYmplY3QgcHJvY2Vzc10iKSYmKGU9anQpLGV9ZnVuY3Rpb24gV2EoZSxuLHIpe2lmKFVlLmlzU3RyaW5nKGUpKXRyeXtyZXR1cm4obnx8SlNPTi5wYXJzZSkoZSksVWUudHJpbShlKX1jYXRjaChvKXtpZihvLm5hbWUhPT0iU3ludGF4RXJyb3IiKXRocm93IG99cmV0dXJuKHJ8fEpTT04uc3RyaW5naWZ5KShlKX12YXIgWnI9e3RyYW5zaXRpb25hbDp4YSxhZGFwdGVyOkthKCksdHJhbnNmb3JtUmVxdWVzdDpbZnVuY3Rpb24obixyKXtpZih4dChyLCJBY2NlcHQiKSx4dChyLCJDb250ZW50LVR5cGUiKSxVZS5pc0Zvcm1EYXRhKG4pfHxVZS5pc0FycmF5QnVmZmVyKG4pfHxVZS5pc0J1ZmZlcihuKXx8VWUuaXNTdHJlYW0obil8fFVlLmlzRmlsZShuKXx8VWUuaXNCbG9iKG4pKXJldHVybiBuO2lmKFVlLmlzQXJyYXlCdWZmZXJWaWV3KG4pKXJldHVybiBuLmJ1ZmZlcjtpZihVZS5pc1VSTFNlYXJjaFBhcmFtcyhuKSlyZXR1cm4gVnQociwiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkO2NoYXJzZXQ9dXRmLTgiKSxuLnRvU3RyaW5nKCk7dmFyIG89VWUuaXNPYmplY3QobiksdD1yJiZyWyJDb250ZW50LVR5cGUiXSxzO2lmKChzPVVlLmlzRmlsZUxpc3QobikpfHxvJiZ0PT09Im11bHRpcGFydC9mb3JtLWRhdGEiKXt2YXIgaT10aGlzLmVudiYmdGhpcy5lbnYuRm9ybURhdGE7cmV0dXJuIEZhKHM/eyJmaWxlc1tdIjpufTpuLGkmJm5ldyBpKX1lbHNlIGlmKG98fHQ9PT0iYXBwbGljYXRpb24vanNvbiIpcmV0dXJuIFZ0KHIsImFwcGxpY2F0aW9uL2pzb24iKSxXYShuKTtyZXR1cm4gbn1dLHRyYW5zZm9ybVJlc3BvbnNlOltmdW5jdGlvbihuKXt2YXIgcj10aGlzLnRyYW5zaXRpb25hbHx8WnIudHJhbnNpdGlvbmFsLG89ciYmci5zaWxlbnRKU09OUGFyc2luZyx0PXImJnIuZm9yY2VkSlNPTlBhcnNpbmcscz0hbyYmdGhpcy5yZXNwb25zZVR5cGU9PT0ianNvbiI7aWYoc3x8dCYmVWUuaXNTdHJpbmcobikmJm4ubGVuZ3RoKXRyeXtyZXR1cm4gSlNPTi5wYXJzZShuKX1jYXRjaChpKXtpZihzKXRocm93IGkubmFtZT09PSJTeW50YXhFcnJvciI/RnQuZnJvbShpLEZ0LkVSUl9CQURfUkVTUE9OU0UsdGhpcyxudWxsLHRoaXMucmVzcG9uc2UpOml9cmV0dXJuIG59XSx0aW1lb3V0OjAseHNyZkNvb2tpZU5hbWU6IlhTUkYtVE9LRU4iLHhzcmZIZWFkZXJOYW1lOiJYLVhTUkYtVE9LRU4iLG1heENvbnRlbnRMZW5ndGg6LTEsbWF4Qm9keUxlbmd0aDotMSxlbnY6e0Zvcm1EYXRhOmphfSx2YWxpZGF0ZVN0YXR1czpmdW5jdGlvbihuKXtyZXR1cm4gbj49MjAwJiZuPDMwMH0saGVhZGVyczp7Y29tbW9uOntBY2NlcHQ6ImFwcGxpY2F0aW9uL2pzb24sIHRleHQvcGxhaW4sICovKiJ9fX07VWUuZm9yRWFjaChbImRlbGV0ZSIsImdldCIsImhlYWQiXSxmdW5jdGlvbihuKXtaci5oZWFkZXJzW25dPXt9fSksVWUuZm9yRWFjaChbInBvc3QiLCJwdXQiLCJwYXRjaCJdLGZ1bmN0aW9uKG4pe1pyLmhlYWRlcnNbbl09VWUubWVyZ2UoVmEpfSk7dmFyIEJvPVpyLFlhPXZlLEphPUJvLHphPWZ1bmN0aW9uKG4scixvKXt2YXIgdD10aGlzfHxKYTtyZXR1cm4gWWEuZm9yRWFjaChvLGZ1bmN0aW9uKGkpe249aS5jYWxsKHQsbixyKX0pLG59LEt0PWZ1bmN0aW9uKG4pe3JldHVybiEhKG4mJm4uX19DQU5DRUxfXyl9LFd0PXZlLGtvPXphLHFhPUt0LFFhPUJvLFphPVFyO2Z1bmN0aW9uIE1vKGUpe2lmKGUuY2FuY2VsVG9rZW4mJmUuY2FuY2VsVG9rZW4udGhyb3dJZlJlcXVlc3RlZCgpLGUuc2lnbmFsJiZlLnNpZ25hbC5hYm9ydGVkKXRocm93IG5ldyBaYX12YXIgZXU9ZnVuY3Rpb24obil7TW8obiksbi5oZWFkZXJzPW4uaGVhZGVyc3x8e30sbi5kYXRhPWtvLmNhbGwobixuLmRhdGEsbi5oZWFkZXJzLG4udHJhbnNmb3JtUmVxdWVzdCksbi5oZWFkZXJzPVd0Lm1lcmdlKG4uaGVhZGVycy5jb21tb258fHt9LG4uaGVhZGVyc1tuLm1ldGhvZF18fHt9LG4uaGVhZGVycyksV3QuZm9yRWFjaChbImRlbGV0ZSIsImdldCIsImhlYWQiLCJwb3N0IiwicHV0IiwicGF0Y2giLCJjb21tb24iXSxmdW5jdGlvbih0KXtkZWxldGUgbi5oZWFkZXJzW3RdfSk7dmFyIHI9bi5hZGFwdGVyfHxRYS5hZGFwdGVyO3JldHVybiByKG4pLnRoZW4oZnVuY3Rpb24odCl7cmV0dXJuIE1vKG4pLHQuZGF0YT1rby5jYWxsKG4sdC5kYXRhLHQuaGVhZGVycyxuLnRyYW5zZm9ybVJlc3BvbnNlKSx0fSxmdW5jdGlvbih0KXtyZXR1cm4gcWEodCl8fChNbyhuKSx0JiZ0LnJlc3BvbnNlJiYodC5yZXNwb25zZS5kYXRhPWtvLmNhbGwobix0LnJlc3BvbnNlLmRhdGEsdC5yZXNwb25zZS5oZWFkZXJzLG4udHJhbnNmb3JtUmVzcG9uc2UpKSksUHJvbWlzZS5yZWplY3QodCl9KX0sTGU9dmUsWXQ9ZnVuY3Rpb24obixyKXtyPXJ8fHt9O3ZhciBvPXt9O2Z1bmN0aW9uIHQoYSxoKXtyZXR1cm4gTGUuaXNQbGFpbk9iamVjdChhKSYmTGUuaXNQbGFpbk9iamVjdChoKT9MZS5tZXJnZShhLGgpOkxlLmlzUGxhaW5PYmplY3QoaCk/TGUubWVyZ2Uoe30saCk6TGUuaXNBcnJheShoKT9oLnNsaWNlKCk6aH1mdW5jdGlvbiBzKGEpe2lmKExlLmlzVW5kZWZpbmVkKHJbYV0pKXtpZighTGUuaXNVbmRlZmluZWQoblthXSkpcmV0dXJuIHQodm9pZCAwLG5bYV0pfWVsc2UgcmV0dXJuIHQoblthXSxyW2FdKX1mdW5jdGlvbiBpKGEpe2lmKCFMZS5pc1VuZGVmaW5lZChyW2FdKSlyZXR1cm4gdCh2b2lkIDAsclthXSl9ZnVuY3Rpb24gbChhKXtpZihMZS5pc1VuZGVmaW5lZChyW2FdKSl7aWYoIUxlLmlzVW5kZWZpbmVkKG5bYV0pKXJldHVybiB0KHZvaWQgMCxuW2FdKX1lbHNlIHJldHVybiB0KHZvaWQgMCxyW2FdKX1mdW5jdGlvbiBjKGEpe2lmKGEgaW4gcilyZXR1cm4gdChuW2FdLHJbYV0pO2lmKGEgaW4gbilyZXR1cm4gdCh2b2lkIDAsblthXSl9dmFyIG09e3VybDppLG1ldGhvZDppLGRhdGE6aSxiYXNlVVJMOmwsdHJhbnNmb3JtUmVxdWVzdDpsLHRyYW5zZm9ybVJlc3BvbnNlOmwscGFyYW1zU2VyaWFsaXplcjpsLHRpbWVvdXQ6bCx0aW1lb3V0TWVzc2FnZTpsLHdpdGhDcmVkZW50aWFsczpsLGFkYXB0ZXI6bCxyZXNwb25zZVR5cGU6bCx4c3JmQ29va2llTmFtZTpsLHhzcmZIZWFkZXJOYW1lOmwsb25VcGxvYWRQcm9ncmVzczpsLG9uRG93bmxvYWRQcm9ncmVzczpsLGRlY29tcHJlc3M6bCxtYXhDb250ZW50TGVuZ3RoOmwsbWF4Qm9keUxlbmd0aDpsLGJlZm9yZVJlZGlyZWN0OmwsdHJhbnNwb3J0OmwsaHR0cEFnZW50OmwsaHR0cHNBZ2VudDpsLGNhbmNlbFRva2VuOmwsc29ja2V0UGF0aDpsLHJlc3BvbnNlRW5jb2Rpbmc6bCx2YWxpZGF0ZVN0YXR1czpjfTtyZXR1cm4gTGUuZm9yRWFjaChPYmplY3Qua2V5cyhuKS5jb25jYXQoT2JqZWN0LmtleXMocikpLGZ1bmN0aW9uKGgpe3ZhciBPPW1baF18fHMsRD1PKGgpO0xlLmlzVW5kZWZpbmVkKEQpJiZPIT09Y3x8KG9baF09RCl9KSxvfSxKdD17dmVyc2lvbjoiMC4yNy4yIn0sbnU9SnQudmVyc2lvbixPbj1RbixYbz17fTtbIm9iamVjdCIsImJvb2xlYW4iLCJudW1iZXIiLCJmdW5jdGlvbiIsInN0cmluZyIsInN5bWJvbCJdLmZvckVhY2goZnVuY3Rpb24oZSxuKXtYb1tlXT1mdW5jdGlvbihvKXtyZXR1cm4gdHlwZW9mIG89PT1lfHwiYSIrKG48MT8ibiAiOiIgIikrZX19KTt2YXIgenQ9e307WG8udHJhbnNpdGlvbmFsPWZ1bmN0aW9uKG4scixvKXtmdW5jdGlvbiB0KHMsaSl7cmV0dXJuIltBeGlvcyB2IitudSsiXSBUcmFuc2l0aW9uYWwgb3B0aW9uICciK3MrIiciK2krKG8/Ii4gIitvOiIiKX1yZXR1cm4gZnVuY3Rpb24ocyxpLGwpe2lmKG49PT0hMSl0aHJvdyBuZXcgT24odChpLCIgaGFzIGJlZW4gcmVtb3ZlZCIrKHI/IiBpbiAiK3I6IiIpKSxPbi5FUlJfREVQUkVDQVRFRCk7cmV0dXJuIHImJiF6dFtpXSYmKHp0W2ldPSEwLGNvbnNvbGUud2Fybih0KGksIiBoYXMgYmVlbiBkZXByZWNhdGVkIHNpbmNlIHYiK3IrIiBhbmQgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZWFyIGZ1dHVyZSIpKSksbj9uKHMsaSxsKTohMH19O2Z1bmN0aW9uIHJ1KGUsbixyKXtpZih0eXBlb2YgZSE9Im9iamVjdCIpdGhyb3cgbmV3IE9uKCJvcHRpb25zIG11c3QgYmUgYW4gb2JqZWN0IixPbi5FUlJfQkFEX09QVElPTl9WQUxVRSk7Zm9yKHZhciBvPU9iamVjdC5rZXlzKGUpLHQ9by5sZW5ndGg7dC0tID4wOyl7dmFyIHM9b1t0XSxpPW5bc107aWYoaSl7dmFyIGw9ZVtzXSxjPWw9PT12b2lkIDB8fGkobCxzLGUpO2lmKGMhPT0hMCl0aHJvdyBuZXcgT24oIm9wdGlvbiAiK3MrIiBtdXN0IGJlICIrYyxPbi5FUlJfQkFEX09QVElPTl9WQUxVRSk7Y29udGludWV9aWYociE9PSEwKXRocm93IG5ldyBPbigiVW5rbm93biBvcHRpb24gIitzLE9uLkVSUl9CQURfT1BUSU9OKX19dmFyIG91PXthc3NlcnRPcHRpb25zOnJ1LHZhbGlkYXRvcnM6WG99LHF0PXZlLHR1PUd0LFF0PVJhLFp0PWV1LGVvPVl0LHN1PU10LGVzPW91LFpuPWVzLnZhbGlkYXRvcnM7ZnVuY3Rpb24gZXIoZSl7dGhpcy5kZWZhdWx0cz1lLHRoaXMuaW50ZXJjZXB0b3JzPXtyZXF1ZXN0Om5ldyBRdCxyZXNwb25zZTpuZXcgUXR9fWVyLnByb3RvdHlwZS5yZXF1ZXN0PWZ1bmN0aW9uKG4scil7dHlwZW9mIG49PSJzdHJpbmciPyhyPXJ8fHt9LHIudXJsPW4pOnI9bnx8e30scj1lbyh0aGlzLmRlZmF1bHRzLHIpLHIubWV0aG9kP3IubWV0aG9kPXIubWV0aG9kLnRvTG93ZXJDYXNlKCk6dGhpcy5kZWZhdWx0cy5tZXRob2Q/ci5tZXRob2Q9dGhpcy5kZWZhdWx0cy5tZXRob2QudG9Mb3dlckNhc2UoKTpyLm1ldGhvZD0iZ2V0Ijt2YXIgbz1yLnRyYW5zaXRpb25hbDtvIT09dm9pZCAwJiZlcy5hc3NlcnRPcHRpb25zKG8se3NpbGVudEpTT05QYXJzaW5nOlpuLnRyYW5zaXRpb25hbChabi5ib29sZWFuKSxmb3JjZWRKU09OUGFyc2luZzpabi50cmFuc2l0aW9uYWwoWm4uYm9vbGVhbiksY2xhcmlmeVRpbWVvdXRFcnJvcjpabi50cmFuc2l0aW9uYWwoWm4uYm9vbGVhbil9LCExKTt2YXIgdD1bXSxzPSEwO3RoaXMuaW50ZXJjZXB0b3JzLnJlcXVlc3QuZm9yRWFjaChmdW5jdGlvbihEKXt0eXBlb2YgRC5ydW5XaGVuPT0iZnVuY3Rpb24iJiZELnJ1bldoZW4ocik9PT0hMXx8KHM9cyYmRC5zeW5jaHJvbm91cyx0LnVuc2hpZnQoRC5mdWxmaWxsZWQsRC5yZWplY3RlZCkpfSk7dmFyIGk9W107dGhpcy5pbnRlcmNlcHRvcnMucmVzcG9uc2UuZm9yRWFjaChmdW5jdGlvbihEKXtpLnB1c2goRC5mdWxmaWxsZWQsRC5yZWplY3RlZCl9KTt2YXIgbDtpZighcyl7dmFyIGM9W1p0LHZvaWQgMF07Zm9yKEFycmF5LnByb3RvdHlwZS51bnNoaWZ0LmFwcGx5KGMsdCksYz1jLmNvbmNhdChpKSxsPVByb21pc2UucmVzb2x2ZShyKTtjLmxlbmd0aDspbD1sLnRoZW4oYy5zaGlmdCgpLGMuc2hpZnQoKSk7cmV0dXJuIGx9Zm9yKHZhciBtPXI7dC5sZW5ndGg7KXt2YXIgYT10LnNoaWZ0KCksaD10LnNoaWZ0KCk7dHJ5e209YShtKX1jYXRjaChPKXtoKE8pO2JyZWFrfX10cnl7bD1adChtKX1jYXRjaChPKXtyZXR1cm4gUHJvbWlzZS5yZWplY3QoTyl9Zm9yKDtpLmxlbmd0aDspbD1sLnRoZW4oaS5zaGlmdCgpLGkuc2hpZnQoKSk7cmV0dXJuIGx9LGVyLnByb3RvdHlwZS5nZXRVcmk9ZnVuY3Rpb24obil7bj1lbyh0aGlzLmRlZmF1bHRzLG4pO3ZhciByPXN1KG4uYmFzZVVSTCxuLnVybCk7cmV0dXJuIHR1KHIsbi5wYXJhbXMsbi5wYXJhbXNTZXJpYWxpemVyKX0scXQuZm9yRWFjaChbImRlbGV0ZSIsImdldCIsImhlYWQiLCJvcHRpb25zIl0sZnVuY3Rpb24obil7ZXIucHJvdG90eXBlW25dPWZ1bmN0aW9uKHIsbyl7cmV0dXJuIHRoaXMucmVxdWVzdChlbyhvfHx7fSx7bWV0aG9kOm4sdXJsOnIsZGF0YToob3x8e30pLmRhdGF9KSl9fSkscXQuZm9yRWFjaChbInBvc3QiLCJwdXQiLCJwYXRjaCJdLGZ1bmN0aW9uKG4pe2Z1bmN0aW9uIHIobyl7cmV0dXJuIGZ1bmN0aW9uKHMsaSxsKXtyZXR1cm4gdGhpcy5yZXF1ZXN0KGVvKGx8fHt9LHttZXRob2Q6bixoZWFkZXJzOm8/eyJDb250ZW50LVR5cGUiOiJtdWx0aXBhcnQvZm9ybS1kYXRhIn06e30sdXJsOnMsZGF0YTppfSkpfX1lci5wcm90b3R5cGVbbl09cigpLGVyLnByb3RvdHlwZVtuKyJGb3JtIl09cighMCl9KTt2YXIgaXU9ZXIsYXU9UXI7ZnVuY3Rpb24gbnIoZSl7aWYodHlwZW9mIGUhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IFR5cGVFcnJvcigiZXhlY3V0b3IgbXVzdCBiZSBhIGZ1bmN0aW9uLiIpO3ZhciBuO3RoaXMucHJvbWlzZT1uZXcgUHJvbWlzZShmdW5jdGlvbih0KXtuPXR9KTt2YXIgcj10aGlzO3RoaXMucHJvbWlzZS50aGVuKGZ1bmN0aW9uKG8pe2lmKCEhci5fbGlzdGVuZXJzKXt2YXIgdCxzPXIuX2xpc3RlbmVycy5sZW5ndGg7Zm9yKHQ9MDt0PHM7dCsrKXIuX2xpc3RlbmVyc1t0XShvKTtyLl9saXN0ZW5lcnM9bnVsbH19KSx0aGlzLnByb21pc2UudGhlbj1mdW5jdGlvbihvKXt2YXIgdCxzPW5ldyBQcm9taXNlKGZ1bmN0aW9uKGkpe3Iuc3Vic2NyaWJlKGkpLHQ9aX0pLnRoZW4obyk7cmV0dXJuIHMuY2FuY2VsPWZ1bmN0aW9uKCl7ci51bnN1YnNjcmliZSh0KX0sc30sZShmdW5jdGlvbih0KXtyLnJlYXNvbnx8KHIucmVhc29uPW5ldyBhdSh0KSxuKHIucmVhc29uKSl9KX1uci5wcm90b3R5cGUudGhyb3dJZlJlcXVlc3RlZD1mdW5jdGlvbigpe2lmKHRoaXMucmVhc29uKXRocm93IHRoaXMucmVhc29ufSxuci5wcm90b3R5cGUuc3Vic2NyaWJlPWZ1bmN0aW9uKG4pe2lmKHRoaXMucmVhc29uKXtuKHRoaXMucmVhc29uKTtyZXR1cm59dGhpcy5fbGlzdGVuZXJzP3RoaXMuX2xpc3RlbmVycy5wdXNoKG4pOnRoaXMuX2xpc3RlbmVycz1bbl19LG5yLnByb3RvdHlwZS51bnN1YnNjcmliZT1mdW5jdGlvbihuKXtpZighIXRoaXMuX2xpc3RlbmVycyl7dmFyIHI9dGhpcy5fbGlzdGVuZXJzLmluZGV4T2Yobik7ciE9PS0xJiZ0aGlzLl9saXN0ZW5lcnMuc3BsaWNlKHIsMSl9fSxuci5zb3VyY2U9ZnVuY3Rpb24oKXt2YXIgbixyPW5ldyBucihmdW5jdGlvbih0KXtuPXR9KTtyZXR1cm57dG9rZW46cixjYW5jZWw6bn19O3ZhciB1dT1ucixfdT1mdW5jdGlvbihuKXtyZXR1cm4gZnVuY3Rpb24obyl7cmV0dXJuIG4uYXBwbHkobnVsbCxvKX19LGx1PXZlLGN1PWZ1bmN0aW9uKG4pe3JldHVybiBsdS5pc09iamVjdChuKSYmbi5pc0F4aW9zRXJyb3I9PT0hMH0sbnM9dmUsZHU9RHQsbm89aXUsaHU9WXQsbXU9Qm87ZnVuY3Rpb24gcnMoZSl7dmFyIG49bmV3IG5vKGUpLHI9ZHUobm8ucHJvdG90eXBlLnJlcXVlc3Qsbik7cmV0dXJuIG5zLmV4dGVuZChyLG5vLnByb3RvdHlwZSxuKSxucy5leHRlbmQocixuKSxyLmNyZWF0ZT1mdW5jdGlvbih0KXtyZXR1cm4gcnMoaHUoZSx0KSl9LHJ9dmFyIEdlPXJzKG11KTtHZS5BeGlvcz1ubyxHZS5DYW5jZWxlZEVycm9yPVFyLEdlLkNhbmNlbFRva2VuPXV1LEdlLmlzQ2FuY2VsPUt0LEdlLlZFUlNJT049SnQudmVyc2lvbixHZS50b0Zvcm1EYXRhPWt0LEdlLkF4aW9zRXJyb3I9UW4sR2UuQ2FuY2VsPUdlLkNhbmNlbGVkRXJyb3IsR2UuYWxsPWZ1bmN0aW9uKG4pe3JldHVybiBQcm9taXNlLmFsbChuKX0sR2Uuc3ByZWFkPV91LEdlLmlzQXhpb3NFcnJvcj1jdSxIby5leHBvcnRzPUdlLEhvLmV4cG9ydHMuZGVmYXVsdD1HZTt2YXIgJG89SG8uZXhwb3J0cyx3bj17fSxybz17fTtPYmplY3QuZGVmaW5lUHJvcGVydHkocm8sIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLHJvLkdldEVycm9yUGF5bG9hZD12b2lkIDA7ZnVuY3Rpb24gcHUoZSxuPW51bGwpe3JldHVybntlcnJvcjplLmNvZGUsZXJyb3JfZGVzY3JpcHRpb246ZS5kZXNjcmlwdGlvbix0aW1lc3RhbXA6RGF0ZS5ub3coKSxkZXRhaWxzOm59fXJvLkdldEVycm9yUGF5bG9hZD1wdTt2YXIgb289e30sR249e30sam89e2V4cG9ydHM6e319LG9zPXt9LHplPXt9LHJyPXt9LFRyPXt9LF9lPXt9LE5yPXt9OyhmdW5jdGlvbihlKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksZS5yZWdleHBDb2RlPWUuZ2V0RXNtRXhwb3J0TmFtZT1lLmdldFByb3BlcnR5PWUuc2FmZVN0cmluZ2lmeT1lLnN0cmluZ2lmeT1lLnN0ckNvbmNhdD1lLmFkZENvZGVBcmc9ZS5zdHI9ZS5fPWUubmlsPWUuX0NvZGU9ZS5OYW1lPWUuSURFTlRJRklFUj1lLl9Db2RlT3JOYW1lPXZvaWQgMDtjbGFzcyBue31lLl9Db2RlT3JOYW1lPW4sZS5JREVOVElGSUVSPS9eW2EteiRfXVthLXokXzAtOV0qJC9pO2NsYXNzIHIgZXh0ZW5kcyBue2NvbnN0cnVjdG9yKEEpe2lmKHN1cGVyKCksIWUuSURFTlRJRklFUi50ZXN0KEEpKXRocm93IG5ldyBFcnJvcigiQ29kZUdlbjogbmFtZSBtdXN0IGJlIGEgdmFsaWQgaWRlbnRpZmllciIpO3RoaXMuc3RyPUF9dG9TdHJpbmcoKXtyZXR1cm4gdGhpcy5zdHJ9ZW1wdHlTdHIoKXtyZXR1cm4hMX1nZXQgbmFtZXMoKXtyZXR1cm57W3RoaXMuc3RyXToxfX19ZS5OYW1lPXI7Y2xhc3MgbyBleHRlbmRzIG57Y29uc3RydWN0b3IoQSl7c3VwZXIoKSx0aGlzLl9pdGVtcz10eXBlb2YgQT09InN0cmluZyI/W0FdOkF9dG9TdHJpbmcoKXtyZXR1cm4gdGhpcy5zdHJ9ZW1wdHlTdHIoKXtpZih0aGlzLl9pdGVtcy5sZW5ndGg+MSlyZXR1cm4hMTtjb25zdCBBPXRoaXMuX2l0ZW1zWzBdO3JldHVybiBBPT09IiJ8fEE9PT0nIiInfWdldCBzdHIoKXt2YXIgQTtyZXR1cm4oQT10aGlzLl9zdHIpIT09bnVsbCYmQSE9PXZvaWQgMD9BOnRoaXMuX3N0cj10aGlzLl9pdGVtcy5yZWR1Y2UoKFUsUyk9PmAke1V9JHtTfWAsIiIpfWdldCBuYW1lcygpe3ZhciBBO3JldHVybihBPXRoaXMuX25hbWVzKSE9PW51bGwmJkEhPT12b2lkIDA/QTp0aGlzLl9uYW1lcz10aGlzLl9pdGVtcy5yZWR1Y2UoKFUsUyk9PihTIGluc3RhbmNlb2YgciYmKFVbUy5zdHJdPShVW1Muc3RyXXx8MCkrMSksVSkse30pfX1lLl9Db2RlPW8sZS5uaWw9bmV3IG8oIiIpO2Z1bmN0aW9uIHQoZiwuLi5BKXtjb25zdCBVPVtmWzBdXTtsZXQgUz0wO2Zvcig7UzxBLmxlbmd0aDspbChVLEFbU10pLFUucHVzaChmWysrU10pO3JldHVybiBuZXcgbyhVKX1lLl89dDtjb25zdCBzPW5ldyBvKCIrIik7ZnVuY3Rpb24gaShmLC4uLkEpe2NvbnN0IFU9W0QoZlswXSldO2xldCBTPTA7Zm9yKDtTPEEubGVuZ3RoOylVLnB1c2gocyksbChVLEFbU10pLFUucHVzaChzLEQoZlsrK1NdKSk7cmV0dXJuIGMoVSksbmV3IG8oVSl9ZS5zdHI9aTtmdW5jdGlvbiBsKGYsQSl7QSBpbnN0YW5jZW9mIG8/Zi5wdXNoKC4uLkEuX2l0ZW1zKTpBIGluc3RhbmNlb2Ygcj9mLnB1c2goQSk6Zi5wdXNoKGgoQSkpfWUuYWRkQ29kZUFyZz1sO2Z1bmN0aW9uIGMoZil7bGV0IEE9MTtmb3IoO0E8Zi5sZW5ndGgtMTspe2lmKGZbQV09PT1zKXtjb25zdCBVPW0oZltBLTFdLGZbQSsxXSk7aWYoVSE9PXZvaWQgMCl7Zi5zcGxpY2UoQS0xLDMsVSk7Y29udGludWV9ZltBKytdPSIrIn1BKyt9fWZ1bmN0aW9uIG0oZixBKXtpZihBPT09JyIiJylyZXR1cm4gZjtpZihmPT09JyIiJylyZXR1cm4gQTtpZih0eXBlb2YgZj09InN0cmluZyIpcmV0dXJuIEEgaW5zdGFuY2VvZiByfHxmW2YubGVuZ3RoLTFdIT09JyInP3ZvaWQgMDp0eXBlb2YgQSE9InN0cmluZyI/YCR7Zi5zbGljZSgwLC0xKX0ke0F9ImA6QVswXT09PSciJz9mLnNsaWNlKDAsLTEpK0Euc2xpY2UoMSk6dm9pZCAwO2lmKHR5cGVvZiBBPT0ic3RyaW5nIiYmQVswXT09PSciJyYmIShmIGluc3RhbmNlb2YgcikpcmV0dXJuYCIke2Z9JHtBLnNsaWNlKDEpfWB9ZnVuY3Rpb24gYShmLEEpe3JldHVybiBBLmVtcHR5U3RyKCk/ZjpmLmVtcHR5U3RyKCk/QTppYCR7Zn0ke0F9YH1lLnN0ckNvbmNhdD1hO2Z1bmN0aW9uIGgoZil7cmV0dXJuIHR5cGVvZiBmPT0ibnVtYmVyInx8dHlwZW9mIGY9PSJib29sZWFuInx8Zj09PW51bGw/ZjpEKEFycmF5LmlzQXJyYXkoZik/Zi5qb2luKCIsIik6Zil9ZnVuY3Rpb24gTyhmKXtyZXR1cm4gbmV3IG8oRChmKSl9ZS5zdHJpbmdpZnk9TztmdW5jdGlvbiBEKGYpe3JldHVybiBKU09OLnN0cmluZ2lmeShmKS5yZXBsYWNlKC9cdTIwMjgvZywiXFx1MjAyOCIpLnJlcGxhY2UoL1x1MjAyOS9nLCJcXHUyMDI5Iil9ZS5zYWZlU3RyaW5naWZ5PUQ7ZnVuY3Rpb24gdyhmKXtyZXR1cm4gdHlwZW9mIGY9PSJzdHJpbmciJiZlLklERU5USUZJRVIudGVzdChmKT9uZXcgbyhgLiR7Zn1gKTp0YFske2Z9XWB9ZS5nZXRQcm9wZXJ0eT13O2Z1bmN0aW9uIEMoZil7aWYodHlwZW9mIGY9PSJzdHJpbmciJiZlLklERU5USUZJRVIudGVzdChmKSlyZXR1cm4gbmV3IG8oYCR7Zn1gKTt0aHJvdyBuZXcgRXJyb3IoYENvZGVHZW46IGludmFsaWQgZXhwb3J0IG5hbWU6ICR7Zn0sIHVzZSBleHBsaWNpdCAkaWQgbmFtZSBtYXBwaW5nYCl9ZS5nZXRFc21FeHBvcnROYW1lPUM7ZnVuY3Rpb24gVChmKXtyZXR1cm4gbmV3IG8oZi50b1N0cmluZygpKX1lLnJlZ2V4cENvZGU9VH0pKE5yKTt2YXIgeG89e307KGZ1bmN0aW9uKGUpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxlLlZhbHVlU2NvcGU9ZS5WYWx1ZVNjb3BlTmFtZT1lLlNjb3BlPWUudmFyS2luZHM9ZS5Vc2VkVmFsdWVTdGF0ZT12b2lkIDA7Y29uc3Qgbj1OcjtjbGFzcyByIGV4dGVuZHMgRXJyb3J7Y29uc3RydWN0b3IobSl7c3VwZXIoYENvZGVHZW46ICJjb2RlIiBmb3IgJHttfSBub3QgZGVmaW5lZGApLHRoaXMudmFsdWU9bS52YWx1ZX19dmFyIG87KGZ1bmN0aW9uKGMpe2NbYy5TdGFydGVkPTBdPSJTdGFydGVkIixjW2MuQ29tcGxldGVkPTFdPSJDb21wbGV0ZWQifSkobz1lLlVzZWRWYWx1ZVN0YXRlfHwoZS5Vc2VkVmFsdWVTdGF0ZT17fSkpLGUudmFyS2luZHM9e2NvbnN0Om5ldyBuLk5hbWUoImNvbnN0IiksbGV0Om5ldyBuLk5hbWUoImxldCIpLHZhcjpuZXcgbi5OYW1lKCJ2YXIiKX07Y2xhc3MgdHtjb25zdHJ1Y3Rvcih7cHJlZml4ZXM6bSxwYXJlbnQ6YX09e30pe3RoaXMuX25hbWVzPXt9LHRoaXMuX3ByZWZpeGVzPW0sdGhpcy5fcGFyZW50PWF9dG9OYW1lKG0pe3JldHVybiBtIGluc3RhbmNlb2Ygbi5OYW1lP206dGhpcy5uYW1lKG0pfW5hbWUobSl7cmV0dXJuIG5ldyBuLk5hbWUodGhpcy5fbmV3TmFtZShtKSl9X25ld05hbWUobSl7Y29uc3QgYT10aGlzLl9uYW1lc1ttXXx8dGhpcy5fbmFtZUdyb3VwKG0pO3JldHVybmAke219JHthLmluZGV4Kyt9YH1fbmFtZUdyb3VwKG0pe3ZhciBhLGg7aWYoKChoPShhPXRoaXMuX3BhcmVudCk9PT1udWxsfHxhPT09dm9pZCAwP3ZvaWQgMDphLl9wcmVmaXhlcyk9PT1udWxsfHxoPT09dm9pZCAwP3ZvaWQgMDpoLmhhcyhtKSl8fHRoaXMuX3ByZWZpeGVzJiYhdGhpcy5fcHJlZml4ZXMuaGFzKG0pKXRocm93IG5ldyBFcnJvcihgQ29kZUdlbjogcHJlZml4ICIke219IiBpcyBub3QgYWxsb3dlZCBpbiB0aGlzIHNjb3BlYCk7cmV0dXJuIHRoaXMuX25hbWVzW21dPXtwcmVmaXg6bSxpbmRleDowfX19ZS5TY29wZT10O2NsYXNzIHMgZXh0ZW5kcyBuLk5hbWV7Y29uc3RydWN0b3IobSxhKXtzdXBlcihhKSx0aGlzLnByZWZpeD1tfXNldFZhbHVlKG0se3Byb3BlcnR5OmEsaXRlbUluZGV4Omh9KXt0aGlzLnZhbHVlPW0sdGhpcy5zY29wZVBhdGg9KDAsbi5fKWAuJHtuZXcgbi5OYW1lKGEpfVske2h9XWB9fWUuVmFsdWVTY29wZU5hbWU9cztjb25zdCBpPSgwLG4uXylgXG5gO2NsYXNzIGwgZXh0ZW5kcyB0e2NvbnN0cnVjdG9yKG0pe3N1cGVyKG0pLHRoaXMuX3ZhbHVlcz17fSx0aGlzLl9zY29wZT1tLnNjb3BlLHRoaXMub3B0cz1sZShZKHt9LG0pLHtfbjptLmxpbmVzP2k6bi5uaWx9KX1nZXQoKXtyZXR1cm4gdGhpcy5fc2NvcGV9bmFtZShtKXtyZXR1cm4gbmV3IHMobSx0aGlzLl9uZXdOYW1lKG0pKX12YWx1ZShtLGEpe3ZhciBoO2lmKGEucmVmPT09dm9pZCAwKXRocm93IG5ldyBFcnJvcigiQ29kZUdlbjogcmVmIG11c3QgYmUgcGFzc2VkIGluIHZhbHVlIik7Y29uc3QgTz10aGlzLnRvTmFtZShtKSx7cHJlZml4OkR9PU8sdz0oaD1hLmtleSkhPT1udWxsJiZoIT09dm9pZCAwP2g6YS5yZWY7bGV0IEM9dGhpcy5fdmFsdWVzW0RdO2lmKEMpe2NvbnN0IEE9Qy5nZXQodyk7aWYoQSlyZXR1cm4gQX1lbHNlIEM9dGhpcy5fdmFsdWVzW0RdPW5ldyBNYXA7Qy5zZXQodyxPKTtjb25zdCBUPXRoaXMuX3Njb3BlW0RdfHwodGhpcy5fc2NvcGVbRF09W10pLGY9VC5sZW5ndGg7cmV0dXJuIFRbZl09YS5yZWYsTy5zZXRWYWx1ZShhLHtwcm9wZXJ0eTpELGl0ZW1JbmRleDpmfSksT31nZXRWYWx1ZShtLGEpe2NvbnN0IGg9dGhpcy5fdmFsdWVzW21dO2lmKCEhaClyZXR1cm4gaC5nZXQoYSl9c2NvcGVSZWZzKG0sYT10aGlzLl92YWx1ZXMpe3JldHVybiB0aGlzLl9yZWR1Y2VWYWx1ZXMoYSxoPT57aWYoaC5zY29wZVBhdGg9PT12b2lkIDApdGhyb3cgbmV3IEVycm9yKGBDb2RlR2VuOiBuYW1lICIke2h9IiBoYXMgbm8gdmFsdWVgKTtyZXR1cm4oMCxuLl8pYCR7bX0ke2guc2NvcGVQYXRofWB9KX1zY29wZUNvZGUobT10aGlzLl92YWx1ZXMsYSxoKXtyZXR1cm4gdGhpcy5fcmVkdWNlVmFsdWVzKG0sTz0+e2lmKE8udmFsdWU9PT12b2lkIDApdGhyb3cgbmV3IEVycm9yKGBDb2RlR2VuOiBuYW1lICIke099IiBoYXMgbm8gdmFsdWVgKTtyZXR1cm4gTy52YWx1ZS5jb2RlfSxhLGgpfV9yZWR1Y2VWYWx1ZXMobSxhLGg9e30sTyl7bGV0IEQ9bi5uaWw7Zm9yKGNvbnN0IHcgaW4gbSl7Y29uc3QgQz1tW3ddO2lmKCFDKWNvbnRpbnVlO2NvbnN0IFQ9aFt3XT1oW3ddfHxuZXcgTWFwO0MuZm9yRWFjaChmPT57aWYoVC5oYXMoZikpcmV0dXJuO1Quc2V0KGYsby5TdGFydGVkKTtsZXQgQT1hKGYpO2lmKEEpe2NvbnN0IFU9dGhpcy5vcHRzLmVzNT9lLnZhcktpbmRzLnZhcjplLnZhcktpbmRzLmNvbnN0O0Q9KDAsbi5fKWAke0R9JHtVfSAke2Z9ID0gJHtBfTske3RoaXMub3B0cy5fbn1gfWVsc2UgaWYoQT1PPT1udWxsP3ZvaWQgMDpPKGYpKUQ9KDAsbi5fKWAke0R9JHtBfSR7dGhpcy5vcHRzLl9ufWA7ZWxzZSB0aHJvdyBuZXcgcihmKTtULnNldChmLG8uQ29tcGxldGVkKX0pfXJldHVybiBEfX1lLlZhbHVlU2NvcGU9bH0pKHhvKSxmdW5jdGlvbihlKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksZS5vcj1lLmFuZD1lLm5vdD1lLkNvZGVHZW49ZS5vcGVyYXRvcnM9ZS52YXJLaW5kcz1lLlZhbHVlU2NvcGVOYW1lPWUuVmFsdWVTY29wZT1lLlNjb3BlPWUuTmFtZT1lLnJlZ2V4cENvZGU9ZS5zdHJpbmdpZnk9ZS5nZXRQcm9wZXJ0eT1lLm5pbD1lLnN0ckNvbmNhdD1lLnN0cj1lLl89dm9pZCAwO2NvbnN0IG49TnIscj14bzt2YXIgbz1OcjtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiXyIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG8uX319KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwic3RyIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gby5zdHJ9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsInN0ckNvbmNhdCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG8uc3RyQ29uY2F0fX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJuaWwiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBvLm5pbH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiZ2V0UHJvcGVydHkiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBvLmdldFByb3BlcnR5fX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJzdHJpbmdpZnkiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBvLnN0cmluZ2lmeX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwicmVnZXhwQ29kZSIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG8ucmVnZXhwQ29kZX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiTmFtZSIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG8uTmFtZX19KTt2YXIgdD14bztPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiU2NvcGUiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0LlNjb3BlfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJWYWx1ZVNjb3BlIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdC5WYWx1ZVNjb3BlfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJWYWx1ZVNjb3BlTmFtZSIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHQuVmFsdWVTY29wZU5hbWV9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsInZhcktpbmRzIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdC52YXJLaW5kc319KSxlLm9wZXJhdG9ycz17R1Q6bmV3IG4uX0NvZGUoIj4iKSxHVEU6bmV3IG4uX0NvZGUoIj49IiksTFQ6bmV3IG4uX0NvZGUoIjwiKSxMVEU6bmV3IG4uX0NvZGUoIjw9IiksRVE6bmV3IG4uX0NvZGUoIj09PSIpLE5FUTpuZXcgbi5fQ29kZSgiIT09IiksTk9UOm5ldyBuLl9Db2RlKCIhIiksT1I6bmV3IG4uX0NvZGUoInx8IiksQU5EOm5ldyBuLl9Db2RlKCImJiIpLEFERDpuZXcgbi5fQ29kZSgiKyIpfTtjbGFzcyBze29wdGltaXplTm9kZXMoKXtyZXR1cm4gdGhpc31vcHRpbWl6ZU5hbWVzKHUscCl7cmV0dXJuIHRoaXN9fWNsYXNzIGkgZXh0ZW5kcyBze2NvbnN0cnVjdG9yKHUscCx2KXtzdXBlcigpLHRoaXMudmFyS2luZD11LHRoaXMubmFtZT1wLHRoaXMucmhzPXZ9cmVuZGVyKHtlczU6dSxfbjpwfSl7Y29uc3Qgdj11P3IudmFyS2luZHMudmFyOnRoaXMudmFyS2luZCxMPXRoaXMucmhzPT09dm9pZCAwPyIiOmAgPSAke3RoaXMucmhzfWA7cmV0dXJuYCR7dn0gJHt0aGlzLm5hbWV9JHtMfTtgK3B9b3B0aW1pemVOYW1lcyh1LHApe2lmKCEhdVt0aGlzLm5hbWUuc3RyXSlyZXR1cm4gdGhpcy5yaHMmJih0aGlzLnJocz1xKHRoaXMucmhzLHUscCkpLHRoaXN9Z2V0IG5hbWVzKCl7cmV0dXJuIHRoaXMucmhzIGluc3RhbmNlb2Ygbi5fQ29kZU9yTmFtZT90aGlzLnJocy5uYW1lczp7fX19Y2xhc3MgbCBleHRlbmRzIHN7Y29uc3RydWN0b3IodSxwLHYpe3N1cGVyKCksdGhpcy5saHM9dSx0aGlzLnJocz1wLHRoaXMuc2lkZUVmZmVjdHM9dn1yZW5kZXIoe19uOnV9KXtyZXR1cm5gJHt0aGlzLmxoc30gPSAke3RoaXMucmhzfTtgK3V9b3B0aW1pemVOYW1lcyh1LHApe2lmKCEodGhpcy5saHMgaW5zdGFuY2VvZiBuLk5hbWUmJiF1W3RoaXMubGhzLnN0cl0mJiF0aGlzLnNpZGVFZmZlY3RzKSlyZXR1cm4gdGhpcy5yaHM9cSh0aGlzLnJocyx1LHApLHRoaXN9Z2V0IG5hbWVzKCl7Y29uc3QgdT10aGlzLmxocyBpbnN0YW5jZW9mIG4uTmFtZT97fTpZKHt9LHRoaXMubGhzLm5hbWVzKTtyZXR1cm4gaWUodSx0aGlzLnJocyl9fWNsYXNzIGMgZXh0ZW5kcyBse2NvbnN0cnVjdG9yKHUscCx2LEwpe3N1cGVyKHUsdixMKSx0aGlzLm9wPXB9cmVuZGVyKHtfbjp1fSl7cmV0dXJuYCR7dGhpcy5saHN9ICR7dGhpcy5vcH09ICR7dGhpcy5yaHN9O2ArdX19Y2xhc3MgbSBleHRlbmRzIHN7Y29uc3RydWN0b3IodSl7c3VwZXIoKSx0aGlzLmxhYmVsPXUsdGhpcy5uYW1lcz17fX1yZW5kZXIoe19uOnV9KXtyZXR1cm5gJHt0aGlzLmxhYmVsfTpgK3V9fWNsYXNzIGEgZXh0ZW5kcyBze2NvbnN0cnVjdG9yKHUpe3N1cGVyKCksdGhpcy5sYWJlbD11LHRoaXMubmFtZXM9e319cmVuZGVyKHtfbjp1fSl7cmV0dXJuYGJyZWFrJHt0aGlzLmxhYmVsP2AgJHt0aGlzLmxhYmVsfWA6IiJ9O2ArdX19Y2xhc3MgaCBleHRlbmRzIHN7Y29uc3RydWN0b3IodSl7c3VwZXIoKSx0aGlzLmVycm9yPXV9cmVuZGVyKHtfbjp1fSl7cmV0dXJuYHRocm93ICR7dGhpcy5lcnJvcn07YCt1fWdldCBuYW1lcygpe3JldHVybiB0aGlzLmVycm9yLm5hbWVzfX1jbGFzcyBPIGV4dGVuZHMgc3tjb25zdHJ1Y3Rvcih1KXtzdXBlcigpLHRoaXMuY29kZT11fXJlbmRlcih7X246dX0pe3JldHVybmAke3RoaXMuY29kZX07YCt1fW9wdGltaXplTm9kZXMoKXtyZXR1cm5gJHt0aGlzLmNvZGV9YD90aGlzOnZvaWQgMH1vcHRpbWl6ZU5hbWVzKHUscCl7cmV0dXJuIHRoaXMuY29kZT1xKHRoaXMuY29kZSx1LHApLHRoaXN9Z2V0IG5hbWVzKCl7cmV0dXJuIHRoaXMuY29kZSBpbnN0YW5jZW9mIG4uX0NvZGVPck5hbWU/dGhpcy5jb2RlLm5hbWVzOnt9fX1jbGFzcyBEIGV4dGVuZHMgc3tjb25zdHJ1Y3Rvcih1PVtdKXtzdXBlcigpLHRoaXMubm9kZXM9dX1yZW5kZXIodSl7cmV0dXJuIHRoaXMubm9kZXMucmVkdWNlKChwLHYpPT5wK3YucmVuZGVyKHUpLCIiKX1vcHRpbWl6ZU5vZGVzKCl7Y29uc3R7bm9kZXM6dX09dGhpcztsZXQgcD11Lmxlbmd0aDtmb3IoO3AtLTspe2NvbnN0IHY9dVtwXS5vcHRpbWl6ZU5vZGVzKCk7QXJyYXkuaXNBcnJheSh2KT91LnNwbGljZShwLDEsLi4udik6dj91W3BdPXY6dS5zcGxpY2UocCwxKX1yZXR1cm4gdS5sZW5ndGg+MD90aGlzOnZvaWQgMH1vcHRpbWl6ZU5hbWVzKHUscCl7Y29uc3R7bm9kZXM6dn09dGhpcztsZXQgTD12Lmxlbmd0aDtmb3IoO0wtLTspe2NvbnN0IEI9dltMXTtCLm9wdGltaXplTmFtZXModSxwKXx8KEVlKHUsQi5uYW1lcyksdi5zcGxpY2UoTCwxKSl9cmV0dXJuIHYubGVuZ3RoPjA/dGhpczp2b2lkIDB9Z2V0IG5hbWVzKCl7cmV0dXJuIHRoaXMubm9kZXMucmVkdWNlKCh1LHApPT56KHUscC5uYW1lcykse30pfX1jbGFzcyB3IGV4dGVuZHMgRHtyZW5kZXIodSl7cmV0dXJuInsiK3UuX24rc3VwZXIucmVuZGVyKHUpKyJ9Iit1Ll9ufX1jbGFzcyBDIGV4dGVuZHMgRHt9Y2xhc3MgVCBleHRlbmRzIHd7fVQua2luZD0iZWxzZSI7Y2xhc3MgZiBleHRlbmRzIHd7Y29uc3RydWN0b3IodSxwKXtzdXBlcihwKSx0aGlzLmNvbmRpdGlvbj11fXJlbmRlcih1KXtsZXQgcD1gaWYoJHt0aGlzLmNvbmRpdGlvbn0pYCtzdXBlci5yZW5kZXIodSk7cmV0dXJuIHRoaXMuZWxzZSYmKHArPSJlbHNlICIrdGhpcy5lbHNlLnJlbmRlcih1KSkscH1vcHRpbWl6ZU5vZGVzKCl7c3VwZXIub3B0aW1pemVOb2RlcygpO2NvbnN0IHU9dGhpcy5jb25kaXRpb247aWYodT09PSEwKXJldHVybiB0aGlzLm5vZGVzO2xldCBwPXRoaXMuZWxzZTtpZihwKXtjb25zdCB2PXAub3B0aW1pemVOb2RlcygpO3A9dGhpcy5lbHNlPUFycmF5LmlzQXJyYXkodik/bmV3IFQodik6dn1pZihwKXJldHVybiB1PT09ITE/cCBpbnN0YW5jZW9mIGY/cDpwLm5vZGVzOnRoaXMubm9kZXMubGVuZ3RoP3RoaXM6bmV3IGYoT2UodSkscCBpbnN0YW5jZW9mIGY/W3BdOnAubm9kZXMpO2lmKCEodT09PSExfHwhdGhpcy5ub2Rlcy5sZW5ndGgpKXJldHVybiB0aGlzfW9wdGltaXplTmFtZXModSxwKXt2YXIgdjtpZih0aGlzLmVsc2U9KHY9dGhpcy5lbHNlKT09PW51bGx8fHY9PT12b2lkIDA/dm9pZCAwOnYub3B0aW1pemVOYW1lcyh1LHApLCEhKHN1cGVyLm9wdGltaXplTmFtZXModSxwKXx8dGhpcy5lbHNlKSlyZXR1cm4gdGhpcy5jb25kaXRpb249cSh0aGlzLmNvbmRpdGlvbix1LHApLHRoaXN9Z2V0IG5hbWVzKCl7Y29uc3QgdT1zdXBlci5uYW1lcztyZXR1cm4gaWUodSx0aGlzLmNvbmRpdGlvbiksdGhpcy5lbHNlJiZ6KHUsdGhpcy5lbHNlLm5hbWVzKSx1fX1mLmtpbmQ9ImlmIjtjbGFzcyBBIGV4dGVuZHMgd3t9QS5raW5kPSJmb3IiO2NsYXNzIFUgZXh0ZW5kcyBBe2NvbnN0cnVjdG9yKHUpe3N1cGVyKCksdGhpcy5pdGVyYXRpb249dX1yZW5kZXIodSl7cmV0dXJuYGZvcigke3RoaXMuaXRlcmF0aW9ufSlgK3N1cGVyLnJlbmRlcih1KX1vcHRpbWl6ZU5hbWVzKHUscCl7aWYoISFzdXBlci5vcHRpbWl6ZU5hbWVzKHUscCkpcmV0dXJuIHRoaXMuaXRlcmF0aW9uPXEodGhpcy5pdGVyYXRpb24sdSxwKSx0aGlzfWdldCBuYW1lcygpe3JldHVybiB6KHN1cGVyLm5hbWVzLHRoaXMuaXRlcmF0aW9uLm5hbWVzKX19Y2xhc3MgUyBleHRlbmRzIEF7Y29uc3RydWN0b3IodSxwLHYsTCl7c3VwZXIoKSx0aGlzLnZhcktpbmQ9dSx0aGlzLm5hbWU9cCx0aGlzLmZyb209dix0aGlzLnRvPUx9cmVuZGVyKHUpe2NvbnN0IHA9dS5lczU/ci52YXJLaW5kcy52YXI6dGhpcy52YXJLaW5kLHtuYW1lOnYsZnJvbTpMLHRvOkJ9PXRoaXM7cmV0dXJuYGZvcigke3B9ICR7dn09JHtMfTsgJHt2fTwke0J9OyAke3Z9KyspYCtzdXBlci5yZW5kZXIodSl9Z2V0IG5hbWVzKCl7Y29uc3QgdT1pZShzdXBlci5uYW1lcyx0aGlzLmZyb20pO3JldHVybiBpZSh1LHRoaXMudG8pfX1jbGFzcyBqIGV4dGVuZHMgQXtjb25zdHJ1Y3Rvcih1LHAsdixMKXtzdXBlcigpLHRoaXMubG9vcD11LHRoaXMudmFyS2luZD1wLHRoaXMubmFtZT12LHRoaXMuaXRlcmFibGU9TH1yZW5kZXIodSl7cmV0dXJuYGZvcigke3RoaXMudmFyS2luZH0gJHt0aGlzLm5hbWV9ICR7dGhpcy5sb29wfSAke3RoaXMuaXRlcmFibGV9KWArc3VwZXIucmVuZGVyKHUpfW9wdGltaXplTmFtZXModSxwKXtpZighIXN1cGVyLm9wdGltaXplTmFtZXModSxwKSlyZXR1cm4gdGhpcy5pdGVyYWJsZT1xKHRoaXMuaXRlcmFibGUsdSxwKSx0aGlzfWdldCBuYW1lcygpe3JldHVybiB6KHN1cGVyLm5hbWVzLHRoaXMuaXRlcmFibGUubmFtZXMpfX1jbGFzcyBOIGV4dGVuZHMgd3tjb25zdHJ1Y3Rvcih1LHAsdil7c3VwZXIoKSx0aGlzLm5hbWU9dSx0aGlzLmFyZ3M9cCx0aGlzLmFzeW5jPXZ9cmVuZGVyKHUpe3JldHVybmAke3RoaXMuYXN5bmM/ImFzeW5jICI6IiJ9ZnVuY3Rpb24gJHt0aGlzLm5hbWV9KCR7dGhpcy5hcmdzfSlgK3N1cGVyLnJlbmRlcih1KX19Ti5raW5kPSJmdW5jIjtjbGFzcyBIIGV4dGVuZHMgRHtyZW5kZXIodSl7cmV0dXJuInJldHVybiAiK3N1cGVyLnJlbmRlcih1KX19SC5raW5kPSJyZXR1cm4iO2NsYXNzIEcgZXh0ZW5kcyB3e3JlbmRlcih1KXtsZXQgcD0idHJ5IitzdXBlci5yZW5kZXIodSk7cmV0dXJuIHRoaXMuY2F0Y2gmJihwKz10aGlzLmNhdGNoLnJlbmRlcih1KSksdGhpcy5maW5hbGx5JiYocCs9dGhpcy5maW5hbGx5LnJlbmRlcih1KSkscH1vcHRpbWl6ZU5vZGVzKCl7dmFyIHUscDtyZXR1cm4gc3VwZXIub3B0aW1pemVOb2RlcygpLCh1PXRoaXMuY2F0Y2gpPT09bnVsbHx8dT09PXZvaWQgMHx8dS5vcHRpbWl6ZU5vZGVzKCksKHA9dGhpcy5maW5hbGx5KT09PW51bGx8fHA9PT12b2lkIDB8fHAub3B0aW1pemVOb2RlcygpLHRoaXN9b3B0aW1pemVOYW1lcyh1LHApe3ZhciB2LEw7cmV0dXJuIHN1cGVyLm9wdGltaXplTmFtZXModSxwKSwodj10aGlzLmNhdGNoKT09PW51bGx8fHY9PT12b2lkIDB8fHYub3B0aW1pemVOYW1lcyh1LHApLChMPXRoaXMuZmluYWxseSk9PT1udWxsfHxMPT09dm9pZCAwfHxMLm9wdGltaXplTmFtZXModSxwKSx0aGlzfWdldCBuYW1lcygpe2NvbnN0IHU9c3VwZXIubmFtZXM7cmV0dXJuIHRoaXMuY2F0Y2gmJnoodSx0aGlzLmNhdGNoLm5hbWVzKSx0aGlzLmZpbmFsbHkmJnoodSx0aGlzLmZpbmFsbHkubmFtZXMpLHV9fWNsYXNzIEYgZXh0ZW5kcyB3e2NvbnN0cnVjdG9yKHUpe3N1cGVyKCksdGhpcy5lcnJvcj11fXJlbmRlcih1KXtyZXR1cm5gY2F0Y2goJHt0aGlzLmVycm9yfSlgK3N1cGVyLnJlbmRlcih1KX19Ri5raW5kPSJjYXRjaCI7Y2xhc3MgVyBleHRlbmRzIHd7cmVuZGVyKHUpe3JldHVybiJmaW5hbGx5IitzdXBlci5yZW5kZXIodSl9fVcua2luZD0iZmluYWxseSI7Y2xhc3MgbWV7Y29uc3RydWN0b3IodSxwPXt9KXt0aGlzLl92YWx1ZXM9e30sdGhpcy5fYmxvY2tTdGFydHM9W10sdGhpcy5fY29uc3RhbnRzPXt9LHRoaXMub3B0cz1sZShZKHt9LHApLHtfbjpwLmxpbmVzP2AKYDoiIn0pLHRoaXMuX2V4dFNjb3BlPXUsdGhpcy5fc2NvcGU9bmV3IHIuU2NvcGUoe3BhcmVudDp1fSksdGhpcy5fbm9kZXM9W25ldyBDXX10b1N0cmluZygpe3JldHVybiB0aGlzLl9yb290LnJlbmRlcih0aGlzLm9wdHMpfW5hbWUodSl7cmV0dXJuIHRoaXMuX3Njb3BlLm5hbWUodSl9c2NvcGVOYW1lKHUpe3JldHVybiB0aGlzLl9leHRTY29wZS5uYW1lKHUpfXNjb3BlVmFsdWUodSxwKXtjb25zdCB2PXRoaXMuX2V4dFNjb3BlLnZhbHVlKHUscCk7cmV0dXJuKHRoaXMuX3ZhbHVlc1t2LnByZWZpeF18fCh0aGlzLl92YWx1ZXNbdi5wcmVmaXhdPW5ldyBTZXQpKS5hZGQodiksdn1nZXRTY29wZVZhbHVlKHUscCl7cmV0dXJuIHRoaXMuX2V4dFNjb3BlLmdldFZhbHVlKHUscCl9c2NvcGVSZWZzKHUpe3JldHVybiB0aGlzLl9leHRTY29wZS5zY29wZVJlZnModSx0aGlzLl92YWx1ZXMpfXNjb3BlQ29kZSgpe3JldHVybiB0aGlzLl9leHRTY29wZS5zY29wZUNvZGUodGhpcy5fdmFsdWVzKX1fZGVmKHUscCx2LEwpe2NvbnN0IEI9dGhpcy5fc2NvcGUudG9OYW1lKHApO3JldHVybiB2IT09dm9pZCAwJiZMJiYodGhpcy5fY29uc3RhbnRzW0Iuc3RyXT12KSx0aGlzLl9sZWFmTm9kZShuZXcgaSh1LEIsdikpLEJ9Y29uc3QodSxwLHYpe3JldHVybiB0aGlzLl9kZWYoci52YXJLaW5kcy5jb25zdCx1LHAsdil9bGV0KHUscCx2KXtyZXR1cm4gdGhpcy5fZGVmKHIudmFyS2luZHMubGV0LHUscCx2KX12YXIodSxwLHYpe3JldHVybiB0aGlzLl9kZWYoci52YXJLaW5kcy52YXIsdSxwLHYpfWFzc2lnbih1LHAsdil7cmV0dXJuIHRoaXMuX2xlYWZOb2RlKG5ldyBsKHUscCx2KSl9YWRkKHUscCl7cmV0dXJuIHRoaXMuX2xlYWZOb2RlKG5ldyBjKHUsZS5vcGVyYXRvcnMuQURELHApKX1jb2RlKHUpe3JldHVybiB0eXBlb2YgdT09ImZ1bmN0aW9uIj91KCk6dSE9PW4ubmlsJiZ0aGlzLl9sZWFmTm9kZShuZXcgTyh1KSksdGhpc31vYmplY3QoLi4udSl7Y29uc3QgcD1bInsiXTtmb3IoY29uc3RbdixMXW9mIHUpcC5sZW5ndGg+MSYmcC5wdXNoKCIsIikscC5wdXNoKHYpLCh2IT09THx8dGhpcy5vcHRzLmVzNSkmJihwLnB1c2goIjoiKSwoMCxuLmFkZENvZGVBcmcpKHAsTCkpO3JldHVybiBwLnB1c2goIn0iKSxuZXcgbi5fQ29kZShwKX1pZih1LHAsdil7aWYodGhpcy5fYmxvY2tOb2RlKG5ldyBmKHUpKSxwJiZ2KXRoaXMuY29kZShwKS5lbHNlKCkuY29kZSh2KS5lbmRJZigpO2Vsc2UgaWYocCl0aGlzLmNvZGUocCkuZW5kSWYoKTtlbHNlIGlmKHYpdGhyb3cgbmV3IEVycm9yKCdDb2RlR2VuOiAiZWxzZSIgYm9keSB3aXRob3V0ICJ0aGVuIiBib2R5Jyk7cmV0dXJuIHRoaXN9ZWxzZUlmKHUpe3JldHVybiB0aGlzLl9lbHNlTm9kZShuZXcgZih1KSl9ZWxzZSgpe3JldHVybiB0aGlzLl9lbHNlTm9kZShuZXcgVCl9ZW5kSWYoKXtyZXR1cm4gdGhpcy5fZW5kQmxvY2tOb2RlKGYsVCl9X2Zvcih1LHApe3JldHVybiB0aGlzLl9ibG9ja05vZGUodSkscCYmdGhpcy5jb2RlKHApLmVuZEZvcigpLHRoaXN9Zm9yKHUscCl7cmV0dXJuIHRoaXMuX2ZvcihuZXcgVSh1KSxwKX1mb3JSYW5nZSh1LHAsdixMLEI9dGhpcy5vcHRzLmVzNT9yLnZhcktpbmRzLnZhcjpyLnZhcktpbmRzLmxldCl7Y29uc3QgUT10aGlzLl9zY29wZS50b05hbWUodSk7cmV0dXJuIHRoaXMuX2ZvcihuZXcgUyhCLFEscCx2KSwoKT0+TChRKSl9Zm9yT2YodSxwLHYsTD1yLnZhcktpbmRzLmNvbnN0KXtjb25zdCBCPXRoaXMuX3Njb3BlLnRvTmFtZSh1KTtpZih0aGlzLm9wdHMuZXM1KXtjb25zdCBRPXAgaW5zdGFuY2VvZiBuLk5hbWU/cDp0aGlzLnZhcigiX2FyciIscCk7cmV0dXJuIHRoaXMuZm9yUmFuZ2UoIl9pIiwwLCgwLG4uXylgJHtRfS5sZW5ndGhgLHJlPT57dGhpcy52YXIoQiwoMCxuLl8pYCR7UX1bJHtyZX1dYCksdihCKX0pfXJldHVybiB0aGlzLl9mb3IobmV3IGooIm9mIixMLEIscCksKCk9PnYoQikpfWZvckluKHUscCx2LEw9dGhpcy5vcHRzLmVzNT9yLnZhcktpbmRzLnZhcjpyLnZhcktpbmRzLmNvbnN0KXtpZih0aGlzLm9wdHMub3duUHJvcGVydGllcylyZXR1cm4gdGhpcy5mb3JPZih1LCgwLG4uXylgT2JqZWN0LmtleXMoJHtwfSlgLHYpO2NvbnN0IEI9dGhpcy5fc2NvcGUudG9OYW1lKHUpO3JldHVybiB0aGlzLl9mb3IobmV3IGooImluIixMLEIscCksKCk9PnYoQikpfWVuZEZvcigpe3JldHVybiB0aGlzLl9lbmRCbG9ja05vZGUoQSl9bGFiZWwodSl7cmV0dXJuIHRoaXMuX2xlYWZOb2RlKG5ldyBtKHUpKX1icmVhayh1KXtyZXR1cm4gdGhpcy5fbGVhZk5vZGUobmV3IGEodSkpfXJldHVybih1KXtjb25zdCBwPW5ldyBIO2lmKHRoaXMuX2Jsb2NrTm9kZShwKSx0aGlzLmNvZGUodSkscC5ub2Rlcy5sZW5ndGghPT0xKXRocm93IG5ldyBFcnJvcignQ29kZUdlbjogInJldHVybiIgc2hvdWxkIGhhdmUgb25lIG5vZGUnKTtyZXR1cm4gdGhpcy5fZW5kQmxvY2tOb2RlKEgpfXRyeSh1LHAsdil7aWYoIXAmJiF2KXRocm93IG5ldyBFcnJvcignQ29kZUdlbjogInRyeSIgd2l0aG91dCAiY2F0Y2giIGFuZCAiZmluYWxseSInKTtjb25zdCBMPW5ldyBHO2lmKHRoaXMuX2Jsb2NrTm9kZShMKSx0aGlzLmNvZGUodSkscCl7Y29uc3QgQj10aGlzLm5hbWUoImUiKTt0aGlzLl9jdXJyTm9kZT1MLmNhdGNoPW5ldyBGKEIpLHAoQil9cmV0dXJuIHYmJih0aGlzLl9jdXJyTm9kZT1MLmZpbmFsbHk9bmV3IFcsdGhpcy5jb2RlKHYpKSx0aGlzLl9lbmRCbG9ja05vZGUoRixXKX10aHJvdyh1KXtyZXR1cm4gdGhpcy5fbGVhZk5vZGUobmV3IGgodSkpfWJsb2NrKHUscCl7cmV0dXJuIHRoaXMuX2Jsb2NrU3RhcnRzLnB1c2godGhpcy5fbm9kZXMubGVuZ3RoKSx1JiZ0aGlzLmNvZGUodSkuZW5kQmxvY2socCksdGhpc31lbmRCbG9jayh1KXtjb25zdCBwPXRoaXMuX2Jsb2NrU3RhcnRzLnBvcCgpO2lmKHA9PT12b2lkIDApdGhyb3cgbmV3IEVycm9yKCJDb2RlR2VuOiBub3QgaW4gc2VsZi1iYWxhbmNpbmcgYmxvY2siKTtjb25zdCB2PXRoaXMuX25vZGVzLmxlbmd0aC1wO2lmKHY8MHx8dSE9PXZvaWQgMCYmdiE9PXUpdGhyb3cgbmV3IEVycm9yKGBDb2RlR2VuOiB3cm9uZyBudW1iZXIgb2Ygbm9kZXM6ICR7dn0gdnMgJHt1fSBleHBlY3RlZGApO3JldHVybiB0aGlzLl9ub2Rlcy5sZW5ndGg9cCx0aGlzfWZ1bmModSxwPW4ubmlsLHYsTCl7cmV0dXJuIHRoaXMuX2Jsb2NrTm9kZShuZXcgTih1LHAsdikpLEwmJnRoaXMuY29kZShMKS5lbmRGdW5jKCksdGhpc31lbmRGdW5jKCl7cmV0dXJuIHRoaXMuX2VuZEJsb2NrTm9kZShOKX1vcHRpbWl6ZSh1PTEpe2Zvcig7dS0tID4wOyl0aGlzLl9yb290Lm9wdGltaXplTm9kZXMoKSx0aGlzLl9yb290Lm9wdGltaXplTmFtZXModGhpcy5fcm9vdC5uYW1lcyx0aGlzLl9jb25zdGFudHMpfV9sZWFmTm9kZSh1KXtyZXR1cm4gdGhpcy5fY3Vyck5vZGUubm9kZXMucHVzaCh1KSx0aGlzfV9ibG9ja05vZGUodSl7dGhpcy5fY3Vyck5vZGUubm9kZXMucHVzaCh1KSx0aGlzLl9ub2Rlcy5wdXNoKHUpfV9lbmRCbG9ja05vZGUodSxwKXtjb25zdCB2PXRoaXMuX2N1cnJOb2RlO2lmKHYgaW5zdGFuY2VvZiB1fHxwJiZ2IGluc3RhbmNlb2YgcClyZXR1cm4gdGhpcy5fbm9kZXMucG9wKCksdGhpczt0aHJvdyBuZXcgRXJyb3IoYENvZGVHZW46IG5vdCBpbiBibG9jayAiJHtwP2Ake3Uua2luZH0vJHtwLmtpbmR9YDp1LmtpbmR9ImApfV9lbHNlTm9kZSh1KXtjb25zdCBwPXRoaXMuX2N1cnJOb2RlO2lmKCEocCBpbnN0YW5jZW9mIGYpKXRocm93IG5ldyBFcnJvcignQ29kZUdlbjogImVsc2UiIHdpdGhvdXQgImlmIicpO3JldHVybiB0aGlzLl9jdXJyTm9kZT1wLmVsc2U9dSx0aGlzfWdldCBfcm9vdCgpe3JldHVybiB0aGlzLl9ub2Rlc1swXX1nZXQgX2N1cnJOb2RlKCl7Y29uc3QgdT10aGlzLl9ub2RlcztyZXR1cm4gdVt1Lmxlbmd0aC0xXX1zZXQgX2N1cnJOb2RlKHUpe2NvbnN0IHA9dGhpcy5fbm9kZXM7cFtwLmxlbmd0aC0xXT11fX1lLkNvZGVHZW49bWU7ZnVuY3Rpb24geihnLHUpe2Zvcihjb25zdCBwIGluIHUpZ1twXT0oZ1twXXx8MCkrKHVbcF18fDApO3JldHVybiBnfWZ1bmN0aW9uIGllKGcsdSl7cmV0dXJuIHUgaW5zdGFuY2VvZiBuLl9Db2RlT3JOYW1lP3ooZyx1Lm5hbWVzKTpnfWZ1bmN0aW9uIHEoZyx1LHApe2lmKGcgaW5zdGFuY2VvZiBuLk5hbWUpcmV0dXJuIHYoZyk7aWYoIUwoZykpcmV0dXJuIGc7cmV0dXJuIG5ldyBuLl9Db2RlKGcuX2l0ZW1zLnJlZHVjZSgoQixRKT0+KFEgaW5zdGFuY2VvZiBuLk5hbWUmJihRPXYoUSkpLFEgaW5zdGFuY2VvZiBuLl9Db2RlP0IucHVzaCguLi5RLl9pdGVtcyk6Qi5wdXNoKFEpLEIpLFtdKSk7ZnVuY3Rpb24gdihCKXtjb25zdCBRPXBbQi5zdHJdO3JldHVybiBRPT09dm9pZCAwfHx1W0Iuc3RyXSE9PTE/QjooZGVsZXRlIHVbQi5zdHJdLFEpfWZ1bmN0aW9uIEwoQil7cmV0dXJuIEIgaW5zdGFuY2VvZiBuLl9Db2RlJiZCLl9pdGVtcy5zb21lKFE9PlEgaW5zdGFuY2VvZiBuLk5hbWUmJnVbUS5zdHJdPT09MSYmcFtRLnN0cl0hPT12b2lkIDApfX1mdW5jdGlvbiBFZShnLHUpe2Zvcihjb25zdCBwIGluIHUpZ1twXT0oZ1twXXx8MCktKHVbcF18fDApfWZ1bmN0aW9uIE9lKGcpe3JldHVybiB0eXBlb2YgZz09ImJvb2xlYW4ifHx0eXBlb2YgZz09Im51bWJlciJ8fGc9PT1udWxsPyFnOigwLG4uXylgISR7UChnKX1gfWUubm90PU9lO2NvbnN0IEhlPVIoZS5vcGVyYXRvcnMuQU5EKTtmdW5jdGlvbiBGZSguLi5nKXtyZXR1cm4gZy5yZWR1Y2UoSGUpfWUuYW5kPUZlO2NvbnN0IGxyPVIoZS5vcGVyYXRvcnMuT1IpO2Z1bmN0aW9uIHkoLi4uZyl7cmV0dXJuIGcucmVkdWNlKGxyKX1lLm9yPXk7ZnVuY3Rpb24gUihnKXtyZXR1cm4odSxwKT0+dT09PW4ubmlsP3A6cD09PW4ubmlsP3U6KDAsbi5fKWAke1AodSl9ICR7Z30gJHtQKHApfWB9ZnVuY3Rpb24gUChnKXtyZXR1cm4gZyBpbnN0YW5jZW9mIG4uTmFtZT9nOigwLG4uXylgKCR7Z30pYH19KF9lKTt2YXIgQWU9e307KGZ1bmN0aW9uKGUpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxlLmNoZWNrU3RyaWN0TW9kZT1lLmdldEVycm9yUGF0aD1lLlR5cGU9ZS51c2VGdW5jPWUuc2V0RXZhbHVhdGVkPWUuZXZhbHVhdGVkUHJvcHNUb05hbWU9ZS5tZXJnZUV2YWx1YXRlZD1lLmVhY2hJdGVtPWUudW5lc2NhcGVKc29uUG9pbnRlcj1lLmVzY2FwZUpzb25Qb2ludGVyPWUuZXNjYXBlRnJhZ21lbnQ9ZS51bmVzY2FwZUZyYWdtZW50PWUuc2NoZW1hUmVmT3JWYWw9ZS5zY2hlbWFIYXNSdWxlc0J1dFJlZj1lLnNjaGVtYUhhc1J1bGVzPWUuY2hlY2tVbmtub3duUnVsZXM9ZS5hbHdheXNWYWxpZFNjaGVtYT1lLnRvSGFzaD12b2lkIDA7Y29uc3Qgbj1fZSxyPU5yO2Z1bmN0aW9uIG8oTil7Y29uc3QgSD17fTtmb3IoY29uc3QgRyBvZiBOKUhbR109ITA7cmV0dXJuIEh9ZS50b0hhc2g9bztmdW5jdGlvbiB0KE4sSCl7cmV0dXJuIHR5cGVvZiBIPT0iYm9vbGVhbiI/SDpPYmplY3Qua2V5cyhIKS5sZW5ndGg9PT0wPyEwOihzKE4sSCksIWkoSCxOLnNlbGYuUlVMRVMuYWxsKSl9ZS5hbHdheXNWYWxpZFNjaGVtYT10O2Z1bmN0aW9uIHMoTixIPU4uc2NoZW1hKXtjb25zdHtvcHRzOkcsc2VsZjpGfT1OO2lmKCFHLnN0cmljdFNjaGVtYXx8dHlwZW9mIEg9PSJib29sZWFuIilyZXR1cm47Y29uc3QgVz1GLlJVTEVTLmtleXdvcmRzO2Zvcihjb25zdCBtZSBpbiBIKVdbbWVdfHxqKE4sYHVua25vd24ga2V5d29yZDogIiR7bWV9ImApfWUuY2hlY2tVbmtub3duUnVsZXM9cztmdW5jdGlvbiBpKE4sSCl7aWYodHlwZW9mIE49PSJib29sZWFuIilyZXR1cm4hTjtmb3IoY29uc3QgRyBpbiBOKWlmKEhbR10pcmV0dXJuITA7cmV0dXJuITF9ZS5zY2hlbWFIYXNSdWxlcz1pO2Z1bmN0aW9uIGwoTixIKXtpZih0eXBlb2YgTj09ImJvb2xlYW4iKXJldHVybiFOO2Zvcihjb25zdCBHIGluIE4paWYoRyE9PSIkcmVmIiYmSC5hbGxbR10pcmV0dXJuITA7cmV0dXJuITF9ZS5zY2hlbWFIYXNSdWxlc0J1dFJlZj1sO2Z1bmN0aW9uIGMoe3RvcFNjaGVtYVJlZjpOLHNjaGVtYVBhdGg6SH0sRyxGLFcpe2lmKCFXKXtpZih0eXBlb2YgRz09Im51bWJlciJ8fHR5cGVvZiBHPT0iYm9vbGVhbiIpcmV0dXJuIEc7aWYodHlwZW9mIEc9PSJzdHJpbmciKXJldHVybigwLG4uXylgJHtHfWB9cmV0dXJuKDAsbi5fKWAke059JHtIfSR7KDAsbi5nZXRQcm9wZXJ0eSkoRil9YH1lLnNjaGVtYVJlZk9yVmFsPWM7ZnVuY3Rpb24gbShOKXtyZXR1cm4gTyhkZWNvZGVVUklDb21wb25lbnQoTikpfWUudW5lc2NhcGVGcmFnbWVudD1tO2Z1bmN0aW9uIGEoTil7cmV0dXJuIGVuY29kZVVSSUNvbXBvbmVudChoKE4pKX1lLmVzY2FwZUZyYWdtZW50PWE7ZnVuY3Rpb24gaChOKXtyZXR1cm4gdHlwZW9mIE49PSJudW1iZXIiP2Ake059YDpOLnJlcGxhY2UoL34vZywifjAiKS5yZXBsYWNlKC9cLy9nLCJ+MSIpfWUuZXNjYXBlSnNvblBvaW50ZXI9aDtmdW5jdGlvbiBPKE4pe3JldHVybiBOLnJlcGxhY2UoL34xL2csIi8iKS5yZXBsYWNlKC9+MC9nLCJ+Iil9ZS51bmVzY2FwZUpzb25Qb2ludGVyPU87ZnVuY3Rpb24gRChOLEgpe2lmKEFycmF5LmlzQXJyYXkoTikpZm9yKGNvbnN0IEcgb2YgTilIKEcpO2Vsc2UgSChOKX1lLmVhY2hJdGVtPUQ7ZnVuY3Rpb24gdyh7bWVyZ2VOYW1lczpOLG1lcmdlVG9OYW1lOkgsbWVyZ2VWYWx1ZXM6RyxyZXN1bHRUb05hbWU6Rn0pe3JldHVybihXLG1lLHosaWUpPT57Y29uc3QgcT16PT09dm9pZCAwP21lOnogaW5zdGFuY2VvZiBuLk5hbWU/KG1lIGluc3RhbmNlb2Ygbi5OYW1lP04oVyxtZSx6KTpIKFcsbWUseikseik6bWUgaW5zdGFuY2VvZiBuLk5hbWU/KEgoVyx6LG1lKSxtZSk6RyhtZSx6KTtyZXR1cm4gaWU9PT1uLk5hbWUmJiEocSBpbnN0YW5jZW9mIG4uTmFtZSk/RihXLHEpOnF9fWUubWVyZ2VFdmFsdWF0ZWQ9e3Byb3BzOncoe21lcmdlTmFtZXM6KE4sSCxHKT0+Ti5pZigoMCxuLl8pYCR7R30gIT09IHRydWUgJiYgJHtIfSAhPT0gdW5kZWZpbmVkYCwoKT0+e04uaWYoKDAsbi5fKWAke0h9ID09PSB0cnVlYCwoKT0+Ti5hc3NpZ24oRywhMCksKCk9Pk4uYXNzaWduKEcsKDAsbi5fKWAke0d9IHx8IHt9YCkuY29kZSgoMCxuLl8pYE9iamVjdC5hc3NpZ24oJHtHfSwgJHtIfSlgKSl9KSxtZXJnZVRvTmFtZTooTixILEcpPT5OLmlmKCgwLG4uXylgJHtHfSAhPT0gdHJ1ZWAsKCk9PntIPT09ITA/Ti5hc3NpZ24oRywhMCk6KE4uYXNzaWduKEcsKDAsbi5fKWAke0d9IHx8IHt9YCksVChOLEcsSCkpfSksbWVyZ2VWYWx1ZXM6KE4sSCk9Pk49PT0hMD8hMDpZKFkoe30sTiksSCkscmVzdWx0VG9OYW1lOkN9KSxpdGVtczp3KHttZXJnZU5hbWVzOihOLEgsRyk9Pk4uaWYoKDAsbi5fKWAke0d9ICE9PSB0cnVlICYmICR7SH0gIT09IHVuZGVmaW5lZGAsKCk9Pk4uYXNzaWduKEcsKDAsbi5fKWAke0h9ID09PSB0cnVlID8gdHJ1ZSA6ICR7R30gPiAke0h9ID8gJHtHfSA6ICR7SH1gKSksbWVyZ2VUb05hbWU6KE4sSCxHKT0+Ti5pZigoMCxuLl8pYCR7R30gIT09IHRydWVgLCgpPT5OLmFzc2lnbihHLEg9PT0hMD8hMDooMCxuLl8pYCR7R30gPiAke0h9ID8gJHtHfSA6ICR7SH1gKSksbWVyZ2VWYWx1ZXM6KE4sSCk9Pk49PT0hMD8hMDpNYXRoLm1heChOLEgpLHJlc3VsdFRvTmFtZTooTixIKT0+Ti52YXIoIml0ZW1zIixIKX0pfTtmdW5jdGlvbiBDKE4sSCl7aWYoSD09PSEwKXJldHVybiBOLnZhcigicHJvcHMiLCEwKTtjb25zdCBHPU4udmFyKCJwcm9wcyIsKDAsbi5fKWB7fWApO3JldHVybiBIIT09dm9pZCAwJiZUKE4sRyxIKSxHfWUuZXZhbHVhdGVkUHJvcHNUb05hbWU9QztmdW5jdGlvbiBUKE4sSCxHKXtPYmplY3Qua2V5cyhHKS5mb3JFYWNoKEY9Pk4uYXNzaWduKCgwLG4uXylgJHtIfSR7KDAsbi5nZXRQcm9wZXJ0eSkoRil9YCwhMCkpfWUuc2V0RXZhbHVhdGVkPVQ7Y29uc3QgZj17fTtmdW5jdGlvbiBBKE4sSCl7cmV0dXJuIE4uc2NvcGVWYWx1ZSgiZnVuYyIse3JlZjpILGNvZGU6ZltILmNvZGVdfHwoZltILmNvZGVdPW5ldyByLl9Db2RlKEguY29kZSkpfSl9ZS51c2VGdW5jPUE7dmFyIFU7KGZ1bmN0aW9uKE4pe05bTi5OdW09MF09Ik51bSIsTltOLlN0cj0xXT0iU3RyIn0pKFU9ZS5UeXBlfHwoZS5UeXBlPXt9KSk7ZnVuY3Rpb24gUyhOLEgsRyl7aWYoTiBpbnN0YW5jZW9mIG4uTmFtZSl7Y29uc3QgRj1IPT09VS5OdW07cmV0dXJuIEc/Rj8oMCxuLl8pYCJbIiArICR7Tn0gKyAiXSJgOigwLG4uXylgIlsnIiArICR7Tn0gKyAiJ10iYDpGPygwLG4uXylgIi8iICsgJHtOfWA6KDAsbi5fKWAiLyIgKyAke059LnJlcGxhY2UoL34vZywgIn4wIikucmVwbGFjZSgvXFwvL2csICJ+MSIpYH1yZXR1cm4gRz8oMCxuLmdldFByb3BlcnR5KShOKS50b1N0cmluZygpOiIvIitoKE4pfWUuZ2V0RXJyb3JQYXRoPVM7ZnVuY3Rpb24gaihOLEgsRz1OLm9wdHMuc3RyaWN0U2NoZW1hKXtpZighIUcpe2lmKEg9YHN0cmljdCBtb2RlOiAke0h9YCxHPT09ITApdGhyb3cgbmV3IEVycm9yKEgpO04uc2VsZi5sb2dnZXIud2FybihIKX19ZS5jaGVja1N0cmljdE1vZGU9an0pKEFlKTt2YXIgTWU9e307T2JqZWN0LmRlZmluZVByb3BlcnR5KE1lLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTtjb25zdCBTZT1fZSxFdT17ZGF0YTpuZXcgU2UuTmFtZSgiZGF0YSIpLHZhbEN4dDpuZXcgU2UuTmFtZSgidmFsQ3h0IiksaW5zdGFuY2VQYXRoOm5ldyBTZS5OYW1lKCJpbnN0YW5jZVBhdGgiKSxwYXJlbnREYXRhOm5ldyBTZS5OYW1lKCJwYXJlbnREYXRhIikscGFyZW50RGF0YVByb3BlcnR5Om5ldyBTZS5OYW1lKCJwYXJlbnREYXRhUHJvcGVydHkiKSxyb290RGF0YTpuZXcgU2UuTmFtZSgicm9vdERhdGEiKSxkeW5hbWljQW5jaG9yczpuZXcgU2UuTmFtZSgiZHluYW1pY0FuY2hvcnMiKSx2RXJyb3JzOm5ldyBTZS5OYW1lKCJ2RXJyb3JzIiksZXJyb3JzOm5ldyBTZS5OYW1lKCJlcnJvcnMiKSx0aGlzOm5ldyBTZS5OYW1lKCJ0aGlzIiksc2VsZjpuZXcgU2UuTmFtZSgic2VsZiIpLHNjb3BlOm5ldyBTZS5OYW1lKCJzY29wZSIpLGpzb246bmV3IFNlLk5hbWUoImpzb24iKSxqc29uUG9zOm5ldyBTZS5OYW1lKCJqc29uUG9zIiksanNvbkxlbjpuZXcgU2UuTmFtZSgianNvbkxlbiIpLGpzb25QYXJ0Om5ldyBTZS5OYW1lKCJqc29uUGFydCIpfTtNZS5kZWZhdWx0PUV1LGZ1bmN0aW9uKGUpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxlLmV4dGVuZEVycm9ycz1lLnJlc2V0RXJyb3JzQ291bnQ9ZS5yZXBvcnRFeHRyYUVycm9yPWUucmVwb3J0RXJyb3I9ZS5rZXl3b3JkJERhdGFFcnJvcj1lLmtleXdvcmRFcnJvcj12b2lkIDA7Y29uc3Qgbj1fZSxyPUFlLG89TWU7ZS5rZXl3b3JkRXJyb3I9e21lc3NhZ2U6KHtrZXl3b3JkOlR9KT0+KDAsbi5zdHIpYG11c3QgcGFzcyAiJHtUfSIga2V5d29yZCB2YWxpZGF0aW9uYH0sZS5rZXl3b3JkJERhdGFFcnJvcj17bWVzc2FnZTooe2tleXdvcmQ6VCxzY2hlbWFUeXBlOmZ9KT0+Zj8oMCxuLnN0cilgIiR7VH0iIGtleXdvcmQgbXVzdCBiZSAke2Z9ICgkZGF0YSlgOigwLG4uc3RyKWAiJHtUfSIga2V5d29yZCBpcyBpbnZhbGlkICgkZGF0YSlgfTtmdW5jdGlvbiB0KFQsZj1lLmtleXdvcmRFcnJvcixBLFUpe2NvbnN0e2l0OlN9PVQse2dlbjpqLGNvbXBvc2l0ZVJ1bGU6TixhbGxFcnJvcnM6SH09UyxHPWgoVCxmLEEpOyhVIT1udWxsP1U6Tnx8SCk/YyhqLEcpOm0oUywoMCxuLl8pYFske0d9XWApfWUucmVwb3J0RXJyb3I9dDtmdW5jdGlvbiBzKFQsZj1lLmtleXdvcmRFcnJvcixBKXtjb25zdHtpdDpVfT1ULHtnZW46Uyxjb21wb3NpdGVSdWxlOmosYWxsRXJyb3JzOk59PVUsSD1oKFQsZixBKTtjKFMsSCksanx8Tnx8bShVLG8uZGVmYXVsdC52RXJyb3JzKX1lLnJlcG9ydEV4dHJhRXJyb3I9cztmdW5jdGlvbiBpKFQsZil7VC5hc3NpZ24oby5kZWZhdWx0LmVycm9ycyxmKSxULmlmKCgwLG4uXylgJHtvLmRlZmF1bHQudkVycm9yc30gIT09IG51bGxgLCgpPT5ULmlmKGYsKCk9PlQuYXNzaWduKCgwLG4uXylgJHtvLmRlZmF1bHQudkVycm9yc30ubGVuZ3RoYCxmKSwoKT0+VC5hc3NpZ24oby5kZWZhdWx0LnZFcnJvcnMsbnVsbCkpKX1lLnJlc2V0RXJyb3JzQ291bnQ9aTtmdW5jdGlvbiBsKHtnZW46VCxrZXl3b3JkOmYsc2NoZW1hVmFsdWU6QSxkYXRhOlUsZXJyc0NvdW50OlMsaXQ6an0pe2lmKFM9PT12b2lkIDApdGhyb3cgbmV3IEVycm9yKCJhanYgaW1wbGVtZW50YXRpb24gZXJyb3IiKTtjb25zdCBOPVQubmFtZSgiZXJyIik7VC5mb3JSYW5nZSgiaSIsUyxvLmRlZmF1bHQuZXJyb3JzLEg9PntULmNvbnN0KE4sKDAsbi5fKWAke28uZGVmYXVsdC52RXJyb3JzfVske0h9XWApLFQuaWYoKDAsbi5fKWAke059Lmluc3RhbmNlUGF0aCA9PT0gdW5kZWZpbmVkYCwoKT0+VC5hc3NpZ24oKDAsbi5fKWAke059Lmluc3RhbmNlUGF0aGAsKDAsbi5zdHJDb25jYXQpKG8uZGVmYXVsdC5pbnN0YW5jZVBhdGgsai5lcnJvclBhdGgpKSksVC5hc3NpZ24oKDAsbi5fKWAke059LnNjaGVtYVBhdGhgLCgwLG4uc3RyKWAke2ouZXJyU2NoZW1hUGF0aH0vJHtmfWApLGoub3B0cy52ZXJib3NlJiYoVC5hc3NpZ24oKDAsbi5fKWAke059LnNjaGVtYWAsQSksVC5hc3NpZ24oKDAsbi5fKWAke059LmRhdGFgLFUpKX0pfWUuZXh0ZW5kRXJyb3JzPWw7ZnVuY3Rpb24gYyhULGYpe2NvbnN0IEE9VC5jb25zdCgiZXJyIixmKTtULmlmKCgwLG4uXylgJHtvLmRlZmF1bHQudkVycm9yc30gPT09IG51bGxgLCgpPT5ULmFzc2lnbihvLmRlZmF1bHQudkVycm9ycywoMCxuLl8pYFske0F9XWApLCgwLG4uXylgJHtvLmRlZmF1bHQudkVycm9yc30ucHVzaCgke0F9KWApLFQuY29kZSgoMCxuLl8pYCR7by5kZWZhdWx0LmVycm9yc30rK2ApfWZ1bmN0aW9uIG0oVCxmKXtjb25zdHtnZW46QSx2YWxpZGF0ZU5hbWU6VSxzY2hlbWFFbnY6U309VDtTLiRhc3luYz9BLnRocm93KCgwLG4uXylgbmV3ICR7VC5WYWxpZGF0aW9uRXJyb3J9KCR7Zn0pYCk6KEEuYXNzaWduKCgwLG4uXylgJHtVfS5lcnJvcnNgLGYpLEEucmV0dXJuKCExKSl9Y29uc3QgYT17a2V5d29yZDpuZXcgbi5OYW1lKCJrZXl3b3JkIiksc2NoZW1hUGF0aDpuZXcgbi5OYW1lKCJzY2hlbWFQYXRoIikscGFyYW1zOm5ldyBuLk5hbWUoInBhcmFtcyIpLHByb3BlcnR5TmFtZTpuZXcgbi5OYW1lKCJwcm9wZXJ0eU5hbWUiKSxtZXNzYWdlOm5ldyBuLk5hbWUoIm1lc3NhZ2UiKSxzY2hlbWE6bmV3IG4uTmFtZSgic2NoZW1hIikscGFyZW50U2NoZW1hOm5ldyBuLk5hbWUoInBhcmVudFNjaGVtYSIpfTtmdW5jdGlvbiBoKFQsZixBKXtjb25zdHtjcmVhdGVFcnJvcnM6VX09VC5pdDtyZXR1cm4gVT09PSExPygwLG4uXylge31gOk8oVCxmLEEpfWZ1bmN0aW9uIE8oVCxmLEE9e30pe2NvbnN0e2dlbjpVLGl0OlN9PVQsaj1bRChTLEEpLHcoVCxBKV07cmV0dXJuIEMoVCxmLGopLFUub2JqZWN0KC4uLmopfWZ1bmN0aW9uIEQoe2Vycm9yUGF0aDpUfSx7aW5zdGFuY2VQYXRoOmZ9KXtjb25zdCBBPWY/KDAsbi5zdHIpYCR7VH0keygwLHIuZ2V0RXJyb3JQYXRoKShmLHIuVHlwZS5TdHIpfWA6VDtyZXR1cm5bby5kZWZhdWx0Lmluc3RhbmNlUGF0aCwoMCxuLnN0ckNvbmNhdCkoby5kZWZhdWx0Lmluc3RhbmNlUGF0aCxBKV19ZnVuY3Rpb24gdyh7a2V5d29yZDpULGl0OntlcnJTY2hlbWFQYXRoOmZ9fSx7c2NoZW1hUGF0aDpBLHBhcmVudFNjaGVtYTpVfSl7bGV0IFM9VT9mOigwLG4uc3RyKWAke2Z9LyR7VH1gO3JldHVybiBBJiYoUz0oMCxuLnN0cilgJHtTfSR7KDAsci5nZXRFcnJvclBhdGgpKEEsci5UeXBlLlN0cil9YCksW2Euc2NoZW1hUGF0aCxTXX1mdW5jdGlvbiBDKFQse3BhcmFtczpmLG1lc3NhZ2U6QX0sVSl7Y29uc3R7a2V5d29yZDpTLGRhdGE6aixzY2hlbWFWYWx1ZTpOLGl0Okh9PVQse29wdHM6Ryxwcm9wZXJ0eU5hbWU6Rix0b3BTY2hlbWFSZWY6VyxzY2hlbWFQYXRoOm1lfT1IO1UucHVzaChbYS5rZXl3b3JkLFNdLFthLnBhcmFtcyx0eXBlb2YgZj09ImZ1bmN0aW9uIj9mKFQpOmZ8fCgwLG4uXylge31gXSksRy5tZXNzYWdlcyYmVS5wdXNoKFthLm1lc3NhZ2UsdHlwZW9mIEE9PSJmdW5jdGlvbiI/QShUKTpBXSksRy52ZXJib3NlJiZVLnB1c2goW2Euc2NoZW1hLE5dLFthLnBhcmVudFNjaGVtYSwoMCxuLl8pYCR7V30ke21lfWBdLFtvLmRlZmF1bHQuZGF0YSxqXSksRiYmVS5wdXNoKFthLnByb3BlcnR5TmFtZSxGXSl9fShUciksT2JqZWN0LmRlZmluZVByb3BlcnR5KHJyLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxyci5ib29sT3JFbXB0eVNjaGVtYT1yci50b3BCb29sT3JFbXB0eVNjaGVtYT12b2lkIDA7Y29uc3QgZnU9VHIsUnU9X2UsT3U9TWUsVHU9e21lc3NhZ2U6ImJvb2xlYW4gc2NoZW1hIGlzIGZhbHNlIn07ZnVuY3Rpb24gTnUoZSl7Y29uc3R7Z2VuOm4sc2NoZW1hOnIsdmFsaWRhdGVOYW1lOm99PWU7cj09PSExP3RzKGUsITEpOnR5cGVvZiByPT0ib2JqZWN0IiYmci4kYXN5bmM9PT0hMD9uLnJldHVybihPdS5kZWZhdWx0LmRhdGEpOihuLmFzc2lnbigoMCxSdS5fKWAke299LmVycm9yc2AsbnVsbCksbi5yZXR1cm4oITApKX1yci50b3BCb29sT3JFbXB0eVNjaGVtYT1OdTtmdW5jdGlvbiBndShlLG4pe2NvbnN0e2dlbjpyLHNjaGVtYTpvfT1lO289PT0hMT8oci52YXIobiwhMSksdHMoZSkpOnIudmFyKG4sITApfXJyLmJvb2xPckVtcHR5U2NoZW1hPWd1O2Z1bmN0aW9uIHRzKGUsbil7Y29uc3R7Z2VuOnIsZGF0YTpvfT1lLHQ9e2dlbjpyLGtleXdvcmQ6ImZhbHNlIHNjaGVtYSIsZGF0YTpvLHNjaGVtYTohMSxzY2hlbWFDb2RlOiExLHNjaGVtYVZhbHVlOiExLHBhcmFtczp7fSxpdDplfTsoMCxmdS5yZXBvcnRFcnJvcikodCxUdSx2b2lkIDAsbil9dmFyIHRvPXt9LENuPXt9O09iamVjdC5kZWZpbmVQcm9wZXJ0eShDbiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksQ24uZ2V0UnVsZXM9Q24uaXNKU09OVHlwZT12b2lkIDA7Y29uc3QgSXU9WyJzdHJpbmciLCJudW1iZXIiLCJpbnRlZ2VyIiwiYm9vbGVhbiIsIm51bGwiLCJvYmplY3QiLCJhcnJheSJdLGJ1PW5ldyBTZXQoSXUpO2Z1bmN0aW9uIEF1KGUpe3JldHVybiB0eXBlb2YgZT09InN0cmluZyImJmJ1LmhhcyhlKX1Dbi5pc0pTT05UeXBlPUF1O2Z1bmN0aW9uIFV1KCl7Y29uc3QgZT17bnVtYmVyOnt0eXBlOiJudW1iZXIiLHJ1bGVzOltdfSxzdHJpbmc6e3R5cGU6InN0cmluZyIscnVsZXM6W119LGFycmF5Ont0eXBlOiJhcnJheSIscnVsZXM6W119LG9iamVjdDp7dHlwZToib2JqZWN0IixydWxlczpbXX19O3JldHVybnt0eXBlczpsZShZKHt9LGUpLHtpbnRlZ2VyOiEwLGJvb2xlYW46ITAsbnVsbDohMH0pLHJ1bGVzOlt7cnVsZXM6W119LGUubnVtYmVyLGUuc3RyaW5nLGUuYXJyYXksZS5vYmplY3RdLHBvc3Q6e3J1bGVzOltdfSxhbGw6e30sa2V5d29yZHM6e319fUNuLmdldFJ1bGVzPVV1O3ZhciBjbj17fTtPYmplY3QuZGVmaW5lUHJvcGVydHkoY24sIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLGNuLnNob3VsZFVzZVJ1bGU9Y24uc2hvdWxkVXNlR3JvdXA9Y24uc2NoZW1hSGFzUnVsZXNGb3JUeXBlPXZvaWQgMDtmdW5jdGlvbiBIdSh7c2NoZW1hOmUsc2VsZjpufSxyKXtjb25zdCBvPW4uUlVMRVMudHlwZXNbcl07cmV0dXJuIG8mJm8hPT0hMCYmc3MoZSxvKX1jbi5zY2hlbWFIYXNSdWxlc0ZvclR5cGU9SHU7ZnVuY3Rpb24gc3MoZSxuKXtyZXR1cm4gbi5ydWxlcy5zb21lKHI9PmlzKGUscikpfWNuLnNob3VsZFVzZUdyb3VwPXNzO2Z1bmN0aW9uIGlzKGUsbil7dmFyIHI7cmV0dXJuIGVbbi5rZXl3b3JkXSE9PXZvaWQgMHx8KChyPW4uZGVmaW5pdGlvbi5pbXBsZW1lbnRzKT09PW51bGx8fHI9PT12b2lkIDA/dm9pZCAwOnIuc29tZShvPT5lW29dIT09dm9pZCAwKSl9Y24uc2hvdWxkVXNlUnVsZT1pcyxmdW5jdGlvbihlKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksZS5yZXBvcnRUeXBlRXJyb3I9ZS5jaGVja0RhdGFUeXBlcz1lLmNoZWNrRGF0YVR5cGU9ZS5jb2VyY2VBbmRDaGVja0RhdGFUeXBlPWUuZ2V0SlNPTlR5cGVzPWUuZ2V0U2NoZW1hVHlwZXM9ZS5EYXRhVHlwZT12b2lkIDA7Y29uc3Qgbj1DbixyPWNuLG89VHIsdD1fZSxzPUFlO3ZhciBpOyhmdW5jdGlvbihVKXtVW1UuQ29ycmVjdD0wXT0iQ29ycmVjdCIsVVtVLldyb25nPTFdPSJXcm9uZyJ9KShpPWUuRGF0YVR5cGV8fChlLkRhdGFUeXBlPXt9KSk7ZnVuY3Rpb24gbChVKXtjb25zdCBTPWMoVS50eXBlKTtpZihTLmluY2x1ZGVzKCJudWxsIikpe2lmKFUubnVsbGFibGU9PT0hMSl0aHJvdyBuZXcgRXJyb3IoInR5cGU6IG51bGwgY29udHJhZGljdHMgbnVsbGFibGU6IGZhbHNlIil9ZWxzZXtpZighUy5sZW5ndGgmJlUubnVsbGFibGUhPT12b2lkIDApdGhyb3cgbmV3IEVycm9yKCcibnVsbGFibGUiIGNhbm5vdCBiZSB1c2VkIHdpdGhvdXQgInR5cGUiJyk7VS5udWxsYWJsZT09PSEwJiZTLnB1c2goIm51bGwiKX1yZXR1cm4gU31lLmdldFNjaGVtYVR5cGVzPWw7ZnVuY3Rpb24gYyhVKXtjb25zdCBTPUFycmF5LmlzQXJyYXkoVSk/VTpVP1tVXTpbXTtpZihTLmV2ZXJ5KG4uaXNKU09OVHlwZSkpcmV0dXJuIFM7dGhyb3cgbmV3IEVycm9yKCJ0eXBlIG11c3QgYmUgSlNPTlR5cGUgb3IgSlNPTlR5cGVbXTogIitTLmpvaW4oIiwiKSl9ZS5nZXRKU09OVHlwZXM9YztmdW5jdGlvbiBtKFUsUyl7Y29uc3R7Z2VuOmosZGF0YTpOLG9wdHM6SH09VSxHPWgoUyxILmNvZXJjZVR5cGVzKSxGPVMubGVuZ3RoPjAmJiEoRy5sZW5ndGg9PT0wJiZTLmxlbmd0aD09PTEmJigwLHIuc2NoZW1hSGFzUnVsZXNGb3JUeXBlKShVLFNbMF0pKTtpZihGKXtjb25zdCBXPUMoUyxOLEguc3RyaWN0TnVtYmVycyxpLldyb25nKTtqLmlmKFcsKCk9PntHLmxlbmd0aD9PKFUsUyxHKTpmKFUpfSl9cmV0dXJuIEZ9ZS5jb2VyY2VBbmRDaGVja0RhdGFUeXBlPW07Y29uc3QgYT1uZXcgU2V0KFsic3RyaW5nIiwibnVtYmVyIiwiaW50ZWdlciIsImJvb2xlYW4iLCJudWxsIl0pO2Z1bmN0aW9uIGgoVSxTKXtyZXR1cm4gUz9VLmZpbHRlcihqPT5hLmhhcyhqKXx8Uz09PSJhcnJheSImJmo9PT0iYXJyYXkiKTpbXX1mdW5jdGlvbiBPKFUsUyxqKXtjb25zdHtnZW46TixkYXRhOkgsb3B0czpHfT1VLEY9Ti5sZXQoImRhdGFUeXBlIiwoMCx0Ll8pYHR5cGVvZiAke0h9YCksVz1OLmxldCgiY29lcmNlZCIsKDAsdC5fKWB1bmRlZmluZWRgKTtHLmNvZXJjZVR5cGVzPT09ImFycmF5IiYmTi5pZigoMCx0Ll8pYCR7Rn0gPT0gJ29iamVjdCcgJiYgQXJyYXkuaXNBcnJheSgke0h9KSAmJiAke0h9Lmxlbmd0aCA9PSAxYCwoKT0+Ti5hc3NpZ24oSCwoMCx0Ll8pYCR7SH1bMF1gKS5hc3NpZ24oRiwoMCx0Ll8pYHR5cGVvZiAke0h9YCkuaWYoQyhTLEgsRy5zdHJpY3ROdW1iZXJzKSwoKT0+Ti5hc3NpZ24oVyxIKSkpLE4uaWYoKDAsdC5fKWAke1d9ICE9PSB1bmRlZmluZWRgKTtmb3IoY29uc3QgeiBvZiBqKShhLmhhcyh6KXx8ej09PSJhcnJheSImJkcuY29lcmNlVHlwZXM9PT0iYXJyYXkiKSYmbWUoeik7Ti5lbHNlKCksZihVKSxOLmVuZElmKCksTi5pZigoMCx0Ll8pYCR7V30gIT09IHVuZGVmaW5lZGAsKCk9PntOLmFzc2lnbihILFcpLEQoVSxXKX0pO2Z1bmN0aW9uIG1lKHope3N3aXRjaCh6KXtjYXNlInN0cmluZyI6Ti5lbHNlSWYoKDAsdC5fKWAke0Z9ID09ICJudW1iZXIiIHx8ICR7Rn0gPT0gImJvb2xlYW4iYCkuYXNzaWduKFcsKDAsdC5fKWAiIiArICR7SH1gKS5lbHNlSWYoKDAsdC5fKWAke0h9ID09PSBudWxsYCkuYXNzaWduKFcsKDAsdC5fKWAiImApO3JldHVybjtjYXNlIm51bWJlciI6Ti5lbHNlSWYoKDAsdC5fKWAke0Z9ID09ICJib29sZWFuIiB8fCAke0h9ID09PSBudWxsCiAgICAgICAgICAgICAgfHwgKCR7Rn0gPT0gInN0cmluZyIgJiYgJHtIfSAmJiAke0h9ID09ICske0h9KWApLmFzc2lnbihXLCgwLHQuXylgKyR7SH1gKTtyZXR1cm47Y2FzZSJpbnRlZ2VyIjpOLmVsc2VJZigoMCx0Ll8pYCR7Rn0gPT09ICJib29sZWFuIiB8fCAke0h9ID09PSBudWxsCiAgICAgICAgICAgICAgfHwgKCR7Rn0gPT09ICJzdHJpbmciICYmICR7SH0gJiYgJHtIfSA9PSArJHtIfSAmJiAhKCR7SH0gJSAxKSlgKS5hc3NpZ24oVywoMCx0Ll8pYCske0h9YCk7cmV0dXJuO2Nhc2UiYm9vbGVhbiI6Ti5lbHNlSWYoKDAsdC5fKWAke0h9ID09PSAiZmFsc2UiIHx8ICR7SH0gPT09IDAgfHwgJHtIfSA9PT0gbnVsbGApLmFzc2lnbihXLCExKS5lbHNlSWYoKDAsdC5fKWAke0h9ID09PSAidHJ1ZSIgfHwgJHtIfSA9PT0gMWApLmFzc2lnbihXLCEwKTtyZXR1cm47Y2FzZSJudWxsIjpOLmVsc2VJZigoMCx0Ll8pYCR7SH0gPT09ICIiIHx8ICR7SH0gPT09IDAgfHwgJHtIfSA9PT0gZmFsc2VgKSxOLmFzc2lnbihXLG51bGwpO3JldHVybjtjYXNlImFycmF5IjpOLmVsc2VJZigoMCx0Ll8pYCR7Rn0gPT09ICJzdHJpbmciIHx8ICR7Rn0gPT09ICJudW1iZXIiCiAgICAgICAgICAgICAgfHwgJHtGfSA9PT0gImJvb2xlYW4iIHx8ICR7SH0gPT09IG51bGxgKS5hc3NpZ24oVywoMCx0Ll8pYFske0h9XWApfX19ZnVuY3Rpb24gRCh7Z2VuOlUscGFyZW50RGF0YTpTLHBhcmVudERhdGFQcm9wZXJ0eTpqfSxOKXtVLmlmKCgwLHQuXylgJHtTfSAhPT0gdW5kZWZpbmVkYCwoKT0+VS5hc3NpZ24oKDAsdC5fKWAke1N9WyR7an1dYCxOKSl9ZnVuY3Rpb24gdyhVLFMsaixOPWkuQ29ycmVjdCl7Y29uc3QgSD1OPT09aS5Db3JyZWN0P3Qub3BlcmF0b3JzLkVROnQub3BlcmF0b3JzLk5FUTtsZXQgRztzd2l0Y2goVSl7Y2FzZSJudWxsIjpyZXR1cm4oMCx0Ll8pYCR7U30gJHtIfSBudWxsYDtjYXNlImFycmF5IjpHPSgwLHQuXylgQXJyYXkuaXNBcnJheSgke1N9KWA7YnJlYWs7Y2FzZSJvYmplY3QiOkc9KDAsdC5fKWAke1N9ICYmIHR5cGVvZiAke1N9ID09ICJvYmplY3QiICYmICFBcnJheS5pc0FycmF5KCR7U30pYDticmVhaztjYXNlImludGVnZXIiOkc9RigoMCx0Ll8pYCEoJHtTfSAlIDEpICYmICFpc05hTigke1N9KWApO2JyZWFrO2Nhc2UibnVtYmVyIjpHPUYoKTticmVhaztkZWZhdWx0OnJldHVybigwLHQuXylgdHlwZW9mICR7U30gJHtIfSAke1V9YH1yZXR1cm4gTj09PWkuQ29ycmVjdD9HOigwLHQubm90KShHKTtmdW5jdGlvbiBGKFc9dC5uaWwpe3JldHVybigwLHQuYW5kKSgoMCx0Ll8pYHR5cGVvZiAke1N9ID09ICJudW1iZXIiYCxXLGo/KDAsdC5fKWBpc0Zpbml0ZSgke1N9KWA6dC5uaWwpfX1lLmNoZWNrRGF0YVR5cGU9dztmdW5jdGlvbiBDKFUsUyxqLE4pe2lmKFUubGVuZ3RoPT09MSlyZXR1cm4gdyhVWzBdLFMsaixOKTtsZXQgSDtjb25zdCBHPSgwLHMudG9IYXNoKShVKTtpZihHLmFycmF5JiZHLm9iamVjdCl7Y29uc3QgRj0oMCx0Ll8pYHR5cGVvZiAke1N9ICE9ICJvYmplY3QiYDtIPUcubnVsbD9GOigwLHQuXylgISR7U30gfHwgJHtGfWAsZGVsZXRlIEcubnVsbCxkZWxldGUgRy5hcnJheSxkZWxldGUgRy5vYmplY3R9ZWxzZSBIPXQubmlsO0cubnVtYmVyJiZkZWxldGUgRy5pbnRlZ2VyO2Zvcihjb25zdCBGIGluIEcpSD0oMCx0LmFuZCkoSCx3KEYsUyxqLE4pKTtyZXR1cm4gSH1lLmNoZWNrRGF0YVR5cGVzPUM7Y29uc3QgVD17bWVzc2FnZTooe3NjaGVtYTpVfSk9PmBtdXN0IGJlICR7VX1gLHBhcmFtczooe3NjaGVtYTpVLHNjaGVtYVZhbHVlOlN9KT0+dHlwZW9mIFU9PSJzdHJpbmciPygwLHQuXylge3R5cGU6ICR7VX19YDooMCx0Ll8pYHt0eXBlOiAke1N9fWB9O2Z1bmN0aW9uIGYoVSl7Y29uc3QgUz1BKFUpOygwLG8ucmVwb3J0RXJyb3IpKFMsVCl9ZS5yZXBvcnRUeXBlRXJyb3I9ZjtmdW5jdGlvbiBBKFUpe2NvbnN0e2dlbjpTLGRhdGE6aixzY2hlbWE6Tn09VSxIPSgwLHMuc2NoZW1hUmVmT3JWYWwpKFUsTiwidHlwZSIpO3JldHVybntnZW46UyxrZXl3b3JkOiJ0eXBlIixkYXRhOmosc2NoZW1hOk4udHlwZSxzY2hlbWFDb2RlOkgsc2NoZW1hVmFsdWU6SCxwYXJlbnRTY2hlbWE6TixwYXJhbXM6e30saXQ6VX19fSh0byk7dmFyIHNvPXt9O09iamVjdC5kZWZpbmVQcm9wZXJ0eShzbywiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksc28uYXNzaWduRGVmYXVsdHM9dm9pZCAwO2NvbnN0IG9yPV9lLHZ1PUFlO2Z1bmN0aW9uIER1KGUsbil7Y29uc3R7cHJvcGVydGllczpyLGl0ZW1zOm99PWUuc2NoZW1hO2lmKG49PT0ib2JqZWN0IiYmcilmb3IoY29uc3QgdCBpbiByKWFzKGUsdCxyW3RdLmRlZmF1bHQpO2Vsc2Ugbj09PSJhcnJheSImJkFycmF5LmlzQXJyYXkobykmJm8uZm9yRWFjaCgodCxzKT0+YXMoZSxzLHQuZGVmYXVsdCkpfXNvLmFzc2lnbkRlZmF1bHRzPUR1O2Z1bmN0aW9uIGFzKGUsbixyKXtjb25zdHtnZW46byxjb21wb3NpdGVSdWxlOnQsZGF0YTpzLG9wdHM6aX09ZTtpZihyPT09dm9pZCAwKXJldHVybjtjb25zdCBsPSgwLG9yLl8pYCR7c30keygwLG9yLmdldFByb3BlcnR5KShuKX1gO2lmKHQpeygwLHZ1LmNoZWNrU3RyaWN0TW9kZSkoZSxgZGVmYXVsdCBpcyBpZ25vcmVkIGZvcjogJHtsfWApO3JldHVybn1sZXQgYz0oMCxvci5fKWAke2x9ID09PSB1bmRlZmluZWRgO2kudXNlRGVmYXVsdHM9PT0iZW1wdHkiJiYoYz0oMCxvci5fKWAke2N9IHx8ICR7bH0gPT09IG51bGwgfHwgJHtsfSA9PT0gIiJgKSxvLmlmKGMsKDAsb3IuXylgJHtsfSA9ICR7KDAsb3Iuc3RyaW5naWZ5KShyKX1gKX12YXIgcWU9e30sb2U9e307T2JqZWN0LmRlZmluZVByb3BlcnR5KG9lLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxvZS52YWxpZGF0ZVVuaW9uPW9lLnZhbGlkYXRlQXJyYXk9b2UudXNlUGF0dGVybj1vZS5jYWxsVmFsaWRhdGVDb2RlPW9lLnNjaGVtYVByb3BlcnRpZXM9b2UuYWxsU2NoZW1hUHJvcGVydGllcz1vZS5ub1Byb3BlcnR5SW5EYXRhPW9lLnByb3BlcnR5SW5EYXRhPW9lLmlzT3duUHJvcGVydHk9b2UuaGFzUHJvcEZ1bmM9b2UucmVwb3J0TWlzc2luZ1Byb3A9b2UuY2hlY2tNaXNzaW5nUHJvcD1vZS5jaGVja1JlcG9ydE1pc3NpbmdQcm9wPXZvaWQgMDtjb25zdCBkZT1fZSxGbz1BZSxUbj1NZSxTdT1BZTtmdW5jdGlvbiBQdShlLG4pe2NvbnN0e2dlbjpyLGRhdGE6byxpdDp0fT1lO3IuaWYoS28ocixvLG4sdC5vcHRzLm93blByb3BlcnRpZXMpLCgpPT57ZS5zZXRQYXJhbXMoe21pc3NpbmdQcm9wZXJ0eTooMCxkZS5fKWAke259YH0sITApLGUuZXJyb3IoKX0pfW9lLmNoZWNrUmVwb3J0TWlzc2luZ1Byb3A9UHU7ZnVuY3Rpb24gd3Uoe2dlbjplLGRhdGE6bixpdDp7b3B0czpyfX0sbyx0KXtyZXR1cm4oMCxkZS5vcikoLi4uby5tYXAocz0+KDAsZGUuYW5kKShLbyhlLG4scyxyLm93blByb3BlcnRpZXMpLCgwLGRlLl8pYCR7dH0gPSAke3N9YCkpKX1vZS5jaGVja01pc3NpbmdQcm9wPXd1O2Z1bmN0aW9uIEd1KGUsbil7ZS5zZXRQYXJhbXMoe21pc3NpbmdQcm9wZXJ0eTpufSwhMCksZS5lcnJvcigpfW9lLnJlcG9ydE1pc3NpbmdQcm9wPUd1O2Z1bmN0aW9uIHVzKGUpe3JldHVybiBlLnNjb3BlVmFsdWUoImZ1bmMiLHtyZWY6T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSxjb2RlOigwLGRlLl8pYE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHlgfSl9b2UuaGFzUHJvcEZ1bmM9dXM7ZnVuY3Rpb24gVm8oZSxuLHIpe3JldHVybigwLGRlLl8pYCR7dXMoZSl9LmNhbGwoJHtufSwgJHtyfSlgfW9lLmlzT3duUHJvcGVydHk9Vm87ZnVuY3Rpb24gQ3UoZSxuLHIsbyl7Y29uc3QgdD0oMCxkZS5fKWAke259JHsoMCxkZS5nZXRQcm9wZXJ0eSkocil9ICE9PSB1bmRlZmluZWRgO3JldHVybiBvPygwLGRlLl8pYCR7dH0gJiYgJHtWbyhlLG4scil9YDp0fW9lLnByb3BlcnR5SW5EYXRhPUN1O2Z1bmN0aW9uIEtvKGUsbixyLG8pe2NvbnN0IHQ9KDAsZGUuXylgJHtufSR7KDAsZGUuZ2V0UHJvcGVydHkpKHIpfSA9PT0gdW5kZWZpbmVkYDtyZXR1cm4gbz8oMCxkZS5vcikodCwoMCxkZS5ub3QpKFZvKGUsbixyKSkpOnR9b2Uubm9Qcm9wZXJ0eUluRGF0YT1LbztmdW5jdGlvbiBfcyhlKXtyZXR1cm4gZT9PYmplY3Qua2V5cyhlKS5maWx0ZXIobj0+biE9PSJfX3Byb3RvX18iKTpbXX1vZS5hbGxTY2hlbWFQcm9wZXJ0aWVzPV9zO2Z1bmN0aW9uIHl1KGUsbil7cmV0dXJuIF9zKG4pLmZpbHRlcihyPT4hKDAsRm8uYWx3YXlzVmFsaWRTY2hlbWEpKGUsbltyXSkpfW9lLnNjaGVtYVByb3BlcnRpZXM9eXU7ZnVuY3Rpb24gTHUoe3NjaGVtYUNvZGU6ZSxkYXRhOm4saXQ6e2dlbjpyLHRvcFNjaGVtYVJlZjpvLHNjaGVtYVBhdGg6dCxlcnJvclBhdGg6c30saXQ6aX0sbCxjLG0pe2NvbnN0IGE9bT8oMCxkZS5fKWAke2V9LCAke259LCAke299JHt0fWA6bixoPVtbVG4uZGVmYXVsdC5pbnN0YW5jZVBhdGgsKDAsZGUuc3RyQ29uY2F0KShUbi5kZWZhdWx0Lmluc3RhbmNlUGF0aCxzKV0sW1RuLmRlZmF1bHQucGFyZW50RGF0YSxpLnBhcmVudERhdGFdLFtUbi5kZWZhdWx0LnBhcmVudERhdGFQcm9wZXJ0eSxpLnBhcmVudERhdGFQcm9wZXJ0eV0sW1RuLmRlZmF1bHQucm9vdERhdGEsVG4uZGVmYXVsdC5yb290RGF0YV1dO2kub3B0cy5keW5hbWljUmVmJiZoLnB1c2goW1RuLmRlZmF1bHQuZHluYW1pY0FuY2hvcnMsVG4uZGVmYXVsdC5keW5hbWljQW5jaG9yc10pO2NvbnN0IE89KDAsZGUuXylgJHthfSwgJHtyLm9iamVjdCguLi5oKX1gO3JldHVybiBjIT09ZGUubmlsPygwLGRlLl8pYCR7bH0uY2FsbCgke2N9LCAke099KWA6KDAsZGUuXylgJHtsfSgke099KWB9b2UuY2FsbFZhbGlkYXRlQ29kZT1MdTtjb25zdCBCdT0oMCxkZS5fKWBuZXcgUmVnRXhwYDtmdW5jdGlvbiBrdSh7Z2VuOmUsaXQ6e29wdHM6bn19LHIpe2NvbnN0IG89bi51bmljb2RlUmVnRXhwPyJ1IjoiIix7cmVnRXhwOnR9PW4uY29kZSxzPXQocixvKTtyZXR1cm4gZS5zY29wZVZhbHVlKCJwYXR0ZXJuIix7a2V5OnMudG9TdHJpbmcoKSxyZWY6cyxjb2RlOigwLGRlLl8pYCR7dC5jb2RlPT09Im5ldyBSZWdFeHAiP0J1OigwLFN1LnVzZUZ1bmMpKGUsdCl9KCR7cn0sICR7b30pYH0pfW9lLnVzZVBhdHRlcm49a3U7ZnVuY3Rpb24gTXUoZSl7Y29uc3R7Z2VuOm4sZGF0YTpyLGtleXdvcmQ6byxpdDp0fT1lLHM9bi5uYW1lKCJ2YWxpZCIpO2lmKHQuYWxsRXJyb3JzKXtjb25zdCBsPW4ubGV0KCJ2YWxpZCIsITApO3JldHVybiBpKCgpPT5uLmFzc2lnbihsLCExKSksbH1yZXR1cm4gbi52YXIocywhMCksaSgoKT0+bi5icmVhaygpKSxzO2Z1bmN0aW9uIGkobCl7Y29uc3QgYz1uLmNvbnN0KCJsZW4iLCgwLGRlLl8pYCR7cn0ubGVuZ3RoYCk7bi5mb3JSYW5nZSgiaSIsMCxjLG09PntlLnN1YnNjaGVtYSh7a2V5d29yZDpvLGRhdGFQcm9wOm0sZGF0YVByb3BUeXBlOkZvLlR5cGUuTnVtfSxzKSxuLmlmKCgwLGRlLm5vdCkocyksbCl9KX19b2UudmFsaWRhdGVBcnJheT1NdTtmdW5jdGlvbiBYdShlKXtjb25zdHtnZW46bixzY2hlbWE6cixrZXl3b3JkOm8saXQ6dH09ZTtpZighQXJyYXkuaXNBcnJheShyKSl0aHJvdyBuZXcgRXJyb3IoImFqdiBpbXBsZW1lbnRhdGlvbiBlcnJvciIpO2lmKHIuc29tZShjPT4oMCxGby5hbHdheXNWYWxpZFNjaGVtYSkodCxjKSkmJiF0Lm9wdHMudW5ldmFsdWF0ZWQpcmV0dXJuO2NvbnN0IGk9bi5sZXQoInZhbGlkIiwhMSksbD1uLm5hbWUoIl92YWxpZCIpO24uYmxvY2soKCk9PnIuZm9yRWFjaCgoYyxtKT0+e2NvbnN0IGE9ZS5zdWJzY2hlbWEoe2tleXdvcmQ6byxzY2hlbWFQcm9wOm0sY29tcG9zaXRlUnVsZTohMH0sbCk7bi5hc3NpZ24oaSwoMCxkZS5fKWAke2l9IHx8ICR7bH1gKSxlLm1lcmdlVmFsaWRFdmFsdWF0ZWQoYSxsKXx8bi5pZigoMCxkZS5ub3QpKGkpKX0pKSxlLnJlc3VsdChpLCgpPT5lLnJlc2V0KCksKCk9PmUuZXJyb3IoITApKX1vZS52YWxpZGF0ZVVuaW9uPVh1LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShxZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSkscWUudmFsaWRhdGVLZXl3b3JkVXNhZ2U9cWUudmFsaWRTY2hlbWFUeXBlPXFlLmZ1bmNLZXl3b3JkQ29kZT1xZS5tYWNyb0tleXdvcmRDb2RlPXZvaWQgMDtjb25zdCB3ZT1fZSx5bj1NZSwkdT1vZSxqdT1UcjtmdW5jdGlvbiB4dShlLG4pe2NvbnN0e2dlbjpyLGtleXdvcmQ6byxzY2hlbWE6dCxwYXJlbnRTY2hlbWE6cyxpdDppfT1lLGw9bi5tYWNyby5jYWxsKGkuc2VsZix0LHMsaSksYz1jcyhyLG8sbCk7aS5vcHRzLnZhbGlkYXRlU2NoZW1hIT09ITEmJmkuc2VsZi52YWxpZGF0ZVNjaGVtYShsLCEwKTtjb25zdCBtPXIubmFtZSgidmFsaWQiKTtlLnN1YnNjaGVtYSh7c2NoZW1hOmwsc2NoZW1hUGF0aDp3ZS5uaWwsZXJyU2NoZW1hUGF0aDpgJHtpLmVyclNjaGVtYVBhdGh9LyR7b31gLHRvcFNjaGVtYVJlZjpjLGNvbXBvc2l0ZVJ1bGU6ITB9LG0pLGUucGFzcyhtLCgpPT5lLmVycm9yKCEwKSl9cWUubWFjcm9LZXl3b3JkQ29kZT14dTtmdW5jdGlvbiBGdShlLG4pe3ZhciByO2NvbnN0e2dlbjpvLGtleXdvcmQ6dCxzY2hlbWE6cyxwYXJlbnRTY2hlbWE6aSwkZGF0YTpsLGl0OmN9PWU7S3UoYyxuKTtjb25zdCBtPSFsJiZuLmNvbXBpbGU/bi5jb21waWxlLmNhbGwoYy5zZWxmLHMsaSxjKTpuLnZhbGlkYXRlLGE9Y3Mobyx0LG0pLGg9by5sZXQoInZhbGlkIik7ZS5ibG9jayRkYXRhKGgsTyksZS5vaygocj1uLnZhbGlkKSE9PW51bGwmJnIhPT12b2lkIDA/cjpoKTtmdW5jdGlvbiBPKCl7aWYobi5lcnJvcnM9PT0hMSlDKCksbi5tb2RpZnlpbmcmJmxzKGUpLFQoKCk9PmUuZXJyb3IoKSk7ZWxzZXtjb25zdCBmPW4uYXN5bmM/RCgpOncoKTtuLm1vZGlmeWluZyYmbHMoZSksVCgoKT0+VnUoZSxmKSl9fWZ1bmN0aW9uIEQoKXtjb25zdCBmPW8ubGV0KCJydWxlRXJycyIsbnVsbCk7cmV0dXJuIG8udHJ5KCgpPT5DKCgwLHdlLl8pYGF3YWl0IGApLEE9Pm8uYXNzaWduKGgsITEpLmlmKCgwLHdlLl8pYCR7QX0gaW5zdGFuY2VvZiAke2MuVmFsaWRhdGlvbkVycm9yfWAsKCk9Pm8uYXNzaWduKGYsKDAsd2UuXylgJHtBfS5lcnJvcnNgKSwoKT0+by50aHJvdyhBKSkpLGZ9ZnVuY3Rpb24gdygpe2NvbnN0IGY9KDAsd2UuXylgJHthfS5lcnJvcnNgO3JldHVybiBvLmFzc2lnbihmLG51bGwpLEMod2UubmlsKSxmfWZ1bmN0aW9uIEMoZj1uLmFzeW5jPygwLHdlLl8pYGF3YWl0IGA6d2UubmlsKXtjb25zdCBBPWMub3B0cy5wYXNzQ29udGV4dD95bi5kZWZhdWx0LnRoaXM6eW4uZGVmYXVsdC5zZWxmLFU9ISgiY29tcGlsZSJpbiBuJiYhbHx8bi5zY2hlbWE9PT0hMSk7by5hc3NpZ24oaCwoMCx3ZS5fKWAke2Z9JHsoMCwkdS5jYWxsVmFsaWRhdGVDb2RlKShlLGEsQSxVKX1gLG4ubW9kaWZ5aW5nKX1mdW5jdGlvbiBUKGYpe3ZhciBBO28uaWYoKDAsd2Uubm90KSgoQT1uLnZhbGlkKSE9PW51bGwmJkEhPT12b2lkIDA/QTpoKSxmKX19cWUuZnVuY0tleXdvcmRDb2RlPUZ1O2Z1bmN0aW9uIGxzKGUpe2NvbnN0e2dlbjpuLGRhdGE6cixpdDpvfT1lO24uaWYoby5wYXJlbnREYXRhLCgpPT5uLmFzc2lnbihyLCgwLHdlLl8pYCR7by5wYXJlbnREYXRhfVske28ucGFyZW50RGF0YVByb3BlcnR5fV1gKSl9ZnVuY3Rpb24gVnUoZSxuKXtjb25zdHtnZW46cn09ZTtyLmlmKCgwLHdlLl8pYEFycmF5LmlzQXJyYXkoJHtufSlgLCgpPT57ci5hc3NpZ24oeW4uZGVmYXVsdC52RXJyb3JzLCgwLHdlLl8pYCR7eW4uZGVmYXVsdC52RXJyb3JzfSA9PT0gbnVsbCA/ICR7bn0gOiAke3luLmRlZmF1bHQudkVycm9yc30uY29uY2F0KCR7bn0pYCkuYXNzaWduKHluLmRlZmF1bHQuZXJyb3JzLCgwLHdlLl8pYCR7eW4uZGVmYXVsdC52RXJyb3JzfS5sZW5ndGhgKSwoMCxqdS5leHRlbmRFcnJvcnMpKGUpfSwoKT0+ZS5lcnJvcigpKX1mdW5jdGlvbiBLdSh7c2NoZW1hRW52OmV9LG4pe2lmKG4uYXN5bmMmJiFlLiRhc3luYyl0aHJvdyBuZXcgRXJyb3IoImFzeW5jIGtleXdvcmQgaW4gc3luYyBzY2hlbWEiKX1mdW5jdGlvbiBjcyhlLG4scil7aWYocj09PXZvaWQgMCl0aHJvdyBuZXcgRXJyb3IoYGtleXdvcmQgIiR7bn0iIGZhaWxlZCB0byBjb21waWxlYCk7cmV0dXJuIGUuc2NvcGVWYWx1ZSgia2V5d29yZCIsdHlwZW9mIHI9PSJmdW5jdGlvbiI/e3JlZjpyfTp7cmVmOnIsY29kZTooMCx3ZS5zdHJpbmdpZnkpKHIpfSl9ZnVuY3Rpb24gV3UoZSxuLHI9ITEpe3JldHVybiFuLmxlbmd0aHx8bi5zb21lKG89Pm89PT0iYXJyYXkiP0FycmF5LmlzQXJyYXkoZSk6bz09PSJvYmplY3QiP2UmJnR5cGVvZiBlPT0ib2JqZWN0IiYmIUFycmF5LmlzQXJyYXkoZSk6dHlwZW9mIGU9PW98fHImJnR5cGVvZiBlPT0idW5kZWZpbmVkIil9cWUudmFsaWRTY2hlbWFUeXBlPVd1O2Z1bmN0aW9uIFl1KHtzY2hlbWE6ZSxvcHRzOm4sc2VsZjpyLGVyclNjaGVtYVBhdGg6b30sdCxzKXtpZihBcnJheS5pc0FycmF5KHQua2V5d29yZCk/IXQua2V5d29yZC5pbmNsdWRlcyhzKTp0LmtleXdvcmQhPT1zKXRocm93IG5ldyBFcnJvcigiYWp2IGltcGxlbWVudGF0aW9uIGVycm9yIik7Y29uc3QgaT10LmRlcGVuZGVuY2llcztpZihpIT1udWxsJiZpLnNvbWUobD0+IU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLGwpKSl0aHJvdyBuZXcgRXJyb3IoYHBhcmVudCBzY2hlbWEgbXVzdCBoYXZlIGRlcGVuZGVuY2llcyBvZiAke3N9OiAke2kuam9pbigiLCIpfWApO2lmKHQudmFsaWRhdGVTY2hlbWEmJiF0LnZhbGlkYXRlU2NoZW1hKGVbc10pKXtjb25zdCBjPWBrZXl3b3JkICIke3N9IiB2YWx1ZSBpcyBpbnZhbGlkIGF0IHBhdGggIiR7b30iOiBgK3IuZXJyb3JzVGV4dCh0LnZhbGlkYXRlU2NoZW1hLmVycm9ycyk7aWYobi52YWxpZGF0ZVNjaGVtYT09PSJsb2ciKXIubG9nZ2VyLmVycm9yKGMpO2Vsc2UgdGhyb3cgbmV3IEVycm9yKGMpfX1xZS52YWxpZGF0ZUtleXdvcmRVc2FnZT1ZdTt2YXIgTm49e307T2JqZWN0LmRlZmluZVByb3BlcnR5KE5uLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxObi5leHRlbmRTdWJzY2hlbWFNb2RlPU5uLmV4dGVuZFN1YnNjaGVtYURhdGE9Tm4uZ2V0U3Vic2NoZW1hPXZvaWQgMDtjb25zdCBRZT1fZSxkcz1BZTtmdW5jdGlvbiBKdShlLHtrZXl3b3JkOm4sc2NoZW1hUHJvcDpyLHNjaGVtYTpvLHNjaGVtYVBhdGg6dCxlcnJTY2hlbWFQYXRoOnMsdG9wU2NoZW1hUmVmOml9KXtpZihuIT09dm9pZCAwJiZvIT09dm9pZCAwKXRocm93IG5ldyBFcnJvcignYm90aCAia2V5d29yZCIgYW5kICJzY2hlbWEiIHBhc3NlZCwgb25seSBvbmUgYWxsb3dlZCcpO2lmKG4hPT12b2lkIDApe2NvbnN0IGw9ZS5zY2hlbWFbbl07cmV0dXJuIHI9PT12b2lkIDA/e3NjaGVtYTpsLHNjaGVtYVBhdGg6KDAsUWUuXylgJHtlLnNjaGVtYVBhdGh9JHsoMCxRZS5nZXRQcm9wZXJ0eSkobil9YCxlcnJTY2hlbWFQYXRoOmAke2UuZXJyU2NoZW1hUGF0aH0vJHtufWB9OntzY2hlbWE6bFtyXSxzY2hlbWFQYXRoOigwLFFlLl8pYCR7ZS5zY2hlbWFQYXRofSR7KDAsUWUuZ2V0UHJvcGVydHkpKG4pfSR7KDAsUWUuZ2V0UHJvcGVydHkpKHIpfWAsZXJyU2NoZW1hUGF0aDpgJHtlLmVyclNjaGVtYVBhdGh9LyR7bn0vJHsoMCxkcy5lc2NhcGVGcmFnbWVudCkocil9YH19aWYobyE9PXZvaWQgMCl7aWYodD09PXZvaWQgMHx8cz09PXZvaWQgMHx8aT09PXZvaWQgMCl0aHJvdyBuZXcgRXJyb3IoJyJzY2hlbWFQYXRoIiwgImVyclNjaGVtYVBhdGgiIGFuZCAidG9wU2NoZW1hUmVmIiBhcmUgcmVxdWlyZWQgd2l0aCAic2NoZW1hIicpO3JldHVybntzY2hlbWE6byxzY2hlbWFQYXRoOnQsdG9wU2NoZW1hUmVmOmksZXJyU2NoZW1hUGF0aDpzfX10aHJvdyBuZXcgRXJyb3IoJ2VpdGhlciAia2V5d29yZCIgb3IgInNjaGVtYSIgbXVzdCBiZSBwYXNzZWQnKX1Obi5nZXRTdWJzY2hlbWE9SnU7ZnVuY3Rpb24genUoZSxuLHtkYXRhUHJvcDpyLGRhdGFQcm9wVHlwZTpvLGRhdGE6dCxkYXRhVHlwZXM6cyxwcm9wZXJ0eU5hbWU6aX0pe2lmKHQhPT12b2lkIDAmJnIhPT12b2lkIDApdGhyb3cgbmV3IEVycm9yKCdib3RoICJkYXRhIiBhbmQgImRhdGFQcm9wIiBwYXNzZWQsIG9ubHkgb25lIGFsbG93ZWQnKTtjb25zdHtnZW46bH09bjtpZihyIT09dm9pZCAwKXtjb25zdHtlcnJvclBhdGg6bSxkYXRhUGF0aEFycjphLG9wdHM6aH09bixPPWwubGV0KCJkYXRhIiwoMCxRZS5fKWAke24uZGF0YX0keygwLFFlLmdldFByb3BlcnR5KShyKX1gLCEwKTtjKE8pLGUuZXJyb3JQYXRoPSgwLFFlLnN0cilgJHttfSR7KDAsZHMuZ2V0RXJyb3JQYXRoKShyLG8saC5qc1Byb3BlcnR5U3ludGF4KX1gLGUucGFyZW50RGF0YVByb3BlcnR5PSgwLFFlLl8pYCR7cn1gLGUuZGF0YVBhdGhBcnI9Wy4uLmEsZS5wYXJlbnREYXRhUHJvcGVydHldfWlmKHQhPT12b2lkIDApe2NvbnN0IG09dCBpbnN0YW5jZW9mIFFlLk5hbWU/dDpsLmxldCgiZGF0YSIsdCwhMCk7YyhtKSxpIT09dm9pZCAwJiYoZS5wcm9wZXJ0eU5hbWU9aSl9cyYmKGUuZGF0YVR5cGVzPXMpO2Z1bmN0aW9uIGMobSl7ZS5kYXRhPW0sZS5kYXRhTGV2ZWw9bi5kYXRhTGV2ZWwrMSxlLmRhdGFUeXBlcz1bXSxuLmRlZmluZWRQcm9wZXJ0aWVzPW5ldyBTZXQsZS5wYXJlbnREYXRhPW4uZGF0YSxlLmRhdGFOYW1lcz1bLi4ubi5kYXRhTmFtZXMsbV19fU5uLmV4dGVuZFN1YnNjaGVtYURhdGE9enU7ZnVuY3Rpb24gcXUoZSx7anRkRGlzY3JpbWluYXRvcjpuLGp0ZE1ldGFkYXRhOnIsY29tcG9zaXRlUnVsZTpvLGNyZWF0ZUVycm9yczp0LGFsbEVycm9yczpzfSl7byE9PXZvaWQgMCYmKGUuY29tcG9zaXRlUnVsZT1vKSx0IT09dm9pZCAwJiYoZS5jcmVhdGVFcnJvcnM9dCkscyE9PXZvaWQgMCYmKGUuYWxsRXJyb3JzPXMpLGUuanRkRGlzY3JpbWluYXRvcj1uLGUuanRkTWV0YWRhdGE9cn1Obi5leHRlbmRTdWJzY2hlbWFNb2RlPXF1O3ZhciBEZT17fSxRdT1mdW5jdGlvbiBlKG4scil7aWYobj09PXIpcmV0dXJuITA7aWYobiYmciYmdHlwZW9mIG49PSJvYmplY3QiJiZ0eXBlb2Ygcj09Im9iamVjdCIpe2lmKG4uY29uc3RydWN0b3IhPT1yLmNvbnN0cnVjdG9yKXJldHVybiExO3ZhciBvLHQscztpZihBcnJheS5pc0FycmF5KG4pKXtpZihvPW4ubGVuZ3RoLG8hPXIubGVuZ3RoKXJldHVybiExO2Zvcih0PW87dC0tIT09MDspaWYoIWUoblt0XSxyW3RdKSlyZXR1cm4hMTtyZXR1cm4hMH1pZihuLmNvbnN0cnVjdG9yPT09UmVnRXhwKXJldHVybiBuLnNvdXJjZT09PXIuc291cmNlJiZuLmZsYWdzPT09ci5mbGFncztpZihuLnZhbHVlT2YhPT1PYmplY3QucHJvdG90eXBlLnZhbHVlT2YpcmV0dXJuIG4udmFsdWVPZigpPT09ci52YWx1ZU9mKCk7aWYobi50b1N0cmluZyE9PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcpcmV0dXJuIG4udG9TdHJpbmcoKT09PXIudG9TdHJpbmcoKTtpZihzPU9iamVjdC5rZXlzKG4pLG89cy5sZW5ndGgsbyE9PU9iamVjdC5rZXlzKHIpLmxlbmd0aClyZXR1cm4hMTtmb3IodD1vO3QtLSE9PTA7KWlmKCFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocixzW3RdKSlyZXR1cm4hMTtmb3IodD1vO3QtLSE9PTA7KXt2YXIgaT1zW3RdO2lmKCFlKG5baV0scltpXSkpcmV0dXJuITF9cmV0dXJuITB9cmV0dXJuIG4hPT1uJiZyIT09cn0saHM9e2V4cG9ydHM6e319LGduPWhzLmV4cG9ydHM9ZnVuY3Rpb24oZSxuLHIpe3R5cGVvZiBuPT0iZnVuY3Rpb24iJiYocj1uLG49e30pLHI9bi5jYnx8cjt2YXIgbz10eXBlb2Ygcj09ImZ1bmN0aW9uIj9yOnIucHJlfHxmdW5jdGlvbigpe30sdD1yLnBvc3R8fGZ1bmN0aW9uKCl7fTtpbyhuLG8sdCxlLCIiLGUpfTtnbi5rZXl3b3Jkcz17YWRkaXRpb25hbEl0ZW1zOiEwLGl0ZW1zOiEwLGNvbnRhaW5zOiEwLGFkZGl0aW9uYWxQcm9wZXJ0aWVzOiEwLHByb3BlcnR5TmFtZXM6ITAsbm90OiEwLGlmOiEwLHRoZW46ITAsZWxzZTohMH0sZ24uYXJyYXlLZXl3b3Jkcz17aXRlbXM6ITAsYWxsT2Y6ITAsYW55T2Y6ITAsb25lT2Y6ITB9LGduLnByb3BzS2V5d29yZHM9eyRkZWZzOiEwLGRlZmluaXRpb25zOiEwLHByb3BlcnRpZXM6ITAscGF0dGVyblByb3BlcnRpZXM6ITAsZGVwZW5kZW5jaWVzOiEwfSxnbi5za2lwS2V5d29yZHM9e2RlZmF1bHQ6ITAsZW51bTohMCxjb25zdDohMCxyZXF1aXJlZDohMCxtYXhpbXVtOiEwLG1pbmltdW06ITAsZXhjbHVzaXZlTWF4aW11bTohMCxleGNsdXNpdmVNaW5pbXVtOiEwLG11bHRpcGxlT2Y6ITAsbWF4TGVuZ3RoOiEwLG1pbkxlbmd0aDohMCxwYXR0ZXJuOiEwLGZvcm1hdDohMCxtYXhJdGVtczohMCxtaW5JdGVtczohMCx1bmlxdWVJdGVtczohMCxtYXhQcm9wZXJ0aWVzOiEwLG1pblByb3BlcnRpZXM6ITB9O2Z1bmN0aW9uIGlvKGUsbixyLG8sdCxzLGksbCxjLG0pe2lmKG8mJnR5cGVvZiBvPT0ib2JqZWN0IiYmIUFycmF5LmlzQXJyYXkobykpe24obyx0LHMsaSxsLGMsbSk7Zm9yKHZhciBhIGluIG8pe3ZhciBoPW9bYV07aWYoQXJyYXkuaXNBcnJheShoKSl7aWYoYSBpbiBnbi5hcnJheUtleXdvcmRzKWZvcih2YXIgTz0wO088aC5sZW5ndGg7TysrKWlvKGUsbixyLGhbT10sdCsiLyIrYSsiLyIrTyxzLHQsYSxvLE8pfWVsc2UgaWYoYSBpbiBnbi5wcm9wc0tleXdvcmRzKXtpZihoJiZ0eXBlb2YgaD09Im9iamVjdCIpZm9yKHZhciBEIGluIGgpaW8oZSxuLHIsaFtEXSx0KyIvIithKyIvIitadShEKSxzLHQsYSxvLEQpfWVsc2UoYSBpbiBnbi5rZXl3b3Jkc3x8ZS5hbGxLZXlzJiYhKGEgaW4gZ24uc2tpcEtleXdvcmRzKSkmJmlvKGUsbixyLGgsdCsiLyIrYSxzLHQsYSxvKX1yKG8sdCxzLGksbCxjLG0pfX1mdW5jdGlvbiBadShlKXtyZXR1cm4gZS5yZXBsYWNlKC9+L2csIn4wIikucmVwbGFjZSgvXC8vZywifjEiKX1PYmplY3QuZGVmaW5lUHJvcGVydHkoRGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLERlLmdldFNjaGVtYVJlZnM9RGUucmVzb2x2ZVVybD1EZS5ub3JtYWxpemVJZD1EZS5fZ2V0RnVsbFBhdGg9RGUuZ2V0RnVsbFBhdGg9RGUuaW5saW5lUmVmPXZvaWQgMDtjb25zdCBlXz1BZSxuXz1RdSxyXz1ocy5leHBvcnRzLG9fPW5ldyBTZXQoWyJ0eXBlIiwiZm9ybWF0IiwicGF0dGVybiIsIm1heExlbmd0aCIsIm1pbkxlbmd0aCIsIm1heFByb3BlcnRpZXMiLCJtaW5Qcm9wZXJ0aWVzIiwibWF4SXRlbXMiLCJtaW5JdGVtcyIsIm1heGltdW0iLCJtaW5pbXVtIiwidW5pcXVlSXRlbXMiLCJtdWx0aXBsZU9mIiwicmVxdWlyZWQiLCJlbnVtIiwiY29uc3QiXSk7ZnVuY3Rpb24gdF8oZSxuPSEwKXtyZXR1cm4gdHlwZW9mIGU9PSJib29sZWFuIj8hMDpuPT09ITA/IVdvKGUpOm4/bXMoZSk8PW46ITF9RGUuaW5saW5lUmVmPXRfO2NvbnN0IHNfPW5ldyBTZXQoWyIkcmVmIiwiJHJlY3Vyc2l2ZVJlZiIsIiRyZWN1cnNpdmVBbmNob3IiLCIkZHluYW1pY1JlZiIsIiRkeW5hbWljQW5jaG9yIl0pO2Z1bmN0aW9uIFdvKGUpe2Zvcihjb25zdCBuIGluIGUpe2lmKHNfLmhhcyhuKSlyZXR1cm4hMDtjb25zdCByPWVbbl07aWYoQXJyYXkuaXNBcnJheShyKSYmci5zb21lKFdvKXx8dHlwZW9mIHI9PSJvYmplY3QiJiZXbyhyKSlyZXR1cm4hMH1yZXR1cm4hMX1mdW5jdGlvbiBtcyhlKXtsZXQgbj0wO2Zvcihjb25zdCByIGluIGUpe2lmKHI9PT0iJHJlZiIpcmV0dXJuIDEvMDtpZihuKyssIW9fLmhhcyhyKSYmKHR5cGVvZiBlW3JdPT0ib2JqZWN0IiYmKDAsZV8uZWFjaEl0ZW0pKGVbcl0sbz0+bis9bXMobykpLG49PT0xLzApKXJldHVybiAxLzB9cmV0dXJuIG59ZnVuY3Rpb24gcHMoZSxuPSIiLHIpe3IhPT0hMSYmKG49dHIobikpO2NvbnN0IG89ZS5wYXJzZShuKTtyZXR1cm4gRXMoZSxvKX1EZS5nZXRGdWxsUGF0aD1wcztmdW5jdGlvbiBFcyhlLG4pe3JldHVybiBlLnNlcmlhbGl6ZShuKS5zcGxpdCgiIyIpWzBdKyIjIn1EZS5fZ2V0RnVsbFBhdGg9RXM7Y29uc3QgaV89LyNcLz8kLztmdW5jdGlvbiB0cihlKXtyZXR1cm4gZT9lLnJlcGxhY2UoaV8sIiIpOiIifURlLm5vcm1hbGl6ZUlkPXRyO2Z1bmN0aW9uIGFfKGUsbixyKXtyZXR1cm4gcj10cihyKSxlLnJlc29sdmUobixyKX1EZS5yZXNvbHZlVXJsPWFfO2NvbnN0IHVfPS9eW2Etel9dWy1hLXowLTkuX10qJC9pO2Z1bmN0aW9uIF9fKGUsbil7aWYodHlwZW9mIGU9PSJib29sZWFuIilyZXR1cm57fTtjb25zdHtzY2hlbWFJZDpyLHVyaVJlc29sdmVyOm99PXRoaXMub3B0cyx0PXRyKGVbcl18fG4pLHM9eyIiOnR9LGk9cHMobyx0LCExKSxsPXt9LGM9bmV3IFNldDtyZXR1cm4gcl8oZSx7YWxsS2V5czohMH0sKGgsTyxELHcpPT57aWYodz09PXZvaWQgMClyZXR1cm47Y29uc3QgQz1pK087bGV0IFQ9c1t3XTt0eXBlb2YgaFtyXT09InN0cmluZyImJihUPWYuY2FsbCh0aGlzLGhbcl0pKSxBLmNhbGwodGhpcyxoLiRhbmNob3IpLEEuY2FsbCh0aGlzLGguJGR5bmFtaWNBbmNob3IpLHNbT109VDtmdW5jdGlvbiBmKFUpe2NvbnN0IFM9dGhpcy5vcHRzLnVyaVJlc29sdmVyLnJlc29sdmU7aWYoVT10cihUP1MoVCxVKTpVKSxjLmhhcyhVKSl0aHJvdyBhKFUpO2MuYWRkKFUpO2xldCBqPXRoaXMucmVmc1tVXTtyZXR1cm4gdHlwZW9mIGo9PSJzdHJpbmciJiYoaj10aGlzLnJlZnNbal0pLHR5cGVvZiBqPT0ib2JqZWN0Ij9tKGgsai5zY2hlbWEsVSk6VSE9PXRyKEMpJiYoVVswXT09PSIjIj8obShoLGxbVV0sVSksbFtVXT1oKTp0aGlzLnJlZnNbVV09QyksVX1mdW5jdGlvbiBBKFUpe2lmKHR5cGVvZiBVPT0ic3RyaW5nIil7aWYoIXVfLnRlc3QoVSkpdGhyb3cgbmV3IEVycm9yKGBpbnZhbGlkIGFuY2hvciAiJHtVfSJgKTtmLmNhbGwodGhpcyxgIyR7VX1gKX19fSksbDtmdW5jdGlvbiBtKGgsTyxEKXtpZihPIT09dm9pZCAwJiYhbl8oaCxPKSl0aHJvdyBhKEQpfWZ1bmN0aW9uIGEoaCl7cmV0dXJuIG5ldyBFcnJvcihgcmVmZXJlbmNlICIke2h9IiByZXNvbHZlcyB0byBtb3JlIHRoYW4gb25lIHNjaGVtYWApfX1EZS5nZXRTY2hlbWFSZWZzPV9fLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh6ZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksemUuZ2V0RGF0YT16ZS5LZXl3b3JkQ3h0PXplLnZhbGlkYXRlRnVuY3Rpb25Db2RlPXZvaWQgMDtjb25zdCBmcz1ycixScz10byxZbz1jbixhbz10byxsXz1zbyxncj1xZSxKbz1ObixrPV9lLFY9TWUsY189RGUsZG49QWUsSXI9VHI7ZnVuY3Rpb24gZF8oZSl7aWYoZ3MoZSkmJihJcyhlKSxOcyhlKSkpe3BfKGUpO3JldHVybn1PcyhlLCgpPT4oMCxmcy50b3BCb29sT3JFbXB0eVNjaGVtYSkoZSkpfXplLnZhbGlkYXRlRnVuY3Rpb25Db2RlPWRfO2Z1bmN0aW9uIE9zKHtnZW46ZSx2YWxpZGF0ZU5hbWU6bixzY2hlbWE6cixzY2hlbWFFbnY6byxvcHRzOnR9LHMpe3QuY29kZS5lczU/ZS5mdW5jKG4sKDAsay5fKWAke1YuZGVmYXVsdC5kYXRhfSwgJHtWLmRlZmF1bHQudmFsQ3h0fWAsby4kYXN5bmMsKCk9PntlLmNvZGUoKDAsay5fKWAidXNlIHN0cmljdCI7ICR7VHMocix0KX1gKSxtXyhlLHQpLGUuY29kZShzKX0pOmUuZnVuYyhuLCgwLGsuXylgJHtWLmRlZmF1bHQuZGF0YX0sICR7aF8odCl9YCxvLiRhc3luYywoKT0+ZS5jb2RlKFRzKHIsdCkpLmNvZGUocykpfWZ1bmN0aW9uIGhfKGUpe3JldHVybigwLGsuXylgeyR7Vi5kZWZhdWx0Lmluc3RhbmNlUGF0aH09IiIsICR7Vi5kZWZhdWx0LnBhcmVudERhdGF9LCAke1YuZGVmYXVsdC5wYXJlbnREYXRhUHJvcGVydHl9LCAke1YuZGVmYXVsdC5yb290RGF0YX09JHtWLmRlZmF1bHQuZGF0YX0ke2UuZHluYW1pY1JlZj8oMCxrLl8pYCwgJHtWLmRlZmF1bHQuZHluYW1pY0FuY2hvcnN9PXt9YDprLm5pbH19PXt9YH1mdW5jdGlvbiBtXyhlLG4pe2UuaWYoVi5kZWZhdWx0LnZhbEN4dCwoKT0+e2UudmFyKFYuZGVmYXVsdC5pbnN0YW5jZVBhdGgsKDAsay5fKWAke1YuZGVmYXVsdC52YWxDeHR9LiR7Vi5kZWZhdWx0Lmluc3RhbmNlUGF0aH1gKSxlLnZhcihWLmRlZmF1bHQucGFyZW50RGF0YSwoMCxrLl8pYCR7Vi5kZWZhdWx0LnZhbEN4dH0uJHtWLmRlZmF1bHQucGFyZW50RGF0YX1gKSxlLnZhcihWLmRlZmF1bHQucGFyZW50RGF0YVByb3BlcnR5LCgwLGsuXylgJHtWLmRlZmF1bHQudmFsQ3h0fS4ke1YuZGVmYXVsdC5wYXJlbnREYXRhUHJvcGVydHl9YCksZS52YXIoVi5kZWZhdWx0LnJvb3REYXRhLCgwLGsuXylgJHtWLmRlZmF1bHQudmFsQ3h0fS4ke1YuZGVmYXVsdC5yb290RGF0YX1gKSxuLmR5bmFtaWNSZWYmJmUudmFyKFYuZGVmYXVsdC5keW5hbWljQW5jaG9ycywoMCxrLl8pYCR7Vi5kZWZhdWx0LnZhbEN4dH0uJHtWLmRlZmF1bHQuZHluYW1pY0FuY2hvcnN9YCl9LCgpPT57ZS52YXIoVi5kZWZhdWx0Lmluc3RhbmNlUGF0aCwoMCxrLl8pYCIiYCksZS52YXIoVi5kZWZhdWx0LnBhcmVudERhdGEsKDAsay5fKWB1bmRlZmluZWRgKSxlLnZhcihWLmRlZmF1bHQucGFyZW50RGF0YVByb3BlcnR5LCgwLGsuXylgdW5kZWZpbmVkYCksZS52YXIoVi5kZWZhdWx0LnJvb3REYXRhLFYuZGVmYXVsdC5kYXRhKSxuLmR5bmFtaWNSZWYmJmUudmFyKFYuZGVmYXVsdC5keW5hbWljQW5jaG9ycywoMCxrLl8pYHt9YCl9KX1mdW5jdGlvbiBwXyhlKXtjb25zdHtzY2hlbWE6bixvcHRzOnIsZ2VuOm99PWU7T3MoZSwoKT0+e3IuJGNvbW1lbnQmJm4uJGNvbW1lbnQmJkFzKGUpLFRfKGUpLG8ubGV0KFYuZGVmYXVsdC52RXJyb3JzLG51bGwpLG8ubGV0KFYuZGVmYXVsdC5lcnJvcnMsMCksci51bmV2YWx1YXRlZCYmRV8oZSksYnMoZSksSV8oZSl9KX1mdW5jdGlvbiBFXyhlKXtjb25zdHtnZW46bix2YWxpZGF0ZU5hbWU6cn09ZTtlLmV2YWx1YXRlZD1uLmNvbnN0KCJldmFsdWF0ZWQiLCgwLGsuXylgJHtyfS5ldmFsdWF0ZWRgKSxuLmlmKCgwLGsuXylgJHtlLmV2YWx1YXRlZH0uZHluYW1pY1Byb3BzYCwoKT0+bi5hc3NpZ24oKDAsay5fKWAke2UuZXZhbHVhdGVkfS5wcm9wc2AsKDAsay5fKWB1bmRlZmluZWRgKSksbi5pZigoMCxrLl8pYCR7ZS5ldmFsdWF0ZWR9LmR5bmFtaWNJdGVtc2AsKCk9Pm4uYXNzaWduKCgwLGsuXylgJHtlLmV2YWx1YXRlZH0uaXRlbXNgLCgwLGsuXylgdW5kZWZpbmVkYCkpfWZ1bmN0aW9uIFRzKGUsbil7Y29uc3Qgcj10eXBlb2YgZT09Im9iamVjdCImJmVbbi5zY2hlbWFJZF07cmV0dXJuIHImJihuLmNvZGUuc291cmNlfHxuLmNvZGUucHJvY2Vzcyk/KDAsay5fKWAvKiMgc291cmNlVVJMPSR7cn0gKi9gOmsubmlsfWZ1bmN0aW9uIGZfKGUsbil7aWYoZ3MoZSkmJihJcyhlKSxOcyhlKSkpe1JfKGUsbik7cmV0dXJufSgwLGZzLmJvb2xPckVtcHR5U2NoZW1hKShlLG4pfWZ1bmN0aW9uIE5zKHtzY2hlbWE6ZSxzZWxmOm59KXtpZih0eXBlb2YgZT09ImJvb2xlYW4iKXJldHVybiFlO2Zvcihjb25zdCByIGluIGUpaWYobi5SVUxFUy5hbGxbcl0pcmV0dXJuITA7cmV0dXJuITF9ZnVuY3Rpb24gZ3MoZSl7cmV0dXJuIHR5cGVvZiBlLnNjaGVtYSE9ImJvb2xlYW4ifWZ1bmN0aW9uIFJfKGUsbil7Y29uc3R7c2NoZW1hOnIsZ2VuOm8sb3B0czp0fT1lO3QuJGNvbW1lbnQmJnIuJGNvbW1lbnQmJkFzKGUpLE5fKGUpLGdfKGUpO2NvbnN0IHM9by5jb25zdCgiX2VycnMiLFYuZGVmYXVsdC5lcnJvcnMpO2JzKGUscyksby52YXIobiwoMCxrLl8pYCR7c30gPT09ICR7Vi5kZWZhdWx0LmVycm9yc31gKX1mdW5jdGlvbiBJcyhlKXsoMCxkbi5jaGVja1Vua25vd25SdWxlcykoZSksT18oZSl9ZnVuY3Rpb24gYnMoZSxuKXtpZihlLm9wdHMuanRkKXJldHVybiBVcyhlLFtdLCExLG4pO2NvbnN0IHI9KDAsUnMuZ2V0U2NoZW1hVHlwZXMpKGUuc2NoZW1hKSxvPSgwLFJzLmNvZXJjZUFuZENoZWNrRGF0YVR5cGUpKGUscik7VXMoZSxyLCFvLG4pfWZ1bmN0aW9uIE9fKGUpe2NvbnN0e3NjaGVtYTpuLGVyclNjaGVtYVBhdGg6cixvcHRzOm8sc2VsZjp0fT1lO24uJHJlZiYmby5pZ25vcmVLZXl3b3Jkc1dpdGhSZWYmJigwLGRuLnNjaGVtYUhhc1J1bGVzQnV0UmVmKShuLHQuUlVMRVMpJiZ0LmxvZ2dlci53YXJuKGAkcmVmOiBrZXl3b3JkcyBpZ25vcmVkIGluIHNjaGVtYSBhdCBwYXRoICIke3J9ImApfWZ1bmN0aW9uIFRfKGUpe2NvbnN0e3NjaGVtYTpuLG9wdHM6cn09ZTtuLmRlZmF1bHQhPT12b2lkIDAmJnIudXNlRGVmYXVsdHMmJnIuc3RyaWN0U2NoZW1hJiYoMCxkbi5jaGVja1N0cmljdE1vZGUpKGUsImRlZmF1bHQgaXMgaWdub3JlZCBpbiB0aGUgc2NoZW1hIHJvb3QiKX1mdW5jdGlvbiBOXyhlKXtjb25zdCBuPWUuc2NoZW1hW2Uub3B0cy5zY2hlbWFJZF07biYmKGUuYmFzZUlkPSgwLGNfLnJlc29sdmVVcmwpKGUub3B0cy51cmlSZXNvbHZlcixlLmJhc2VJZCxuKSl9ZnVuY3Rpb24gZ18oZSl7aWYoZS5zY2hlbWEuJGFzeW5jJiYhZS5zY2hlbWFFbnYuJGFzeW5jKXRocm93IG5ldyBFcnJvcigiYXN5bmMgc2NoZW1hIGluIHN5bmMgc2NoZW1hIil9ZnVuY3Rpb24gQXMoe2dlbjplLHNjaGVtYUVudjpuLHNjaGVtYTpyLGVyclNjaGVtYVBhdGg6byxvcHRzOnR9KXtjb25zdCBzPXIuJGNvbW1lbnQ7aWYodC4kY29tbWVudD09PSEwKWUuY29kZSgoMCxrLl8pYCR7Vi5kZWZhdWx0LnNlbGZ9LmxvZ2dlci5sb2coJHtzfSlgKTtlbHNlIGlmKHR5cGVvZiB0LiRjb21tZW50PT0iZnVuY3Rpb24iKXtjb25zdCBpPSgwLGsuc3RyKWAke299LyRjb21tZW50YCxsPWUuc2NvcGVWYWx1ZSgicm9vdCIse3JlZjpuLnJvb3R9KTtlLmNvZGUoKDAsay5fKWAke1YuZGVmYXVsdC5zZWxmfS5vcHRzLiRjb21tZW50KCR7c30sICR7aX0sICR7bH0uc2NoZW1hKWApfX1mdW5jdGlvbiBJXyhlKXtjb25zdHtnZW46bixzY2hlbWFFbnY6cix2YWxpZGF0ZU5hbWU6byxWYWxpZGF0aW9uRXJyb3I6dCxvcHRzOnN9PWU7ci4kYXN5bmM/bi5pZigoMCxrLl8pYCR7Vi5kZWZhdWx0LmVycm9yc30gPT09IDBgLCgpPT5uLnJldHVybihWLmRlZmF1bHQuZGF0YSksKCk9Pm4udGhyb3coKDAsay5fKWBuZXcgJHt0fSgke1YuZGVmYXVsdC52RXJyb3JzfSlgKSk6KG4uYXNzaWduKCgwLGsuXylgJHtvfS5lcnJvcnNgLFYuZGVmYXVsdC52RXJyb3JzKSxzLnVuZXZhbHVhdGVkJiZiXyhlKSxuLnJldHVybigoMCxrLl8pYCR7Vi5kZWZhdWx0LmVycm9yc30gPT09IDBgKSl9ZnVuY3Rpb24gYl8oe2dlbjplLGV2YWx1YXRlZDpuLHByb3BzOnIsaXRlbXM6b30pe3IgaW5zdGFuY2VvZiBrLk5hbWUmJmUuYXNzaWduKCgwLGsuXylgJHtufS5wcm9wc2AsciksbyBpbnN0YW5jZW9mIGsuTmFtZSYmZS5hc3NpZ24oKDAsay5fKWAke259Lml0ZW1zYCxvKX1mdW5jdGlvbiBVcyhlLG4scixvKXtjb25zdHtnZW46dCxzY2hlbWE6cyxkYXRhOmksYWxsRXJyb3JzOmwsb3B0czpjLHNlbGY6bX09ZSx7UlVMRVM6YX09bTtpZihzLiRyZWYmJihjLmlnbm9yZUtleXdvcmRzV2l0aFJlZnx8ISgwLGRuLnNjaGVtYUhhc1J1bGVzQnV0UmVmKShzLGEpKSl7dC5ibG9jaygoKT0+U3MoZSwiJHJlZiIsYS5hbGwuJHJlZi5kZWZpbml0aW9uKSk7cmV0dXJufWMuanRkfHxBXyhlLG4pLHQuYmxvY2soKCk9Pntmb3IoY29uc3QgTyBvZiBhLnJ1bGVzKWgoTyk7aChhLnBvc3QpfSk7ZnVuY3Rpb24gaChPKXshKDAsWW8uc2hvdWxkVXNlR3JvdXApKHMsTyl8fChPLnR5cGU/KHQuaWYoKDAsYW8uY2hlY2tEYXRhVHlwZSkoTy50eXBlLGksYy5zdHJpY3ROdW1iZXJzKSksSHMoZSxPKSxuLmxlbmd0aD09PTEmJm5bMF09PT1PLnR5cGUmJnImJih0LmVsc2UoKSwoMCxhby5yZXBvcnRUeXBlRXJyb3IpKGUpKSx0LmVuZElmKCkpOkhzKGUsTyksbHx8dC5pZigoMCxrLl8pYCR7Vi5kZWZhdWx0LmVycm9yc30gPT09ICR7b3x8MH1gKSl9fWZ1bmN0aW9uIEhzKGUsbil7Y29uc3R7Z2VuOnIsc2NoZW1hOm8sb3B0czp7dXNlRGVmYXVsdHM6dH19PWU7dCYmKDAsbF8uYXNzaWduRGVmYXVsdHMpKGUsbi50eXBlKSxyLmJsb2NrKCgpPT57Zm9yKGNvbnN0IHMgb2Ygbi5ydWxlcykoMCxZby5zaG91bGRVc2VSdWxlKShvLHMpJiZTcyhlLHMua2V5d29yZCxzLmRlZmluaXRpb24sbi50eXBlKX0pfWZ1bmN0aW9uIEFfKGUsbil7ZS5zY2hlbWFFbnYubWV0YXx8IWUub3B0cy5zdHJpY3RUeXBlc3x8KFVfKGUsbiksZS5vcHRzLmFsbG93VW5pb25UeXBlc3x8SF8oZSxuKSx2XyhlLGUuZGF0YVR5cGVzKSl9ZnVuY3Rpb24gVV8oZSxuKXtpZighIW4ubGVuZ3RoKXtpZighZS5kYXRhVHlwZXMubGVuZ3RoKXtlLmRhdGFUeXBlcz1uO3JldHVybn1uLmZvckVhY2gocj0+e3ZzKGUuZGF0YVR5cGVzLHIpfHx6byhlLGB0eXBlICIke3J9IiBub3QgYWxsb3dlZCBieSBjb250ZXh0ICIke2UuZGF0YVR5cGVzLmpvaW4oIiwiKX0iYCl9KSxlLmRhdGFUeXBlcz1lLmRhdGFUeXBlcy5maWx0ZXIocj0+dnMobixyKSl9fWZ1bmN0aW9uIEhfKGUsbil7bi5sZW5ndGg+MSYmIShuLmxlbmd0aD09PTImJm4uaW5jbHVkZXMoIm51bGwiKSkmJnpvKGUsInVzZSBhbGxvd1VuaW9uVHlwZXMgdG8gYWxsb3cgdW5pb24gdHlwZSBrZXl3b3JkIil9ZnVuY3Rpb24gdl8oZSxuKXtjb25zdCByPWUuc2VsZi5SVUxFUy5hbGw7Zm9yKGNvbnN0IG8gaW4gcil7Y29uc3QgdD1yW29dO2lmKHR5cGVvZiB0PT0ib2JqZWN0IiYmKDAsWW8uc2hvdWxkVXNlUnVsZSkoZS5zY2hlbWEsdCkpe2NvbnN0e3R5cGU6c309dC5kZWZpbml0aW9uO3MubGVuZ3RoJiYhcy5zb21lKGk9PkRfKG4saSkpJiZ6byhlLGBtaXNzaW5nIHR5cGUgIiR7cy5qb2luKCIsIil9IiBmb3Iga2V5d29yZCAiJHtvfSJgKX19fWZ1bmN0aW9uIERfKGUsbil7cmV0dXJuIGUuaW5jbHVkZXMobil8fG49PT0ibnVtYmVyIiYmZS5pbmNsdWRlcygiaW50ZWdlciIpfWZ1bmN0aW9uIHZzKGUsbil7cmV0dXJuIGUuaW5jbHVkZXMobil8fG49PT0iaW50ZWdlciImJmUuaW5jbHVkZXMoIm51bWJlciIpfWZ1bmN0aW9uIHpvKGUsbil7bis9YCBhdCAiJHtlLnNjaGVtYUVudi5iYXNlSWQrZS5lcnJTY2hlbWFQYXRofSIgKHN0cmljdFR5cGVzKWAsKDAsZG4uY2hlY2tTdHJpY3RNb2RlKShlLG4sZS5vcHRzLnN0cmljdFR5cGVzKX1jbGFzcyBEc3tjb25zdHJ1Y3RvcihuLHIsbyl7aWYoKDAsZ3IudmFsaWRhdGVLZXl3b3JkVXNhZ2UpKG4scixvKSx0aGlzLmdlbj1uLmdlbix0aGlzLmFsbEVycm9ycz1uLmFsbEVycm9ycyx0aGlzLmtleXdvcmQ9byx0aGlzLmRhdGE9bi5kYXRhLHRoaXMuc2NoZW1hPW4uc2NoZW1hW29dLHRoaXMuJGRhdGE9ci4kZGF0YSYmbi5vcHRzLiRkYXRhJiZ0aGlzLnNjaGVtYSYmdGhpcy5zY2hlbWEuJGRhdGEsdGhpcy5zY2hlbWFWYWx1ZT0oMCxkbi5zY2hlbWFSZWZPclZhbCkobix0aGlzLnNjaGVtYSxvLHRoaXMuJGRhdGEpLHRoaXMuc2NoZW1hVHlwZT1yLnNjaGVtYVR5cGUsdGhpcy5wYXJlbnRTY2hlbWE9bi5zY2hlbWEsdGhpcy5wYXJhbXM9e30sdGhpcy5pdD1uLHRoaXMuZGVmPXIsdGhpcy4kZGF0YSl0aGlzLnNjaGVtYUNvZGU9bi5nZW4uY29uc3QoInZTY2hlbWEiLFBzKHRoaXMuJGRhdGEsbikpO2Vsc2UgaWYodGhpcy5zY2hlbWFDb2RlPXRoaXMuc2NoZW1hVmFsdWUsISgwLGdyLnZhbGlkU2NoZW1hVHlwZSkodGhpcy5zY2hlbWEsci5zY2hlbWFUeXBlLHIuYWxsb3dVbmRlZmluZWQpKXRocm93IG5ldyBFcnJvcihgJHtvfSB2YWx1ZSBtdXN0IGJlICR7SlNPTi5zdHJpbmdpZnkoci5zY2hlbWFUeXBlKX1gKTsoImNvZGUiaW4gcj9yLnRyYWNrRXJyb3JzOnIuZXJyb3JzIT09ITEpJiYodGhpcy5lcnJzQ291bnQ9bi5nZW4uY29uc3QoIl9lcnJzIixWLmRlZmF1bHQuZXJyb3JzKSl9cmVzdWx0KG4scixvKXt0aGlzLmZhaWxSZXN1bHQoKDAsay5ub3QpKG4pLHIsbyl9ZmFpbFJlc3VsdChuLHIsbyl7dGhpcy5nZW4uaWYobiksbz9vKCk6dGhpcy5lcnJvcigpLHI/KHRoaXMuZ2VuLmVsc2UoKSxyKCksdGhpcy5hbGxFcnJvcnMmJnRoaXMuZ2VuLmVuZElmKCkpOnRoaXMuYWxsRXJyb3JzP3RoaXMuZ2VuLmVuZElmKCk6dGhpcy5nZW4uZWxzZSgpfXBhc3MobixyKXt0aGlzLmZhaWxSZXN1bHQoKDAsay5ub3QpKG4pLHZvaWQgMCxyKX1mYWlsKG4pe2lmKG49PT12b2lkIDApe3RoaXMuZXJyb3IoKSx0aGlzLmFsbEVycm9yc3x8dGhpcy5nZW4uaWYoITEpO3JldHVybn10aGlzLmdlbi5pZihuKSx0aGlzLmVycm9yKCksdGhpcy5hbGxFcnJvcnM/dGhpcy5nZW4uZW5kSWYoKTp0aGlzLmdlbi5lbHNlKCl9ZmFpbCRkYXRhKG4pe2lmKCF0aGlzLiRkYXRhKXJldHVybiB0aGlzLmZhaWwobik7Y29uc3R7c2NoZW1hQ29kZTpyfT10aGlzO3RoaXMuZmFpbCgoMCxrLl8pYCR7cn0gIT09IHVuZGVmaW5lZCAmJiAoJHsoMCxrLm9yKSh0aGlzLmludmFsaWQkZGF0YSgpLG4pfSlgKX1lcnJvcihuLHIsbyl7aWYocil7dGhpcy5zZXRQYXJhbXMociksdGhpcy5fZXJyb3IobixvKSx0aGlzLnNldFBhcmFtcyh7fSk7cmV0dXJufXRoaXMuX2Vycm9yKG4sbyl9X2Vycm9yKG4scil7KG4/SXIucmVwb3J0RXh0cmFFcnJvcjpJci5yZXBvcnRFcnJvcikodGhpcyx0aGlzLmRlZi5lcnJvcixyKX0kZGF0YUVycm9yKCl7KDAsSXIucmVwb3J0RXJyb3IpKHRoaXMsdGhpcy5kZWYuJGRhdGFFcnJvcnx8SXIua2V5d29yZCREYXRhRXJyb3IpfXJlc2V0KCl7aWYodGhpcy5lcnJzQ291bnQ9PT12b2lkIDApdGhyb3cgbmV3IEVycm9yKCdhZGQgInRyYWNrRXJyb3JzIiB0byBrZXl3b3JkIGRlZmluaXRpb24nKTsoMCxJci5yZXNldEVycm9yc0NvdW50KSh0aGlzLmdlbix0aGlzLmVycnNDb3VudCl9b2sobil7dGhpcy5hbGxFcnJvcnN8fHRoaXMuZ2VuLmlmKG4pfXNldFBhcmFtcyhuLHIpe3I/T2JqZWN0LmFzc2lnbih0aGlzLnBhcmFtcyxuKTp0aGlzLnBhcmFtcz1ufWJsb2NrJGRhdGEobixyLG89ay5uaWwpe3RoaXMuZ2VuLmJsb2NrKCgpPT57dGhpcy5jaGVjayRkYXRhKG4sbykscigpfSl9Y2hlY2skZGF0YShuPWsubmlsLHI9ay5uaWwpe2lmKCF0aGlzLiRkYXRhKXJldHVybjtjb25zdHtnZW46byxzY2hlbWFDb2RlOnQsc2NoZW1hVHlwZTpzLGRlZjppfT10aGlzO28uaWYoKDAsay5vcikoKDAsay5fKWAke3R9ID09PSB1bmRlZmluZWRgLHIpKSxuIT09ay5uaWwmJm8uYXNzaWduKG4sITApLChzLmxlbmd0aHx8aS52YWxpZGF0ZVNjaGVtYSkmJihvLmVsc2VJZih0aGlzLmludmFsaWQkZGF0YSgpKSx0aGlzLiRkYXRhRXJyb3IoKSxuIT09ay5uaWwmJm8uYXNzaWduKG4sITEpKSxvLmVsc2UoKX1pbnZhbGlkJGRhdGEoKXtjb25zdHtnZW46bixzY2hlbWFDb2RlOnIsc2NoZW1hVHlwZTpvLGRlZjp0LGl0OnN9PXRoaXM7cmV0dXJuKDAsay5vcikoaSgpLGwoKSk7ZnVuY3Rpb24gaSgpe2lmKG8ubGVuZ3RoKXtpZighKHIgaW5zdGFuY2VvZiBrLk5hbWUpKXRocm93IG5ldyBFcnJvcigiYWp2IGltcGxlbWVudGF0aW9uIGVycm9yIik7Y29uc3QgYz1BcnJheS5pc0FycmF5KG8pP286W29dO3JldHVybigwLGsuXylgJHsoMCxhby5jaGVja0RhdGFUeXBlcykoYyxyLHMub3B0cy5zdHJpY3ROdW1iZXJzLGFvLkRhdGFUeXBlLldyb25nKX1gfXJldHVybiBrLm5pbH1mdW5jdGlvbiBsKCl7aWYodC52YWxpZGF0ZVNjaGVtYSl7Y29uc3QgYz1uLnNjb3BlVmFsdWUoInZhbGlkYXRlJGRhdGEiLHtyZWY6dC52YWxpZGF0ZVNjaGVtYX0pO3JldHVybigwLGsuXylgISR7Y30oJHtyfSlgfXJldHVybiBrLm5pbH19c3Vic2NoZW1hKG4scil7Y29uc3Qgbz0oMCxKby5nZXRTdWJzY2hlbWEpKHRoaXMuaXQsbik7KDAsSm8uZXh0ZW5kU3Vic2NoZW1hRGF0YSkobyx0aGlzLml0LG4pLCgwLEpvLmV4dGVuZFN1YnNjaGVtYU1vZGUpKG8sbik7Y29uc3QgdD1sZShZKFkoe30sdGhpcy5pdCksbykse2l0ZW1zOnZvaWQgMCxwcm9wczp2b2lkIDB9KTtyZXR1cm4gZl8odCxyKSx0fW1lcmdlRXZhbHVhdGVkKG4scil7Y29uc3R7aXQ6byxnZW46dH09dGhpczshby5vcHRzLnVuZXZhbHVhdGVkfHwoby5wcm9wcyE9PSEwJiZuLnByb3BzIT09dm9pZCAwJiYoby5wcm9wcz1kbi5tZXJnZUV2YWx1YXRlZC5wcm9wcyh0LG4ucHJvcHMsby5wcm9wcyxyKSksby5pdGVtcyE9PSEwJiZuLml0ZW1zIT09dm9pZCAwJiYoby5pdGVtcz1kbi5tZXJnZUV2YWx1YXRlZC5pdGVtcyh0LG4uaXRlbXMsby5pdGVtcyxyKSkpfW1lcmdlVmFsaWRFdmFsdWF0ZWQobixyKXtjb25zdHtpdDpvLGdlbjp0fT10aGlzO2lmKG8ub3B0cy51bmV2YWx1YXRlZCYmKG8ucHJvcHMhPT0hMHx8by5pdGVtcyE9PSEwKSlyZXR1cm4gdC5pZihyLCgpPT50aGlzLm1lcmdlRXZhbHVhdGVkKG4say5OYW1lKSksITB9fXplLktleXdvcmRDeHQ9RHM7ZnVuY3Rpb24gU3MoZSxuLHIsbyl7Y29uc3QgdD1uZXcgRHMoZSxyLG4pOyJjb2RlImluIHI/ci5jb2RlKHQsbyk6dC4kZGF0YSYmci52YWxpZGF0ZT8oMCxnci5mdW5jS2V5d29yZENvZGUpKHQscik6Im1hY3JvImluIHI/KDAsZ3IubWFjcm9LZXl3b3JkQ29kZSkodCxyKTooci5jb21waWxlfHxyLnZhbGlkYXRlKSYmKDAsZ3IuZnVuY0tleXdvcmRDb2RlKSh0LHIpfWNvbnN0IFNfPS9eXC8oPzpbXn5dfH4wfH4xKSokLyxQXz0vXihbMC05XSspKCN8XC8oPzpbXn5dfH4wfH4xKSopPyQvO2Z1bmN0aW9uIFBzKGUse2RhdGFMZXZlbDpuLGRhdGFOYW1lczpyLGRhdGFQYXRoQXJyOm99KXtsZXQgdCxzO2lmKGU9PT0iIilyZXR1cm4gVi5kZWZhdWx0LnJvb3REYXRhO2lmKGVbMF09PT0iLyIpe2lmKCFTXy50ZXN0KGUpKXRocm93IG5ldyBFcnJvcihgSW52YWxpZCBKU09OLXBvaW50ZXI6ICR7ZX1gKTt0PWUscz1WLmRlZmF1bHQucm9vdERhdGF9ZWxzZXtjb25zdCBtPVBfLmV4ZWMoZSk7aWYoIW0pdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIEpTT04tcG9pbnRlcjogJHtlfWApO2NvbnN0IGE9K21bMV07aWYodD1tWzJdLHQ9PT0iIyIpe2lmKGE+PW4pdGhyb3cgbmV3IEVycm9yKGMoInByb3BlcnR5L2luZGV4IixhKSk7cmV0dXJuIG9bbi1hXX1pZihhPm4pdGhyb3cgbmV3IEVycm9yKGMoImRhdGEiLGEpKTtpZihzPXJbbi1hXSwhdClyZXR1cm4gc31sZXQgaT1zO2NvbnN0IGw9dC5zcGxpdCgiLyIpO2Zvcihjb25zdCBtIG9mIGwpbSYmKHM9KDAsay5fKWAke3N9JHsoMCxrLmdldFByb3BlcnR5KSgoMCxkbi51bmVzY2FwZUpzb25Qb2ludGVyKShtKSl9YCxpPSgwLGsuXylgJHtpfSAmJiAke3N9YCk7cmV0dXJuIGk7ZnVuY3Rpb24gYyhtLGEpe3JldHVybmBDYW5ub3QgYWNjZXNzICR7bX0gJHthfSBsZXZlbHMgdXAsIGN1cnJlbnQgbGV2ZWwgaXMgJHtufWB9fXplLmdldERhdGE9UHM7dmFyIHVvPXt9O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh1bywiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7Y2xhc3Mgd18gZXh0ZW5kcyBFcnJvcntjb25zdHJ1Y3RvcihuKXtzdXBlcigidmFsaWRhdGlvbiBmYWlsZWQiKSx0aGlzLmVycm9ycz1uLHRoaXMuYWp2PXRoaXMudmFsaWRhdGlvbj0hMH19dW8uZGVmYXVsdD13Xzt2YXIgTG49e307T2JqZWN0LmRlZmluZVByb3BlcnR5KExuLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTtjb25zdCBxbz1EZTtjbGFzcyBHXyBleHRlbmRzIEVycm9ye2NvbnN0cnVjdG9yKG4scixvLHQpe3N1cGVyKHR8fGBjYW4ndCByZXNvbHZlIHJlZmVyZW5jZSAke299IGZyb20gaWQgJHtyfWApLHRoaXMubWlzc2luZ1JlZj0oMCxxby5yZXNvbHZlVXJsKShuLHIsbyksdGhpcy5taXNzaW5nU2NoZW1hPSgwLHFvLm5vcm1hbGl6ZUlkKSgoMCxxby5nZXRGdWxsUGF0aCkobix0aGlzLm1pc3NpbmdSZWYpKX19TG4uZGVmYXVsdD1HXzt2YXIgUGU9e307T2JqZWN0LmRlZmluZVByb3BlcnR5KFBlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxQZS5yZXNvbHZlU2NoZW1hPVBlLmdldENvbXBpbGluZ1NjaGVtYT1QZS5yZXNvbHZlUmVmPVBlLmNvbXBpbGVTY2hlbWE9UGUuU2NoZW1hRW52PXZvaWQgMDtjb25zdCBZZT1fZSxDXz11byxCbj1NZSxKZT1EZSx3cz1BZSx5Xz16ZTtjbGFzcyBfb3tjb25zdHJ1Y3RvcihuKXt2YXIgcjt0aGlzLnJlZnM9e30sdGhpcy5keW5hbWljQW5jaG9ycz17fTtsZXQgbzt0eXBlb2Ygbi5zY2hlbWE9PSJvYmplY3QiJiYobz1uLnNjaGVtYSksdGhpcy5zY2hlbWE9bi5zY2hlbWEsdGhpcy5zY2hlbWFJZD1uLnNjaGVtYUlkLHRoaXMucm9vdD1uLnJvb3R8fHRoaXMsdGhpcy5iYXNlSWQ9KHI9bi5iYXNlSWQpIT09bnVsbCYmciE9PXZvaWQgMD9yOigwLEplLm5vcm1hbGl6ZUlkKShvPT1udWxsP3ZvaWQgMDpvW24uc2NoZW1hSWR8fCIkaWQiXSksdGhpcy5zY2hlbWFQYXRoPW4uc2NoZW1hUGF0aCx0aGlzLmxvY2FsUmVmcz1uLmxvY2FsUmVmcyx0aGlzLm1ldGE9bi5tZXRhLHRoaXMuJGFzeW5jPW89PW51bGw/dm9pZCAwOm8uJGFzeW5jLHRoaXMucmVmcz17fX19UGUuU2NoZW1hRW52PV9vO2Z1bmN0aW9uIFFvKGUpe2NvbnN0IG49R3MuY2FsbCh0aGlzLGUpO2lmKG4pcmV0dXJuIG47Y29uc3Qgcj0oMCxKZS5nZXRGdWxsUGF0aCkodGhpcy5vcHRzLnVyaVJlc29sdmVyLGUucm9vdC5iYXNlSWQpLHtlczU6byxsaW5lczp0fT10aGlzLm9wdHMuY29kZSx7b3duUHJvcGVydGllczpzfT10aGlzLm9wdHMsaT1uZXcgWWUuQ29kZUdlbih0aGlzLnNjb3BlLHtlczU6byxsaW5lczp0LG93blByb3BlcnRpZXM6c30pO2xldCBsO2UuJGFzeW5jJiYobD1pLnNjb3BlVmFsdWUoIkVycm9yIix7cmVmOkNfLmRlZmF1bHQsY29kZTooMCxZZS5fKWByZXF1aXJlKCJhanYvZGlzdC9ydW50aW1lL3ZhbGlkYXRpb25fZXJyb3IiKS5kZWZhdWx0YH0pKTtjb25zdCBjPWkuc2NvcGVOYW1lKCJ2YWxpZGF0ZSIpO2UudmFsaWRhdGVOYW1lPWM7Y29uc3QgbT17Z2VuOmksYWxsRXJyb3JzOnRoaXMub3B0cy5hbGxFcnJvcnMsZGF0YTpCbi5kZWZhdWx0LmRhdGEscGFyZW50RGF0YTpCbi5kZWZhdWx0LnBhcmVudERhdGEscGFyZW50RGF0YVByb3BlcnR5OkJuLmRlZmF1bHQucGFyZW50RGF0YVByb3BlcnR5LGRhdGFOYW1lczpbQm4uZGVmYXVsdC5kYXRhXSxkYXRhUGF0aEFycjpbWWUubmlsXSxkYXRhTGV2ZWw6MCxkYXRhVHlwZXM6W10sZGVmaW5lZFByb3BlcnRpZXM6bmV3IFNldCx0b3BTY2hlbWFSZWY6aS5zY29wZVZhbHVlKCJzY2hlbWEiLHRoaXMub3B0cy5jb2RlLnNvdXJjZT09PSEwP3tyZWY6ZS5zY2hlbWEsY29kZTooMCxZZS5zdHJpbmdpZnkpKGUuc2NoZW1hKX06e3JlZjplLnNjaGVtYX0pLHZhbGlkYXRlTmFtZTpjLFZhbGlkYXRpb25FcnJvcjpsLHNjaGVtYTplLnNjaGVtYSxzY2hlbWFFbnY6ZSxyb290SWQ6cixiYXNlSWQ6ZS5iYXNlSWR8fHIsc2NoZW1hUGF0aDpZZS5uaWwsZXJyU2NoZW1hUGF0aDplLnNjaGVtYVBhdGh8fCh0aGlzLm9wdHMuanRkPyIiOiIjIiksZXJyb3JQYXRoOigwLFllLl8pYCIiYCxvcHRzOnRoaXMub3B0cyxzZWxmOnRoaXN9O2xldCBhO3RyeXt0aGlzLl9jb21waWxhdGlvbnMuYWRkKGUpLCgwLHlfLnZhbGlkYXRlRnVuY3Rpb25Db2RlKShtKSxpLm9wdGltaXplKHRoaXMub3B0cy5jb2RlLm9wdGltaXplKTtjb25zdCBoPWkudG9TdHJpbmcoKTthPWAke2kuc2NvcGVSZWZzKEJuLmRlZmF1bHQuc2NvcGUpfXJldHVybiAke2h9YCx0aGlzLm9wdHMuY29kZS5wcm9jZXNzJiYoYT10aGlzLm9wdHMuY29kZS5wcm9jZXNzKGEsZSkpO2NvbnN0IEQ9bmV3IEZ1bmN0aW9uKGAke0JuLmRlZmF1bHQuc2VsZn1gLGAke0JuLmRlZmF1bHQuc2NvcGV9YCxhKSh0aGlzLHRoaXMuc2NvcGUuZ2V0KCkpO2lmKHRoaXMuc2NvcGUudmFsdWUoYyx7cmVmOkR9KSxELmVycm9ycz1udWxsLEQuc2NoZW1hPWUuc2NoZW1hLEQuc2NoZW1hRW52PWUsZS4kYXN5bmMmJihELiRhc3luYz0hMCksdGhpcy5vcHRzLmNvZGUuc291cmNlPT09ITAmJihELnNvdXJjZT17dmFsaWRhdGVOYW1lOmMsdmFsaWRhdGVDb2RlOmgsc2NvcGVWYWx1ZXM6aS5fdmFsdWVzfSksdGhpcy5vcHRzLnVuZXZhbHVhdGVkKXtjb25zdHtwcm9wczp3LGl0ZW1zOkN9PW07RC5ldmFsdWF0ZWQ9e3Byb3BzOncgaW5zdGFuY2VvZiBZZS5OYW1lP3ZvaWQgMDp3LGl0ZW1zOkMgaW5zdGFuY2VvZiBZZS5OYW1lP3ZvaWQgMDpDLGR5bmFtaWNQcm9wczp3IGluc3RhbmNlb2YgWWUuTmFtZSxkeW5hbWljSXRlbXM6QyBpbnN0YW5jZW9mIFllLk5hbWV9LEQuc291cmNlJiYoRC5zb3VyY2UuZXZhbHVhdGVkPSgwLFllLnN0cmluZ2lmeSkoRC5ldmFsdWF0ZWQpKX1yZXR1cm4gZS52YWxpZGF0ZT1ELGV9Y2F0Y2goaCl7dGhyb3cgZGVsZXRlIGUudmFsaWRhdGUsZGVsZXRlIGUudmFsaWRhdGVOYW1lLGEmJnRoaXMubG9nZ2VyLmVycm9yKCJFcnJvciBjb21waWxpbmcgc2NoZW1hLCBmdW5jdGlvbiBjb2RlOiIsYSksaH1maW5hbGx5e3RoaXMuX2NvbXBpbGF0aW9ucy5kZWxldGUoZSl9fVBlLmNvbXBpbGVTY2hlbWE9UW87ZnVuY3Rpb24gTF8oZSxuLHIpe3ZhciBvO3I9KDAsSmUucmVzb2x2ZVVybCkodGhpcy5vcHRzLnVyaVJlc29sdmVyLG4scik7Y29uc3QgdD1lLnJlZnNbcl07aWYodClyZXR1cm4gdDtsZXQgcz1NXy5jYWxsKHRoaXMsZSxyKTtpZihzPT09dm9pZCAwKXtjb25zdCBpPShvPWUubG9jYWxSZWZzKT09PW51bGx8fG89PT12b2lkIDA/dm9pZCAwOm9bcl0se3NjaGVtYUlkOmx9PXRoaXMub3B0cztpJiYocz1uZXcgX28oe3NjaGVtYTppLHNjaGVtYUlkOmwscm9vdDplLGJhc2VJZDpufSkpfWlmKHMhPT12b2lkIDApcmV0dXJuIGUucmVmc1tyXT1CXy5jYWxsKHRoaXMscyl9UGUucmVzb2x2ZVJlZj1MXztmdW5jdGlvbiBCXyhlKXtyZXR1cm4oMCxKZS5pbmxpbmVSZWYpKGUuc2NoZW1hLHRoaXMub3B0cy5pbmxpbmVSZWZzKT9lLnNjaGVtYTplLnZhbGlkYXRlP2U6UW8uY2FsbCh0aGlzLGUpfWZ1bmN0aW9uIEdzKGUpe2Zvcihjb25zdCBuIG9mIHRoaXMuX2NvbXBpbGF0aW9ucylpZihrXyhuLGUpKXJldHVybiBufVBlLmdldENvbXBpbGluZ1NjaGVtYT1HcztmdW5jdGlvbiBrXyhlLG4pe3JldHVybiBlLnNjaGVtYT09PW4uc2NoZW1hJiZlLnJvb3Q9PT1uLnJvb3QmJmUuYmFzZUlkPT09bi5iYXNlSWR9ZnVuY3Rpb24gTV8oZSxuKXtsZXQgcjtmb3IoO3R5cGVvZihyPXRoaXMucmVmc1tuXSk9PSJzdHJpbmciOyluPXI7cmV0dXJuIHJ8fHRoaXMuc2NoZW1hc1tuXXx8bG8uY2FsbCh0aGlzLGUsbil9ZnVuY3Rpb24gbG8oZSxuKXtjb25zdCByPXRoaXMub3B0cy51cmlSZXNvbHZlci5wYXJzZShuKSxvPSgwLEplLl9nZXRGdWxsUGF0aCkodGhpcy5vcHRzLnVyaVJlc29sdmVyLHIpO2xldCB0PSgwLEplLmdldEZ1bGxQYXRoKSh0aGlzLm9wdHMudXJpUmVzb2x2ZXIsZS5iYXNlSWQsdm9pZCAwKTtpZihPYmplY3Qua2V5cyhlLnNjaGVtYSkubGVuZ3RoPjAmJm89PT10KXJldHVybiBaby5jYWxsKHRoaXMscixlKTtjb25zdCBzPSgwLEplLm5vcm1hbGl6ZUlkKShvKSxpPXRoaXMucmVmc1tzXXx8dGhpcy5zY2hlbWFzW3NdO2lmKHR5cGVvZiBpPT0ic3RyaW5nIil7Y29uc3QgbD1sby5jYWxsKHRoaXMsZSxpKTtyZXR1cm4gdHlwZW9mKGw9PW51bGw/dm9pZCAwOmwuc2NoZW1hKSE9Im9iamVjdCI/dm9pZCAwOlpvLmNhbGwodGhpcyxyLGwpfWlmKHR5cGVvZihpPT1udWxsP3ZvaWQgMDppLnNjaGVtYSk9PSJvYmplY3QiKXtpZihpLnZhbGlkYXRlfHxRby5jYWxsKHRoaXMsaSkscz09PSgwLEplLm5vcm1hbGl6ZUlkKShuKSl7Y29uc3R7c2NoZW1hOmx9PWkse3NjaGVtYUlkOmN9PXRoaXMub3B0cyxtPWxbY107cmV0dXJuIG0mJih0PSgwLEplLnJlc29sdmVVcmwpKHRoaXMub3B0cy51cmlSZXNvbHZlcix0LG0pKSxuZXcgX28oe3NjaGVtYTpsLHNjaGVtYUlkOmMscm9vdDplLGJhc2VJZDp0fSl9cmV0dXJuIFpvLmNhbGwodGhpcyxyLGkpfX1QZS5yZXNvbHZlU2NoZW1hPWxvO2NvbnN0IFhfPW5ldyBTZXQoWyJwcm9wZXJ0aWVzIiwicGF0dGVyblByb3BlcnRpZXMiLCJlbnVtIiwiZGVwZW5kZW5jaWVzIiwiZGVmaW5pdGlvbnMiXSk7ZnVuY3Rpb24gWm8oZSx7YmFzZUlkOm4sc2NoZW1hOnIscm9vdDpvfSl7dmFyIHQ7aWYoKCh0PWUuZnJhZ21lbnQpPT09bnVsbHx8dD09PXZvaWQgMD92b2lkIDA6dFswXSkhPT0iLyIpcmV0dXJuO2Zvcihjb25zdCBsIG9mIGUuZnJhZ21lbnQuc2xpY2UoMSkuc3BsaXQoIi8iKSl7aWYodHlwZW9mIHI9PSJib29sZWFuIilyZXR1cm47Y29uc3QgYz1yWygwLHdzLnVuZXNjYXBlRnJhZ21lbnQpKGwpXTtpZihjPT09dm9pZCAwKXJldHVybjtyPWM7Y29uc3QgbT10eXBlb2Ygcj09Im9iamVjdCImJnJbdGhpcy5vcHRzLnNjaGVtYUlkXTshWF8uaGFzKGwpJiZtJiYobj0oMCxKZS5yZXNvbHZlVXJsKSh0aGlzLm9wdHMudXJpUmVzb2x2ZXIsbixtKSl9bGV0IHM7aWYodHlwZW9mIHIhPSJib29sZWFuIiYmci4kcmVmJiYhKDAsd3Muc2NoZW1hSGFzUnVsZXNCdXRSZWYpKHIsdGhpcy5SVUxFUykpe2NvbnN0IGw9KDAsSmUucmVzb2x2ZVVybCkodGhpcy5vcHRzLnVyaVJlc29sdmVyLG4sci4kcmVmKTtzPWxvLmNhbGwodGhpcyxvLGwpfWNvbnN0e3NjaGVtYUlkOml9PXRoaXMub3B0cztpZihzPXN8fG5ldyBfbyh7c2NoZW1hOnIsc2NoZW1hSWQ6aSxyb290Om8sYmFzZUlkOm59KSxzLnNjaGVtYSE9PXMucm9vdC5zY2hlbWEpcmV0dXJuIHN9dmFyICRfPXskaWQ6Imh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9hanYtdmFsaWRhdG9yL2Fqdi9tYXN0ZXIvbGliL3JlZnMvZGF0YS5qc29uIyIsZGVzY3JpcHRpb246Ik1ldGEtc2NoZW1hIGZvciAkZGF0YSByZWZlcmVuY2UgKEpTT04gQW55U2NoZW1hIGV4dGVuc2lvbiBwcm9wb3NhbCkiLHR5cGU6Im9iamVjdCIscmVxdWlyZWQ6WyIkZGF0YSJdLHByb3BlcnRpZXM6eyRkYXRhOnt0eXBlOiJzdHJpbmciLGFueU9mOlt7Zm9ybWF0OiJyZWxhdGl2ZS1qc29uLXBvaW50ZXIifSx7Zm9ybWF0OiJqc29uLXBvaW50ZXIifV19fSxhZGRpdGlvbmFsUHJvcGVydGllczohMX0sZXQ9e30sbnQ9e2V4cG9ydHM6e319Oy8qKiBAbGljZW5zZSBVUkkuanMgdjQuNC4xIChjKSAyMDExIEdhcnkgQ291cnQuIExpY2Vuc2U6IGh0dHA6Ly9naXRodWIuY29tL2dhcnljb3VydC91cmktanMgKi8oZnVuY3Rpb24oZSxuKXsoZnVuY3Rpb24ocixvKXtvKG4pfSkoZWUsZnVuY3Rpb24ocil7ZnVuY3Rpb24gbygpe2Zvcih2YXIgZD1hcmd1bWVudHMubGVuZ3RoLF89QXJyYXkoZCksRT0wO0U8ZDtFKyspX1tFXT1hcmd1bWVudHNbRV07aWYoXy5sZW5ndGg+MSl7X1swXT1fWzBdLnNsaWNlKDAsLTEpO2Zvcih2YXIgYj1fLmxlbmd0aC0xLEk9MTtJPGI7KytJKV9bSV09X1tJXS5zbGljZSgxLC0xKTtyZXR1cm4gX1tiXT1fW2JdLnNsaWNlKDEpLF8uam9pbigiIil9ZWxzZSByZXR1cm4gX1swXX1mdW5jdGlvbiB0KGQpe3JldHVybiIoPzoiK2QrIikifWZ1bmN0aW9uIHMoZCl7cmV0dXJuIGQ9PT12b2lkIDA/InVuZGVmaW5lZCI6ZD09PW51bGw/Im51bGwiOk9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChkKS5zcGxpdCgiICIpLnBvcCgpLnNwbGl0KCJdIikuc2hpZnQoKS50b0xvd2VyQ2FzZSgpfWZ1bmN0aW9uIGkoZCl7cmV0dXJuIGQudG9VcHBlckNhc2UoKX1mdW5jdGlvbiBsKGQpe3JldHVybiBkIT1udWxsP2QgaW5zdGFuY2VvZiBBcnJheT9kOnR5cGVvZiBkLmxlbmd0aCE9Im51bWJlciJ8fGQuc3BsaXR8fGQuc2V0SW50ZXJ2YWx8fGQuY2FsbD9bZF06QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZCk6W119ZnVuY3Rpb24gYyhkLF8pe3ZhciBFPWQ7aWYoXylmb3IodmFyIGIgaW4gXylFW2JdPV9bYl07cmV0dXJuIEV9ZnVuY3Rpb24gbShkKXt2YXIgXz0iW0EtWmEtel0iLEU9IlswLTldIixiPW8oRSwiW0EtRmEtZl0iKSxJPXQodCgiJVtFRmVmXSIrYisiJSIrYitiKyIlIitiK2IpKyJ8Iit0KCIlWzg5QS1GYS1mXSIrYisiJSIrYitiKSsifCIrdCgiJSIrYitiKSksJD0iW1xcOlxcL1xcP1xcI1xcW1xcXVxcQF0iLHg9IltcXCFcXCRcXCZcXCdcXChcXClcXCpcXCtcXCxcXDtcXD1dIix0ZT1vKCQseCkscGU9ZD8iW1xceEEwLVxcdTIwMERcXHUyMDEwLVxcdTIwMjlcXHUyMDJGLVxcdUQ3RkZcXHVGOTAwLVxcdUZEQ0ZcXHVGREYwLVxcdUZGRUZdIjoiW10iLE5lPWQ/IltcXHVFMDAwLVxcdUY4RkZdIjoiW10iLFo9byhfLEUsIltcXC1cXC5cXF9cXH5dIixwZSk7dChfK28oXyxFLCJbXFwrXFwtXFwuXSIpKyIqIiksdCh0KEkrInwiK28oWix4LCJbXFw6XSIpKSsiKiIpO3ZhciBjZT10KHQoIjI1WzAtNV0iKSsifCIrdCgiMlswLTRdIitFKSsifCIrdCgiMSIrRStFKSsifCIrdCgiMD9bMS05XSIrRSkrInwwPzA/IitFKSxnZT10KGNlKyJcXC4iK2NlKyJcXC4iK2NlKyJcXC4iK2NlKSxLPXQoYisiezEsNH0iKSxmZT10KHQoSysiXFw6IitLKSsifCIrZ2UpLGJlPXQodChLKyJcXDoiKSsiezZ9IitmZSksUmU9dCgiXFw6XFw6Iit0KEsrIlxcOiIpKyJ7NX0iK2ZlKSxEbj10KHQoSykrIj9cXDpcXDoiK3QoSysiXFw6IikrIns0fSIrZmUpLHNuPXQodCh0KEsrIlxcOiIpKyJ7MCwxfSIrSykrIj9cXDpcXDoiK3QoSysiXFw6IikrInszfSIrZmUpLGFuPXQodCh0KEsrIlxcOiIpKyJ7MCwyfSIrSykrIj9cXDpcXDoiK3QoSysiXFw6IikrInsyfSIrZmUpLGZyPXQodCh0KEsrIlxcOiIpKyJ7MCwzfSIrSykrIj9cXDpcXDoiK0srIlxcOiIrZmUpLFduPXQodCh0KEsrIlxcOiIpKyJ7MCw0fSIrSykrIj9cXDpcXDoiK2ZlKSxLZT10KHQodChLKyJcXDoiKSsiezAsNX0iK0spKyI/XFw6XFw6IitLKSx1bj10KHQodChLKyJcXDoiKSsiezAsNn0iK0spKyI/XFw6XFw6IiksWW49dChbYmUsUmUsRG4sc24sYW4sZnIsV24sS2UsdW5dLmpvaW4oInwiKSksUm49dCh0KForInwiK0kpKyIrIik7dCgiW3ZWXSIrYisiK1xcLiIrbyhaLHgsIltcXDpdIikrIisiKSx0KHQoSSsifCIrbyhaLHgpKSsiKiIpO3ZhciBWcj10KEkrInwiK28oWix4LCJbXFw6XFxAXSIpKTtyZXR1cm4gdCh0KEkrInwiK28oWix4LCJbXFxAXSIpKSsiKyIpLHQodChWcisifCIrbygiW1xcL1xcP10iLE5lKSkrIioiKSx7Tk9UX1NDSEVNRTpuZXcgUmVnRXhwKG8oIlteXSIsXyxFLCJbXFwrXFwtXFwuXSIpLCJnIiksTk9UX1VTRVJJTkZPOm5ldyBSZWdFeHAobygiW15cXCVcXDpdIixaLHgpLCJnIiksTk9UX0hPU1Q6bmV3IFJlZ0V4cChvKCJbXlxcJVxcW1xcXVxcOl0iLFoseCksImciKSxOT1RfUEFUSDpuZXcgUmVnRXhwKG8oIlteXFwlXFwvXFw6XFxAXSIsWix4KSwiZyIpLE5PVF9QQVRIX05PU0NIRU1FOm5ldyBSZWdFeHAobygiW15cXCVcXC9cXEBdIixaLHgpLCJnIiksTk9UX1FVRVJZOm5ldyBSZWdFeHAobygiW15cXCVdIixaLHgsIltcXDpcXEBcXC9cXD9dIixOZSksImciKSxOT1RfRlJBR01FTlQ6bmV3IFJlZ0V4cChvKCJbXlxcJV0iLFoseCwiW1xcOlxcQFxcL1xcP10iKSwiZyIpLEVTQ0FQRTpuZXcgUmVnRXhwKG8oIlteXSIsWix4KSwiZyIpLFVOUkVTRVJWRUQ6bmV3IFJlZ0V4cChaLCJnIiksT1RIRVJfQ0hBUlM6bmV3IFJlZ0V4cChvKCJbXlxcJV0iLFosdGUpLCJnIiksUENUX0VOQ09ERUQ6bmV3IFJlZ0V4cChJLCJnIiksSVBWNEFERFJFU1M6bmV3IFJlZ0V4cCgiXigiK2dlKyIpJCIpLElQVjZBRERSRVNTOm5ldyBSZWdFeHAoIl5cXFs/KCIrWW4rIikiK3QodCgiXFwlMjV8XFwlKD8hIitiKyJ7Mn0pIikrIigiK1JuKyIpIikrIj9cXF0/JCIpfX12YXIgYT1tKCExKSxoPW0oITApLE89ZnVuY3Rpb24oKXtmdW5jdGlvbiBkKF8sRSl7dmFyIGI9W10sST0hMCwkPSExLHg9dm9pZCAwO3RyeXtmb3IodmFyIHRlPV9bU3ltYm9sLml0ZXJhdG9yXSgpLHBlOyEoST0ocGU9dGUubmV4dCgpKS5kb25lKSYmKGIucHVzaChwZS52YWx1ZSksIShFJiZiLmxlbmd0aD09PUUpKTtJPSEwKTt9Y2F0Y2goTmUpeyQ9ITAseD1OZX1maW5hbGx5e3RyeXshSSYmdGUucmV0dXJuJiZ0ZS5yZXR1cm4oKX1maW5hbGx5e2lmKCQpdGhyb3cgeH19cmV0dXJuIGJ9cmV0dXJuIGZ1bmN0aW9uKF8sRSl7aWYoQXJyYXkuaXNBcnJheShfKSlyZXR1cm4gXztpZihTeW1ib2wuaXRlcmF0b3IgaW4gT2JqZWN0KF8pKXJldHVybiBkKF8sRSk7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZSIpfX0oKSxEPWZ1bmN0aW9uKGQpe2lmKEFycmF5LmlzQXJyYXkoZCkpe2Zvcih2YXIgXz0wLEU9QXJyYXkoZC5sZW5ndGgpO188ZC5sZW5ndGg7XysrKUVbX109ZFtfXTtyZXR1cm4gRX1lbHNlIHJldHVybiBBcnJheS5mcm9tKGQpfSx3PTIxNDc0ODM2NDcsQz0zNixUPTEsZj0yNixBPTM4LFU9NzAwLFM9NzIsaj0xMjgsTj0iLSIsSD0vXnhuLS0vLEc9L1teXDAtXHg3RV0vLEY9L1tceDJFXHUzMDAyXHVGRjBFXHVGRjYxXS9nLFc9e292ZXJmbG93OiJPdmVyZmxvdzogaW5wdXQgbmVlZHMgd2lkZXIgaW50ZWdlcnMgdG8gcHJvY2VzcyIsIm5vdC1iYXNpYyI6IklsbGVnYWwgaW5wdXQgPj0gMHg4MCAobm90IGEgYmFzaWMgY29kZSBwb2ludCkiLCJpbnZhbGlkLWlucHV0IjoiSW52YWxpZCBpbnB1dCJ9LG1lPUMtVCx6PU1hdGguZmxvb3IsaWU9U3RyaW5nLmZyb21DaGFyQ29kZTtmdW5jdGlvbiBxKGQpe3Rocm93IG5ldyBSYW5nZUVycm9yKFdbZF0pfWZ1bmN0aW9uIEVlKGQsXyl7Zm9yKHZhciBFPVtdLGI9ZC5sZW5ndGg7Yi0tOylFW2JdPV8oZFtiXSk7cmV0dXJuIEV9ZnVuY3Rpb24gT2UoZCxfKXt2YXIgRT1kLnNwbGl0KCJAIiksYj0iIjtFLmxlbmd0aD4xJiYoYj1FWzBdKyJAIixkPUVbMV0pLGQ9ZC5yZXBsYWNlKEYsIi4iKTt2YXIgST1kLnNwbGl0KCIuIiksJD1FZShJLF8pLmpvaW4oIi4iKTtyZXR1cm4gYiskfWZ1bmN0aW9uIEhlKGQpe2Zvcih2YXIgXz1bXSxFPTAsYj1kLmxlbmd0aDtFPGI7KXt2YXIgST1kLmNoYXJDb2RlQXQoRSsrKTtpZihJPj01NTI5NiYmSTw9NTYzMTkmJkU8Yil7dmFyICQ9ZC5jaGFyQ29kZUF0KEUrKyk7KCQmNjQ1MTIpPT01NjMyMD9fLnB1c2goKChJJjEwMjMpPDwxMCkrKCQmMTAyMykrNjU1MzYpOihfLnB1c2goSSksRS0tKX1lbHNlIF8ucHVzaChJKX1yZXR1cm4gX312YXIgRmU9ZnVuY3Rpb24oXyl7cmV0dXJuIFN0cmluZy5mcm9tQ29kZVBvaW50LmFwcGx5KFN0cmluZyxEKF8pKX0sbHI9ZnVuY3Rpb24oXyl7cmV0dXJuIF8tNDg8MTA/Xy0yMjpfLTY1PDI2P18tNjU6Xy05NzwyNj9fLTk3OkN9LHk9ZnVuY3Rpb24oXyxFKXtyZXR1cm4gXysyMis3NSooXzwyNiktKChFIT0wKTw8NSl9LFI9ZnVuY3Rpb24oXyxFLGIpe3ZhciBJPTA7Zm9yKF89Yj96KF8vVSk6Xz4+MSxfKz16KF8vRSk7Xz5tZSpmPj4xO0krPUMpXz16KF8vbWUpO3JldHVybiB6KEkrKG1lKzEpKl8vKF8rQSkpfSxQPWZ1bmN0aW9uKF8pe3ZhciBFPVtdLGI9Xy5sZW5ndGgsST0wLCQ9aix4PVMsdGU9Xy5sYXN0SW5kZXhPZihOKTt0ZTwwJiYodGU9MCk7Zm9yKHZhciBwZT0wO3BlPHRlOysrcGUpXy5jaGFyQ29kZUF0KHBlKT49MTI4JiZxKCJub3QtYmFzaWMiKSxFLnB1c2goXy5jaGFyQ29kZUF0KHBlKSk7Zm9yKHZhciBOZT10ZT4wP3RlKzE6MDtOZTxiOyl7Zm9yKHZhciBaPUksY2U9MSxnZT1DOztnZSs9Qyl7TmU+PWImJnEoImludmFsaWQtaW5wdXQiKTt2YXIgSz1scihfLmNoYXJDb2RlQXQoTmUrKykpOyhLPj1DfHxLPnooKHctSSkvY2UpKSYmcSgib3ZlcmZsb3ciKSxJKz1LKmNlO3ZhciBmZT1nZTw9eD9UOmdlPj14K2Y/ZjpnZS14O2lmKEs8ZmUpYnJlYWs7dmFyIGJlPUMtZmU7Y2U+eih3L2JlKSYmcSgib3ZlcmZsb3ciKSxjZSo9YmV9dmFyIFJlPUUubGVuZ3RoKzE7eD1SKEktWixSZSxaPT0wKSx6KEkvUmUpPnctJCYmcSgib3ZlcmZsb3ciKSwkKz16KEkvUmUpLEklPVJlLEUuc3BsaWNlKEkrKywwLCQpfXJldHVybiBTdHJpbmcuZnJvbUNvZGVQb2ludC5hcHBseShTdHJpbmcsRSl9LGc9ZnVuY3Rpb24oXyl7dmFyIEU9W107Xz1IZShfKTt2YXIgYj1fLmxlbmd0aCxJPWosJD0wLHg9Uyx0ZT0hMCxwZT0hMSxOZT12b2lkIDA7dHJ5e2Zvcih2YXIgWj1fW1N5bWJvbC5pdGVyYXRvcl0oKSxjZTshKHRlPShjZT1aLm5leHQoKSkuZG9uZSk7dGU9ITApe3ZhciBnZT1jZS52YWx1ZTtnZTwxMjgmJkUucHVzaChpZShnZSkpfX1jYXRjaChLcil7cGU9ITAsTmU9S3J9ZmluYWxseXt0cnl7IXRlJiZaLnJldHVybiYmWi5yZXR1cm4oKX1maW5hbGx5e2lmKHBlKXRocm93IE5lfX12YXIgSz1FLmxlbmd0aCxmZT1LO2ZvcihLJiZFLnB1c2goTik7ZmU8Yjspe3ZhciBiZT13LFJlPSEwLERuPSExLHNuPXZvaWQgMDt0cnl7Zm9yKHZhciBhbj1fW1N5bWJvbC5pdGVyYXRvcl0oKSxmcjshKFJlPShmcj1hbi5uZXh0KCkpLmRvbmUpO1JlPSEwKXt2YXIgV249ZnIudmFsdWU7V24+PUkmJlduPGJlJiYoYmU9V24pfX1jYXRjaChLcil7RG49ITAsc249S3J9ZmluYWxseXt0cnl7IVJlJiZhbi5yZXR1cm4mJmFuLnJldHVybigpfWZpbmFsbHl7aWYoRG4pdGhyb3cgc259fXZhciBLZT1mZSsxO2JlLUk+eigody0kKS9LZSkmJnEoIm92ZXJmbG93IiksJCs9KGJlLUkpKktlLEk9YmU7dmFyIHVuPSEwLFluPSExLFJuPXZvaWQgMDt0cnl7Zm9yKHZhciBWcj1fW1N5bWJvbC5pdGVyYXRvcl0oKSxMaTshKHVuPShMaT1Wci5uZXh0KCkpLmRvbmUpO3VuPSEwKXt2YXIgQmk9TGkudmFsdWU7aWYoQmk8SSYmKyskPncmJnEoIm92ZXJmbG93IiksQmk9PUkpe2Zvcih2YXIgYm89JCxBbz1DOztBbys9Qyl7dmFyIFVvPUFvPD14P1Q6QW8+PXgrZj9mOkFvLXg7aWYoYm88VW8pYnJlYWs7dmFyIGtpPWJvLVVvLE1pPUMtVW87RS5wdXNoKGllKHkoVW8ra2klTWksMCkpKSxibz16KGtpL01pKX1FLnB1c2goaWUoeShibywwKSkpLHg9UigkLEtlLGZlPT1LKSwkPTAsKytmZX19fWNhdGNoKEtyKXtZbj0hMCxSbj1Lcn1maW5hbGx5e3RyeXshdW4mJlZyLnJldHVybiYmVnIucmV0dXJuKCl9ZmluYWxseXtpZihZbil0aHJvdyBSbn19KyskLCsrSX1yZXR1cm4gRS5qb2luKCIiKX0sdT1mdW5jdGlvbihfKXtyZXR1cm4gT2UoXyxmdW5jdGlvbihFKXtyZXR1cm4gSC50ZXN0KEUpP1AoRS5zbGljZSg0KS50b0xvd2VyQ2FzZSgpKTpFfSl9LHA9ZnVuY3Rpb24oXyl7cmV0dXJuIE9lKF8sZnVuY3Rpb24oRSl7cmV0dXJuIEcudGVzdChFKT8ieG4tLSIrZyhFKTpFfSl9LHY9e3ZlcnNpb246IjIuMS4wIix1Y3MyOntkZWNvZGU6SGUsZW5jb2RlOkZlfSxkZWNvZGU6UCxlbmNvZGU6Zyx0b0FTQ0lJOnAsdG9Vbmljb2RlOnV9LEw9e307ZnVuY3Rpb24gQihkKXt2YXIgXz1kLmNoYXJDb2RlQXQoMCksRT12b2lkIDA7cmV0dXJuIF88MTY/RT0iJTAiK18udG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKCk6XzwxMjg/RT0iJSIrXy50b1N0cmluZygxNikudG9VcHBlckNhc2UoKTpfPDIwNDg/RT0iJSIrKF8+PjZ8MTkyKS50b1N0cmluZygxNikudG9VcHBlckNhc2UoKSsiJSIrKF8mNjN8MTI4KS50b1N0cmluZygxNikudG9VcHBlckNhc2UoKTpFPSIlIisoXz4+MTJ8MjI0KS50b1N0cmluZygxNikudG9VcHBlckNhc2UoKSsiJSIrKF8+PjYmNjN8MTI4KS50b1N0cmluZygxNikudG9VcHBlckNhc2UoKSsiJSIrKF8mNjN8MTI4KS50b1N0cmluZygxNikudG9VcHBlckNhc2UoKSxFfWZ1bmN0aW9uIFEoZCl7Zm9yKHZhciBfPSIiLEU9MCxiPWQubGVuZ3RoO0U8Yjspe3ZhciBJPXBhcnNlSW50KGQuc3Vic3RyKEUrMSwyKSwxNik7aWYoSTwxMjgpXys9U3RyaW5nLmZyb21DaGFyQ29kZShJKSxFKz0zO2Vsc2UgaWYoST49MTk0JiZJPDIyNCl7aWYoYi1FPj02KXt2YXIgJD1wYXJzZUludChkLnN1YnN0cihFKzQsMiksMTYpO18rPVN0cmluZy5mcm9tQ2hhckNvZGUoKEkmMzEpPDw2fCQmNjMpfWVsc2UgXys9ZC5zdWJzdHIoRSw2KTtFKz02fWVsc2UgaWYoST49MjI0KXtpZihiLUU+PTkpe3ZhciB4PXBhcnNlSW50KGQuc3Vic3RyKEUrNCwyKSwxNiksdGU9cGFyc2VJbnQoZC5zdWJzdHIoRSs3LDIpLDE2KTtfKz1TdHJpbmcuZnJvbUNoYXJDb2RlKChJJjE1KTw8MTJ8KHgmNjMpPDw2fHRlJjYzKX1lbHNlIF8rPWQuc3Vic3RyKEUsOSk7RSs9OX1lbHNlIF8rPWQuc3Vic3RyKEUsMyksRSs9M31yZXR1cm4gX31mdW5jdGlvbiByZShkLF8pe2Z1bmN0aW9uIEUoYil7dmFyIEk9UShiKTtyZXR1cm4gSS5tYXRjaChfLlVOUkVTRVJWRUQpP0k6Yn1yZXR1cm4gZC5zY2hlbWUmJihkLnNjaGVtZT1TdHJpbmcoZC5zY2hlbWUpLnJlcGxhY2UoXy5QQ1RfRU5DT0RFRCxFKS50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoXy5OT1RfU0NIRU1FLCIiKSksZC51c2VyaW5mbyE9PXZvaWQgMCYmKGQudXNlcmluZm89U3RyaW5nKGQudXNlcmluZm8pLnJlcGxhY2UoXy5QQ1RfRU5DT0RFRCxFKS5yZXBsYWNlKF8uTk9UX1VTRVJJTkZPLEIpLnJlcGxhY2UoXy5QQ1RfRU5DT0RFRCxpKSksZC5ob3N0IT09dm9pZCAwJiYoZC5ob3N0PVN0cmluZyhkLmhvc3QpLnJlcGxhY2UoXy5QQ1RfRU5DT0RFRCxFKS50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoXy5OT1RfSE9TVCxCKS5yZXBsYWNlKF8uUENUX0VOQ09ERUQsaSkpLGQucGF0aCE9PXZvaWQgMCYmKGQucGF0aD1TdHJpbmcoZC5wYXRoKS5yZXBsYWNlKF8uUENUX0VOQ09ERUQsRSkucmVwbGFjZShkLnNjaGVtZT9fLk5PVF9QQVRIOl8uTk9UX1BBVEhfTk9TQ0hFTUUsQikucmVwbGFjZShfLlBDVF9FTkNPREVELGkpKSxkLnF1ZXJ5IT09dm9pZCAwJiYoZC5xdWVyeT1TdHJpbmcoZC5xdWVyeSkucmVwbGFjZShfLlBDVF9FTkNPREVELEUpLnJlcGxhY2UoXy5OT1RfUVVFUlksQikucmVwbGFjZShfLlBDVF9FTkNPREVELGkpKSxkLmZyYWdtZW50IT09dm9pZCAwJiYoZC5mcmFnbWVudD1TdHJpbmcoZC5mcmFnbWVudCkucmVwbGFjZShfLlBDVF9FTkNPREVELEUpLnJlcGxhY2UoXy5OT1RfRlJBR01FTlQsQikucmVwbGFjZShfLlBDVF9FTkNPREVELGkpKSxkfWZ1bmN0aW9uIFRlKGQpe3JldHVybiBkLnJlcGxhY2UoL14wKiguKikvLCIkMSIpfHwiMCJ9ZnVuY3Rpb24gcm4oZCxfKXt2YXIgRT1kLm1hdGNoKF8uSVBWNEFERFJFU1MpfHxbXSxiPU8oRSwyKSxJPWJbMV07cmV0dXJuIEk/SS5zcGxpdCgiLiIpLm1hcChUZSkuam9pbigiLiIpOmR9ZnVuY3Rpb24gY3IoZCxfKXt2YXIgRT1kLm1hdGNoKF8uSVBWNkFERFJFU1MpfHxbXSxiPU8oRSwzKSxJPWJbMV0sJD1iWzJdO2lmKEkpe2Zvcih2YXIgeD1JLnRvTG93ZXJDYXNlKCkuc3BsaXQoIjo6IikucmV2ZXJzZSgpLHRlPU8oeCwyKSxwZT10ZVswXSxOZT10ZVsxXSxaPU5lP05lLnNwbGl0KCI6IikubWFwKFRlKTpbXSxjZT1wZS5zcGxpdCgiOiIpLm1hcChUZSksZ2U9Xy5JUFY0QUREUkVTUy50ZXN0KGNlW2NlLmxlbmd0aC0xXSksSz1nZT83OjgsZmU9Y2UubGVuZ3RoLUssYmU9QXJyYXkoSyksUmU9MDtSZTxLOysrUmUpYmVbUmVdPVpbUmVdfHxjZVtmZStSZV18fCIiO2dlJiYoYmVbSy0xXT1ybihiZVtLLTFdLF8pKTt2YXIgRG49YmUucmVkdWNlKGZ1bmN0aW9uKEtlLHVuLFluKXtpZighdW58fHVuPT09IjAiKXt2YXIgUm49S2VbS2UubGVuZ3RoLTFdO1JuJiZSbi5pbmRleCtSbi5sZW5ndGg9PT1Zbj9Sbi5sZW5ndGgrKzpLZS5wdXNoKHtpbmRleDpZbixsZW5ndGg6MX0pfXJldHVybiBLZX0sW10pLHNuPURuLnNvcnQoZnVuY3Rpb24oS2UsdW4pe3JldHVybiB1bi5sZW5ndGgtS2UubGVuZ3RofSlbMF0sYW49dm9pZCAwO2lmKHNuJiZzbi5sZW5ndGg+MSl7dmFyIGZyPWJlLnNsaWNlKDAsc24uaW5kZXgpLFduPWJlLnNsaWNlKHNuLmluZGV4K3NuLmxlbmd0aCk7YW49ZnIuam9pbigiOiIpKyI6OiIrV24uam9pbigiOiIpfWVsc2UgYW49YmUuam9pbigiOiIpO3JldHVybiAkJiYoYW4rPSIlIiskKSxhbn1lbHNlIHJldHVybiBkfXZhciBrcj0vXig/OihbXjpcLz8jXSspOik/KD86XC9cLygoPzooW15cLz8jQF0qKUApPyhcW1teXC8/I1xdXStcXXxbXlwvPyM6XSopKD86XDooXGQqKSk/KSk/KFtePyNdKikoPzpcPyhbXiNdKikpPyg/OiMoKD86LnxcbnxccikqKSk/L2ksTXI9IiIubWF0Y2goLygpezB9LylbMV09PT12b2lkIDA7ZnVuY3Rpb24ga2UoZCl7dmFyIF89YXJndW1lbnRzLmxlbmd0aD4xJiZhcmd1bWVudHNbMV0hPT12b2lkIDA/YXJndW1lbnRzWzFdOnt9LEU9e30sYj1fLmlyaSE9PSExP2g6YTtfLnJlZmVyZW5jZT09PSJzdWZmaXgiJiYoZD0oXy5zY2hlbWU/Xy5zY2hlbWUrIjoiOiIiKSsiLy8iK2QpO3ZhciBJPWQubWF0Y2goa3IpO2lmKEkpe01yPyhFLnNjaGVtZT1JWzFdLEUudXNlcmluZm89SVszXSxFLmhvc3Q9SVs0XSxFLnBvcnQ9cGFyc2VJbnQoSVs1XSwxMCksRS5wYXRoPUlbNl18fCIiLEUucXVlcnk9SVs3XSxFLmZyYWdtZW50PUlbOF0saXNOYU4oRS5wb3J0KSYmKEUucG9ydD1JWzVdKSk6KEUuc2NoZW1lPUlbMV18fHZvaWQgMCxFLnVzZXJpbmZvPWQuaW5kZXhPZigiQCIpIT09LTE/SVszXTp2b2lkIDAsRS5ob3N0PWQuaW5kZXhPZigiLy8iKSE9PS0xP0lbNF06dm9pZCAwLEUucG9ydD1wYXJzZUludChJWzVdLDEwKSxFLnBhdGg9SVs2XXx8IiIsRS5xdWVyeT1kLmluZGV4T2YoIj8iKSE9PS0xP0lbN106dm9pZCAwLEUuZnJhZ21lbnQ9ZC5pbmRleE9mKCIjIikhPT0tMT9JWzhdOnZvaWQgMCxpc05hTihFLnBvcnQpJiYoRS5wb3J0PWQubWF0Y2goL1wvXC8oPzoufFxuKSpcOig/OlwvfFw/fFwjfCQpLyk/SVs0XTp2b2lkIDApKSxFLmhvc3QmJihFLmhvc3Q9Y3Iocm4oRS5ob3N0LGIpLGIpKSxFLnNjaGVtZT09PXZvaWQgMCYmRS51c2VyaW5mbz09PXZvaWQgMCYmRS5ob3N0PT09dm9pZCAwJiZFLnBvcnQ9PT12b2lkIDAmJiFFLnBhdGgmJkUucXVlcnk9PT12b2lkIDA/RS5yZWZlcmVuY2U9InNhbWUtZG9jdW1lbnQiOkUuc2NoZW1lPT09dm9pZCAwP0UucmVmZXJlbmNlPSJyZWxhdGl2ZSI6RS5mcmFnbWVudD09PXZvaWQgMD9FLnJlZmVyZW5jZT0iYWJzb2x1dGUiOkUucmVmZXJlbmNlPSJ1cmkiLF8ucmVmZXJlbmNlJiZfLnJlZmVyZW5jZSE9PSJzdWZmaXgiJiZfLnJlZmVyZW5jZSE9PUUucmVmZXJlbmNlJiYoRS5lcnJvcj1FLmVycm9yfHwiVVJJIGlzIG5vdCBhICIrXy5yZWZlcmVuY2UrIiByZWZlcmVuY2UuIik7dmFyICQ9TFsoXy5zY2hlbWV8fEUuc2NoZW1lfHwiIikudG9Mb3dlckNhc2UoKV07aWYoIV8udW5pY29kZVN1cHBvcnQmJighJHx8ISQudW5pY29kZVN1cHBvcnQpKXtpZihFLmhvc3QmJihfLmRvbWFpbkhvc3R8fCQmJiQuZG9tYWluSG9zdCkpdHJ5e0UuaG9zdD12LnRvQVNDSUkoRS5ob3N0LnJlcGxhY2UoYi5QQ1RfRU5DT0RFRCxRKS50b0xvd2VyQ2FzZSgpKX1jYXRjaCh4KXtFLmVycm9yPUUuZXJyb3J8fCJIb3N0J3MgZG9tYWluIG5hbWUgY2FuIG5vdCBiZSBjb252ZXJ0ZWQgdG8gQVNDSUkgdmlhIHB1bnljb2RlOiAiK3h9cmUoRSxhKX1lbHNlIHJlKEUsYik7JCYmJC5wYXJzZSYmJC5wYXJzZShFLF8pfWVsc2UgRS5lcnJvcj1FLmVycm9yfHwiVVJJIGNhbiBub3QgYmUgcGFyc2VkLiI7cmV0dXJuIEV9ZnVuY3Rpb24gWHIoZCxfKXt2YXIgRT1fLmlyaSE9PSExP2g6YSxiPVtdO3JldHVybiBkLnVzZXJpbmZvIT09dm9pZCAwJiYoYi5wdXNoKGQudXNlcmluZm8pLGIucHVzaCgiQCIpKSxkLmhvc3QhPT12b2lkIDAmJmIucHVzaChjcihybihTdHJpbmcoZC5ob3N0KSxFKSxFKS5yZXBsYWNlKEUuSVBWNkFERFJFU1MsZnVuY3Rpb24oSSwkLHgpe3JldHVybiJbIiskKyh4PyIlMjUiK3g6IiIpKyJdIn0pKSwodHlwZW9mIGQucG9ydD09Im51bWJlciJ8fHR5cGVvZiBkLnBvcnQ9PSJzdHJpbmciKSYmKGIucHVzaCgiOiIpLGIucHVzaChTdHJpbmcoZC5wb3J0KSkpLGIubGVuZ3RoP2Iuam9pbigiIik6dm9pZCAwfXZhciBkcj0vXlwuXC4/XC8vLGhyPS9eXC9cLihcL3wkKS8sbXI9L15cL1wuXC4oXC98JCkvLCRyPS9eXC8/KD86LnxcbikqPyg/PVwvfCQpLztmdW5jdGlvbiBvbihkKXtmb3IodmFyIF89W107ZC5sZW5ndGg7KWlmKGQubWF0Y2goZHIpKWQ9ZC5yZXBsYWNlKGRyLCIiKTtlbHNlIGlmKGQubWF0Y2goaHIpKWQ9ZC5yZXBsYWNlKGhyLCIvIik7ZWxzZSBpZihkLm1hdGNoKG1yKSlkPWQucmVwbGFjZShtciwiLyIpLF8ucG9wKCk7ZWxzZSBpZihkPT09Ii4ifHxkPT09Ii4uIilkPSIiO2Vsc2V7dmFyIEU9ZC5tYXRjaCgkcik7aWYoRSl7dmFyIGI9RVswXTtkPWQuc2xpY2UoYi5sZW5ndGgpLF8ucHVzaChiKX1lbHNlIHRocm93IG5ldyBFcnJvcigiVW5leHBlY3RlZCBkb3Qgc2VnbWVudCBjb25kaXRpb24iKX1yZXR1cm4gXy5qb2luKCIiKX1mdW5jdGlvbiB5ZShkKXt2YXIgXz1hcmd1bWVudHMubGVuZ3RoPjEmJmFyZ3VtZW50c1sxXSE9PXZvaWQgMD9hcmd1bWVudHNbMV06e30sRT1fLmlyaT9oOmEsYj1bXSxJPUxbKF8uc2NoZW1lfHxkLnNjaGVtZXx8IiIpLnRvTG93ZXJDYXNlKCldO2lmKEkmJkkuc2VyaWFsaXplJiZJLnNlcmlhbGl6ZShkLF8pLGQuaG9zdCYmIUUuSVBWNkFERFJFU1MudGVzdChkLmhvc3QpKXtpZihfLmRvbWFpbkhvc3R8fEkmJkkuZG9tYWluSG9zdCl0cnl7ZC5ob3N0PV8uaXJpP3YudG9Vbmljb2RlKGQuaG9zdCk6di50b0FTQ0lJKGQuaG9zdC5yZXBsYWNlKEUuUENUX0VOQ09ERUQsUSkudG9Mb3dlckNhc2UoKSl9Y2F0Y2godGUpe2QuZXJyb3I9ZC5lcnJvcnx8Ikhvc3QncyBkb21haW4gbmFtZSBjYW4gbm90IGJlIGNvbnZlcnRlZCB0byAiKyhfLmlyaT8iVW5pY29kZSI6IkFTQ0lJIikrIiB2aWEgcHVueWNvZGU6ICIrdGV9fXJlKGQsRSksXy5yZWZlcmVuY2UhPT0ic3VmZml4IiYmZC5zY2hlbWUmJihiLnB1c2goZC5zY2hlbWUpLGIucHVzaCgiOiIpKTt2YXIgJD1YcihkLF8pO2lmKCQhPT12b2lkIDAmJihfLnJlZmVyZW5jZSE9PSJzdWZmaXgiJiZiLnB1c2goIi8vIiksYi5wdXNoKCQpLGQucGF0aCYmZC5wYXRoLmNoYXJBdCgwKSE9PSIvIiYmYi5wdXNoKCIvIikpLGQucGF0aCE9PXZvaWQgMCl7dmFyIHg9ZC5wYXRoOyFfLmFic29sdXRlUGF0aCYmKCFJfHwhSS5hYnNvbHV0ZVBhdGgpJiYoeD1vbih4KSksJD09PXZvaWQgMCYmKHg9eC5yZXBsYWNlKC9eXC9cLy8sIi8lMkYiKSksYi5wdXNoKHgpfXJldHVybiBkLnF1ZXJ5IT09dm9pZCAwJiYoYi5wdXNoKCI/IiksYi5wdXNoKGQucXVlcnkpKSxkLmZyYWdtZW50IT09dm9pZCAwJiYoYi5wdXNoKCIjIiksYi5wdXNoKGQuZnJhZ21lbnQpKSxiLmpvaW4oIiIpfWZ1bmN0aW9uIHByKGQsXyl7dmFyIEU9YXJndW1lbnRzLmxlbmd0aD4yJiZhcmd1bWVudHNbMl0hPT12b2lkIDA/YXJndW1lbnRzWzJdOnt9LGI9YXJndW1lbnRzWzNdLEk9e307cmV0dXJuIGJ8fChkPWtlKHllKGQsRSksRSksXz1rZSh5ZShfLEUpLEUpKSxFPUV8fHt9LCFFLnRvbGVyYW50JiZfLnNjaGVtZT8oSS5zY2hlbWU9Xy5zY2hlbWUsSS51c2VyaW5mbz1fLnVzZXJpbmZvLEkuaG9zdD1fLmhvc3QsSS5wb3J0PV8ucG9ydCxJLnBhdGg9b24oXy5wYXRofHwiIiksSS5xdWVyeT1fLnF1ZXJ5KTooXy51c2VyaW5mbyE9PXZvaWQgMHx8Xy5ob3N0IT09dm9pZCAwfHxfLnBvcnQhPT12b2lkIDA/KEkudXNlcmluZm89Xy51c2VyaW5mbyxJLmhvc3Q9Xy5ob3N0LEkucG9ydD1fLnBvcnQsSS5wYXRoPW9uKF8ucGF0aHx8IiIpLEkucXVlcnk9Xy5xdWVyeSk6KF8ucGF0aD8oXy5wYXRoLmNoYXJBdCgwKT09PSIvIj9JLnBhdGg9b24oXy5wYXRoKTooKGQudXNlcmluZm8hPT12b2lkIDB8fGQuaG9zdCE9PXZvaWQgMHx8ZC5wb3J0IT09dm9pZCAwKSYmIWQucGF0aD9JLnBhdGg9Ii8iK18ucGF0aDpkLnBhdGg/SS5wYXRoPWQucGF0aC5zbGljZSgwLGQucGF0aC5sYXN0SW5kZXhPZigiLyIpKzEpK18ucGF0aDpJLnBhdGg9Xy5wYXRoLEkucGF0aD1vbihJLnBhdGgpKSxJLnF1ZXJ5PV8ucXVlcnkpOihJLnBhdGg9ZC5wYXRoLF8ucXVlcnkhPT12b2lkIDA/SS5xdWVyeT1fLnF1ZXJ5OkkucXVlcnk9ZC5xdWVyeSksSS51c2VyaW5mbz1kLnVzZXJpbmZvLEkuaG9zdD1kLmhvc3QsSS5wb3J0PWQucG9ydCksSS5zY2hlbWU9ZC5zY2hlbWUpLEkuZnJhZ21lbnQ9Xy5mcmFnbWVudCxJfWZ1bmN0aW9uIGpyKGQsXyxFKXt2YXIgYj1jKHtzY2hlbWU6Im51bGwifSxFKTtyZXR1cm4geWUocHIoa2UoZCxiKSxrZShfLGIpLGIsITApLGIpfWZ1bmN0aW9uIFZuKGQsXyl7cmV0dXJuIHR5cGVvZiBkPT0ic3RyaW5nIj9kPXllKGtlKGQsXyksXyk6cyhkKT09PSJvYmplY3QiJiYoZD1rZSh5ZShkLF8pLF8pKSxkfWZ1bmN0aW9uIHhyKGQsXyxFKXtyZXR1cm4gdHlwZW9mIGQ9PSJzdHJpbmciP2Q9eWUoa2UoZCxFKSxFKTpzKGQpPT09Im9iamVjdCImJihkPXllKGQsRSkpLHR5cGVvZiBfPT0ic3RyaW5nIj9fPXllKGtlKF8sRSksRSk6cyhfKT09PSJvYmplY3QiJiYoXz15ZShfLEUpKSxkPT09X31mdW5jdGlvbiBJbyhkLF8pe3JldHVybiBkJiZkLnRvU3RyaW5nKCkucmVwbGFjZSghX3x8IV8uaXJpP2EuRVNDQVBFOmguRVNDQVBFLEIpfWZ1bmN0aW9uIFZlKGQsXyl7cmV0dXJuIGQmJmQudG9TdHJpbmcoKS5yZXBsYWNlKCFffHwhXy5pcmk/YS5QQ1RfRU5DT0RFRDpoLlBDVF9FTkNPREVELFEpfXZhciBLbj17c2NoZW1lOiJodHRwIixkb21haW5Ib3N0OiEwLHBhcnNlOmZ1bmN0aW9uKF8sRSl7cmV0dXJuIF8uaG9zdHx8KF8uZXJyb3I9Xy5lcnJvcnx8IkhUVFAgVVJJcyBtdXN0IGhhdmUgYSBob3N0LiIpLF99LHNlcmlhbGl6ZTpmdW5jdGlvbihfLEUpe3ZhciBiPVN0cmluZyhfLnNjaGVtZSkudG9Mb3dlckNhc2UoKT09PSJodHRwcyI7cmV0dXJuKF8ucG9ydD09PShiPzQ0Mzo4MCl8fF8ucG9ydD09PSIiKSYmKF8ucG9ydD12b2lkIDApLF8ucGF0aHx8KF8ucGF0aD0iLyIpLF99fSx2aT17c2NoZW1lOiJodHRwcyIsZG9tYWluSG9zdDpLbi5kb21haW5Ib3N0LHBhcnNlOktuLnBhcnNlLHNlcmlhbGl6ZTpLbi5zZXJpYWxpemV9O2Z1bmN0aW9uIERpKGQpe3JldHVybiB0eXBlb2YgZC5zZWN1cmU9PSJib29sZWFuIj9kLnNlY3VyZTpTdHJpbmcoZC5zY2hlbWUpLnRvTG93ZXJDYXNlKCk9PT0id3NzIn12YXIgRnI9e3NjaGVtZToid3MiLGRvbWFpbkhvc3Q6ITAscGFyc2U6ZnVuY3Rpb24oXyxFKXt2YXIgYj1fO3JldHVybiBiLnNlY3VyZT1EaShiKSxiLnJlc291cmNlTmFtZT0oYi5wYXRofHwiLyIpKyhiLnF1ZXJ5PyI/IitiLnF1ZXJ5OiIiKSxiLnBhdGg9dm9pZCAwLGIucXVlcnk9dm9pZCAwLGJ9LHNlcmlhbGl6ZTpmdW5jdGlvbihfLEUpe2lmKChfLnBvcnQ9PT0oRGkoXyk/NDQzOjgwKXx8Xy5wb3J0PT09IiIpJiYoXy5wb3J0PXZvaWQgMCksdHlwZW9mIF8uc2VjdXJlPT0iYm9vbGVhbiImJihfLnNjaGVtZT1fLnNlY3VyZT8id3NzIjoid3MiLF8uc2VjdXJlPXZvaWQgMCksXy5yZXNvdXJjZU5hbWUpe3ZhciBiPV8ucmVzb3VyY2VOYW1lLnNwbGl0KCI/IiksST1PKGIsMiksJD1JWzBdLHg9SVsxXTtfLnBhdGg9JCYmJCE9PSIvIj8kOnZvaWQgMCxfLnF1ZXJ5PXgsXy5yZXNvdXJjZU5hbWU9dm9pZCAwfXJldHVybiBfLmZyYWdtZW50PXZvaWQgMCxffX0sU2k9e3NjaGVtZToid3NzIixkb21haW5Ib3N0OkZyLmRvbWFpbkhvc3QscGFyc2U6RnIucGFyc2Usc2VyaWFsaXplOkZyLnNlcmlhbGl6ZX0sSmM9e30sUGk9IltBLVphLXowLTlcXC1cXC5cXF9cXH5cXHhBMC1cXHUyMDBEXFx1MjAxMC1cXHUyMDI5XFx1MjAyRi1cXHVEN0ZGXFx1RjkwMC1cXHVGRENGXFx1RkRGMC1cXHVGRkVGXSIsdG49IlswLTlBLUZhLWZdIix6Yz10KHQoIiVbRUZlZl0iK3RuKyIlIit0bit0bisiJSIrdG4rdG4pKyJ8Iit0KCIlWzg5QS1GYS1mXSIrdG4rIiUiK3RuK3RuKSsifCIrdCgiJSIrdG4rdG4pKSxxYz0iW0EtWmEtejAtOVxcIVxcJFxcJVxcJ1xcKlxcK1xcLVxcXlxcX1xcYFxce1xcfFxcfVxcfl0iLFFjPSJbXFwhXFwkXFwlXFwnXFwoXFwpXFwqXFwrXFwsXFwtXFwuMC05XFw8XFw+QS1aXFx4NUUtXFx4N0VdIixaYz1vKFFjLCdbXFwiXFxcXF0nKSxlZD0iW1xcIVxcJFxcJ1xcKFxcKVxcKlxcK1xcLFxcO1xcOlxcQF0iLG5kPW5ldyBSZWdFeHAoUGksImciKSxFcj1uZXcgUmVnRXhwKHpjLCJnIikscmQ9bmV3IFJlZ0V4cChvKCJbXl0iLHFjLCJbXFwuXSIsJ1tcXCJdJyxaYyksImciKSx3aT1uZXcgUmVnRXhwKG8oIlteXSIsUGksZWQpLCJnIiksb2Q9d2k7ZnVuY3Rpb24gVXQoZCl7dmFyIF89UShkKTtyZXR1cm4gXy5tYXRjaChuZCk/XzpkfXZhciBHaT17c2NoZW1lOiJtYWlsdG8iLHBhcnNlOmZ1bmN0aW9uKF8sRSl7dmFyIGI9XyxJPWIudG89Yi5wYXRoP2IucGF0aC5zcGxpdCgiLCIpOltdO2lmKGIucGF0aD12b2lkIDAsYi5xdWVyeSl7Zm9yKHZhciAkPSExLHg9e30sdGU9Yi5xdWVyeS5zcGxpdCgiJiIpLHBlPTAsTmU9dGUubGVuZ3RoO3BlPE5lOysrcGUpe3ZhciBaPXRlW3BlXS5zcGxpdCgiPSIpO3N3aXRjaChaWzBdKXtjYXNlInRvIjpmb3IodmFyIGNlPVpbMV0uc3BsaXQoIiwiKSxnZT0wLEs9Y2UubGVuZ3RoO2dlPEs7KytnZSlJLnB1c2goY2VbZ2VdKTticmVhaztjYXNlInN1YmplY3QiOmIuc3ViamVjdD1WZShaWzFdLEUpO2JyZWFrO2Nhc2UiYm9keSI6Yi5ib2R5PVZlKFpbMV0sRSk7YnJlYWs7ZGVmYXVsdDokPSEwLHhbVmUoWlswXSxFKV09VmUoWlsxXSxFKTticmVha319JCYmKGIuaGVhZGVycz14KX1iLnF1ZXJ5PXZvaWQgMDtmb3IodmFyIGZlPTAsYmU9SS5sZW5ndGg7ZmU8YmU7KytmZSl7dmFyIFJlPUlbZmVdLnNwbGl0KCJAIik7aWYoUmVbMF09VmUoUmVbMF0pLEUudW5pY29kZVN1cHBvcnQpUmVbMV09VmUoUmVbMV0sRSkudG9Mb3dlckNhc2UoKTtlbHNlIHRyeXtSZVsxXT12LnRvQVNDSUkoVmUoUmVbMV0sRSkudG9Mb3dlckNhc2UoKSl9Y2F0Y2goRG4pe2IuZXJyb3I9Yi5lcnJvcnx8IkVtYWlsIGFkZHJlc3MncyBkb21haW4gbmFtZSBjYW4gbm90IGJlIGNvbnZlcnRlZCB0byBBU0NJSSB2aWEgcHVueWNvZGU6ICIrRG59SVtmZV09UmUuam9pbigiQCIpfXJldHVybiBifSxzZXJpYWxpemU6ZnVuY3Rpb24oXyxFKXt2YXIgYj1fLEk9bChfLnRvKTtpZihJKXtmb3IodmFyICQ9MCx4PUkubGVuZ3RoOyQ8eDsrKyQpe3ZhciB0ZT1TdHJpbmcoSVskXSkscGU9dGUubGFzdEluZGV4T2YoIkAiKSxOZT10ZS5zbGljZSgwLHBlKS5yZXBsYWNlKEVyLFV0KS5yZXBsYWNlKEVyLGkpLnJlcGxhY2UocmQsQiksWj10ZS5zbGljZShwZSsxKTt0cnl7Wj1FLmlyaT92LnRvVW5pY29kZShaKTp2LnRvQVNDSUkoVmUoWixFKS50b0xvd2VyQ2FzZSgpKX1jYXRjaChmZSl7Yi5lcnJvcj1iLmVycm9yfHwiRW1haWwgYWRkcmVzcydzIGRvbWFpbiBuYW1lIGNhbiBub3QgYmUgY29udmVydGVkIHRvICIrKEUuaXJpPyJVbmljb2RlIjoiQVNDSUkiKSsiIHZpYSBwdW55Y29kZTogIitmZX1JWyRdPU5lKyJAIitafWIucGF0aD1JLmpvaW4oIiwiKX12YXIgY2U9Xy5oZWFkZXJzPV8uaGVhZGVyc3x8e307Xy5zdWJqZWN0JiYoY2Uuc3ViamVjdD1fLnN1YmplY3QpLF8uYm9keSYmKGNlLmJvZHk9Xy5ib2R5KTt2YXIgZ2U9W107Zm9yKHZhciBLIGluIGNlKWNlW0tdIT09SmNbS10mJmdlLnB1c2goSy5yZXBsYWNlKEVyLFV0KS5yZXBsYWNlKEVyLGkpLnJlcGxhY2Uod2ksQikrIj0iK2NlW0tdLnJlcGxhY2UoRXIsVXQpLnJlcGxhY2UoRXIsaSkucmVwbGFjZShvZCxCKSk7cmV0dXJuIGdlLmxlbmd0aCYmKGIucXVlcnk9Z2Uuam9pbigiJiIpKSxifX0sdGQ9L14oW15cOl0rKVw6KC4qKS8sQ2k9e3NjaGVtZToidXJuIixwYXJzZTpmdW5jdGlvbihfLEUpe3ZhciBiPV8ucGF0aCYmXy5wYXRoLm1hdGNoKHRkKSxJPV87aWYoYil7dmFyICQ9RS5zY2hlbWV8fEkuc2NoZW1lfHwidXJuIix4PWJbMV0udG9Mb3dlckNhc2UoKSx0ZT1iWzJdLHBlPSQrIjoiKyhFLm5pZHx8eCksTmU9TFtwZV07SS5uaWQ9eCxJLm5zcz10ZSxJLnBhdGg9dm9pZCAwLE5lJiYoST1OZS5wYXJzZShJLEUpKX1lbHNlIEkuZXJyb3I9SS5lcnJvcnx8IlVSTiBjYW4gbm90IGJlIHBhcnNlZC4iO3JldHVybiBJfSxzZXJpYWxpemU6ZnVuY3Rpb24oXyxFKXt2YXIgYj1FLnNjaGVtZXx8Xy5zY2hlbWV8fCJ1cm4iLEk9Xy5uaWQsJD1iKyI6IisoRS5uaWR8fEkpLHg9TFskXTt4JiYoXz14LnNlcmlhbGl6ZShfLEUpKTt2YXIgdGU9XyxwZT1fLm5zcztyZXR1cm4gdGUucGF0aD0oSXx8RS5uaWQpKyI6IitwZSx0ZX19LHNkPS9eWzAtOUEtRmEtZl17OH0oPzpcLVswLTlBLUZhLWZdezR9KXszfVwtWzAtOUEtRmEtZl17MTJ9JC8seWk9e3NjaGVtZToidXJuOnV1aWQiLHBhcnNlOmZ1bmN0aW9uKF8sRSl7dmFyIGI9XztyZXR1cm4gYi51dWlkPWIubnNzLGIubnNzPXZvaWQgMCwhRS50b2xlcmFudCYmKCFiLnV1aWR8fCFiLnV1aWQubWF0Y2goc2QpKSYmKGIuZXJyb3I9Yi5lcnJvcnx8IlVVSUQgaXMgbm90IHZhbGlkLiIpLGJ9LHNlcmlhbGl6ZTpmdW5jdGlvbihfLEUpe3ZhciBiPV87cmV0dXJuIGIubnNzPShfLnV1aWR8fCIiKS50b0xvd2VyQ2FzZSgpLGJ9fTtMW0tuLnNjaGVtZV09S24sTFt2aS5zY2hlbWVdPXZpLExbRnIuc2NoZW1lXT1GcixMW1NpLnNjaGVtZV09U2ksTFtHaS5zY2hlbWVdPUdpLExbQ2kuc2NoZW1lXT1DaSxMW3lpLnNjaGVtZV09eWksci5TQ0hFTUVTPUwsci5wY3RFbmNDaGFyPUIsci5wY3REZWNDaGFycz1RLHIucGFyc2U9a2Usci5yZW1vdmVEb3RTZWdtZW50cz1vbixyLnNlcmlhbGl6ZT15ZSxyLnJlc29sdmVDb21wb25lbnRzPXByLHIucmVzb2x2ZT1qcixyLm5vcm1hbGl6ZT1WbixyLmVxdWFsPXhyLHIuZXNjYXBlQ29tcG9uZW50PUlvLHIudW5lc2NhcGVDb21wb25lbnQ9VmUsT2JqZWN0LmRlZmluZVByb3BlcnR5KHIsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pfSl9KShudCxudC5leHBvcnRzKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZXQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO2NvbnN0IENzPW50LmV4cG9ydHM7Q3MuY29kZT0ncmVxdWlyZSgiYWp2L2Rpc3QvcnVudGltZS91cmkiKS5kZWZhdWx0JyxldC5kZWZhdWx0PUNzLGZ1bmN0aW9uKGUpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxlLkNvZGVHZW49ZS5OYW1lPWUubmlsPWUuc3RyaW5naWZ5PWUuc3RyPWUuXz1lLktleXdvcmRDeHQ9dm9pZCAwO3ZhciBuPXplO09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJLZXl3b3JkQ3h0Iix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbi5LZXl3b3JkQ3h0fX0pO3ZhciByPV9lO09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gci5ffX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJzdHIiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiByLnN0cn19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwic3RyaW5naWZ5Iix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gci5zdHJpbmdpZnl9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIm5pbCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHIubmlsfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJOYW1lIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gci5OYW1lfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJDb2RlR2VuIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gci5Db2RlR2VufX0pO2NvbnN0IG89dW8sdD1MbixzPUNuLGk9UGUsbD1fZSxjPURlLG09dG8sYT1BZSxoPSRfLE89ZXQsRD0oeSxSKT0+bmV3IFJlZ0V4cCh5LFIpO0QuY29kZT0ibmV3IFJlZ0V4cCI7Y29uc3Qgdz1bInJlbW92ZUFkZGl0aW9uYWwiLCJ1c2VEZWZhdWx0cyIsImNvZXJjZVR5cGVzIl0sQz1uZXcgU2V0KFsidmFsaWRhdGUiLCJzZXJpYWxpemUiLCJwYXJzZSIsIndyYXBwZXIiLCJyb290Iiwic2NoZW1hIiwia2V5d29yZCIsInBhdHRlcm4iLCJmb3JtYXRzIiwidmFsaWRhdGUkZGF0YSIsImZ1bmMiLCJvYmoiLCJFcnJvciJdKSxUPXtlcnJvckRhdGFQYXRoOiIiLGZvcm1hdDoiYHZhbGlkYXRlRm9ybWF0czogZmFsc2VgIGNhbiBiZSB1c2VkIGluc3RlYWQuIixudWxsYWJsZTonIm51bGxhYmxlIiBrZXl3b3JkIGlzIHN1cHBvcnRlZCBieSBkZWZhdWx0LicsanNvblBvaW50ZXJzOiJEZXByZWNhdGVkIGpzUHJvcGVydHlTeW50YXggY2FuIGJlIHVzZWQgaW5zdGVhZC4iLGV4dGVuZFJlZnM6IkRlcHJlY2F0ZWQgaWdub3JlS2V5d29yZHNXaXRoUmVmIGNhbiBiZSB1c2VkIGluc3RlYWQuIixtaXNzaW5nUmVmczoiUGFzcyBlbXB0eSBzY2hlbWEgd2l0aCAkaWQgdGhhdCBzaG91bGQgYmUgaWdub3JlZCB0byBhanYuYWRkU2NoZW1hLiIscHJvY2Vzc0NvZGU6IlVzZSBvcHRpb24gYGNvZGU6IHtwcm9jZXNzOiAoY29kZSwgc2NoZW1hRW52OiBvYmplY3QpID0+IHN0cmluZ31gIixzb3VyY2VDb2RlOiJVc2Ugb3B0aW9uIGBjb2RlOiB7c291cmNlOiB0cnVlfWAiLHN0cmljdERlZmF1bHRzOiJJdCBpcyBkZWZhdWx0IG5vdywgc2VlIG9wdGlvbiBgc3RyaWN0YC4iLHN0cmljdEtleXdvcmRzOiJJdCBpcyBkZWZhdWx0IG5vdywgc2VlIG9wdGlvbiBgc3RyaWN0YC4iLHVuaXF1ZUl0ZW1zOicidW5pcXVlSXRlbXMiIGtleXdvcmQgaXMgYWx3YXlzIHZhbGlkYXRlZC4nLHVua25vd25Gb3JtYXRzOiJEaXNhYmxlIHN0cmljdCBtb2RlIG9yIHBhc3MgYHRydWVgIHRvIGBhanYuYWRkRm9ybWF0YCAob3IgYGZvcm1hdHNgIG9wdGlvbikuIixjYWNoZToiTWFwIGlzIHVzZWQgYXMgY2FjaGUsIHNjaGVtYSBvYmplY3QgYXMga2V5LiIsc2VyaWFsaXplOiJNYXAgaXMgdXNlZCBhcyBjYWNoZSwgc2NoZW1hIG9iamVjdCBhcyBrZXkuIixhanZFcnJvcnM6Ikl0IGlzIGRlZmF1bHQgbm93LiJ9LGY9e2lnbm9yZUtleXdvcmRzV2l0aFJlZjoiIixqc1Byb3BlcnR5U3ludGF4OiIiLHVuaWNvZGU6JyJtaW5MZW5ndGgiLyJtYXhMZW5ndGgiIGFjY291bnQgZm9yIHVuaWNvZGUgY2hhcmFjdGVycyBieSBkZWZhdWx0Lid9LEE9MjAwO2Z1bmN0aW9uIFUoeSl7dmFyIFIsUCxnLHUscCx2LEwsQixRLHJlLFRlLHJuLGNyLGtyLE1yLGtlLFhyLGRyLGhyLG1yLCRyLG9uLHllLHByLGpyO2NvbnN0IFZuPXkuc3RyaWN0LHhyPShSPXkuY29kZSk9PT1udWxsfHxSPT09dm9pZCAwP3ZvaWQgMDpSLm9wdGltaXplLElvPXhyPT09ITB8fHhyPT09dm9pZCAwPzE6eHJ8fDAsVmU9KGc9KFA9eS5jb2RlKT09PW51bGx8fFA9PT12b2lkIDA/dm9pZCAwOlAucmVnRXhwKSE9PW51bGwmJmchPT12b2lkIDA/ZzpELEtuPSh1PXkudXJpUmVzb2x2ZXIpIT09bnVsbCYmdSE9PXZvaWQgMD91Ok8uZGVmYXVsdDtyZXR1cm57c3RyaWN0U2NoZW1hOih2PShwPXkuc3RyaWN0U2NoZW1hKSE9PW51bGwmJnAhPT12b2lkIDA/cDpWbikhPT1udWxsJiZ2IT09dm9pZCAwP3Y6ITAsc3RyaWN0TnVtYmVyczooQj0oTD15LnN0cmljdE51bWJlcnMpIT09bnVsbCYmTCE9PXZvaWQgMD9MOlZuKSE9PW51bGwmJkIhPT12b2lkIDA/QjohMCxzdHJpY3RUeXBlczoocmU9KFE9eS5zdHJpY3RUeXBlcykhPT1udWxsJiZRIT09dm9pZCAwP1E6Vm4pIT09bnVsbCYmcmUhPT12b2lkIDA/cmU6ImxvZyIsc3RyaWN0VHVwbGVzOihybj0oVGU9eS5zdHJpY3RUdXBsZXMpIT09bnVsbCYmVGUhPT12b2lkIDA/VGU6Vm4pIT09bnVsbCYmcm4hPT12b2lkIDA/cm46ImxvZyIsc3RyaWN0UmVxdWlyZWQ6KGtyPShjcj15LnN0cmljdFJlcXVpcmVkKSE9PW51bGwmJmNyIT09dm9pZCAwP2NyOlZuKSE9PW51bGwmJmtyIT09dm9pZCAwP2tyOiExLGNvZGU6eS5jb2RlP2xlKFkoe30seS5jb2RlKSx7b3B0aW1pemU6SW8scmVnRXhwOlZlfSk6e29wdGltaXplOklvLHJlZ0V4cDpWZX0sbG9vcFJlcXVpcmVkOihNcj15Lmxvb3BSZXF1aXJlZCkhPT1udWxsJiZNciE9PXZvaWQgMD9NcjpBLGxvb3BFbnVtOihrZT15Lmxvb3BFbnVtKSE9PW51bGwmJmtlIT09dm9pZCAwP2tlOkEsbWV0YTooWHI9eS5tZXRhKSE9PW51bGwmJlhyIT09dm9pZCAwP1hyOiEwLG1lc3NhZ2VzOihkcj15Lm1lc3NhZ2VzKSE9PW51bGwmJmRyIT09dm9pZCAwP2RyOiEwLGlubGluZVJlZnM6KGhyPXkuaW5saW5lUmVmcykhPT1udWxsJiZociE9PXZvaWQgMD9ocjohMCxzY2hlbWFJZDoobXI9eS5zY2hlbWFJZCkhPT1udWxsJiZtciE9PXZvaWQgMD9tcjoiJGlkIixhZGRVc2VkU2NoZW1hOigkcj15LmFkZFVzZWRTY2hlbWEpIT09bnVsbCYmJHIhPT12b2lkIDA/JHI6ITAsdmFsaWRhdGVTY2hlbWE6KG9uPXkudmFsaWRhdGVTY2hlbWEpIT09bnVsbCYmb24hPT12b2lkIDA/b246ITAsdmFsaWRhdGVGb3JtYXRzOih5ZT15LnZhbGlkYXRlRm9ybWF0cykhPT1udWxsJiZ5ZSE9PXZvaWQgMD95ZTohMCx1bmljb2RlUmVnRXhwOihwcj15LnVuaWNvZGVSZWdFeHApIT09bnVsbCYmcHIhPT12b2lkIDA/cHI6ITAsaW50MzJyYW5nZTooanI9eS5pbnQzMnJhbmdlKSE9PW51bGwmJmpyIT09dm9pZCAwP2pyOiEwLHVyaVJlc29sdmVyOktufX1jbGFzcyBTe2NvbnN0cnVjdG9yKFI9e30pe3RoaXMuc2NoZW1hcz17fSx0aGlzLnJlZnM9e30sdGhpcy5mb3JtYXRzPXt9LHRoaXMuX2NvbXBpbGF0aW9ucz1uZXcgU2V0LHRoaXMuX2xvYWRpbmc9e30sdGhpcy5fY2FjaGU9bmV3IE1hcCxSPXRoaXMub3B0cz1ZKFkoe30sUiksVShSKSk7Y29uc3R7ZXM1OlAsbGluZXM6Z309dGhpcy5vcHRzLmNvZGU7dGhpcy5zY29wZT1uZXcgbC5WYWx1ZVNjb3BlKHtzY29wZTp7fSxwcmVmaXhlczpDLGVzNTpQLGxpbmVzOmd9KSx0aGlzLmxvZ2dlcj16KFIubG9nZ2VyKTtjb25zdCB1PVIudmFsaWRhdGVGb3JtYXRzO1IudmFsaWRhdGVGb3JtYXRzPSExLHRoaXMuUlVMRVM9KDAscy5nZXRSdWxlcykoKSxqLmNhbGwodGhpcyxULFIsIk5PVCBTVVBQT1JURUQiKSxqLmNhbGwodGhpcyxmLFIsIkRFUFJFQ0FURUQiLCJ3YXJuIiksdGhpcy5fbWV0YU9wdHM9Vy5jYWxsKHRoaXMpLFIuZm9ybWF0cyYmRy5jYWxsKHRoaXMpLHRoaXMuX2FkZFZvY2FidWxhcmllcygpLHRoaXMuX2FkZERlZmF1bHRNZXRhU2NoZW1hKCksUi5rZXl3b3JkcyYmRi5jYWxsKHRoaXMsUi5rZXl3b3JkcyksdHlwZW9mIFIubWV0YT09Im9iamVjdCImJnRoaXMuYWRkTWV0YVNjaGVtYShSLm1ldGEpLEguY2FsbCh0aGlzKSxSLnZhbGlkYXRlRm9ybWF0cz11fV9hZGRWb2NhYnVsYXJpZXMoKXt0aGlzLmFkZEtleXdvcmQoIiRhc3luYyIpfV9hZGREZWZhdWx0TWV0YVNjaGVtYSgpe2NvbnN0eyRkYXRhOlIsbWV0YTpQLHNjaGVtYUlkOmd9PXRoaXMub3B0cztsZXQgdT1oO2c9PT0iaWQiJiYodT1ZKHt9LGgpLHUuaWQ9dS4kaWQsZGVsZXRlIHUuJGlkKSxQJiZSJiZ0aGlzLmFkZE1ldGFTY2hlbWEodSx1W2ddLCExKX1kZWZhdWx0TWV0YSgpe2NvbnN0e21ldGE6UixzY2hlbWFJZDpQfT10aGlzLm9wdHM7cmV0dXJuIHRoaXMub3B0cy5kZWZhdWx0TWV0YT10eXBlb2YgUj09Im9iamVjdCI/UltQXXx8Ujp2b2lkIDB9dmFsaWRhdGUoUixQKXtsZXQgZztpZih0eXBlb2YgUj09InN0cmluZyIpe2lmKGc9dGhpcy5nZXRTY2hlbWEoUiksIWcpdGhyb3cgbmV3IEVycm9yKGBubyBzY2hlbWEgd2l0aCBrZXkgb3IgcmVmICIke1J9ImApfWVsc2UgZz10aGlzLmNvbXBpbGUoUik7Y29uc3QgdT1nKFApO3JldHVybiIkYXN5bmMiaW4gZ3x8KHRoaXMuZXJyb3JzPWcuZXJyb3JzKSx1fWNvbXBpbGUoUixQKXtjb25zdCBnPXRoaXMuX2FkZFNjaGVtYShSLFApO3JldHVybiBnLnZhbGlkYXRlfHx0aGlzLl9jb21waWxlU2NoZW1hRW52KGcpfWNvbXBpbGVBc3luYyhSLFApe2lmKHR5cGVvZiB0aGlzLm9wdHMubG9hZFNjaGVtYSE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgRXJyb3IoIm9wdGlvbnMubG9hZFNjaGVtYSBzaG91bGQgYmUgYSBmdW5jdGlvbiIpO2NvbnN0e2xvYWRTY2hlbWE6Z309dGhpcy5vcHRzO3JldHVybiB1LmNhbGwodGhpcyxSLFApO2FzeW5jIGZ1bmN0aW9uIHUocmUsVGUpe2F3YWl0IHAuY2FsbCh0aGlzLHJlLiRzY2hlbWEpO2NvbnN0IHJuPXRoaXMuX2FkZFNjaGVtYShyZSxUZSk7cmV0dXJuIHJuLnZhbGlkYXRlfHx2LmNhbGwodGhpcyxybil9YXN5bmMgZnVuY3Rpb24gcChyZSl7cmUmJiF0aGlzLmdldFNjaGVtYShyZSkmJmF3YWl0IHUuY2FsbCh0aGlzLHskcmVmOnJlfSwhMCl9YXN5bmMgZnVuY3Rpb24gdihyZSl7dHJ5e3JldHVybiB0aGlzLl9jb21waWxlU2NoZW1hRW52KHJlKX1jYXRjaChUZSl7aWYoIShUZSBpbnN0YW5jZW9mIHQuZGVmYXVsdCkpdGhyb3cgVGU7cmV0dXJuIEwuY2FsbCh0aGlzLFRlKSxhd2FpdCBCLmNhbGwodGhpcyxUZS5taXNzaW5nU2NoZW1hKSx2LmNhbGwodGhpcyxyZSl9fWZ1bmN0aW9uIEwoe21pc3NpbmdTY2hlbWE6cmUsbWlzc2luZ1JlZjpUZX0pe2lmKHRoaXMucmVmc1tyZV0pdGhyb3cgbmV3IEVycm9yKGBBbnlTY2hlbWEgJHtyZX0gaXMgbG9hZGVkIGJ1dCAke1RlfSBjYW5ub3QgYmUgcmVzb2x2ZWRgKX1hc3luYyBmdW5jdGlvbiBCKHJlKXtjb25zdCBUZT1hd2FpdCBRLmNhbGwodGhpcyxyZSk7dGhpcy5yZWZzW3JlXXx8YXdhaXQgcC5jYWxsKHRoaXMsVGUuJHNjaGVtYSksdGhpcy5yZWZzW3JlXXx8dGhpcy5hZGRTY2hlbWEoVGUscmUsUCl9YXN5bmMgZnVuY3Rpb24gUShyZSl7Y29uc3QgVGU9dGhpcy5fbG9hZGluZ1tyZV07aWYoVGUpcmV0dXJuIFRlO3RyeXtyZXR1cm4gYXdhaXQodGhpcy5fbG9hZGluZ1tyZV09ZyhyZSkpfWZpbmFsbHl7ZGVsZXRlIHRoaXMuX2xvYWRpbmdbcmVdfX19YWRkU2NoZW1hKFIsUCxnLHU9dGhpcy5vcHRzLnZhbGlkYXRlU2NoZW1hKXtpZihBcnJheS5pc0FycmF5KFIpKXtmb3IoY29uc3QgdiBvZiBSKXRoaXMuYWRkU2NoZW1hKHYsdm9pZCAwLGcsdSk7cmV0dXJuIHRoaXN9bGV0IHA7aWYodHlwZW9mIFI9PSJvYmplY3QiKXtjb25zdHtzY2hlbWFJZDp2fT10aGlzLm9wdHM7aWYocD1SW3ZdLHAhPT12b2lkIDAmJnR5cGVvZiBwIT0ic3RyaW5nIil0aHJvdyBuZXcgRXJyb3IoYHNjaGVtYSAke3Z9IG11c3QgYmUgc3RyaW5nYCl9cmV0dXJuIFA9KDAsYy5ub3JtYWxpemVJZCkoUHx8cCksdGhpcy5fY2hlY2tVbmlxdWUoUCksdGhpcy5zY2hlbWFzW1BdPXRoaXMuX2FkZFNjaGVtYShSLGcsUCx1LCEwKSx0aGlzfWFkZE1ldGFTY2hlbWEoUixQLGc9dGhpcy5vcHRzLnZhbGlkYXRlU2NoZW1hKXtyZXR1cm4gdGhpcy5hZGRTY2hlbWEoUixQLCEwLGcpLHRoaXN9dmFsaWRhdGVTY2hlbWEoUixQKXtpZih0eXBlb2YgUj09ImJvb2xlYW4iKXJldHVybiEwO2xldCBnO2lmKGc9Ui4kc2NoZW1hLGchPT12b2lkIDAmJnR5cGVvZiBnIT0ic3RyaW5nIil0aHJvdyBuZXcgRXJyb3IoIiRzY2hlbWEgbXVzdCBiZSBhIHN0cmluZyIpO2lmKGc9Z3x8dGhpcy5vcHRzLmRlZmF1bHRNZXRhfHx0aGlzLmRlZmF1bHRNZXRhKCksIWcpcmV0dXJuIHRoaXMubG9nZ2VyLndhcm4oIm1ldGEtc2NoZW1hIG5vdCBhdmFpbGFibGUiKSx0aGlzLmVycm9ycz1udWxsLCEwO2NvbnN0IHU9dGhpcy52YWxpZGF0ZShnLFIpO2lmKCF1JiZQKXtjb25zdCBwPSJzY2hlbWEgaXMgaW52YWxpZDogIit0aGlzLmVycm9yc1RleHQoKTtpZih0aGlzLm9wdHMudmFsaWRhdGVTY2hlbWE9PT0ibG9nIil0aGlzLmxvZ2dlci5lcnJvcihwKTtlbHNlIHRocm93IG5ldyBFcnJvcihwKX1yZXR1cm4gdX1nZXRTY2hlbWEoUil7bGV0IFA7Zm9yKDt0eXBlb2YoUD1OLmNhbGwodGhpcyxSKSk9PSJzdHJpbmciOylSPVA7aWYoUD09PXZvaWQgMCl7Y29uc3R7c2NoZW1hSWQ6Z309dGhpcy5vcHRzLHU9bmV3IGkuU2NoZW1hRW52KHtzY2hlbWE6e30sc2NoZW1hSWQ6Z30pO2lmKFA9aS5yZXNvbHZlU2NoZW1hLmNhbGwodGhpcyx1LFIpLCFQKXJldHVybjt0aGlzLnJlZnNbUl09UH1yZXR1cm4gUC52YWxpZGF0ZXx8dGhpcy5fY29tcGlsZVNjaGVtYUVudihQKX1yZW1vdmVTY2hlbWEoUil7aWYoUiBpbnN0YW5jZW9mIFJlZ0V4cClyZXR1cm4gdGhpcy5fcmVtb3ZlQWxsU2NoZW1hcyh0aGlzLnNjaGVtYXMsUiksdGhpcy5fcmVtb3ZlQWxsU2NoZW1hcyh0aGlzLnJlZnMsUiksdGhpcztzd2l0Y2godHlwZW9mIFIpe2Nhc2UidW5kZWZpbmVkIjpyZXR1cm4gdGhpcy5fcmVtb3ZlQWxsU2NoZW1hcyh0aGlzLnNjaGVtYXMpLHRoaXMuX3JlbW92ZUFsbFNjaGVtYXModGhpcy5yZWZzKSx0aGlzLl9jYWNoZS5jbGVhcigpLHRoaXM7Y2FzZSJzdHJpbmciOntjb25zdCBQPU4uY2FsbCh0aGlzLFIpO3JldHVybiB0eXBlb2YgUD09Im9iamVjdCImJnRoaXMuX2NhY2hlLmRlbGV0ZShQLnNjaGVtYSksZGVsZXRlIHRoaXMuc2NoZW1hc1tSXSxkZWxldGUgdGhpcy5yZWZzW1JdLHRoaXN9Y2FzZSJvYmplY3QiOntjb25zdCBQPVI7dGhpcy5fY2FjaGUuZGVsZXRlKFApO2xldCBnPVJbdGhpcy5vcHRzLnNjaGVtYUlkXTtyZXR1cm4gZyYmKGc9KDAsYy5ub3JtYWxpemVJZCkoZyksZGVsZXRlIHRoaXMuc2NoZW1hc1tnXSxkZWxldGUgdGhpcy5yZWZzW2ddKSx0aGlzfWRlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJhanYucmVtb3ZlU2NoZW1hOiBpbnZhbGlkIHBhcmFtZXRlciIpfX1hZGRWb2NhYnVsYXJ5KFIpe2Zvcihjb25zdCBQIG9mIFIpdGhpcy5hZGRLZXl3b3JkKFApO3JldHVybiB0aGlzfWFkZEtleXdvcmQoUixQKXtsZXQgZztpZih0eXBlb2YgUj09InN0cmluZyIpZz1SLHR5cGVvZiBQPT0ib2JqZWN0IiYmKHRoaXMubG9nZ2VyLndhcm4oInRoZXNlIHBhcmFtZXRlcnMgYXJlIGRlcHJlY2F0ZWQsIHNlZSBkb2NzIGZvciBhZGRLZXl3b3JkIiksUC5rZXl3b3JkPWcpO2Vsc2UgaWYodHlwZW9mIFI9PSJvYmplY3QiJiZQPT09dm9pZCAwKXtpZihQPVIsZz1QLmtleXdvcmQsQXJyYXkuaXNBcnJheShnKSYmIWcubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiYWRkS2V5d29yZHM6IGtleXdvcmQgbXVzdCBiZSBzdHJpbmcgb3Igbm9uLWVtcHR5IGFycmF5Iil9ZWxzZSB0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgYWRkS2V5d29yZHMgcGFyYW1ldGVycyIpO2lmKHEuY2FsbCh0aGlzLGcsUCksIVApcmV0dXJuKDAsYS5lYWNoSXRlbSkoZyxwPT5FZS5jYWxsKHRoaXMscCkpLHRoaXM7SGUuY2FsbCh0aGlzLFApO2NvbnN0IHU9bGUoWSh7fSxQKSx7dHlwZTooMCxtLmdldEpTT05UeXBlcykoUC50eXBlKSxzY2hlbWFUeXBlOigwLG0uZ2V0SlNPTlR5cGVzKShQLnNjaGVtYVR5cGUpfSk7cmV0dXJuKDAsYS5lYWNoSXRlbSkoZyx1LnR5cGUubGVuZ3RoPT09MD9wPT5FZS5jYWxsKHRoaXMscCx1KTpwPT51LnR5cGUuZm9yRWFjaCh2PT5FZS5jYWxsKHRoaXMscCx1LHYpKSksdGhpc31nZXRLZXl3b3JkKFIpe2NvbnN0IFA9dGhpcy5SVUxFUy5hbGxbUl07cmV0dXJuIHR5cGVvZiBQPT0ib2JqZWN0Ij9QLmRlZmluaXRpb246ISFQfXJlbW92ZUtleXdvcmQoUil7Y29uc3R7UlVMRVM6UH09dGhpcztkZWxldGUgUC5rZXl3b3Jkc1tSXSxkZWxldGUgUC5hbGxbUl07Zm9yKGNvbnN0IGcgb2YgUC5ydWxlcyl7Y29uc3QgdT1nLnJ1bGVzLmZpbmRJbmRleChwPT5wLmtleXdvcmQ9PT1SKTt1Pj0wJiZnLnJ1bGVzLnNwbGljZSh1LDEpfXJldHVybiB0aGlzfWFkZEZvcm1hdChSLFApe3JldHVybiB0eXBlb2YgUD09InN0cmluZyImJihQPW5ldyBSZWdFeHAoUCkpLHRoaXMuZm9ybWF0c1tSXT1QLHRoaXN9ZXJyb3JzVGV4dChSPXRoaXMuZXJyb3JzLHtzZXBhcmF0b3I6UD0iLCAiLGRhdGFWYXI6Zz0iZGF0YSJ9PXt9KXtyZXR1cm4hUnx8Ui5sZW5ndGg9PT0wPyJObyBlcnJvcnMiOlIubWFwKHU9PmAke2d9JHt1Lmluc3RhbmNlUGF0aH0gJHt1Lm1lc3NhZ2V9YCkucmVkdWNlKCh1LHApPT51K1ArcCl9JGRhdGFNZXRhU2NoZW1hKFIsUCl7Y29uc3QgZz10aGlzLlJVTEVTLmFsbDtSPUpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoUikpO2Zvcihjb25zdCB1IG9mIFApe2NvbnN0IHA9dS5zcGxpdCgiLyIpLnNsaWNlKDEpO2xldCB2PVI7Zm9yKGNvbnN0IEwgb2YgcCl2PXZbTF07Zm9yKGNvbnN0IEwgaW4gZyl7Y29uc3QgQj1nW0xdO2lmKHR5cGVvZiBCIT0ib2JqZWN0Iiljb250aW51ZTtjb25zdHskZGF0YTpRfT1CLmRlZmluaXRpb24scmU9dltMXTtRJiZyZSYmKHZbTF09bHIocmUpKX19cmV0dXJuIFJ9X3JlbW92ZUFsbFNjaGVtYXMoUixQKXtmb3IoY29uc3QgZyBpbiBSKXtjb25zdCB1PVJbZ107KCFQfHxQLnRlc3QoZykpJiYodHlwZW9mIHU9PSJzdHJpbmciP2RlbGV0ZSBSW2ddOnUmJiF1Lm1ldGEmJih0aGlzLl9jYWNoZS5kZWxldGUodS5zY2hlbWEpLGRlbGV0ZSBSW2ddKSl9fV9hZGRTY2hlbWEoUixQLGcsdT10aGlzLm9wdHMudmFsaWRhdGVTY2hlbWEscD10aGlzLm9wdHMuYWRkVXNlZFNjaGVtYSl7bGV0IHY7Y29uc3R7c2NoZW1hSWQ6TH09dGhpcy5vcHRzO2lmKHR5cGVvZiBSPT0ib2JqZWN0Iil2PVJbTF07ZWxzZXtpZih0aGlzLm9wdHMuanRkKXRocm93IG5ldyBFcnJvcigic2NoZW1hIG11c3QgYmUgb2JqZWN0Iik7aWYodHlwZW9mIFIhPSJib29sZWFuIil0aHJvdyBuZXcgRXJyb3IoInNjaGVtYSBtdXN0IGJlIG9iamVjdCBvciBib29sZWFuIil9bGV0IEI9dGhpcy5fY2FjaGUuZ2V0KFIpO2lmKEIhPT12b2lkIDApcmV0dXJuIEI7Zz0oMCxjLm5vcm1hbGl6ZUlkKSh2fHxnKTtjb25zdCBRPWMuZ2V0U2NoZW1hUmVmcy5jYWxsKHRoaXMsUixnKTtyZXR1cm4gQj1uZXcgaS5TY2hlbWFFbnYoe3NjaGVtYTpSLHNjaGVtYUlkOkwsbWV0YTpQLGJhc2VJZDpnLGxvY2FsUmVmczpRfSksdGhpcy5fY2FjaGUuc2V0KEIuc2NoZW1hLEIpLHAmJiFnLnN0YXJ0c1dpdGgoIiMiKSYmKGcmJnRoaXMuX2NoZWNrVW5pcXVlKGcpLHRoaXMucmVmc1tnXT1CKSx1JiZ0aGlzLnZhbGlkYXRlU2NoZW1hKFIsITApLEJ9X2NoZWNrVW5pcXVlKFIpe2lmKHRoaXMuc2NoZW1hc1tSXXx8dGhpcy5yZWZzW1JdKXRocm93IG5ldyBFcnJvcihgc2NoZW1hIHdpdGgga2V5IG9yIGlkICIke1J9IiBhbHJlYWR5IGV4aXN0c2ApfV9jb21waWxlU2NoZW1hRW52KFIpe2lmKFIubWV0YT90aGlzLl9jb21waWxlTWV0YVNjaGVtYShSKTppLmNvbXBpbGVTY2hlbWEuY2FsbCh0aGlzLFIpLCFSLnZhbGlkYXRlKXRocm93IG5ldyBFcnJvcigiYWp2IGltcGxlbWVudGF0aW9uIGVycm9yIik7cmV0dXJuIFIudmFsaWRhdGV9X2NvbXBpbGVNZXRhU2NoZW1hKFIpe2NvbnN0IFA9dGhpcy5vcHRzO3RoaXMub3B0cz10aGlzLl9tZXRhT3B0czt0cnl7aS5jb21waWxlU2NoZW1hLmNhbGwodGhpcyxSKX1maW5hbGx5e3RoaXMub3B0cz1QfX19ZS5kZWZhdWx0PVMsUy5WYWxpZGF0aW9uRXJyb3I9by5kZWZhdWx0LFMuTWlzc2luZ1JlZkVycm9yPXQuZGVmYXVsdDtmdW5jdGlvbiBqKHksUixQLGc9ImVycm9yIil7Zm9yKGNvbnN0IHUgaW4geSl7Y29uc3QgcD11O3AgaW4gUiYmdGhpcy5sb2dnZXJbZ10oYCR7UH06IG9wdGlvbiAke3V9LiAke3lbcF19YCl9fWZ1bmN0aW9uIE4oeSl7cmV0dXJuIHk9KDAsYy5ub3JtYWxpemVJZCkoeSksdGhpcy5zY2hlbWFzW3ldfHx0aGlzLnJlZnNbeV19ZnVuY3Rpb24gSCgpe2NvbnN0IHk9dGhpcy5vcHRzLnNjaGVtYXM7aWYoISF5KWlmKEFycmF5LmlzQXJyYXkoeSkpdGhpcy5hZGRTY2hlbWEoeSk7ZWxzZSBmb3IoY29uc3QgUiBpbiB5KXRoaXMuYWRkU2NoZW1hKHlbUl0sUil9ZnVuY3Rpb24gRygpe2Zvcihjb25zdCB5IGluIHRoaXMub3B0cy5mb3JtYXRzKXtjb25zdCBSPXRoaXMub3B0cy5mb3JtYXRzW3ldO1ImJnRoaXMuYWRkRm9ybWF0KHksUil9fWZ1bmN0aW9uIEYoeSl7aWYoQXJyYXkuaXNBcnJheSh5KSl7dGhpcy5hZGRWb2NhYnVsYXJ5KHkpO3JldHVybn10aGlzLmxvZ2dlci53YXJuKCJrZXl3b3JkcyBvcHRpb24gYXMgbWFwIGlzIGRlcHJlY2F0ZWQsIHBhc3MgYXJyYXkiKTtmb3IoY29uc3QgUiBpbiB5KXtjb25zdCBQPXlbUl07UC5rZXl3b3JkfHwoUC5rZXl3b3JkPVIpLHRoaXMuYWRkS2V5d29yZChQKX19ZnVuY3Rpb24gVygpe2NvbnN0IHk9WSh7fSx0aGlzLm9wdHMpO2Zvcihjb25zdCBSIG9mIHcpZGVsZXRlIHlbUl07cmV0dXJuIHl9Y29uc3QgbWU9e2xvZygpe30sd2Fybigpe30sZXJyb3IoKXt9fTtmdW5jdGlvbiB6KHkpe2lmKHk9PT0hMSlyZXR1cm4gbWU7aWYoeT09PXZvaWQgMClyZXR1cm4gY29uc29sZTtpZih5LmxvZyYmeS53YXJuJiZ5LmVycm9yKXJldHVybiB5O3Rocm93IG5ldyBFcnJvcigibG9nZ2VyIG11c3QgaW1wbGVtZW50IGxvZywgd2FybiBhbmQgZXJyb3IgbWV0aG9kcyIpfWNvbnN0IGllPS9eW2Etel8kXVthLXowLTlfJDotXSokL2k7ZnVuY3Rpb24gcSh5LFIpe2NvbnN0e1JVTEVTOlB9PXRoaXM7aWYoKDAsYS5lYWNoSXRlbSkoeSxnPT57aWYoUC5rZXl3b3Jkc1tnXSl0aHJvdyBuZXcgRXJyb3IoYEtleXdvcmQgJHtnfSBpcyBhbHJlYWR5IGRlZmluZWRgKTtpZighaWUudGVzdChnKSl0aHJvdyBuZXcgRXJyb3IoYEtleXdvcmQgJHtnfSBoYXMgaW52YWxpZCBuYW1lYCl9KSwhIVImJlIuJGRhdGEmJiEoImNvZGUiaW4gUnx8InZhbGlkYXRlImluIFIpKXRocm93IG5ldyBFcnJvcignJGRhdGEga2V5d29yZCBtdXN0IGhhdmUgImNvZGUiIG9yICJ2YWxpZGF0ZSIgZnVuY3Rpb24nKX1mdW5jdGlvbiBFZSh5LFIsUCl7dmFyIGc7Y29uc3QgdT1SPT1udWxsP3ZvaWQgMDpSLnBvc3Q7aWYoUCYmdSl0aHJvdyBuZXcgRXJyb3IoJ2tleXdvcmQgd2l0aCAicG9zdCIgZmxhZyBjYW5ub3QgaGF2ZSAidHlwZSInKTtjb25zdHtSVUxFUzpwfT10aGlzO2xldCB2PXU/cC5wb3N0OnAucnVsZXMuZmluZCgoe3R5cGU6Qn0pPT5CPT09UCk7aWYodnx8KHY9e3R5cGU6UCxydWxlczpbXX0scC5ydWxlcy5wdXNoKHYpKSxwLmtleXdvcmRzW3ldPSEwLCFSKXJldHVybjtjb25zdCBMPXtrZXl3b3JkOnksZGVmaW5pdGlvbjpsZShZKHt9LFIpLHt0eXBlOigwLG0uZ2V0SlNPTlR5cGVzKShSLnR5cGUpLHNjaGVtYVR5cGU6KDAsbS5nZXRKU09OVHlwZXMpKFIuc2NoZW1hVHlwZSl9KX07Ui5iZWZvcmU/T2UuY2FsbCh0aGlzLHYsTCxSLmJlZm9yZSk6di5ydWxlcy5wdXNoKEwpLHAuYWxsW3ldPUwsKGc9Ui5pbXBsZW1lbnRzKT09PW51bGx8fGc9PT12b2lkIDB8fGcuZm9yRWFjaChCPT50aGlzLmFkZEtleXdvcmQoQikpfWZ1bmN0aW9uIE9lKHksUixQKXtjb25zdCBnPXkucnVsZXMuZmluZEluZGV4KHU9PnUua2V5d29yZD09PVApO2c+PTA/eS5ydWxlcy5zcGxpY2UoZywwLFIpOih5LnJ1bGVzLnB1c2goUiksdGhpcy5sb2dnZXIud2FybihgcnVsZSAke1B9IGlzIG5vdCBkZWZpbmVkYCkpfWZ1bmN0aW9uIEhlKHkpe2xldHttZXRhU2NoZW1hOlJ9PXk7UiE9PXZvaWQgMCYmKHkuJGRhdGEmJnRoaXMub3B0cy4kZGF0YSYmKFI9bHIoUikpLHkudmFsaWRhdGVTY2hlbWE9dGhpcy5jb21waWxlKFIsITApKX1jb25zdCBGZT17JHJlZjoiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2Fqdi12YWxpZGF0b3IvYWp2L21hc3Rlci9saWIvcmVmcy9kYXRhLmpzb24jIn07ZnVuY3Rpb24gbHIoeSl7cmV0dXJue2FueU9mOlt5LEZlXX19fShvcyk7dmFyIHJ0PXt9LGtuPXt9LE1uPXt9O09iamVjdC5kZWZpbmVQcm9wZXJ0eShNbiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksTW4uY2FsbFJlZj1Nbi5nZXRWYWxpZGF0ZT12b2lkIDA7Y29uc3Qgal89TG4seXM9b2UsQ2U9X2Usc3I9TWUsTHM9UGUsY289QWUseF89e2tleXdvcmQ6IiRyZWYiLHNjaGVtYVR5cGU6InN0cmluZyIsY29kZShlKXtjb25zdHtnZW46bixzY2hlbWE6cixpdDpvfT1lLHtiYXNlSWQ6dCxzY2hlbWFFbnY6cyx2YWxpZGF0ZU5hbWU6aSxvcHRzOmwsc2VsZjpjfT1vLHtyb290Om19PXM7aWYoKHI9PT0iIyJ8fHI9PT0iIy8iKSYmdD09PW0uYmFzZUlkKXJldHVybiBoKCk7Y29uc3QgYT1Mcy5yZXNvbHZlUmVmLmNhbGwoYyxtLHQscik7aWYoYT09PXZvaWQgMCl0aHJvdyBuZXcgal8uZGVmYXVsdChvLm9wdHMudXJpUmVzb2x2ZXIsdCxyKTtpZihhIGluc3RhbmNlb2YgTHMuU2NoZW1hRW52KXJldHVybiBPKGEpO3JldHVybiBEKGEpO2Z1bmN0aW9uIGgoKXtpZihzPT09bSlyZXR1cm4gaG8oZSxpLHMscy4kYXN5bmMpO2NvbnN0IHc9bi5zY29wZVZhbHVlKCJyb290Iix7cmVmOm19KTtyZXR1cm4gaG8oZSwoMCxDZS5fKWAke3d9LnZhbGlkYXRlYCxtLG0uJGFzeW5jKX1mdW5jdGlvbiBPKHcpe2NvbnN0IEM9QnMoZSx3KTtobyhlLEMsdyx3LiRhc3luYyl9ZnVuY3Rpb24gRCh3KXtjb25zdCBDPW4uc2NvcGVWYWx1ZSgic2NoZW1hIixsLmNvZGUuc291cmNlPT09ITA/e3JlZjp3LGNvZGU6KDAsQ2Uuc3RyaW5naWZ5KSh3KX06e3JlZjp3fSksVD1uLm5hbWUoInZhbGlkIiksZj1lLnN1YnNjaGVtYSh7c2NoZW1hOncsZGF0YVR5cGVzOltdLHNjaGVtYVBhdGg6Q2UubmlsLHRvcFNjaGVtYVJlZjpDLGVyclNjaGVtYVBhdGg6cn0sVCk7ZS5tZXJnZUV2YWx1YXRlZChmKSxlLm9rKFQpfX19O2Z1bmN0aW9uIEJzKGUsbil7Y29uc3R7Z2VuOnJ9PWU7cmV0dXJuIG4udmFsaWRhdGU/ci5zY29wZVZhbHVlKCJ2YWxpZGF0ZSIse3JlZjpuLnZhbGlkYXRlfSk6KDAsQ2UuXylgJHtyLnNjb3BlVmFsdWUoIndyYXBwZXIiLHtyZWY6bn0pfS52YWxpZGF0ZWB9TW4uZ2V0VmFsaWRhdGU9QnM7ZnVuY3Rpb24gaG8oZSxuLHIsbyl7Y29uc3R7Z2VuOnQsaXQ6c309ZSx7YWxsRXJyb3JzOmksc2NoZW1hRW52Omwsb3B0czpjfT1zLG09Yy5wYXNzQ29udGV4dD9zci5kZWZhdWx0LnRoaXM6Q2UubmlsO28/YSgpOmgoKTtmdW5jdGlvbiBhKCl7aWYoIWwuJGFzeW5jKXRocm93IG5ldyBFcnJvcigiYXN5bmMgc2NoZW1hIHJlZmVyZW5jZWQgYnkgc3luYyBzY2hlbWEiKTtjb25zdCB3PXQubGV0KCJ2YWxpZCIpO3QudHJ5KCgpPT57dC5jb2RlKCgwLENlLl8pYGF3YWl0ICR7KDAseXMuY2FsbFZhbGlkYXRlQ29kZSkoZSxuLG0pfWApLEQobiksaXx8dC5hc3NpZ24odywhMCl9LEM9Pnt0LmlmKCgwLENlLl8pYCEoJHtDfSBpbnN0YW5jZW9mICR7cy5WYWxpZGF0aW9uRXJyb3J9KWAsKCk9PnQudGhyb3coQykpLE8oQyksaXx8dC5hc3NpZ24odywhMSl9KSxlLm9rKHcpfWZ1bmN0aW9uIGgoKXtlLnJlc3VsdCgoMCx5cy5jYWxsVmFsaWRhdGVDb2RlKShlLG4sbSksKCk9PkQobiksKCk9Pk8obikpfWZ1bmN0aW9uIE8odyl7Y29uc3QgQz0oMCxDZS5fKWAke3d9LmVycm9yc2A7dC5hc3NpZ24oc3IuZGVmYXVsdC52RXJyb3JzLCgwLENlLl8pYCR7c3IuZGVmYXVsdC52RXJyb3JzfSA9PT0gbnVsbCA/ICR7Q30gOiAke3NyLmRlZmF1bHQudkVycm9yc30uY29uY2F0KCR7Q30pYCksdC5hc3NpZ24oc3IuZGVmYXVsdC5lcnJvcnMsKDAsQ2UuXylgJHtzci5kZWZhdWx0LnZFcnJvcnN9Lmxlbmd0aGApfWZ1bmN0aW9uIEQodyl7dmFyIEM7aWYoIXMub3B0cy51bmV2YWx1YXRlZClyZXR1cm47Y29uc3QgVD0oQz1yPT1udWxsP3ZvaWQgMDpyLnZhbGlkYXRlKT09PW51bGx8fEM9PT12b2lkIDA/dm9pZCAwOkMuZXZhbHVhdGVkO2lmKHMucHJvcHMhPT0hMClpZihUJiYhVC5keW5hbWljUHJvcHMpVC5wcm9wcyE9PXZvaWQgMCYmKHMucHJvcHM9Y28ubWVyZ2VFdmFsdWF0ZWQucHJvcHModCxULnByb3BzLHMucHJvcHMpKTtlbHNle2NvbnN0IGY9dC52YXIoInByb3BzIiwoMCxDZS5fKWAke3d9LmV2YWx1YXRlZC5wcm9wc2ApO3MucHJvcHM9Y28ubWVyZ2VFdmFsdWF0ZWQucHJvcHModCxmLHMucHJvcHMsQ2UuTmFtZSl9aWYocy5pdGVtcyE9PSEwKWlmKFQmJiFULmR5bmFtaWNJdGVtcylULml0ZW1zIT09dm9pZCAwJiYocy5pdGVtcz1jby5tZXJnZUV2YWx1YXRlZC5pdGVtcyh0LFQuaXRlbXMscy5pdGVtcykpO2Vsc2V7Y29uc3QgZj10LnZhcigiaXRlbXMiLCgwLENlLl8pYCR7d30uZXZhbHVhdGVkLml0ZW1zYCk7cy5pdGVtcz1jby5tZXJnZUV2YWx1YXRlZC5pdGVtcyh0LGYscy5pdGVtcyxDZS5OYW1lKX19fU1uLmNhbGxSZWY9aG8sTW4uZGVmYXVsdD14Xzt2YXIgWGU9e307T2JqZWN0LmRlZmluZVByb3BlcnR5KFhlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxYZS5jaGVja01ldGFkYXRhPXZvaWQgMDtjb25zdCBGXz1BZSxWXz17a2V5d29yZDoibWV0YWRhdGEiLHNjaGVtYVR5cGU6Im9iamVjdCIsY29kZShlKXtrcyhlKTtjb25zdHtnZW46bixzY2hlbWE6cixpdDpvfT1lO2lmKCgwLEZfLmFsd2F5c1ZhbGlkU2NoZW1hKShvLHIpKXJldHVybjtjb25zdCB0PW4ubmFtZSgidmFsaWQiKTtlLnN1YnNjaGVtYSh7a2V5d29yZDoibWV0YWRhdGEiLGp0ZE1ldGFkYXRhOiEwfSx0KSxlLm9rKHQpfX07ZnVuY3Rpb24ga3Moe2l0OmUsa2V5d29yZDpufSxyKXtpZihlLmp0ZE1ldGFkYXRhIT09cil0aHJvdyBuZXcgRXJyb3IoYEpURDogIiR7bn0iIGNhbm5vdCBiZSB1c2VkIGluIHRoaXMgc2NoZW1hIGxvY2F0aW9uYCl9WGUuY2hlY2tNZXRhZGF0YT1rcyxYZS5kZWZhdWx0PVZfLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShrbiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksa24uaGFzUmVmPXZvaWQgMDtjb25zdCBNcz1QZSxicj1fZSxLXz1MbixYcz1NZSwkcz1NbixXXz1YZSxZXz17a2V5d29yZDoicmVmIixzY2hlbWFUeXBlOiJzdHJpbmciLGNvZGUoZSl7KDAsV18uY2hlY2tNZXRhZGF0YSkoZSk7Y29uc3R7Z2VuOm4sZGF0YTpyLHNjaGVtYTpvLHBhcmVudFNjaGVtYTp0LGl0OnN9PWUse3NjaGVtYUVudjp7cm9vdDppfX09cyxsPW4ubmFtZSgidmFsaWQiKTt0Lm51bGxhYmxlPyhuLnZhcihsLCgwLGJyLl8pYCR7cn0gPT09IG51bGxgKSxuLmlmKCgwLGJyLm5vdCkobCksYykpOihuLnZhcihsLCExKSxjKCkpLGUub2sobCk7ZnVuY3Rpb24gYygpe3ZhciBoO2NvbnN0IE89KGg9aS5zY2hlbWEuZGVmaW5pdGlvbnMpPT09bnVsbHx8aD09PXZvaWQgMD92b2lkIDA6aFtvXTtpZighTyl0aHJvdyBuZXcgS18uZGVmYXVsdChzLm9wdHMudXJpUmVzb2x2ZXIsIiIsbyxgTm8gZGVmaW5pdGlvbiAke299YCk7b3QoTyl8fCFzLm9wdHMuaW5saW5lUmVmcz9tKE8pOmEoTyl9ZnVuY3Rpb24gbShoKXtjb25zdCBPPU1zLmNvbXBpbGVTY2hlbWEuY2FsbChzLnNlbGYsbmV3IE1zLlNjaGVtYUVudih7c2NoZW1hOmgscm9vdDppLHNjaGVtYVBhdGg6YC9kZWZpbml0aW9ucy8ke299YH0pKSxEPSgwLCRzLmdldFZhbGlkYXRlKShlLE8pLHc9bi5jb25zdCgiX2VycnMiLFhzLmRlZmF1bHQuZXJyb3JzKTsoMCwkcy5jYWxsUmVmKShlLEQsTyxPLiRhc3luYyksbi5hc3NpZ24obCwoMCxici5fKWAke3d9ID09PSAke1hzLmRlZmF1bHQuZXJyb3JzfWApfWZ1bmN0aW9uIGEoaCl7Y29uc3QgTz1uLnNjb3BlVmFsdWUoInNjaGVtYSIscy5vcHRzLmNvZGUuc291cmNlPT09ITA/e3JlZjpoLGNvZGU6KDAsYnIuc3RyaW5naWZ5KShoKX06e3JlZjpofSk7ZS5zdWJzY2hlbWEoe3NjaGVtYTpoLGRhdGFUeXBlczpbXSxzY2hlbWFQYXRoOmJyLm5pbCx0b3BTY2hlbWFSZWY6TyxlcnJTY2hlbWFQYXRoOmAvZGVmaW5pdGlvbnMvJHtvfWB9LGwpfX19O2Z1bmN0aW9uIG90KGUpe2Zvcihjb25zdCBuIGluIGUpe2xldCByO2lmKG49PT0icmVmInx8dHlwZW9mKHI9ZVtuXSk9PSJvYmplY3QiJiZvdChyKSlyZXR1cm4hMH1yZXR1cm4hMX1rbi5oYXNSZWY9b3Qsa24uZGVmYXVsdD1ZXzt2YXIgdHQ9e30sbW89e307T2JqZWN0LmRlZmluZVByb3BlcnR5KG1vLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTtjb25zdCBKXz0vdHxccy9pLHpfPS9eKFxkXGRcZFxkKS0oXGRcZCktKFxkXGQpJC8scV89L14oXGRcZCk6KFxkXGQpOihcZFxkKSg/OlwuXGQrKT8oPzp6fChbKy1dXGRcZCkoPzo6PyhcZFxkKSk/KSQvaSxRXz1bMCwzMSwyOCwzMSwzMCwzMSwzMCwzMSwzMSwzMCwzMSwzMCwzMV07ZnVuY3Rpb24ganMoZSxuKXtjb25zdCByPWUuc3BsaXQoSl8pO3JldHVybiByLmxlbmd0aD09PTImJnhzKHJbMF0pJiZaXyhyWzFdKXx8biYmci5sZW5ndGg9PT0xJiZ4cyhyWzBdKX1tby5kZWZhdWx0PWpzO2Z1bmN0aW9uIHhzKGUpe2NvbnN0IG49el8uZXhlYyhlKTtpZighbilyZXR1cm4hMTtjb25zdCByPStuWzFdLG89K25bMl0sdD0rblszXTtyZXR1cm4gbz49MSYmbzw9MTImJnQ+PTEmJih0PD1RX1tvXXx8bz09PTImJnQ9PT0yOSYmKHIlMTAwPT09MD9yJTQwMD09PTA6ciU0PT09MCkpfWZ1bmN0aW9uIFpfKGUpe2NvbnN0IG49cV8uZXhlYyhlKTtpZighbilyZXR1cm4hMTtjb25zdCByPStuWzFdLG89K25bMl0sdD0rblszXSxzPSsobls0XXx8MCksaT0rKG5bNV18fDApO3JldHVybiByPD0yMyYmbzw9NTkmJnQ8PTU5fHxyLXM9PT0yMyYmby1pPT09NTkmJnQ9PT02MH1qcy5jb2RlPSdyZXF1aXJlKCJhanYvZGlzdC9ydW50aW1lL3RpbWVzdGFtcCIpLmRlZmF1bHQnO3ZhciAkZT17fTtPYmplY3QuZGVmaW5lUHJvcGVydHkoJGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLCRlLnR5cGVFcnJvclBhcmFtcz0kZS50eXBlRXJyb3JNZXNzYWdlPSRlLnR5cGVFcnJvcj12b2lkIDA7Y29uc3QgZWw9X2U7ZnVuY3Rpb24gbmwoZSl7cmV0dXJue21lc3NhZ2U6bj0+RnMobixlKSxwYXJhbXM6bj0+VnMobixlKX19JGUudHlwZUVycm9yPW5sO2Z1bmN0aW9uIEZzKHtwYXJlbnRTY2hlbWE6ZX0sbil7cmV0dXJuIGUhPW51bGwmJmUubnVsbGFibGU/YG11c3QgYmUgJHtufSBvciBudWxsYDpgbXVzdCBiZSAke259YH0kZS50eXBlRXJyb3JNZXNzYWdlPUZzO2Z1bmN0aW9uIFZzKHtwYXJlbnRTY2hlbWE6ZX0sbil7cmV0dXJuKDAsZWwuXylge3R5cGU6ICR7bn0sIG51bGxhYmxlOiAkeyEhKGUhPW51bGwmJmUubnVsbGFibGUpfX1gfSRlLnR5cGVFcnJvclBhcmFtcz1WcyxmdW5jdGlvbihlKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksZS5pbnRSYW5nZT12b2lkIDA7Y29uc3Qgbj1fZSxyPW1vLG89QWUsdD1YZSxzPSRlO2UuaW50UmFuZ2U9e2ludDg6Wy0xMjgsMTI3LDNdLHVpbnQ4OlswLDI1NSwzXSxpbnQxNjpbLTMyNzY4LDMyNzY3LDVdLHVpbnQxNjpbMCw2NTUzNSw1XSxpbnQzMjpbLTIxNDc0ODM2NDgsMjE0NzQ4MzY0NywxMF0sdWludDMyOlswLDQyOTQ5NjcyOTUsMTBdfTtjb25zdCBpPXttZXNzYWdlOm09PigwLHMudHlwZUVycm9yTWVzc2FnZSkobSxtLnNjaGVtYSkscGFyYW1zOm09PigwLHMudHlwZUVycm9yUGFyYW1zKShtLG0uc2NoZW1hKX07ZnVuY3Rpb24gbChtKXtjb25zdHtnZW46YSxkYXRhOmgsaXQ6T309bSx7dGltZXN0YW1wOkQsYWxsb3dEYXRlOnd9PU8ub3B0cztpZihEPT09ImRhdGUiKXJldHVybigwLG4uXylgJHtofSBpbnN0YW5jZW9mIERhdGUgYDtjb25zdCBDPSgwLG8udXNlRnVuYykoYSxyLmRlZmF1bHQpLFQ9dz8oMCxuLl8pYCwgdHJ1ZWA6bi5uaWwsZj0oMCxuLl8pYHR5cGVvZiAke2h9ID09ICJzdHJpbmciICYmICR7Q30oJHtofSR7VH0pYDtyZXR1cm4gRD09PSJzdHJpbmciP2Y6KDAsbi5vcikoKDAsbi5fKWAke2h9IGluc3RhbmNlb2YgRGF0ZWAsZil9Y29uc3QgYz17a2V5d29yZDoidHlwZSIsc2NoZW1hVHlwZToic3RyaW5nIixlcnJvcjppLGNvZGUobSl7KDAsdC5jaGVja01ldGFkYXRhKShtKTtjb25zdHtkYXRhOmEsc2NoZW1hOmgscGFyZW50U2NoZW1hOk8saXQ6RH09bTtsZXQgdztzd2l0Y2goaCl7Y2FzZSJib29sZWFuIjpjYXNlInN0cmluZyI6dz0oMCxuLl8pYHR5cGVvZiAke2F9ID09ICR7aH1gO2JyZWFrO2Nhc2UidGltZXN0YW1wIjp7dz1sKG0pO2JyZWFrfWNhc2UiZmxvYXQzMiI6Y2FzZSJmbG9hdDY0Ijp3PSgwLG4uXylgdHlwZW9mICR7YX0gPT0gIm51bWJlciJgO2JyZWFrO2RlZmF1bHQ6e2NvbnN0IEM9aDtpZih3PSgwLG4uXylgdHlwZW9mICR7YX0gPT0gIm51bWJlciIgJiYgaXNGaW5pdGUoJHthfSkgJiYgISgke2F9ICUgMSlgLCFELm9wdHMuaW50MzJyYW5nZSYmKEM9PT0iaW50MzIifHxDPT09InVpbnQzMiIpKUM9PT0idWludDMyIiYmKHc9KDAsbi5fKWAke3d9ICYmICR7YX0gPj0gMGApO2Vsc2V7Y29uc3RbVCxmXT1lLmludFJhbmdlW0NdO3c9KDAsbi5fKWAke3d9ICYmICR7YX0gPj0gJHtUfSAmJiAke2F9IDw9ICR7Zn1gfX19bS5wYXNzKE8ubnVsbGFibGU/KDAsbi5vcikoKDAsbi5fKWAke2F9ID09PSBudWxsYCx3KTp3KX19O2UuZGVmYXVsdD1jfSh0dCk7dmFyIHN0PXt9LFplPXt9O09iamVjdC5kZWZpbmVQcm9wZXJ0eShaZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksWmUuY2hlY2tOdWxsYWJsZU9iamVjdD1aZS5jaGVja051bGxhYmxlPXZvaWQgMDtjb25zdCBwbz1fZTtmdW5jdGlvbiBLcyh7Z2VuOmUsZGF0YTpuLHBhcmVudFNjaGVtYTpyfSxvPXBvLm5pbCl7Y29uc3QgdD1lLm5hbWUoInZhbGlkIik7cmV0dXJuIHIubnVsbGFibGU/KGUubGV0KHQsKDAscG8uXylgJHtufSA9PT0gbnVsbGApLG89KDAscG8ubm90KSh0KSk6ZS5sZXQodCwhMSksW3Qsb119WmUuY2hlY2tOdWxsYWJsZT1LcztmdW5jdGlvbiBybChlLG4pe2NvbnN0W3Isb109S3MoZSxuKTtyZXR1cm5bciwoMCxwby5fKWAke299ICYmIHR5cGVvZiAke2UuZGF0YX0gPT0gIm9iamVjdCIgJiYgIUFycmF5LmlzQXJyYXkoJHtlLmRhdGF9KWBdfVplLmNoZWNrTnVsbGFibGVPYmplY3Q9cmwsT2JqZWN0LmRlZmluZVByb3BlcnR5KHN0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTtjb25zdCBJbj1fZSxvbD1YZSx0bD1aZSxzbD17a2V5d29yZDoiZW51bSIsc2NoZW1hVHlwZToiYXJyYXkiLGVycm9yOnttZXNzYWdlOiJtdXN0IGJlIGVxdWFsIHRvIG9uZSBvZiB0aGUgYWxsb3dlZCB2YWx1ZXMiLHBhcmFtczooe3NjaGVtYUNvZGU6ZX0pPT4oMCxJbi5fKWB7YWxsb3dlZFZhbHVlczogJHtlfX1gfSxjb2RlKGUpeygwLG9sLmNoZWNrTWV0YWRhdGEpKGUpO2NvbnN0e2dlbjpuLGRhdGE6cixzY2hlbWE6byxzY2hlbWFWYWx1ZTp0LHBhcmVudFNjaGVtYTpzLGl0Oml9PWU7aWYoby5sZW5ndGg9PT0wKXRocm93IG5ldyBFcnJvcigiZW51bSBtdXN0IGhhdmUgbm9uLWVtcHR5IGFycmF5Iik7aWYoby5sZW5ndGghPT1uZXcgU2V0KG8pLnNpemUpdGhyb3cgbmV3IEVycm9yKCJlbnVtIGl0ZW1zIG11c3QgYmUgdW5pcXVlIik7bGV0IGw7Y29uc3QgYz0oMCxJbi5fKWB0eXBlb2YgJHtyfSA9PSAic3RyaW5nImA7aWYoby5sZW5ndGg+PWkub3B0cy5sb29wRW51bSl7bGV0IGE7W2wsYV09KDAsdGwuY2hlY2tOdWxsYWJsZSkoZSxjKSxuLmlmKGEsbSl9ZWxzZXtpZighQXJyYXkuaXNBcnJheShvKSl0aHJvdyBuZXcgRXJyb3IoImFqdiBpbXBsZW1lbnRhdGlvbiBlcnJvciIpO2w9KDAsSW4uYW5kKShjLCgwLEluLm9yKSguLi5vLm1hcChhPT4oMCxJbi5fKWAke3J9ID09PSAke2F9YCkpKSxzLm51bGxhYmxlJiYobD0oMCxJbi5vcikoKDAsSW4uXylgJHtyfSA9PT0gbnVsbGAsbCkpfWUucGFzcyhsKTtmdW5jdGlvbiBtKCl7bi5mb3JPZigidiIsdCxhPT5uLmlmKCgwLEluLl8pYCR7bH0gPSAke3J9ID09PSAke2F9YCwoKT0+bi5icmVhaygpKSl9fX07c3QuZGVmYXVsdD1zbDt2YXIgaXQ9e307T2JqZWN0LmRlZmluZVByb3BlcnR5KGl0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTtjb25zdCBpbD1BZSxhbD1vZSxXcz1fZSx1bD1YZSxfbD1aZSxsbD17a2V5d29yZDoiZWxlbWVudHMiLHNjaGVtYVR5cGU6Im9iamVjdCIsZXJyb3I6KDAsJGUudHlwZUVycm9yKSgiYXJyYXkiKSxjb2RlKGUpeygwLHVsLmNoZWNrTWV0YWRhdGEpKGUpO2NvbnN0e2dlbjpuLGRhdGE6cixzY2hlbWE6byxpdDp0fT1lO2lmKCgwLGlsLmFsd2F5c1ZhbGlkU2NoZW1hKSh0LG8pKXJldHVybjtjb25zdFtzXT0oMCxfbC5jaGVja051bGxhYmxlKShlKTtuLmlmKCgwLFdzLm5vdCkocyksKCk9Pm4uaWYoKDAsV3MuXylgQXJyYXkuaXNBcnJheSgke3J9KWAsKCk9Pm4uYXNzaWduKHMsKDAsYWwudmFsaWRhdGVBcnJheSkoZSkpLCgpPT5lLmVycm9yKCkpKSxlLm9rKHMpfX07aXQuZGVmYXVsdD1sbDt2YXIgYXQ9e307KGZ1bmN0aW9uKGUpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxlLnZhbGlkYXRlUHJvcGVydGllcz1lLmVycm9yPXZvaWQgMDtjb25zdCBuPW9lLHI9QWUsbz1fZSx0PVhlLHM9WmUsaT0kZTt2YXIgbDsoZnVuY3Rpb24oYSl7YS5BZGRpdGlvbmFsPSJhZGRpdGlvbmFsIixhLk1pc3Npbmc9Im1pc3NpbmcifSkobHx8KGw9e30pKSxlLmVycm9yPXttZXNzYWdlOmE9Pntjb25zdHtwYXJhbXM6aH09YTtyZXR1cm4gaC5wcm9wRXJyb3I/aC5wcm9wRXJyb3I9PT1sLkFkZGl0aW9uYWw/Im11c3QgTk9UIGhhdmUgYWRkaXRpb25hbCBwcm9wZXJ0aWVzIjpgbXVzdCBoYXZlIHByb3BlcnR5ICcke2gubWlzc2luZ1Byb3BlcnR5fSdgOigwLGkudHlwZUVycm9yTWVzc2FnZSkoYSwib2JqZWN0Iil9LHBhcmFtczphPT57Y29uc3R7cGFyYW1zOmh9PWE7cmV0dXJuIGgucHJvcEVycm9yP2gucHJvcEVycm9yPT09bC5BZGRpdGlvbmFsPygwLG8uXylge2Vycm9yOiAke2gucHJvcEVycm9yfSwgYWRkaXRpb25hbFByb3BlcnR5OiAke2guYWRkaXRpb25hbFByb3BlcnR5fX1gOigwLG8uXylge2Vycm9yOiAke2gucHJvcEVycm9yfSwgbWlzc2luZ1Byb3BlcnR5OiAke2gubWlzc2luZ1Byb3BlcnR5fX1gOigwLGkudHlwZUVycm9yUGFyYW1zKShhLCJvYmplY3QiKX19O2NvbnN0IGM9e2tleXdvcmQ6InByb3BlcnRpZXMiLHNjaGVtYVR5cGU6Im9iamVjdCIsZXJyb3I6ZS5lcnJvcixjb2RlOm19O2Z1bmN0aW9uIG0oYSl7KDAsdC5jaGVja01ldGFkYXRhKShhKTtjb25zdHtnZW46aCxkYXRhOk8scGFyZW50U2NoZW1hOkQsaXQ6d309YSx7YWRkaXRpb25hbFByb3BlcnRpZXM6QyxudWxsYWJsZTpUfT1EO2lmKHcuanRkRGlzY3JpbWluYXRvciYmVCl0aHJvdyBuZXcgRXJyb3IoIkpURDogbnVsbGFibGUgaW5zaWRlIGRpc2NyaW1pbmF0b3IgbWFwcGluZyIpO2lmKEgoKSl0aHJvdyBuZXcgRXJyb3IoIkpURDogcHJvcGVydGllcyBhbmQgb3B0aW9uYWxQcm9wZXJ0aWVzIGhhdmUgY29tbW9uIG1lbWJlcnMiKTtjb25zdFtmLEFdPUcoInByb3BlcnRpZXMiKSxbVSxTXT1HKCJvcHRpb25hbFByb3BlcnRpZXMiKTtpZihBLmxlbmd0aD09PTAmJlMubGVuZ3RoPT09MCYmQylyZXR1cm47Y29uc3RbaixOXT13Lmp0ZERpc2NyaW1pbmF0b3I9PT12b2lkIDA/KDAscy5jaGVja051bGxhYmxlT2JqZWN0KShhLE8pOltoLmxldCgidmFsaWQiLCExKSwhMF07aC5pZihOLCgpPT5oLmFzc2lnbihqLCEwKS5ibG9jaygoKT0+e0YoQSwicHJvcGVydGllcyIsITApLEYoUywib3B0aW9uYWxQcm9wZXJ0aWVzIiksQ3x8bWUoKX0pKSxhLnBhc3Moaik7ZnVuY3Rpb24gSCgpe2NvbnN0IGllPUQucHJvcGVydGllcyxxPUQub3B0aW9uYWxQcm9wZXJ0aWVzO2lmKCEoaWUmJnEpKXJldHVybiExO2Zvcihjb25zdCBFZSBpbiBpZSlpZihPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocSxFZSkpcmV0dXJuITA7cmV0dXJuITF9ZnVuY3Rpb24gRyhpZSl7Y29uc3QgcT1EW2llXSxFZT1xPygwLG4uYWxsU2NoZW1hUHJvcGVydGllcykocSk6W107aWYody5qdGREaXNjcmltaW5hdG9yJiZFZS5zb21lKEhlPT5IZT09PXcuanRkRGlzY3JpbWluYXRvcikpdGhyb3cgbmV3IEVycm9yKGBKVEQ6IGRpc2NyaW1pbmF0b3IgdGFnIHVzZWQgaW4gJHtpZX1gKTtjb25zdCBPZT1FZS5maWx0ZXIoSGU9PiEoMCxyLmFsd2F5c1ZhbGlkU2NoZW1hKSh3LHFbSGVdKSk7cmV0dXJuW0VlLE9lXX1mdW5jdGlvbiBGKGllLHEsRWUpe2NvbnN0IE9lPWgudmFyKCJ2YWxpZCIpO2Zvcihjb25zdCBGZSBvZiBpZSloLmlmKCgwLG4ucHJvcGVydHlJbkRhdGEpKGgsTyxGZSx3Lm9wdHMub3duUHJvcGVydGllcyksKCk9PlcoRmUscSxPZSksKCk9PkhlKEZlKSksYS5vayhPZSk7ZnVuY3Rpb24gSGUoRmUpe0VlPyhoLmFzc2lnbihPZSwhMSksYS5lcnJvcighMSx7cHJvcEVycm9yOmwuTWlzc2luZyxtaXNzaW5nUHJvcGVydHk6RmV9LHtzY2hlbWFQYXRoOkZlfSkpOmguYXNzaWduKE9lLCEwKX19ZnVuY3Rpb24gVyhpZSxxLEVlKXthLnN1YnNjaGVtYSh7a2V5d29yZDpxLHNjaGVtYVByb3A6aWUsZGF0YVByb3A6aWV9LEVlKX1mdW5jdGlvbiBtZSgpe2guZm9ySW4oImtleSIsTyxpZT0+e2NvbnN0IHE9dy5qdGREaXNjcmltaW5hdG9yPT09dm9pZCAwP2Y6W3cuanRkRGlzY3JpbWluYXRvcl0uY29uY2F0KGYpLEVlPXooaWUscSwicHJvcGVydGllcyIpLE9lPXooaWUsVSwib3B0aW9uYWxQcm9wZXJ0aWVzIiksSGU9RWU9PT0hMD9PZTpPZT09PSEwP0VlOigwLG8uYW5kKShFZSxPZSk7aC5pZihIZSwoKT0+e3cub3B0cy5yZW1vdmVBZGRpdGlvbmFsP2guY29kZSgoMCxvLl8pYGRlbGV0ZSAke099WyR7aWV9XWApOihhLmVycm9yKCExLHtwcm9wRXJyb3I6bC5BZGRpdGlvbmFsLGFkZGl0aW9uYWxQcm9wZXJ0eTppZX0se2luc3RhbmNlUGF0aDppZSxwYXJlbnRTY2hlbWE6ITB9KSx3Lm9wdHMuYWxsRXJyb3JzfHxoLmJyZWFrKCkpfSl9KX1mdW5jdGlvbiB6KGllLHEsRWUpe2xldCBPZTtpZihxLmxlbmd0aD44KXtjb25zdCBIZT0oMCxyLnNjaGVtYVJlZk9yVmFsKSh3LERbRWVdLEVlKTtPZT0oMCxvLm5vdCkoKDAsbi5pc093blByb3BlcnR5KShoLEhlLGllKSl9ZWxzZSBxLmxlbmd0aD9PZT0oMCxvLmFuZCkoLi4ucS5tYXAoSGU9PigwLG8uXylgJHtpZX0gIT09ICR7SGV9YCkpOk9lPSEwO3JldHVybiBPZX19ZS52YWxpZGF0ZVByb3BlcnRpZXM9bSxlLmRlZmF1bHQ9Y30pKGF0KTt2YXIgdXQ9e307T2JqZWN0LmRlZmluZVByb3BlcnR5KHV0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTtjb25zdCBZcz1hdCxjbD17a2V5d29yZDoib3B0aW9uYWxQcm9wZXJ0aWVzIixzY2hlbWFUeXBlOiJvYmplY3QiLGVycm9yOllzLmVycm9yLGNvZGUoZSl7ZS5wYXJlbnRTY2hlbWEucHJvcGVydGllc3x8KDAsWXMudmFsaWRhdGVQcm9wZXJ0aWVzKShlKX19O3V0LmRlZmF1bHQ9Y2w7dmFyIF90PXt9LEpzPXt9OyhmdW5jdGlvbihlKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksZS5EaXNjckVycm9yPXZvaWQgMCxmdW5jdGlvbihuKXtuLlRhZz0idGFnIixuLk1hcHBpbmc9Im1hcHBpbmcifShlLkRpc2NyRXJyb3J8fChlLkRpc2NyRXJyb3I9e30pKX0pKEpzKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoX3QsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO2NvbnN0IFhuPV9lLGRsPVhlLGhsPVplLHpzPSRlLEVvPUpzLG1sPXtrZXl3b3JkOiJkaXNjcmltaW5hdG9yIixzY2hlbWFUeXBlOiJzdHJpbmciLGltcGxlbWVudHM6WyJtYXBwaW5nIl0sZXJyb3I6e21lc3NhZ2U6ZT0+e2NvbnN0e3NjaGVtYTpuLHBhcmFtczpyfT1lO3JldHVybiByLmRpc2NyRXJyb3I/ci5kaXNjckVycm9yPT09RW8uRGlzY3JFcnJvci5UYWc/YHRhZyAiJHtufSIgbXVzdCBiZSBzdHJpbmdgOmB2YWx1ZSBvZiB0YWcgIiR7bn0iIG11c3QgYmUgaW4gbWFwcGluZ2A6KDAsenMudHlwZUVycm9yTWVzc2FnZSkoZSwib2JqZWN0Iil9LHBhcmFtczplPT57Y29uc3R7c2NoZW1hOm4scGFyYW1zOnJ9PWU7cmV0dXJuIHIuZGlzY3JFcnJvcj8oMCxYbi5fKWB7ZXJyb3I6ICR7ci5kaXNjckVycm9yfSwgdGFnOiAke259LCB0YWdWYWx1ZTogJHtyLnRhZ319YDooMCx6cy50eXBlRXJyb3JQYXJhbXMpKGUsIm9iamVjdCIpfX0sY29kZShlKXsoMCxkbC5jaGVja01ldGFkYXRhKShlKTtjb25zdHtnZW46bixkYXRhOnIsc2NoZW1hOm8scGFyZW50U2NoZW1hOnR9PWUsW3MsaV09KDAsaGwuY2hlY2tOdWxsYWJsZU9iamVjdCkoZSxyKTtuLmlmKGkpLGwoKSxuLmVsc2VJZigoMCxYbi5ub3QpKHMpKSxlLmVycm9yKCksbi5lbmRJZigpLGUub2socyk7ZnVuY3Rpb24gbCgpe2NvbnN0IGE9bi5jb25zdCgidGFnIiwoMCxYbi5fKWAke3J9JHsoMCxYbi5nZXRQcm9wZXJ0eSkobyl9YCk7bi5pZigoMCxYbi5fKWAke2F9ID09PSB1bmRlZmluZWRgKSxlLmVycm9yKCExLHtkaXNjckVycm9yOkVvLkRpc2NyRXJyb3IuVGFnLHRhZzphfSksbi5lbHNlSWYoKDAsWG4uXylgdHlwZW9mICR7YX0gPT0gInN0cmluZyJgKSxjKGEpLG4uZWxzZSgpLGUuZXJyb3IoITEse2Rpc2NyRXJyb3I6RW8uRGlzY3JFcnJvci5UYWcsdGFnOmF9LHtpbnN0YW5jZVBhdGg6b30pLG4uZW5kSWYoKX1mdW5jdGlvbiBjKGEpe24uaWYoITEpO2Zvcihjb25zdCBoIGluIHQubWFwcGluZyluLmVsc2VJZigoMCxYbi5fKWAke2F9ID09PSAke2h9YCksbi5hc3NpZ24ocyxtKGgpKTtuLmVsc2UoKSxlLmVycm9yKCExLHtkaXNjckVycm9yOkVvLkRpc2NyRXJyb3IuTWFwcGluZyx0YWc6YX0se2luc3RhbmNlUGF0aDpvLHNjaGVtYVBhdGg6Im1hcHBpbmciLHBhcmVudFNjaGVtYTohMH0pLG4uZW5kSWYoKX1mdW5jdGlvbiBtKGEpe2NvbnN0IGg9bi5uYW1lKCJ2YWxpZCIpO3JldHVybiBlLnN1YnNjaGVtYSh7a2V5d29yZDoibWFwcGluZyIsc2NoZW1hUHJvcDphLGp0ZERpc2NyaW1pbmF0b3I6b30saCksaH19fTtfdC5kZWZhdWx0PW1sO3ZhciBsdD17fTtPYmplY3QuZGVmaW5lUHJvcGVydHkobHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO2NvbnN0IHFzPUFlLFFzPV9lLHBsPVhlLEVsPVplLGZsPXtrZXl3b3JkOiJ2YWx1ZXMiLHNjaGVtYVR5cGU6Im9iamVjdCIsZXJyb3I6KDAsJGUudHlwZUVycm9yKSgib2JqZWN0IiksY29kZShlKXsoMCxwbC5jaGVja01ldGFkYXRhKShlKTtjb25zdHtnZW46bixkYXRhOnIsc2NoZW1hOm8saXQ6dH09ZTtpZigoMCxxcy5hbHdheXNWYWxpZFNjaGVtYSkodCxvKSlyZXR1cm47Y29uc3RbcyxpXT0oMCxFbC5jaGVja051bGxhYmxlT2JqZWN0KShlLHIpO24uaWYoaSksbi5hc3NpZ24ocyxsKCkpLG4uZWxzZUlmKCgwLFFzLm5vdCkocykpLGUuZXJyb3IoKSxuLmVuZElmKCksZS5vayhzKTtmdW5jdGlvbiBsKCl7Y29uc3QgYz1uLm5hbWUoInZhbGlkIik7aWYodC5hbGxFcnJvcnMpe2NvbnN0IGE9bi5sZXQoInZhbGlkIiwhMCk7cmV0dXJuIG0oKCk9Pm4uYXNzaWduKGEsITEpKSxhfXJldHVybiBuLnZhcihjLCEwKSxtKCgpPT5uLmJyZWFrKCkpLGM7ZnVuY3Rpb24gbShhKXtuLmZvckluKCJrZXkiLHIsaD0+e2Uuc3Vic2NoZW1hKHtrZXl3b3JkOiJ2YWx1ZXMiLGRhdGFQcm9wOmgsZGF0YVByb3BUeXBlOnFzLlR5cGUuU3RyfSxjKSxuLmlmKCgwLFFzLm5vdCkoYyksYSl9KX19fX07bHQuZGVmYXVsdD1mbDt2YXIgY3Q9e307T2JqZWN0LmRlZmluZVByb3BlcnR5KGN0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTtjb25zdCBSbD17a2V5d29yZDoidW5pb24iLHNjaGVtYVR5cGU6ImFycmF5Iix0cmFja0Vycm9yczohMCxjb2RlOm9lLnZhbGlkYXRlVW5pb24sZXJyb3I6e21lc3NhZ2U6Im11c3QgbWF0Y2ggYSBzY2hlbWEgaW4gdW5pb24ifX07Y3QuZGVmYXVsdD1SbCxPYmplY3QuZGVmaW5lUHJvcGVydHkocnQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO2NvbnN0IE9sPWtuLFRsPXR0LE5sPXN0LGdsPWl0LElsPWF0LGJsPXV0LEFsPV90LFVsPWx0LEhsPWN0LHZsPVhlLERsPVsiZGVmaW5pdGlvbnMiLE9sLmRlZmF1bHQsVGwuZGVmYXVsdCxObC5kZWZhdWx0LGdsLmRlZmF1bHQsSWwuZGVmYXVsdCxibC5kZWZhdWx0LEFsLmRlZmF1bHQsVWwuZGVmYXVsdCxIbC5kZWZhdWx0LHZsLmRlZmF1bHQse2tleXdvcmQ6ImFkZGl0aW9uYWxQcm9wZXJ0aWVzIixzY2hlbWFUeXBlOiJib29sZWFuIn0se2tleXdvcmQ6Im51bGxhYmxlIixzY2hlbWFUeXBlOiJib29sZWFuIn1dO3J0LmRlZmF1bHQ9RGw7dmFyIGR0PXt9O09iamVjdC5kZWZpbmVQcm9wZXJ0eShkdCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7Y29uc3QgaG49ZT0+e2NvbnN0IG49e251bGxhYmxlOnt0eXBlOiJib29sZWFuIn0sbWV0YWRhdGE6e29wdGlvbmFsUHJvcGVydGllczp7dW5pb246e2VsZW1lbnRzOntyZWY6InNjaGVtYSJ9fX0sYWRkaXRpb25hbFByb3BlcnRpZXM6ITB9fTtyZXR1cm4gZSYmKG4uZGVmaW5pdGlvbnM9e3ZhbHVlczp7cmVmOiJzY2hlbWEifX0pLG59LFNsPWU9Pih7b3B0aW9uYWxQcm9wZXJ0aWVzOmhuKGUpfSksUGw9ZT0+KHtwcm9wZXJ0aWVzOntyZWY6e3R5cGU6InN0cmluZyJ9fSxvcHRpb25hbFByb3BlcnRpZXM6aG4oZSl9KSx3bD1lPT4oe3Byb3BlcnRpZXM6e3R5cGU6e2VudW06WyJib29sZWFuIiwidGltZXN0YW1wIiwic3RyaW5nIiwiZmxvYXQzMiIsImZsb2F0NjQiLCJpbnQ4IiwidWludDgiLCJpbnQxNiIsInVpbnQxNiIsImludDMyIiwidWludDMyIl19fSxvcHRpb25hbFByb3BlcnRpZXM6aG4oZSl9KSxHbD1lPT4oe3Byb3BlcnRpZXM6e2VudW06e2VsZW1lbnRzOnt0eXBlOiJzdHJpbmcifX19LG9wdGlvbmFsUHJvcGVydGllczpobihlKX0pLENsPWU9Pih7cHJvcGVydGllczp7ZWxlbWVudHM6e3JlZjoic2NoZW1hIn19LG9wdGlvbmFsUHJvcGVydGllczpobihlKX0pLFpzPWU9Pih7cHJvcGVydGllczp7cHJvcGVydGllczp7dmFsdWVzOntyZWY6InNjaGVtYSJ9fX0sb3B0aW9uYWxQcm9wZXJ0aWVzOlkoe29wdGlvbmFsUHJvcGVydGllczp7dmFsdWVzOntyZWY6InNjaGVtYSJ9fSxhZGRpdGlvbmFsUHJvcGVydGllczp7dHlwZToiYm9vbGVhbiJ9fSxobihlKSl9KSxlaT1lPT4oe3Byb3BlcnRpZXM6e29wdGlvbmFsUHJvcGVydGllczp7dmFsdWVzOntyZWY6InNjaGVtYSJ9fX0sb3B0aW9uYWxQcm9wZXJ0aWVzOlkoe2FkZGl0aW9uYWxQcm9wZXJ0aWVzOnt0eXBlOiJib29sZWFuIn19LGhuKGUpKX0pLHlsPWU9Pih7cHJvcGVydGllczp7ZGlzY3JpbWluYXRvcjp7dHlwZToic3RyaW5nIn0sbWFwcGluZzp7dmFsdWVzOnttZXRhZGF0YTp7dW5pb246W1pzKCExKSxlaSghMSldfX19fSxvcHRpb25hbFByb3BlcnRpZXM6aG4oZSl9KSxMbD1lPT4oe3Byb3BlcnRpZXM6e3ZhbHVlczp7cmVmOiJzY2hlbWEifX0sb3B0aW9uYWxQcm9wZXJ0aWVzOmhuKGUpfSksbmk9ZT0+KHttZXRhZGF0YTp7dW5pb246W1NsLFBsLHdsLEdsLENsLFpzLGVpLHlsLExsXS5tYXAobj0+bihlKSl9fSksQmw9WSh7ZGVmaW5pdGlvbnM6e3NjaGVtYTpuaSghMSl9fSxuaSghMCkpO2R0LmRlZmF1bHQ9Qmw7dmFyIGh0PXt9LEFyPXt9O09iamVjdC5kZWZpbmVQcm9wZXJ0eShBciwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksQXIuanRkRm9ybXM9dm9pZCAwLEFyLmp0ZEZvcm1zPVsiZWxlbWVudHMiLCJ2YWx1ZXMiLCJkaXNjcmltaW5hdG9yIiwicHJvcGVydGllcyIsIm9wdGlvbmFsUHJvcGVydGllcyIsImVudW0iLCJ0eXBlIiwicmVmIl07dmFyIG10PXt9O09iamVjdC5kZWZpbmVQcm9wZXJ0eShtdCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7Y29uc3QgcHQ9L1tcXCJcdTAwMDAtXHUwMDFmXHUwMDdmLVx1MDA5Zlx1MDBhZFx1MDYwMC1cdTA2MDRcdTA3MGZcdTE3YjRcdTE3YjVcdTIwMGMtXHUyMDBmXHUyMDI4LVx1MjAyZlx1MjA2MC1cdTIwNmZcdWZlZmZcdWZmZjAtXHVmZmZmXS9nLGtsPXsiXGIiOiJcXGIiLCIJIjoiXFx0IiwiXG4iOiJcXG4iLCJcZiI6IlxcZiIsIlxyIjoiXFxyIiwnIic6J1xcIicsIlxcIjoiXFxcXCJ9O2Z1bmN0aW9uIHJpKGUpe3JldHVybiBwdC5sYXN0SW5kZXg9MCwnIicrKHB0LnRlc3QoZSk/ZS5yZXBsYWNlKHB0LG49Pntjb25zdCByPWtsW25dO3JldHVybiB0eXBlb2Ygcj09InN0cmluZyI/cjoiXFx1IisoIjAwMDAiK24uY2hhckNvZGVBdCgwKS50b1N0cmluZygxNikpLnNsaWNlKC00KX0pOmUpKyciJ31tdC5kZWZhdWx0PXJpLHJpLmNvZGU9J3JlcXVpcmUoImFqdi9kaXN0L3J1bnRpbWUvcXVvdGUiKS5kZWZhdWx0JyxPYmplY3QuZGVmaW5lUHJvcGVydHkoaHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO2NvbnN0IE1sPUFyLG9pPVBlLG5lPV9lLFhsPUxuLGhlPU1lLCRsPW9lLGpsPWtuLHhsPUFlLEZsPW10LFZsPXtlbGVtZW50czpXbCx2YWx1ZXM6WWwsZGlzY3JpbWluYXRvcjpKbCxwcm9wZXJ0aWVzOmlpLG9wdGlvbmFsUHJvcGVydGllczppaSxlbnVtOkhyLHR5cGU6emwscmVmOlFsfTtmdW5jdGlvbiB0aShlLG4pe2NvbnN0IHI9b2kuZ2V0Q29tcGlsaW5nU2NoZW1hLmNhbGwodGhpcyxlKTtpZihyKXJldHVybiByO2NvbnN0e2VzNTpvLGxpbmVzOnR9PXRoaXMub3B0cy5jb2RlLHtvd25Qcm9wZXJ0aWVzOnN9PXRoaXMub3B0cyxpPW5ldyBuZS5Db2RlR2VuKHRoaXMuc2NvcGUse2VzNTpvLGxpbmVzOnQsb3duUHJvcGVydGllczpzfSksbD1pLnNjb3BlTmFtZSgic2VyaWFsaXplIiksYz17c2VsZjp0aGlzLGdlbjppLHNjaGVtYTplLnNjaGVtYSxzY2hlbWFFbnY6ZSxkZWZpbml0aW9uczpuLGRhdGE6aGUuZGVmYXVsdC5kYXRhfTtsZXQgbTt0cnl7dGhpcy5fY29tcGlsYXRpb25zLmFkZChlKSxlLnNlcmlhbGl6ZU5hbWU9bCxpLmZ1bmMobCxoZS5kZWZhdWx0LmRhdGEsITEsKCk9PntpLmxldChoZS5kZWZhdWx0Lmpzb24sKDAsbmUuc3RyKWBgKSxVcihjKSxpLnJldHVybihoZS5kZWZhdWx0Lmpzb24pfSksaS5vcHRpbWl6ZSh0aGlzLm9wdHMuY29kZS5vcHRpbWl6ZSk7Y29uc3QgYT1pLnRvU3RyaW5nKCk7bT1gJHtpLnNjb3BlUmVmcyhoZS5kZWZhdWx0LnNjb3BlKX1yZXR1cm4gJHthfWA7Y29uc3QgTz1uZXcgRnVuY3Rpb24oYCR7aGUuZGVmYXVsdC5zY29wZX1gLG0pKHRoaXMuc2NvcGUuZ2V0KCkpO3RoaXMuc2NvcGUudmFsdWUobCx7cmVmOk99KSxlLnNlcmlhbGl6ZT1PfWNhdGNoKGEpe3Rocm93IG0mJnRoaXMubG9nZ2VyLmVycm9yKCJFcnJvciBjb21waWxpbmcgc2VyaWFsaXplciwgZnVuY3Rpb24gY29kZToiLG0pLGRlbGV0ZSBlLnNlcmlhbGl6ZSxkZWxldGUgZS5zZXJpYWxpemVOYW1lLGF9ZmluYWxseXt0aGlzLl9jb21waWxhdGlvbnMuZGVsZXRlKGUpfXJldHVybiBlfWh0LmRlZmF1bHQ9dGk7ZnVuY3Rpb24gVXIoZSl7bGV0IG47Zm9yKGNvbnN0IHIgb2YgTWwuanRkRm9ybXMpaWYociBpbiBlLnNjaGVtYSl7bj1yO2JyZWFrfUtsKGUsbj9WbFtuXTplYyl9ZnVuY3Rpb24gS2woZSxuKXtjb25zdHtnZW46cixzY2hlbWE6byxkYXRhOnR9PWU7aWYoIW8ubnVsbGFibGUpcmV0dXJuIG4oZSk7ci5pZigoMCxuZS5fKWAke3R9ID09PSB1bmRlZmluZWQgfHwgJHt0fSA9PT0gbnVsbGAsKCk9PnIuYWRkKGhlLmRlZmF1bHQuanNvbiwoMCxuZS5fKWAibnVsbCJgKSwoKT0+bihlKSl9ZnVuY3Rpb24gV2woZSl7Y29uc3R7Z2VuOm4sc2NoZW1hOnIsZGF0YTpvfT1lO24uYWRkKGhlLmRlZmF1bHQuanNvbiwoMCxuZS5zdHIpYFtgKTtjb25zdCB0PW4ubGV0KCJmaXJzdCIsITApO24uZm9yT2YoImVsIixvLHM9Pnt1aShlLHQpLFVyKGxlKFkoe30sZSkse3NjaGVtYTpyLmVsZW1lbnRzLGRhdGE6c30pKX0pLG4uYWRkKGhlLmRlZmF1bHQuanNvbiwoMCxuZS5zdHIpYF1gKX1mdW5jdGlvbiBZbChlKXtjb25zdHtnZW46bixzY2hlbWE6cixkYXRhOm99PWU7bi5hZGQoaGUuZGVmYXVsdC5qc29uLCgwLG5lLnN0cilge2ApO2NvbnN0IHQ9bi5sZXQoImZpcnN0IiwhMCk7bi5mb3JJbigia2V5IixvLHM9PnNpKGUscyxyLnZhbHVlcyx0KSksbi5hZGQoaGUuZGVmYXVsdC5qc29uLCgwLG5lLnN0cilgfWApfWZ1bmN0aW9uIHNpKGUsbixyLG8pe2NvbnN0e2dlbjp0LGRhdGE6c309ZTt1aShlLG8pLEhyKGxlKFkoe30sZSkse2RhdGE6bn0pKSx0LmFkZChoZS5kZWZhdWx0Lmpzb24sKDAsbmUuc3RyKWA6YCk7Y29uc3QgaT10LmNvbnN0KCJ2YWx1ZSIsKDAsbmUuXylgJHtzfSR7KDAsbmUuZ2V0UHJvcGVydHkpKG4pfWApO1VyKGxlKFkoe30sZSkse3NjaGVtYTpyLGRhdGE6aX0pKX1mdW5jdGlvbiBKbChlKXtjb25zdHtnZW46bixzY2hlbWE6cixkYXRhOm99PWUse2Rpc2NyaW1pbmF0b3I6dH09cjtuLmFkZChoZS5kZWZhdWx0Lmpzb24sKDAsbmUuc3RyKWB7JHtKU09OLnN0cmluZ2lmeSh0KX06YCk7Y29uc3Qgcz1uLmNvbnN0KCJ0YWciLCgwLG5lLl8pYCR7b30keygwLG5lLmdldFByb3BlcnR5KSh0KX1gKTtIcihsZShZKHt9LGUpLHtkYXRhOnN9KSksbi5pZighMSk7Zm9yKGNvbnN0IGkgaW4gci5tYXBwaW5nKXtuLmVsc2VJZigoMCxuZS5fKWAke3N9ID09PSAke2l9YCk7Y29uc3QgbD1yLm1hcHBpbmdbaV07YWkobGUoWSh7fSxlKSx7c2NoZW1hOmx9KSx0KX1uLmVuZElmKCksbi5hZGQoaGUuZGVmYXVsdC5qc29uLCgwLG5lLnN0cilgfWApfWZ1bmN0aW9uIGlpKGUpe2NvbnN0e2dlbjpufT1lO24uYWRkKGhlLmRlZmF1bHQuanNvbiwoMCxuZS5zdHIpYHtgKSxhaShlKSxuLmFkZChoZS5kZWZhdWx0Lmpzb24sKDAsbmUuc3RyKWB9YCl9ZnVuY3Rpb24gYWkoZSxuKXtjb25zdHtnZW46cixzY2hlbWE6byxkYXRhOnR9PWUse3Byb3BlcnRpZXM6cyxvcHRpb25hbFByb3BlcnRpZXM6aX09byxsPWgocyksYz1oKGkpLG09TyhsLmNvbmNhdChjKSk7bGV0IGE9IW47Zm9yKGNvbnN0IFQgb2YgbCl3KFQsc1tUXSxEKFQpKTtmb3IoY29uc3QgVCBvZiBjKXtjb25zdCBmPUQoVCk7ci5pZigoMCxuZS5hbmQpKCgwLG5lLl8pYCR7Zn0gIT09IHVuZGVmaW5lZGAsKDAsJGwuaXNPd25Qcm9wZXJ0eSkocix0LFQpKSwoKT0+dyhULGlbVF0sZikpfW8uYWRkaXRpb25hbFByb3BlcnRpZXMmJnIuZm9ySW4oImtleSIsdCxUPT5yLmlmKEMoVCxtKSwoKT0+c2koZSxULHt9LHIubGV0KCJmaXJzdCIsYSkpKSk7ZnVuY3Rpb24gaChUKXtyZXR1cm4gVD9PYmplY3Qua2V5cyhUKTpbXX1mdW5jdGlvbiBPKFQpe2lmKG4mJlQucHVzaChuKSxuZXcgU2V0KFQpLnNpemUhPT1ULmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoIkpURDogcHJvcGVydGllcy9vcHRpb25hbFByb3BlcnRpZXMvZGlzY2ltaW5hdG9yIG92ZXJsYXAiKTtyZXR1cm4gVH1mdW5jdGlvbiBEKFQpe3JldHVybiByLmNvbnN0KCJ2YWx1ZSIsKDAsbmUuXylgJHt0fSR7KDAsbmUuZ2V0UHJvcGVydHkpKFQpfWApfWZ1bmN0aW9uIHcoVCxmLEEpe2E/YT0hMTpyLmFkZChoZS5kZWZhdWx0Lmpzb24sKDAsbmUuc3RyKWAsYCksci5hZGQoaGUuZGVmYXVsdC5qc29uLCgwLG5lLnN0cilgJHtKU09OLnN0cmluZ2lmeShUKX06YCksVXIobGUoWSh7fSxlKSx7c2NoZW1hOmYsZGF0YTpBfSkpfWZ1bmN0aW9uIEMoVCxmKXtyZXR1cm4gZi5sZW5ndGg/KDAsbmUuYW5kKSguLi5mLm1hcChBPT4oMCxuZS5fKWAke1R9ICE9PSAke0F9YCkpOiEwfX1mdW5jdGlvbiB6bChlKXtjb25zdHtnZW46bixzY2hlbWE6cixkYXRhOm99PWU7c3dpdGNoKHIudHlwZSl7Y2FzZSJib29sZWFuIjpuLmFkZChoZS5kZWZhdWx0Lmpzb24sKDAsbmUuXylgJHtvfSA/ICJ0cnVlIiA6ICJmYWxzZSJgKTticmVhaztjYXNlInN0cmluZyI6SHIoZSk7YnJlYWs7Y2FzZSJ0aW1lc3RhbXAiOm4uaWYoKDAsbmUuXylgJHtvfSBpbnN0YW5jZW9mIERhdGVgLCgpPT5uLmFkZChoZS5kZWZhdWx0Lmpzb24sKDAsbmUuXylgJyInICsgJHtvfS50b0lTT1N0cmluZygpICsgJyInYCksKCk9PkhyKGUpKTticmVhaztkZWZhdWx0OnFsKGUpfX1mdW5jdGlvbiBIcih7Z2VuOmUsZGF0YTpufSl7ZS5hZGQoaGUuZGVmYXVsdC5qc29uLCgwLG5lLl8pYCR7KDAseGwudXNlRnVuYykoZSxGbC5kZWZhdWx0KX0oJHtufSlgKX1mdW5jdGlvbiBxbCh7Z2VuOmUsZGF0YTpufSl7ZS5hZGQoaGUuZGVmYXVsdC5qc29uLCgwLG5lLl8pYCIiICsgJHtufWApfWZ1bmN0aW9uIFFsKGUpe2NvbnN0e2dlbjpuLHNlbGY6cixkYXRhOm8sZGVmaW5pdGlvbnM6dCxzY2hlbWE6cyxzY2hlbWFFbnY6aX09ZSx7cmVmOmx9PXMsYz10W2xdO2lmKCFjKXRocm93IG5ldyBYbC5kZWZhdWx0KHIub3B0cy51cmlSZXNvbHZlciwiIixsLGBObyBkZWZpbml0aW9uICR7bH1gKTtpZighKDAsamwuaGFzUmVmKShjKSlyZXR1cm4gVXIobGUoWSh7fSxlKSx7c2NoZW1hOmN9KSk7Y29uc3R7cm9vdDptfT1pLGE9dGkuY2FsbChyLG5ldyBvaS5TY2hlbWFFbnYoe3NjaGVtYTpjLHJvb3Q6bX0pLHQpO24uYWRkKGhlLmRlZmF1bHQuanNvbiwoMCxuZS5fKWAke1psKG4sYSl9KCR7b30pYCl9ZnVuY3Rpb24gWmwoZSxuKXtyZXR1cm4gbi5zZXJpYWxpemU/ZS5zY29wZVZhbHVlKCJzZXJpYWxpemUiLHtyZWY6bi5zZXJpYWxpemV9KTooMCxuZS5fKWAke2Uuc2NvcGVWYWx1ZSgid3JhcHBlciIse3JlZjpufSl9LnNlcmlhbGl6ZWB9ZnVuY3Rpb24gZWMoe2dlbjplLGRhdGE6bn0pe2UuYWRkKGhlLmRlZmF1bHQuanNvbiwoMCxuZS5fKWBKU09OLnN0cmluZ2lmeSgke259KWApfWZ1bmN0aW9uIHVpKHtnZW46ZX0sbil7ZS5pZihuLCgpPT5lLmFzc2lnbihuLCExKSwoKT0+ZS5hZGQoaGUuZGVmYXVsdC5qc29uLCgwLG5lLnN0cilgLGApKX12YXIgRXQ9e30sYm49e307T2JqZWN0LmRlZmluZVByb3BlcnR5KGJuLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxibi5wYXJzZUpzb25TdHJpbmc9Ym4ucGFyc2VKc29uTnVtYmVyPWJuLnBhcnNlSnNvbj12b2lkIDA7Y29uc3QgbmM9L3Bvc2l0aW9uXHMoXGQrKSQvO2Z1bmN0aW9uIG1uKGUsbil7bGV0IHI7bW4ubWVzc2FnZT12b2lkIDA7bGV0IG87biYmKGU9ZS5zbGljZShuKSk7dHJ5e3JldHVybiBtbi5wb3NpdGlvbj1uK2UubGVuZ3RoLEpTT04ucGFyc2UoZSl9Y2F0Y2godCl7aWYobz1uYy5leGVjKHQubWVzc2FnZSksIW8pe21uLm1lc3NhZ2U9InVuZXhwZWN0ZWQgZW5kIjtyZXR1cm59cj0rb1sxXTtjb25zdCBzPWVbcl07ZT1lLnNsaWNlKDAsciksbW4ucG9zaXRpb249bityO3RyeXtyZXR1cm4gSlNPTi5wYXJzZShlKX1jYXRjaHttbi5tZXNzYWdlPWB1bmV4cGVjdGVkIHRva2VuICR7c31gO3JldHVybn19fWJuLnBhcnNlSnNvbj1tbixtbi5tZXNzYWdlPXZvaWQgMCxtbi5wb3NpdGlvbj0wLG1uLmNvZGU9J3JlcXVpcmUoImFqdi9kaXN0L3J1bnRpbWUvcGFyc2VKc29uIikucGFyc2VKc29uJztmdW5jdGlvbiBwbihlLG4scil7bGV0IG89IiIsdDtpZihwbi5tZXNzYWdlPXZvaWQgMCxlW25dPT09Ii0iJiYobys9Ii0iLG4rKyksZVtuXT09PSIwIilvKz0iMCIsbisrO2Vsc2UgaWYoIXMocikpe2koKTtyZXR1cm59aWYocilyZXR1cm4gcG4ucG9zaXRpb249biwrbztpZihlW25dPT09Ii4iJiYobys9Ii4iLG4rKywhcygpKSl7aSgpO3JldHVybn1pZih0PWVbbl0sKHQ9PT0iZSJ8fHQ9PT0iRSIpJiYobys9ImUiLG4rKyx0PWVbbl0sKHQ9PT0iKyJ8fHQ9PT0iLSIpJiYobys9dCxuKyspLCFzKCkpKXtpKCk7cmV0dXJufXJldHVybiBwbi5wb3NpdGlvbj1uLCtvO2Z1bmN0aW9uIHMobCl7bGV0IGM9ITE7Zm9yKDt0PWVbbl0sdD49IjAiJiZ0PD0iOSImJihsPT09dm9pZCAwfHxsLS0gPjApOyljPSEwLG8rPXQsbisrO3JldHVybiBjfWZ1bmN0aW9uIGkoKXtwbi5wb3NpdGlvbj1uLHBuLm1lc3NhZ2U9bjxlLmxlbmd0aD9gdW5leHBlY3RlZCB0b2tlbiAke2Vbbl19YDoidW5leHBlY3RlZCBlbmQifX1ibi5wYXJzZUpzb25OdW1iZXI9cG4scG4ubWVzc2FnZT12b2lkIDAscG4ucG9zaXRpb249MCxwbi5jb2RlPSdyZXF1aXJlKCJhanYvZGlzdC9ydW50aW1lL3BhcnNlSnNvbiIpLnBhcnNlSnNvbk51bWJlcic7Y29uc3QgX2k9e2I6IlxiIixmOiJcZiIsbjpgCmAscjoiXHIiLHQ6IgkiLCciJzonIicsIi8iOiIvIiwiXFwiOiJcXCJ9LHJjPSJhIi5jaGFyQ29kZUF0KDApLG9jPSIwIi5jaGFyQ29kZUF0KDApO2Z1bmN0aW9uIEFuKGUsbil7bGV0IHI9IiIsbztmb3IoQW4ubWVzc2FnZT12b2lkIDA7bz1lW24rK10sbyE9PSciJzspaWYobz09PSJcXCIpaWYobz1lW25dLG8gaW4gX2kpcis9X2lbb10sbisrO2Vsc2UgaWYobz09PSJ1Iil7bisrO2xldCBzPTQsaT0wO2Zvcig7cy0tOyl7aWYoaTw8PTQsbz1lW25dLG89PT12b2lkIDApe3QoInVuZXhwZWN0ZWQgZW5kIik7cmV0dXJufWlmKG89by50b0xvd2VyQ2FzZSgpLG8+PSJhIiYmbzw9ImYiKWkrPW8uY2hhckNvZGVBdCgwKS1yYysxMDtlbHNlIGlmKG8+PSIwIiYmbzw9IjkiKWkrPW8uY2hhckNvZGVBdCgwKS1vYztlbHNle3QoYHVuZXhwZWN0ZWQgdG9rZW4gJHtvfWApO3JldHVybn1uKyt9cis9U3RyaW5nLmZyb21DaGFyQ29kZShpKX1lbHNle3QoYHVuZXhwZWN0ZWQgdG9rZW4gJHtvfWApO3JldHVybn1lbHNlIGlmKG89PT12b2lkIDApe3QoInVuZXhwZWN0ZWQgZW5kIik7cmV0dXJufWVsc2UgaWYoby5jaGFyQ29kZUF0KDApPj0zMilyKz1vO2Vsc2V7dChgdW5leHBlY3RlZCB0b2tlbiAke299YCk7cmV0dXJufXJldHVybiBBbi5wb3NpdGlvbj1uLHI7ZnVuY3Rpb24gdChzKXtBbi5wb3NpdGlvbj1uLEFuLm1lc3NhZ2U9c319Ym4ucGFyc2VKc29uU3RyaW5nPUFuLEFuLm1lc3NhZ2U9dm9pZCAwLEFuLnBvc2l0aW9uPTAsQW4uY29kZT0ncmVxdWlyZSgiYWp2L2Rpc3QvcnVudGltZS9wYXJzZUpzb24iKS5wYXJzZUpzb25TdHJpbmcnLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShFdCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7Y29uc3QgdGM9QXIsbGk9UGUsTT1fZSxzYz1MbixKPU1lLGljPW9lLGFjPWtuLHVjPXR0LGZ0PWJuLGNpPUFlLF9jPW1vLGxjPXtlbGVtZW50czptYyx2YWx1ZXM6cGMsZGlzY3JpbWluYXRvcjpmYyxwcm9wZXJ0aWVzOm1pLG9wdGlvbmFsUHJvcGVydGllczptaSxlbnVtOk9jLHR5cGU6UmMscmVmOlRjfTtmdW5jdGlvbiBkaShlLG4pe2NvbnN0IHI9bGkuZ2V0Q29tcGlsaW5nU2NoZW1hLmNhbGwodGhpcyxlKTtpZihyKXJldHVybiByO2NvbnN0e2VzNTpvLGxpbmVzOnR9PXRoaXMub3B0cy5jb2RlLHtvd25Qcm9wZXJ0aWVzOnN9PXRoaXMub3B0cyxpPW5ldyBNLkNvZGVHZW4odGhpcy5zY29wZSx7ZXM1Om8sbGluZXM6dCxvd25Qcm9wZXJ0aWVzOnN9KSxsPWkuc2NvcGVOYW1lKCJwYXJzZSIpLGM9e3NlbGY6dGhpcyxnZW46aSxzY2hlbWE6ZS5zY2hlbWEsc2NoZW1hRW52OmUsZGVmaW5pdGlvbnM6bixkYXRhOkouZGVmYXVsdC5kYXRhLHBhcnNlTmFtZTpsLGNoYXI6aS5uYW1lKCJjIil9O2xldCBtO3RyeXt0aGlzLl9jb21waWxhdGlvbnMuYWRkKGUpLGUucGFyc2VOYW1lPWwsY2MoYyksaS5vcHRpbWl6ZSh0aGlzLm9wdHMuY29kZS5vcHRpbWl6ZSk7Y29uc3QgYT1pLnRvU3RyaW5nKCk7bT1gJHtpLnNjb3BlUmVmcyhKLmRlZmF1bHQuc2NvcGUpfXJldHVybiAke2F9YDtjb25zdCBPPW5ldyBGdW5jdGlvbihgJHtKLmRlZmF1bHQuc2NvcGV9YCxtKSh0aGlzLnNjb3BlLmdldCgpKTt0aGlzLnNjb3BlLnZhbHVlKGwse3JlZjpPfSksZS5wYXJzZT1PfWNhdGNoKGEpe3Rocm93IG0mJnRoaXMubG9nZ2VyLmVycm9yKCJFcnJvciBjb21waWxpbmcgcGFyc2VyLCBmdW5jdGlvbiBjb2RlOiIsbSksZGVsZXRlIGUucGFyc2UsZGVsZXRlIGUucGFyc2VOYW1lLGF9ZmluYWxseXt0aGlzLl9jb21waWxhdGlvbnMuZGVsZXRlKGUpfXJldHVybiBlfUV0LmRlZmF1bHQ9ZGk7Y29uc3QgUnQ9KDAsTS5fKWB1bmRlZmluZWRgO2Z1bmN0aW9uIGNjKGUpe2NvbnN0e2dlbjpuLHBhcnNlTmFtZTpyLGNoYXI6b309ZTtuLmZ1bmMociwoMCxNLl8pYCR7Si5kZWZhdWx0Lmpzb259LCAke0ouZGVmYXVsdC5qc29uUG9zfSwgJHtKLmRlZmF1bHQuanNvblBhcnR9YCwhMSwoKT0+e24ubGV0KEouZGVmYXVsdC5kYXRhKSxuLmxldChvKSxuLmFzc2lnbigoMCxNLl8pYCR7cn0ubWVzc2FnZWAsUnQpLG4uYXNzaWduKCgwLE0uXylgJHtyfS5wb3NpdGlvbmAsUnQpLG4uYXNzaWduKEouZGVmYXVsdC5qc29uUG9zLCgwLE0uXylgJHtKLmRlZmF1bHQuanNvblBvc30gfHwgMGApLG4uY29uc3QoSi5kZWZhdWx0Lmpzb25MZW4sKDAsTS5fKWAke0ouZGVmYXVsdC5qc29ufS5sZW5ndGhgKSxmbyhlKSxJdChlKSxuLmlmKEouZGVmYXVsdC5qc29uUGFydCwoKT0+e24uYXNzaWduKCgwLE0uXylgJHtyfS5wb3NpdGlvbmAsSi5kZWZhdWx0Lmpzb25Qb3MpLG4ucmV0dXJuKEouZGVmYXVsdC5kYXRhKX0pLG4uaWYoKDAsTS5fKWAke0ouZGVmYXVsdC5qc29uUG9zfSA9PT0gJHtKLmRlZmF1bHQuanNvbkxlbn1gLCgpPT5uLnJldHVybihKLmRlZmF1bHQuZGF0YSkpLGlyKGUpfSl9ZnVuY3Rpb24gZm8oZSl7bGV0IG47Zm9yKGNvbnN0IHIgb2YgdGMuanRkRm9ybXMpaWYociBpbiBlLnNjaGVtYSl7bj1yO2JyZWFrfW4/aGMoZSxsY1tuXSk6TnQoZSl9Y29uc3QgZGM9UmkoITAsUmkoITEsaXIpKTtmdW5jdGlvbiBoYyhlLG4pe2NvbnN0e2dlbjpyLHNjaGVtYTpvLGRhdGE6dH09ZTtpZighby5udWxsYWJsZSlyZXR1cm4gbihlKTt2cihlLCJudWxsIixuLCgpPT5yLmFzc2lnbih0LG51bGwpKX1mdW5jdGlvbiBtYyhlKXtjb25zdHtnZW46bixzY2hlbWE6cixkYXRhOm99PWU7ZW4oZSwiWyIpO2NvbnN0IHQ9bi5sZXQoImkiLDApO24uYXNzaWduKG8sKDAsTS5fKWBbXWApLE90KGUsIl0iLCgpPT57Y29uc3Qgcz1uLmxldCgiZWwiKTtmbyhsZShZKHt9LGUpLHtzY2hlbWE6ci5lbGVtZW50cyxkYXRhOnN9KSksbi5hc3NpZ24oKDAsTS5fKWAke299WyR7dH0rK11gLHMpfSl9ZnVuY3Rpb24gcGMoZSl7Y29uc3R7Z2VuOm4sc2NoZW1hOnIsZGF0YTpvfT1lO2VuKGUsInsiKSxuLmFzc2lnbihvLCgwLE0uXylge31gKSxPdChlLCJ9IiwoKT0+RWMoZSxyLnZhbHVlcykpfWZ1bmN0aW9uIE90KGUsbixyKXtoaShlLG4sciksZW4oZSxuKX1mdW5jdGlvbiBoaShlLG4scil7Y29uc3R7Z2VuOm99PWU7by5mb3IoKDAsTS5fKWA7JHtKLmRlZmF1bHQuanNvblBvc308JHtKLmRlZmF1bHQuanNvbkxlbn0gJiYgJHtSbygxKX0hPT0ke259O2AsKCk9PntyKCksdnIoZSwiLCIsKCk9Pm8uYnJlYWsoKSx0KX0pO2Z1bmN0aW9uIHQoKXt2cihlLG4sKCk9Pnt9LGlyKX19ZnVuY3Rpb24gRWMoZSxuKXtjb25zdHtnZW46cn09ZSxvPXIubGV0KCJrZXkiKTskbihsZShZKHt9LGUpLHtkYXRhOm99KSksZW4oZSwiOiIpLGZpKGUsbyxuKX1mdW5jdGlvbiBmYyhlKXtjb25zdHtnZW46bixkYXRhOnIsc2NoZW1hOm99PWUse2Rpc2NyaW1pbmF0b3I6dCxtYXBwaW5nOnN9PW87ZW4oZSwieyIpLG4uYXNzaWduKHIsKDAsTS5fKWB7fWApO2NvbnN0IGk9bi5jb25zdCgicG9zIixKLmRlZmF1bHQuanNvblBvcyksbD1uLmxldCgidmFsdWUiKSxjPW4ubGV0KCJ0YWciKTtoaShlLCJ9IiwoKT0+e2NvbnN0IG09bi5sZXQoImtleSIpOyRuKGxlKFkoe30sZSkse2RhdGE6bX0pKSxlbihlLCI6Iiksbi5pZigoMCxNLl8pYCR7bX0gPT09ICR7dH1gLCgpPT57JG4obGUoWSh7fSxlKSx7ZGF0YTpjfSkpLG4uYXNzaWduKCgwLE0uXylgJHtyfVske219XWAsYyksbi5icmVhaygpfSwoKT0+TnQobGUoWSh7fSxlKSx7ZGF0YTpsfSkpKX0pLG4uYXNzaWduKEouZGVmYXVsdC5qc29uUG9zLGkpLG4uaWYoKDAsTS5fKWAke2N9ID09PSB1bmRlZmluZWRgKSxFbihlLCgwLE0uc3RyKWBkaXNjcmltaW5hdG9yIHRhZyBub3QgZm91bmRgKTtmb3IoY29uc3QgbSBpbiBzKW4uZWxzZUlmKCgwLE0uXylgJHtjfSA9PT0gJHttfWApLHBpKGxlKFkoe30sZSkse3NjaGVtYTpzW21dfSksdCk7bi5lbHNlKCksRW4oZSwoMCxNLnN0cilgZGlzY3JpbWluYXRvciB2YWx1ZSBub3QgaW4gc2NoZW1hYCksbi5lbmRJZigpfWZ1bmN0aW9uIG1pKGUpe2NvbnN0e2dlbjpuLGRhdGE6cn09ZTtlbihlLCJ7Iiksbi5hc3NpZ24ociwoMCxNLl8pYHt9YCkscGkoZSl9ZnVuY3Rpb24gcGkoZSxuKXtjb25zdHtnZW46cixzY2hlbWE6byxkYXRhOnR9PWUse3Byb3BlcnRpZXM6cyxvcHRpb25hbFByb3BlcnRpZXM6aSxhZGRpdGlvbmFsUHJvcGVydGllczpsfT1vO2lmKE90KGUsIn0iLCgpPT57Y29uc3QgYz1yLmxldCgia2V5Iik7aWYoJG4obGUoWSh7fSxlKSx7ZGF0YTpjfSkpLGVuKGUsIjoiKSxyLmlmKCExKSxFaShlLGMscyksRWkoZSxjLGkpLG4pe3IuZWxzZUlmKCgwLE0uXylgJHtjfSA9PT0gJHtufWApO2NvbnN0IG09ci5sZXQoInRhZyIpOyRuKGxlKFkoe30sZSkse2RhdGE6bX0pKX1yLmVsc2UoKSxsP050KGxlKFkoe30sZSkse2RhdGE6KDAsTS5fKWAke3R9WyR7Y31dYH0pKTpFbihlLCgwLE0uc3RyKWBwcm9wZXJ0eSAke2N9IG5vdCBhbGxvd2VkYCksci5lbmRJZigpfSkscyl7Y29uc3QgYz0oMCxpYy5oYXNQcm9wRnVuYykociksbT0oMCxNLmFuZCkoLi4uT2JqZWN0LmtleXMocykubWFwKGE9PigwLE0uXylgJHtjfS5jYWxsKCR7dH0sICR7YX0pYCkpO3IuaWYoKDAsTS5ub3QpKG0pLCgpPT5FbihlLCgwLE0uc3RyKWBtaXNzaW5nIHJlcXVpcmVkIHByb3BlcnRpZXNgKSl9fWZ1bmN0aW9uIEVpKGUsbixyPXt9KXtjb25zdHtnZW46b309ZTtmb3IoY29uc3QgdCBpbiByKW8uZWxzZUlmKCgwLE0uXylgJHtufSA9PT0gJHt0fWApLGZpKGUsbixyW3RdKX1mdW5jdGlvbiBmaShlLG4scil7Zm8obGUoWSh7fSxlKSx7c2NoZW1hOnIsZGF0YTooMCxNLl8pYCR7ZS5kYXRhfVske259XWB9KSl9ZnVuY3Rpb24gUmMoZSl7Y29uc3R7Z2VuOm4sc2NoZW1hOnIsZGF0YTpvLHNlbGY6dH09ZTtzd2l0Y2goci50eXBlKXtjYXNlImJvb2xlYW4iOmRjKGUpO2JyZWFrO2Nhc2Uic3RyaW5nIjokbihlKTticmVhaztjYXNlInRpbWVzdGFtcCI6eyRuKGUpO2NvbnN0IHM9KDAsY2kudXNlRnVuYykobixfYy5kZWZhdWx0KSx7YWxsb3dEYXRlOmkscGFyc2VEYXRlOmx9PXQub3B0cyxjPWk/KDAsTS5fKWAhJHtzfSgke299LCB0cnVlKWA6KDAsTS5fKWAhJHtzfSgke299KWAsbT1sPygwLE0ub3IpKGMsKDAsTS5fKWAoJHtvfSA9IG5ldyBEYXRlKCR7b30pLCBmYWxzZSlgLCgwLE0uXylgaXNOYU4oJHtvfS52YWx1ZU9mKCkpYCk6YztuLmlmKG0sKCk9PkVuKGUsKDAsTS5zdHIpYGludmFsaWQgdGltZXN0YW1wYCkpO2JyZWFrfWNhc2UiZmxvYXQzMiI6Y2FzZSJmbG9hdDY0IjpUdChlKTticmVhaztkZWZhdWx0Ontjb25zdCBzPXIudHlwZTtpZighdC5vcHRzLmludDMycmFuZ2UmJihzPT09ImludDMyInx8cz09PSJ1aW50MzIiKSlUdChlLDE2KSxzPT09InVpbnQzMiImJm4uaWYoKDAsTS5fKWAke299IDwgMGAsKCk9PkVuKGUsKDAsTS5zdHIpYGludGVnZXIgb3V0IG9mIHJhbmdlYCkpO2Vsc2V7Y29uc3RbaSxsLGNdPXVjLmludFJhbmdlW3NdO1R0KGUsYyksbi5pZigoMCxNLl8pYCR7b30gPCAke2l9IHx8ICR7b30gPiAke2x9YCwoKT0+RW4oZSwoMCxNLnN0cilgaW50ZWdlciBvdXQgb2YgcmFuZ2VgKSl9fX19ZnVuY3Rpb24gJG4oZSl7ZW4oZSwnIicpLGd0KGUsZnQucGFyc2VKc29uU3RyaW5nKX1mdW5jdGlvbiBPYyhlKXtjb25zdHtnZW46bixkYXRhOnIsc2NoZW1hOm99PWUsdD1vLmVudW07ZW4oZSwnIicpLG4uaWYoITEpO2Zvcihjb25zdCBzIG9mIHQpe2NvbnN0IGk9SlNPTi5zdHJpbmdpZnkocykuc2xpY2UoMSk7bi5lbHNlSWYoKDAsTS5fKWAke1JvKGkubGVuZ3RoKX0gPT09ICR7aX1gKSxuLmFzc2lnbihyLCgwLE0uc3RyKWAke3N9YCksbi5hZGQoSi5kZWZhdWx0Lmpzb25Qb3MsaS5sZW5ndGgpfW4uZWxzZSgpLGlyKGUpLG4uZW5kSWYoKX1mdW5jdGlvbiBUdChlLG4pe2NvbnN0e2dlbjpyfT1lO0l0KGUpLHIuaWYoKDAsTS5fKWAiLTAxMjM0NTY3ODkiLmluZGV4T2YoJHtSbygxKX0pIDwgMGAsKCk9PmlyKGUpLCgpPT5ndChlLGZ0LnBhcnNlSnNvbk51bWJlcixuKSl9ZnVuY3Rpb24gUmkoZSxuKXtyZXR1cm4gcj0+e2NvbnN0e2dlbjpvLGRhdGE6dH09cjt2cihyLGAke2V9YCwoKT0+bihyKSwoKT0+by5hc3NpZ24odCxlKSl9fWZ1bmN0aW9uIFRjKGUpe2NvbnN0e2dlbjpuLHNlbGY6cixkZWZpbml0aW9uczpvLHNjaGVtYTp0LHNjaGVtYUVudjpzfT1lLHtyZWY6aX09dCxsPW9baV07aWYoIWwpdGhyb3cgbmV3IHNjLmRlZmF1bHQoci5vcHRzLnVyaVJlc29sdmVyLCIiLGksYE5vIGRlZmluaXRpb24gJHtpfWApO2lmKCEoMCxhYy5oYXNSZWYpKGwpKXJldHVybiBmbyhsZShZKHt9LGUpLHtzY2hlbWE6bH0pKTtjb25zdHtyb290OmN9PXMsbT1kaS5jYWxsKHIsbmV3IGxpLlNjaGVtYUVudih7c2NoZW1hOmwscm9vdDpjfSksbyk7T2koZSxOYyhuLG0pLCEwKX1mdW5jdGlvbiBOYyhlLG4pe3JldHVybiBuLnBhcnNlP2Uuc2NvcGVWYWx1ZSgicGFyc2UiLHtyZWY6bi5wYXJzZX0pOigwLE0uXylgJHtlLnNjb3BlVmFsdWUoIndyYXBwZXIiLHtyZWY6bn0pfS5wYXJzZWB9ZnVuY3Rpb24gTnQoZSl7Z3QoZSxmdC5wYXJzZUpzb24pfWZ1bmN0aW9uIGd0KGUsbixyKXtPaShlLCgwLGNpLnVzZUZ1bmMpKGUuZ2VuLG4pLHIpfWZ1bmN0aW9uIE9pKGUsbixyKXtjb25zdHtnZW46byxkYXRhOnR9PWU7by5hc3NpZ24odCwoMCxNLl8pYCR7bn0oJHtKLmRlZmF1bHQuanNvbn0sICR7Si5kZWZhdWx0Lmpzb25Qb3N9JHtyPygwLE0uXylgLCAke3J9YDpNLm5pbH0pYCksby5hc3NpZ24oSi5kZWZhdWx0Lmpzb25Qb3MsKDAsTS5fKWAke259LnBvc2l0aW9uYCksby5pZigoMCxNLl8pYCR7dH0gPT09IHVuZGVmaW5lZGAsKCk9PkVuKGUsKDAsTS5fKWAke259Lm1lc3NhZ2VgKSl9ZnVuY3Rpb24gZW4oZSxuKXt2cihlLG4saXIpfWZ1bmN0aW9uIHZyKGUsbixyLG8pe2NvbnN0e2dlbjp0fT1lLHM9bi5sZW5ndGg7SXQoZSksdC5pZigoMCxNLl8pYCR7Um8ocyl9ID09PSAke259YCwoKT0+e3QuYWRkKEouZGVmYXVsdC5qc29uUG9zLHMpLG89PW51bGx8fG8oZSl9LCgpPT5yKGUpKX1mdW5jdGlvbiBJdCh7Z2VuOmUsY2hhcjpufSl7ZS5jb2RlKCgwLE0uXylgd2hpbGUoKCR7bn09JHtKLmRlZmF1bHQuanNvbn1bJHtKLmRlZmF1bHQuanNvblBvc31dLCR7bn09PT0iICJ8fCR7bn09PT0iXFxuInx8JHtufT09PSJcXHIifHwke259PT09IlxcdCIpKSR7Si5kZWZhdWx0Lmpzb25Qb3N9Kys7YCl9ZnVuY3Rpb24gUm8oZSl7cmV0dXJuIGU9PT0xPygwLE0uXylgJHtKLmRlZmF1bHQuanNvbn1bJHtKLmRlZmF1bHQuanNvblBvc31dYDooMCxNLl8pYCR7Si5kZWZhdWx0Lmpzb259LnNsaWNlKCR7Si5kZWZhdWx0Lmpzb25Qb3N9LCAke0ouZGVmYXVsdC5qc29uUG9zfSske2V9KWB9ZnVuY3Rpb24gaXIoZSl7RW4oZSwoMCxNLl8pYCJ1bmV4cGVjdGVkIHRva2VuICIgKyAke0ouZGVmYXVsdC5qc29ufVske0ouZGVmYXVsdC5qc29uUG9zfV1gKX1mdW5jdGlvbiBFbih7Z2VuOmUscGFyc2VOYW1lOm59LHIpe2UuYXNzaWduKCgwLE0uXylgJHtufS5tZXNzYWdlYCxyKSxlLmFzc2lnbigoMCxNLl8pYCR7bn0ucG9zaXRpb25gLEouZGVmYXVsdC5qc29uUG9zKSxlLnJldHVybihSdCl9KGZ1bmN0aW9uKGUsbil7T2JqZWN0LmRlZmluZVByb3BlcnR5KG4sIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLG4uQ29kZUdlbj1uLk5hbWU9bi5uaWw9bi5zdHJpbmdpZnk9bi5zdHI9bi5fPW4uS2V5d29yZEN4dD12b2lkIDA7Y29uc3Qgcj1vcyxvPXJ0LHQ9ZHQscz1odCxpPUV0LGw9IkpURC1tZXRhLXNjaGVtYSI7Y2xhc3MgYyBleHRlbmRzIHIuZGVmYXVsdHtjb25zdHJ1Y3RvcihPPXt9KXtzdXBlcihsZShZKHt9LE8pLHtqdGQ6ITB9KSl9X2FkZFZvY2FidWxhcmllcygpe3N1cGVyLl9hZGRWb2NhYnVsYXJpZXMoKSx0aGlzLmFkZFZvY2FidWxhcnkoby5kZWZhdWx0KX1fYWRkRGVmYXVsdE1ldGFTY2hlbWEoKXtzdXBlci5fYWRkRGVmYXVsdE1ldGFTY2hlbWEoKSx0aGlzLm9wdHMubWV0YSYmdGhpcy5hZGRNZXRhU2NoZW1hKHQuZGVmYXVsdCxsLCExKX1kZWZhdWx0TWV0YSgpe3JldHVybiB0aGlzLm9wdHMuZGVmYXVsdE1ldGE9c3VwZXIuZGVmYXVsdE1ldGEoKXx8KHRoaXMuZ2V0U2NoZW1hKGwpP2w6dm9pZCAwKX1jb21waWxlU2VyaWFsaXplcihPKXtjb25zdCBEPXRoaXMuX2FkZFNjaGVtYShPKTtyZXR1cm4gRC5zZXJpYWxpemV8fHRoaXMuX2NvbXBpbGVTZXJpYWxpemVyKEQpfWNvbXBpbGVQYXJzZXIoTyl7Y29uc3QgRD10aGlzLl9hZGRTY2hlbWEoTyk7cmV0dXJuIEQucGFyc2V8fHRoaXMuX2NvbXBpbGVQYXJzZXIoRCl9X2NvbXBpbGVTZXJpYWxpemVyKE8pe2lmKHMuZGVmYXVsdC5jYWxsKHRoaXMsTyxPLnNjaGVtYS5kZWZpbml0aW9uc3x8e30pLCFPLnNlcmlhbGl6ZSl0aHJvdyBuZXcgRXJyb3IoImFqdiBpbXBsZW1lbnRhdGlvbiBlcnJvciIpO3JldHVybiBPLnNlcmlhbGl6ZX1fY29tcGlsZVBhcnNlcihPKXtpZihpLmRlZmF1bHQuY2FsbCh0aGlzLE8sTy5zY2hlbWEuZGVmaW5pdGlvbnN8fHt9KSwhTy5wYXJzZSl0aHJvdyBuZXcgRXJyb3IoImFqdiBpbXBsZW1lbnRhdGlvbiBlcnJvciIpO3JldHVybiBPLnBhcnNlfX1lLmV4cG9ydHM9bj1jLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxuLmRlZmF1bHQ9Yzt2YXIgbT16ZTtPYmplY3QuZGVmaW5lUHJvcGVydHkobiwiS2V5d29yZEN4dCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG0uS2V5d29yZEN4dH19KTt2YXIgYT1fZTtPYmplY3QuZGVmaW5lUHJvcGVydHkobiwiXyIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGEuX319KSxPYmplY3QuZGVmaW5lUHJvcGVydHkobiwic3RyIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gYS5zdHJ9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KG4sInN0cmluZ2lmeSIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGEuc3RyaW5naWZ5fX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuLCJuaWwiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBhLm5pbH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkobiwiTmFtZSIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGEuTmFtZX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkobiwiQ29kZUdlbiIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGEuQ29kZUdlbn19KX0pKGpvLGpvLmV4cG9ydHMpO3ZhciBnYz1lZSYmZWUuX19pbXBvcnREZWZhdWx0fHxmdW5jdGlvbihlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eShHbiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksR24uVmFsaWRhdGU9R24uQWRkU2NoZW1hPXZvaWQgMDtjb25zdCBJYz1nYyhqby5leHBvcnRzKSxUaT1uZXcgSWMuZGVmYXVsdCxiYz0oZSxuKT0+ZShuKT9udWxsOmUuZXJyb3JzO2Z1bmN0aW9uIEFjKGUsbil7VGkuYWRkU2NoZW1hKG4sZSl9R24uQWRkU2NoZW1hPUFjO2Z1bmN0aW9uIFVjKGUsbil7Y29uc3Qgcj1UaS5nZXRTY2hlbWEoZSk7aWYocilyZXR1cm4gYmMocixuKX1Hbi5WYWxpZGF0ZT1VYyxPYmplY3QuZGVmaW5lUHJvcGVydHkob28sIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLG9vLlNUU09wdGlvbnNCYXNlPXZvaWQgMDtjb25zdCBIYz1HbjtjbGFzcyB2Y3tjb25zdHJ1Y3RvcihuPW51bGwpe1JyKHRoaXMsIl9vcHRpb25zIik7dGhpcy5fb3B0aW9ucz1uLG4hPT1udWxsJiYodHlwZW9mIG4udmFsaWRhdG9yPT0idW5kZWZpbmVkInx8KDAsSGMuVmFsaWRhdGUpKG4udmFsaWRhdG9yLG4pKX1nZXQgb3B0aW9ucygpe3JldHVybiB0aGlzLl9vcHRpb25zfX1vby5TVFNPcHRpb25zQmFzZT12Yzt2YXIgYXI9e307T2JqZWN0LmRlZmluZVByb3BlcnR5KGFyLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxhci5KZXN0U2xlZXA9YXIuU2xlZXA9dm9pZCAwO2FzeW5jIGZ1bmN0aW9uIE5pKGU9MWUzKXtyZXR1cm4gbmV3IFByb21pc2Uobj0+c2V0VGltZW91dChuLGUpKX1hci5TbGVlcD1OaTthc3luYyBmdW5jdGlvbiBEYygpe3JldHVybiBOaSgxMDApfWFyLkplc3RTbGVlcD1EYzt2YXIgZ2k9e307KGZ1bmN0aW9uKGUpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxlLmNvbXBhcmVQYXJhbWV0ZXJUeXBlcz1lLk9BdXRoMlBhcmFtZXRlckVycm9yVHlwZT1lLk9JRENBZGRyZXNzQ2xhaW09ZS5PSURDU3RhbmRhcmRDbGFpbT1lLk9BdXRoMlBhcmFtZXRlclR5cGU9dm9pZCAwLGZ1bmN0aW9uKG8pe28uQVVESUVOQ0U9IkFVRElFTkNFIixvLkNMSUVOVF9JRD0iY2xpZW50X2lkIixvLkNMSUVOVF9TRUNSRVQ9ImNsaWVudF9zZWNyZXQiLG8uUkVTUE9OU0VfVFlQRT0icmVzcG9uc2VfdHlwZSIsby5TQ09QRT0ic2NvcGUiLG8uU1RBVEU9InN0YXRlIixvLlJFRElSRUNUX1VSST0icmVkaXJlY3RfdXJpIixvLkVSUk9SPSJlcnJvciIsby5FUlJPUl9ERVNDUklQVElPTj0iZXJyb3JfZGVzY3JpcHRpb24iLG8uRVJST1JfQ09ERVM9ImVycm9yX2NvZGVzIixvLkVSUk9SX1VSST0iZXJyb3JfdXJpIixvLkdSQU5UX1RZUEU9ImdyYW50X3R5cGUiLG8uQ09ERT0iY29kZSIsby5BQ0NFU1NfVE9LRU49ImFjY2Vzc190b2tlbiIsby5UT0tFTl9UWVBFPSJ0b2tlbl90eXBlIixvLkVYUElSRVNfSU49ImV4cGlyZXNfaW4iLG8uVVNFUk5BTUU9InVzZXJuYW1lIixvLlBBU1NXT1JEPSJwYXNzd29yZCIsby5SRUZSRVNIX1RPS0VOPSJyZWZyZXNoX3Rva2VuIixvLlJFU1BPTlNFX01PREU9InJlc3BvbnNlX21vZGUiLG8uVElNRVNUQU1QPSJ0aW1lc3RhbXAiLG8uVFJBQ0VfSUQ9InRyYWNlX2lkIixvLkNPUlJFTEFUSU9OX0lEPSJjb3JyZWxhdGlvbl9pZCJ9KGUuT0F1dGgyUGFyYW1ldGVyVHlwZXx8KGUuT0F1dGgyUGFyYW1ldGVyVHlwZT17fSkpLGZ1bmN0aW9uKG8pe28uU1VCPSJzdWIiLG8uTkFNRT0ibmFtZSIsby5HSVZFTl9OQU1FPSJnaXZlbl9uYW1lIixvLkZBTUlMWV9OQU1FPSJmYW1pbHlfbmFtZSIsby5NSURETEVfTkFNRT0ibWlkZGxlX25hbWUiLG8uTklDS05BTUU9Im5pY2tuYW1lIixvLlBSRUZFUlJFRF9VU0VSTkFNRT0icHJlZmVycmVkX3VzZXJuYW1lIixvLlBST0ZJTEU9InByb2ZpbGUiLG8uUElDVFVSRT0icGljdHVyZSIsby5XRUJTSVRFPSJ3ZWJzaXRlIixvLkVNQUlMPSJlbWFpbCIsby5FTUFJTF9WRVJJRklFRD0iZW1haWxfdmVyaWZpZWQiLG8uR0VOREVSPSJnZW5kZXIiLG8uQklSVEhEQVRFPSJiaXJ0aGRhdGUiLG8uWk9ORUlORk89InpvbmVpbmZvIixvLkxPQ0FMRT0ibG9jYWxlIixvLlBIT05FX05VTUJFUj0icGhvbmVfbnVtYmVyIixvLlBIT05FX05VTUJFUl9WRVJJRklFRD0icGhvbmVfbnVtYmVyX3ZlcmlmaWVkIixvLkFERFJFU1M9ImFkZHJlc3MiLG8uQ0xJRU5UX1NFQ1JFVD0iY2xpZW50X3NlY3JldCIsby5OT05DRT0ibm9uY2UifShlLk9JRENTdGFuZGFyZENsYWltfHwoZS5PSURDU3RhbmRhcmRDbGFpbT17fSkpLGZ1bmN0aW9uKG8pe28uRk9STUFUVEVEPSJmb3JtYXR0ZWQiLG8uU1RSRUVUX0FERFJFU1M9InN0cmVldF9hZGRyZXNzIixvLkxPQ0FMSVRZPSJsb2NhbGl0eSIsby5SRUdJT049InJlZ2lvbiIsby5DT1VOVFJZPSJjb3VudHJ5In0oZS5PSURDQWRkcmVzc0NsYWltfHwoZS5PSURDQWRkcmVzc0NsYWltPXt9KSk7Y2xhc3Mgbnt9UnIobiwiTk9UX0VRVUFMIix7Y29kZToiU1RTX09BVVRIMl9FUlJfMDAwMSIsZGVzY3JpcHRpb246IlBhcmFtZXRlciB2YWx1ZXMgbm90IGVxdWFsLiJ9KSxScihuLCJOT1RfUFJFU0VOVCIse2NvZGU6IlNUU19PQVVUSDJfRVJSXzAwMDIiLGRlc2NyaXB0aW9uOiJQYXJhbWV0ZXIgbm90IHByb3ZpZGVkLiJ9KSxScihuLCJJTlZBTElEX0ZPUk1BVCIse2NvZGU6IlNUU19PQVVUSDJfRVJSXzAwMDMiLGRlc2NyaXB0aW9uOiJQYXJhbWV0ZXIgdmFsdWUgZm9ybWF0IGludmFsaWQuIn0pLFJyKG4sIkVYUElSRUQiLHtjb2RlOiJTVFNfT0FVVEgyX0VSUl8wMDA0IixkZXNjcmlwdGlvbjoiUGFyYW1ldGVyIHZhbHVlIGV4cGlyZWQuIn0pLGUuT0F1dGgyUGFyYW1ldGVyRXJyb3JUeXBlPW47ZnVuY3Rpb24gcihvLHQscyl7Y29uc3QgaT1bXTtmb3IobGV0IGw9MDtsPHMubGVuZ3RoO2wrKyl7Y29uc3QgYz1zW2xdO2lmKG9bbF0ubG9jYWxlQ29tcGFyZSh0W2xdKSE9PTApe2NvbnN0IG09e2Vycm9yOm4uTk9UX0VRVUFMLmNvZGUsZXJyb3JfZGVzY3JpcHRpb246bi5OT1RfRVFVQUwuZGVzY3JpcHRpb24sdGltZXN0YW1wOkRhdGUubm93KCksZGV0YWlsczpgJHtuLk5PVF9FUVVBTC5kZXNjcmlwdGlvbn06IFBhcmFtZXRlcjogWyR7Y31dYH07aS5wdXNoKG0pfX1yZXR1cm4gaX1lLmNvbXBhcmVQYXJhbWV0ZXJUeXBlcz1yfSkoZ2kpLGZ1bmN0aW9uKGUpe3ZhciBuPWVlJiZlZS5fX2NyZWF0ZUJpbmRpbmd8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKHQscyxpLGwpe2w9PT12b2lkIDAmJihsPWkpO3ZhciBjPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IocyxpKTsoIWN8fCgiZ2V0ImluIGM/IXMuX19lc01vZHVsZTpjLndyaXRhYmxlfHxjLmNvbmZpZ3VyYWJsZSkpJiYoYz17ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gc1tpXX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxsLGMpfTpmdW5jdGlvbih0LHMsaSxsKXtsPT09dm9pZCAwJiYobD1pKSx0W2xdPXNbaV19KSxyPWVlJiZlZS5fX2V4cG9ydFN0YXJ8fGZ1bmN0aW9uKHQscyl7Zm9yKHZhciBpIGluIHQpaSE9PSJkZWZhdWx0IiYmIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLGkpJiZuKHMsdCxpKX07T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLGUuJHN0c2dkZj1lLiRzdHNnZD12b2lkIDAscihybyxlKSxyKG9vLGUpLHIoYXIsZSkscihHbixlKSxyKGdpLGUpLGUuJHN0c2dkPXt9O2Z1bmN0aW9uIG8oKXtyZXR1cm4gZS4kc3RzZ2R9ZS4kc3RzZ2RmPW99KHduKTtjbGFzcyBTY3tjb25zdHJ1Y3Rvcigpe3RoaXMuRGlnZXN0TWVzc2FnZT1hc3luYyBmdW5jdGlvbihuKXtjb25zdCBvPW5ldyBUZXh0RW5jb2RlcigpLmVuY29kZShuKSx0PWF3YWl0IGNyeXB0by5zdWJ0bGUuZGlnZXN0KCJTSEEtMjU2IixvKSxzPUFycmF5LmZyb20obmV3IFVpbnQ4QXJyYXkodCkpO3JldHVybiBidG9hKFN0cmluZy5mcm9tQ2hhckNvZGUoLi4ucykpfSx0aGlzLkNyZWF0ZVJhbmRvbVN0cmluZz0obj00Myk9Pntjb25zdCByPUFycmF5LmZyb20oY3J5cHRvLmdldFJhbmRvbVZhbHVlcyhuZXcgVWludDhBcnJheShuKSkpO3JldHVybiBidG9hKFN0cmluZy5mcm9tQ2hhckNvZGUoLi4ucikpfSx0aGlzLkNyZWF0ZVJhbmRvbVN0cmluZ0V4PSgpPT57Y29uc3Qgbj0iMDEyMzQ1Njc4OUFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXotX34uIjtsZXQgcj0iIjtyZXR1cm4gQXJyYXkuZnJvbShjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKG5ldyBVaW50OEFycmF5KDQzKSkpLmZvckVhY2godD0+cis9blt0JW4ubGVuZ3RoXSkscn19fWNsYXNzIFBje2NvbnN0cnVjdG9yKCl7dGhpcy5EZWNvZGVRdWVyeVBhcmFtcz1uPT57Y29uc3Qgcj17fTtyZXR1cm4gT2JqZWN0LmtleXMobikuZmlsdGVyKG89PnR5cGVvZiBuW29dIT0idW5kZWZpbmVkIikubWFwKG89PntyW2RlY29kZVVSSUNvbXBvbmVudChvKV09ZGVjb2RlVVJJQ29tcG9uZW50KG5bb10pfSkscn0sdGhpcy5DcmVhdGVRdWVyeVBhcmFtcz1uPT5PYmplY3Qua2V5cyhuKS5maWx0ZXIocj0+dHlwZW9mIG5bcl0hPSJ1bmRlZmluZWQiKS5tYXAocj0+QXJyYXkuaXNBcnJheShuW3JdKT9lbmNvZGVVUklDb21wb25lbnQocikrIj0iK2VuY29kZVVSSUNvbXBvbmVudChuW3JdLmpvaW4oIiAiKSk6ZW5jb2RlVVJJQ29tcG9uZW50KHIpKyI9IitlbmNvZGVVUklDb21wb25lbnQobltyXSkpLmpvaW4oIiYiKSx0aGlzLl9HZXRRdWVyeVBhcmFtcz1uPT57bGV0IHI9e307Y29uc3Qgbz1uLnNwbGl0KCI/Iik7aWYoby5sZW5ndGg9PTIpe2NvbnN0IHQ9b1sxXS5zcGxpdCgiJiIpLHM9e307bGV0IGk9IiI7dC5mb3JFYWNoKGZ1bmN0aW9uKGwpe2k9bC5zcGxpdCgiPSIpLGkubGVuZ3RoPT0yJiYoc1tpWzBdXT1pWzFdKX0pLHI9dGhpcy5EZWNvZGVRdWVyeVBhcmFtcyhzKX1yZXR1cm4gcn0sdGhpcy5HZXRRdWVyeVBhcmFtcz0oKT0+dGhpcy5fR2V0UXVlcnlQYXJhbXMod2luZG93LmxvY2F0aW9uLmhyZWYpfX1mdW5jdGlvbiBidChlKXt0aGlzLm1lc3NhZ2U9ZX1idC5wcm90b3R5cGU9bmV3IEVycm9yLGJ0LnByb3RvdHlwZS5uYW1lPSJJbnZhbGlkQ2hhcmFjdGVyRXJyb3IiO3ZhciBJaT10eXBlb2Ygd2luZG93IT0idW5kZWZpbmVkIiYmd2luZG93LmF0b2ImJndpbmRvdy5hdG9iLmJpbmQod2luZG93KXx8ZnVuY3Rpb24oZSl7dmFyIG49U3RyaW5nKGUpLnJlcGxhY2UoLz0rJC8sIiIpO2lmKG4ubGVuZ3RoJTQ9PTEpdGhyb3cgbmV3IGJ0KCInYXRvYicgZmFpbGVkOiBUaGUgc3RyaW5nIHRvIGJlIGRlY29kZWQgaXMgbm90IGNvcnJlY3RseSBlbmNvZGVkLiIpO2Zvcih2YXIgcixvLHQ9MCxzPTAsaT0iIjtvPW4uY2hhckF0KHMrKyk7fm8mJihyPXQlND82NCpyK286byx0KyslNCk/aSs9U3RyaW5nLmZyb21DaGFyQ29kZSgyNTUmcj4+KC0yKnQmNikpOjApbz0iQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLz0iLmluZGV4T2Yobyk7cmV0dXJuIGl9O2Z1bmN0aW9uIHdjKGUpe3ZhciBuPWUucmVwbGFjZSgvLS9nLCIrIikucmVwbGFjZSgvXy9nLCIvIik7c3dpdGNoKG4ubGVuZ3RoJTQpe2Nhc2UgMDpicmVhaztjYXNlIDI6bis9Ij09IjticmVhaztjYXNlIDM6bis9Ij0iO2JyZWFrO2RlZmF1bHQ6dGhyb3ciSWxsZWdhbCBiYXNlNjR1cmwgc3RyaW5nISJ9dHJ5e3JldHVybiBmdW5jdGlvbihyKXtyZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KElpKHIpLnJlcGxhY2UoLyguKS9nLGZ1bmN0aW9uKG8sdCl7dmFyIHM9dC5jaGFyQ29kZUF0KDApLnRvU3RyaW5nKDE2KS50b1VwcGVyQ2FzZSgpO3JldHVybiBzLmxlbmd0aDwyJiYocz0iMCIrcyksIiUiK3N9KSl9KG4pfWNhdGNoe3JldHVybiBJaShuKX19ZnVuY3Rpb24gT28oZSl7dGhpcy5tZXNzYWdlPWV9ZnVuY3Rpb24gR2MoZSxuKXtpZih0eXBlb2YgZSE9InN0cmluZyIpdGhyb3cgbmV3IE9vKCJJbnZhbGlkIHRva2VuIHNwZWNpZmllZCIpO3ZhciByPShuPW58fHt9KS5oZWFkZXI9PT0hMD8wOjE7dHJ5e3JldHVybiBKU09OLnBhcnNlKHdjKGUuc3BsaXQoIi4iKVtyXSkpfWNhdGNoKG8pe3Rocm93IG5ldyBPbygiSW52YWxpZCB0b2tlbiBzcGVjaWZpZWQ6ICIrby5tZXNzYWdlKX19T28ucHJvdG90eXBlPW5ldyBFcnJvcixPby5wcm90b3R5cGUubmFtZT0iSW52YWxpZFRva2VuRXJyb3IiO3ZhciBEcj1lZSYmZWUuX19hc3NpZ258fGZ1bmN0aW9uKCl7cmV0dXJuIERyPU9iamVjdC5hc3NpZ258fGZ1bmN0aW9uKGUpe2Zvcih2YXIgbixyPTEsbz1hcmd1bWVudHMubGVuZ3RoO3I8bztyKyspe249YXJndW1lbnRzW3JdO2Zvcih2YXIgdCBpbiBuKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuLHQpJiYoZVt0XT1uW3RdKX1yZXR1cm4gZX0sRHIuYXBwbHkodGhpcyxhcmd1bWVudHMpfTtmdW5jdGlvbiBTcihlLG4pe2lmKCFuKXJldHVybiIiO3ZhciByPSI7ICIrZTtyZXR1cm4gbj09PSEwP3I6cisiPSIrbn1mdW5jdGlvbiBDYyhlKXtpZih0eXBlb2YgZS5leHBpcmVzPT0ibnVtYmVyIil7dmFyIG49bmV3IERhdGU7bi5zZXRNaWxsaXNlY29uZHMobi5nZXRNaWxsaXNlY29uZHMoKStlLmV4cGlyZXMqODY0ZTUpLGUuZXhwaXJlcz1ufXJldHVybiBTcigiRXhwaXJlcyIsZS5leHBpcmVzP2UuZXhwaXJlcy50b1VUQ1N0cmluZygpOiIiKStTcigiRG9tYWluIixlLmRvbWFpbikrU3IoIlBhdGgiLGUucGF0aCkrU3IoIlNlY3VyZSIsZS5zZWN1cmUpK1NyKCJTYW1lU2l0ZSIsZS5zYW1lU2l0ZSl9ZnVuY3Rpb24geWMoZSxuLHIpe3JldHVybiBlbmNvZGVVUklDb21wb25lbnQoZSkucmVwbGFjZSgvJSgyM3wyNHwyNnwyQnw1RXw2MHw3QykvZyxkZWNvZGVVUklDb21wb25lbnQpLnJlcGxhY2UoL1woL2csIiUyOCIpLnJlcGxhY2UoL1wpL2csIiUyOSIpKyI9IitlbmNvZGVVUklDb21wb25lbnQobikucmVwbGFjZSgvJSgyM3wyNHwyNnwyQnwzQXwzQ3wzRXwzRHwyRnwzRnw0MHw1Qnw1RHw1RXw2MHw3Qnw3RHw3QykvZyxkZWNvZGVVUklDb21wb25lbnQpK0NjKHIpfWZ1bmN0aW9uIExjKGUpe2Zvcih2YXIgbj17fSxyPWU/ZS5zcGxpdCgiOyAiKTpbXSxvPS8oJVtcZEEtRl17Mn0pKy9naSx0PTA7dDxyLmxlbmd0aDt0Kyspe3ZhciBzPXJbdF0uc3BsaXQoIj0iKSxpPXMuc2xpY2UoMSkuam9pbigiPSIpO2kuY2hhckF0KDApPT09JyInJiYoaT1pLnNsaWNlKDEsLTEpKTt0cnl7dmFyIGw9c1swXS5yZXBsYWNlKG8sZGVjb2RlVVJJQ29tcG9uZW50KTtuW2xdPWkucmVwbGFjZShvLGRlY29kZVVSSUNvbXBvbmVudCl9Y2F0Y2h7fX1yZXR1cm4gbn1mdW5jdGlvbiBCYygpe3JldHVybiBMYyhkb2N1bWVudC5jb29raWUpfWZ1bmN0aW9uIGtjKGUpe3JldHVybiBCYygpW2VdfXZhciBNYz1rYztmdW5jdGlvbiBiaShlLG4scil7ZG9jdW1lbnQuY29va2llPXljKGUsbixEcih7cGF0aDoiLyJ9LHIpKX12YXIgWGM9Ymk7ZnVuY3Rpb24gJGMoZSxuKXtiaShlLCIiLERyKERyKHt9LG4pLHtleHBpcmVzOi0xfSkpfXZhciBqYz0kYztjb25zdCBUbz12dChgcHJvYzokezB9OnN0b3JhZ2UudHNgKTt2YXIgQWk9KGU9PihlLkxPQ0FMX1NUT1JBR0U9IkxvY2FsU3RvcmFnZSIsZS5TRVNTSU9OX1NUT1JBR0U9IlNlc3Npb25TdG9yYWdlIixlLkNPT0tJRV9TVE9SQUdFPSJDb29raWVTdG9yYWdlIixlLk1FTU9SWV9TVE9SQUdFPSJNZW1vcnlTdG9yYWdlIixlKSkoQWl8fHt9KTtjbGFzcyB4Y3tjb25zdHJ1Y3Rvcigpe3RoaXMuZ2V0PW49Pntjb25zdCByPU1jKG4pO3JldHVybiByP0pTT04ucGFyc2Uocik6bnVsbH0sdGhpcy5zZXQ9KG4scixvPXt9KT0+e2xldCB0PXt9O3dpbmRvdy5sb2NhdGlvbi5wcm90b2NvbD09PSJodHRwczoiJiYodD17c2VjdXJlOiEwLHNhbWVTaXRlOiJub25lIn0pLG8mJm8uZGF5c1VudGlsRXhwaXJlP3QuZXhwaXJlcz1vLmRheXNVbnRpbEV4cGlyZTp0LmV4cGlyZXM9MSxUbyhgQ29va2llU3RvcmFnZS5zZXQ6IGtleTogJHtufSwgdmFsdWU6IFske3J9XWApLFhjKG4sSlNPTi5zdHJpbmdpZnkociksdCl9LHRoaXMucmVtb3ZlPW49PntqYyhuKX19fWNsYXNzIEZje2NvbnN0cnVjdG9yKCl7dGhpcy5nZXQ9bj0+e2NvbnN0IHI9c2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbShuKTtyZXR1cm4gdHlwZW9mIHI9PSJ1bmRlZmluZWQifHxyPT09bnVsbD9udWxsOkpTT04ucGFyc2Uocil9LHRoaXMuc2V0PShuLHIpPT57VG8oYFNlc3Npb25TdG9yYWdlLnNldDoga2V5OiAke259LCB2YWx1ZTogWyR7cn1dYCksc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbShuLEpTT04uc3RyaW5naWZ5KHIpKX0sdGhpcy5yZW1vdmU9bj0+e3Nlc3Npb25TdG9yYWdlLnJlbW92ZUl0ZW0obil9fX1jbGFzcyBWY3tjb25zdHJ1Y3Rvcigpe3RoaXMuZ2V0PW49Pntjb25zdCByPWxvY2FsU3RvcmFnZS5nZXRJdGVtKG4pO3JldHVybiB0eXBlb2Ygcj09InVuZGVmaW5lZCJ8fHI9PT1udWxsP251bGw6SlNPTi5wYXJzZShyKX0sdGhpcy5zZXQ9KG4scik9PntUbyhgTG9jYWxTdG9yYWdlLnNldDoga2V5OiAke259LCB2YWx1ZTogWyR7cn1dYCksbG9jYWxTdG9yYWdlLnNldEl0ZW0obixKU09OLnN0cmluZ2lmeShyKSl9LHRoaXMucmVtb3ZlPW49Pntsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShuKX19fWNsYXNzIEtje2NvbnN0cnVjdG9yKCl7SWUodGhpcyx4bix2b2lkIDApO3VlKHRoaXMseG4se30pLHRoaXMuZ2V0PW49Pntjb25zdCByPVgodGhpcyx4bilbbl07cmV0dXJuIHR5cGVvZiByPT0idW5kZWZpbmVkInx8cj09PW51bGw/bnVsbDpyfSx0aGlzLnNldD0obixyKT0+e1RvKGBNZW1vcnlTdG9yYWdlLnNldDoga2V5OiAke259LCB2YWx1ZTogWyR7cn1dYCksWCh0aGlzLHhuKVtuXT1yfSx0aGlzLnJlbW92ZT1uPT57ZGVsZXRlIFgodGhpcyx4bilbbl19fX14bj1uZXcgV2Vha01hcDtjbGFzcyBXY3tjb25zdHJ1Y3RvcihuKXtJZSh0aGlzLFVuLG51bGwpO3N3aXRjaChuLmNsaWVudFN0b3JhZ2VUeXBlKXtjYXNlIlNlc3Npb25TdG9yYWdlIjp1ZSh0aGlzLFVuLG5ldyBGYyk7YnJlYWs7Y2FzZSJMb2NhbFN0b3JhZ2UiOnVlKHRoaXMsVW4sbmV3IFZjKTticmVhaztjYXNlIkNvb2tpZVN0b3JhZ2UiOnVlKHRoaXMsVW4sbmV3IHhjKTticmVhaztjYXNlIk1lbW9yeVN0b3JhZ2UiOnVlKHRoaXMsVW4sbmV3IEtjKTticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcihgVW5rbm93biBbJHtuLmNsaWVudFN0b3JhZ2VUeXBlfV0gc3RvcmFnZSB0eXBlLmApfX1HZXRTdG9yYWdlKCl7cmV0dXJuIFgodGhpcyxVbil9fVVuPW5ldyBXZWFrTWFwO3ZhciB1cjsoZnVuY3Rpb24oZSl7ZVtlLkFDQ0VQVEVEPTIwMl09IkFDQ0VQVEVEIixlW2UuQkFEX0dBVEVXQVk9NTAyXT0iQkFEX0dBVEVXQVkiLGVbZS5CQURfUkVRVUVTVD00MDBdPSJCQURfUkVRVUVTVCIsZVtlLkNPTkZMSUNUPTQwOV09IkNPTkZMSUNUIixlW2UuQ09OVElOVUU9MTAwXT0iQ09OVElOVUUiLGVbZS5DUkVBVEVEPTIwMV09IkNSRUFURUQiLGVbZS5FWFBFQ1RBVElPTl9GQUlMRUQ9NDE3XT0iRVhQRUNUQVRJT05fRkFJTEVEIixlW2UuRkFJTEVEX0RFUEVOREVOQ1k9NDI0XT0iRkFJTEVEX0RFUEVOREVOQ1kiLGVbZS5GT1JCSURERU49NDAzXT0iRk9SQklEREVOIixlW2UuR0FURVdBWV9USU1FT1VUPTUwNF09IkdBVEVXQVlfVElNRU9VVCIsZVtlLkdPTkU9NDEwXT0iR09ORSIsZVtlLkhUVFBfVkVSU0lPTl9OT1RfU1VQUE9SVEVEPTUwNV09IkhUVFBfVkVSU0lPTl9OT1RfU1VQUE9SVEVEIixlW2UuSU1fQV9URUFQT1Q9NDE4XT0iSU1fQV9URUFQT1QiLGVbZS5JTlNVRkZJQ0lFTlRfU1BBQ0VfT05fUkVTT1VSQ0U9NDE5XT0iSU5TVUZGSUNJRU5UX1NQQUNFX09OX1JFU09VUkNFIixlW2UuSU5TVUZGSUNJRU5UX1NUT1JBR0U9NTA3XT0iSU5TVUZGSUNJRU5UX1NUT1JBR0UiLGVbZS5JTlRFUk5BTF9TRVJWRVJfRVJST1I9NTAwXT0iSU5URVJOQUxfU0VSVkVSX0VSUk9SIixlW2UuTEVOR1RIX1JFUVVJUkVEPTQxMV09IkxFTkdUSF9SRVFVSVJFRCIsZVtlLkxPQ0tFRD00MjNdPSJMT0NLRUQiLGVbZS5NRVRIT0RfRkFJTFVSRT00MjBdPSJNRVRIT0RfRkFJTFVSRSIsZVtlLk1FVEhPRF9OT1RfQUxMT1dFRD00MDVdPSJNRVRIT0RfTk9UX0FMTE9XRUQiLGVbZS5NT1ZFRF9QRVJNQU5FTlRMWT0zMDFdPSJNT1ZFRF9QRVJNQU5FTlRMWSIsZVtlLk1PVkVEX1RFTVBPUkFSSUxZPTMwMl09Ik1PVkVEX1RFTVBPUkFSSUxZIixlW2UuTVVMVElfU1RBVFVTPTIwN109Ik1VTFRJX1NUQVRVUyIsZVtlLk1VTFRJUExFX0NIT0lDRVM9MzAwXT0iTVVMVElQTEVfQ0hPSUNFUyIsZVtlLk5FVFdPUktfQVVUSEVOVElDQVRJT05fUkVRVUlSRUQ9NTExXT0iTkVUV09SS19BVVRIRU5USUNBVElPTl9SRVFVSVJFRCIsZVtlLk5PX0NPTlRFTlQ9MjA0XT0iTk9fQ09OVEVOVCIsZVtlLk5PTl9BVVRIT1JJVEFUSVZFX0lORk9STUFUSU9OPTIwM109Ik5PTl9BVVRIT1JJVEFUSVZFX0lORk9STUFUSU9OIixlW2UuTk9UX0FDQ0VQVEFCTEU9NDA2XT0iTk9UX0FDQ0VQVEFCTEUiLGVbZS5OT1RfRk9VTkQ9NDA0XT0iTk9UX0ZPVU5EIixlW2UuTk9UX0lNUExFTUVOVEVEPTUwMV09Ik5PVF9JTVBMRU1FTlRFRCIsZVtlLk5PVF9NT0RJRklFRD0zMDRdPSJOT1RfTU9ESUZJRUQiLGVbZS5PSz0yMDBdPSJPSyIsZVtlLlBBUlRJQUxfQ09OVEVOVD0yMDZdPSJQQVJUSUFMX0NPTlRFTlQiLGVbZS5QQVlNRU5UX1JFUVVJUkVEPTQwMl09IlBBWU1FTlRfUkVRVUlSRUQiLGVbZS5QRVJNQU5FTlRfUkVESVJFQ1Q9MzA4XT0iUEVSTUFORU5UX1JFRElSRUNUIixlW2UuUFJFQ09ORElUSU9OX0ZBSUxFRD00MTJdPSJQUkVDT05ESVRJT05fRkFJTEVEIixlW2UuUFJFQ09ORElUSU9OX1JFUVVJUkVEPTQyOF09IlBSRUNPTkRJVElPTl9SRVFVSVJFRCIsZVtlLlBST0NFU1NJTkc9MTAyXT0iUFJPQ0VTU0lORyIsZVtlLlBST1hZX0FVVEhFTlRJQ0FUSU9OX1JFUVVJUkVEPTQwN109IlBST1hZX0FVVEhFTlRJQ0FUSU9OX1JFUVVJUkVEIixlW2UuUkVRVUVTVF9IRUFERVJfRklFTERTX1RPT19MQVJHRT00MzFdPSJSRVFVRVNUX0hFQURFUl9GSUVMRFNfVE9PX0xBUkdFIixlW2UuUkVRVUVTVF9USU1FT1VUPTQwOF09IlJFUVVFU1RfVElNRU9VVCIsZVtlLlJFUVVFU1RfVE9PX0xPTkc9NDEzXT0iUkVRVUVTVF9UT09fTE9ORyIsZVtlLlJFUVVFU1RfVVJJX1RPT19MT05HPTQxNF09IlJFUVVFU1RfVVJJX1RPT19MT05HIixlW2UuUkVRVUVTVEVEX1JBTkdFX05PVF9TQVRJU0ZJQUJMRT00MTZdPSJSRVFVRVNURURfUkFOR0VfTk9UX1NBVElTRklBQkxFIixlW2UuUkVTRVRfQ09OVEVOVD0yMDVdPSJSRVNFVF9DT05URU5UIixlW2UuU0VFX09USEVSPTMwM109IlNFRV9PVEhFUiIsZVtlLlNFUlZJQ0VfVU5BVkFJTEFCTEU9NTAzXT0iU0VSVklDRV9VTkFWQUlMQUJMRSIsZVtlLlNXSVRDSElOR19QUk9UT0NPTFM9MTAxXT0iU1dJVENISU5HX1BST1RPQ09MUyIsZVtlLlRFTVBPUkFSWV9SRURJUkVDVD0zMDddPSJURU1QT1JBUllfUkVESVJFQ1QiLGVbZS5UT09fTUFOWV9SRVFVRVNUUz00MjldPSJUT09fTUFOWV9SRVFVRVNUUyIsZVtlLlVOQVVUSE9SSVpFRD00MDFdPSJVTkFVVEhPUklaRUQiLGVbZS5VTkFWQUlMQUJMRV9GT1JfTEVHQUxfUkVBU09OUz00NTFdPSJVTkFWQUlMQUJMRV9GT1JfTEVHQUxfUkVBU09OUyIsZVtlLlVOUFJPQ0VTU0FCTEVfRU5USVRZPTQyMl09IlVOUFJPQ0VTU0FCTEVfRU5USVRZIixlW2UuVU5TVVBQT1JURURfTUVESUFfVFlQRT00MTVdPSJVTlNVUFBPUlRFRF9NRURJQV9UWVBFIixlW2UuVVNFX1BST1hZPTMwNV09IlVTRV9QUk9YWSIsZVtlLk1JU0RJUkVDVEVEX1JFUVVFU1Q9NDIxXT0iTUlTRElSRUNURURfUkVRVUVTVCJ9KSh1cnx8KHVyPXt9KSk7dmFyIFVpPShlPT4oZS5DT0RFPSJjb2RlIixlLklEX1RPS0VOPSJpZF90b2tlbiIsZS5UT0tFTj0idG9rZW4iLGUpKShVaXx8e30pLEhpPShlPT4oZS5RVUVSWT0icXVlcnkiLGUuRlJBR01FTlQ9ImZyYWdtZW50IixlLkZPUk1fUE9TVD0iZm9ybV9wb3N0IixlKSkoSGl8fHt9KSxBdD0oZT0+KGUuQ0xJRU5UX0NSRURFTlRJQUxTPSJjbGllbnRfY3JlZGVudGlhbHMiLGUuQVVUSE9SSVpBVElPTl9DT0RFPSJhdXRob3JpemF0aW9uX2NvZGUiLGUuUkVGUkVTSF9UT0tFTj0icmVmcmVzaF90b2tlbiIsZSkpKEF0fHx7fSksam49KGU9PihlLlJFU1RPUkVfU0VTU0lPTj0iUmVzdG9yZVNlc3Npb24iLGUuQVVUSE9SSVpFPSJBdXRob3JpemUiLGUuSEFORExFX1JFRElSRUNUPSJIYW5kbGVSZWRpcmVjdCIsZS5MT0dPVVQ9IkxvZ291dCIsZS5BVVRIRU5USUNBVEVfRVZFTlQ9IkF1dGhlbnRpY2F0ZUV2ZW50IixlLkVSUk9SPSJFcnJvciIsZSkpKGpufHx7fSk7dnQoYHByb2M6JHswfTpzdHNvYXV0aDJ3b3JrZXIudHNgKTtjbGFzcyBZY3tjb25zdHJ1Y3RvcihuKXtJZSh0aGlzLEJlLHZvaWQgMCk7SWUodGhpcyxIbix2b2lkIDApO0llKHRoaXMsUHIsdm9pZCAwKTtJZSh0aGlzLE5vLHZvaWQgMCk7SWUodGhpcyxqZSx2b2lkIDApO0llKHRoaXMsZm4sdm9pZCAwKTtJZSh0aGlzLHZuLHZvaWQgMCk7SWUodGhpcyx4ZSx2b2lkIDApO0llKHRoaXMsRm4sdm9pZCAwKTtJZSh0aGlzLGdvLHZvaWQgMCk7SWUodGhpcyxubix2b2lkIDApO0llKHRoaXMsd3Isdm9pZCAwKTtJZSh0aGlzLEdyLHZvaWQgMCk7SWUodGhpcyxDcix2b2lkIDApO0llKHRoaXMsX3Isdm9pZCAwKTtJZSh0aGlzLHlyLHZvaWQgMCk7SWUodGhpcyxMcix2b2lkIDApO0llKHRoaXMsQnIsdm9pZCAwKTt1ZSh0aGlzLEJlLG51bGwpLHVlKHRoaXMsSG4sbmV3IFNjKSx1ZSh0aGlzLFByLG5ldyBQYyksdWUodGhpcyxObywiYXV0aG9yaXplX29wdGlvbnMuc3RzbWRhLmNvbS5hdSIpLHVlKHRoaXMsamUsInNlc3Npb24uc3RzbWRhLmNvbS5hdSIpLHVlKHRoaXMsZm4sbnVsbCksdWUodGhpcyx2bixudWxsKSx1ZSh0aGlzLHhlLG51bGwpLHVlKHRoaXMsRm4sbnVsbCksdWUodGhpcyxnbywwKSx0aGlzLlNldHVwTGlzdGVuZXI9KCk9PntYKHRoaXMsRm4pLm9ubWVzc2FnZT1hc3luYyByPT57Y29uc3Qgbz1yLmRhdGE7c3dpdGNoKG8uY29tbWFuZCl7Y2FzZSBqbi5SRVNUT1JFX1NFU1NJT046WCh0aGlzLG5uKS5jYWxsKHRoaXMsbyxhd2FpdCBYKHRoaXMsd3IpLmNhbGwodGhpcykpO2JyZWFrO2Nhc2Ugam4uQVVUSE9SSVpFOlgodGhpcyxubikuY2FsbCh0aGlzLG8sYXdhaXQgWCh0aGlzLEdyKS5jYWxsKHRoaXMpKTticmVhaztjYXNlIGpuLkhBTkRMRV9SRURJUkVDVDpYKHRoaXMsbm4pLmNhbGwodGhpcyxvLGF3YWl0IFgodGhpcyxDcikuY2FsbCh0aGlzLG8ucGF5bG9hZCkpO2JyZWFrO2Nhc2Ugam4uTE9HT1VUOlgodGhpcyxubikuY2FsbCh0aGlzLG8sYXdhaXQgWCh0aGlzLEJyKS5jYWxsKHRoaXMpKTticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcihgQ29tbWFuZDogWyR7by5jb21tYW5kfSddIG5vdCBmb3VuZC5gKX19fSx1ZSh0aGlzLG5uLGFzeW5jKHIsbyk9Pntjb25zdCB0PXttZXNzYWdlSWQ6ci5tZXNzYWdlSWQsY29tbWFuZDpyLmNvbW1hbmQscGF5bG9hZDpvfTtYKHRoaXMsRm4pLnBvc3RNZXNzYWdlKHQpfSksdWUodGhpcyx3cixhc3luYygpPT57bGV0IHI9bnVsbDtpZihyPVgodGhpcyxCZSkuZ2V0KFgodGhpcyxqZSkpLHIhPT1udWxsKWNvbnNvbGUubG9nKCJTZXNzaW9uIHJlc3RvcmVkIGZyb20gY2xpZW50IHN0b3JhZ2UuIiksWCh0aGlzLGZuKSYmWCh0aGlzLGZuKS5VcGRhdGVJbnN0cnVtZW50KCJtIix7TG9nTWVzc2FnZToiU2Vzc2lvbiByZXN0b3JlZCBmcm9tIGNsaWVudCBzdG9yYWdlLiJ9KTtlbHNle2NvbnN0IG89YCR7e0RFUExPWU1FTlRfQkFTRVBBVEg6Ii9vcHQvcnVubmVyIixET1RORVRfTk9MT0dPOiIxIixVU0VSOiJydW5uZXIiLG5wbV9jb25maWdfYWx3YXlzX2F1dGg6IiIsbnBtX2NvbmZpZ191c2VyX2FnZW50OiJucG0vOC4xMS4wIG5vZGUvdjE4LjMuMCBsaW51eCB4NjQgd29ya3NwYWNlcy9mYWxzZSBjaS9naXRodWItYWN0aW9ucyIsQ0k6InRydWUiLEdJVEhVQl9FTlY6Ii9ob21lL3J1bm5lci93b3JrL190ZW1wL19ydW5uZXJfZmlsZV9jb21tYW5kcy9zZXRfZW52XzVjNGY2ZjE4LTE2NjUtNDYzOC1iNDIwLWJjZDAyZjY2NTgxMCIsUElQWF9IT01FOiIvb3B0L3BpcHgiLG5wbV9ub2RlX2V4ZWNwYXRoOiIvb3B0L2hvc3RlZHRvb2xjYWNoZS9ub2RlLzE4LjMuMC94NjQvYmluL25vZGUiLEpBVkFfSE9NRV84X1g2NDoiL3Vzci9saWIvanZtL3RlbXVyaW4tOC1qZGstYW1kNjQiLE5PREVfQVVUSF9UT0tFTjoiWFhYWFgtWFhYWFgtWFhYWFgtWFhYWFgiLFNITFZMOiIxIixucG1fY29uZmlnX25vcHJveHk6IiIsSE9NRToiL2hvbWUvcnVubmVyIixSVU5ORVJfVEVNUDoiL2hvbWUvcnVubmVyL3dvcmsvX3RlbXAiLEdJVEhVQl9FVkVOVF9QQVRIOiIvaG9tZS9ydW5uZXIvd29yay9fdGVtcC9fZ2l0aHViX3dvcmtmbG93L2V2ZW50Lmpzb24iLG5wbV9wYWNrYWdlX2pzb246Ii9ob21lL3J1bm5lci93b3JrL3N0c29hdXRoMnBsdWdpbi9zdHNvYXV0aDJwbHVnaW4vcGFja2FnZS5qc29uIixKQVZBX0hPTUVfMTFfWDY0OiIvdXNyL2xpYi9qdm0vdGVtdXJpbi0xMS1qZGstYW1kNjQiLFBJUFhfQklOX0RJUjoiL29wdC9waXB4X2JpbiIsR1JBQUxWTV8xMV9ST09UOiIvdXNyL2xvY2FsL2dyYWFsdm0vZ3JhYWx2bS1jZS1qYXZhMTEtMjIuMS4wIixHSVRIVUJfUkVQT1NJVE9SWV9PV05FUjoibnNzaHVudCIsR1JBRExFX0hPTUU6Ii91c3Ivc2hhcmUvZ3JhZGxlLTcuNC4yIixIT01FQlJFV19QUkVGSVg6Ii9ob21lL2xpbnV4YnJldy8ubGludXhicmV3IixBTkRST0lEX05ES19MQVRFU1RfSE9NRToiL3Vzci9sb2NhbC9saWIvYW5kcm9pZC9zZGsvbmRrLzI0LjAuODIxNTg4OCIsR0lUSFVCX1JFVEVOVElPTl9EQVlTOiI5MCIsUE9XRVJTSEVMTF9ESVNUUklCVVRJT05fQ0hBTk5FTDoiR2l0SHViLUFjdGlvbnMtdWJ1bnR1MjAiLEFaVVJFX0VYVEVOU0lPTl9ESVI6Ii9vcHQvYXovYXpjbGlleHRlbnNpb25zIixHSVRIVUJfSEVBRF9SRUY6IiIsbnBtX2NvbmZpZ19sb2NhbF9wcmVmaXg6Ii9ob21lL3J1bm5lci93b3JrL3N0c29hdXRoMnBsdWdpbi9zdHNvYXV0aDJwbHVnaW4iLEdJVEhVQl9HUkFQSFFMX1VSTDoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9ncmFwaHFsIixDT0xPUjoiMCIsTlZNX0RJUjoiL2hvbWUvcnVubmVyLy5udm0iLG5wbV9jb25maWdfbWV0cmljc19yZWdpc3RyeToiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvIixET1RORVRfU0tJUF9GSVJTVF9USU1FX0VYUEVSSUVOQ0U6IjEiLEpBVkFfSE9NRV8xN19YNjQ6Ii91c3IvbGliL2p2bS90ZW11cmluLTE3LWpkay1hbWQ2NCIsSW1hZ2VWZXJzaW9uOiIyMDIyMDYwNS4xIixSVU5ORVJfT1M6IkxpbnV4IixHSVRIVUJfQVBJX1VSTDoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbSIsU1dJRlRfUEFUSDoiL3Vzci9zaGFyZS9zd2lmdC91c3IvYmluIixSVU5ORVJfVVNFUjoicnVubmVyIixDSFJPTUVXRUJEUklWRVI6Ii91c3IvbG9jYWwvc2hhcmUvY2hyb21lX2RyaXZlciIsSk9VUk5BTF9TVFJFQU06Ijg6MjE4MzQiLEdJVEhVQl9XT1JLRkxPVzoiTm9kZS5qcyBQYWNrYWdlIixfOiIvb3B0L2hvc3RlZHRvb2xjYWNoZS9ub2RlLzE4LjMuMC94NjQvYmluL25wbSIsbnBtX2NvbmZpZ19wcmVmaXg6Ii9vcHQvaG9zdGVkdG9vbGNhY2hlL25vZGUvMTguMy4wL3g2NCIsR0lUSFVCX1JVTl9JRDoiMjQ4MzUwNjAzNSIsR09ST09UXzFfMTZfWDY0OiIvb3B0L2hvc3RlZHRvb2xjYWNoZS9nby8xLjE2LjE1L3g2NCIsbnBtX2NvbmZpZ19jYWNoZToiL2hvbWUvcnVubmVyLy5ucG0iLEdPUk9PVF8xXzE3X1g2NDoiL29wdC9ob3N0ZWR0b29sY2FjaGUvZ28vMS4xNy4xMS94NjQiLEdJVEhVQl9SRUZfVFlQRToiYnJhbmNoIixCT09UU1RSQVBfSEFTS0VMTF9OT05JTlRFUkFDVElWRToiMSIsR0lUSFVCX0JBU0VfUkVGOiIiLEltYWdlT1M6InVidW50dTIwIixQRVJGTE9HX0xPQ0FUSU9OX1NFVFRJTkc6IlJVTk5FUl9QRVJGTE9HIixHT1JPT1RfMV8xOF9YNjQ6Ii9vcHQvaG9zdGVkdG9vbGNhY2hlL2dvLzEuMTguMy94NjQiLEdJVEhVQl9BQ1RJT05fUkVQT1NJVE9SWToiIixucG1fY29uZmlnX25vZGVfZ3lwOiIvb3B0L2hvc3RlZHRvb2xjYWNoZS9ub2RlLzE4LjMuMC94NjQvbGliL25vZGVfbW9kdWxlcy9ucG0vbm9kZV9tb2R1bGVzL25vZGUtZ3lwL2Jpbi9ub2RlLWd5cC5qcyIsUEFUSDoiL2hvbWUvcnVubmVyL3dvcmsvc3Rzb2F1dGgycGx1Z2luL3N0c29hdXRoMnBsdWdpbi9ub2RlX21vZHVsZXMvLmJpbjovaG9tZS9ydW5uZXIvd29yay9zdHNvYXV0aDJwbHVnaW4vbm9kZV9tb2R1bGVzLy5iaW46L2hvbWUvcnVubmVyL3dvcmsvbm9kZV9tb2R1bGVzLy5iaW46L2hvbWUvcnVubmVyL25vZGVfbW9kdWxlcy8uYmluOi9ob21lL25vZGVfbW9kdWxlcy8uYmluOi9ub2RlX21vZHVsZXMvLmJpbjovb3B0L2hvc3RlZHRvb2xjYWNoZS9ub2RlLzE4LjMuMC94NjQvbGliL25vZGVfbW9kdWxlcy9ucG0vbm9kZV9tb2R1bGVzL0BucG1jbGkvcnVuLXNjcmlwdC9saWIvbm9kZS1neXAtYmluOi9vcHQvaG9zdGVkdG9vbGNhY2hlL25vZGUvMTguMy4wL3g2NC9iaW46L2hvbWUvbGludXhicmV3Ly5saW51eGJyZXcvYmluOi9ob21lL2xpbnV4YnJldy8ubGludXhicmV3L3NiaW46L2hvbWUvcnVubmVyLy5sb2NhbC9iaW46L29wdC9waXB4X2JpbjovaG9tZS9ydW5uZXIvLmNhcmdvL2JpbjovaG9tZS9ydW5uZXIvLmNvbmZpZy9jb21wb3Nlci92ZW5kb3IvYmluOi91c3IvbG9jYWwvLmdoY3VwL2JpbjovaG9tZS9ydW5uZXIvLmRvdG5ldC90b29sczovc25hcC9iaW46L3Vzci9sb2NhbC9zYmluOi91c3IvbG9jYWwvYmluOi91c3Ivc2JpbjovdXNyL2Jpbjovc2JpbjovYmluOi91c3IvZ2FtZXM6L3Vzci9sb2NhbC9nYW1lczovc25hcC9iaW4iLEFOVF9IT01FOiIvdXNyL3NoYXJlL2FudCIsRE9UTkVUX01VTFRJTEVWRUxfTE9PS1VQOiIwIixSVU5ORVJfVFJBQ0tJTkdfSUQ6ImdpdGh1Yl85ZTBhNWM3YS05NzhmLTRmY2UtYmU5Zi0xNTk3YTQ1ZDNmOGQiLElOVk9DQVRJT05fSUQ6IjgyMzE1MDQwZjZjYjRiMTg5MWI4NzU1MDc1ZGJlNzQ5IixIT01FQlJFV19DRUxMQVI6Ii9ob21lL2xpbnV4YnJldy8ubGludXhicmV3L0NlbGxhciIsTlBNX0NPTkZJR19VU0VSQ09ORklHOiIvaG9tZS9ydW5uZXIvd29yay9fdGVtcC8ubnBtcmMiLFJVTk5FUl9UT09MX0NBQ0hFOiIvb3B0L2hvc3RlZHRvb2xjYWNoZSIsTk9ERToiL29wdC9ob3N0ZWR0b29sY2FjaGUvbm9kZS8xOC4zLjAveDY0L2Jpbi9ub2RlIixucG1fcGFja2FnZV9uYW1lOiJAbnNzaHVudC9zdHNvYXV0aDJwbHVnaW4iLEdJVEhVQl9BQ1RJT046Il9fcnVuXzIiLEdJVEhVQl9SVU5fTlVNQkVSOiIyNCIsUlVOTkVSX0FSQ0g6Ilg2NCIsQUdFTlRfVE9PTFNESVJFQ1RPUlk6Ii9vcHQvaG9zdGVkdG9vbGNhY2hlIixMQU5HOiJDLlVURi04IixWQ1BLR19JTlNUQUxMQVRJT05fUk9PVDoiL3Vzci9sb2NhbC9zaGFyZS92Y3BrZyIsQ09OREE6Ii91c3Ivc2hhcmUvbWluaWNvbmRhIixSVU5ORVJfTkFNRToiSG9zdGVkIEFnZW50IixYREdfQ09ORklHX0hPTUU6Ii9ob21lL3J1bm5lci8uY29uZmlnIixHSVRIVUJfUkVGX05BTUU6Im1haW4iLEdJVEhVQl9SRVBPU0lUT1JZOiJuc3NodW50L3N0c29hdXRoMnBsdWdpbiIsbnBtX2xpZmVjeWNsZV9zY3JpcHQ6InZpdGUgYnVpbGQiLEFORFJPSURfTkRLX1JPT1Q6Ii91c3IvbG9jYWwvbGliL2FuZHJvaWQvc2RrL25kay1idW5kbGUiLEdJVEhVQl9BQ1RJT05fUkVGOiIiLERFQklBTl9GUk9OVEVORDoibm9uaW50ZXJhY3RpdmUiLEdJVEhVQl9BQ1RJT05TOiJ0cnVlIixucG1fcGFja2FnZV92ZXJzaW9uOiIwLjEuMTMiLG5wbV9saWZlY3ljbGVfZXZlbnQ6ImJ1aWxkIixHSVRIVUJfUkVGX1BST1RFQ1RFRDoiZmFsc2UiLEdJVEhVQl9XT1JLU1BBQ0U6Ii9ob21lL3J1bm5lci93b3JrL3N0c29hdXRoMnBsdWdpbi9zdHNvYXV0aDJwbHVnaW4iLEFDQ0VQVF9FVUxBOiJZIixHSVRIVUJfSk9COiJwdWJsaXNoLW5wbSIsUlVOTkVSX1BFUkZMT0c6Ii9ob21lL3J1bm5lci9wZXJmbG9nIixHSVRIVUJfU0hBOiJmNjU5OGQxODg2MWM2MDg0YTMwMjQzYzlkNmE5ZDAyMDBlMWY5ZTk2IixHSVRIVUJfUlVOX0FUVEVNUFQ6IjEiLEdJVEhVQl9SRUY6InJlZnMvaGVhZHMvbWFpbiIsR0lUSFVCX0FDVE9SOiJuc3NodW50IixBTkRST0lEX1NES19ST09UOiIvdXNyL2xvY2FsL2xpYi9hbmRyb2lkL3NkayIsTEVJTl9IT01FOiIvdXNyL2xvY2FsL2xpYi9sZWluIixucG1fY29uZmlnX2dsb2JhbGNvbmZpZzoiL29wdC9ob3N0ZWR0b29sY2FjaGUvbm9kZS8xOC4zLjAveDY0L2V0Yy9ucG1yYyIsbnBtX2NvbmZpZ19pbml0X21vZHVsZToiL2hvbWUvcnVubmVyLy5ucG0taW5pdC5qcyIsR0lUSFVCX1BBVEg6Ii9ob21lL3J1bm5lci93b3JrL190ZW1wL19ydW5uZXJfZmlsZV9jb21tYW5kcy9hZGRfcGF0aF81YzRmNmYxOC0xNjY1LTQ2MzgtYjQyMC1iY2QwMmY2NjU4MTAiLEpBVkFfSE9NRToiL3Vzci9saWIvanZtL3RlbXVyaW4tMTEtamRrLWFtZDY0IixQV0Q6Ii9ob21lL3J1bm5lci93b3JrL3N0c29hdXRoMnBsdWdpbi9zdHNvYXV0aDJwbHVnaW4iLFJVTk5FUl9XT1JLU1BBQ0U6Ii9ob21lL3J1bm5lci93b3JrL3N0c29hdXRoMnBsdWdpbiIsbnBtX2V4ZWNwYXRoOiIvb3B0L2hvc3RlZHRvb2xjYWNoZS9ub2RlLzE4LjMuMC94NjQvbGliL25vZGVfbW9kdWxlcy9ucG0vYmluL25wbS1jbGkuanMiLEhPTUVCUkVXX0NMRUFOVVBfUEVSSU9ESUNfRlVMTF9EQVlTOiIzNjUwIixHSVRIVUJfRVZFTlRfTkFNRToicHVzaCIsSE9NRUJSRVdfTk9fQVVUT19VUERBVEU6IjEiLEFORFJPSURfSE9NRToiL3Vzci9sb2NhbC9saWIvYW5kcm9pZC9zZGsiLEdJVEhVQl9TRVJWRVJfVVJMOiJodHRwczovL2dpdGh1Yi5jb20iLEdFQ0tPV0VCRFJJVkVSOiIvdXNyL2xvY2FsL3NoYXJlL2dlY2tvX2RyaXZlciIsTEVJTl9KQVI6Ii91c3IvbG9jYWwvbGliL2xlaW4vc2VsZi1pbnN0YWxscy9sZWluaW5nZW4tMi45Ljgtc3RhbmRhbG9uZS5qYXIiLG5wbV9jb25maWdfZ2xvYmFsX3ByZWZpeDoiL29wdC9ob3N0ZWR0b29sY2FjaGUvbm9kZS8xOC4zLjAveDY0IixIT01FQlJFV19SRVBPU0lUT1JZOiIvaG9tZS9saW51eGJyZXcvLmxpbnV4YnJldy9Ib21lYnJldyIsbnBtX2NvbW1hbmQ6InJ1bi1zY3JpcHQiLFNHWF9BRVNNX0FERFI6IjEiLENIUk9NRV9CSU46Ii91c3IvYmluL2dvb2dsZS1jaHJvbWUiLFNFTEVOSVVNX0pBUl9QQVRIOiIvdXNyL3NoYXJlL2phdmEvc2VsZW5pdW0tc2VydmVyLmphciIsQU5EUk9JRF9OREtfSE9NRToiL3Vzci9sb2NhbC9saWIvYW5kcm9pZC9zZGsvbmRrLWJ1bmRsZSIsR0lUSFVCX1NURVBfU1VNTUFSWToiL2hvbWUvcnVubmVyL3dvcmsvX3RlbXAvX3J1bm5lcl9maWxlX2NvbW1hbmRzL3N0ZXBfc3VtbWFyeV81YzRmNmYxOC0xNjY1LTQ2MzgtYjQyMC1iY2QwMmY2NjU4MTAiLElOSVRfQ1dEOiIvaG9tZS9ydW5uZXIvd29yay9zdHNvYXV0aDJwbHVnaW4vc3Rzb2F1dGgycGx1Z2luIixFRElUT1I6InZpIixOT0RFX0VOVjoicHJvZHVjdGlvbiJ9LkJST0tFUl9FTkRQT0lOVH06JHt7REVQTE9ZTUVOVF9CQVNFUEFUSDoiL29wdC9ydW5uZXIiLERPVE5FVF9OT0xPR086IjEiLFVTRVI6InJ1bm5lciIsbnBtX2NvbmZpZ19hbHdheXNfYXV0aDoiIixucG1fY29uZmlnX3VzZXJfYWdlbnQ6Im5wbS84LjExLjAgbm9kZS92MTguMy4wIGxpbnV4IHg2NCB3b3Jrc3BhY2VzL2ZhbHNlIGNpL2dpdGh1Yi1hY3Rpb25zIixDSToidHJ1ZSIsR0lUSFVCX0VOVjoiL2hvbWUvcnVubmVyL3dvcmsvX3RlbXAvX3J1bm5lcl9maWxlX2NvbW1hbmRzL3NldF9lbnZfNWM0ZjZmMTgtMTY2NS00NjM4LWI0MjAtYmNkMDJmNjY1ODEwIixQSVBYX0hPTUU6Ii9vcHQvcGlweCIsbnBtX25vZGVfZXhlY3BhdGg6Ii9vcHQvaG9zdGVkdG9vbGNhY2hlL25vZGUvMTguMy4wL3g2NC9iaW4vbm9kZSIsSkFWQV9IT01FXzhfWDY0OiIvdXNyL2xpYi9qdm0vdGVtdXJpbi04LWpkay1hbWQ2NCIsTk9ERV9BVVRIX1RPS0VOOiJYWFhYWC1YWFhYWC1YWFhYWC1YWFhYWCIsU0hMVkw6IjEiLG5wbV9jb25maWdfbm9wcm94eToiIixIT01FOiIvaG9tZS9ydW5uZXIiLFJVTk5FUl9URU1QOiIvaG9tZS9ydW5uZXIvd29yay9fdGVtcCIsR0lUSFVCX0VWRU5UX1BBVEg6Ii9ob21lL3J1bm5lci93b3JrL190ZW1wL19naXRodWJfd29ya2Zsb3cvZXZlbnQuanNvbiIsbnBtX3BhY2thZ2VfanNvbjoiL2hvbWUvcnVubmVyL3dvcmsvc3Rzb2F1dGgycGx1Z2luL3N0c29hdXRoMnBsdWdpbi9wYWNrYWdlLmpzb24iLEpBVkFfSE9NRV8xMV9YNjQ6Ii91c3IvbGliL2p2bS90ZW11cmluLTExLWpkay1hbWQ2NCIsUElQWF9CSU5fRElSOiIvb3B0L3BpcHhfYmluIixHUkFBTFZNXzExX1JPT1Q6Ii91c3IvbG9jYWwvZ3JhYWx2bS9ncmFhbHZtLWNlLWphdmExMS0yMi4xLjAiLEdJVEhVQl9SRVBPU0lUT1JZX09XTkVSOiJuc3NodW50IixHUkFETEVfSE9NRToiL3Vzci9zaGFyZS9ncmFkbGUtNy40LjIiLEhPTUVCUkVXX1BSRUZJWDoiL2hvbWUvbGludXhicmV3Ly5saW51eGJyZXciLEFORFJPSURfTkRLX0xBVEVTVF9IT01FOiIvdXNyL2xvY2FsL2xpYi9hbmRyb2lkL3Nkay9uZGsvMjQuMC44MjE1ODg4IixHSVRIVUJfUkVURU5USU9OX0RBWVM6IjkwIixQT1dFUlNIRUxMX0RJU1RSSUJVVElPTl9DSEFOTkVMOiJHaXRIdWItQWN0aW9ucy11YnVudHUyMCIsQVpVUkVfRVhURU5TSU9OX0RJUjoiL29wdC9hei9hemNsaWV4dGVuc2lvbnMiLEdJVEhVQl9IRUFEX1JFRjoiIixucG1fY29uZmlnX2xvY2FsX3ByZWZpeDoiL2hvbWUvcnVubmVyL3dvcmsvc3Rzb2F1dGgycGx1Z2luL3N0c29hdXRoMnBsdWdpbiIsR0lUSFVCX0dSQVBIUUxfVVJMOiJodHRwczovL2FwaS5naXRodWIuY29tL2dyYXBocWwiLENPTE9SOiIwIixOVk1fRElSOiIvaG9tZS9ydW5uZXIvLm52bSIsbnBtX2NvbmZpZ19tZXRyaWNzX3JlZ2lzdHJ5OiJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy8iLERPVE5FVF9TS0lQX0ZJUlNUX1RJTUVfRVhQRVJJRU5DRToiMSIsSkFWQV9IT01FXzE3X1g2NDoiL3Vzci9saWIvanZtL3RlbXVyaW4tMTctamRrLWFtZDY0IixJbWFnZVZlcnNpb246IjIwMjIwNjA1LjEiLFJVTk5FUl9PUzoiTGludXgiLEdJVEhVQl9BUElfVVJMOiJodHRwczovL2FwaS5naXRodWIuY29tIixTV0lGVF9QQVRIOiIvdXNyL3NoYXJlL3N3aWZ0L3Vzci9iaW4iLFJVTk5FUl9VU0VSOiJydW5uZXIiLENIUk9NRVdFQkRSSVZFUjoiL3Vzci9sb2NhbC9zaGFyZS9jaHJvbWVfZHJpdmVyIixKT1VSTkFMX1NUUkVBTToiODoyMTgzNCIsR0lUSFVCX1dPUktGTE9XOiJOb2RlLmpzIFBhY2thZ2UiLF86Ii9vcHQvaG9zdGVkdG9vbGNhY2hlL25vZGUvMTguMy4wL3g2NC9iaW4vbnBtIixucG1fY29uZmlnX3ByZWZpeDoiL29wdC9ob3N0ZWR0b29sY2FjaGUvbm9kZS8xOC4zLjAveDY0IixHSVRIVUJfUlVOX0lEOiIyNDgzNTA2MDM1IixHT1JPT1RfMV8xNl9YNjQ6Ii9vcHQvaG9zdGVkdG9vbGNhY2hlL2dvLzEuMTYuMTUveDY0IixucG1fY29uZmlnX2NhY2hlOiIvaG9tZS9ydW5uZXIvLm5wbSIsR09ST09UXzFfMTdfWDY0OiIvb3B0L2hvc3RlZHRvb2xjYWNoZS9nby8xLjE3LjExL3g2NCIsR0lUSFVCX1JFRl9UWVBFOiJicmFuY2giLEJPT1RTVFJBUF9IQVNLRUxMX05PTklOVEVSQUNUSVZFOiIxIixHSVRIVUJfQkFTRV9SRUY6IiIsSW1hZ2VPUzoidWJ1bnR1MjAiLFBFUkZMT0dfTE9DQVRJT05fU0VUVElORzoiUlVOTkVSX1BFUkZMT0ciLEdPUk9PVF8xXzE4X1g2NDoiL29wdC9ob3N0ZWR0b29sY2FjaGUvZ28vMS4xOC4zL3g2NCIsR0lUSFVCX0FDVElPTl9SRVBPU0lUT1JZOiIiLG5wbV9jb25maWdfbm9kZV9neXA6Ii9vcHQvaG9zdGVkdG9vbGNhY2hlL25vZGUvMTguMy4wL3g2NC9saWIvbm9kZV9tb2R1bGVzL25wbS9ub2RlX21vZHVsZXMvbm9kZS1neXAvYmluL25vZGUtZ3lwLmpzIixQQVRIOiIvaG9tZS9ydW5uZXIvd29yay9zdHNvYXV0aDJwbHVnaW4vc3Rzb2F1dGgycGx1Z2luL25vZGVfbW9kdWxlcy8uYmluOi9ob21lL3J1bm5lci93b3JrL3N0c29hdXRoMnBsdWdpbi9ub2RlX21vZHVsZXMvLmJpbjovaG9tZS9ydW5uZXIvd29yay9ub2RlX21vZHVsZXMvLmJpbjovaG9tZS9ydW5uZXIvbm9kZV9tb2R1bGVzLy5iaW46L2hvbWUvbm9kZV9tb2R1bGVzLy5iaW46L25vZGVfbW9kdWxlcy8uYmluOi9vcHQvaG9zdGVkdG9vbGNhY2hlL25vZGUvMTguMy4wL3g2NC9saWIvbm9kZV9tb2R1bGVzL25wbS9ub2RlX21vZHVsZXMvQG5wbWNsaS9ydW4tc2NyaXB0L2xpYi9ub2RlLWd5cC1iaW46L29wdC9ob3N0ZWR0b29sY2FjaGUvbm9kZS8xOC4zLjAveDY0L2JpbjovaG9tZS9saW51eGJyZXcvLmxpbnV4YnJldy9iaW46L2hvbWUvbGludXhicmV3Ly5saW51eGJyZXcvc2JpbjovaG9tZS9ydW5uZXIvLmxvY2FsL2Jpbjovb3B0L3BpcHhfYmluOi9ob21lL3J1bm5lci8uY2FyZ28vYmluOi9ob21lL3J1bm5lci8uY29uZmlnL2NvbXBvc2VyL3ZlbmRvci9iaW46L3Vzci9sb2NhbC8uZ2hjdXAvYmluOi9ob21lL3J1bm5lci8uZG90bmV0L3Rvb2xzOi9zbmFwL2JpbjovdXNyL2xvY2FsL3NiaW46L3Vzci9sb2NhbC9iaW46L3Vzci9zYmluOi91c3IvYmluOi9zYmluOi9iaW46L3Vzci9nYW1lczovdXNyL2xvY2FsL2dhbWVzOi9zbmFwL2JpbiIsQU5UX0hPTUU6Ii91c3Ivc2hhcmUvYW50IixET1RORVRfTVVMVElMRVZFTF9MT09LVVA6IjAiLFJVTk5FUl9UUkFDS0lOR19JRDoiZ2l0aHViXzllMGE1YzdhLTk3OGYtNGZjZS1iZTlmLTE1OTdhNDVkM2Y4ZCIsSU5WT0NBVElPTl9JRDoiODIzMTUwNDBmNmNiNGIxODkxYjg3NTUwNzVkYmU3NDkiLEhPTUVCUkVXX0NFTExBUjoiL2hvbWUvbGludXhicmV3Ly5saW51eGJyZXcvQ2VsbGFyIixOUE1fQ09ORklHX1VTRVJDT05GSUc6Ii9ob21lL3J1bm5lci93b3JrL190ZW1wLy5ucG1yYyIsUlVOTkVSX1RPT0xfQ0FDSEU6Ii9vcHQvaG9zdGVkdG9vbGNhY2hlIixOT0RFOiIvb3B0L2hvc3RlZHRvb2xjYWNoZS9ub2RlLzE4LjMuMC94NjQvYmluL25vZGUiLG5wbV9wYWNrYWdlX25hbWU6IkBuc3NodW50L3N0c29hdXRoMnBsdWdpbiIsR0lUSFVCX0FDVElPTjoiX19ydW5fMiIsR0lUSFVCX1JVTl9OVU1CRVI6IjI0IixSVU5ORVJfQVJDSDoiWDY0IixBR0VOVF9UT09MU0RJUkVDVE9SWToiL29wdC9ob3N0ZWR0b29sY2FjaGUiLExBTkc6IkMuVVRGLTgiLFZDUEtHX0lOU1RBTExBVElPTl9ST09UOiIvdXNyL2xvY2FsL3NoYXJlL3ZjcGtnIixDT05EQToiL3Vzci9zaGFyZS9taW5pY29uZGEiLFJVTk5FUl9OQU1FOiJIb3N0ZWQgQWdlbnQiLFhER19DT05GSUdfSE9NRToiL2hvbWUvcnVubmVyLy5jb25maWciLEdJVEhVQl9SRUZfTkFNRToibWFpbiIsR0lUSFVCX1JFUE9TSVRPUlk6Im5zc2h1bnQvc3Rzb2F1dGgycGx1Z2luIixucG1fbGlmZWN5Y2xlX3NjcmlwdDoidml0ZSBidWlsZCIsQU5EUk9JRF9OREtfUk9PVDoiL3Vzci9sb2NhbC9saWIvYW5kcm9pZC9zZGsvbmRrLWJ1bmRsZSIsR0lUSFVCX0FDVElPTl9SRUY6IiIsREVCSUFOX0ZST05URU5EOiJub25pbnRlcmFjdGl2ZSIsR0lUSFVCX0FDVElPTlM6InRydWUiLG5wbV9wYWNrYWdlX3ZlcnNpb246IjAuMS4xMyIsbnBtX2xpZmVjeWNsZV9ldmVudDoiYnVpbGQiLEdJVEhVQl9SRUZfUFJPVEVDVEVEOiJmYWxzZSIsR0lUSFVCX1dPUktTUEFDRToiL2hvbWUvcnVubmVyL3dvcmsvc3Rzb2F1dGgycGx1Z2luL3N0c29hdXRoMnBsdWdpbiIsQUNDRVBUX0VVTEE6IlkiLEdJVEhVQl9KT0I6InB1Ymxpc2gtbnBtIixSVU5ORVJfUEVSRkxPRzoiL2hvbWUvcnVubmVyL3BlcmZsb2ciLEdJVEhVQl9TSEE6ImY2NTk4ZDE4ODYxYzYwODRhMzAyNDNjOWQ2YTlkMDIwMGUxZjllOTYiLEdJVEhVQl9SVU5fQVRURU1QVDoiMSIsR0lUSFVCX1JFRjoicmVmcy9oZWFkcy9tYWluIixHSVRIVUJfQUNUT1I6Im5zc2h1bnQiLEFORFJPSURfU0RLX1JPT1Q6Ii91c3IvbG9jYWwvbGliL2FuZHJvaWQvc2RrIixMRUlOX0hPTUU6Ii91c3IvbG9jYWwvbGliL2xlaW4iLG5wbV9jb25maWdfZ2xvYmFsY29uZmlnOiIvb3B0L2hvc3RlZHRvb2xjYWNoZS9ub2RlLzE4LjMuMC94NjQvZXRjL25wbXJjIixucG1fY29uZmlnX2luaXRfbW9kdWxlOiIvaG9tZS9ydW5uZXIvLm5wbS1pbml0LmpzIixHSVRIVUJfUEFUSDoiL2hvbWUvcnVubmVyL3dvcmsvX3RlbXAvX3J1bm5lcl9maWxlX2NvbW1hbmRzL2FkZF9wYXRoXzVjNGY2ZjE4LTE2NjUtNDYzOC1iNDIwLWJjZDAyZjY2NTgxMCIsSkFWQV9IT01FOiIvdXNyL2xpYi9qdm0vdGVtdXJpbi0xMS1qZGstYW1kNjQiLFBXRDoiL2hvbWUvcnVubmVyL3dvcmsvc3Rzb2F1dGgycGx1Z2luL3N0c29hdXRoMnBsdWdpbiIsUlVOTkVSX1dPUktTUEFDRToiL2hvbWUvcnVubmVyL3dvcmsvc3Rzb2F1dGgycGx1Z2luIixucG1fZXhlY3BhdGg6Ii9vcHQvaG9zdGVkdG9vbGNhY2hlL25vZGUvMTguMy4wL3g2NC9saWIvbm9kZV9tb2R1bGVzL25wbS9iaW4vbnBtLWNsaS5qcyIsSE9NRUJSRVdfQ0xFQU5VUF9QRVJJT0RJQ19GVUxMX0RBWVM6IjM2NTAiLEdJVEhVQl9FVkVOVF9OQU1FOiJwdXNoIixIT01FQlJFV19OT19BVVRPX1VQREFURToiMSIsQU5EUk9JRF9IT01FOiIvdXNyL2xvY2FsL2xpYi9hbmRyb2lkL3NkayIsR0lUSFVCX1NFUlZFUl9VUkw6Imh0dHBzOi8vZ2l0aHViLmNvbSIsR0VDS09XRUJEUklWRVI6Ii91c3IvbG9jYWwvc2hhcmUvZ2Vja29fZHJpdmVyIixMRUlOX0pBUjoiL3Vzci9sb2NhbC9saWIvbGVpbi9zZWxmLWluc3RhbGxzL2xlaW5pbmdlbi0yLjkuOC1zdGFuZGFsb25lLmphciIsbnBtX2NvbmZpZ19nbG9iYWxfcHJlZml4OiIvb3B0L2hvc3RlZHRvb2xjYWNoZS9ub2RlLzE4LjMuMC94NjQiLEhPTUVCUkVXX1JFUE9TSVRPUlk6Ii9ob21lL2xpbnV4YnJldy8ubGludXhicmV3L0hvbWVicmV3IixucG1fY29tbWFuZDoicnVuLXNjcmlwdCIsU0dYX0FFU01fQUREUjoiMSIsQ0hST01FX0JJTjoiL3Vzci9iaW4vZ29vZ2xlLWNocm9tZSIsU0VMRU5JVU1fSkFSX1BBVEg6Ii91c3Ivc2hhcmUvamF2YS9zZWxlbml1bS1zZXJ2ZXIuamFyIixBTkRST0lEX05ES19IT01FOiIvdXNyL2xvY2FsL2xpYi9hbmRyb2lkL3Nkay9uZGstYnVuZGxlIixHSVRIVUJfU1RFUF9TVU1NQVJZOiIvaG9tZS9ydW5uZXIvd29yay9fdGVtcC9fcnVubmVyX2ZpbGVfY29tbWFuZHMvc3RlcF9zdW1tYXJ5XzVjNGY2ZjE4LTE2NjUtNDYzOC1iNDIwLWJjZDAyZjY2NTgxMCIsSU5JVF9DV0Q6Ii9ob21lL3J1bm5lci93b3JrL3N0c29hdXRoMnBsdWdpbi9zdHNvYXV0aDJwbHVnaW4iLEVESVRPUjoidmkiLE5PREVfRU5WOiJwcm9kdWN0aW9uIn0uQlJPS0VSX1BPUlR9JHt7REVQTE9ZTUVOVF9CQVNFUEFUSDoiL29wdC9ydW5uZXIiLERPVE5FVF9OT0xPR086IjEiLFVTRVI6InJ1bm5lciIsbnBtX2NvbmZpZ19hbHdheXNfYXV0aDoiIixucG1fY29uZmlnX3VzZXJfYWdlbnQ6Im5wbS84LjExLjAgbm9kZS92MTguMy4wIGxpbnV4IHg2NCB3b3Jrc3BhY2VzL2ZhbHNlIGNpL2dpdGh1Yi1hY3Rpb25zIixDSToidHJ1ZSIsR0lUSFVCX0VOVjoiL2hvbWUvcnVubmVyL3dvcmsvX3RlbXAvX3J1bm5lcl9maWxlX2NvbW1hbmRzL3NldF9lbnZfNWM0ZjZmMTgtMTY2NS00NjM4LWI0MjAtYmNkMDJmNjY1ODEwIixQSVBYX0hPTUU6Ii9vcHQvcGlweCIsbnBtX25vZGVfZXhlY3BhdGg6Ii9vcHQvaG9zdGVkdG9vbGNhY2hlL25vZGUvMTguMy4wL3g2NC9iaW4vbm9kZSIsSkFWQV9IT01FXzhfWDY0OiIvdXNyL2xpYi9qdm0vdGVtdXJpbi04LWpkay1hbWQ2NCIsTk9ERV9BVVRIX1RPS0VOOiJYWFhYWC1YWFhYWC1YWFhYWC1YWFhYWCIsU0hMVkw6IjEiLG5wbV9jb25maWdfbm9wcm94eToiIixIT01FOiIvaG9tZS9ydW5uZXIiLFJVTk5FUl9URU1QOiIvaG9tZS9ydW5uZXIvd29yay9fdGVtcCIsR0lUSFVCX0VWRU5UX1BBVEg6Ii9ob21lL3J1bm5lci93b3JrL190ZW1wL19naXRodWJfd29ya2Zsb3cvZXZlbnQuanNvbiIsbnBtX3BhY2thZ2VfanNvbjoiL2hvbWUvcnVubmVyL3dvcmsvc3Rzb2F1dGgycGx1Z2luL3N0c29hdXRoMnBsdWdpbi9wYWNrYWdlLmpzb24iLEpBVkFfSE9NRV8xMV9YNjQ6Ii91c3IvbGliL2p2bS90ZW11cmluLTExLWpkay1hbWQ2NCIsUElQWF9CSU5fRElSOiIvb3B0L3BpcHhfYmluIixHUkFBTFZNXzExX1JPT1Q6Ii91c3IvbG9jYWwvZ3JhYWx2bS9ncmFhbHZtLWNlLWphdmExMS0yMi4xLjAiLEdJVEhVQl9SRVBPU0lUT1JZX09XTkVSOiJuc3NodW50IixHUkFETEVfSE9NRToiL3Vzci9zaGFyZS9ncmFkbGUtNy40LjIiLEhPTUVCUkVXX1BSRUZJWDoiL2hvbWUvbGludXhicmV3Ly5saW51eGJyZXciLEFORFJPSURfTkRLX0xBVEVTVF9IT01FOiIvdXNyL2xvY2FsL2xpYi9hbmRyb2lkL3Nkay9uZGsvMjQuMC44MjE1ODg4IixHSVRIVUJfUkVURU5USU9OX0RBWVM6IjkwIixQT1dFUlNIRUxMX0RJU1RSSUJVVElPTl9DSEFOTkVMOiJHaXRIdWItQWN0aW9ucy11YnVudHUyMCIsQVpVUkVfRVhURU5TSU9OX0RJUjoiL29wdC9hei9hemNsaWV4dGVuc2lvbnMiLEdJVEhVQl9IRUFEX1JFRjoiIixucG1fY29uZmlnX2xvY2FsX3ByZWZpeDoiL2hvbWUvcnVubmVyL3dvcmsvc3Rzb2F1dGgycGx1Z2luL3N0c29hdXRoMnBsdWdpbiIsR0lUSFVCX0dSQVBIUUxfVVJMOiJodHRwczovL2FwaS5naXRodWIuY29tL2dyYXBocWwiLENPTE9SOiIwIixOVk1fRElSOiIvaG9tZS9ydW5uZXIvLm52bSIsbnBtX2NvbmZpZ19tZXRyaWNzX3JlZ2lzdHJ5OiJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy8iLERPVE5FVF9TS0lQX0ZJUlNUX1RJTUVfRVhQRVJJRU5DRToiMSIsSkFWQV9IT01FXzE3X1g2NDoiL3Vzci9saWIvanZtL3RlbXVyaW4tMTctamRrLWFtZDY0IixJbWFnZVZlcnNpb246IjIwMjIwNjA1LjEiLFJVTk5FUl9PUzoiTGludXgiLEdJVEhVQl9BUElfVVJMOiJodHRwczovL2FwaS5naXRodWIuY29tIixTV0lGVF9QQVRIOiIvdXNyL3NoYXJlL3N3aWZ0L3Vzci9iaW4iLFJVTk5FUl9VU0VSOiJydW5uZXIiLENIUk9NRVdFQkRSSVZFUjoiL3Vzci9sb2NhbC9zaGFyZS9jaHJvbWVfZHJpdmVyIixKT1VSTkFMX1NUUkVBTToiODoyMTgzNCIsR0lUSFVCX1dPUktGTE9XOiJOb2RlLmpzIFBhY2thZ2UiLF86Ii9vcHQvaG9zdGVkdG9vbGNhY2hlL25vZGUvMTguMy4wL3g2NC9iaW4vbnBtIixucG1fY29uZmlnX3ByZWZpeDoiL29wdC9ob3N0ZWR0b29sY2FjaGUvbm9kZS8xOC4zLjAveDY0IixHSVRIVUJfUlVOX0lEOiIyNDgzNTA2MDM1IixHT1JPT1RfMV8xNl9YNjQ6Ii9vcHQvaG9zdGVkdG9vbGNhY2hlL2dvLzEuMTYuMTUveDY0IixucG1fY29uZmlnX2NhY2hlOiIvaG9tZS9ydW5uZXIvLm5wbSIsR09ST09UXzFfMTdfWDY0OiIvb3B0L2hvc3RlZHRvb2xjYWNoZS9nby8xLjE3LjExL3g2NCIsR0lUSFVCX1JFRl9UWVBFOiJicmFuY2giLEJPT1RTVFJBUF9IQVNLRUxMX05PTklOVEVSQUNUSVZFOiIxIixHSVRIVUJfQkFTRV9SRUY6IiIsSW1hZ2VPUzoidWJ1bnR1MjAiLFBFUkZMT0dfTE9DQVRJT05fU0VUVElORzoiUlVOTkVSX1BFUkZMT0ciLEdPUk9PVF8xXzE4X1g2NDoiL29wdC9ob3N0ZWR0b29sY2FjaGUvZ28vMS4xOC4zL3g2NCIsR0lUSFVCX0FDVElPTl9SRVBPU0lUT1JZOiIiLG5wbV9jb25maWdfbm9kZV9neXA6Ii9vcHQvaG9zdGVkdG9vbGNhY2hlL25vZGUvMTguMy4wL3g2NC9saWIvbm9kZV9tb2R1bGVzL25wbS9ub2RlX21vZHVsZXMvbm9kZS1neXAvYmluL25vZGUtZ3lwLmpzIixQQVRIOiIvaG9tZS9ydW5uZXIvd29yay9zdHNvYXV0aDJwbHVnaW4vc3Rzb2F1dGgycGx1Z2luL25vZGVfbW9kdWxlcy8uYmluOi9ob21lL3J1bm5lci93b3JrL3N0c29hdXRoMnBsdWdpbi9ub2RlX21vZHVsZXMvLmJpbjovaG9tZS9ydW5uZXIvd29yay9ub2RlX21vZHVsZXMvLmJpbjovaG9tZS9ydW5uZXIvbm9kZV9tb2R1bGVzLy5iaW46L2hvbWUvbm9kZV9tb2R1bGVzLy5iaW46L25vZGVfbW9kdWxlcy8uYmluOi9vcHQvaG9zdGVkdG9vbGNhY2hlL25vZGUvMTguMy4wL3g2NC9saWIvbm9kZV9tb2R1bGVzL25wbS9ub2RlX21vZHVsZXMvQG5wbWNsaS9ydW4tc2NyaXB0L2xpYi9ub2RlLWd5cC1iaW46L29wdC9ob3N0ZWR0b29sY2FjaGUvbm9kZS8xOC4zLjAveDY0L2JpbjovaG9tZS9saW51eGJyZXcvLmxpbnV4YnJldy9iaW46L2hvbWUvbGludXhicmV3Ly5saW51eGJyZXcvc2JpbjovaG9tZS9ydW5uZXIvLmxvY2FsL2Jpbjovb3B0L3BpcHhfYmluOi9ob21lL3J1bm5lci8uY2FyZ28vYmluOi9ob21lL3J1bm5lci8uY29uZmlnL2NvbXBvc2VyL3ZlbmRvci9iaW46L3Vzci9sb2NhbC8uZ2hjdXAvYmluOi9ob21lL3J1bm5lci8uZG90bmV0L3Rvb2xzOi9zbmFwL2JpbjovdXNyL2xvY2FsL3NiaW46L3Vzci9sb2NhbC9iaW46L3Vzci9zYmluOi91c3IvYmluOi9zYmluOi9iaW46L3Vzci9nYW1lczovdXNyL2xvY2FsL2dhbWVzOi9zbmFwL2JpbiIsQU5UX0hPTUU6Ii91c3Ivc2hhcmUvYW50IixET1RORVRfTVVMVElMRVZFTF9MT09LVVA6IjAiLFJVTk5FUl9UUkFDS0lOR19JRDoiZ2l0aHViXzllMGE1YzdhLTk3OGYtNGZjZS1iZTlmLTE1OTdhNDVkM2Y4ZCIsSU5WT0NBVElPTl9JRDoiODIzMTUwNDBmNmNiNGIxODkxYjg3NTUwNzVkYmU3NDkiLEhPTUVCUkVXX0NFTExBUjoiL2hvbWUvbGludXhicmV3Ly5saW51eGJyZXcvQ2VsbGFyIixOUE1fQ09ORklHX1VTRVJDT05GSUc6Ii9ob21lL3J1bm5lci93b3JrL190ZW1wLy5ucG1yYyIsUlVOTkVSX1RPT0xfQ0FDSEU6Ii9vcHQvaG9zdGVkdG9vbGNhY2hlIixOT0RFOiIvb3B0L2hvc3RlZHRvb2xjYWNoZS9ub2RlLzE4LjMuMC94NjQvYmluL25vZGUiLG5wbV9wYWNrYWdlX25hbWU6IkBuc3NodW50L3N0c29hdXRoMnBsdWdpbiIsR0lUSFVCX0FDVElPTjoiX19ydW5fMiIsR0lUSFVCX1JVTl9OVU1CRVI6IjI0IixSVU5ORVJfQVJDSDoiWDY0IixBR0VOVF9UT09MU0RJUkVDVE9SWToiL29wdC9ob3N0ZWR0b29sY2FjaGUiLExBTkc6IkMuVVRGLTgiLFZDUEtHX0lOU1RBTExBVElPTl9ST09UOiIvdXNyL2xvY2FsL3NoYXJlL3ZjcGtnIixDT05EQToiL3Vzci9zaGFyZS9taW5pY29uZGEiLFJVTk5FUl9OQU1FOiJIb3N0ZWQgQWdlbnQiLFhER19DT05GSUdfSE9NRToiL2hvbWUvcnVubmVyLy5jb25maWciLEdJVEhVQl9SRUZfTkFNRToibWFpbiIsR0lUSFVCX1JFUE9TSVRPUlk6Im5zc2h1bnQvc3Rzb2F1dGgycGx1Z2luIixucG1fbGlmZWN5Y2xlX3NjcmlwdDoidml0ZSBidWlsZCIsQU5EUk9JRF9OREtfUk9PVDoiL3Vzci9sb2NhbC9saWIvYW5kcm9pZC9zZGsvbmRrLWJ1bmRsZSIsR0lUSFVCX0FDVElPTl9SRUY6IiIsREVCSUFOX0ZST05URU5EOiJub25pbnRlcmFjdGl2ZSIsR0lUSFVCX0FDVElPTlM6InRydWUiLG5wbV9wYWNrYWdlX3ZlcnNpb246IjAuMS4xMyIsbnBtX2xpZmVjeWNsZV9ldmVudDoiYnVpbGQiLEdJVEhVQl9SRUZfUFJPVEVDVEVEOiJmYWxzZSIsR0lUSFVCX1dPUktTUEFDRToiL2hvbWUvcnVubmVyL3dvcmsvc3Rzb2F1dGgycGx1Z2luL3N0c29hdXRoMnBsdWdpbiIsQUNDRVBUX0VVTEE6IlkiLEdJVEhVQl9KT0I6InB1Ymxpc2gtbnBtIixSVU5ORVJfUEVSRkxPRzoiL2hvbWUvcnVubmVyL3BlcmZsb2ciLEdJVEhVQl9TSEE6ImY2NTk4ZDE4ODYxYzYwODRhMzAyNDNjOWQ2YTlkMDIwMGUxZjllOTYiLEdJVEhVQl9SVU5fQVRURU1QVDoiMSIsR0lUSFVCX1JFRjoicmVmcy9oZWFkcy9tYWluIixHSVRIVUJfQUNUT1I6Im5zc2h1bnQiLEFORFJPSURfU0RLX1JPT1Q6Ii91c3IvbG9jYWwvbGliL2FuZHJvaWQvc2RrIixMRUlOX0hPTUU6Ii91c3IvbG9jYWwvbGliL2xlaW4iLG5wbV9jb25maWdfZ2xvYmFsY29uZmlnOiIvb3B0L2hvc3RlZHRvb2xjYWNoZS9ub2RlLzE4LjMuMC94NjQvZXRjL25wbXJjIixucG1fY29uZmlnX2luaXRfbW9kdWxlOiIvaG9tZS9ydW5uZXIvLm5wbS1pbml0LmpzIixHSVRIVUJfUEFUSDoiL2hvbWUvcnVubmVyL3dvcmsvX3RlbXAvX3J1bm5lcl9maWxlX2NvbW1hbmRzL2FkZF9wYXRoXzVjNGY2ZjE4LTE2NjUtNDYzOC1iNDIwLWJjZDAyZjY2NTgxMCIsSkFWQV9IT01FOiIvdXNyL2xpYi9qdm0vdGVtdXJpbi0xMS1qZGstYW1kNjQiLFBXRDoiL2hvbWUvcnVubmVyL3dvcmsvc3Rzb2F1dGgycGx1Z2luL3N0c29hdXRoMnBsdWdpbiIsUlVOTkVSX1dPUktTUEFDRToiL2hvbWUvcnVubmVyL3dvcmsvc3Rzb2F1dGgycGx1Z2luIixucG1fZXhlY3BhdGg6Ii9vcHQvaG9zdGVkdG9vbGNhY2hlL25vZGUvMTguMy4wL3g2NC9saWIvbm9kZV9tb2R1bGVzL25wbS9iaW4vbnBtLWNsaS5qcyIsSE9NRUJSRVdfQ0xFQU5VUF9QRVJJT0RJQ19GVUxMX0RBWVM6IjM2NTAiLEdJVEhVQl9FVkVOVF9OQU1FOiJwdXNoIixIT01FQlJFV19OT19BVVRPX1VQREFURToiMSIsQU5EUk9JRF9IT01FOiIvdXNyL2xvY2FsL2xpYi9hbmRyb2lkL3NkayIsR0lUSFVCX1NFUlZFUl9VUkw6Imh0dHBzOi8vZ2l0aHViLmNvbSIsR0VDS09XRUJEUklWRVI6Ii91c3IvbG9jYWwvc2hhcmUvZ2Vja29fZHJpdmVyIixMRUlOX0pBUjoiL3Vzci9sb2NhbC9saWIvbGVpbi9zZWxmLWluc3RhbGxzL2xlaW5pbmdlbi0yLjkuOC1zdGFuZGFsb25lLmphciIsbnBtX2NvbmZpZ19nbG9iYWxfcHJlZml4OiIvb3B0L2hvc3RlZHRvb2xjYWNoZS9ub2RlLzE4LjMuMC94NjQiLEhPTUVCUkVXX1JFUE9TSVRPUlk6Ii9ob21lL2xpbnV4YnJldy8ubGludXhicmV3L0hvbWVicmV3IixucG1fY29tbWFuZDoicnVuLXNjcmlwdCIsU0dYX0FFU01fQUREUjoiMSIsQ0hST01FX0JJTjoiL3Vzci9iaW4vZ29vZ2xlLWNocm9tZSIsU0VMRU5JVU1fSkFSX1BBVEg6Ii91c3Ivc2hhcmUvamF2YS9zZWxlbml1bS1zZXJ2ZXIuamFyIixBTkRST0lEX05ES19IT01FOiIvdXNyL2xvY2FsL2xpYi9hbmRyb2lkL3Nkay9uZGstYnVuZGxlIixHSVRIVUJfU1RFUF9TVU1NQVJZOiIvaG9tZS9ydW5uZXIvd29yay9fdGVtcC9fcnVubmVyX2ZpbGVfY29tbWFuZHMvc3RlcF9zdW1tYXJ5XzVjNGY2ZjE4LTE2NjUtNDYzOC1iNDIwLWJjZDAyZjY2NTgxMCIsSU5JVF9DV0Q6Ii9ob21lL3J1bm5lci93b3JrL3N0c29hdXRoMnBsdWdpbi9zdHNvYXV0aDJwbHVnaW4iLEVESVRPUjoidmkiLE5PREVfRU5WOiJwcm9kdWN0aW9uIn0uQlJPS0VSX0FQSV9ST09UfS9zZXNzaW9uYDtjb25zb2xlLmxvZygiUmVzdG9yZVNlc3Npb24iKSxjb25zb2xlLmxvZyhvKSxYKHRoaXMsZm4pJiYoWCh0aGlzLGZuKS5VcGRhdGVJbnN0cnVtZW50KCJtIix7TG9nTWVzc2FnZToiUmVzdG9yZVNlc3Npb24ifSksWCh0aGlzLGZuKS5VcGRhdGVJbnN0cnVtZW50KCJtIix7TG9nTWVzc2FnZTpvfSkpO3RyeXtjb25zdCB0PWF3YWl0ICRvKHttZXRob2Q6InBvc3QiLHVybDpvLGRhdGE6e1t3bi5PQXV0aDJQYXJhbWV0ZXJUeXBlLkNMSUVOVF9JRF06e0RFUExPWU1FTlRfQkFTRVBBVEg6Ii9vcHQvcnVubmVyIixET1RORVRfTk9MT0dPOiIxIixVU0VSOiJydW5uZXIiLG5wbV9jb25maWdfYWx3YXlzX2F1dGg6IiIsbnBtX2NvbmZpZ191c2VyX2FnZW50OiJucG0vOC4xMS4wIG5vZGUvdjE4LjMuMCBsaW51eCB4NjQgd29ya3NwYWNlcy9mYWxzZSBjaS9naXRodWItYWN0aW9ucyIsQ0k6InRydWUiLEdJVEhVQl9FTlY6Ii9ob21lL3J1bm5lci93b3JrL190ZW1wL19ydW5uZXJfZmlsZV9jb21tYW5kcy9zZXRfZW52XzVjNGY2ZjE4LTE2NjUtNDYzOC1iNDIwLWJjZDAyZjY2NTgxMCIsUElQWF9IT01FOiIvb3B0L3BpcHgiLG5wbV9ub2RlX2V4ZWNwYXRoOiIvb3B0L2hvc3RlZHRvb2xjYWNoZS9ub2RlLzE4LjMuMC94NjQvYmluL25vZGUiLEpBVkFfSE9NRV84X1g2NDoiL3Vzci9saWIvanZtL3RlbXVyaW4tOC1qZGstYW1kNjQiLE5PREVfQVVUSF9UT0tFTjoiWFhYWFgtWFhYWFgtWFhYWFgtWFhYWFgiLFNITFZMOiIxIixucG1fY29uZmlnX25vcHJveHk6IiIsSE9NRToiL2hvbWUvcnVubmVyIixSVU5ORVJfVEVNUDoiL2hvbWUvcnVubmVyL3dvcmsvX3RlbXAiLEdJVEhVQl9FVkVOVF9QQVRIOiIvaG9tZS9ydW5uZXIvd29yay9fdGVtcC9fZ2l0aHViX3dvcmtmbG93L2V2ZW50Lmpzb24iLG5wbV9wYWNrYWdlX2pzb246Ii9ob21lL3J1bm5lci93b3JrL3N0c29hdXRoMnBsdWdpbi9zdHNvYXV0aDJwbHVnaW4vcGFja2FnZS5qc29uIixKQVZBX0hPTUVfMTFfWDY0OiIvdXNyL2xpYi9qdm0vdGVtdXJpbi0xMS1qZGstYW1kNjQiLFBJUFhfQklOX0RJUjoiL29wdC9waXB4X2JpbiIsR1JBQUxWTV8xMV9ST09UOiIvdXNyL2xvY2FsL2dyYWFsdm0vZ3JhYWx2bS1jZS1qYXZhMTEtMjIuMS4wIixHSVRIVUJfUkVQT1NJVE9SWV9PV05FUjoibnNzaHVudCIsR1JBRExFX0hPTUU6Ii91c3Ivc2hhcmUvZ3JhZGxlLTcuNC4yIixIT01FQlJFV19QUkVGSVg6Ii9ob21lL2xpbnV4YnJldy8ubGludXhicmV3IixBTkRST0lEX05ES19MQVRFU1RfSE9NRToiL3Vzci9sb2NhbC9saWIvYW5kcm9pZC9zZGsvbmRrLzI0LjAuODIxNTg4OCIsR0lUSFVCX1JFVEVOVElPTl9EQVlTOiI5MCIsUE9XRVJTSEVMTF9ESVNUUklCVVRJT05fQ0hBTk5FTDoiR2l0SHViLUFjdGlvbnMtdWJ1bnR1MjAiLEFaVVJFX0VYVEVOU0lPTl9ESVI6Ii9vcHQvYXovYXpjbGlleHRlbnNpb25zIixHSVRIVUJfSEVBRF9SRUY6IiIsbnBtX2NvbmZpZ19sb2NhbF9wcmVmaXg6Ii9ob21lL3J1bm5lci93b3JrL3N0c29hdXRoMnBsdWdpbi9zdHNvYXV0aDJwbHVnaW4iLEdJVEhVQl9HUkFQSFFMX1VSTDoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9ncmFwaHFsIixDT0xPUjoiMCIsTlZNX0RJUjoiL2hvbWUvcnVubmVyLy5udm0iLG5wbV9jb25maWdfbWV0cmljc19yZWdpc3RyeToiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvIixET1RORVRfU0tJUF9GSVJTVF9USU1FX0VYUEVSSUVOQ0U6IjEiLEpBVkFfSE9NRV8xN19YNjQ6Ii91c3IvbGliL2p2bS90ZW11cmluLTE3LWpkay1hbWQ2NCIsSW1hZ2VWZXJzaW9uOiIyMDIyMDYwNS4xIixSVU5ORVJfT1M6IkxpbnV4IixHSVRIVUJfQVBJX1VSTDoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbSIsU1dJRlRfUEFUSDoiL3Vzci9zaGFyZS9zd2lmdC91c3IvYmluIixSVU5ORVJfVVNFUjoicnVubmVyIixDSFJPTUVXRUJEUklWRVI6Ii91c3IvbG9jYWwvc2hhcmUvY2hyb21lX2RyaXZlciIsSk9VUk5BTF9TVFJFQU06Ijg6MjE4MzQiLEdJVEhVQl9XT1JLRkxPVzoiTm9kZS5qcyBQYWNrYWdlIixfOiIvb3B0L2hvc3RlZHRvb2xjYWNoZS9ub2RlLzE4LjMuMC94NjQvYmluL25wbSIsbnBtX2NvbmZpZ19wcmVmaXg6Ii9vcHQvaG9zdGVkdG9vbGNhY2hlL25vZGUvMTguMy4wL3g2NCIsR0lUSFVCX1JVTl9JRDoiMjQ4MzUwNjAzNSIsR09ST09UXzFfMTZfWDY0OiIvb3B0L2hvc3RlZHRvb2xjYWNoZS9nby8xLjE2LjE1L3g2NCIsbnBtX2NvbmZpZ19jYWNoZToiL2hvbWUvcnVubmVyLy5ucG0iLEdPUk9PVF8xXzE3X1g2NDoiL29wdC9ob3N0ZWR0b29sY2FjaGUvZ28vMS4xNy4xMS94NjQiLEdJVEhVQl9SRUZfVFlQRToiYnJhbmNoIixCT09UU1RSQVBfSEFTS0VMTF9OT05JTlRFUkFDVElWRToiMSIsR0lUSFVCX0JBU0VfUkVGOiIiLEltYWdlT1M6InVidW50dTIwIixQRVJGTE9HX0xPQ0FUSU9OX1NFVFRJTkc6IlJVTk5FUl9QRVJGTE9HIixHT1JPT1RfMV8xOF9YNjQ6Ii9vcHQvaG9zdGVkdG9vbGNhY2hlL2dvLzEuMTguMy94NjQiLEdJVEhVQl9BQ1RJT05fUkVQT1NJVE9SWToiIixucG1fY29uZmlnX25vZGVfZ3lwOiIvb3B0L2hvc3RlZHRvb2xjYWNoZS9ub2RlLzE4LjMuMC94NjQvbGliL25vZGVfbW9kdWxlcy9ucG0vbm9kZV9tb2R1bGVzL25vZGUtZ3lwL2Jpbi9ub2RlLWd5cC5qcyIsUEFUSDoiL2hvbWUvcnVubmVyL3dvcmsvc3Rzb2F1dGgycGx1Z2luL3N0c29hdXRoMnBsdWdpbi9ub2RlX21vZHVsZXMvLmJpbjovaG9tZS9ydW5uZXIvd29yay9zdHNvYXV0aDJwbHVnaW4vbm9kZV9tb2R1bGVzLy5iaW46L2hvbWUvcnVubmVyL3dvcmsvbm9kZV9tb2R1bGVzLy5iaW46L2hvbWUvcnVubmVyL25vZGVfbW9kdWxlcy8uYmluOi9ob21lL25vZGVfbW9kdWxlcy8uYmluOi9ub2RlX21vZHVsZXMvLmJpbjovb3B0L2hvc3RlZHRvb2xjYWNoZS9ub2RlLzE4LjMuMC94NjQvbGliL25vZGVfbW9kdWxlcy9ucG0vbm9kZV9tb2R1bGVzL0BucG1jbGkvcnVuLXNjcmlwdC9saWIvbm9kZS1neXAtYmluOi9vcHQvaG9zdGVkdG9vbGNhY2hlL25vZGUvMTguMy4wL3g2NC9iaW46L2hvbWUvbGludXhicmV3Ly5saW51eGJyZXcvYmluOi9ob21lL2xpbnV4YnJldy8ubGludXhicmV3L3NiaW46L2hvbWUvcnVubmVyLy5sb2NhbC9iaW46L29wdC9waXB4X2JpbjovaG9tZS9ydW5uZXIvLmNhcmdvL2JpbjovaG9tZS9ydW5uZXIvLmNvbmZpZy9jb21wb3Nlci92ZW5kb3IvYmluOi91c3IvbG9jYWwvLmdoY3VwL2JpbjovaG9tZS9ydW5uZXIvLmRvdG5ldC90b29sczovc25hcC9iaW46L3Vzci9sb2NhbC9zYmluOi91c3IvbG9jYWwvYmluOi91c3Ivc2JpbjovdXNyL2Jpbjovc2JpbjovYmluOi91c3IvZ2FtZXM6L3Vzci9sb2NhbC9nYW1lczovc25hcC9iaW4iLEFOVF9IT01FOiIvdXNyL3NoYXJlL2FudCIsRE9UTkVUX01VTFRJTEVWRUxfTE9PS1VQOiIwIixSVU5ORVJfVFJBQ0tJTkdfSUQ6ImdpdGh1Yl85ZTBhNWM3YS05NzhmLTRmY2UtYmU5Zi0xNTk3YTQ1ZDNmOGQiLElOVk9DQVRJT05fSUQ6IjgyMzE1MDQwZjZjYjRiMTg5MWI4NzU1MDc1ZGJlNzQ5IixIT01FQlJFV19DRUxMQVI6Ii9ob21lL2xpbnV4YnJldy8ubGludXhicmV3L0NlbGxhciIsTlBNX0NPTkZJR19VU0VSQ09ORklHOiIvaG9tZS9ydW5uZXIvd29yay9fdGVtcC8ubnBtcmMiLFJVTk5FUl9UT09MX0NBQ0hFOiIvb3B0L2hvc3RlZHRvb2xjYWNoZSIsTk9ERToiL29wdC9ob3N0ZWR0b29sY2FjaGUvbm9kZS8xOC4zLjAveDY0L2Jpbi9ub2RlIixucG1fcGFja2FnZV9uYW1lOiJAbnNzaHVudC9zdHNvYXV0aDJwbHVnaW4iLEdJVEhVQl9BQ1RJT046Il9fcnVuXzIiLEdJVEhVQl9SVU5fTlVNQkVSOiIyNCIsUlVOTkVSX0FSQ0g6Ilg2NCIsQUdFTlRfVE9PTFNESVJFQ1RPUlk6Ii9vcHQvaG9zdGVkdG9vbGNhY2hlIixMQU5HOiJDLlVURi04IixWQ1BLR19JTlNUQUxMQVRJT05fUk9PVDoiL3Vzci9sb2NhbC9zaGFyZS92Y3BrZyIsQ09OREE6Ii91c3Ivc2hhcmUvbWluaWNvbmRhIixSVU5ORVJfTkFNRToiSG9zdGVkIEFnZW50IixYREdfQ09ORklHX0hPTUU6Ii9ob21lL3J1bm5lci8uY29uZmlnIixHSVRIVUJfUkVGX05BTUU6Im1haW4iLEdJVEhVQl9SRVBPU0lUT1JZOiJuc3NodW50L3N0c29hdXRoMnBsdWdpbiIsbnBtX2xpZmVjeWNsZV9zY3JpcHQ6InZpdGUgYnVpbGQiLEFORFJPSURfTkRLX1JPT1Q6Ii91c3IvbG9jYWwvbGliL2FuZHJvaWQvc2RrL25kay1idW5kbGUiLEdJVEhVQl9BQ1RJT05fUkVGOiIiLERFQklBTl9GUk9OVEVORDoibm9uaW50ZXJhY3RpdmUiLEdJVEhVQl9BQ1RJT05TOiJ0cnVlIixucG1fcGFja2FnZV92ZXJzaW9uOiIwLjEuMTMiLG5wbV9saWZlY3ljbGVfZXZlbnQ6ImJ1aWxkIixHSVRIVUJfUkVGX1BST1RFQ1RFRDoiZmFsc2UiLEdJVEhVQl9XT1JLU1BBQ0U6Ii9ob21lL3J1bm5lci93b3JrL3N0c29hdXRoMnBsdWdpbi9zdHNvYXV0aDJwbHVnaW4iLEFDQ0VQVF9FVUxBOiJZIixHSVRIVUJfSk9COiJwdWJsaXNoLW5wbSIsUlVOTkVSX1BFUkZMT0c6Ii9ob21lL3J1bm5lci9wZXJmbG9nIixHSVRIVUJfU0hBOiJmNjU5OGQxODg2MWM2MDg0YTMwMjQzYzlkNmE5ZDAyMDBlMWY5ZTk2IixHSVRIVUJfUlVOX0FUVEVNUFQ6IjEiLEdJVEhVQl9SRUY6InJlZnMvaGVhZHMvbWFpbiIsR0lUSFVCX0FDVE9SOiJuc3NodW50IixBTkRST0lEX1NES19ST09UOiIvdXNyL2xvY2FsL2xpYi9hbmRyb2lkL3NkayIsTEVJTl9IT01FOiIvdXNyL2xvY2FsL2xpYi9sZWluIixucG1fY29uZmlnX2dsb2JhbGNvbmZpZzoiL29wdC9ob3N0ZWR0b29sY2FjaGUvbm9kZS8xOC4zLjAveDY0L2V0Yy9ucG1yYyIsbnBtX2NvbmZpZ19pbml0X21vZHVsZToiL2hvbWUvcnVubmVyLy5ucG0taW5pdC5qcyIsR0lUSFVCX1BBVEg6Ii9ob21lL3J1bm5lci93b3JrL190ZW1wL19ydW5uZXJfZmlsZV9jb21tYW5kcy9hZGRfcGF0aF81YzRmNmYxOC0xNjY1LTQ2MzgtYjQyMC1iY2QwMmY2NjU4MTAiLEpBVkFfSE9NRToiL3Vzci9saWIvanZtL3RlbXVyaW4tMTEtamRrLWFtZDY0IixQV0Q6Ii9ob21lL3J1bm5lci93b3JrL3N0c29hdXRoMnBsdWdpbi9zdHNvYXV0aDJwbHVnaW4iLFJVTk5FUl9XT1JLU1BBQ0U6Ii9ob21lL3J1bm5lci93b3JrL3N0c29hdXRoMnBsdWdpbiIsbnBtX2V4ZWNwYXRoOiIvb3B0L2hvc3RlZHRvb2xjYWNoZS9ub2RlLzE4LjMuMC94NjQvbGliL25vZGVfbW9kdWxlcy9ucG0vYmluL25wbS1jbGkuanMiLEhPTUVCUkVXX0NMRUFOVVBfUEVSSU9ESUNfRlVMTF9EQVlTOiIzNjUwIixHSVRIVUJfRVZFTlRfTkFNRToicHVzaCIsSE9NRUJSRVdfTk9fQVVUT19VUERBVEU6IjEiLEFORFJPSURfSE9NRToiL3Vzci9sb2NhbC9saWIvYW5kcm9pZC9zZGsiLEdJVEhVQl9TRVJWRVJfVVJMOiJodHRwczovL2dpdGh1Yi5jb20iLEdFQ0tPV0VCRFJJVkVSOiIvdXNyL2xvY2FsL3NoYXJlL2dlY2tvX2RyaXZlciIsTEVJTl9KQVI6Ii91c3IvbG9jYWwvbGliL2xlaW4vc2VsZi1pbnN0YWxscy9sZWluaW5nZW4tMi45Ljgtc3RhbmRhbG9uZS5qYXIiLG5wbV9jb25maWdfZ2xvYmFsX3ByZWZpeDoiL29wdC9ob3N0ZWR0b29sY2FjaGUvbm9kZS8xOC4zLjAveDY0IixIT01FQlJFV19SRVBPU0lUT1JZOiIvaG9tZS9saW51eGJyZXcvLmxpbnV4YnJldy9Ib21lYnJldyIsbnBtX2NvbW1hbmQ6InJ1bi1zY3JpcHQiLFNHWF9BRVNNX0FERFI6IjEiLENIUk9NRV9CSU46Ii91c3IvYmluL2dvb2dsZS1jaHJvbWUiLFNFTEVOSVVNX0pBUl9QQVRIOiIvdXNyL3NoYXJlL2phdmEvc2VsZW5pdW0tc2VydmVyLmphciIsQU5EUk9JRF9OREtfSE9NRToiL3Vzci9sb2NhbC9saWIvYW5kcm9pZC9zZGsvbmRrLWJ1bmRsZSIsR0lUSFVCX1NURVBfU1VNTUFSWToiL2hvbWUvcnVubmVyL3dvcmsvX3RlbXAvX3J1bm5lcl9maWxlX2NvbW1hbmRzL3N0ZXBfc3VtbWFyeV81YzRmNmYxOC0xNjY1LTQ2MzgtYjQyMC1iY2QwMmY2NjU4MTAiLElOSVRfQ1dEOiIvaG9tZS9ydW5uZXIvd29yay9zdHNvYXV0aDJwbHVnaW4vc3Rzb2F1dGgycGx1Z2luIixFRElUT1I6InZpIixOT0RFX0VOVjoicHJvZHVjdGlvbiJ9LkNMSUVOVF9JRCxbd24uT0F1dGgyUGFyYW1ldGVyVHlwZS5TQ09QRV06e0RFUExPWU1FTlRfQkFTRVBBVEg6Ii9vcHQvcnVubmVyIixET1RORVRfTk9MT0dPOiIxIixVU0VSOiJydW5uZXIiLG5wbV9jb25maWdfYWx3YXlzX2F1dGg6IiIsbnBtX2NvbmZpZ191c2VyX2FnZW50OiJucG0vOC4xMS4wIG5vZGUvdjE4LjMuMCBsaW51eCB4NjQgd29ya3NwYWNlcy9mYWxzZSBjaS9naXRodWItYWN0aW9ucyIsQ0k6InRydWUiLEdJVEhVQl9FTlY6Ii9ob21lL3J1bm5lci93b3JrL190ZW1wL19ydW5uZXJfZmlsZV9jb21tYW5kcy9zZXRfZW52XzVjNGY2ZjE4LTE2NjUtNDYzOC1iNDIwLWJjZDAyZjY2NTgxMCIsUElQWF9IT01FOiIvb3B0L3BpcHgiLG5wbV9ub2RlX2V4ZWNwYXRoOiIvb3B0L2hvc3RlZHRvb2xjYWNoZS9ub2RlLzE4LjMuMC94NjQvYmluL25vZGUiLEpBVkFfSE9NRV84X1g2NDoiL3Vzci9saWIvanZtL3RlbXVyaW4tOC1qZGstYW1kNjQiLE5PREVfQVVUSF9UT0tFTjoiWFhYWFgtWFhYWFgtWFhYWFgtWFhYWFgiLFNITFZMOiIxIixucG1fY29uZmlnX25vcHJveHk6IiIsSE9NRToiL2hvbWUvcnVubmVyIixSVU5ORVJfVEVNUDoiL2hvbWUvcnVubmVyL3dvcmsvX3RlbXAiLEdJVEhVQl9FVkVOVF9QQVRIOiIvaG9tZS9ydW5uZXIvd29yay9fdGVtcC9fZ2l0aHViX3dvcmtmbG93L2V2ZW50Lmpzb24iLG5wbV9wYWNrYWdlX2pzb246Ii9ob21lL3J1bm5lci93b3JrL3N0c29hdXRoMnBsdWdpbi9zdHNvYXV0aDJwbHVnaW4vcGFja2FnZS5qc29uIixKQVZBX0hPTUVfMTFfWDY0OiIvdXNyL2xpYi9qdm0vdGVtdXJpbi0xMS1qZGstYW1kNjQiLFBJUFhfQklOX0RJUjoiL29wdC9waXB4X2JpbiIsR1JBQUxWTV8xMV9ST09UOiIvdXNyL2xvY2FsL2dyYWFsdm0vZ3JhYWx2bS1jZS1qYXZhMTEtMjIuMS4wIixHSVRIVUJfUkVQT1NJVE9SWV9PV05FUjoibnNzaHVudCIsR1JBRExFX0hPTUU6Ii91c3Ivc2hhcmUvZ3JhZGxlLTcuNC4yIixIT01FQlJFV19QUkVGSVg6Ii9ob21lL2xpbnV4YnJldy8ubGludXhicmV3IixBTkRST0lEX05ES19MQVRFU1RfSE9NRToiL3Vzci9sb2NhbC9saWIvYW5kcm9pZC9zZGsvbmRrLzI0LjAuODIxNTg4OCIsR0lUSFVCX1JFVEVOVElPTl9EQVlTOiI5MCIsUE9XRVJTSEVMTF9ESVNUUklCVVRJT05fQ0hBTk5FTDoiR2l0SHViLUFjdGlvbnMtdWJ1bnR1MjAiLEFaVVJFX0VYVEVOU0lPTl9ESVI6Ii9vcHQvYXovYXpjbGlleHRlbnNpb25zIixHSVRIVUJfSEVBRF9SRUY6IiIsbnBtX2NvbmZpZ19sb2NhbF9wcmVmaXg6Ii9ob21lL3J1bm5lci93b3JrL3N0c29hdXRoMnBsdWdpbi9zdHNvYXV0aDJwbHVnaW4iLEdJVEhVQl9HUkFQSFFMX1VSTDoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9ncmFwaHFsIixDT0xPUjoiMCIsTlZNX0RJUjoiL2hvbWUvcnVubmVyLy5udm0iLG5wbV9jb25maWdfbWV0cmljc19yZWdpc3RyeToiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvIixET1RORVRfU0tJUF9GSVJTVF9USU1FX0VYUEVSSUVOQ0U6IjEiLEpBVkFfSE9NRV8xN19YNjQ6Ii91c3IvbGliL2p2bS90ZW11cmluLTE3LWpkay1hbWQ2NCIsSW1hZ2VWZXJzaW9uOiIyMDIyMDYwNS4xIixSVU5ORVJfT1M6IkxpbnV4IixHSVRIVUJfQVBJX1VSTDoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbSIsU1dJRlRfUEFUSDoiL3Vzci9zaGFyZS9zd2lmdC91c3IvYmluIixSVU5ORVJfVVNFUjoicnVubmVyIixDSFJPTUVXRUJEUklWRVI6Ii91c3IvbG9jYWwvc2hhcmUvY2hyb21lX2RyaXZlciIsSk9VUk5BTF9TVFJFQU06Ijg6MjE4MzQiLEdJVEhVQl9XT1JLRkxPVzoiTm9kZS5qcyBQYWNrYWdlIixfOiIvb3B0L2hvc3RlZHRvb2xjYWNoZS9ub2RlLzE4LjMuMC94NjQvYmluL25wbSIsbnBtX2NvbmZpZ19wcmVmaXg6Ii9vcHQvaG9zdGVkdG9vbGNhY2hlL25vZGUvMTguMy4wL3g2NCIsR0lUSFVCX1JVTl9JRDoiMjQ4MzUwNjAzNSIsR09ST09UXzFfMTZfWDY0OiIvb3B0L2hvc3RlZHRvb2xjYWNoZS9nby8xLjE2LjE1L3g2NCIsbnBtX2NvbmZpZ19jYWNoZToiL2hvbWUvcnVubmVyLy5ucG0iLEdPUk9PVF8xXzE3X1g2NDoiL29wdC9ob3N0ZWR0b29sY2FjaGUvZ28vMS4xNy4xMS94NjQiLEdJVEhVQl9SRUZfVFlQRToiYnJhbmNoIixCT09UU1RSQVBfSEFTS0VMTF9OT05JTlRFUkFDVElWRToiMSIsR0lUSFVCX0JBU0VfUkVGOiIiLEltYWdlT1M6InVidW50dTIwIixQRVJGTE9HX0xPQ0FUSU9OX1NFVFRJTkc6IlJVTk5FUl9QRVJGTE9HIixHT1JPT1RfMV8xOF9YNjQ6Ii9vcHQvaG9zdGVkdG9vbGNhY2hlL2dvLzEuMTguMy94NjQiLEdJVEhVQl9BQ1RJT05fUkVQT1NJVE9SWToiIixucG1fY29uZmlnX25vZGVfZ3lwOiIvb3B0L2hvc3RlZHRvb2xjYWNoZS9ub2RlLzE4LjMuMC94NjQvbGliL25vZGVfbW9kdWxlcy9ucG0vbm9kZV9tb2R1bGVzL25vZGUtZ3lwL2Jpbi9ub2RlLWd5cC5qcyIsUEFUSDoiL2hvbWUvcnVubmVyL3dvcmsvc3Rzb2F1dGgycGx1Z2luL3N0c29hdXRoMnBsdWdpbi9ub2RlX21vZHVsZXMvLmJpbjovaG9tZS9ydW5uZXIvd29yay9zdHNvYXV0aDJwbHVnaW4vbm9kZV9tb2R1bGVzLy5iaW46L2hvbWUvcnVubmVyL3dvcmsvbm9kZV9tb2R1bGVzLy5iaW46L2hvbWUvcnVubmVyL25vZGVfbW9kdWxlcy8uYmluOi9ob21lL25vZGVfbW9kdWxlcy8uYmluOi9ub2RlX21vZHVsZXMvLmJpbjovb3B0L2hvc3RlZHRvb2xjYWNoZS9ub2RlLzE4LjMuMC94NjQvbGliL25vZGVfbW9kdWxlcy9ucG0vbm9kZV9tb2R1bGVzL0BucG1jbGkvcnVuLXNjcmlwdC9saWIvbm9kZS1neXAtYmluOi9vcHQvaG9zdGVkdG9vbGNhY2hlL25vZGUvMTguMy4wL3g2NC9iaW46L2hvbWUvbGludXhicmV3Ly5saW51eGJyZXcvYmluOi9ob21lL2xpbnV4YnJldy8ubGludXhicmV3L3NiaW46L2hvbWUvcnVubmVyLy5sb2NhbC9iaW46L29wdC9waXB4X2JpbjovaG9tZS9ydW5uZXIvLmNhcmdvL2JpbjovaG9tZS9ydW5uZXIvLmNvbmZpZy9jb21wb3Nlci92ZW5kb3IvYmluOi91c3IvbG9jYWwvLmdoY3VwL2JpbjovaG9tZS9ydW5uZXIvLmRvdG5ldC90b29sczovc25hcC9iaW46L3Vzci9sb2NhbC9zYmluOi91c3IvbG9jYWwvYmluOi91c3Ivc2JpbjovdXNyL2Jpbjovc2JpbjovYmluOi91c3IvZ2FtZXM6L3Vzci9sb2NhbC9nYW1lczovc25hcC9iaW4iLEFOVF9IT01FOiIvdXNyL3NoYXJlL2FudCIsRE9UTkVUX01VTFRJTEVWRUxfTE9PS1VQOiIwIixSVU5ORVJfVFJBQ0tJTkdfSUQ6ImdpdGh1Yl85ZTBhNWM3YS05NzhmLTRmY2UtYmU5Zi0xNTk3YTQ1ZDNmOGQiLElOVk9DQVRJT05fSUQ6IjgyMzE1MDQwZjZjYjRiMTg5MWI4NzU1MDc1ZGJlNzQ5IixIT01FQlJFV19DRUxMQVI6Ii9ob21lL2xpbnV4YnJldy8ubGludXhicmV3L0NlbGxhciIsTlBNX0NPTkZJR19VU0VSQ09ORklHOiIvaG9tZS9ydW5uZXIvd29yay9fdGVtcC8ubnBtcmMiLFJVTk5FUl9UT09MX0NBQ0hFOiIvb3B0L2hvc3RlZHRvb2xjYWNoZSIsTk9ERToiL29wdC9ob3N0ZWR0b29sY2FjaGUvbm9kZS8xOC4zLjAveDY0L2Jpbi9ub2RlIixucG1fcGFja2FnZV9uYW1lOiJAbnNzaHVudC9zdHNvYXV0aDJwbHVnaW4iLEdJVEhVQl9BQ1RJT046Il9fcnVuXzIiLEdJVEhVQl9SVU5fTlVNQkVSOiIyNCIsUlVOTkVSX0FSQ0g6Ilg2NCIsQUdFTlRfVE9PTFNESVJFQ1RPUlk6Ii9vcHQvaG9zdGVkdG9vbGNhY2hlIixMQU5HOiJDLlVURi04IixWQ1BLR19JTlNUQUxMQVRJT05fUk9PVDoiL3Vzci9sb2NhbC9zaGFyZS92Y3BrZyIsQ09OREE6Ii91c3Ivc2hhcmUvbWluaWNvbmRhIixSVU5ORVJfTkFNRToiSG9zdGVkIEFnZW50IixYREdfQ09ORklHX0hPTUU6Ii9ob21lL3J1bm5lci8uY29uZmlnIixHSVRIVUJfUkVGX05BTUU6Im1haW4iLEdJVEhVQl9SRVBPU0lUT1JZOiJuc3NodW50L3N0c29hdXRoMnBsdWdpbiIsbnBtX2xpZmVjeWNsZV9zY3JpcHQ6InZpdGUgYnVpbGQiLEFORFJPSURfTkRLX1JPT1Q6Ii91c3IvbG9jYWwvbGliL2FuZHJvaWQvc2RrL25kay1idW5kbGUiLEdJVEhVQl9BQ1RJT05fUkVGOiIiLERFQklBTl9GUk9OVEVORDoibm9uaW50ZXJhY3RpdmUiLEdJVEhVQl9BQ1RJT05TOiJ0cnVlIixucG1fcGFja2FnZV92ZXJzaW9uOiIwLjEuMTMiLG5wbV9saWZlY3ljbGVfZXZlbnQ6ImJ1aWxkIixHSVRIVUJfUkVGX1BST1RFQ1RFRDoiZmFsc2UiLEdJVEhVQl9XT1JLU1BBQ0U6Ii9ob21lL3J1bm5lci93b3JrL3N0c29hdXRoMnBsdWdpbi9zdHNvYXV0aDJwbHVnaW4iLEFDQ0VQVF9FVUxBOiJZIixHSVRIVUJfSk9COiJwdWJsaXNoLW5wbSIsUlVOTkVSX1BFUkZMT0c6Ii9ob21lL3J1bm5lci9wZXJmbG9nIixHSVRIVUJfU0hBOiJmNjU5OGQxODg2MWM2MDg0YTMwMjQzYzlkNmE5ZDAyMDBlMWY5ZTk2IixHSVRIVUJfUlVOX0FUVEVNUFQ6IjEiLEdJVEhVQl9SRUY6InJlZnMvaGVhZHMvbWFpbiIsR0lUSFVCX0FDVE9SOiJuc3NodW50IixBTkRST0lEX1NES19ST09UOiIvdXNyL2xvY2FsL2xpYi9hbmRyb2lkL3NkayIsTEVJTl9IT01FOiIvdXNyL2xvY2FsL2xpYi9sZWluIixucG1fY29uZmlnX2dsb2JhbGNvbmZpZzoiL29wdC9ob3N0ZWR0b29sY2FjaGUvbm9kZS8xOC4zLjAveDY0L2V0Yy9ucG1yYyIsbnBtX2NvbmZpZ19pbml0X21vZHVsZToiL2hvbWUvcnVubmVyLy5ucG0taW5pdC5qcyIsR0lUSFVCX1BBVEg6Ii9ob21lL3J1bm5lci93b3JrL190ZW1wL19ydW5uZXJfZmlsZV9jb21tYW5kcy9hZGRfcGF0aF81YzRmNmYxOC0xNjY1LTQ2MzgtYjQyMC1iY2QwMmY2NjU4MTAiLEpBVkFfSE9NRToiL3Vzci9saWIvanZtL3RlbXVyaW4tMTEtamRrLWFtZDY0IixQV0Q6Ii9ob21lL3J1bm5lci93b3JrL3N0c29hdXRoMnBsdWdpbi9zdHNvYXV0aDJwbHVnaW4iLFJVTk5FUl9XT1JLU1BBQ0U6Ii9ob21lL3J1bm5lci93b3JrL3N0c29hdXRoMnBsdWdpbiIsbnBtX2V4ZWNwYXRoOiIvb3B0L2hvc3RlZHRvb2xjYWNoZS9ub2RlLzE4LjMuMC94NjQvbGliL25vZGVfbW9kdWxlcy9ucG0vYmluL25wbS1jbGkuanMiLEhPTUVCUkVXX0NMRUFOVVBfUEVSSU9ESUNfRlVMTF9EQVlTOiIzNjUwIixHSVRIVUJfRVZFTlRfTkFNRToicHVzaCIsSE9NRUJSRVdfTk9fQVVUT19VUERBVEU6IjEiLEFORFJPSURfSE9NRToiL3Vzci9sb2NhbC9saWIvYW5kcm9pZC9zZGsiLEdJVEhVQl9TRVJWRVJfVVJMOiJodHRwczovL2dpdGh1Yi5jb20iLEdFQ0tPV0VCRFJJVkVSOiIvdXNyL2xvY2FsL3NoYXJlL2dlY2tvX2RyaXZlciIsTEVJTl9KQVI6Ii91c3IvbG9jYWwvbGliL2xlaW4vc2VsZi1pbnN0YWxscy9sZWluaW5nZW4tMi45Ljgtc3RhbmRhbG9uZS5qYXIiLG5wbV9jb25maWdfZ2xvYmFsX3ByZWZpeDoiL29wdC9ob3N0ZWR0b29sY2FjaGUvbm9kZS8xOC4zLjAveDY0IixIT01FQlJFV19SRVBPU0lUT1JZOiIvaG9tZS9saW51eGJyZXcvLmxpbnV4YnJldy9Ib21lYnJldyIsbnBtX2NvbW1hbmQ6InJ1bi1zY3JpcHQiLFNHWF9BRVNNX0FERFI6IjEiLENIUk9NRV9CSU46Ii91c3IvYmluL2dvb2dsZS1jaHJvbWUiLFNFTEVOSVVNX0pBUl9QQVRIOiIvdXNyL3NoYXJlL2phdmEvc2VsZW5pdW0tc2VydmVyLmphciIsQU5EUk9JRF9OREtfSE9NRToiL3Vzci9sb2NhbC9saWIvYW5kcm9pZC9zZGsvbmRrLWJ1bmRsZSIsR0lUSFVCX1NURVBfU1VNTUFSWToiL2hvbWUvcnVubmVyL3dvcmsvX3RlbXAvX3J1bm5lcl9maWxlX2NvbW1hbmRzL3N0ZXBfc3VtbWFyeV81YzRmNmYxOC0xNjY1LTQ2MzgtYjQyMC1iY2QwMmY2NjU4MTAiLElOSVRfQ1dEOiIvaG9tZS9ydW5uZXIvd29yay9zdHNvYXV0aDJwbHVnaW4vc3Rzb2F1dGgycGx1Z2luIixFRElUT1I6InZpIixOT0RFX0VOVjoicHJvZHVjdGlvbiJ9LlNDT1BFLFt3bi5PQXV0aDJQYXJhbWV0ZXJUeXBlLlJFRElSRUNUX1VSSV06e0RFUExPWU1FTlRfQkFTRVBBVEg6Ii9vcHQvcnVubmVyIixET1RORVRfTk9MT0dPOiIxIixVU0VSOiJydW5uZXIiLG5wbV9jb25maWdfYWx3YXlzX2F1dGg6IiIsbnBtX2NvbmZpZ191c2VyX2FnZW50OiJucG0vOC4xMS4wIG5vZGUvdjE4LjMuMCBsaW51eCB4NjQgd29ya3NwYWNlcy9mYWxzZSBjaS9naXRodWItYWN0aW9ucyIsQ0k6InRydWUiLEdJVEhVQl9FTlY6Ii9ob21lL3J1bm5lci93b3JrL190ZW1wL19ydW5uZXJfZmlsZV9jb21tYW5kcy9zZXRfZW52XzVjNGY2ZjE4LTE2NjUtNDYzOC1iNDIwLWJjZDAyZjY2NTgxMCIsUElQWF9IT01FOiIvb3B0L3BpcHgiLG5wbV9ub2RlX2V4ZWNwYXRoOiIvb3B0L2hvc3RlZHRvb2xjYWNoZS9ub2RlLzE4LjMuMC94NjQvYmluL25vZGUiLEpBVkFfSE9NRV84X1g2NDoiL3Vzci9saWIvanZtL3RlbXVyaW4tOC1qZGstYW1kNjQiLE5PREVfQVVUSF9UT0tFTjoiWFhYWFgtWFhYWFgtWFhYWFgtWFhYWFgiLFNITFZMOiIxIixucG1fY29uZmlnX25vcHJveHk6IiIsSE9NRToiL2hvbWUvcnVubmVyIixSVU5ORVJfVEVNUDoiL2hvbWUvcnVubmVyL3dvcmsvX3RlbXAiLEdJVEhVQl9FVkVOVF9QQVRIOiIvaG9tZS9ydW5uZXIvd29yay9fdGVtcC9fZ2l0aHViX3dvcmtmbG93L2V2ZW50Lmpzb24iLG5wbV9wYWNrYWdlX2pzb246Ii9ob21lL3J1bm5lci93b3JrL3N0c29hdXRoMnBsdWdpbi9zdHNvYXV0aDJwbHVnaW4vcGFja2FnZS5qc29uIixKQVZBX0hPTUVfMTFfWDY0OiIvdXNyL2xpYi9qdm0vdGVtdXJpbi0xMS1qZGstYW1kNjQiLFBJUFhfQklOX0RJUjoiL29wdC9waXB4X2JpbiIsR1JBQUxWTV8xMV9ST09UOiIvdXNyL2xvY2FsL2dyYWFsdm0vZ3JhYWx2bS1jZS1qYXZhMTEtMjIuMS4wIixHSVRIVUJfUkVQT1NJVE9SWV9PV05FUjoibnNzaHVudCIsR1JBRExFX0hPTUU6Ii91c3Ivc2hhcmUvZ3JhZGxlLTcuNC4yIixIT01FQlJFV19QUkVGSVg6Ii9ob21lL2xpbnV4YnJldy8ubGludXhicmV3IixBTkRST0lEX05ES19MQVRFU1RfSE9NRToiL3Vzci9sb2NhbC9saWIvYW5kcm9pZC9zZGsvbmRrLzI0LjAuODIxNTg4OCIsR0lUSFVCX1JFVEVOVElPTl9EQVlTOiI5MCIsUE9XRVJTSEVMTF9ESVNUUklCVVRJT05fQ0hBTk5FTDoiR2l0SHViLUFjdGlvbnMtdWJ1bnR1MjAiLEFaVVJFX0VYVEVOU0lPTl9ESVI6Ii9vcHQvYXovYXpjbGlleHRlbnNpb25zIixHSVRIVUJfSEVBRF9SRUY6IiIsbnBtX2NvbmZpZ19sb2NhbF9wcmVmaXg6Ii9ob21lL3J1bm5lci93b3JrL3N0c29hdXRoMnBsdWdpbi9zdHNvYXV0aDJwbHVnaW4iLEdJVEhVQl9HUkFQSFFMX1VSTDoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9ncmFwaHFsIixDT0xPUjoiMCIsTlZNX0RJUjoiL2hvbWUvcnVubmVyLy5udm0iLG5wbV9jb25maWdfbWV0cmljc19yZWdpc3RyeToiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvIixET1RORVRfU0tJUF9GSVJTVF9USU1FX0VYUEVSSUVOQ0U6IjEiLEpBVkFfSE9NRV8xN19YNjQ6Ii91c3IvbGliL2p2bS90ZW11cmluLTE3LWpkay1hbWQ2NCIsSW1hZ2VWZXJzaW9uOiIyMDIyMDYwNS4xIixSVU5ORVJfT1M6IkxpbnV4IixHSVRIVUJfQVBJX1VSTDoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbSIsU1dJRlRfUEFUSDoiL3Vzci9zaGFyZS9zd2lmdC91c3IvYmluIixSVU5ORVJfVVNFUjoicnVubmVyIixDSFJPTUVXRUJEUklWRVI6Ii91c3IvbG9jYWwvc2hhcmUvY2hyb21lX2RyaXZlciIsSk9VUk5BTF9TVFJFQU06Ijg6MjE4MzQiLEdJVEhVQl9XT1JLRkxPVzoiTm9kZS5qcyBQYWNrYWdlIixfOiIvb3B0L2hvc3RlZHRvb2xjYWNoZS9ub2RlLzE4LjMuMC94NjQvYmluL25wbSIsbnBtX2NvbmZpZ19wcmVmaXg6Ii9vcHQvaG9zdGVkdG9vbGNhY2hlL25vZGUvMTguMy4wL3g2NCIsR0lUSFVCX1JVTl9JRDoiMjQ4MzUwNjAzNSIsR09ST09UXzFfMTZfWDY0OiIvb3B0L2hvc3RlZHRvb2xjYWNoZS9nby8xLjE2LjE1L3g2NCIsbnBtX2NvbmZpZ19jYWNoZToiL2hvbWUvcnVubmVyLy5ucG0iLEdPUk9PVF8xXzE3X1g2NDoiL29wdC9ob3N0ZWR0b29sY2FjaGUvZ28vMS4xNy4xMS94NjQiLEdJVEhVQl9SRUZfVFlQRToiYnJhbmNoIixCT09UU1RSQVBfSEFTS0VMTF9OT05JTlRFUkFDVElWRToiMSIsR0lUSFVCX0JBU0VfUkVGOiIiLEltYWdlT1M6InVidW50dTIwIixQRVJGTE9HX0xPQ0FUSU9OX1NFVFRJTkc6IlJVTk5FUl9QRVJGTE9HIixHT1JPT1RfMV8xOF9YNjQ6Ii9vcHQvaG9zdGVkdG9vbGNhY2hlL2dvLzEuMTguMy94NjQiLEdJVEhVQl9BQ1RJT05fUkVQT1NJVE9SWToiIixucG1fY29uZmlnX25vZGVfZ3lwOiIvb3B0L2hvc3RlZHRvb2xjYWNoZS9ub2RlLzE4LjMuMC94NjQvbGliL25vZGVfbW9kdWxlcy9ucG0vbm9kZV9tb2R1bGVzL25vZGUtZ3lwL2Jpbi9ub2RlLWd5cC5qcyIsUEFUSDoiL2hvbWUvcnVubmVyL3dvcmsvc3Rzb2F1dGgycGx1Z2luL3N0c29hdXRoMnBsdWdpbi9ub2RlX21vZHVsZXMvLmJpbjovaG9tZS9ydW5uZXIvd29yay9zdHNvYXV0aDJwbHVnaW4vbm9kZV9tb2R1bGVzLy5iaW46L2hvbWUvcnVubmVyL3dvcmsvbm9kZV9tb2R1bGVzLy5iaW46L2hvbWUvcnVubmVyL25vZGVfbW9kdWxlcy8uYmluOi9ob21lL25vZGVfbW9kdWxlcy8uYmluOi9ub2RlX21vZHVsZXMvLmJpbjovb3B0L2hvc3RlZHRvb2xjYWNoZS9ub2RlLzE4LjMuMC94NjQvbGliL25vZGVfbW9kdWxlcy9ucG0vbm9kZV9tb2R1bGVzL0BucG1jbGkvcnVuLXNjcmlwdC9saWIvbm9kZS1neXAtYmluOi9vcHQvaG9zdGVkdG9vbGNhY2hlL25vZGUvMTguMy4wL3g2NC9iaW46L2hvbWUvbGludXhicmV3Ly5saW51eGJyZXcvYmluOi9ob21lL2xpbnV4YnJldy8ubGludXhicmV3L3NiaW46L2hvbWUvcnVubmVyLy5sb2NhbC9iaW46L29wdC9waXB4X2JpbjovaG9tZS9ydW5uZXIvLmNhcmdvL2JpbjovaG9tZS9ydW5uZXIvLmNvbmZpZy9jb21wb3Nlci92ZW5kb3IvYmluOi91c3IvbG9jYWwvLmdoY3VwL2JpbjovaG9tZS9ydW5uZXIvLmRvdG5ldC90b29sczovc25hcC9iaW46L3Vzci9sb2NhbC9zYmluOi91c3IvbG9jYWwvYmluOi91c3Ivc2JpbjovdXNyL2Jpbjovc2JpbjovYmluOi91c3IvZ2FtZXM6L3Vzci9sb2NhbC9nYW1lczovc25hcC9iaW4iLEFOVF9IT01FOiIvdXNyL3NoYXJlL2FudCIsRE9UTkVUX01VTFRJTEVWRUxfTE9PS1VQOiIwIixSVU5ORVJfVFJBQ0tJTkdfSUQ6ImdpdGh1Yl85ZTBhNWM3YS05NzhmLTRmY2UtYmU5Zi0xNTk3YTQ1ZDNmOGQiLElOVk9DQVRJT05fSUQ6IjgyMzE1MDQwZjZjYjRiMTg5MWI4NzU1MDc1ZGJlNzQ5IixIT01FQlJFV19DRUxMQVI6Ii9ob21lL2xpbnV4YnJldy8ubGludXhicmV3L0NlbGxhciIsTlBNX0NPTkZJR19VU0VSQ09ORklHOiIvaG9tZS9ydW5uZXIvd29yay9fdGVtcC8ubnBtcmMiLFJVTk5FUl9UT09MX0NBQ0hFOiIvb3B0L2hvc3RlZHRvb2xjYWNoZSIsTk9ERToiL29wdC9ob3N0ZWR0b29sY2FjaGUvbm9kZS8xOC4zLjAveDY0L2Jpbi9ub2RlIixucG1fcGFja2FnZV9uYW1lOiJAbnNzaHVudC9zdHNvYXV0aDJwbHVnaW4iLEdJVEhVQl9BQ1RJT046Il9fcnVuXzIiLEdJVEhVQl9SVU5fTlVNQkVSOiIyNCIsUlVOTkVSX0FSQ0g6Ilg2NCIsQUdFTlRfVE9PTFNESVJFQ1RPUlk6Ii9vcHQvaG9zdGVkdG9vbGNhY2hlIixMQU5HOiJDLlVURi04IixWQ1BLR19JTlNUQUxMQVRJT05fUk9PVDoiL3Vzci9sb2NhbC9zaGFyZS92Y3BrZyIsQ09OREE6Ii91c3Ivc2hhcmUvbWluaWNvbmRhIixSVU5ORVJfTkFNRToiSG9zdGVkIEFnZW50IixYREdfQ09ORklHX0hPTUU6Ii9ob21lL3J1bm5lci8uY29uZmlnIixHSVRIVUJfUkVGX05BTUU6Im1haW4iLEdJVEhVQl9SRVBPU0lUT1JZOiJuc3NodW50L3N0c29hdXRoMnBsdWdpbiIsbnBtX2xpZmVjeWNsZV9zY3JpcHQ6InZpdGUgYnVpbGQiLEFORFJPSURfTkRLX1JPT1Q6Ii91c3IvbG9jYWwvbGliL2FuZHJvaWQvc2RrL25kay1idW5kbGUiLEdJVEhVQl9BQ1RJT05fUkVGOiIiLERFQklBTl9GUk9OVEVORDoibm9uaW50ZXJhY3RpdmUiLEdJVEhVQl9BQ1RJT05TOiJ0cnVlIixucG1fcGFja2FnZV92ZXJzaW9uOiIwLjEuMTMiLG5wbV9saWZlY3ljbGVfZXZlbnQ6ImJ1aWxkIixHSVRIVUJfUkVGX1BST1RFQ1RFRDoiZmFsc2UiLEdJVEhVQl9XT1JLU1BBQ0U6Ii9ob21lL3J1bm5lci93b3JrL3N0c29hdXRoMnBsdWdpbi9zdHNvYXV0aDJwbHVnaW4iLEFDQ0VQVF9FVUxBOiJZIixHSVRIVUJfSk9COiJwdWJsaXNoLW5wbSIsUlVOTkVSX1BFUkZMT0c6Ii9ob21lL3J1bm5lci9wZXJmbG9nIixHSVRIVUJfU0hBOiJmNjU5OGQxODg2MWM2MDg0YTMwMjQzYzlkNmE5ZDAyMDBlMWY5ZTk2IixHSVRIVUJfUlVOX0FUVEVNUFQ6IjEiLEdJVEhVQl9SRUY6InJlZnMvaGVhZHMvbWFpbiIsR0lUSFVCX0FDVE9SOiJuc3NodW50IixBTkRST0lEX1NES19ST09UOiIvdXNyL2xvY2FsL2xpYi9hbmRyb2lkL3NkayIsTEVJTl9IT01FOiIvdXNyL2xvY2FsL2xpYi9sZWluIixucG1fY29uZmlnX2dsb2JhbGNvbmZpZzoiL29wdC9ob3N0ZWR0b29sY2FjaGUvbm9kZS8xOC4zLjAveDY0L2V0Yy9ucG1yYyIsbnBtX2NvbmZpZ19pbml0X21vZHVsZToiL2hvbWUvcnVubmVyLy5ucG0taW5pdC5qcyIsR0lUSFVCX1BBVEg6Ii9ob21lL3J1bm5lci93b3JrL190ZW1wL19ydW5uZXJfZmlsZV9jb21tYW5kcy9hZGRfcGF0aF81YzRmNmYxOC0xNjY1LTQ2MzgtYjQyMC1iY2QwMmY2NjU4MTAiLEpBVkFfSE9NRToiL3Vzci9saWIvanZtL3RlbXVyaW4tMTEtamRrLWFtZDY0IixQV0Q6Ii9ob21lL3J1bm5lci93b3JrL3N0c29hdXRoMnBsdWdpbi9zdHNvYXV0aDJwbHVnaW4iLFJVTk5FUl9XT1JLU1BBQ0U6Ii9ob21lL3J1bm5lci93b3JrL3N0c29hdXRoMnBsdWdpbiIsbnBtX2V4ZWNwYXRoOiIvb3B0L2hvc3RlZHRvb2xjYWNoZS9ub2RlLzE4LjMuMC94NjQvbGliL25vZGVfbW9kdWxlcy9ucG0vYmluL25wbS1jbGkuanMiLEhPTUVCUkVXX0NMRUFOVVBfUEVSSU9ESUNfRlVMTF9EQVlTOiIzNjUwIixHSVRIVUJfRVZFTlRfTkFNRToicHVzaCIsSE9NRUJSRVdfTk9fQVVUT19VUERBVEU6IjEiLEFORFJPSURfSE9NRToiL3Vzci9sb2NhbC9saWIvYW5kcm9pZC9zZGsiLEdJVEhVQl9TRVJWRVJfVVJMOiJodHRwczovL2dpdGh1Yi5jb20iLEdFQ0tPV0VCRFJJVkVSOiIvdXNyL2xvY2FsL3NoYXJlL2dlY2tvX2RyaXZlciIsTEVJTl9KQVI6Ii91c3IvbG9jYWwvbGliL2xlaW4vc2VsZi1pbnN0YWxscy9sZWluaW5nZW4tMi45Ljgtc3RhbmRhbG9uZS5qYXIiLG5wbV9jb25maWdfZ2xvYmFsX3ByZWZpeDoiL29wdC9ob3N0ZWR0b29sY2FjaGUvbm9kZS8xOC4zLjAveDY0IixIT01FQlJFV19SRVBPU0lUT1JZOiIvaG9tZS9saW51eGJyZXcvLmxpbnV4YnJldy9Ib21lYnJldyIsbnBtX2NvbW1hbmQ6InJ1bi1zY3JpcHQiLFNHWF9BRVNNX0FERFI6IjEiLENIUk9NRV9CSU46Ii91c3IvYmluL2dvb2dsZS1jaHJvbWUiLFNFTEVOSVVNX0pBUl9QQVRIOiIvdXNyL3NoYXJlL2phdmEvc2VsZW5pdW0tc2VydmVyLmphciIsQU5EUk9JRF9OREtfSE9NRToiL3Vzci9sb2NhbC9saWIvYW5kcm9pZC9zZGsvbmRrLWJ1bmRsZSIsR0lUSFVCX1NURVBfU1VNTUFSWToiL2hvbWUvcnVubmVyL3dvcmsvX3RlbXAvX3J1bm5lcl9maWxlX2NvbW1hbmRzL3N0ZXBfc3VtbWFyeV81YzRmNmYxOC0xNjY1LTQ2MzgtYjQyMC1iY2QwMmY2NjU4MTAiLElOSVRfQ1dEOiIvaG9tZS9ydW5uZXIvd29yay9zdHNvYXV0aDJwbHVnaW4vc3Rzb2F1dGgycGx1Z2luIixFRElUT1I6InZpIixOT0RFX0VOVjoicHJvZHVjdGlvbiJ9LlJFRElSRUNUX1VSSSxbd24uT0F1dGgyUGFyYW1ldGVyVHlwZS5BVURJRU5DRV06e0RFUExPWU1FTlRfQkFTRVBBVEg6Ii9vcHQvcnVubmVyIixET1RORVRfTk9MT0dPOiIxIixVU0VSOiJydW5uZXIiLG5wbV9jb25maWdfYWx3YXlzX2F1dGg6IiIsbnBtX2NvbmZpZ191c2VyX2FnZW50OiJucG0vOC4xMS4wIG5vZGUvdjE4LjMuMCBsaW51eCB4NjQgd29ya3NwYWNlcy9mYWxzZSBjaS9naXRodWItYWN0aW9ucyIsQ0k6InRydWUiLEdJVEhVQl9FTlY6Ii9ob21lL3J1bm5lci93b3JrL190ZW1wL19ydW5uZXJfZmlsZV9jb21tYW5kcy9zZXRfZW52XzVjNGY2ZjE4LTE2NjUtNDYzOC1iNDIwLWJjZDAyZjY2NTgxMCIsUElQWF9IT01FOiIvb3B0L3BpcHgiLG5wbV9ub2RlX2V4ZWNwYXRoOiIvb3B0L2hvc3RlZHRvb2xjYWNoZS9ub2RlLzE4LjMuMC94NjQvYmluL25vZGUiLEpBVkFfSE9NRV84X1g2NDoiL3Vzci9saWIvanZtL3RlbXVyaW4tOC1qZGstYW1kNjQiLE5PREVfQVVUSF9UT0tFTjoiWFhYWFgtWFhYWFgtWFhYWFgtWFhYWFgiLFNITFZMOiIxIixucG1fY29uZmlnX25vcHJveHk6IiIsSE9NRToiL2hvbWUvcnVubmVyIixSVU5ORVJfVEVNUDoiL2hvbWUvcnVubmVyL3dvcmsvX3RlbXAiLEdJVEhVQl9FVkVOVF9QQVRIOiIvaG9tZS9ydW5uZXIvd29yay9fdGVtcC9fZ2l0aHViX3dvcmtmbG93L2V2ZW50Lmpzb24iLG5wbV9wYWNrYWdlX2pzb246Ii9ob21lL3J1bm5lci93b3JrL3N0c29hdXRoMnBsdWdpbi9zdHNvYXV0aDJwbHVnaW4vcGFja2FnZS5qc29uIixKQVZBX0hPTUVfMTFfWDY0OiIvdXNyL2xpYi9qdm0vdGVtdXJpbi0xMS1qZGstYW1kNjQiLFBJUFhfQklOX0RJUjoiL29wdC9waXB4X2JpbiIsR1JBQUxWTV8xMV9ST09UOiIvdXNyL2xvY2FsL2dyYWFsdm0vZ3JhYWx2bS1jZS1qYXZhMTEtMjIuMS4wIixHSVRIVUJfUkVQT1NJVE9SWV9PV05FUjoibnNzaHVudCIsR1JBRExFX0hPTUU6Ii91c3Ivc2hhcmUvZ3JhZGxlLTcuNC4yIixIT01FQlJFV19QUkVGSVg6Ii9ob21lL2xpbnV4YnJldy8ubGludXhicmV3IixBTkRST0lEX05ES19MQVRFU1RfSE9NRToiL3Vzci9sb2NhbC9saWIvYW5kcm9pZC9zZGsvbmRrLzI0LjAuODIxNTg4OCIsR0lUSFVCX1JFVEVOVElPTl9EQVlTOiI5MCIsUE9XRVJTSEVMTF9ESVNUUklCVVRJT05fQ0hBTk5FTDoiR2l0SHViLUFjdGlvbnMtdWJ1bnR1MjAiLEFaVVJFX0VYVEVOU0lPTl9ESVI6Ii9vcHQvYXovYXpjbGlleHRlbnNpb25zIixHSVRIVUJfSEVBRF9SRUY6IiIsbnBtX2NvbmZpZ19sb2NhbF9wcmVmaXg6Ii9ob21lL3J1bm5lci93b3JrL3N0c29hdXRoMnBsdWdpbi9zdHNvYXV0aDJwbHVnaW4iLEdJVEhVQl9HUkFQSFFMX1VSTDoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9ncmFwaHFsIixDT0xPUjoiMCIsTlZNX0RJUjoiL2hvbWUvcnVubmVyLy5udm0iLG5wbV9jb25maWdfbWV0cmljc19yZWdpc3RyeToiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvIixET1RORVRfU0tJUF9GSVJTVF9USU1FX0VYUEVSSUVOQ0U6IjEiLEpBVkFfSE9NRV8xN19YNjQ6Ii91c3IvbGliL2p2bS90ZW11cmluLTE3LWpkay1hbWQ2NCIsSW1hZ2VWZXJzaW9uOiIyMDIyMDYwNS4xIixSVU5ORVJfT1M6IkxpbnV4IixHSVRIVUJfQVBJX1VSTDoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbSIsU1dJRlRfUEFUSDoiL3Vzci9zaGFyZS9zd2lmdC91c3IvYmluIixSVU5ORVJfVVNFUjoicnVubmVyIixDSFJPTUVXRUJEUklWRVI6Ii91c3IvbG9jYWwvc2hhcmUvY2hyb21lX2RyaXZlciIsSk9VUk5BTF9TVFJFQU06Ijg6MjE4MzQiLEdJVEhVQl9XT1JLRkxPVzoiTm9kZS5qcyBQYWNrYWdlIixfOiIvb3B0L2hvc3RlZHRvb2xjYWNoZS9ub2RlLzE4LjMuMC94NjQvYmluL25wbSIsbnBtX2NvbmZpZ19wcmVmaXg6Ii9vcHQvaG9zdGVkdG9vbGNhY2hlL25vZGUvMTguMy4wL3g2NCIsR0lUSFVCX1JVTl9JRDoiMjQ4MzUwNjAzNSIsR09ST09UXzFfMTZfWDY0OiIvb3B0L2hvc3RlZHRvb2xjYWNoZS9nby8xLjE2LjE1L3g2NCIsbnBtX2NvbmZpZ19jYWNoZToiL2hvbWUvcnVubmVyLy5ucG0iLEdPUk9PVF8xXzE3X1g2NDoiL29wdC9ob3N0ZWR0b29sY2FjaGUvZ28vMS4xNy4xMS94NjQiLEdJVEhVQl9SRUZfVFlQRToiYnJhbmNoIixCT09UU1RSQVBfSEFTS0VMTF9OT05JTlRFUkFDVElWRToiMSIsR0lUSFVCX0JBU0VfUkVGOiIiLEltYWdlT1M6InVidW50dTIwIixQRVJGTE9HX0xPQ0FUSU9OX1NFVFRJTkc6IlJVTk5FUl9QRVJGTE9HIixHT1JPT1RfMV8xOF9YNjQ6Ii9vcHQvaG9zdGVkdG9vbGNhY2hlL2dvLzEuMTguMy94NjQiLEdJVEhVQl9BQ1RJT05fUkVQT1NJVE9SWToiIixucG1fY29uZmlnX25vZGVfZ3lwOiIvb3B0L2hvc3RlZHRvb2xjYWNoZS9ub2RlLzE4LjMuMC94NjQvbGliL25vZGVfbW9kdWxlcy9ucG0vbm9kZV9tb2R1bGVzL25vZGUtZ3lwL2Jpbi9ub2RlLWd5cC5qcyIsUEFUSDoiL2hvbWUvcnVubmVyL3dvcmsvc3Rzb2F1dGgycGx1Z2luL3N0c29hdXRoMnBsdWdpbi9ub2RlX21vZHVsZXMvLmJpbjovaG9tZS9ydW5uZXIvd29yay9zdHNvYXV0aDJwbHVnaW4vbm9kZV9tb2R1bGVzLy5iaW46L2hvbWUvcnVubmVyL3dvcmsvbm9kZV9tb2R1bGVzLy5iaW46L2hvbWUvcnVubmVyL25vZGVfbW9kdWxlcy8uYmluOi9ob21lL25vZGVfbW9kdWxlcy8uYmluOi9ub2RlX21vZHVsZXMvLmJpbjovb3B0L2hvc3RlZHRvb2xjYWNoZS9ub2RlLzE4LjMuMC94NjQvbGliL25vZGVfbW9kdWxlcy9ucG0vbm9kZV9tb2R1bGVzL0BucG1jbGkvcnVuLXNjcmlwdC9saWIvbm9kZS1neXAtYmluOi9vcHQvaG9zdGVkdG9vbGNhY2hlL25vZGUvMTguMy4wL3g2NC9iaW46L2hvbWUvbGludXhicmV3Ly5saW51eGJyZXcvYmluOi9ob21lL2xpbnV4YnJldy8ubGludXhicmV3L3NiaW46L2hvbWUvcnVubmVyLy5sb2NhbC9iaW46L29wdC9waXB4X2JpbjovaG9tZS9ydW5uZXIvLmNhcmdvL2JpbjovaG9tZS9ydW5uZXIvLmNvbmZpZy9jb21wb3Nlci92ZW5kb3IvYmluOi91c3IvbG9jYWwvLmdoY3VwL2JpbjovaG9tZS9ydW5uZXIvLmRvdG5ldC90b29sczovc25hcC9iaW46L3Vzci9sb2NhbC9zYmluOi91c3IvbG9jYWwvYmluOi91c3Ivc2JpbjovdXNyL2Jpbjovc2JpbjovYmluOi91c3IvZ2FtZXM6L3Vzci9sb2NhbC9nYW1lczovc25hcC9iaW4iLEFOVF9IT01FOiIvdXNyL3NoYXJlL2FudCIsRE9UTkVUX01VTFRJTEVWRUxfTE9PS1VQOiIwIixSVU5ORVJfVFJBQ0tJTkdfSUQ6ImdpdGh1Yl85ZTBhNWM3YS05NzhmLTRmY2UtYmU5Zi0xNTk3YTQ1ZDNmOGQiLElOVk9DQVRJT05fSUQ6IjgyMzE1MDQwZjZjYjRiMTg5MWI4NzU1MDc1ZGJlNzQ5IixIT01FQlJFV19DRUxMQVI6Ii9ob21lL2xpbnV4YnJldy8ubGludXhicmV3L0NlbGxhciIsTlBNX0NPTkZJR19VU0VSQ09ORklHOiIvaG9tZS9ydW5uZXIvd29yay9fdGVtcC8ubnBtcmMiLFJVTk5FUl9UT09MX0NBQ0hFOiIvb3B0L2hvc3RlZHRvb2xjYWNoZSIsTk9ERToiL29wdC9ob3N0ZWR0b29sY2FjaGUvbm9kZS8xOC4zLjAveDY0L2Jpbi9ub2RlIixucG1fcGFja2FnZV9uYW1lOiJAbnNzaHVudC9zdHNvYXV0aDJwbHVnaW4iLEdJVEhVQl9BQ1RJT046Il9fcnVuXzIiLEdJVEhVQl9SVU5fTlVNQkVSOiIyNCIsUlVOTkVSX0FSQ0g6Ilg2NCIsQUdFTlRfVE9PTFNESVJFQ1RPUlk6Ii9vcHQvaG9zdGVkdG9vbGNhY2hlIixMQU5HOiJDLlVURi04IixWQ1BLR19JTlNUQUxMQVRJT05fUk9PVDoiL3Vzci9sb2NhbC9zaGFyZS92Y3BrZyIsQ09OREE6Ii91c3Ivc2hhcmUvbWluaWNvbmRhIixSVU5ORVJfTkFNRToiSG9zdGVkIEFnZW50IixYREdfQ09ORklHX0hPTUU6Ii9ob21lL3J1bm5lci8uY29uZmlnIixHSVRIVUJfUkVGX05BTUU6Im1haW4iLEdJVEhVQl9SRVBPU0lUT1JZOiJuc3NodW50L3N0c29hdXRoMnBsdWdpbiIsbnBtX2xpZmVjeWNsZV9zY3JpcHQ6InZpdGUgYnVpbGQiLEFORFJPSURfTkRLX1JPT1Q6Ii91c3IvbG9jYWwvbGliL2FuZHJvaWQvc2RrL25kay1idW5kbGUiLEdJVEhVQl9BQ1RJT05fUkVGOiIiLERFQklBTl9GUk9OVEVORDoibm9uaW50ZXJhY3RpdmUiLEdJVEhVQl9BQ1RJT05TOiJ0cnVlIixucG1fcGFja2FnZV92ZXJzaW9uOiIwLjEuMTMiLG5wbV9saWZlY3ljbGVfZXZlbnQ6ImJ1aWxkIixHSVRIVUJfUkVGX1BST1RFQ1RFRDoiZmFsc2UiLEdJVEhVQl9XT1JLU1BBQ0U6Ii9ob21lL3J1bm5lci93b3JrL3N0c29hdXRoMnBsdWdpbi9zdHNvYXV0aDJwbHVnaW4iLEFDQ0VQVF9FVUxBOiJZIixHSVRIVUJfSk9COiJwdWJsaXNoLW5wbSIsUlVOTkVSX1BFUkZMT0c6Ii9ob21lL3J1bm5lci9wZXJmbG9nIixHSVRIVUJfU0hBOiJmNjU5OGQxODg2MWM2MDg0YTMwMjQzYzlkNmE5ZDAyMDBlMWY5ZTk2IixHSVRIVUJfUlVOX0FUVEVNUFQ6IjEiLEdJVEhVQl9SRUY6InJlZnMvaGVhZHMvbWFpbiIsR0lUSFVCX0FDVE9SOiJuc3NodW50IixBTkRST0lEX1NES19ST09UOiIvdXNyL2xvY2FsL2xpYi9hbmRyb2lkL3NkayIsTEVJTl9IT01FOiIvdXNyL2xvY2FsL2xpYi9sZWluIixucG1fY29uZmlnX2dsb2JhbGNvbmZpZzoiL29wdC9ob3N0ZWR0b29sY2FjaGUvbm9kZS8xOC4zLjAveDY0L2V0Yy9ucG1yYyIsbnBtX2NvbmZpZ19pbml0X21vZHVsZToiL2hvbWUvcnVubmVyLy5ucG0taW5pdC5qcyIsR0lUSFVCX1BBVEg6Ii9ob21lL3J1bm5lci93b3JrL190ZW1wL19ydW5uZXJfZmlsZV9jb21tYW5kcy9hZGRfcGF0aF81YzRmNmYxOC0xNjY1LTQ2MzgtYjQyMC1iY2QwMmY2NjU4MTAiLEpBVkFfSE9NRToiL3Vzci9saWIvanZtL3RlbXVyaW4tMTEtamRrLWFtZDY0IixQV0Q6Ii9ob21lL3J1bm5lci93b3JrL3N0c29hdXRoMnBsdWdpbi9zdHNvYXV0aDJwbHVnaW4iLFJVTk5FUl9XT1JLU1BBQ0U6Ii9ob21lL3J1bm5lci93b3JrL3N0c29hdXRoMnBsdWdpbiIsbnBtX2V4ZWNwYXRoOiIvb3B0L2hvc3RlZHRvb2xjYWNoZS9ub2RlLzE4LjMuMC94NjQvbGliL25vZGVfbW9kdWxlcy9ucG0vYmluL25wbS1jbGkuanMiLEhPTUVCUkVXX0NMRUFOVVBfUEVSSU9ESUNfRlVMTF9EQVlTOiIzNjUwIixHSVRIVUJfRVZFTlRfTkFNRToicHVzaCIsSE9NRUJSRVdfTk9fQVVUT19VUERBVEU6IjEiLEFORFJPSURfSE9NRToiL3Vzci9sb2NhbC9saWIvYW5kcm9pZC9zZGsiLEdJVEhVQl9TRVJWRVJfVVJMOiJodHRwczovL2dpdGh1Yi5jb20iLEdFQ0tPV0VCRFJJVkVSOiIvdXNyL2xvY2FsL3NoYXJlL2dlY2tvX2RyaXZlciIsTEVJTl9KQVI6Ii91c3IvbG9jYWwvbGliL2xlaW4vc2VsZi1pbnN0YWxscy9sZWluaW5nZW4tMi45Ljgtc3RhbmRhbG9uZS5qYXIiLG5wbV9jb25maWdfZ2xvYmFsX3ByZWZpeDoiL29wdC9ob3N0ZWR0b29sY2FjaGUvbm9kZS8xOC4zLjAveDY0IixIT01FQlJFV19SRVBPU0lUT1JZOiIvaG9tZS9saW51eGJyZXcvLmxpbnV4YnJldy9Ib21lYnJldyIsbnBtX2NvbW1hbmQ6InJ1bi1zY3JpcHQiLFNHWF9BRVNNX0FERFI6IjEiLENIUk9NRV9CSU46Ii91c3IvYmluL2dvb2dsZS1jaHJvbWUiLFNFTEVOSVVNX0pBUl9QQVRIOiIvdXNyL3NoYXJlL2phdmEvc2VsZW5pdW0tc2VydmVyLmphciIsQU5EUk9JRF9OREtfSE9NRToiL3Vzci9sb2NhbC9saWIvYW5kcm9pZC9zZGsvbmRrLWJ1bmRsZSIsR0lUSFVCX1NURVBfU1VNTUFSWToiL2hvbWUvcnVubmVyL3dvcmsvX3RlbXAvX3J1bm5lcl9maWxlX2NvbW1hbmRzL3N0ZXBfc3VtbWFyeV81YzRmNmYxOC0xNjY1LTQ2MzgtYjQyMC1iY2QwMmY2NjU4MTAiLElOSVRfQ1dEOiIvaG9tZS9ydW5uZXIvd29yay9zdHNvYXV0aDJwbHVnaW4vc3Rzb2F1dGgycGx1Z2luIixFRElUT1I6InZpIixOT0RFX0VOVjoicHJvZHVjdGlvbiJ9LkFVRElFTkNFfSx3aXRoQ3JlZGVudGlhbHM6ITAsdGltZW91dDpwYXJzZUludCh7REVQTE9ZTUVOVF9CQVNFUEFUSDoiL29wdC9ydW5uZXIiLERPVE5FVF9OT0xPR086IjEiLFVTRVI6InJ1bm5lciIsbnBtX2NvbmZpZ19hbHdheXNfYXV0aDoiIixucG1fY29uZmlnX3VzZXJfYWdlbnQ6Im5wbS84LjExLjAgbm9kZS92MTguMy4wIGxpbnV4IHg2NCB3b3Jrc3BhY2VzL2ZhbHNlIGNpL2dpdGh1Yi1hY3Rpb25zIixDSToidHJ1ZSIsR0lUSFVCX0VOVjoiL2hvbWUvcnVubmVyL3dvcmsvX3RlbXAvX3J1bm5lcl9maWxlX2NvbW1hbmRzL3NldF9lbnZfNWM0ZjZmMTgtMTY2NS00NjM4LWI0MjAtYmNkMDJmNjY1ODEwIixQSVBYX0hPTUU6Ii9vcHQvcGlweCIsbnBtX25vZGVfZXhlY3BhdGg6Ii9vcHQvaG9zdGVkdG9vbGNhY2hlL25vZGUvMTguMy4wL3g2NC9iaW4vbm9kZSIsSkFWQV9IT01FXzhfWDY0OiIvdXNyL2xpYi9qdm0vdGVtdXJpbi04LWpkay1hbWQ2NCIsTk9ERV9BVVRIX1RPS0VOOiJYWFhYWC1YWFhYWC1YWFhYWC1YWFhYWCIsU0hMVkw6IjEiLG5wbV9jb25maWdfbm9wcm94eToiIixIT01FOiIvaG9tZS9ydW5uZXIiLFJVTk5FUl9URU1QOiIvaG9tZS9ydW5uZXIvd29yay9fdGVtcCIsR0lUSFVCX0VWRU5UX1BBVEg6Ii9ob21lL3J1bm5lci93b3JrL190ZW1wL19naXRodWJfd29ya2Zsb3cvZXZlbnQuanNvbiIsbnBtX3BhY2thZ2VfanNvbjoiL2hvbWUvcnVubmVyL3dvcmsvc3Rzb2F1dGgycGx1Z2luL3N0c29hdXRoMnBsdWdpbi9wYWNrYWdlLmpzb24iLEpBVkFfSE9NRV8xMV9YNjQ6Ii91c3IvbGliL2p2bS90ZW11cmluLTExLWpkay1hbWQ2NCIsUElQWF9CSU5fRElSOiIvb3B0L3BpcHhfYmluIixHUkFBTFZNXzExX1JPT1Q6Ii91c3IvbG9jYWwvZ3JhYWx2bS9ncmFhbHZtLWNlLWphdmExMS0yMi4xLjAiLEdJVEhVQl9SRVBPU0lUT1JZX09XTkVSOiJuc3NodW50IixHUkFETEVfSE9NRToiL3Vzci9zaGFyZS9ncmFkbGUtNy40LjIiLEhPTUVCUkVXX1BSRUZJWDoiL2hvbWUvbGludXhicmV3Ly5saW51eGJyZXciLEFORFJPSURfTkRLX0xBVEVTVF9IT01FOiIvdXNyL2xvY2FsL2xpYi9hbmRyb2lkL3Nkay9uZGsvMjQuMC44MjE1ODg4IixHSVRIVUJfUkVURU5USU9OX0RBWVM6IjkwIixQT1dFUlNIRUxMX0RJU1RSSUJVVElPTl9DSEFOTkVMOiJHaXRIdWItQWN0aW9ucy11YnVudHUyMCIsQVpVUkVfRVhURU5TSU9OX0RJUjoiL29wdC9hei9hemNsaWV4dGVuc2lvbnMiLEdJVEhVQl9IRUFEX1JFRjoiIixucG1fY29uZmlnX2xvY2FsX3ByZWZpeDoiL2hvbWUvcnVubmVyL3dvcmsvc3Rzb2F1dGgycGx1Z2luL3N0c29hdXRoMnBsdWdpbiIsR0lUSFVCX0dSQVBIUUxfVVJMOiJodHRwczovL2FwaS5naXRodWIuY29tL2dyYXBocWwiLENPTE9SOiIwIixOVk1fRElSOiIvaG9tZS9ydW5uZXIvLm52bSIsbnBtX2NvbmZpZ19tZXRyaWNzX3JlZ2lzdHJ5OiJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy8iLERPVE5FVF9TS0lQX0ZJUlNUX1RJTUVfRVhQRVJJRU5DRToiMSIsSkFWQV9IT01FXzE3X1g2NDoiL3Vzci9saWIvanZtL3RlbXVyaW4tMTctamRrLWFtZDY0IixJbWFnZVZlcnNpb246IjIwMjIwNjA1LjEiLFJVTk5FUl9PUzoiTGludXgiLEdJVEhVQl9BUElfVVJMOiJodHRwczovL2FwaS5naXRodWIuY29tIixTV0lGVF9QQVRIOiIvdXNyL3NoYXJlL3N3aWZ0L3Vzci9iaW4iLFJVTk5FUl9VU0VSOiJydW5uZXIiLENIUk9NRVdFQkRSSVZFUjoiL3Vzci9sb2NhbC9zaGFyZS9jaHJvbWVfZHJpdmVyIixKT1VSTkFMX1NUUkVBTToiODoyMTgzNCIsR0lUSFVCX1dPUktGTE9XOiJOb2RlLmpzIFBhY2thZ2UiLF86Ii9vcHQvaG9zdGVkdG9vbGNhY2hlL25vZGUvMTguMy4wL3g2NC9iaW4vbnBtIixucG1fY29uZmlnX3ByZWZpeDoiL29wdC9ob3N0ZWR0b29sY2FjaGUvbm9kZS8xOC4zLjAveDY0IixHSVRIVUJfUlVOX0lEOiIyNDgzNTA2MDM1IixHT1JPT1RfMV8xNl9YNjQ6Ii9vcHQvaG9zdGVkdG9vbGNhY2hlL2dvLzEuMTYuMTUveDY0IixucG1fY29uZmlnX2NhY2hlOiIvaG9tZS9ydW5uZXIvLm5wbSIsR09ST09UXzFfMTdfWDY0OiIvb3B0L2hvc3RlZHRvb2xjYWNoZS9nby8xLjE3LjExL3g2NCIsR0lUSFVCX1JFRl9UWVBFOiJicmFuY2giLEJPT1RTVFJBUF9IQVNLRUxMX05PTklOVEVSQUNUSVZFOiIxIixHSVRIVUJfQkFTRV9SRUY6IiIsSW1hZ2VPUzoidWJ1bnR1MjAiLFBFUkZMT0dfTE9DQVRJT05fU0VUVElORzoiUlVOTkVSX1BFUkZMT0ciLEdPUk9PVF8xXzE4X1g2NDoiL29wdC9ob3N0ZWR0b29sY2FjaGUvZ28vMS4xOC4zL3g2NCIsR0lUSFVCX0FDVElPTl9SRVBPU0lUT1JZOiIiLG5wbV9jb25maWdfbm9kZV9neXA6Ii9vcHQvaG9zdGVkdG9vbGNhY2hlL25vZGUvMTguMy4wL3g2NC9saWIvbm9kZV9tb2R1bGVzL25wbS9ub2RlX21vZHVsZXMvbm9kZS1neXAvYmluL25vZGUtZ3lwLmpzIixQQVRIOiIvaG9tZS9ydW5uZXIvd29yay9zdHNvYXV0aDJwbHVnaW4vc3Rzb2F1dGgycGx1Z2luL25vZGVfbW9kdWxlcy8uYmluOi9ob21lL3J1bm5lci93b3JrL3N0c29hdXRoMnBsdWdpbi9ub2RlX21vZHVsZXMvLmJpbjovaG9tZS9ydW5uZXIvd29yay9ub2RlX21vZHVsZXMvLmJpbjovaG9tZS9ydW5uZXIvbm9kZV9tb2R1bGVzLy5iaW46L2hvbWUvbm9kZV9tb2R1bGVzLy5iaW46L25vZGVfbW9kdWxlcy8uYmluOi9vcHQvaG9zdGVkdG9vbGNhY2hlL25vZGUvMTguMy4wL3g2NC9saWIvbm9kZV9tb2R1bGVzL25wbS9ub2RlX21vZHVsZXMvQG5wbWNsaS9ydW4tc2NyaXB0L2xpYi9ub2RlLWd5cC1iaW46L29wdC9ob3N0ZWR0b29sY2FjaGUvbm9kZS8xOC4zLjAveDY0L2JpbjovaG9tZS9saW51eGJyZXcvLmxpbnV4YnJldy9iaW46L2hvbWUvbGludXhicmV3Ly5saW51eGJyZXcvc2JpbjovaG9tZS9ydW5uZXIvLmxvY2FsL2Jpbjovb3B0L3BpcHhfYmluOi9ob21lL3J1bm5lci8uY2FyZ28vYmluOi9ob21lL3J1bm5lci8uY29uZmlnL2NvbXBvc2VyL3ZlbmRvci9iaW46L3Vzci9sb2NhbC8uZ2hjdXAvYmluOi9ob21lL3J1bm5lci8uZG90bmV0L3Rvb2xzOi9zbmFwL2JpbjovdXNyL2xvY2FsL3NiaW46L3Vzci9sb2NhbC9iaW46L3Vzci9zYmluOi91c3IvYmluOi9zYmluOi9iaW46L3Vzci9nYW1lczovdXNyL2xvY2FsL2dhbWVzOi9zbmFwL2JpbiIsQU5UX0hPTUU6Ii91c3Ivc2hhcmUvYW50IixET1RORVRfTVVMVElMRVZFTF9MT09LVVA6IjAiLFJVTk5FUl9UUkFDS0lOR19JRDoiZ2l0aHViXzllMGE1YzdhLTk3OGYtNGZjZS1iZTlmLTE1OTdhNDVkM2Y4ZCIsSU5WT0NBVElPTl9JRDoiODIzMTUwNDBmNmNiNGIxODkxYjg3NTUwNzVkYmU3NDkiLEhPTUVCUkVXX0NFTExBUjoiL2hvbWUvbGludXhicmV3Ly5saW51eGJyZXcvQ2VsbGFyIixOUE1fQ09ORklHX1VTRVJDT05GSUc6Ii9ob21lL3J1bm5lci93b3JrL190ZW1wLy5ucG1yYyIsUlVOTkVSX1RPT0xfQ0FDSEU6Ii9vcHQvaG9zdGVkdG9vbGNhY2hlIixOT0RFOiIvb3B0L2hvc3RlZHRvb2xjYWNoZS9ub2RlLzE4LjMuMC94NjQvYmluL25vZGUiLG5wbV9wYWNrYWdlX25hbWU6IkBuc3NodW50L3N0c29hdXRoMnBsdWdpbiIsR0lUSFVCX0FDVElPTjoiX19ydW5fMiIsR0lUSFVCX1JVTl9OVU1CRVI6IjI0IixSVU5ORVJfQVJDSDoiWDY0IixBR0VOVF9UT09MU0RJUkVDVE9SWToiL29wdC9ob3N0ZWR0b29sY2FjaGUiLExBTkc6IkMuVVRGLTgiLFZDUEtHX0lOU1RBTExBVElPTl9ST09UOiIvdXNyL2xvY2FsL3NoYXJlL3ZjcGtnIixDT05EQToiL3Vzci9zaGFyZS9taW5pY29uZGEiLFJVTk5FUl9OQU1FOiJIb3N0ZWQgQWdlbnQiLFhER19DT05GSUdfSE9NRToiL2hvbWUvcnVubmVyLy5jb25maWciLEdJVEhVQl9SRUZfTkFNRToibWFpbiIsR0lUSFVCX1JFUE9TSVRPUlk6Im5zc2h1bnQvc3Rzb2F1dGgycGx1Z2luIixucG1fbGlmZWN5Y2xlX3NjcmlwdDoidml0ZSBidWlsZCIsQU5EUk9JRF9OREtfUk9PVDoiL3Vzci9sb2NhbC9saWIvYW5kcm9pZC9zZGsvbmRrLWJ1bmRsZSIsR0lUSFVCX0FDVElPTl9SRUY6IiIsREVCSUFOX0ZST05URU5EOiJub25pbnRlcmFjdGl2ZSIsR0lUSFVCX0FDVElPTlM6InRydWUiLG5wbV9wYWNrYWdlX3ZlcnNpb246IjAuMS4xMyIsbnBtX2xpZmVjeWNsZV9ldmVudDoiYnVpbGQiLEdJVEhVQl9SRUZfUFJPVEVDVEVEOiJmYWxzZSIsR0lUSFVCX1dPUktTUEFDRToiL2hvbWUvcnVubmVyL3dvcmsvc3Rzb2F1dGgycGx1Z2luL3N0c29hdXRoMnBsdWdpbiIsQUNDRVBUX0VVTEE6IlkiLEdJVEhVQl9KT0I6InB1Ymxpc2gtbnBtIixSVU5ORVJfUEVSRkxPRzoiL2hvbWUvcnVubmVyL3BlcmZsb2ciLEdJVEhVQl9TSEE6ImY2NTk4ZDE4ODYxYzYwODRhMzAyNDNjOWQ2YTlkMDIwMGUxZjllOTYiLEdJVEhVQl9SVU5fQVRURU1QVDoiMSIsR0lUSFVCX1JFRjoicmVmcy9oZWFkcy9tYWluIixHSVRIVUJfQUNUT1I6Im5zc2h1bnQiLEFORFJPSURfU0RLX1JPT1Q6Ii91c3IvbG9jYWwvbGliL2FuZHJvaWQvc2RrIixMRUlOX0hPTUU6Ii91c3IvbG9jYWwvbGliL2xlaW4iLG5wbV9jb25maWdfZ2xvYmFsY29uZmlnOiIvb3B0L2hvc3RlZHRvb2xjYWNoZS9ub2RlLzE4LjMuMC94NjQvZXRjL25wbXJjIixucG1fY29uZmlnX2luaXRfbW9kdWxlOiIvaG9tZS9ydW5uZXIvLm5wbS1pbml0LmpzIixHSVRIVUJfUEFUSDoiL2hvbWUvcnVubmVyL3dvcmsvX3RlbXAvX3J1bm5lcl9maWxlX2NvbW1hbmRzL2FkZF9wYXRoXzVjNGY2ZjE4LTE2NjUtNDYzOC1iNDIwLWJjZDAyZjY2NTgxMCIsSkFWQV9IT01FOiIvdXNyL2xpYi9qdm0vdGVtdXJpbi0xMS1qZGstYW1kNjQiLFBXRDoiL2hvbWUvcnVubmVyL3dvcmsvc3Rzb2F1dGgycGx1Z2luL3N0c29hdXRoMnBsdWdpbiIsUlVOTkVSX1dPUktTUEFDRToiL2hvbWUvcnVubmVyL3dvcmsvc3Rzb2F1dGgycGx1Z2luIixucG1fZXhlY3BhdGg6Ii9vcHQvaG9zdGVkdG9vbGNhY2hlL25vZGUvMTguMy4wL3g2NC9saWIvbm9kZV9tb2R1bGVzL25wbS9iaW4vbnBtLWNsaS5qcyIsSE9NRUJSRVdfQ0xFQU5VUF9QRVJJT0RJQ19GVUxMX0RBWVM6IjM2NTAiLEdJVEhVQl9FVkVOVF9OQU1FOiJwdXNoIixIT01FQlJFV19OT19BVVRPX1VQREFURToiMSIsQU5EUk9JRF9IT01FOiIvdXNyL2xvY2FsL2xpYi9hbmRyb2lkL3NkayIsR0lUSFVCX1NFUlZFUl9VUkw6Imh0dHBzOi8vZ2l0aHViLmNvbSIsR0VDS09XRUJEUklWRVI6Ii91c3IvbG9jYWwvc2hhcmUvZ2Vja29fZHJpdmVyIixMRUlOX0pBUjoiL3Vzci9sb2NhbC9saWIvbGVpbi9zZWxmLWluc3RhbGxzL2xlaW5pbmdlbi0yLjkuOC1zdGFuZGFsb25lLmphciIsbnBtX2NvbmZpZ19nbG9iYWxfcHJlZml4OiIvb3B0L2hvc3RlZHRvb2xjYWNoZS9ub2RlLzE4LjMuMC94NjQiLEhPTUVCUkVXX1JFUE9TSVRPUlk6Ii9ob21lL2xpbnV4YnJldy8ubGludXhicmV3L0hvbWVicmV3IixucG1fY29tbWFuZDoicnVuLXNjcmlwdCIsU0dYX0FFU01fQUREUjoiMSIsQ0hST01FX0JJTjoiL3Vzci9iaW4vZ29vZ2xlLWNocm9tZSIsU0VMRU5JVU1fSkFSX1BBVEg6Ii91c3Ivc2hhcmUvamF2YS9zZWxlbml1bS1zZXJ2ZXIuamFyIixBTkRST0lEX05ES19IT01FOiIvdXNyL2xvY2FsL2xpYi9hbmRyb2lkL3Nkay9uZGstYnVuZGxlIixHSVRIVUJfU1RFUF9TVU1NQVJZOiIvaG9tZS9ydW5uZXIvd29yay9fdGVtcC9fcnVubmVyX2ZpbGVfY29tbWFuZHMvc3RlcF9zdW1tYXJ5XzVjNGY2ZjE4LTE2NjUtNDYzOC1iNDIwLWJjZDAyZjY2NTgxMCIsSU5JVF9DV0Q6Ii9ob21lL3J1bm5lci93b3JrL3N0c29hdXRoMnBsdWdpbi9zdHNvYXV0aDJwbHVnaW4iLEVESVRPUjoidmkiLE5PREVfRU5WOiJwcm9kdWN0aW9uIn0uVElNRU9VVCl9KTt0LmRhdGEuc3RhdHVzPT09dXIuT0s/KHI9dC5kYXRhLmRldGFpbCxYKHRoaXMsQmUpLnNldChYKHRoaXMsamUpLHIpLGNvbnNvbGUubG9nKCJTZXNzaW9uIHJlc3RvcmVkIGZyb20gc2VydmVyIHNpZGUgY29va2llLiIpKTooY29uc29sZS5sb2coIkNvdWxkIG5vdCByZXN0b3JlIHByZXZpb3VzIHNlc3Npb246LSIpLGNvbnNvbGUubG9nKEpTT04uc3RyaW5naWZ5KHQuZGF0YSkpKX1jYXRjaCh0KXtjb25zb2xlLmxvZygiQ291bGQgbm90IHJlc3RvcmUgcHJldmlvdXMgc2Vzc2lvbiAoZXJyb3Igc3RhdGUpOi0iKSxjb25zb2xlLmxvZyh0KSxjb25zb2xlLmxvZyhKU09OLnN0cmluZ2lmeSh0KSl9fXJldHVybiByIT09bnVsbD8oWCh0aGlzLHhlKS5jYWxsKHRoaXMsci5pZF90b2tlbiksY29uc29sZS5sb2coIlJlZnJlc2hpbmcgdG9rZW5zIC4uLiIpLFgodGhpcyxMcikuY2FsbCh0aGlzKSk6KFgodGhpcyx4ZSkuY2FsbCh0aGlzLG51bGwpLCExKX0pLHVlKHRoaXMsR3IsYXN5bmMoKT0+e2NvbnNvbGUubG9nKCJBdXRob3JpemUgLi4uIik7Y29uc3Qgcj17REVQTE9ZTUVOVF9CQVNFUEFUSDoiL29wdC9ydW5uZXIiLERPVE5FVF9OT0xPR086IjEiLFVTRVI6InJ1bm5lciIsbnBtX2NvbmZpZ19hbHdheXNfYXV0aDoiIixucG1fY29uZmlnX3VzZXJfYWdlbnQ6Im5wbS84LjExLjAgbm9kZS92MTguMy4wIGxpbnV4IHg2NCB3b3Jrc3BhY2VzL2ZhbHNlIGNpL2dpdGh1Yi1hY3Rpb25zIixDSToidHJ1ZSIsR0lUSFVCX0VOVjoiL2hvbWUvcnVubmVyL3dvcmsvX3RlbXAvX3J1bm5lcl9maWxlX2NvbW1hbmRzL3NldF9lbnZfNWM0ZjZmMTgtMTY2NS00NjM4LWI0MjAtYmNkMDJmNjY1ODEwIixQSVBYX0hPTUU6Ii9vcHQvcGlweCIsbnBtX25vZGVfZXhlY3BhdGg6Ii9vcHQvaG9zdGVkdG9vbGNhY2hlL25vZGUvMTguMy4wL3g2NC9iaW4vbm9kZSIsSkFWQV9IT01FXzhfWDY0OiIvdXNyL2xpYi9qdm0vdGVtdXJpbi04LWpkay1hbWQ2NCIsTk9ERV9BVVRIX1RPS0VOOiJYWFhYWC1YWFhYWC1YWFhYWC1YWFhYWCIsU0hMVkw6IjEiLG5wbV9jb25maWdfbm9wcm94eToiIixIT01FOiIvaG9tZS9ydW5uZXIiLFJVTk5FUl9URU1QOiIvaG9tZS9ydW5uZXIvd29yay9fdGVtcCIsR0lUSFVCX0VWRU5UX1BBVEg6Ii9ob21lL3J1bm5lci93b3JrL190ZW1wL19naXRodWJfd29ya2Zsb3cvZXZlbnQuanNvbiIsbnBtX3BhY2thZ2VfanNvbjoiL2hvbWUvcnVubmVyL3dvcmsvc3Rzb2F1dGgycGx1Z2luL3N0c29hdXRoMnBsdWdpbi9wYWNrYWdlLmpzb24iLEpBVkFfSE9NRV8xMV9YNjQ6Ii91c3IvbGliL2p2bS90ZW11cmluLTExLWpkay1hbWQ2NCIsUElQWF9CSU5fRElSOiIvb3B0L3BpcHhfYmluIixHUkFBTFZNXzExX1JPT1Q6Ii91c3IvbG9jYWwvZ3JhYWx2bS9ncmFhbHZtLWNlLWphdmExMS0yMi4xLjAiLEdJVEhVQl9SRVBPU0lUT1JZX09XTkVSOiJuc3NodW50IixHUkFETEVfSE9NRToiL3Vzci9zaGFyZS9ncmFkbGUtNy40LjIiLEhPTUVCUkVXX1BSRUZJWDoiL2hvbWUvbGludXhicmV3Ly5saW51eGJyZXciLEFORFJPSURfTkRLX0xBVEVTVF9IT01FOiIvdXNyL2xvY2FsL2xpYi9hbmRyb2lkL3Nkay9uZGsvMjQuMC44MjE1ODg4IixHSVRIVUJfUkVURU5USU9OX0RBWVM6IjkwIixQT1dFUlNIRUxMX0RJU1RSSUJVVElPTl9DSEFOTkVMOiJHaXRIdWItQWN0aW9ucy11YnVudHUyMCIsQVpVUkVfRVhURU5TSU9OX0RJUjoiL29wdC9hei9hemNsaWV4dGVuc2lvbnMiLEdJVEhVQl9IRUFEX1JFRjoiIixucG1fY29uZmlnX2xvY2FsX3ByZWZpeDoiL2hvbWUvcnVubmVyL3dvcmsvc3Rzb2F1dGgycGx1Z2luL3N0c29hdXRoMnBsdWdpbiIsR0lUSFVCX0dSQVBIUUxfVVJMOiJodHRwczovL2FwaS5naXRodWIuY29tL2dyYXBocWwiLENPTE9SOiIwIixOVk1fRElSOiIvaG9tZS9ydW5uZXIvLm52bSIsbnBtX2NvbmZpZ19tZXRyaWNzX3JlZ2lzdHJ5OiJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy8iLERPVE5FVF9TS0lQX0ZJUlNUX1RJTUVfRVhQRVJJRU5DRToiMSIsSkFWQV9IT01FXzE3X1g2NDoiL3Vzci9saWIvanZtL3RlbXVyaW4tMTctamRrLWFtZDY0IixJbWFnZVZlcnNpb246IjIwMjIwNjA1LjEiLFJVTk5FUl9PUzoiTGludXgiLEdJVEhVQl9BUElfVVJMOiJodHRwczovL2FwaS5naXRodWIuY29tIixTV0lGVF9QQVRIOiIvdXNyL3NoYXJlL3N3aWZ0L3Vzci9iaW4iLFJVTk5FUl9VU0VSOiJydW5uZXIiLENIUk9NRVdFQkRSSVZFUjoiL3Vzci9sb2NhbC9zaGFyZS9jaHJvbWVfZHJpdmVyIixKT1VSTkFMX1NUUkVBTToiODoyMTgzNCIsR0lUSFVCX1dPUktGTE9XOiJOb2RlLmpzIFBhY2thZ2UiLF86Ii9vcHQvaG9zdGVkdG9vbGNhY2hlL25vZGUvMTguMy4wL3g2NC9iaW4vbnBtIixucG1fY29uZmlnX3ByZWZpeDoiL29wdC9ob3N0ZWR0b29sY2FjaGUvbm9kZS8xOC4zLjAveDY0IixHSVRIVUJfUlVOX0lEOiIyNDgzNTA2MDM1IixHT1JPT1RfMV8xNl9YNjQ6Ii9vcHQvaG9zdGVkdG9vbGNhY2hlL2dvLzEuMTYuMTUveDY0IixucG1fY29uZmlnX2NhY2hlOiIvaG9tZS9ydW5uZXIvLm5wbSIsR09ST09UXzFfMTdfWDY0OiIvb3B0L2hvc3RlZHRvb2xjYWNoZS9nby8xLjE3LjExL3g2NCIsR0lUSFVCX1JFRl9UWVBFOiJicmFuY2giLEJPT1RTVFJBUF9IQVNLRUxMX05PTklOVEVSQUNUSVZFOiIxIixHSVRIVUJfQkFTRV9SRUY6IiIsSW1hZ2VPUzoidWJ1bnR1MjAiLFBFUkZMT0dfTE9DQVRJT05fU0VUVElORzoiUlVOTkVSX1BFUkZMT0ciLEdPUk9PVF8xXzE4X1g2NDoiL29wdC9ob3N0ZWR0b29sY2FjaGUvZ28vMS4xOC4zL3g2NCIsR0lUSFVCX0FDVElPTl9SRVBPU0lUT1JZOiIiLG5wbV9jb25maWdfbm9kZV9neXA6Ii9vcHQvaG9zdGVkdG9vbGNhY2hlL25vZGUvMTguMy4wL3g2NC9saWIvbm9kZV9tb2R1bGVzL25wbS9ub2RlX21vZHVsZXMvbm9kZS1neXAvYmluL25vZGUtZ3lwLmpzIixQQVRIOiIvaG9tZS9ydW5uZXIvd29yay9zdHNvYXV0aDJwbHVnaW4vc3Rzb2F1dGgycGx1Z2luL25vZGVfbW9kdWxlcy8uYmluOi9ob21lL3J1bm5lci93b3JrL3N0c29hdXRoMnBsdWdpbi9ub2RlX21vZHVsZXMvLmJpbjovaG9tZS9ydW5uZXIvd29yay9ub2RlX21vZHVsZXMvLmJpbjovaG9tZS9ydW5uZXIvbm9kZV9tb2R1bGVzLy5iaW46L2hvbWUvbm9kZV9tb2R1bGVzLy5iaW46L25vZGVfbW9kdWxlcy8uYmluOi9vcHQvaG9zdGVkdG9vbGNhY2hlL25vZGUvMTguMy4wL3g2NC9saWIvbm9kZV9tb2R1bGVzL25wbS9ub2RlX21vZHVsZXMvQG5wbWNsaS9ydW4tc2NyaXB0L2xpYi9ub2RlLWd5cC1iaW46L29wdC9ob3N0ZWR0b29sY2FjaGUvbm9kZS8xOC4zLjAveDY0L2JpbjovaG9tZS9saW51eGJyZXcvLmxpbnV4YnJldy9iaW46L2hvbWUvbGludXhicmV3Ly5saW51eGJyZXcvc2JpbjovaG9tZS9ydW5uZXIvLmxvY2FsL2Jpbjovb3B0L3BpcHhfYmluOi9ob21lL3J1bm5lci8uY2FyZ28vYmluOi9ob21lL3J1bm5lci8uY29uZmlnL2NvbXBvc2VyL3ZlbmRvci9iaW46L3Vzci9sb2NhbC8uZ2hjdXAvYmluOi9ob21lL3J1bm5lci8uZG90bmV0L3Rvb2xzOi9zbmFwL2JpbjovdXNyL2xvY2FsL3NiaW46L3Vzci9sb2NhbC9iaW46L3Vzci9zYmluOi91c3IvYmluOi9zYmluOi9iaW46L3Vzci9nYW1lczovdXNyL2xvY2FsL2dhbWVzOi9zbmFwL2JpbiIsQU5UX0hPTUU6Ii91c3Ivc2hhcmUvYW50IixET1RORVRfTVVMVElMRVZFTF9MT09LVVA6IjAiLFJVTk5FUl9UUkFDS0lOR19JRDoiZ2l0aHViXzllMGE1YzdhLTk3OGYtNGZjZS1iZTlmLTE1OTdhNDVkM2Y4ZCIsSU5WT0NBVElPTl9JRDoiODIzMTUwNDBmNmNiNGIxODkxYjg3NTUwNzVkYmU3NDkiLEhPTUVCUkVXX0NFTExBUjoiL2hvbWUvbGludXhicmV3Ly5saW51eGJyZXcvQ2VsbGFyIixOUE1fQ09ORklHX1VTRVJDT05GSUc6Ii9ob21lL3J1bm5lci93b3JrL190ZW1wLy5ucG1yYyIsUlVOTkVSX1RPT0xfQ0FDSEU6Ii9vcHQvaG9zdGVkdG9vbGNhY2hlIixOT0RFOiIvb3B0L2hvc3RlZHRvb2xjYWNoZS9ub2RlLzE4LjMuMC94NjQvYmluL25vZGUiLG5wbV9wYWNrYWdlX25hbWU6IkBuc3NodW50L3N0c29hdXRoMnBsdWdpbiIsR0lUSFVCX0FDVElPTjoiX19ydW5fMiIsR0lUSFVCX1JVTl9OVU1CRVI6IjI0IixSVU5ORVJfQVJDSDoiWDY0IixBR0VOVF9UT09MU0RJUkVDVE9SWToiL29wdC9ob3N0ZWR0b29sY2FjaGUiLExBTkc6IkMuVVRGLTgiLFZDUEtHX0lOU1RBTExBVElPTl9ST09UOiIvdXNyL2xvY2FsL3NoYXJlL3ZjcGtnIixDT05EQToiL3Vzci9zaGFyZS9taW5pY29uZGEiLFJVTk5FUl9OQU1FOiJIb3N0ZWQgQWdlbnQiLFhER19DT05GSUdfSE9NRToiL2hvbWUvcnVubmVyLy5jb25maWciLEdJVEhVQl9SRUZfTkFNRToibWFpbiIsR0lUSFVCX1JFUE9TSVRPUlk6Im5zc2h1bnQvc3Rzb2F1dGgycGx1Z2luIixucG1fbGlmZWN5Y2xlX3NjcmlwdDoidml0ZSBidWlsZCIsQU5EUk9JRF9OREtfUk9PVDoiL3Vzci9sb2NhbC9saWIvYW5kcm9pZC9zZGsvbmRrLWJ1bmRsZSIsR0lUSFVCX0FDVElPTl9SRUY6IiIsREVCSUFOX0ZST05URU5EOiJub25pbnRlcmFjdGl2ZSIsR0lUSFVCX0FDVElPTlM6InRydWUiLG5wbV9wYWNrYWdlX3ZlcnNpb246IjAuMS4xMyIsbnBtX2xpZmVjeWNsZV9ldmVudDoiYnVpbGQiLEdJVEhVQl9SRUZfUFJPVEVDVEVEOiJmYWxzZSIsR0lUSFVCX1dPUktTUEFDRToiL2hvbWUvcnVubmVyL3dvcmsvc3Rzb2F1dGgycGx1Z2luL3N0c29hdXRoMnBsdWdpbiIsQUNDRVBUX0VVTEE6IlkiLEdJVEhVQl9KT0I6InB1Ymxpc2gtbnBtIixSVU5ORVJfUEVSRkxPRzoiL2hvbWUvcnVubmVyL3BlcmZsb2ciLEdJVEhVQl9TSEE6ImY2NTk4ZDE4ODYxYzYwODRhMzAyNDNjOWQ2YTlkMDIwMGUxZjllOTYiLEdJVEhVQl9SVU5fQVRURU1QVDoiMSIsR0lUSFVCX1JFRjoicmVmcy9oZWFkcy9tYWluIixHSVRIVUJfQUNUT1I6Im5zc2h1bnQiLEFORFJPSURfU0RLX1JPT1Q6Ii91c3IvbG9jYWwvbGliL2FuZHJvaWQvc2RrIixMRUlOX0hPTUU6Ii91c3IvbG9jYWwvbGliL2xlaW4iLG5wbV9jb25maWdfZ2xvYmFsY29uZmlnOiIvb3B0L2hvc3RlZHRvb2xjYWNoZS9ub2RlLzE4LjMuMC94NjQvZXRjL25wbXJjIixucG1fY29uZmlnX2luaXRfbW9kdWxlOiIvaG9tZS9ydW5uZXIvLm5wbS1pbml0LmpzIixHSVRIVUJfUEFUSDoiL2hvbWUvcnVubmVyL3dvcmsvX3RlbXAvX3J1bm5lcl9maWxlX2NvbW1hbmRzL2FkZF9wYXRoXzVjNGY2ZjE4LTE2NjUtNDYzOC1iNDIwLWJjZDAyZjY2NTgxMCIsSkFWQV9IT01FOiIvdXNyL2xpYi9qdm0vdGVtdXJpbi0xMS1qZGstYW1kNjQiLFBXRDoiL2hvbWUvcnVubmVyL3dvcmsvc3Rzb2F1dGgycGx1Z2luL3N0c29hdXRoMnBsdWdpbiIsUlVOTkVSX1dPUktTUEFDRToiL2hvbWUvcnVubmVyL3dvcmsvc3Rzb2F1dGgycGx1Z2luIixucG1fZXhlY3BhdGg6Ii9vcHQvaG9zdGVkdG9vbGNhY2hlL25vZGUvMTguMy4wL3g2NC9saWIvbm9kZV9tb2R1bGVzL25wbS9iaW4vbnBtLWNsaS5qcyIsSE9NRUJSRVdfQ0xFQU5VUF9QRVJJT0RJQ19GVUxMX0RBWVM6IjM2NTAiLEdJVEhVQl9FVkVOVF9OQU1FOiJwdXNoIixIT01FQlJFV19OT19BVVRPX1VQREFURToiMSIsQU5EUk9JRF9IT01FOiIvdXNyL2xvY2FsL2xpYi9hbmRyb2lkL3NkayIsR0lUSFVCX1NFUlZFUl9VUkw6Imh0dHBzOi8vZ2l0aHViLmNvbSIsR0VDS09XRUJEUklWRVI6Ii91c3IvbG9jYWwvc2hhcmUvZ2Vja29fZHJpdmVyIixMRUlOX0pBUjoiL3Vzci9sb2NhbC9saWIvbGVpbi9zZWxmLWluc3RhbGxzL2xlaW5pbmdlbi0yLjkuOC1zdGFuZGFsb25lLmphciIsbnBtX2NvbmZpZ19nbG9iYWxfcHJlZml4OiIvb3B0L2hvc3RlZHRvb2xjYWNoZS9ub2RlLzE4LjMuMC94NjQiLEhPTUVCUkVXX1JFUE9TSVRPUlk6Ii9ob21lL2xpbnV4YnJldy8ubGludXhicmV3L0hvbWVicmV3IixucG1fY29tbWFuZDoicnVuLXNjcmlwdCIsU0dYX0FFU01fQUREUjoiMSIsQ0hST01FX0JJTjoiL3Vzci9iaW4vZ29vZ2xlLWNocm9tZSIsU0VMRU5JVU1fSkFSX1BBVEg6Ii91c3Ivc2hhcmUvamF2YS9zZWxlbml1bS1zZXJ2ZXIuamFyIixBTkRST0lEX05ES19IT01FOiIvdXNyL2xvY2FsL2xpYi9hbmRyb2lkL3Nkay9uZGstYnVuZGxlIixHSVRIVUJfU1RFUF9TVU1NQVJZOiIvaG9tZS9ydW5uZXIvd29yay9fdGVtcC9fcnVubmVyX2ZpbGVfY29tbWFuZHMvc3RlcF9zdW1tYXJ5XzVjNGY2ZjE4LTE2NjUtNDYzOC1iNDIwLWJjZDAyZjY2NTgxMCIsSU5JVF9DV0Q6Ii9ob21lL3J1bm5lci93b3JrL3N0c29hdXRoMnBsdWdpbi9zdHNvYXV0aDJwbHVnaW4iLEVESVRPUjoidmkiLE5PREVfRU5WOiJwcm9kdWN0aW9uIn0uQ0xJRU5UX0lELG89WCh0aGlzLEhuKS5DcmVhdGVSYW5kb21TdHJpbmcoKSx0PVtVaS5DT0RFXSxzPXtERVBMT1lNRU5UX0JBU0VQQVRIOiIvb3B0L3J1bm5lciIsRE9UTkVUX05PTE9HTzoiMSIsVVNFUjoicnVubmVyIixucG1fY29uZmlnX2Fsd2F5c19hdXRoOiIiLG5wbV9jb25maWdfdXNlcl9hZ2VudDoibnBtLzguMTEuMCBub2RlL3YxOC4zLjAgbGludXggeDY0IHdvcmtzcGFjZXMvZmFsc2UgY2kvZ2l0aHViLWFjdGlvbnMiLENJOiJ0cnVlIixHSVRIVUJfRU5WOiIvaG9tZS9ydW5uZXIvd29yay9fdGVtcC9fcnVubmVyX2ZpbGVfY29tbWFuZHMvc2V0X2Vudl81YzRmNmYxOC0xNjY1LTQ2MzgtYjQyMC1iY2QwMmY2NjU4MTAiLFBJUFhfSE9NRToiL29wdC9waXB4IixucG1fbm9kZV9leGVjcGF0aDoiL29wdC9ob3N0ZWR0b29sY2FjaGUvbm9kZS8xOC4zLjAveDY0L2Jpbi9ub2RlIixKQVZBX0hPTUVfOF9YNjQ6Ii91c3IvbGliL2p2bS90ZW11cmluLTgtamRrLWFtZDY0IixOT0RFX0FVVEhfVE9LRU46IlhYWFhYLVhYWFhYLVhYWFhYLVhYWFhYIixTSExWTDoiMSIsbnBtX2NvbmZpZ19ub3Byb3h5OiIiLEhPTUU6Ii9ob21lL3J1bm5lciIsUlVOTkVSX1RFTVA6Ii9ob21lL3J1bm5lci93b3JrL190ZW1wIixHSVRIVUJfRVZFTlRfUEFUSDoiL2hvbWUvcnVubmVyL3dvcmsvX3RlbXAvX2dpdGh1Yl93b3JrZmxvdy9ldmVudC5qc29uIixucG1fcGFja2FnZV9qc29uOiIvaG9tZS9ydW5uZXIvd29yay9zdHNvYXV0aDJwbHVnaW4vc3Rzb2F1dGgycGx1Z2luL3BhY2thZ2UuanNvbiIsSkFWQV9IT01FXzExX1g2NDoiL3Vzci9saWIvanZtL3RlbXVyaW4tMTEtamRrLWFtZDY0IixQSVBYX0JJTl9ESVI6Ii9vcHQvcGlweF9iaW4iLEdSQUFMVk1fMTFfUk9PVDoiL3Vzci9sb2NhbC9ncmFhbHZtL2dyYWFsdm0tY2UtamF2YTExLTIyLjEuMCIsR0lUSFVCX1JFUE9TSVRPUllfT1dORVI6Im5zc2h1bnQiLEdSQURMRV9IT01FOiIvdXNyL3NoYXJlL2dyYWRsZS03LjQuMiIsSE9NRUJSRVdfUFJFRklYOiIvaG9tZS9saW51eGJyZXcvLmxpbnV4YnJldyIsQU5EUk9JRF9OREtfTEFURVNUX0hPTUU6Ii91c3IvbG9jYWwvbGliL2FuZHJvaWQvc2RrL25kay8yNC4wLjgyMTU4ODgiLEdJVEhVQl9SRVRFTlRJT05fREFZUzoiOTAiLFBPV0VSU0hFTExfRElTVFJJQlVUSU9OX0NIQU5ORUw6IkdpdEh1Yi1BY3Rpb25zLXVidW50dTIwIixBWlVSRV9FWFRFTlNJT05fRElSOiIvb3B0L2F6L2F6Y2xpZXh0ZW5zaW9ucyIsR0lUSFVCX0hFQURfUkVGOiIiLG5wbV9jb25maWdfbG9jYWxfcHJlZml4OiIvaG9tZS9ydW5uZXIvd29yay9zdHNvYXV0aDJwbHVnaW4vc3Rzb2F1dGgycGx1Z2luIixHSVRIVUJfR1JBUEhRTF9VUkw6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vZ3JhcGhxbCIsQ09MT1I6IjAiLE5WTV9ESVI6Ii9ob21lL3J1bm5lci8ubnZtIixucG1fY29uZmlnX21ldHJpY3NfcmVnaXN0cnk6Imh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnLyIsRE9UTkVUX1NLSVBfRklSU1RfVElNRV9FWFBFUklFTkNFOiIxIixKQVZBX0hPTUVfMTdfWDY0OiIvdXNyL2xpYi9qdm0vdGVtdXJpbi0xNy1qZGstYW1kNjQiLEltYWdlVmVyc2lvbjoiMjAyMjA2MDUuMSIsUlVOTkVSX09TOiJMaW51eCIsR0lUSFVCX0FQSV9VUkw6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20iLFNXSUZUX1BBVEg6Ii91c3Ivc2hhcmUvc3dpZnQvdXNyL2JpbiIsUlVOTkVSX1VTRVI6InJ1bm5lciIsQ0hST01FV0VCRFJJVkVSOiIvdXNyL2xvY2FsL3NoYXJlL2Nocm9tZV9kcml2ZXIiLEpPVVJOQUxfU1RSRUFNOiI4OjIxODM0IixHSVRIVUJfV09SS0ZMT1c6Ik5vZGUuanMgUGFja2FnZSIsXzoiL29wdC9ob3N0ZWR0b29sY2FjaGUvbm9kZS8xOC4zLjAveDY0L2Jpbi9ucG0iLG5wbV9jb25maWdfcHJlZml4OiIvb3B0L2hvc3RlZHRvb2xjYWNoZS9ub2RlLzE4LjMuMC94NjQiLEdJVEhVQl9SVU5fSUQ6IjI0ODM1MDYwMzUiLEdPUk9PVF8xXzE2X1g2NDoiL29wdC9ob3N0ZWR0b29sY2FjaGUvZ28vMS4xNi4xNS94NjQiLG5wbV9jb25maWdfY2FjaGU6Ii9ob21lL3J1bm5lci8ubnBtIixHT1JPT1RfMV8xN19YNjQ6Ii9vcHQvaG9zdGVkdG9vbGNhY2hlL2dvLzEuMTcuMTEveDY0IixHSVRIVUJfUkVGX1RZUEU6ImJyYW5jaCIsQk9PVFNUUkFQX0hBU0tFTExfTk9OSU5URVJBQ1RJVkU6IjEiLEdJVEhVQl9CQVNFX1JFRjoiIixJbWFnZU9TOiJ1YnVudHUyMCIsUEVSRkxPR19MT0NBVElPTl9TRVRUSU5HOiJSVU5ORVJfUEVSRkxPRyIsR09ST09UXzFfMThfWDY0OiIvb3B0L2hvc3RlZHRvb2xjYWNoZS9nby8xLjE4LjMveDY0IixHSVRIVUJfQUNUSU9OX1JFUE9TSVRPUlk6IiIsbnBtX2NvbmZpZ19ub2RlX2d5cDoiL29wdC9ob3N0ZWR0b29sY2FjaGUvbm9kZS8xOC4zLjAveDY0L2xpYi9ub2RlX21vZHVsZXMvbnBtL25vZGVfbW9kdWxlcy9ub2RlLWd5cC9iaW4vbm9kZS1neXAuanMiLFBBVEg6Ii9ob21lL3J1bm5lci93b3JrL3N0c29hdXRoMnBsdWdpbi9zdHNvYXV0aDJwbHVnaW4vbm9kZV9tb2R1bGVzLy5iaW46L2hvbWUvcnVubmVyL3dvcmsvc3Rzb2F1dGgycGx1Z2luL25vZGVfbW9kdWxlcy8uYmluOi9ob21lL3J1bm5lci93b3JrL25vZGVfbW9kdWxlcy8uYmluOi9ob21lL3J1bm5lci9ub2RlX21vZHVsZXMvLmJpbjovaG9tZS9ub2RlX21vZHVsZXMvLmJpbjovbm9kZV9tb2R1bGVzLy5iaW46L29wdC9ob3N0ZWR0b29sY2FjaGUvbm9kZS8xOC4zLjAveDY0L2xpYi9ub2RlX21vZHVsZXMvbnBtL25vZGVfbW9kdWxlcy9AbnBtY2xpL3J1bi1zY3JpcHQvbGliL25vZGUtZ3lwLWJpbjovb3B0L2hvc3RlZHRvb2xjYWNoZS9ub2RlLzE4LjMuMC94NjQvYmluOi9ob21lL2xpbnV4YnJldy8ubGludXhicmV3L2JpbjovaG9tZS9saW51eGJyZXcvLmxpbnV4YnJldy9zYmluOi9ob21lL3J1bm5lci8ubG9jYWwvYmluOi9vcHQvcGlweF9iaW46L2hvbWUvcnVubmVyLy5jYXJnby9iaW46L2hvbWUvcnVubmVyLy5jb25maWcvY29tcG9zZXIvdmVuZG9yL2JpbjovdXNyL2xvY2FsLy5naGN1cC9iaW46L2hvbWUvcnVubmVyLy5kb3RuZXQvdG9vbHM6L3NuYXAvYmluOi91c3IvbG9jYWwvc2JpbjovdXNyL2xvY2FsL2JpbjovdXNyL3NiaW46L3Vzci9iaW46L3NiaW46L2JpbjovdXNyL2dhbWVzOi91c3IvbG9jYWwvZ2FtZXM6L3NuYXAvYmluIixBTlRfSE9NRToiL3Vzci9zaGFyZS9hbnQiLERPVE5FVF9NVUxUSUxFVkVMX0xPT0tVUDoiMCIsUlVOTkVSX1RSQUNLSU5HX0lEOiJnaXRodWJfOWUwYTVjN2EtOTc4Zi00ZmNlLWJlOWYtMTU5N2E0NWQzZjhkIixJTlZPQ0FUSU9OX0lEOiI4MjMxNTA0MGY2Y2I0YjE4OTFiODc1NTA3NWRiZTc0OSIsSE9NRUJSRVdfQ0VMTEFSOiIvaG9tZS9saW51eGJyZXcvLmxpbnV4YnJldy9DZWxsYXIiLE5QTV9DT05GSUdfVVNFUkNPTkZJRzoiL2hvbWUvcnVubmVyL3dvcmsvX3RlbXAvLm5wbXJjIixSVU5ORVJfVE9PTF9DQUNIRToiL29wdC9ob3N0ZWR0b29sY2FjaGUiLE5PREU6Ii9vcHQvaG9zdGVkdG9vbGNhY2hlL25vZGUvMTguMy4wL3g2NC9iaW4vbm9kZSIsbnBtX3BhY2thZ2VfbmFtZToiQG5zc2h1bnQvc3Rzb2F1dGgycGx1Z2luIixHSVRIVUJfQUNUSU9OOiJfX3J1bl8yIixHSVRIVUJfUlVOX05VTUJFUjoiMjQiLFJVTk5FUl9BUkNIOiJYNjQiLEFHRU5UX1RPT0xTRElSRUNUT1JZOiIvb3B0L2hvc3RlZHRvb2xjYWNoZSIsTEFORzoiQy5VVEYtOCIsVkNQS0dfSU5TVEFMTEFUSU9OX1JPT1Q6Ii91c3IvbG9jYWwvc2hhcmUvdmNwa2ciLENPTkRBOiIvdXNyL3NoYXJlL21pbmljb25kYSIsUlVOTkVSX05BTUU6Ikhvc3RlZCBBZ2VudCIsWERHX0NPTkZJR19IT01FOiIvaG9tZS9ydW5uZXIvLmNvbmZpZyIsR0lUSFVCX1JFRl9OQU1FOiJtYWluIixHSVRIVUJfUkVQT1NJVE9SWToibnNzaHVudC9zdHNvYXV0aDJwbHVnaW4iLG5wbV9saWZlY3ljbGVfc2NyaXB0OiJ2aXRlIGJ1aWxkIixBTkRST0lEX05ES19ST09UOiIvdXNyL2xvY2FsL2xpYi9hbmRyb2lkL3Nkay9uZGstYnVuZGxlIixHSVRIVUJfQUNUSU9OX1JFRjoiIixERUJJQU5fRlJPTlRFTkQ6Im5vbmludGVyYWN0aXZlIixHSVRIVUJfQUNUSU9OUzoidHJ1ZSIsbnBtX3BhY2thZ2VfdmVyc2lvbjoiMC4xLjEzIixucG1fbGlmZWN5Y2xlX2V2ZW50OiJidWlsZCIsR0lUSFVCX1JFRl9QUk9URUNURUQ6ImZhbHNlIixHSVRIVUJfV09SS1NQQUNFOiIvaG9tZS9ydW5uZXIvd29yay9zdHNvYXV0aDJwbHVnaW4vc3Rzb2F1dGgycGx1Z2luIixBQ0NFUFRfRVVMQToiWSIsR0lUSFVCX0pPQjoicHVibGlzaC1ucG0iLFJVTk5FUl9QRVJGTE9HOiIvaG9tZS9ydW5uZXIvcGVyZmxvZyIsR0lUSFVCX1NIQToiZjY1OThkMTg4NjFjNjA4NGEzMDI0M2M5ZDZhOWQwMjAwZTFmOWU5NiIsR0lUSFVCX1JVTl9BVFRFTVBUOiIxIixHSVRIVUJfUkVGOiJyZWZzL2hlYWRzL21haW4iLEdJVEhVQl9BQ1RPUjoibnNzaHVudCIsQU5EUk9JRF9TREtfUk9PVDoiL3Vzci9sb2NhbC9saWIvYW5kcm9pZC9zZGsiLExFSU5fSE9NRToiL3Vzci9sb2NhbC9saWIvbGVpbiIsbnBtX2NvbmZpZ19nbG9iYWxjb25maWc6Ii9vcHQvaG9zdGVkdG9vbGNhY2hlL25vZGUvMTguMy4wL3g2NC9ldGMvbnBtcmMiLG5wbV9jb25maWdfaW5pdF9tb2R1bGU6Ii9ob21lL3J1bm5lci8ubnBtLWluaXQuanMiLEdJVEhVQl9QQVRIOiIvaG9tZS9ydW5uZXIvd29yay9fdGVtcC9fcnVubmVyX2ZpbGVfY29tbWFuZHMvYWRkX3BhdGhfNWM0ZjZmMTgtMTY2NS00NjM4LWI0MjAtYmNkMDJmNjY1ODEwIixKQVZBX0hPTUU6Ii91c3IvbGliL2p2bS90ZW11cmluLTExLWpkay1hbWQ2NCIsUFdEOiIvaG9tZS9ydW5uZXIvd29yay9zdHNvYXV0aDJwbHVnaW4vc3Rzb2F1dGgycGx1Z2luIixSVU5ORVJfV09SS1NQQUNFOiIvaG9tZS9ydW5uZXIvd29yay9zdHNvYXV0aDJwbHVnaW4iLG5wbV9leGVjcGF0aDoiL29wdC9ob3N0ZWR0b29sY2FjaGUvbm9kZS8xOC4zLjAveDY0L2xpYi9ub2RlX21vZHVsZXMvbnBtL2Jpbi9ucG0tY2xpLmpzIixIT01FQlJFV19DTEVBTlVQX1BFUklPRElDX0ZVTExfREFZUzoiMzY1MCIsR0lUSFVCX0VWRU5UX05BTUU6InB1c2giLEhPTUVCUkVXX05PX0FVVE9fVVBEQVRFOiIxIixBTkRST0lEX0hPTUU6Ii91c3IvbG9jYWwvbGliL2FuZHJvaWQvc2RrIixHSVRIVUJfU0VSVkVSX1VSTDoiaHR0cHM6Ly9naXRodWIuY29tIixHRUNLT1dFQkRSSVZFUjoiL3Vzci9sb2NhbC9zaGFyZS9nZWNrb19kcml2ZXIiLExFSU5fSkFSOiIvdXNyL2xvY2FsL2xpYi9sZWluL3NlbGYtaW5zdGFsbHMvbGVpbmluZ2VuLTIuOS44LXN0YW5kYWxvbmUuamFyIixucG1fY29uZmlnX2dsb2JhbF9wcmVmaXg6Ii9vcHQvaG9zdGVkdG9vbGNhY2hlL25vZGUvMTguMy4wL3g2NCIsSE9NRUJSRVdfUkVQT1NJVE9SWToiL2hvbWUvbGludXhicmV3Ly5saW51eGJyZXcvSG9tZWJyZXciLG5wbV9jb21tYW5kOiJydW4tc2NyaXB0IixTR1hfQUVTTV9BRERSOiIxIixDSFJPTUVfQklOOiIvdXNyL2Jpbi9nb29nbGUtY2hyb21lIixTRUxFTklVTV9KQVJfUEFUSDoiL3Vzci9zaGFyZS9qYXZhL3NlbGVuaXVtLXNlcnZlci5qYXIiLEFORFJPSURfTkRLX0hPTUU6Ii91c3IvbG9jYWwvbGliL2FuZHJvaWQvc2RrL25kay1idW5kbGUiLEdJVEhVQl9TVEVQX1NVTU1BUlk6Ii9ob21lL3J1bm5lci93b3JrL190ZW1wL19ydW5uZXJfZmlsZV9jb21tYW5kcy9zdGVwX3N1bW1hcnlfNWM0ZjZmMTgtMTY2NS00NjM4LWI0MjAtYmNkMDJmNjY1ODEwIixJTklUX0NXRDoiL2hvbWUvcnVubmVyL3dvcmsvc3Rzb2F1dGgycGx1Z2luL3N0c29hdXRoMnBsdWdpbiIsRURJVE9SOiJ2aSIsTk9ERV9FTlY6InByb2R1Y3Rpb24ifS5SRURJUkVDVF9VUkksaT1IaS5RVUVSWSxsPXtERVBMT1lNRU5UX0JBU0VQQVRIOiIvb3B0L3J1bm5lciIsRE9UTkVUX05PTE9HTzoiMSIsVVNFUjoicnVubmVyIixucG1fY29uZmlnX2Fsd2F5c19hdXRoOiIiLG5wbV9jb25maWdfdXNlcl9hZ2VudDoibnBtLzguMTEuMCBub2RlL3YxOC4zLjAgbGludXggeDY0IHdvcmtzcGFjZXMvZmFsc2UgY2kvZ2l0aHViLWFjdGlvbnMiLENJOiJ0cnVlIixHSVRIVUJfRU5WOiIvaG9tZS9ydW5uZXIvd29yay9fdGVtcC9fcnVubmVyX2ZpbGVfY29tbWFuZHMvc2V0X2Vudl81YzRmNmYxOC0xNjY1LTQ2MzgtYjQyMC1iY2QwMmY2NjU4MTAiLFBJUFhfSE9NRToiL29wdC9waXB4IixucG1fbm9kZV9leGVjcGF0aDoiL29wdC9ob3N0ZWR0b29sY2FjaGUvbm9kZS8xOC4zLjAveDY0L2Jpbi9ub2RlIixKQVZBX0hPTUVfOF9YNjQ6Ii91c3IvbGliL2p2bS90ZW11cmluLTgtamRrLWFtZDY0IixOT0RFX0FVVEhfVE9LRU46IlhYWFhYLVhYWFhYLVhYWFhYLVhYWFhYIixTSExWTDoiMSIsbnBtX2NvbmZpZ19ub3Byb3h5OiIiLEhPTUU6Ii9ob21lL3J1bm5lciIsUlVOTkVSX1RFTVA6Ii9ob21lL3J1bm5lci93b3JrL190ZW1wIixHSVRIVUJfRVZFTlRfUEFUSDoiL2hvbWUvcnVubmVyL3dvcmsvX3RlbXAvX2dpdGh1Yl93b3JrZmxvdy9ldmVudC5qc29uIixucG1fcGFja2FnZV9qc29uOiIvaG9tZS9ydW5uZXIvd29yay9zdHNvYXV0aDJwbHVnaW4vc3Rzb2F1dGgycGx1Z2luL3BhY2thZ2UuanNvbiIsSkFWQV9IT01FXzExX1g2NDoiL3Vzci9saWIvanZtL3RlbXVyaW4tMTEtamRrLWFtZDY0IixQSVBYX0JJTl9ESVI6Ii9vcHQvcGlweF9iaW4iLEdSQUFMVk1fMTFfUk9PVDoiL3Vzci9sb2NhbC9ncmFhbHZtL2dyYWFsdm0tY2UtamF2YTExLTIyLjEuMCIsR0lUSFVCX1JFUE9TSVRPUllfT1dORVI6Im5zc2h1bnQiLEdSQURMRV9IT01FOiIvdXNyL3NoYXJlL2dyYWRsZS03LjQuMiIsSE9NRUJSRVdfUFJFRklYOiIvaG9tZS9saW51eGJyZXcvLmxpbnV4YnJldyIsQU5EUk9JRF9OREtfTEFURVNUX0hPTUU6Ii91c3IvbG9jYWwvbGliL2FuZHJvaWQvc2RrL25kay8yNC4wLjgyMTU4ODgiLEdJVEhVQl9SRVRFTlRJT05fREFZUzoiOTAiLFBPV0VSU0hFTExfRElTVFJJQlVUSU9OX0NIQU5ORUw6IkdpdEh1Yi1BY3Rpb25zLXVidW50dTIwIixBWlVSRV9FWFRFTlNJT05fRElSOiIvb3B0L2F6L2F6Y2xpZXh0ZW5zaW9ucyIsR0lUSFVCX0hFQURfUkVGOiIiLG5wbV9jb25maWdfbG9jYWxfcHJlZml4OiIvaG9tZS9ydW5uZXIvd29yay9zdHNvYXV0aDJwbHVnaW4vc3Rzb2F1dGgycGx1Z2luIixHSVRIVUJfR1JBUEhRTF9VUkw6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vZ3JhcGhxbCIsQ09MT1I6IjAiLE5WTV9ESVI6Ii9ob21lL3J1bm5lci8ubnZtIixucG1fY29uZmlnX21ldHJpY3NfcmVnaXN0cnk6Imh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnLyIsRE9UTkVUX1NLSVBfRklSU1RfVElNRV9FWFBFUklFTkNFOiIxIixKQVZBX0hPTUVfMTdfWDY0OiIvdXNyL2xpYi9qdm0vdGVtdXJpbi0xNy1qZGstYW1kNjQiLEltYWdlVmVyc2lvbjoiMjAyMjA2MDUuMSIsUlVOTkVSX09TOiJMaW51eCIsR0lUSFVCX0FQSV9VUkw6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20iLFNXSUZUX1BBVEg6Ii91c3Ivc2hhcmUvc3dpZnQvdXNyL2JpbiIsUlVOTkVSX1VTRVI6InJ1bm5lciIsQ0hST01FV0VCRFJJVkVSOiIvdXNyL2xvY2FsL3NoYXJlL2Nocm9tZV9kcml2ZXIiLEpPVVJOQUxfU1RSRUFNOiI4OjIxODM0IixHSVRIVUJfV09SS0ZMT1c6Ik5vZGUuanMgUGFja2FnZSIsXzoiL29wdC9ob3N0ZWR0b29sY2FjaGUvbm9kZS8xOC4zLjAveDY0L2Jpbi9ucG0iLG5wbV9jb25maWdfcHJlZml4OiIvb3B0L2hvc3RlZHRvb2xjYWNoZS9ub2RlLzE4LjMuMC94NjQiLEdJVEhVQl9SVU5fSUQ6IjI0ODM1MDYwMzUiLEdPUk9PVF8xXzE2X1g2NDoiL29wdC9ob3N0ZWR0b29sY2FjaGUvZ28vMS4xNi4xNS94NjQiLG5wbV9jb25maWdfY2FjaGU6Ii9ob21lL3J1bm5lci8ubnBtIixHT1JPT1RfMV8xN19YNjQ6Ii9vcHQvaG9zdGVkdG9vbGNhY2hlL2dvLzEuMTcuMTEveDY0IixHSVRIVUJfUkVGX1RZUEU6ImJyYW5jaCIsQk9PVFNUUkFQX0hBU0tFTExfTk9OSU5URVJBQ1RJVkU6IjEiLEdJVEhVQl9CQVNFX1JFRjoiIixJbWFnZU9TOiJ1YnVudHUyMCIsUEVSRkxPR19MT0NBVElPTl9TRVRUSU5HOiJSVU5ORVJfUEVSRkxPRyIsR09ST09UXzFfMThfWDY0OiIvb3B0L2hvc3RlZHRvb2xjYWNoZS9nby8xLjE4LjMveDY0IixHSVRIVUJfQUNUSU9OX1JFUE9TSVRPUlk6IiIsbnBtX2NvbmZpZ19ub2RlX2d5cDoiL29wdC9ob3N0ZWR0b29sY2FjaGUvbm9kZS8xOC4zLjAveDY0L2xpYi9ub2RlX21vZHVsZXMvbnBtL25vZGVfbW9kdWxlcy9ub2RlLWd5cC9iaW4vbm9kZS1neXAuanMiLFBBVEg6Ii9ob21lL3J1bm5lci93b3JrL3N0c29hdXRoMnBsdWdpbi9zdHNvYXV0aDJwbHVnaW4vbm9kZV9tb2R1bGVzLy5iaW46L2hvbWUvcnVubmVyL3dvcmsvc3Rzb2F1dGgycGx1Z2luL25vZGVfbW9kdWxlcy8uYmluOi9ob21lL3J1bm5lci93b3JrL25vZGVfbW9kdWxlcy8uYmluOi9ob21lL3J1bm5lci9ub2RlX21vZHVsZXMvLmJpbjovaG9tZS9ub2RlX21vZHVsZXMvLmJpbjovbm9kZV9tb2R1bGVzLy5iaW46L29wdC9ob3N0ZWR0b29sY2FjaGUvbm9kZS8xOC4zLjAveDY0L2xpYi9ub2RlX21vZHVsZXMvbnBtL25vZGVfbW9kdWxlcy9AbnBtY2xpL3J1bi1zY3JpcHQvbGliL25vZGUtZ3lwLWJpbjovb3B0L2hvc3RlZHRvb2xjYWNoZS9ub2RlLzE4LjMuMC94NjQvYmluOi9ob21lL2xpbnV4YnJldy8ubGludXhicmV3L2JpbjovaG9tZS9saW51eGJyZXcvLmxpbnV4YnJldy9zYmluOi9ob21lL3J1bm5lci8ubG9jYWwvYmluOi9vcHQvcGlweF9iaW46L2hvbWUvcnVubmVyLy5jYXJnby9iaW46L2hvbWUvcnVubmVyLy5jb25maWcvY29tcG9zZXIvdmVuZG9yL2JpbjovdXNyL2xvY2FsLy5naGN1cC9iaW46L2hvbWUvcnVubmVyLy5kb3RuZXQvdG9vbHM6L3NuYXAvYmluOi91c3IvbG9jYWwvc2JpbjovdXNyL2xvY2FsL2JpbjovdXNyL3NiaW46L3Vzci9iaW46L3NiaW46L2JpbjovdXNyL2dhbWVzOi91c3IvbG9jYWwvZ2FtZXM6L3NuYXAvYmluIixBTlRfSE9NRToiL3Vzci9zaGFyZS9hbnQiLERPVE5FVF9NVUxUSUxFVkVMX0xPT0tVUDoiMCIsUlVOTkVSX1RSQUNLSU5HX0lEOiJnaXRodWJfOWUwYTVjN2EtOTc4Zi00ZmNlLWJlOWYtMTU5N2E0NWQzZjhkIixJTlZPQ0FUSU9OX0lEOiI4MjMxNTA0MGY2Y2I0YjE4OTFiODc1NTA3NWRiZTc0OSIsSE9NRUJSRVdfQ0VMTEFSOiIvaG9tZS9saW51eGJyZXcvLmxpbnV4YnJldy9DZWxsYXIiLE5QTV9DT05GSUdfVVNFUkNPTkZJRzoiL2hvbWUvcnVubmVyL3dvcmsvX3RlbXAvLm5wbXJjIixSVU5ORVJfVE9PTF9DQUNIRToiL29wdC9ob3N0ZWR0b29sY2FjaGUiLE5PREU6Ii9vcHQvaG9zdGVkdG9vbGNhY2hlL25vZGUvMTguMy4wL3g2NC9iaW4vbm9kZSIsbnBtX3BhY2thZ2VfbmFtZToiQG5zc2h1bnQvc3Rzb2F1dGgycGx1Z2luIixHSVRIVUJfQUNUSU9OOiJfX3J1bl8yIixHSVRIVUJfUlVOX05VTUJFUjoiMjQiLFJVTk5FUl9BUkNIOiJYNjQiLEFHRU5UX1RPT0xTRElSRUNUT1JZOiIvb3B0L2hvc3RlZHRvb2xjYWNoZSIsTEFORzoiQy5VVEYtOCIsVkNQS0dfSU5TVEFMTEFUSU9OX1JPT1Q6Ii91c3IvbG9jYWwvc2hhcmUvdmNwa2ciLENPTkRBOiIvdXNyL3NoYXJlL21pbmljb25kYSIsUlVOTkVSX05BTUU6Ikhvc3RlZCBBZ2VudCIsWERHX0NPTkZJR19IT01FOiIvaG9tZS9ydW5uZXIvLmNvbmZpZyIsR0lUSFVCX1JFRl9OQU1FOiJtYWluIixHSVRIVUJfUkVQT1NJVE9SWToibnNzaHVudC9zdHNvYXV0aDJwbHVnaW4iLG5wbV9saWZlY3ljbGVfc2NyaXB0OiJ2aXRlIGJ1aWxkIixBTkRST0lEX05ES19ST09UOiIvdXNyL2xvY2FsL2xpYi9hbmRyb2lkL3Nkay9uZGstYnVuZGxlIixHSVRIVUJfQUNUSU9OX1JFRjoiIixERUJJQU5fRlJPTlRFTkQ6Im5vbmludGVyYWN0aXZlIixHSVRIVUJfQUNUSU9OUzoidHJ1ZSIsbnBtX3BhY2thZ2VfdmVyc2lvbjoiMC4xLjEzIixucG1fbGlmZWN5Y2xlX2V2ZW50OiJidWlsZCIsR0lUSFVCX1JFRl9QUk9URUNURUQ6ImZhbHNlIixHSVRIVUJfV09SS1NQQUNFOiIvaG9tZS9ydW5uZXIvd29yay9zdHNvYXV0aDJwbHVnaW4vc3Rzb2F1dGgycGx1Z2luIixBQ0NFUFRfRVVMQToiWSIsR0lUSFVCX0pPQjoicHVibGlzaC1ucG0iLFJVTk5FUl9QRVJGTE9HOiIvaG9tZS9ydW5uZXIvcGVyZmxvZyIsR0lUSFVCX1NIQToiZjY1OThkMTg4NjFjNjA4NGEzMDI0M2M5ZDZhOWQwMjAwZTFmOWU5NiIsR0lUSFVCX1JVTl9BVFRFTVBUOiIxIixHSVRIVUJfUkVGOiJyZWZzL2hlYWRzL21haW4iLEdJVEhVQl9BQ1RPUjoibnNzaHVudCIsQU5EUk9JRF9TREtfUk9PVDoiL3Vzci9sb2NhbC9saWIvYW5kcm9pZC9zZGsiLExFSU5fSE9NRToiL3Vzci9sb2NhbC9saWIvbGVpbiIsbnBtX2NvbmZpZ19nbG9iYWxjb25maWc6Ii9vcHQvaG9zdGVkdG9vbGNhY2hlL25vZGUvMTguMy4wL3g2NC9ldGMvbnBtcmMiLG5wbV9jb25maWdfaW5pdF9tb2R1bGU6Ii9ob21lL3J1bm5lci8ubnBtLWluaXQuanMiLEdJVEhVQl9QQVRIOiIvaG9tZS9ydW5uZXIvd29yay9fdGVtcC9fcnVubmVyX2ZpbGVfY29tbWFuZHMvYWRkX3BhdGhfNWM0ZjZmMTgtMTY2NS00NjM4LWI0MjAtYmNkMDJmNjY1ODEwIixKQVZBX0hPTUU6Ii91c3IvbGliL2p2bS90ZW11cmluLTExLWpkay1hbWQ2NCIsUFdEOiIvaG9tZS9ydW5uZXIvd29yay9zdHNvYXV0aDJwbHVnaW4vc3Rzb2F1dGgycGx1Z2luIixSVU5ORVJfV09SS1NQQUNFOiIvaG9tZS9ydW5uZXIvd29yay9zdHNvYXV0aDJwbHVnaW4iLG5wbV9leGVjcGF0aDoiL29wdC9ob3N0ZWR0b29sY2FjaGUvbm9kZS8xOC4zLjAveDY0L2xpYi9ub2RlX21vZHVsZXMvbnBtL2Jpbi9ucG0tY2xpLmpzIixIT01FQlJFV19DTEVBTlVQX1BFUklPRElDX0ZVTExfREFZUzoiMzY1MCIsR0lUSFVCX0VWRU5UX05BTUU6InB1c2giLEhPTUVCUkVXX05PX0FVVE9fVVBEQVRFOiIxIixBTkRST0lEX0hPTUU6Ii91c3IvbG9jYWwvbGliL2FuZHJvaWQvc2RrIixHSVRIVUJfU0VSVkVSX1VSTDoiaHR0cHM6Ly9naXRodWIuY29tIixHRUNLT1dFQkRSSVZFUjoiL3Vzci9sb2NhbC9zaGFyZS9nZWNrb19kcml2ZXIiLExFSU5fSkFSOiIvdXNyL2xvY2FsL2xpYi9sZWluL3NlbGYtaW5zdGFsbHMvbGVpbmluZ2VuLTIuOS44LXN0YW5kYWxvbmUuamFyIixucG1fY29uZmlnX2dsb2JhbF9wcmVmaXg6Ii9vcHQvaG9zdGVkdG9vbGNhY2hlL25vZGUvMTguMy4wL3g2NCIsSE9NRUJSRVdfUkVQT1NJVE9SWToiL2hvbWUvbGludXhicmV3Ly5saW51eGJyZXcvSG9tZWJyZXciLG5wbV9jb21tYW5kOiJydW4tc2NyaXB0IixTR1hfQUVTTV9BRERSOiIxIixDSFJPTUVfQklOOiIvdXNyL2Jpbi9nb29nbGUtY2hyb21lIixTRUxFTklVTV9KQVJfUEFUSDoiL3Vzci9zaGFyZS9qYXZhL3NlbGVuaXVtLXNlcnZlci5qYXIiLEFORFJPSURfTkRLX0hPTUU6Ii91c3IvbG9jYWwvbGliL2FuZHJvaWQvc2RrL25kay1idW5kbGUiLEdJVEhVQl9TVEVQX1NVTU1BUlk6Ii9ob21lL3J1bm5lci93b3JrL190ZW1wL19ydW5uZXJfZmlsZV9jb21tYW5kcy9zdGVwX3N1bW1hcnlfNWM0ZjZmMTgtMTY2NS00NjM4LWI0MjAtYmNkMDJmNjY1ODEwIixJTklUX0NXRDoiL2hvbWUvcnVubmVyL3dvcmsvc3Rzb2F1dGgycGx1Z2luL3N0c29hdXRoMnBsdWdpbiIsRURJVE9SOiJ2aSIsTk9ERV9FTlY6InByb2R1Y3Rpb24ifS5TQ09QRSxjPVgodGhpcyxIbikuQ3JlYXRlUmFuZG9tU3RyaW5nKCksbT1YKHRoaXMsSG4pLkNyZWF0ZVJhbmRvbVN0cmluZygpLGE9YXdhaXQgWCh0aGlzLEhuKS5EaWdlc3RNZXNzYWdlKG0pLE89e2NsaWVudF9pZDpyLG5vbmNlOm8scmVzcG9uc2VfdHlwZTp0LHJlZGlyZWN0X3VyaTpzLHJlc3BvbnNlX21vZGU6aSxzY29wZTpsLHN0YXRlOmMsY29kZV9jaGFsbGVuZ2U6YSxjb2RlX2NoYWxsZW5nZV9tZXRob2Q6IlMyNTYifSxEPWAke3tERVBMT1lNRU5UX0JBU0VQQVRIOiIvb3B0L3J1bm5lciIsRE9UTkVUX05PTE9HTzoiMSIsVVNFUjoicnVubmVyIixucG1fY29uZmlnX2Fsd2F5c19hdXRoOiIiLG5wbV9jb25maWdfdXNlcl9hZ2VudDoibnBtLzguMTEuMCBub2RlL3YxOC4zLjAgbGludXggeDY0IHdvcmtzcGFjZXMvZmFsc2UgY2kvZ2l0aHViLWFjdGlvbnMiLENJOiJ0cnVlIixHSVRIVUJfRU5WOiIvaG9tZS9ydW5uZXIvd29yay9fdGVtcC9fcnVubmVyX2ZpbGVfY29tbWFuZHMvc2V0X2Vudl81YzRmNmYxOC0xNjY1LTQ2MzgtYjQyMC1iY2QwMmY2NjU4MTAiLFBJUFhfSE9NRToiL29wdC9waXB4IixucG1fbm9kZV9leGVjcGF0aDoiL29wdC9ob3N0ZWR0b29sY2FjaGUvbm9kZS8xOC4zLjAveDY0L2Jpbi9ub2RlIixKQVZBX0hPTUVfOF9YNjQ6Ii91c3IvbGliL2p2bS90ZW11cmluLTgtamRrLWFtZDY0IixOT0RFX0FVVEhfVE9LRU46IlhYWFhYLVhYWFhYLVhYWFhYLVhYWFhYIixTSExWTDoiMSIsbnBtX2NvbmZpZ19ub3Byb3h5OiIiLEhPTUU6Ii9ob21lL3J1bm5lciIsUlVOTkVSX1RFTVA6Ii9ob21lL3J1bm5lci93b3JrL190ZW1wIixHSVRIVUJfRVZFTlRfUEFUSDoiL2hvbWUvcnVubmVyL3dvcmsvX3RlbXAvX2dpdGh1Yl93b3JrZmxvdy9ldmVudC5qc29uIixucG1fcGFja2FnZV9qc29uOiIvaG9tZS9ydW5uZXIvd29yay9zdHNvYXV0aDJwbHVnaW4vc3Rzb2F1dGgycGx1Z2luL3BhY2thZ2UuanNvbiIsSkFWQV9IT01FXzExX1g2NDoiL3Vzci9saWIvanZtL3RlbXVyaW4tMTEtamRrLWFtZDY0IixQSVBYX0JJTl9ESVI6Ii9vcHQvcGlweF9iaW4iLEdSQUFMVk1fMTFfUk9PVDoiL3Vzci9sb2NhbC9ncmFhbHZtL2dyYWFsdm0tY2UtamF2YTExLTIyLjEuMCIsR0lUSFVCX1JFUE9TSVRPUllfT1dORVI6Im5zc2h1bnQiLEdSQURMRV9IT01FOiIvdXNyL3NoYXJlL2dyYWRsZS03LjQuMiIsSE9NRUJSRVdfUFJFRklYOiIvaG9tZS9saW51eGJyZXcvLmxpbnV4YnJldyIsQU5EUk9JRF9OREtfTEFURVNUX0hPTUU6Ii91c3IvbG9jYWwvbGliL2FuZHJvaWQvc2RrL25kay8yNC4wLjgyMTU4ODgiLEdJVEhVQl9SRVRFTlRJT05fREFZUzoiOTAiLFBPV0VSU0hFTExfRElTVFJJQlVUSU9OX0NIQU5ORUw6IkdpdEh1Yi1BY3Rpb25zLXVidW50dTIwIixBWlVSRV9FWFRFTlNJT05fRElSOiIvb3B0L2F6L2F6Y2xpZXh0ZW5zaW9ucyIsR0lUSFVCX0hFQURfUkVGOiIiLG5wbV9jb25maWdfbG9jYWxfcHJlZml4OiIvaG9tZS9ydW5uZXIvd29yay9zdHNvYXV0aDJwbHVnaW4vc3Rzb2F1dGgycGx1Z2luIixHSVRIVUJfR1JBUEhRTF9VUkw6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vZ3JhcGhxbCIsQ09MT1I6IjAiLE5WTV9ESVI6Ii9ob21lL3J1bm5lci8ubnZtIixucG1fY29uZmlnX21ldHJpY3NfcmVnaXN0cnk6Imh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnLyIsRE9UTkVUX1NLSVBfRklSU1RfVElNRV9FWFBFUklFTkNFOiIxIixKQVZBX0hPTUVfMTdfWDY0OiIvdXNyL2xpYi9qdm0vdGVtdXJpbi0xNy1qZGstYW1kNjQiLEltYWdlVmVyc2lvbjoiMjAyMjA2MDUuMSIsUlVOTkVSX09TOiJMaW51eCIsR0lUSFVCX0FQSV9VUkw6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20iLFNXSUZUX1BBVEg6Ii91c3Ivc2hhcmUvc3dpZnQvdXNyL2JpbiIsUlVOTkVSX1VTRVI6InJ1bm5lciIsQ0hST01FV0VCRFJJVkVSOiIvdXNyL2xvY2FsL3NoYXJlL2Nocm9tZV9kcml2ZXIiLEpPVVJOQUxfU1RSRUFNOiI4OjIxODM0IixHSVRIVUJfV09SS0ZMT1c6Ik5vZGUuanMgUGFja2FnZSIsXzoiL29wdC9ob3N0ZWR0b29sY2FjaGUvbm9kZS8xOC4zLjAveDY0L2Jpbi9ucG0iLG5wbV9jb25maWdfcHJlZml4OiIvb3B0L2hvc3RlZHRvb2xjYWNoZS9ub2RlLzE4LjMuMC94NjQiLEdJVEhVQl9SVU5fSUQ6IjI0ODM1MDYwMzUiLEdPUk9PVF8xXzE2X1g2NDoiL29wdC9ob3N0ZWR0b29sY2FjaGUvZ28vMS4xNi4xNS94NjQiLG5wbV9jb25maWdfY2FjaGU6Ii9ob21lL3J1bm5lci8ubnBtIixHT1JPT1RfMV8xN19YNjQ6Ii9vcHQvaG9zdGVkdG9vbGNhY2hlL2dvLzEuMTcuMTEveDY0IixHSVRIVUJfUkVGX1RZUEU6ImJyYW5jaCIsQk9PVFNUUkFQX0hBU0tFTExfTk9OSU5URVJBQ1RJVkU6IjEiLEdJVEhVQl9CQVNFX1JFRjoiIixJbWFnZU9TOiJ1YnVudHUyMCIsUEVSRkxPR19MT0NBVElPTl9TRVRUSU5HOiJSVU5ORVJfUEVSRkxPRyIsR09ST09UXzFfMThfWDY0OiIvb3B0L2hvc3RlZHRvb2xjYWNoZS9nby8xLjE4LjMveDY0IixHSVRIVUJfQUNUSU9OX1JFUE9TSVRPUlk6IiIsbnBtX2NvbmZpZ19ub2RlX2d5cDoiL29wdC9ob3N0ZWR0b29sY2FjaGUvbm9kZS8xOC4zLjAveDY0L2xpYi9ub2RlX21vZHVsZXMvbnBtL25vZGVfbW9kdWxlcy9ub2RlLWd5cC9iaW4vbm9kZS1neXAuanMiLFBBVEg6Ii9ob21lL3J1bm5lci93b3JrL3N0c29hdXRoMnBsdWdpbi9zdHNvYXV0aDJwbHVnaW4vbm9kZV9tb2R1bGVzLy5iaW46L2hvbWUvcnVubmVyL3dvcmsvc3Rzb2F1dGgycGx1Z2luL25vZGVfbW9kdWxlcy8uYmluOi9ob21lL3J1bm5lci93b3JrL25vZGVfbW9kdWxlcy8uYmluOi9ob21lL3J1bm5lci9ub2RlX21vZHVsZXMvLmJpbjovaG9tZS9ub2RlX21vZHVsZXMvLmJpbjovbm9kZV9tb2R1bGVzLy5iaW46L29wdC9ob3N0ZWR0b29sY2FjaGUvbm9kZS8xOC4zLjAveDY0L2xpYi9ub2RlX21vZHVsZXMvbnBtL25vZGVfbW9kdWxlcy9AbnBtY2xpL3J1bi1zY3JpcHQvbGliL25vZGUtZ3lwLWJpbjovb3B0L2hvc3RlZHRvb2xjYWNoZS9ub2RlLzE4LjMuMC94NjQvYmluOi9ob21lL2xpbnV4YnJldy8ubGludXhicmV3L2JpbjovaG9tZS9saW51eGJyZXcvLmxpbnV4YnJldy9zYmluOi9ob21lL3J1bm5lci8ubG9jYWwvYmluOi9vcHQvcGlweF9iaW46L2hvbWUvcnVubmVyLy5jYXJnby9iaW46L2hvbWUvcnVubmVyLy5jb25maWcvY29tcG9zZXIvdmVuZG9yL2JpbjovdXNyL2xvY2FsLy5naGN1cC9iaW46L2hvbWUvcnVubmVyLy5kb3RuZXQvdG9vbHM6L3NuYXAvYmluOi91c3IvbG9jYWwvc2JpbjovdXNyL2xvY2FsL2JpbjovdXNyL3NiaW46L3Vzci9iaW46L3NiaW46L2JpbjovdXNyL2dhbWVzOi91c3IvbG9jYWwvZ2FtZXM6L3NuYXAvYmluIixBTlRfSE9NRToiL3Vzci9zaGFyZS9hbnQiLERPVE5FVF9NVUxUSUxFVkVMX0xPT0tVUDoiMCIsUlVOTkVSX1RSQUNLSU5HX0lEOiJnaXRodWJfOWUwYTVjN2EtOTc4Zi00ZmNlLWJlOWYtMTU5N2E0NWQzZjhkIixJTlZPQ0FUSU9OX0lEOiI4MjMxNTA0MGY2Y2I0YjE4OTFiODc1NTA3NWRiZTc0OSIsSE9NRUJSRVdfQ0VMTEFSOiIvaG9tZS9saW51eGJyZXcvLmxpbnV4YnJldy9DZWxsYXIiLE5QTV9DT05GSUdfVVNFUkNPTkZJRzoiL2hvbWUvcnVubmVyL3dvcmsvX3RlbXAvLm5wbXJjIixSVU5ORVJfVE9PTF9DQUNIRToiL29wdC9ob3N0ZWR0b29sY2FjaGUiLE5PREU6Ii9vcHQvaG9zdGVkdG9vbGNhY2hlL25vZGUvMTguMy4wL3g2NC9iaW4vbm9kZSIsbnBtX3BhY2thZ2VfbmFtZToiQG5zc2h1bnQvc3Rzb2F1dGgycGx1Z2luIixHSVRIVUJfQUNUSU9OOiJfX3J1bl8yIixHSVRIVUJfUlVOX05VTUJFUjoiMjQiLFJVTk5FUl9BUkNIOiJYNjQiLEFHRU5UX1RPT0xTRElSRUNUT1JZOiIvb3B0L2hvc3RlZHRvb2xjYWNoZSIsTEFORzoiQy5VVEYtOCIsVkNQS0dfSU5TVEFMTEFUSU9OX1JPT1Q6Ii91c3IvbG9jYWwvc2hhcmUvdmNwa2ciLENPTkRBOiIvdXNyL3NoYXJlL21pbmljb25kYSIsUlVOTkVSX05BTUU6Ikhvc3RlZCBBZ2VudCIsWERHX0NPTkZJR19IT01FOiIvaG9tZS9ydW5uZXIvLmNvbmZpZyIsR0lUSFVCX1JFRl9OQU1FOiJtYWluIixHSVRIVUJfUkVQT1NJVE9SWToibnNzaHVudC9zdHNvYXV0aDJwbHVnaW4iLG5wbV9saWZlY3ljbGVfc2NyaXB0OiJ2aXRlIGJ1aWxkIixBTkRST0lEX05ES19ST09UOiIvdXNyL2xvY2FsL2xpYi9hbmRyb2lkL3Nkay9uZGstYnVuZGxlIixHSVRIVUJfQUNUSU9OX1JFRjoiIixERUJJQU5fRlJPTlRFTkQ6Im5vbmludGVyYWN0aXZlIixHSVRIVUJfQUNUSU9OUzoidHJ1ZSIsbnBtX3BhY2thZ2VfdmVyc2lvbjoiMC4xLjEzIixucG1fbGlmZWN5Y2xlX2V2ZW50OiJidWlsZCIsR0lUSFVCX1JFRl9QUk9URUNURUQ6ImZhbHNlIixHSVRIVUJfV09SS1NQQUNFOiIvaG9tZS9ydW5uZXIvd29yay9zdHNvYXV0aDJwbHVnaW4vc3Rzb2F1dGgycGx1Z2luIixBQ0NFUFRfRVVMQToiWSIsR0lUSFVCX0pPQjoicHVibGlzaC1ucG0iLFJVTk5FUl9QRVJGTE9HOiIvaG9tZS9ydW5uZXIvcGVyZmxvZyIsR0lUSFVCX1NIQToiZjY1OThkMTg4NjFjNjA4NGEzMDI0M2M5ZDZhOWQwMjAwZTFmOWU5NiIsR0lUSFVCX1JVTl9BVFRFTVBUOiIxIixHSVRIVUJfUkVGOiJyZWZzL2hlYWRzL21haW4iLEdJVEhVQl9BQ1RPUjoibnNzaHVudCIsQU5EUk9JRF9TREtfUk9PVDoiL3Vzci9sb2NhbC9saWIvYW5kcm9pZC9zZGsiLExFSU5fSE9NRToiL3Vzci9sb2NhbC9saWIvbGVpbiIsbnBtX2NvbmZpZ19nbG9iYWxjb25maWc6Ii9vcHQvaG9zdGVkdG9vbGNhY2hlL25vZGUvMTguMy4wL3g2NC9ldGMvbnBtcmMiLG5wbV9jb25maWdfaW5pdF9tb2R1bGU6Ii9ob21lL3J1bm5lci8ubnBtLWluaXQuanMiLEdJVEhVQl9QQVRIOiIvaG9tZS9ydW5uZXIvd29yay9fdGVtcC9fcnVubmVyX2ZpbGVfY29tbWFuZHMvYWRkX3BhdGhfNWM0ZjZmMTgtMTY2NS00NjM4LWI0MjAtYmNkMDJmNjY1ODEwIixKQVZBX0hPTUU6Ii91c3IvbGliL2p2bS90ZW11cmluLTExLWpkay1hbWQ2NCIsUFdEOiIvaG9tZS9ydW5uZXIvd29yay9zdHNvYXV0aDJwbHVnaW4vc3Rzb2F1dGgycGx1Z2luIixSVU5ORVJfV09SS1NQQUNFOiIvaG9tZS9ydW5uZXIvd29yay9zdHNvYXV0aDJwbHVnaW4iLG5wbV9leGVjcGF0aDoiL29wdC9ob3N0ZWR0b29sY2FjaGUvbm9kZS8xOC4zLjAveDY0L2xpYi9ub2RlX21vZHVsZXMvbnBtL2Jpbi9ucG0tY2xpLmpzIixIT01FQlJFV19DTEVBTlVQX1BFUklPRElDX0ZVTExfREFZUzoiMzY1MCIsR0lUSFVCX0VWRU5UX05BTUU6InB1c2giLEhPTUVCUkVXX05PX0FVVE9fVVBEQVRFOiIxIixBTkRST0lEX0hPTUU6Ii91c3IvbG9jYWwvbGliL2FuZHJvaWQvc2RrIixHSVRIVUJfU0VSVkVSX1VSTDoiaHR0cHM6Ly9naXRodWIuY29tIixHRUNLT1dFQkRSSVZFUjoiL3Vzci9sb2NhbC9zaGFyZS9nZWNrb19kcml2ZXIiLExFSU5fSkFSOiIvdXNyL2xvY2FsL2xpYi9sZWluL3NlbGYtaW5zdGFsbHMvbGVpbmluZ2VuLTIuOS44LXN0YW5kYWxvbmUuamFyIixucG1fY29uZmlnX2dsb2JhbF9wcmVmaXg6Ii9vcHQvaG9zdGVkdG9vbGNhY2hlL25vZGUvMTguMy4wL3g2NCIsSE9NRUJSRVdfUkVQT1NJVE9SWToiL2hvbWUvbGludXhicmV3Ly5saW51eGJyZXcvSG9tZWJyZXciLG5wbV9jb21tYW5kOiJydW4tc2NyaXB0IixTR1hfQUVTTV9BRERSOiIxIixDSFJPTUVfQklOOiIvdXNyL2Jpbi9nb29nbGUtY2hyb21lIixTRUxFTklVTV9KQVJfUEFUSDoiL3Vzci9zaGFyZS9qYXZhL3NlbGVuaXVtLXNlcnZlci5qYXIiLEFORFJPSURfTkRLX0hPTUU6Ii91c3IvbG9jYWwvbGliL2FuZHJvaWQvc2RrL25kay1idW5kbGUiLEdJVEhVQl9TVEVQX1NVTU1BUlk6Ii9ob21lL3J1bm5lci93b3JrL190ZW1wL19ydW5uZXJfZmlsZV9jb21tYW5kcy9zdGVwX3N1bW1hcnlfNWM0ZjZmMTgtMTY2NS00NjM4LWI0MjAtYmNkMDJmNjY1ODEwIixJTklUX0NXRDoiL2hvbWUvcnVubmVyL3dvcmsvc3Rzb2F1dGgycGx1Z2luL3N0c29hdXRoMnBsdWdpbiIsRURJVE9SOiJ2aSIsTk9ERV9FTlY6InByb2R1Y3Rpb24ifS5BVVRIX0VORFBPSU5UfToke3tERVBMT1lNRU5UX0JBU0VQQVRIOiIvb3B0L3J1bm5lciIsRE9UTkVUX05PTE9HTzoiMSIsVVNFUjoicnVubmVyIixucG1fY29uZmlnX2Fsd2F5c19hdXRoOiIiLG5wbV9jb25maWdfdXNlcl9hZ2VudDoibnBtLzguMTEuMCBub2RlL3YxOC4zLjAgbGludXggeDY0IHdvcmtzcGFjZXMvZmFsc2UgY2kvZ2l0aHViLWFjdGlvbnMiLENJOiJ0cnVlIixHSVRIVUJfRU5WOiIvaG9tZS9ydW5uZXIvd29yay9fdGVtcC9fcnVubmVyX2ZpbGVfY29tbWFuZHMvc2V0X2Vudl81YzRmNmYxOC0xNjY1LTQ2MzgtYjQyMC1iY2QwMmY2NjU4MTAiLFBJUFhfSE9NRToiL29wdC9waXB4IixucG1fbm9kZV9leGVjcGF0aDoiL29wdC9ob3N0ZWR0b29sY2FjaGUvbm9kZS8xOC4zLjAveDY0L2Jpbi9ub2RlIixKQVZBX0hPTUVfOF9YNjQ6Ii91c3IvbGliL2p2bS90ZW11cmluLTgtamRrLWFtZDY0IixOT0RFX0FVVEhfVE9LRU46IlhYWFhYLVhYWFhYLVhYWFhYLVhYWFhYIixTSExWTDoiMSIsbnBtX2NvbmZpZ19ub3Byb3h5OiIiLEhPTUU6Ii9ob21lL3J1bm5lciIsUlVOTkVSX1RFTVA6Ii9ob21lL3J1bm5lci93b3JrL190ZW1wIixHSVRIVUJfRVZFTlRfUEFUSDoiL2hvbWUvcnVubmVyL3dvcmsvX3RlbXAvX2dpdGh1Yl93b3JrZmxvdy9ldmVudC5qc29uIixucG1fcGFja2FnZV9qc29uOiIvaG9tZS9ydW5uZXIvd29yay9zdHNvYXV0aDJwbHVnaW4vc3Rzb2F1dGgycGx1Z2luL3BhY2thZ2UuanNvbiIsSkFWQV9IT01FXzExX1g2NDoiL3Vzci9saWIvanZtL3RlbXVyaW4tMTEtamRrLWFtZDY0IixQSVBYX0JJTl9ESVI6Ii9vcHQvcGlweF9iaW4iLEdSQUFMVk1fMTFfUk9PVDoiL3Vzci9sb2NhbC9ncmFhbHZtL2dyYWFsdm0tY2UtamF2YTExLTIyLjEuMCIsR0lUSFVCX1JFUE9TSVRPUllfT1dORVI6Im5zc2h1bnQiLEdSQURMRV9IT01FOiIvdXNyL3NoYXJlL2dyYWRsZS03LjQuMiIsSE9NRUJSRVdfUFJFRklYOiIvaG9tZS9saW51eGJyZXcvLmxpbnV4YnJldyIsQU5EUk9JRF9OREtfTEFURVNUX0hPTUU6Ii91c3IvbG9jYWwvbGliL2FuZHJvaWQvc2RrL25kay8yNC4wLjgyMTU4ODgiLEdJVEhVQl9SRVRFTlRJT05fREFZUzoiOTAiLFBPV0VSU0hFTExfRElTVFJJQlVUSU9OX0NIQU5ORUw6IkdpdEh1Yi1BY3Rpb25zLXVidW50dTIwIixBWlVSRV9FWFRFTlNJT05fRElSOiIvb3B0L2F6L2F6Y2xpZXh0ZW5zaW9ucyIsR0lUSFVCX0hFQURfUkVGOiIiLG5wbV9jb25maWdfbG9jYWxfcHJlZml4OiIvaG9tZS9ydW5uZXIvd29yay9zdHNvYXV0aDJwbHVnaW4vc3Rzb2F1dGgycGx1Z2luIixHSVRIVUJfR1JBUEhRTF9VUkw6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vZ3JhcGhxbCIsQ09MT1I6IjAiLE5WTV9ESVI6Ii9ob21lL3J1bm5lci8ubnZtIixucG1fY29uZmlnX21ldHJpY3NfcmVnaXN0cnk6Imh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnLyIsRE9UTkVUX1NLSVBfRklSU1RfVElNRV9FWFBFUklFTkNFOiIxIixKQVZBX0hPTUVfMTdfWDY0OiIvdXNyL2xpYi9qdm0vdGVtdXJpbi0xNy1qZGstYW1kNjQiLEltYWdlVmVyc2lvbjoiMjAyMjA2MDUuMSIsUlVOTkVSX09TOiJMaW51eCIsR0lUSFVCX0FQSV9VUkw6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20iLFNXSUZUX1BBVEg6Ii91c3Ivc2hhcmUvc3dpZnQvdXNyL2JpbiIsUlVOTkVSX1VTRVI6InJ1bm5lciIsQ0hST01FV0VCRFJJVkVSOiIvdXNyL2xvY2FsL3NoYXJlL2Nocm9tZV9kcml2ZXIiLEpPVVJOQUxfU1RSRUFNOiI4OjIxODM0IixHSVRIVUJfV09SS0ZMT1c6Ik5vZGUuanMgUGFja2FnZSIsXzoiL29wdC9ob3N0ZWR0b29sY2FjaGUvbm9kZS8xOC4zLjAveDY0L2Jpbi9ucG0iLG5wbV9jb25maWdfcHJlZml4OiIvb3B0L2hvc3RlZHRvb2xjYWNoZS9ub2RlLzE4LjMuMC94NjQiLEdJVEhVQl9SVU5fSUQ6IjI0ODM1MDYwMzUiLEdPUk9PVF8xXzE2X1g2NDoiL29wdC9ob3N0ZWR0b29sY2FjaGUvZ28vMS4xNi4xNS94NjQiLG5wbV9jb25maWdfY2FjaGU6Ii9ob21lL3J1bm5lci8ubnBtIixHT1JPT1RfMV8xN19YNjQ6Ii9vcHQvaG9zdGVkdG9vbGNhY2hlL2dvLzEuMTcuMTEveDY0IixHSVRIVUJfUkVGX1RZUEU6ImJyYW5jaCIsQk9PVFNUUkFQX0hBU0tFTExfTk9OSU5URVJBQ1RJVkU6IjEiLEdJVEhVQl9CQVNFX1JFRjoiIixJbWFnZU9TOiJ1YnVudHUyMCIsUEVSRkxPR19MT0NBVElPTl9TRVRUSU5HOiJSVU5ORVJfUEVSRkxPRyIsR09ST09UXzFfMThfWDY0OiIvb3B0L2hvc3RlZHRvb2xjYWNoZS9nby8xLjE4LjMveDY0IixHSVRIVUJfQUNUSU9OX1JFUE9TSVRPUlk6IiIsbnBtX2NvbmZpZ19ub2RlX2d5cDoiL29wdC9ob3N0ZWR0b29sY2FjaGUvbm9kZS8xOC4zLjAveDY0L2xpYi9ub2RlX21vZHVsZXMvbnBtL25vZGVfbW9kdWxlcy9ub2RlLWd5cC9iaW4vbm9kZS1neXAuanMiLFBBVEg6Ii9ob21lL3J1bm5lci93b3JrL3N0c29hdXRoMnBsdWdpbi9zdHNvYXV0aDJwbHVnaW4vbm9kZV9tb2R1bGVzLy5iaW46L2hvbWUvcnVubmVyL3dvcmsvc3Rzb2F1dGgycGx1Z2luL25vZGVfbW9kdWxlcy8uYmluOi9ob21lL3J1bm5lci93b3JrL25vZGVfbW9kdWxlcy8uYmluOi9ob21lL3J1bm5lci9ub2RlX21vZHVsZXMvLmJpbjovaG9tZS9ub2RlX21vZHVsZXMvLmJpbjovbm9kZV9tb2R1bGVzLy5iaW46L29wdC9ob3N0ZWR0b29sY2FjaGUvbm9kZS8xOC4zLjAveDY0L2xpYi9ub2RlX21vZHVsZXMvbnBtL25vZGVfbW9kdWxlcy9AbnBtY2xpL3J1bi1zY3JpcHQvbGliL25vZGUtZ3lwLWJpbjovb3B0L2hvc3RlZHRvb2xjYWNoZS9ub2RlLzE4LjMuMC94NjQvYmluOi9ob21lL2xpbnV4YnJldy8ubGludXhicmV3L2JpbjovaG9tZS9saW51eGJyZXcvLmxpbnV4YnJldy9zYmluOi9ob21lL3J1bm5lci8ubG9jYWwvYmluOi9vcHQvcGlweF9iaW46L2hvbWUvcnVubmVyLy5jYXJnby9iaW46L2hvbWUvcnVubmVyLy5jb25maWcvY29tcG9zZXIvdmVuZG9yL2JpbjovdXNyL2xvY2FsLy5naGN1cC9iaW46L2hvbWUvcnVubmVyLy5kb3RuZXQvdG9vbHM6L3NuYXAvYmluOi91c3IvbG9jYWwvc2JpbjovdXNyL2xvY2FsL2JpbjovdXNyL3NiaW46L3Vzci9iaW46L3NiaW46L2JpbjovdXNyL2dhbWVzOi91c3IvbG9jYWwvZ2FtZXM6L3NuYXAvYmluIixBTlRfSE9NRToiL3Vzci9zaGFyZS9hbnQiLERPVE5FVF9NVUxUSUxFVkVMX0xPT0tVUDoiMCIsUlVOTkVSX1RSQUNLSU5HX0lEOiJnaXRodWJfOWUwYTVjN2EtOTc4Zi00ZmNlLWJlOWYtMTU5N2E0NWQzZjhkIixJTlZPQ0FUSU9OX0lEOiI4MjMxNTA0MGY2Y2I0YjE4OTFiODc1NTA3NWRiZTc0OSIsSE9NRUJSRVdfQ0VMTEFSOiIvaG9tZS9saW51eGJyZXcvLmxpbnV4YnJldy9DZWxsYXIiLE5QTV9DT05GSUdfVVNFUkNPTkZJRzoiL2hvbWUvcnVubmVyL3dvcmsvX3RlbXAvLm5wbXJjIixSVU5ORVJfVE9PTF9DQUNIRToiL29wdC9ob3N0ZWR0b29sY2FjaGUiLE5PREU6Ii9vcHQvaG9zdGVkdG9vbGNhY2hlL25vZGUvMTguMy4wL3g2NC9iaW4vbm9kZSIsbnBtX3BhY2thZ2VfbmFtZToiQG5zc2h1bnQvc3Rzb2F1dGgycGx1Z2luIixHSVRIVUJfQUNUSU9OOiJfX3J1bl8yIixHSVRIVUJfUlVOX05VTUJFUjoiMjQiLFJVTk5FUl9BUkNIOiJYNjQiLEFHRU5UX1RPT0xTRElSRUNUT1JZOiIvb3B0L2hvc3RlZHRvb2xjYWNoZSIsTEFORzoiQy5VVEYtOCIsVkNQS0dfSU5TVEFMTEFUSU9OX1JPT1Q6Ii91c3IvbG9jYWwvc2hhcmUvdmNwa2ciLENPTkRBOiIvdXNyL3NoYXJlL21pbmljb25kYSIsUlVOTkVSX05BTUU6Ikhvc3RlZCBBZ2VudCIsWERHX0NPTkZJR19IT01FOiIvaG9tZS9ydW5uZXIvLmNvbmZpZyIsR0lUSFVCX1JFRl9OQU1FOiJtYWluIixHSVRIVUJfUkVQT1NJVE9SWToibnNzaHVudC9zdHNvYXV0aDJwbHVnaW4iLG5wbV9saWZlY3ljbGVfc2NyaXB0OiJ2aXRlIGJ1aWxkIixBTkRST0lEX05ES19ST09UOiIvdXNyL2xvY2FsL2xpYi9hbmRyb2lkL3Nkay9uZGstYnVuZGxlIixHSVRIVUJfQUNUSU9OX1JFRjoiIixERUJJQU5fRlJPTlRFTkQ6Im5vbmludGVyYWN0aXZlIixHSVRIVUJfQUNUSU9OUzoidHJ1ZSIsbnBtX3BhY2thZ2VfdmVyc2lvbjoiMC4xLjEzIixucG1fbGlmZWN5Y2xlX2V2ZW50OiJidWlsZCIsR0lUSFVCX1JFRl9QUk9URUNURUQ6ImZhbHNlIixHSVRIVUJfV09SS1NQQUNFOiIvaG9tZS9ydW5uZXIvd29yay9zdHNvYXV0aDJwbHVnaW4vc3Rzb2F1dGgycGx1Z2luIixBQ0NFUFRfRVVMQToiWSIsR0lUSFVCX0pPQjoicHVibGlzaC1ucG0iLFJVTk5FUl9QRVJGTE9HOiIvaG9tZS9ydW5uZXIvcGVyZmxvZyIsR0lUSFVCX1NIQToiZjY1OThkMTg4NjFjNjA4NGEzMDI0M2M5ZDZhOWQwMjAwZTFmOWU5NiIsR0lUSFVCX1JVTl9BVFRFTVBUOiIxIixHSVRIVUJfUkVGOiJyZWZzL2hlYWRzL21haW4iLEdJVEhVQl9BQ1RPUjoibnNzaHVudCIsQU5EUk9JRF9TREtfUk9PVDoiL3Vzci9sb2NhbC9saWIvYW5kcm9pZC9zZGsiLExFSU5fSE9NRToiL3Vzci9sb2NhbC9saWIvbGVpbiIsbnBtX2NvbmZpZ19nbG9iYWxjb25maWc6Ii9vcHQvaG9zdGVkdG9vbGNhY2hlL25vZGUvMTguMy4wL3g2NC9ldGMvbnBtcmMiLG5wbV9jb25maWdfaW5pdF9tb2R1bGU6Ii9ob21lL3J1bm5lci8ubnBtLWluaXQuanMiLEdJVEhVQl9QQVRIOiIvaG9tZS9ydW5uZXIvd29yay9fdGVtcC9fcnVubmVyX2ZpbGVfY29tbWFuZHMvYWRkX3BhdGhfNWM0ZjZmMTgtMTY2NS00NjM4LWI0MjAtYmNkMDJmNjY1ODEwIixKQVZBX0hPTUU6Ii91c3IvbGliL2p2bS90ZW11cmluLTExLWpkay1hbWQ2NCIsUFdEOiIvaG9tZS9ydW5uZXIvd29yay9zdHNvYXV0aDJwbHVnaW4vc3Rzb2F1dGgycGx1Z2luIixSVU5ORVJfV09SS1NQQUNFOiIvaG9tZS9ydW5uZXIvd29yay9zdHNvYXV0aDJwbHVnaW4iLG5wbV9leGVjcGF0aDoiL29wdC9ob3N0ZWR0b29sY2FjaGUvbm9kZS8xOC4zLjAveDY0L2xpYi9ub2RlX21vZHVsZXMvbnBtL2Jpbi9ucG0tY2xpLmpzIixIT01FQlJFV19DTEVBTlVQX1BFUklPRElDX0ZVTExfREFZUzoiMzY1MCIsR0lUSFVCX0VWRU5UX05BTUU6InB1c2giLEhPTUVCUkVXX05PX0FVVE9fVVBEQVRFOiIxIixBTkRST0lEX0hPTUU6Ii91c3IvbG9jYWwvbGliL2FuZHJvaWQvc2RrIixHSVRIVUJfU0VSVkVSX1VSTDoiaHR0cHM6Ly9naXRodWIuY29tIixHRUNLT1dFQkRSSVZFUjoiL3Vzci9sb2NhbC9zaGFyZS9nZWNrb19kcml2ZXIiLExFSU5fSkFSOiIvdXNyL2xvY2FsL2xpYi9sZWluL3NlbGYtaW5zdGFsbHMvbGVpbmluZ2VuLTIuOS44LXN0YW5kYWxvbmUuamFyIixucG1fY29uZmlnX2dsb2JhbF9wcmVmaXg6Ii9vcHQvaG9zdGVkdG9vbGNhY2hlL25vZGUvMTguMy4wL3g2NCIsSE9NRUJSRVdfUkVQT1NJVE9SWToiL2hvbWUvbGludXhicmV3Ly5saW51eGJyZXcvSG9tZWJyZXciLG5wbV9jb21tYW5kOiJydW4tc2NyaXB0IixTR1hfQUVTTV9BRERSOiIxIixDSFJPTUVfQklOOiIvdXNyL2Jpbi9nb29nbGUtY2hyb21lIixTRUxFTklVTV9KQVJfUEFUSDoiL3Vzci9zaGFyZS9qYXZhL3NlbGVuaXVtLXNlcnZlci5qYXIiLEFORFJPSURfTkRLX0hPTUU6Ii91c3IvbG9jYWwvbGliL2FuZHJvaWQvc2RrL25kay1idW5kbGUiLEdJVEhVQl9TVEVQX1NVTU1BUlk6Ii9ob21lL3J1bm5lci93b3JrL190ZW1wL19ydW5uZXJfZmlsZV9jb21tYW5kcy9zdGVwX3N1bW1hcnlfNWM0ZjZmMTgtMTY2NS00NjM4LWI0MjAtYmNkMDJmNjY1ODEwIixJTklUX0NXRDoiL2hvbWUvcnVubmVyL3dvcmsvc3Rzb2F1dGgycGx1Z2luL3N0c29hdXRoMnBsdWdpbiIsRURJVE9SOiJ2aSIsTk9ERV9FTlY6InByb2R1Y3Rpb24ifS5BVVRIX1BPUlR9JHt7REVQTE9ZTUVOVF9CQVNFUEFUSDoiL29wdC9ydW5uZXIiLERPVE5FVF9OT0xPR086IjEiLFVTRVI6InJ1bm5lciIsbnBtX2NvbmZpZ19hbHdheXNfYXV0aDoiIixucG1fY29uZmlnX3VzZXJfYWdlbnQ6Im5wbS84LjExLjAgbm9kZS92MTguMy4wIGxpbnV4IHg2NCB3b3Jrc3BhY2VzL2ZhbHNlIGNpL2dpdGh1Yi1hY3Rpb25zIixDSToidHJ1ZSIsR0lUSFVCX0VOVjoiL2hvbWUvcnVubmVyL3dvcmsvX3RlbXAvX3J1bm5lcl9maWxlX2NvbW1hbmRzL3NldF9lbnZfNWM0ZjZmMTgtMTY2NS00NjM4LWI0MjAtYmNkMDJmNjY1ODEwIixQSVBYX0hPTUU6Ii9vcHQvcGlweCIsbnBtX25vZGVfZXhlY3BhdGg6Ii9vcHQvaG9zdGVkdG9vbGNhY2hlL25vZGUvMTguMy4wL3g2NC9iaW4vbm9kZSIsSkFWQV9IT01FXzhfWDY0OiIvdXNyL2xpYi9qdm0vdGVtdXJpbi04LWpkay1hbWQ2NCIsTk9ERV9BVVRIX1RPS0VOOiJYWFhYWC1YWFhYWC1YWFhYWC1YWFhYWCIsU0hMVkw6IjEiLG5wbV9jb25maWdfbm9wcm94eToiIixIT01FOiIvaG9tZS9ydW5uZXIiLFJVTk5FUl9URU1QOiIvaG9tZS9ydW5uZXIvd29yay9fdGVtcCIsR0lUSFVCX0VWRU5UX1BBVEg6Ii9ob21lL3J1bm5lci93b3JrL190ZW1wL19naXRodWJfd29ya2Zsb3cvZXZlbnQuanNvbiIsbnBtX3BhY2thZ2VfanNvbjoiL2hvbWUvcnVubmVyL3dvcmsvc3Rzb2F1dGgycGx1Z2luL3N0c29hdXRoMnBsdWdpbi9wYWNrYWdlLmpzb24iLEpBVkFfSE9NRV8xMV9YNjQ6Ii91c3IvbGliL2p2bS90ZW11cmluLTExLWpkay1hbWQ2NCIsUElQWF9CSU5fRElSOiIvb3B0L3BpcHhfYmluIixHUkFBTFZNXzExX1JPT1Q6Ii91c3IvbG9jYWwvZ3JhYWx2bS9ncmFhbHZtLWNlLWphdmExMS0yMi4xLjAiLEdJVEhVQl9SRVBPU0lUT1JZX09XTkVSOiJuc3NodW50IixHUkFETEVfSE9NRToiL3Vzci9zaGFyZS9ncmFkbGUtNy40LjIiLEhPTUVCUkVXX1BSRUZJWDoiL2hvbWUvbGludXhicmV3Ly5saW51eGJyZXciLEFORFJPSURfTkRLX0xBVEVTVF9IT01FOiIvdXNyL2xvY2FsL2xpYi9hbmRyb2lkL3Nkay9uZGsvMjQuMC44MjE1ODg4IixHSVRIVUJfUkVURU5USU9OX0RBWVM6IjkwIixQT1dFUlNIRUxMX0RJU1RSSUJVVElPTl9DSEFOTkVMOiJHaXRIdWItQWN0aW9ucy11YnVudHUyMCIsQVpVUkVfRVhURU5TSU9OX0RJUjoiL29wdC9hei9hemNsaWV4dGVuc2lvbnMiLEdJVEhVQl9IRUFEX1JFRjoiIixucG1fY29uZmlnX2xvY2FsX3ByZWZpeDoiL2hvbWUvcnVubmVyL3dvcmsvc3Rzb2F1dGgycGx1Z2luL3N0c29hdXRoMnBsdWdpbiIsR0lUSFVCX0dSQVBIUUxfVVJMOiJodHRwczovL2FwaS5naXRodWIuY29tL2dyYXBocWwiLENPTE9SOiIwIixOVk1fRElSOiIvaG9tZS9ydW5uZXIvLm52bSIsbnBtX2NvbmZpZ19tZXRyaWNzX3JlZ2lzdHJ5OiJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy8iLERPVE5FVF9TS0lQX0ZJUlNUX1RJTUVfRVhQRVJJRU5DRToiMSIsSkFWQV9IT01FXzE3X1g2NDoiL3Vzci9saWIvanZtL3RlbXVyaW4tMTctamRrLWFtZDY0IixJbWFnZVZlcnNpb246IjIwMjIwNjA1LjEiLFJVTk5FUl9PUzoiTGludXgiLEdJVEhVQl9BUElfVVJMOiJodHRwczovL2FwaS5naXRodWIuY29tIixTV0lGVF9QQVRIOiIvdXNyL3NoYXJlL3N3aWZ0L3Vzci9iaW4iLFJVTk5FUl9VU0VSOiJydW5uZXIiLENIUk9NRVdFQkRSSVZFUjoiL3Vzci9sb2NhbC9zaGFyZS9jaHJvbWVfZHJpdmVyIixKT1VSTkFMX1NUUkVBTToiODoyMTgzNCIsR0lUSFVCX1dPUktGTE9XOiJOb2RlLmpzIFBhY2thZ2UiLF86Ii9vcHQvaG9zdGVkdG9vbGNhY2hlL25vZGUvMTguMy4wL3g2NC9iaW4vbnBtIixucG1fY29uZmlnX3ByZWZpeDoiL29wdC9ob3N0ZWR0b29sY2FjaGUvbm9kZS8xOC4zLjAveDY0IixHSVRIVUJfUlVOX0lEOiIyNDgzNTA2MDM1IixHT1JPT1RfMV8xNl9YNjQ6Ii9vcHQvaG9zdGVkdG9vbGNhY2hlL2dvLzEuMTYuMTUveDY0IixucG1fY29uZmlnX2NhY2hlOiIvaG9tZS9ydW5uZXIvLm5wbSIsR09ST09UXzFfMTdfWDY0OiIvb3B0L2hvc3RlZHRvb2xjYWNoZS9nby8xLjE3LjExL3g2NCIsR0lUSFVCX1JFRl9UWVBFOiJicmFuY2giLEJPT1RTVFJBUF9IQVNLRUxMX05PTklOVEVSQUNUSVZFOiIxIixHSVRIVUJfQkFTRV9SRUY6IiIsSW1hZ2VPUzoidWJ1bnR1MjAiLFBFUkZMT0dfTE9DQVRJT05fU0VUVElORzoiUlVOTkVSX1BFUkZMT0ciLEdPUk9PVF8xXzE4X1g2NDoiL29wdC9ob3N0ZWR0b29sY2FjaGUvZ28vMS4xOC4zL3g2NCIsR0lUSFVCX0FDVElPTl9SRVBPU0lUT1JZOiIiLG5wbV9jb25maWdfbm9kZV9neXA6Ii9vcHQvaG9zdGVkdG9vbGNhY2hlL25vZGUvMTguMy4wL3g2NC9saWIvbm9kZV9tb2R1bGVzL25wbS9ub2RlX21vZHVsZXMvbm9kZS1neXAvYmluL25vZGUtZ3lwLmpzIixQQVRIOiIvaG9tZS9ydW5uZXIvd29yay9zdHNvYXV0aDJwbHVnaW4vc3Rzb2F1dGgycGx1Z2luL25vZGVfbW9kdWxlcy8uYmluOi9ob21lL3J1bm5lci93b3JrL3N0c29hdXRoMnBsdWdpbi9ub2RlX21vZHVsZXMvLmJpbjovaG9tZS9ydW5uZXIvd29yay9ub2RlX21vZHVsZXMvLmJpbjovaG9tZS9ydW5uZXIvbm9kZV9tb2R1bGVzLy5iaW46L2hvbWUvbm9kZV9tb2R1bGVzLy5iaW46L25vZGVfbW9kdWxlcy8uYmluOi9vcHQvaG9zdGVkdG9vbGNhY2hlL25vZGUvMTguMy4wL3g2NC9saWIvbm9kZV9tb2R1bGVzL25wbS9ub2RlX21vZHVsZXMvQG5wbWNsaS9ydW4tc2NyaXB0L2xpYi9ub2RlLWd5cC1iaW46L29wdC9ob3N0ZWR0b29sY2FjaGUvbm9kZS8xOC4zLjAveDY0L2JpbjovaG9tZS9saW51eGJyZXcvLmxpbnV4YnJldy9iaW46L2hvbWUvbGludXhicmV3Ly5saW51eGJyZXcvc2JpbjovaG9tZS9ydW5uZXIvLmxvY2FsL2Jpbjovb3B0L3BpcHhfYmluOi9ob21lL3J1bm5lci8uY2FyZ28vYmluOi9ob21lL3J1bm5lci8uY29uZmlnL2NvbXBvc2VyL3ZlbmRvci9iaW46L3Vzci9sb2NhbC8uZ2hjdXAvYmluOi9ob21lL3J1bm5lci8uZG90bmV0L3Rvb2xzOi9zbmFwL2JpbjovdXNyL2xvY2FsL3NiaW46L3Vzci9sb2NhbC9iaW46L3Vzci9zYmluOi91c3IvYmluOi9zYmluOi9iaW46L3Vzci9nYW1lczovdXNyL2xvY2FsL2dhbWVzOi9zbmFwL2JpbiIsQU5UX0hPTUU6Ii91c3Ivc2hhcmUvYW50IixET1RORVRfTVVMVElMRVZFTF9MT09LVVA6IjAiLFJVTk5FUl9UUkFDS0lOR19JRDoiZ2l0aHViXzllMGE1YzdhLTk3OGYtNGZjZS1iZTlmLTE1OTdhNDVkM2Y4ZCIsSU5WT0NBVElPTl9JRDoiODIzMTUwNDBmNmNiNGIxODkxYjg3NTUwNzVkYmU3NDkiLEhPTUVCUkVXX0NFTExBUjoiL2hvbWUvbGludXhicmV3Ly5saW51eGJyZXcvQ2VsbGFyIixOUE1fQ09ORklHX1VTRVJDT05GSUc6Ii9ob21lL3J1bm5lci93b3JrL190ZW1wLy5ucG1yYyIsUlVOTkVSX1RPT0xfQ0FDSEU6Ii9vcHQvaG9zdGVkdG9vbGNhY2hlIixOT0RFOiIvb3B0L2hvc3RlZHRvb2xjYWNoZS9ub2RlLzE4LjMuMC94NjQvYmluL25vZGUiLG5wbV9wYWNrYWdlX25hbWU6IkBuc3NodW50L3N0c29hdXRoMnBsdWdpbiIsR0lUSFVCX0FDVElPTjoiX19ydW5fMiIsR0lUSFVCX1JVTl9OVU1CRVI6IjI0IixSVU5ORVJfQVJDSDoiWDY0IixBR0VOVF9UT09MU0RJUkVDVE9SWToiL29wdC9ob3N0ZWR0b29sY2FjaGUiLExBTkc6IkMuVVRGLTgiLFZDUEtHX0lOU1RBTExBVElPTl9ST09UOiIvdXNyL2xvY2FsL3NoYXJlL3ZjcGtnIixDT05EQToiL3Vzci9zaGFyZS9taW5pY29uZGEiLFJVTk5FUl9OQU1FOiJIb3N0ZWQgQWdlbnQiLFhER19DT05GSUdfSE9NRToiL2hvbWUvcnVubmVyLy5jb25maWciLEdJVEhVQl9SRUZfTkFNRToibWFpbiIsR0lUSFVCX1JFUE9TSVRPUlk6Im5zc2h1bnQvc3Rzb2F1dGgycGx1Z2luIixucG1fbGlmZWN5Y2xlX3NjcmlwdDoidml0ZSBidWlsZCIsQU5EUk9JRF9OREtfUk9PVDoiL3Vzci9sb2NhbC9saWIvYW5kcm9pZC9zZGsvbmRrLWJ1bmRsZSIsR0lUSFVCX0FDVElPTl9SRUY6IiIsREVCSUFOX0ZST05URU5EOiJub25pbnRlcmFjdGl2ZSIsR0lUSFVCX0FDVElPTlM6InRydWUiLG5wbV9wYWNrYWdlX3ZlcnNpb246IjAuMS4xMyIsbnBtX2xpZmVjeWNsZV9ldmVudDoiYnVpbGQiLEdJVEhVQl9SRUZfUFJPVEVDVEVEOiJmYWxzZSIsR0lUSFVCX1dPUktTUEFDRToiL2hvbWUvcnVubmVyL3dvcmsvc3Rzb2F1dGgycGx1Z2luL3N0c29hdXRoMnBsdWdpbiIsQUNDRVBUX0VVTEE6IlkiLEdJVEhVQl9KT0I6InB1Ymxpc2gtbnBtIixSVU5ORVJfUEVSRkxPRzoiL2hvbWUvcnVubmVyL3BlcmZsb2ciLEdJVEhVQl9TSEE6ImY2NTk4ZDE4ODYxYzYwODRhMzAyNDNjOWQ2YTlkMDIwMGUxZjllOTYiLEdJVEhVQl9SVU5fQVRURU1QVDoiMSIsR0lUSFVCX1JFRjoicmVmcy9oZWFkcy9tYWluIixHSVRIVUJfQUNUT1I6Im5zc2h1bnQiLEFORFJPSURfU0RLX1JPT1Q6Ii91c3IvbG9jYWwvbGliL2FuZHJvaWQvc2RrIixMRUlOX0hPTUU6Ii91c3IvbG9jYWwvbGliL2xlaW4iLG5wbV9jb25maWdfZ2xvYmFsY29uZmlnOiIvb3B0L2hvc3RlZHRvb2xjYWNoZS9ub2RlLzE4LjMuMC94NjQvZXRjL25wbXJjIixucG1fY29uZmlnX2luaXRfbW9kdWxlOiIvaG9tZS9ydW5uZXIvLm5wbS1pbml0LmpzIixHSVRIVUJfUEFUSDoiL2hvbWUvcnVubmVyL3dvcmsvX3RlbXAvX3J1bm5lcl9maWxlX2NvbW1hbmRzL2FkZF9wYXRoXzVjNGY2ZjE4LTE2NjUtNDYzOC1iNDIwLWJjZDAyZjY2NTgxMCIsSkFWQV9IT01FOiIvdXNyL2xpYi9qdm0vdGVtdXJpbi0xMS1qZGstYW1kNjQiLFBXRDoiL2hvbWUvcnVubmVyL3dvcmsvc3Rzb2F1dGgycGx1Z2luL3N0c29hdXRoMnBsdWdpbiIsUlVOTkVSX1dPUktTUEFDRToiL2hvbWUvcnVubmVyL3dvcmsvc3Rzb2F1dGgycGx1Z2luIixucG1fZXhlY3BhdGg6Ii9vcHQvaG9zdGVkdG9vbGNhY2hlL25vZGUvMTguMy4wL3g2NC9saWIvbm9kZV9tb2R1bGVzL25wbS9iaW4vbnBtLWNsaS5qcyIsSE9NRUJSRVdfQ0xFQU5VUF9QRVJJT0RJQ19GVUxMX0RBWVM6IjM2NTAiLEdJVEhVQl9FVkVOVF9OQU1FOiJwdXNoIixIT01FQlJFV19OT19BVVRPX1VQREFURToiMSIsQU5EUk9JRF9IT01FOiIvdXNyL2xvY2FsL2xpYi9hbmRyb2lkL3NkayIsR0lUSFVCX1NFUlZFUl9VUkw6Imh0dHBzOi8vZ2l0aHViLmNvbSIsR0VDS09XRUJEUklWRVI6Ii91c3IvbG9jYWwvc2hhcmUvZ2Vja29fZHJpdmVyIixMRUlOX0pBUjoiL3Vzci9sb2NhbC9saWIvbGVpbi9zZWxmLWluc3RhbGxzL2xlaW5pbmdlbi0yLjkuOC1zdGFuZGFsb25lLmphciIsbnBtX2NvbmZpZ19nbG9iYWxfcHJlZml4OiIvb3B0L2hvc3RlZHRvb2xjYWNoZS9ub2RlLzE4LjMuMC94NjQiLEhPTUVCUkVXX1JFUE9TSVRPUlk6Ii9ob21lL2xpbnV4YnJldy8ubGludXhicmV3L0hvbWVicmV3IixucG1fY29tbWFuZDoicnVuLXNjcmlwdCIsU0dYX0FFU01fQUREUjoiMSIsQ0hST01FX0JJTjoiL3Vzci9iaW4vZ29vZ2xlLWNocm9tZSIsU0VMRU5JVU1fSkFSX1BBVEg6Ii91c3Ivc2hhcmUvamF2YS9zZWxlbml1bS1zZXJ2ZXIuamFyIixBTkRST0lEX05ES19IT01FOiIvdXNyL2xvY2FsL2xpYi9hbmRyb2lkL3Nkay9uZGstYnVuZGxlIixHSVRIVUJfU1RFUF9TVU1NQVJZOiIvaG9tZS9ydW5uZXIvd29yay9fdGVtcC9fcnVubmVyX2ZpbGVfY29tbWFuZHMvc3RlcF9zdW1tYXJ5XzVjNGY2ZjE4LTE2NjUtNDYzOC1iNDIwLWJjZDAyZjY2NTgxMCIsSU5JVF9DV0Q6Ii9ob21lL3J1bm5lci93b3JrL3N0c29hdXRoMnBsdWdpbi9zdHNvYXV0aDJwbHVnaW4iLEVESVRPUjoidmkiLE5PREVfRU5WOiJwcm9kdWN0aW9uIn0uQVVUSF9BUElST09UfT8ke1godGhpcyxQcikuQ3JlYXRlUXVlcnlQYXJhbXMoTyl9YDtyZXR1cm4gY29uc29sZS5sb2coRCksTy5jb2RlX3ZlcmlmaWVyPW0sY29uc29sZS5sb2coYEF1dGhvcml6ZTphdXRob3JpemVPcHRpb25zOiBbJHtKU09OLnN0cmluZ2lmeShPKX1dYCkse3VybDpELGF1dGhvcml6ZU9wdGlvbnM6T319KSx1ZSh0aGlzLENyLGFzeW5jIHI9Pntjb25zdCBvPXIucXVlcnlWYXJzLHQ9ci5hdXRob3JpemVPcHRpb25zO2lmKGNvbnNvbGUubG9nKCJIYW5kbGVSZWRpcmVjdCIpLGNvbnNvbGUubG9nKGBIYW5kbGVSZWRpcmVjdDpRdWVyeSBWYXJzOiBbJHtKU09OLnN0cmluZ2lmeShvKX1dYCksb1t3bi5PQXV0aDJQYXJhbWV0ZXJUeXBlLkNPREVdKXtjb25zdCBzPW87Y29uc29sZS5sb2coYGF1dGhvcml6ZU9wdGlvbnMgZnJvbSB0cmFuc2FjdGlvbiBzdGF0ZTogWyR7SlNPTi5zdHJpbmdpZnkodCl9XWApO2NvbnN0IGk9cy5zdGF0ZTtyZXR1cm4gdC5zdGF0ZS5sb2NhbGVDb21wYXJlKGkpPT09MD8oY29uc29sZS5sb2coInJlZGlyZWN0ZWQgc3RhdGUgKGZyb20gcXVlcnlWYXJzKSBtYXRjaGVkIHByZXZpb3VzbHkgc2F2ZWQgdHJhbnNhY3Rpb24gYXV0aG9yaXplT3B0aW9ucyBzdGF0ZSIpLGF3YWl0IFgodGhpcyx5cikuY2FsbCh0aGlzLHQscykpOihjb25zb2xlLmxvZygicmVkaXJlY3RlZCBzdGF0ZSAoZnJvbSBxdWVyeVZhcnMpIGRpZCBOT1QgbWF0Y2ggcHJldmlvdXNseSBzYXZlZCB0cmFuc2FjdGlvbiBhdXRob3JpemVPcHRpb25zIHN0YXRlIiksWCh0aGlzLHZuKS5jYWxsKHRoaXMse21lc3NhZ2U6IlN0YXRlIHVuLW1hdGNoZWQifSksITEpfWVsc2UgaWYob1t3bi5PQXV0aDJQYXJhbWV0ZXJUeXBlLkVSUk9SXSl7Y29uc3Qgcz1vO3JldHVybiBzLmVycm9yLHMuZXJyb3JfZGVzY3JpcHRpb24sWCh0aGlzLHZuKS5jYWxsKHRoaXMse21lc3NhZ2U6IlN0YXRlIHVuLW1hdGNoZWQifSksITF9ZWxzZSByZXR1cm4gWCh0aGlzLHZuKS5jYWxsKHRoaXMse21lc3NhZ2U6IlN0YXRlIHVuLW1hdGNoZWQifSksITF9KSx1ZSh0aGlzLF9yLGFzeW5jIHI9Pntjb25zb2xlLmxvZygiI0dldFRva2VuRnJvbUJyb2tlciIpLFgodGhpcyxCZSkucmVtb3ZlKFgodGhpcyxqZSkpO2NvbnN0IG89YCR7e0RFUExPWU1FTlRfQkFTRVBBVEg6Ii9vcHQvcnVubmVyIixET1RORVRfTk9MT0dPOiIxIixVU0VSOiJydW5uZXIiLG5wbV9jb25maWdfYWx3YXlzX2F1dGg6IiIsbnBtX2NvbmZpZ191c2VyX2FnZW50OiJucG0vOC4xMS4wIG5vZGUvdjE4LjMuMCBsaW51eCB4NjQgd29ya3NwYWNlcy9mYWxzZSBjaS9naXRodWItYWN0aW9ucyIsQ0k6InRydWUiLEdJVEhVQl9FTlY6Ii9ob21lL3J1bm5lci93b3JrL190ZW1wL19ydW5uZXJfZmlsZV9jb21tYW5kcy9zZXRfZW52XzVjNGY2ZjE4LTE2NjUtNDYzOC1iNDIwLWJjZDAyZjY2NTgxMCIsUElQWF9IT01FOiIvb3B0L3BpcHgiLG5wbV9ub2RlX2V4ZWNwYXRoOiIvb3B0L2hvc3RlZHRvb2xjYWNoZS9ub2RlLzE4LjMuMC94NjQvYmluL25vZGUiLEpBVkFfSE9NRV84X1g2NDoiL3Vzci9saWIvanZtL3RlbXVyaW4tOC1qZGstYW1kNjQiLE5PREVfQVVUSF9UT0tFTjoiWFhYWFgtWFhYWFgtWFhYWFgtWFhYWFgiLFNITFZMOiIxIixucG1fY29uZmlnX25vcHJveHk6IiIsSE9NRToiL2hvbWUvcnVubmVyIixSVU5ORVJfVEVNUDoiL2hvbWUvcnVubmVyL3dvcmsvX3RlbXAiLEdJVEhVQl9FVkVOVF9QQVRIOiIvaG9tZS9ydW5uZXIvd29yay9fdGVtcC9fZ2l0aHViX3dvcmtmbG93L2V2ZW50Lmpzb24iLG5wbV9wYWNrYWdlX2pzb246Ii9ob21lL3J1bm5lci93b3JrL3N0c29hdXRoMnBsdWdpbi9zdHNvYXV0aDJwbHVnaW4vcGFja2FnZS5qc29uIixKQVZBX0hPTUVfMTFfWDY0OiIvdXNyL2xpYi9qdm0vdGVtdXJpbi0xMS1qZGstYW1kNjQiLFBJUFhfQklOX0RJUjoiL29wdC9waXB4X2JpbiIsR1JBQUxWTV8xMV9ST09UOiIvdXNyL2xvY2FsL2dyYWFsdm0vZ3JhYWx2bS1jZS1qYXZhMTEtMjIuMS4wIixHSVRIVUJfUkVQT1NJVE9SWV9PV05FUjoibnNzaHVudCIsR1JBRExFX0hPTUU6Ii91c3Ivc2hhcmUvZ3JhZGxlLTcuNC4yIixIT01FQlJFV19QUkVGSVg6Ii9ob21lL2xpbnV4YnJldy8ubGludXhicmV3IixBTkRST0lEX05ES19MQVRFU1RfSE9NRToiL3Vzci9sb2NhbC9saWIvYW5kcm9pZC9zZGsvbmRrLzI0LjAuODIxNTg4OCIsR0lUSFVCX1JFVEVOVElPTl9EQVlTOiI5MCIsUE9XRVJTSEVMTF9ESVNUUklCVVRJT05fQ0hBTk5FTDoiR2l0SHViLUFjdGlvbnMtdWJ1bnR1MjAiLEFaVVJFX0VYVEVOU0lPTl9ESVI6Ii9vcHQvYXovYXpjbGlleHRlbnNpb25zIixHSVRIVUJfSEVBRF9SRUY6IiIsbnBtX2NvbmZpZ19sb2NhbF9wcmVmaXg6Ii9ob21lL3J1bm5lci93b3JrL3N0c29hdXRoMnBsdWdpbi9zdHNvYXV0aDJwbHVnaW4iLEdJVEhVQl9HUkFQSFFMX1VSTDoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9ncmFwaHFsIixDT0xPUjoiMCIsTlZNX0RJUjoiL2hvbWUvcnVubmVyLy5udm0iLG5wbV9jb25maWdfbWV0cmljc19yZWdpc3RyeToiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvIixET1RORVRfU0tJUF9GSVJTVF9USU1FX0VYUEVSSUVOQ0U6IjEiLEpBVkFfSE9NRV8xN19YNjQ6Ii91c3IvbGliL2p2bS90ZW11cmluLTE3LWpkay1hbWQ2NCIsSW1hZ2VWZXJzaW9uOiIyMDIyMDYwNS4xIixSVU5ORVJfT1M6IkxpbnV4IixHSVRIVUJfQVBJX1VSTDoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbSIsU1dJRlRfUEFUSDoiL3Vzci9zaGFyZS9zd2lmdC91c3IvYmluIixSVU5ORVJfVVNFUjoicnVubmVyIixDSFJPTUVXRUJEUklWRVI6Ii91c3IvbG9jYWwvc2hhcmUvY2hyb21lX2RyaXZlciIsSk9VUk5BTF9TVFJFQU06Ijg6MjE4MzQiLEdJVEhVQl9XT1JLRkxPVzoiTm9kZS5qcyBQYWNrYWdlIixfOiIvb3B0L2hvc3RlZHRvb2xjYWNoZS9ub2RlLzE4LjMuMC94NjQvYmluL25wbSIsbnBtX2NvbmZpZ19wcmVmaXg6Ii9vcHQvaG9zdGVkdG9vbGNhY2hlL25vZGUvMTguMy4wL3g2NCIsR0lUSFVCX1JVTl9JRDoiMjQ4MzUwNjAzNSIsR09ST09UXzFfMTZfWDY0OiIvb3B0L2hvc3RlZHRvb2xjYWNoZS9nby8xLjE2LjE1L3g2NCIsbnBtX2NvbmZpZ19jYWNoZToiL2hvbWUvcnVubmVyLy5ucG0iLEdPUk9PVF8xXzE3X1g2NDoiL29wdC9ob3N0ZWR0b29sY2FjaGUvZ28vMS4xNy4xMS94NjQiLEdJVEhVQl9SRUZfVFlQRToiYnJhbmNoIixCT09UU1RSQVBfSEFTS0VMTF9OT05JTlRFUkFDVElWRToiMSIsR0lUSFVCX0JBU0VfUkVGOiIiLEltYWdlT1M6InVidW50dTIwIixQRVJGTE9HX0xPQ0FUSU9OX1NFVFRJTkc6IlJVTk5FUl9QRVJGTE9HIixHT1JPT1RfMV8xOF9YNjQ6Ii9vcHQvaG9zdGVkdG9vbGNhY2hlL2dvLzEuMTguMy94NjQiLEdJVEhVQl9BQ1RJT05fUkVQT1NJVE9SWToiIixucG1fY29uZmlnX25vZGVfZ3lwOiIvb3B0L2hvc3RlZHRvb2xjYWNoZS9ub2RlLzE4LjMuMC94NjQvbGliL25vZGVfbW9kdWxlcy9ucG0vbm9kZV9tb2R1bGVzL25vZGUtZ3lwL2Jpbi9ub2RlLWd5cC5qcyIsUEFUSDoiL2hvbWUvcnVubmVyL3dvcmsvc3Rzb2F1dGgycGx1Z2luL3N0c29hdXRoMnBsdWdpbi9ub2RlX21vZHVsZXMvLmJpbjovaG9tZS9ydW5uZXIvd29yay9zdHNvYXV0aDJwbHVnaW4vbm9kZV9tb2R1bGVzLy5iaW46L2hvbWUvcnVubmVyL3dvcmsvbm9kZV9tb2R1bGVzLy5iaW46L2hvbWUvcnVubmVyL25vZGVfbW9kdWxlcy8uYmluOi9ob21lL25vZGVfbW9kdWxlcy8uYmluOi9ub2RlX21vZHVsZXMvLmJpbjovb3B0L2hvc3RlZHRvb2xjYWNoZS9ub2RlLzE4LjMuMC94NjQvbGliL25vZGVfbW9kdWxlcy9ucG0vbm9kZV9tb2R1bGVzL0BucG1jbGkvcnVuLXNjcmlwdC9saWIvbm9kZS1neXAtYmluOi9vcHQvaG9zdGVkdG9vbGNhY2hlL25vZGUvMTguMy4wL3g2NC9iaW46L2hvbWUvbGludXhicmV3Ly5saW51eGJyZXcvYmluOi9ob21lL2xpbnV4YnJldy8ubGludXhicmV3L3NiaW46L2hvbWUvcnVubmVyLy5sb2NhbC9iaW46L29wdC9waXB4X2JpbjovaG9tZS9ydW5uZXIvLmNhcmdvL2JpbjovaG9tZS9ydW5uZXIvLmNvbmZpZy9jb21wb3Nlci92ZW5kb3IvYmluOi91c3IvbG9jYWwvLmdoY3VwL2JpbjovaG9tZS9ydW5uZXIvLmRvdG5ldC90b29sczovc25hcC9iaW46L3Vzci9sb2NhbC9zYmluOi91c3IvbG9jYWwvYmluOi91c3Ivc2JpbjovdXNyL2Jpbjovc2JpbjovYmluOi91c3IvZ2FtZXM6L3Vzci9sb2NhbC9nYW1lczovc25hcC9iaW4iLEFOVF9IT01FOiIvdXNyL3NoYXJlL2FudCIsRE9UTkVUX01VTFRJTEVWRUxfTE9PS1VQOiIwIixSVU5ORVJfVFJBQ0tJTkdfSUQ6ImdpdGh1Yl85ZTBhNWM3YS05NzhmLTRmY2UtYmU5Zi0xNTk3YTQ1ZDNmOGQiLElOVk9DQVRJT05fSUQ6IjgyMzE1MDQwZjZjYjRiMTg5MWI4NzU1MDc1ZGJlNzQ5IixIT01FQlJFV19DRUxMQVI6Ii9ob21lL2xpbnV4YnJldy8ubGludXhicmV3L0NlbGxhciIsTlBNX0NPTkZJR19VU0VSQ09ORklHOiIvaG9tZS9ydW5uZXIvd29yay9fdGVtcC8ubnBtcmMiLFJVTk5FUl9UT09MX0NBQ0hFOiIvb3B0L2hvc3RlZHRvb2xjYWNoZSIsTk9ERToiL29wdC9ob3N0ZWR0b29sY2FjaGUvbm9kZS8xOC4zLjAveDY0L2Jpbi9ub2RlIixucG1fcGFja2FnZV9uYW1lOiJAbnNzaHVudC9zdHNvYXV0aDJwbHVnaW4iLEdJVEhVQl9BQ1RJT046Il9fcnVuXzIiLEdJVEhVQl9SVU5fTlVNQkVSOiIyNCIsUlVOTkVSX0FSQ0g6Ilg2NCIsQUdFTlRfVE9PTFNESVJFQ1RPUlk6Ii9vcHQvaG9zdGVkdG9vbGNhY2hlIixMQU5HOiJDLlVURi04IixWQ1BLR19JTlNUQUxMQVRJT05fUk9PVDoiL3Vzci9sb2NhbC9zaGFyZS92Y3BrZyIsQ09OREE6Ii91c3Ivc2hhcmUvbWluaWNvbmRhIixSVU5ORVJfTkFNRToiSG9zdGVkIEFnZW50IixYREdfQ09ORklHX0hPTUU6Ii9ob21lL3J1bm5lci8uY29uZmlnIixHSVRIVUJfUkVGX05BTUU6Im1haW4iLEdJVEhVQl9SRVBPU0lUT1JZOiJuc3NodW50L3N0c29hdXRoMnBsdWdpbiIsbnBtX2xpZmVjeWNsZV9zY3JpcHQ6InZpdGUgYnVpbGQiLEFORFJPSURfTkRLX1JPT1Q6Ii91c3IvbG9jYWwvbGliL2FuZHJvaWQvc2RrL25kay1idW5kbGUiLEdJVEhVQl9BQ1RJT05fUkVGOiIiLERFQklBTl9GUk9OVEVORDoibm9uaW50ZXJhY3RpdmUiLEdJVEhVQl9BQ1RJT05TOiJ0cnVlIixucG1fcGFja2FnZV92ZXJzaW9uOiIwLjEuMTMiLG5wbV9saWZlY3ljbGVfZXZlbnQ6ImJ1aWxkIixHSVRIVUJfUkVGX1BST1RFQ1RFRDoiZmFsc2UiLEdJVEhVQl9XT1JLU1BBQ0U6Ii9ob21lL3J1bm5lci93b3JrL3N0c29hdXRoMnBsdWdpbi9zdHNvYXV0aDJwbHVnaW4iLEFDQ0VQVF9FVUxBOiJZIixHSVRIVUJfSk9COiJwdWJsaXNoLW5wbSIsUlVOTkVSX1BFUkZMT0c6Ii9ob21lL3J1bm5lci9wZXJmbG9nIixHSVRIVUJfU0hBOiJmNjU5OGQxODg2MWM2MDg0YTMwMjQzYzlkNmE5ZDAyMDBlMWY5ZTk2IixHSVRIVUJfUlVOX0FUVEVNUFQ6IjEiLEdJVEhVQl9SRUY6InJlZnMvaGVhZHMvbWFpbiIsR0lUSFVCX0FDVE9SOiJuc3NodW50IixBTkRST0lEX1NES19ST09UOiIvdXNyL2xvY2FsL2xpYi9hbmRyb2lkL3NkayIsTEVJTl9IT01FOiIvdXNyL2xvY2FsL2xpYi9sZWluIixucG1fY29uZmlnX2dsb2JhbGNvbmZpZzoiL29wdC9ob3N0ZWR0b29sY2FjaGUvbm9kZS8xOC4zLjAveDY0L2V0Yy9ucG1yYyIsbnBtX2NvbmZpZ19pbml0X21vZHVsZToiL2hvbWUvcnVubmVyLy5ucG0taW5pdC5qcyIsR0lUSFVCX1BBVEg6Ii9ob21lL3J1bm5lci93b3JrL190ZW1wL19ydW5uZXJfZmlsZV9jb21tYW5kcy9hZGRfcGF0aF81YzRmNmYxOC0xNjY1LTQ2MzgtYjQyMC1iY2QwMmY2NjU4MTAiLEpBVkFfSE9NRToiL3Vzci9saWIvanZtL3RlbXVyaW4tMTEtamRrLWFtZDY0IixQV0Q6Ii9ob21lL3J1bm5lci93b3JrL3N0c29hdXRoMnBsdWdpbi9zdHNvYXV0aDJwbHVnaW4iLFJVTk5FUl9XT1JLU1BBQ0U6Ii9ob21lL3J1bm5lci93b3JrL3N0c29hdXRoMnBsdWdpbiIsbnBtX2V4ZWNwYXRoOiIvb3B0L2hvc3RlZHRvb2xjYWNoZS9ub2RlLzE4LjMuMC94NjQvbGliL25vZGVfbW9kdWxlcy9ucG0vYmluL25wbS1jbGkuanMiLEhPTUVCUkVXX0NMRUFOVVBfUEVSSU9ESUNfRlVMTF9EQVlTOiIzNjUwIixHSVRIVUJfRVZFTlRfTkFNRToicHVzaCIsSE9NRUJSRVdfTk9fQVVUT19VUERBVEU6IjEiLEFORFJPSURfSE9NRToiL3Vzci9sb2NhbC9saWIvYW5kcm9pZC9zZGsiLEdJVEhVQl9TRVJWRVJfVVJMOiJodHRwczovL2dpdGh1Yi5jb20iLEdFQ0tPV0VCRFJJVkVSOiIvdXNyL2xvY2FsL3NoYXJlL2dlY2tvX2RyaXZlciIsTEVJTl9KQVI6Ii91c3IvbG9jYWwvbGliL2xlaW4vc2VsZi1pbnN0YWxscy9sZWluaW5nZW4tMi45Ljgtc3RhbmRhbG9uZS5qYXIiLG5wbV9jb25maWdfZ2xvYmFsX3ByZWZpeDoiL29wdC9ob3N0ZWR0b29sY2FjaGUvbm9kZS8xOC4zLjAveDY0IixIT01FQlJFV19SRVBPU0lUT1JZOiIvaG9tZS9saW51eGJyZXcvLmxpbnV4YnJldy9Ib21lYnJldyIsbnBtX2NvbW1hbmQ6InJ1bi1zY3JpcHQiLFNHWF9BRVNNX0FERFI6IjEiLENIUk9NRV9CSU46Ii91c3IvYmluL2dvb2dsZS1jaHJvbWUiLFNFTEVOSVVNX0pBUl9QQVRIOiIvdXNyL3NoYXJlL2phdmEvc2VsZW5pdW0tc2VydmVyLmphciIsQU5EUk9JRF9OREtfSE9NRToiL3Vzci9sb2NhbC9saWIvYW5kcm9pZC9zZGsvbmRrLWJ1bmRsZSIsR0lUSFVCX1NURVBfU1VNTUFSWToiL2hvbWUvcnVubmVyL3dvcmsvX3RlbXAvX3J1bm5lcl9maWxlX2NvbW1hbmRzL3N0ZXBfc3VtbWFyeV81YzRmNmYxOC0xNjY1LTQ2MzgtYjQyMC1iY2QwMmY2NjU4MTAiLElOSVRfQ1dEOiIvaG9tZS9ydW5uZXIvd29yay9zdHNvYXV0aDJwbHVnaW4vc3Rzb2F1dGgycGx1Z2luIixFRElUT1I6InZpIixOT0RFX0VOVjoicHJvZHVjdGlvbiJ9LkJST0tFUl9FTkRQT0lOVH06JHt7REVQTE9ZTUVOVF9CQVNFUEFUSDoiL29wdC9ydW5uZXIiLERPVE5FVF9OT0xPR086IjEiLFVTRVI6InJ1bm5lciIsbnBtX2NvbmZpZ19hbHdheXNfYXV0aDoiIixucG1fY29uZmlnX3VzZXJfYWdlbnQ6Im5wbS84LjExLjAgbm9kZS92MTguMy4wIGxpbnV4IHg2NCB3b3Jrc3BhY2VzL2ZhbHNlIGNpL2dpdGh1Yi1hY3Rpb25zIixDSToidHJ1ZSIsR0lUSFVCX0VOVjoiL2hvbWUvcnVubmVyL3dvcmsvX3RlbXAvX3J1bm5lcl9maWxlX2NvbW1hbmRzL3NldF9lbnZfNWM0ZjZmMTgtMTY2NS00NjM4LWI0MjAtYmNkMDJmNjY1ODEwIixQSVBYX0hPTUU6Ii9vcHQvcGlweCIsbnBtX25vZGVfZXhlY3BhdGg6Ii9vcHQvaG9zdGVkdG9vbGNhY2hlL25vZGUvMTguMy4wL3g2NC9iaW4vbm9kZSIsSkFWQV9IT01FXzhfWDY0OiIvdXNyL2xpYi9qdm0vdGVtdXJpbi04LWpkay1hbWQ2NCIsTk9ERV9BVVRIX1RPS0VOOiJYWFhYWC1YWFhYWC1YWFhYWC1YWFhYWCIsU0hMVkw6IjEiLG5wbV9jb25maWdfbm9wcm94eToiIixIT01FOiIvaG9tZS9ydW5uZXIiLFJVTk5FUl9URU1QOiIvaG9tZS9ydW5uZXIvd29yay9fdGVtcCIsR0lUSFVCX0VWRU5UX1BBVEg6Ii9ob21lL3J1bm5lci93b3JrL190ZW1wL19naXRodWJfd29ya2Zsb3cvZXZlbnQuanNvbiIsbnBtX3BhY2thZ2VfanNvbjoiL2hvbWUvcnVubmVyL3dvcmsvc3Rzb2F1dGgycGx1Z2luL3N0c29hdXRoMnBsdWdpbi9wYWNrYWdlLmpzb24iLEpBVkFfSE9NRV8xMV9YNjQ6Ii91c3IvbGliL2p2bS90ZW11cmluLTExLWpkay1hbWQ2NCIsUElQWF9CSU5fRElSOiIvb3B0L3BpcHhfYmluIixHUkFBTFZNXzExX1JPT1Q6Ii91c3IvbG9jYWwvZ3JhYWx2bS9ncmFhbHZtLWNlLWphdmExMS0yMi4xLjAiLEdJVEhVQl9SRVBPU0lUT1JZX09XTkVSOiJuc3NodW50IixHUkFETEVfSE9NRToiL3Vzci9zaGFyZS9ncmFkbGUtNy40LjIiLEhPTUVCUkVXX1BSRUZJWDoiL2hvbWUvbGludXhicmV3Ly5saW51eGJyZXciLEFORFJPSURfTkRLX0xBVEVTVF9IT01FOiIvdXNyL2xvY2FsL2xpYi9hbmRyb2lkL3Nkay9uZGsvMjQuMC44MjE1ODg4IixHSVRIVUJfUkVURU5USU9OX0RBWVM6IjkwIixQT1dFUlNIRUxMX0RJU1RSSUJVVElPTl9DSEFOTkVMOiJHaXRIdWItQWN0aW9ucy11YnVudHUyMCIsQVpVUkVfRVhURU5TSU9OX0RJUjoiL29wdC9hei9hemNsaWV4dGVuc2lvbnMiLEdJVEhVQl9IRUFEX1JFRjoiIixucG1fY29uZmlnX2xvY2FsX3ByZWZpeDoiL2hvbWUvcnVubmVyL3dvcmsvc3Rzb2F1dGgycGx1Z2luL3N0c29hdXRoMnBsdWdpbiIsR0lUSFVCX0dSQVBIUUxfVVJMOiJodHRwczovL2FwaS5naXRodWIuY29tL2dyYXBocWwiLENPTE9SOiIwIixOVk1fRElSOiIvaG9tZS9ydW5uZXIvLm52bSIsbnBtX2NvbmZpZ19tZXRyaWNzX3JlZ2lzdHJ5OiJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy8iLERPVE5FVF9TS0lQX0ZJUlNUX1RJTUVfRVhQRVJJRU5DRToiMSIsSkFWQV9IT01FXzE3X1g2NDoiL3Vzci9saWIvanZtL3RlbXVyaW4tMTctamRrLWFtZDY0IixJbWFnZVZlcnNpb246IjIwMjIwNjA1LjEiLFJVTk5FUl9PUzoiTGludXgiLEdJVEhVQl9BUElfVVJMOiJodHRwczovL2FwaS5naXRodWIuY29tIixTV0lGVF9QQVRIOiIvdXNyL3NoYXJlL3N3aWZ0L3Vzci9iaW4iLFJVTk5FUl9VU0VSOiJydW5uZXIiLENIUk9NRVdFQkRSSVZFUjoiL3Vzci9sb2NhbC9zaGFyZS9jaHJvbWVfZHJpdmVyIixKT1VSTkFMX1NUUkVBTToiODoyMTgzNCIsR0lUSFVCX1dPUktGTE9XOiJOb2RlLmpzIFBhY2thZ2UiLF86Ii9vcHQvaG9zdGVkdG9vbGNhY2hlL25vZGUvMTguMy4wL3g2NC9iaW4vbnBtIixucG1fY29uZmlnX3ByZWZpeDoiL29wdC9ob3N0ZWR0b29sY2FjaGUvbm9kZS8xOC4zLjAveDY0IixHSVRIVUJfUlVOX0lEOiIyNDgzNTA2MDM1IixHT1JPT1RfMV8xNl9YNjQ6Ii9vcHQvaG9zdGVkdG9vbGNhY2hlL2dvLzEuMTYuMTUveDY0IixucG1fY29uZmlnX2NhY2hlOiIvaG9tZS9ydW5uZXIvLm5wbSIsR09ST09UXzFfMTdfWDY0OiIvb3B0L2hvc3RlZHRvb2xjYWNoZS9nby8xLjE3LjExL3g2NCIsR0lUSFVCX1JFRl9UWVBFOiJicmFuY2giLEJPT1RTVFJBUF9IQVNLRUxMX05PTklOVEVSQUNUSVZFOiIxIixHSVRIVUJfQkFTRV9SRUY6IiIsSW1hZ2VPUzoidWJ1bnR1MjAiLFBFUkZMT0dfTE9DQVRJT05fU0VUVElORzoiUlVOTkVSX1BFUkZMT0ciLEdPUk9PVF8xXzE4X1g2NDoiL29wdC9ob3N0ZWR0b29sY2FjaGUvZ28vMS4xOC4zL3g2NCIsR0lUSFVCX0FDVElPTl9SRVBPU0lUT1JZOiIiLG5wbV9jb25maWdfbm9kZV9neXA6Ii9vcHQvaG9zdGVkdG9vbGNhY2hlL25vZGUvMTguMy4wL3g2NC9saWIvbm9kZV9tb2R1bGVzL25wbS9ub2RlX21vZHVsZXMvbm9kZS1neXAvYmluL25vZGUtZ3lwLmpzIixQQVRIOiIvaG9tZS9ydW5uZXIvd29yay9zdHNvYXV0aDJwbHVnaW4vc3Rzb2F1dGgycGx1Z2luL25vZGVfbW9kdWxlcy8uYmluOi9ob21lL3J1bm5lci93b3JrL3N0c29hdXRoMnBsdWdpbi9ub2RlX21vZHVsZXMvLmJpbjovaG9tZS9ydW5uZXIvd29yay9ub2RlX21vZHVsZXMvLmJpbjovaG9tZS9ydW5uZXIvbm9kZV9tb2R1bGVzLy5iaW46L2hvbWUvbm9kZV9tb2R1bGVzLy5iaW46L25vZGVfbW9kdWxlcy8uYmluOi9vcHQvaG9zdGVkdG9vbGNhY2hlL25vZGUvMTguMy4wL3g2NC9saWIvbm9kZV9tb2R1bGVzL25wbS9ub2RlX21vZHVsZXMvQG5wbWNsaS9ydW4tc2NyaXB0L2xpYi9ub2RlLWd5cC1iaW46L29wdC9ob3N0ZWR0b29sY2FjaGUvbm9kZS8xOC4zLjAveDY0L2JpbjovaG9tZS9saW51eGJyZXcvLmxpbnV4YnJldy9iaW46L2hvbWUvbGludXhicmV3Ly5saW51eGJyZXcvc2JpbjovaG9tZS9ydW5uZXIvLmxvY2FsL2Jpbjovb3B0L3BpcHhfYmluOi9ob21lL3J1bm5lci8uY2FyZ28vYmluOi9ob21lL3J1bm5lci8uY29uZmlnL2NvbXBvc2VyL3ZlbmRvci9iaW46L3Vzci9sb2NhbC8uZ2hjdXAvYmluOi9ob21lL3J1bm5lci8uZG90bmV0L3Rvb2xzOi9zbmFwL2JpbjovdXNyL2xvY2FsL3NiaW46L3Vzci9sb2NhbC9iaW46L3Vzci9zYmluOi91c3IvYmluOi9zYmluOi9iaW46L3Vzci9nYW1lczovdXNyL2xvY2FsL2dhbWVzOi9zbmFwL2JpbiIsQU5UX0hPTUU6Ii91c3Ivc2hhcmUvYW50IixET1RORVRfTVVMVElMRVZFTF9MT09LVVA6IjAiLFJVTk5FUl9UUkFDS0lOR19JRDoiZ2l0aHViXzllMGE1YzdhLTk3OGYtNGZjZS1iZTlmLTE1OTdhNDVkM2Y4ZCIsSU5WT0NBVElPTl9JRDoiODIzMTUwNDBmNmNiNGIxODkxYjg3NTUwNzVkYmU3NDkiLEhPTUVCUkVXX0NFTExBUjoiL2hvbWUvbGludXhicmV3Ly5saW51eGJyZXcvQ2VsbGFyIixOUE1fQ09ORklHX1VTRVJDT05GSUc6Ii9ob21lL3J1bm5lci93b3JrL190ZW1wLy5ucG1yYyIsUlVOTkVSX1RPT0xfQ0FDSEU6Ii9vcHQvaG9zdGVkdG9vbGNhY2hlIixOT0RFOiIvb3B0L2hvc3RlZHRvb2xjYWNoZS9ub2RlLzE4LjMuMC94NjQvYmluL25vZGUiLG5wbV9wYWNrYWdlX25hbWU6IkBuc3NodW50L3N0c29hdXRoMnBsdWdpbiIsR0lUSFVCX0FDVElPTjoiX19ydW5fMiIsR0lUSFVCX1JVTl9OVU1CRVI6IjI0IixSVU5ORVJfQVJDSDoiWDY0IixBR0VOVF9UT09MU0RJUkVDVE9SWToiL29wdC9ob3N0ZWR0b29sY2FjaGUiLExBTkc6IkMuVVRGLTgiLFZDUEtHX0lOU1RBTExBVElPTl9ST09UOiIvdXNyL2xvY2FsL3NoYXJlL3ZjcGtnIixDT05EQToiL3Vzci9zaGFyZS9taW5pY29uZGEiLFJVTk5FUl9OQU1FOiJIb3N0ZWQgQWdlbnQiLFhER19DT05GSUdfSE9NRToiL2hvbWUvcnVubmVyLy5jb25maWciLEdJVEhVQl9SRUZfTkFNRToibWFpbiIsR0lUSFVCX1JFUE9TSVRPUlk6Im5zc2h1bnQvc3Rzb2F1dGgycGx1Z2luIixucG1fbGlmZWN5Y2xlX3NjcmlwdDoidml0ZSBidWlsZCIsQU5EUk9JRF9OREtfUk9PVDoiL3Vzci9sb2NhbC9saWIvYW5kcm9pZC9zZGsvbmRrLWJ1bmRsZSIsR0lUSFVCX0FDVElPTl9SRUY6IiIsREVCSUFOX0ZST05URU5EOiJub25pbnRlcmFjdGl2ZSIsR0lUSFVCX0FDVElPTlM6InRydWUiLG5wbV9wYWNrYWdlX3ZlcnNpb246IjAuMS4xMyIsbnBtX2xpZmVjeWNsZV9ldmVudDoiYnVpbGQiLEdJVEhVQl9SRUZfUFJPVEVDVEVEOiJmYWxzZSIsR0lUSFVCX1dPUktTUEFDRToiL2hvbWUvcnVubmVyL3dvcmsvc3Rzb2F1dGgycGx1Z2luL3N0c29hdXRoMnBsdWdpbiIsQUNDRVBUX0VVTEE6IlkiLEdJVEhVQl9KT0I6InB1Ymxpc2gtbnBtIixSVU5ORVJfUEVSRkxPRzoiL2hvbWUvcnVubmVyL3BlcmZsb2ciLEdJVEhVQl9TSEE6ImY2NTk4ZDE4ODYxYzYwODRhMzAyNDNjOWQ2YTlkMDIwMGUxZjllOTYiLEdJVEhVQl9SVU5fQVRURU1QVDoiMSIsR0lUSFVCX1JFRjoicmVmcy9oZWFkcy9tYWluIixHSVRIVUJfQUNUT1I6Im5zc2h1bnQiLEFORFJPSURfU0RLX1JPT1Q6Ii91c3IvbG9jYWwvbGliL2FuZHJvaWQvc2RrIixMRUlOX0hPTUU6Ii91c3IvbG9jYWwvbGliL2xlaW4iLG5wbV9jb25maWdfZ2xvYmFsY29uZmlnOiIvb3B0L2hvc3RlZHRvb2xjYWNoZS9ub2RlLzE4LjMuMC94NjQvZXRjL25wbXJjIixucG1fY29uZmlnX2luaXRfbW9kdWxlOiIvaG9tZS9ydW5uZXIvLm5wbS1pbml0LmpzIixHSVRIVUJfUEFUSDoiL2hvbWUvcnVubmVyL3dvcmsvX3RlbXAvX3J1bm5lcl9maWxlX2NvbW1hbmRzL2FkZF9wYXRoXzVjNGY2ZjE4LTE2NjUtNDYzOC1iNDIwLWJjZDAyZjY2NTgxMCIsSkFWQV9IT01FOiIvdXNyL2xpYi9qdm0vdGVtdXJpbi0xMS1qZGstYW1kNjQiLFBXRDoiL2hvbWUvcnVubmVyL3dvcmsvc3Rzb2F1dGgycGx1Z2luL3N0c29hdXRoMnBsdWdpbiIsUlVOTkVSX1dPUktTUEFDRToiL2hvbWUvcnVubmVyL3dvcmsvc3Rzb2F1dGgycGx1Z2luIixucG1fZXhlY3BhdGg6Ii9vcHQvaG9zdGVkdG9vbGNhY2hlL25vZGUvMTguMy4wL3g2NC9saWIvbm9kZV9tb2R1bGVzL25wbS9iaW4vbnBtLWNsaS5qcyIsSE9NRUJSRVdfQ0xFQU5VUF9QRVJJT0RJQ19GVUxMX0RBWVM6IjM2NTAiLEdJVEhVQl9FVkVOVF9OQU1FOiJwdXNoIixIT01FQlJFV19OT19BVVRPX1VQREFURToiMSIsQU5EUk9JRF9IT01FOiIvdXNyL2xvY2FsL2xpYi9hbmRyb2lkL3NkayIsR0lUSFVCX1NFUlZFUl9VUkw6Imh0dHBzOi8vZ2l0aHViLmNvbSIsR0VDS09XRUJEUklWRVI6Ii91c3IvbG9jYWwvc2hhcmUvZ2Vja29fZHJpdmVyIixMRUlOX0pBUjoiL3Vzci9sb2NhbC9saWIvbGVpbi9zZWxmLWluc3RhbGxzL2xlaW5pbmdlbi0yLjkuOC1zdGFuZGFsb25lLmphciIsbnBtX2NvbmZpZ19nbG9iYWxfcHJlZml4OiIvb3B0L2hvc3RlZHRvb2xjYWNoZS9ub2RlLzE4LjMuMC94NjQiLEhPTUVCUkVXX1JFUE9TSVRPUlk6Ii9ob21lL2xpbnV4YnJldy8ubGludXhicmV3L0hvbWVicmV3IixucG1fY29tbWFuZDoicnVuLXNjcmlwdCIsU0dYX0FFU01fQUREUjoiMSIsQ0hST01FX0JJTjoiL3Vzci9iaW4vZ29vZ2xlLWNocm9tZSIsU0VMRU5JVU1fSkFSX1BBVEg6Ii91c3Ivc2hhcmUvamF2YS9zZWxlbml1bS1zZXJ2ZXIuamFyIixBTkRST0lEX05ES19IT01FOiIvdXNyL2xvY2FsL2xpYi9hbmRyb2lkL3Nkay9uZGstYnVuZGxlIixHSVRIVUJfU1RFUF9TVU1NQVJZOiIvaG9tZS9ydW5uZXIvd29yay9fdGVtcC9fcnVubmVyX2ZpbGVfY29tbWFuZHMvc3RlcF9zdW1tYXJ5XzVjNGY2ZjE4LTE2NjUtNDYzOC1iNDIwLWJjZDAyZjY2NTgxMCIsSU5JVF9DV0Q6Ii9ob21lL3J1bm5lci93b3JrL3N0c29hdXRoMnBsdWdpbi9zdHNvYXV0aDJwbHVnaW4iLEVESVRPUjoidmkiLE5PREVfRU5WOiJwcm9kdWN0aW9uIn0uQlJPS0VSX1BPUlR9JHt7REVQTE9ZTUVOVF9CQVNFUEFUSDoiL29wdC9ydW5uZXIiLERPVE5FVF9OT0xPR086IjEiLFVTRVI6InJ1bm5lciIsbnBtX2NvbmZpZ19hbHdheXNfYXV0aDoiIixucG1fY29uZmlnX3VzZXJfYWdlbnQ6Im5wbS84LjExLjAgbm9kZS92MTguMy4wIGxpbnV4IHg2NCB3b3Jrc3BhY2VzL2ZhbHNlIGNpL2dpdGh1Yi1hY3Rpb25zIixDSToidHJ1ZSIsR0lUSFVCX0VOVjoiL2hvbWUvcnVubmVyL3dvcmsvX3RlbXAvX3J1bm5lcl9maWxlX2NvbW1hbmRzL3NldF9lbnZfNWM0ZjZmMTgtMTY2NS00NjM4LWI0MjAtYmNkMDJmNjY1ODEwIixQSVBYX0hPTUU6Ii9vcHQvcGlweCIsbnBtX25vZGVfZXhlY3BhdGg6Ii9vcHQvaG9zdGVkdG9vbGNhY2hlL25vZGUvMTguMy4wL3g2NC9iaW4vbm9kZSIsSkFWQV9IT01FXzhfWDY0OiIvdXNyL2xpYi9qdm0vdGVtdXJpbi04LWpkay1hbWQ2NCIsTk9ERV9BVVRIX1RPS0VOOiJYWFhYWC1YWFhYWC1YWFhYWC1YWFhYWCIsU0hMVkw6IjEiLG5wbV9jb25maWdfbm9wcm94eToiIixIT01FOiIvaG9tZS9ydW5uZXIiLFJVTk5FUl9URU1QOiIvaG9tZS9ydW5uZXIvd29yay9fdGVtcCIsR0lUSFVCX0VWRU5UX1BBVEg6Ii9ob21lL3J1bm5lci93b3JrL190ZW1wL19naXRodWJfd29ya2Zsb3cvZXZlbnQuanNvbiIsbnBtX3BhY2thZ2VfanNvbjoiL2hvbWUvcnVubmVyL3dvcmsvc3Rzb2F1dGgycGx1Z2luL3N0c29hdXRoMnBsdWdpbi9wYWNrYWdlLmpzb24iLEpBVkFfSE9NRV8xMV9YNjQ6Ii91c3IvbGliL2p2bS90ZW11cmluLTExLWpkay1hbWQ2NCIsUElQWF9CSU5fRElSOiIvb3B0L3BpcHhfYmluIixHUkFBTFZNXzExX1JPT1Q6Ii91c3IvbG9jYWwvZ3JhYWx2bS9ncmFhbHZtLWNlLWphdmExMS0yMi4xLjAiLEdJVEhVQl9SRVBPU0lUT1JZX09XTkVSOiJuc3NodW50IixHUkFETEVfSE9NRToiL3Vzci9zaGFyZS9ncmFkbGUtNy40LjIiLEhPTUVCUkVXX1BSRUZJWDoiL2hvbWUvbGludXhicmV3Ly5saW51eGJyZXciLEFORFJPSURfTkRLX0xBVEVTVF9IT01FOiIvdXNyL2xvY2FsL2xpYi9hbmRyb2lkL3Nkay9uZGsvMjQuMC44MjE1ODg4IixHSVRIVUJfUkVURU5USU9OX0RBWVM6IjkwIixQT1dFUlNIRUxMX0RJU1RSSUJVVElPTl9DSEFOTkVMOiJHaXRIdWItQWN0aW9ucy11YnVudHUyMCIsQVpVUkVfRVhURU5TSU9OX0RJUjoiL29wdC9hei9hemNsaWV4dGVuc2lvbnMiLEdJVEhVQl9IRUFEX1JFRjoiIixucG1fY29uZmlnX2xvY2FsX3ByZWZpeDoiL2hvbWUvcnVubmVyL3dvcmsvc3Rzb2F1dGgycGx1Z2luL3N0c29hdXRoMnBsdWdpbiIsR0lUSFVCX0dSQVBIUUxfVVJMOiJodHRwczovL2FwaS5naXRodWIuY29tL2dyYXBocWwiLENPTE9SOiIwIixOVk1fRElSOiIvaG9tZS9ydW5uZXIvLm52bSIsbnBtX2NvbmZpZ19tZXRyaWNzX3JlZ2lzdHJ5OiJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy8iLERPVE5FVF9TS0lQX0ZJUlNUX1RJTUVfRVhQRVJJRU5DRToiMSIsSkFWQV9IT01FXzE3X1g2NDoiL3Vzci9saWIvanZtL3RlbXVyaW4tMTctamRrLWFtZDY0IixJbWFnZVZlcnNpb246IjIwMjIwNjA1LjEiLFJVTk5FUl9PUzoiTGludXgiLEdJVEhVQl9BUElfVVJMOiJodHRwczovL2FwaS5naXRodWIuY29tIixTV0lGVF9QQVRIOiIvdXNyL3NoYXJlL3N3aWZ0L3Vzci9iaW4iLFJVTk5FUl9VU0VSOiJydW5uZXIiLENIUk9NRVdFQkRSSVZFUjoiL3Vzci9sb2NhbC9zaGFyZS9jaHJvbWVfZHJpdmVyIixKT1VSTkFMX1NUUkVBTToiODoyMTgzNCIsR0lUSFVCX1dPUktGTE9XOiJOb2RlLmpzIFBhY2thZ2UiLF86Ii9vcHQvaG9zdGVkdG9vbGNhY2hlL25vZGUvMTguMy4wL3g2NC9iaW4vbnBtIixucG1fY29uZmlnX3ByZWZpeDoiL29wdC9ob3N0ZWR0b29sY2FjaGUvbm9kZS8xOC4zLjAveDY0IixHSVRIVUJfUlVOX0lEOiIyNDgzNTA2MDM1IixHT1JPT1RfMV8xNl9YNjQ6Ii9vcHQvaG9zdGVkdG9vbGNhY2hlL2dvLzEuMTYuMTUveDY0IixucG1fY29uZmlnX2NhY2hlOiIvaG9tZS9ydW5uZXIvLm5wbSIsR09ST09UXzFfMTdfWDY0OiIvb3B0L2hvc3RlZHRvb2xjYWNoZS9nby8xLjE3LjExL3g2NCIsR0lUSFVCX1JFRl9UWVBFOiJicmFuY2giLEJPT1RTVFJBUF9IQVNLRUxMX05PTklOVEVSQUNUSVZFOiIxIixHSVRIVUJfQkFTRV9SRUY6IiIsSW1hZ2VPUzoidWJ1bnR1MjAiLFBFUkZMT0dfTE9DQVRJT05fU0VUVElORzoiUlVOTkVSX1BFUkZMT0ciLEdPUk9PVF8xXzE4X1g2NDoiL29wdC9ob3N0ZWR0b29sY2FjaGUvZ28vMS4xOC4zL3g2NCIsR0lUSFVCX0FDVElPTl9SRVBPU0lUT1JZOiIiLG5wbV9jb25maWdfbm9kZV9neXA6Ii9vcHQvaG9zdGVkdG9vbGNhY2hlL25vZGUvMTguMy4wL3g2NC9saWIvbm9kZV9tb2R1bGVzL25wbS9ub2RlX21vZHVsZXMvbm9kZS1neXAvYmluL25vZGUtZ3lwLmpzIixQQVRIOiIvaG9tZS9ydW5uZXIvd29yay9zdHNvYXV0aDJwbHVnaW4vc3Rzb2F1dGgycGx1Z2luL25vZGVfbW9kdWxlcy8uYmluOi9ob21lL3J1bm5lci93b3JrL3N0c29hdXRoMnBsdWdpbi9ub2RlX21vZHVsZXMvLmJpbjovaG9tZS9ydW5uZXIvd29yay9ub2RlX21vZHVsZXMvLmJpbjovaG9tZS9ydW5uZXIvbm9kZV9tb2R1bGVzLy5iaW46L2hvbWUvbm9kZV9tb2R1bGVzLy5iaW46L25vZGVfbW9kdWxlcy8uYmluOi9vcHQvaG9zdGVkdG9vbGNhY2hlL25vZGUvMTguMy4wL3g2NC9saWIvbm9kZV9tb2R1bGVzL25wbS9ub2RlX21vZHVsZXMvQG5wbWNsaS9ydW4tc2NyaXB0L2xpYi9ub2RlLWd5cC1iaW46L29wdC9ob3N0ZWR0b29sY2FjaGUvbm9kZS8xOC4zLjAveDY0L2JpbjovaG9tZS9saW51eGJyZXcvLmxpbnV4YnJldy9iaW46L2hvbWUvbGludXhicmV3Ly5saW51eGJyZXcvc2JpbjovaG9tZS9ydW5uZXIvLmxvY2FsL2Jpbjovb3B0L3BpcHhfYmluOi9ob21lL3J1bm5lci8uY2FyZ28vYmluOi9ob21lL3J1bm5lci8uY29uZmlnL2NvbXBvc2VyL3ZlbmRvci9iaW46L3Vzci9sb2NhbC8uZ2hjdXAvYmluOi9ob21lL3J1bm5lci8uZG90bmV0L3Rvb2xzOi9zbmFwL2JpbjovdXNyL2xvY2FsL3NiaW46L3Vzci9sb2NhbC9iaW46L3Vzci9zYmluOi91c3IvYmluOi9zYmluOi9iaW46L3Vzci9nYW1lczovdXNyL2xvY2FsL2dhbWVzOi9zbmFwL2JpbiIsQU5UX0hPTUU6Ii91c3Ivc2hhcmUvYW50IixET1RORVRfTVVMVElMRVZFTF9MT09LVVA6IjAiLFJVTk5FUl9UUkFDS0lOR19JRDoiZ2l0aHViXzllMGE1YzdhLTk3OGYtNGZjZS1iZTlmLTE1OTdhNDVkM2Y4ZCIsSU5WT0NBVElPTl9JRDoiODIzMTUwNDBmNmNiNGIxODkxYjg3NTUwNzVkYmU3NDkiLEhPTUVCUkVXX0NFTExBUjoiL2hvbWUvbGludXhicmV3Ly5saW51eGJyZXcvQ2VsbGFyIixOUE1fQ09ORklHX1VTRVJDT05GSUc6Ii9ob21lL3J1bm5lci93b3JrL190ZW1wLy5ucG1yYyIsUlVOTkVSX1RPT0xfQ0FDSEU6Ii9vcHQvaG9zdGVkdG9vbGNhY2hlIixOT0RFOiIvb3B0L2hvc3RlZHRvb2xjYWNoZS9ub2RlLzE4LjMuMC94NjQvYmluL25vZGUiLG5wbV9wYWNrYWdlX25hbWU6IkBuc3NodW50L3N0c29hdXRoMnBsdWdpbiIsR0lUSFVCX0FDVElPTjoiX19ydW5fMiIsR0lUSFVCX1JVTl9OVU1CRVI6IjI0IixSVU5ORVJfQVJDSDoiWDY0IixBR0VOVF9UT09MU0RJUkVDVE9SWToiL29wdC9ob3N0ZWR0b29sY2FjaGUiLExBTkc6IkMuVVRGLTgiLFZDUEtHX0lOU1RBTExBVElPTl9ST09UOiIvdXNyL2xvY2FsL3NoYXJlL3ZjcGtnIixDT05EQToiL3Vzci9zaGFyZS9taW5pY29uZGEiLFJVTk5FUl9OQU1FOiJIb3N0ZWQgQWdlbnQiLFhER19DT05GSUdfSE9NRToiL2hvbWUvcnVubmVyLy5jb25maWciLEdJVEhVQl9SRUZfTkFNRToibWFpbiIsR0lUSFVCX1JFUE9TSVRPUlk6Im5zc2h1bnQvc3Rzb2F1dGgycGx1Z2luIixucG1fbGlmZWN5Y2xlX3NjcmlwdDoidml0ZSBidWlsZCIsQU5EUk9JRF9OREtfUk9PVDoiL3Vzci9sb2NhbC9saWIvYW5kcm9pZC9zZGsvbmRrLWJ1bmRsZSIsR0lUSFVCX0FDVElPTl9SRUY6IiIsREVCSUFOX0ZST05URU5EOiJub25pbnRlcmFjdGl2ZSIsR0lUSFVCX0FDVElPTlM6InRydWUiLG5wbV9wYWNrYWdlX3ZlcnNpb246IjAuMS4xMyIsbnBtX2xpZmVjeWNsZV9ldmVudDoiYnVpbGQiLEdJVEhVQl9SRUZfUFJPVEVDVEVEOiJmYWxzZSIsR0lUSFVCX1dPUktTUEFDRToiL2hvbWUvcnVubmVyL3dvcmsvc3Rzb2F1dGgycGx1Z2luL3N0c29hdXRoMnBsdWdpbiIsQUNDRVBUX0VVTEE6IlkiLEdJVEhVQl9KT0I6InB1Ymxpc2gtbnBtIixSVU5ORVJfUEVSRkxPRzoiL2hvbWUvcnVubmVyL3BlcmZsb2ciLEdJVEhVQl9TSEE6ImY2NTk4ZDE4ODYxYzYwODRhMzAyNDNjOWQ2YTlkMDIwMGUxZjllOTYiLEdJVEhVQl9SVU5fQVRURU1QVDoiMSIsR0lUSFVCX1JFRjoicmVmcy9oZWFkcy9tYWluIixHSVRIVUJfQUNUT1I6Im5zc2h1bnQiLEFORFJPSURfU0RLX1JPT1Q6Ii91c3IvbG9jYWwvbGliL2FuZHJvaWQvc2RrIixMRUlOX0hPTUU6Ii91c3IvbG9jYWwvbGliL2xlaW4iLG5wbV9jb25maWdfZ2xvYmFsY29uZmlnOiIvb3B0L2hvc3RlZHRvb2xjYWNoZS9ub2RlLzE4LjMuMC94NjQvZXRjL25wbXJjIixucG1fY29uZmlnX2luaXRfbW9kdWxlOiIvaG9tZS9ydW5uZXIvLm5wbS1pbml0LmpzIixHSVRIVUJfUEFUSDoiL2hvbWUvcnVubmVyL3dvcmsvX3RlbXAvX3J1bm5lcl9maWxlX2NvbW1hbmRzL2FkZF9wYXRoXzVjNGY2ZjE4LTE2NjUtNDYzOC1iNDIwLWJjZDAyZjY2NTgxMCIsSkFWQV9IT01FOiIvdXNyL2xpYi9qdm0vdGVtdXJpbi0xMS1qZGstYW1kNjQiLFBXRDoiL2hvbWUvcnVubmVyL3dvcmsvc3Rzb2F1dGgycGx1Z2luL3N0c29hdXRoMnBsdWdpbiIsUlVOTkVSX1dPUktTUEFDRToiL2hvbWUvcnVubmVyL3dvcmsvc3Rzb2F1dGgycGx1Z2luIixucG1fZXhlY3BhdGg6Ii9vcHQvaG9zdGVkdG9vbGNhY2hlL25vZGUvMTguMy4wL3g2NC9saWIvbm9kZV9tb2R1bGVzL25wbS9iaW4vbnBtLWNsaS5qcyIsSE9NRUJSRVdfQ0xFQU5VUF9QRVJJT0RJQ19GVUxMX0RBWVM6IjM2NTAiLEdJVEhVQl9FVkVOVF9OQU1FOiJwdXNoIixIT01FQlJFV19OT19BVVRPX1VQREFURToiMSIsQU5EUk9JRF9IT01FOiIvdXNyL2xvY2FsL2xpYi9hbmRyb2lkL3NkayIsR0lUSFVCX1NFUlZFUl9VUkw6Imh0dHBzOi8vZ2l0aHViLmNvbSIsR0VDS09XRUJEUklWRVI6Ii91c3IvbG9jYWwvc2hhcmUvZ2Vja29fZHJpdmVyIixMRUlOX0pBUjoiL3Vzci9sb2NhbC9saWIvbGVpbi9zZWxmLWluc3RhbGxzL2xlaW5pbmdlbi0yLjkuOC1zdGFuZGFsb25lLmphciIsbnBtX2NvbmZpZ19nbG9iYWxfcHJlZml4OiIvb3B0L2hvc3RlZHRvb2xjYWNoZS9ub2RlLzE4LjMuMC94NjQiLEhPTUVCUkVXX1JFUE9TSVRPUlk6Ii9ob21lL2xpbnV4YnJldy8ubGludXhicmV3L0hvbWVicmV3IixucG1fY29tbWFuZDoicnVuLXNjcmlwdCIsU0dYX0FFU01fQUREUjoiMSIsQ0hST01FX0JJTjoiL3Vzci9iaW4vZ29vZ2xlLWNocm9tZSIsU0VMRU5JVU1fSkFSX1BBVEg6Ii91c3Ivc2hhcmUvamF2YS9zZWxlbml1bS1zZXJ2ZXIuamFyIixBTkRST0lEX05ES19IT01FOiIvdXNyL2xvY2FsL2xpYi9hbmRyb2lkL3Nkay9uZGstYnVuZGxlIixHSVRIVUJfU1RFUF9TVU1NQVJZOiIvaG9tZS9ydW5uZXIvd29yay9fdGVtcC9fcnVubmVyX2ZpbGVfY29tbWFuZHMvc3RlcF9zdW1tYXJ5XzVjNGY2ZjE4LTE2NjUtNDYzOC1iNDIwLWJjZDAyZjY2NTgxMCIsSU5JVF9DV0Q6Ii9ob21lL3J1bm5lci93b3JrL3N0c29hdXRoMnBsdWdpbi9zdHNvYXV0aDJwbHVnaW4iLEVESVRPUjoidmkiLE5PREVfRU5WOiJwcm9kdWN0aW9uIn0uQlJPS0VSX0FQSV9ST09UfS90b2tlbmA7Y29uc29sZS5sb2coYCNHZXRUb2tlbkZyb21Ccm9rZXI6dXJsID0gWyR7b31dYCksY29uc29sZS5sb2cocik7dHJ5e2NvbnN0IHQ9YXdhaXQgJG8oe21ldGhvZDoicG9zdCIsdXJsOm8sZGF0YTpyLHdpdGhDcmVkZW50aWFsczohMCx0aW1lb3V0OnBhcnNlSW50KHtERVBMT1lNRU5UX0JBU0VQQVRIOiIvb3B0L3J1bm5lciIsRE9UTkVUX05PTE9HTzoiMSIsVVNFUjoicnVubmVyIixucG1fY29uZmlnX2Fsd2F5c19hdXRoOiIiLG5wbV9jb25maWdfdXNlcl9hZ2VudDoibnBtLzguMTEuMCBub2RlL3YxOC4zLjAgbGludXggeDY0IHdvcmtzcGFjZXMvZmFsc2UgY2kvZ2l0aHViLWFjdGlvbnMiLENJOiJ0cnVlIixHSVRIVUJfRU5WOiIvaG9tZS9ydW5uZXIvd29yay9fdGVtcC9fcnVubmVyX2ZpbGVfY29tbWFuZHMvc2V0X2Vudl81YzRmNmYxOC0xNjY1LTQ2MzgtYjQyMC1iY2QwMmY2NjU4MTAiLFBJUFhfSE9NRToiL29wdC9waXB4IixucG1fbm9kZV9leGVjcGF0aDoiL29wdC9ob3N0ZWR0b29sY2FjaGUvbm9kZS8xOC4zLjAveDY0L2Jpbi9ub2RlIixKQVZBX0hPTUVfOF9YNjQ6Ii91c3IvbGliL2p2bS90ZW11cmluLTgtamRrLWFtZDY0IixOT0RFX0FVVEhfVE9LRU46IlhYWFhYLVhYWFhYLVhYWFhYLVhYWFhYIixTSExWTDoiMSIsbnBtX2NvbmZpZ19ub3Byb3h5OiIiLEhPTUU6Ii9ob21lL3J1bm5lciIsUlVOTkVSX1RFTVA6Ii9ob21lL3J1bm5lci93b3JrL190ZW1wIixHSVRIVUJfRVZFTlRfUEFUSDoiL2hvbWUvcnVubmVyL3dvcmsvX3RlbXAvX2dpdGh1Yl93b3JrZmxvdy9ldmVudC5qc29uIixucG1fcGFja2FnZV9qc29uOiIvaG9tZS9ydW5uZXIvd29yay9zdHNvYXV0aDJwbHVnaW4vc3Rzb2F1dGgycGx1Z2luL3BhY2thZ2UuanNvbiIsSkFWQV9IT01FXzExX1g2NDoiL3Vzci9saWIvanZtL3RlbXVyaW4tMTEtamRrLWFtZDY0IixQSVBYX0JJTl9ESVI6Ii9vcHQvcGlweF9iaW4iLEdSQUFMVk1fMTFfUk9PVDoiL3Vzci9sb2NhbC9ncmFhbHZtL2dyYWFsdm0tY2UtamF2YTExLTIyLjEuMCIsR0lUSFVCX1JFUE9TSVRPUllfT1dORVI6Im5zc2h1bnQiLEdSQURMRV9IT01FOiIvdXNyL3NoYXJlL2dyYWRsZS03LjQuMiIsSE9NRUJSRVdfUFJFRklYOiIvaG9tZS9saW51eGJyZXcvLmxpbnV4YnJldyIsQU5EUk9JRF9OREtfTEFURVNUX0hPTUU6Ii91c3IvbG9jYWwvbGliL2FuZHJvaWQvc2RrL25kay8yNC4wLjgyMTU4ODgiLEdJVEhVQl9SRVRFTlRJT05fREFZUzoiOTAiLFBPV0VSU0hFTExfRElTVFJJQlVUSU9OX0NIQU5ORUw6IkdpdEh1Yi1BY3Rpb25zLXVidW50dTIwIixBWlVSRV9FWFRFTlNJT05fRElSOiIvb3B0L2F6L2F6Y2xpZXh0ZW5zaW9ucyIsR0lUSFVCX0hFQURfUkVGOiIiLG5wbV9jb25maWdfbG9jYWxfcHJlZml4OiIvaG9tZS9ydW5uZXIvd29yay9zdHNvYXV0aDJwbHVnaW4vc3Rzb2F1dGgycGx1Z2luIixHSVRIVUJfR1JBUEhRTF9VUkw6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vZ3JhcGhxbCIsQ09MT1I6IjAiLE5WTV9ESVI6Ii9ob21lL3J1bm5lci8ubnZtIixucG1fY29uZmlnX21ldHJpY3NfcmVnaXN0cnk6Imh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnLyIsRE9UTkVUX1NLSVBfRklSU1RfVElNRV9FWFBFUklFTkNFOiIxIixKQVZBX0hPTUVfMTdfWDY0OiIvdXNyL2xpYi9qdm0vdGVtdXJpbi0xNy1qZGstYW1kNjQiLEltYWdlVmVyc2lvbjoiMjAyMjA2MDUuMSIsUlVOTkVSX09TOiJMaW51eCIsR0lUSFVCX0FQSV9VUkw6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20iLFNXSUZUX1BBVEg6Ii91c3Ivc2hhcmUvc3dpZnQvdXNyL2JpbiIsUlVOTkVSX1VTRVI6InJ1bm5lciIsQ0hST01FV0VCRFJJVkVSOiIvdXNyL2xvY2FsL3NoYXJlL2Nocm9tZV9kcml2ZXIiLEpPVVJOQUxfU1RSRUFNOiI4OjIxODM0IixHSVRIVUJfV09SS0ZMT1c6Ik5vZGUuanMgUGFja2FnZSIsXzoiL29wdC9ob3N0ZWR0b29sY2FjaGUvbm9kZS8xOC4zLjAveDY0L2Jpbi9ucG0iLG5wbV9jb25maWdfcHJlZml4OiIvb3B0L2hvc3RlZHRvb2xjYWNoZS9ub2RlLzE4LjMuMC94NjQiLEdJVEhVQl9SVU5fSUQ6IjI0ODM1MDYwMzUiLEdPUk9PVF8xXzE2X1g2NDoiL29wdC9ob3N0ZWR0b29sY2FjaGUvZ28vMS4xNi4xNS94NjQiLG5wbV9jb25maWdfY2FjaGU6Ii9ob21lL3J1bm5lci8ubnBtIixHT1JPT1RfMV8xN19YNjQ6Ii9vcHQvaG9zdGVkdG9vbGNhY2hlL2dvLzEuMTcuMTEveDY0IixHSVRIVUJfUkVGX1RZUEU6ImJyYW5jaCIsQk9PVFNUUkFQX0hBU0tFTExfTk9OSU5URVJBQ1RJVkU6IjEiLEdJVEhVQl9CQVNFX1JFRjoiIixJbWFnZU9TOiJ1YnVudHUyMCIsUEVSRkxPR19MT0NBVElPTl9TRVRUSU5HOiJSVU5ORVJfUEVSRkxPRyIsR09ST09UXzFfMThfWDY0OiIvb3B0L2hvc3RlZHRvb2xjYWNoZS9nby8xLjE4LjMveDY0IixHSVRIVUJfQUNUSU9OX1JFUE9TSVRPUlk6IiIsbnBtX2NvbmZpZ19ub2RlX2d5cDoiL29wdC9ob3N0ZWR0b29sY2FjaGUvbm9kZS8xOC4zLjAveDY0L2xpYi9ub2RlX21vZHVsZXMvbnBtL25vZGVfbW9kdWxlcy9ub2RlLWd5cC9iaW4vbm9kZS1neXAuanMiLFBBVEg6Ii9ob21lL3J1bm5lci93b3JrL3N0c29hdXRoMnBsdWdpbi9zdHNvYXV0aDJwbHVnaW4vbm9kZV9tb2R1bGVzLy5iaW46L2hvbWUvcnVubmVyL3dvcmsvc3Rzb2F1dGgycGx1Z2luL25vZGVfbW9kdWxlcy8uYmluOi9ob21lL3J1bm5lci93b3JrL25vZGVfbW9kdWxlcy8uYmluOi9ob21lL3J1bm5lci9ub2RlX21vZHVsZXMvLmJpbjovaG9tZS9ub2RlX21vZHVsZXMvLmJpbjovbm9kZV9tb2R1bGVzLy5iaW46L29wdC9ob3N0ZWR0b29sY2FjaGUvbm9kZS8xOC4zLjAveDY0L2xpYi9ub2RlX21vZHVsZXMvbnBtL25vZGVfbW9kdWxlcy9AbnBtY2xpL3J1bi1zY3JpcHQvbGliL25vZGUtZ3lwLWJpbjovb3B0L2hvc3RlZHRvb2xjYWNoZS9ub2RlLzE4LjMuMC94NjQvYmluOi9ob21lL2xpbnV4YnJldy8ubGludXhicmV3L2JpbjovaG9tZS9saW51eGJyZXcvLmxpbnV4YnJldy9zYmluOi9ob21lL3J1bm5lci8ubG9jYWwvYmluOi9vcHQvcGlweF9iaW46L2hvbWUvcnVubmVyLy5jYXJnby9iaW46L2hvbWUvcnVubmVyLy5jb25maWcvY29tcG9zZXIvdmVuZG9yL2JpbjovdXNyL2xvY2FsLy5naGN1cC9iaW46L2hvbWUvcnVubmVyLy5kb3RuZXQvdG9vbHM6L3NuYXAvYmluOi91c3IvbG9jYWwvc2JpbjovdXNyL2xvY2FsL2JpbjovdXNyL3NiaW46L3Vzci9iaW46L3NiaW46L2JpbjovdXNyL2dhbWVzOi91c3IvbG9jYWwvZ2FtZXM6L3NuYXAvYmluIixBTlRfSE9NRToiL3Vzci9zaGFyZS9hbnQiLERPVE5FVF9NVUxUSUxFVkVMX0xPT0tVUDoiMCIsUlVOTkVSX1RSQUNLSU5HX0lEOiJnaXRodWJfOWUwYTVjN2EtOTc4Zi00ZmNlLWJlOWYtMTU5N2E0NWQzZjhkIixJTlZPQ0FUSU9OX0lEOiI4MjMxNTA0MGY2Y2I0YjE4OTFiODc1NTA3NWRiZTc0OSIsSE9NRUJSRVdfQ0VMTEFSOiIvaG9tZS9saW51eGJyZXcvLmxpbnV4YnJldy9DZWxsYXIiLE5QTV9DT05GSUdfVVNFUkNPTkZJRzoiL2hvbWUvcnVubmVyL3dvcmsvX3RlbXAvLm5wbXJjIixSVU5ORVJfVE9PTF9DQUNIRToiL29wdC9ob3N0ZWR0b29sY2FjaGUiLE5PREU6Ii9vcHQvaG9zdGVkdG9vbGNhY2hlL25vZGUvMTguMy4wL3g2NC9iaW4vbm9kZSIsbnBtX3BhY2thZ2VfbmFtZToiQG5zc2h1bnQvc3Rzb2F1dGgycGx1Z2luIixHSVRIVUJfQUNUSU9OOiJfX3J1bl8yIixHSVRIVUJfUlVOX05VTUJFUjoiMjQiLFJVTk5FUl9BUkNIOiJYNjQiLEFHRU5UX1RPT0xTRElSRUNUT1JZOiIvb3B0L2hvc3RlZHRvb2xjYWNoZSIsTEFORzoiQy5VVEYtOCIsVkNQS0dfSU5TVEFMTEFUSU9OX1JPT1Q6Ii91c3IvbG9jYWwvc2hhcmUvdmNwa2ciLENPTkRBOiIvdXNyL3NoYXJlL21pbmljb25kYSIsUlVOTkVSX05BTUU6Ikhvc3RlZCBBZ2VudCIsWERHX0NPTkZJR19IT01FOiIvaG9tZS9ydW5uZXIvLmNvbmZpZyIsR0lUSFVCX1JFRl9OQU1FOiJtYWluIixHSVRIVUJfUkVQT1NJVE9SWToibnNzaHVudC9zdHNvYXV0aDJwbHVnaW4iLG5wbV9saWZlY3ljbGVfc2NyaXB0OiJ2aXRlIGJ1aWxkIixBTkRST0lEX05ES19ST09UOiIvdXNyL2xvY2FsL2xpYi9hbmRyb2lkL3Nkay9uZGstYnVuZGxlIixHSVRIVUJfQUNUSU9OX1JFRjoiIixERUJJQU5fRlJPTlRFTkQ6Im5vbmludGVyYWN0aXZlIixHSVRIVUJfQUNUSU9OUzoidHJ1ZSIsbnBtX3BhY2thZ2VfdmVyc2lvbjoiMC4xLjEzIixucG1fbGlmZWN5Y2xlX2V2ZW50OiJidWlsZCIsR0lUSFVCX1JFRl9QUk9URUNURUQ6ImZhbHNlIixHSVRIVUJfV09SS1NQQUNFOiIvaG9tZS9ydW5uZXIvd29yay9zdHNvYXV0aDJwbHVnaW4vc3Rzb2F1dGgycGx1Z2luIixBQ0NFUFRfRVVMQToiWSIsR0lUSFVCX0pPQjoicHVibGlzaC1ucG0iLFJVTk5FUl9QRVJGTE9HOiIvaG9tZS9ydW5uZXIvcGVyZmxvZyIsR0lUSFVCX1NIQToiZjY1OThkMTg4NjFjNjA4NGEzMDI0M2M5ZDZhOWQwMjAwZTFmOWU5NiIsR0lUSFVCX1JVTl9BVFRFTVBUOiIxIixHSVRIVUJfUkVGOiJyZWZzL2hlYWRzL21haW4iLEdJVEhVQl9BQ1RPUjoibnNzaHVudCIsQU5EUk9JRF9TREtfUk9PVDoiL3Vzci9sb2NhbC9saWIvYW5kcm9pZC9zZGsiLExFSU5fSE9NRToiL3Vzci9sb2NhbC9saWIvbGVpbiIsbnBtX2NvbmZpZ19nbG9iYWxjb25maWc6Ii9vcHQvaG9zdGVkdG9vbGNhY2hlL25vZGUvMTguMy4wL3g2NC9ldGMvbnBtcmMiLG5wbV9jb25maWdfaW5pdF9tb2R1bGU6Ii9ob21lL3J1bm5lci8ubnBtLWluaXQuanMiLEdJVEhVQl9QQVRIOiIvaG9tZS9ydW5uZXIvd29yay9fdGVtcC9fcnVubmVyX2ZpbGVfY29tbWFuZHMvYWRkX3BhdGhfNWM0ZjZmMTgtMTY2NS00NjM4LWI0MjAtYmNkMDJmNjY1ODEwIixKQVZBX0hPTUU6Ii91c3IvbGliL2p2bS90ZW11cmluLTExLWpkay1hbWQ2NCIsUFdEOiIvaG9tZS9ydW5uZXIvd29yay9zdHNvYXV0aDJwbHVnaW4vc3Rzb2F1dGgycGx1Z2luIixSVU5ORVJfV09SS1NQQUNFOiIvaG9tZS9ydW5uZXIvd29yay9zdHNvYXV0aDJwbHVnaW4iLG5wbV9leGVjcGF0aDoiL29wdC9ob3N0ZWR0b29sY2FjaGUvbm9kZS8xOC4zLjAveDY0L2xpYi9ub2RlX21vZHVsZXMvbnBtL2Jpbi9ucG0tY2xpLmpzIixIT01FQlJFV19DTEVBTlVQX1BFUklPRElDX0ZVTExfREFZUzoiMzY1MCIsR0lUSFVCX0VWRU5UX05BTUU6InB1c2giLEhPTUVCUkVXX05PX0FVVE9fVVBEQVRFOiIxIixBTkRST0lEX0hPTUU6Ii91c3IvbG9jYWwvbGliL2FuZHJvaWQvc2RrIixHSVRIVUJfU0VSVkVSX1VSTDoiaHR0cHM6Ly9naXRodWIuY29tIixHRUNLT1dFQkRSSVZFUjoiL3Vzci9sb2NhbC9zaGFyZS9nZWNrb19kcml2ZXIiLExFSU5fSkFSOiIvdXNyL2xvY2FsL2xpYi9sZWluL3NlbGYtaW5zdGFsbHMvbGVpbmluZ2VuLTIuOS44LXN0YW5kYWxvbmUuamFyIixucG1fY29uZmlnX2dsb2JhbF9wcmVmaXg6Ii9vcHQvaG9zdGVkdG9vbGNhY2hlL25vZGUvMTguMy4wL3g2NCIsSE9NRUJSRVdfUkVQT1NJVE9SWToiL2hvbWUvbGludXhicmV3Ly5saW51eGJyZXcvSG9tZWJyZXciLG5wbV9jb21tYW5kOiJydW4tc2NyaXB0IixTR1hfQUVTTV9BRERSOiIxIixDSFJPTUVfQklOOiIvdXNyL2Jpbi9nb29nbGUtY2hyb21lIixTRUxFTklVTV9KQVJfUEFUSDoiL3Vzci9zaGFyZS9qYXZhL3NlbGVuaXVtLXNlcnZlci5qYXIiLEFORFJPSURfTkRLX0hPTUU6Ii91c3IvbG9jYWwvbGliL2FuZHJvaWQvc2RrL25kay1idW5kbGUiLEdJVEhVQl9TVEVQX1NVTU1BUlk6Ii9ob21lL3J1bm5lci93b3JrL190ZW1wL19ydW5uZXJfZmlsZV9jb21tYW5kcy9zdGVwX3N1bW1hcnlfNWM0ZjZmMTgtMTY2NS00NjM4LWI0MjAtYmNkMDJmNjY1ODEwIixJTklUX0NXRDoiL2hvbWUvcnVubmVyL3dvcmsvc3Rzb2F1dGgycGx1Z2luL3N0c29hdXRoMnBsdWdpbiIsRURJVE9SOiJ2aSIsTk9ERV9FTlY6InByb2R1Y3Rpb24ifS5USU1FT1VUKX0pO2lmKGNvbnNvbGUubG9nKGByZXRWYWw6ICR7SlNPTi5zdHJpbmdpZnkodCl9YCksdC5zdGF0dXM9PT11ci5PSyl7Y29uc29sZS5sb2coIlN0b3JpbmcgdG9rZW5zLi4uIik7Y29uc3Qgcz10LmRhdGE7cmV0dXJuIFgodGhpcyx4ZSkuY2FsbCh0aGlzLHMuaWRfdG9rZW4pLFgodGhpcyxCZSkuc2V0KFgodGhpcyxqZSkscyksITB9ZWxzZSBpZih0LnN0YXR1cz09PXVyLlVOQVVUSE9SSVpFRCl7Y29uc29sZS5sb2coIk5PVCBTdG9yaW5nIHRva2Vucy4uLiIpLGNvbnNvbGUubG9nKHQuc3RhdHVzKSxYKHRoaXMseGUpLmNhbGwodGhpcyxudWxsKTtjb25zdCBzPXQuZGF0YTtyZXR1cm4hMX1lbHNlIHJldHVybiBjb25zb2xlLmxvZygiTk9UIFN0b3JpbmcgdG9rZW5zLi4uIiksY29uc29sZS5sb2codC5zdGF0dXMpLFgodGhpcyx4ZSkuY2FsbCh0aGlzLG51bGwpLGNvbnNvbGUubG9nKCJDb3VsZCBub3Qgb2J0YWluIGFjY2Vzc190b2tlbiBmcm9tIHRva2VuIGVuZC1wb2ludDotIiksY29uc29sZS5sb2coSlNPTi5zdHJpbmdpZnkodC5kYXRhKSksITF9Y2F0Y2godCl7cmV0dXJuIFgodGhpcyx4ZSkuY2FsbCh0aGlzLG51bGwpLGNvbnNvbGUubG9nKHQpLGNvbnNvbGUubG9nKEpTT04uc3RyaW5naWZ5KHQpKSwhMX19KSx1ZSh0aGlzLHlyLGFzeW5jKHIsbyk9Pntjb25zb2xlLmxvZygiI0dldFRva2VuIiksY29uc29sZS5sb2cobyksWCh0aGlzLEJlKS5zZXQoWCh0aGlzLGplKSxudWxsKTtjb25zdCB0PXtjbGllbnRfaWQ6e0RFUExPWU1FTlRfQkFTRVBBVEg6Ii9vcHQvcnVubmVyIixET1RORVRfTk9MT0dPOiIxIixVU0VSOiJydW5uZXIiLG5wbV9jb25maWdfYWx3YXlzX2F1dGg6IiIsbnBtX2NvbmZpZ191c2VyX2FnZW50OiJucG0vOC4xMS4wIG5vZGUvdjE4LjMuMCBsaW51eCB4NjQgd29ya3NwYWNlcy9mYWxzZSBjaS9naXRodWItYWN0aW9ucyIsQ0k6InRydWUiLEdJVEhVQl9FTlY6Ii9ob21lL3J1bm5lci93b3JrL190ZW1wL19ydW5uZXJfZmlsZV9jb21tYW5kcy9zZXRfZW52XzVjNGY2ZjE4LTE2NjUtNDYzOC1iNDIwLWJjZDAyZjY2NTgxMCIsUElQWF9IT01FOiIvb3B0L3BpcHgiLG5wbV9ub2RlX2V4ZWNwYXRoOiIvb3B0L2hvc3RlZHRvb2xjYWNoZS9ub2RlLzE4LjMuMC94NjQvYmluL25vZGUiLEpBVkFfSE9NRV84X1g2NDoiL3Vzci9saWIvanZtL3RlbXVyaW4tOC1qZGstYW1kNjQiLE5PREVfQVVUSF9UT0tFTjoiWFhYWFgtWFhYWFgtWFhYWFgtWFhYWFgiLFNITFZMOiIxIixucG1fY29uZmlnX25vcHJveHk6IiIsSE9NRToiL2hvbWUvcnVubmVyIixSVU5ORVJfVEVNUDoiL2hvbWUvcnVubmVyL3dvcmsvX3RlbXAiLEdJVEhVQl9FVkVOVF9QQVRIOiIvaG9tZS9ydW5uZXIvd29yay9fdGVtcC9fZ2l0aHViX3dvcmtmbG93L2V2ZW50Lmpzb24iLG5wbV9wYWNrYWdlX2pzb246Ii9ob21lL3J1bm5lci93b3JrL3N0c29hdXRoMnBsdWdpbi9zdHNvYXV0aDJwbHVnaW4vcGFja2FnZS5qc29uIixKQVZBX0hPTUVfMTFfWDY0OiIvdXNyL2xpYi9qdm0vdGVtdXJpbi0xMS1qZGstYW1kNjQiLFBJUFhfQklOX0RJUjoiL29wdC9waXB4X2JpbiIsR1JBQUxWTV8xMV9ST09UOiIvdXNyL2xvY2FsL2dyYWFsdm0vZ3JhYWx2bS1jZS1qYXZhMTEtMjIuMS4wIixHSVRIVUJfUkVQT1NJVE9SWV9PV05FUjoibnNzaHVudCIsR1JBRExFX0hPTUU6Ii91c3Ivc2hhcmUvZ3JhZGxlLTcuNC4yIixIT01FQlJFV19QUkVGSVg6Ii9ob21lL2xpbnV4YnJldy8ubGludXhicmV3IixBTkRST0lEX05ES19MQVRFU1RfSE9NRToiL3Vzci9sb2NhbC9saWIvYW5kcm9pZC9zZGsvbmRrLzI0LjAuODIxNTg4OCIsR0lUSFVCX1JFVEVOVElPTl9EQVlTOiI5MCIsUE9XRVJTSEVMTF9ESVNUUklCVVRJT05fQ0hBTk5FTDoiR2l0SHViLUFjdGlvbnMtdWJ1bnR1MjAiLEFaVVJFX0VYVEVOU0lPTl9ESVI6Ii9vcHQvYXovYXpjbGlleHRlbnNpb25zIixHSVRIVUJfSEVBRF9SRUY6IiIsbnBtX2NvbmZpZ19sb2NhbF9wcmVmaXg6Ii9ob21lL3J1bm5lci93b3JrL3N0c29hdXRoMnBsdWdpbi9zdHNvYXV0aDJwbHVnaW4iLEdJVEhVQl9HUkFQSFFMX1VSTDoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9ncmFwaHFsIixDT0xPUjoiMCIsTlZNX0RJUjoiL2hvbWUvcnVubmVyLy5udm0iLG5wbV9jb25maWdfbWV0cmljc19yZWdpc3RyeToiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvIixET1RORVRfU0tJUF9GSVJTVF9USU1FX0VYUEVSSUVOQ0U6IjEiLEpBVkFfSE9NRV8xN19YNjQ6Ii91c3IvbGliL2p2bS90ZW11cmluLTE3LWpkay1hbWQ2NCIsSW1hZ2VWZXJzaW9uOiIyMDIyMDYwNS4xIixSVU5ORVJfT1M6IkxpbnV4IixHSVRIVUJfQVBJX1VSTDoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbSIsU1dJRlRfUEFUSDoiL3Vzci9zaGFyZS9zd2lmdC91c3IvYmluIixSVU5ORVJfVVNFUjoicnVubmVyIixDSFJPTUVXRUJEUklWRVI6Ii91c3IvbG9jYWwvc2hhcmUvY2hyb21lX2RyaXZlciIsSk9VUk5BTF9TVFJFQU06Ijg6MjE4MzQiLEdJVEhVQl9XT1JLRkxPVzoiTm9kZS5qcyBQYWNrYWdlIixfOiIvb3B0L2hvc3RlZHRvb2xjYWNoZS9ub2RlLzE4LjMuMC94NjQvYmluL25wbSIsbnBtX2NvbmZpZ19wcmVmaXg6Ii9vcHQvaG9zdGVkdG9vbGNhY2hlL25vZGUvMTguMy4wL3g2NCIsR0lUSFVCX1JVTl9JRDoiMjQ4MzUwNjAzNSIsR09ST09UXzFfMTZfWDY0OiIvb3B0L2hvc3RlZHRvb2xjYWNoZS9nby8xLjE2LjE1L3g2NCIsbnBtX2NvbmZpZ19jYWNoZToiL2hvbWUvcnVubmVyLy5ucG0iLEdPUk9PVF8xXzE3X1g2NDoiL29wdC9ob3N0ZWR0b29sY2FjaGUvZ28vMS4xNy4xMS94NjQiLEdJVEhVQl9SRUZfVFlQRToiYnJhbmNoIixCT09UU1RSQVBfSEFTS0VMTF9OT05JTlRFUkFDVElWRToiMSIsR0lUSFVCX0JBU0VfUkVGOiIiLEltYWdlT1M6InVidW50dTIwIixQRVJGTE9HX0xPQ0FUSU9OX1NFVFRJTkc6IlJVTk5FUl9QRVJGTE9HIixHT1JPT1RfMV8xOF9YNjQ6Ii9vcHQvaG9zdGVkdG9vbGNhY2hlL2dvLzEuMTguMy94NjQiLEdJVEhVQl9BQ1RJT05fUkVQT1NJVE9SWToiIixucG1fY29uZmlnX25vZGVfZ3lwOiIvb3B0L2hvc3RlZHRvb2xjYWNoZS9ub2RlLzE4LjMuMC94NjQvbGliL25vZGVfbW9kdWxlcy9ucG0vbm9kZV9tb2R1bGVzL25vZGUtZ3lwL2Jpbi9ub2RlLWd5cC5qcyIsUEFUSDoiL2hvbWUvcnVubmVyL3dvcmsvc3Rzb2F1dGgycGx1Z2luL3N0c29hdXRoMnBsdWdpbi9ub2RlX21vZHVsZXMvLmJpbjovaG9tZS9ydW5uZXIvd29yay9zdHNvYXV0aDJwbHVnaW4vbm9kZV9tb2R1bGVzLy5iaW46L2hvbWUvcnVubmVyL3dvcmsvbm9kZV9tb2R1bGVzLy5iaW46L2hvbWUvcnVubmVyL25vZGVfbW9kdWxlcy8uYmluOi9ob21lL25vZGVfbW9kdWxlcy8uYmluOi9ub2RlX21vZHVsZXMvLmJpbjovb3B0L2hvc3RlZHRvb2xjYWNoZS9ub2RlLzE4LjMuMC94NjQvbGliL25vZGVfbW9kdWxlcy9ucG0vbm9kZV9tb2R1bGVzL0BucG1jbGkvcnVuLXNjcmlwdC9saWIvbm9kZS1neXAtYmluOi9vcHQvaG9zdGVkdG9vbGNhY2hlL25vZGUvMTguMy4wL3g2NC9iaW46L2hvbWUvbGludXhicmV3Ly5saW51eGJyZXcvYmluOi9ob21lL2xpbnV4YnJldy8ubGludXhicmV3L3NiaW46L2hvbWUvcnVubmVyLy5sb2NhbC9iaW46L29wdC9waXB4X2JpbjovaG9tZS9ydW5uZXIvLmNhcmdvL2JpbjovaG9tZS9ydW5uZXIvLmNvbmZpZy9jb21wb3Nlci92ZW5kb3IvYmluOi91c3IvbG9jYWwvLmdoY3VwL2JpbjovaG9tZS9ydW5uZXIvLmRvdG5ldC90b29sczovc25hcC9iaW46L3Vzci9sb2NhbC9zYmluOi91c3IvbG9jYWwvYmluOi91c3Ivc2JpbjovdXNyL2Jpbjovc2JpbjovYmluOi91c3IvZ2FtZXM6L3Vzci9sb2NhbC9nYW1lczovc25hcC9iaW4iLEFOVF9IT01FOiIvdXNyL3NoYXJlL2FudCIsRE9UTkVUX01VTFRJTEVWRUxfTE9PS1VQOiIwIixSVU5ORVJfVFJBQ0tJTkdfSUQ6ImdpdGh1Yl85ZTBhNWM3YS05NzhmLTRmY2UtYmU5Zi0xNTk3YTQ1ZDNmOGQiLElOVk9DQVRJT05fSUQ6IjgyMzE1MDQwZjZjYjRiMTg5MWI4NzU1MDc1ZGJlNzQ5IixIT01FQlJFV19DRUxMQVI6Ii9ob21lL2xpbnV4YnJldy8ubGludXhicmV3L0NlbGxhciIsTlBNX0NPTkZJR19VU0VSQ09ORklHOiIvaG9tZS9ydW5uZXIvd29yay9fdGVtcC8ubnBtcmMiLFJVTk5FUl9UT09MX0NBQ0hFOiIvb3B0L2hvc3RlZHRvb2xjYWNoZSIsTk9ERToiL29wdC9ob3N0ZWR0b29sY2FjaGUvbm9kZS8xOC4zLjAveDY0L2Jpbi9ub2RlIixucG1fcGFja2FnZV9uYW1lOiJAbnNzaHVudC9zdHNvYXV0aDJwbHVnaW4iLEdJVEhVQl9BQ1RJT046Il9fcnVuXzIiLEdJVEhVQl9SVU5fTlVNQkVSOiIyNCIsUlVOTkVSX0FSQ0g6Ilg2NCIsQUdFTlRfVE9PTFNESVJFQ1RPUlk6Ii9vcHQvaG9zdGVkdG9vbGNhY2hlIixMQU5HOiJDLlVURi04IixWQ1BLR19JTlNUQUxMQVRJT05fUk9PVDoiL3Vzci9sb2NhbC9zaGFyZS92Y3BrZyIsQ09OREE6Ii91c3Ivc2hhcmUvbWluaWNvbmRhIixSVU5ORVJfTkFNRToiSG9zdGVkIEFnZW50IixYREdfQ09ORklHX0hPTUU6Ii9ob21lL3J1bm5lci8uY29uZmlnIixHSVRIVUJfUkVGX05BTUU6Im1haW4iLEdJVEhVQl9SRVBPU0lUT1JZOiJuc3NodW50L3N0c29hdXRoMnBsdWdpbiIsbnBtX2xpZmVjeWNsZV9zY3JpcHQ6InZpdGUgYnVpbGQiLEFORFJPSURfTkRLX1JPT1Q6Ii91c3IvbG9jYWwvbGliL2FuZHJvaWQvc2RrL25kay1idW5kbGUiLEdJVEhVQl9BQ1RJT05fUkVGOiIiLERFQklBTl9GUk9OVEVORDoibm9uaW50ZXJhY3RpdmUiLEdJVEhVQl9BQ1RJT05TOiJ0cnVlIixucG1fcGFja2FnZV92ZXJzaW9uOiIwLjEuMTMiLG5wbV9saWZlY3ljbGVfZXZlbnQ6ImJ1aWxkIixHSVRIVUJfUkVGX1BST1RFQ1RFRDoiZmFsc2UiLEdJVEhVQl9XT1JLU1BBQ0U6Ii9ob21lL3J1bm5lci93b3JrL3N0c29hdXRoMnBsdWdpbi9zdHNvYXV0aDJwbHVnaW4iLEFDQ0VQVF9FVUxBOiJZIixHSVRIVUJfSk9COiJwdWJsaXNoLW5wbSIsUlVOTkVSX1BFUkZMT0c6Ii9ob21lL3J1bm5lci9wZXJmbG9nIixHSVRIVUJfU0hBOiJmNjU5OGQxODg2MWM2MDg0YTMwMjQzYzlkNmE5ZDAyMDBlMWY5ZTk2IixHSVRIVUJfUlVOX0FUVEVNUFQ6IjEiLEdJVEhVQl9SRUY6InJlZnMvaGVhZHMvbWFpbiIsR0lUSFVCX0FDVE9SOiJuc3NodW50IixBTkRST0lEX1NES19ST09UOiIvdXNyL2xvY2FsL2xpYi9hbmRyb2lkL3NkayIsTEVJTl9IT01FOiIvdXNyL2xvY2FsL2xpYi9sZWluIixucG1fY29uZmlnX2dsb2JhbGNvbmZpZzoiL29wdC9ob3N0ZWR0b29sY2FjaGUvbm9kZS8xOC4zLjAveDY0L2V0Yy9ucG1yYyIsbnBtX2NvbmZpZ19pbml0X21vZHVsZToiL2hvbWUvcnVubmVyLy5ucG0taW5pdC5qcyIsR0lUSFVCX1BBVEg6Ii9ob21lL3J1bm5lci93b3JrL190ZW1wL19ydW5uZXJfZmlsZV9jb21tYW5kcy9hZGRfcGF0aF81YzRmNmYxOC0xNjY1LTQ2MzgtYjQyMC1iY2QwMmY2NjU4MTAiLEpBVkFfSE9NRToiL3Vzci9saWIvanZtL3RlbXVyaW4tMTEtamRrLWFtZDY0IixQV0Q6Ii9ob21lL3J1bm5lci93b3JrL3N0c29hdXRoMnBsdWdpbi9zdHNvYXV0aDJwbHVnaW4iLFJVTk5FUl9XT1JLU1BBQ0U6Ii9ob21lL3J1bm5lci93b3JrL3N0c29hdXRoMnBsdWdpbiIsbnBtX2V4ZWNwYXRoOiIvb3B0L2hvc3RlZHRvb2xjYWNoZS9ub2RlLzE4LjMuMC94NjQvbGliL25vZGVfbW9kdWxlcy9ucG0vYmluL25wbS1jbGkuanMiLEhPTUVCUkVXX0NMRUFOVVBfUEVSSU9ESUNfRlVMTF9EQVlTOiIzNjUwIixHSVRIVUJfRVZFTlRfTkFNRToicHVzaCIsSE9NRUJSRVdfTk9fQVVUT19VUERBVEU6IjEiLEFORFJPSURfSE9NRToiL3Vzci9sb2NhbC9saWIvYW5kcm9pZC9zZGsiLEdJVEhVQl9TRVJWRVJfVVJMOiJodHRwczovL2dpdGh1Yi5jb20iLEdFQ0tPV0VCRFJJVkVSOiIvdXNyL2xvY2FsL3NoYXJlL2dlY2tvX2RyaXZlciIsTEVJTl9KQVI6Ii91c3IvbG9jYWwvbGliL2xlaW4vc2VsZi1pbnN0YWxscy9sZWluaW5nZW4tMi45Ljgtc3RhbmRhbG9uZS5qYXIiLG5wbV9jb25maWdfZ2xvYmFsX3ByZWZpeDoiL29wdC9ob3N0ZWR0b29sY2FjaGUvbm9kZS8xOC4zLjAveDY0IixIT01FQlJFV19SRVBPU0lUT1JZOiIvaG9tZS9saW51eGJyZXcvLmxpbnV4YnJldy9Ib21lYnJldyIsbnBtX2NvbW1hbmQ6InJ1bi1zY3JpcHQiLFNHWF9BRVNNX0FERFI6IjEiLENIUk9NRV9CSU46Ii91c3IvYmluL2dvb2dsZS1jaHJvbWUiLFNFTEVOSVVNX0pBUl9QQVRIOiIvdXNyL3NoYXJlL2phdmEvc2VsZW5pdW0tc2VydmVyLmphciIsQU5EUk9JRF9OREtfSE9NRToiL3Vzci9sb2NhbC9saWIvYW5kcm9pZC9zZGsvbmRrLWJ1bmRsZSIsR0lUSFVCX1NURVBfU1VNTUFSWToiL2hvbWUvcnVubmVyL3dvcmsvX3RlbXAvX3J1bm5lcl9maWxlX2NvbW1hbmRzL3N0ZXBfc3VtbWFyeV81YzRmNmYxOC0xNjY1LTQ2MzgtYjQyMC1iY2QwMmY2NjU4MTAiLElOSVRfQ1dEOiIvaG9tZS9ydW5uZXIvd29yay9zdHNvYXV0aDJwbHVnaW4vc3Rzb2F1dGgycGx1Z2luIixFRElUT1I6InZpIixOT0RFX0VOVjoicHJvZHVjdGlvbiJ9LkNMSUVOVF9JRCxzY29wZTp7REVQTE9ZTUVOVF9CQVNFUEFUSDoiL29wdC9ydW5uZXIiLERPVE5FVF9OT0xPR086IjEiLFVTRVI6InJ1bm5lciIsbnBtX2NvbmZpZ19hbHdheXNfYXV0aDoiIixucG1fY29uZmlnX3VzZXJfYWdlbnQ6Im5wbS84LjExLjAgbm9kZS92MTguMy4wIGxpbnV4IHg2NCB3b3Jrc3BhY2VzL2ZhbHNlIGNpL2dpdGh1Yi1hY3Rpb25zIixDSToidHJ1ZSIsR0lUSFVCX0VOVjoiL2hvbWUvcnVubmVyL3dvcmsvX3RlbXAvX3J1bm5lcl9maWxlX2NvbW1hbmRzL3NldF9lbnZfNWM0ZjZmMTgtMTY2NS00NjM4LWI0MjAtYmNkMDJmNjY1ODEwIixQSVBYX0hPTUU6Ii9vcHQvcGlweCIsbnBtX25vZGVfZXhlY3BhdGg6Ii9vcHQvaG9zdGVkdG9vbGNhY2hlL25vZGUvMTguMy4wL3g2NC9iaW4vbm9kZSIsSkFWQV9IT01FXzhfWDY0OiIvdXNyL2xpYi9qdm0vdGVtdXJpbi04LWpkay1hbWQ2NCIsTk9ERV9BVVRIX1RPS0VOOiJYWFhYWC1YWFhYWC1YWFhYWC1YWFhYWCIsU0hMVkw6IjEiLG5wbV9jb25maWdfbm9wcm94eToiIixIT01FOiIvaG9tZS9ydW5uZXIiLFJVTk5FUl9URU1QOiIvaG9tZS9ydW5uZXIvd29yay9fdGVtcCIsR0lUSFVCX0VWRU5UX1BBVEg6Ii9ob21lL3J1bm5lci93b3JrL190ZW1wL19naXRodWJfd29ya2Zsb3cvZXZlbnQuanNvbiIsbnBtX3BhY2thZ2VfanNvbjoiL2hvbWUvcnVubmVyL3dvcmsvc3Rzb2F1dGgycGx1Z2luL3N0c29hdXRoMnBsdWdpbi9wYWNrYWdlLmpzb24iLEpBVkFfSE9NRV8xMV9YNjQ6Ii91c3IvbGliL2p2bS90ZW11cmluLTExLWpkay1hbWQ2NCIsUElQWF9CSU5fRElSOiIvb3B0L3BpcHhfYmluIixHUkFBTFZNXzExX1JPT1Q6Ii91c3IvbG9jYWwvZ3JhYWx2bS9ncmFhbHZtLWNlLWphdmExMS0yMi4xLjAiLEdJVEhVQl9SRVBPU0lUT1JZX09XTkVSOiJuc3NodW50IixHUkFETEVfSE9NRToiL3Vzci9zaGFyZS9ncmFkbGUtNy40LjIiLEhPTUVCUkVXX1BSRUZJWDoiL2hvbWUvbGludXhicmV3Ly5saW51eGJyZXciLEFORFJPSURfTkRLX0xBVEVTVF9IT01FOiIvdXNyL2xvY2FsL2xpYi9hbmRyb2lkL3Nkay9uZGsvMjQuMC44MjE1ODg4IixHSVRIVUJfUkVURU5USU9OX0RBWVM6IjkwIixQT1dFUlNIRUxMX0RJU1RSSUJVVElPTl9DSEFOTkVMOiJHaXRIdWItQWN0aW9ucy11YnVudHUyMCIsQVpVUkVfRVhURU5TSU9OX0RJUjoiL29wdC9hei9hemNsaWV4dGVuc2lvbnMiLEdJVEhVQl9IRUFEX1JFRjoiIixucG1fY29uZmlnX2xvY2FsX3ByZWZpeDoiL2hvbWUvcnVubmVyL3dvcmsvc3Rzb2F1dGgycGx1Z2luL3N0c29hdXRoMnBsdWdpbiIsR0lUSFVCX0dSQVBIUUxfVVJMOiJodHRwczovL2FwaS5naXRodWIuY29tL2dyYXBocWwiLENPTE9SOiIwIixOVk1fRElSOiIvaG9tZS9ydW5uZXIvLm52bSIsbnBtX2NvbmZpZ19tZXRyaWNzX3JlZ2lzdHJ5OiJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy8iLERPVE5FVF9TS0lQX0ZJUlNUX1RJTUVfRVhQRVJJRU5DRToiMSIsSkFWQV9IT01FXzE3X1g2NDoiL3Vzci9saWIvanZtL3RlbXVyaW4tMTctamRrLWFtZDY0IixJbWFnZVZlcnNpb246IjIwMjIwNjA1LjEiLFJVTk5FUl9PUzoiTGludXgiLEdJVEhVQl9BUElfVVJMOiJodHRwczovL2FwaS5naXRodWIuY29tIixTV0lGVF9QQVRIOiIvdXNyL3NoYXJlL3N3aWZ0L3Vzci9iaW4iLFJVTk5FUl9VU0VSOiJydW5uZXIiLENIUk9NRVdFQkRSSVZFUjoiL3Vzci9sb2NhbC9zaGFyZS9jaHJvbWVfZHJpdmVyIixKT1VSTkFMX1NUUkVBTToiODoyMTgzNCIsR0lUSFVCX1dPUktGTE9XOiJOb2RlLmpzIFBhY2thZ2UiLF86Ii9vcHQvaG9zdGVkdG9vbGNhY2hlL25vZGUvMTguMy4wL3g2NC9iaW4vbnBtIixucG1fY29uZmlnX3ByZWZpeDoiL29wdC9ob3N0ZWR0b29sY2FjaGUvbm9kZS8xOC4zLjAveDY0IixHSVRIVUJfUlVOX0lEOiIyNDgzNTA2MDM1IixHT1JPT1RfMV8xNl9YNjQ6Ii9vcHQvaG9zdGVkdG9vbGNhY2hlL2dvLzEuMTYuMTUveDY0IixucG1fY29uZmlnX2NhY2hlOiIvaG9tZS9ydW5uZXIvLm5wbSIsR09ST09UXzFfMTdfWDY0OiIvb3B0L2hvc3RlZHRvb2xjYWNoZS9nby8xLjE3LjExL3g2NCIsR0lUSFVCX1JFRl9UWVBFOiJicmFuY2giLEJPT1RTVFJBUF9IQVNLRUxMX05PTklOVEVSQUNUSVZFOiIxIixHSVRIVUJfQkFTRV9SRUY6IiIsSW1hZ2VPUzoidWJ1bnR1MjAiLFBFUkZMT0dfTE9DQVRJT05fU0VUVElORzoiUlVOTkVSX1BFUkZMT0ciLEdPUk9PVF8xXzE4X1g2NDoiL29wdC9ob3N0ZWR0b29sY2FjaGUvZ28vMS4xOC4zL3g2NCIsR0lUSFVCX0FDVElPTl9SRVBPU0lUT1JZOiIiLG5wbV9jb25maWdfbm9kZV9neXA6Ii9vcHQvaG9zdGVkdG9vbGNhY2hlL25vZGUvMTguMy4wL3g2NC9saWIvbm9kZV9tb2R1bGVzL25wbS9ub2RlX21vZHVsZXMvbm9kZS1neXAvYmluL25vZGUtZ3lwLmpzIixQQVRIOiIvaG9tZS9ydW5uZXIvd29yay9zdHNvYXV0aDJwbHVnaW4vc3Rzb2F1dGgycGx1Z2luL25vZGVfbW9kdWxlcy8uYmluOi9ob21lL3J1bm5lci93b3JrL3N0c29hdXRoMnBsdWdpbi9ub2RlX21vZHVsZXMvLmJpbjovaG9tZS9ydW5uZXIvd29yay9ub2RlX21vZHVsZXMvLmJpbjovaG9tZS9ydW5uZXIvbm9kZV9tb2R1bGVzLy5iaW46L2hvbWUvbm9kZV9tb2R1bGVzLy5iaW46L25vZGVfbW9kdWxlcy8uYmluOi9vcHQvaG9zdGVkdG9vbGNhY2hlL25vZGUvMTguMy4wL3g2NC9saWIvbm9kZV9tb2R1bGVzL25wbS9ub2RlX21vZHVsZXMvQG5wbWNsaS9ydW4tc2NyaXB0L2xpYi9ub2RlLWd5cC1iaW46L29wdC9ob3N0ZWR0b29sY2FjaGUvbm9kZS8xOC4zLjAveDY0L2JpbjovaG9tZS9saW51eGJyZXcvLmxpbnV4YnJldy9iaW46L2hvbWUvbGludXhicmV3Ly5saW51eGJyZXcvc2JpbjovaG9tZS9ydW5uZXIvLmxvY2FsL2Jpbjovb3B0L3BpcHhfYmluOi9ob21lL3J1bm5lci8uY2FyZ28vYmluOi9ob21lL3J1bm5lci8uY29uZmlnL2NvbXBvc2VyL3ZlbmRvci9iaW46L3Vzci9sb2NhbC8uZ2hjdXAvYmluOi9ob21lL3J1bm5lci8uZG90bmV0L3Rvb2xzOi9zbmFwL2JpbjovdXNyL2xvY2FsL3NiaW46L3Vzci9sb2NhbC9iaW46L3Vzci9zYmluOi91c3IvYmluOi9zYmluOi9iaW46L3Vzci9nYW1lczovdXNyL2xvY2FsL2dhbWVzOi9zbmFwL2JpbiIsQU5UX0hPTUU6Ii91c3Ivc2hhcmUvYW50IixET1RORVRfTVVMVElMRVZFTF9MT09LVVA6IjAiLFJVTk5FUl9UUkFDS0lOR19JRDoiZ2l0aHViXzllMGE1YzdhLTk3OGYtNGZjZS1iZTlmLTE1OTdhNDVkM2Y4ZCIsSU5WT0NBVElPTl9JRDoiODIzMTUwNDBmNmNiNGIxODkxYjg3NTUwNzVkYmU3NDkiLEhPTUVCUkVXX0NFTExBUjoiL2hvbWUvbGludXhicmV3Ly5saW51eGJyZXcvQ2VsbGFyIixOUE1fQ09ORklHX1VTRVJDT05GSUc6Ii9ob21lL3J1bm5lci93b3JrL190ZW1wLy5ucG1yYyIsUlVOTkVSX1RPT0xfQ0FDSEU6Ii9vcHQvaG9zdGVkdG9vbGNhY2hlIixOT0RFOiIvb3B0L2hvc3RlZHRvb2xjYWNoZS9ub2RlLzE4LjMuMC94NjQvYmluL25vZGUiLG5wbV9wYWNrYWdlX25hbWU6IkBuc3NodW50L3N0c29hdXRoMnBsdWdpbiIsR0lUSFVCX0FDVElPTjoiX19ydW5fMiIsR0lUSFVCX1JVTl9OVU1CRVI6IjI0IixSVU5ORVJfQVJDSDoiWDY0IixBR0VOVF9UT09MU0RJUkVDVE9SWToiL29wdC9ob3N0ZWR0b29sY2FjaGUiLExBTkc6IkMuVVRGLTgiLFZDUEtHX0lOU1RBTExBVElPTl9ST09UOiIvdXNyL2xvY2FsL3NoYXJlL3ZjcGtnIixDT05EQToiL3Vzci9zaGFyZS9taW5pY29uZGEiLFJVTk5FUl9OQU1FOiJIb3N0ZWQgQWdlbnQiLFhER19DT05GSUdfSE9NRToiL2hvbWUvcnVubmVyLy5jb25maWciLEdJVEhVQl9SRUZfTkFNRToibWFpbiIsR0lUSFVCX1JFUE9TSVRPUlk6Im5zc2h1bnQvc3Rzb2F1dGgycGx1Z2luIixucG1fbGlmZWN5Y2xlX3NjcmlwdDoidml0ZSBidWlsZCIsQU5EUk9JRF9OREtfUk9PVDoiL3Vzci9sb2NhbC9saWIvYW5kcm9pZC9zZGsvbmRrLWJ1bmRsZSIsR0lUSFVCX0FDVElPTl9SRUY6IiIsREVCSUFOX0ZST05URU5EOiJub25pbnRlcmFjdGl2ZSIsR0lUSFVCX0FDVElPTlM6InRydWUiLG5wbV9wYWNrYWdlX3ZlcnNpb246IjAuMS4xMyIsbnBtX2xpZmVjeWNsZV9ldmVudDoiYnVpbGQiLEdJVEhVQl9SRUZfUFJPVEVDVEVEOiJmYWxzZSIsR0lUSFVCX1dPUktTUEFDRToiL2hvbWUvcnVubmVyL3dvcmsvc3Rzb2F1dGgycGx1Z2luL3N0c29hdXRoMnBsdWdpbiIsQUNDRVBUX0VVTEE6IlkiLEdJVEhVQl9KT0I6InB1Ymxpc2gtbnBtIixSVU5ORVJfUEVSRkxPRzoiL2hvbWUvcnVubmVyL3BlcmZsb2ciLEdJVEhVQl9TSEE6ImY2NTk4ZDE4ODYxYzYwODRhMzAyNDNjOWQ2YTlkMDIwMGUxZjllOTYiLEdJVEhVQl9SVU5fQVRURU1QVDoiMSIsR0lUSFVCX1JFRjoicmVmcy9oZWFkcy9tYWluIixHSVRIVUJfQUNUT1I6Im5zc2h1bnQiLEFORFJPSURfU0RLX1JPT1Q6Ii91c3IvbG9jYWwvbGliL2FuZHJvaWQvc2RrIixMRUlOX0hPTUU6Ii91c3IvbG9jYWwvbGliL2xlaW4iLG5wbV9jb25maWdfZ2xvYmFsY29uZmlnOiIvb3B0L2hvc3RlZHRvb2xjYWNoZS9ub2RlLzE4LjMuMC94NjQvZXRjL25wbXJjIixucG1fY29uZmlnX2luaXRfbW9kdWxlOiIvaG9tZS9ydW5uZXIvLm5wbS1pbml0LmpzIixHSVRIVUJfUEFUSDoiL2hvbWUvcnVubmVyL3dvcmsvX3RlbXAvX3J1bm5lcl9maWxlX2NvbW1hbmRzL2FkZF9wYXRoXzVjNGY2ZjE4LTE2NjUtNDYzOC1iNDIwLWJjZDAyZjY2NTgxMCIsSkFWQV9IT01FOiIvdXNyL2xpYi9qdm0vdGVtdXJpbi0xMS1qZGstYW1kNjQiLFBXRDoiL2hvbWUvcnVubmVyL3dvcmsvc3Rzb2F1dGgycGx1Z2luL3N0c29hdXRoMnBsdWdpbiIsUlVOTkVSX1dPUktTUEFDRToiL2hvbWUvcnVubmVyL3dvcmsvc3Rzb2F1dGgycGx1Z2luIixucG1fZXhlY3BhdGg6Ii9vcHQvaG9zdGVkdG9vbGNhY2hlL25vZGUvMTguMy4wL3g2NC9saWIvbm9kZV9tb2R1bGVzL25wbS9iaW4vbnBtLWNsaS5qcyIsSE9NRUJSRVdfQ0xFQU5VUF9QRVJJT0RJQ19GVUxMX0RBWVM6IjM2NTAiLEdJVEhVQl9FVkVOVF9OQU1FOiJwdXNoIixIT01FQlJFV19OT19BVVRPX1VQREFURToiMSIsQU5EUk9JRF9IT01FOiIvdXNyL2xvY2FsL2xpYi9hbmRyb2lkL3NkayIsR0lUSFVCX1NFUlZFUl9VUkw6Imh0dHBzOi8vZ2l0aHViLmNvbSIsR0VDS09XRUJEUklWRVI6Ii91c3IvbG9jYWwvc2hhcmUvZ2Vja29fZHJpdmVyIixMRUlOX0pBUjoiL3Vzci9sb2NhbC9saWIvbGVpbi9zZWxmLWluc3RhbGxzL2xlaW5pbmdlbi0yLjkuOC1zdGFuZGFsb25lLmphciIsbnBtX2NvbmZpZ19nbG9iYWxfcHJlZml4OiIvb3B0L2hvc3RlZHRvb2xjYWNoZS9ub2RlLzE4LjMuMC94NjQiLEhPTUVCUkVXX1JFUE9TSVRPUlk6Ii9ob21lL2xpbnV4YnJldy8ubGludXhicmV3L0hvbWVicmV3IixucG1fY29tbWFuZDoicnVuLXNjcmlwdCIsU0dYX0FFU01fQUREUjoiMSIsQ0hST01FX0JJTjoiL3Vzci9iaW4vZ29vZ2xlLWNocm9tZSIsU0VMRU5JVU1fSkFSX1BBVEg6Ii91c3Ivc2hhcmUvamF2YS9zZWxlbml1bS1zZXJ2ZXIuamFyIixBTkRST0lEX05ES19IT01FOiIvdXNyL2xvY2FsL2xpYi9hbmRyb2lkL3Nkay9uZGstYnVuZGxlIixHSVRIVUJfU1RFUF9TVU1NQVJZOiIvaG9tZS9ydW5uZXIvd29yay9fdGVtcC9fcnVubmVyX2ZpbGVfY29tbWFuZHMvc3RlcF9zdW1tYXJ5XzVjNGY2ZjE4LTE2NjUtNDYzOC1iNDIwLWJjZDAyZjY2NTgxMCIsSU5JVF9DV0Q6Ii9ob21lL3J1bm5lci93b3JrL3N0c29hdXRoMnBsdWdpbi9zdHNvYXV0aDJwbHVnaW4iLEVESVRPUjoidmkiLE5PREVfRU5WOiJwcm9kdWN0aW9uIn0uU0NPUEUsY29kZTpvLmNvZGUscmVkaXJlY3RfdXJpOntERVBMT1lNRU5UX0JBU0VQQVRIOiIvb3B0L3J1bm5lciIsRE9UTkVUX05PTE9HTzoiMSIsVVNFUjoicnVubmVyIixucG1fY29uZmlnX2Fsd2F5c19hdXRoOiIiLG5wbV9jb25maWdfdXNlcl9hZ2VudDoibnBtLzguMTEuMCBub2RlL3YxOC4zLjAgbGludXggeDY0IHdvcmtzcGFjZXMvZmFsc2UgY2kvZ2l0aHViLWFjdGlvbnMiLENJOiJ0cnVlIixHSVRIVUJfRU5WOiIvaG9tZS9ydW5uZXIvd29yay9fdGVtcC9fcnVubmVyX2ZpbGVfY29tbWFuZHMvc2V0X2Vudl81YzRmNmYxOC0xNjY1LTQ2MzgtYjQyMC1iY2QwMmY2NjU4MTAiLFBJUFhfSE9NRToiL29wdC9waXB4IixucG1fbm9kZV9leGVjcGF0aDoiL29wdC9ob3N0ZWR0b29sY2FjaGUvbm9kZS8xOC4zLjAveDY0L2Jpbi9ub2RlIixKQVZBX0hPTUVfOF9YNjQ6Ii91c3IvbGliL2p2bS90ZW11cmluLTgtamRrLWFtZDY0IixOT0RFX0FVVEhfVE9LRU46IlhYWFhYLVhYWFhYLVhYWFhYLVhYWFhYIixTSExWTDoiMSIsbnBtX2NvbmZpZ19ub3Byb3h5OiIiLEhPTUU6Ii9ob21lL3J1bm5lciIsUlVOTkVSX1RFTVA6Ii9ob21lL3J1bm5lci93b3JrL190ZW1wIixHSVRIVUJfRVZFTlRfUEFUSDoiL2hvbWUvcnVubmVyL3dvcmsvX3RlbXAvX2dpdGh1Yl93b3JrZmxvdy9ldmVudC5qc29uIixucG1fcGFja2FnZV9qc29uOiIvaG9tZS9ydW5uZXIvd29yay9zdHNvYXV0aDJwbHVnaW4vc3Rzb2F1dGgycGx1Z2luL3BhY2thZ2UuanNvbiIsSkFWQV9IT01FXzExX1g2NDoiL3Vzci9saWIvanZtL3RlbXVyaW4tMTEtamRrLWFtZDY0IixQSVBYX0JJTl9ESVI6Ii9vcHQvcGlweF9iaW4iLEdSQUFMVk1fMTFfUk9PVDoiL3Vzci9sb2NhbC9ncmFhbHZtL2dyYWFsdm0tY2UtamF2YTExLTIyLjEuMCIsR0lUSFVCX1JFUE9TSVRPUllfT1dORVI6Im5zc2h1bnQiLEdSQURMRV9IT01FOiIvdXNyL3NoYXJlL2dyYWRsZS03LjQuMiIsSE9NRUJSRVdfUFJFRklYOiIvaG9tZS9saW51eGJyZXcvLmxpbnV4YnJldyIsQU5EUk9JRF9OREtfTEFURVNUX0hPTUU6Ii91c3IvbG9jYWwvbGliL2FuZHJvaWQvc2RrL25kay8yNC4wLjgyMTU4ODgiLEdJVEhVQl9SRVRFTlRJT05fREFZUzoiOTAiLFBPV0VSU0hFTExfRElTVFJJQlVUSU9OX0NIQU5ORUw6IkdpdEh1Yi1BY3Rpb25zLXVidW50dTIwIixBWlVSRV9FWFRFTlNJT05fRElSOiIvb3B0L2F6L2F6Y2xpZXh0ZW5zaW9ucyIsR0lUSFVCX0hFQURfUkVGOiIiLG5wbV9jb25maWdfbG9jYWxfcHJlZml4OiIvaG9tZS9ydW5uZXIvd29yay9zdHNvYXV0aDJwbHVnaW4vc3Rzb2F1dGgycGx1Z2luIixHSVRIVUJfR1JBUEhRTF9VUkw6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vZ3JhcGhxbCIsQ09MT1I6IjAiLE5WTV9ESVI6Ii9ob21lL3J1bm5lci8ubnZtIixucG1fY29uZmlnX21ldHJpY3NfcmVnaXN0cnk6Imh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnLyIsRE9UTkVUX1NLSVBfRklSU1RfVElNRV9FWFBFUklFTkNFOiIxIixKQVZBX0hPTUVfMTdfWDY0OiIvdXNyL2xpYi9qdm0vdGVtdXJpbi0xNy1qZGstYW1kNjQiLEltYWdlVmVyc2lvbjoiMjAyMjA2MDUuMSIsUlVOTkVSX09TOiJMaW51eCIsR0lUSFVCX0FQSV9VUkw6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20iLFNXSUZUX1BBVEg6Ii91c3Ivc2hhcmUvc3dpZnQvdXNyL2JpbiIsUlVOTkVSX1VTRVI6InJ1bm5lciIsQ0hST01FV0VCRFJJVkVSOiIvdXNyL2xvY2FsL3NoYXJlL2Nocm9tZV9kcml2ZXIiLEpPVVJOQUxfU1RSRUFNOiI4OjIxODM0IixHSVRIVUJfV09SS0ZMT1c6Ik5vZGUuanMgUGFja2FnZSIsXzoiL29wdC9ob3N0ZWR0b29sY2FjaGUvbm9kZS8xOC4zLjAveDY0L2Jpbi9ucG0iLG5wbV9jb25maWdfcHJlZml4OiIvb3B0L2hvc3RlZHRvb2xjYWNoZS9ub2RlLzE4LjMuMC94NjQiLEdJVEhVQl9SVU5fSUQ6IjI0ODM1MDYwMzUiLEdPUk9PVF8xXzE2X1g2NDoiL29wdC9ob3N0ZWR0b29sY2FjaGUvZ28vMS4xNi4xNS94NjQiLG5wbV9jb25maWdfY2FjaGU6Ii9ob21lL3J1bm5lci8ubnBtIixHT1JPT1RfMV8xN19YNjQ6Ii9vcHQvaG9zdGVkdG9vbGNhY2hlL2dvLzEuMTcuMTEveDY0IixHSVRIVUJfUkVGX1RZUEU6ImJyYW5jaCIsQk9PVFNUUkFQX0hBU0tFTExfTk9OSU5URVJBQ1RJVkU6IjEiLEdJVEhVQl9CQVNFX1JFRjoiIixJbWFnZU9TOiJ1YnVudHUyMCIsUEVSRkxPR19MT0NBVElPTl9TRVRUSU5HOiJSVU5ORVJfUEVSRkxPRyIsR09ST09UXzFfMThfWDY0OiIvb3B0L2hvc3RlZHRvb2xjYWNoZS9nby8xLjE4LjMveDY0IixHSVRIVUJfQUNUSU9OX1JFUE9TSVRPUlk6IiIsbnBtX2NvbmZpZ19ub2RlX2d5cDoiL29wdC9ob3N0ZWR0b29sY2FjaGUvbm9kZS8xOC4zLjAveDY0L2xpYi9ub2RlX21vZHVsZXMvbnBtL25vZGVfbW9kdWxlcy9ub2RlLWd5cC9iaW4vbm9kZS1neXAuanMiLFBBVEg6Ii9ob21lL3J1bm5lci93b3JrL3N0c29hdXRoMnBsdWdpbi9zdHNvYXV0aDJwbHVnaW4vbm9kZV9tb2R1bGVzLy5iaW46L2hvbWUvcnVubmVyL3dvcmsvc3Rzb2F1dGgycGx1Z2luL25vZGVfbW9kdWxlcy8uYmluOi9ob21lL3J1bm5lci93b3JrL25vZGVfbW9kdWxlcy8uYmluOi9ob21lL3J1bm5lci9ub2RlX21vZHVsZXMvLmJpbjovaG9tZS9ub2RlX21vZHVsZXMvLmJpbjovbm9kZV9tb2R1bGVzLy5iaW46L29wdC9ob3N0ZWR0b29sY2FjaGUvbm9kZS8xOC4zLjAveDY0L2xpYi9ub2RlX21vZHVsZXMvbnBtL25vZGVfbW9kdWxlcy9AbnBtY2xpL3J1bi1zY3JpcHQvbGliL25vZGUtZ3lwLWJpbjovb3B0L2hvc3RlZHRvb2xjYWNoZS9ub2RlLzE4LjMuMC94NjQvYmluOi9ob21lL2xpbnV4YnJldy8ubGludXhicmV3L2JpbjovaG9tZS9saW51eGJyZXcvLmxpbnV4YnJldy9zYmluOi9ob21lL3J1bm5lci8ubG9jYWwvYmluOi9vcHQvcGlweF9iaW46L2hvbWUvcnVubmVyLy5jYXJnby9iaW46L2hvbWUvcnVubmVyLy5jb25maWcvY29tcG9zZXIvdmVuZG9yL2JpbjovdXNyL2xvY2FsLy5naGN1cC9iaW46L2hvbWUvcnVubmVyLy5kb3RuZXQvdG9vbHM6L3NuYXAvYmluOi91c3IvbG9jYWwvc2JpbjovdXNyL2xvY2FsL2JpbjovdXNyL3NiaW46L3Vzci9iaW46L3NiaW46L2JpbjovdXNyL2dhbWVzOi91c3IvbG9jYWwvZ2FtZXM6L3NuYXAvYmluIixBTlRfSE9NRToiL3Vzci9zaGFyZS9hbnQiLERPVE5FVF9NVUxUSUxFVkVMX0xPT0tVUDoiMCIsUlVOTkVSX1RSQUNLSU5HX0lEOiJnaXRodWJfOWUwYTVjN2EtOTc4Zi00ZmNlLWJlOWYtMTU5N2E0NWQzZjhkIixJTlZPQ0FUSU9OX0lEOiI4MjMxNTA0MGY2Y2I0YjE4OTFiODc1NTA3NWRiZTc0OSIsSE9NRUJSRVdfQ0VMTEFSOiIvaG9tZS9saW51eGJyZXcvLmxpbnV4YnJldy9DZWxsYXIiLE5QTV9DT05GSUdfVVNFUkNPTkZJRzoiL2hvbWUvcnVubmVyL3dvcmsvX3RlbXAvLm5wbXJjIixSVU5ORVJfVE9PTF9DQUNIRToiL29wdC9ob3N0ZWR0b29sY2FjaGUiLE5PREU6Ii9vcHQvaG9zdGVkdG9vbGNhY2hlL25vZGUvMTguMy4wL3g2NC9iaW4vbm9kZSIsbnBtX3BhY2thZ2VfbmFtZToiQG5zc2h1bnQvc3Rzb2F1dGgycGx1Z2luIixHSVRIVUJfQUNUSU9OOiJfX3J1bl8yIixHSVRIVUJfUlVOX05VTUJFUjoiMjQiLFJVTk5FUl9BUkNIOiJYNjQiLEFHRU5UX1RPT0xTRElSRUNUT1JZOiIvb3B0L2hvc3RlZHRvb2xjYWNoZSIsTEFORzoiQy5VVEYtOCIsVkNQS0dfSU5TVEFMTEFUSU9OX1JPT1Q6Ii91c3IvbG9jYWwvc2hhcmUvdmNwa2ciLENPTkRBOiIvdXNyL3NoYXJlL21pbmljb25kYSIsUlVOTkVSX05BTUU6Ikhvc3RlZCBBZ2VudCIsWERHX0NPTkZJR19IT01FOiIvaG9tZS9ydW5uZXIvLmNvbmZpZyIsR0lUSFVCX1JFRl9OQU1FOiJtYWluIixHSVRIVUJfUkVQT1NJVE9SWToibnNzaHVudC9zdHNvYXV0aDJwbHVnaW4iLG5wbV9saWZlY3ljbGVfc2NyaXB0OiJ2aXRlIGJ1aWxkIixBTkRST0lEX05ES19ST09UOiIvdXNyL2xvY2FsL2xpYi9hbmRyb2lkL3Nkay9uZGstYnVuZGxlIixHSVRIVUJfQUNUSU9OX1JFRjoiIixERUJJQU5fRlJPTlRFTkQ6Im5vbmludGVyYWN0aXZlIixHSVRIVUJfQUNUSU9OUzoidHJ1ZSIsbnBtX3BhY2thZ2VfdmVyc2lvbjoiMC4xLjEzIixucG1fbGlmZWN5Y2xlX2V2ZW50OiJidWlsZCIsR0lUSFVCX1JFRl9QUk9URUNURUQ6ImZhbHNlIixHSVRIVUJfV09SS1NQQUNFOiIvaG9tZS9ydW5uZXIvd29yay9zdHNvYXV0aDJwbHVnaW4vc3Rzb2F1dGgycGx1Z2luIixBQ0NFUFRfRVVMQToiWSIsR0lUSFVCX0pPQjoicHVibGlzaC1ucG0iLFJVTk5FUl9QRVJGTE9HOiIvaG9tZS9ydW5uZXIvcGVyZmxvZyIsR0lUSFVCX1NIQToiZjY1OThkMTg4NjFjNjA4NGEzMDI0M2M5ZDZhOWQwMjAwZTFmOWU5NiIsR0lUSFVCX1JVTl9BVFRFTVBUOiIxIixHSVRIVUJfUkVGOiJyZWZzL2hlYWRzL21haW4iLEdJVEhVQl9BQ1RPUjoibnNzaHVudCIsQU5EUk9JRF9TREtfUk9PVDoiL3Vzci9sb2NhbC9saWIvYW5kcm9pZC9zZGsiLExFSU5fSE9NRToiL3Vzci9sb2NhbC9saWIvbGVpbiIsbnBtX2NvbmZpZ19nbG9iYWxjb25maWc6Ii9vcHQvaG9zdGVkdG9vbGNhY2hlL25vZGUvMTguMy4wL3g2NC9ldGMvbnBtcmMiLG5wbV9jb25maWdfaW5pdF9tb2R1bGU6Ii9ob21lL3J1bm5lci8ubnBtLWluaXQuanMiLEdJVEhVQl9QQVRIOiIvaG9tZS9ydW5uZXIvd29yay9fdGVtcC9fcnVubmVyX2ZpbGVfY29tbWFuZHMvYWRkX3BhdGhfNWM0ZjZmMTgtMTY2NS00NjM4LWI0MjAtYmNkMDJmNjY1ODEwIixKQVZBX0hPTUU6Ii91c3IvbGliL2p2bS90ZW11cmluLTExLWpkay1hbWQ2NCIsUFdEOiIvaG9tZS9ydW5uZXIvd29yay9zdHNvYXV0aDJwbHVnaW4vc3Rzb2F1dGgycGx1Z2luIixSVU5ORVJfV09SS1NQQUNFOiIvaG9tZS9ydW5uZXIvd29yay9zdHNvYXV0aDJwbHVnaW4iLG5wbV9leGVjcGF0aDoiL29wdC9ob3N0ZWR0b29sY2FjaGUvbm9kZS8xOC4zLjAveDY0L2xpYi9ub2RlX21vZHVsZXMvbnBtL2Jpbi9ucG0tY2xpLmpzIixIT01FQlJFV19DTEVBTlVQX1BFUklPRElDX0ZVTExfREFZUzoiMzY1MCIsR0lUSFVCX0VWRU5UX05BTUU6InB1c2giLEhPTUVCUkVXX05PX0FVVE9fVVBEQVRFOiIxIixBTkRST0lEX0hPTUU6Ii91c3IvbG9jYWwvbGliL2FuZHJvaWQvc2RrIixHSVRIVUJfU0VSVkVSX1VSTDoiaHR0cHM6Ly9naXRodWIuY29tIixHRUNLT1dFQkRSSVZFUjoiL3Vzci9sb2NhbC9zaGFyZS9nZWNrb19kcml2ZXIiLExFSU5fSkFSOiIvdXNyL2xvY2FsL2xpYi9sZWluL3NlbGYtaW5zdGFsbHMvbGVpbmluZ2VuLTIuOS44LXN0YW5kYWxvbmUuamFyIixucG1fY29uZmlnX2dsb2JhbF9wcmVmaXg6Ii9vcHQvaG9zdGVkdG9vbGNhY2hlL25vZGUvMTguMy4wL3g2NCIsSE9NRUJSRVdfUkVQT1NJVE9SWToiL2hvbWUvbGludXhicmV3Ly5saW51eGJyZXcvSG9tZWJyZXciLG5wbV9jb21tYW5kOiJydW4tc2NyaXB0IixTR1hfQUVTTV9BRERSOiIxIixDSFJPTUVfQklOOiIvdXNyL2Jpbi9nb29nbGUtY2hyb21lIixTRUxFTklVTV9KQVJfUEFUSDoiL3Vzci9zaGFyZS9qYXZhL3NlbGVuaXVtLXNlcnZlci5qYXIiLEFORFJPSURfTkRLX0hPTUU6Ii91c3IvbG9jYWwvbGliL2FuZHJvaWQvc2RrL25kay1idW5kbGUiLEdJVEhVQl9TVEVQX1NVTU1BUlk6Ii9ob21lL3J1bm5lci93b3JrL190ZW1wL19ydW5uZXJfZmlsZV9jb21tYW5kcy9zdGVwX3N1bW1hcnlfNWM0ZjZmMTgtMTY2NS00NjM4LWI0MjAtYmNkMDJmNjY1ODEwIixJTklUX0NXRDoiL2hvbWUvcnVubmVyL3dvcmsvc3Rzb2F1dGgycGx1Z2luL3N0c29hdXRoMnBsdWdpbiIsRURJVE9SOiJ2aSIsTk9ERV9FTlY6InByb2R1Y3Rpb24ifS5SRURJUkVDVF9VUkksZ3JhbnRfdHlwZTpBdC5BVVRIT1JJWkFUSU9OX0NPREUsY29kZV92ZXJpZmllcjpyLmNvZGVfdmVyaWZpZXJ9O3JldHVybiBYKHRoaXMsX3IpLmNhbGwodGhpcyx0KX0pLHVlKHRoaXMsTHIsYXN5bmMoKT0+e2NvbnNvbGUubG9nKCJSZWZyZXNoVG9rZW4iKTtjb25zdCByPVgodGhpcyxCZSkuZ2V0KFgodGhpcyxqZSkpO2lmKHIpe2NvbnN0IG89e2NsaWVudF9pZDp7REVQTE9ZTUVOVF9CQVNFUEFUSDoiL29wdC9ydW5uZXIiLERPVE5FVF9OT0xPR086IjEiLFVTRVI6InJ1bm5lciIsbnBtX2NvbmZpZ19hbHdheXNfYXV0aDoiIixucG1fY29uZmlnX3VzZXJfYWdlbnQ6Im5wbS84LjExLjAgbm9kZS92MTguMy4wIGxpbnV4IHg2NCB3b3Jrc3BhY2VzL2ZhbHNlIGNpL2dpdGh1Yi1hY3Rpb25zIixDSToidHJ1ZSIsR0lUSFVCX0VOVjoiL2hvbWUvcnVubmVyL3dvcmsvX3RlbXAvX3J1bm5lcl9maWxlX2NvbW1hbmRzL3NldF9lbnZfNWM0ZjZmMTgtMTY2NS00NjM4LWI0MjAtYmNkMDJmNjY1ODEwIixQSVBYX0hPTUU6Ii9vcHQvcGlweCIsbnBtX25vZGVfZXhlY3BhdGg6Ii9vcHQvaG9zdGVkdG9vbGNhY2hlL25vZGUvMTguMy4wL3g2NC9iaW4vbm9kZSIsSkFWQV9IT01FXzhfWDY0OiIvdXNyL2xpYi9qdm0vdGVtdXJpbi04LWpkay1hbWQ2NCIsTk9ERV9BVVRIX1RPS0VOOiJYWFhYWC1YWFhYWC1YWFhYWC1YWFhYWCIsU0hMVkw6IjEiLG5wbV9jb25maWdfbm9wcm94eToiIixIT01FOiIvaG9tZS9ydW5uZXIiLFJVTk5FUl9URU1QOiIvaG9tZS9ydW5uZXIvd29yay9fdGVtcCIsR0lUSFVCX0VWRU5UX1BBVEg6Ii9ob21lL3J1bm5lci93b3JrL190ZW1wL19naXRodWJfd29ya2Zsb3cvZXZlbnQuanNvbiIsbnBtX3BhY2thZ2VfanNvbjoiL2hvbWUvcnVubmVyL3dvcmsvc3Rzb2F1dGgycGx1Z2luL3N0c29hdXRoMnBsdWdpbi9wYWNrYWdlLmpzb24iLEpBVkFfSE9NRV8xMV9YNjQ6Ii91c3IvbGliL2p2bS90ZW11cmluLTExLWpkay1hbWQ2NCIsUElQWF9CSU5fRElSOiIvb3B0L3BpcHhfYmluIixHUkFBTFZNXzExX1JPT1Q6Ii91c3IvbG9jYWwvZ3JhYWx2bS9ncmFhbHZtLWNlLWphdmExMS0yMi4xLjAiLEdJVEhVQl9SRVBPU0lUT1JZX09XTkVSOiJuc3NodW50IixHUkFETEVfSE9NRToiL3Vzci9zaGFyZS9ncmFkbGUtNy40LjIiLEhPTUVCUkVXX1BSRUZJWDoiL2hvbWUvbGludXhicmV3Ly5saW51eGJyZXciLEFORFJPSURfTkRLX0xBVEVTVF9IT01FOiIvdXNyL2xvY2FsL2xpYi9hbmRyb2lkL3Nkay9uZGsvMjQuMC44MjE1ODg4IixHSVRIVUJfUkVURU5USU9OX0RBWVM6IjkwIixQT1dFUlNIRUxMX0RJU1RSSUJVVElPTl9DSEFOTkVMOiJHaXRIdWItQWN0aW9ucy11YnVudHUyMCIsQVpVUkVfRVhURU5TSU9OX0RJUjoiL29wdC9hei9hemNsaWV4dGVuc2lvbnMiLEdJVEhVQl9IRUFEX1JFRjoiIixucG1fY29uZmlnX2xvY2FsX3ByZWZpeDoiL2hvbWUvcnVubmVyL3dvcmsvc3Rzb2F1dGgycGx1Z2luL3N0c29hdXRoMnBsdWdpbiIsR0lUSFVCX0dSQVBIUUxfVVJMOiJodHRwczovL2FwaS5naXRodWIuY29tL2dyYXBocWwiLENPTE9SOiIwIixOVk1fRElSOiIvaG9tZS9ydW5uZXIvLm52bSIsbnBtX2NvbmZpZ19tZXRyaWNzX3JlZ2lzdHJ5OiJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy8iLERPVE5FVF9TS0lQX0ZJUlNUX1RJTUVfRVhQRVJJRU5DRToiMSIsSkFWQV9IT01FXzE3X1g2NDoiL3Vzci9saWIvanZtL3RlbXVyaW4tMTctamRrLWFtZDY0IixJbWFnZVZlcnNpb246IjIwMjIwNjA1LjEiLFJVTk5FUl9PUzoiTGludXgiLEdJVEhVQl9BUElfVVJMOiJodHRwczovL2FwaS5naXRodWIuY29tIixTV0lGVF9QQVRIOiIvdXNyL3NoYXJlL3N3aWZ0L3Vzci9iaW4iLFJVTk5FUl9VU0VSOiJydW5uZXIiLENIUk9NRVdFQkRSSVZFUjoiL3Vzci9sb2NhbC9zaGFyZS9jaHJvbWVfZHJpdmVyIixKT1VSTkFMX1NUUkVBTToiODoyMTgzNCIsR0lUSFVCX1dPUktGTE9XOiJOb2RlLmpzIFBhY2thZ2UiLF86Ii9vcHQvaG9zdGVkdG9vbGNhY2hlL25vZGUvMTguMy4wL3g2NC9iaW4vbnBtIixucG1fY29uZmlnX3ByZWZpeDoiL29wdC9ob3N0ZWR0b29sY2FjaGUvbm9kZS8xOC4zLjAveDY0IixHSVRIVUJfUlVOX0lEOiIyNDgzNTA2MDM1IixHT1JPT1RfMV8xNl9YNjQ6Ii9vcHQvaG9zdGVkdG9vbGNhY2hlL2dvLzEuMTYuMTUveDY0IixucG1fY29uZmlnX2NhY2hlOiIvaG9tZS9ydW5uZXIvLm5wbSIsR09ST09UXzFfMTdfWDY0OiIvb3B0L2hvc3RlZHRvb2xjYWNoZS9nby8xLjE3LjExL3g2NCIsR0lUSFVCX1JFRl9UWVBFOiJicmFuY2giLEJPT1RTVFJBUF9IQVNLRUxMX05PTklOVEVSQUNUSVZFOiIxIixHSVRIVUJfQkFTRV9SRUY6IiIsSW1hZ2VPUzoidWJ1bnR1MjAiLFBFUkZMT0dfTE9DQVRJT05fU0VUVElORzoiUlVOTkVSX1BFUkZMT0ciLEdPUk9PVF8xXzE4X1g2NDoiL29wdC9ob3N0ZWR0b29sY2FjaGUvZ28vMS4xOC4zL3g2NCIsR0lUSFVCX0FDVElPTl9SRVBPU0lUT1JZOiIiLG5wbV9jb25maWdfbm9kZV9neXA6Ii9vcHQvaG9zdGVkdG9vbGNhY2hlL25vZGUvMTguMy4wL3g2NC9saWIvbm9kZV9tb2R1bGVzL25wbS9ub2RlX21vZHVsZXMvbm9kZS1neXAvYmluL25vZGUtZ3lwLmpzIixQQVRIOiIvaG9tZS9ydW5uZXIvd29yay9zdHNvYXV0aDJwbHVnaW4vc3Rzb2F1dGgycGx1Z2luL25vZGVfbW9kdWxlcy8uYmluOi9ob21lL3J1bm5lci93b3JrL3N0c29hdXRoMnBsdWdpbi9ub2RlX21vZHVsZXMvLmJpbjovaG9tZS9ydW5uZXIvd29yay9ub2RlX21vZHVsZXMvLmJpbjovaG9tZS9ydW5uZXIvbm9kZV9tb2R1bGVzLy5iaW46L2hvbWUvbm9kZV9tb2R1bGVzLy5iaW46L25vZGVfbW9kdWxlcy8uYmluOi9vcHQvaG9zdGVkdG9vbGNhY2hlL25vZGUvMTguMy4wL3g2NC9saWIvbm9kZV9tb2R1bGVzL25wbS9ub2RlX21vZHVsZXMvQG5wbWNsaS9ydW4tc2NyaXB0L2xpYi9ub2RlLWd5cC1iaW46L29wdC9ob3N0ZWR0b29sY2FjaGUvbm9kZS8xOC4zLjAveDY0L2JpbjovaG9tZS9saW51eGJyZXcvLmxpbnV4YnJldy9iaW46L2hvbWUvbGludXhicmV3Ly5saW51eGJyZXcvc2JpbjovaG9tZS9ydW5uZXIvLmxvY2FsL2Jpbjovb3B0L3BpcHhfYmluOi9ob21lL3J1bm5lci8uY2FyZ28vYmluOi9ob21lL3J1bm5lci8uY29uZmlnL2NvbXBvc2VyL3ZlbmRvci9iaW46L3Vzci9sb2NhbC8uZ2hjdXAvYmluOi9ob21lL3J1bm5lci8uZG90bmV0L3Rvb2xzOi9zbmFwL2JpbjovdXNyL2xvY2FsL3NiaW46L3Vzci9sb2NhbC9iaW46L3Vzci9zYmluOi91c3IvYmluOi9zYmluOi9iaW46L3Vzci9nYW1lczovdXNyL2xvY2FsL2dhbWVzOi9zbmFwL2JpbiIsQU5UX0hPTUU6Ii91c3Ivc2hhcmUvYW50IixET1RORVRfTVVMVElMRVZFTF9MT09LVVA6IjAiLFJVTk5FUl9UUkFDS0lOR19JRDoiZ2l0aHViXzllMGE1YzdhLTk3OGYtNGZjZS1iZTlmLTE1OTdhNDVkM2Y4ZCIsSU5WT0NBVElPTl9JRDoiODIzMTUwNDBmNmNiNGIxODkxYjg3NTUwNzVkYmU3NDkiLEhPTUVCUkVXX0NFTExBUjoiL2hvbWUvbGludXhicmV3Ly5saW51eGJyZXcvQ2VsbGFyIixOUE1fQ09ORklHX1VTRVJDT05GSUc6Ii9ob21lL3J1bm5lci93b3JrL190ZW1wLy5ucG1yYyIsUlVOTkVSX1RPT0xfQ0FDSEU6Ii9vcHQvaG9zdGVkdG9vbGNhY2hlIixOT0RFOiIvb3B0L2hvc3RlZHRvb2xjYWNoZS9ub2RlLzE4LjMuMC94NjQvYmluL25vZGUiLG5wbV9wYWNrYWdlX25hbWU6IkBuc3NodW50L3N0c29hdXRoMnBsdWdpbiIsR0lUSFVCX0FDVElPTjoiX19ydW5fMiIsR0lUSFVCX1JVTl9OVU1CRVI6IjI0IixSVU5ORVJfQVJDSDoiWDY0IixBR0VOVF9UT09MU0RJUkVDVE9SWToiL29wdC9ob3N0ZWR0b29sY2FjaGUiLExBTkc6IkMuVVRGLTgiLFZDUEtHX0lOU1RBTExBVElPTl9ST09UOiIvdXNyL2xvY2FsL3NoYXJlL3ZjcGtnIixDT05EQToiL3Vzci9zaGFyZS9taW5pY29uZGEiLFJVTk5FUl9OQU1FOiJIb3N0ZWQgQWdlbnQiLFhER19DT05GSUdfSE9NRToiL2hvbWUvcnVubmVyLy5jb25maWciLEdJVEhVQl9SRUZfTkFNRToibWFpbiIsR0lUSFVCX1JFUE9TSVRPUlk6Im5zc2h1bnQvc3Rzb2F1dGgycGx1Z2luIixucG1fbGlmZWN5Y2xlX3NjcmlwdDoidml0ZSBidWlsZCIsQU5EUk9JRF9OREtfUk9PVDoiL3Vzci9sb2NhbC9saWIvYW5kcm9pZC9zZGsvbmRrLWJ1bmRsZSIsR0lUSFVCX0FDVElPTl9SRUY6IiIsREVCSUFOX0ZST05URU5EOiJub25pbnRlcmFjdGl2ZSIsR0lUSFVCX0FDVElPTlM6InRydWUiLG5wbV9wYWNrYWdlX3ZlcnNpb246IjAuMS4xMyIsbnBtX2xpZmVjeWNsZV9ldmVudDoiYnVpbGQiLEdJVEhVQl9SRUZfUFJPVEVDVEVEOiJmYWxzZSIsR0lUSFVCX1dPUktTUEFDRToiL2hvbWUvcnVubmVyL3dvcmsvc3Rzb2F1dGgycGx1Z2luL3N0c29hdXRoMnBsdWdpbiIsQUNDRVBUX0VVTEE6IlkiLEdJVEhVQl9KT0I6InB1Ymxpc2gtbnBtIixSVU5ORVJfUEVSRkxPRzoiL2hvbWUvcnVubmVyL3BlcmZsb2ciLEdJVEhVQl9TSEE6ImY2NTk4ZDE4ODYxYzYwODRhMzAyNDNjOWQ2YTlkMDIwMGUxZjllOTYiLEdJVEhVQl9SVU5fQVRURU1QVDoiMSIsR0lUSFVCX1JFRjoicmVmcy9oZWFkcy9tYWluIixHSVRIVUJfQUNUT1I6Im5zc2h1bnQiLEFORFJPSURfU0RLX1JPT1Q6Ii91c3IvbG9jYWwvbGliL2FuZHJvaWQvc2RrIixMRUlOX0hPTUU6Ii91c3IvbG9jYWwvbGliL2xlaW4iLG5wbV9jb25maWdfZ2xvYmFsY29uZmlnOiIvb3B0L2hvc3RlZHRvb2xjYWNoZS9ub2RlLzE4LjMuMC94NjQvZXRjL25wbXJjIixucG1fY29uZmlnX2luaXRfbW9kdWxlOiIvaG9tZS9ydW5uZXIvLm5wbS1pbml0LmpzIixHSVRIVUJfUEFUSDoiL2hvbWUvcnVubmVyL3dvcmsvX3RlbXAvX3J1bm5lcl9maWxlX2NvbW1hbmRzL2FkZF9wYXRoXzVjNGY2ZjE4LTE2NjUtNDYzOC1iNDIwLWJjZDAyZjY2NTgxMCIsSkFWQV9IT01FOiIvdXNyL2xpYi9qdm0vdGVtdXJpbi0xMS1qZGstYW1kNjQiLFBXRDoiL2hvbWUvcnVubmVyL3dvcmsvc3Rzb2F1dGgycGx1Z2luL3N0c29hdXRoMnBsdWdpbiIsUlVOTkVSX1dPUktTUEFDRToiL2hvbWUvcnVubmVyL3dvcmsvc3Rzb2F1dGgycGx1Z2luIixucG1fZXhlY3BhdGg6Ii9vcHQvaG9zdGVkdG9vbGNhY2hlL25vZGUvMTguMy4wL3g2NC9saWIvbm9kZV9tb2R1bGVzL25wbS9iaW4vbnBtLWNsaS5qcyIsSE9NRUJSRVdfQ0xFQU5VUF9QRVJJT0RJQ19GVUxMX0RBWVM6IjM2NTAiLEdJVEhVQl9FVkVOVF9OQU1FOiJwdXNoIixIT01FQlJFV19OT19BVVRPX1VQREFURToiMSIsQU5EUk9JRF9IT01FOiIvdXNyL2xvY2FsL2xpYi9hbmRyb2lkL3NkayIsR0lUSFVCX1NFUlZFUl9VUkw6Imh0dHBzOi8vZ2l0aHViLmNvbSIsR0VDS09XRUJEUklWRVI6Ii91c3IvbG9jYWwvc2hhcmUvZ2Vja29fZHJpdmVyIixMRUlOX0pBUjoiL3Vzci9sb2NhbC9saWIvbGVpbi9zZWxmLWluc3RhbGxzL2xlaW5pbmdlbi0yLjkuOC1zdGFuZGFsb25lLmphciIsbnBtX2NvbmZpZ19nbG9iYWxfcHJlZml4OiIvb3B0L2hvc3RlZHRvb2xjYWNoZS9ub2RlLzE4LjMuMC94NjQiLEhPTUVCUkVXX1JFUE9TSVRPUlk6Ii9ob21lL2xpbnV4YnJldy8ubGludXhicmV3L0hvbWVicmV3IixucG1fY29tbWFuZDoicnVuLXNjcmlwdCIsU0dYX0FFU01fQUREUjoiMSIsQ0hST01FX0JJTjoiL3Vzci9iaW4vZ29vZ2xlLWNocm9tZSIsU0VMRU5JVU1fSkFSX1BBVEg6Ii91c3Ivc2hhcmUvamF2YS9zZWxlbml1bS1zZXJ2ZXIuamFyIixBTkRST0lEX05ES19IT01FOiIvdXNyL2xvY2FsL2xpYi9hbmRyb2lkL3Nkay9uZGstYnVuZGxlIixHSVRIVUJfU1RFUF9TVU1NQVJZOiIvaG9tZS9ydW5uZXIvd29yay9fdGVtcC9fcnVubmVyX2ZpbGVfY29tbWFuZHMvc3RlcF9zdW1tYXJ5XzVjNGY2ZjE4LTE2NjUtNDYzOC1iNDIwLWJjZDAyZjY2NTgxMCIsSU5JVF9DV0Q6Ii9ob21lL3J1bm5lci93b3JrL3N0c29hdXRoMnBsdWdpbi9zdHNvYXV0aDJwbHVnaW4iLEVESVRPUjoidmkiLE5PREVfRU5WOiJwcm9kdWN0aW9uIn0uQ0xJRU5UX0lELHNjb3BlOntERVBMT1lNRU5UX0JBU0VQQVRIOiIvb3B0L3J1bm5lciIsRE9UTkVUX05PTE9HTzoiMSIsVVNFUjoicnVubmVyIixucG1fY29uZmlnX2Fsd2F5c19hdXRoOiIiLG5wbV9jb25maWdfdXNlcl9hZ2VudDoibnBtLzguMTEuMCBub2RlL3YxOC4zLjAgbGludXggeDY0IHdvcmtzcGFjZXMvZmFsc2UgY2kvZ2l0aHViLWFjdGlvbnMiLENJOiJ0cnVlIixHSVRIVUJfRU5WOiIvaG9tZS9ydW5uZXIvd29yay9fdGVtcC9fcnVubmVyX2ZpbGVfY29tbWFuZHMvc2V0X2Vudl81YzRmNmYxOC0xNjY1LTQ2MzgtYjQyMC1iY2QwMmY2NjU4MTAiLFBJUFhfSE9NRToiL29wdC9waXB4IixucG1fbm9kZV9leGVjcGF0aDoiL29wdC9ob3N0ZWR0b29sY2FjaGUvbm9kZS8xOC4zLjAveDY0L2Jpbi9ub2RlIixKQVZBX0hPTUVfOF9YNjQ6Ii91c3IvbGliL2p2bS90ZW11cmluLTgtamRrLWFtZDY0IixOT0RFX0FVVEhfVE9LRU46IlhYWFhYLVhYWFhYLVhYWFhYLVhYWFhYIixTSExWTDoiMSIsbnBtX2NvbmZpZ19ub3Byb3h5OiIiLEhPTUU6Ii9ob21lL3J1bm5lciIsUlVOTkVSX1RFTVA6Ii9ob21lL3J1bm5lci93b3JrL190ZW1wIixHSVRIVUJfRVZFTlRfUEFUSDoiL2hvbWUvcnVubmVyL3dvcmsvX3RlbXAvX2dpdGh1Yl93b3JrZmxvdy9ldmVudC5qc29uIixucG1fcGFja2FnZV9qc29uOiIvaG9tZS9ydW5uZXIvd29yay9zdHNvYXV0aDJwbHVnaW4vc3Rzb2F1dGgycGx1Z2luL3BhY2thZ2UuanNvbiIsSkFWQV9IT01FXzExX1g2NDoiL3Vzci9saWIvanZtL3RlbXVyaW4tMTEtamRrLWFtZDY0IixQSVBYX0JJTl9ESVI6Ii9vcHQvcGlweF9iaW4iLEdSQUFMVk1fMTFfUk9PVDoiL3Vzci9sb2NhbC9ncmFhbHZtL2dyYWFsdm0tY2UtamF2YTExLTIyLjEuMCIsR0lUSFVCX1JFUE9TSVRPUllfT1dORVI6Im5zc2h1bnQiLEdSQURMRV9IT01FOiIvdXNyL3NoYXJlL2dyYWRsZS03LjQuMiIsSE9NRUJSRVdfUFJFRklYOiIvaG9tZS9saW51eGJyZXcvLmxpbnV4YnJldyIsQU5EUk9JRF9OREtfTEFURVNUX0hPTUU6Ii91c3IvbG9jYWwvbGliL2FuZHJvaWQvc2RrL25kay8yNC4wLjgyMTU4ODgiLEdJVEhVQl9SRVRFTlRJT05fREFZUzoiOTAiLFBPV0VSU0hFTExfRElTVFJJQlVUSU9OX0NIQU5ORUw6IkdpdEh1Yi1BY3Rpb25zLXVidW50dTIwIixBWlVSRV9FWFRFTlNJT05fRElSOiIvb3B0L2F6L2F6Y2xpZXh0ZW5zaW9ucyIsR0lUSFVCX0hFQURfUkVGOiIiLG5wbV9jb25maWdfbG9jYWxfcHJlZml4OiIvaG9tZS9ydW5uZXIvd29yay9zdHNvYXV0aDJwbHVnaW4vc3Rzb2F1dGgycGx1Z2luIixHSVRIVUJfR1JBUEhRTF9VUkw6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vZ3JhcGhxbCIsQ09MT1I6IjAiLE5WTV9ESVI6Ii9ob21lL3J1bm5lci8ubnZtIixucG1fY29uZmlnX21ldHJpY3NfcmVnaXN0cnk6Imh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnLyIsRE9UTkVUX1NLSVBfRklSU1RfVElNRV9FWFBFUklFTkNFOiIxIixKQVZBX0hPTUVfMTdfWDY0OiIvdXNyL2xpYi9qdm0vdGVtdXJpbi0xNy1qZGstYW1kNjQiLEltYWdlVmVyc2lvbjoiMjAyMjA2MDUuMSIsUlVOTkVSX09TOiJMaW51eCIsR0lUSFVCX0FQSV9VUkw6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20iLFNXSUZUX1BBVEg6Ii91c3Ivc2hhcmUvc3dpZnQvdXNyL2JpbiIsUlVOTkVSX1VTRVI6InJ1bm5lciIsQ0hST01FV0VCRFJJVkVSOiIvdXNyL2xvY2FsL3NoYXJlL2Nocm9tZV9kcml2ZXIiLEpPVVJOQUxfU1RSRUFNOiI4OjIxODM0IixHSVRIVUJfV09SS0ZMT1c6Ik5vZGUuanMgUGFja2FnZSIsXzoiL29wdC9ob3N0ZWR0b29sY2FjaGUvbm9kZS8xOC4zLjAveDY0L2Jpbi9ucG0iLG5wbV9jb25maWdfcHJlZml4OiIvb3B0L2hvc3RlZHRvb2xjYWNoZS9ub2RlLzE4LjMuMC94NjQiLEdJVEhVQl9SVU5fSUQ6IjI0ODM1MDYwMzUiLEdPUk9PVF8xXzE2X1g2NDoiL29wdC9ob3N0ZWR0b29sY2FjaGUvZ28vMS4xNi4xNS94NjQiLG5wbV9jb25maWdfY2FjaGU6Ii9ob21lL3J1bm5lci8ubnBtIixHT1JPT1RfMV8xN19YNjQ6Ii9vcHQvaG9zdGVkdG9vbGNhY2hlL2dvLzEuMTcuMTEveDY0IixHSVRIVUJfUkVGX1RZUEU6ImJyYW5jaCIsQk9PVFNUUkFQX0hBU0tFTExfTk9OSU5URVJBQ1RJVkU6IjEiLEdJVEhVQl9CQVNFX1JFRjoiIixJbWFnZU9TOiJ1YnVudHUyMCIsUEVSRkxPR19MT0NBVElPTl9TRVRUSU5HOiJSVU5ORVJfUEVSRkxPRyIsR09ST09UXzFfMThfWDY0OiIvb3B0L2hvc3RlZHRvb2xjYWNoZS9nby8xLjE4LjMveDY0IixHSVRIVUJfQUNUSU9OX1JFUE9TSVRPUlk6IiIsbnBtX2NvbmZpZ19ub2RlX2d5cDoiL29wdC9ob3N0ZWR0b29sY2FjaGUvbm9kZS8xOC4zLjAveDY0L2xpYi9ub2RlX21vZHVsZXMvbnBtL25vZGVfbW9kdWxlcy9ub2RlLWd5cC9iaW4vbm9kZS1neXAuanMiLFBBVEg6Ii9ob21lL3J1bm5lci93b3JrL3N0c29hdXRoMnBsdWdpbi9zdHNvYXV0aDJwbHVnaW4vbm9kZV9tb2R1bGVzLy5iaW46L2hvbWUvcnVubmVyL3dvcmsvc3Rzb2F1dGgycGx1Z2luL25vZGVfbW9kdWxlcy8uYmluOi9ob21lL3J1bm5lci93b3JrL25vZGVfbW9kdWxlcy8uYmluOi9ob21lL3J1bm5lci9ub2RlX21vZHVsZXMvLmJpbjovaG9tZS9ub2RlX21vZHVsZXMvLmJpbjovbm9kZV9tb2R1bGVzLy5iaW46L29wdC9ob3N0ZWR0b29sY2FjaGUvbm9kZS8xOC4zLjAveDY0L2xpYi9ub2RlX21vZHVsZXMvbnBtL25vZGVfbW9kdWxlcy9AbnBtY2xpL3J1bi1zY3JpcHQvbGliL25vZGUtZ3lwLWJpbjovb3B0L2hvc3RlZHRvb2xjYWNoZS9ub2RlLzE4LjMuMC94NjQvYmluOi9ob21lL2xpbnV4YnJldy8ubGludXhicmV3L2JpbjovaG9tZS9saW51eGJyZXcvLmxpbnV4YnJldy9zYmluOi9ob21lL3J1bm5lci8ubG9jYWwvYmluOi9vcHQvcGlweF9iaW46L2hvbWUvcnVubmVyLy5jYXJnby9iaW46L2hvbWUvcnVubmVyLy5jb25maWcvY29tcG9zZXIvdmVuZG9yL2JpbjovdXNyL2xvY2FsLy5naGN1cC9iaW46L2hvbWUvcnVubmVyLy5kb3RuZXQvdG9vbHM6L3NuYXAvYmluOi91c3IvbG9jYWwvc2JpbjovdXNyL2xvY2FsL2JpbjovdXNyL3NiaW46L3Vzci9iaW46L3NiaW46L2JpbjovdXNyL2dhbWVzOi91c3IvbG9jYWwvZ2FtZXM6L3NuYXAvYmluIixBTlRfSE9NRToiL3Vzci9zaGFyZS9hbnQiLERPVE5FVF9NVUxUSUxFVkVMX0xPT0tVUDoiMCIsUlVOTkVSX1RSQUNLSU5HX0lEOiJnaXRodWJfOWUwYTVjN2EtOTc4Zi00ZmNlLWJlOWYtMTU5N2E0NWQzZjhkIixJTlZPQ0FUSU9OX0lEOiI4MjMxNTA0MGY2Y2I0YjE4OTFiODc1NTA3NWRiZTc0OSIsSE9NRUJSRVdfQ0VMTEFSOiIvaG9tZS9saW51eGJyZXcvLmxpbnV4YnJldy9DZWxsYXIiLE5QTV9DT05GSUdfVVNFUkNPTkZJRzoiL2hvbWUvcnVubmVyL3dvcmsvX3RlbXAvLm5wbXJjIixSVU5ORVJfVE9PTF9DQUNIRToiL29wdC9ob3N0ZWR0b29sY2FjaGUiLE5PREU6Ii9vcHQvaG9zdGVkdG9vbGNhY2hlL25vZGUvMTguMy4wL3g2NC9iaW4vbm9kZSIsbnBtX3BhY2thZ2VfbmFtZToiQG5zc2h1bnQvc3Rzb2F1dGgycGx1Z2luIixHSVRIVUJfQUNUSU9OOiJfX3J1bl8yIixHSVRIVUJfUlVOX05VTUJFUjoiMjQiLFJVTk5FUl9BUkNIOiJYNjQiLEFHRU5UX1RPT0xTRElSRUNUT1JZOiIvb3B0L2hvc3RlZHRvb2xjYWNoZSIsTEFORzoiQy5VVEYtOCIsVkNQS0dfSU5TVEFMTEFUSU9OX1JPT1Q6Ii91c3IvbG9jYWwvc2hhcmUvdmNwa2ciLENPTkRBOiIvdXNyL3NoYXJlL21pbmljb25kYSIsUlVOTkVSX05BTUU6Ikhvc3RlZCBBZ2VudCIsWERHX0NPTkZJR19IT01FOiIvaG9tZS9ydW5uZXIvLmNvbmZpZyIsR0lUSFVCX1JFRl9OQU1FOiJtYWluIixHSVRIVUJfUkVQT1NJVE9SWToibnNzaHVudC9zdHNvYXV0aDJwbHVnaW4iLG5wbV9saWZlY3ljbGVfc2NyaXB0OiJ2aXRlIGJ1aWxkIixBTkRST0lEX05ES19ST09UOiIvdXNyL2xvY2FsL2xpYi9hbmRyb2lkL3Nkay9uZGstYnVuZGxlIixHSVRIVUJfQUNUSU9OX1JFRjoiIixERUJJQU5fRlJPTlRFTkQ6Im5vbmludGVyYWN0aXZlIixHSVRIVUJfQUNUSU9OUzoidHJ1ZSIsbnBtX3BhY2thZ2VfdmVyc2lvbjoiMC4xLjEzIixucG1fbGlmZWN5Y2xlX2V2ZW50OiJidWlsZCIsR0lUSFVCX1JFRl9QUk9URUNURUQ6ImZhbHNlIixHSVRIVUJfV09SS1NQQUNFOiIvaG9tZS9ydW5uZXIvd29yay9zdHNvYXV0aDJwbHVnaW4vc3Rzb2F1dGgycGx1Z2luIixBQ0NFUFRfRVVMQToiWSIsR0lUSFVCX0pPQjoicHVibGlzaC1ucG0iLFJVTk5FUl9QRVJGTE9HOiIvaG9tZS9ydW5uZXIvcGVyZmxvZyIsR0lUSFVCX1NIQToiZjY1OThkMTg4NjFjNjA4NGEzMDI0M2M5ZDZhOWQwMjAwZTFmOWU5NiIsR0lUSFVCX1JVTl9BVFRFTVBUOiIxIixHSVRIVUJfUkVGOiJyZWZzL2hlYWRzL21haW4iLEdJVEhVQl9BQ1RPUjoibnNzaHVudCIsQU5EUk9JRF9TREtfUk9PVDoiL3Vzci9sb2NhbC9saWIvYW5kcm9pZC9zZGsiLExFSU5fSE9NRToiL3Vzci9sb2NhbC9saWIvbGVpbiIsbnBtX2NvbmZpZ19nbG9iYWxjb25maWc6Ii9vcHQvaG9zdGVkdG9vbGNhY2hlL25vZGUvMTguMy4wL3g2NC9ldGMvbnBtcmMiLG5wbV9jb25maWdfaW5pdF9tb2R1bGU6Ii9ob21lL3J1bm5lci8ubnBtLWluaXQuanMiLEdJVEhVQl9QQVRIOiIvaG9tZS9ydW5uZXIvd29yay9fdGVtcC9fcnVubmVyX2ZpbGVfY29tbWFuZHMvYWRkX3BhdGhfNWM0ZjZmMTgtMTY2NS00NjM4LWI0MjAtYmNkMDJmNjY1ODEwIixKQVZBX0hPTUU6Ii91c3IvbGliL2p2bS90ZW11cmluLTExLWpkay1hbWQ2NCIsUFdEOiIvaG9tZS9ydW5uZXIvd29yay9zdHNvYXV0aDJwbHVnaW4vc3Rzb2F1dGgycGx1Z2luIixSVU5ORVJfV09SS1NQQUNFOiIvaG9tZS9ydW5uZXIvd29yay9zdHNvYXV0aDJwbHVnaW4iLG5wbV9leGVjcGF0aDoiL29wdC9ob3N0ZWR0b29sY2FjaGUvbm9kZS8xOC4zLjAveDY0L2xpYi9ub2RlX21vZHVsZXMvbnBtL2Jpbi9ucG0tY2xpLmpzIixIT01FQlJFV19DTEVBTlVQX1BFUklPRElDX0ZVTExfREFZUzoiMzY1MCIsR0lUSFVCX0VWRU5UX05BTUU6InB1c2giLEhPTUVCUkVXX05PX0FVVE9fVVBEQVRFOiIxIixBTkRST0lEX0hPTUU6Ii91c3IvbG9jYWwvbGliL2FuZHJvaWQvc2RrIixHSVRIVUJfU0VSVkVSX1VSTDoiaHR0cHM6Ly9naXRodWIuY29tIixHRUNLT1dFQkRSSVZFUjoiL3Vzci9sb2NhbC9zaGFyZS9nZWNrb19kcml2ZXIiLExFSU5fSkFSOiIvdXNyL2xvY2FsL2xpYi9sZWluL3NlbGYtaW5zdGFsbHMvbGVpbmluZ2VuLTIuOS44LXN0YW5kYWxvbmUuamFyIixucG1fY29uZmlnX2dsb2JhbF9wcmVmaXg6Ii9vcHQvaG9zdGVkdG9vbGNhY2hlL25vZGUvMTguMy4wL3g2NCIsSE9NRUJSRVdfUkVQT1NJVE9SWToiL2hvbWUvbGludXhicmV3Ly5saW51eGJyZXcvSG9tZWJyZXciLG5wbV9jb21tYW5kOiJydW4tc2NyaXB0IixTR1hfQUVTTV9BRERSOiIxIixDSFJPTUVfQklOOiIvdXNyL2Jpbi9nb29nbGUtY2hyb21lIixTRUxFTklVTV9KQVJfUEFUSDoiL3Vzci9zaGFyZS9qYXZhL3NlbGVuaXVtLXNlcnZlci5qYXIiLEFORFJPSURfTkRLX0hPTUU6Ii91c3IvbG9jYWwvbGliL2FuZHJvaWQvc2RrL25kay1idW5kbGUiLEdJVEhVQl9TVEVQX1NVTU1BUlk6Ii9ob21lL3J1bm5lci93b3JrL190ZW1wL19ydW5uZXJfZmlsZV9jb21tYW5kcy9zdGVwX3N1bW1hcnlfNWM0ZjZmMTgtMTY2NS00NjM4LWI0MjAtYmNkMDJmNjY1ODEwIixJTklUX0NXRDoiL2hvbWUvcnVubmVyL3dvcmsvc3Rzb2F1dGgycGx1Z2luL3N0c29hdXRoMnBsdWdpbiIsRURJVE9SOiJ2aSIsTk9ERV9FTlY6InByb2R1Y3Rpb24ifS5TQ09QRSxyZWZyZXNoX3Rva2VuOnIucmVmcmVzaF90b2tlbixncmFudF90eXBlOkF0LlJFRlJFU0hfVE9LRU59O3JldHVybiBYKHRoaXMsX3IpLmNhbGwodGhpcyxvKX1lbHNlIHJldHVybiExfSksdWUodGhpcyxCcixhc3luYygpPT57Y29uc29sZS5sb2coIkxvZ291dCIpO2NvbnN0IHI9YCR7e0RFUExPWU1FTlRfQkFTRVBBVEg6Ii9vcHQvcnVubmVyIixET1RORVRfTk9MT0dPOiIxIixVU0VSOiJydW5uZXIiLG5wbV9jb25maWdfYWx3YXlzX2F1dGg6IiIsbnBtX2NvbmZpZ191c2VyX2FnZW50OiJucG0vOC4xMS4wIG5vZGUvdjE4LjMuMCBsaW51eCB4NjQgd29ya3NwYWNlcy9mYWxzZSBjaS9naXRodWItYWN0aW9ucyIsQ0k6InRydWUiLEdJVEhVQl9FTlY6Ii9ob21lL3J1bm5lci93b3JrL190ZW1wL19ydW5uZXJfZmlsZV9jb21tYW5kcy9zZXRfZW52XzVjNGY2ZjE4LTE2NjUtNDYzOC1iNDIwLWJjZDAyZjY2NTgxMCIsUElQWF9IT01FOiIvb3B0L3BpcHgiLG5wbV9ub2RlX2V4ZWNwYXRoOiIvb3B0L2hvc3RlZHRvb2xjYWNoZS9ub2RlLzE4LjMuMC94NjQvYmluL25vZGUiLEpBVkFfSE9NRV84X1g2NDoiL3Vzci9saWIvanZtL3RlbXVyaW4tOC1qZGstYW1kNjQiLE5PREVfQVVUSF9UT0tFTjoiWFhYWFgtWFhYWFgtWFhYWFgtWFhYWFgiLFNITFZMOiIxIixucG1fY29uZmlnX25vcHJveHk6IiIsSE9NRToiL2hvbWUvcnVubmVyIixSVU5ORVJfVEVNUDoiL2hvbWUvcnVubmVyL3dvcmsvX3RlbXAiLEdJVEhVQl9FVkVOVF9QQVRIOiIvaG9tZS9ydW5uZXIvd29yay9fdGVtcC9fZ2l0aHViX3dvcmtmbG93L2V2ZW50Lmpzb24iLG5wbV9wYWNrYWdlX2pzb246Ii9ob21lL3J1bm5lci93b3JrL3N0c29hdXRoMnBsdWdpbi9zdHNvYXV0aDJwbHVnaW4vcGFja2FnZS5qc29uIixKQVZBX0hPTUVfMTFfWDY0OiIvdXNyL2xpYi9qdm0vdGVtdXJpbi0xMS1qZGstYW1kNjQiLFBJUFhfQklOX0RJUjoiL29wdC9waXB4X2JpbiIsR1JBQUxWTV8xMV9ST09UOiIvdXNyL2xvY2FsL2dyYWFsdm0vZ3JhYWx2bS1jZS1qYXZhMTEtMjIuMS4wIixHSVRIVUJfUkVQT1NJVE9SWV9PV05FUjoibnNzaHVudCIsR1JBRExFX0hPTUU6Ii91c3Ivc2hhcmUvZ3JhZGxlLTcuNC4yIixIT01FQlJFV19QUkVGSVg6Ii9ob21lL2xpbnV4YnJldy8ubGludXhicmV3IixBTkRST0lEX05ES19MQVRFU1RfSE9NRToiL3Vzci9sb2NhbC9saWIvYW5kcm9pZC9zZGsvbmRrLzI0LjAuODIxNTg4OCIsR0lUSFVCX1JFVEVOVElPTl9EQVlTOiI5MCIsUE9XRVJTSEVMTF9ESVNUUklCVVRJT05fQ0hBTk5FTDoiR2l0SHViLUFjdGlvbnMtdWJ1bnR1MjAiLEFaVVJFX0VYVEVOU0lPTl9ESVI6Ii9vcHQvYXovYXpjbGlleHRlbnNpb25zIixHSVRIVUJfSEVBRF9SRUY6IiIsbnBtX2NvbmZpZ19sb2NhbF9wcmVmaXg6Ii9ob21lL3J1bm5lci93b3JrL3N0c29hdXRoMnBsdWdpbi9zdHNvYXV0aDJwbHVnaW4iLEdJVEhVQl9HUkFQSFFMX1VSTDoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9ncmFwaHFsIixDT0xPUjoiMCIsTlZNX0RJUjoiL2hvbWUvcnVubmVyLy5udm0iLG5wbV9jb25maWdfbWV0cmljc19yZWdpc3RyeToiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvIixET1RORVRfU0tJUF9GSVJTVF9USU1FX0VYUEVSSUVOQ0U6IjEiLEpBVkFfSE9NRV8xN19YNjQ6Ii91c3IvbGliL2p2bS90ZW11cmluLTE3LWpkay1hbWQ2NCIsSW1hZ2VWZXJzaW9uOiIyMDIyMDYwNS4xIixSVU5ORVJfT1M6IkxpbnV4IixHSVRIVUJfQVBJX1VSTDoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbSIsU1dJRlRfUEFUSDoiL3Vzci9zaGFyZS9zd2lmdC91c3IvYmluIixSVU5ORVJfVVNFUjoicnVubmVyIixDSFJPTUVXRUJEUklWRVI6Ii91c3IvbG9jYWwvc2hhcmUvY2hyb21lX2RyaXZlciIsSk9VUk5BTF9TVFJFQU06Ijg6MjE4MzQiLEdJVEhVQl9XT1JLRkxPVzoiTm9kZS5qcyBQYWNrYWdlIixfOiIvb3B0L2hvc3RlZHRvb2xjYWNoZS9ub2RlLzE4LjMuMC94NjQvYmluL25wbSIsbnBtX2NvbmZpZ19wcmVmaXg6Ii9vcHQvaG9zdGVkdG9vbGNhY2hlL25vZGUvMTguMy4wL3g2NCIsR0lUSFVCX1JVTl9JRDoiMjQ4MzUwNjAzNSIsR09ST09UXzFfMTZfWDY0OiIvb3B0L2hvc3RlZHRvb2xjYWNoZS9nby8xLjE2LjE1L3g2NCIsbnBtX2NvbmZpZ19jYWNoZToiL2hvbWUvcnVubmVyLy5ucG0iLEdPUk9PVF8xXzE3X1g2NDoiL29wdC9ob3N0ZWR0b29sY2FjaGUvZ28vMS4xNy4xMS94NjQiLEdJVEhVQl9SRUZfVFlQRToiYnJhbmNoIixCT09UU1RSQVBfSEFTS0VMTF9OT05JTlRFUkFDVElWRToiMSIsR0lUSFVCX0JBU0VfUkVGOiIiLEltYWdlT1M6InVidW50dTIwIixQRVJGTE9HX0xPQ0FUSU9OX1NFVFRJTkc6IlJVTk5FUl9QRVJGTE9HIixHT1JPT1RfMV8xOF9YNjQ6Ii9vcHQvaG9zdGVkdG9vbGNhY2hlL2dvLzEuMTguMy94NjQiLEdJVEhVQl9BQ1RJT05fUkVQT1NJVE9SWToiIixucG1fY29uZmlnX25vZGVfZ3lwOiIvb3B0L2hvc3RlZHRvb2xjYWNoZS9ub2RlLzE4LjMuMC94NjQvbGliL25vZGVfbW9kdWxlcy9ucG0vbm9kZV9tb2R1bGVzL25vZGUtZ3lwL2Jpbi9ub2RlLWd5cC5qcyIsUEFUSDoiL2hvbWUvcnVubmVyL3dvcmsvc3Rzb2F1dGgycGx1Z2luL3N0c29hdXRoMnBsdWdpbi9ub2RlX21vZHVsZXMvLmJpbjovaG9tZS9ydW5uZXIvd29yay9zdHNvYXV0aDJwbHVnaW4vbm9kZV9tb2R1bGVzLy5iaW46L2hvbWUvcnVubmVyL3dvcmsvbm9kZV9tb2R1bGVzLy5iaW46L2hvbWUvcnVubmVyL25vZGVfbW9kdWxlcy8uYmluOi9ob21lL25vZGVfbW9kdWxlcy8uYmluOi9ub2RlX21vZHVsZXMvLmJpbjovb3B0L2hvc3RlZHRvb2xjYWNoZS9ub2RlLzE4LjMuMC94NjQvbGliL25vZGVfbW9kdWxlcy9ucG0vbm9kZV9tb2R1bGVzL0BucG1jbGkvcnVuLXNjcmlwdC9saWIvbm9kZS1neXAtYmluOi9vcHQvaG9zdGVkdG9vbGNhY2hlL25vZGUvMTguMy4wL3g2NC9iaW46L2hvbWUvbGludXhicmV3Ly5saW51eGJyZXcvYmluOi9ob21lL2xpbnV4YnJldy8ubGludXhicmV3L3NiaW46L2hvbWUvcnVubmVyLy5sb2NhbC9iaW46L29wdC9waXB4X2JpbjovaG9tZS9ydW5uZXIvLmNhcmdvL2JpbjovaG9tZS9ydW5uZXIvLmNvbmZpZy9jb21wb3Nlci92ZW5kb3IvYmluOi91c3IvbG9jYWwvLmdoY3VwL2JpbjovaG9tZS9ydW5uZXIvLmRvdG5ldC90b29sczovc25hcC9iaW46L3Vzci9sb2NhbC9zYmluOi91c3IvbG9jYWwvYmluOi91c3Ivc2JpbjovdXNyL2Jpbjovc2JpbjovYmluOi91c3IvZ2FtZXM6L3Vzci9sb2NhbC9nYW1lczovc25hcC9iaW4iLEFOVF9IT01FOiIvdXNyL3NoYXJlL2FudCIsRE9UTkVUX01VTFRJTEVWRUxfTE9PS1VQOiIwIixSVU5ORVJfVFJBQ0tJTkdfSUQ6ImdpdGh1Yl85ZTBhNWM3YS05NzhmLTRmY2UtYmU5Zi0xNTk3YTQ1ZDNmOGQiLElOVk9DQVRJT05fSUQ6IjgyMzE1MDQwZjZjYjRiMTg5MWI4NzU1MDc1ZGJlNzQ5IixIT01FQlJFV19DRUxMQVI6Ii9ob21lL2xpbnV4YnJldy8ubGludXhicmV3L0NlbGxhciIsTlBNX0NPTkZJR19VU0VSQ09ORklHOiIvaG9tZS9ydW5uZXIvd29yay9fdGVtcC8ubnBtcmMiLFJVTk5FUl9UT09MX0NBQ0hFOiIvb3B0L2hvc3RlZHRvb2xjYWNoZSIsTk9ERToiL29wdC9ob3N0ZWR0b29sY2FjaGUvbm9kZS8xOC4zLjAveDY0L2Jpbi9ub2RlIixucG1fcGFja2FnZV9uYW1lOiJAbnNzaHVudC9zdHNvYXV0aDJwbHVnaW4iLEdJVEhVQl9BQ1RJT046Il9fcnVuXzIiLEdJVEhVQl9SVU5fTlVNQkVSOiIyNCIsUlVOTkVSX0FSQ0g6Ilg2NCIsQUdFTlRfVE9PTFNESVJFQ1RPUlk6Ii9vcHQvaG9zdGVkdG9vbGNhY2hlIixMQU5HOiJDLlVURi04IixWQ1BLR19JTlNUQUxMQVRJT05fUk9PVDoiL3Vzci9sb2NhbC9zaGFyZS92Y3BrZyIsQ09OREE6Ii91c3Ivc2hhcmUvbWluaWNvbmRhIixSVU5ORVJfTkFNRToiSG9zdGVkIEFnZW50IixYREdfQ09ORklHX0hPTUU6Ii9ob21lL3J1bm5lci8uY29uZmlnIixHSVRIVUJfUkVGX05BTUU6Im1haW4iLEdJVEhVQl9SRVBPU0lUT1JZOiJuc3NodW50L3N0c29hdXRoMnBsdWdpbiIsbnBtX2xpZmVjeWNsZV9zY3JpcHQ6InZpdGUgYnVpbGQiLEFORFJPSURfTkRLX1JPT1Q6Ii91c3IvbG9jYWwvbGliL2FuZHJvaWQvc2RrL25kay1idW5kbGUiLEdJVEhVQl9BQ1RJT05fUkVGOiIiLERFQklBTl9GUk9OVEVORDoibm9uaW50ZXJhY3RpdmUiLEdJVEhVQl9BQ1RJT05TOiJ0cnVlIixucG1fcGFja2FnZV92ZXJzaW9uOiIwLjEuMTMiLG5wbV9saWZlY3ljbGVfZXZlbnQ6ImJ1aWxkIixHSVRIVUJfUkVGX1BST1RFQ1RFRDoiZmFsc2UiLEdJVEhVQl9XT1JLU1BBQ0U6Ii9ob21lL3J1bm5lci93b3JrL3N0c29hdXRoMnBsdWdpbi9zdHNvYXV0aDJwbHVnaW4iLEFDQ0VQVF9FVUxBOiJZIixHSVRIVUJfSk9COiJwdWJsaXNoLW5wbSIsUlVOTkVSX1BFUkZMT0c6Ii9ob21lL3J1bm5lci9wZXJmbG9nIixHSVRIVUJfU0hBOiJmNjU5OGQxODg2MWM2MDg0YTMwMjQzYzlkNmE5ZDAyMDBlMWY5ZTk2IixHSVRIVUJfUlVOX0FUVEVNUFQ6IjEiLEdJVEhVQl9SRUY6InJlZnMvaGVhZHMvbWFpbiIsR0lUSFVCX0FDVE9SOiJuc3NodW50IixBTkRST0lEX1NES19ST09UOiIvdXNyL2xvY2FsL2xpYi9hbmRyb2lkL3NkayIsTEVJTl9IT01FOiIvdXNyL2xvY2FsL2xpYi9sZWluIixucG1fY29uZmlnX2dsb2JhbGNvbmZpZzoiL29wdC9ob3N0ZWR0b29sY2FjaGUvbm9kZS8xOC4zLjAveDY0L2V0Yy9ucG1yYyIsbnBtX2NvbmZpZ19pbml0X21vZHVsZToiL2hvbWUvcnVubmVyLy5ucG0taW5pdC5qcyIsR0lUSFVCX1BBVEg6Ii9ob21lL3J1bm5lci93b3JrL190ZW1wL19ydW5uZXJfZmlsZV9jb21tYW5kcy9hZGRfcGF0aF81YzRmNmYxOC0xNjY1LTQ2MzgtYjQyMC1iY2QwMmY2NjU4MTAiLEpBVkFfSE9NRToiL3Vzci9saWIvanZtL3RlbXVyaW4tMTEtamRrLWFtZDY0IixQV0Q6Ii9ob21lL3J1bm5lci93b3JrL3N0c29hdXRoMnBsdWdpbi9zdHNvYXV0aDJwbHVnaW4iLFJVTk5FUl9XT1JLU1BBQ0U6Ii9ob21lL3J1bm5lci93b3JrL3N0c29hdXRoMnBsdWdpbiIsbnBtX2V4ZWNwYXRoOiIvb3B0L2hvc3RlZHRvb2xjYWNoZS9ub2RlLzE4LjMuMC94NjQvbGliL25vZGVfbW9kdWxlcy9ucG0vYmluL25wbS1jbGkuanMiLEhPTUVCUkVXX0NMRUFOVVBfUEVSSU9ESUNfRlVMTF9EQVlTOiIzNjUwIixHSVRIVUJfRVZFTlRfTkFNRToicHVzaCIsSE9NRUJSRVdfTk9fQVVUT19VUERBVEU6IjEiLEFORFJPSURfSE9NRToiL3Vzci9sb2NhbC9saWIvYW5kcm9pZC9zZGsiLEdJVEhVQl9TRVJWRVJfVVJMOiJodHRwczovL2dpdGh1Yi5jb20iLEdFQ0tPV0VCRFJJVkVSOiIvdXNyL2xvY2FsL3NoYXJlL2dlY2tvX2RyaXZlciIsTEVJTl9KQVI6Ii91c3IvbG9jYWwvbGliL2xlaW4vc2VsZi1pbnN0YWxscy9sZWluaW5nZW4tMi45Ljgtc3RhbmRhbG9uZS5qYXIiLG5wbV9jb25maWdfZ2xvYmFsX3ByZWZpeDoiL29wdC9ob3N0ZWR0b29sY2FjaGUvbm9kZS8xOC4zLjAveDY0IixIT01FQlJFV19SRVBPU0lUT1JZOiIvaG9tZS9saW51eGJyZXcvLmxpbnV4YnJldy9Ib21lYnJldyIsbnBtX2NvbW1hbmQ6InJ1bi1zY3JpcHQiLFNHWF9BRVNNX0FERFI6IjEiLENIUk9NRV9CSU46Ii91c3IvYmluL2dvb2dsZS1jaHJvbWUiLFNFTEVOSVVNX0pBUl9QQVRIOiIvdXNyL3NoYXJlL2phdmEvc2VsZW5pdW0tc2VydmVyLmphciIsQU5EUk9JRF9OREtfSE9NRToiL3Vzci9sb2NhbC9saWIvYW5kcm9pZC9zZGsvbmRrLWJ1bmRsZSIsR0lUSFVCX1NURVBfU1VNTUFSWToiL2hvbWUvcnVubmVyL3dvcmsvX3RlbXAvX3J1bm5lcl9maWxlX2NvbW1hbmRzL3N0ZXBfc3VtbWFyeV81YzRmNmYxOC0xNjY1LTQ2MzgtYjQyMC1iY2QwMmY2NjU4MTAiLElOSVRfQ1dEOiIvaG9tZS9ydW5uZXIvd29yay9zdHNvYXV0aDJwbHVnaW4vc3Rzb2F1dGgycGx1Z2luIixFRElUT1I6InZpIixOT0RFX0VOVjoicHJvZHVjdGlvbiJ9LkJST0tFUl9FTkRQT0lOVH06JHt7REVQTE9ZTUVOVF9CQVNFUEFUSDoiL29wdC9ydW5uZXIiLERPVE5FVF9OT0xPR086IjEiLFVTRVI6InJ1bm5lciIsbnBtX2NvbmZpZ19hbHdheXNfYXV0aDoiIixucG1fY29uZmlnX3VzZXJfYWdlbnQ6Im5wbS84LjExLjAgbm9kZS92MTguMy4wIGxpbnV4IHg2NCB3b3Jrc3BhY2VzL2ZhbHNlIGNpL2dpdGh1Yi1hY3Rpb25zIixDSToidHJ1ZSIsR0lUSFVCX0VOVjoiL2hvbWUvcnVubmVyL3dvcmsvX3RlbXAvX3J1bm5lcl9maWxlX2NvbW1hbmRzL3NldF9lbnZfNWM0ZjZmMTgtMTY2NS00NjM4LWI0MjAtYmNkMDJmNjY1ODEwIixQSVBYX0hPTUU6Ii9vcHQvcGlweCIsbnBtX25vZGVfZXhlY3BhdGg6Ii9vcHQvaG9zdGVkdG9vbGNhY2hlL25vZGUvMTguMy4wL3g2NC9iaW4vbm9kZSIsSkFWQV9IT01FXzhfWDY0OiIvdXNyL2xpYi9qdm0vdGVtdXJpbi04LWpkay1hbWQ2NCIsTk9ERV9BVVRIX1RPS0VOOiJYWFhYWC1YWFhYWC1YWFhYWC1YWFhYWCIsU0hMVkw6IjEiLG5wbV9jb25maWdfbm9wcm94eToiIixIT01FOiIvaG9tZS9ydW5uZXIiLFJVTk5FUl9URU1QOiIvaG9tZS9ydW5uZXIvd29yay9fdGVtcCIsR0lUSFVCX0VWRU5UX1BBVEg6Ii9ob21lL3J1bm5lci93b3JrL190ZW1wL19naXRodWJfd29ya2Zsb3cvZXZlbnQuanNvbiIsbnBtX3BhY2thZ2VfanNvbjoiL2hvbWUvcnVubmVyL3dvcmsvc3Rzb2F1dGgycGx1Z2luL3N0c29hdXRoMnBsdWdpbi9wYWNrYWdlLmpzb24iLEpBVkFfSE9NRV8xMV9YNjQ6Ii91c3IvbGliL2p2bS90ZW11cmluLTExLWpkay1hbWQ2NCIsUElQWF9CSU5fRElSOiIvb3B0L3BpcHhfYmluIixHUkFBTFZNXzExX1JPT1Q6Ii91c3IvbG9jYWwvZ3JhYWx2bS9ncmFhbHZtLWNlLWphdmExMS0yMi4xLjAiLEdJVEhVQl9SRVBPU0lUT1JZX09XTkVSOiJuc3NodW50IixHUkFETEVfSE9NRToiL3Vzci9zaGFyZS9ncmFkbGUtNy40LjIiLEhPTUVCUkVXX1BSRUZJWDoiL2hvbWUvbGludXhicmV3Ly5saW51eGJyZXciLEFORFJPSURfTkRLX0xBVEVTVF9IT01FOiIvdXNyL2xvY2FsL2xpYi9hbmRyb2lkL3Nkay9uZGsvMjQuMC44MjE1ODg4IixHSVRIVUJfUkVURU5USU9OX0RBWVM6IjkwIixQT1dFUlNIRUxMX0RJU1RSSUJVVElPTl9DSEFOTkVMOiJHaXRIdWItQWN0aW9ucy11YnVudHUyMCIsQVpVUkVfRVhURU5TSU9OX0RJUjoiL29wdC9hei9hemNsaWV4dGVuc2lvbnMiLEdJVEhVQl9IRUFEX1JFRjoiIixucG1fY29uZmlnX2xvY2FsX3ByZWZpeDoiL2hvbWUvcnVubmVyL3dvcmsvc3Rzb2F1dGgycGx1Z2luL3N0c29hdXRoMnBsdWdpbiIsR0lUSFVCX0dSQVBIUUxfVVJMOiJodHRwczovL2FwaS5naXRodWIuY29tL2dyYXBocWwiLENPTE9SOiIwIixOVk1fRElSOiIvaG9tZS9ydW5uZXIvLm52bSIsbnBtX2NvbmZpZ19tZXRyaWNzX3JlZ2lzdHJ5OiJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy8iLERPVE5FVF9TS0lQX0ZJUlNUX1RJTUVfRVhQRVJJRU5DRToiMSIsSkFWQV9IT01FXzE3X1g2NDoiL3Vzci9saWIvanZtL3RlbXVyaW4tMTctamRrLWFtZDY0IixJbWFnZVZlcnNpb246IjIwMjIwNjA1LjEiLFJVTk5FUl9PUzoiTGludXgiLEdJVEhVQl9BUElfVVJMOiJodHRwczovL2FwaS5naXRodWIuY29tIixTV0lGVF9QQVRIOiIvdXNyL3NoYXJlL3N3aWZ0L3Vzci9iaW4iLFJVTk5FUl9VU0VSOiJydW5uZXIiLENIUk9NRVdFQkRSSVZFUjoiL3Vzci9sb2NhbC9zaGFyZS9jaHJvbWVfZHJpdmVyIixKT1VSTkFMX1NUUkVBTToiODoyMTgzNCIsR0lUSFVCX1dPUktGTE9XOiJOb2RlLmpzIFBhY2thZ2UiLF86Ii9vcHQvaG9zdGVkdG9vbGNhY2hlL25vZGUvMTguMy4wL3g2NC9iaW4vbnBtIixucG1fY29uZmlnX3ByZWZpeDoiL29wdC9ob3N0ZWR0b29sY2FjaGUvbm9kZS8xOC4zLjAveDY0IixHSVRIVUJfUlVOX0lEOiIyNDgzNTA2MDM1IixHT1JPT1RfMV8xNl9YNjQ6Ii9vcHQvaG9zdGVkdG9vbGNhY2hlL2dvLzEuMTYuMTUveDY0IixucG1fY29uZmlnX2NhY2hlOiIvaG9tZS9ydW5uZXIvLm5wbSIsR09ST09UXzFfMTdfWDY0OiIvb3B0L2hvc3RlZHRvb2xjYWNoZS9nby8xLjE3LjExL3g2NCIsR0lUSFVCX1JFRl9UWVBFOiJicmFuY2giLEJPT1RTVFJBUF9IQVNLRUxMX05PTklOVEVSQUNUSVZFOiIxIixHSVRIVUJfQkFTRV9SRUY6IiIsSW1hZ2VPUzoidWJ1bnR1MjAiLFBFUkZMT0dfTE9DQVRJT05fU0VUVElORzoiUlVOTkVSX1BFUkZMT0ciLEdPUk9PVF8xXzE4X1g2NDoiL29wdC9ob3N0ZWR0b29sY2FjaGUvZ28vMS4xOC4zL3g2NCIsR0lUSFVCX0FDVElPTl9SRVBPU0lUT1JZOiIiLG5wbV9jb25maWdfbm9kZV9neXA6Ii9vcHQvaG9zdGVkdG9vbGNhY2hlL25vZGUvMTguMy4wL3g2NC9saWIvbm9kZV9tb2R1bGVzL25wbS9ub2RlX21vZHVsZXMvbm9kZS1neXAvYmluL25vZGUtZ3lwLmpzIixQQVRIOiIvaG9tZS9ydW5uZXIvd29yay9zdHNvYXV0aDJwbHVnaW4vc3Rzb2F1dGgycGx1Z2luL25vZGVfbW9kdWxlcy8uYmluOi9ob21lL3J1bm5lci93b3JrL3N0c29hdXRoMnBsdWdpbi9ub2RlX21vZHVsZXMvLmJpbjovaG9tZS9ydW5uZXIvd29yay9ub2RlX21vZHVsZXMvLmJpbjovaG9tZS9ydW5uZXIvbm9kZV9tb2R1bGVzLy5iaW46L2hvbWUvbm9kZV9tb2R1bGVzLy5iaW46L25vZGVfbW9kdWxlcy8uYmluOi9vcHQvaG9zdGVkdG9vbGNhY2hlL25vZGUvMTguMy4wL3g2NC9saWIvbm9kZV9tb2R1bGVzL25wbS9ub2RlX21vZHVsZXMvQG5wbWNsaS9ydW4tc2NyaXB0L2xpYi9ub2RlLWd5cC1iaW46L29wdC9ob3N0ZWR0b29sY2FjaGUvbm9kZS8xOC4zLjAveDY0L2JpbjovaG9tZS9saW51eGJyZXcvLmxpbnV4YnJldy9iaW46L2hvbWUvbGludXhicmV3Ly5saW51eGJyZXcvc2JpbjovaG9tZS9ydW5uZXIvLmxvY2FsL2Jpbjovb3B0L3BpcHhfYmluOi9ob21lL3J1bm5lci8uY2FyZ28vYmluOi9ob21lL3J1bm5lci8uY29uZmlnL2NvbXBvc2VyL3ZlbmRvci9iaW46L3Vzci9sb2NhbC8uZ2hjdXAvYmluOi9ob21lL3J1bm5lci8uZG90bmV0L3Rvb2xzOi9zbmFwL2JpbjovdXNyL2xvY2FsL3NiaW46L3Vzci9sb2NhbC9iaW46L3Vzci9zYmluOi91c3IvYmluOi9zYmluOi9iaW46L3Vzci9nYW1lczovdXNyL2xvY2FsL2dhbWVzOi9zbmFwL2JpbiIsQU5UX0hPTUU6Ii91c3Ivc2hhcmUvYW50IixET1RORVRfTVVMVElMRVZFTF9MT09LVVA6IjAiLFJVTk5FUl9UUkFDS0lOR19JRDoiZ2l0aHViXzllMGE1YzdhLTk3OGYtNGZjZS1iZTlmLTE1OTdhNDVkM2Y4ZCIsSU5WT0NBVElPTl9JRDoiODIzMTUwNDBmNmNiNGIxODkxYjg3NTUwNzVkYmU3NDkiLEhPTUVCUkVXX0NFTExBUjoiL2hvbWUvbGludXhicmV3Ly5saW51eGJyZXcvQ2VsbGFyIixOUE1fQ09ORklHX1VTRVJDT05GSUc6Ii9ob21lL3J1bm5lci93b3JrL190ZW1wLy5ucG1yYyIsUlVOTkVSX1RPT0xfQ0FDSEU6Ii9vcHQvaG9zdGVkdG9vbGNhY2hlIixOT0RFOiIvb3B0L2hvc3RlZHRvb2xjYWNoZS9ub2RlLzE4LjMuMC94NjQvYmluL25vZGUiLG5wbV9wYWNrYWdlX25hbWU6IkBuc3NodW50L3N0c29hdXRoMnBsdWdpbiIsR0lUSFVCX0FDVElPTjoiX19ydW5fMiIsR0lUSFVCX1JVTl9OVU1CRVI6IjI0IixSVU5ORVJfQVJDSDoiWDY0IixBR0VOVF9UT09MU0RJUkVDVE9SWToiL29wdC9ob3N0ZWR0b29sY2FjaGUiLExBTkc6IkMuVVRGLTgiLFZDUEtHX0lOU1RBTExBVElPTl9ST09UOiIvdXNyL2xvY2FsL3NoYXJlL3ZjcGtnIixDT05EQToiL3Vzci9zaGFyZS9taW5pY29uZGEiLFJVTk5FUl9OQU1FOiJIb3N0ZWQgQWdlbnQiLFhER19DT05GSUdfSE9NRToiL2hvbWUvcnVubmVyLy5jb25maWciLEdJVEhVQl9SRUZfTkFNRToibWFpbiIsR0lUSFVCX1JFUE9TSVRPUlk6Im5zc2h1bnQvc3Rzb2F1dGgycGx1Z2luIixucG1fbGlmZWN5Y2xlX3NjcmlwdDoidml0ZSBidWlsZCIsQU5EUk9JRF9OREtfUk9PVDoiL3Vzci9sb2NhbC9saWIvYW5kcm9pZC9zZGsvbmRrLWJ1bmRsZSIsR0lUSFVCX0FDVElPTl9SRUY6IiIsREVCSUFOX0ZST05URU5EOiJub25pbnRlcmFjdGl2ZSIsR0lUSFVCX0FDVElPTlM6InRydWUiLG5wbV9wYWNrYWdlX3ZlcnNpb246IjAuMS4xMyIsbnBtX2xpZmVjeWNsZV9ldmVudDoiYnVpbGQiLEdJVEhVQl9SRUZfUFJPVEVDVEVEOiJmYWxzZSIsR0lUSFVCX1dPUktTUEFDRToiL2hvbWUvcnVubmVyL3dvcmsvc3Rzb2F1dGgycGx1Z2luL3N0c29hdXRoMnBsdWdpbiIsQUNDRVBUX0VVTEE6IlkiLEdJVEhVQl9KT0I6InB1Ymxpc2gtbnBtIixSVU5ORVJfUEVSRkxPRzoiL2hvbWUvcnVubmVyL3BlcmZsb2ciLEdJVEhVQl9TSEE6ImY2NTk4ZDE4ODYxYzYwODRhMzAyNDNjOWQ2YTlkMDIwMGUxZjllOTYiLEdJVEhVQl9SVU5fQVRURU1QVDoiMSIsR0lUSFVCX1JFRjoicmVmcy9oZWFkcy9tYWluIixHSVRIVUJfQUNUT1I6Im5zc2h1bnQiLEFORFJPSURfU0RLX1JPT1Q6Ii91c3IvbG9jYWwvbGliL2FuZHJvaWQvc2RrIixMRUlOX0hPTUU6Ii91c3IvbG9jYWwvbGliL2xlaW4iLG5wbV9jb25maWdfZ2xvYmFsY29uZmlnOiIvb3B0L2hvc3RlZHRvb2xjYWNoZS9ub2RlLzE4LjMuMC94NjQvZXRjL25wbXJjIixucG1fY29uZmlnX2luaXRfbW9kdWxlOiIvaG9tZS9ydW5uZXIvLm5wbS1pbml0LmpzIixHSVRIVUJfUEFUSDoiL2hvbWUvcnVubmVyL3dvcmsvX3RlbXAvX3J1bm5lcl9maWxlX2NvbW1hbmRzL2FkZF9wYXRoXzVjNGY2ZjE4LTE2NjUtNDYzOC1iNDIwLWJjZDAyZjY2NTgxMCIsSkFWQV9IT01FOiIvdXNyL2xpYi9qdm0vdGVtdXJpbi0xMS1qZGstYW1kNjQiLFBXRDoiL2hvbWUvcnVubmVyL3dvcmsvc3Rzb2F1dGgycGx1Z2luL3N0c29hdXRoMnBsdWdpbiIsUlVOTkVSX1dPUktTUEFDRToiL2hvbWUvcnVubmVyL3dvcmsvc3Rzb2F1dGgycGx1Z2luIixucG1fZXhlY3BhdGg6Ii9vcHQvaG9zdGVkdG9vbGNhY2hlL25vZGUvMTguMy4wL3g2NC9saWIvbm9kZV9tb2R1bGVzL25wbS9iaW4vbnBtLWNsaS5qcyIsSE9NRUJSRVdfQ0xFQU5VUF9QRVJJT0RJQ19GVUxMX0RBWVM6IjM2NTAiLEdJVEhVQl9FVkVOVF9OQU1FOiJwdXNoIixIT01FQlJFV19OT19BVVRPX1VQREFURToiMSIsQU5EUk9JRF9IT01FOiIvdXNyL2xvY2FsL2xpYi9hbmRyb2lkL3NkayIsR0lUSFVCX1NFUlZFUl9VUkw6Imh0dHBzOi8vZ2l0aHViLmNvbSIsR0VDS09XRUJEUklWRVI6Ii91c3IvbG9jYWwvc2hhcmUvZ2Vja29fZHJpdmVyIixMRUlOX0pBUjoiL3Vzci9sb2NhbC9saWIvbGVpbi9zZWxmLWluc3RhbGxzL2xlaW5pbmdlbi0yLjkuOC1zdGFuZGFsb25lLmphciIsbnBtX2NvbmZpZ19nbG9iYWxfcHJlZml4OiIvb3B0L2hvc3RlZHRvb2xjYWNoZS9ub2RlLzE4LjMuMC94NjQiLEhPTUVCUkVXX1JFUE9TSVRPUlk6Ii9ob21lL2xpbnV4YnJldy8ubGludXhicmV3L0hvbWVicmV3IixucG1fY29tbWFuZDoicnVuLXNjcmlwdCIsU0dYX0FFU01fQUREUjoiMSIsQ0hST01FX0JJTjoiL3Vzci9iaW4vZ29vZ2xlLWNocm9tZSIsU0VMRU5JVU1fSkFSX1BBVEg6Ii91c3Ivc2hhcmUvamF2YS9zZWxlbml1bS1zZXJ2ZXIuamFyIixBTkRST0lEX05ES19IT01FOiIvdXNyL2xvY2FsL2xpYi9hbmRyb2lkL3Nkay9uZGstYnVuZGxlIixHSVRIVUJfU1RFUF9TVU1NQVJZOiIvaG9tZS9ydW5uZXIvd29yay9fdGVtcC9fcnVubmVyX2ZpbGVfY29tbWFuZHMvc3RlcF9zdW1tYXJ5XzVjNGY2ZjE4LTE2NjUtNDYzOC1iNDIwLWJjZDAyZjY2NTgxMCIsSU5JVF9DV0Q6Ii9ob21lL3J1bm5lci93b3JrL3N0c29hdXRoMnBsdWdpbi9zdHNvYXV0aDJwbHVnaW4iLEVESVRPUjoidmkiLE5PREVfRU5WOiJwcm9kdWN0aW9uIn0uQlJPS0VSX1BPUlR9JHt7REVQTE9ZTUVOVF9CQVNFUEFUSDoiL29wdC9ydW5uZXIiLERPVE5FVF9OT0xPR086IjEiLFVTRVI6InJ1bm5lciIsbnBtX2NvbmZpZ19hbHdheXNfYXV0aDoiIixucG1fY29uZmlnX3VzZXJfYWdlbnQ6Im5wbS84LjExLjAgbm9kZS92MTguMy4wIGxpbnV4IHg2NCB3b3Jrc3BhY2VzL2ZhbHNlIGNpL2dpdGh1Yi1hY3Rpb25zIixDSToidHJ1ZSIsR0lUSFVCX0VOVjoiL2hvbWUvcnVubmVyL3dvcmsvX3RlbXAvX3J1bm5lcl9maWxlX2NvbW1hbmRzL3NldF9lbnZfNWM0ZjZmMTgtMTY2NS00NjM4LWI0MjAtYmNkMDJmNjY1ODEwIixQSVBYX0hPTUU6Ii9vcHQvcGlweCIsbnBtX25vZGVfZXhlY3BhdGg6Ii9vcHQvaG9zdGVkdG9vbGNhY2hlL25vZGUvMTguMy4wL3g2NC9iaW4vbm9kZSIsSkFWQV9IT01FXzhfWDY0OiIvdXNyL2xpYi9qdm0vdGVtdXJpbi04LWpkay1hbWQ2NCIsTk9ERV9BVVRIX1RPS0VOOiJYWFhYWC1YWFhYWC1YWFhYWC1YWFhYWCIsU0hMVkw6IjEiLG5wbV9jb25maWdfbm9wcm94eToiIixIT01FOiIvaG9tZS9ydW5uZXIiLFJVTk5FUl9URU1QOiIvaG9tZS9ydW5uZXIvd29yay9fdGVtcCIsR0lUSFVCX0VWRU5UX1BBVEg6Ii9ob21lL3J1bm5lci93b3JrL190ZW1wL19naXRodWJfd29ya2Zsb3cvZXZlbnQuanNvbiIsbnBtX3BhY2thZ2VfanNvbjoiL2hvbWUvcnVubmVyL3dvcmsvc3Rzb2F1dGgycGx1Z2luL3N0c29hdXRoMnBsdWdpbi9wYWNrYWdlLmpzb24iLEpBVkFfSE9NRV8xMV9YNjQ6Ii91c3IvbGliL2p2bS90ZW11cmluLTExLWpkay1hbWQ2NCIsUElQWF9CSU5fRElSOiIvb3B0L3BpcHhfYmluIixHUkFBTFZNXzExX1JPT1Q6Ii91c3IvbG9jYWwvZ3JhYWx2bS9ncmFhbHZtLWNlLWphdmExMS0yMi4xLjAiLEdJVEhVQl9SRVBPU0lUT1JZX09XTkVSOiJuc3NodW50IixHUkFETEVfSE9NRToiL3Vzci9zaGFyZS9ncmFkbGUtNy40LjIiLEhPTUVCUkVXX1BSRUZJWDoiL2hvbWUvbGludXhicmV3Ly5saW51eGJyZXciLEFORFJPSURfTkRLX0xBVEVTVF9IT01FOiIvdXNyL2xvY2FsL2xpYi9hbmRyb2lkL3Nkay9uZGsvMjQuMC44MjE1ODg4IixHSVRIVUJfUkVURU5USU9OX0RBWVM6IjkwIixQT1dFUlNIRUxMX0RJU1RSSUJVVElPTl9DSEFOTkVMOiJHaXRIdWItQWN0aW9ucy11YnVudHUyMCIsQVpVUkVfRVhURU5TSU9OX0RJUjoiL29wdC9hei9hemNsaWV4dGVuc2lvbnMiLEdJVEhVQl9IRUFEX1JFRjoiIixucG1fY29uZmlnX2xvY2FsX3ByZWZpeDoiL2hvbWUvcnVubmVyL3dvcmsvc3Rzb2F1dGgycGx1Z2luL3N0c29hdXRoMnBsdWdpbiIsR0lUSFVCX0dSQVBIUUxfVVJMOiJodHRwczovL2FwaS5naXRodWIuY29tL2dyYXBocWwiLENPTE9SOiIwIixOVk1fRElSOiIvaG9tZS9ydW5uZXIvLm52bSIsbnBtX2NvbmZpZ19tZXRyaWNzX3JlZ2lzdHJ5OiJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy8iLERPVE5FVF9TS0lQX0ZJUlNUX1RJTUVfRVhQRVJJRU5DRToiMSIsSkFWQV9IT01FXzE3X1g2NDoiL3Vzci9saWIvanZtL3RlbXVyaW4tMTctamRrLWFtZDY0IixJbWFnZVZlcnNpb246IjIwMjIwNjA1LjEiLFJVTk5FUl9PUzoiTGludXgiLEdJVEhVQl9BUElfVVJMOiJodHRwczovL2FwaS5naXRodWIuY29tIixTV0lGVF9QQVRIOiIvdXNyL3NoYXJlL3N3aWZ0L3Vzci9iaW4iLFJVTk5FUl9VU0VSOiJydW5uZXIiLENIUk9NRVdFQkRSSVZFUjoiL3Vzci9sb2NhbC9zaGFyZS9jaHJvbWVfZHJpdmVyIixKT1VSTkFMX1NUUkVBTToiODoyMTgzNCIsR0lUSFVCX1dPUktGTE9XOiJOb2RlLmpzIFBhY2thZ2UiLF86Ii9vcHQvaG9zdGVkdG9vbGNhY2hlL25vZGUvMTguMy4wL3g2NC9iaW4vbnBtIixucG1fY29uZmlnX3ByZWZpeDoiL29wdC9ob3N0ZWR0b29sY2FjaGUvbm9kZS8xOC4zLjAveDY0IixHSVRIVUJfUlVOX0lEOiIyNDgzNTA2MDM1IixHT1JPT1RfMV8xNl9YNjQ6Ii9vcHQvaG9zdGVkdG9vbGNhY2hlL2dvLzEuMTYuMTUveDY0IixucG1fY29uZmlnX2NhY2hlOiIvaG9tZS9ydW5uZXIvLm5wbSIsR09ST09UXzFfMTdfWDY0OiIvb3B0L2hvc3RlZHRvb2xjYWNoZS9nby8xLjE3LjExL3g2NCIsR0lUSFVCX1JFRl9UWVBFOiJicmFuY2giLEJPT1RTVFJBUF9IQVNLRUxMX05PTklOVEVSQUNUSVZFOiIxIixHSVRIVUJfQkFTRV9SRUY6IiIsSW1hZ2VPUzoidWJ1bnR1MjAiLFBFUkZMT0dfTE9DQVRJT05fU0VUVElORzoiUlVOTkVSX1BFUkZMT0ciLEdPUk9PVF8xXzE4X1g2NDoiL29wdC9ob3N0ZWR0b29sY2FjaGUvZ28vMS4xOC4zL3g2NCIsR0lUSFVCX0FDVElPTl9SRVBPU0lUT1JZOiIiLG5wbV9jb25maWdfbm9kZV9neXA6Ii9vcHQvaG9zdGVkdG9vbGNhY2hlL25vZGUvMTguMy4wL3g2NC9saWIvbm9kZV9tb2R1bGVzL25wbS9ub2RlX21vZHVsZXMvbm9kZS1neXAvYmluL25vZGUtZ3lwLmpzIixQQVRIOiIvaG9tZS9ydW5uZXIvd29yay9zdHNvYXV0aDJwbHVnaW4vc3Rzb2F1dGgycGx1Z2luL25vZGVfbW9kdWxlcy8uYmluOi9ob21lL3J1bm5lci93b3JrL3N0c29hdXRoMnBsdWdpbi9ub2RlX21vZHVsZXMvLmJpbjovaG9tZS9ydW5uZXIvd29yay9ub2RlX21vZHVsZXMvLmJpbjovaG9tZS9ydW5uZXIvbm9kZV9tb2R1bGVzLy5iaW46L2hvbWUvbm9kZV9tb2R1bGVzLy5iaW46L25vZGVfbW9kdWxlcy8uYmluOi9vcHQvaG9zdGVkdG9vbGNhY2hlL25vZGUvMTguMy4wL3g2NC9saWIvbm9kZV9tb2R1bGVzL25wbS9ub2RlX21vZHVsZXMvQG5wbWNsaS9ydW4tc2NyaXB0L2xpYi9ub2RlLWd5cC1iaW46L29wdC9ob3N0ZWR0b29sY2FjaGUvbm9kZS8xOC4zLjAveDY0L2JpbjovaG9tZS9saW51eGJyZXcvLmxpbnV4YnJldy9iaW46L2hvbWUvbGludXhicmV3Ly5saW51eGJyZXcvc2JpbjovaG9tZS9ydW5uZXIvLmxvY2FsL2Jpbjovb3B0L3BpcHhfYmluOi9ob21lL3J1bm5lci8uY2FyZ28vYmluOi9ob21lL3J1bm5lci8uY29uZmlnL2NvbXBvc2VyL3ZlbmRvci9iaW46L3Vzci9sb2NhbC8uZ2hjdXAvYmluOi9ob21lL3J1bm5lci8uZG90bmV0L3Rvb2xzOi9zbmFwL2JpbjovdXNyL2xvY2FsL3NiaW46L3Vzci9sb2NhbC9iaW46L3Vzci9zYmluOi91c3IvYmluOi9zYmluOi9iaW46L3Vzci9nYW1lczovdXNyL2xvY2FsL2dhbWVzOi9zbmFwL2JpbiIsQU5UX0hPTUU6Ii91c3Ivc2hhcmUvYW50IixET1RORVRfTVVMVElMRVZFTF9MT09LVVA6IjAiLFJVTk5FUl9UUkFDS0lOR19JRDoiZ2l0aHViXzllMGE1YzdhLTk3OGYtNGZjZS1iZTlmLTE1OTdhNDVkM2Y4ZCIsSU5WT0NBVElPTl9JRDoiODIzMTUwNDBmNmNiNGIxODkxYjg3NTUwNzVkYmU3NDkiLEhPTUVCUkVXX0NFTExBUjoiL2hvbWUvbGludXhicmV3Ly5saW51eGJyZXcvQ2VsbGFyIixOUE1fQ09ORklHX1VTRVJDT05GSUc6Ii9ob21lL3J1bm5lci93b3JrL190ZW1wLy5ucG1yYyIsUlVOTkVSX1RPT0xfQ0FDSEU6Ii9vcHQvaG9zdGVkdG9vbGNhY2hlIixOT0RFOiIvb3B0L2hvc3RlZHRvb2xjYWNoZS9ub2RlLzE4LjMuMC94NjQvYmluL25vZGUiLG5wbV9wYWNrYWdlX25hbWU6IkBuc3NodW50L3N0c29hdXRoMnBsdWdpbiIsR0lUSFVCX0FDVElPTjoiX19ydW5fMiIsR0lUSFVCX1JVTl9OVU1CRVI6IjI0IixSVU5ORVJfQVJDSDoiWDY0IixBR0VOVF9UT09MU0RJUkVDVE9SWToiL29wdC9ob3N0ZWR0b29sY2FjaGUiLExBTkc6IkMuVVRGLTgiLFZDUEtHX0lOU1RBTExBVElPTl9ST09UOiIvdXNyL2xvY2FsL3NoYXJlL3ZjcGtnIixDT05EQToiL3Vzci9zaGFyZS9taW5pY29uZGEiLFJVTk5FUl9OQU1FOiJIb3N0ZWQgQWdlbnQiLFhER19DT05GSUdfSE9NRToiL2hvbWUvcnVubmVyLy5jb25maWciLEdJVEhVQl9SRUZfTkFNRToibWFpbiIsR0lUSFVCX1JFUE9TSVRPUlk6Im5zc2h1bnQvc3Rzb2F1dGgycGx1Z2luIixucG1fbGlmZWN5Y2xlX3NjcmlwdDoidml0ZSBidWlsZCIsQU5EUk9JRF9OREtfUk9PVDoiL3Vzci9sb2NhbC9saWIvYW5kcm9pZC9zZGsvbmRrLWJ1bmRsZSIsR0lUSFVCX0FDVElPTl9SRUY6IiIsREVCSUFOX0ZST05URU5EOiJub25pbnRlcmFjdGl2ZSIsR0lUSFVCX0FDVElPTlM6InRydWUiLG5wbV9wYWNrYWdlX3ZlcnNpb246IjAuMS4xMyIsbnBtX2xpZmVjeWNsZV9ldmVudDoiYnVpbGQiLEdJVEhVQl9SRUZfUFJPVEVDVEVEOiJmYWxzZSIsR0lUSFVCX1dPUktTUEFDRToiL2hvbWUvcnVubmVyL3dvcmsvc3Rzb2F1dGgycGx1Z2luL3N0c29hdXRoMnBsdWdpbiIsQUNDRVBUX0VVTEE6IlkiLEdJVEhVQl9KT0I6InB1Ymxpc2gtbnBtIixSVU5ORVJfUEVSRkxPRzoiL2hvbWUvcnVubmVyL3BlcmZsb2ciLEdJVEhVQl9TSEE6ImY2NTk4ZDE4ODYxYzYwODRhMzAyNDNjOWQ2YTlkMDIwMGUxZjllOTYiLEdJVEhVQl9SVU5fQVRURU1QVDoiMSIsR0lUSFVCX1JFRjoicmVmcy9oZWFkcy9tYWluIixHSVRIVUJfQUNUT1I6Im5zc2h1bnQiLEFORFJPSURfU0RLX1JPT1Q6Ii91c3IvbG9jYWwvbGliL2FuZHJvaWQvc2RrIixMRUlOX0hPTUU6Ii91c3IvbG9jYWwvbGliL2xlaW4iLG5wbV9jb25maWdfZ2xvYmFsY29uZmlnOiIvb3B0L2hvc3RlZHRvb2xjYWNoZS9ub2RlLzE4LjMuMC94NjQvZXRjL25wbXJjIixucG1fY29uZmlnX2luaXRfbW9kdWxlOiIvaG9tZS9ydW5uZXIvLm5wbS1pbml0LmpzIixHSVRIVUJfUEFUSDoiL2hvbWUvcnVubmVyL3dvcmsvX3RlbXAvX3J1bm5lcl9maWxlX2NvbW1hbmRzL2FkZF9wYXRoXzVjNGY2ZjE4LTE2NjUtNDYzOC1iNDIwLWJjZDAyZjY2NTgxMCIsSkFWQV9IT01FOiIvdXNyL2xpYi9qdm0vdGVtdXJpbi0xMS1qZGstYW1kNjQiLFBXRDoiL2hvbWUvcnVubmVyL3dvcmsvc3Rzb2F1dGgycGx1Z2luL3N0c29hdXRoMnBsdWdpbiIsUlVOTkVSX1dPUktTUEFDRToiL2hvbWUvcnVubmVyL3dvcmsvc3Rzb2F1dGgycGx1Z2luIixucG1fZXhlY3BhdGg6Ii9vcHQvaG9zdGVkdG9vbGNhY2hlL25vZGUvMTguMy4wL3g2NC9saWIvbm9kZV9tb2R1bGVzL25wbS9iaW4vbnBtLWNsaS5qcyIsSE9NRUJSRVdfQ0xFQU5VUF9QRVJJT0RJQ19GVUxMX0RBWVM6IjM2NTAiLEdJVEhVQl9FVkVOVF9OQU1FOiJwdXNoIixIT01FQlJFV19OT19BVVRPX1VQREFURToiMSIsQU5EUk9JRF9IT01FOiIvdXNyL2xvY2FsL2xpYi9hbmRyb2lkL3NkayIsR0lUSFVCX1NFUlZFUl9VUkw6Imh0dHBzOi8vZ2l0aHViLmNvbSIsR0VDS09XRUJEUklWRVI6Ii91c3IvbG9jYWwvc2hhcmUvZ2Vja29fZHJpdmVyIixMRUlOX0pBUjoiL3Vzci9sb2NhbC9saWIvbGVpbi9zZWxmLWluc3RhbGxzL2xlaW5pbmdlbi0yLjkuOC1zdGFuZGFsb25lLmphciIsbnBtX2NvbmZpZ19nbG9iYWxfcHJlZml4OiIvb3B0L2hvc3RlZHRvb2xjYWNoZS9ub2RlLzE4LjMuMC94NjQiLEhPTUVCUkVXX1JFUE9TSVRPUlk6Ii9ob21lL2xpbnV4YnJldy8ubGludXhicmV3L0hvbWVicmV3IixucG1fY29tbWFuZDoicnVuLXNjcmlwdCIsU0dYX0FFU01fQUREUjoiMSIsQ0hST01FX0JJTjoiL3Vzci9iaW4vZ29vZ2xlLWNocm9tZSIsU0VMRU5JVU1fSkFSX1BBVEg6Ii91c3Ivc2hhcmUvamF2YS9zZWxlbml1bS1zZXJ2ZXIuamFyIixBTkRST0lEX05ES19IT01FOiIvdXNyL2xvY2FsL2xpYi9hbmRyb2lkL3Nkay9uZGstYnVuZGxlIixHSVRIVUJfU1RFUF9TVU1NQVJZOiIvaG9tZS9ydW5uZXIvd29yay9fdGVtcC9fcnVubmVyX2ZpbGVfY29tbWFuZHMvc3RlcF9zdW1tYXJ5XzVjNGY2ZjE4LTE2NjUtNDYzOC1iNDIwLWJjZDAyZjY2NTgxMCIsSU5JVF9DV0Q6Ii9ob21lL3J1bm5lci93b3JrL3N0c29hdXRoMnBsdWdpbi9zdHNvYXV0aDJwbHVnaW4iLEVESVRPUjoidmkiLE5PREVfRU5WOiJwcm9kdWN0aW9uIn0uQlJPS0VSX0FQSV9ST09UfS9sb2dvdXRgO2NvbnNvbGUubG9nKHIpO2NvbnN0IHQ9WCh0aGlzLEJlKS5nZXQoWCh0aGlzLGplKSkucmVmcmVzaF90b2tlbjtjb25zb2xlLmxvZyh0KTtjb25zdCBzPUdjKHQpO2NvbnNvbGUubG9nKHMpO2NvbnN0IGk9cy5zdHNfc2Vzc2lvbjtjb25zb2xlLmxvZyhpKSxYKHRoaXMsQmUpLnJlbW92ZShYKHRoaXMsamUpKSxYKHRoaXMseGUpLmNhbGwodGhpcyxudWxsKTt0cnl7Y29uc3QgbD1hd2FpdCAkbyh7bWV0aG9kOiJwb3N0Iix1cmw6cixkYXRhOntzZXNzaW9uSWQ6aX0sd2l0aENyZWRlbnRpYWxzOiEwLHRpbWVvdXQ6cGFyc2VJbnQoe0RFUExPWU1FTlRfQkFTRVBBVEg6Ii9vcHQvcnVubmVyIixET1RORVRfTk9MT0dPOiIxIixVU0VSOiJydW5uZXIiLG5wbV9jb25maWdfYWx3YXlzX2F1dGg6IiIsbnBtX2NvbmZpZ191c2VyX2FnZW50OiJucG0vOC4xMS4wIG5vZGUvdjE4LjMuMCBsaW51eCB4NjQgd29ya3NwYWNlcy9mYWxzZSBjaS9naXRodWItYWN0aW9ucyIsQ0k6InRydWUiLEdJVEhVQl9FTlY6Ii9ob21lL3J1bm5lci93b3JrL190ZW1wL19ydW5uZXJfZmlsZV9jb21tYW5kcy9zZXRfZW52XzVjNGY2ZjE4LTE2NjUtNDYzOC1iNDIwLWJjZDAyZjY2NTgxMCIsUElQWF9IT01FOiIvb3B0L3BpcHgiLG5wbV9ub2RlX2V4ZWNwYXRoOiIvb3B0L2hvc3RlZHRvb2xjYWNoZS9ub2RlLzE4LjMuMC94NjQvYmluL25vZGUiLEpBVkFfSE9NRV84X1g2NDoiL3Vzci9saWIvanZtL3RlbXVyaW4tOC1qZGstYW1kNjQiLE5PREVfQVVUSF9UT0tFTjoiWFhYWFgtWFhYWFgtWFhYWFgtWFhYWFgiLFNITFZMOiIxIixucG1fY29uZmlnX25vcHJveHk6IiIsSE9NRToiL2hvbWUvcnVubmVyIixSVU5ORVJfVEVNUDoiL2hvbWUvcnVubmVyL3dvcmsvX3RlbXAiLEdJVEhVQl9FVkVOVF9QQVRIOiIvaG9tZS9ydW5uZXIvd29yay9fdGVtcC9fZ2l0aHViX3dvcmtmbG93L2V2ZW50Lmpzb24iLG5wbV9wYWNrYWdlX2pzb246Ii9ob21lL3J1bm5lci93b3JrL3N0c29hdXRoMnBsdWdpbi9zdHNvYXV0aDJwbHVnaW4vcGFja2FnZS5qc29uIixKQVZBX0hPTUVfMTFfWDY0OiIvdXNyL2xpYi9qdm0vdGVtdXJpbi0xMS1qZGstYW1kNjQiLFBJUFhfQklOX0RJUjoiL29wdC9waXB4X2JpbiIsR1JBQUxWTV8xMV9ST09UOiIvdXNyL2xvY2FsL2dyYWFsdm0vZ3JhYWx2bS1jZS1qYXZhMTEtMjIuMS4wIixHSVRIVUJfUkVQT1NJVE9SWV9PV05FUjoibnNzaHVudCIsR1JBRExFX0hPTUU6Ii91c3Ivc2hhcmUvZ3JhZGxlLTcuNC4yIixIT01FQlJFV19QUkVGSVg6Ii9ob21lL2xpbnV4YnJldy8ubGludXhicmV3IixBTkRST0lEX05ES19MQVRFU1RfSE9NRToiL3Vzci9sb2NhbC9saWIvYW5kcm9pZC9zZGsvbmRrLzI0LjAuODIxNTg4OCIsR0lUSFVCX1JFVEVOVElPTl9EQVlTOiI5MCIsUE9XRVJTSEVMTF9ESVNUUklCVVRJT05fQ0hBTk5FTDoiR2l0SHViLUFjdGlvbnMtdWJ1bnR1MjAiLEFaVVJFX0VYVEVOU0lPTl9ESVI6Ii9vcHQvYXovYXpjbGlleHRlbnNpb25zIixHSVRIVUJfSEVBRF9SRUY6IiIsbnBtX2NvbmZpZ19sb2NhbF9wcmVmaXg6Ii9ob21lL3J1bm5lci93b3JrL3N0c29hdXRoMnBsdWdpbi9zdHNvYXV0aDJwbHVnaW4iLEdJVEhVQl9HUkFQSFFMX1VSTDoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9ncmFwaHFsIixDT0xPUjoiMCIsTlZNX0RJUjoiL2hvbWUvcnVubmVyLy5udm0iLG5wbV9jb25maWdfbWV0cmljc19yZWdpc3RyeToiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvIixET1RORVRfU0tJUF9GSVJTVF9USU1FX0VYUEVSSUVOQ0U6IjEiLEpBVkFfSE9NRV8xN19YNjQ6Ii91c3IvbGliL2p2bS90ZW11cmluLTE3LWpkay1hbWQ2NCIsSW1hZ2VWZXJzaW9uOiIyMDIyMDYwNS4xIixSVU5ORVJfT1M6IkxpbnV4IixHSVRIVUJfQVBJX1VSTDoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbSIsU1dJRlRfUEFUSDoiL3Vzci9zaGFyZS9zd2lmdC91c3IvYmluIixSVU5ORVJfVVNFUjoicnVubmVyIixDSFJPTUVXRUJEUklWRVI6Ii91c3IvbG9jYWwvc2hhcmUvY2hyb21lX2RyaXZlciIsSk9VUk5BTF9TVFJFQU06Ijg6MjE4MzQiLEdJVEhVQl9XT1JLRkxPVzoiTm9kZS5qcyBQYWNrYWdlIixfOiIvb3B0L2hvc3RlZHRvb2xjYWNoZS9ub2RlLzE4LjMuMC94NjQvYmluL25wbSIsbnBtX2NvbmZpZ19wcmVmaXg6Ii9vcHQvaG9zdGVkdG9vbGNhY2hlL25vZGUvMTguMy4wL3g2NCIsR0lUSFVCX1JVTl9JRDoiMjQ4MzUwNjAzNSIsR09ST09UXzFfMTZfWDY0OiIvb3B0L2hvc3RlZHRvb2xjYWNoZS9nby8xLjE2LjE1L3g2NCIsbnBtX2NvbmZpZ19jYWNoZToiL2hvbWUvcnVubmVyLy5ucG0iLEdPUk9PVF8xXzE3X1g2NDoiL29wdC9ob3N0ZWR0b29sY2FjaGUvZ28vMS4xNy4xMS94NjQiLEdJVEhVQl9SRUZfVFlQRToiYnJhbmNoIixCT09UU1RSQVBfSEFTS0VMTF9OT05JTlRFUkFDVElWRToiMSIsR0lUSFVCX0JBU0VfUkVGOiIiLEltYWdlT1M6InVidW50dTIwIixQRVJGTE9HX0xPQ0FUSU9OX1NFVFRJTkc6IlJVTk5FUl9QRVJGTE9HIixHT1JPT1RfMV8xOF9YNjQ6Ii9vcHQvaG9zdGVkdG9vbGNhY2hlL2dvLzEuMTguMy94NjQiLEdJVEhVQl9BQ1RJT05fUkVQT1NJVE9SWToiIixucG1fY29uZmlnX25vZGVfZ3lwOiIvb3B0L2hvc3RlZHRvb2xjYWNoZS9ub2RlLzE4LjMuMC94NjQvbGliL25vZGVfbW9kdWxlcy9ucG0vbm9kZV9tb2R1bGVzL25vZGUtZ3lwL2Jpbi9ub2RlLWd5cC5qcyIsUEFUSDoiL2hvbWUvcnVubmVyL3dvcmsvc3Rzb2F1dGgycGx1Z2luL3N0c29hdXRoMnBsdWdpbi9ub2RlX21vZHVsZXMvLmJpbjovaG9tZS9ydW5uZXIvd29yay9zdHNvYXV0aDJwbHVnaW4vbm9kZV9tb2R1bGVzLy5iaW46L2hvbWUvcnVubmVyL3dvcmsvbm9kZV9tb2R1bGVzLy5iaW46L2hvbWUvcnVubmVyL25vZGVfbW9kdWxlcy8uYmluOi9ob21lL25vZGVfbW9kdWxlcy8uYmluOi9ub2RlX21vZHVsZXMvLmJpbjovb3B0L2hvc3RlZHRvb2xjYWNoZS9ub2RlLzE4LjMuMC94NjQvbGliL25vZGVfbW9kdWxlcy9ucG0vbm9kZV9tb2R1bGVzL0BucG1jbGkvcnVuLXNjcmlwdC9saWIvbm9kZS1neXAtYmluOi9vcHQvaG9zdGVkdG9vbGNhY2hlL25vZGUvMTguMy4wL3g2NC9iaW46L2hvbWUvbGludXhicmV3Ly5saW51eGJyZXcvYmluOi9ob21lL2xpbnV4YnJldy8ubGludXhicmV3L3NiaW46L2hvbWUvcnVubmVyLy5sb2NhbC9iaW46L29wdC9waXB4X2JpbjovaG9tZS9ydW5uZXIvLmNhcmdvL2JpbjovaG9tZS9ydW5uZXIvLmNvbmZpZy9jb21wb3Nlci92ZW5kb3IvYmluOi91c3IvbG9jYWwvLmdoY3VwL2JpbjovaG9tZS9ydW5uZXIvLmRvdG5ldC90b29sczovc25hcC9iaW46L3Vzci9sb2NhbC9zYmluOi91c3IvbG9jYWwvYmluOi91c3Ivc2JpbjovdXNyL2Jpbjovc2JpbjovYmluOi91c3IvZ2FtZXM6L3Vzci9sb2NhbC9nYW1lczovc25hcC9iaW4iLEFOVF9IT01FOiIvdXNyL3NoYXJlL2FudCIsRE9UTkVUX01VTFRJTEVWRUxfTE9PS1VQOiIwIixSVU5ORVJfVFJBQ0tJTkdfSUQ6ImdpdGh1Yl85ZTBhNWM3YS05NzhmLTRmY2UtYmU5Zi0xNTk3YTQ1ZDNmOGQiLElOVk9DQVRJT05fSUQ6IjgyMzE1MDQwZjZjYjRiMTg5MWI4NzU1MDc1ZGJlNzQ5IixIT01FQlJFV19DRUxMQVI6Ii9ob21lL2xpbnV4YnJldy8ubGludXhicmV3L0NlbGxhciIsTlBNX0NPTkZJR19VU0VSQ09ORklHOiIvaG9tZS9ydW5uZXIvd29yay9fdGVtcC8ubnBtcmMiLFJVTk5FUl9UT09MX0NBQ0hFOiIvb3B0L2hvc3RlZHRvb2xjYWNoZSIsTk9ERToiL29wdC9ob3N0ZWR0b29sY2FjaGUvbm9kZS8xOC4zLjAveDY0L2Jpbi9ub2RlIixucG1fcGFja2FnZV9uYW1lOiJAbnNzaHVudC9zdHNvYXV0aDJwbHVnaW4iLEdJVEhVQl9BQ1RJT046Il9fcnVuXzIiLEdJVEhVQl9SVU5fTlVNQkVSOiIyNCIsUlVOTkVSX0FSQ0g6Ilg2NCIsQUdFTlRfVE9PTFNESVJFQ1RPUlk6Ii9vcHQvaG9zdGVkdG9vbGNhY2hlIixMQU5HOiJDLlVURi04IixWQ1BLR19JTlNUQUxMQVRJT05fUk9PVDoiL3Vzci9sb2NhbC9zaGFyZS92Y3BrZyIsQ09OREE6Ii91c3Ivc2hhcmUvbWluaWNvbmRhIixSVU5ORVJfTkFNRToiSG9zdGVkIEFnZW50IixYREdfQ09ORklHX0hPTUU6Ii9ob21lL3J1bm5lci8uY29uZmlnIixHSVRIVUJfUkVGX05BTUU6Im1haW4iLEdJVEhVQl9SRVBPU0lUT1JZOiJuc3NodW50L3N0c29hdXRoMnBsdWdpbiIsbnBtX2xpZmVjeWNsZV9zY3JpcHQ6InZpdGUgYnVpbGQiLEFORFJPSURfTkRLX1JPT1Q6Ii91c3IvbG9jYWwvbGliL2FuZHJvaWQvc2RrL25kay1idW5kbGUiLEdJVEhVQl9BQ1RJT05fUkVGOiIiLERFQklBTl9GUk9OVEVORDoibm9uaW50ZXJhY3RpdmUiLEdJVEhVQl9BQ1RJT05TOiJ0cnVlIixucG1fcGFja2FnZV92ZXJzaW9uOiIwLjEuMTMiLG5wbV9saWZlY3ljbGVfZXZlbnQ6ImJ1aWxkIixHSVRIVUJfUkVGX1BST1RFQ1RFRDoiZmFsc2UiLEdJVEhVQl9XT1JLU1BBQ0U6Ii9ob21lL3J1bm5lci93b3JrL3N0c29hdXRoMnBsdWdpbi9zdHNvYXV0aDJwbHVnaW4iLEFDQ0VQVF9FVUxBOiJZIixHSVRIVUJfSk9COiJwdWJsaXNoLW5wbSIsUlVOTkVSX1BFUkZMT0c6Ii9ob21lL3J1bm5lci9wZXJmbG9nIixHSVRIVUJfU0hBOiJmNjU5OGQxODg2MWM2MDg0YTMwMjQzYzlkNmE5ZDAyMDBlMWY5ZTk2IixHSVRIVUJfUlVOX0FUVEVNUFQ6IjEiLEdJVEhVQl9SRUY6InJlZnMvaGVhZHMvbWFpbiIsR0lUSFVCX0FDVE9SOiJuc3NodW50IixBTkRST0lEX1NES19ST09UOiIvdXNyL2xvY2FsL2xpYi9hbmRyb2lkL3NkayIsTEVJTl9IT01FOiIvdXNyL2xvY2FsL2xpYi9sZWluIixucG1fY29uZmlnX2dsb2JhbGNvbmZpZzoiL29wdC9ob3N0ZWR0b29sY2FjaGUvbm9kZS8xOC4zLjAveDY0L2V0Yy9ucG1yYyIsbnBtX2NvbmZpZ19pbml0X21vZHVsZToiL2hvbWUvcnVubmVyLy5ucG0taW5pdC5qcyIsR0lUSFVCX1BBVEg6Ii9ob21lL3J1bm5lci93b3JrL190ZW1wL19ydW5uZXJfZmlsZV9jb21tYW5kcy9hZGRfcGF0aF81YzRmNmYxOC0xNjY1LTQ2MzgtYjQyMC1iY2QwMmY2NjU4MTAiLEpBVkFfSE9NRToiL3Vzci9saWIvanZtL3RlbXVyaW4tMTEtamRrLWFtZDY0IixQV0Q6Ii9ob21lL3J1bm5lci93b3JrL3N0c29hdXRoMnBsdWdpbi9zdHNvYXV0aDJwbHVnaW4iLFJVTk5FUl9XT1JLU1BBQ0U6Ii9ob21lL3J1bm5lci93b3JrL3N0c29hdXRoMnBsdWdpbiIsbnBtX2V4ZWNwYXRoOiIvb3B0L2hvc3RlZHRvb2xjYWNoZS9ub2RlLzE4LjMuMC94NjQvbGliL25vZGVfbW9kdWxlcy9ucG0vYmluL25wbS1jbGkuanMiLEhPTUVCUkVXX0NMRUFOVVBfUEVSSU9ESUNfRlVMTF9EQVlTOiIzNjUwIixHSVRIVUJfRVZFTlRfTkFNRToicHVzaCIsSE9NRUJSRVdfTk9fQVVUT19VUERBVEU6IjEiLEFORFJPSURfSE9NRToiL3Vzci9sb2NhbC9saWIvYW5kcm9pZC9zZGsiLEdJVEhVQl9TRVJWRVJfVVJMOiJodHRwczovL2dpdGh1Yi5jb20iLEdFQ0tPV0VCRFJJVkVSOiIvdXNyL2xvY2FsL3NoYXJlL2dlY2tvX2RyaXZlciIsTEVJTl9KQVI6Ii91c3IvbG9jYWwvbGliL2xlaW4vc2VsZi1pbnN0YWxscy9sZWluaW5nZW4tMi45Ljgtc3RhbmRhbG9uZS5qYXIiLG5wbV9jb25maWdfZ2xvYmFsX3ByZWZpeDoiL29wdC9ob3N0ZWR0b29sY2FjaGUvbm9kZS8xOC4zLjAveDY0IixIT01FQlJFV19SRVBPU0lUT1JZOiIvaG9tZS9saW51eGJyZXcvLmxpbnV4YnJldy9Ib21lYnJldyIsbnBtX2NvbW1hbmQ6InJ1bi1zY3JpcHQiLFNHWF9BRVNNX0FERFI6IjEiLENIUk9NRV9CSU46Ii91c3IvYmluL2dvb2dsZS1jaHJvbWUiLFNFTEVOSVVNX0pBUl9QQVRIOiIvdXNyL3NoYXJlL2phdmEvc2VsZW5pdW0tc2VydmVyLmphciIsQU5EUk9JRF9OREtfSE9NRToiL3Vzci9sb2NhbC9saWIvYW5kcm9pZC9zZGsvbmRrLWJ1bmRsZSIsR0lUSFVCX1NURVBfU1VNTUFSWToiL2hvbWUvcnVubmVyL3dvcmsvX3RlbXAvX3J1bm5lcl9maWxlX2NvbW1hbmRzL3N0ZXBfc3VtbWFyeV81YzRmNmYxOC0xNjY1LTQ2MzgtYjQyMC1iY2QwMmY2NjU4MTAiLElOSVRfQ1dEOiIvaG9tZS9ydW5uZXIvd29yay9zdHNvYXV0aDJwbHVnaW4vc3Rzb2F1dGgycGx1Z2luIixFRElUT1I6InZpIixOT0RFX0VOVjoicHJvZHVjdGlvbiJ9LlRJTUVPVVQpfSk7cmV0dXJuIGwuZGF0YS5zdGF0dXM9PT11ci5PSz8hMDooY29uc29sZS5sb2coIkVycm9yIGR1cmluZyBsb2dvdXQgKHNlcnZlciBzaWRlKSIpLGNvbnNvbGUubG9nKEpTT04uc3RyaW5naWZ5KGwuZGF0YSkpLCExKX1jYXRjaChsKXtyZXR1cm4gY29uc29sZS5sb2coIkVycm9yIGR1cmluZyBsb2dvdXQgKHNlcnZlciBzaWRlKSIpLGNvbnNvbGUubG9nKGwpLGNvbnNvbGUubG9nKEpTT04uc3RyaW5naWZ5KGwpKSwhMX19KSx1ZSh0aGlzLEJlLG5ldyBXYyh7Y2xpZW50U3RvcmFnZVR5cGU6QWkuTUVNT1JZX1NUT1JBR0V9KS5HZXRTdG9yYWdlKCkpLHVlKHRoaXMseGUscj0+e2NvbnN0IG89e21lc3NhZ2VJZDotMSxjb21tYW5kOmpuLkFVVEhFTlRJQ0FURV9FVkVOVH07WCh0aGlzLG5uKS5jYWxsKHRoaXMsbyxyKX0pLHVlKHRoaXMsdm4scj0+e2NvbnN0IG89e21lc3NhZ2VJZDotMSxjb21tYW5kOmpuLkVSUk9SfTtYKHRoaXMsbm4pLmNhbGwodGhpcyxvLHIpfSksdWUodGhpcyxGbixuKSx0aGlzLlNldHVwTGlzdGVuZXIoKX19QmU9bmV3IFdlYWtNYXAsSG49bmV3IFdlYWtNYXAsUHI9bmV3IFdlYWtNYXAsTm89bmV3IFdlYWtNYXAsamU9bmV3IFdlYWtNYXAsZm49bmV3IFdlYWtNYXAsdm49bmV3IFdlYWtNYXAseGU9bmV3IFdlYWtNYXAsRm49bmV3IFdlYWtNYXAsZ289bmV3IFdlYWtNYXAsbm49bmV3IFdlYWtNYXAsd3I9bmV3IFdlYWtNYXAsR3I9bmV3IFdlYWtNYXAsQ3I9bmV3IFdlYWtNYXAsX3I9bmV3IFdlYWtNYXAseXI9bmV3IFdlYWtNYXAsTHI9bmV3IFdlYWtNYXAsQnI9bmV3IFdlYWtNYXAsb25tZXNzYWdlPWFzeW5jIGZ1bmN0aW9uKGUpe2NvbnN0IG49ZS5kYXRhO25ldyBZYyhuKX19KSgpOwo=";
7205
7205
  const blob = typeof window !== "undefined" && window.Blob && new Blob([atob(encodedJs)], { type: "text/javascript;charset=utf-8" });
7206
7206
  function WorkerWrapper() {
7207
7207
  const objURL = blob && (window.URL || window.webkitURL).createObjectURL(blob);
@@ -7211,7 +7211,7 @@ function WorkerWrapper() {
7211
7211
  objURL && (window.URL || window.webkitURL).revokeObjectURL(objURL);
7212
7212
  }
7213
7213
  }
7214
- const debug = Debug(`proc:${process.pid}:stsoauth2manager.ts`);
7214
+ const debug = Debug(`proc:${0}:stsoauth2manager.ts`);
7215
7215
  class STSOAuth2Manager {
7216
7216
  constructor(app, options) {
7217
7217
  __privateAdd(this, _storageManager, void 0);