@codingame/monaco-editor-wrapper 4.0.0-next.1 → 4.0.0-next.3

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.
Files changed (403) hide show
  1. package/dist/_virtual/Angular.ng-template-15.2.1.vsix_package.json.vsjson.js +3 -0
  2. package/dist/_virtual/C2Hs-configuration.json.raw.js +3 -0
  3. package/dist/_virtual/Dart-Code.dart-code-3.63.20230419.vsix_package.json.vsjson.js +3 -0
  4. package/dist/_virtual/Hsc2Hs-configuration.json.raw.js +3 -0
  5. package/dist/_virtual/IMCTradingBV.svlangserver-0.4.1.vsix_package.json.vsjson.js +3 -0
  6. package/dist/_virtual/JakeBecker.elixir-ls-0.14.5.vsix_package.json.vsjson.js +3 -0
  7. package/dist/_virtual/JuanBlanco.solidity-0.0.152.vsix_package.json.vsjson.js +3 -0
  8. package/dist/_virtual/META.json.raw2.js +3 -0
  9. package/dist/_virtual/REditorSupport.r-2.7.2.vsix_package.json.vsjson.js +3 -0
  10. package/dist/_virtual/Rlogo.svg.raw.js +3 -0
  11. package/dist/{_commonjsHelpers.js → _virtual/_commonjsHelpers.js} +1 -1
  12. package/dist/_virtual/_monaco-editor.js +6 -0
  13. package/dist/_virtual/_rollup-plugin-web-worker-loader__helper__browser__createBase64WorkerFactory.js +31 -0
  14. package/dist/_virtual/actions.js +3 -0
  15. package/dist/_virtual/alefragnani.pascal-9.6.0.vsix_package.json.vsjson.js +3 -0
  16. package/dist/_virtual/angular-template-language-configuration.json.raw.js +3 -0
  17. package/dist/_virtual/basicInput.js +3 -0
  18. package/dist/_virtual/batisteo.vscode-django-1.10.0.vsix_package.json.vsjson.js +3 -0
  19. package/dist/_virtual/bitwisecook.tcl-0.4.3.vsix_package.json.vsjson.js +3 -0
  20. package/dist/_virtual/book-dark.svg.raw.js +3 -0
  21. package/dist/_virtual/book-light.svg.raw.js +3 -0
  22. package/dist/_virtual/broadcomMFD.cobol-language-support-1.2.1.vsix_package.json.vsjson.js +3 -0
  23. package/dist/_virtual/cabal-configuration.json.raw.js +3 -0
  24. package/dist/_virtual/castwide.solargraph-0.24.0.vsix_package.json.vsjson.js +3 -0
  25. package/dist/_virtual/ckolkman.vscode-postgres-1.4.2.vsix_package.json.vsjson.js +3 -0
  26. package/dist/_virtual/cm_adapter.js +3 -0
  27. package/dist/_virtual/commands.js +3 -0
  28. package/dist/_virtual/conda-environment.json.raw.js +3 -0
  29. package/dist/_virtual/conda-meta.json.raw.js +3 -0
  30. package/dist/_virtual/condarc.json.raw.js +3 -0
  31. package/dist/{css.worker.js → _virtual/css.worker.js} +1 -1
  32. package/dist/_virtual/d.json.raw2.js +3 -0
  33. package/dist/_virtual/dart-language-configuration.json.raw.js +3 -0
  34. package/dist/_virtual/dcf-configuration.json.raw.js +3 -0
  35. package/dist/_virtual/diet.json.raw3.js +3 -0
  36. package/dist/_virtual/dub.schema.json.raw.js +3 -0
  37. package/dist/_virtual/dune.json.raw3.js +3 -0
  38. package/dist/_virtual/editor.api.js +6 -0
  39. package/dist/_virtual/editor.worker.js +6 -0
  40. package/dist/_virtual/eex-language-configuration.json.raw.js +3 -0
  41. package/dist/_virtual/elixir-language-configuration.json.raw.js +3 -0
  42. package/dist/_virtual/erlang.configuration.json.raw.js +3 -0
  43. package/dist/_virtual/file_type_java.svg.raw.js +3 -0
  44. package/dist/_virtual/file_type_scala.svg.raw.js +3 -0
  45. package/dist/_virtual/flutter_activity_bar.svg.raw.js +3 -0
  46. package/dist/_virtual/general.json.raw.js +3 -0
  47. package/dist/_virtual/go.mod.language-configuration.json.raw.js +3 -0
  48. package/dist/_virtual/golang.Go-0.38.0.vsix_package.json.vsjson.js +3 -0
  49. package/dist/_virtual/haskell-configuration.json.raw.js +3 -0
  50. package/dist/{html.worker.js → _virtual/html.worker.js} +1 -1
  51. package/dist/_virtual/index.js +3 -0
  52. package/dist/_virtual/index2.js +3 -0
  53. package/dist/_virtual/index3.js +3 -0
  54. package/dist/_virtual/java-properties-configuration.json.raw.js +3 -0
  55. package/dist/_virtual/johnsoncodehk.vscode-angular-1.0.22.vsix_package.json.vsjson.js +3 -0
  56. package/dist/{json.worker.js → _virtual/json.worker.js} +1 -1
  57. package/dist/_virtual/justusadam.language-haskell-3.6.0.vsix_package.json.vsjson.js +3 -0
  58. package/dist/_virtual/keymap_vim.js +3 -0
  59. package/dist/_virtual/kotlin.configuration.json.raw.js +3 -0
  60. package/dist/_virtual/lang-config.json.raw.js +3 -0
  61. package/dist/_virtual/language-configuration.json.raw.js +3 -0
  62. package/dist/_virtual/language-configuration.json.raw2.js +3 -0
  63. package/dist/_virtual/language-configuration.json.raw3.js +3 -0
  64. package/dist/_virtual/language-configuration.json.raw4.js +3 -0
  65. package/dist/_virtual/language-configuration.json.raw5.js +3 -0
  66. package/dist/_virtual/language-configuration.json.raw6.js +3 -0
  67. package/dist/_virtual/language-configuration.json.raw7.js +3 -0
  68. package/dist/_virtual/language-configuration.json.raw8.js +3 -0
  69. package/dist/_virtual/literate-haskell-configuration.json.raw.js +3 -0
  70. package/dist/_virtual/logo.svg.raw.js +3 -0
  71. package/dist/_virtual/mathiasfrohlich.Kotlin-1.7.1.vsix_package.json.vsjson.js +3 -0
  72. package/dist/_virtual/menhir.json.raw2.js +3 -0
  73. package/dist/_virtual/ms-dotnettools.csharp-1.25.4.vsix_package.json.vsjson.js +3 -0
  74. package/dist/_virtual/ms-python.python-2023.7.11111009.vsix_package.json.vsjson.js +3 -0
  75. package/dist/_virtual/ms-vscode.cpptools-1.15.2.vsix_package.json.vsjson.js +3 -0
  76. package/dist/_virtual/oasis.json.raw2.js +3 -0
  77. package/dist/_virtual/ocaml.json.raw3.js +3 -0
  78. package/dist/_virtual/ocamlbuild.json.raw2.js +3 -0
  79. package/dist/_virtual/ocamlformat.json.raw2.js +3 -0
  80. package/dist/_virtual/ocamllabs.ocaml-platform-1.12.2.vsix_package.json.vsjson.js +3 -0
  81. package/dist/_virtual/ocamllex.json.raw3.js +3 -0
  82. package/dist/_virtual/opam-install.json.raw2.js +3 -0
  83. package/dist/_virtual/opam.json.raw2.js +3 -0
  84. package/dist/_virtual/package-json-schema.json.raw.js +3 -0
  85. package/dist/_virtual/package.schema.json.raw.js +3 -0
  86. package/dist/_virtual/pascal.configuration.json.raw.js +3 -0
  87. package/dist/_virtual/pgourlain.erlang-0.8.8.vsix_package.json.vsjson.js +3 -0
  88. package/dist/_virtual/pip-requirements.json.raw.js +3 -0
  89. package/dist/_virtual/postgres-explorer.svg.raw.js +3 -0
  90. package/dist/_virtual/prettier-options-schema.json.raw.js +3 -0
  91. package/dist/_virtual/r-configuration.json.raw.js +3 -0
  92. package/dist/_virtual/rbuildignore-configuration.json.raw.js +3 -0
  93. package/dist/_virtual/rd-configuration.json.raw.js +3 -0
  94. package/dist/{reason.json2.js → _virtual/reason.json.raw2.js} +2 -2
  95. package/dist/_virtual/redhat.java-1.18.2023042204.vsix_package.json.vsjson.js +3 -0
  96. package/dist/_virtual/rmd-configuration.json.raw.js +3 -0
  97. package/dist/_virtual/rnamespace-configuration.json.raw.js +3 -0
  98. package/dist/_virtual/scala-lang.scala-0.5.6.vsix_package.json.vsjson.js +3 -0
  99. package/dist/_virtual/scalameta-logo.png.raw.js +3 -0
  100. package/dist/_virtual/scalameta.metals-1.23.0.vsix_package.json.vsjson.js +3 -0
  101. package/dist/_virtual/scalameta.svg.raw.js +3 -0
  102. package/dist/_virtual/schema.json.raw.js +3 -0
  103. package/dist/_virtual/shiftCommand.js +6 -0
  104. package/dist/_virtual/solidity.configuration.json.raw.js +3 -0
  105. package/dist/_virtual/state.js +3 -0
  106. package/dist/_virtual/statusbar.js +3 -0
  107. package/dist/_virtual/sumneko.lua-3.6.18.vsix_package.json.vsjson.js +3 -0
  108. package/dist/_virtual/svelte.svelte-vscode-107.3.0.vsix_package.json.vsjson.js +3 -0
  109. package/dist/_virtual/tasks.schema.json.raw.js +3 -0
  110. package/dist/{ts.worker.js → _virtual/ts.worker.js} +1 -1
  111. package/dist/_virtual/util.js +3 -0
  112. package/dist/_virtual/webfreak.code-d-0.23.2.vsix_package.json.vsjson.js +3 -0
  113. package/dist/configuration/index.js +45 -0
  114. package/dist/editor/autofold.js +24 -0
  115. package/dist/editor/cobol.js +67 -0
  116. package/dist/editor/index.js +9 -0
  117. package/dist/extensions/Angular.ng-template-15.2.1.vsix.js +15 -0
  118. package/dist/extensions/Dart-Code.dart-code-3.63.20230419.vsix.js +14 -0
  119. package/dist/extensions/IMCTradingBV.svlangserver-0.4.1.vsix.js +18 -0
  120. package/dist/extensions/JakeBecker.elixir-ls-0.14.5.vsix.js +18 -0
  121. package/dist/extensions/JuanBlanco.solidity-0.0.152.vsix.js +13 -0
  122. package/dist/extensions/REditorSupport.r-2.7.2.vsix.js +47 -0
  123. package/dist/extensions/alefragnani.pascal-9.6.0.vsix.js +13 -0
  124. package/dist/extensions/batisteo.vscode-django-1.10.0.vsix.js +17 -0
  125. package/dist/extensions/bitwisecook.tcl-0.4.3.vsix.js +13 -0
  126. package/dist/extensions/broadcomMFD.cobol-language-support-1.2.1.vsix.js +11 -0
  127. package/dist/extensions/castwide.solargraph-0.24.0.vsix.js +8 -0
  128. package/dist/extensions/ckolkman.vscode-postgres-1.4.2.vsix.js +14 -0
  129. package/dist/extensions/golang.Go-0.38.0.vsix.js +17 -0
  130. package/dist/extensions/johnsoncodehk.vscode-angular-1.0.22.vsix.js +13 -0
  131. package/dist/extensions/justusadam.language-haskell-3.6.0.vsix.js +41 -0
  132. package/dist/extensions/mathiasfrohlich.Kotlin-1.7.1.vsix.js +15 -0
  133. package/dist/extensions/ms-dotnettools.csharp-1.25.4.vsix.js +17 -0
  134. package/dist/extensions/ms-python.python-2023.7.11111009.vsix.js +20 -0
  135. package/dist/extensions/ms-vscode.cpptools-1.15.2.vsix.js +8 -0
  136. package/dist/extensions/ocamllabs.ocaml-platform-1.12.2.vsix.js +92 -0
  137. package/dist/extensions/pgourlain.erlang-0.8.8.vsix.js +13 -0
  138. package/dist/extensions/redhat.java-1.18.2023042204.vsix.js +19 -0
  139. package/dist/extensions/scala-lang.scala-0.5.6.vsix.js +11 -0
  140. package/dist/extensions/scalameta.metals-1.23.0.vsix.js +34 -0
  141. package/dist/extensions/sumneko.lua-3.6.18.vsix.js +10 -0
  142. package/dist/extensions/svelte.svelte-vscode-107.3.0.vsix.js +37 -0
  143. package/dist/extensions/webfreak.code-d-0.23.2.vsix.js +28 -0
  144. package/dist/extensions.d.ts +3 -2
  145. package/dist/features/cssContribution.js +4 -5
  146. package/dist/features/debug.d.ts +1 -0
  147. package/dist/features/debug.js +7 -0
  148. package/dist/features/htmlContribution.js +79 -88
  149. package/dist/features/jsonContribution.js +10 -12
  150. package/dist/features/search.d.ts +1 -0
  151. package/dist/features/search.js +7 -0
  152. package/dist/features/typescriptContribution.js +27 -15
  153. package/dist/features/viewPanels.d.ts +1 -0
  154. package/dist/features/viewPanels.js +9 -0
  155. package/dist/features/views.d.ts +4 -0
  156. package/dist/features/views.js +17 -0
  157. package/dist/keybindings/index.js +36 -0
  158. package/dist/keybindings/vim.js +82 -0
  159. package/dist/languages/index.js +40 -0
  160. package/dist/main.js +6 -1286
  161. package/dist/monaco.d.ts +0 -1
  162. package/dist/monaco.js +90 -0
  163. package/dist/node_modules/@types/node/console.d.js +3 -0
  164. package/dist/node_modules/@types/node/globals.d.js +3 -0
  165. package/dist/node_modules/@types/node/process.d.js +3 -0
  166. package/dist/node_modules/lodash.kebabcase/index.js +439 -0
  167. package/dist/node_modules/lodash.throttle/index.js +443 -0
  168. package/dist/node_modules/monaco-emacs/lib/emacs/actions.js +596 -0
  169. package/dist/node_modules/monaco-emacs/lib/emacs/basicInput.js +113 -0
  170. package/dist/node_modules/monaco-emacs/lib/emacs/commands.js +184 -0
  171. package/dist/node_modules/monaco-emacs/lib/emacs/index.js +186 -0
  172. package/dist/node_modules/monaco-emacs/lib/emacs/state.js +116 -0
  173. package/dist/node_modules/monaco-emacs/lib/emacs/util.js +112 -0
  174. package/dist/node_modules/monaco-emacs/lib/index.js +31 -0
  175. package/dist/{vim.js → node_modules/monaco-vim/lib/cm/keymap_vim.js} +3 -1790
  176. package/dist/node_modules/monaco-vim/lib/cm_adapter.js +1393 -0
  177. package/dist/node_modules/monaco-vim/lib/index.js +71 -0
  178. package/dist/node_modules/monaco-vim/lib/statusbar.js +239 -0
  179. package/dist/node_modules/tslib/tslib.es6.js +77 -0
  180. package/dist/services.d.ts +3 -0
  181. package/dist/services.js +55 -0
  182. package/dist/style.js +12 -0
  183. package/dist/theme/index.js +21 -0
  184. package/dist/tools/EditorOpenHandlerRegistry.js +108 -0
  185. package/dist/tools.js +235 -0
  186. package/dist/worker.d.ts +1 -10
  187. package/dist/worker.js +9 -58
  188. package/package.json +28 -37
  189. package/stats.html +1 -1
  190. package/dist/C2Hs-configuration.json.js +0 -3
  191. package/dist/Hsc2Hs-configuration.json.js +0 -3
  192. package/dist/META.json2.js +0 -3
  193. package/dist/_monaco-editor_commonjs-external.js +0 -39
  194. package/dist/_rollupPluginBabelHelpers.js +0 -51
  195. package/dist/add.svg.js +0 -3
  196. package/dist/add.svg2.js +0 -3
  197. package/dist/adddep-dark.svg.js +0 -3
  198. package/dist/adddep-light.svg.js +0 -3
  199. package/dist/angular-template-language-configuration.json.js +0 -3
  200. package/dist/arrow-circle-up-dark.svg.js +0 -3
  201. package/dist/arrow-circle-up-light.svg.js +0 -3
  202. package/dist/book-dark.svg.js +0 -3
  203. package/dist/book-light.svg.js +0 -3
  204. package/dist/book-open-dark.svg.js +0 -3
  205. package/dist/book-open-light.svg.js +0 -3
  206. package/dist/cabal-configuration.json.js +0 -3
  207. package/dist/d.json2.js +0 -3
  208. package/dist/dart-language-configuration.json.js +0 -3
  209. package/dist/dcf-configuration.json.js +0 -3
  210. package/dist/diet.json3.js +0 -3
  211. package/dist/document-search-dark.svg.js +0 -3
  212. package/dist/document-search-light.svg.js +0 -3
  213. package/dist/documentation-inverse.svg.js +0 -3
  214. package/dist/documentation.svg.js +0 -3
  215. package/dist/dub-convert-inverse.svg.js +0 -3
  216. package/dist/dub-convert.svg.js +0 -3
  217. package/dist/dune.json3.js +0 -3
  218. package/dist/edit-dub-inverse.svg.js +0 -3
  219. package/dist/edit-dub.svg.js +0 -3
  220. package/dist/edit-source-inverse.svg.js +0 -3
  221. package/dist/edit-source.svg.js +0 -3
  222. package/dist/eex-language-configuration.json.js +0 -3
  223. package/dist/elixir-language-configuration.json.js +0 -3
  224. package/dist/erlang.configuration.json.js +0 -3
  225. package/dist/extension-web.js.js +0 -3
  226. package/dist/extension-web.js2.js +0 -3
  227. package/dist/extension.browser.js.js +0 -3
  228. package/dist/file_type_java.svg.js +0 -3
  229. package/dist/file_type_scala.svg.js +0 -3
  230. package/dist/focus-dark.svg.js +0 -3
  231. package/dist/focus-light.svg.js +0 -3
  232. package/dist/general.json.js +0 -3
  233. package/dist/get-inverse.svg.js +0 -3
  234. package/dist/get.svg.js +0 -3
  235. package/dist/go.mod.language-configuration.json.js +0 -3
  236. package/dist/haskell-configuration.json.js +0 -3
  237. package/dist/hot-reload-tb.png.js +0 -3
  238. package/dist/hot-reload.svg.js +0 -3
  239. package/dist/index.js +0 -2210
  240. package/dist/index2.js +0 -49
  241. package/dist/inspector.svg.js +0 -3
  242. package/dist/java-properties-configuration.json.js +0 -3
  243. package/dist/kotlin.configuration.json.js +0 -3
  244. package/dist/lang-config.json.js +0 -3
  245. package/dist/language-configuration.json.js +0 -3
  246. package/dist/language-configuration.json2.js +0 -3
  247. package/dist/language-configuration.json3.js +0 -3
  248. package/dist/language-configuration.json4.js +0 -3
  249. package/dist/language-configuration.json5.js +0 -3
  250. package/dist/language-configuration.json6.js +0 -3
  251. package/dist/language-configuration.json7.js +0 -3
  252. package/dist/language-configuration.json8.js +0 -3
  253. package/dist/literate-haskell-configuration.json.js +0 -3
  254. package/dist/menhir.json2.js +0 -3
  255. package/dist/oasis.json2.js +0 -3
  256. package/dist/ocaml.json3.js +0 -3
  257. package/dist/ocamlbuild.json2.js +0 -3
  258. package/dist/ocamlformat.json2.js +0 -3
  259. package/dist/ocamllex.json3.js +0 -3
  260. package/dist/opam-install.json2.js +0 -3
  261. package/dist/opam.json2.js +0 -3
  262. package/dist/outdated-inverse.svg.js +0 -3
  263. package/dist/outdated.svg.js +0 -3
  264. package/dist/pascal.configuration.json.js +0 -3
  265. package/dist/performance.svg.js +0 -3
  266. package/dist/pip-requirements.json.js +0 -3
  267. package/dist/plus-dark.svg.js +0 -3
  268. package/dist/plus-light.svg.js +0 -3
  269. package/dist/preview-right-dark.svg.js +0 -3
  270. package/dist/preview-right-light.svg.js +0 -3
  271. package/dist/r-configuration.json.js +0 -3
  272. package/dist/rbuildignore-configuration.json.js +0 -3
  273. package/dist/rd-configuration.json.js +0 -3
  274. package/dist/ref-group-by-type-dark.svg.js +0 -3
  275. package/dist/ref-group-by-type-light.svg.js +0 -3
  276. package/dist/ref-ungroup-by-type-dark.svg.js +0 -3
  277. package/dist/ref-ungroup-by-type-light.svg.js +0 -3
  278. package/dist/refresh-dark.svg.js +0 -3
  279. package/dist/refresh-dark.svg2.js +0 -3
  280. package/dist/refresh-light.svg.js +0 -3
  281. package/dist/refresh-light.svg2.js +0 -3
  282. package/dist/repl.svg.js +0 -3
  283. package/dist/repl.svg2.js +0 -3
  284. package/dist/rmd-configuration.json.js +0 -3
  285. package/dist/rnamespace-configuration.json.js +0 -3
  286. package/dist/save.svg.js +0 -3
  287. package/dist/save.svg2.js +0 -3
  288. package/dist/scalameta-logo.png.js +0 -3
  289. package/dist/solidity.configuration.json.js +0 -3
  290. package/dist/switch-impl-intf.dark.svg.js +0 -3
  291. package/dist/switch-impl-intf.light.svg.js +0 -3
  292. package/dist/upgrade-inverse.svg.js +0 -3
  293. package/dist/upgrade.svg.js +0 -3
  294. package/dist/x-dark.svg.js +0 -3
  295. package/dist/x-light.svg.js +0 -3
  296. /package/dist/{C2Hs.json.js → _virtual/C2Hs.json.raw.js} +0 -0
  297. /package/dist/{COBOL.tmLanguage.json.js → _virtual/COBOL.tmLanguage.json.raw.js} +0 -0
  298. /package/dist/{Erlang.plist.js → _virtual/Erlang.plist.raw.js} +0 -0
  299. /package/dist/{Hsc2Hs.json.js → _virtual/Hsc2Hs.json.raw.js} +0 -0
  300. /package/dist/{JavaProperties.tmLanguage.json.js → _virtual/JavaProperties.tmLanguage.json.raw.js} +0 -0
  301. /package/dist/{Kotlin.tmLanguage.js → _virtual/Kotlin.tmLanguage.raw.js} +0 -0
  302. /package/dist/{META.json.js → _virtual/META.json.raw.js} +0 -0
  303. /package/dist/{Markdown Redcarpet.json.js → _virtual/Markdown Redcarpet.json.raw.js} +0 -0
  304. /package/dist/{RMarkdown.json.js → _virtual/RMarkdown.json.raw.js} +0 -0
  305. /package/dist/{Rcpp.json.js → _virtual/Rcpp.json.raw.js} +0 -0
  306. /package/dist/{Rd (R Documentation).json.js → _virtual/Rd (R Documentation).json.raw.js} +0 -0
  307. /package/dist/{Scala.tmLanguage.json.js → _virtual/Scala.tmLanguage.json.raw.js} +0 -0
  308. /package/dist/{alex.json.js → _virtual/alex.json.raw.js} +0 -0
  309. /package/dist/{angular-directives.json.js → _virtual/angular-directives.json.raw.js} +0 -0
  310. /package/dist/{angular-interpolations.json.js → _virtual/angular-interpolations.json.raw.js} +0 -0
  311. /package/dist/{aspnetcorerazor.tmLanguage.json.js → _virtual/aspnetcorerazor.tmLanguage.json.raw.js} +0 -0
  312. /package/dist/{atd.json.js → _virtual/atd.json.raw.js} +0 -0
  313. /package/dist/{buildtarget.json.js → _virtual/buildtarget.json.raw.js} +0 -0
  314. /package/dist/{cabal.json.js → _virtual/cabal.json.raw.js} +0 -0
  315. /package/dist/{codeblock-cabal.json.js → _virtual/codeblock-cabal.json.raw.js} +0 -0
  316. /package/dist/{codeblock-haskell.json.js → _virtual/codeblock-haskell.json.raw.js} +0 -0
  317. /package/dist/{codeblock-literate-haskell.json.js → _virtual/codeblock-literate-haskell.json.raw.js} +0 -0
  318. /package/dist/{codeblock.json.js → _virtual/codeblock.json.raw.js} +0 -0
  319. /package/dist/{codeblock.json2.js → _virtual/codeblock.json.raw2.js} +0 -0
  320. /package/dist/{cram.json.js → _virtual/cram.json.raw.js} +0 -0
  321. /package/dist/{csharp.json.js → _virtual/csharp.json.raw.js} +0 -0
  322. /package/dist/{d.json.js → _virtual/d.json.raw.js} +0 -0
  323. /package/dist/{dart.json.js → _virtual/dart.json.raw.js} +0 -0
  324. /package/dist/{dcf.json.js → _virtual/dcf.json.raw.js} +0 -0
  325. /package/dist/{diet.json.js → _virtual/diet.json.raw.js} +0 -0
  326. /package/dist/{diet.json2.js → _virtual/diet.json.raw2.js} +0 -0
  327. /package/dist/{django-html.tmLanguage.json.js → _virtual/django-html.tmLanguage.json.raw.js} +0 -0
  328. /package/dist/{django-txt.tmLanguage.json.js → _virtual/django-txt.tmLanguage.json.raw.js} +0 -0
  329. /package/dist/{dml.json.js → _virtual/dml.json.raw.js} +0 -0
  330. /package/dist/{dune-project.json.js → _virtual/dune-project.json.raw.js} +0 -0
  331. /package/dist/{dune-project.json2.js → _virtual/dune-project.json.raw2.js} +0 -0
  332. /package/dist/{dune-workspace.json.js → _virtual/dune-workspace.json.raw.js} +0 -0
  333. /package/dist/{dune.json.js → _virtual/dune.json.raw.js} +0 -0
  334. /package/dist/{dune.json2.js → _virtual/dune.json.raw2.js} +0 -0
  335. /package/dist/{eex.json.js → _virtual/eex.json.raw.js} +0 -0
  336. /package/dist/{elixir.json.js → _virtual/elixir.json.raw.js} +0 -0
  337. /package/dist/{erlang.json.js → _virtual/erlang.json.raw.js} +0 -0
  338. /package/dist/{expression.json.js → _virtual/expression.json.raw.js} +0 -0
  339. /package/dist/{filters.json.js → _virtual/filters.json.raw.js} +0 -0
  340. /package/dist/{go.json.js → _virtual/go.json.raw.js} +0 -0
  341. /package/dist/{go.mod.tmGrammar.json.js → _virtual/go.mod.tmGrammar.json.raw.js} +0 -0
  342. /package/dist/{go.sum.tmGrammar.json.js → _virtual/go.sum.tmGrammar.json.raw.js} +0 -0
  343. /package/dist/{govulncheck.tmGrammar.json.js → _virtual/govulncheck.tmGrammar.json.raw.js} +0 -0
  344. /package/dist/{happy.json.js → _virtual/happy.json.raw.js} +0 -0
  345. /package/dist/{haskell.json.js → _virtual/haskell.json.raw.js} +0 -0
  346. /package/dist/{html-eex.json.js → _virtual/html-eex.json.raw.js} +0 -0
  347. /package/dist/{inline-styles.json.js → _virtual/inline-styles.json.raw.js} +0 -0
  348. /package/dist/{inline-template.json.js → _virtual/inline-template.json.raw.js} +0 -0
  349. /package/dist/{java.json.js → _virtual/java.json.raw.js} +0 -0
  350. /package/dist/{javascript.json.js → _virtual/javascript.json.raw.js} +0 -0
  351. /package/dist/{jvm-bytecode-verbose.json.js → _virtual/jvm-bytecode-verbose.json.raw.js} +0 -0
  352. /package/dist/{jvm-bytecode.json.js → _virtual/jvm-bytecode.json.raw.js} +0 -0
  353. /package/dist/{kotlin.json.js → _virtual/kotlin.json.raw.js} +0 -0
  354. /package/dist/{literateHaskell.json.js → _virtual/literateHaskell.json.raw.js} +0 -0
  355. /package/dist/{markdown-svelte-css.json.js → _virtual/markdown-svelte-css.json.raw.js} +0 -0
  356. /package/dist/{markdown-svelte-js.json.js → _virtual/markdown-svelte-js.json.raw.js} +0 -0
  357. /package/dist/{markdown-svelte.json.js → _virtual/markdown-svelte.json.raw.js} +0 -0
  358. /package/dist/{menhir-action.json.js → _virtual/menhir-action.json.raw.js} +0 -0
  359. /package/dist/{menhir.json.js → _virtual/menhir.json.raw.js} +0 -0
  360. /package/dist/{merlin.json.js → _virtual/merlin.json.raw.js} +0 -0
  361. /package/dist/{oasis.json.js → _virtual/oasis.json.raw.js} +0 -0
  362. /package/dist/{ocaml-markdown-codeblock.json.js → _virtual/ocaml-markdown-codeblock.json.raw.js} +0 -0
  363. /package/dist/{ocaml.interface.json.js → _virtual/ocaml.interface.json.raw.js} +0 -0
  364. /package/dist/{ocaml.json.js → _virtual/ocaml.json.raw.js} +0 -0
  365. /package/dist/{ocaml.json2.js → _virtual/ocaml.json.raw2.js} +0 -0
  366. /package/dist/{ocamlbuild.json.js → _virtual/ocamlbuild.json.raw.js} +0 -0
  367. /package/dist/{ocamldoc.json.js → _virtual/ocamldoc.json.raw.js} +0 -0
  368. /package/dist/{ocamlformat.json.js → _virtual/ocamlformat.json.raw.js} +0 -0
  369. /package/dist/{ocamllex.json.js → _virtual/ocamllex.json.raw.js} +0 -0
  370. /package/dist/{ocamllex.json2.js → _virtual/ocamllex.json.raw2.js} +0 -0
  371. /package/dist/{opam-install.json.js → _virtual/opam-install.json.raw.js} +0 -0
  372. /package/dist/{opam.json.js → _virtual/opam.json.raw.js} +0 -0
  373. /package/dist/{pascal.json.js → _virtual/pascal.json.raw.js} +0 -0
  374. /package/dist/{pascal.tmLanguage.js → _virtual/pascal.tmLanguage.raw.js} +0 -0
  375. /package/dist/{pgsql.tmLanguage.js → _virtual/pgsql.tmLanguage.raw.js} +0 -0
  376. /package/dist/{pip-requirements.tmLanguage.json.js → _virtual/pip-requirements.tmLanguage.json.raw.js} +0 -0
  377. /package/dist/{postcss.json.js → _virtual/postcss.json.raw.js} +0 -0
  378. /package/dist/{pug-svelte-dotblock.json.js → _virtual/pug-svelte-dotblock.json.raw.js} +0 -0
  379. /package/dist/{pug-svelte-tags.json.js → _virtual/pug-svelte-tags.json.raw.js} +0 -0
  380. /package/dist/{pug-svelte.json.js → _virtual/pug-svelte.json.raw.js} +0 -0
  381. /package/dist/{r-snippets.json.js → _virtual/r-snippets.json.raw.js} +0 -0
  382. /package/dist/{r.json.js → _virtual/r.json.raw.js} +0 -0
  383. /package/dist/{rbuildignore.json.js → _virtual/rbuildignore.json.raw.js} +0 -0
  384. /package/dist/{reason-markdown-codeblock.json.js → _virtual/reason-markdown-codeblock.json.raw.js} +0 -0
  385. /package/dist/{reason.json.js → _virtual/reason.json.raw.js} +0 -0
  386. /package/dist/{rmarkdown.json2.js → _virtual/rmarkdown.json.raw2.js} +0 -0
  387. /package/dist/{rnamespace.json.js → _virtual/rnamespace.json.raw.js} +0 -0
  388. /package/dist/{sdl.json.js → _virtual/sdl.json.raw.js} +0 -0
  389. /package/dist/{semanticdb.json.js → _virtual/semanticdb.json.raw.js} +0 -0
  390. /package/dist/{solidity.json.js → _virtual/solidity.json.raw.js} +0 -0
  391. /package/dist/{solidity.json2.js → _virtual/solidity.json.raw2.js} +0 -0
  392. /package/dist/{svelte.json.js → _virtual/svelte.json.raw.js} +0 -0
  393. /package/dist/{svelte.tmLanguage.json.js → _virtual/svelte.tmLanguage.json.raw.js} +0 -0
  394. /package/dist/{systemverilog.json.js → _virtual/systemverilog.json.raw.js} +0 -0
  395. /package/dist/{systemverilog.tmLanguage.json.js → _virtual/systemverilog.tmLanguage.json.raw.js} +0 -0
  396. /package/dist/{tags.json.js → _virtual/tags.json.raw.js} +0 -0
  397. /package/dist/{tasty.json.js → _virtual/tasty.json.raw.js} +0 -0
  398. /package/dist/{tcl.json.js → _virtual/tcl.json.raw.js} +0 -0
  399. /package/dist/{tcl.json2.js → _virtual/tcl.json.raw2.js} +0 -0
  400. /package/dist/{template.json.js → _virtual/template.json.raw.js} +0 -0
  401. /package/dist/{typescript.json.js → _virtual/typescript.json.raw.js} +0 -0
  402. /package/dist/{vs2019_dark.json.js → _virtual/vs2019_dark.json.raw.js} +0 -0
  403. /package/dist/{vs2019_light.json.js → _virtual/vs2019_light.json.raw.js} +0 -0
@@ -1,4 +1,4 @@
1
- import { c as createBase64WorkerFactory } from './worker.js';
1
+ import { createBase64WorkerFactory } from './_rollup-plugin-web-worker-loader__helper__browser__createBase64WorkerFactory.js';
2
2
 
3
3
  var WorkerFactory = createBase64WorkerFactory('Lyogcm9sbHVwLXBsdWdpbi13ZWItd29ya2VyLWxvYWRlciAqLwohZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7Y29uc3QgZT1uZXcgY2xhc3N7Y29uc3RydWN0b3IoKXt0aGlzLmxpc3RlbmVycz1bXSx0aGlzLnVuZXhwZWN0ZWRFcnJvckhhbmRsZXI9ZnVuY3Rpb24oZSl7c2V0VGltZW91dCgoKCk9PntpZihlLnN0YWNrKXtpZihvLmlzRXJyb3JOb1RlbGVtZXRyeShlKSl0aHJvdyBuZXcgbyhlLm1lc3NhZ2UrIlxuXG4iK2Uuc3RhY2spO3Rocm93IG5ldyBFcnJvcihlLm1lc3NhZ2UrIlxuXG4iK2Uuc3RhY2spfXRocm93IGV9KSwwKX19ZW1pdChlKXt0aGlzLmxpc3RlbmVycy5mb3JFYWNoKCh0PT57dChlKX0pKX1vblVuZXhwZWN0ZWRFcnJvcihlKXt0aGlzLnVuZXhwZWN0ZWRFcnJvckhhbmRsZXIoZSksdGhpcy5lbWl0KGUpfW9uVW5leHBlY3RlZEV4dGVybmFsRXJyb3IoZSl7dGhpcy51bmV4cGVjdGVkRXJyb3JIYW5kbGVyKGUpfX07ZnVuY3Rpb24gdCh0KXsoZnVuY3Rpb24oZSl7aWYoZSBpbnN0YW5jZW9mIGkpcmV0dXJuITA7cmV0dXJuIGUgaW5zdGFuY2VvZiBFcnJvciYmZS5uYW1lPT09ciYmZS5tZXNzYWdlPT09cn0pKHQpfHxlLm9uVW5leHBlY3RlZEVycm9yKHQpfWZ1bmN0aW9uIG4oZSl7aWYoZSBpbnN0YW5jZW9mIEVycm9yKXtjb25zdHtuYW1lOnQsbWVzc2FnZTpufT1lO3JldHVybnskaXNFcnJvcjohMCxuYW1lOnQsbWVzc2FnZTpuLHN0YWNrOmUuc3RhY2t0cmFjZXx8ZS5zdGFjayxub1RlbGVtZXRyeTpvLmlzRXJyb3JOb1RlbGVtZXRyeShlKX19cmV0dXJuIGV9Y29uc3Qgcj0iQ2FuY2VsZWQiO2NsYXNzIGkgZXh0ZW5kcyBFcnJvcntjb25zdHJ1Y3Rvcigpe3N1cGVyKHIpLHRoaXMubmFtZT10aGlzLm1lc3NhZ2V9fWNsYXNzIG8gZXh0ZW5kcyBFcnJvcntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKSx0aGlzLm5hbWU9IkNvZGVFeHBlY3RlZEVycm9yIn1zdGF0aWMgZnJvbUVycm9yKGUpe2lmKGUgaW5zdGFuY2VvZiBvKXJldHVybiBlO2NvbnN0IHQ9bmV3IG87cmV0dXJuIHQubWVzc2FnZT1lLm1lc3NhZ2UsdC5zdGFjaz1lLnN0YWNrLHR9c3RhdGljIGlzRXJyb3JOb1RlbGVtZXRyeShlKXtyZXR1cm4iQ29kZUV4cGVjdGVkRXJyb3IiPT09ZS5uYW1lfX1jbGFzcyBzIGV4dGVuZHMgRXJyb3J7Y29uc3RydWN0b3IoZSl7c3VwZXIoZXx8IkFuIHVuZXhwZWN0ZWQgYnVnIG9jY3VycmVkLiIpLE9iamVjdC5zZXRQcm90b3R5cGVPZih0aGlzLHMucHJvdG90eXBlKX19ZnVuY3Rpb24gYShlKXtjb25zdCB0PXRoaXM7bGV0IG4scj0hMTtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gcnx8KHI9ITAsbj1lLmFwcGx5KHQsYXJndW1lbnRzKSksbn19dmFyIGw7ZnVuY3Rpb24gYyhlKXtpZihsLmlzKGUpKXtjb25zdCB0PVtdO2Zvcihjb25zdCBuIG9mIGUpaWYobil0cnl7bi5kaXNwb3NlKCl9Y2F0Y2goZSl7dC5wdXNoKGUpfWlmKDE9PT10Lmxlbmd0aCl0aHJvdyB0WzBdO2lmKHQubGVuZ3RoPjEpdGhyb3cgbmV3IEFnZ3JlZ2F0ZUVycm9yKHQsIkVuY291bnRlcmVkIGVycm9ycyB3aGlsZSBkaXNwb3Npbmcgb2Ygc3RvcmUiKTtyZXR1cm4gQXJyYXkuaXNBcnJheShlKT9bXTplfWlmKGUpcmV0dXJuIGUuZGlzcG9zZSgpLGV9ZnVuY3Rpb24gaChlKXtyZXR1cm57ZGlzcG9zZTphKCgoKT0+e2UoKX0pKX19IWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoZSl7cmV0dXJuIGUmJiJvYmplY3QiPT10eXBlb2YgZSYmImZ1bmN0aW9uIj09dHlwZW9mIGVbU3ltYm9sLml0ZXJhdG9yXX1lLmlzPXQ7Y29uc3Qgbj1PYmplY3QuZnJlZXplKFtdKTtmdW5jdGlvbipyKGUpe3lpZWxkIGV9ZS5lbXB0eT1mdW5jdGlvbigpe3JldHVybiBufSxlLnNpbmdsZT1yLGUud3JhcD1mdW5jdGlvbihlKXtyZXR1cm4gdChlKT9lOnIoZSl9LGUuZnJvbT1mdW5jdGlvbihlKXtyZXR1cm4gZXx8bn0sZS5pc0VtcHR5PWZ1bmN0aW9uKGUpe3JldHVybiFlfHwhMD09PWVbU3ltYm9sLml0ZXJhdG9yXSgpLm5leHQoKS5kb25lfSxlLmZpcnN0PWZ1bmN0aW9uKGUpe3JldHVybiBlW1N5bWJvbC5pdGVyYXRvcl0oKS5uZXh0KCkudmFsdWV9LGUuc29tZT1mdW5jdGlvbihlLHQpe2Zvcihjb25zdCBuIG9mIGUpaWYodChuKSlyZXR1cm4hMDtyZXR1cm4hMX0sZS5maW5kPWZ1bmN0aW9uKGUsdCl7Zm9yKGNvbnN0IG4gb2YgZSlpZih0KG4pKXJldHVybiBufSxlLmZpbHRlcj1mdW5jdGlvbiooZSx0KXtmb3IoY29uc3QgbiBvZiBlKXQobikmJih5aWVsZCBuKX0sZS5tYXA9ZnVuY3Rpb24qKGUsdCl7bGV0IG49MDtmb3IoY29uc3QgciBvZiBlKXlpZWxkIHQocixuKyspfSxlLmNvbmNhdD1mdW5jdGlvbiooLi4uZSl7Zm9yKGNvbnN0IHQgb2YgZSlmb3IoY29uc3QgZSBvZiB0KXlpZWxkIGV9LGUucmVkdWNlPWZ1bmN0aW9uKGUsdCxuKXtsZXQgcj1uO2Zvcihjb25zdCBuIG9mIGUpcj10KHIsbik7cmV0dXJuIHJ9LGUuc2xpY2U9ZnVuY3Rpb24qKGUsdCxuPWUubGVuZ3RoKXtmb3IodDwwJiYodCs9ZS5sZW5ndGgpLG48MD9uKz1lLmxlbmd0aDpuPmUubGVuZ3RoJiYobj1lLmxlbmd0aCk7dDxuO3QrKyl5aWVsZCBlW3RdfSxlLmNvbnN1bWU9ZnVuY3Rpb24odCxuPU51bWJlci5QT1NJVElWRV9JTkZJTklUWSl7Y29uc3Qgcj1bXTtpZigwPT09bilyZXR1cm5bcix0XTtjb25zdCBpPXRbU3ltYm9sLml0ZXJhdG9yXSgpO2ZvcihsZXQgdD0wO3Q8bjt0Kyspe2NvbnN0IHQ9aS5uZXh0KCk7aWYodC5kb25lKXJldHVybltyLGUuZW1wdHkoKV07ci5wdXNoKHQudmFsdWUpfXJldHVybltyLHtbU3ltYm9sLml0ZXJhdG9yXTooKT0+aX1dfX0obHx8KGw9e30pKTtjbGFzcyBke2NvbnN0cnVjdG9yKCl7dGhpcy5fdG9EaXNwb3NlPW5ldyBTZXQsdGhpcy5faXNEaXNwb3NlZD0hMX1kaXNwb3NlKCl7dGhpcy5faXNEaXNwb3NlZHx8KHRoaXMuX2lzRGlzcG9zZWQ9ITAsdGhpcy5jbGVhcigpKX1nZXQgaXNEaXNwb3NlZCgpe3JldHVybiB0aGlzLl9pc0Rpc3Bvc2VkfWNsZWFyKCl7aWYoMCE9PXRoaXMuX3RvRGlzcG9zZS5zaXplKXRyeXtjKHRoaXMuX3RvRGlzcG9zZSl9ZmluYWxseXt0aGlzLl90b0Rpc3Bvc2UuY2xlYXIoKX19YWRkKGUpe2lmKCFlKXJldHVybiBlO2lmKGU9PT10aGlzKXRocm93IG5ldyBFcnJvcigiQ2Fubm90IHJlZ2lzdGVyIGEgZGlzcG9zYWJsZSBvbiBpdHNlbGYhIik7cmV0dXJuIHRoaXMuX2lzRGlzcG9zZWQ/ZC5ESVNBQkxFX0RJU1BPU0VEX1dBUk5JTkd8fGNvbnNvbGUud2FybihuZXcgRXJyb3IoIlRyeWluZyB0byBhZGQgYSBkaXNwb3NhYmxlIHRvIGEgRGlzcG9zYWJsZVN0b3JlIHRoYXQgaGFzIGFscmVhZHkgYmVlbiBkaXNwb3NlZCBvZi4gVGhlIGFkZGVkIG9iamVjdCB3aWxsIGJlIGxlYWtlZCEiKS5zdGFjayk6dGhpcy5fdG9EaXNwb3NlLmFkZChlKSxlfX1kLkRJU0FCTEVfRElTUE9TRURfV0FSTklORz0hMTtjbGFzcyBwe2NvbnN0cnVjdG9yKCl7dGhpcy5fc3RvcmU9bmV3IGQsdGhpcy5fc3RvcmV9ZGlzcG9zZSgpe3RoaXMuX3N0b3JlLmRpc3Bvc2UoKX1fcmVnaXN0ZXIoZSl7aWYoZT09PXRoaXMpdGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgcmVnaXN0ZXIgYSBkaXNwb3NhYmxlIG9uIGl0c2VsZiEiKTtyZXR1cm4gdGhpcy5fc3RvcmUuYWRkKGUpfX1wLk5vbmU9T2JqZWN0LmZyZWV6ZSh7ZGlzcG9zZSgpe319KTtjbGFzcyB1e2NvbnN0cnVjdG9yKCl7dGhpcy5kaXNwb3NlPSgpPT57fSx0aGlzLnVuc2V0PSgpPT57fSx0aGlzLmlzc2V0PSgpPT4hMX1zZXQoZSl7bGV0IHQ9ZTtyZXR1cm4gdGhpcy51bnNldD0oKT0+dD12b2lkIDAsdGhpcy5pc3NldD0oKT0+dm9pZCAwIT09dCx0aGlzLmRpc3Bvc2U9KCk9Pnt0JiYodCgpLHQ9dm9pZCAwKX0sdGhpc319bGV0IG09Y2xhc3MgZXtjb25zdHJ1Y3Rvcih0KXt0aGlzLmVsZW1lbnQ9dCx0aGlzLm5leHQ9ZS5VbmRlZmluZWQsdGhpcy5wcmV2PWUuVW5kZWZpbmVkfX07bS5VbmRlZmluZWQ9bmV3IG0odm9pZCAwKTtjbGFzcyBme2NvbnN0cnVjdG9yKCl7dGhpcy5fZmlyc3Q9bS5VbmRlZmluZWQsdGhpcy5fbGFzdD1tLlVuZGVmaW5lZCx0aGlzLl9zaXplPTB9Z2V0IHNpemUoKXtyZXR1cm4gdGhpcy5fc2l6ZX1pc0VtcHR5KCl7cmV0dXJuIHRoaXMuX2ZpcnN0PT09bS5VbmRlZmluZWR9Y2xlYXIoKXtsZXQgZT10aGlzLl9maXJzdDtmb3IoO2UhPT1tLlVuZGVmaW5lZDspe2NvbnN0IHQ9ZS5uZXh0O2UucHJldj1tLlVuZGVmaW5lZCxlLm5leHQ9bS5VbmRlZmluZWQsZT10fXRoaXMuX2ZpcnN0PW0uVW5kZWZpbmVkLHRoaXMuX2xhc3Q9bS5VbmRlZmluZWQsdGhpcy5fc2l6ZT0wfXVuc2hpZnQoZSl7cmV0dXJuIHRoaXMuX2luc2VydChlLCExKX1wdXNoKGUpe3JldHVybiB0aGlzLl9pbnNlcnQoZSwhMCl9X2luc2VydChlLHQpe2NvbnN0IG49bmV3IG0oZSk7aWYodGhpcy5fZmlyc3Q9PT1tLlVuZGVmaW5lZCl0aGlzLl9maXJzdD1uLHRoaXMuX2xhc3Q9bjtlbHNlIGlmKHQpe2NvbnN0IGU9dGhpcy5fbGFzdDt0aGlzLl9sYXN0PW4sbi5wcmV2PWUsZS5uZXh0PW59ZWxzZXtjb25zdCBlPXRoaXMuX2ZpcnN0O3RoaXMuX2ZpcnN0PW4sbi5uZXh0PWUsZS5wcmV2PW59dGhpcy5fc2l6ZSs9MTtsZXQgcj0hMTtyZXR1cm4oKT0+e3J8fChyPSEwLHRoaXMuX3JlbW92ZShuKSl9fXNoaWZ0KCl7aWYodGhpcy5fZmlyc3QhPT1tLlVuZGVmaW5lZCl7Y29uc3QgZT10aGlzLl9maXJzdC5lbGVtZW50O3JldHVybiB0aGlzLl9yZW1vdmUodGhpcy5fZmlyc3QpLGV9fXBvcCgpe2lmKHRoaXMuX2xhc3QhPT1tLlVuZGVmaW5lZCl7Y29uc3QgZT10aGlzLl9sYXN0LmVsZW1lbnQ7cmV0dXJuIHRoaXMuX3JlbW92ZSh0aGlzLl9sYXN0KSxlfX1fcmVtb3ZlKGUpe2lmKGUucHJldiE9PW0uVW5kZWZpbmVkJiZlLm5leHQhPT1tLlVuZGVmaW5lZCl7Y29uc3QgdD1lLnByZXY7dC5uZXh0PWUubmV4dCxlLm5leHQucHJldj10fWVsc2UgZS5wcmV2PT09bS5VbmRlZmluZWQmJmUubmV4dD09PW0uVW5kZWZpbmVkPyh0aGlzLl9maXJzdD1tLlVuZGVmaW5lZCx0aGlzLl9sYXN0PW0uVW5kZWZpbmVkKTplLm5leHQ9PT1tLlVuZGVmaW5lZD8odGhpcy5fbGFzdD10aGlzLl9sYXN0LnByZXYsdGhpcy5fbGFzdC5uZXh0PW0uVW5kZWZpbmVkKTplLnByZXY9PT1tLlVuZGVmaW5lZCYmKHRoaXMuX2ZpcnN0PXRoaXMuX2ZpcnN0Lm5leHQsdGhpcy5fZmlyc3QucHJldj1tLlVuZGVmaW5lZCk7dGhpcy5fc2l6ZS09MX0qW1N5bWJvbC5pdGVyYXRvcl0oKXtsZXQgZT10aGlzLl9maXJzdDtmb3IoO2UhPT1tLlVuZGVmaW5lZDspeWllbGQgZS5lbGVtZW50LGU9ZS5uZXh0fX1sZXQgZz0idW5kZWZpbmVkIiE9dHlwZW9mIGRvY3VtZW50JiZkb2N1bWVudC5sb2NhdGlvbiYmZG9jdW1lbnQubG9jYXRpb24uaGFzaC5pbmRleE9mKCJwc2V1ZG89dHJ1ZSIpPj0wO3ZhciBiO2NvbnN0IHY9ImVuIjtsZXQgeSx3LHgsUz0hMSxDPSExLGs9ITEsXz0hMSxFPXYsUj12O2NvbnN0IEY9Im9iamVjdCI9PXR5cGVvZiBzZWxmP3NlbGY6Im9iamVjdCI9PXR5cGVvZiBnbG9iYWw/Z2xvYmFsOnt9O2xldCBOO3ZvaWQgMCE9PUYudnNjb2RlJiZ2b2lkIDAhPT1GLnZzY29kZS5wcm9jZXNzP049Ri52c2NvZGUucHJvY2VzczoidW5kZWZpbmVkIiE9dHlwZW9mIHByb2Nlc3MmJihOPXByb2Nlc3MpO2NvbnN0IEQ9InN0cmluZyI9PXR5cGVvZihudWxsPT09KGI9bnVsbD09Tj92b2lkIDA6Ti52ZXJzaW9ucyl8fHZvaWQgMD09PWI/dm9pZCAwOmIuZWxlY3Ryb24pJiYicmVuZGVyZXIiPT09KG51bGw9PU4/dm9pZCAwOk4udHlwZSk7aWYoIm9iamVjdCIhPXR5cGVvZiBuYXZpZ2F0b3J8fEQpaWYoIm9iamVjdCI9PXR5cGVvZiBOKXtTPSJ3aW4zMiI9PT1OLnBsYXRmb3JtLEM9ImRhcndpbiI9PT1OLnBsYXRmb3JtLGs9ImxpbnV4Ij09PU4ucGxhdGZvcm0sayYmTi5lbnYuU05BUCYmTi5lbnYuU05BUF9SRVZJU0lPTixOLmVudi5DSXx8Ti5lbnYuQlVJTERfQVJUSUZBQ1RTVEFHSU5HRElSRUNUT1JZLHk9dixFPXY7Y29uc3QgZT1OLmVudi5WU0NPREVfTkxTX0NPTkZJRztpZihlKXRyeXtjb25zdCB0PUpTT04ucGFyc2UoZSksbj10LmF2YWlsYWJsZUxhbmd1YWdlc1siKiJdO3k9dC5sb2NhbGUsUj10Lm9zTG9jYWxlLEU9bnx8dix3PXQuX3RyYW5zbGF0aW9uc0NvbmZpZ0ZpbGV9Y2F0Y2goZSl7fX1lbHNlIGNvbnNvbGUuZXJyb3IoIlVuYWJsZSB0byByZXNvbHZlIHBsYXRmb3JtLiIpO2Vsc2UgeD1uYXZpZ2F0b3IudXNlckFnZW50LFM9eC5pbmRleE9mKCJXaW5kb3dzIik+PTAsQz14LmluZGV4T2YoIk1hY2ludG9zaCIpPj0wLCh4LmluZGV4T2YoIk1hY2ludG9zaCIpPj0wfHx4LmluZGV4T2YoImlQYWQiKT49MHx8eC5pbmRleE9mKCJpUGhvbmUiKT49MCkmJm5hdmlnYXRvci5tYXhUb3VjaFBvaW50cyYmbmF2aWdhdG9yLm1heFRvdWNoUG9pbnRzLGs9eC5pbmRleE9mKCJMaW51eCIpPj0wLG51bGw9PXh8fHguaW5kZXhPZigiTW9iaSIpLF89ITAsZnVuY3Rpb24oZSx0LC4uLm4peyFmdW5jdGlvbihlLHQpe2xldCBuO249MD09PXQubGVuZ3RoP2U6ZS5yZXBsYWNlKC9ceyhcZCspXH0vZywoKGUsbik9Pntjb25zdCByPW5bMF0saT10W3JdO2xldCBvPWU7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBpP289aToibnVtYmVyIiE9dHlwZW9mIGkmJiJib29sZWFuIiE9dHlwZW9mIGkmJm51bGwhPWl8fChvPVN0cmluZyhpKSksb30pKSxnJiYobj0i77y7IituLnJlcGxhY2UoL1thb3VlaV0vZywiJCYkJiIpKyLvvL0iKX0odCxuKX0oMCwiXyIpLHk9dixFPXksUj1uYXZpZ2F0b3IubGFuZ3VhZ2U7Y29uc3QgVD1TLEE9QztfJiZGLmltcG9ydFNjcmlwdHM7Y29uc3QgTT14LHo9ImZ1bmN0aW9uIj09dHlwZW9mIEYucG9zdE1lc3NhZ2UmJiFGLmltcG9ydFNjcmlwdHM7KCgpPT57aWYoeil7Y29uc3QgZT1bXTtGLmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCh0PT57aWYodC5kYXRhJiZ0LmRhdGEudnNjb2RlU2NoZWR1bGVBc3luY1dvcmspZm9yKGxldCBuPTAscj1lLmxlbmd0aDtuPHI7bisrKXtjb25zdCByPWVbbl07aWYoci5pZD09PXQuZGF0YS52c2NvZGVTY2hlZHVsZUFzeW5jV29yaylyZXR1cm4gZS5zcGxpY2UobiwxKSx2b2lkIHIuY2FsbGJhY2soKX19KSk7bGV0IHQ9MDtyZXR1cm4gbj0+e2NvbnN0IHI9Kyt0O2UucHVzaCh7aWQ6cixjYWxsYmFjazpufSksRi5wb3N0TWVzc2FnZSh7dnNjb2RlU2NoZWR1bGVBc3luY1dvcms6cn0sIioiKX19fSkoKTtjb25zdCBJPSEhKE0mJk0uaW5kZXhPZigiQ2hyb21lIik+PTApO00mJk0uaW5kZXhPZigiRmlyZWZveCIpLCFJJiZNJiZNLmluZGV4T2YoIlNhZmFyaSIpLE0mJk0uaW5kZXhPZigiRWRnLyIpLE0mJk0uaW5kZXhPZigiQW5kcm9pZCIpO2NvbnN0IFA9Ri5wZXJmb3JtYW5jZSYmImZ1bmN0aW9uIj09dHlwZW9mIEYucGVyZm9ybWFuY2Uubm93O2NsYXNzIEx7c3RhdGljIGNyZWF0ZShlPSEwKXtyZXR1cm4gbmV3IEwoZSl9Y29uc3RydWN0b3IoZSl7dGhpcy5faGlnaFJlc29sdXRpb249UCYmZSx0aGlzLl9zdGFydFRpbWU9dGhpcy5fbm93KCksdGhpcy5fc3RvcFRpbWU9LTF9c3RvcCgpe3RoaXMuX3N0b3BUaW1lPXRoaXMuX25vdygpfWVsYXBzZWQoKXtyZXR1cm4tMSE9PXRoaXMuX3N0b3BUaW1lP3RoaXMuX3N0b3BUaW1lLXRoaXMuX3N0YXJ0VGltZTp0aGlzLl9ub3coKS10aGlzLl9zdGFydFRpbWV9X25vdygpe3JldHVybiB0aGlzLl9oaWdoUmVzb2x1dGlvbj9GLnBlcmZvcm1hbmNlLm5vdygpOkRhdGUubm93KCl9fXZhciBPOyFmdW5jdGlvbihlKXtmdW5jdGlvbiB0KGUpe3JldHVybih0LG49bnVsbCxyKT0+e2xldCBpLG89ITE7cmV0dXJuIGk9ZSgoZT0+e2lmKCFvKXJldHVybiBpP2kuZGlzcG9zZSgpOm89ITAsdC5jYWxsKG4sZSl9KSxudWxsLHIpLG8mJmkuZGlzcG9zZSgpLGl9fWZ1bmN0aW9uIG4oZSx0LG4pe3JldHVybiBzKCgobixyPW51bGwsaSk9PmUoKGU9Pm4uY2FsbChyLHQoZSkpKSxudWxsLGkpKSxuKX1mdW5jdGlvbiByKGUsdCxuKXtyZXR1cm4gcygoKG4scj1udWxsLGkpPT5lKChlPT57dChlKSxuLmNhbGwocixlKX0pLG51bGwsaSkpLG4pfWZ1bmN0aW9uIGkoZSx0LG4pe3JldHVybiBzKCgobixyPW51bGwsaSk9PmUoKGU9PnQoZSkmJm4uY2FsbChyLGUpKSxudWxsLGkpKSxuKX1mdW5jdGlvbiBvKGUsdCxyLGkpe2xldCBvPXI7cmV0dXJuIG4oZSwoZT0+KG89dChvLGUpLG8pKSxpKX1mdW5jdGlvbiBzKGUsdCl7bGV0IG47Y29uc3Qgcj1uZXcgSyh7b25XaWxsQWRkRmlyc3RMaXN0ZW5lcigpe249ZShyLmZpcmUscil9LG9uRGlkUmVtb3ZlTGFzdExpc3RlbmVyKCl7bnVsbD09bnx8bi5kaXNwb3NlKCl9fSk7cmV0dXJuIG51bGw9PXR8fHQuYWRkKHIpLHIuZXZlbnR9ZnVuY3Rpb24gYShlLHQsbj0xMDAscj0hMSxpPSExLG8scyl7bGV0IGEsbCxjLGgsZD0wO2NvbnN0IHA9bmV3IEsoe2xlYWtXYXJuaW5nVGhyZXNob2xkOm8sb25XaWxsQWRkRmlyc3RMaXN0ZW5lcigpe2E9ZSgoZT0+e2QrKyxsPXQobCxlKSxyJiYhYyYmKHAuZmlyZShsKSxsPXZvaWQgMCksaD0oKT0+e2NvbnN0IGU9bDtsPXZvaWQgMCxjPXZvaWQgMCwoIXJ8fGQ+MSkmJnAuZmlyZShlKSxkPTB9LCJudW1iZXIiPT10eXBlb2Ygbj8oY2xlYXJUaW1lb3V0KGMpLGM9c2V0VGltZW91dChoLG4pKTp2b2lkIDA9PT1jJiYoYz0wLHF1ZXVlTWljcm90YXNrKGgpKX0pKX0sb25XaWxsUmVtb3ZlTGlzdGVuZXIoKXtpJiZkPjAmJihudWxsPT1ofHxoKCkpfSxvbkRpZFJlbW92ZUxhc3RMaXN0ZW5lcigpe2g9dm9pZCAwLGEuZGlzcG9zZSgpfX0pO3JldHVybiBudWxsPT1zfHxzLmFkZChwKSxwLmV2ZW50fWZ1bmN0aW9uIGwoZSx0PSgoZSx0KT0+ZT09PXQpLG4pe2xldCByLG89ITA7cmV0dXJuIGkoZSwoZT0+e2NvbnN0IG49b3x8IXQoZSxyKTtyZXR1cm4gbz0hMSxyPWUsbn0pLG4pfWUuTm9uZT0oKT0+cC5Ob25lLGUuZGVmZXI9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gYShlLCgoKT0+e30pLDAsdm9pZCAwLCEwLHZvaWQgMCx0KX0sZS5vbmNlPXQsZS5tYXA9bixlLmZvckVhY2g9cixlLmZpbHRlcj1pLGUuc2lnbmFsPWZ1bmN0aW9uKGUpe3JldHVybiBlfSxlLmFueT1mdW5jdGlvbiguLi5lKXtyZXR1cm4odCxuPW51bGwscik9PmZ1bmN0aW9uKC4uLmUpe3JldHVybiBoKCgoKT0+YyhlKSkpfSguLi5lLm1hcCgoZT0+ZSgoZT0+dC5jYWxsKG4sZSkpLG51bGwscikpKSl9LGUucmVkdWNlPW8sZS5kZWJvdW5jZT1hLGUuYWNjdW11bGF0ZT1mdW5jdGlvbih0LG49MCxyKXtyZXR1cm4gZS5kZWJvdW5jZSh0LCgoZSx0KT0+ZT8oZS5wdXNoKHQpLGUpOlt0XSksbix2b2lkIDAsITAsdm9pZCAwLHIpfSxlLmxhdGNoPWwsZS5zcGxpdD1mdW5jdGlvbih0LG4scil7cmV0dXJuW2UuZmlsdGVyKHQsbixyKSxlLmZpbHRlcih0LChlPT4hbihlKSkscildfSxlLmJ1ZmZlcj1mdW5jdGlvbihlLHQ9ITEsbj1bXSl7bGV0IHI9bi5zbGljZSgpLGk9ZSgoZT0+e3I/ci5wdXNoKGUpOnMuZmlyZShlKX0pKTtjb25zdCBvPSgpPT57bnVsbD09cnx8ci5mb3JFYWNoKChlPT5zLmZpcmUoZSkpKSxyPW51bGx9LHM9bmV3IEsoe29uV2lsbEFkZEZpcnN0TGlzdGVuZXIoKXtpfHwoaT1lKChlPT5zLmZpcmUoZSkpKSl9LG9uRGlkQWRkRmlyc3RMaXN0ZW5lcigpe3ImJih0P3NldFRpbWVvdXQobyk6bygpKX0sb25EaWRSZW1vdmVMYXN0TGlzdGVuZXIoKXtpJiZpLmRpc3Bvc2UoKSxpPW51bGx9fSk7cmV0dXJuIHMuZXZlbnR9O2NsYXNzIHV7Y29uc3RydWN0b3IoZSl7dGhpcy5ldmVudD1lLHRoaXMuZGlzcG9zYWJsZXM9bmV3IGR9bWFwKGUpe3JldHVybiBuZXcgdShuKHRoaXMuZXZlbnQsZSx0aGlzLmRpc3Bvc2FibGVzKSl9Zm9yRWFjaChlKXtyZXR1cm4gbmV3IHUocih0aGlzLmV2ZW50LGUsdGhpcy5kaXNwb3NhYmxlcykpfWZpbHRlcihlKXtyZXR1cm4gbmV3IHUoaSh0aGlzLmV2ZW50LGUsdGhpcy5kaXNwb3NhYmxlcykpfXJlZHVjZShlLHQpe3JldHVybiBuZXcgdShvKHRoaXMuZXZlbnQsZSx0LHRoaXMuZGlzcG9zYWJsZXMpKX1sYXRjaCgpe3JldHVybiBuZXcgdShsKHRoaXMuZXZlbnQsdm9pZCAwLHRoaXMuZGlzcG9zYWJsZXMpKX1kZWJvdW5jZShlLHQ9MTAwLG49ITEscj0hMSxpKXtyZXR1cm4gbmV3IHUoYSh0aGlzLmV2ZW50LGUsdCxuLHIsaSx0aGlzLmRpc3Bvc2FibGVzKSl9b24oZSx0LG4pe3JldHVybiB0aGlzLmV2ZW50KGUsdCxuKX1vbmNlKGUsbixyKXtyZXR1cm4gdCh0aGlzLmV2ZW50KShlLG4scil9ZGlzcG9zZSgpe3RoaXMuZGlzcG9zYWJsZXMuZGlzcG9zZSgpfX1lLmNoYWluPWZ1bmN0aW9uKGUpe3JldHVybiBuZXcgdShlKX0sZS5mcm9tTm9kZUV2ZW50RW1pdHRlcj1mdW5jdGlvbihlLHQsbj0oZT0+ZSkpe2NvbnN0IHI9KC4uLmUpPT5pLmZpcmUobiguLi5lKSksaT1uZXcgSyh7b25XaWxsQWRkRmlyc3RMaXN0ZW5lcjooKT0+ZS5vbih0LHIpLG9uRGlkUmVtb3ZlTGFzdExpc3RlbmVyOigpPT5lLnJlbW92ZUxpc3RlbmVyKHQscil9KTtyZXR1cm4gaS5ldmVudH0sZS5mcm9tRE9NRXZlbnRFbWl0dGVyPWZ1bmN0aW9uKGUsdCxuPShlPT5lKSl7Y29uc3Qgcj0oLi4uZSk9PmkuZmlyZShuKC4uLmUpKSxpPW5ldyBLKHtvbldpbGxBZGRGaXJzdExpc3RlbmVyOigpPT5lLmFkZEV2ZW50TGlzdGVuZXIodCxyKSxvbkRpZFJlbW92ZUxhc3RMaXN0ZW5lcjooKT0+ZS5yZW1vdmVFdmVudExpc3RlbmVyKHQscil9KTtyZXR1cm4gaS5ldmVudH0sZS50b1Byb21pc2U9ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBQcm9taXNlKChuPT50KGUpKG4pKSl9LGUucnVuQW5kU3Vic2NyaWJlPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQodm9pZCAwKSxlKChlPT50KGUpKSl9LGUucnVuQW5kU3Vic2NyaWJlV2l0aFN0b3JlPWZ1bmN0aW9uKGUsdCl7bGV0IG49bnVsbDtmdW5jdGlvbiByKGUpe251bGw9PW58fG4uZGlzcG9zZSgpLG49bmV3IGQsdChlLG4pfXIodm9pZCAwKTtjb25zdCBpPWUoKGU9PnIoZSkpKTtyZXR1cm4gaCgoKCk9PntpLmRpc3Bvc2UoKSxudWxsPT1ufHxuLmRpc3Bvc2UoKX0pKX07Y2xhc3MgbXtjb25zdHJ1Y3RvcihlLHQpe3RoaXMuX29ic2VydmFibGU9ZSx0aGlzLl9jb3VudGVyPTAsdGhpcy5faGFzQ2hhbmdlZD0hMTtjb25zdCBuPXtvbldpbGxBZGRGaXJzdExpc3RlbmVyOigpPT57ZS5hZGRPYnNlcnZlcih0aGlzKX0sb25EaWRSZW1vdmVMYXN0TGlzdGVuZXI6KCk9PntlLnJlbW92ZU9ic2VydmVyKHRoaXMpfX07dGhpcy5lbWl0dGVyPW5ldyBLKG4pLHQmJnQuYWRkKHRoaXMuZW1pdHRlcil9YmVnaW5VcGRhdGUoZSl7dGhpcy5fY291bnRlcisrfWhhbmRsZVBvc3NpYmxlQ2hhbmdlKGUpe31oYW5kbGVDaGFuZ2UoZSx0KXt0aGlzLl9oYXNDaGFuZ2VkPSEwfWVuZFVwZGF0ZShlKXt0aGlzLl9jb3VudGVyLS0sMD09PXRoaXMuX2NvdW50ZXImJih0aGlzLl9vYnNlcnZhYmxlLnJlcG9ydENoYW5nZXMoKSx0aGlzLl9oYXNDaGFuZ2VkJiYodGhpcy5faGFzQ2hhbmdlZD0hMSx0aGlzLmVtaXR0ZXIuZmlyZSh0aGlzLl9vYnNlcnZhYmxlLmdldCgpKSkpfX1lLmZyb21PYnNlcnZhYmxlPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIG5ldyBtKGUsdCkuZW1pdHRlci5ldmVudH0sZS5mcm9tT2JzZXJ2YWJsZUxpZ2h0PWZ1bmN0aW9uKGUpe3JldHVybiB0PT57bGV0IG49MCxyPSExO2NvbnN0IGk9e2JlZ2luVXBkYXRlKCl7bisrfSxlbmRVcGRhdGUoKXtuLS0sMD09PW4mJihlLnJlcG9ydENoYW5nZXMoKSxyJiYocj0hMSx0KCkpKX0saGFuZGxlUG9zc2libGVDaGFuZ2UoKXt9LGhhbmRsZUNoYW5nZSgpe3I9ITB9fTtyZXR1cm4gZS5hZGRPYnNlcnZlcihpKSx7ZGlzcG9zZSgpe2UucmVtb3ZlT2JzZXJ2ZXIoaSl9fX19fShPfHwoTz17fSkpO2NsYXNzIFd7Y29uc3RydWN0b3IoZSl7dGhpcy5saXN0ZW5lckNvdW50PTAsdGhpcy5pbnZvY2F0aW9uQ291bnQ9MCx0aGlzLmVsYXBzZWRPdmVyYWxsPTAsdGhpcy5kdXJhdGlvbnM9W10sdGhpcy5uYW1lPWAke2V9XyR7Vy5faWRQb29sKyt9YCxXLmFsbC5hZGQodGhpcyl9c3RhcnQoZSl7dGhpcy5fc3RvcFdhdGNoPW5ldyBMKCEwKSx0aGlzLmxpc3RlbmVyQ291bnQ9ZX1zdG9wKCl7aWYodGhpcy5fc3RvcFdhdGNoKXtjb25zdCBlPXRoaXMuX3N0b3BXYXRjaC5lbGFwc2VkKCk7dGhpcy5kdXJhdGlvbnMucHVzaChlKSx0aGlzLmVsYXBzZWRPdmVyYWxsKz1lLHRoaXMuaW52b2NhdGlvbkNvdW50Kz0xLHRoaXMuX3N0b3BXYXRjaD12b2lkIDB9fX1XLmFsbD1uZXcgU2V0LFcuX2lkUG9vbD0wO2NsYXNzIFZ7Y29uc3RydWN0b3IoZSx0PU1hdGgucmFuZG9tKCkudG9TdHJpbmcoMTgpLnNsaWNlKDIsNSkpe3RoaXMudGhyZXNob2xkPWUsdGhpcy5uYW1lPXQsdGhpcy5fd2FybkNvdW50ZG93bj0wfWRpc3Bvc2UoKXt2YXIgZTtudWxsPT09KGU9dGhpcy5fc3RhY2tzKXx8dm9pZCAwPT09ZXx8ZS5jbGVhcigpfWNoZWNrKGUsdCl7Y29uc3Qgbj10aGlzLnRocmVzaG9sZDtpZihuPD0wfHx0PG4pcmV0dXJuO3RoaXMuX3N0YWNrc3x8KHRoaXMuX3N0YWNrcz1uZXcgTWFwKTtjb25zdCByPXRoaXMuX3N0YWNrcy5nZXQoZS52YWx1ZSl8fDA7aWYodGhpcy5fc3RhY2tzLnNldChlLnZhbHVlLHIrMSksdGhpcy5fd2FybkNvdW50ZG93bi09MSx0aGlzLl93YXJuQ291bnRkb3duPD0wKXtsZXQgZTt0aGlzLl93YXJuQ291bnRkb3duPS41Km47bGV0IHI9MDtmb3IoY29uc3RbdCxuXW9mIHRoaXMuX3N0YWNrcykoIWV8fHI8bikmJihlPXQscj1uKTtjb25zb2xlLndhcm4oYFske3RoaXMubmFtZX1dIHBvdGVudGlhbCBsaXN0ZW5lciBMRUFLIGRldGVjdGVkLCBoYXZpbmcgJHt0fSBsaXN0ZW5lcnMgYWxyZWFkeS4gTU9TVCBmcmVxdWVudCBsaXN0ZW5lciAoJHtyfSk6YCksY29uc29sZS53YXJuKGUpfXJldHVybigpPT57Y29uc3QgdD10aGlzLl9zdGFja3MuZ2V0KGUudmFsdWUpfHwwO3RoaXMuX3N0YWNrcy5zZXQoZS52YWx1ZSx0LTEpfX19Y2xhc3MgVXtzdGF0aWMgY3JlYXRlKCl7dmFyIGU7cmV0dXJuIG5ldyBVKG51bGwhPT0oZT0obmV3IEVycm9yKS5zdGFjaykmJnZvaWQgMCE9PWU/ZToiIil9Y29uc3RydWN0b3IoZSl7dGhpcy52YWx1ZT1lfXByaW50KCl7Y29uc29sZS53YXJuKHRoaXMudmFsdWUuc3BsaXQoIlxuIikuc2xpY2UoMikuam9pbigiXG4iKSl9fWNsYXNzIEJ7Y29uc3RydWN0b3IoZSx0LG4pe3RoaXMuY2FsbGJhY2s9ZSx0aGlzLmNhbGxiYWNrVGhpcz10LHRoaXMuc3RhY2s9bix0aGlzLnN1YnNjcmlwdGlvbj1uZXcgdX1pbnZva2UoZSl7dGhpcy5jYWxsYmFjay5jYWxsKHRoaXMuY2FsbGJhY2tUaGlzLGUpfX1jbGFzcyBLe2NvbnN0cnVjdG9yKGUpe3ZhciB0LG4scixpLG87dGhpcy5fZGlzcG9zZWQ9ITEsdGhpcy5fb3B0aW9ucz1lLHRoaXMuX2xlYWthZ2VNb249KG51bGw9PT0odD10aGlzLl9vcHRpb25zKXx8dm9pZCAwPT09dD92b2lkIDA6dC5sZWFrV2FybmluZ1RocmVzaG9sZCk/bmV3IFYobnVsbCE9PShyPW51bGw9PT0obj10aGlzLl9vcHRpb25zKXx8dm9pZCAwPT09bj92b2lkIDA6bi5sZWFrV2FybmluZ1RocmVzaG9sZCkmJnZvaWQgMCE9PXI/cjotMSk6dm9pZCAwLHRoaXMuX3BlcmZNb249KG51bGw9PT0oaT10aGlzLl9vcHRpb25zKXx8dm9pZCAwPT09aT92b2lkIDA6aS5fcHJvZk5hbWUpP25ldyBXKHRoaXMuX29wdGlvbnMuX3Byb2ZOYW1lKTp2b2lkIDAsdGhpcy5fZGVsaXZlcnlRdWV1ZT1udWxsPT09KG89dGhpcy5fb3B0aW9ucyl8fHZvaWQgMD09PW8/dm9pZCAwOm8uZGVsaXZlcnlRdWV1ZX1kaXNwb3NlKCl7dmFyIGUsdCxuLHI7dGhpcy5fZGlzcG9zZWR8fCh0aGlzLl9kaXNwb3NlZD0hMCx0aGlzLl9saXN0ZW5lcnMmJnRoaXMuX2xpc3RlbmVycy5jbGVhcigpLG51bGw9PT0oZT10aGlzLl9kZWxpdmVyeVF1ZXVlKXx8dm9pZCAwPT09ZXx8ZS5jbGVhcih0aGlzKSxudWxsPT09KG49bnVsbD09PSh0PXRoaXMuX29wdGlvbnMpfHx2b2lkIDA9PT10P3ZvaWQgMDp0Lm9uRGlkUmVtb3ZlTGFzdExpc3RlbmVyKXx8dm9pZCAwPT09bnx8bi5jYWxsKHQpLG51bGw9PT0ocj10aGlzLl9sZWFrYWdlTW9uKXx8dm9pZCAwPT09cnx8ci5kaXNwb3NlKCkpfWdldCBldmVudCgpe3JldHVybiB0aGlzLl9ldmVudHx8KHRoaXMuX2V2ZW50PShlLHQsbik9Pnt2YXIgcixpLG87aWYodGhpcy5fbGlzdGVuZXJzfHwodGhpcy5fbGlzdGVuZXJzPW5ldyBmKSx0aGlzLl9sZWFrYWdlTW9uJiZ0aGlzLl9saXN0ZW5lcnMuc2l6ZT4zKnRoaXMuX2xlYWthZ2VNb24udGhyZXNob2xkKXJldHVybiBjb25zb2xlLndhcm4oYFske3RoaXMuX2xlYWthZ2VNb24ubmFtZX1dIFJFRlVTRVMgdG8gYWNjZXB0IG5ldyBsaXN0ZW5lcnMgYmVjYXVzZSBpdCBleGNlZWRlZCBpdHMgdGhyZXNob2xkIGJ5IGZhcmApLHAuTm9uZTtjb25zdCBzPXRoaXMuX2xpc3RlbmVycy5pc0VtcHR5KCk7bGV0IGEsbDtzJiYobnVsbD09PShyPXRoaXMuX29wdGlvbnMpfHx2b2lkIDA9PT1yP3ZvaWQgMDpyLm9uV2lsbEFkZEZpcnN0TGlzdGVuZXIpJiZ0aGlzLl9vcHRpb25zLm9uV2lsbEFkZEZpcnN0TGlzdGVuZXIodGhpcyksdGhpcy5fbGVha2FnZU1vbiYmdGhpcy5fbGlzdGVuZXJzLnNpemU+PU1hdGguY2VpbCguMip0aGlzLl9sZWFrYWdlTW9uLnRocmVzaG9sZCkmJihsPVUuY3JlYXRlKCksYT10aGlzLl9sZWFrYWdlTW9uLmNoZWNrKGwsdGhpcy5fbGlzdGVuZXJzLnNpemUrMSkpO2NvbnN0IGM9bmV3IEIoZSx0LGwpLGg9dGhpcy5fbGlzdGVuZXJzLnB1c2goYyk7cyYmKG51bGw9PT0oaT10aGlzLl9vcHRpb25zKXx8dm9pZCAwPT09aT92b2lkIDA6aS5vbkRpZEFkZEZpcnN0TGlzdGVuZXIpJiZ0aGlzLl9vcHRpb25zLm9uRGlkQWRkRmlyc3RMaXN0ZW5lcih0aGlzKSwobnVsbD09PShvPXRoaXMuX29wdGlvbnMpfHx2b2lkIDA9PT1vP3ZvaWQgMDpvLm9uRGlkQWRkTGlzdGVuZXIpJiZ0aGlzLl9vcHRpb25zLm9uRGlkQWRkTGlzdGVuZXIodGhpcyxlLHQpO2NvbnN0IHU9Yy5zdWJzY3JpcHRpb24uc2V0KCgoKT0+e3ZhciBlLHQ7aWYobnVsbD09YXx8YSgpLCF0aGlzLl9kaXNwb3NlZCYmKG51bGw9PT0odD1udWxsPT09KGU9dGhpcy5fb3B0aW9ucyl8fHZvaWQgMD09PWU/dm9pZCAwOmUub25XaWxsUmVtb3ZlTGlzdGVuZXIpfHx2b2lkIDA9PT10fHx0LmNhbGwoZSx0aGlzKSxoKCksdGhpcy5fb3B0aW9ucyYmdGhpcy5fb3B0aW9ucy5vbkRpZFJlbW92ZUxhc3RMaXN0ZW5lcikpe3RoaXMuX2xpc3RlbmVycyYmIXRoaXMuX2xpc3RlbmVycy5pc0VtcHR5KCl8fHRoaXMuX29wdGlvbnMub25EaWRSZW1vdmVMYXN0TGlzdGVuZXIodGhpcyl9fSkpO3JldHVybiBuIGluc3RhbmNlb2YgZD9uLmFkZCh1KTpBcnJheS5pc0FycmF5KG4pJiZuLnB1c2godSksdX0pLHRoaXMuX2V2ZW50fWZpcmUoZSl7dmFyIHQsbixyO2lmKHRoaXMuX2xpc3RlbmVycyl7dGhpcy5fZGVsaXZlcnlRdWV1ZXx8KHRoaXMuX2RlbGl2ZXJ5UXVldWU9bmV3IHEobnVsbD09PSh0PXRoaXMuX29wdGlvbnMpfHx2b2lkIDA9PT10P3ZvaWQgMDp0Lm9uTGlzdGVuZXJFcnJvcikpO2Zvcihjb25zdCB0IG9mIHRoaXMuX2xpc3RlbmVycyl0aGlzLl9kZWxpdmVyeVF1ZXVlLnB1c2godGhpcyx0LGUpO251bGw9PT0obj10aGlzLl9wZXJmTW9uKXx8dm9pZCAwPT09bnx8bi5zdGFydCh0aGlzLl9kZWxpdmVyeVF1ZXVlLnNpemUpLHRoaXMuX2RlbGl2ZXJ5UXVldWUuZGVsaXZlcigpLG51bGw9PT0ocj10aGlzLl9wZXJmTW9uKXx8dm9pZCAwPT09cnx8ci5zdG9wKCl9fWhhc0xpc3RlbmVycygpe3JldHVybiEhdGhpcy5fbGlzdGVuZXJzJiYhdGhpcy5fbGlzdGVuZXJzLmlzRW1wdHkoKX19Y2xhc3Mgantjb25zdHJ1Y3RvcihlPXQpe3RoaXMuX29uTGlzdGVuZXJFcnJvcj1lLHRoaXMuX3F1ZXVlPW5ldyBmfWdldCBzaXplKCl7cmV0dXJuIHRoaXMuX3F1ZXVlLnNpemV9cHVzaChlLHQsbil7dGhpcy5fcXVldWUucHVzaChuZXcgJChlLHQsbikpfWNsZWFyKGUpe2NvbnN0IHQ9bmV3IGY7Zm9yKGNvbnN0IG4gb2YgdGhpcy5fcXVldWUpbi5lbWl0dGVyIT09ZSYmdC5wdXNoKG4pO3RoaXMuX3F1ZXVlPXR9ZGVsaXZlcigpe2Zvcig7dGhpcy5fcXVldWUuc2l6ZT4wOyl7Y29uc3QgZT10aGlzLl9xdWV1ZS5zaGlmdCgpO3RyeXtlLmxpc3RlbmVyLmludm9rZShlLmV2ZW50KX1jYXRjaChlKXt0aGlzLl9vbkxpc3RlbmVyRXJyb3IoZSl9fX19Y2xhc3MgcSBleHRlbmRzIGp7Y2xlYXIoZSl7dGhpcy5fcXVldWUuY2xlYXIoKX19Y2xhc3MgJHtjb25zdHJ1Y3RvcihlLHQsbil7dGhpcy5lbWl0dGVyPWUsdGhpcy5saXN0ZW5lcj10LHRoaXMuZXZlbnQ9bn19ZnVuY3Rpb24gSChlKXtjb25zdCB0PVtdO2Zvcihjb25zdCBuIG9mIGZ1bmN0aW9uKGUpe2xldCB0PVtdLG49T2JqZWN0LmdldFByb3RvdHlwZU9mKGUpO2Zvcig7T2JqZWN0LnByb3RvdHlwZSE9PW47KXQ9dC5jb25jYXQoT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMobikpLG49T2JqZWN0LmdldFByb3RvdHlwZU9mKG4pO3JldHVybiB0fShlKSkiZnVuY3Rpb24iPT10eXBlb2YgZVtuXSYmdC5wdXNoKG4pO3JldHVybiB0fWNsYXNzIEd7Y29uc3RydWN0b3IoZSl7dGhpcy5leGVjdXRvcj1lLHRoaXMuX2RpZFJ1bj0hMX1nZXQgdmFsdWUoKXtpZighdGhpcy5fZGlkUnVuKXRyeXt0aGlzLl92YWx1ZT10aGlzLmV4ZWN1dG9yKCl9Y2F0Y2goZSl7dGhpcy5fZXJyb3I9ZX1maW5hbGx5e3RoaXMuX2RpZFJ1bj0hMH1pZih0aGlzLl9lcnJvcil0aHJvdyB0aGlzLl9lcnJvcjtyZXR1cm4gdGhpcy5fdmFsdWV9Z2V0IHJhd1ZhbHVlKCl7cmV0dXJuIHRoaXMuX3ZhbHVlfX12YXIgSjtmdW5jdGlvbiBYKGUpe3JldHVybiBlPj02NSYmZTw9OTB9ZnVuY3Rpb24gWShlKXtyZXR1cm4gNTUyOTY8PWUmJmU8PTU2MzE5fWZ1bmN0aW9uIFooZSx0LG4pe2NvbnN0IHI9ZS5jaGFyQ29kZUF0KG4pO2lmKFkocikmJm4rMTx0KXtjb25zdCB0PWUuY2hhckNvZGVBdChuKzEpO2lmKGZ1bmN0aW9uKGUpe3JldHVybiA1NjMyMDw9ZSYmZTw9NTczNDN9KHQpKXJldHVybiB0LTU2MzIwKyhyLTU1Mjk2PDwxMCkrNjU1MzZ9cmV0dXJuIHJ9Y29uc3QgUT0vXltcdFxuXHJceDIwLVx4N0VdKiQvO2NsYXNzIGVle3N0YXRpYyBnZXRJbnN0YW5jZShlKXtyZXR1cm4gZWUuY2FjaGUuZ2V0KEFycmF5LmZyb20oZSkpfXN0YXRpYyBnZXRMb2NhbGVzKCl7cmV0dXJuIGVlLl9sb2NhbGVzLnZhbHVlfWNvbnN0cnVjdG9yKGUpe3RoaXMuY29uZnVzYWJsZURpY3Rpb25hcnk9ZX1pc0FtYmlndW91cyhlKXtyZXR1cm4gdGhpcy5jb25mdXNhYmxlRGljdGlvbmFyeS5oYXMoZSl9Z2V0UHJpbWFyeUNvbmZ1c2FibGUoZSl7cmV0dXJuIHRoaXMuY29uZnVzYWJsZURpY3Rpb25hcnkuZ2V0KGUpfWdldENvbmZ1c2FibGVDb2RlUG9pbnRzKCl7cmV0dXJuIG5ldyBTZXQodGhpcy5jb25mdXNhYmxlRGljdGlvbmFyeS5rZXlzKCkpfX1KPWVlLGVlLmFtYmlndW91c0NoYXJhY3RlckRhdGE9bmV3IEcoKCgpPT5KU09OLnBhcnNlKCd7Il9jb21tb24iOls4MjMyLDMyLDgyMzMsMzIsNTc2MCwzMiw4MTkyLDMyLDgxOTMsMzIsODE5NCwzMiw4MTk1LDMyLDgxOTYsMzIsODE5NywzMiw4MTk4LDMyLDgyMDAsMzIsODIwMSwzMiw4MjAyLDMyLDgyODcsMzIsODE5OSwzMiw4MjM5LDMyLDIwNDIsOTUsNjUxMDEsOTUsNjUxMDIsOTUsNjUxMDMsOTUsODIwOCw0NSw4MjA5LDQ1LDgyMTAsNDUsNjUxMTIsNDUsMTc0OCw0NSw4MjU5LDQ1LDcyNyw0NSw4NzIyLDQ1LDEwMTM0LDQ1LDExNDUwLDQ1LDE1NDksNDQsMTY0Myw0NCw4MjE4LDQ0LDE4NCw0NCw0MjIzMyw0NCw4OTQsNTksMjMwNyw1OCwyNjkxLDU4LDE0MTcsNTgsMTc5NSw1OCwxNzk2LDU4LDU4NjgsNTgsNjUwNzIsNTgsNjE0Nyw1OCw2MTUzLDU4LDgyODIsNTgsMTQ3NSw1OCw3NjAsNTgsNDI4ODksNTgsODc1OCw1OCw3MjAsNTgsNDIyMzcsNTgsNDUxLDMzLDExNjAxLDMzLDY2MCw2Myw1NzcsNjMsMjQyOSw2Myw1MDM4LDYzLDQyNzMxLDYzLDExOTE0OSw0Niw4MjI4LDQ2LDE3OTMsNDYsMTc5NCw0Niw0MjUxMCw0Niw2ODE3Niw0NiwxNjMyLDQ2LDE3NzYsNDYsNDIyMzIsNDYsMTM3Myw5Niw2NTI4Nyw5Niw4MjE5LDk2LDgyNDIsOTYsMTM3MCw5NiwxNTIzLDk2LDgxNzUsOTYsNjUzNDQsOTYsOTAwLDk2LDgxODksOTYsODEyNSw5Niw4MTI3LDk2LDgxOTAsOTYsNjk3LDk2LDg4NCw5Niw3MTIsOTYsNzE0LDk2LDcxNSw5Niw3NTYsOTYsNjk5LDk2LDcwMSw5Niw3MDAsOTYsNzAyLDk2LDQyODkyLDk2LDE0OTcsOTYsMjAzNiw5NiwyMDM3LDk2LDUxOTQsOTYsNTgzNiw5Niw5NDAzMyw5Niw5NDAzNCw5Niw2NTMzOSw5MSwxMDA4OCw0MCwxMDA5OCw0MCwxMjMwOCw0MCw2NDgzMCw0MCw2NTM0MSw5MywxMDA4OSw0MSwxMDA5OSw0MSwxMjMwOSw0MSw2NDgzMSw0MSwxMDEwMCwxMjMsMTE5MDYwLDEyMywxMDEwMSwxMjUsNjUzNDIsOTQsODI3MCw0MiwxNjQ1LDQyLDg3MjcsNDIsNjYzMzUsNDIsNTk0MSw0Nyw4MjU3LDQ3LDg3MjUsNDcsODI2MCw0Nyw5NTg1LDQ3LDEwMTg3LDQ3LDEwNzQ0LDQ3LDExOTM1NCw0NywxMjc1NSw0NywxMjMzOSw0NywxMTQ2Miw0NywyMDAzMSw0NywxMjAzNSw0Nyw2NTM0MCw5Miw2NTEyOCw5Miw4NzI2LDkyLDEwMTg5LDkyLDEwNzQxLDkyLDEwNzQ1LDkyLDExOTMxMSw5MiwxMTkzNTUsOTIsMTI3NTYsOTIsMjAwMjIsOTIsMTIwMzQsOTIsNDI4NzIsMzgsNzA4LDk0LDcxMCw5NCw1ODY5LDQzLDEwMTMzLDQzLDY2MjAzLDQzLDgyNDksNjAsMTAwOTQsNjAsNzA2LDYwLDExOTM1MCw2MCw1MTc2LDYwLDU4MTAsNjAsNTEyMCw2MSwxMTg0MCw2MSwxMjQ0OCw2MSw0MjIzOSw2MSw4MjUwLDYyLDEwMDk1LDYyLDcwNyw2MiwxMTkzNTEsNjIsNTE3MSw2Miw5NDAxNSw2Miw4Mjc1LDEyNiw3MzIsMTI2LDgxMjgsMTI2LDg3NjQsMTI2LDY1MzcyLDEyNCw2NTI5Myw0NSwxMjA3ODQsNTAsMTIwNzk0LDUwLDEyMDgwNCw1MCwxMjA4MTQsNTAsMTIwODI0LDUwLDEzMDAzNCw1MCw0Mjg0Miw1MCw0MjMsNTAsMTAwMCw1MCw0MjU2NCw1MCw1MzExLDUwLDQyNzM1LDUwLDExOTMwMiw1MSwxMjA3ODUsNTEsMTIwNzk1LDUxLDEyMDgwNSw1MSwxMjA4MTUsNTEsMTIwODI1LDUxLDEzMDAzNSw1MSw0MjkyMyw1MSw1NDAsNTEsNDM5LDUxLDQyODU4LDUxLDExNDY4LDUxLDEyNDgsNTEsOTQwMTEsNTEsNzE4ODIsNTEsMTIwNzg2LDUyLDEyMDc5Niw1MiwxMjA4MDYsNTIsMTIwODE2LDUyLDEyMDgyNiw1MiwxMzAwMzYsNTIsNTA3MCw1Miw3MTg1NSw1MiwxMjA3ODcsNTMsMTIwNzk3LDUzLDEyMDgwNyw1MywxMjA4MTcsNTMsMTIwODI3LDUzLDEzMDAzNyw1Myw0NDQsNTMsNzE4NjcsNTMsMTIwNzg4LDU0LDEyMDc5OCw1NCwxMjA4MDgsNTQsMTIwODE4LDU0LDEyMDgyOCw1NCwxMzAwMzgsNTQsMTE0NzQsNTQsNTEwMiw1NCw3MTg5Myw1NCwxMTkzMTQsNTUsMTIwNzg5LDU1LDEyMDc5OSw1NSwxMjA4MDksNTUsMTIwODE5LDU1LDEyMDgyOSw1NSwxMzAwMzksNTUsNjY3NzAsNTUsNzE4NzgsNTUsMjgxOSw1NiwyNTM4LDU2LDI2NjYsNTYsMTI1MTMxLDU2LDEyMDc5MCw1NiwxMjA4MDAsNTYsMTIwODEwLDU2LDEyMDgyMCw1NiwxMjA4MzAsNTYsMTMwMDQwLDU2LDU0Nyw1Niw1NDYsNTYsNjYzMzAsNTYsMjY2Myw1NywyOTIwLDU3LDI1NDEsNTcsMzQzNyw1NywxMjA3OTEsNTcsMTIwODAxLDU3LDEyMDgxMSw1NywxMjA4MjEsNTcsMTIwODMxLDU3LDEzMDA0MSw1Nyw0Mjg2Miw1NywxMTQ2Niw1Nyw3MTg4NCw1Nyw3MTg1Miw1Nyw3MTg5NCw1Nyw5MDgyLDk3LDY1MzQ1LDk3LDExOTgzNCw5NywxMTk4ODYsOTcsMTE5OTM4LDk3LDExOTk5MCw5NywxMjAwNDIsOTcsMTIwMDk0LDk3LDEyMDE0Niw5NywxMjAxOTgsOTcsMTIwMjUwLDk3LDEyMDMwMiw5NywxMjAzNTQsOTcsMTIwNDA2LDk3LDEyMDQ1OCw5Nyw1OTMsOTcsOTQ1LDk3LDEyMDUxNCw5NywxMjA1NzIsOTcsMTIwNjMwLDk3LDEyMDY4OCw5NywxMjA3NDYsOTcsNjUzMTMsNjUsMTE5ODA4LDY1LDExOTg2MCw2NSwxMTk5MTIsNjUsMTE5OTY0LDY1LDEyMDAxNiw2NSwxMjAwNjgsNjUsMTIwMTIwLDY1LDEyMDE3Miw2NSwxMjAyMjQsNjUsMTIwMjc2LDY1LDEyMDMyOCw2NSwxMjAzODAsNjUsMTIwNDMyLDY1LDkxMyw2NSwxMjA0ODgsNjUsMTIwNTQ2LDY1LDEyMDYwNCw2NSwxMjA2NjIsNjUsMTIwNzIwLDY1LDUwMzQsNjUsNTU3Myw2NSw0MjIyMiw2NSw5NDAxNiw2NSw2NjIwOCw2NSwxMTk4MzUsOTgsMTE5ODg3LDk4LDExOTkzOSw5OCwxMTk5OTEsOTgsMTIwMDQzLDk4LDEyMDA5NSw5OCwxMjAxNDcsOTgsMTIwMTk5LDk4LDEyMDI1MSw5OCwxMjAzMDMsOTgsMTIwMzU1LDk4LDEyMDQwNyw5OCwxMjA0NTksOTgsMzg4LDk4LDUwNzEsOTgsNTIzNCw5OCw1NTUxLDk4LDY1MzE0LDY2LDg0OTIsNjYsMTE5ODA5LDY2LDExOTg2MSw2NiwxMTk5MTMsNjYsMTIwMDE3LDY2LDEyMDA2OSw2NiwxMjAxMjEsNjYsMTIwMTczLDY2LDEyMDIyNSw2NiwxMjAyNzcsNjYsMTIwMzI5LDY2LDEyMDM4MSw2NiwxMjA0MzMsNjYsNDI5MzIsNjYsOTE0LDY2LDEyMDQ4OSw2NiwxMjA1NDcsNjYsMTIwNjA1LDY2LDEyMDY2Myw2NiwxMjA3MjEsNjYsNTEwOCw2Niw1NjIzLDY2LDQyMTkyLDY2LDY2MTc4LDY2LDY2MjA5LDY2LDY2MzA1LDY2LDY1MzQ3LDk5LDg1NzMsOTksMTE5ODM2LDk5LDExOTg4OCw5OSwxMTk5NDAsOTksMTE5OTkyLDk5LDEyMDA0NCw5OSwxMjAwOTYsOTksMTIwMTQ4LDk5LDEyMDIwMCw5OSwxMjAyNTIsOTksMTIwMzA0LDk5LDEyMDM1Niw5OSwxMjA0MDgsOTksMTIwNDYwLDk5LDc0MjgsOTksMTAxMCw5OSwxMTQyOSw5OSw0Mzk1MSw5OSw2NjYyMSw5OSwxMjg4NDQsNjcsNzE5MjIsNjcsNzE5MTMsNjcsNjUzMTUsNjcsODU1Nyw2Nyw4NDUwLDY3LDg0OTMsNjcsMTE5ODEwLDY3LDExOTg2Miw2NywxMTk5MTQsNjcsMTE5OTY2LDY3LDEyMDAxOCw2NywxMjAxNzQsNjcsMTIwMjI2LDY3LDEyMDI3OCw2NywxMjAzMzAsNjcsMTIwMzgyLDY3LDEyMDQzNCw2NywxMDE3LDY3LDExNDI4LDY3LDUwODcsNjcsNDIyMDIsNjcsNjYyMTAsNjcsNjYzMDYsNjcsNjY1ODEsNjcsNjY4NDQsNjcsODU3NCwxMDAsODUxOCwxMDAsMTE5ODM3LDEwMCwxMTk4ODksMTAwLDExOTk0MSwxMDAsMTE5OTkzLDEwMCwxMjAwNDUsMTAwLDEyMDA5NywxMDAsMTIwMTQ5LDEwMCwxMjAyMDEsMTAwLDEyMDI1MywxMDAsMTIwMzA1LDEwMCwxMjAzNTcsMTAwLDEyMDQwOSwxMDAsMTIwNDYxLDEwMCwxMjgxLDEwMCw1MDk1LDEwMCw1MjMxLDEwMCw0MjE5NCwxMDAsODU1OCw2OCw4NTE3LDY4LDExOTgxMSw2OCwxMTk4NjMsNjgsMTE5OTE1LDY4LDExOTk2Nyw2OCwxMjAwMTksNjgsMTIwMDcxLDY4LDEyMDEyMyw2OCwxMjAxNzUsNjgsMTIwMjI3LDY4LDEyMDI3OSw2OCwxMjAzMzEsNjgsMTIwMzgzLDY4LDEyMDQzNSw2OCw1MDI0LDY4LDU1OTgsNjgsNTYxMCw2OCw0MjE5NSw2OCw4NDk0LDEwMSw2NTM0OSwxMDEsODQ5NSwxMDEsODUxOSwxMDEsMTE5ODM4LDEwMSwxMTk4OTAsMTAxLDExOTk0MiwxMDEsMTIwMDQ2LDEwMSwxMjAwOTgsMTAxLDEyMDE1MCwxMDEsMTIwMjAyLDEwMSwxMjAyNTQsMTAxLDEyMDMwNiwxMDEsMTIwMzU4LDEwMSwxMjA0MTAsMTAxLDEyMDQ2MiwxMDEsNDM4MjYsMTAxLDEyMTMsMTAxLDg5NTksNjksNjUzMTcsNjksODQ5Niw2OSwxMTk4MTIsNjksMTE5ODY0LDY5LDExOTkxNiw2OSwxMjAwMjAsNjksMTIwMDcyLDY5LDEyMDEyNCw2OSwxMjAxNzYsNjksMTIwMjI4LDY5LDEyMDI4MCw2OSwxMjAzMzIsNjksMTIwMzg0LDY5LDEyMDQzNiw2OSw5MTcsNjksMTIwNDkyLDY5LDEyMDU1MCw2OSwxMjA2MDgsNjksMTIwNjY2LDY5LDEyMDcyNCw2OSwxMTU3Nyw2OSw1MDM2LDY5LDQyMjI0LDY5LDcxODQ2LDY5LDcxODU0LDY5LDY2MTgyLDY5LDExOTgzOSwxMDIsMTE5ODkxLDEwMiwxMTk5NDMsMTAyLDExOTk5NSwxMDIsMTIwMDQ3LDEwMiwxMjAwOTksMTAyLDEyMDE1MSwxMDIsMTIwMjAzLDEwMiwxMjAyNTUsMTAyLDEyMDMwNywxMDIsMTIwMzU5LDEwMiwxMjA0MTEsMTAyLDEyMDQ2MywxMDIsNDM4MjksMTAyLDQyOTA1LDEwMiwzODMsMTAyLDc4MzcsMTAyLDE0MTIsMTAyLDExOTMxNSw3MCw4NDk3LDcwLDExOTgxMyw3MCwxMTk4NjUsNzAsMTE5OTE3LDcwLDEyMDAyMSw3MCwxMjAwNzMsNzAsMTIwMTI1LDcwLDEyMDE3Nyw3MCwxMjAyMjksNzAsMTIwMjgxLDcwLDEyMDMzMyw3MCwxMjAzODUsNzAsMTIwNDM3LDcwLDQyOTA0LDcwLDk4OCw3MCwxMjA3NzgsNzAsNTU1Niw3MCw0MjIwNSw3MCw3MTg3NCw3MCw3MTg0Miw3MCw2NjE4Myw3MCw2NjIxMyw3MCw2Njg1Myw3MCw2NTM1MSwxMDMsODQ1OCwxMDMsMTE5ODQwLDEwMywxMTk4OTIsMTAzLDExOTk0NCwxMDMsMTIwMDQ4LDEwMywxMjAxMDAsMTAzLDEyMDE1MiwxMDMsMTIwMjA0LDEwMywxMjAyNTYsMTAzLDEyMDMwOCwxMDMsMTIwMzYwLDEwMywxMjA0MTIsMTAzLDEyMDQ2NCwxMDMsNjA5LDEwMyw3NTU1LDEwMywzOTcsMTAzLDE0MDksMTAzLDExOTgxNCw3MSwxMTk4NjYsNzEsMTE5OTE4LDcxLDExOTk3MCw3MSwxMjAwMjIsNzEsMTIwMDc0LDcxLDEyMDEyNiw3MSwxMjAxNzgsNzEsMTIwMjMwLDcxLDEyMDI4Miw3MSwxMjAzMzQsNzEsMTIwMzg2LDcxLDEyMDQzOCw3MSwxMjkyLDcxLDUwNTYsNzEsNTEwNyw3MSw0MjE5OCw3MSw2NTM1MiwxMDQsODQ2MiwxMDQsMTE5ODQxLDEwNCwxMTk5NDUsMTA0LDExOTk5NywxMDQsMTIwMDQ5LDEwNCwxMjAxMDEsMTA0LDEyMDE1MywxMDQsMTIwMjA1LDEwNCwxMjAyNTcsMTA0LDEyMDMwOSwxMDQsMTIwMzYxLDEwNCwxMjA0MTMsMTA0LDEyMDQ2NSwxMDQsMTIxMSwxMDQsMTM5MiwxMDQsNTA1OCwxMDQsNjUzMjAsNzIsODQ1OSw3Miw4NDYwLDcyLDg0NjEsNzIsMTE5ODE1LDcyLDExOTg2Nyw3MiwxMTk5MTksNzIsMTIwMDIzLDcyLDEyMDE3OSw3MiwxMjAyMzEsNzIsMTIwMjgzLDcyLDEyMDMzNSw3MiwxMjAzODcsNzIsMTIwNDM5LDcyLDkxOSw3MiwxMjA0OTQsNzIsMTIwNTUyLDcyLDEyMDYxMCw3MiwxMjA2NjgsNzIsMTIwNzI2LDcyLDExNDA2LDcyLDUwNTEsNzIsNTUwMCw3Miw0MjIxNSw3Miw2NjI1NSw3Miw3MzEsMTA1LDkwNzUsMTA1LDY1MzUzLDEwNSw4NTYwLDEwNSw4NTA1LDEwNSw4NTIwLDEwNSwxMTk4NDIsMTA1LDExOTg5NCwxMDUsMTE5OTQ2LDEwNSwxMTk5OTgsMTA1LDEyMDA1MCwxMDUsMTIwMTAyLDEwNSwxMjAxNTQsMTA1LDEyMDIwNiwxMDUsMTIwMjU4LDEwNSwxMjAzMTAsMTA1LDEyMDM2MiwxMDUsMTIwNDE0LDEwNSwxMjA0NjYsMTA1LDEyMDQ4NCwxMDUsNjE4LDEwNSw2MTcsMTA1LDk1MywxMDUsODEyNiwxMDUsODkwLDEwNSwxMjA1MjIsMTA1LDEyMDU4MCwxMDUsMTIwNjM4LDEwNSwxMjA2OTYsMTA1LDEyMDc1NCwxMDUsMTExMCwxMDUsNDI1NjcsMTA1LDEyMzEsMTA1LDQzODkzLDEwNSw1MDI5LDEwNSw3MTg3NSwxMDUsNjUzNTQsMTA2LDg1MjEsMTA2LDExOTg0MywxMDYsMTE5ODk1LDEwNiwxMTk5NDcsMTA2LDExOTk5OSwxMDYsMTIwMDUxLDEwNiwxMjAxMDMsMTA2LDEyMDE1NSwxMDYsMTIwMjA3LDEwNiwxMjAyNTksMTA2LDEyMDMxMSwxMDYsMTIwMzYzLDEwNiwxMjA0MTUsMTA2LDEyMDQ2NywxMDYsMTAxMSwxMDYsMTExMiwxMDYsNjUzMjIsNzQsMTE5ODE3LDc0LDExOTg2OSw3NCwxMTk5MjEsNzQsMTE5OTczLDc0LDEyMDAyNSw3NCwxMjAwNzcsNzQsMTIwMTI5LDc0LDEyMDE4MSw3NCwxMjAyMzMsNzQsMTIwMjg1LDc0LDEyMDMzNyw3NCwxMjAzODksNzQsMTIwNDQxLDc0LDQyOTMwLDc0LDg5NSw3NCwxMDMyLDc0LDUwMzUsNzQsNTI2MSw3NCw0MjIwMSw3NCwxMTk4NDQsMTA3LDExOTg5NiwxMDcsMTE5OTQ4LDEwNywxMjAwMDAsMTA3LDEyMDA1MiwxMDcsMTIwMTA0LDEwNywxMjAxNTYsMTA3LDEyMDIwOCwxMDcsMTIwMjYwLDEwNywxMjAzMTIsMTA3LDEyMDM2NCwxMDcsMTIwNDE2LDEwNywxMjA0NjgsMTA3LDg0OTAsNzUsNjUzMjMsNzUsMTE5ODE4LDc1LDExOTg3MCw3NSwxMTk5MjIsNzUsMTE5OTc0LDc1LDEyMDAyNiw3NSwxMjAwNzgsNzUsMTIwMTMwLDc1LDEyMDE4Miw3NSwxMjAyMzQsNzUsMTIwMjg2LDc1LDEyMDMzOCw3NSwxMjAzOTAsNzUsMTIwNDQyLDc1LDkyMiw3NSwxMjA0OTcsNzUsMTIwNTU1LDc1LDEyMDYxMyw3NSwxMjA2NzEsNzUsMTIwNzI5LDc1LDExNDEyLDc1LDUwOTQsNzUsNTg0NSw3NSw0MjE5OSw3NSw2Njg0MCw3NSwxNDcyLDEwOCw4NzM5LDczLDkyMTMsNzMsNjU1MTIsNzMsMTYzMywxMDgsMTc3Nyw3Myw2NjMzNiwxMDgsMTI1MTI3LDEwOCwxMjA3ODMsNzMsMTIwNzkzLDczLDEyMDgwMyw3MywxMjA4MTMsNzMsMTIwODIzLDczLDEzMDAzMyw3Myw2NTMyMSw3Myw4NTQ0LDczLDg0NjQsNzMsODQ2NSw3MywxMTk4MTYsNzMsMTE5ODY4LDczLDExOTkyMCw3MywxMjAwMjQsNzMsMTIwMTI4LDczLDEyMDE4MCw3MywxMjAyMzIsNzMsMTIwMjg0LDczLDEyMDMzNiw3MywxMjAzODgsNzMsMTIwNDQwLDczLDY1MzU2LDEwOCw4NTcyLDczLDg0NjcsMTA4LDExOTg0NSwxMDgsMTE5ODk3LDEwOCwxMTk5NDksMTA4LDEyMDAwMSwxMDgsMTIwMDUzLDEwOCwxMjAxMDUsNzMsMTIwMTU3LDczLDEyMDIwOSw3MywxMjAyNjEsNzMsMTIwMzEzLDczLDEyMDM2NSw3MywxMjA0MTcsNzMsMTIwNDY5LDczLDQ0OCw3MywxMjA0OTYsNzMsMTIwNTU0LDczLDEyMDYxMiw3MywxMjA2NzAsNzMsMTIwNzI4LDczLDExNDEwLDczLDEwMzAsNzMsMTIxNiw3MywxNDkzLDEwOCwxNTAzLDEwOCwxNTc1LDEwOCwxMjY0NjQsMTA4LDEyNjU5MiwxMDgsNjUxNjYsMTA4LDY1MTY1LDEwOCwxOTk0LDEwOCwxMTU5OSw3Myw1ODI1LDczLDQyMjI2LDczLDkzOTkyLDczLDY2MTg2LDEyNCw2NjMxMywxMjQsMTE5MzM4LDc2LDg1NTYsNzYsODQ2Niw3NiwxMTk4MTksNzYsMTE5ODcxLDc2LDExOTkyMyw3NiwxMjAwMjcsNzYsMTIwMDc5LDc2LDEyMDEzMSw3NiwxMjAxODMsNzYsMTIwMjM1LDc2LDEyMDI4Nyw3NiwxMjAzMzksNzYsMTIwMzkxLDc2LDEyMDQ0Myw3NiwxMTQ3Miw3Niw1MDg2LDc2LDUyOTAsNzYsNDIyMDksNzYsOTM5NzQsNzYsNzE4NDMsNzYsNzE4NTgsNzYsNjY1ODcsNzYsNjY4NTQsNzYsNjUzMjUsNzcsODU1OSw3Nyw4NDk5LDc3LDExOTgyMCw3NywxMTk4NzIsNzcsMTE5OTI0LDc3LDEyMDAyOCw3NywxMjAwODAsNzcsMTIwMTMyLDc3LDEyMDE4NCw3NywxMjAyMzYsNzcsMTIwMjg4LDc3LDEyMDM0MCw3NywxMjAzOTIsNzcsMTIwNDQ0LDc3LDkyNCw3NywxMjA0OTksNzcsMTIwNTU3LDc3LDEyMDYxNSw3NywxMjA2NzMsNzcsMTIwNzMxLDc3LDEwMTgsNzcsMTE0MTYsNzcsNTA0Nyw3Nyw1NjE2LDc3LDU4NDYsNzcsNDIyMDcsNzcsNjYyMjQsNzcsNjYzMjEsNzcsMTE5ODQ3LDExMCwxMTk4OTksMTEwLDExOTk1MSwxMTAsMTIwMDAzLDExMCwxMjAwNTUsMTEwLDEyMDEwNywxMTAsMTIwMTU5LDExMCwxMjAyMTEsMTEwLDEyMDI2MywxMTAsMTIwMzE1LDExMCwxMjAzNjcsMTEwLDEyMDQxOSwxMTAsMTIwNDcxLDExMCwxNDAwLDExMCwxNDA0LDExMCw2NTMyNiw3OCw4NDY5LDc4LDExOTgyMSw3OCwxMTk4NzMsNzgsMTE5OTI1LDc4LDExOTk3Nyw3OCwxMjAwMjksNzgsMTIwMDgxLDc4LDEyMDE4NSw3OCwxMjAyMzcsNzgsMTIwMjg5LDc4LDEyMDM0MSw3OCwxMjAzOTMsNzgsMTIwNDQ1LDc4LDkyNSw3OCwxMjA1MDAsNzgsMTIwNTU4LDc4LDEyMDYxNiw3OCwxMjA2NzQsNzgsMTIwNzMyLDc4LDExNDE4LDc4LDQyMjA4LDc4LDY2ODM1LDc4LDMwNzQsMTExLDMyMDIsMTExLDMzMzAsMTExLDM0NTgsMTExLDI0MDYsMTExLDI2NjIsMTExLDI3OTAsMTExLDMwNDYsMTExLDMxNzQsMTExLDMzMDIsMTExLDM0MzAsMTExLDM2NjQsMTExLDM3OTIsMTExLDQxNjAsMTExLDE2MzcsMTExLDE3ODEsMTExLDY1MzU5LDExMSw4NTAwLDExMSwxMTk4NDgsMTExLDExOTkwMCwxMTEsMTE5OTUyLDExMSwxMjAwNTYsMTExLDEyMDEwOCwxMTEsMTIwMTYwLDExMSwxMjAyMTIsMTExLDEyMDI2NCwxMTEsMTIwMzE2LDExMSwxMjAzNjgsMTExLDEyMDQyMCwxMTEsMTIwNDcyLDExMSw3NDM5LDExMSw3NDQxLDExMSw0MzgzNywxMTEsOTU5LDExMSwxMjA1MjgsMTExLDEyMDU4NiwxMTEsMTIwNjQ0LDExMSwxMjA3MDIsMTExLDEyMDc2MCwxMTEsOTYzLDExMSwxMjA1MzIsMTExLDEyMDU5MCwxMTEsMTIwNjQ4LDExMSwxMjA3MDYsMTExLDEyMDc2NCwxMTEsMTE0MjMsMTExLDQzNTEsMTExLDE0MTMsMTExLDE1MDUsMTExLDE2MDcsMTExLDEyNjUwMCwxMTEsMTI2NTY0LDExMSwxMjY1OTYsMTExLDY1MjU5LDExMSw2NTI2MCwxMTEsNjUyNTgsMTExLDY1MjU3LDExMSwxNzI2LDExMSw2NDQyOCwxMTEsNjQ0MjksMTExLDY0NDI3LDExMSw2NDQyNiwxMTEsMTcyOSwxMTEsNjQ0MjQsMTExLDY0NDI1LDExMSw2NDQyMywxMTEsNjQ0MjIsMTExLDE3NDksMTExLDMzNjAsMTExLDQxMjUsMTExLDY2Nzk0LDExMSw3MTg4MCwxMTEsNzE4OTUsMTExLDY2NjA0LDExMSwxOTg0LDc5LDI1MzQsNzksMjkxOCw3OSwxMjI5NSw3OSw3MDg2NCw3OSw3MTkwNCw3OSwxMjA3ODIsNzksMTIwNzkyLDc5LDEyMDgwMiw3OSwxMjA4MTIsNzksMTIwODIyLDc5LDEzMDAzMiw3OSw2NTMyNyw3OSwxMTk4MjIsNzksMTE5ODc0LDc5LDExOTkyNiw3OSwxMTk5NzgsNzksMTIwMDMwLDc5LDEyMDA4Miw3OSwxMjAxMzQsNzksMTIwMTg2LDc5LDEyMDIzOCw3OSwxMjAyOTAsNzksMTIwMzQyLDc5LDEyMDM5NCw3OSwxMjA0NDYsNzksOTI3LDc5LDEyMDUwMiw3OSwxMjA1NjAsNzksMTIwNjE4LDc5LDEyMDY3Niw3OSwxMjA3MzQsNzksMTE0MjIsNzksMTM2NSw3OSwxMTYwNCw3OSw0ODE2LDc5LDI4NDgsNzksNjY3NTQsNzksNDIyMjcsNzksNzE4NjEsNzksNjYxOTQsNzksNjYyMTksNzksNjY1NjQsNzksNjY4MzgsNzksOTA3NiwxMTIsNjUzNjAsMTEyLDExOTg0OSwxMTIsMTE5OTAxLDExMiwxMTk5NTMsMTEyLDEyMDAwNSwxMTIsMTIwMDU3LDExMiwxMjAxMDksMTEyLDEyMDE2MSwxMTIsMTIwMjEzLDExMiwxMjAyNjUsMTEyLDEyMDMxNywxMTIsMTIwMzY5LDExMiwxMjA0MjEsMTEyLDEyMDQ3MywxMTIsOTYxLDExMiwxMjA1MzAsMTEyLDEyMDU0NCwxMTIsMTIwNTg4LDExMiwxMjA2MDIsMTEyLDEyMDY0NiwxMTIsMTIwNjYwLDExMiwxMjA3MDQsMTEyLDEyMDcxOCwxMTIsMTIwNzYyLDExMiwxMjA3NzYsMTEyLDExNDI3LDExMiw2NTMyOCw4MCw4NDczLDgwLDExOTgyMyw4MCwxMTk4NzUsODAsMTE5OTI3LDgwLDExOTk3OSw4MCwxMjAwMzEsODAsMTIwMDgzLDgwLDEyMDE4Nyw4MCwxMjAyMzksODAsMTIwMjkxLDgwLDEyMDM0Myw4MCwxMjAzOTUsODAsMTIwNDQ3LDgwLDkyOSw4MCwxMjA1MDQsODAsMTIwNTYyLDgwLDEyMDYyMCw4MCwxMjA2NzgsODAsMTIwNzM2LDgwLDExNDI2LDgwLDUwOTAsODAsNTIyOSw4MCw0MjE5Myw4MCw2NjE5Nyw4MCwxMTk4NTAsMTEzLDExOTkwMiwxMTMsMTE5OTU0LDExMywxMjAwMDYsMTEzLDEyMDA1OCwxMTMsMTIwMTEwLDExMywxMjAxNjIsMTEzLDEyMDIxNCwxMTMsMTIwMjY2LDExMywxMjAzMTgsMTEzLDEyMDM3MCwxMTMsMTIwNDIyLDExMywxMjA0NzQsMTEzLDEzMDcsMTEzLDEzNzksMTEzLDEzODIsMTEzLDg0NzQsODEsMTE5ODI0LDgxLDExOTg3Niw4MSwxMTk5MjgsODEsMTE5OTgwLDgxLDEyMDAzMiw4MSwxMjAwODQsODEsMTIwMTg4LDgxLDEyMDI0MCw4MSwxMjAyOTIsODEsMTIwMzQ0LDgxLDEyMDM5Niw4MSwxMjA0NDgsODEsMTE2MDUsODEsMTE5ODUxLDExNCwxMTk5MDMsMTE0LDExOTk1NSwxMTQsMTIwMDA3LDExNCwxMjAwNTksMTE0LDEyMDExMSwxMTQsMTIwMTYzLDExNCwxMjAyMTUsMTE0LDEyMDI2NywxMTQsMTIwMzE5LDExNCwxMjAzNzEsMTE0LDEyMDQyMywxMTQsMTIwNDc1LDExNCw0Mzg0NywxMTQsNDM4NDgsMTE0LDc0NjIsMTE0LDExMzk3LDExNCw0MzkwNSwxMTQsMTE5MzE4LDgyLDg0NzUsODIsODQ3Niw4Miw4NDc3LDgyLDExOTgyNSw4MiwxMTk4NzcsODIsMTE5OTI5LDgyLDEyMDAzMyw4MiwxMjAxODksODIsMTIwMjQxLDgyLDEyMDI5Myw4MiwxMjAzNDUsODIsMTIwMzk3LDgyLDEyMDQ0OSw4Miw0MjIsODIsNTAyNSw4Miw1MDc0LDgyLDY2NzQwLDgyLDU1MTEsODIsNDIyMTEsODIsOTQwMDUsODIsNjUzNjMsMTE1LDExOTg1MiwxMTUsMTE5OTA0LDExNSwxMTk5NTYsMTE1LDEyMDAwOCwxMTUsMTIwMDYwLDExNSwxMjAxMTIsMTE1LDEyMDE2NCwxMTUsMTIwMjE2LDExNSwxMjAyNjgsMTE1LDEyMDMyMCwxMTUsMTIwMzcyLDExNSwxMjA0MjQsMTE1LDEyMDQ3NiwxMTUsNDI4MDEsMTE1LDQ0NSwxMTUsMTEwOSwxMTUsNDM5NDYsMTE1LDcxODczLDExNSw2NjYzMiwxMTUsNjUzMzEsODMsMTE5ODI2LDgzLDExOTg3OCw4MywxMTk5MzAsODMsMTE5OTgyLDgzLDEyMDAzNCw4MywxMjAwODYsODMsMTIwMTM4LDgzLDEyMDE5MCw4MywxMjAyNDIsODMsMTIwMjk0LDgzLDEyMDM0Niw4MywxMjAzOTgsODMsMTIwNDUwLDgzLDEwMjksODMsMTM1OSw4Myw1MDc3LDgzLDUwODIsODMsNDIyMTAsODMsOTQwMTAsODMsNjYxOTgsODMsNjY1OTIsODMsMTE5ODUzLDExNiwxMTk5MDUsMTE2LDExOTk1NywxMTYsMTIwMDA5LDExNiwxMjAwNjEsMTE2LDEyMDExMywxMTYsMTIwMTY1LDExNiwxMjAyMTcsMTE2LDEyMDI2OSwxMTYsMTIwMzIxLDExNiwxMjAzNzMsMTE2LDEyMDQyNSwxMTYsMTIwNDc3LDExNiw4ODY4LDg0LDEwMjAxLDg0LDEyODg3Miw4NCw2NTMzMiw4NCwxMTk4MjcsODQsMTE5ODc5LDg0LDExOTkzMSw4NCwxMTk5ODMsODQsMTIwMDM1LDg0LDEyMDA4Nyw4NCwxMjAxMzksODQsMTIwMTkxLDg0LDEyMDI0Myw4NCwxMjAyOTUsODQsMTIwMzQ3LDg0LDEyMDM5OSw4NCwxMjA0NTEsODQsOTMyLDg0LDEyMDUwNyw4NCwxMjA1NjUsODQsMTIwNjIzLDg0LDEyMDY4MSw4NCwxMjA3MzksODQsMTE0MzAsODQsNTAyNiw4NCw0MjE5Niw4NCw5Mzk2Miw4NCw3MTg2OCw4NCw2NjE5OSw4NCw2NjIyNSw4NCw2NjMyNSw4NCwxMTk4NTQsMTE3LDExOTkwNiwxMTcsMTE5OTU4LDExNywxMjAwMTAsMTE3LDEyMDA2MiwxMTcsMTIwMTE0LDExNywxMjAxNjYsMTE3LDEyMDIxOCwxMTcsMTIwMjcwLDExNywxMjAzMjIsMTE3LDEyMDM3NCwxMTcsMTIwNDI2LDExNywxMjA0NzgsMTE3LDQyOTExLDExNyw3NDUyLDExNyw0Mzg1NCwxMTcsNDM4NTgsMTE3LDY1MSwxMTcsOTY1LDExNywxMjA1MzQsMTE3LDEyMDU5MiwxMTcsMTIwNjUwLDExNywxMjA3MDgsMTE3LDEyMDc2NiwxMTcsMTQwNSwxMTcsNjY4MDYsMTE3LDcxODk2LDExNyw4NzQ2LDg1LDg4OTksODUsMTE5ODI4LDg1LDExOTg4MCw4NSwxMTk5MzIsODUsMTE5OTg0LDg1LDEyMDAzNiw4NSwxMjAwODgsODUsMTIwMTQwLDg1LDEyMDE5Miw4NSwxMjAyNDQsODUsMTIwMjk2LDg1LDEyMDM0OCw4NSwxMjA0MDAsODUsMTIwNDUyLDg1LDEzNTcsODUsNDYwOCw4NSw2Njc2Niw4NSw1MTk2LDg1LDQyMjI4LDg1LDk0MDE4LDg1LDcxODY0LDg1LDg3NDQsMTE4LDg4OTcsMTE4LDY1MzY2LDExOCw4NTY0LDExOCwxMTk4NTUsMTE4LDExOTkwNywxMTgsMTE5OTU5LDExOCwxMjAwMTEsMTE4LDEyMDA2MywxMTgsMTIwMTE1LDExOCwxMjAxNjcsMTE4LDEyMDIxOSwxMTgsMTIwMjcxLDExOCwxMjAzMjMsMTE4LDEyMDM3NSwxMTgsMTIwNDI3LDExOCwxMjA0NzksMTE4LDc0NTYsMTE4LDk1NywxMTgsMTIwNTI2LDExOCwxMjA1ODQsMTE4LDEyMDY0MiwxMTgsMTIwNzAwLDExOCwxMjA3NTgsMTE4LDExNDEsMTE4LDE0OTYsMTE4LDcxNDMwLDExOCw0Mzk0NSwxMTgsNzE4NzIsMTE4LDExOTMwOSw4NiwxNjM5LDg2LDE3ODMsODYsODU0OCw4NiwxMTk4MjksODYsMTE5ODgxLDg2LDExOTkzMyw4NiwxMTk5ODUsODYsMTIwMDM3LDg2LDEyMDA4OSw4NiwxMjAxNDEsODYsMTIwMTkzLDg2LDEyMDI0NSw4NiwxMjAyOTcsODYsMTIwMzQ5LDg2LDEyMDQwMSw4NiwxMjA0NTMsODYsMTE0MCw4NiwxMTU3Niw4Niw1MDgxLDg2LDUxNjcsODYsNDI3MTksODYsNDIyMTQsODYsOTM5NjAsODYsNzE4NDAsODYsNjY4NDUsODYsNjIzLDExOSwxMTk4NTYsMTE5LDExOTkwOCwxMTksMTE5OTYwLDExOSwxMjAwMTIsMTE5LDEyMDA2NCwxMTksMTIwMTE2LDExOSwxMjAxNjgsMTE5LDEyMDIyMCwxMTksMTIwMjcyLDExOSwxMjAzMjQsMTE5LDEyMDM3NiwxMTksMTIwNDI4LDExOSwxMjA0ODAsMTE5LDc0NTcsMTE5LDExMjEsMTE5LDEzMDksMTE5LDEzNzcsMTE5LDcxNDM0LDExOSw3MTQzOCwxMTksNzE0MzksMTE5LDQzOTA3LDExOSw3MTkxOSw4Nyw3MTkxMCw4NywxMTk4MzAsODcsMTE5ODgyLDg3LDExOTkzNCw4NywxMTk5ODYsODcsMTIwMDM4LDg3LDEyMDA5MCw4NywxMjAxNDIsODcsMTIwMTk0LDg3LDEyMDI0Niw4NywxMjAyOTgsODcsMTIwMzUwLDg3LDEyMDQwMiw4NywxMjA0NTQsODcsMTMwOCw4Nyw1MDQzLDg3LDUwNzYsODcsNDIyMTgsODcsNTc0MiwxMjAsMTA1MzksMTIwLDEwNTQwLDEyMCwxMDc5OSwxMjAsNjUzNjgsMTIwLDg1NjksMTIwLDExOTg1NywxMjAsMTE5OTA5LDEyMCwxMTk5NjEsMTIwLDEyMDAxMywxMjAsMTIwMDY1LDEyMCwxMjAxMTcsMTIwLDEyMDE2OSwxMjAsMTIwMjIxLDEyMCwxMjAyNzMsMTIwLDEyMDMyNSwxMjAsMTIwMzc3LDEyMCwxMjA0MjksMTIwLDEyMDQ4MSwxMjAsNTQ0MSwxMjAsNTUwMSwxMjAsNTc0MSw4OCw5NTg3LDg4LDY2MzM4LDg4LDcxOTE2LDg4LDY1MzM2LDg4LDg1NTMsODgsMTE5ODMxLDg4LDExOTg4Myw4OCwxMTk5MzUsODgsMTE5OTg3LDg4LDEyMDAzOSw4OCwxMjAwOTEsODgsMTIwMTQzLDg4LDEyMDE5NSw4OCwxMjAyNDcsODgsMTIwMjk5LDg4LDEyMDM1MSw4OCwxMjA0MDMsODgsMTIwNDU1LDg4LDQyOTMxLDg4LDkzNSw4OCwxMjA1MTAsODgsMTIwNTY4LDg4LDEyMDYyNiw4OCwxMjA2ODQsODgsMTIwNzQyLDg4LDExNDM2LDg4LDExNjEzLDg4LDU4MTUsODgsNDIyMTksODgsNjYxOTIsODgsNjYyMjgsODgsNjYzMjcsODgsNjY4NTUsODgsNjExLDEyMSw3NTY0LDEyMSw2NTM2OSwxMjEsMTE5ODU4LDEyMSwxMTk5MTAsMTIxLDExOTk2MiwxMjEsMTIwMDE0LDEyMSwxMjAwNjYsMTIxLDEyMDExOCwxMjEsMTIwMTcwLDEyMSwxMjAyMjIsMTIxLDEyMDI3NCwxMjEsMTIwMzI2LDEyMSwxMjAzNzgsMTIxLDEyMDQzMCwxMjEsMTIwNDgyLDEyMSw2NTUsMTIxLDc5MzUsMTIxLDQzODY2LDEyMSw5NDcsMTIxLDg1MDksMTIxLDEyMDUxNiwxMjEsMTIwNTc0LDEyMSwxMjA2MzIsMTIxLDEyMDY5MCwxMjEsMTIwNzQ4LDEyMSwxMTk5LDEyMSw0MzI3LDEyMSw3MTkwMCwxMjEsNjUzMzcsODksMTE5ODMyLDg5LDExOTg4NCw4OSwxMTk5MzYsODksMTE5OTg4LDg5LDEyMDA0MCw4OSwxMjAwOTIsODksMTIwMTQ0LDg5LDEyMDE5Niw4OSwxMjAyNDgsODksMTIwMzAwLDg5LDEyMDM1Miw4OSwxMjA0MDQsODksMTIwNDU2LDg5LDkzMyw4OSw5NzgsODksMTIwNTA4LDg5LDEyMDU2Niw4OSwxMjA2MjQsODksMTIwNjgyLDg5LDEyMDc0MCw4OSwxMTQzMiw4OSwxMTk4LDg5LDUwMzMsODksNTA1Myw4OSw0MjIyMCw4OSw5NDAxOSw4OSw3MTg0NCw4OSw2NjIyNiw4OSwxMTk4NTksMTIyLDExOTkxMSwxMjIsMTE5OTYzLDEyMiwxMjAwMTUsMTIyLDEyMDA2NywxMjIsMTIwMTE5LDEyMiwxMjAxNzEsMTIyLDEyMDIyMywxMjIsMTIwMjc1LDEyMiwxMjAzMjcsMTIyLDEyMDM3OSwxMjIsMTIwNDMxLDEyMiwxMjA0ODMsMTIyLDc0NTgsMTIyLDQzOTIzLDEyMiw3MTg3NiwxMjIsNjYyOTMsOTAsNzE5MDksOTAsNjUzMzgsOTAsODQ4NCw5MCw4NDg4LDkwLDExOTgzMyw5MCwxMTk4ODUsOTAsMTE5OTM3LDkwLDExOTk4OSw5MCwxMjAwNDEsOTAsMTIwMTk3LDkwLDEyMDI0OSw5MCwxMjAzMDEsOTAsMTIwMzUzLDkwLDEyMDQwNSw5MCwxMjA0NTcsOTAsOTE4LDkwLDEyMDQ5Myw5MCwxMjA1NTEsOTAsMTIwNjA5LDkwLDEyMDY2Nyw5MCwxMjA3MjUsOTAsNTA1OSw5MCw0MjIwNCw5MCw3MTg0OSw5MCw2NTI4MiwzNCw2NTI4NCwzNiw2NTI4NSwzNyw2NTI4NiwzOCw2NTI5MCw0Miw2NTI5MSw0Myw2NTI5NCw0Niw2NTI5NSw0Nyw2NTI5Niw0OCw2NTI5Nyw0OSw2NTI5OCw1MCw2NTI5OSw1MSw2NTMwMCw1Miw2NTMwMSw1Myw2NTMwMiw1NCw2NTMwMyw1NSw2NTMwNCw1Niw2NTMwNSw1Nyw2NTMwOCw2MCw2NTMwOSw2MSw2NTMxMCw2Miw2NTMxMiw2NCw2NTMxNiw2OCw2NTMxOCw3MCw2NTMxOSw3MSw2NTMyNCw3Niw2NTMyOSw4MSw2NTMzMCw4Miw2NTMzMyw4NSw2NTMzNCw4Niw2NTMzNSw4Nyw2NTM0Myw5NSw2NTM0Niw5OCw2NTM0OCwxMDAsNjUzNTAsMTAyLDY1MzU1LDEwNyw2NTM1NywxMDksNjUzNTgsMTEwLDY1MzYxLDExMyw2NTM2MiwxMTQsNjUzNjQsMTE2LDY1MzY1LDExNyw2NTM2NywxMTksNjUzNzAsMTIyLDY1MzcxLDEyMyw2NTM3MywxMjUsMTE5ODQ2LDEwOV0sIl9kZWZhdWx0IjpbMTYwLDMyLDgyMTEsNDUsNjUzNzQsMTI2LDY1MzA2LDU4LDY1MjgxLDMzLDgyMTYsOTYsODIxNyw5Niw4MjQ1LDk2LDE4MCw5NiwxMjQ5NCw0NywxMDQ3LDUxLDEwNzMsNTQsMTA3Miw5NywxMDQwLDY1LDEwNjgsOTgsMTA0Miw2NiwxMDg5LDk5LDEwNTcsNjcsMTA3NywxMDEsMTA0NSw2OSwxMDUzLDcyLDMwNSwxMDUsMTA1MCw3NSw5MjEsNzMsMTA1Miw3NywxMDg2LDExMSwxMDU0LDc5LDEwMDksMTEyLDEwODgsMTEyLDEwNTYsODAsMTA3NSwxMTQsMTA1OCw4NCwyMTUsMTIwLDEwOTMsMTIwLDEwNjEsODgsMTA5MSwxMjEsMTA1OSw4OSw2NTI4MywzNSw2NTI4OCw0MCw2NTI4OSw0MSw2NTI5Miw0NCw2NTMwNyw1OSw2NTMxMSw2M10sImNzIjpbNjUzNzQsMTI2LDY1MzA2LDU4LDY1MjgxLDMzLDgyMTYsOTYsODIxNyw5Niw4MjQ1LDk2LDE4MCw5NiwxMjQ5NCw0NywxMDQ3LDUxLDEwNzMsNTQsMTA3Miw5NywxMDQwLDY1LDEwNjgsOTgsMTA0Miw2NiwxMDg5LDk5LDEwNTcsNjcsMTA3NywxMDEsMTA0NSw2OSwxMDUzLDcyLDMwNSwxMDUsMTA1MCw3NSw5MjEsNzMsMTA1Miw3NywxMDg2LDExMSwxMDU0LDc5LDEwMDksMTEyLDEwODgsMTEyLDEwNTYsODAsMTA3NSwxMTQsMTA1OCw4NCwxMDkzLDEyMCwxMDYxLDg4LDEwOTEsMTIxLDEwNTksODksNjUyODMsMzUsNjUyODgsNDAsNjUyODksNDEsNjUyOTIsNDQsNjUzMDcsNTksNjUzMTEsNjNdLCJkZSI6WzY1Mzc0LDEyNiw2NTMwNiw1OCw2NTI4MSwzMyw4MjE2LDk2LDgyMTcsOTYsODI0NSw5NiwxODAsOTYsMTI0OTQsNDcsMTA0Nyw1MSwxMDczLDU0LDEwNzIsOTcsMTA0MCw2NSwxMDY4LDk4LDEwNDIsNjYsMTA4OSw5OSwxMDU3LDY3LDEwNzcsMTAxLDEwNDUsNjksMTA1Myw3MiwzMDUsMTA1LDEwNTAsNzUsOTIxLDczLDEwNTIsNzcsMTA4NiwxMTEsMTA1NCw3OSwxMDA5LDExMiwxMDg4LDExMiwxMDU2LDgwLDEwNzUsMTE0LDEwNTgsODQsMTA5MywxMjAsMTA2MSw4OCwxMDkxLDEyMSwxMDU5LDg5LDY1MjgzLDM1LDY1Mjg4LDQwLDY1Mjg5LDQxLDY1MjkyLDQ0LDY1MzA3LDU5LDY1MzExLDYzXSwiZXMiOls4MjExLDQ1LDY1Mzc0LDEyNiw2NTMwNiw1OCw2NTI4MSwzMyw4MjQ1LDk2LDE4MCw5NiwxMjQ5NCw0NywxMDQ3LDUxLDEwNzMsNTQsMTA3Miw5NywxMDQwLDY1LDEwNjgsOTgsMTA0Miw2NiwxMDg5LDk5LDEwNTcsNjcsMTA3NywxMDEsMTA0NSw2OSwxMDUzLDcyLDMwNSwxMDUsMTA1MCw3NSwxMDUyLDc3LDEwODYsMTExLDEwNTQsNzksMTAwOSwxMTIsMTA4OCwxMTIsMTA1Niw4MCwxMDc1LDExNCwxMDU4LDg0LDIxNSwxMjAsMTA5MywxMjAsMTA2MSw4OCwxMDkxLDEyMSwxMDU5LDg5LDY1MjgzLDM1LDY1Mjg4LDQwLDY1Mjg5LDQxLDY1MjkyLDQ0LDY1MzA3LDU5LDY1MzExLDYzXSwiZnIiOls2NTM3NCwxMjYsNjUzMDYsNTgsNjUyODEsMzMsODIxNiw5Niw4MjQ1LDk2LDEyNDk0LDQ3LDEwNDcsNTEsMTA3Myw1NCwxMDcyLDk3LDEwNDAsNjUsMTA2OCw5OCwxMDQyLDY2LDEwODksOTksMTA1Nyw2NywxMDc3LDEwMSwxMDQ1LDY5LDEwNTMsNzIsMzA1LDEwNSwxMDUwLDc1LDkyMSw3MywxMDUyLDc3LDEwODYsMTExLDEwNTQsNzksMTAwOSwxMTIsMTA4OCwxMTIsMTA1Niw4MCwxMDc1LDExNCwxMDU4LDg0LDIxNSwxMjAsMTA5MywxMjAsMTA2MSw4OCwxMDkxLDEyMSwxMDU5LDg5LDY1MjgzLDM1LDY1Mjg4LDQwLDY1Mjg5LDQxLDY1MjkyLDQ0LDY1MzA3LDU5LDY1MzExLDYzXSwiaXQiOlsxNjAsMzIsODIxMSw0NSw2NTM3NCwxMjYsNjUzMDYsNTgsNjUyODEsMzMsODIxNiw5Niw4MjQ1LDk2LDE4MCw5NiwxMjQ5NCw0NywxMDQ3LDUxLDEwNzMsNTQsMTA3Miw5NywxMDQwLDY1LDEwNjgsOTgsMTA0Miw2NiwxMDg5LDk5LDEwNTcsNjcsMTA3NywxMDEsMTA0NSw2OSwxMDUzLDcyLDMwNSwxMDUsMTA1MCw3NSw5MjEsNzMsMTA1Miw3NywxMDg2LDExMSwxMDU0LDc5LDEwMDksMTEyLDEwODgsMTEyLDEwNTYsODAsMTA3NSwxMTQsMTA1OCw4NCwyMTUsMTIwLDEwOTMsMTIwLDEwNjEsODgsMTA5MSwxMjEsMTA1OSw4OSw2NTI4MywzNSw2NTI4OCw0MCw2NTI4OSw0MSw2NTI5Miw0NCw2NTMwNyw1OSw2NTMxMSw2M10sImphIjpbODIxMSw0NSw2NTMwNiw1OCw2NTI4MSwzMyw4MjE2LDk2LDgyMTcsOTYsODI0NSw5NiwxODAsOTYsMTA0Nyw1MSwxMDczLDU0LDEwNzIsOTcsMTA0MCw2NSwxMDY4LDk4LDEwNDIsNjYsMTA4OSw5OSwxMDU3LDY3LDEwNzcsMTAxLDEwNDUsNjksMTA1Myw3MiwzMDUsMTA1LDEwNTAsNzUsOTIxLDczLDEwNTIsNzcsMTA4NiwxMTEsMTA1NCw3OSwxMDA5LDExMiwxMDg4LDExMiwxMDU2LDgwLDEwNzUsMTE0LDEwNTgsODQsMjE1LDEyMCwxMDkzLDEyMCwxMDYxLDg4LDEwOTEsMTIxLDEwNTksODksNjUyODMsMzUsNjUyOTIsNDQsNjUzMDcsNTldLCJrbyI6WzgyMTEsNDUsNjUzNzQsMTI2LDY1MzA2LDU4LDY1MjgxLDMzLDgyNDUsOTYsMTgwLDk2LDEyNDk0LDQ3LDEwNDcsNTEsMTA3Myw1NCwxMDcyLDk3LDEwNDAsNjUsMTA2OCw5OCwxMDQyLDY2LDEwODksOTksMTA1Nyw2NywxMDc3LDEwMSwxMDQ1LDY5LDEwNTMsNzIsMzA1LDEwNSwxMDUwLDc1LDkyMSw3MywxMDUyLDc3LDEwODYsMTExLDEwNTQsNzksMTAwOSwxMTIsMTA4OCwxMTIsMTA1Niw4MCwxMDc1LDExNCwxMDU4LDg0LDIxNSwxMjAsMTA5MywxMjAsMTA2MSw4OCwxMDkxLDEyMSwxMDU5LDg5LDY1MjgzLDM1LDY1Mjg4LDQwLDY1Mjg5LDQxLDY1MjkyLDQ0LDY1MzA3LDU5LDY1MzExLDYzXSwicGwiOls2NTM3NCwxMjYsNjUzMDYsNTgsNjUyODEsMzMsODIxNiw5Niw4MjE3LDk2LDgyNDUsOTYsMTgwLDk2LDEyNDk0LDQ3LDEwNDcsNTEsMTA3Myw1NCwxMDcyLDk3LDEwNDAsNjUsMTA2OCw5OCwxMDQyLDY2LDEwODksOTksMTA1Nyw2NywxMDc3LDEwMSwxMDQ1LDY5LDEwNTMsNzIsMzA1LDEwNSwxMDUwLDc1LDkyMSw3MywxMDUyLDc3LDEwODYsMTExLDEwNTQsNzksMTAwOSwxMTIsMTA4OCwxMTIsMTA1Niw4MCwxMDc1LDExNCwxMDU4LDg0LDIxNSwxMjAsMTA5MywxMjAsMTA2MSw4OCwxMDkxLDEyMSwxMDU5LDg5LDY1MjgzLDM1LDY1Mjg4LDQwLDY1Mjg5LDQxLDY1MjkyLDQ0LDY1MzA3LDU5LDY1MzExLDYzXSwicHQtQlIiOls2NTM3NCwxMjYsNjUzMDYsNTgsNjUyODEsMzMsODIxNiw5Niw4MjE3LDk2LDgyNDUsOTYsMTgwLDk2LDEyNDk0LDQ3LDEwNDcsNTEsMTA3Myw1NCwxMDcyLDk3LDEwNDAsNjUsMTA2OCw5OCwxMDQyLDY2LDEwODksOTksMTA1Nyw2NywxMDc3LDEwMSwxMDQ1LDY5LDEwNTMsNzIsMzA1LDEwNSwxMDUwLDc1LDkyMSw3MywxMDUyLDc3LDEwODYsMTExLDEwNTQsNzksMTAwOSwxMTIsMTA4OCwxMTIsMTA1Niw4MCwxMDc1LDExNCwxMDU4LDg0LDIxNSwxMjAsMTA5MywxMjAsMTA2MSw4OCwxMDkxLDEyMSwxMDU5LDg5LDY1MjgzLDM1LDY1Mjg4LDQwLDY1Mjg5LDQxLDY1MjkyLDQ0LDY1MzA3LDU5LDY1MzExLDYzXSwicXBzLXBsb2MiOlsxNjAsMzIsODIxMSw0NSw2NTM3NCwxMjYsNjUzMDYsNTgsNjUyODEsMzMsODIxNiw5Niw4MjE3LDk2LDgyNDUsOTYsMTgwLDk2LDEyNDk0LDQ3LDEwNDcsNTEsMTA3Myw1NCwxMDcyLDk3LDEwNDAsNjUsMTA2OCw5OCwxMDQyLDY2LDEwODksOTksMTA1Nyw2NywxMDc3LDEwMSwxMDQ1LDY5LDEwNTMsNzIsMzA1LDEwNSwxMDUwLDc1LDkyMSw3MywxMDUyLDc3LDEwODYsMTExLDEwNTQsNzksMTA4OCwxMTIsMTA1Niw4MCwxMDc1LDExNCwxMDU4LDg0LDIxNSwxMjAsMTA5MywxMjAsMTA2MSw4OCwxMDkxLDEyMSwxMDU5LDg5LDY1MjgzLDM1LDY1Mjg4LDQwLDY1Mjg5LDQxLDY1MjkyLDQ0LDY1MzA3LDU5LDY1MzExLDYzXSwicnUiOls2NTM3NCwxMjYsNjUzMDYsNTgsNjUyODEsMzMsODIxNiw5Niw4MjE3LDk2LDgyNDUsOTYsMTgwLDk2LDEyNDk0LDQ3LDMwNSwxMDUsOTIxLDczLDEwMDksMTEyLDIxNSwxMjAsNjUyODMsMzUsNjUyODgsNDAsNjUyODksNDEsNjUyOTIsNDQsNjUzMDcsNTksNjUzMTEsNjNdLCJ0ciI6WzE2MCwzMiw4MjExLDQ1LDY1Mzc0LDEyNiw2NTMwNiw1OCw2NTI4MSwzMyw4MjQ1LDk2LDE4MCw5NiwxMjQ5NCw0NywxMDQ3LDUxLDEwNzMsNTQsMTA3Miw5NywxMDQwLDY1LDEwNjgsOTgsMTA0Miw2NiwxMDg5LDk5LDEwNTcsNjcsMTA3NywxMDEsMTA0NSw2OSwxMDUzLDcyLDEwNTAsNzUsOTIxLDczLDEwNTIsNzcsMTA4NiwxMTEsMTA1NCw3OSwxMDA5LDExMiwxMDg4LDExMiwxMDU2LDgwLDEwNzUsMTE0LDEwNTgsODQsMjE1LDEyMCwxMDkzLDEyMCwxMDYxLDg4LDEwOTEsMTIxLDEwNTksODksNjUyODMsMzUsNjUyODgsNDAsNjUyODksNDEsNjUyOTIsNDQsNjUzMDcsNTksNjUzMTEsNjNdLCJ6aC1oYW5zIjpbNjUzNzQsMTI2LDY1MzA2LDU4LDY1MjgxLDMzLDgyNDUsOTYsMTgwLDk2LDEyNDk0LDQ3LDEwNDcsNTEsMTA3Myw1NCwxMDcyLDk3LDEwNDAsNjUsMTA2OCw5OCwxMDQyLDY2LDEwODksOTksMTA1Nyw2NywxMDc3LDEwMSwxMDQ1LDY5LDEwNTMsNzIsMzA1LDEwNSwxMDUwLDc1LDkyMSw3MywxMDUyLDc3LDEwODYsMTExLDEwNTQsNzksMTAwOSwxMTIsMTA4OCwxMTIsMTA1Niw4MCwxMDc1LDExNCwxMDU4LDg0LDIxNSwxMjAsMTA5MywxMjAsMTA2MSw4OCwxMDkxLDEyMSwxMDU5LDg5LDY1Mjg4LDQwLDY1Mjg5LDQxXSwiemgtaGFudCI6WzgyMTEsNDUsNjUzNzQsMTI2LDE4MCw5NiwxMjQ5NCw0NywxMDQ3LDUxLDEwNzMsNTQsMTA3Miw5NywxMDQwLDY1LDEwNjgsOTgsMTA0Miw2NiwxMDg5LDk5LDEwNTcsNjcsMTA3NywxMDEsMTA0NSw2OSwxMDUzLDcyLDMwNSwxMDUsMTA1MCw3NSw5MjEsNzMsMTA1Miw3NywxMDg2LDExMSwxMDU0LDc5LDEwMDksMTEyLDEwODgsMTEyLDEwNTYsODAsMTA3NSwxMTQsMTA1OCw4NCwyMTUsMTIwLDEwOTMsMTIwLDEwNjEsODgsMTA5MSwxMjEsMTA1OSw4OSw2NTI4MywzNSw2NTMwNyw1OV19JykpKSxlZS5jYWNoZT1uZXcgY2xhc3N7Y29uc3RydWN0b3IoZSl7dGhpcy5mbj1lLHRoaXMubGFzdENhY2hlPXZvaWQgMCx0aGlzLmxhc3RBcmdLZXk9dm9pZCAwfWdldChlKXtjb25zdCB0PUpTT04uc3RyaW5naWZ5KGUpO3JldHVybiB0aGlzLmxhc3RBcmdLZXkhPT10JiYodGhpcy5sYXN0QXJnS2V5PXQsdGhpcy5sYXN0Q2FjaGU9dGhpcy5mbihlKSksdGhpcy5sYXN0Q2FjaGV9fSgoZT0+e2Z1bmN0aW9uIHQoZSl7Y29uc3QgdD1uZXcgTWFwO2ZvcihsZXQgbj0wO248ZS5sZW5ndGg7bis9Mil0LnNldChlW25dLGVbbisxXSk7cmV0dXJuIHR9ZnVuY3Rpb24gbihlLHQpe2lmKCFlKXJldHVybiB0O2NvbnN0IG49bmV3IE1hcDtmb3IoY29uc3RbcixpXW9mIGUpdC5oYXMocikmJm4uc2V0KHIsaSk7cmV0dXJuIG59Y29uc3Qgcj1KLmFtYmlndW91c0NoYXJhY3RlckRhdGEudmFsdWU7bGV0IGksbz1lLmZpbHRlcigoZT0+IWUuc3RhcnRzV2l0aCgiXyIpJiZlIGluIHIpKTswPT09by5sZW5ndGgmJihvPVsiX2RlZmF1bHQiXSk7Zm9yKGNvbnN0IGUgb2Ygbyl7aT1uKGksdChyW2VdKSl9Y29uc3Qgcz1mdW5jdGlvbihlLHQpe2NvbnN0IG49bmV3IE1hcChlKTtmb3IoY29uc3RbZSxyXW9mIHQpbi5zZXQoZSxyKTtyZXR1cm4gbn0odChyLl9jb21tb24pLGkpO3JldHVybiBuZXcgZWUocyl9KSksZWUuX2xvY2FsZXM9bmV3IEcoKCgpPT5PYmplY3Qua2V5cyhlZS5hbWJpZ3VvdXNDaGFyYWN0ZXJEYXRhLnZhbHVlKS5maWx0ZXIoKGU9PiFlLnN0YXJ0c1dpdGgoIl8iKSkpKSk7Y2xhc3MgdGV7c3RhdGljIGdldFJhd0RhdGEoKXtyZXR1cm4gSlNPTi5wYXJzZSgiWzksMTAsMTEsMTIsMTMsMzIsMTI3LDE2MCwxNzMsODQ3LDE1NjQsNDQ0Nyw0NDQ4LDYwNjgsNjA2OSw2MTU1LDYxNTYsNjE1Nyw2MTU4LDczNTUsNzM1Niw4MTkyLDgxOTMsODE5NCw4MTk1LDgxOTYsODE5Nyw4MTk4LDgxOTksODIwMCw4MjAxLDgyMDIsODIwMyw4MjA0LDgyMDUsODIwNiw4MjA3LDgyMzQsODIzNSw4MjM2LDgyMzcsODIzOCw4MjM5LDgyODcsODI4OCw4Mjg5LDgyOTAsODI5MSw4MjkyLDgyOTMsODI5NCw4Mjk1LDgyOTYsODI5Nyw4Mjk4LDgyOTksODMwMCw4MzAxLDgzMDIsODMwMywxMDI0MCwxMjI4OCwxMjY0NCw2NTAyNCw2NTAyNSw2NTAyNiw2NTAyNyw2NTAyOCw2NTAyOSw2NTAzMCw2NTAzMSw2NTAzMiw2NTAzMyw2NTAzNCw2NTAzNSw2NTAzNiw2NTAzNyw2NTAzOCw2NTAzOSw2NTI3OSw2NTQ0MCw2NTUyMCw2NTUyMSw2NTUyMiw2NTUyMyw2NTUyNCw2NTUyNSw2NTUyNiw2NTUyNyw2NTUyOCw2NTUzMiw3ODg0NCwxMTkxNTUsMTE5MTU2LDExOTE1NywxMTkxNTgsMTE5MTU5LDExOTE2MCwxMTkxNjEsMTE5MTYyLDkxNzUwNCw5MTc1MDUsOTE3NTA2LDkxNzUwNyw5MTc1MDgsOTE3NTA5LDkxNzUxMCw5MTc1MTEsOTE3NTEyLDkxNzUxMyw5MTc1MTQsOTE3NTE1LDkxNzUxNiw5MTc1MTcsOTE3NTE4LDkxNzUxOSw5MTc1MjAsOTE3NTIxLDkxNzUyMiw5MTc1MjMsOTE3NTI0LDkxNzUyNSw5MTc1MjYsOTE3NTI3LDkxNzUyOCw5MTc1MjksOTE3NTMwLDkxNzUzMSw5MTc1MzIsOTE3NTMzLDkxNzUzNCw5MTc1MzUsOTE3NTM2LDkxNzUzNyw5MTc1MzgsOTE3NTM5LDkxNzU0MCw5MTc1NDEsOTE3NTQyLDkxNzU0Myw5MTc1NDQsOTE3NTQ1LDkxNzU0Niw5MTc1NDcsOTE3NTQ4LDkxNzU0OSw5MTc1NTAsOTE3NTUxLDkxNzU1Miw5MTc1NTMsOTE3NTU0LDkxNzU1NSw5MTc1NTYsOTE3NTU3LDkxNzU1OCw5MTc1NTksOTE3NTYwLDkxNzU2MSw5MTc1NjIsOTE3NTYzLDkxNzU2NCw5MTc1NjUsOTE3NTY2LDkxNzU2Nyw5MTc1NjgsOTE3NTY5LDkxNzU3MCw5MTc1NzEsOTE3NTcyLDkxNzU3Myw5MTc1NzQsOTE3NTc1LDkxNzU3Niw5MTc1NzcsOTE3NTc4LDkxNzU3OSw5MTc1ODAsOTE3NTgxLDkxNzU4Miw5MTc1ODMsOTE3NTg0LDkxNzU4NSw5MTc1ODYsOTE3NTg3LDkxNzU4OCw5MTc1ODksOTE3NTkwLDkxNzU5MSw5MTc1OTIsOTE3NTkzLDkxNzU5NCw5MTc1OTUsOTE3NTk2LDkxNzU5Nyw5MTc1OTgsOTE3NTk5LDkxNzYwMCw5MTc2MDEsOTE3NjAyLDkxNzYwMyw5MTc2MDQsOTE3NjA1LDkxNzYwNiw5MTc2MDcsOTE3NjA4LDkxNzYwOSw5MTc2MTAsOTE3NjExLDkxNzYxMiw5MTc2MTMsOTE3NjE0LDkxNzYxNSw5MTc2MTYsOTE3NjE3LDkxNzYxOCw5MTc2MTksOTE3NjIwLDkxNzYyMSw5MTc2MjIsOTE3NjIzLDkxNzYyNCw5MTc2MjUsOTE3NjI2LDkxNzYyNyw5MTc2MjgsOTE3NjI5LDkxNzYzMCw5MTc2MzEsOTE3NzYwLDkxNzc2MSw5MTc3NjIsOTE3NzYzLDkxNzc2NCw5MTc3NjUsOTE3NzY2LDkxNzc2Nyw5MTc3NjgsOTE3NzY5LDkxNzc3MCw5MTc3NzEsOTE3NzcyLDkxNzc3Myw5MTc3NzQsOTE3Nzc1LDkxNzc3Niw5MTc3NzcsOTE3Nzc4LDkxNzc3OSw5MTc3ODAsOTE3NzgxLDkxNzc4Miw5MTc3ODMsOTE3Nzg0LDkxNzc4NSw5MTc3ODYsOTE3Nzg3LDkxNzc4OCw5MTc3ODksOTE3NzkwLDkxNzc5MSw5MTc3OTIsOTE3NzkzLDkxNzc5NCw5MTc3OTUsOTE3Nzk2LDkxNzc5Nyw5MTc3OTgsOTE3Nzk5LDkxNzgwMCw5MTc4MDEsOTE3ODAyLDkxNzgwMyw5MTc4MDQsOTE3ODA1LDkxNzgwNiw5MTc4MDcsOTE3ODA4LDkxNzgwOSw5MTc4MTAsOTE3ODExLDkxNzgxMiw5MTc4MTMsOTE3ODE0LDkxNzgxNSw5MTc4MTYsOTE3ODE3LDkxNzgxOCw5MTc4MTksOTE3ODIwLDkxNzgyMSw5MTc4MjIsOTE3ODIzLDkxNzgyNCw5MTc4MjUsOTE3ODI2LDkxNzgyNyw5MTc4MjgsOTE3ODI5LDkxNzgzMCw5MTc4MzEsOTE3ODMyLDkxNzgzMyw5MTc4MzQsOTE3ODM1LDkxNzgzNiw5MTc4MzcsOTE3ODM4LDkxNzgzOSw5MTc4NDAsOTE3ODQxLDkxNzg0Miw5MTc4NDMsOTE3ODQ0LDkxNzg0NSw5MTc4NDYsOTE3ODQ3LDkxNzg0OCw5MTc4NDksOTE3ODUwLDkxNzg1MSw5MTc4NTIsOTE3ODUzLDkxNzg1NCw5MTc4NTUsOTE3ODU2LDkxNzg1Nyw5MTc4NTgsOTE3ODU5LDkxNzg2MCw5MTc4NjEsOTE3ODYyLDkxNzg2Myw5MTc4NjQsOTE3ODY1LDkxNzg2Niw5MTc4NjcsOTE3ODY4LDkxNzg2OSw5MTc4NzAsOTE3ODcxLDkxNzg3Miw5MTc4NzMsOTE3ODc0LDkxNzg3NSw5MTc4NzYsOTE3ODc3LDkxNzg3OCw5MTc4NzksOTE3ODgwLDkxNzg4MSw5MTc4ODIsOTE3ODgzLDkxNzg4NCw5MTc4ODUsOTE3ODg2LDkxNzg4Nyw5MTc4ODgsOTE3ODg5LDkxNzg5MCw5MTc4OTEsOTE3ODkyLDkxNzg5Myw5MTc4OTQsOTE3ODk1LDkxNzg5Niw5MTc4OTcsOTE3ODk4LDkxNzg5OSw5MTc5MDAsOTE3OTAxLDkxNzkwMiw5MTc5MDMsOTE3OTA0LDkxNzkwNSw5MTc5MDYsOTE3OTA3LDkxNzkwOCw5MTc5MDksOTE3OTEwLDkxNzkxMSw5MTc5MTIsOTE3OTEzLDkxNzkxNCw5MTc5MTUsOTE3OTE2LDkxNzkxNyw5MTc5MTgsOTE3OTE5LDkxNzkyMCw5MTc5MjEsOTE3OTIyLDkxNzkyMyw5MTc5MjQsOTE3OTI1LDkxNzkyNiw5MTc5MjcsOTE3OTI4LDkxNzkyOSw5MTc5MzAsOTE3OTMxLDkxNzkzMiw5MTc5MzMsOTE3OTM0LDkxNzkzNSw5MTc5MzYsOTE3OTM3LDkxNzkzOCw5MTc5MzksOTE3OTQwLDkxNzk0MSw5MTc5NDIsOTE3OTQzLDkxNzk0NCw5MTc5NDUsOTE3OTQ2LDkxNzk0Nyw5MTc5NDgsOTE3OTQ5LDkxNzk1MCw5MTc5NTEsOTE3OTUyLDkxNzk1Myw5MTc5NTQsOTE3OTU1LDkxNzk1Niw5MTc5NTcsOTE3OTU4LDkxNzk1OSw5MTc5NjAsOTE3OTYxLDkxNzk2Miw5MTc5NjMsOTE3OTY0LDkxNzk2NSw5MTc5NjYsOTE3OTY3LDkxNzk2OCw5MTc5NjksOTE3OTcwLDkxNzk3MSw5MTc5NzIsOTE3OTczLDkxNzk3NCw5MTc5NzUsOTE3OTc2LDkxNzk3Nyw5MTc5NzgsOTE3OTc5LDkxNzk4MCw5MTc5ODEsOTE3OTgyLDkxNzk4Myw5MTc5ODQsOTE3OTg1LDkxNzk4Niw5MTc5ODcsOTE3OTg4LDkxNzk4OSw5MTc5OTAsOTE3OTkxLDkxNzk5Miw5MTc5OTMsOTE3OTk0LDkxNzk5NSw5MTc5OTYsOTE3OTk3LDkxNzk5OCw5MTc5OTldIil9c3RhdGljIGdldERhdGEoKXtyZXR1cm4gdGhpcy5fZGF0YXx8KHRoaXMuX2RhdGE9bmV3IFNldCh0ZS5nZXRSYXdEYXRhKCkpKSx0aGlzLl9kYXRhfXN0YXRpYyBpc0ludmlzaWJsZUNoYXJhY3RlcihlKXtyZXR1cm4gdGUuZ2V0RGF0YSgpLmhhcyhlKX1zdGF0aWMgZ2V0IGNvZGVQb2ludHMoKXtyZXR1cm4gdGUuZ2V0RGF0YSgpfX10ZS5fZGF0YT12b2lkIDA7Y2xhc3MgbmV7Y29uc3RydWN0b3IoZSx0LG4scil7dGhpcy52c1dvcmtlcj1lLHRoaXMucmVxPXQsdGhpcy5tZXRob2Q9bix0aGlzLmFyZ3M9cix0aGlzLnR5cGU9MH19Y2xhc3MgcmV7Y29uc3RydWN0b3IoZSx0LG4scil7dGhpcy52c1dvcmtlcj1lLHRoaXMuc2VxPXQsdGhpcy5yZXM9bix0aGlzLmVycj1yLHRoaXMudHlwZT0xfX1jbGFzcyBpZXtjb25zdHJ1Y3RvcihlLHQsbixyKXt0aGlzLnZzV29ya2VyPWUsdGhpcy5yZXE9dCx0aGlzLmV2ZW50TmFtZT1uLHRoaXMuYXJnPXIsdGhpcy50eXBlPTJ9fWNsYXNzIG9le2NvbnN0cnVjdG9yKGUsdCxuKXt0aGlzLnZzV29ya2VyPWUsdGhpcy5yZXE9dCx0aGlzLmV2ZW50PW4sdGhpcy50eXBlPTN9fWNsYXNzIHNle2NvbnN0cnVjdG9yKGUsdCl7dGhpcy52c1dvcmtlcj1lLHRoaXMucmVxPXQsdGhpcy50eXBlPTR9fWNsYXNzIGFle2NvbnN0cnVjdG9yKGUpe3RoaXMuX3dvcmtlcklkPS0xLHRoaXMuX2hhbmRsZXI9ZSx0aGlzLl9sYXN0U2VudFJlcT0wLHRoaXMuX3BlbmRpbmdSZXBsaWVzPU9iamVjdC5jcmVhdGUobnVsbCksdGhpcy5fcGVuZGluZ0VtaXR0ZXJzPW5ldyBNYXAsdGhpcy5fcGVuZGluZ0V2ZW50cz1uZXcgTWFwfXNldFdvcmtlcklkKGUpe3RoaXMuX3dvcmtlcklkPWV9c2VuZE1lc3NhZ2UoZSx0KXtjb25zdCBuPVN0cmluZygrK3RoaXMuX2xhc3RTZW50UmVxKTtyZXR1cm4gbmV3IFByb21pc2UoKChyLGkpPT57dGhpcy5fcGVuZGluZ1JlcGxpZXNbbl09e3Jlc29sdmU6cixyZWplY3Q6aX0sdGhpcy5fc2VuZChuZXcgbmUodGhpcy5fd29ya2VySWQsbixlLHQpKX0pKX1saXN0ZW4oZSx0KXtsZXQgbj1udWxsO2NvbnN0IHI9bmV3IEsoe29uV2lsbEFkZEZpcnN0TGlzdGVuZXI6KCk9PntuPVN0cmluZygrK3RoaXMuX2xhc3RTZW50UmVxKSx0aGlzLl9wZW5kaW5nRW1pdHRlcnMuc2V0KG4sciksdGhpcy5fc2VuZChuZXcgaWUodGhpcy5fd29ya2VySWQsbixlLHQpKX0sb25EaWRSZW1vdmVMYXN0TGlzdGVuZXI6KCk9Pnt0aGlzLl9wZW5kaW5nRW1pdHRlcnMuZGVsZXRlKG4pLHRoaXMuX3NlbmQobmV3IHNlKHRoaXMuX3dvcmtlcklkLG4pKSxuPW51bGx9fSk7cmV0dXJuIHIuZXZlbnR9aGFuZGxlTWVzc2FnZShlKXtlJiZlLnZzV29ya2VyJiYoLTEhPT10aGlzLl93b3JrZXJJZCYmZS52c1dvcmtlciE9PXRoaXMuX3dvcmtlcklkfHx0aGlzLl9oYW5kbGVNZXNzYWdlKGUpKX1faGFuZGxlTWVzc2FnZShlKXtzd2l0Y2goZS50eXBlKXtjYXNlIDE6cmV0dXJuIHRoaXMuX2hhbmRsZVJlcGx5TWVzc2FnZShlKTtjYXNlIDA6cmV0dXJuIHRoaXMuX2hhbmRsZVJlcXVlc3RNZXNzYWdlKGUpO2Nhc2UgMjpyZXR1cm4gdGhpcy5faGFuZGxlU3Vic2NyaWJlRXZlbnRNZXNzYWdlKGUpO2Nhc2UgMzpyZXR1cm4gdGhpcy5faGFuZGxlRXZlbnRNZXNzYWdlKGUpO2Nhc2UgNDpyZXR1cm4gdGhpcy5faGFuZGxlVW5zdWJzY3JpYmVFdmVudE1lc3NhZ2UoZSl9fV9oYW5kbGVSZXBseU1lc3NhZ2UoZSl7aWYoIXRoaXMuX3BlbmRpbmdSZXBsaWVzW2Uuc2VxXSlyZXR1cm4gdm9pZCBjb25zb2xlLndhcm4oIkdvdCByZXBseSB0byB1bmtub3duIHNlcSIpO2NvbnN0IHQ9dGhpcy5fcGVuZGluZ1JlcGxpZXNbZS5zZXFdO2lmKGRlbGV0ZSB0aGlzLl9wZW5kaW5nUmVwbGllc1tlLnNlcV0sZS5lcnIpe2xldCBuPWUuZXJyO3JldHVybiBlLmVyci4kaXNFcnJvciYmKG49bmV3IEVycm9yLG4ubmFtZT1lLmVyci5uYW1lLG4ubWVzc2FnZT1lLmVyci5tZXNzYWdlLG4uc3RhY2s9ZS5lcnIuc3RhY2spLHZvaWQgdC5yZWplY3Qobil9dC5yZXNvbHZlKGUucmVzKX1faGFuZGxlUmVxdWVzdE1lc3NhZ2UoZSl7Y29uc3QgdD1lLnJlcTt0aGlzLl9oYW5kbGVyLmhhbmRsZU1lc3NhZ2UoZS5tZXRob2QsZS5hcmdzKS50aGVuKChlPT57dGhpcy5fc2VuZChuZXcgcmUodGhpcy5fd29ya2VySWQsdCxlLHZvaWQgMCkpfSksKGU9PntlLmRldGFpbCBpbnN0YW5jZW9mIEVycm9yJiYoZS5kZXRhaWw9bihlLmRldGFpbCkpLHRoaXMuX3NlbmQobmV3IHJlKHRoaXMuX3dvcmtlcklkLHQsdm9pZCAwLG4oZSkpKX0pKX1faGFuZGxlU3Vic2NyaWJlRXZlbnRNZXNzYWdlKGUpe2NvbnN0IHQ9ZS5yZXEsbj10aGlzLl9oYW5kbGVyLmhhbmRsZUV2ZW50KGUuZXZlbnROYW1lLGUuYXJnKSgoZT0+e3RoaXMuX3NlbmQobmV3IG9lKHRoaXMuX3dvcmtlcklkLHQsZSkpfSkpO3RoaXMuX3BlbmRpbmdFdmVudHMuc2V0KHQsbil9X2hhbmRsZUV2ZW50TWVzc2FnZShlKXt0aGlzLl9wZW5kaW5nRW1pdHRlcnMuaGFzKGUucmVxKT90aGlzLl9wZW5kaW5nRW1pdHRlcnMuZ2V0KGUucmVxKS5maXJlKGUuZXZlbnQpOmNvbnNvbGUud2FybigiR290IGV2ZW50IGZvciB1bmtub3duIHJlcSIpfV9oYW5kbGVVbnN1YnNjcmliZUV2ZW50TWVzc2FnZShlKXt0aGlzLl9wZW5kaW5nRXZlbnRzLmhhcyhlLnJlcSk/KHRoaXMuX3BlbmRpbmdFdmVudHMuZ2V0KGUucmVxKS5kaXNwb3NlKCksdGhpcy5fcGVuZGluZ0V2ZW50cy5kZWxldGUoZS5yZXEpKTpjb25zb2xlLndhcm4oIkdvdCB1bnN1YnNjcmliZSBmb3IgdW5rbm93biByZXEiKX1fc2VuZChlKXtjb25zdCB0PVtdO2lmKDA9PT1lLnR5cGUpZm9yKGxldCBuPTA7bjxlLmFyZ3MubGVuZ3RoO24rKyllLmFyZ3Nbbl1pbnN0YW5jZW9mIEFycmF5QnVmZmVyJiZ0LnB1c2goZS5hcmdzW25dKTtlbHNlIDE9PT1lLnR5cGUmJmUucmVzIGluc3RhbmNlb2YgQXJyYXlCdWZmZXImJnQucHVzaChlLnJlcyk7dGhpcy5faGFuZGxlci5zZW5kTWVzc2FnZShlLHQpfX1mdW5jdGlvbiBsZShlKXtyZXR1cm4ibyI9PT1lWzBdJiYibiI9PT1lWzFdJiZYKGUuY2hhckNvZGVBdCgyKSl9ZnVuY3Rpb24gY2UoZSl7cmV0dXJuL15vbkR5bmFtaWMvLnRlc3QoZSkmJlgoZS5jaGFyQ29kZUF0KDkpKX1jbGFzcyBoZXtjb25zdHJ1Y3RvcihlLHQpe3RoaXMuX3JlcXVlc3RIYW5kbGVyRmFjdG9yeT10LHRoaXMuX3JlcXVlc3RIYW5kbGVyPW51bGwsdGhpcy5fcHJvdG9jb2w9bmV3IGFlKHtzZW5kTWVzc2FnZToodCxuKT0+e2UodCxuKX0saGFuZGxlTWVzc2FnZTooZSx0KT0+dGhpcy5faGFuZGxlTWVzc2FnZShlLHQpLGhhbmRsZUV2ZW50OihlLHQpPT50aGlzLl9oYW5kbGVFdmVudChlLHQpfSl9b25tZXNzYWdlKGUpe3RoaXMuX3Byb3RvY29sLmhhbmRsZU1lc3NhZ2UoZSl9X2hhbmRsZU1lc3NhZ2UoZSx0KXtpZigiJGluaXRpYWxpemUiPT09ZSlyZXR1cm4gdGhpcy5pbml0aWFsaXplKHRbMF0sdFsxXSx0WzJdLHRbM10pO2lmKCF0aGlzLl9yZXF1ZXN0SGFuZGxlcnx8ImZ1bmN0aW9uIiE9dHlwZW9mIHRoaXMuX3JlcXVlc3RIYW5kbGVyW2VdKXJldHVybiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoIk1pc3NpbmcgcmVxdWVzdEhhbmRsZXIgb3IgbWV0aG9kOiAiK2UpKTt0cnl7cmV0dXJuIFByb21pc2UucmVzb2x2ZSh0aGlzLl9yZXF1ZXN0SGFuZGxlcltlXS5hcHBseSh0aGlzLl9yZXF1ZXN0SGFuZGxlcix0KSl9Y2F0Y2goZSl7cmV0dXJuIFByb21pc2UucmVqZWN0KGUpfX1faGFuZGxlRXZlbnQoZSx0KXtpZighdGhpcy5fcmVxdWVzdEhhbmRsZXIpdGhyb3cgbmV3IEVycm9yKCJNaXNzaW5nIHJlcXVlc3RIYW5kbGVyIik7aWYoY2UoZSkpe2NvbnN0IG49dGhpcy5fcmVxdWVzdEhhbmRsZXJbZV0uY2FsbCh0aGlzLl9yZXF1ZXN0SGFuZGxlcix0KTtpZigiZnVuY3Rpb24iIT10eXBlb2Ygbil0aHJvdyBuZXcgRXJyb3IoYE1pc3NpbmcgZHluYW1pYyBldmVudCAke2V9IG9uIHJlcXVlc3QgaGFuZGxlci5gKTtyZXR1cm4gbn1pZihsZShlKSl7Y29uc3QgdD10aGlzLl9yZXF1ZXN0SGFuZGxlcltlXTtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCl0aHJvdyBuZXcgRXJyb3IoYE1pc3NpbmcgZXZlbnQgJHtlfSBvbiByZXF1ZXN0IGhhbmRsZXIuYCk7cmV0dXJuIHR9dGhyb3cgbmV3IEVycm9yKGBNYWxmb3JtZWQgZXZlbnQgbmFtZSAke2V9YCl9aW5pdGlhbGl6ZShlLHQsbixyKXt0aGlzLl9wcm90b2NvbC5zZXRXb3JrZXJJZChlKTtjb25zdCBpPWZ1bmN0aW9uKGUsdCxuKXtjb25zdCByPWU9PmZ1bmN0aW9uKCl7Y29uc3Qgbj1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMCk7cmV0dXJuIHQoZSxuKX0saT1lPT5mdW5jdGlvbih0KXtyZXR1cm4gbihlLHQpfSxvPXt9O2Zvcihjb25zdCB0IG9mIGUpY2UodCk/b1t0XT1pKHQpOmxlKHQpP29bdF09bih0LHZvaWQgMCk6b1t0XT1yKHQpO3JldHVybiBvfShyLCgoZSx0KT0+dGhpcy5fcHJvdG9jb2wuc2VuZE1lc3NhZ2UoZSx0KSksKChlLHQpPT50aGlzLl9wcm90b2NvbC5saXN0ZW4oZSx0KSkpO3JldHVybiB0aGlzLl9yZXF1ZXN0SGFuZGxlckZhY3Rvcnk/KHRoaXMuX3JlcXVlc3RIYW5kbGVyPXRoaXMuX3JlcXVlc3RIYW5kbGVyRmFjdG9yeShpKSxQcm9taXNlLnJlc29sdmUoSCh0aGlzLl9yZXF1ZXN0SGFuZGxlcikpKToodCYmKHZvaWQgMCE9PXQuYmFzZVVybCYmZGVsZXRlIHQuYmFzZVVybCx2b2lkIDAhPT10LnBhdGhzJiZ2b2lkIDAhPT10LnBhdGhzLnZzJiZkZWxldGUgdC5wYXRocy52cyx2b2lkIDAhPT10eXBlb2YgdC50cnVzdGVkVHlwZXNQb2xpY3kmJmRlbGV0ZSB0LnRydXN0ZWRUeXBlc1BvbGljeSx0LmNhdGNoRXJyb3I9ITAsZ2xvYmFsVGhpcy5yZXF1aXJlLmNvbmZpZyh0KSksbmV3IFByb21pc2UoKChlLHQpPT57KDAsZ2xvYmFsVGhpcy5yZXF1aXJlKShbbl0sKG49Pnt0aGlzLl9yZXF1ZXN0SGFuZGxlcj1uLmNyZWF0ZShpKSx0aGlzLl9yZXF1ZXN0SGFuZGxlcj9lKEgodGhpcy5fcmVxdWVzdEhhbmRsZXIpKTp0KG5ldyBFcnJvcigiTm8gUmVxdWVzdEhhbmRsZXIhIikpfSksdCl9KSkpfX1jbGFzcyBkZXtjb25zdHJ1Y3RvcihlLHQsbixyKXt0aGlzLm9yaWdpbmFsU3RhcnQ9ZSx0aGlzLm9yaWdpbmFsTGVuZ3RoPXQsdGhpcy5tb2RpZmllZFN0YXJ0PW4sdGhpcy5tb2RpZmllZExlbmd0aD1yfWdldE9yaWdpbmFsRW5kKCl7cmV0dXJuIHRoaXMub3JpZ2luYWxTdGFydCt0aGlzLm9yaWdpbmFsTGVuZ3RofWdldE1vZGlmaWVkRW5kKCl7cmV0dXJuIHRoaXMubW9kaWZpZWRTdGFydCt0aGlzLm1vZGlmaWVkTGVuZ3RofX1mdW5jdGlvbiBwZShlLHQpe3JldHVybih0PDw1KS10K2V8MH1mdW5jdGlvbiB1ZShlLHQpe3Q9cGUoMTQ5NDE3LHQpO2ZvcihsZXQgbj0wLHI9ZS5sZW5ndGg7bjxyO24rKyl0PXBlKGUuY2hhckNvZGVBdChuKSx0KTtyZXR1cm4gdH1jbGFzcyBtZXtjb25zdHJ1Y3RvcihlKXt0aGlzLnNvdXJjZT1lfWdldEVsZW1lbnRzKCl7Y29uc3QgZT10aGlzLnNvdXJjZSx0PW5ldyBJbnQzMkFycmF5KGUubGVuZ3RoKTtmb3IobGV0IG49MCxyPWUubGVuZ3RoO248cjtuKyspdFtuXT1lLmNoYXJDb2RlQXQobik7cmV0dXJuIHR9fWZ1bmN0aW9uIGZlKGUsdCxuKXtyZXR1cm4gbmV3IHllKG5ldyBtZShlKSxuZXcgbWUodCkpLkNvbXB1dGVEaWZmKG4pLmNoYW5nZXN9Y2xhc3MgZ2V7c3RhdGljIEFzc2VydChlLHQpe2lmKCFlKXRocm93IG5ldyBFcnJvcih0KX19Y2xhc3MgYmV7c3RhdGljIENvcHkoZSx0LG4scixpKXtmb3IobGV0IG89MDtvPGk7bysrKW5bcitvXT1lW3Qrb119c3RhdGljIENvcHkyKGUsdCxuLHIsaSl7Zm9yKGxldCBvPTA7bzxpO28rKyluW3Irb109ZVt0K29dfX1jbGFzcyB2ZXtjb25zdHJ1Y3Rvcigpe3RoaXMubV9jaGFuZ2VzPVtdLHRoaXMubV9vcmlnaW5hbFN0YXJ0PTEwNzM3NDE4MjQsdGhpcy5tX21vZGlmaWVkU3RhcnQ9MTA3Mzc0MTgyNCx0aGlzLm1fb3JpZ2luYWxDb3VudD0wLHRoaXMubV9tb2RpZmllZENvdW50PTB9TWFya05leHRDaGFuZ2UoKXsodGhpcy5tX29yaWdpbmFsQ291bnQ+MHx8dGhpcy5tX21vZGlmaWVkQ291bnQ+MCkmJnRoaXMubV9jaGFuZ2VzLnB1c2gobmV3IGRlKHRoaXMubV9vcmlnaW5hbFN0YXJ0LHRoaXMubV9vcmlnaW5hbENvdW50LHRoaXMubV9tb2RpZmllZFN0YXJ0LHRoaXMubV9tb2RpZmllZENvdW50KSksdGhpcy5tX29yaWdpbmFsQ291bnQ9MCx0aGlzLm1fbW9kaWZpZWRDb3VudD0wLHRoaXMubV9vcmlnaW5hbFN0YXJ0PTEwNzM3NDE4MjQsdGhpcy5tX21vZGlmaWVkU3RhcnQ9MTA3Mzc0MTgyNH1BZGRPcmlnaW5hbEVsZW1lbnQoZSx0KXt0aGlzLm1fb3JpZ2luYWxTdGFydD1NYXRoLm1pbih0aGlzLm1fb3JpZ2luYWxTdGFydCxlKSx0aGlzLm1fbW9kaWZpZWRTdGFydD1NYXRoLm1pbih0aGlzLm1fbW9kaWZpZWRTdGFydCx0KSx0aGlzLm1fb3JpZ2luYWxDb3VudCsrfUFkZE1vZGlmaWVkRWxlbWVudChlLHQpe3RoaXMubV9vcmlnaW5hbFN0YXJ0PU1hdGgubWluKHRoaXMubV9vcmlnaW5hbFN0YXJ0LGUpLHRoaXMubV9tb2RpZmllZFN0YXJ0PU1hdGgubWluKHRoaXMubV9tb2RpZmllZFN0YXJ0LHQpLHRoaXMubV9tb2RpZmllZENvdW50Kyt9Z2V0Q2hhbmdlcygpe3JldHVybih0aGlzLm1fb3JpZ2luYWxDb3VudD4wfHx0aGlzLm1fbW9kaWZpZWRDb3VudD4wKSYmdGhpcy5NYXJrTmV4dENoYW5nZSgpLHRoaXMubV9jaGFuZ2VzfWdldFJldmVyc2VDaGFuZ2VzKCl7cmV0dXJuKHRoaXMubV9vcmlnaW5hbENvdW50PjB8fHRoaXMubV9tb2RpZmllZENvdW50PjApJiZ0aGlzLk1hcmtOZXh0Q2hhbmdlKCksdGhpcy5tX2NoYW5nZXMucmV2ZXJzZSgpLHRoaXMubV9jaGFuZ2VzfX1jbGFzcyB5ZXtjb25zdHJ1Y3RvcihlLHQsbj1udWxsKXt0aGlzLkNvbnRpbnVlUHJvY2Vzc2luZ1ByZWRpY2F0ZT1uLHRoaXMuX29yaWdpbmFsU2VxdWVuY2U9ZSx0aGlzLl9tb2RpZmllZFNlcXVlbmNlPXQ7Y29uc3RbcixpLG9dPXllLl9nZXRFbGVtZW50cyhlKSxbcyxhLGxdPXllLl9nZXRFbGVtZW50cyh0KTt0aGlzLl9oYXNTdHJpbmdzPW8mJmwsdGhpcy5fb3JpZ2luYWxTdHJpbmdFbGVtZW50cz1yLHRoaXMuX29yaWdpbmFsRWxlbWVudHNPckhhc2g9aSx0aGlzLl9tb2RpZmllZFN0cmluZ0VsZW1lbnRzPXMsdGhpcy5fbW9kaWZpZWRFbGVtZW50c09ySGFzaD1hLHRoaXMubV9mb3J3YXJkSGlzdG9yeT1bXSx0aGlzLm1fcmV2ZXJzZUhpc3Rvcnk9W119c3RhdGljIF9pc1N0cmluZ0FycmF5KGUpe3JldHVybiBlLmxlbmd0aD4wJiYic3RyaW5nIj09dHlwZW9mIGVbMF19c3RhdGljIF9nZXRFbGVtZW50cyhlKXtjb25zdCB0PWUuZ2V0RWxlbWVudHMoKTtpZih5ZS5faXNTdHJpbmdBcnJheSh0KSl7Y29uc3QgZT1uZXcgSW50MzJBcnJheSh0Lmxlbmd0aCk7Zm9yKGxldCBuPTAscj10Lmxlbmd0aDtuPHI7bisrKWVbbl09dWUodFtuXSwwKTtyZXR1cm5bdCxlLCEwXX1yZXR1cm4gdCBpbnN0YW5jZW9mIEludDMyQXJyYXk/W1tdLHQsITFdOltbXSxuZXcgSW50MzJBcnJheSh0KSwhMV19RWxlbWVudHNBcmVFcXVhbChlLHQpe3JldHVybiB0aGlzLl9vcmlnaW5hbEVsZW1lbnRzT3JIYXNoW2VdPT09dGhpcy5fbW9kaWZpZWRFbGVtZW50c09ySGFzaFt0XSYmKCF0aGlzLl9oYXNTdHJpbmdzfHx0aGlzLl9vcmlnaW5hbFN0cmluZ0VsZW1lbnRzW2VdPT09dGhpcy5fbW9kaWZpZWRTdHJpbmdFbGVtZW50c1t0XSl9RWxlbWVudHNBcmVTdHJpY3RFcXVhbChlLHQpe2lmKCF0aGlzLkVsZW1lbnRzQXJlRXF1YWwoZSx0KSlyZXR1cm4hMTtyZXR1cm4geWUuX2dldFN0cmljdEVsZW1lbnQodGhpcy5fb3JpZ2luYWxTZXF1ZW5jZSxlKT09PXllLl9nZXRTdHJpY3RFbGVtZW50KHRoaXMuX21vZGlmaWVkU2VxdWVuY2UsdCl9c3RhdGljIF9nZXRTdHJpY3RFbGVtZW50KGUsdCl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIGUuZ2V0U3RyaWN0RWxlbWVudD9lLmdldFN0cmljdEVsZW1lbnQodCk6bnVsbH1PcmlnaW5hbEVsZW1lbnRzQXJlRXF1YWwoZSx0KXtyZXR1cm4gdGhpcy5fb3JpZ2luYWxFbGVtZW50c09ySGFzaFtlXT09PXRoaXMuX29yaWdpbmFsRWxlbWVudHNPckhhc2hbdF0mJighdGhpcy5faGFzU3RyaW5nc3x8dGhpcy5fb3JpZ2luYWxTdHJpbmdFbGVtZW50c1tlXT09PXRoaXMuX29yaWdpbmFsU3RyaW5nRWxlbWVudHNbdF0pfU1vZGlmaWVkRWxlbWVudHNBcmVFcXVhbChlLHQpe3JldHVybiB0aGlzLl9tb2RpZmllZEVsZW1lbnRzT3JIYXNoW2VdPT09dGhpcy5fbW9kaWZpZWRFbGVtZW50c09ySGFzaFt0XSYmKCF0aGlzLl9oYXNTdHJpbmdzfHx0aGlzLl9tb2RpZmllZFN0cmluZ0VsZW1lbnRzW2VdPT09dGhpcy5fbW9kaWZpZWRTdHJpbmdFbGVtZW50c1t0XSl9Q29tcHV0ZURpZmYoZSl7cmV0dXJuIHRoaXMuX0NvbXB1dGVEaWZmKDAsdGhpcy5fb3JpZ2luYWxFbGVtZW50c09ySGFzaC5sZW5ndGgtMSwwLHRoaXMuX21vZGlmaWVkRWxlbWVudHNPckhhc2gubGVuZ3RoLTEsZSl9X0NvbXB1dGVEaWZmKGUsdCxuLHIsaSl7Y29uc3Qgbz1bITFdO2xldCBzPXRoaXMuQ29tcHV0ZURpZmZSZWN1cnNpdmUoZSx0LG4scixvKTtyZXR1cm4gaSYmKHM9dGhpcy5QcmV0dGlmeUNoYW5nZXMocykpLHtxdWl0RWFybHk6b1swXSxjaGFuZ2VzOnN9fUNvbXB1dGVEaWZmUmVjdXJzaXZlKGUsdCxuLHIsaSl7Zm9yKGlbMF09ITE7ZTw9dCYmbjw9ciYmdGhpcy5FbGVtZW50c0FyZUVxdWFsKGUsbik7KWUrKyxuKys7Zm9yKDt0Pj1lJiZyPj1uJiZ0aGlzLkVsZW1lbnRzQXJlRXF1YWwodCxyKTspdC0tLHItLTtpZihlPnR8fG4+cil7bGV0IGk7cmV0dXJuIG48PXI/KGdlLkFzc2VydChlPT09dCsxLCJvcmlnaW5hbFN0YXJ0IHNob3VsZCBvbmx5IGJlIG9uZSBtb3JlIHRoYW4gb3JpZ2luYWxFbmQiKSxpPVtuZXcgZGUoZSwwLG4sci1uKzEpXSk6ZTw9dD8oZ2UuQXNzZXJ0KG49PT1yKzEsIm1vZGlmaWVkU3RhcnQgc2hvdWxkIG9ubHkgYmUgb25lIG1vcmUgdGhhbiBtb2RpZmllZEVuZCIpLGk9W25ldyBkZShlLHQtZSsxLG4sMCldKTooZ2UuQXNzZXJ0KGU9PT10KzEsIm9yaWdpbmFsU3RhcnQgc2hvdWxkIG9ubHkgYmUgb25lIG1vcmUgdGhhbiBvcmlnaW5hbEVuZCIpLGdlLkFzc2VydChuPT09cisxLCJtb2RpZmllZFN0YXJ0IHNob3VsZCBvbmx5IGJlIG9uZSBtb3JlIHRoYW4gbW9kaWZpZWRFbmQiKSxpPVtdKSxpfWNvbnN0IG89WzBdLHM9WzBdLGE9dGhpcy5Db21wdXRlUmVjdXJzaW9uUG9pbnQoZSx0LG4scixvLHMsaSksbD1vWzBdLGM9c1swXTtpZihudWxsIT09YSlyZXR1cm4gYTtpZighaVswXSl7Y29uc3Qgbz10aGlzLkNvbXB1dGVEaWZmUmVjdXJzaXZlKGUsbCxuLGMsaSk7bGV0IHM9W107cmV0dXJuIHM9aVswXT9bbmV3IGRlKGwrMSx0LShsKzEpKzEsYysxLHItKGMrMSkrMSldOnRoaXMuQ29tcHV0ZURpZmZSZWN1cnNpdmUobCsxLHQsYysxLHIsaSksdGhpcy5Db25jYXRlbmF0ZUNoYW5nZXMobyxzKX1yZXR1cm5bbmV3IGRlKGUsdC1lKzEsbixyLW4rMSldfVdBTEtUUkFDRShlLHQsbixyLGksbyxzLGEsbCxjLGgsZCxwLHUsbSxmLGcsYil7bGV0IHY9bnVsbCx5PW51bGwsdz1uZXcgdmUseD10LFM9bixDPXBbMF0tZlswXS1yLGs9LTEwNzM3NDE4MjQsXz10aGlzLm1fZm9yd2FyZEhpc3RvcnkubGVuZ3RoLTE7ZG97Y29uc3QgdD1DK2U7dD09PXh8fHQ8UyYmbFt0LTFdPGxbdCsxXT8odT0oaD1sW3QrMV0pLUMtcixoPGsmJncuTWFya05leHRDaGFuZ2UoKSxrPWgsdy5BZGRNb2RpZmllZEVsZW1lbnQoaCsxLHUpLEM9dCsxLWUpOih1PShoPWxbdC0xXSsxKS1DLXIsaDxrJiZ3Lk1hcmtOZXh0Q2hhbmdlKCksaz1oLTEsdy5BZGRPcmlnaW5hbEVsZW1lbnQoaCx1KzEpLEM9dC0xLWUpLF8+PTAmJihlPShsPXRoaXMubV9mb3J3YXJkSGlzdG9yeVtfXSlbMF0seD0xLFM9bC5sZW5ndGgtMSl9d2hpbGUoLS1fPj0tMSk7aWYodj13LmdldFJldmVyc2VDaGFuZ2VzKCksYlswXSl7bGV0IGU9cFswXSsxLHQ9ZlswXSsxO2lmKG51bGwhPT12JiZ2Lmxlbmd0aD4wKXtjb25zdCBuPXZbdi5sZW5ndGgtMV07ZT1NYXRoLm1heChlLG4uZ2V0T3JpZ2luYWxFbmQoKSksdD1NYXRoLm1heCh0LG4uZ2V0TW9kaWZpZWRFbmQoKSl9eT1bbmV3IGRlKGUsZC1lKzEsdCxtLXQrMSldfWVsc2V7dz1uZXcgdmUseD1vLFM9cyxDPXBbMF0tZlswXS1hLGs9MTA3Mzc0MTgyNCxfPWc/dGhpcy5tX3JldmVyc2VIaXN0b3J5Lmxlbmd0aC0xOnRoaXMubV9yZXZlcnNlSGlzdG9yeS5sZW5ndGgtMjtkb3tjb25zdCBlPUMraTtlPT09eHx8ZTxTJiZjW2UtMV0+PWNbZSsxXT8odT0oaD1jW2UrMV0tMSktQy1hLGg+ayYmdy5NYXJrTmV4dENoYW5nZSgpLGs9aCsxLHcuQWRkT3JpZ2luYWxFbGVtZW50KGgrMSx1KzEpLEM9ZSsxLWkpOih1PShoPWNbZS0xXSktQy1hLGg+ayYmdy5NYXJrTmV4dENoYW5nZSgpLGs9aCx3LkFkZE1vZGlmaWVkRWxlbWVudChoKzEsdSsxKSxDPWUtMS1pKSxfPj0wJiYoaT0oYz10aGlzLm1fcmV2ZXJzZUhpc3RvcnlbX10pWzBdLHg9MSxTPWMubGVuZ3RoLTEpfXdoaWxlKC0tXz49LTEpO3k9dy5nZXRDaGFuZ2VzKCl9cmV0dXJuIHRoaXMuQ29uY2F0ZW5hdGVDaGFuZ2VzKHYseSl9Q29tcHV0ZVJlY3Vyc2lvblBvaW50KGUsdCxuLHIsaSxvLHMpe2xldCBhPTAsbD0wLGM9MCxoPTAsZD0wLHA9MDtlLS0sbi0tLGlbMF09MCxvWzBdPTAsdGhpcy5tX2ZvcndhcmRIaXN0b3J5PVtdLHRoaXMubV9yZXZlcnNlSGlzdG9yeT1bXTtjb25zdCB1PXQtZSsoci1uKSxtPXUrMSxmPW5ldyBJbnQzMkFycmF5KG0pLGc9bmV3IEludDMyQXJyYXkobSksYj1yLW4sdj10LWUseT1lLW4sdz10LXIseD0odi1iKSUyPT0wO2ZbYl09ZSxnW3ZdPXQsc1swXT0hMTtmb3IobGV0IFM9MTtTPD11LzIrMTtTKyspe2xldCB1PTAsQz0wO2M9dGhpcy5DbGlwRGlhZ29uYWxCb3VuZChiLVMsUyxiLG0pLGg9dGhpcy5DbGlwRGlhZ29uYWxCb3VuZChiK1MsUyxiLG0pO2ZvcihsZXQgZT1jO2U8PWg7ZSs9Mil7YT1lPT09Y3x8ZTxoJiZmW2UtMV08ZltlKzFdP2ZbZSsxXTpmW2UtMV0rMSxsPWEtKGUtYikteTtjb25zdCBuPWE7Zm9yKDthPHQmJmw8ciYmdGhpcy5FbGVtZW50c0FyZUVxdWFsKGErMSxsKzEpOylhKyssbCsrO2lmKGZbZV09YSxhK2w+dStDJiYodT1hLEM9bCksIXgmJk1hdGguYWJzKGUtdik8PVMtMSYmYT49Z1tlXSlyZXR1cm4gaVswXT1hLG9bMF09bCxuPD1nW2VdJiZTPD0xNDQ4P3RoaXMuV0FMS1RSQUNFKGIsYyxoLHksdixkLHAsdyxmLGcsYSx0LGksbCxyLG8seCxzKTpudWxsfWNvbnN0IGs9KHUtZSsoQy1uKS1TKS8yO2lmKG51bGwhPT10aGlzLkNvbnRpbnVlUHJvY2Vzc2luZ1ByZWRpY2F0ZSYmIXRoaXMuQ29udGludWVQcm9jZXNzaW5nUHJlZGljYXRlKHUsaykpcmV0dXJuIHNbMF09ITAsaVswXT11LG9bMF09QyxrPjAmJlM8PTE0NDg/dGhpcy5XQUxLVFJBQ0UoYixjLGgseSx2LGQscCx3LGYsZyxhLHQsaSxsLHIsbyx4LHMpOihlKyssbisrLFtuZXcgZGUoZSx0LWUrMSxuLHItbisxKV0pO2Q9dGhpcy5DbGlwRGlhZ29uYWxCb3VuZCh2LVMsUyx2LG0pLHA9dGhpcy5DbGlwRGlhZ29uYWxCb3VuZCh2K1MsUyx2LG0pO2ZvcihsZXQgdT1kO3U8PXA7dSs9Mil7YT11PT09ZHx8dTxwJiZnW3UtMV0+PWdbdSsxXT9nW3UrMV0tMTpnW3UtMV0sbD1hLSh1LXYpLXc7Y29uc3QgbT1hO2Zvcig7YT5lJiZsPm4mJnRoaXMuRWxlbWVudHNBcmVFcXVhbChhLGwpOylhLS0sbC0tO2lmKGdbdV09YSx4JiZNYXRoLmFicyh1LWIpPD1TJiZhPD1mW3VdKXJldHVybiBpWzBdPWEsb1swXT1sLG0+PWZbdV0mJlM8PTE0NDg/dGhpcy5XQUxLVFJBQ0UoYixjLGgseSx2LGQscCx3LGYsZyxhLHQsaSxsLHIsbyx4LHMpOm51bGx9aWYoUzw9MTQ0Nyl7bGV0IGU9bmV3IEludDMyQXJyYXkoaC1jKzIpO2VbMF09Yi1jKzEsYmUuQ29weTIoZixjLGUsMSxoLWMrMSksdGhpcy5tX2ZvcndhcmRIaXN0b3J5LnB1c2goZSksZT1uZXcgSW50MzJBcnJheShwLWQrMiksZVswXT12LWQrMSxiZS5Db3B5MihnLGQsZSwxLHAtZCsxKSx0aGlzLm1fcmV2ZXJzZUhpc3RvcnkucHVzaChlKX19cmV0dXJuIHRoaXMuV0FMS1RSQUNFKGIsYyxoLHksdixkLHAsdyxmLGcsYSx0LGksbCxyLG8seCxzKX1QcmV0dGlmeUNoYW5nZXMoZSl7Zm9yKGxldCB0PTA7dDxlLmxlbmd0aDt0Kyspe2NvbnN0IG49ZVt0XSxyPXQ8ZS5sZW5ndGgtMT9lW3QrMV0ub3JpZ2luYWxTdGFydDp0aGlzLl9vcmlnaW5hbEVsZW1lbnRzT3JIYXNoLmxlbmd0aCxpPXQ8ZS5sZW5ndGgtMT9lW3QrMV0ubW9kaWZpZWRTdGFydDp0aGlzLl9tb2RpZmllZEVsZW1lbnRzT3JIYXNoLmxlbmd0aCxvPW4ub3JpZ2luYWxMZW5ndGg+MCxzPW4ubW9kaWZpZWRMZW5ndGg+MDtmb3IoO24ub3JpZ2luYWxTdGFydCtuLm9yaWdpbmFsTGVuZ3RoPHImJm4ubW9kaWZpZWRTdGFydCtuLm1vZGlmaWVkTGVuZ3RoPGkmJighb3x8dGhpcy5PcmlnaW5hbEVsZW1lbnRzQXJlRXF1YWwobi5vcmlnaW5hbFN0YXJ0LG4ub3JpZ2luYWxTdGFydCtuLm9yaWdpbmFsTGVuZ3RoKSkmJighc3x8dGhpcy5Nb2RpZmllZEVsZW1lbnRzQXJlRXF1YWwobi5tb2RpZmllZFN0YXJ0LG4ubW9kaWZpZWRTdGFydCtuLm1vZGlmaWVkTGVuZ3RoKSk7KXtjb25zdCBlPXRoaXMuRWxlbWVudHNBcmVTdHJpY3RFcXVhbChuLm9yaWdpbmFsU3RhcnQsbi5tb2RpZmllZFN0YXJ0KTtpZih0aGlzLkVsZW1lbnRzQXJlU3RyaWN0RXF1YWwobi5vcmlnaW5hbFN0YXJ0K24ub3JpZ2luYWxMZW5ndGgsbi5tb2RpZmllZFN0YXJ0K24ubW9kaWZpZWRMZW5ndGgpJiYhZSlicmVhaztuLm9yaWdpbmFsU3RhcnQrKyxuLm1vZGlmaWVkU3RhcnQrK31jb25zdCBhPVtudWxsXTt0PGUubGVuZ3RoLTEmJnRoaXMuQ2hhbmdlc092ZXJsYXAoZVt0XSxlW3QrMV0sYSkmJihlW3RdPWFbMF0sZS5zcGxpY2UodCsxLDEpLHQtLSl9Zm9yKGxldCB0PWUubGVuZ3RoLTE7dD49MDt0LS0pe2NvbnN0IG49ZVt0XTtsZXQgcj0wLGk9MDtpZih0PjApe2NvbnN0IG49ZVt0LTFdO3I9bi5vcmlnaW5hbFN0YXJ0K24ub3JpZ2luYWxMZW5ndGgsaT1uLm1vZGlmaWVkU3RhcnQrbi5tb2RpZmllZExlbmd0aH1jb25zdCBvPW4ub3JpZ2luYWxMZW5ndGg+MCxzPW4ubW9kaWZpZWRMZW5ndGg+MDtsZXQgYT0wLGw9dGhpcy5fYm91bmRhcnlTY29yZShuLm9yaWdpbmFsU3RhcnQsbi5vcmlnaW5hbExlbmd0aCxuLm1vZGlmaWVkU3RhcnQsbi5tb2RpZmllZExlbmd0aCk7Zm9yKGxldCBlPTE7O2UrKyl7Y29uc3QgdD1uLm9yaWdpbmFsU3RhcnQtZSxjPW4ubW9kaWZpZWRTdGFydC1lO2lmKHQ8cnx8YzxpKWJyZWFrO2lmKG8mJiF0aGlzLk9yaWdpbmFsRWxlbWVudHNBcmVFcXVhbCh0LHQrbi5vcmlnaW5hbExlbmd0aCkpYnJlYWs7aWYocyYmIXRoaXMuTW9kaWZpZWRFbGVtZW50c0FyZUVxdWFsKGMsYytuLm1vZGlmaWVkTGVuZ3RoKSlicmVhaztjb25zdCBoPSh0PT09ciYmYz09PWk/NTowKSt0aGlzLl9ib3VuZGFyeVNjb3JlKHQsbi5vcmlnaW5hbExlbmd0aCxjLG4ubW9kaWZpZWRMZW5ndGgpO2g+bCYmKGw9aCxhPWUpfW4ub3JpZ2luYWxTdGFydC09YSxuLm1vZGlmaWVkU3RhcnQtPWE7Y29uc3QgYz1bbnVsbF07dD4wJiZ0aGlzLkNoYW5nZXNPdmVybGFwKGVbdC0xXSxlW3RdLGMpJiYoZVt0LTFdPWNbMF0sZS5zcGxpY2UodCwxKSx0KyspfWlmKHRoaXMuX2hhc1N0cmluZ3MpZm9yKGxldCB0PTEsbj1lLmxlbmd0aDt0PG47dCsrKXtjb25zdCBuPWVbdC0xXSxyPWVbdF0saT1yLm9yaWdpbmFsU3RhcnQtbi5vcmlnaW5hbFN0YXJ0LW4ub3JpZ2luYWxMZW5ndGgsbz1uLm9yaWdpbmFsU3RhcnQscz1yLm9yaWdpbmFsU3RhcnQrci5vcmlnaW5hbExlbmd0aCxhPXMtbyxsPW4ubW9kaWZpZWRTdGFydCxjPXIubW9kaWZpZWRTdGFydCtyLm1vZGlmaWVkTGVuZ3RoLGg9Yy1sO2lmKGk8NSYmYTwyMCYmaDwyMCl7Y29uc3QgZT10aGlzLl9maW5kQmV0dGVyQ29udGlndW91c1NlcXVlbmNlKG8sYSxsLGgsaSk7aWYoZSl7Y29uc3RbdCxvXT1lO3Q9PT1uLm9yaWdpbmFsU3RhcnQrbi5vcmlnaW5hbExlbmd0aCYmbz09PW4ubW9kaWZpZWRTdGFydCtuLm1vZGlmaWVkTGVuZ3RofHwobi5vcmlnaW5hbExlbmd0aD10LW4ub3JpZ2luYWxTdGFydCxuLm1vZGlmaWVkTGVuZ3RoPW8tbi5tb2RpZmllZFN0YXJ0LHIub3JpZ2luYWxTdGFydD10K2ksci5tb2RpZmllZFN0YXJ0PW8raSxyLm9yaWdpbmFsTGVuZ3RoPXMtci5vcmlnaW5hbFN0YXJ0LHIubW9kaWZpZWRMZW5ndGg9Yy1yLm1vZGlmaWVkU3RhcnQpfX19cmV0dXJuIGV9X2ZpbmRCZXR0ZXJDb250aWd1b3VzU2VxdWVuY2UoZSx0LG4scixpKXtpZih0PGl8fHI8aSlyZXR1cm4gbnVsbDtjb25zdCBvPWUrdC1pKzEscz1uK3ItaSsxO2xldCBhPTAsbD0wLGM9MDtmb3IobGV0IHQ9ZTt0PG87dCsrKWZvcihsZXQgZT1uO2U8cztlKyspe2NvbnN0IG49dGhpcy5fY29udGlndW91c1NlcXVlbmNlU2NvcmUodCxlLGkpO24+MCYmbj5hJiYoYT1uLGw9dCxjPWUpfXJldHVybiBhPjA/W2wsY106bnVsbH1fY29udGlndW91c1NlcXVlbmNlU2NvcmUoZSx0LG4pe2xldCByPTA7Zm9yKGxldCBpPTA7aTxuO2krKyl7aWYoIXRoaXMuRWxlbWVudHNBcmVFcXVhbChlK2ksdCtpKSlyZXR1cm4gMDtyKz10aGlzLl9vcmlnaW5hbFN0cmluZ0VsZW1lbnRzW2UraV0ubGVuZ3RofXJldHVybiByfV9PcmlnaW5hbElzQm91bmRhcnkoZSl7cmV0dXJuIGU8PTB8fGU+PXRoaXMuX29yaWdpbmFsRWxlbWVudHNPckhhc2gubGVuZ3RoLTF8fHRoaXMuX2hhc1N0cmluZ3MmJi9eXHMqJC8udGVzdCh0aGlzLl9vcmlnaW5hbFN0cmluZ0VsZW1lbnRzW2VdKX1fT3JpZ2luYWxSZWdpb25Jc0JvdW5kYXJ5KGUsdCl7aWYodGhpcy5fT3JpZ2luYWxJc0JvdW5kYXJ5KGUpfHx0aGlzLl9PcmlnaW5hbElzQm91bmRhcnkoZS0xKSlyZXR1cm4hMDtpZih0PjApe2NvbnN0IG49ZSt0O2lmKHRoaXMuX09yaWdpbmFsSXNCb3VuZGFyeShuLTEpfHx0aGlzLl9PcmlnaW5hbElzQm91bmRhcnkobikpcmV0dXJuITB9cmV0dXJuITF9X01vZGlmaWVkSXNCb3VuZGFyeShlKXtyZXR1cm4gZTw9MHx8ZT49dGhpcy5fbW9kaWZpZWRFbGVtZW50c09ySGFzaC5sZW5ndGgtMXx8dGhpcy5faGFzU3RyaW5ncyYmL15ccyokLy50ZXN0KHRoaXMuX21vZGlmaWVkU3RyaW5nRWxlbWVudHNbZV0pfV9Nb2RpZmllZFJlZ2lvbklzQm91bmRhcnkoZSx0KXtpZih0aGlzLl9Nb2RpZmllZElzQm91bmRhcnkoZSl8fHRoaXMuX01vZGlmaWVkSXNCb3VuZGFyeShlLTEpKXJldHVybiEwO2lmKHQ+MCl7Y29uc3Qgbj1lK3Q7aWYodGhpcy5fTW9kaWZpZWRJc0JvdW5kYXJ5KG4tMSl8fHRoaXMuX01vZGlmaWVkSXNCb3VuZGFyeShuKSlyZXR1cm4hMH1yZXR1cm4hMX1fYm91bmRhcnlTY29yZShlLHQsbixyKXtyZXR1cm4odGhpcy5fT3JpZ2luYWxSZWdpb25Jc0JvdW5kYXJ5KGUsdCk/MTowKSsodGhpcy5fTW9kaWZpZWRSZWdpb25Jc0JvdW5kYXJ5KG4scik/MTowKX1Db25jYXRlbmF0ZUNoYW5nZXMoZSx0KXtjb25zdCBuPVtdO2lmKDA9PT1lLmxlbmd0aHx8MD09PXQubGVuZ3RoKXJldHVybiB0Lmxlbmd0aD4wP3Q6ZTtpZih0aGlzLkNoYW5nZXNPdmVybGFwKGVbZS5sZW5ndGgtMV0sdFswXSxuKSl7Y29uc3Qgcj1uZXcgQXJyYXkoZS5sZW5ndGgrdC5sZW5ndGgtMSk7cmV0dXJuIGJlLkNvcHkoZSwwLHIsMCxlLmxlbmd0aC0xKSxyW2UubGVuZ3RoLTFdPW5bMF0sYmUuQ29weSh0LDEscixlLmxlbmd0aCx0Lmxlbmd0aC0xKSxyfXtjb25zdCBuPW5ldyBBcnJheShlLmxlbmd0aCt0Lmxlbmd0aCk7cmV0dXJuIGJlLkNvcHkoZSwwLG4sMCxlLmxlbmd0aCksYmUuQ29weSh0LDAsbixlLmxlbmd0aCx0Lmxlbmd0aCksbn19Q2hhbmdlc092ZXJsYXAoZSx0LG4pe2lmKGdlLkFzc2VydChlLm9yaWdpbmFsU3RhcnQ8PXQub3JpZ2luYWxTdGFydCwiTGVmdCBjaGFuZ2UgaXMgbm90IGxlc3MgdGhhbiBvciBlcXVhbCB0byByaWdodCBjaGFuZ2UiKSxnZS5Bc3NlcnQoZS5tb2RpZmllZFN0YXJ0PD10Lm1vZGlmaWVkU3RhcnQsIkxlZnQgY2hhbmdlIGlzIG5vdCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gcmlnaHQgY2hhbmdlIiksZS5vcmlnaW5hbFN0YXJ0K2Uub3JpZ2luYWxMZW5ndGg+PXQub3JpZ2luYWxTdGFydHx8ZS5tb2RpZmllZFN0YXJ0K2UubW9kaWZpZWRMZW5ndGg+PXQubW9kaWZpZWRTdGFydCl7Y29uc3Qgcj1lLm9yaWdpbmFsU3RhcnQ7bGV0IGk9ZS5vcmlnaW5hbExlbmd0aDtjb25zdCBvPWUubW9kaWZpZWRTdGFydDtsZXQgcz1lLm1vZGlmaWVkTGVuZ3RoO3JldHVybiBlLm9yaWdpbmFsU3RhcnQrZS5vcmlnaW5hbExlbmd0aD49dC5vcmlnaW5hbFN0YXJ0JiYoaT10Lm9yaWdpbmFsU3RhcnQrdC5vcmlnaW5hbExlbmd0aC1lLm9yaWdpbmFsU3RhcnQpLGUubW9kaWZpZWRTdGFydCtlLm1vZGlmaWVkTGVuZ3RoPj10Lm1vZGlmaWVkU3RhcnQmJihzPXQubW9kaWZpZWRTdGFydCt0Lm1vZGlmaWVkTGVuZ3RoLWUubW9kaWZpZWRTdGFydCksblswXT1uZXcgZGUocixpLG8scyksITB9cmV0dXJuIG5bMF09bnVsbCwhMX1DbGlwRGlhZ29uYWxCb3VuZChlLHQsbixyKXtpZihlPj0wJiZlPHIpcmV0dXJuIGU7Y29uc3QgaT10JTI9PTA7aWYoZTwwKXtyZXR1cm4gaT09PShuJTI9PTApPzA6MX1yZXR1cm4gaT09PSgoci1uLTEpJTI9PTApP3ItMTpyLTJ9fWxldCB3ZTtpZih2b2lkIDAhPT1GLnZzY29kZSYmdm9pZCAwIT09Ri52c2NvZGUucHJvY2Vzcyl7Y29uc3QgZT1GLnZzY29kZS5wcm9jZXNzO3dlPXtnZXQgcGxhdGZvcm0oKXtyZXR1cm4gZS5wbGF0Zm9ybX0sZ2V0IGFyY2goKXtyZXR1cm4gZS5hcmNofSxnZXQgZW52KCl7cmV0dXJuIGUuZW52fSxjd2Q6KCk9PmUuY3dkKCl9fWVsc2Ugd2U9InVuZGVmaW5lZCIhPXR5cGVvZiBwcm9jZXNzP3tnZXQgcGxhdGZvcm0oKXtyZXR1cm4gcHJvY2Vzcy5wbGF0Zm9ybX0sZ2V0IGFyY2goKXtyZXR1cm4gcHJvY2Vzcy5hcmNofSxnZXQgZW52KCl7cmV0dXJuIHByb2Nlc3MuZW52fSxjd2Q6KCk9PnByb2Nlc3MuZW52LlZTQ09ERV9DV0R8fHByb2Nlc3MuY3dkKCl9OntnZXQgcGxhdGZvcm0oKXtyZXR1cm4gVD8id2luMzIiOkE/ImRhcndpbiI6ImxpbnV4In0sZ2V0IGFyY2goKXt9LGdldCBlbnYoKXtyZXR1cm57fX0sY3dkOigpPT4iLyJ9O2NvbnN0IHhlPXdlLmN3ZCxTZT13ZS5lbnYsQ2U9d2UucGxhdGZvcm0sa2U9NDYsX2U9NDcsRWU9OTIsUmU9NTg7Y2xhc3MgRmUgZXh0ZW5kcyBFcnJvcntjb25zdHJ1Y3RvcihlLHQsbil7bGV0IHI7InN0cmluZyI9PXR5cGVvZiB0JiYwPT09dC5pbmRleE9mKCJub3QgIik/KHI9Im11c3Qgbm90IGJlIix0PXQucmVwbGFjZSgvXm5vdCAvLCIiKSk6cj0ibXVzdCBiZSI7Y29uc3QgaT0tMSE9PWUuaW5kZXhPZigiLiIpPyJwcm9wZXJ0eSI6ImFyZ3VtZW50IjtsZXQgbz1gVGhlICIke2V9IiAke2l9ICR7cn0gb2YgdHlwZSAke3R9YDtvKz0iLiBSZWNlaXZlZCB0eXBlICIrdHlwZW9mIG4sc3VwZXIobyksdGhpcy5jb2RlPSJFUlJfSU5WQUxJRF9BUkdfVFlQRSJ9fWZ1bmN0aW9uIE5lKGUsdCl7aWYoInN0cmluZyIhPXR5cGVvZiBlKXRocm93IG5ldyBGZSh0LCJzdHJpbmciLGUpfWNvbnN0IERlPSJ3aW4zMiI9PT1DZTtmdW5jdGlvbiBUZShlKXtyZXR1cm4gZT09PV9lfHxlPT09RWV9ZnVuY3Rpb24gQWUoZSl7cmV0dXJuIGU9PT1fZX1mdW5jdGlvbiBNZShlKXtyZXR1cm4gZT49NjUmJmU8PTkwfHxlPj05NyYmZTw9MTIyfWZ1bmN0aW9uIHplKGUsdCxuLHIpe2xldCBpPSIiLG89MCxzPS0xLGE9MCxsPTA7Zm9yKGxldCBjPTA7Yzw9ZS5sZW5ndGg7KytjKXtpZihjPGUubGVuZ3RoKWw9ZS5jaGFyQ29kZUF0KGMpO2Vsc2V7aWYocihsKSlicmVhaztsPV9lfWlmKHIobCkpe2lmKHM9PT1jLTF8fDE9PT1hKTtlbHNlIGlmKDI9PT1hKXtpZihpLmxlbmd0aDwyfHwyIT09b3x8aS5jaGFyQ29kZUF0KGkubGVuZ3RoLTEpIT09a2V8fGkuY2hhckNvZGVBdChpLmxlbmd0aC0yKSE9PWtlKXtpZihpLmxlbmd0aD4yKXtjb25zdCBlPWkubGFzdEluZGV4T2Yobik7LTE9PT1lPyhpPSIiLG89MCk6KGk9aS5zbGljZSgwLGUpLG89aS5sZW5ndGgtMS1pLmxhc3RJbmRleE9mKG4pKSxzPWMsYT0wO2NvbnRpbnVlfWlmKDAhPT1pLmxlbmd0aCl7aT0iIixvPTAscz1jLGE9MDtjb250aW51ZX19dCYmKGkrPWkubGVuZ3RoPjA/YCR7bn0uLmA6Ii4uIixvPTIpfWVsc2UgaS5sZW5ndGg+MD9pKz1gJHtufSR7ZS5zbGljZShzKzEsYyl9YDppPWUuc2xpY2UocysxLGMpLG89Yy1zLTE7cz1jLGE9MH1lbHNlIGw9PT1rZSYmLTEhPT1hPysrYTphPS0xfXJldHVybiBpfWZ1bmN0aW9uIEllKGUsdCl7IWZ1bmN0aW9uKGUsdCl7aWYobnVsbD09PWV8fCJvYmplY3QiIT10eXBlb2YgZSl0aHJvdyBuZXcgRmUodCwiT2JqZWN0IixlKX0odCwicGF0aE9iamVjdCIpO2NvbnN0IG49dC5kaXJ8fHQucm9vdCxyPXQuYmFzZXx8YCR7dC5uYW1lfHwiIn0ke3QuZXh0fHwiIn1gO3JldHVybiBuP249PT10LnJvb3Q/YCR7bn0ke3J9YDpgJHtufSR7ZX0ke3J9YDpyfWNvbnN0IFBlPXtyZXNvbHZlKC4uLmUpe2xldCB0PSIiLG49IiIscj0hMTtmb3IobGV0IGk9ZS5sZW5ndGgtMTtpPj0tMTtpLS0pe2xldCBvO2lmKGk+PTApe2lmKG89ZVtpXSxOZShvLCJwYXRoIiksMD09PW8ubGVuZ3RoKWNvbnRpbnVlfWVsc2UgMD09PXQubGVuZ3RoP289eGUoKToobz1TZVtgPSR7dH1gXXx8eGUoKSwodm9pZCAwPT09b3x8by5zbGljZSgwLDIpLnRvTG93ZXJDYXNlKCkhPT10LnRvTG93ZXJDYXNlKCkmJm8uY2hhckNvZGVBdCgyKT09PUVlKSYmKG89YCR7dH1cXGApKTtjb25zdCBzPW8ubGVuZ3RoO2xldCBhPTAsbD0iIixjPSExO2NvbnN0IGg9by5jaGFyQ29kZUF0KDApO2lmKDE9PT1zKVRlKGgpJiYoYT0xLGM9ITApO2Vsc2UgaWYoVGUoaCkpaWYoYz0hMCxUZShvLmNoYXJDb2RlQXQoMSkpKXtsZXQgZT0yLHQ9ZTtmb3IoO2U8cyYmIVRlKG8uY2hhckNvZGVBdChlKSk7KWUrKztpZihlPHMmJmUhPT10KXtjb25zdCBuPW8uc2xpY2UodCxlKTtmb3IodD1lO2U8cyYmVGUoby5jaGFyQ29kZUF0KGUpKTspZSsrO2lmKGU8cyYmZSE9PXQpe2Zvcih0PWU7ZTxzJiYhVGUoby5jaGFyQ29kZUF0KGUpKTspZSsrO2UhPT1zJiZlPT09dHx8KGw9YFxcXFwke259XFwke28uc2xpY2UodCxlKX1gLGE9ZSl9fX1lbHNlIGE9MTtlbHNlIE1lKGgpJiZvLmNoYXJDb2RlQXQoMSk9PT1SZSYmKGw9by5zbGljZSgwLDIpLGE9MixzPjImJlRlKG8uY2hhckNvZGVBdCgyKSkmJihjPSEwLGE9MykpO2lmKGwubGVuZ3RoPjApaWYodC5sZW5ndGg+MCl7aWYobC50b0xvd2VyQ2FzZSgpIT09dC50b0xvd2VyQ2FzZSgpKWNvbnRpbnVlfWVsc2UgdD1sO2lmKHIpe2lmKHQubGVuZ3RoPjApYnJlYWt9ZWxzZSBpZihuPWAke28uc2xpY2UoYSl9XFwke259YCxyPWMsYyYmdC5sZW5ndGg+MClicmVha31yZXR1cm4gbj16ZShuLCFyLCJcXCIsVGUpLHI/YCR7dH1cXCR7bn1gOmAke3R9JHtufWB8fCIuIn0sbm9ybWFsaXplKGUpe05lKGUsInBhdGgiKTtjb25zdCB0PWUubGVuZ3RoO2lmKDA9PT10KXJldHVybiIuIjtsZXQgbixyPTAsaT0hMTtjb25zdCBvPWUuY2hhckNvZGVBdCgwKTtpZigxPT09dClyZXR1cm4gQWUobyk/IlxcIjplO2lmKFRlKG8pKWlmKGk9ITAsVGUoZS5jaGFyQ29kZUF0KDEpKSl7bGV0IGk9MixvPWk7Zm9yKDtpPHQmJiFUZShlLmNoYXJDb2RlQXQoaSkpOylpKys7aWYoaTx0JiZpIT09byl7Y29uc3Qgcz1lLnNsaWNlKG8saSk7Zm9yKG89aTtpPHQmJlRlKGUuY2hhckNvZGVBdChpKSk7KWkrKztpZihpPHQmJmkhPT1vKXtmb3Iobz1pO2k8dCYmIVRlKGUuY2hhckNvZGVBdChpKSk7KWkrKztpZihpPT09dClyZXR1cm5gXFxcXCR7c31cXCR7ZS5zbGljZShvKX1cXGA7aSE9PW8mJihuPWBcXFxcJHtzfVxcJHtlLnNsaWNlKG8saSl9YCxyPWkpfX19ZWxzZSByPTE7ZWxzZSBNZShvKSYmZS5jaGFyQ29kZUF0KDEpPT09UmUmJihuPWUuc2xpY2UoMCwyKSxyPTIsdD4yJiZUZShlLmNoYXJDb2RlQXQoMikpJiYoaT0hMCxyPTMpKTtsZXQgcz1yPHQ/emUoZS5zbGljZShyKSwhaSwiXFwiLFRlKToiIjtyZXR1cm4gMCE9PXMubGVuZ3RofHxpfHwocz0iLiIpLHMubGVuZ3RoPjAmJlRlKGUuY2hhckNvZGVBdCh0LTEpKSYmKHMrPSJcXCIpLHZvaWQgMD09PW4/aT9gXFwke3N9YDpzOmk/YCR7bn1cXCR7c31gOmAke259JHtzfWB9LGlzQWJzb2x1dGUoZSl7TmUoZSwicGF0aCIpO2NvbnN0IHQ9ZS5sZW5ndGg7aWYoMD09PXQpcmV0dXJuITE7Y29uc3Qgbj1lLmNoYXJDb2RlQXQoMCk7cmV0dXJuIFRlKG4pfHx0PjImJk1lKG4pJiZlLmNoYXJDb2RlQXQoMSk9PT1SZSYmVGUoZS5jaGFyQ29kZUF0KDIpKX0sam9pbiguLi5lKXtpZigwPT09ZS5sZW5ndGgpcmV0dXJuIi4iO2xldCB0LG47Zm9yKGxldCByPTA7cjxlLmxlbmd0aDsrK3Ipe2NvbnN0IGk9ZVtyXTtOZShpLCJwYXRoIiksaS5sZW5ndGg+MCYmKHZvaWQgMD09PXQ/dD1uPWk6dCs9YFxcJHtpfWApfWlmKHZvaWQgMD09PXQpcmV0dXJuIi4iO2xldCByPSEwLGk9MDtpZigic3RyaW5nIj09dHlwZW9mIG4mJlRlKG4uY2hhckNvZGVBdCgwKSkpeysraTtjb25zdCBlPW4ubGVuZ3RoO2U+MSYmVGUobi5jaGFyQ29kZUF0KDEpKSYmKCsraSxlPjImJihUZShuLmNoYXJDb2RlQXQoMikpPysraTpyPSExKSl9aWYocil7Zm9yKDtpPHQubGVuZ3RoJiZUZSh0LmNoYXJDb2RlQXQoaSkpOylpKys7aT49MiYmKHQ9YFxcJHt0LnNsaWNlKGkpfWApfXJldHVybiBQZS5ub3JtYWxpemUodCl9LHJlbGF0aXZlKGUsdCl7aWYoTmUoZSwiZnJvbSIpLE5lKHQsInRvIiksZT09PXQpcmV0dXJuIiI7Y29uc3Qgbj1QZS5yZXNvbHZlKGUpLHI9UGUucmVzb2x2ZSh0KTtpZihuPT09cilyZXR1cm4iIjtpZigoZT1uLnRvTG93ZXJDYXNlKCkpPT09KHQ9ci50b0xvd2VyQ2FzZSgpKSlyZXR1cm4iIjtsZXQgaT0wO2Zvcig7aTxlLmxlbmd0aCYmZS5jaGFyQ29kZUF0KGkpPT09RWU7KWkrKztsZXQgbz1lLmxlbmd0aDtmb3IoO28tMT5pJiZlLmNoYXJDb2RlQXQoby0xKT09PUVlOylvLS07Y29uc3Qgcz1vLWk7bGV0IGE9MDtmb3IoO2E8dC5sZW5ndGgmJnQuY2hhckNvZGVBdChhKT09PUVlOylhKys7bGV0IGw9dC5sZW5ndGg7Zm9yKDtsLTE+YSYmdC5jaGFyQ29kZUF0KGwtMSk9PT1FZTspbC0tO2NvbnN0IGM9bC1hLGg9czxjP3M6YztsZXQgZD0tMSxwPTA7Zm9yKDtwPGg7cCsrKXtjb25zdCBuPWUuY2hhckNvZGVBdChpK3ApO2lmKG4hPT10LmNoYXJDb2RlQXQoYStwKSlicmVhaztuPT09RWUmJihkPXApfWlmKHAhPT1oKXtpZigtMT09PWQpcmV0dXJuIHJ9ZWxzZXtpZihjPmgpe2lmKHQuY2hhckNvZGVBdChhK3ApPT09RWUpcmV0dXJuIHIuc2xpY2UoYStwKzEpO2lmKDI9PT1wKXJldHVybiByLnNsaWNlKGErcCl9cz5oJiYoZS5jaGFyQ29kZUF0KGkrcCk9PT1FZT9kPXA6Mj09PXAmJihkPTMpKSwtMT09PWQmJihkPTApfWxldCB1PSIiO2ZvcihwPWkrZCsxO3A8PW87KytwKXAhPT1vJiZlLmNoYXJDb2RlQXQocCkhPT1FZXx8KHUrPTA9PT11Lmxlbmd0aD8iLi4iOiJcXC4uIik7cmV0dXJuIGErPWQsdS5sZW5ndGg+MD9gJHt1fSR7ci5zbGljZShhLGwpfWA6KHIuY2hhckNvZGVBdChhKT09PUVlJiYrK2Esci5zbGljZShhLGwpKX0sdG9OYW1lc3BhY2VkUGF0aChlKXtpZigic3RyaW5nIiE9dHlwZW9mIGV8fDA9PT1lLmxlbmd0aClyZXR1cm4gZTtjb25zdCB0PVBlLnJlc29sdmUoZSk7aWYodC5sZW5ndGg8PTIpcmV0dXJuIGU7aWYodC5jaGFyQ29kZUF0KDApPT09RWUpe2lmKHQuY2hhckNvZGVBdCgxKT09PUVlKXtjb25zdCBlPXQuY2hhckNvZGVBdCgyKTtpZig2MyE9PWUmJmUhPT1rZSlyZXR1cm5gXFxcXD9cXFVOQ1xcJHt0LnNsaWNlKDIpfWB9fWVsc2UgaWYoTWUodC5jaGFyQ29kZUF0KDApKSYmdC5jaGFyQ29kZUF0KDEpPT09UmUmJnQuY2hhckNvZGVBdCgyKT09PUVlKXJldHVybmBcXFxcP1xcJHt0fWA7cmV0dXJuIGV9LGRpcm5hbWUoZSl7TmUoZSwicGF0aCIpO2NvbnN0IHQ9ZS5sZW5ndGg7aWYoMD09PXQpcmV0dXJuIi4iO2xldCBuPS0xLHI9MDtjb25zdCBpPWUuY2hhckNvZGVBdCgwKTtpZigxPT09dClyZXR1cm4gVGUoaSk/ZToiLiI7aWYoVGUoaSkpe2lmKG49cj0xLFRlKGUuY2hhckNvZGVBdCgxKSkpe2xldCBpPTIsbz1pO2Zvcig7aTx0JiYhVGUoZS5jaGFyQ29kZUF0KGkpKTspaSsrO2lmKGk8dCYmaSE9PW8pe2ZvcihvPWk7aTx0JiZUZShlLmNoYXJDb2RlQXQoaSkpOylpKys7aWYoaTx0JiZpIT09byl7Zm9yKG89aTtpPHQmJiFUZShlLmNoYXJDb2RlQXQoaSkpOylpKys7aWYoaT09PXQpcmV0dXJuIGU7aSE9PW8mJihuPXI9aSsxKX19fX1lbHNlIE1lKGkpJiZlLmNoYXJDb2RlQXQoMSk9PT1SZSYmKG49dD4yJiZUZShlLmNoYXJDb2RlQXQoMikpPzM6MixyPW4pO2xldCBvPS0xLHM9ITA7Zm9yKGxldCBuPXQtMTtuPj1yOy0tbilpZihUZShlLmNoYXJDb2RlQXQobikpKXtpZighcyl7bz1uO2JyZWFrfX1lbHNlIHM9ITE7aWYoLTE9PT1vKXtpZigtMT09PW4pcmV0dXJuIi4iO289bn1yZXR1cm4gZS5zbGljZSgwLG8pfSxiYXNlbmFtZShlLHQpe3ZvaWQgMCE9PXQmJk5lKHQsImV4dCIpLE5lKGUsInBhdGgiKTtsZXQgbixyPTAsaT0tMSxvPSEwO2lmKGUubGVuZ3RoPj0yJiZNZShlLmNoYXJDb2RlQXQoMCkpJiZlLmNoYXJDb2RlQXQoMSk9PT1SZSYmKHI9Miksdm9pZCAwIT09dCYmdC5sZW5ndGg+MCYmdC5sZW5ndGg8PWUubGVuZ3RoKXtpZih0PT09ZSlyZXR1cm4iIjtsZXQgcz10Lmxlbmd0aC0xLGE9LTE7Zm9yKG49ZS5sZW5ndGgtMTtuPj1yOy0tbil7Y29uc3QgbD1lLmNoYXJDb2RlQXQobik7aWYoVGUobCkpe2lmKCFvKXtyPW4rMTticmVha319ZWxzZS0xPT09YSYmKG89ITEsYT1uKzEpLHM+PTAmJihsPT09dC5jaGFyQ29kZUF0KHMpPy0xPT0tLXMmJihpPW4pOihzPS0xLGk9YSkpfXJldHVybiByPT09aT9pPWE6LTE9PT1pJiYoaT1lLmxlbmd0aCksZS5zbGljZShyLGkpfWZvcihuPWUubGVuZ3RoLTE7bj49cjstLW4paWYoVGUoZS5jaGFyQ29kZUF0KG4pKSl7aWYoIW8pe3I9bisxO2JyZWFrfX1lbHNlLTE9PT1pJiYobz0hMSxpPW4rMSk7cmV0dXJuLTE9PT1pPyIiOmUuc2xpY2UocixpKX0sZXh0bmFtZShlKXtOZShlLCJwYXRoIik7bGV0IHQ9MCxuPS0xLHI9MCxpPS0xLG89ITAscz0wO2UubGVuZ3RoPj0yJiZlLmNoYXJDb2RlQXQoMSk9PT1SZSYmTWUoZS5jaGFyQ29kZUF0KDApKSYmKHQ9cj0yKTtmb3IobGV0IGE9ZS5sZW5ndGgtMTthPj10Oy0tYSl7Y29uc3QgdD1lLmNoYXJDb2RlQXQoYSk7aWYoVGUodCkpe2lmKCFvKXtyPWErMTticmVha319ZWxzZS0xPT09aSYmKG89ITEsaT1hKzEpLHQ9PT1rZT8tMT09PW4/bj1hOjEhPT1zJiYocz0xKTotMSE9PW4mJihzPS0xKX1yZXR1cm4tMT09PW58fC0xPT09aXx8MD09PXN8fDE9PT1zJiZuPT09aS0xJiZuPT09cisxPyIiOmUuc2xpY2UobixpKX0sZm9ybWF0OkllLmJpbmQobnVsbCwiXFwiKSxwYXJzZShlKXtOZShlLCJwYXRoIik7Y29uc3QgdD17cm9vdDoiIixkaXI6IiIsYmFzZToiIixleHQ6IiIsbmFtZToiIn07aWYoMD09PWUubGVuZ3RoKXJldHVybiB0O2NvbnN0IG49ZS5sZW5ndGg7bGV0IHI9MCxpPWUuY2hhckNvZGVBdCgwKTtpZigxPT09bilyZXR1cm4gVGUoaSk/KHQucm9vdD10LmRpcj1lLHQpOih0LmJhc2U9dC5uYW1lPWUsdCk7aWYoVGUoaSkpe2lmKHI9MSxUZShlLmNoYXJDb2RlQXQoMSkpKXtsZXQgdD0yLGk9dDtmb3IoO3Q8biYmIVRlKGUuY2hhckNvZGVBdCh0KSk7KXQrKztpZih0PG4mJnQhPT1pKXtmb3IoaT10O3Q8biYmVGUoZS5jaGFyQ29kZUF0KHQpKTspdCsrO2lmKHQ8biYmdCE9PWkpe2ZvcihpPXQ7dDxuJiYhVGUoZS5jaGFyQ29kZUF0KHQpKTspdCsrO3Q9PT1uP3I9dDp0IT09aSYmKHI9dCsxKX19fX1lbHNlIGlmKE1lKGkpJiZlLmNoYXJDb2RlQXQoMSk9PT1SZSl7aWYobjw9MilyZXR1cm4gdC5yb290PXQuZGlyPWUsdDtpZihyPTIsVGUoZS5jaGFyQ29kZUF0KDIpKSl7aWYoMz09PW4pcmV0dXJuIHQucm9vdD10LmRpcj1lLHQ7cj0zfX1yPjAmJih0LnJvb3Q9ZS5zbGljZSgwLHIpKTtsZXQgbz0tMSxzPXIsYT0tMSxsPSEwLGM9ZS5sZW5ndGgtMSxoPTA7Zm9yKDtjPj1yOy0tYylpZihpPWUuY2hhckNvZGVBdChjKSxUZShpKSl7aWYoIWwpe3M9YysxO2JyZWFrfX1lbHNlLTE9PT1hJiYobD0hMSxhPWMrMSksaT09PWtlPy0xPT09bz9vPWM6MSE9PWgmJihoPTEpOi0xIT09byYmKGg9LTEpO3JldHVybi0xIT09YSYmKC0xPT09b3x8MD09PWh8fDE9PT1oJiZvPT09YS0xJiZvPT09cysxP3QuYmFzZT10Lm5hbWU9ZS5zbGljZShzLGEpOih0Lm5hbWU9ZS5zbGljZShzLG8pLHQuYmFzZT1lLnNsaWNlKHMsYSksdC5leHQ9ZS5zbGljZShvLGEpKSksdC5kaXI9cz4wJiZzIT09cj9lLnNsaWNlKDAscy0xKTp0LnJvb3QsdH0sc2VwOiJcXCIsZGVsaW1pdGVyOiI7Iix3aW4zMjpudWxsLHBvc2l4Om51bGx9LExlPSgoKT0+e2lmKERlKXtjb25zdCBlPS9cXC9nO3JldHVybigpPT57Y29uc3QgdD14ZSgpLnJlcGxhY2UoZSwiLyIpO3JldHVybiB0LnNsaWNlKHQuaW5kZXhPZigiLyIpKX19cmV0dXJuKCk9PnhlKCl9KSgpLE9lPXtyZXNvbHZlKC4uLmUpe2xldCB0PSIiLG49ITE7Zm9yKGxldCByPWUubGVuZ3RoLTE7cj49LTEmJiFuO3ItLSl7Y29uc3QgaT1yPj0wP2Vbcl06TGUoKTtOZShpLCJwYXRoIiksMCE9PWkubGVuZ3RoJiYodD1gJHtpfS8ke3R9YCxuPWkuY2hhckNvZGVBdCgwKT09PV9lKX1yZXR1cm4gdD16ZSh0LCFuLCIvIixBZSksbj9gLyR7dH1gOnQubGVuZ3RoPjA/dDoiLiJ9LG5vcm1hbGl6ZShlKXtpZihOZShlLCJwYXRoIiksMD09PWUubGVuZ3RoKXJldHVybiIuIjtjb25zdCB0PWUuY2hhckNvZGVBdCgwKT09PV9lLG49ZS5jaGFyQ29kZUF0KGUubGVuZ3RoLTEpPT09X2U7cmV0dXJuIDA9PT0oZT16ZShlLCF0LCIvIixBZSkpLmxlbmd0aD90PyIvIjpuPyIuLyI6Ii4iOihuJiYoZSs9Ii8iKSx0P2AvJHtlfWA6ZSl9LGlzQWJzb2x1dGU6ZT0+KE5lKGUsInBhdGgiKSxlLmxlbmd0aD4wJiZlLmNoYXJDb2RlQXQoMCk9PT1fZSksam9pbiguLi5lKXtpZigwPT09ZS5sZW5ndGgpcmV0dXJuIi4iO2xldCB0O2ZvcihsZXQgbj0wO248ZS5sZW5ndGg7KytuKXtjb25zdCByPWVbbl07TmUociwicGF0aCIpLHIubGVuZ3RoPjAmJih2b2lkIDA9PT10P3Q9cjp0Kz1gLyR7cn1gKX1yZXR1cm4gdm9pZCAwPT09dD8iLiI6T2Uubm9ybWFsaXplKHQpfSxyZWxhdGl2ZShlLHQpe2lmKE5lKGUsImZyb20iKSxOZSh0LCJ0byIpLGU9PT10KXJldHVybiIiO2lmKChlPU9lLnJlc29sdmUoZSkpPT09KHQ9T2UucmVzb2x2ZSh0KSkpcmV0dXJuIiI7Y29uc3Qgbj1lLmxlbmd0aCxyPW4tMSxpPXQubGVuZ3RoLTEsbz1yPGk/cjppO2xldCBzPS0xLGE9MDtmb3IoO2E8bzthKyspe2NvbnN0IG49ZS5jaGFyQ29kZUF0KDErYSk7aWYobiE9PXQuY2hhckNvZGVBdCgxK2EpKWJyZWFrO249PT1fZSYmKHM9YSl9aWYoYT09PW8paWYoaT5vKXtpZih0LmNoYXJDb2RlQXQoMSthKT09PV9lKXJldHVybiB0LnNsaWNlKDErYSsxKTtpZigwPT09YSlyZXR1cm4gdC5zbGljZSgxK2EpfWVsc2Ugcj5vJiYoZS5jaGFyQ29kZUF0KDErYSk9PT1fZT9zPWE6MD09PWEmJihzPTApKTtsZXQgbD0iIjtmb3IoYT0xK3MrMTthPD1uOysrYSlhIT09biYmZS5jaGFyQ29kZUF0KGEpIT09X2V8fChsKz0wPT09bC5sZW5ndGg/Ii4uIjoiLy4uIik7cmV0dXJuYCR7bH0ke3Quc2xpY2UoMStzKX1gfSx0b05hbWVzcGFjZWRQYXRoOmU9PmUsZGlybmFtZShlKXtpZihOZShlLCJwYXRoIiksMD09PWUubGVuZ3RoKXJldHVybiIuIjtjb25zdCB0PWUuY2hhckNvZGVBdCgwKT09PV9lO2xldCBuPS0xLHI9ITA7Zm9yKGxldCB0PWUubGVuZ3RoLTE7dD49MTstLXQpaWYoZS5jaGFyQ29kZUF0KHQpPT09X2Upe2lmKCFyKXtuPXQ7YnJlYWt9fWVsc2Ugcj0hMTtyZXR1cm4tMT09PW4/dD8iLyI6Ii4iOnQmJjE9PT1uPyIvLyI6ZS5zbGljZSgwLG4pfSxiYXNlbmFtZShlLHQpe3ZvaWQgMCE9PXQmJk5lKHQsImV4dCIpLE5lKGUsInBhdGgiKTtsZXQgbixyPTAsaT0tMSxvPSEwO2lmKHZvaWQgMCE9PXQmJnQubGVuZ3RoPjAmJnQubGVuZ3RoPD1lLmxlbmd0aCl7aWYodD09PWUpcmV0dXJuIiI7bGV0IHM9dC5sZW5ndGgtMSxhPS0xO2ZvcihuPWUubGVuZ3RoLTE7bj49MDstLW4pe2NvbnN0IGw9ZS5jaGFyQ29kZUF0KG4pO2lmKGw9PT1fZSl7aWYoIW8pe3I9bisxO2JyZWFrfX1lbHNlLTE9PT1hJiYobz0hMSxhPW4rMSkscz49MCYmKGw9PT10LmNoYXJDb2RlQXQocyk/LTE9PS0tcyYmKGk9bik6KHM9LTEsaT1hKSl9cmV0dXJuIHI9PT1pP2k9YTotMT09PWkmJihpPWUubGVuZ3RoKSxlLnNsaWNlKHIsaSl9Zm9yKG49ZS5sZW5ndGgtMTtuPj0wOy0tbilpZihlLmNoYXJDb2RlQXQobik9PT1fZSl7aWYoIW8pe3I9bisxO2JyZWFrfX1lbHNlLTE9PT1pJiYobz0hMSxpPW4rMSk7cmV0dXJuLTE9PT1pPyIiOmUuc2xpY2UocixpKX0sZXh0bmFtZShlKXtOZShlLCJwYXRoIik7bGV0IHQ9LTEsbj0wLHI9LTEsaT0hMCxvPTA7Zm9yKGxldCBzPWUubGVuZ3RoLTE7cz49MDstLXMpe2NvbnN0IGE9ZS5jaGFyQ29kZUF0KHMpO2lmKGEhPT1fZSktMT09PXImJihpPSExLHI9cysxKSxhPT09a2U/LTE9PT10P3Q9czoxIT09byYmKG89MSk6LTEhPT10JiYobz0tMSk7ZWxzZSBpZighaSl7bj1zKzE7YnJlYWt9fXJldHVybi0xPT09dHx8LTE9PT1yfHwwPT09b3x8MT09PW8mJnQ9PT1yLTEmJnQ9PT1uKzE/IiI6ZS5zbGljZSh0LHIpfSxmb3JtYXQ6SWUuYmluZChudWxsLCIvIikscGFyc2UoZSl7TmUoZSwicGF0aCIpO2NvbnN0IHQ9e3Jvb3Q6IiIsZGlyOiIiLGJhc2U6IiIsZXh0OiIiLG5hbWU6IiJ9O2lmKDA9PT1lLmxlbmd0aClyZXR1cm4gdDtjb25zdCBuPWUuY2hhckNvZGVBdCgwKT09PV9lO2xldCByO24/KHQucm9vdD0iLyIscj0xKTpyPTA7bGV0IGk9LTEsbz0wLHM9LTEsYT0hMCxsPWUubGVuZ3RoLTEsYz0wO2Zvcig7bD49cjstLWwpe2NvbnN0IHQ9ZS5jaGFyQ29kZUF0KGwpO2lmKHQhPT1fZSktMT09PXMmJihhPSExLHM9bCsxKSx0PT09a2U/LTE9PT1pP2k9bDoxIT09YyYmKGM9MSk6LTEhPT1pJiYoYz0tMSk7ZWxzZSBpZighYSl7bz1sKzE7YnJlYWt9fWlmKC0xIT09cyl7Y29uc3Qgcj0wPT09byYmbj8xOm87LTE9PT1pfHwwPT09Y3x8MT09PWMmJmk9PT1zLTEmJmk9PT1vKzE/dC5iYXNlPXQubmFtZT1lLnNsaWNlKHIscyk6KHQubmFtZT1lLnNsaWNlKHIsaSksdC5iYXNlPWUuc2xpY2UocixzKSx0LmV4dD1lLnNsaWNlKGkscykpfXJldHVybiBvPjA/dC5kaXI9ZS5zbGljZSgwLG8tMSk6biYmKHQuZGlyPSIvIiksdH0sc2VwOiIvIixkZWxpbWl0ZXI6IjoiLHdpbjMyOm51bGwscG9zaXg6bnVsbH07T2Uud2luMzI9UGUud2luMzI9UGUsT2UucG9zaXg9UGUucG9zaXg9T2UsRGU/UGUubm9ybWFsaXplOk9lLm5vcm1hbGl6ZSxEZT9QZS5yZXNvbHZlOk9lLnJlc29sdmUsRGU/UGUucmVsYXRpdmU6T2UucmVsYXRpdmUsRGU/UGUuZGlybmFtZTpPZS5kaXJuYW1lLERlP1BlLmJhc2VuYW1lOk9lLmJhc2VuYW1lLERlP1BlLmV4dG5hbWU6T2UuZXh0bmFtZSxEZT9QZS5zZXA6T2Uuc2VwO2NvbnN0IFdlPS9eXHdbXHdcZCsuLV0qJC8sVmU9L15cLy8sVWU9L15cL1wvLztjb25zdCBCZT0iIixLZT0iLyIsamU9L14oKFteOi8/I10rPyk6KT8oXC9cLyhbXi8/I10qKSk/KFtePyNdKikoXD8oW14jXSopKT8oIyguKikpPy87bGV0IHFlPWNsYXNzIGV7c3RhdGljIGlzVXJpKHQpe3JldHVybiB0IGluc3RhbmNlb2YgZXx8ISF0JiYoInN0cmluZyI9PXR5cGVvZiB0LmF1dGhvcml0eSYmInN0cmluZyI9PXR5cGVvZiB0LmZyYWdtZW50JiYic3RyaW5nIj09dHlwZW9mIHQucGF0aCYmInN0cmluZyI9PXR5cGVvZiB0LnF1ZXJ5JiYic3RyaW5nIj09dHlwZW9mIHQuc2NoZW1lJiYic3RyaW5nIj09dHlwZW9mIHQuZnNQYXRoJiYiZnVuY3Rpb24iPT10eXBlb2YgdC53aXRoJiYiZnVuY3Rpb24iPT10eXBlb2YgdC50b1N0cmluZyl9Y29uc3RydWN0b3IoZSx0LG4scixpLG89ITEpeyJvYmplY3QiPT10eXBlb2YgZT8odGhpcy5zY2hlbWU9ZS5zY2hlbWV8fEJlLHRoaXMuYXV0aG9yaXR5PWUuYXV0aG9yaXR5fHxCZSx0aGlzLnBhdGg9ZS5wYXRofHxCZSx0aGlzLnF1ZXJ5PWUucXVlcnl8fEJlLHRoaXMuZnJhZ21lbnQ9ZS5mcmFnbWVudHx8QmUpOih0aGlzLnNjaGVtZT1mdW5jdGlvbihlLHQpe3JldHVybiBlfHx0P2U6ImZpbGUifShlLG8pLHRoaXMuYXV0aG9yaXR5PXR8fEJlLHRoaXMucGF0aD1mdW5jdGlvbihlLHQpe3N3aXRjaChlKXtjYXNlImh0dHBzIjpjYXNlImh0dHAiOmNhc2UiZmlsZSI6dD90WzBdIT09S2UmJih0PUtlK3QpOnQ9S2V9cmV0dXJuIHR9KHRoaXMuc2NoZW1lLG58fEJlKSx0aGlzLnF1ZXJ5PXJ8fEJlLHRoaXMuZnJhZ21lbnQ9aXx8QmUsZnVuY3Rpb24oZSx0KXtpZighZS5zY2hlbWUmJnQpdGhyb3cgbmV3IEVycm9yKGBbVXJpRXJyb3JdOiBTY2hlbWUgaXMgbWlzc2luZzoge3NjaGVtZTogIiIsIGF1dGhvcml0eTogIiR7ZS5hdXRob3JpdHl9IiwgcGF0aDogIiR7ZS5wYXRofSIsIHF1ZXJ5OiAiJHtlLnF1ZXJ5fSIsIGZyYWdtZW50OiAiJHtlLmZyYWdtZW50fSJ9YCk7aWYoZS5zY2hlbWUmJiFXZS50ZXN0KGUuc2NoZW1lKSl0aHJvdyBuZXcgRXJyb3IoIltVcmlFcnJvcl06IFNjaGVtZSBjb250YWlucyBpbGxlZ2FsIGNoYXJhY3RlcnMuIik7aWYoZS5wYXRoKWlmKGUuYXV0aG9yaXR5KXtpZighVmUudGVzdChlLnBhdGgpKXRocm93IG5ldyBFcnJvcignW1VyaUVycm9yXTogSWYgYSBVUkkgY29udGFpbnMgYW4gYXV0aG9yaXR5IGNvbXBvbmVudCwgdGhlbiB0aGUgcGF0aCBjb21wb25lbnQgbXVzdCBlaXRoZXIgYmUgZW1wdHkgb3IgYmVnaW4gd2l0aCBhIHNsYXNoICgiLyIpIGNoYXJhY3RlcicpfWVsc2UgaWYoVWUudGVzdChlLnBhdGgpKXRocm93IG5ldyBFcnJvcignW1VyaUVycm9yXTogSWYgYSBVUkkgZG9lcyBub3QgY29udGFpbiBhbiBhdXRob3JpdHkgY29tcG9uZW50LCB0aGVuIHRoZSBwYXRoIGNhbm5vdCBiZWdpbiB3aXRoIHR3byBzbGFzaCBjaGFyYWN0ZXJzICgiLy8iKScpfSh0aGlzLG8pKX1nZXQgZnNQYXRoKCl7cmV0dXJuIFllKHRoaXMsITEpfXdpdGgoZSl7aWYoIWUpcmV0dXJuIHRoaXM7bGV0e3NjaGVtZTp0LGF1dGhvcml0eTpuLHBhdGg6cixxdWVyeTppLGZyYWdtZW50Om99PWU7cmV0dXJuIHZvaWQgMD09PXQ/dD10aGlzLnNjaGVtZTpudWxsPT09dCYmKHQ9QmUpLHZvaWQgMD09PW4/bj10aGlzLmF1dGhvcml0eTpudWxsPT09biYmKG49QmUpLHZvaWQgMD09PXI/cj10aGlzLnBhdGg6bnVsbD09PXImJihyPUJlKSx2b2lkIDA9PT1pP2k9dGhpcy5xdWVyeTpudWxsPT09aSYmKGk9QmUpLHZvaWQgMD09PW8/bz10aGlzLmZyYWdtZW50Om51bGw9PT1vJiYobz1CZSksdD09PXRoaXMuc2NoZW1lJiZuPT09dGhpcy5hdXRob3JpdHkmJnI9PT10aGlzLnBhdGgmJmk9PT10aGlzLnF1ZXJ5JiZvPT09dGhpcy5mcmFnbWVudD90aGlzOm5ldyBIZSh0LG4scixpLG8pfXN0YXRpYyBwYXJzZShlLHQ9ITEpe2NvbnN0IG49amUuZXhlYyhlKTtyZXR1cm4gbj9uZXcgSGUoblsyXXx8QmUsdHQobls0XXx8QmUpLHR0KG5bNV18fEJlKSx0dChuWzddfHxCZSksdHQobls5XXx8QmUpLHQpOm5ldyBIZShCZSxCZSxCZSxCZSxCZSl9c3RhdGljIGZpbGUoZSl7bGV0IHQ9QmU7aWYoVCYmKGU9ZS5yZXBsYWNlKC9cXC9nLEtlKSksZVswXT09PUtlJiZlWzFdPT09S2Upe2NvbnN0IG49ZS5pbmRleE9mKEtlLDIpOy0xPT09bj8odD1lLnN1YnN0cmluZygyKSxlPUtlKToodD1lLnN1YnN0cmluZygyLG4pLGU9ZS5zdWJzdHJpbmcobil8fEtlKX1yZXR1cm4gbmV3IEhlKCJmaWxlIix0LGUsQmUsQmUpfXN0YXRpYyBmcm9tKGUsdCl7cmV0dXJuIG5ldyBIZShlLnNjaGVtZSxlLmF1dGhvcml0eSxlLnBhdGgsZS5xdWVyeSxlLmZyYWdtZW50LHQpfXN0YXRpYyBqb2luUGF0aCh0LC4uLm4pe2lmKCF0LnBhdGgpdGhyb3cgbmV3IEVycm9yKCJbVXJpRXJyb3JdOiBjYW5ub3QgY2FsbCBqb2luUGF0aCBvbiBVUkkgd2l0aG91dCBwYXRoIik7bGV0IHI7cmV0dXJuIHI9VCYmImZpbGUiPT09dC5zY2hlbWU/ZS5maWxlKFBlLmpvaW4oWWUodCwhMCksLi4ubikpLnBhdGg6T2Uuam9pbih0LnBhdGgsLi4ubiksdC53aXRoKHtwYXRoOnJ9KX10b1N0cmluZyhlPSExKXtyZXR1cm4gWmUodGhpcyxlKX10b0pTT04oKXtyZXR1cm4gdGhpc31zdGF0aWMgcmV2aXZlKHQpe3ZhciBuLHI7aWYodCl7aWYodCBpbnN0YW5jZW9mIGUpcmV0dXJuIHQ7e2NvbnN0IGU9bmV3IEhlKHQpO3JldHVybiBlLl9mb3JtYXR0ZWQ9bnVsbCE9PShuPXQuZXh0ZXJuYWwpJiZ2b2lkIDAhPT1uP246bnVsbCxlLl9mc1BhdGg9dC5fc2VwPT09JGUmJm51bGwhPT0ocj10LmZzUGF0aCkmJnZvaWQgMCE9PXI/cjpudWxsLGV9fXJldHVybiB0fX07Y29uc3QgJGU9VD8xOnZvaWQgMDtjbGFzcyBIZSBleHRlbmRzIHFle2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLl9mb3JtYXR0ZWQ9bnVsbCx0aGlzLl9mc1BhdGg9bnVsbH1nZXQgZnNQYXRoKCl7cmV0dXJuIHRoaXMuX2ZzUGF0aHx8KHRoaXMuX2ZzUGF0aD1ZZSh0aGlzLCExKSksdGhpcy5fZnNQYXRofXRvU3RyaW5nKGU9ITEpe3JldHVybiBlP1plKHRoaXMsITApOih0aGlzLl9mb3JtYXR0ZWR8fCh0aGlzLl9mb3JtYXR0ZWQ9WmUodGhpcywhMSkpLHRoaXMuX2Zvcm1hdHRlZCl9dG9KU09OKCl7Y29uc3QgZT17JG1pZDoxfTtyZXR1cm4gdGhpcy5fZnNQYXRoJiYoZS5mc1BhdGg9dGhpcy5fZnNQYXRoLGUuX3NlcD0kZSksdGhpcy5fZm9ybWF0dGVkJiYoZS5leHRlcm5hbD10aGlzLl9mb3JtYXR0ZWQpLHRoaXMucGF0aCYmKGUucGF0aD10aGlzLnBhdGgpLHRoaXMuc2NoZW1lJiYoZS5zY2hlbWU9dGhpcy5zY2hlbWUpLHRoaXMuYXV0aG9yaXR5JiYoZS5hdXRob3JpdHk9dGhpcy5hdXRob3JpdHkpLHRoaXMucXVlcnkmJihlLnF1ZXJ5PXRoaXMucXVlcnkpLHRoaXMuZnJhZ21lbnQmJihlLmZyYWdtZW50PXRoaXMuZnJhZ21lbnQpLGV9fWNvbnN0IEdlPXs1ODoiJTNBIiw0NzoiJTJGIiw2MzoiJTNGIiwzNToiJTIzIiw5MToiJTVCIiw5MzoiJTVEIiw2NDoiJTQwIiwzMzoiJTIxIiwzNjoiJTI0IiwzODoiJTI2IiwzOToiJTI3Iiw0MDoiJTI4Iiw0MToiJTI5Iiw0MjoiJTJBIiw0MzoiJTJCIiw0NDoiJTJDIiw1OToiJTNCIiw2MToiJTNEIiwzMjoiJTIwIn07ZnVuY3Rpb24gSmUoZSx0LG4pe2xldCByLGk9LTE7Zm9yKGxldCBvPTA7bzxlLmxlbmd0aDtvKyspe2NvbnN0IHM9ZS5jaGFyQ29kZUF0KG8pO2lmKHM+PTk3JiZzPD0xMjJ8fHM+PTY1JiZzPD05MHx8cz49NDgmJnM8PTU3fHw0NT09PXN8fDQ2PT09c3x8OTU9PT1zfHwxMjY9PT1zfHx0JiY0Nz09PXN8fG4mJjkxPT09c3x8biYmOTM9PT1zfHxuJiY1OD09PXMpLTEhPT1pJiYocis9ZW5jb2RlVVJJQ29tcG9uZW50KGUuc3Vic3RyaW5nKGksbykpLGk9LTEpLHZvaWQgMCE9PXImJihyKz1lLmNoYXJBdChvKSk7ZWxzZXt2b2lkIDA9PT1yJiYocj1lLnN1YnN0cigwLG8pKTtjb25zdCB0PUdlW3NdO3ZvaWQgMCE9PXQ/KC0xIT09aSYmKHIrPWVuY29kZVVSSUNvbXBvbmVudChlLnN1YnN0cmluZyhpLG8pKSxpPS0xKSxyKz10KTotMT09PWkmJihpPW8pfX1yZXR1cm4tMSE9PWkmJihyKz1lbmNvZGVVUklDb21wb25lbnQoZS5zdWJzdHJpbmcoaSkpKSx2b2lkIDAhPT1yP3I6ZX1mdW5jdGlvbiBYZShlKXtsZXQgdDtmb3IobGV0IG49MDtuPGUubGVuZ3RoO24rKyl7Y29uc3Qgcj1lLmNoYXJDb2RlQXQobik7MzU9PT1yfHw2Mz09PXI/KHZvaWQgMD09PXQmJih0PWUuc3Vic3RyKDAsbikpLHQrPUdlW3JdKTp2b2lkIDAhPT10JiYodCs9ZVtuXSl9cmV0dXJuIHZvaWQgMCE9PXQ/dDplfWZ1bmN0aW9uIFllKGUsdCl7bGV0IG47cmV0dXJuIG49ZS5hdXRob3JpdHkmJmUucGF0aC5sZW5ndGg+MSYmImZpbGUiPT09ZS5zY2hlbWU/YC8vJHtlLmF1dGhvcml0eX0ke2UucGF0aH1gOjQ3PT09ZS5wYXRoLmNoYXJDb2RlQXQoMCkmJihlLnBhdGguY2hhckNvZGVBdCgxKT49NjUmJmUucGF0aC5jaGFyQ29kZUF0KDEpPD05MHx8ZS5wYXRoLmNoYXJDb2RlQXQoMSk+PTk3JiZlLnBhdGguY2hhckNvZGVBdCgxKTw9MTIyKSYmNTg9PT1lLnBhdGguY2hhckNvZGVBdCgyKT90P2UucGF0aC5zdWJzdHIoMSk6ZS5wYXRoWzFdLnRvTG93ZXJDYXNlKCkrZS5wYXRoLnN1YnN0cigyKTplLnBhdGgsVCYmKG49bi5yZXBsYWNlKC9cLy9nLCJcXCIpKSxufWZ1bmN0aW9uIFplKGUsdCl7Y29uc3Qgbj10P1hlOkplO2xldCByPSIiLHtzY2hlbWU6aSxhdXRob3JpdHk6byxwYXRoOnMscXVlcnk6YSxmcmFnbWVudDpsfT1lO2lmKGkmJihyKz1pLHIrPSI6IiksKG98fCJmaWxlIj09PWkpJiYocis9S2Uscis9S2UpLG8pe2xldCBlPW8uaW5kZXhPZigiQCIpO2lmKC0xIT09ZSl7Y29uc3QgdD1vLnN1YnN0cigwLGUpO289by5zdWJzdHIoZSsxKSxlPXQubGFzdEluZGV4T2YoIjoiKSwtMT09PWU/cis9bih0LCExLCExKToocis9bih0LnN1YnN0cigwLGUpLCExLCExKSxyKz0iOiIscis9bih0LnN1YnN0cihlKzEpLCExLCEwKSkscis9IkAifW89by50b0xvd2VyQ2FzZSgpLGU9by5sYXN0SW5kZXhPZigiOiIpLC0xPT09ZT9yKz1uKG8sITEsITApOihyKz1uKG8uc3Vic3RyKDAsZSksITEsITApLHIrPW8uc3Vic3RyKGUpKX1pZihzKXtpZihzLmxlbmd0aD49MyYmNDc9PT1zLmNoYXJDb2RlQXQoMCkmJjU4PT09cy5jaGFyQ29kZUF0KDIpKXtjb25zdCBlPXMuY2hhckNvZGVBdCgxKTtlPj02NSYmZTw9OTAmJihzPWAvJHtTdHJpbmcuZnJvbUNoYXJDb2RlKGUrMzIpfToke3Muc3Vic3RyKDMpfWApfWVsc2UgaWYocy5sZW5ndGg+PTImJjU4PT09cy5jaGFyQ29kZUF0KDEpKXtjb25zdCBlPXMuY2hhckNvZGVBdCgwKTtlPj02NSYmZTw9OTAmJihzPWAke1N0cmluZy5mcm9tQ2hhckNvZGUoZSszMil9OiR7cy5zdWJzdHIoMil9YCl9cis9bihzLCEwLCExKX1yZXR1cm4gYSYmKHIrPSI/IixyKz1uKGEsITEsITEpKSxsJiYocis9IiMiLHIrPXQ/bDpKZShsLCExLCExKSkscn1mdW5jdGlvbiBRZShlKXt0cnl7cmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChlKX1jYXRjaCh0KXtyZXR1cm4gZS5sZW5ndGg+Mz9lLnN1YnN0cigwLDMpK1FlKGUuc3Vic3RyKDMpKTplfX1jb25zdCBldD0vKCVbMC05QS1aYS16XVswLTlBLVphLXpdKSsvZztmdW5jdGlvbiB0dChlKXtyZXR1cm4gZS5tYXRjaChldCk/ZS5yZXBsYWNlKGV0LChlPT5RZShlKSkpOmV9bGV0IG50PWNsYXNzIGV7Y29uc3RydWN0b3IoZSx0KXt0aGlzLmxpbmVOdW1iZXI9ZSx0aGlzLmNvbHVtbj10fXdpdGgodD10aGlzLmxpbmVOdW1iZXIsbj10aGlzLmNvbHVtbil7cmV0dXJuIHQ9PT10aGlzLmxpbmVOdW1iZXImJm49PT10aGlzLmNvbHVtbj90aGlzOm5ldyBlKHQsbil9ZGVsdGEoZT0wLHQ9MCl7cmV0dXJuIHRoaXMud2l0aCh0aGlzLmxpbmVOdW1iZXIrZSx0aGlzLmNvbHVtbit0KX1lcXVhbHModCl7cmV0dXJuIGUuZXF1YWxzKHRoaXMsdCl9c3RhdGljIGVxdWFscyhlLHQpe3JldHVybiFlJiYhdHx8ISFlJiYhIXQmJmUubGluZU51bWJlcj09PXQubGluZU51bWJlciYmZS5jb2x1bW49PT10LmNvbHVtbn1pc0JlZm9yZSh0KXtyZXR1cm4gZS5pc0JlZm9yZSh0aGlzLHQpfXN0YXRpYyBpc0JlZm9yZShlLHQpe3JldHVybiBlLmxpbmVOdW1iZXI8dC5saW5lTnVtYmVyfHwhKHQubGluZU51bWJlcjxlLmxpbmVOdW1iZXIpJiZlLmNvbHVtbjx0LmNvbHVtbn1pc0JlZm9yZU9yRXF1YWwodCl7cmV0dXJuIGUuaXNCZWZvcmVPckVxdWFsKHRoaXMsdCl9c3RhdGljIGlzQmVmb3JlT3JFcXVhbChlLHQpe3JldHVybiBlLmxpbmVOdW1iZXI8dC5saW5lTnVtYmVyfHwhKHQubGluZU51bWJlcjxlLmxpbmVOdW1iZXIpJiZlLmNvbHVtbjw9dC5jb2x1bW59c3RhdGljIGNvbXBhcmUoZSx0KXtjb25zdCBuPTB8ZS5saW5lTnVtYmVyLHI9MHx0LmxpbmVOdW1iZXI7aWYobj09PXIpe3JldHVybigwfGUuY29sdW1uKS0oMHx0LmNvbHVtbil9cmV0dXJuIG4tcn1jbG9uZSgpe3JldHVybiBuZXcgZSh0aGlzLmxpbmVOdW1iZXIsdGhpcy5jb2x1bW4pfXRvU3RyaW5nKCl7cmV0dXJuIigiK3RoaXMubGluZU51bWJlcisiLCIrdGhpcy5jb2x1bW4rIikifXN0YXRpYyBsaWZ0KHQpe3JldHVybiBuZXcgZSh0LmxpbmVOdW1iZXIsdC5jb2x1bW4pfXN0YXRpYyBpc0lQb3NpdGlvbihlKXtyZXR1cm4gZSYmIm51bWJlciI9PXR5cGVvZiBlLmxpbmVOdW1iZXImJiJudW1iZXIiPT10eXBlb2YgZS5jb2x1bW59fSxydD1jbGFzcyBle2NvbnN0cnVjdG9yKGUsdCxuLHIpe2U+bnx8ZT09PW4mJnQ+cj8odGhpcy5zdGFydExpbmVOdW1iZXI9bix0aGlzLnN0YXJ0Q29sdW1uPXIsdGhpcy5lbmRMaW5lTnVtYmVyPWUsdGhpcy5lbmRDb2x1bW49dCk6KHRoaXMuc3RhcnRMaW5lTnVtYmVyPWUsdGhpcy5zdGFydENvbHVtbj10LHRoaXMuZW5kTGluZU51bWJlcj1uLHRoaXMuZW5kQ29sdW1uPXIpfWlzRW1wdHkoKXtyZXR1cm4gZS5pc0VtcHR5KHRoaXMpfXN0YXRpYyBpc0VtcHR5KGUpe3JldHVybiBlLnN0YXJ0TGluZU51bWJlcj09PWUuZW5kTGluZU51bWJlciYmZS5zdGFydENvbHVtbj09PWUuZW5kQ29sdW1ufWNvbnRhaW5zUG9zaXRpb24odCl7cmV0dXJuIGUuY29udGFpbnNQb3NpdGlvbih0aGlzLHQpfXN0YXRpYyBjb250YWluc1Bvc2l0aW9uKGUsdCl7cmV0dXJuISh0LmxpbmVOdW1iZXI8ZS5zdGFydExpbmVOdW1iZXJ8fHQubGluZU51bWJlcj5lLmVuZExpbmVOdW1iZXIpJiYoISh0LmxpbmVOdW1iZXI9PT1lLnN0YXJ0TGluZU51bWJlciYmdC5jb2x1bW48ZS5zdGFydENvbHVtbikmJiEodC5saW5lTnVtYmVyPT09ZS5lbmRMaW5lTnVtYmVyJiZ0LmNvbHVtbj5lLmVuZENvbHVtbikpfXN0YXRpYyBzdHJpY3RDb250YWluc1Bvc2l0aW9uKGUsdCl7cmV0dXJuISh0LmxpbmVOdW1iZXI8ZS5zdGFydExpbmVOdW1iZXJ8fHQubGluZU51bWJlcj5lLmVuZExpbmVOdW1iZXIpJiYoISh0LmxpbmVOdW1iZXI9PT1lLnN0YXJ0TGluZU51bWJlciYmdC5jb2x1bW48PWUuc3RhcnRDb2x1bW4pJiYhKHQubGluZU51bWJlcj09PWUuZW5kTGluZU51bWJlciYmdC5jb2x1bW4+PWUuZW5kQ29sdW1uKSl9Y29udGFpbnNSYW5nZSh0KXtyZXR1cm4gZS5jb250YWluc1JhbmdlKHRoaXMsdCl9c3RhdGljIGNvbnRhaW5zUmFuZ2UoZSx0KXtyZXR1cm4hKHQuc3RhcnRMaW5lTnVtYmVyPGUuc3RhcnRMaW5lTnVtYmVyfHx0LmVuZExpbmVOdW1iZXI8ZS5zdGFydExpbmVOdW1iZXIpJiYoISh0LnN0YXJ0TGluZU51bWJlcj5lLmVuZExpbmVOdW1iZXJ8fHQuZW5kTGluZU51bWJlcj5lLmVuZExpbmVOdW1iZXIpJiYoISh0LnN0YXJ0TGluZU51bWJlcj09PWUuc3RhcnRMaW5lTnVtYmVyJiZ0LnN0YXJ0Q29sdW1uPGUuc3RhcnRDb2x1bW4pJiYhKHQuZW5kTGluZU51bWJlcj09PWUuZW5kTGluZU51bWJlciYmdC5lbmRDb2x1bW4+ZS5lbmRDb2x1bW4pKSl9c3RyaWN0Q29udGFpbnNSYW5nZSh0KXtyZXR1cm4gZS5zdHJpY3RDb250YWluc1JhbmdlKHRoaXMsdCl9c3RhdGljIHN0cmljdENvbnRhaW5zUmFuZ2UoZSx0KXtyZXR1cm4hKHQuc3RhcnRMaW5lTnVtYmVyPGUuc3RhcnRMaW5lTnVtYmVyfHx0LmVuZExpbmVOdW1iZXI8ZS5zdGFydExpbmVOdW1iZXIpJiYoISh0LnN0YXJ0TGluZU51bWJlcj5lLmVuZExpbmVOdW1iZXJ8fHQuZW5kTGluZU51bWJlcj5lLmVuZExpbmVOdW1iZXIpJiYoISh0LnN0YXJ0TGluZU51bWJlcj09PWUuc3RhcnRMaW5lTnVtYmVyJiZ0LnN0YXJ0Q29sdW1uPD1lLnN0YXJ0Q29sdW1uKSYmISh0LmVuZExpbmVOdW1iZXI9PT1lLmVuZExpbmVOdW1iZXImJnQuZW5kQ29sdW1uPj1lLmVuZENvbHVtbikpKX1wbHVzUmFuZ2UodCl7cmV0dXJuIGUucGx1c1JhbmdlKHRoaXMsdCl9c3RhdGljIHBsdXNSYW5nZSh0LG4pe2xldCByLGksbyxzO3JldHVybiBuLnN0YXJ0TGluZU51bWJlcjx0LnN0YXJ0TGluZU51bWJlcj8ocj1uLnN0YXJ0TGluZU51bWJlcixpPW4uc3RhcnRDb2x1bW4pOm4uc3RhcnRMaW5lTnVtYmVyPT09dC5zdGFydExpbmVOdW1iZXI/KHI9bi5zdGFydExpbmVOdW1iZXIsaT1NYXRoLm1pbihuLnN0YXJ0Q29sdW1uLHQuc3RhcnRDb2x1bW4pKToocj10LnN0YXJ0TGluZU51bWJlcixpPXQuc3RhcnRDb2x1bW4pLG4uZW5kTGluZU51bWJlcj50LmVuZExpbmVOdW1iZXI/KG89bi5lbmRMaW5lTnVtYmVyLHM9bi5lbmRDb2x1bW4pOm4uZW5kTGluZU51bWJlcj09PXQuZW5kTGluZU51bWJlcj8obz1uLmVuZExpbmVOdW1iZXIscz1NYXRoLm1heChuLmVuZENvbHVtbix0LmVuZENvbHVtbikpOihvPXQuZW5kTGluZU51bWJlcixzPXQuZW5kQ29sdW1uKSxuZXcgZShyLGksbyxzKX1pbnRlcnNlY3RSYW5nZXModCl7cmV0dXJuIGUuaW50ZXJzZWN0UmFuZ2VzKHRoaXMsdCl9c3RhdGljIGludGVyc2VjdFJhbmdlcyh0LG4pe2xldCByPXQuc3RhcnRMaW5lTnVtYmVyLGk9dC5zdGFydENvbHVtbixvPXQuZW5kTGluZU51bWJlcixzPXQuZW5kQ29sdW1uO2NvbnN0IGE9bi5zdGFydExpbmVOdW1iZXIsbD1uLnN0YXJ0Q29sdW1uLGM9bi5lbmRMaW5lTnVtYmVyLGg9bi5lbmRDb2x1bW47cmV0dXJuIHI8YT8ocj1hLGk9bCk6cj09PWEmJihpPU1hdGgubWF4KGksbCkpLG8+Yz8obz1jLHM9aCk6bz09PWMmJihzPU1hdGgubWluKHMsaCkpLHI+b3x8cj09PW8mJmk+cz9udWxsOm5ldyBlKHIsaSxvLHMpfWVxdWFsc1JhbmdlKHQpe3JldHVybiBlLmVxdWFsc1JhbmdlKHRoaXMsdCl9c3RhdGljIGVxdWFsc1JhbmdlKGUsdCl7cmV0dXJuIWUmJiF0fHwhIWUmJiEhdCYmZS5zdGFydExpbmVOdW1iZXI9PT10LnN0YXJ0TGluZU51bWJlciYmZS5zdGFydENvbHVtbj09PXQuc3RhcnRDb2x1bW4mJmUuZW5kTGluZU51bWJlcj09PXQuZW5kTGluZU51bWJlciYmZS5lbmRDb2x1bW49PT10LmVuZENvbHVtbn1nZXRFbmRQb3NpdGlvbigpe3JldHVybiBlLmdldEVuZFBvc2l0aW9uKHRoaXMpfXN0YXRpYyBnZXRFbmRQb3NpdGlvbihlKXtyZXR1cm4gbmV3IG50KGUuZW5kTGluZU51bWJlcixlLmVuZENvbHVtbil9Z2V0U3RhcnRQb3NpdGlvbigpe3JldHVybiBlLmdldFN0YXJ0UG9zaXRpb24odGhpcyl9c3RhdGljIGdldFN0YXJ0UG9zaXRpb24oZSl7cmV0dXJuIG5ldyBudChlLnN0YXJ0TGluZU51bWJlcixlLnN0YXJ0Q29sdW1uKX10b1N0cmluZygpe3JldHVybiJbIit0aGlzLnN0YXJ0TGluZU51bWJlcisiLCIrdGhpcy5zdGFydENvbHVtbisiIC0+ICIrdGhpcy5lbmRMaW5lTnVtYmVyKyIsIit0aGlzLmVuZENvbHVtbisiXSJ9c2V0RW5kUG9zaXRpb24odCxuKXtyZXR1cm4gbmV3IGUodGhpcy5zdGFydExpbmVOdW1iZXIsdGhpcy5zdGFydENvbHVtbix0LG4pfXNldFN0YXJ0UG9zaXRpb24odCxuKXtyZXR1cm4gbmV3IGUodCxuLHRoaXMuZW5kTGluZU51bWJlcix0aGlzLmVuZENvbHVtbil9Y29sbGFwc2VUb1N0YXJ0KCl7cmV0dXJuIGUuY29sbGFwc2VUb1N0YXJ0KHRoaXMpfXN0YXRpYyBjb2xsYXBzZVRvU3RhcnQodCl7cmV0dXJuIG5ldyBlKHQuc3RhcnRMaW5lTnVtYmVyLHQuc3RhcnRDb2x1bW4sdC5zdGFydExpbmVOdW1iZXIsdC5zdGFydENvbHVtbil9Y29sbGFwc2VUb0VuZCgpe3JldHVybiBlLmNvbGxhcHNlVG9FbmQodGhpcyl9c3RhdGljIGNvbGxhcHNlVG9FbmQodCl7cmV0dXJuIG5ldyBlKHQuZW5kTGluZU51bWJlcix0LmVuZENvbHVtbix0LmVuZExpbmVOdW1iZXIsdC5lbmRDb2x1bW4pfWRlbHRhKHQpe3JldHVybiBuZXcgZSh0aGlzLnN0YXJ0TGluZU51bWJlcit0LHRoaXMuc3RhcnRDb2x1bW4sdGhpcy5lbmRMaW5lTnVtYmVyK3QsdGhpcy5lbmRDb2x1bW4pfXN0YXRpYyBmcm9tUG9zaXRpb25zKHQsbj10KXtyZXR1cm4gbmV3IGUodC5saW5lTnVtYmVyLHQuY29sdW1uLG4ubGluZU51bWJlcixuLmNvbHVtbil9c3RhdGljIGxpZnQodCl7cmV0dXJuIHQ/bmV3IGUodC5zdGFydExpbmVOdW1iZXIsdC5zdGFydENvbHVtbix0LmVuZExpbmVOdW1iZXIsdC5lbmRDb2x1bW4pOm51bGx9c3RhdGljIGlzSVJhbmdlKGUpe3JldHVybiBlJiYibnVtYmVyIj09dHlwZW9mIGUuc3RhcnRMaW5lTnVtYmVyJiYibnVtYmVyIj09dHlwZW9mIGUuc3RhcnRDb2x1bW4mJiJudW1iZXIiPT10eXBlb2YgZS5lbmRMaW5lTnVtYmVyJiYibnVtYmVyIj09dHlwZW9mIGUuZW5kQ29sdW1ufXN0YXRpYyBhcmVJbnRlcnNlY3RpbmdPclRvdWNoaW5nKGUsdCl7cmV0dXJuIShlLmVuZExpbmVOdW1iZXI8dC5zdGFydExpbmVOdW1iZXJ8fGUuZW5kTGluZU51bWJlcj09PXQuc3RhcnRMaW5lTnVtYmVyJiZlLmVuZENvbHVtbjx0LnN0YXJ0Q29sdW1uKSYmISh0LmVuZExpbmVOdW1iZXI8ZS5zdGFydExpbmVOdW1iZXJ8fHQuZW5kTGluZU51bWJlcj09PWUuc3RhcnRMaW5lTnVtYmVyJiZ0LmVuZENvbHVtbjxlLnN0YXJ0Q29sdW1uKX1zdGF0aWMgYXJlSW50ZXJzZWN0aW5nKGUsdCl7cmV0dXJuIShlLmVuZExpbmVOdW1iZXI8dC5zdGFydExpbmVOdW1iZXJ8fGUuZW5kTGluZU51bWJlcj09PXQuc3RhcnRMaW5lTnVtYmVyJiZlLmVuZENvbHVtbjw9dC5zdGFydENvbHVtbikmJiEodC5lbmRMaW5lTnVtYmVyPGUuc3RhcnRMaW5lTnVtYmVyfHx0LmVuZExpbmVOdW1iZXI9PT1lLnN0YXJ0TGluZU51bWJlciYmdC5lbmRDb2x1bW48PWUuc3RhcnRDb2x1bW4pfXN0YXRpYyBjb21wYXJlUmFuZ2VzVXNpbmdTdGFydHMoZSx0KXtpZihlJiZ0KXtjb25zdCBuPTB8ZS5zdGFydExpbmVOdW1iZXIscj0wfHQuc3RhcnRMaW5lTnVtYmVyO2lmKG49PT1yKXtjb25zdCBuPTB8ZS5zdGFydENvbHVtbixyPTB8dC5zdGFydENvbHVtbjtpZihuPT09cil7Y29uc3Qgbj0wfGUuZW5kTGluZU51bWJlcixyPTB8dC5lbmRMaW5lTnVtYmVyO2lmKG49PT1yKXtyZXR1cm4oMHxlLmVuZENvbHVtbiktKDB8dC5lbmRDb2x1bW4pfXJldHVybiBuLXJ9cmV0dXJuIG4tcn1yZXR1cm4gbi1yfXJldHVybihlPzE6MCktKHQ/MTowKX1zdGF0aWMgY29tcGFyZVJhbmdlc1VzaW5nRW5kcyhlLHQpe3JldHVybiBlLmVuZExpbmVOdW1iZXI9PT10LmVuZExpbmVOdW1iZXI/ZS5lbmRDb2x1bW49PT10LmVuZENvbHVtbj9lLnN0YXJ0TGluZU51bWJlcj09PXQuc3RhcnRMaW5lTnVtYmVyP2Uuc3RhcnRDb2x1bW4tdC5zdGFydENvbHVtbjplLnN0YXJ0TGluZU51bWJlci10LnN0YXJ0TGluZU51bWJlcjplLmVuZENvbHVtbi10LmVuZENvbHVtbjplLmVuZExpbmVOdW1iZXItdC5lbmRMaW5lTnVtYmVyfXN0YXRpYyBzcGFuc011bHRpcGxlTGluZXMoZSl7cmV0dXJuIGUuZW5kTGluZU51bWJlcj5lLnN0YXJ0TGluZU51bWJlcn10b0pTT04oKXtyZXR1cm4gdGhpc319O3ZhciBpdDtmdW5jdGlvbiBvdChlKXtyZXR1cm4gZTwwPzA6ZT4yNTU/MjU1OjB8ZX1mdW5jdGlvbiBzdChlKXtyZXR1cm4gZTwwPzA6ZT40Mjk0OTY3Mjk1PzQyOTQ5NjcyOTU6MHxlfSFmdW5jdGlvbihlKXtlLmlzTGVzc1RoYW49ZnVuY3Rpb24oZSl7cmV0dXJuIGU8MH0sZS5pc0dyZWF0ZXJUaGFuPWZ1bmN0aW9uKGUpe3JldHVybiBlPjB9LGUuaXNOZWl0aGVyTGVzc09yR3JlYXRlclRoYW49ZnVuY3Rpb24oZSl7cmV0dXJuIDA9PT1lfSxlLmdyZWF0ZXJUaGFuPTEsZS5sZXNzVGhhbj0tMSxlLm5laXRoZXJMZXNzT3JHcmVhdGVyVGhhbj0wfShpdHx8KGl0PXt9KSk7Y2xhc3MgYXR7Y29uc3RydWN0b3IoZSl7dGhpcy52YWx1ZXM9ZSx0aGlzLnByZWZpeFN1bT1uZXcgVWludDMyQXJyYXkoZS5sZW5ndGgpLHRoaXMucHJlZml4U3VtVmFsaWRJbmRleD1uZXcgSW50MzJBcnJheSgxKSx0aGlzLnByZWZpeFN1bVZhbGlkSW5kZXhbMF09LTF9aW5zZXJ0VmFsdWVzKGUsdCl7ZT1zdChlKTtjb25zdCBuPXRoaXMudmFsdWVzLHI9dGhpcy5wcmVmaXhTdW0saT10Lmxlbmd0aDtyZXR1cm4gMCE9PWkmJih0aGlzLnZhbHVlcz1uZXcgVWludDMyQXJyYXkobi5sZW5ndGgraSksdGhpcy52YWx1ZXMuc2V0KG4uc3ViYXJyYXkoMCxlKSwwKSx0aGlzLnZhbHVlcy5zZXQobi5zdWJhcnJheShlKSxlK2kpLHRoaXMudmFsdWVzLnNldCh0LGUpLGUtMTx0aGlzLnByZWZpeFN1bVZhbGlkSW5kZXhbMF0mJih0aGlzLnByZWZpeFN1bVZhbGlkSW5kZXhbMF09ZS0xKSx0aGlzLnByZWZpeFN1bT1uZXcgVWludDMyQXJyYXkodGhpcy52YWx1ZXMubGVuZ3RoKSx0aGlzLnByZWZpeFN1bVZhbGlkSW5kZXhbMF0+PTAmJnRoaXMucHJlZml4U3VtLnNldChyLnN1YmFycmF5KDAsdGhpcy5wcmVmaXhTdW1WYWxpZEluZGV4WzBdKzEpKSwhMCl9c2V0VmFsdWUoZSx0KXtyZXR1cm4gZT1zdChlKSx0PXN0KHQpLHRoaXMudmFsdWVzW2VdIT09dCYmKHRoaXMudmFsdWVzW2VdPXQsZS0xPHRoaXMucHJlZml4U3VtVmFsaWRJbmRleFswXSYmKHRoaXMucHJlZml4U3VtVmFsaWRJbmRleFswXT1lLTEpLCEwKX1yZW1vdmVWYWx1ZXMoZSx0KXtlPXN0KGUpLHQ9c3QodCk7Y29uc3Qgbj10aGlzLnZhbHVlcyxyPXRoaXMucHJlZml4U3VtO2lmKGU+PW4ubGVuZ3RoKXJldHVybiExO2NvbnN0IGk9bi5sZW5ndGgtZTtyZXR1cm4gdD49aSYmKHQ9aSksMCE9PXQmJih0aGlzLnZhbHVlcz1uZXcgVWludDMyQXJyYXkobi5sZW5ndGgtdCksdGhpcy52YWx1ZXMuc2V0KG4uc3ViYXJyYXkoMCxlKSwwKSx0aGlzLnZhbHVlcy5zZXQobi5zdWJhcnJheShlK3QpLGUpLHRoaXMucHJlZml4U3VtPW5ldyBVaW50MzJBcnJheSh0aGlzLnZhbHVlcy5sZW5ndGgpLGUtMTx0aGlzLnByZWZpeFN1bVZhbGlkSW5kZXhbMF0mJih0aGlzLnByZWZpeFN1bVZhbGlkSW5kZXhbMF09ZS0xKSx0aGlzLnByZWZpeFN1bVZhbGlkSW5kZXhbMF0+PTAmJnRoaXMucHJlZml4U3VtLnNldChyLnN1YmFycmF5KDAsdGhpcy5wcmVmaXhTdW1WYWxpZEluZGV4WzBdKzEpKSwhMCl9Z2V0VG90YWxTdW0oKXtyZXR1cm4gMD09PXRoaXMudmFsdWVzLmxlbmd0aD8wOnRoaXMuX2dldFByZWZpeFN1bSh0aGlzLnZhbHVlcy5sZW5ndGgtMSl9Z2V0UHJlZml4U3VtKGUpe3JldHVybiBlPDA/MDooZT1zdChlKSx0aGlzLl9nZXRQcmVmaXhTdW0oZSkpfV9nZXRQcmVmaXhTdW0oZSl7aWYoZTw9dGhpcy5wcmVmaXhTdW1WYWxpZEluZGV4WzBdKXJldHVybiB0aGlzLnByZWZpeFN1bVtlXTtsZXQgdD10aGlzLnByZWZpeFN1bVZhbGlkSW5kZXhbMF0rMTswPT09dCYmKHRoaXMucHJlZml4U3VtWzBdPXRoaXMudmFsdWVzWzBdLHQrKyksZT49dGhpcy52YWx1ZXMubGVuZ3RoJiYoZT10aGlzLnZhbHVlcy5sZW5ndGgtMSk7Zm9yKGxldCBuPXQ7bjw9ZTtuKyspdGhpcy5wcmVmaXhTdW1bbl09dGhpcy5wcmVmaXhTdW1bbi0xXSt0aGlzLnZhbHVlc1tuXTtyZXR1cm4gdGhpcy5wcmVmaXhTdW1WYWxpZEluZGV4WzBdPU1hdGgubWF4KHRoaXMucHJlZml4U3VtVmFsaWRJbmRleFswXSxlKSx0aGlzLnByZWZpeFN1bVtlXX1nZXRJbmRleE9mKGUpe2U9TWF0aC5mbG9vcihlKSx0aGlzLmdldFRvdGFsU3VtKCk7bGV0IHQ9MCxuPXRoaXMudmFsdWVzLmxlbmd0aC0xLHI9MCxpPTAsbz0wO2Zvcig7dDw9bjspaWYocj10KyhuLXQpLzJ8MCxpPXRoaXMucHJlZml4U3VtW3JdLG89aS10aGlzLnZhbHVlc1tyXSxlPG8pbj1yLTE7ZWxzZXtpZighKGU+PWkpKWJyZWFrO3Q9cisxfXJldHVybiBuZXcgbHQocixlLW8pfX1jbGFzcyBsdHtjb25zdHJ1Y3RvcihlLHQpe3RoaXMuaW5kZXg9ZSx0aGlzLnJlbWFpbmRlcj10LHRoaXMuX3ByZWZpeFN1bUluZGV4T2ZSZXN1bHRCcmFuZD12b2lkIDAsdGhpcy5pbmRleD1lLHRoaXMucmVtYWluZGVyPXR9fWNsYXNzIGN0e2NvbnN0cnVjdG9yKGUsdCxuLHIpe3RoaXMuX3VyaT1lLHRoaXMuX2xpbmVzPXQsdGhpcy5fZW9sPW4sdGhpcy5fdmVyc2lvbklkPXIsdGhpcy5fbGluZVN0YXJ0cz1udWxsLHRoaXMuX2NhY2hlZFRleHRWYWx1ZT1udWxsfWRpc3Bvc2UoKXt0aGlzLl9saW5lcy5sZW5ndGg9MH1nZXQgdmVyc2lvbigpe3JldHVybiB0aGlzLl92ZXJzaW9uSWR9Z2V0VGV4dCgpe3JldHVybiBudWxsPT09dGhpcy5fY2FjaGVkVGV4dFZhbHVlJiYodGhpcy5fY2FjaGVkVGV4dFZhbHVlPXRoaXMuX2xpbmVzLmpvaW4odGhpcy5fZW9sKSksdGhpcy5fY2FjaGVkVGV4dFZhbHVlfW9uRXZlbnRzKGUpe2UuZW9sJiZlLmVvbCE9PXRoaXMuX2VvbCYmKHRoaXMuX2VvbD1lLmVvbCx0aGlzLl9saW5lU3RhcnRzPW51bGwpO2NvbnN0IHQ9ZS5jaGFuZ2VzO2Zvcihjb25zdCBlIG9mIHQpdGhpcy5fYWNjZXB0RGVsZXRlUmFuZ2UoZS5yYW5nZSksdGhpcy5fYWNjZXB0SW5zZXJ0VGV4dChuZXcgbnQoZS5yYW5nZS5zdGFydExpbmVOdW1iZXIsZS5yYW5nZS5zdGFydENvbHVtbiksZS50ZXh0KTt0aGlzLl92ZXJzaW9uSWQ9ZS52ZXJzaW9uSWQsdGhpcy5fY2FjaGVkVGV4dFZhbHVlPW51bGx9X2Vuc3VyZUxpbmVTdGFydHMoKXtpZighdGhpcy5fbGluZVN0YXJ0cyl7Y29uc3QgZT10aGlzLl9lb2wubGVuZ3RoLHQ9dGhpcy5fbGluZXMubGVuZ3RoLG49bmV3IFVpbnQzMkFycmF5KHQpO2ZvcihsZXQgcj0wO3I8dDtyKyspbltyXT10aGlzLl9saW5lc1tyXS5sZW5ndGgrZTt0aGlzLl9saW5lU3RhcnRzPW5ldyBhdChuKX19X3NldExpbmVUZXh0KGUsdCl7dGhpcy5fbGluZXNbZV09dCx0aGlzLl9saW5lU3RhcnRzJiZ0aGlzLl9saW5lU3RhcnRzLnNldFZhbHVlKGUsdGhpcy5fbGluZXNbZV0ubGVuZ3RoK3RoaXMuX2VvbC5sZW5ndGgpfV9hY2NlcHREZWxldGVSYW5nZShlKXtpZihlLnN0YXJ0TGluZU51bWJlciE9PWUuZW5kTGluZU51bWJlcil0aGlzLl9zZXRMaW5lVGV4dChlLnN0YXJ0TGluZU51bWJlci0xLHRoaXMuX2xpbmVzW2Uuc3RhcnRMaW5lTnVtYmVyLTFdLnN1YnN0cmluZygwLGUuc3RhcnRDb2x1bW4tMSkrdGhpcy5fbGluZXNbZS5lbmRMaW5lTnVtYmVyLTFdLnN1YnN0cmluZyhlLmVuZENvbHVtbi0xKSksdGhpcy5fbGluZXMuc3BsaWNlKGUuc3RhcnRMaW5lTnVtYmVyLGUuZW5kTGluZU51bWJlci1lLnN0YXJ0TGluZU51bWJlciksdGhpcy5fbGluZVN0YXJ0cyYmdGhpcy5fbGluZVN0YXJ0cy5yZW1vdmVWYWx1ZXMoZS5zdGFydExpbmVOdW1iZXIsZS5lbmRMaW5lTnVtYmVyLWUuc3RhcnRMaW5lTnVtYmVyKTtlbHNle2lmKGUuc3RhcnRDb2x1bW49PT1lLmVuZENvbHVtbilyZXR1cm47dGhpcy5fc2V0TGluZVRleHQoZS5zdGFydExpbmVOdW1iZXItMSx0aGlzLl9saW5lc1tlLnN0YXJ0TGluZU51bWJlci0xXS5zdWJzdHJpbmcoMCxlLnN0YXJ0Q29sdW1uLTEpK3RoaXMuX2xpbmVzW2Uuc3RhcnRMaW5lTnVtYmVyLTFdLnN1YnN0cmluZyhlLmVuZENvbHVtbi0xKSl9fV9hY2NlcHRJbnNlcnRUZXh0KGUsdCl7aWYoMD09PXQubGVuZ3RoKXJldHVybjtjb25zdCBuPXQuc3BsaXQoL1xyXG58XHJ8XG4vKTtpZigxPT09bi5sZW5ndGgpcmV0dXJuIHZvaWQgdGhpcy5fc2V0TGluZVRleHQoZS5saW5lTnVtYmVyLTEsdGhpcy5fbGluZXNbZS5saW5lTnVtYmVyLTFdLnN1YnN0cmluZygwLGUuY29sdW1uLTEpK25bMF0rdGhpcy5fbGluZXNbZS5saW5lTnVtYmVyLTFdLnN1YnN0cmluZyhlLmNvbHVtbi0xKSk7bltuLmxlbmd0aC0xXSs9dGhpcy5fbGluZXNbZS5saW5lTnVtYmVyLTFdLnN1YnN0cmluZyhlLmNvbHVtbi0xKSx0aGlzLl9zZXRMaW5lVGV4dChlLmxpbmVOdW1iZXItMSx0aGlzLl9saW5lc1tlLmxpbmVOdW1iZXItMV0uc3Vic3RyaW5nKDAsZS5jb2x1bW4tMSkrblswXSk7Y29uc3Qgcj1uZXcgVWludDMyQXJyYXkobi5sZW5ndGgtMSk7Zm9yKGxldCB0PTE7dDxuLmxlbmd0aDt0KyspdGhpcy5fbGluZXMuc3BsaWNlKGUubGluZU51bWJlcit0LTEsMCxuW3RdKSxyW3QtMV09blt0XS5sZW5ndGgrdGhpcy5fZW9sLmxlbmd0aDt0aGlzLl9saW5lU3RhcnRzJiZ0aGlzLl9saW5lU3RhcnRzLmluc2VydFZhbHVlcyhlLmxpbmVOdW1iZXIscil9fWNvbnN0IGh0PWZ1bmN0aW9uKGU9IiIpe2xldCB0PSIoLT9cXGQqXFwuXFxkXFx3Kil8KFteIjtmb3IoY29uc3QgbiBvZiJgfiFAIyQlXiYqKCktPStbe119XFx8OzonXCIsLjw+Lz8iKWUuaW5kZXhPZihuKT49MHx8KHQrPSJcXCIrbik7cmV0dXJuIHQrPSJcXHNdKykiLG5ldyBSZWdFeHAodCwiZyIpfSgpO2NvbnN0IGR0PW5ldyBmO2Z1bmN0aW9uIHB0KGUsdCxuLHIsaSl7aWYoaXx8KGk9bC5maXJzdChkdCkpLG4ubGVuZ3RoPmkubWF4TGVuKXtsZXQgbz1lLWkubWF4TGVuLzI7cmV0dXJuIG88MD9vPTA6cis9byxwdChlLHQsbj1uLnN1YnN0cmluZyhvLGUraS5tYXhMZW4vMikscixpKX1jb25zdCBvPURhdGUubm93KCkscz1lLTEtcjtsZXQgYT0tMSxjPW51bGw7Zm9yKGxldCBlPTE7IShEYXRlLm5vdygpLW8+PWkudGltZUJ1ZGdldCk7ZSsrKXtjb25zdCByPXMtaS53aW5kb3dTaXplKmU7dC5sYXN0SW5kZXg9TWF0aC5tYXgoMCxyKTtjb25zdCBvPXV0KHQsbixzLGEpO2lmKCFvJiZjKWJyZWFrO2lmKGM9byxyPD0wKWJyZWFrO2E9cn1pZihjKXtjb25zdCBlPXt3b3JkOmNbMF0sc3RhcnRDb2x1bW46cisxK2MuaW5kZXgsZW5kQ29sdW1uOnIrMStjLmluZGV4K2NbMF0ubGVuZ3RofTtyZXR1cm4gdC5sYXN0SW5kZXg9MCxlfXJldHVybiBudWxsfWZ1bmN0aW9uIHV0KGUsdCxuLHIpe2xldCBpO2Zvcig7aT1lLmV4ZWModCk7KXtjb25zdCB0PWkuaW5kZXh8fDA7aWYodDw9biYmZS5sYXN0SW5kZXg+PW4pcmV0dXJuIGk7aWYocj4wJiZ0PnIpcmV0dXJuIG51bGx9cmV0dXJuIG51bGx9ZHQudW5zaGlmdCh7bWF4TGVuOjFlMyx3aW5kb3dTaXplOjE1LHRpbWVCdWRnZXQ6MTUwfSk7Y2xhc3MgbXR7Y29uc3RydWN0b3IoZSl7Y29uc3QgdD1vdChlKTt0aGlzLl9kZWZhdWx0VmFsdWU9dCx0aGlzLl9hc2NpaU1hcD1tdC5fY3JlYXRlQXNjaWlNYXAodCksdGhpcy5fbWFwPW5ldyBNYXB9c3RhdGljIF9jcmVhdGVBc2NpaU1hcChlKXtjb25zdCB0PW5ldyBVaW50OEFycmF5KDI1Nik7cmV0dXJuIHQuZmlsbChlKSx0fXNldChlLHQpe2NvbnN0IG49b3QodCk7ZT49MCYmZTwyNTY/dGhpcy5fYXNjaWlNYXBbZV09bjp0aGlzLl9tYXAuc2V0KGUsbil9Z2V0KGUpe3JldHVybiBlPj0wJiZlPDI1Nj90aGlzLl9hc2NpaU1hcFtlXTp0aGlzLl9tYXAuZ2V0KGUpfHx0aGlzLl9kZWZhdWx0VmFsdWV9Y2xlYXIoKXt0aGlzLl9hc2NpaU1hcC5maWxsKHRoaXMuX2RlZmF1bHRWYWx1ZSksdGhpcy5fbWFwLmNsZWFyKCl9fWNsYXNzIGZ0e2NvbnN0cnVjdG9yKGUsdCxuKXtjb25zdCByPW5ldyBVaW50OEFycmF5KGUqdCk7Zm9yKGxldCBpPTAsbz1lKnQ7aTxvO2krKylyW2ldPW47dGhpcy5fZGF0YT1yLHRoaXMucm93cz1lLHRoaXMuY29scz10fWdldChlLHQpe3JldHVybiB0aGlzLl9kYXRhW2UqdGhpcy5jb2xzK3RdfXNldChlLHQsbil7dGhpcy5fZGF0YVtlKnRoaXMuY29scyt0XT1ufX1jbGFzcyBndHtjb25zdHJ1Y3RvcihlKXtsZXQgdD0wLG49MDtmb3IobGV0IHI9MCxpPWUubGVuZ3RoO3I8aTtyKyspe2NvbnN0W2ksbyxzXT1lW3JdO28+dCYmKHQ9byksaT5uJiYobj1pKSxzPm4mJihuPXMpfXQrKyxuKys7Y29uc3Qgcj1uZXcgZnQobix0LDApO2ZvcihsZXQgdD0wLG49ZS5sZW5ndGg7dDxuO3QrKyl7Y29uc3RbbixpLG9dPWVbdF07ci5zZXQobixpLG8pfXRoaXMuX3N0YXRlcz1yLHRoaXMuX21heENoYXJDb2RlPXR9bmV4dFN0YXRlKGUsdCl7cmV0dXJuIHQ8MHx8dD49dGhpcy5fbWF4Q2hhckNvZGU/MDp0aGlzLl9zdGF0ZXMuZ2V0KGUsdCl9fWxldCBidD1udWxsO2xldCB2dD1udWxsO2NsYXNzIHl0e3N0YXRpYyBfY3JlYXRlTGluayhlLHQsbixyLGkpe2xldCBvPWktMTtkb3tjb25zdCBuPXQuY2hhckNvZGVBdChvKTtpZigyIT09ZS5nZXQobikpYnJlYWs7by0tfXdoaWxlKG8+cik7aWYocj4wKXtjb25zdCBlPXQuY2hhckNvZGVBdChyLTEpLG49dC5jaGFyQ29kZUF0KG8pOyg0MD09PWUmJjQxPT09bnx8OTE9PT1lJiY5Mz09PW58fDEyMz09PWUmJjEyNT09PW4pJiZvLS19cmV0dXJue3JhbmdlOntzdGFydExpbmVOdW1iZXI6bixzdGFydENvbHVtbjpyKzEsZW5kTGluZU51bWJlcjpuLGVuZENvbHVtbjpvKzJ9LHVybDp0LnN1YnN0cmluZyhyLG8rMSl9fXN0YXRpYyBjb21wdXRlTGlua3MoZSx0PWZ1bmN0aW9uKCl7cmV0dXJuIG51bGw9PT1idCYmKGJ0PW5ldyBndChbWzEsMTA0LDJdLFsxLDcyLDJdLFsxLDEwMiw2XSxbMSw3MCw2XSxbMiwxMTYsM10sWzIsODQsM10sWzMsMTE2LDRdLFszLDg0LDRdLFs0LDExMiw1XSxbNCw4MCw1XSxbNSwxMTUsOV0sWzUsODMsOV0sWzUsNTgsMTBdLFs2LDEwNSw3XSxbNiw3Myw3XSxbNywxMDgsOF0sWzcsNzYsOF0sWzgsMTAxLDldLFs4LDY5LDldLFs5LDU4LDEwXSxbMTAsNDcsMTFdLFsxMSw0NywxMl1dKSksYnR9KCkpe2NvbnN0IG49ZnVuY3Rpb24oKXtpZihudWxsPT09dnQpe3Z0PW5ldyBtdCgwKTtjb25zdCBlPSIgXHQ8PidcIuOAgeOAgu+9oe+9pO+8jO+8ju+8mu+8m+KAmOOAiOOAjOOAjuOAlO+8iO+8u++9m++9ou+9o++9ne+8ve+8ieOAleOAj+OAjeOAieKAme+9gO+9nuKApiI7Zm9yKGxldCB0PTA7dDxlLmxlbmd0aDt0KyspdnQuc2V0KGUuY2hhckNvZGVBdCh0KSwxKTtjb25zdCB0PSIuLDs6Ijtmb3IobGV0IGU9MDtlPHQubGVuZ3RoO2UrKyl2dC5zZXQodC5jaGFyQ29kZUF0KGUpLDIpfXJldHVybiB2dH0oKSxyPVtdO2ZvcihsZXQgaT0xLG89ZS5nZXRMaW5lQ291bnQoKTtpPD1vO2krKyl7Y29uc3Qgbz1lLmdldExpbmVDb250ZW50KGkpLHM9by5sZW5ndGg7bGV0IGE9MCxsPTAsYz0wLGg9MSxkPSExLHA9ITEsdT0hMSxtPSExO2Zvcig7YTxzOyl7bGV0IGU9ITE7Y29uc3Qgcz1vLmNoYXJDb2RlQXQoYSk7aWYoMTM9PT1oKXtsZXQgdDtzd2l0Y2gocyl7Y2FzZSA0MDpkPSEwLHQ9MDticmVhaztjYXNlIDQxOnQ9ZD8wOjE7YnJlYWs7Y2FzZSA5MTp1PSEwLHA9ITAsdD0wO2JyZWFrO2Nhc2UgOTM6dT0hMSx0PXA/MDoxO2JyZWFrO2Nhc2UgMTIzOm09ITAsdD0wO2JyZWFrO2Nhc2UgMTI1OnQ9bT8wOjE7YnJlYWs7Y2FzZSAzOTpjYXNlIDM0OmNhc2UgOTY6dD1jPT09cz8xOjM5PT09Y3x8MzQ9PT1jfHw5Nj09PWM/MDoxO2JyZWFrO2Nhc2UgNDI6dD00Mj09PWM/MTowO2JyZWFrO2Nhc2UgMTI0OnQ9MTI0PT09Yz8xOjA7YnJlYWs7Y2FzZSAzMjp0PXU/MDoxO2JyZWFrO2RlZmF1bHQ6dD1uLmdldChzKX0xPT09dCYmKHIucHVzaCh5dC5fY3JlYXRlTGluayhuLG8saSxsLGEpKSxlPSEwKX1lbHNlIGlmKDEyPT09aCl7bGV0IHQ7OTE9PT1zPyhwPSEwLHQ9MCk6dD1uLmdldChzKSwxPT09dD9lPSEwOmg9MTN9ZWxzZSBoPXQubmV4dFN0YXRlKGgscyksMD09PWgmJihlPSEwKTtlJiYoaD0xLGQ9ITEscD0hMSxtPSExLGw9YSsxLGM9cyksYSsrfTEzPT09aCYmci5wdXNoKHl0Ll9jcmVhdGVMaW5rKG4sbyxpLGwscykpfXJldHVybiByfX1jbGFzcyB3dHtjb25zdHJ1Y3Rvcigpe3RoaXMuX2RlZmF1bHRWYWx1ZVNldD1bWyJ0cnVlIiwiZmFsc2UiXSxbIlRydWUiLCJGYWxzZSJdLFsiUHJpdmF0ZSIsIlB1YmxpYyIsIkZyaWVuZCIsIlJlYWRPbmx5IiwiUGFydGlhbCIsIlByb3RlY3RlZCIsIldyaXRlT25seSJdLFsicHVibGljIiwicHJvdGVjdGVkIiwicHJpdmF0ZSJdXX1uYXZpZ2F0ZVZhbHVlU2V0KGUsdCxuLHIsaSl7aWYoZSYmdCl7Y29uc3Qgbj10aGlzLmRvTmF2aWdhdGVWYWx1ZVNldCh0LGkpO2lmKG4pcmV0dXJue3JhbmdlOmUsdmFsdWU6bn19aWYobiYmcil7Y29uc3QgZT10aGlzLmRvTmF2aWdhdGVWYWx1ZVNldChyLGkpO2lmKGUpcmV0dXJue3JhbmdlOm4sdmFsdWU6ZX19cmV0dXJuIG51bGx9ZG9OYXZpZ2F0ZVZhbHVlU2V0KGUsdCl7Y29uc3Qgbj10aGlzLm51bWJlclJlcGxhY2UoZSx0KTtyZXR1cm4gbnVsbCE9PW4/bjp0aGlzLnRleHRSZXBsYWNlKGUsdCl9bnVtYmVyUmVwbGFjZShlLHQpe2NvbnN0IG49TWF0aC5wb3coMTAsZS5sZW5ndGgtKGUubGFzdEluZGV4T2YoIi4iKSsxKSk7bGV0IHI9TnVtYmVyKGUpO2NvbnN0IGk9cGFyc2VGbG9hdChlKTtyZXR1cm4gaXNOYU4ocil8fGlzTmFOKGkpfHxyIT09aT9udWxsOjAhPT1yfHx0PyhyPU1hdGguZmxvb3IocipuKSxyKz10P246LW4sU3RyaW5nKHIvbikpOm51bGx9dGV4dFJlcGxhY2UoZSx0KXtyZXR1cm4gdGhpcy52YWx1ZVNldHNSZXBsYWNlKHRoaXMuX2RlZmF1bHRWYWx1ZVNldCxlLHQpfXZhbHVlU2V0c1JlcGxhY2UoZSx0LG4pe2xldCByPW51bGw7Zm9yKGxldCBpPTAsbz1lLmxlbmd0aDtudWxsPT09ciYmaTxvO2krKylyPXRoaXMudmFsdWVTZXRSZXBsYWNlKGVbaV0sdCxuKTtyZXR1cm4gcn12YWx1ZVNldFJlcGxhY2UoZSx0LG4pe2xldCByPWUuaW5kZXhPZih0KTtyZXR1cm4gcj49MD8ocis9bj8xOi0xLHI8MD9yPWUubGVuZ3RoLTE6ciU9ZS5sZW5ndGgsZVtyXSk6bnVsbH19d3QuSU5TVEFOQ0U9bmV3IHd0O2NvbnN0IHh0PU9iamVjdC5mcmVlemUoKGZ1bmN0aW9uKGUsdCl7Y29uc3Qgbj1zZXRUaW1lb3V0KGUuYmluZCh0KSwwKTtyZXR1cm57ZGlzcG9zZSgpe2NsZWFyVGltZW91dChuKX19fSkpO3ZhciBTdDshZnVuY3Rpb24oZSl7ZS5pc0NhbmNlbGxhdGlvblRva2VuPWZ1bmN0aW9uKHQpe3JldHVybiB0PT09ZS5Ob25lfHx0PT09ZS5DYW5jZWxsZWR8fCh0IGluc3RhbmNlb2YgQ3R8fCEoIXR8fCJvYmplY3QiIT10eXBlb2YgdCkmJigiYm9vbGVhbiI9PXR5cGVvZiB0LmlzQ2FuY2VsbGF0aW9uUmVxdWVzdGVkJiYiZnVuY3Rpb24iPT10eXBlb2YgdC5vbkNhbmNlbGxhdGlvblJlcXVlc3RlZCkpfSxlLk5vbmU9T2JqZWN0LmZyZWV6ZSh7aXNDYW5jZWxsYXRpb25SZXF1ZXN0ZWQ6ITEsb25DYW5jZWxsYXRpb25SZXF1ZXN0ZWQ6Ty5Ob25lfSksZS5DYW5jZWxsZWQ9T2JqZWN0LmZyZWV6ZSh7aXNDYW5jZWxsYXRpb25SZXF1ZXN0ZWQ6ITAsb25DYW5jZWxsYXRpb25SZXF1ZXN0ZWQ6eHR9KX0oU3R8fChTdD17fSkpO2NsYXNzIEN0e2NvbnN0cnVjdG9yKCl7dGhpcy5faXNDYW5jZWxsZWQ9ITEsdGhpcy5fZW1pdHRlcj1udWxsfWNhbmNlbCgpe3RoaXMuX2lzQ2FuY2VsbGVkfHwodGhpcy5faXNDYW5jZWxsZWQ9ITAsdGhpcy5fZW1pdHRlciYmKHRoaXMuX2VtaXR0ZXIuZmlyZSh2b2lkIDApLHRoaXMuZGlzcG9zZSgpKSl9Z2V0IGlzQ2FuY2VsbGF0aW9uUmVxdWVzdGVkKCl7cmV0dXJuIHRoaXMuX2lzQ2FuY2VsbGVkfWdldCBvbkNhbmNlbGxhdGlvblJlcXVlc3RlZCgpe3JldHVybiB0aGlzLl9pc0NhbmNlbGxlZD94dDoodGhpcy5fZW1pdHRlcnx8KHRoaXMuX2VtaXR0ZXI9bmV3IEspLHRoaXMuX2VtaXR0ZXIuZXZlbnQpfWRpc3Bvc2UoKXt0aGlzLl9lbWl0dGVyJiYodGhpcy5fZW1pdHRlci5kaXNwb3NlKCksdGhpcy5fZW1pdHRlcj1udWxsKX19Y2xhc3Mga3R7Y29uc3RydWN0b3IoZSl7dGhpcy5fdG9rZW49dm9pZCAwLHRoaXMuX3BhcmVudExpc3RlbmVyPXZvaWQgMCx0aGlzLl9wYXJlbnRMaXN0ZW5lcj1lJiZlLm9uQ2FuY2VsbGF0aW9uUmVxdWVzdGVkKHRoaXMuY2FuY2VsLHRoaXMpfWdldCB0b2tlbigpe3JldHVybiB0aGlzLl90b2tlbnx8KHRoaXMuX3Rva2VuPW5ldyBDdCksdGhpcy5fdG9rZW59Y2FuY2VsKCl7dGhpcy5fdG9rZW4/dGhpcy5fdG9rZW4gaW5zdGFuY2VvZiBDdCYmdGhpcy5fdG9rZW4uY2FuY2VsKCk6dGhpcy5fdG9rZW49U3QuQ2FuY2VsbGVkfWRpc3Bvc2UoZT0hMSl7dmFyIHQ7ZSYmdGhpcy5jYW5jZWwoKSxudWxsPT09KHQ9dGhpcy5fcGFyZW50TGlzdGVuZXIpfHx2b2lkIDA9PT10fHx0LmRpc3Bvc2UoKSx0aGlzLl90b2tlbj90aGlzLl90b2tlbiBpbnN0YW5jZW9mIEN0JiZ0aGlzLl90b2tlbi5kaXNwb3NlKCk6dGhpcy5fdG9rZW49U3QuTm9uZX19Y2xhc3MgX3R7Y29uc3RydWN0b3IoKXt0aGlzLl9rZXlDb2RlVG9TdHI9W10sdGhpcy5fc3RyVG9LZXlDb2RlPU9iamVjdC5jcmVhdGUobnVsbCl9ZGVmaW5lKGUsdCl7dGhpcy5fa2V5Q29kZVRvU3RyW2VdPXQsdGhpcy5fc3RyVG9LZXlDb2RlW3QudG9Mb3dlckNhc2UoKV09ZX1rZXlDb2RlVG9TdHIoZSl7cmV0dXJuIHRoaXMuX2tleUNvZGVUb1N0cltlXX1zdHJUb0tleUNvZGUoZSl7cmV0dXJuIHRoaXMuX3N0clRvS2V5Q29kZVtlLnRvTG93ZXJDYXNlKCldfHwwfX1jb25zdCBFdD1uZXcgX3QsUnQ9bmV3IF90LEZ0PW5ldyBfdCxOdD1uZXcgQXJyYXkoMjMwKSxEdD1PYmplY3QuY3JlYXRlKG51bGwpLFR0PU9iamVjdC5jcmVhdGUobnVsbCk7dmFyIEF0OyFmdW5jdGlvbigpe2NvbnN0IGU9IiIsdD1bWzEsMCwiTm9uZSIsMCwidW5rbm93biIsMCwiVktfVU5LTk9XTiIsZSxlXSxbMSwxLCJIeXBlciIsMCxlLDAsZSxlLGVdLFsxLDIsIlN1cGVyIiwwLGUsMCxlLGUsZV0sWzEsMywiRm4iLDAsZSwwLGUsZSxlXSxbMSw0LCJGbkxvY2siLDAsZSwwLGUsZSxlXSxbMSw1LCJTdXNwZW5kIiwwLGUsMCxlLGUsZV0sWzEsNiwiUmVzdW1lIiwwLGUsMCxlLGUsZV0sWzEsNywiVHVyYm8iLDAsZSwwLGUsZSxlXSxbMSw4LCJTbGVlcCIsMCxlLDAsIlZLX1NMRUVQIixlLGVdLFsxLDksIldha2VVcCIsMCxlLDAsZSxlLGVdLFswLDEwLCJLZXlBIiwzMSwiQSIsNjUsIlZLX0EiLGUsZV0sWzAsMTEsIktleUIiLDMyLCJCIiw2NiwiVktfQiIsZSxlXSxbMCwxMiwiS2V5QyIsMzMsIkMiLDY3LCJWS19DIixlLGVdLFswLDEzLCJLZXlEIiwzNCwiRCIsNjgsIlZLX0QiLGUsZV0sWzAsMTQsIktleUUiLDM1LCJFIiw2OSwiVktfRSIsZSxlXSxbMCwxNSwiS2V5RiIsMzYsIkYiLDcwLCJWS19GIixlLGVdLFswLDE2LCJLZXlHIiwzNywiRyIsNzEsIlZLX0ciLGUsZV0sWzAsMTcsIktleUgiLDM4LCJIIiw3MiwiVktfSCIsZSxlXSxbMCwxOCwiS2V5SSIsMzksIkkiLDczLCJWS19JIixlLGVdLFswLDE5LCJLZXlKIiw0MCwiSiIsNzQsIlZLX0oiLGUsZV0sWzAsMjAsIktleUsiLDQxLCJLIiw3NSwiVktfSyIsZSxlXSxbMCwyMSwiS2V5TCIsNDIsIkwiLDc2LCJWS19MIixlLGVdLFswLDIyLCJLZXlNIiw0MywiTSIsNzcsIlZLX00iLGUsZV0sWzAsMjMsIktleU4iLDQ0LCJOIiw3OCwiVktfTiIsZSxlXSxbMCwyNCwiS2V5TyIsNDUsIk8iLDc5LCJWS19PIixlLGVdLFswLDI1LCJLZXlQIiw0NiwiUCIsODAsIlZLX1AiLGUsZV0sWzAsMjYsIktleVEiLDQ3LCJRIiw4MSwiVktfUSIsZSxlXSxbMCwyNywiS2V5UiIsNDgsIlIiLDgyLCJWS19SIixlLGVdLFswLDI4LCJLZXlTIiw0OSwiUyIsODMsIlZLX1MiLGUsZV0sWzAsMjksIktleVQiLDUwLCJUIiw4NCwiVktfVCIsZSxlXSxbMCwzMCwiS2V5VSIsNTEsIlUiLDg1LCJWS19VIixlLGVdLFswLDMxLCJLZXlWIiw1MiwiViIsODYsIlZLX1YiLGUsZV0sWzAsMzIsIktleVciLDUzLCJXIiw4NywiVktfVyIsZSxlXSxbMCwzMywiS2V5WCIsNTQsIlgiLDg4LCJWS19YIixlLGVdLFswLDM0LCJLZXlZIiw1NSwiWSIsODksIlZLX1kiLGUsZV0sWzAsMzUsIktleVoiLDU2LCJaIiw5MCwiVktfWiIsZSxlXSxbMCwzNiwiRGlnaXQxIiwyMiwiMSIsNDksIlZLXzEiLGUsZV0sWzAsMzcsIkRpZ2l0MiIsMjMsIjIiLDUwLCJWS18yIixlLGVdLFswLDM4LCJEaWdpdDMiLDI0LCIzIiw1MSwiVktfMyIsZSxlXSxbMCwzOSwiRGlnaXQ0IiwyNSwiNCIsNTIsIlZLXzQiLGUsZV0sWzAsNDAsIkRpZ2l0NSIsMjYsIjUiLDUzLCJWS181IixlLGVdLFswLDQxLCJEaWdpdDYiLDI3LCI2Iiw1NCwiVktfNiIsZSxlXSxbMCw0MiwiRGlnaXQ3IiwyOCwiNyIsNTUsIlZLXzciLGUsZV0sWzAsNDMsIkRpZ2l0OCIsMjksIjgiLDU2LCJWS184IixlLGVdLFswLDQ0LCJEaWdpdDkiLDMwLCI5Iiw1NywiVktfOSIsZSxlXSxbMCw0NSwiRGlnaXQwIiwyMSwiMCIsNDgsIlZLXzAiLGUsZV0sWzEsNDYsIkVudGVyIiwzLCJFbnRlciIsMTMsIlZLX1JFVFVSTiIsZSxlXSxbMSw0NywiRXNjYXBlIiw5LCJFc2NhcGUiLDI3LCJWS19FU0NBUEUiLGUsZV0sWzEsNDgsIkJhY2tzcGFjZSIsMSwiQmFja3NwYWNlIiw4LCJWS19CQUNLIixlLGVdLFsxLDQ5LCJUYWIiLDIsIlRhYiIsOSwiVktfVEFCIixlLGVdLFsxLDUwLCJTcGFjZSIsMTAsIlNwYWNlIiwzMiwiVktfU1BBQ0UiLGUsZV0sWzAsNTEsIk1pbnVzIiw4OCwiLSIsMTg5LCJWS19PRU1fTUlOVVMiLCItIiwiT0VNX01JTlVTIl0sWzAsNTIsIkVxdWFsIiw4NiwiPSIsMTg3LCJWS19PRU1fUExVUyIsIj0iLCJPRU1fUExVUyJdLFswLDUzLCJCcmFja2V0TGVmdCIsOTIsIlsiLDIxOSwiVktfT0VNXzQiLCJbIiwiT0VNXzQiXSxbMCw1NCwiQnJhY2tldFJpZ2h0Iiw5NCwiXSIsMjIxLCJWS19PRU1fNiIsIl0iLCJPRU1fNiJdLFswLDU1LCJCYWNrc2xhc2giLDkzLCJcXCIsMjIwLCJWS19PRU1fNSIsIlxcIiwiT0VNXzUiXSxbMCw1NiwiSW50bEhhc2giLDAsZSwwLGUsZSxlXSxbMCw1NywiU2VtaWNvbG9uIiw4NSwiOyIsMTg2LCJWS19PRU1fMSIsIjsiLCJPRU1fMSJdLFswLDU4LCJRdW90ZSIsOTUsIiciLDIyMiwiVktfT0VNXzciLCInIiwiT0VNXzciXSxbMCw1OSwiQmFja3F1b3RlIiw5MSwiYCIsMTkyLCJWS19PRU1fMyIsImAiLCJPRU1fMyJdLFswLDYwLCJDb21tYSIsODcsIiwiLDE4OCwiVktfT0VNX0NPTU1BIiwiLCIsIk9FTV9DT01NQSJdLFswLDYxLCJQZXJpb2QiLDg5LCIuIiwxOTAsIlZLX09FTV9QRVJJT0QiLCIuIiwiT0VNX1BFUklPRCJdLFswLDYyLCJTbGFzaCIsOTAsIi8iLDE5MSwiVktfT0VNXzIiLCIvIiwiT0VNXzIiXSxbMSw2MywiQ2Fwc0xvY2siLDgsIkNhcHNMb2NrIiwyMCwiVktfQ0FQSVRBTCIsZSxlXSxbMSw2NCwiRjEiLDU5LCJGMSIsMTEyLCJWS19GMSIsZSxlXSxbMSw2NSwiRjIiLDYwLCJGMiIsMTEzLCJWS19GMiIsZSxlXSxbMSw2NiwiRjMiLDYxLCJGMyIsMTE0LCJWS19GMyIsZSxlXSxbMSw2NywiRjQiLDYyLCJGNCIsMTE1LCJWS19GNCIsZSxlXSxbMSw2OCwiRjUiLDYzLCJGNSIsMTE2LCJWS19GNSIsZSxlXSxbMSw2OSwiRjYiLDY0LCJGNiIsMTE3LCJWS19GNiIsZSxlXSxbMSw3MCwiRjciLDY1LCJGNyIsMTE4LCJWS19GNyIsZSxlXSxbMSw3MSwiRjgiLDY2LCJGOCIsMTE5LCJWS19GOCIsZSxlXSxbMSw3MiwiRjkiLDY3LCJGOSIsMTIwLCJWS19GOSIsZSxlXSxbMSw3MywiRjEwIiw2OCwiRjEwIiwxMjEsIlZLX0YxMCIsZSxlXSxbMSw3NCwiRjExIiw2OSwiRjExIiwxMjIsIlZLX0YxMSIsZSxlXSxbMSw3NSwiRjEyIiw3MCwiRjEyIiwxMjMsIlZLX0YxMiIsZSxlXSxbMSw3NiwiUHJpbnRTY3JlZW4iLDAsZSwwLGUsZSxlXSxbMSw3NywiU2Nyb2xsTG9jayIsODQsIlNjcm9sbExvY2siLDE0NSwiVktfU0NST0xMIixlLGVdLFsxLDc4LCJQYXVzZSIsNywiUGF1c2VCcmVhayIsMTksIlZLX1BBVVNFIixlLGVdLFsxLDc5LCJJbnNlcnQiLDE5LCJJbnNlcnQiLDQ1LCJWS19JTlNFUlQiLGUsZV0sWzEsODAsIkhvbWUiLDE0LCJIb21lIiwzNiwiVktfSE9NRSIsZSxlXSxbMSw4MSwiUGFnZVVwIiwxMSwiUGFnZVVwIiwzMywiVktfUFJJT1IiLGUsZV0sWzEsODIsIkRlbGV0ZSIsMjAsIkRlbGV0ZSIsNDYsIlZLX0RFTEVURSIsZSxlXSxbMSw4MywiRW5kIiwxMywiRW5kIiwzNSwiVktfRU5EIixlLGVdLFsxLDg0LCJQYWdlRG93biIsMTIsIlBhZ2VEb3duIiwzNCwiVktfTkVYVCIsZSxlXSxbMSw4NSwiQXJyb3dSaWdodCIsMTcsIlJpZ2h0QXJyb3ciLDM5LCJWS19SSUdIVCIsIlJpZ2h0IixlXSxbMSw4NiwiQXJyb3dMZWZ0IiwxNSwiTGVmdEFycm93IiwzNywiVktfTEVGVCIsIkxlZnQiLGVdLFsxLDg3LCJBcnJvd0Rvd24iLDE4LCJEb3duQXJyb3ciLDQwLCJWS19ET1dOIiwiRG93biIsZV0sWzEsODgsIkFycm93VXAiLDE2LCJVcEFycm93IiwzOCwiVktfVVAiLCJVcCIsZV0sWzEsODksIk51bUxvY2siLDgzLCJOdW1Mb2NrIiwxNDQsIlZLX05VTUxPQ0siLGUsZV0sWzEsOTAsIk51bXBhZERpdmlkZSIsMTEzLCJOdW1QYWRfRGl2aWRlIiwxMTEsIlZLX0RJVklERSIsZSxlXSxbMSw5MSwiTnVtcGFkTXVsdGlwbHkiLDEwOCwiTnVtUGFkX011bHRpcGx5IiwxMDYsIlZLX01VTFRJUExZIixlLGVdLFsxLDkyLCJOdW1wYWRTdWJ0cmFjdCIsMTExLCJOdW1QYWRfU3VidHJhY3QiLDEwOSwiVktfU1VCVFJBQ1QiLGUsZV0sWzEsOTMsIk51bXBhZEFkZCIsMTA5LCJOdW1QYWRfQWRkIiwxMDcsIlZLX0FERCIsZSxlXSxbMSw5NCwiTnVtcGFkRW50ZXIiLDMsZSwwLGUsZSxlXSxbMSw5NSwiTnVtcGFkMSIsOTksIk51bVBhZDEiLDk3LCJWS19OVU1QQUQxIixlLGVdLFsxLDk2LCJOdW1wYWQyIiwxMDAsIk51bVBhZDIiLDk4LCJWS19OVU1QQUQyIixlLGVdLFsxLDk3LCJOdW1wYWQzIiwxMDEsIk51bVBhZDMiLDk5LCJWS19OVU1QQUQzIixlLGVdLFsxLDk4LCJOdW1wYWQ0IiwxMDIsIk51bVBhZDQiLDEwMCwiVktfTlVNUEFENCIsZSxlXSxbMSw5OSwiTnVtcGFkNSIsMTAzLCJOdW1QYWQ1IiwxMDEsIlZLX05VTVBBRDUiLGUsZV0sWzEsMTAwLCJOdW1wYWQ2IiwxMDQsIk51bVBhZDYiLDEwMiwiVktfTlVNUEFENiIsZSxlXSxbMSwxMDEsIk51bXBhZDciLDEwNSwiTnVtUGFkNyIsMTAzLCJWS19OVU1QQUQ3IixlLGVdLFsxLDEwMiwiTnVtcGFkOCIsMTA2LCJOdW1QYWQ4IiwxMDQsIlZLX05VTVBBRDgiLGUsZV0sWzEsMTAzLCJOdW1wYWQ5IiwxMDcsIk51bVBhZDkiLDEwNSwiVktfTlVNUEFEOSIsZSxlXSxbMSwxMDQsIk51bXBhZDAiLDk4LCJOdW1QYWQwIiw5NiwiVktfTlVNUEFEMCIsZSxlXSxbMSwxMDUsIk51bXBhZERlY2ltYWwiLDExMiwiTnVtUGFkX0RlY2ltYWwiLDExMCwiVktfREVDSU1BTCIsZSxlXSxbMCwxMDYsIkludGxCYWNrc2xhc2giLDk3LCJPRU1fMTAyIiwyMjYsIlZLX09FTV8xMDIiLGUsZV0sWzEsMTA3LCJDb250ZXh0TWVudSIsNTgsIkNvbnRleHRNZW51Iiw5MyxlLGUsZV0sWzEsMTA4LCJQb3dlciIsMCxlLDAsZSxlLGVdLFsxLDEwOSwiTnVtcGFkRXF1YWwiLDAsZSwwLGUsZSxlXSxbMSwxMTAsIkYxMyIsNzEsIkYxMyIsMTI0LCJWS19GMTMiLGUsZV0sWzEsMTExLCJGMTQiLDcyLCJGMTQiLDEyNSwiVktfRjE0IixlLGVdLFsxLDExMiwiRjE1Iiw3MywiRjE1IiwxMjYsIlZLX0YxNSIsZSxlXSxbMSwxMTMsIkYxNiIsNzQsIkYxNiIsMTI3LCJWS19GMTYiLGUsZV0sWzEsMTE0LCJGMTciLDc1LCJGMTciLDEyOCwiVktfRjE3IixlLGVdLFsxLDExNSwiRjE4Iiw3NiwiRjE4IiwxMjksIlZLX0YxOCIsZSxlXSxbMSwxMTYsIkYxOSIsNzcsIkYxOSIsMTMwLCJWS19GMTkiLGUsZV0sWzEsMTE3LCJGMjAiLDc4LCJGMjAiLDEzMSwiVktfRjIwIixlLGVdLFsxLDExOCwiRjIxIiw3OSwiRjIxIiwxMzIsIlZLX0YyMSIsZSxlXSxbMSwxMTksIkYyMiIsODAsIkYyMiIsMTMzLCJWS19GMjIiLGUsZV0sWzEsMTIwLCJGMjMiLDgxLCJGMjMiLDEzNCwiVktfRjIzIixlLGVdLFsxLDEyMSwiRjI0Iiw4MiwiRjI0IiwxMzUsIlZLX0YyNCIsZSxlXSxbMSwxMjIsIk9wZW4iLDAsZSwwLGUsZSxlXSxbMSwxMjMsIkhlbHAiLDAsZSwwLGUsZSxlXSxbMSwxMjQsIlNlbGVjdCIsMCxlLDAsZSxlLGVdLFsxLDEyNSwiQWdhaW4iLDAsZSwwLGUsZSxlXSxbMSwxMjYsIlVuZG8iLDAsZSwwLGUsZSxlXSxbMSwxMjcsIkN1dCIsMCxlLDAsZSxlLGVdLFsxLDEyOCwiQ29weSIsMCxlLDAsZSxlLGVdLFsxLDEyOSwiUGFzdGUiLDAsZSwwLGUsZSxlXSxbMSwxMzAsIkZpbmQiLDAsZSwwLGUsZSxlXSxbMSwxMzEsIkF1ZGlvVm9sdW1lTXV0ZSIsMTE3LCJBdWRpb1ZvbHVtZU11dGUiLDE3MywiVktfVk9MVU1FX01VVEUiLGUsZV0sWzEsMTMyLCJBdWRpb1ZvbHVtZVVwIiwxMTgsIkF1ZGlvVm9sdW1lVXAiLDE3NSwiVktfVk9MVU1FX1VQIixlLGVdLFsxLDEzMywiQXVkaW9Wb2x1bWVEb3duIiwxMTksIkF1ZGlvVm9sdW1lRG93biIsMTc0LCJWS19WT0xVTUVfRE9XTiIsZSxlXSxbMSwxMzQsIk51bXBhZENvbW1hIiwxMTAsIk51bVBhZF9TZXBhcmF0b3IiLDEwOCwiVktfU0VQQVJBVE9SIixlLGVdLFswLDEzNSwiSW50bFJvIiwxMTUsIkFCTlRfQzEiLDE5MywiVktfQUJOVF9DMSIsZSxlXSxbMSwxMzYsIkthbmFNb2RlIiwwLGUsMCxlLGUsZV0sWzAsMTM3LCJJbnRsWWVuIiwwLGUsMCxlLGUsZV0sWzEsMTM4LCJDb252ZXJ0IiwwLGUsMCxlLGUsZV0sWzEsMTM5LCJOb25Db252ZXJ0IiwwLGUsMCxlLGUsZV0sWzEsMTQwLCJMYW5nMSIsMCxlLDAsZSxlLGVdLFsxLDE0MSwiTGFuZzIiLDAsZSwwLGUsZSxlXSxbMSwxNDIsIkxhbmczIiwwLGUsMCxlLGUsZV0sWzEsMTQzLCJMYW5nNCIsMCxlLDAsZSxlLGVdLFsxLDE0NCwiTGFuZzUiLDAsZSwwLGUsZSxlXSxbMSwxNDUsIkFib3J0IiwwLGUsMCxlLGUsZV0sWzEsMTQ2LCJQcm9wcyIsMCxlLDAsZSxlLGVdLFsxLDE0NywiTnVtcGFkUGFyZW5MZWZ0IiwwLGUsMCxlLGUsZV0sWzEsMTQ4LCJOdW1wYWRQYXJlblJpZ2h0IiwwLGUsMCxlLGUsZV0sWzEsMTQ5LCJOdW1wYWRCYWNrc3BhY2UiLDAsZSwwLGUsZSxlXSxbMSwxNTAsIk51bXBhZE1lbW9yeVN0b3JlIiwwLGUsMCxlLGUsZV0sWzEsMTUxLCJOdW1wYWRNZW1vcnlSZWNhbGwiLDAsZSwwLGUsZSxlXSxbMSwxNTIsIk51bXBhZE1lbW9yeUNsZWFyIiwwLGUsMCxlLGUsZV0sWzEsMTUzLCJOdW1wYWRNZW1vcnlBZGQiLDAsZSwwLGUsZSxlXSxbMSwxNTQsIk51bXBhZE1lbW9yeVN1YnRyYWN0IiwwLGUsMCxlLGUsZV0sWzEsMTU1LCJOdW1wYWRDbGVhciIsMTMxLCJDbGVhciIsMTIsIlZLX0NMRUFSIixlLGVdLFsxLDE1NiwiTnVtcGFkQ2xlYXJFbnRyeSIsMCxlLDAsZSxlLGVdLFsxLDAsZSw1LCJDdHJsIiwxNywiVktfQ09OVFJPTCIsZSxlXSxbMSwwLGUsNCwiU2hpZnQiLDE2LCJWS19TSElGVCIsZSxlXSxbMSwwLGUsNiwiQWx0IiwxOCwiVktfTUVOVSIsZSxlXSxbMSwwLGUsNTcsIk1ldGEiLDkxLCJWS19DT01NQU5EIixlLGVdLFsxLDE1NywiQ29udHJvbExlZnQiLDUsZSwwLCJWS19MQ09OVFJPTCIsZSxlXSxbMSwxNTgsIlNoaWZ0TGVmdCIsNCxlLDAsIlZLX0xTSElGVCIsZSxlXSxbMSwxNTksIkFsdExlZnQiLDYsZSwwLCJWS19MTUVOVSIsZSxlXSxbMSwxNjAsIk1ldGFMZWZ0Iiw1NyxlLDAsIlZLX0xXSU4iLGUsZV0sWzEsMTYxLCJDb250cm9sUmlnaHQiLDUsZSwwLCJWS19SQ09OVFJPTCIsZSxlXSxbMSwxNjIsIlNoaWZ0UmlnaHQiLDQsZSwwLCJWS19SU0hJRlQiLGUsZV0sWzEsMTYzLCJBbHRSaWdodCIsNixlLDAsIlZLX1JNRU5VIixlLGVdLFsxLDE2NCwiTWV0YVJpZ2h0Iiw1NyxlLDAsIlZLX1JXSU4iLGUsZV0sWzEsMTY1LCJCcmlnaHRuZXNzVXAiLDAsZSwwLGUsZSxlXSxbMSwxNjYsIkJyaWdodG5lc3NEb3duIiwwLGUsMCxlLGUsZV0sWzEsMTY3LCJNZWRpYVBsYXkiLDAsZSwwLGUsZSxlXSxbMSwxNjgsIk1lZGlhUmVjb3JkIiwwLGUsMCxlLGUsZV0sWzEsMTY5LCJNZWRpYUZhc3RGb3J3YXJkIiwwLGUsMCxlLGUsZV0sWzEsMTcwLCJNZWRpYVJld2luZCIsMCxlLDAsZSxlLGVdLFsxLDE3MSwiTWVkaWFUcmFja05leHQiLDEyNCwiTWVkaWFUcmFja05leHQiLDE3NiwiVktfTUVESUFfTkVYVF9UUkFDSyIsZSxlXSxbMSwxNzIsIk1lZGlhVHJhY2tQcmV2aW91cyIsMTI1LCJNZWRpYVRyYWNrUHJldmlvdXMiLDE3NywiVktfTUVESUFfUFJFVl9UUkFDSyIsZSxlXSxbMSwxNzMsIk1lZGlhU3RvcCIsMTI2LCJNZWRpYVN0b3AiLDE3OCwiVktfTUVESUFfU1RPUCIsZSxlXSxbMSwxNzQsIkVqZWN0IiwwLGUsMCxlLGUsZV0sWzEsMTc1LCJNZWRpYVBsYXlQYXVzZSIsMTI3LCJNZWRpYVBsYXlQYXVzZSIsMTc5LCJWS19NRURJQV9QTEFZX1BBVVNFIixlLGVdLFsxLDE3NiwiTWVkaWFTZWxlY3QiLDEyOCwiTGF1bmNoTWVkaWFQbGF5ZXIiLDE4MSwiVktfTUVESUFfTEFVTkNIX01FRElBX1NFTEVDVCIsZSxlXSxbMSwxNzcsIkxhdW5jaE1haWwiLDEyOSwiTGF1bmNoTWFpbCIsMTgwLCJWS19NRURJQV9MQVVOQ0hfTUFJTCIsZSxlXSxbMSwxNzgsIkxhdW5jaEFwcDIiLDEzMCwiTGF1bmNoQXBwMiIsMTgzLCJWS19NRURJQV9MQVVOQ0hfQVBQMiIsZSxlXSxbMSwxNzksIkxhdW5jaEFwcDEiLDAsZSwwLCJWS19NRURJQV9MQVVOQ0hfQVBQMSIsZSxlXSxbMSwxODAsIlNlbGVjdFRhc2siLDAsZSwwLGUsZSxlXSxbMSwxODEsIkxhdW5jaFNjcmVlblNhdmVyIiwwLGUsMCxlLGUsZV0sWzEsMTgyLCJCcm93c2VyU2VhcmNoIiwxMjAsIkJyb3dzZXJTZWFyY2giLDE3MCwiVktfQlJPV1NFUl9TRUFSQ0giLGUsZV0sWzEsMTgzLCJCcm93c2VySG9tZSIsMTIxLCJCcm93c2VySG9tZSIsMTcyLCJWS19CUk9XU0VSX0hPTUUiLGUsZV0sWzEsMTg0LCJCcm93c2VyQmFjayIsMTIyLCJCcm93c2VyQmFjayIsMTY2LCJWS19CUk9XU0VSX0JBQ0siLGUsZV0sWzEsMTg1LCJCcm93c2VyRm9yd2FyZCIsMTIzLCJCcm93c2VyRm9yd2FyZCIsMTY3LCJWS19CUk9XU0VSX0ZPUldBUkQiLGUsZV0sWzEsMTg2LCJCcm93c2VyU3RvcCIsMCxlLDAsIlZLX0JST1dTRVJfU1RPUCIsZSxlXSxbMSwxODcsIkJyb3dzZXJSZWZyZXNoIiwwLGUsMCwiVktfQlJPV1NFUl9SRUZSRVNIIixlLGVdLFsxLDE4OCwiQnJvd3NlckZhdm9yaXRlcyIsMCxlLDAsIlZLX0JST1dTRVJfRkFWT1JJVEVTIixlLGVdLFsxLDE4OSwiWm9vbVRvZ2dsZSIsMCxlLDAsZSxlLGVdLFsxLDE5MCwiTWFpbFJlcGx5IiwwLGUsMCxlLGUsZV0sWzEsMTkxLCJNYWlsRm9yd2FyZCIsMCxlLDAsZSxlLGVdLFsxLDE5MiwiTWFpbFNlbmQiLDAsZSwwLGUsZSxlXSxbMSwwLGUsMTE0LCJLZXlJbkNvbXBvc2l0aW9uIiwyMjksZSxlLGVdLFsxLDAsZSwxMTYsIkFCTlRfQzIiLDE5NCwiVktfQUJOVF9DMiIsZSxlXSxbMSwwLGUsOTYsIk9FTV84IiwyMjMsIlZLX09FTV84IixlLGVdLFsxLDAsZSwwLGUsMCwiVktfS0FOQSIsZSxlXSxbMSwwLGUsMCxlLDAsIlZLX0hBTkdVTCIsZSxlXSxbMSwwLGUsMCxlLDAsIlZLX0pVTkpBIixlLGVdLFsxLDAsZSwwLGUsMCwiVktfRklOQUwiLGUsZV0sWzEsMCxlLDAsZSwwLCJWS19IQU5KQSIsZSxlXSxbMSwwLGUsMCxlLDAsIlZLX0tBTkpJIixlLGVdLFsxLDAsZSwwLGUsMCwiVktfQ09OVkVSVCIsZSxlXSxbMSwwLGUsMCxlLDAsIlZLX05PTkNPTlZFUlQiLGUsZV0sWzEsMCxlLDAsZSwwLCJWS19BQ0NFUFQiLGUsZV0sWzEsMCxlLDAsZSwwLCJWS19NT0RFQ0hBTkdFIixlLGVdLFsxLDAsZSwwLGUsMCwiVktfU0VMRUNUIixlLGVdLFsxLDAsZSwwLGUsMCwiVktfUFJJTlQiLGUsZV0sWzEsMCxlLDAsZSwwLCJWS19FWEVDVVRFIixlLGVdLFsxLDAsZSwwLGUsMCwiVktfU05BUFNIT1QiLGUsZV0sWzEsMCxlLDAsZSwwLCJWS19IRUxQIixlLGVdLFsxLDAsZSwwLGUsMCwiVktfQVBQUyIsZSxlXSxbMSwwLGUsMCxlLDAsIlZLX1BST0NFU1NLRVkiLGUsZV0sWzEsMCxlLDAsZSwwLCJWS19QQUNLRVQiLGUsZV0sWzEsMCxlLDAsZSwwLCJWS19EQkVfU0JDU0NIQVIiLGUsZV0sWzEsMCxlLDAsZSwwLCJWS19EQkVfREJDU0NIQVIiLGUsZV0sWzEsMCxlLDAsZSwwLCJWS19BVFROIixlLGVdLFsxLDAsZSwwLGUsMCwiVktfQ1JTRUwiLGUsZV0sWzEsMCxlLDAsZSwwLCJWS19FWFNFTCIsZSxlXSxbMSwwLGUsMCxlLDAsIlZLX0VSRU9GIixlLGVdLFsxLDAsZSwwLGUsMCwiVktfUExBWSIsZSxlXSxbMSwwLGUsMCxlLDAsIlZLX1pPT00iLGUsZV0sWzEsMCxlLDAsZSwwLCJWS19OT05BTUUiLGUsZV0sWzEsMCxlLDAsZSwwLCJWS19QQTEiLGUsZV0sWzEsMCxlLDAsZSwwLCJWS19PRU1fQ0xFQVIiLGUsZV1dLG49W10scj1bXTtmb3IoY29uc3QgZSBvZiB0KXtjb25zdFt0LGksbyxzLGEsbCxjLGgsZF09ZTtpZihyW2ldfHwocltpXT0hMCxEdFtvXT1pLFR0W28udG9Mb3dlckNhc2UoKV09aSksIW5bc10pe2lmKG5bc109ITAsIWEpdGhyb3cgbmV3IEVycm9yKGBTdHJpbmcgcmVwcmVzZW50YXRpb24gbWlzc2luZyBmb3Iga2V5IGNvZGUgJHtzfSBhcm91bmQgc2NhbiBjb2RlICR7b31gKTtFdC5kZWZpbmUocyxhKSxSdC5kZWZpbmUocyxofHxhKSxGdC5kZWZpbmUocyxkfHxofHxhKX1sJiYoTnRbbF09cyl9fSgpLGZ1bmN0aW9uKGUpe2UudG9TdHJpbmc9ZnVuY3Rpb24oZSl7cmV0dXJuIEV0LmtleUNvZGVUb1N0cihlKX0sZS5mcm9tU3RyaW5nPWZ1bmN0aW9uKGUpe3JldHVybiBFdC5zdHJUb0tleUNvZGUoZSl9LGUudG9Vc2VyU2V0dGluZ3NVUz1mdW5jdGlvbihlKXtyZXR1cm4gUnQua2V5Q29kZVRvU3RyKGUpfSxlLnRvVXNlclNldHRpbmdzR2VuZXJhbD1mdW5jdGlvbihlKXtyZXR1cm4gRnQua2V5Q29kZVRvU3RyKGUpfSxlLmZyb21Vc2VyU2V0dGluZ3M9ZnVuY3Rpb24oZSl7cmV0dXJuIFJ0LnN0clRvS2V5Q29kZShlKXx8RnQuc3RyVG9LZXlDb2RlKGUpfSxlLnRvRWxlY3Ryb25BY2NlbGVyYXRvcj1mdW5jdGlvbihlKXtpZihlPj05OCYmZTw9MTEzKXJldHVybiBudWxsO3N3aXRjaChlKXtjYXNlIDE2OnJldHVybiJVcCI7Y2FzZSAxODpyZXR1cm4iRG93biI7Y2FzZSAxNTpyZXR1cm4iTGVmdCI7Y2FzZSAxNzpyZXR1cm4iUmlnaHQifXJldHVybiBFdC5rZXlDb2RlVG9TdHIoZSl9fShBdHx8KEF0PXt9KSk7Y2xhc3MgTXQgZXh0ZW5kcyBydHtjb25zdHJ1Y3RvcihlLHQsbixyKXtzdXBlcihlLHQsbixyKSx0aGlzLnNlbGVjdGlvblN0YXJ0TGluZU51bWJlcj1lLHRoaXMuc2VsZWN0aW9uU3RhcnRDb2x1bW49dCx0aGlzLnBvc2l0aW9uTGluZU51bWJlcj1uLHRoaXMucG9zaXRpb25Db2x1bW49cn10b1N0cmluZygpe3JldHVybiJbIit0aGlzLnNlbGVjdGlvblN0YXJ0TGluZU51bWJlcisiLCIrdGhpcy5zZWxlY3Rpb25TdGFydENvbHVtbisiIC0+ICIrdGhpcy5wb3NpdGlvbkxpbmVOdW1iZXIrIiwiK3RoaXMucG9zaXRpb25Db2x1bW4rIl0ifWVxdWFsc1NlbGVjdGlvbihlKXtyZXR1cm4gTXQuc2VsZWN0aW9uc0VxdWFsKHRoaXMsZSl9c3RhdGljIHNlbGVjdGlvbnNFcXVhbChlLHQpe3JldHVybiBlLnNlbGVjdGlvblN0YXJ0TGluZU51bWJlcj09PXQuc2VsZWN0aW9uU3RhcnRMaW5lTnVtYmVyJiZlLnNlbGVjdGlvblN0YXJ0Q29sdW1uPT09dC5zZWxlY3Rpb25TdGFydENvbHVtbiYmZS5wb3NpdGlvbkxpbmVOdW1iZXI9PT10LnBvc2l0aW9uTGluZU51bWJlciYmZS5wb3NpdGlvbkNvbHVtbj09PXQucG9zaXRpb25Db2x1bW59Z2V0RGlyZWN0aW9uKCl7cmV0dXJuIHRoaXMuc2VsZWN0aW9uU3RhcnRMaW5lTnVtYmVyPT09dGhpcy5zdGFydExpbmVOdW1iZXImJnRoaXMuc2VsZWN0aW9uU3RhcnRDb2x1bW49PT10aGlzLnN0YXJ0Q29sdW1uPzA6MX1zZXRFbmRQb3NpdGlvbihlLHQpe3JldHVybiAwPT09dGhpcy5nZXREaXJlY3Rpb24oKT9uZXcgTXQodGhpcy5zdGFydExpbmVOdW1iZXIsdGhpcy5zdGFydENvbHVtbixlLHQpOm5ldyBNdChlLHQsdGhpcy5zdGFydExpbmVOdW1iZXIsdGhpcy5zdGFydENvbHVtbil9Z2V0UG9zaXRpb24oKXtyZXR1cm4gbmV3IG50KHRoaXMucG9zaXRpb25MaW5lTnVtYmVyLHRoaXMucG9zaXRpb25Db2x1bW4pfWdldFNlbGVjdGlvblN0YXJ0KCl7cmV0dXJuIG5ldyBudCh0aGlzLnNlbGVjdGlvblN0YXJ0TGluZU51bWJlcix0aGlzLnNlbGVjdGlvblN0YXJ0Q29sdW1uKX1zZXRTdGFydFBvc2l0aW9uKGUsdCl7cmV0dXJuIDA9PT10aGlzLmdldERpcmVjdGlvbigpP25ldyBNdChlLHQsdGhpcy5lbmRMaW5lTnVtYmVyLHRoaXMuZW5kQ29sdW1uKTpuZXcgTXQodGhpcy5lbmRMaW5lTnVtYmVyLHRoaXMuZW5kQ29sdW1uLGUsdCl9c3RhdGljIGZyb21Qb3NpdGlvbnMoZSx0PWUpe3JldHVybiBuZXcgTXQoZS5saW5lTnVtYmVyLGUuY29sdW1uLHQubGluZU51bWJlcix0LmNvbHVtbil9c3RhdGljIGZyb21SYW5nZShlLHQpe3JldHVybiAwPT09dD9uZXcgTXQoZS5zdGFydExpbmVOdW1iZXIsZS5zdGFydENvbHVtbixlLmVuZExpbmVOdW1iZXIsZS5lbmRDb2x1bW4pOm5ldyBNdChlLmVuZExpbmVOdW1iZXIsZS5lbmRDb2x1bW4sZS5zdGFydExpbmVOdW1iZXIsZS5zdGFydENvbHVtbil9c3RhdGljIGxpZnRTZWxlY3Rpb24oZSl7cmV0dXJuIG5ldyBNdChlLnNlbGVjdGlvblN0YXJ0TGluZU51bWJlcixlLnNlbGVjdGlvblN0YXJ0Q29sdW1uLGUucG9zaXRpb25MaW5lTnVtYmVyLGUucG9zaXRpb25Db2x1bW4pfXN0YXRpYyBzZWxlY3Rpb25zQXJyRXF1YWwoZSx0KXtpZihlJiYhdHx8IWUmJnQpcmV0dXJuITE7aWYoIWUmJiF0KXJldHVybiEwO2lmKGUubGVuZ3RoIT09dC5sZW5ndGgpcmV0dXJuITE7Zm9yKGxldCBuPTAscj1lLmxlbmd0aDtuPHI7bisrKWlmKCF0aGlzLnNlbGVjdGlvbnNFcXVhbChlW25dLHRbbl0pKXJldHVybiExO3JldHVybiEwfXN0YXRpYyBpc0lTZWxlY3Rpb24oZSl7cmV0dXJuIGUmJiJudW1iZXIiPT10eXBlb2YgZS5zZWxlY3Rpb25TdGFydExpbmVOdW1iZXImJiJudW1iZXIiPT10eXBlb2YgZS5zZWxlY3Rpb25TdGFydENvbHVtbiYmIm51bWJlciI9PXR5cGVvZiBlLnBvc2l0aW9uTGluZU51bWJlciYmIm51bWJlciI9PXR5cGVvZiBlLnBvc2l0aW9uQ29sdW1ufXN0YXRpYyBjcmVhdGVXaXRoRGlyZWN0aW9uKGUsdCxuLHIsaSl7cmV0dXJuIDA9PT1pP25ldyBNdChlLHQsbixyKTpuZXcgTXQobixyLGUsdCl9fWNvbnN0IHp0PU9iamVjdC5jcmVhdGUobnVsbCk7ZnVuY3Rpb24gSXQoZSx0KXtpZigic3RyaW5nIj09dHlwZW9mIHQpe2NvbnN0IG49enRbdF07aWYodm9pZCAwPT09bil0aHJvdyBuZXcgRXJyb3IoYCR7ZX0gcmVmZXJlbmNlcyBhbiB1bmtub3duIGNvZGljb246ICR7dH1gKTt0PW59cmV0dXJuIHp0W2VdPXQse2lkOmV9fWNvbnN0IFB0PXthZGQ6SXQoImFkZCIsNmU0KSxwbHVzOkl0KCJwbHVzIiw2ZTQpLGdpc3ROZXc6SXQoImdpc3QtbmV3Iiw2ZTQpLHJlcG9DcmVhdGU6SXQoInJlcG8tY3JlYXRlIiw2ZTQpLGxpZ2h0YnVsYjpJdCgibGlnaHRidWxiIiw2MDAwMSksbGlnaHRCdWxiOkl0KCJsaWdodC1idWxiIiw2MDAwMSkscmVwbzpJdCgicmVwbyIsNjAwMDIpLHJlcG9EZWxldGU6SXQoInJlcG8tZGVsZXRlIiw2MDAwMiksZ2lzdEZvcms6SXQoImdpc3QtZm9yayIsNjAwMDMpLHJlcG9Gb3JrZWQ6SXQoInJlcG8tZm9ya2VkIiw2MDAwMyksZ2l0UHVsbFJlcXVlc3Q6SXQoImdpdC1wdWxsLXJlcXVlc3QiLDYwMDA0KSxnaXRQdWxsUmVxdWVzdEFiYW5kb25lZDpJdCgiZ2l0LXB1bGwtcmVxdWVzdC1hYmFuZG9uZWQiLDYwMDA0KSxyZWNvcmRLZXlzOkl0KCJyZWNvcmQta2V5cyIsNjAwMDUpLGtleWJvYXJkOkl0KCJrZXlib2FyZCIsNjAwMDUpLHRhZzpJdCgidGFnIiw2MDAwNiksdGFnQWRkOkl0KCJ0YWctYWRkIiw2MDAwNiksdGFnUmVtb3ZlOkl0KCJ0YWctcmVtb3ZlIiw2MDAwNikscGVyc29uOkl0KCJwZXJzb24iLDYwMDA3KSxwZXJzb25Gb2xsb3c6SXQoInBlcnNvbi1mb2xsb3ciLDYwMDA3KSxwZXJzb25PdXRsaW5lOkl0KCJwZXJzb24tb3V0bGluZSIsNjAwMDcpLHBlcnNvbkZpbGxlZDpJdCgicGVyc29uLWZpbGxlZCIsNjAwMDcpLGdpdEJyYW5jaDpJdCgiZ2l0LWJyYW5jaCIsNjAwMDgpLGdpdEJyYW5jaENyZWF0ZTpJdCgiZ2l0LWJyYW5jaC1jcmVhdGUiLDYwMDA4KSxnaXRCcmFuY2hEZWxldGU6SXQoImdpdC1icmFuY2gtZGVsZXRlIiw2MDAwOCksc291cmNlQ29udHJvbDpJdCgic291cmNlLWNvbnRyb2wiLDYwMDA4KSxtaXJyb3I6SXQoIm1pcnJvciIsNjAwMDkpLG1pcnJvclB1YmxpYzpJdCgibWlycm9yLXB1YmxpYyIsNjAwMDkpLHN0YXI6SXQoInN0YXIiLDYwMDEwKSxzdGFyQWRkOkl0KCJzdGFyLWFkZCIsNjAwMTApLHN0YXJEZWxldGU6SXQoInN0YXItZGVsZXRlIiw2MDAxMCksc3RhckVtcHR5Okl0KCJzdGFyLWVtcHR5Iiw2MDAxMCksY29tbWVudDpJdCgiY29tbWVudCIsNjAwMTEpLGNvbW1lbnRBZGQ6SXQoImNvbW1lbnQtYWRkIiw2MDAxMSksYWxlcnQ6SXQoImFsZXJ0Iiw2MDAxMiksd2FybmluZzpJdCgid2FybmluZyIsNjAwMTIpLHNlYXJjaDpJdCgic2VhcmNoIiw2MDAxMyksc2VhcmNoU2F2ZTpJdCgic2VhcmNoLXNhdmUiLDYwMDEzKSxsb2dPdXQ6SXQoImxvZy1vdXQiLDYwMDE0KSxzaWduT3V0Okl0KCJzaWduLW91dCIsNjAwMTQpLGxvZ0luOkl0KCJsb2ctaW4iLDYwMDE1KSxzaWduSW46SXQoInNpZ24taW4iLDYwMDE1KSxleWU6SXQoImV5ZSIsNjAwMTYpLGV5ZVVud2F0Y2g6SXQoImV5ZS11bndhdGNoIiw2MDAxNiksZXllV2F0Y2g6SXQoImV5ZS13YXRjaCIsNjAwMTYpLGNpcmNsZUZpbGxlZDpJdCgiY2lyY2xlLWZpbGxlZCIsNjAwMTcpLHByaW1pdGl2ZURvdDpJdCgicHJpbWl0aXZlLWRvdCIsNjAwMTcpLGNsb3NlRGlydHk6SXQoImNsb3NlLWRpcnR5Iiw2MDAxNyksZGVidWdCcmVha3BvaW50Okl0KCJkZWJ1Zy1icmVha3BvaW50Iiw2MDAxNyksZGVidWdCcmVha3BvaW50RGlzYWJsZWQ6SXQoImRlYnVnLWJyZWFrcG9pbnQtZGlzYWJsZWQiLDYwMDE3KSxkZWJ1Z0hpbnQ6SXQoImRlYnVnLWhpbnQiLDYwMDE3KSxwcmltaXRpdmVTcXVhcmU6SXQoInByaW1pdGl2ZS1zcXVhcmUiLDYwMDE4KSxlZGl0Okl0KCJlZGl0Iiw2MDAxOSkscGVuY2lsOkl0KCJwZW5jaWwiLDYwMDE5KSxpbmZvOkl0KCJpbmZvIiw2MDAyMCksaXNzdWVPcGVuZWQ6SXQoImlzc3VlLW9wZW5lZCIsNjAwMjApLGdpc3RQcml2YXRlOkl0KCJnaXN0LXByaXZhdGUiLDYwMDIxKSxnaXRGb3JrUHJpdmF0ZTpJdCgiZ2l0LWZvcmstcHJpdmF0ZSIsNjAwMjEpLGxvY2s6SXQoImxvY2siLDYwMDIxKSxtaXJyb3JQcml2YXRlOkl0KCJtaXJyb3ItcHJpdmF0ZSIsNjAwMjEpLGNsb3NlOkl0KCJjbG9zZSIsNjAwMjIpLHJlbW92ZUNsb3NlOkl0KCJyZW1vdmUtY2xvc2UiLDYwMDIyKSx4Okl0KCJ4Iiw2MDAyMikscmVwb1N5bmM6SXQoInJlcG8tc3luYyIsNjAwMjMpLHN5bmM6SXQoInN5bmMiLDYwMDIzKSxjbG9uZTpJdCgiY2xvbmUiLDYwMDI0KSxkZXNrdG9wRG93bmxvYWQ6SXQoImRlc2t0b3AtZG93bmxvYWQiLDYwMDI0KSxiZWFrZXI6SXQoImJlYWtlciIsNjAwMjUpLG1pY3Jvc2NvcGU6SXQoIm1pY3Jvc2NvcGUiLDYwMDI1KSx2bTpJdCgidm0iLDYwMDI2KSxkZXZpY2VEZXNrdG9wOkl0KCJkZXZpY2UtZGVza3RvcCIsNjAwMjYpLGZpbGU6SXQoImZpbGUiLDYwMDI3KSxmaWxlVGV4dDpJdCgiZmlsZS10ZXh0Iiw2MDAyNyksbW9yZTpJdCgibW9yZSIsNjAwMjgpLGVsbGlwc2lzOkl0KCJlbGxpcHNpcyIsNjAwMjgpLGtlYmFiSG9yaXpvbnRhbDpJdCgia2ViYWItaG9yaXpvbnRhbCIsNjAwMjgpLG1haWxSZXBseTpJdCgibWFpbC1yZXBseSIsNjAwMjkpLHJlcGx5Okl0KCJyZXBseSIsNjAwMjkpLG9yZ2FuaXphdGlvbjpJdCgib3JnYW5pemF0aW9uIiw2MDAzMCksb3JnYW5pemF0aW9uRmlsbGVkOkl0KCJvcmdhbml6YXRpb24tZmlsbGVkIiw2MDAzMCksb3JnYW5pemF0aW9uT3V0bGluZTpJdCgib3JnYW5pemF0aW9uLW91dGxpbmUiLDYwMDMwKSxuZXdGaWxlOkl0KCJuZXctZmlsZSIsNjAwMzEpLGZpbGVBZGQ6SXQoImZpbGUtYWRkIiw2MDAzMSksbmV3Rm9sZGVyOkl0KCJuZXctZm9sZGVyIiw2MDAzMiksZmlsZURpcmVjdG9yeUNyZWF0ZTpJdCgiZmlsZS1kaXJlY3RvcnktY3JlYXRlIiw2MDAzMiksdHJhc2g6SXQoInRyYXNoIiw2MDAzMyksdHJhc2hjYW46SXQoInRyYXNoY2FuIiw2MDAzMyksaGlzdG9yeTpJdCgiaGlzdG9yeSIsNjAwMzQpLGNsb2NrOkl0KCJjbG9jayIsNjAwMzQpLGZvbGRlcjpJdCgiZm9sZGVyIiw2MDAzNSksZmlsZURpcmVjdG9yeTpJdCgiZmlsZS1kaXJlY3RvcnkiLDYwMDM1KSxzeW1ib2xGb2xkZXI6SXQoInN5bWJvbC1mb2xkZXIiLDYwMDM1KSxsb2dvR2l0aHViOkl0KCJsb2dvLWdpdGh1YiIsNjAwMzYpLG1hcmtHaXRodWI6SXQoIm1hcmstZ2l0aHViIiw2MDAzNiksZ2l0aHViOkl0KCJnaXRodWIiLDYwMDM2KSx0ZXJtaW5hbDpJdCgidGVybWluYWwiLDYwMDM3KSxjb25zb2xlOkl0KCJjb25zb2xlIiw2MDAzNykscmVwbDpJdCgicmVwbCIsNjAwMzcpLHphcDpJdCgiemFwIiw2MDAzOCksc3ltYm9sRXZlbnQ6SXQoInN5bWJvbC1ldmVudCIsNjAwMzgpLGVycm9yOkl0KCJlcnJvciIsNjAwMzkpLHN0b3A6SXQoInN0b3AiLDYwMDM5KSx2YXJpYWJsZTpJdCgidmFyaWFibGUiLDYwMDQwKSxzeW1ib2xWYXJpYWJsZTpJdCgic3ltYm9sLXZhcmlhYmxlIiw2MDA0MCksYXJyYXk6SXQoImFycmF5Iiw2MDA0Miksc3ltYm9sQXJyYXk6SXQoInN5bWJvbC1hcnJheSIsNjAwNDIpLHN5bWJvbE1vZHVsZTpJdCgic3ltYm9sLW1vZHVsZSIsNjAwNDMpLHN5bWJvbFBhY2thZ2U6SXQoInN5bWJvbC1wYWNrYWdlIiw2MDA0Myksc3ltYm9sTmFtZXNwYWNlOkl0KCJzeW1ib2wtbmFtZXNwYWNlIiw2MDA0Myksc3ltYm9sT2JqZWN0Okl0KCJzeW1ib2wtb2JqZWN0Iiw2MDA0Myksc3ltYm9sTWV0aG9kOkl0KCJzeW1ib2wtbWV0aG9kIiw2MDA0NCksc3ltYm9sRnVuY3Rpb246SXQoInN5bWJvbC1mdW5jdGlvbiIsNjAwNDQpLHN5bWJvbENvbnN0cnVjdG9yOkl0KCJzeW1ib2wtY29uc3RydWN0b3IiLDYwMDQ0KSxzeW1ib2xCb29sZWFuOkl0KCJzeW1ib2wtYm9vbGVhbiIsNjAwNDcpLHN5bWJvbE51bGw6SXQoInN5bWJvbC1udWxsIiw2MDA0Nyksc3ltYm9sTnVtZXJpYzpJdCgic3ltYm9sLW51bWVyaWMiLDYwMDQ4KSxzeW1ib2xOdW1iZXI6SXQoInN5bWJvbC1udW1iZXIiLDYwMDQ4KSxzeW1ib2xTdHJ1Y3R1cmU6SXQoInN5bWJvbC1zdHJ1Y3R1cmUiLDYwMDQ5KSxzeW1ib2xTdHJ1Y3Q6SXQoInN5bWJvbC1zdHJ1Y3QiLDYwMDQ5KSxzeW1ib2xQYXJhbWV0ZXI6SXQoInN5bWJvbC1wYXJhbWV0ZXIiLDYwMDUwKSxzeW1ib2xUeXBlUGFyYW1ldGVyOkl0KCJzeW1ib2wtdHlwZS1wYXJhbWV0ZXIiLDYwMDUwKSxzeW1ib2xLZXk6SXQoInN5bWJvbC1rZXkiLDYwMDUxKSxzeW1ib2xUZXh0Okl0KCJzeW1ib2wtdGV4dCIsNjAwNTEpLHN5bWJvbFJlZmVyZW5jZTpJdCgic3ltYm9sLXJlZmVyZW5jZSIsNjAwNTIpLGdvVG9GaWxlOkl0KCJnby10by1maWxlIiw2MDA1Miksc3ltYm9sRW51bTpJdCgic3ltYm9sLWVudW0iLDYwMDUzKSxzeW1ib2xWYWx1ZTpJdCgic3ltYm9sLXZhbHVlIiw2MDA1Myksc3ltYm9sUnVsZXI6SXQoInN5bWJvbC1ydWxlciIsNjAwNTQpLHN5bWJvbFVuaXQ6SXQoInN5bWJvbC11bml0Iiw2MDA1NCksYWN0aXZhdGVCcmVha3BvaW50czpJdCgiYWN0aXZhdGUtYnJlYWtwb2ludHMiLDYwMDU1KSxhcmNoaXZlOkl0KCJhcmNoaXZlIiw2MDA1NiksYXJyb3dCb3RoOkl0KCJhcnJvdy1ib3RoIiw2MDA1NyksYXJyb3dEb3duOkl0KCJhcnJvdy1kb3duIiw2MDA1OCksYXJyb3dMZWZ0Okl0KCJhcnJvdy1sZWZ0Iiw2MDA1OSksYXJyb3dSaWdodDpJdCgiYXJyb3ctcmlnaHQiLDYwMDYwKSxhcnJvd1NtYWxsRG93bjpJdCgiYXJyb3ctc21hbGwtZG93biIsNjAwNjEpLGFycm93U21hbGxMZWZ0Okl0KCJhcnJvdy1zbWFsbC1sZWZ0Iiw2MDA2MiksYXJyb3dTbWFsbFJpZ2h0Okl0KCJhcnJvdy1zbWFsbC1yaWdodCIsNjAwNjMpLGFycm93U21hbGxVcDpJdCgiYXJyb3ctc21hbGwtdXAiLDYwMDY0KSxhcnJvd1VwOkl0KCJhcnJvdy11cCIsNjAwNjUpLGJlbGw6SXQoImJlbGwiLDYwMDY2KSxib2xkOkl0KCJib2xkIiw2MDA2NyksYm9vazpJdCgiYm9vayIsNjAwNjgpLGJvb2ttYXJrOkl0KCJib29rbWFyayIsNjAwNjkpLGRlYnVnQnJlYWtwb2ludENvbmRpdGlvbmFsVW52ZXJpZmllZDpJdCgiZGVidWctYnJlYWtwb2ludC1jb25kaXRpb25hbC11bnZlcmlmaWVkIiw2MDA3MCksZGVidWdCcmVha3BvaW50Q29uZGl0aW9uYWw6SXQoImRlYnVnLWJyZWFrcG9pbnQtY29uZGl0aW9uYWwiLDYwMDcxKSxkZWJ1Z0JyZWFrcG9pbnRDb25kaXRpb25hbERpc2FibGVkOkl0KCJkZWJ1Zy1icmVha3BvaW50LWNvbmRpdGlvbmFsLWRpc2FibGVkIiw2MDA3MSksZGVidWdCcmVha3BvaW50RGF0YVVudmVyaWZpZWQ6SXQoImRlYnVnLWJyZWFrcG9pbnQtZGF0YS11bnZlcmlmaWVkIiw2MDA3MiksZGVidWdCcmVha3BvaW50RGF0YTpJdCgiZGVidWctYnJlYWtwb2ludC1kYXRhIiw2MDA3MyksZGVidWdCcmVha3BvaW50RGF0YURpc2FibGVkOkl0KCJkZWJ1Zy1icmVha3BvaW50LWRhdGEtZGlzYWJsZWQiLDYwMDczKSxkZWJ1Z0JyZWFrcG9pbnRMb2dVbnZlcmlmaWVkOkl0KCJkZWJ1Zy1icmVha3BvaW50LWxvZy11bnZlcmlmaWVkIiw2MDA3NCksZGVidWdCcmVha3BvaW50TG9nOkl0KCJkZWJ1Zy1icmVha3BvaW50LWxvZyIsNjAwNzUpLGRlYnVnQnJlYWtwb2ludExvZ0Rpc2FibGVkOkl0KCJkZWJ1Zy1icmVha3BvaW50LWxvZy1kaXNhYmxlZCIsNjAwNzUpLGJyaWVmY2FzZTpJdCgiYnJpZWZjYXNlIiw2MDA3NiksYnJvYWRjYXN0Okl0KCJicm9hZGNhc3QiLDYwMDc3KSxicm93c2VyOkl0KCJicm93c2VyIiw2MDA3OCksYnVnOkl0KCJidWciLDYwMDc5KSxjYWxlbmRhcjpJdCgiY2FsZW5kYXIiLDYwMDgwKSxjYXNlU2Vuc2l0aXZlOkl0KCJjYXNlLXNlbnNpdGl2ZSIsNjAwODEpLGNoZWNrOkl0KCJjaGVjayIsNjAwODIpLGNoZWNrbGlzdDpJdCgiY2hlY2tsaXN0Iiw2MDA4MyksY2hldnJvbkRvd246SXQoImNoZXZyb24tZG93biIsNjAwODQpLGRyb3BEb3duQnV0dG9uOkl0KCJkcm9wLWRvd24tYnV0dG9uIiw2MDA4NCksY2hldnJvbkxlZnQ6SXQoImNoZXZyb24tbGVmdCIsNjAwODUpLGNoZXZyb25SaWdodDpJdCgiY2hldnJvbi1yaWdodCIsNjAwODYpLGNoZXZyb25VcDpJdCgiY2hldnJvbi11cCIsNjAwODcpLGNocm9tZUNsb3NlOkl0KCJjaHJvbWUtY2xvc2UiLDYwMDg4KSxjaHJvbWVNYXhpbWl6ZTpJdCgiY2hyb21lLW1heGltaXplIiw2MDA4OSksY2hyb21lTWluaW1pemU6SXQoImNocm9tZS1taW5pbWl6ZSIsNjAwOTApLGNocm9tZVJlc3RvcmU6SXQoImNocm9tZS1yZXN0b3JlIiw2MDA5MSksY2lyY2xlOkl0KCJjaXJjbGUiLDYwMDkyKSxjaXJjbGVPdXRsaW5lOkl0KCJjaXJjbGUtb3V0bGluZSIsNjAwOTIpLGRlYnVnQnJlYWtwb2ludFVudmVyaWZpZWQ6SXQoImRlYnVnLWJyZWFrcG9pbnQtdW52ZXJpZmllZCIsNjAwOTIpLGNpcmNsZVNsYXNoOkl0KCJjaXJjbGUtc2xhc2giLDYwMDkzKSxjaXJjdWl0Qm9hcmQ6SXQoImNpcmN1aXQtYm9hcmQiLDYwMDk0KSxjbGVhckFsbDpJdCgiY2xlYXItYWxsIiw2MDA5NSksY2xpcHB5Okl0KCJjbGlwcHkiLDYwMDk2KSxjbG9zZUFsbDpJdCgiY2xvc2UtYWxsIiw2MDA5NyksY2xvdWREb3dubG9hZDpJdCgiY2xvdWQtZG93bmxvYWQiLDYwMDk4KSxjbG91ZFVwbG9hZDpJdCgiY2xvdWQtdXBsb2FkIiw2MDA5OSksY29kZTpJdCgiY29kZSIsNjAxMDApLGNvbGxhcHNlQWxsOkl0KCJjb2xsYXBzZS1hbGwiLDYwMTAxKSxjb2xvck1vZGU6SXQoImNvbG9yLW1vZGUiLDYwMTAyKSxjb21tZW50RGlzY3Vzc2lvbjpJdCgiY29tbWVudC1kaXNjdXNzaW9uIiw2MDEwMyksY29tcGFyZUNoYW5nZXM6SXQoImNvbXBhcmUtY2hhbmdlcyIsNjAxNTcpLGNyZWRpdENhcmQ6SXQoImNyZWRpdC1jYXJkIiw2MDEwNSksZGFzaDpJdCgiZGFzaCIsNjAxMDgpLGRhc2hib2FyZDpJdCgiZGFzaGJvYXJkIiw2MDEwOSksZGF0YWJhc2U6SXQoImRhdGFiYXNlIiw2MDExMCksZGVidWdDb250aW51ZTpJdCgiZGVidWctY29udGludWUiLDYwMTExKSxkZWJ1Z0Rpc2Nvbm5lY3Q6SXQoImRlYnVnLWRpc2Nvbm5lY3QiLDYwMTEyKSxkZWJ1Z1BhdXNlOkl0KCJkZWJ1Zy1wYXVzZSIsNjAxMTMpLGRlYnVnUmVzdGFydDpJdCgiZGVidWctcmVzdGFydCIsNjAxMTQpLGRlYnVnU3RhcnQ6SXQoImRlYnVnLXN0YXJ0Iiw2MDExNSksZGVidWdTdGVwSW50bzpJdCgiZGVidWctc3RlcC1pbnRvIiw2MDExNiksZGVidWdTdGVwT3V0Okl0KCJkZWJ1Zy1zdGVwLW91dCIsNjAxMTcpLGRlYnVnU3RlcE92ZXI6SXQoImRlYnVnLXN0ZXAtb3ZlciIsNjAxMTgpLGRlYnVnU3RvcDpJdCgiZGVidWctc3RvcCIsNjAxMTkpLGRlYnVnOkl0KCJkZWJ1ZyIsNjAxMjApLGRldmljZUNhbWVyYVZpZGVvOkl0KCJkZXZpY2UtY2FtZXJhLXZpZGVvIiw2MDEyMSksZGV2aWNlQ2FtZXJhOkl0KCJkZXZpY2UtY2FtZXJhIiw2MDEyMiksZGV2aWNlTW9iaWxlOkl0KCJkZXZpY2UtbW9iaWxlIiw2MDEyMyksZGlmZkFkZGVkOkl0KCJkaWZmLWFkZGVkIiw2MDEyNCksZGlmZklnbm9yZWQ6SXQoImRpZmYtaWdub3JlZCIsNjAxMjUpLGRpZmZNb2RpZmllZDpJdCgiZGlmZi1tb2RpZmllZCIsNjAxMjYpLGRpZmZSZW1vdmVkOkl0KCJkaWZmLXJlbW92ZWQiLDYwMTI3KSxkaWZmUmVuYW1lZDpJdCgiZGlmZi1yZW5hbWVkIiw2MDEyOCksZGlmZjpJdCgiZGlmZiIsNjAxMjkpLGRpc2NhcmQ6SXQoImRpc2NhcmQiLDYwMTMwKSxlZGl0b3JMYXlvdXQ6SXQoImVkaXRvci1sYXlvdXQiLDYwMTMxKSxlbXB0eVdpbmRvdzpJdCgiZW1wdHktd2luZG93Iiw2MDEzMiksZXhjbHVkZTpJdCgiZXhjbHVkZSIsNjAxMzMpLGV4dGVuc2lvbnM6SXQoImV4dGVuc2lvbnMiLDYwMTM0KSxleWVDbG9zZWQ6SXQoImV5ZS1jbG9zZWQiLDYwMTM1KSxmaWxlQmluYXJ5Okl0KCJmaWxlLWJpbmFyeSIsNjAxMzYpLGZpbGVDb2RlOkl0KCJmaWxlLWNvZGUiLDYwMTM3KSxmaWxlTWVkaWE6SXQoImZpbGUtbWVkaWEiLDYwMTM4KSxmaWxlUGRmOkl0KCJmaWxlLXBkZiIsNjAxMzkpLGZpbGVTdWJtb2R1bGU6SXQoImZpbGUtc3VibW9kdWxlIiw2MDE0MCksZmlsZVN5bWxpbmtEaXJlY3Rvcnk6SXQoImZpbGUtc3ltbGluay1kaXJlY3RvcnkiLDYwMTQxKSxmaWxlU3ltbGlua0ZpbGU6SXQoImZpbGUtc3ltbGluay1maWxlIiw2MDE0MiksZmlsZVppcDpJdCgiZmlsZS16aXAiLDYwMTQzKSxmaWxlczpJdCgiZmlsZXMiLDYwMTQ0KSxmaWx0ZXI6SXQoImZpbHRlciIsNjAxNDUpLGZsYW1lOkl0KCJmbGFtZSIsNjAxNDYpLGZvbGREb3duOkl0KCJmb2xkLWRvd24iLDYwMTQ3KSxmb2xkVXA6SXQoImZvbGQtdXAiLDYwMTQ4KSxmb2xkOkl0KCJmb2xkIiw2MDE0OSksZm9sZGVyQWN0aXZlOkl0KCJmb2xkZXItYWN0aXZlIiw2MDE1MCksZm9sZGVyT3BlbmVkOkl0KCJmb2xkZXItb3BlbmVkIiw2MDE1MSksZ2VhcjpJdCgiZ2VhciIsNjAxNTIpLGdpZnQ6SXQoImdpZnQiLDYwMTUzKSxnaXN0U2VjcmV0Okl0KCJnaXN0LXNlY3JldCIsNjAxNTQpLGdpc3Q6SXQoImdpc3QiLDYwMTU1KSxnaXRDb21taXQ6SXQoImdpdC1jb21taXQiLDYwMTU2KSxnaXRDb21wYXJlOkl0KCJnaXQtY29tcGFyZSIsNjAxNTcpLGdpdE1lcmdlOkl0KCJnaXQtbWVyZ2UiLDYwMTU4KSxnaXRodWJBY3Rpb246SXQoImdpdGh1Yi1hY3Rpb24iLDYwMTU5KSxnaXRodWJBbHQ6SXQoImdpdGh1Yi1hbHQiLDYwMTYwKSxnbG9iZTpJdCgiZ2xvYmUiLDYwMTYxKSxncmFiYmVyOkl0KCJncmFiYmVyIiw2MDE2MiksZ3JhcGg6SXQoImdyYXBoIiw2MDE2MyksZ3JpcHBlcjpJdCgiZ3JpcHBlciIsNjAxNjQpLGhlYXJ0Okl0KCJoZWFydCIsNjAxNjUpLGhvbWU6SXQoImhvbWUiLDYwMTY2KSxob3Jpem9udGFsUnVsZTpJdCgiaG9yaXpvbnRhbC1ydWxlIiw2MDE2NyksaHVib3Q6SXQoImh1Ym90Iiw2MDE2OCksaW5ib3g6SXQoImluYm94Iiw2MDE2OSksaXNzdWVDbG9zZWQ6SXQoImlzc3VlLWNsb3NlZCIsNjAzMjQpLGlzc3VlUmVvcGVuZWQ6SXQoImlzc3VlLXJlb3BlbmVkIiw2MDE3MSksaXNzdWVzOkl0KCJpc3N1ZXMiLDYwMTcyKSxpdGFsaWM6SXQoIml0YWxpYyIsNjAxNzMpLGplcnNleTpJdCgiamVyc2V5Iiw2MDE3NCksanNvbjpJdCgianNvbiIsNjAxNzUpLGJyYWNrZXQ6SXQoImJyYWNrZXQiLDYwMTc1KSxrZWJhYlZlcnRpY2FsOkl0KCJrZWJhYi12ZXJ0aWNhbCIsNjAxNzYpLGtleTpJdCgia2V5Iiw2MDE3NyksbGF3Okl0KCJsYXciLDYwMTc4KSxsaWdodGJ1bGJBdXRvZml4Okl0KCJsaWdodGJ1bGItYXV0b2ZpeCIsNjAxNzkpLGxpbmtFeHRlcm5hbDpJdCgibGluay1leHRlcm5hbCIsNjAxODApLGxpbms6SXQoImxpbmsiLDYwMTgxKSxsaXN0T3JkZXJlZDpJdCgibGlzdC1vcmRlcmVkIiw2MDE4MiksbGlzdFVub3JkZXJlZDpJdCgibGlzdC11bm9yZGVyZWQiLDYwMTgzKSxsaXZlU2hhcmU6SXQoImxpdmUtc2hhcmUiLDYwMTg0KSxsb2FkaW5nOkl0KCJsb2FkaW5nIiw2MDE4NSksbG9jYXRpb246SXQoImxvY2F0aW9uIiw2MDE4NiksbWFpbFJlYWQ6SXQoIm1haWwtcmVhZCIsNjAxODcpLG1haWw6SXQoIm1haWwiLDYwMTg4KSxtYXJrZG93bjpJdCgibWFya2Rvd24iLDYwMTg5KSxtZWdhcGhvbmU6SXQoIm1lZ2FwaG9uZSIsNjAxOTApLG1lbnRpb246SXQoIm1lbnRpb24iLDYwMTkxKSxtaWxlc3RvbmU6SXQoIm1pbGVzdG9uZSIsNjAxOTIpLG1vcnRhckJvYXJkOkl0KCJtb3J0YXItYm9hcmQiLDYwMTkzKSxtb3ZlOkl0KCJtb3ZlIiw2MDE5NCksbXVsdGlwbGVXaW5kb3dzOkl0KCJtdWx0aXBsZS13aW5kb3dzIiw2MDE5NSksbXV0ZTpJdCgibXV0ZSIsNjAxOTYpLG5vTmV3bGluZTpJdCgibm8tbmV3bGluZSIsNjAxOTcpLG5vdGU6SXQoIm5vdGUiLDYwMTk4KSxvY3RvZmFjZTpJdCgib2N0b2ZhY2UiLDYwMTk5KSxvcGVuUHJldmlldzpJdCgib3Blbi1wcmV2aWV3Iiw2MDIwMCkscGFja2FnZV86SXQoInBhY2thZ2UiLDYwMjAxKSxwYWludGNhbjpJdCgicGFpbnRjYW4iLDYwMjAyKSxwaW46SXQoInBpbiIsNjAyMDMpLHBsYXk6SXQoInBsYXkiLDYwMjA0KSxydW46SXQoInJ1biIsNjAyMDQpLHBsdWc6SXQoInBsdWciLDYwMjA1KSxwcmVzZXJ2ZUNhc2U6SXQoInByZXNlcnZlLWNhc2UiLDYwMjA2KSxwcmV2aWV3Okl0KCJwcmV2aWV3Iiw2MDIwNykscHJvamVjdDpJdCgicHJvamVjdCIsNjAyMDgpLHB1bHNlOkl0KCJwdWxzZSIsNjAyMDkpLHF1ZXN0aW9uOkl0KCJxdWVzdGlvbiIsNjAyMTApLHF1b3RlOkl0KCJxdW90ZSIsNjAyMTEpLHJhZGlvVG93ZXI6SXQoInJhZGlvLXRvd2VyIiw2MDIxMikscmVhY3Rpb25zOkl0KCJyZWFjdGlvbnMiLDYwMjEzKSxyZWZlcmVuY2VzOkl0KCJyZWZlcmVuY2VzIiw2MDIxNCkscmVmcmVzaDpJdCgicmVmcmVzaCIsNjAyMTUpLHJlZ2V4Okl0KCJyZWdleCIsNjAyMTYpLHJlbW90ZUV4cGxvcmVyOkl0KCJyZW1vdGUtZXhwbG9yZXIiLDYwMjE3KSxyZW1vdGU6SXQoInJlbW90ZSIsNjAyMTgpLHJlbW92ZTpJdCgicmVtb3ZlIiw2MDIxOSkscmVwbGFjZUFsbDpJdCgicmVwbGFjZS1hbGwiLDYwMjIwKSxyZXBsYWNlOkl0KCJyZXBsYWNlIiw2MDIyMSkscmVwb0Nsb25lOkl0KCJyZXBvLWNsb25lIiw2MDIyMikscmVwb0ZvcmNlUHVzaDpJdCgicmVwby1mb3JjZS1wdXNoIiw2MDIyMykscmVwb1B1bGw6SXQoInJlcG8tcHVsbCIsNjAyMjQpLHJlcG9QdXNoOkl0KCJyZXBvLXB1c2giLDYwMjI1KSxyZXBvcnQ6SXQoInJlcG9ydCIsNjAyMjYpLHJlcXVlc3RDaGFuZ2VzOkl0KCJyZXF1ZXN0LWNoYW5nZXMiLDYwMjI3KSxyb2NrZXQ6SXQoInJvY2tldCIsNjAyMjgpLHJvb3RGb2xkZXJPcGVuZWQ6SXQoInJvb3QtZm9sZGVyLW9wZW5lZCIsNjAyMjkpLHJvb3RGb2xkZXI6SXQoInJvb3QtZm9sZGVyIiw2MDIzMCkscnNzOkl0KCJyc3MiLDYwMjMxKSxydWJ5Okl0KCJydWJ5Iiw2MDIzMiksc2F2ZUFsbDpJdCgic2F2ZS1hbGwiLDYwMjMzKSxzYXZlQXM6SXQoInNhdmUtYXMiLDYwMjM0KSxzYXZlOkl0KCJzYXZlIiw2MDIzNSksc2NyZWVuRnVsbDpJdCgic2NyZWVuLWZ1bGwiLDYwMjM2KSxzY3JlZW5Ob3JtYWw6SXQoInNjcmVlbi1ub3JtYWwiLDYwMjM3KSxzZWFyY2hTdG9wOkl0KCJzZWFyY2gtc3RvcCIsNjAyMzgpLHNlcnZlcjpJdCgic2VydmVyIiw2MDI0MCksc2V0dGluZ3NHZWFyOkl0KCJzZXR0aW5ncy1nZWFyIiw2MDI0MSksc2V0dGluZ3M6SXQoInNldHRpbmdzIiw2MDI0Miksc2hpZWxkOkl0KCJzaGllbGQiLDYwMjQzKSxzbWlsZXk6SXQoInNtaWxleSIsNjAyNDQpLHNvcnRQcmVjZWRlbmNlOkl0KCJzb3J0LXByZWNlZGVuY2UiLDYwMjQ1KSxzcGxpdEhvcml6b250YWw6SXQoInNwbGl0LWhvcml6b250YWwiLDYwMjQ2KSxzcGxpdFZlcnRpY2FsOkl0KCJzcGxpdC12ZXJ0aWNhbCIsNjAyNDcpLHNxdWlycmVsOkl0KCJzcXVpcnJlbCIsNjAyNDgpLHN0YXJGdWxsOkl0KCJzdGFyLWZ1bGwiLDYwMjQ5KSxzdGFySGFsZjpJdCgic3Rhci1oYWxmIiw2MDI1MCksc3ltYm9sQ2xhc3M6SXQoInN5bWJvbC1jbGFzcyIsNjAyNTEpLHN5bWJvbENvbG9yOkl0KCJzeW1ib2wtY29sb3IiLDYwMjUyKSxzeW1ib2xDdXN0b21Db2xvcjpJdCgic3ltYm9sLWN1c3RvbWNvbG9yIiw2MDI1Miksc3ltYm9sQ29uc3RhbnQ6SXQoInN5bWJvbC1jb25zdGFudCIsNjAyNTMpLHN5bWJvbEVudW1NZW1iZXI6SXQoInN5bWJvbC1lbnVtLW1lbWJlciIsNjAyNTQpLHN5bWJvbEZpZWxkOkl0KCJzeW1ib2wtZmllbGQiLDYwMjU1KSxzeW1ib2xGaWxlOkl0KCJzeW1ib2wtZmlsZSIsNjAyNTYpLHN5bWJvbEludGVyZmFjZTpJdCgic3ltYm9sLWludGVyZmFjZSIsNjAyNTcpLHN5bWJvbEtleXdvcmQ6SXQoInN5bWJvbC1rZXl3b3JkIiw2MDI1OCksc3ltYm9sTWlzYzpJdCgic3ltYm9sLW1pc2MiLDYwMjU5KSxzeW1ib2xPcGVyYXRvcjpJdCgic3ltYm9sLW9wZXJhdG9yIiw2MDI2MCksc3ltYm9sUHJvcGVydHk6SXQoInN5bWJvbC1wcm9wZXJ0eSIsNjAyNjEpLHdyZW5jaDpJdCgid3JlbmNoIiw2MDI2MSksd3JlbmNoU3ViYWN0aW9uOkl0KCJ3cmVuY2gtc3ViYWN0aW9uIiw2MDI2MSksc3ltYm9sU25pcHBldDpJdCgic3ltYm9sLXNuaXBwZXQiLDYwMjYyKSx0YXNrbGlzdDpJdCgidGFza2xpc3QiLDYwMjYzKSx0ZWxlc2NvcGU6SXQoInRlbGVzY29wZSIsNjAyNjQpLHRleHRTaXplOkl0KCJ0ZXh0LXNpemUiLDYwMjY1KSx0aHJlZUJhcnM6SXQoInRocmVlLWJhcnMiLDYwMjY2KSx0aHVtYnNkb3duOkl0KCJ0aHVtYnNkb3duIiw2MDI2NyksdGh1bWJzdXA6SXQoInRodW1ic3VwIiw2MDI2OCksdG9vbHM6SXQoInRvb2xzIiw2MDI2OSksdHJpYW5nbGVEb3duOkl0KCJ0cmlhbmdsZS1kb3duIiw2MDI3MCksdHJpYW5nbGVMZWZ0Okl0KCJ0cmlhbmdsZS1sZWZ0Iiw2MDI3MSksdHJpYW5nbGVSaWdodDpJdCgidHJpYW5nbGUtcmlnaHQiLDYwMjcyKSx0cmlhbmdsZVVwOkl0KCJ0cmlhbmdsZS11cCIsNjAyNzMpLHR3aXR0ZXI6SXQoInR3aXR0ZXIiLDYwMjc0KSx1bmZvbGQ6SXQoInVuZm9sZCIsNjAyNzUpLHVubG9jazpJdCgidW5sb2NrIiw2MDI3NiksdW5tdXRlOkl0KCJ1bm11dGUiLDYwMjc3KSx1bnZlcmlmaWVkOkl0KCJ1bnZlcmlmaWVkIiw2MDI3OCksdmVyaWZpZWQ6SXQoInZlcmlmaWVkIiw2MDI3OSksdmVyc2lvbnM6SXQoInZlcnNpb25zIiw2MDI4MCksdm1BY3RpdmU6SXQoInZtLWFjdGl2ZSIsNjAyODEpLHZtT3V0bGluZTpJdCgidm0tb3V0bGluZSIsNjAyODIpLHZtUnVubmluZzpJdCgidm0tcnVubmluZyIsNjAyODMpLHdhdGNoOkl0KCJ3YXRjaCIsNjAyODQpLHdoaXRlc3BhY2U6SXQoIndoaXRlc3BhY2UiLDYwMjg1KSx3aG9sZVdvcmQ6SXQoIndob2xlLXdvcmQiLDYwMjg2KSx3aW5kb3c6SXQoIndpbmRvdyIsNjAyODcpLHdvcmRXcmFwOkl0KCJ3b3JkLXdyYXAiLDYwMjg4KSx6b29tSW46SXQoInpvb20taW4iLDYwMjg5KSx6b29tT3V0Okl0KCJ6b29tLW91dCIsNjAyOTApLGxpc3RGaWx0ZXI6SXQoImxpc3QtZmlsdGVyIiw2MDI5MSksbGlzdEZsYXQ6SXQoImxpc3QtZmxhdCIsNjAyOTIpLGxpc3RTZWxlY3Rpb246SXQoImxpc3Qtc2VsZWN0aW9uIiw2MDI5Myksc2VsZWN0aW9uOkl0KCJzZWxlY3Rpb24iLDYwMjkzKSxsaXN0VHJlZTpJdCgibGlzdC10cmVlIiw2MDI5NCksZGVidWdCcmVha3BvaW50RnVuY3Rpb25VbnZlcmlmaWVkOkl0KCJkZWJ1Zy1icmVha3BvaW50LWZ1bmN0aW9uLXVudmVyaWZpZWQiLDYwMjk1KSxkZWJ1Z0JyZWFrcG9pbnRGdW5jdGlvbjpJdCgiZGVidWctYnJlYWtwb2ludC1mdW5jdGlvbiIsNjAyOTYpLGRlYnVnQnJlYWtwb2ludEZ1bmN0aW9uRGlzYWJsZWQ6SXQoImRlYnVnLWJyZWFrcG9pbnQtZnVuY3Rpb24tZGlzYWJsZWQiLDYwMjk2KSxkZWJ1Z1N0YWNrZnJhbWVBY3RpdmU6SXQoImRlYnVnLXN0YWNrZnJhbWUtYWN0aXZlIiw2MDI5NyksY2lyY2xlU21hbGxGaWxsZWQ6SXQoImNpcmNsZS1zbWFsbC1maWxsZWQiLDYwMjk4KSxkZWJ1Z1N0YWNrZnJhbWVEb3Q6SXQoImRlYnVnLXN0YWNrZnJhbWUtZG90Iiw2MDI5OCksZGVidWdTdGFja2ZyYW1lOkl0KCJkZWJ1Zy1zdGFja2ZyYW1lIiw2MDI5OSksZGVidWdTdGFja2ZyYW1lRm9jdXNlZDpJdCgiZGVidWctc3RhY2tmcmFtZS1mb2N1c2VkIiw2MDI5OSksZGVidWdCcmVha3BvaW50VW5zdXBwb3J0ZWQ6SXQoImRlYnVnLWJyZWFrcG9pbnQtdW5zdXBwb3J0ZWQiLDYwMzAwKSxzeW1ib2xTdHJpbmc6SXQoInN5bWJvbC1zdHJpbmciLDYwMzAxKSxkZWJ1Z1JldmVyc2VDb250aW51ZTpJdCgiZGVidWctcmV2ZXJzZS1jb250aW51ZSIsNjAzMDIpLGRlYnVnU3RlcEJhY2s6SXQoImRlYnVnLXN0ZXAtYmFjayIsNjAzMDMpLGRlYnVnUmVzdGFydEZyYW1lOkl0KCJkZWJ1Zy1yZXN0YXJ0LWZyYW1lIiw2MDMwNCksY2FsbEluY29taW5nOkl0KCJjYWxsLWluY29taW5nIiw2MDMwNiksY2FsbE91dGdvaW5nOkl0KCJjYWxsLW91dGdvaW5nIiw2MDMwNyksbWVudTpJdCgibWVudSIsNjAzMDgpLGV4cGFuZEFsbDpJdCgiZXhwYW5kLWFsbCIsNjAzMDkpLGZlZWRiYWNrOkl0KCJmZWVkYmFjayIsNjAzMTApLGdyb3VwQnlSZWZUeXBlOkl0KCJncm91cC1ieS1yZWYtdHlwZSIsNjAzMTEpLHVuZ3JvdXBCeVJlZlR5cGU6SXQoInVuZ3JvdXAtYnktcmVmLXR5cGUiLDYwMzEyKSxhY2NvdW50Okl0KCJhY2NvdW50Iiw2MDMxMyksYmVsbERvdDpJdCgiYmVsbC1kb3QiLDYwMzE0KSxkZWJ1Z0NvbnNvbGU6SXQoImRlYnVnLWNvbnNvbGUiLDYwMzE1KSxsaWJyYXJ5Okl0KCJsaWJyYXJ5Iiw2MDMxNiksb3V0cHV0Okl0KCJvdXRwdXQiLDYwMzE3KSxydW5BbGw6SXQoInJ1bi1hbGwiLDYwMzE4KSxzeW5jSWdub3JlZDpJdCgic3luYy1pZ25vcmVkIiw2MDMxOSkscGlubmVkOkl0KCJwaW5uZWQiLDYwMzIwKSxnaXRodWJJbnZlcnRlZDpJdCgiZ2l0aHViLWludmVydGVkIiw2MDMyMSksZGVidWdBbHQ6SXQoImRlYnVnLWFsdCIsNjAzMDUpLHNlcnZlclByb2Nlc3M6SXQoInNlcnZlci1wcm9jZXNzIiw2MDMyMiksc2VydmVyRW52aXJvbm1lbnQ6SXQoInNlcnZlci1lbnZpcm9ubWVudCIsNjAzMjMpLHBhc3M6SXQoInBhc3MiLDYwMzI0KSxzdG9wQ2lyY2xlOkl0KCJzdG9wLWNpcmNsZSIsNjAzMjUpLHBsYXlDaXJjbGU6SXQoInBsYXktY2lyY2xlIiw2MDMyNikscmVjb3JkOkl0KCJyZWNvcmQiLDYwMzI3KSxkZWJ1Z0FsdFNtYWxsOkl0KCJkZWJ1Zy1hbHQtc21hbGwiLDYwMzI4KSx2bUNvbm5lY3Q6SXQoInZtLWNvbm5lY3QiLDYwMzI5KSxjbG91ZDpJdCgiY2xvdWQiLDYwMzMwKSxtZXJnZTpJdCgibWVyZ2UiLDYwMzMxKSxleHBvcnRJY29uOkl0KCJleHBvcnQiLDYwMzMyKSxncmFwaExlZnQ6SXQoImdyYXBoLWxlZnQiLDYwMzMzKSxtYWduZXQ6SXQoIm1hZ25ldCIsNjAzMzQpLG5vdGVib29rOkl0KCJub3RlYm9vayIsNjAzMzUpLHJlZG86SXQoInJlZG8iLDYwMzM2KSxjaGVja0FsbDpJdCgiY2hlY2stYWxsIiw2MDMzNykscGlubmVkRGlydHk6SXQoInBpbm5lZC1kaXJ0eSIsNjAzMzgpLHBhc3NGaWxsZWQ6SXQoInBhc3MtZmlsbGVkIiw2MDMzOSksY2lyY2xlTGFyZ2VGaWxsZWQ6SXQoImNpcmNsZS1sYXJnZS1maWxsZWQiLDYwMzQwKSxjaXJjbGVMYXJnZTpJdCgiY2lyY2xlLWxhcmdlIiw2MDM0MSksY2lyY2xlTGFyZ2VPdXRsaW5lOkl0KCJjaXJjbGUtbGFyZ2Utb3V0bGluZSIsNjAzNDEpLGNvbWJpbmU6SXQoImNvbWJpbmUiLDYwMzQyKSxnYXRoZXI6SXQoImdhdGhlciIsNjAzNDIpLHRhYmxlOkl0KCJ0YWJsZSIsNjAzNDMpLHZhcmlhYmxlR3JvdXA6SXQoInZhcmlhYmxlLWdyb3VwIiw2MDM0NCksdHlwZUhpZXJhcmNoeTpJdCgidHlwZS1oaWVyYXJjaHkiLDYwMzQ1KSx0eXBlSGllcmFyY2h5U3ViOkl0KCJ0eXBlLWhpZXJhcmNoeS1zdWIiLDYwMzQ2KSx0eXBlSGllcmFyY2h5U3VwZXI6SXQoInR5cGUtaGllcmFyY2h5LXN1cGVyIiw2MDM0NyksZ2l0UHVsbFJlcXVlc3RDcmVhdGU6SXQoImdpdC1wdWxsLXJlcXVlc3QtY3JlYXRlIiw2MDM0OCkscnVuQWJvdmU6SXQoInJ1bi1hYm92ZSIsNjAzNDkpLHJ1bkJlbG93Okl0KCJydW4tYmVsb3ciLDYwMzUwKSxub3RlYm9va1RlbXBsYXRlOkl0KCJub3RlYm9vay10ZW1wbGF0ZSIsNjAzNTEpLGRlYnVnUmVydW46SXQoImRlYnVnLXJlcnVuIiw2MDM1Miksd29ya3NwYWNlVHJ1c3RlZDpJdCgid29ya3NwYWNlLXRydXN0ZWQiLDYwMzUzKSx3b3Jrc3BhY2VVbnRydXN0ZWQ6SXQoIndvcmtzcGFjZS11bnRydXN0ZWQiLDYwMzU0KSx3b3Jrc3BhY2VVbnNwZWNpZmllZDpJdCgid29ya3NwYWNlLXVuc3BlY2lmaWVkIiw2MDM1NSksdGVybWluYWxDbWQ6SXQoInRlcm1pbmFsLWNtZCIsNjAzNTYpLHRlcm1pbmFsRGViaWFuOkl0KCJ0ZXJtaW5hbC1kZWJpYW4iLDYwMzU3KSx0ZXJtaW5hbExpbnV4Okl0KCJ0ZXJtaW5hbC1saW51eCIsNjAzNTgpLHRlcm1pbmFsUG93ZXJzaGVsbDpJdCgidGVybWluYWwtcG93ZXJzaGVsbCIsNjAzNTkpLHRlcm1pbmFsVG11eDpJdCgidGVybWluYWwtdG11eCIsNjAzNjApLHRlcm1pbmFsVWJ1bnR1Okl0KCJ0ZXJtaW5hbC11YnVudHUiLDYwMzYxKSx0ZXJtaW5hbEJhc2g6SXQoInRlcm1pbmFsLWJhc2giLDYwMzYyKSxhcnJvd1N3YXA6SXQoImFycm93LXN3YXAiLDYwMzYzKSxjb3B5Okl0KCJjb3B5Iiw2MDM2NCkscGVyc29uQWRkOkl0KCJwZXJzb24tYWRkIiw2MDM2NSksZmlsdGVyRmlsbGVkOkl0KCJmaWx0ZXItZmlsbGVkIiw2MDM2Niksd2FuZDpJdCgid2FuZCIsNjAzNjcpLGRlYnVnTGluZUJ5TGluZTpJdCgiZGVidWctbGluZS1ieS1saW5lIiw2MDM2OCksaW5zcGVjdDpJdCgiaW5zcGVjdCIsNjAzNjkpLGxheWVyczpJdCgibGF5ZXJzIiw2MDM3MCksbGF5ZXJzRG90Okl0KCJsYXllcnMtZG90Iiw2MDM3MSksbGF5ZXJzQWN0aXZlOkl0KCJsYXllcnMtYWN0aXZlIiw2MDM3MiksY29tcGFzczpJdCgiY29tcGFzcyIsNjAzNzMpLGNvbXBhc3NEb3Q6SXQoImNvbXBhc3MtZG90Iiw2MDM3NCksY29tcGFzc0FjdGl2ZTpJdCgiY29tcGFzcy1hY3RpdmUiLDYwMzc1KSxhenVyZTpJdCgiYXp1cmUiLDYwMzc2KSxpc3N1ZURyYWZ0Okl0KCJpc3N1ZS1kcmFmdCIsNjAzNzcpLGdpdFB1bGxSZXF1ZXN0Q2xvc2VkOkl0KCJnaXQtcHVsbC1yZXF1ZXN0LWNsb3NlZCIsNjAzNzgpLGdpdFB1bGxSZXF1ZXN0RHJhZnQ6SXQoImdpdC1wdWxsLXJlcXVlc3QtZHJhZnQiLDYwMzc5KSxkZWJ1Z0FsbDpJdCgiZGVidWctYWxsIiw2MDM4MCksZGVidWdDb3ZlcmFnZTpJdCgiZGVidWctY292ZXJhZ2UiLDYwMzgxKSxydW5FcnJvcnM6SXQoInJ1bi1lcnJvcnMiLDYwMzgyKSxmb2xkZXJMaWJyYXJ5Okl0KCJmb2xkZXItbGlicmFyeSIsNjAzODMpLGRlYnVnQ29udGludWVTbWFsbDpJdCgiZGVidWctY29udGludWUtc21hbGwiLDYwMzg0KSxiZWFrZXJTdG9wOkl0KCJiZWFrZXItc3RvcCIsNjAzODUpLGdyYXBoTGluZTpJdCgiZ3JhcGgtbGluZSIsNjAzODYpLGdyYXBoU2NhdHRlcjpJdCgiZ3JhcGgtc2NhdHRlciIsNjAzODcpLHBpZUNoYXJ0Okl0KCJwaWUtY2hhcnQiLDYwMzg4KSxicmFja2V0RG90Okl0KCJicmFja2V0LWRvdCIsNjAzODkpLGJyYWNrZXRFcnJvcjpJdCgiYnJhY2tldC1lcnJvciIsNjAzOTApLGxvY2tTbWFsbDpJdCgibG9jay1zbWFsbCIsNjAzOTEpLGF6dXJlRGV2b3BzOkl0KCJhenVyZS1kZXZvcHMiLDYwMzkyKSx2ZXJpZmllZEZpbGxlZDpJdCgidmVyaWZpZWQtZmlsbGVkIiw2MDM5MyksbmV3TGluZTpJdCgibmV3bGluZSIsNjAzOTQpLGxheW91dDpJdCgibGF5b3V0Iiw2MDM5NSksbGF5b3V0QWN0aXZpdHliYXJMZWZ0Okl0KCJsYXlvdXQtYWN0aXZpdHliYXItbGVmdCIsNjAzOTYpLGxheW91dEFjdGl2aXR5YmFyUmlnaHQ6SXQoImxheW91dC1hY3Rpdml0eWJhci1yaWdodCIsNjAzOTcpLGxheW91dFBhbmVsTGVmdDpJdCgibGF5b3V0LXBhbmVsLWxlZnQiLDYwMzk4KSxsYXlvdXRQYW5lbENlbnRlcjpJdCgibGF5b3V0LXBhbmVsLWNlbnRlciIsNjAzOTkpLGxheW91dFBhbmVsSnVzdGlmeTpJdCgibGF5b3V0LXBhbmVsLWp1c3RpZnkiLDYwNDAwKSxsYXlvdXRQYW5lbFJpZ2h0Okl0KCJsYXlvdXQtcGFuZWwtcmlnaHQiLDYwNDAxKSxsYXlvdXRQYW5lbDpJdCgibGF5b3V0LXBhbmVsIiw2MDQwMiksbGF5b3V0U2lkZWJhckxlZnQ6SXQoImxheW91dC1zaWRlYmFyLWxlZnQiLDYwNDAzKSxsYXlvdXRTaWRlYmFyUmlnaHQ6SXQoImxheW91dC1zaWRlYmFyLXJpZ2h0Iiw2MDQwNCksbGF5b3V0U3RhdHVzYmFyOkl0KCJsYXlvdXQtc3RhdHVzYmFyIiw2MDQwNSksbGF5b3V0TWVudWJhcjpJdCgibGF5b3V0LW1lbnViYXIiLDYwNDA2KSxsYXlvdXRDZW50ZXJlZDpJdCgibGF5b3V0LWNlbnRlcmVkIiw2MDQwNyksbGF5b3V0U2lkZWJhclJpZ2h0T2ZmOkl0KCJsYXlvdXQtc2lkZWJhci1yaWdodC1vZmYiLDYwNDE2KSxsYXlvdXRQYW5lbE9mZjpJdCgibGF5b3V0LXBhbmVsLW9mZiIsNjA0MTcpLGxheW91dFNpZGViYXJMZWZ0T2ZmOkl0KCJsYXlvdXQtc2lkZWJhci1sZWZ0LW9mZiIsNjA0MTgpLHRhcmdldDpJdCgidGFyZ2V0Iiw2MDQwOCksaW5kZW50Okl0KCJpbmRlbnQiLDYwNDA5KSxyZWNvcmRTbWFsbDpJdCgicmVjb3JkLXNtYWxsIiw2MDQxMCksZXJyb3JTbWFsbDpJdCgiZXJyb3Itc21hbGwiLDYwNDExKSxhcnJvd0NpcmNsZURvd246SXQoImFycm93LWNpcmNsZS1kb3duIiw2MDQxMiksYXJyb3dDaXJjbGVMZWZ0Okl0KCJhcnJvdy1jaXJjbGUtbGVmdCIsNjA0MTMpLGFycm93Q2lyY2xlUmlnaHQ6SXQoImFycm93LWNpcmNsZS1yaWdodCIsNjA0MTQpLGFycm93Q2lyY2xlVXA6SXQoImFycm93LWNpcmNsZS11cCIsNjA0MTUpLGhlYXJ0RmlsbGVkOkl0KCJoZWFydC1maWxsZWQiLDYwNDIwKSxtYXA6SXQoIm1hcCIsNjA0MjEpLG1hcEZpbGxlZDpJdCgibWFwLWZpbGxlZCIsNjA0MjIpLGNpcmNsZVNtYWxsOkl0KCJjaXJjbGUtc21hbGwiLDYwNDIzKSxiZWxsU2xhc2g6SXQoImJlbGwtc2xhc2giLDYwNDI0KSxiZWxsU2xhc2hEb3Q6SXQoImJlbGwtc2xhc2gtZG90Iiw2MDQyNSksY29tbWVudFVucmVzb2x2ZWQ6SXQoImNvbW1lbnQtdW5yZXNvbHZlZCIsNjA0MjYpLGdpdFB1bGxSZXF1ZXN0R29Ub0NoYW5nZXM6SXQoImdpdC1wdWxsLXJlcXVlc3QtZ28tdG8tY2hhbmdlcyIsNjA0MjcpLGdpdFB1bGxSZXF1ZXN0TmV3Q2hhbmdlczpJdCgiZ2l0LXB1bGwtcmVxdWVzdC1uZXctY2hhbmdlcyIsNjA0MjgpLHNlYXJjaEZ1enp5Okl0KCJzZWFyY2gtZnV6enkiLDYwNDI5KSxjb21tZW50RHJhZnQ6SXQoImNvbW1lbnQtZHJhZnQiLDYwNDMwKSxzZW5kOkl0KCJzZW5kIiw2MDQzMSksc3BhcmtsZTpJdCgic3BhcmtsZSIsNjA0MzIpLGluc2VydDpJdCgiaW5zZXJ0Iiw2MDQzMyksZGlhbG9nRXJyb3I6SXQoImRpYWxvZy1lcnJvciIsImVycm9yIiksZGlhbG9nV2FybmluZzpJdCgiZGlhbG9nLXdhcm5pbmciLCJ3YXJuaW5nIiksZGlhbG9nSW5mbzpJdCgiZGlhbG9nLWluZm8iLCJpbmZvIiksZGlhbG9nQ2xvc2U6SXQoImRpYWxvZy1jbG9zZSIsImNsb3NlIiksdHJlZUl0ZW1FeHBhbmRlZDpJdCgidHJlZS1pdGVtLWV4cGFuZGVkIiwiY2hldnJvbi1kb3duIiksdHJlZUZpbHRlck9uVHlwZU9uOkl0KCJ0cmVlLWZpbHRlci1vbi10eXBlLW9uIiwibGlzdC1maWx0ZXIiKSx0cmVlRmlsdGVyT25UeXBlT2ZmOkl0KCJ0cmVlLWZpbHRlci1vbi10eXBlLW9mZiIsImxpc3Qtc2VsZWN0aW9uIiksdHJlZUZpbHRlckNsZWFyOkl0KCJ0cmVlLWZpbHRlci1jbGVhciIsImNsb3NlIiksdHJlZUl0ZW1Mb2FkaW5nOkl0KCJ0cmVlLWl0ZW0tbG9hZGluZyIsImxvYWRpbmciKSxtZW51U2VsZWN0aW9uOkl0KCJtZW51LXNlbGVjdGlvbiIsImNoZWNrIiksbWVudVN1Ym1lbnU6SXQoIm1lbnUtc3VibWVudSIsImNoZXZyb24tcmlnaHQiKSxtZW51QmFyTW9yZTpJdCgibWVudWJhci1tb3JlIiwibW9yZSIpLHNjcm9sbGJhckJ1dHRvbkxlZnQ6SXQoInNjcm9sbGJhci1idXR0b24tbGVmdCIsInRyaWFuZ2xlLWxlZnQiKSxzY3JvbGxiYXJCdXR0b25SaWdodDpJdCgic2Nyb2xsYmFyLWJ1dHRvbi1yaWdodCIsInRyaWFuZ2xlLXJpZ2h0Iiksc2Nyb2xsYmFyQnV0dG9uVXA6SXQoInNjcm9sbGJhci1idXR0b24tdXAiLCJ0cmlhbmdsZS11cCIpLHNjcm9sbGJhckJ1dHRvbkRvd246SXQoInNjcm9sbGJhci1idXR0b24tZG93biIsInRyaWFuZ2xlLWRvd24iKSx0b29sQmFyTW9yZTpJdCgidG9vbGJhci1tb3JlIiwibW9yZSIpLHF1aWNrSW5wdXRCYWNrOkl0KCJxdWljay1pbnB1dC1iYWNrIiwiYXJyb3ctbGVmdCIpfTt2YXIgTHQsT3QsV3QsVnQsVXQsQnQsS3QsanQscXQsJHQsSHQsR3QsSnQsWHQsWXQsWnQsUXQsZW4sdG4sbm4scm4sb24sc24sYW4sbG4sY24saG4sZG4scG4sdW4sbW4sZm4sZ24sYm4sdm4seW4sd24seG4sU24sQ24sa24sX24sRW4sUm4sRm4sTm4sRG4sVG4sQW4sTW4sem49ZnVuY3Rpb24oZSx0LG4scil7cmV0dXJuIG5ldyhufHwobj1Qcm9taXNlKSkoKGZ1bmN0aW9uKGksbyl7ZnVuY3Rpb24gcyhlKXt0cnl7bChyLm5leHQoZSkpfWNhdGNoKGUpe28oZSl9fWZ1bmN0aW9uIGEoZSl7dHJ5e2woci50aHJvdyhlKSl9Y2F0Y2goZSl7byhlKX19ZnVuY3Rpb24gbChlKXt2YXIgdDtlLmRvbmU/aShlLnZhbHVlKToodD1lLnZhbHVlLHQgaW5zdGFuY2VvZiBuP3Q6bmV3IG4oKGZ1bmN0aW9uKGUpe2UodCl9KSkpLnRoZW4ocyxhKX1sKChyPXIuYXBwbHkoZSx0fHxbXSkpLm5leHQoKSl9KSl9O2NsYXNzIEluIGV4dGVuZHMgcHtnZXQgaXNSZXNvbHZlZCgpe3JldHVybiB0aGlzLl9pc1Jlc29sdmVkfWNvbnN0cnVjdG9yKGUsdCxuKXtzdXBlcigpLHRoaXMuX3JlZ2lzdHJ5PWUsdGhpcy5fbGFuZ3VhZ2VJZD10LHRoaXMuX2ZhY3Rvcnk9bix0aGlzLl9pc0Rpc3Bvc2VkPSExLHRoaXMuX3Jlc29sdmVQcm9taXNlPW51bGwsdGhpcy5faXNSZXNvbHZlZD0hMX1kaXNwb3NlKCl7dGhpcy5faXNEaXNwb3NlZD0hMCxzdXBlci5kaXNwb3NlKCl9cmVzb2x2ZSgpe3JldHVybiB6bih0aGlzLHZvaWQgMCx2b2lkIDAsKGZ1bmN0aW9uKigpe3JldHVybiB0aGlzLl9yZXNvbHZlUHJvbWlzZXx8KHRoaXMuX3Jlc29sdmVQcm9taXNlPXRoaXMuX2NyZWF0ZSgpKSx0aGlzLl9yZXNvbHZlUHJvbWlzZX0pKX1fY3JlYXRlKCl7cmV0dXJuIHpuKHRoaXMsdm9pZCAwLHZvaWQgMCwoZnVuY3Rpb24qKCl7Y29uc3QgZT15aWVsZCB0aGlzLl9mYWN0b3J5LnRva2VuaXphdGlvblN1cHBvcnQ7dGhpcy5faXNSZXNvbHZlZD0hMCxlJiYhdGhpcy5faXNEaXNwb3NlZCYmdGhpcy5fcmVnaXN0ZXIodGhpcy5fcmVnaXN0cnkucmVnaXN0ZXIodGhpcy5fbGFuZ3VhZ2VJZCxlKSl9KSl9fWNsYXNzIFBue2NvbnN0cnVjdG9yKGUsdCxuKXt0aGlzLm9mZnNldD1lLHRoaXMudHlwZT10LHRoaXMubGFuZ3VhZ2U9bix0aGlzLl90b2tlbkJyYW5kPXZvaWQgMH10b1N0cmluZygpe3JldHVybiIoIit0aGlzLm9mZnNldCsiLCAiK3RoaXMudHlwZSsiKSJ9fSFmdW5jdGlvbihlKXtjb25zdCB0PW5ldyBNYXA7dC5zZXQoMCxQdC5zeW1ib2xNZXRob2QpLHQuc2V0KDEsUHQuc3ltYm9sRnVuY3Rpb24pLHQuc2V0KDIsUHQuc3ltYm9sQ29uc3RydWN0b3IpLHQuc2V0KDMsUHQuc3ltYm9sRmllbGQpLHQuc2V0KDQsUHQuc3ltYm9sVmFyaWFibGUpLHQuc2V0KDUsUHQuc3ltYm9sQ2xhc3MpLHQuc2V0KDYsUHQuc3ltYm9sU3RydWN0KSx0LnNldCg3LFB0LnN5bWJvbEludGVyZmFjZSksdC5zZXQoOCxQdC5zeW1ib2xNb2R1bGUpLHQuc2V0KDksUHQuc3ltYm9sUHJvcGVydHkpLHQuc2V0KDEwLFB0LnN5bWJvbEV2ZW50KSx0LnNldCgxMSxQdC5zeW1ib2xPcGVyYXRvciksdC5zZXQoMTIsUHQuc3ltYm9sVW5pdCksdC5zZXQoMTMsUHQuc3ltYm9sVmFsdWUpLHQuc2V0KDE1LFB0LnN5bWJvbEVudW0pLHQuc2V0KDE0LFB0LnN5bWJvbENvbnN0YW50KSx0LnNldCgxNSxQdC5zeW1ib2xFbnVtKSx0LnNldCgxNixQdC5zeW1ib2xFbnVtTWVtYmVyKSx0LnNldCgxNyxQdC5zeW1ib2xLZXl3b3JkKSx0LnNldCgyNyxQdC5zeW1ib2xTbmlwcGV0KSx0LnNldCgxOCxQdC5zeW1ib2xUZXh0KSx0LnNldCgxOSxQdC5zeW1ib2xDb2xvciksdC5zZXQoMjAsUHQuc3ltYm9sRmlsZSksdC5zZXQoMjEsUHQuc3ltYm9sUmVmZXJlbmNlKSx0LnNldCgyMixQdC5zeW1ib2xDdXN0b21Db2xvciksdC5zZXQoMjMsUHQuc3ltYm9sRm9sZGVyKSx0LnNldCgyNCxQdC5zeW1ib2xUeXBlUGFyYW1ldGVyKSx0LnNldCgyNSxQdC5hY2NvdW50KSx0LnNldCgyNixQdC5pc3N1ZXMpLGUudG9JY29uPWZ1bmN0aW9uKGUpe2xldCBuPXQuZ2V0KGUpO3JldHVybiBufHwoY29uc29sZS5pbmZvKCJObyBjb2RpY29uIGZvdW5kIGZvciBDb21wbGV0aW9uSXRlbUtpbmQgIitlKSxuPVB0LnN5bWJvbFByb3BlcnR5KSxufTtjb25zdCBuPW5ldyBNYXA7bi5zZXQoIm1ldGhvZCIsMCksbi5zZXQoImZ1bmN0aW9uIiwxKSxuLnNldCgiY29uc3RydWN0b3IiLDIpLG4uc2V0KCJmaWVsZCIsMyksbi5zZXQoInZhcmlhYmxlIiw0KSxuLnNldCgiY2xhc3MiLDUpLG4uc2V0KCJzdHJ1Y3QiLDYpLG4uc2V0KCJpbnRlcmZhY2UiLDcpLG4uc2V0KCJtb2R1bGUiLDgpLG4uc2V0KCJwcm9wZXJ0eSIsOSksbi5zZXQoImV2ZW50IiwxMCksbi5zZXQoIm9wZXJhdG9yIiwxMSksbi5zZXQoInVuaXQiLDEyKSxuLnNldCgidmFsdWUiLDEzKSxuLnNldCgiY29uc3RhbnQiLDE0KSxuLnNldCgiZW51bSIsMTUpLG4uc2V0KCJlbnVtLW1lbWJlciIsMTYpLG4uc2V0KCJlbnVtTWVtYmVyIiwxNiksbi5zZXQoImtleXdvcmQiLDE3KSxuLnNldCgic25pcHBldCIsMjcpLG4uc2V0KCJ0ZXh0IiwxOCksbi5zZXQoImNvbG9yIiwxOSksbi5zZXQoImZpbGUiLDIwKSxuLnNldCgicmVmZXJlbmNlIiwyMSksbi5zZXQoImN1c3RvbWNvbG9yIiwyMiksbi5zZXQoImZvbGRlciIsMjMpLG4uc2V0KCJ0eXBlLXBhcmFtZXRlciIsMjQpLG4uc2V0KCJ0eXBlUGFyYW1ldGVyIiwyNCksbi5zZXQoImFjY291bnQiLDI1KSxuLnNldCgiaXNzdWUiLDI2KSxlLmZyb21TdHJpbmc9ZnVuY3Rpb24oZSx0KXtsZXQgcj1uLmdldChlKTtyZXR1cm4gdm9pZCAwIT09cnx8dHx8KHI9OSkscn19KEx0fHwoTHQ9e30pKSxmdW5jdGlvbihlKXtlW2UuQXV0b21hdGljPTBdPSJBdXRvbWF0aWMiLGVbZS5FeHBsaWNpdD0xXT0iRXhwbGljaXQifShPdHx8KE90PXt9KSksZnVuY3Rpb24oZSl7ZVtlLkludm9rZT0xXT0iSW52b2tlIixlW2UuVHJpZ2dlckNoYXJhY3Rlcj0yXT0iVHJpZ2dlckNoYXJhY3RlciIsZVtlLkNvbnRlbnRDaGFuZ2U9M109IkNvbnRlbnRDaGFuZ2UifShXdHx8KFd0PXt9KSksZnVuY3Rpb24oZSl7ZVtlLlRleHQ9MF09IlRleHQiLGVbZS5SZWFkPTFdPSJSZWFkIixlW2UuV3JpdGU9Ml09IldyaXRlIn0oVnR8fChWdD17fSkpLGZ1bmN0aW9uKGUpe2NvbnN0IHQ9bmV3IE1hcDt0LnNldCgwLFB0LnN5bWJvbEZpbGUpLHQuc2V0KDEsUHQuc3ltYm9sTW9kdWxlKSx0LnNldCgyLFB0LnN5bWJvbE5hbWVzcGFjZSksdC5zZXQoMyxQdC5zeW1ib2xQYWNrYWdlKSx0LnNldCg0LFB0LnN5bWJvbENsYXNzKSx0LnNldCg1LFB0LnN5bWJvbE1ldGhvZCksdC5zZXQoNixQdC5zeW1ib2xQcm9wZXJ0eSksdC5zZXQoNyxQdC5zeW1ib2xGaWVsZCksdC5zZXQoOCxQdC5zeW1ib2xDb25zdHJ1Y3RvciksdC5zZXQoOSxQdC5zeW1ib2xFbnVtKSx0LnNldCgxMCxQdC5zeW1ib2xJbnRlcmZhY2UpLHQuc2V0KDExLFB0LnN5bWJvbEZ1bmN0aW9uKSx0LnNldCgxMixQdC5zeW1ib2xWYXJpYWJsZSksdC5zZXQoMTMsUHQuc3ltYm9sQ29uc3RhbnQpLHQuc2V0KDE0LFB0LnN5bWJvbFN0cmluZyksdC5zZXQoMTUsUHQuc3ltYm9sTnVtYmVyKSx0LnNldCgxNixQdC5zeW1ib2xCb29sZWFuKSx0LnNldCgxNyxQdC5zeW1ib2xBcnJheSksdC5zZXQoMTgsUHQuc3ltYm9sT2JqZWN0KSx0LnNldCgxOSxQdC5zeW1ib2xLZXkpLHQuc2V0KDIwLFB0LnN5bWJvbE51bGwpLHQuc2V0KDIxLFB0LnN5bWJvbEVudW1NZW1iZXIpLHQuc2V0KDIyLFB0LnN5bWJvbFN0cnVjdCksdC5zZXQoMjMsUHQuc3ltYm9sRXZlbnQpLHQuc2V0KDI0LFB0LnN5bWJvbE9wZXJhdG9yKSx0LnNldCgyNSxQdC5zeW1ib2xUeXBlUGFyYW1ldGVyKSxlLnRvSWNvbj1mdW5jdGlvbihlKXtsZXQgbj10LmdldChlKTtyZXR1cm4gbnx8KGNvbnNvbGUuaW5mbygiTm8gY29kaWNvbiBmb3VuZCBmb3IgU3ltYm9sS2luZCAiK2UpLG49UHQuc3ltYm9sUHJvcGVydHkpLG59fShVdHx8KFV0PXt9KSksZnVuY3Rpb24oZSl7ZS5pcz1mdW5jdGlvbihlKXtyZXR1cm4hKCFlfHwib2JqZWN0IiE9dHlwZW9mIGUpJiYoInN0cmluZyI9PXR5cGVvZiBlLmlkJiYic3RyaW5nIj09dHlwZW9mIGUudGl0bGUpfX0oQnR8fChCdD17fSkpLGZ1bmN0aW9uKGUpe2VbZS5UeXBlPTFdPSJUeXBlIixlW2UuUGFyYW1ldGVyPTJdPSJQYXJhbWV0ZXIifShLdHx8KEt0PXt9KSksbmV3IGNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5fdG9rZW5pemF0aW9uU3VwcG9ydHM9bmV3IE1hcCx0aGlzLl9mYWN0b3JpZXM9bmV3IE1hcCx0aGlzLl9vbkRpZENoYW5nZT1uZXcgSyx0aGlzLm9uRGlkQ2hhbmdlPXRoaXMuX29uRGlkQ2hhbmdlLmV2ZW50LHRoaXMuX2NvbG9yTWFwPW51bGx9aGFuZGxlQ2hhbmdlKGUpe3RoaXMuX29uRGlkQ2hhbmdlLmZpcmUoe2NoYW5nZWRMYW5ndWFnZXM6ZSxjaGFuZ2VkQ29sb3JNYXA6ITF9KX1yZWdpc3RlcihlLHQpe3JldHVybiB0aGlzLl90b2tlbml6YXRpb25TdXBwb3J0cy5zZXQoZSx0KSx0aGlzLmhhbmRsZUNoYW5nZShbZV0pLGgoKCgpPT57dGhpcy5fdG9rZW5pemF0aW9uU3VwcG9ydHMuZ2V0KGUpPT09dCYmKHRoaXMuX3Rva2VuaXphdGlvblN1cHBvcnRzLmRlbGV0ZShlKSx0aGlzLmhhbmRsZUNoYW5nZShbZV0pKX0pKX1nZXQoZSl7cmV0dXJuIHRoaXMuX3Rva2VuaXphdGlvblN1cHBvcnRzLmdldChlKXx8bnVsbH1yZWdpc3RlckZhY3RvcnkoZSx0KXt2YXIgbjtudWxsPT09KG49dGhpcy5fZmFjdG9yaWVzLmdldChlKSl8fHZvaWQgMD09PW58fG4uZGlzcG9zZSgpO2NvbnN0IHI9bmV3IEluKHRoaXMsZSx0KTtyZXR1cm4gdGhpcy5fZmFjdG9yaWVzLnNldChlLHIpLGgoKCgpPT57Y29uc3QgdD10aGlzLl9mYWN0b3JpZXMuZ2V0KGUpO3QmJnQ9PT1yJiYodGhpcy5fZmFjdG9yaWVzLmRlbGV0ZShlKSx0LmRpc3Bvc2UoKSl9KSl9Z2V0T3JDcmVhdGUoZSl7cmV0dXJuIHpuKHRoaXMsdm9pZCAwLHZvaWQgMCwoZnVuY3Rpb24qKCl7Y29uc3QgdD10aGlzLmdldChlKTtpZih0KXJldHVybiB0O2NvbnN0IG49dGhpcy5fZmFjdG9yaWVzLmdldChlKTtyZXR1cm4hbnx8bi5pc1Jlc29sdmVkP251bGw6KHlpZWxkIG4ucmVzb2x2ZSgpLHRoaXMuZ2V0KGUpKX0pKX1pc1Jlc29sdmVkKGUpe2lmKHRoaXMuZ2V0KGUpKXJldHVybiEwO2NvbnN0IHQ9dGhpcy5fZmFjdG9yaWVzLmdldChlKTtyZXR1cm4hKHQmJiF0LmlzUmVzb2x2ZWQpfXNldENvbG9yTWFwKGUpe3RoaXMuX2NvbG9yTWFwPWUsdGhpcy5fb25EaWRDaGFuZ2UuZmlyZSh7Y2hhbmdlZExhbmd1YWdlczpBcnJheS5mcm9tKHRoaXMuX3Rva2VuaXphdGlvblN1cHBvcnRzLmtleXMoKSksY2hhbmdlZENvbG9yTWFwOiEwfSl9Z2V0Q29sb3JNYXAoKXtyZXR1cm4gdGhpcy5fY29sb3JNYXB9Z2V0RGVmYXVsdEJhY2tncm91bmQoKXtyZXR1cm4gdGhpcy5fY29sb3JNYXAmJnRoaXMuX2NvbG9yTWFwLmxlbmd0aD4yP3RoaXMuX2NvbG9yTWFwWzJdOm51bGx9fSxmdW5jdGlvbihlKXtlW2UuVW5rbm93bj0wXT0iVW5rbm93biIsZVtlLkRpc2FibGVkPTFdPSJEaXNhYmxlZCIsZVtlLkVuYWJsZWQ9Ml09IkVuYWJsZWQifShqdHx8KGp0PXt9KSksZnVuY3Rpb24oZSl7ZVtlLkludm9rZT0xXT0iSW52b2tlIixlW2UuQXV0bz0yXT0iQXV0byJ9KHF0fHwocXQ9e30pKSxmdW5jdGlvbihlKXtlW2UuTm9uZT0wXT0iTm9uZSIsZVtlLktlZXBXaGl0ZXNwYWNlPTFdPSJLZWVwV2hpdGVzcGFjZSIsZVtlLkluc2VydEFzU25pcHBldD00XT0iSW5zZXJ0QXNTbmlwcGV0In0oJHR8fCgkdD17fSkpLGZ1bmN0aW9uKGUpe2VbZS5NZXRob2Q9MF09Ik1ldGhvZCIsZVtlLkZ1bmN0aW9uPTFdPSJGdW5jdGlvbiIsZVtlLkNvbnN0cnVjdG9yPTJdPSJDb25zdHJ1Y3RvciIsZVtlLkZpZWxkPTNdPSJGaWVsZCIsZVtlLlZhcmlhYmxlPTRdPSJWYXJpYWJsZSIsZVtlLkNsYXNzPTVdPSJDbGFzcyIsZVtlLlN0cnVjdD02XT0iU3RydWN0IixlW2UuSW50ZXJmYWNlPTddPSJJbnRlcmZhY2UiLGVbZS5Nb2R1bGU9OF09Ik1vZHVsZSIsZVtlLlByb3BlcnR5PTldPSJQcm9wZXJ0eSIsZVtlLkV2ZW50PTEwXT0iRXZlbnQiLGVbZS5PcGVyYXRvcj0xMV09Ik9wZXJhdG9yIixlW2UuVW5pdD0xMl09IlVuaXQiLGVbZS5WYWx1ZT0xM109IlZhbHVlIixlW2UuQ29uc3RhbnQ9MTRdPSJDb25zdGFudCIsZVtlLkVudW09MTVdPSJFbnVtIixlW2UuRW51bU1lbWJlcj0xNl09IkVudW1NZW1iZXIiLGVbZS5LZXl3b3JkPTE3XT0iS2V5d29yZCIsZVtlLlRleHQ9MThdPSJUZXh0IixlW2UuQ29sb3I9MTldPSJDb2xvciIsZVtlLkZpbGU9MjBdPSJGaWxlIixlW2UuUmVmZXJlbmNlPTIxXT0iUmVmZXJlbmNlIixlW2UuQ3VzdG9tY29sb3I9MjJdPSJDdXN0b21jb2xvciIsZVtlLkZvbGRlcj0yM109IkZvbGRlciIsZVtlLlR5cGVQYXJhbWV0ZXI9MjRdPSJUeXBlUGFyYW1ldGVyIixlW2UuVXNlcj0yNV09IlVzZXIiLGVbZS5Jc3N1ZT0yNl09Iklzc3VlIixlW2UuU25pcHBldD0yN109IlNuaXBwZXQifShIdHx8KEh0PXt9KSksZnVuY3Rpb24oZSl7ZVtlLkRlcHJlY2F0ZWQ9MV09IkRlcHJlY2F0ZWQifShHdHx8KEd0PXt9KSksZnVuY3Rpb24oZSl7ZVtlLkludm9rZT0wXT0iSW52b2tlIixlW2UuVHJpZ2dlckNoYXJhY3Rlcj0xXT0iVHJpZ2dlckNoYXJhY3RlciIsZVtlLlRyaWdnZXJGb3JJbmNvbXBsZXRlQ29tcGxldGlvbnM9Ml09IlRyaWdnZXJGb3JJbmNvbXBsZXRlQ29tcGxldGlvbnMifShKdHx8KEp0PXt9KSksZnVuY3Rpb24oZSl7ZVtlLkVYQUNUPTBdPSJFWEFDVCIsZVtlLkFCT1ZFPTFdPSJBQk9WRSIsZVtlLkJFTE9XPTJdPSJCRUxPVyJ9KFh0fHwoWHQ9e30pKSxmdW5jdGlvbihlKXtlW2UuTm90U2V0PTBdPSJOb3RTZXQiLGVbZS5Db250ZW50Rmx1c2g9MV09IkNvbnRlbnRGbHVzaCIsZVtlLlJlY292ZXJGcm9tTWFya2Vycz0yXT0iUmVjb3ZlckZyb21NYXJrZXJzIixlW2UuRXhwbGljaXQ9M109IkV4cGxpY2l0IixlW2UuUGFzdGU9NF09IlBhc3RlIixlW2UuVW5kbz01XT0iVW5kbyIsZVtlLlJlZG89Nl09IlJlZG8ifShZdHx8KFl0PXt9KSksZnVuY3Rpb24oZSl7ZVtlLkxGPTFdPSJMRiIsZVtlLkNSTEY9Ml09IkNSTEYifShadHx8KFp0PXt9KSksZnVuY3Rpb24oZSl7ZVtlLlRleHQ9MF09IlRleHQiLGVbZS5SZWFkPTFdPSJSZWFkIixlW2UuV3JpdGU9Ml09IldyaXRlIn0oUXR8fChRdD17fSkpLGZ1bmN0aW9uKGUpe2VbZS5Ob25lPTBdPSJOb25lIixlW2UuS2VlcD0xXT0iS2VlcCIsZVtlLkJyYWNrZXRzPTJdPSJCcmFja2V0cyIsZVtlLkFkdmFuY2VkPTNdPSJBZHZhbmNlZCIsZVtlLkZ1bGw9NF09IkZ1bGwifShlbnx8KGVuPXt9KSksZnVuY3Rpb24oZSl7ZVtlLmFjY2VwdFN1Z2dlc3Rpb25PbkNvbW1pdENoYXJhY3Rlcj0wXT0iYWNjZXB0U3VnZ2VzdGlvbk9uQ29tbWl0Q2hhcmFjdGVyIixlW2UuYWNjZXB0U3VnZ2VzdGlvbk9uRW50ZXI9MV09ImFjY2VwdFN1Z2dlc3Rpb25PbkVudGVyIixlW2UuYWNjZXNzaWJpbGl0eVN1cHBvcnQ9Ml09ImFjY2Vzc2liaWxpdHlTdXBwb3J0IixlW2UuYWNjZXNzaWJpbGl0eVBhZ2VTaXplPTNdPSJhY2Nlc3NpYmlsaXR5UGFnZVNpemUiLGVbZS5hcmlhTGFiZWw9NF09ImFyaWFMYWJlbCIsZVtlLmF1dG9DbG9zaW5nQnJhY2tldHM9NV09ImF1dG9DbG9zaW5nQnJhY2tldHMiLGVbZS5zY3JlZW5SZWFkZXJBbm5vdW5jZUlubGluZVN1Z2dlc3Rpb249Nl09InNjcmVlblJlYWRlckFubm91bmNlSW5saW5lU3VnZ2VzdGlvbiIsZVtlLmF1dG9DbG9zaW5nRGVsZXRlPTddPSJhdXRvQ2xvc2luZ0RlbGV0ZSIsZVtlLmF1dG9DbG9zaW5nT3ZlcnR5cGU9OF09ImF1dG9DbG9zaW5nT3ZlcnR5cGUiLGVbZS5hdXRvQ2xvc2luZ1F1b3Rlcz05XT0iYXV0b0Nsb3NpbmdRdW90ZXMiLGVbZS5hdXRvSW5kZW50PTEwXT0iYXV0b0luZGVudCIsZVtlLmF1dG9tYXRpY0xheW91dD0xMV09ImF1dG9tYXRpY0xheW91dCIsZVtlLmF1dG9TdXJyb3VuZD0xMl09ImF1dG9TdXJyb3VuZCIsZVtlLmJyYWNrZXRQYWlyQ29sb3JpemF0aW9uPTEzXT0iYnJhY2tldFBhaXJDb2xvcml6YXRpb24iLGVbZS5ndWlkZXM9MTRdPSJndWlkZXMiLGVbZS5jb2RlTGVucz0xNV09ImNvZGVMZW5zIixlW2UuY29kZUxlbnNGb250RmFtaWx5PTE2XT0iY29kZUxlbnNGb250RmFtaWx5IixlW2UuY29kZUxlbnNGb250U2l6ZT0xN109ImNvZGVMZW5zRm9udFNpemUiLGVbZS5jb2xvckRlY29yYXRvcnM9MThdPSJjb2xvckRlY29yYXRvcnMiLGVbZS5jb2xvckRlY29yYXRvcnNMaW1pdD0xOV09ImNvbG9yRGVjb3JhdG9yc0xpbWl0IixlW2UuY29sdW1uU2VsZWN0aW9uPTIwXT0iY29sdW1uU2VsZWN0aW9uIixlW2UuY29tbWVudHM9MjFdPSJjb21tZW50cyIsZVtlLmNvbnRleHRtZW51PTIyXT0iY29udGV4dG1lbnUiLGVbZS5jb3B5V2l0aFN5bnRheEhpZ2hsaWdodGluZz0yM109ImNvcHlXaXRoU3ludGF4SGlnaGxpZ2h0aW5nIixlW2UuY3Vyc29yQmxpbmtpbmc9MjRdPSJjdXJzb3JCbGlua2luZyIsZVtlLmN1cnNvclNtb290aENhcmV0QW5pbWF0aW9uPTI1XT0iY3Vyc29yU21vb3RoQ2FyZXRBbmltYXRpb24iLGVbZS5jdXJzb3JTdHlsZT0yNl09ImN1cnNvclN0eWxlIixlW2UuY3Vyc29yU3Vycm91bmRpbmdMaW5lcz0yN109ImN1cnNvclN1cnJvdW5kaW5nTGluZXMiLGVbZS5jdXJzb3JTdXJyb3VuZGluZ0xpbmVzU3R5bGU9MjhdPSJjdXJzb3JTdXJyb3VuZGluZ0xpbmVzU3R5bGUiLGVbZS5jdXJzb3JXaWR0aD0yOV09ImN1cnNvcldpZHRoIixlW2UuZGlzYWJsZUxheWVySGludGluZz0zMF09ImRpc2FibGVMYXllckhpbnRpbmciLGVbZS5kaXNhYmxlTW9ub3NwYWNlT3B0aW1pemF0aW9ucz0zMV09ImRpc2FibGVNb25vc3BhY2VPcHRpbWl6YXRpb25zIixlW2UuZG9tUmVhZE9ubHk9MzJdPSJkb21SZWFkT25seSIsZVtlLmRyYWdBbmREcm9wPTMzXT0iZHJhZ0FuZERyb3AiLGVbZS5kcm9wSW50b0VkaXRvcj0zNF09ImRyb3BJbnRvRWRpdG9yIixlW2UuZW1wdHlTZWxlY3Rpb25DbGlwYm9hcmQ9MzVdPSJlbXB0eVNlbGVjdGlvbkNsaXBib2FyZCIsZVtlLmV4cGVyaW1lbnRhbFdoaXRlc3BhY2VSZW5kZXJpbmc9MzZdPSJleHBlcmltZW50YWxXaGl0ZXNwYWNlUmVuZGVyaW5nIixlW2UuZXh0cmFFZGl0b3JDbGFzc05hbWU9MzddPSJleHRyYUVkaXRvckNsYXNzTmFtZSIsZVtlLmZhc3RTY3JvbGxTZW5zaXRpdml0eT0zOF09ImZhc3RTY3JvbGxTZW5zaXRpdml0eSIsZVtlLmZpbmQ9MzldPSJmaW5kIixlW2UuZml4ZWRPdmVyZmxvd1dpZGdldHM9NDBdPSJmaXhlZE92ZXJmbG93V2lkZ2V0cyIsZVtlLmZvbGRpbmc9NDFdPSJmb2xkaW5nIixlW2UuZm9sZGluZ1N0cmF0ZWd5PTQyXT0iZm9sZGluZ1N0cmF0ZWd5IixlW2UuZm9sZGluZ0hpZ2hsaWdodD00M109ImZvbGRpbmdIaWdobGlnaHQiLGVbZS5mb2xkaW5nSW1wb3J0c0J5RGVmYXVsdD00NF09ImZvbGRpbmdJbXBvcnRzQnlEZWZhdWx0IixlW2UuZm9sZGluZ01heGltdW1SZWdpb25zPTQ1XT0iZm9sZGluZ01heGltdW1SZWdpb25zIixlW2UudW5mb2xkT25DbGlja0FmdGVyRW5kT2ZMaW5lPTQ2XT0idW5mb2xkT25DbGlja0FmdGVyRW5kT2ZMaW5lIixlW2UuZm9udEZhbWlseT00N109ImZvbnRGYW1pbHkiLGVbZS5mb250SW5mbz00OF09ImZvbnRJbmZvIixlW2UuZm9udExpZ2F0dXJlcz00OV09ImZvbnRMaWdhdHVyZXMiLGVbZS5mb250U2l6ZT01MF09ImZvbnRTaXplIixlW2UuZm9udFdlaWdodD01MV09ImZvbnRXZWlnaHQiLGVbZS5mb250VmFyaWF0aW9ucz01Ml09ImZvbnRWYXJpYXRpb25zIixlW2UuZm9ybWF0T25QYXN0ZT01M109ImZvcm1hdE9uUGFzdGUiLGVbZS5mb3JtYXRPblR5cGU9NTRdPSJmb3JtYXRPblR5cGUiLGVbZS5nbHlwaE1hcmdpbj01NV09ImdseXBoTWFyZ2luIixlW2UuZ290b0xvY2F0aW9uPTU2XT0iZ290b0xvY2F0aW9uIixlW2UuaGlkZUN1cnNvckluT3ZlcnZpZXdSdWxlcj01N109ImhpZGVDdXJzb3JJbk92ZXJ2aWV3UnVsZXIiLGVbZS5ob3Zlcj01OF09ImhvdmVyIixlW2UuaW5EaWZmRWRpdG9yPTU5XT0iaW5EaWZmRWRpdG9yIixlW2UuaW5saW5lU3VnZ2VzdD02MF09ImlubGluZVN1Z2dlc3QiLGVbZS5sZXR0ZXJTcGFjaW5nPTYxXT0ibGV0dGVyU3BhY2luZyIsZVtlLmxpZ2h0YnVsYj02Ml09ImxpZ2h0YnVsYiIsZVtlLmxpbmVEZWNvcmF0aW9uc1dpZHRoPTYzXT0ibGluZURlY29yYXRpb25zV2lkdGgiLGVbZS5saW5lSGVpZ2h0PTY0XT0ibGluZUhlaWdodCIsZVtlLmxpbmVOdW1iZXJzPTY1XT0ibGluZU51bWJlcnMiLGVbZS5saW5lTnVtYmVyc01pbkNoYXJzPTY2XT0ibGluZU51bWJlcnNNaW5DaGFycyIsZVtlLmxpbmtlZEVkaXRpbmc9NjddPSJsaW5rZWRFZGl0aW5nIixlW2UubGlua3M9NjhdPSJsaW5rcyIsZVtlLm1hdGNoQnJhY2tldHM9NjldPSJtYXRjaEJyYWNrZXRzIixlW2UubWluaW1hcD03MF09Im1pbmltYXAiLGVbZS5tb3VzZVN0eWxlPTcxXT0ibW91c2VTdHlsZSIsZVtlLm1vdXNlV2hlZWxTY3JvbGxTZW5zaXRpdml0eT03Ml09Im1vdXNlV2hlZWxTY3JvbGxTZW5zaXRpdml0eSIsZVtlLm1vdXNlV2hlZWxab29tPTczXT0ibW91c2VXaGVlbFpvb20iLGVbZS5tdWx0aUN1cnNvck1lcmdlT3ZlcmxhcHBpbmc9NzRdPSJtdWx0aUN1cnNvck1lcmdlT3ZlcmxhcHBpbmciLGVbZS5tdWx0aUN1cnNvck1vZGlmaWVyPTc1XT0ibXVsdGlDdXJzb3JNb2RpZmllciIsZVtlLm11bHRpQ3Vyc29yUGFzdGU9NzZdPSJtdWx0aUN1cnNvclBhc3RlIixlW2UubXVsdGlDdXJzb3JMaW1pdD03N109Im11bHRpQ3Vyc29yTGltaXQiLGVbZS5vY2N1cnJlbmNlc0hpZ2hsaWdodD03OF09Im9jY3VycmVuY2VzSGlnaGxpZ2h0IixlW2Uub3ZlcnZpZXdSdWxlckJvcmRlcj03OV09Im92ZXJ2aWV3UnVsZXJCb3JkZXIiLGVbZS5vdmVydmlld1J1bGVyTGFuZXM9ODBdPSJvdmVydmlld1J1bGVyTGFuZXMiLGVbZS5wYWRkaW5nPTgxXT0icGFkZGluZyIsZVtlLnBhc3RlQXM9ODJdPSJwYXN0ZUFzIixlW2UucGFyYW1ldGVySGludHM9ODNdPSJwYXJhbWV0ZXJIaW50cyIsZVtlLnBlZWtXaWRnZXREZWZhdWx0Rm9jdXM9ODRdPSJwZWVrV2lkZ2V0RGVmYXVsdEZvY3VzIixlW2UuZGVmaW5pdGlvbkxpbmtPcGVuc0luUGVlaz04NV09ImRlZmluaXRpb25MaW5rT3BlbnNJblBlZWsiLGVbZS5xdWlja1N1Z2dlc3Rpb25zPTg2XT0icXVpY2tTdWdnZXN0aW9ucyIsZVtlLnF1aWNrU3VnZ2VzdGlvbnNEZWxheT04N109InF1aWNrU3VnZ2VzdGlvbnNEZWxheSIsZVtlLnJlYWRPbmx5PTg4XT0icmVhZE9ubHkiLGVbZS5yZW5hbWVPblR5cGU9ODldPSJyZW5hbWVPblR5cGUiLGVbZS5yZW5kZXJDb250cm9sQ2hhcmFjdGVycz05MF09InJlbmRlckNvbnRyb2xDaGFyYWN0ZXJzIixlW2UucmVuZGVyRmluYWxOZXdsaW5lPTkxXT0icmVuZGVyRmluYWxOZXdsaW5lIixlW2UucmVuZGVyTGluZUhpZ2hsaWdodD05Ml09InJlbmRlckxpbmVIaWdobGlnaHQiLGVbZS5yZW5kZXJMaW5lSGlnaGxpZ2h0T25seVdoZW5Gb2N1cz05M109InJlbmRlckxpbmVIaWdobGlnaHRPbmx5V2hlbkZvY3VzIixlW2UucmVuZGVyVmFsaWRhdGlvbkRlY29yYXRpb25zPTk0XT0icmVuZGVyVmFsaWRhdGlvbkRlY29yYXRpb25zIixlW2UucmVuZGVyV2hpdGVzcGFjZT05NV09InJlbmRlcldoaXRlc3BhY2UiLGVbZS5yZXZlYWxIb3Jpem9udGFsUmlnaHRQYWRkaW5nPTk2XT0icmV2ZWFsSG9yaXpvbnRhbFJpZ2h0UGFkZGluZyIsZVtlLnJvdW5kZWRTZWxlY3Rpb249OTddPSJyb3VuZGVkU2VsZWN0aW9uIixlW2UucnVsZXJzPTk4XT0icnVsZXJzIixlW2Uuc2Nyb2xsYmFyPTk5XT0ic2Nyb2xsYmFyIixlW2Uuc2Nyb2xsQmV5b25kTGFzdENvbHVtbj0xMDBdPSJzY3JvbGxCZXlvbmRMYXN0Q29sdW1uIixlW2Uuc2Nyb2xsQmV5b25kTGFzdExpbmU9MTAxXT0ic2Nyb2xsQmV5b25kTGFzdExpbmUiLGVbZS5zY3JvbGxQcmVkb21pbmFudEF4aXM9MTAyXT0ic2Nyb2xsUHJlZG9taW5hbnRBeGlzIixlW2Uuc2VsZWN0aW9uQ2xpcGJvYXJkPTEwM109InNlbGVjdGlvbkNsaXBib2FyZCIsZVtlLnNlbGVjdGlvbkhpZ2hsaWdodD0xMDRdPSJzZWxlY3Rpb25IaWdobGlnaHQiLGVbZS5zZWxlY3RPbkxpbmVOdW1iZXJzPTEwNV09InNlbGVjdE9uTGluZU51bWJlcnMiLGVbZS5zaG93Rm9sZGluZ0NvbnRyb2xzPTEwNl09InNob3dGb2xkaW5nQ29udHJvbHMiLGVbZS5zaG93VW51c2VkPTEwN109InNob3dVbnVzZWQiLGVbZS5zbmlwcGV0U3VnZ2VzdGlvbnM9MTA4XT0ic25pcHBldFN1Z2dlc3Rpb25zIixlW2Uuc21hcnRTZWxlY3Q9MTA5XT0ic21hcnRTZWxlY3QiLGVbZS5zbW9vdGhTY3JvbGxpbmc9MTEwXT0ic21vb3RoU2Nyb2xsaW5nIixlW2Uuc3RpY2t5U2Nyb2xsPTExMV09InN0aWNreVNjcm9sbCIsZVtlLnN0aWNreVRhYlN0b3BzPTExMl09InN0aWNreVRhYlN0b3BzIixlW2Uuc3RvcFJlbmRlcmluZ0xpbmVBZnRlcj0xMTNdPSJzdG9wUmVuZGVyaW5nTGluZUFmdGVyIixlW2Uuc3VnZ2VzdD0xMTRdPSJzdWdnZXN0IixlW2Uuc3VnZ2VzdEZvbnRTaXplPTExNV09InN1Z2dlc3RGb250U2l6ZSIsZVtlLnN1Z2dlc3RMaW5lSGVpZ2h0PTExNl09InN1Z2dlc3RMaW5lSGVpZ2h0IixlW2Uuc3VnZ2VzdE9uVHJpZ2dlckNoYXJhY3RlcnM9MTE3XT0ic3VnZ2VzdE9uVHJpZ2dlckNoYXJhY3RlcnMiLGVbZS5zdWdnZXN0U2VsZWN0aW9uPTExOF09InN1Z2dlc3RTZWxlY3Rpb24iLGVbZS50YWJDb21wbGV0aW9uPTExOV09InRhYkNvbXBsZXRpb24iLGVbZS50YWJJbmRleD0xMjBdPSJ0YWJJbmRleCIsZVtlLnVuaWNvZGVIaWdobGlnaHRpbmc9MTIxXT0idW5pY29kZUhpZ2hsaWdodGluZyIsZVtlLnVudXN1YWxMaW5lVGVybWluYXRvcnM9MTIyXT0idW51c3VhbExpbmVUZXJtaW5hdG9ycyIsZVtlLnVzZVNoYWRvd0RPTT0xMjNdPSJ1c2VTaGFkb3dET00iLGVbZS51c2VUYWJTdG9wcz0xMjRdPSJ1c2VUYWJTdG9wcyIsZVtlLndvcmRCcmVhaz0xMjVdPSJ3b3JkQnJlYWsiLGVbZS53b3JkU2VwYXJhdG9ycz0xMjZdPSJ3b3JkU2VwYXJhdG9ycyIsZVtlLndvcmRXcmFwPTEyN109IndvcmRXcmFwIixlW2Uud29yZFdyYXBCcmVha0FmdGVyQ2hhcmFjdGVycz0xMjhdPSJ3b3JkV3JhcEJyZWFrQWZ0ZXJDaGFyYWN0ZXJzIixlW2Uud29yZFdyYXBCcmVha0JlZm9yZUNoYXJhY3RlcnM9MTI5XT0id29yZFdyYXBCcmVha0JlZm9yZUNoYXJhY3RlcnMiLGVbZS53b3JkV3JhcENvbHVtbj0xMzBdPSJ3b3JkV3JhcENvbHVtbiIsZVtlLndvcmRXcmFwT3ZlcnJpZGUxPTEzMV09IndvcmRXcmFwT3ZlcnJpZGUxIixlW2Uud29yZFdyYXBPdmVycmlkZTI9MTMyXT0id29yZFdyYXBPdmVycmlkZTIiLGVbZS53cmFwcGluZ0luZGVudD0xMzNdPSJ3cmFwcGluZ0luZGVudCIsZVtlLndyYXBwaW5nU3RyYXRlZ3k9MTM0XT0id3JhcHBpbmdTdHJhdGVneSIsZVtlLnNob3dEZXByZWNhdGVkPTEzNV09InNob3dEZXByZWNhdGVkIixlW2UuaW5sYXlIaW50cz0xMzZdPSJpbmxheUhpbnRzIixlW2UuZWRpdG9yQ2xhc3NOYW1lPTEzN109ImVkaXRvckNsYXNzTmFtZSIsZVtlLnBpeGVsUmF0aW89MTM4XT0icGl4ZWxSYXRpbyIsZVtlLnRhYkZvY3VzTW9kZT0xMzldPSJ0YWJGb2N1c01vZGUiLGVbZS5sYXlvdXRJbmZvPTE0MF09ImxheW91dEluZm8iLGVbZS53cmFwcGluZ0luZm89MTQxXT0id3JhcHBpbmdJbmZvIixlW2UuZGVmYXVsdENvbG9yRGVjb3JhdG9ycz0xNDJdPSJkZWZhdWx0Q29sb3JEZWNvcmF0b3JzIn0odG58fCh0bj17fSkpLGZ1bmN0aW9uKGUpe2VbZS5UZXh0RGVmaW5lZD0wXT0iVGV4dERlZmluZWQiLGVbZS5MRj0xXT0iTEYiLGVbZS5DUkxGPTJdPSJDUkxGIn0obm58fChubj17fSkpLGZ1bmN0aW9uKGUpe2VbZS5MRj0wXT0iTEYiLGVbZS5DUkxGPTFdPSJDUkxGIn0ocm58fChybj17fSkpLGZ1bmN0aW9uKGUpe2VbZS5MZWZ0PTFdPSJMZWZ0IixlW2UuUmlnaHQ9Ml09IlJpZ2h0In0ob258fChvbj17fSkpLGZ1bmN0aW9uKGUpe2VbZS5Ob25lPTBdPSJOb25lIixlW2UuSW5kZW50PTFdPSJJbmRlbnQiLGVbZS5JbmRlbnRPdXRkZW50PTJdPSJJbmRlbnRPdXRkZW50IixlW2UuT3V0ZGVudD0zXT0iT3V0ZGVudCJ9KHNufHwoc249e30pKSxmdW5jdGlvbihlKXtlW2UuQm90aD0wXT0iQm90aCIsZVtlLlJpZ2h0PTFdPSJSaWdodCIsZVtlLkxlZnQ9Ml09IkxlZnQiLGVbZS5Ob25lPTNdPSJOb25lIn0oYW58fChhbj17fSkpLGZ1bmN0aW9uKGUpe2VbZS5UeXBlPTFdPSJUeXBlIixlW2UuUGFyYW1ldGVyPTJdPSJQYXJhbWV0ZXIifShsbnx8KGxuPXt9KSksZnVuY3Rpb24oZSl7ZVtlLkF1dG9tYXRpYz0wXT0iQXV0b21hdGljIixlW2UuRXhwbGljaXQ9MV09IkV4cGxpY2l0In0oY258fChjbj17fSkpLGZ1bmN0aW9uKGUpe2VbZS5EZXBlbmRzT25LYkxheW91dD0tMV09IkRlcGVuZHNPbktiTGF5b3V0IixlW2UuVW5rbm93bj0wXT0iVW5rbm93biIsZVtlLkJhY2tzcGFjZT0xXT0iQmFja3NwYWNlIixlW2UuVGFiPTJdPSJUYWIiLGVbZS5FbnRlcj0zXT0iRW50ZXIiLGVbZS5TaGlmdD00XT0iU2hpZnQiLGVbZS5DdHJsPTVdPSJDdHJsIixlW2UuQWx0PTZdPSJBbHQiLGVbZS5QYXVzZUJyZWFrPTddPSJQYXVzZUJyZWFrIixlW2UuQ2Fwc0xvY2s9OF09IkNhcHNMb2NrIixlW2UuRXNjYXBlPTldPSJFc2NhcGUiLGVbZS5TcGFjZT0xMF09IlNwYWNlIixlW2UuUGFnZVVwPTExXT0iUGFnZVVwIixlW2UuUGFnZURvd249MTJdPSJQYWdlRG93biIsZVtlLkVuZD0xM109IkVuZCIsZVtlLkhvbWU9MTRdPSJIb21lIixlW2UuTGVmdEFycm93PTE1XT0iTGVmdEFycm93IixlW2UuVXBBcnJvdz0xNl09IlVwQXJyb3ciLGVbZS5SaWdodEFycm93PTE3XT0iUmlnaHRBcnJvdyIsZVtlLkRvd25BcnJvdz0xOF09IkRvd25BcnJvdyIsZVtlLkluc2VydD0xOV09Ikluc2VydCIsZVtlLkRlbGV0ZT0yMF09IkRlbGV0ZSIsZVtlLkRpZ2l0MD0yMV09IkRpZ2l0MCIsZVtlLkRpZ2l0MT0yMl09IkRpZ2l0MSIsZVtlLkRpZ2l0Mj0yM109IkRpZ2l0MiIsZVtlLkRpZ2l0Mz0yNF09IkRpZ2l0MyIsZVtlLkRpZ2l0ND0yNV09IkRpZ2l0NCIsZVtlLkRpZ2l0NT0yNl09IkRpZ2l0NSIsZVtlLkRpZ2l0Nj0yN109IkRpZ2l0NiIsZVtlLkRpZ2l0Nz0yOF09IkRpZ2l0NyIsZVtlLkRpZ2l0OD0yOV09IkRpZ2l0OCIsZVtlLkRpZ2l0OT0zMF09IkRpZ2l0OSIsZVtlLktleUE9MzFdPSJLZXlBIixlW2UuS2V5Qj0zMl09IktleUIiLGVbZS5LZXlDPTMzXT0iS2V5QyIsZVtlLktleUQ9MzRdPSJLZXlEIixlW2UuS2V5RT0zNV09IktleUUiLGVbZS5LZXlGPTM2XT0iS2V5RiIsZVtlLktleUc9MzddPSJLZXlHIixlW2UuS2V5SD0zOF09IktleUgiLGVbZS5LZXlJPTM5XT0iS2V5SSIsZVtlLktleUo9NDBdPSJLZXlKIixlW2UuS2V5Sz00MV09IktleUsiLGVbZS5LZXlMPTQyXT0iS2V5TCIsZVtlLktleU09NDNdPSJLZXlNIixlW2UuS2V5Tj00NF09IktleU4iLGVbZS5LZXlPPTQ1XT0iS2V5TyIsZVtlLktleVA9NDZdPSJLZXlQIixlW2UuS2V5UT00N109IktleVEiLGVbZS5LZXlSPTQ4XT0iS2V5UiIsZVtlLktleVM9NDldPSJLZXlTIixlW2UuS2V5VD01MF09IktleVQiLGVbZS5LZXlVPTUxXT0iS2V5VSIsZVtlLktleVY9NTJdPSJLZXlWIixlW2UuS2V5Vz01M109IktleVciLGVbZS5LZXlYPTU0XT0iS2V5WCIsZVtlLktleVk9NTVdPSJLZXlZIixlW2UuS2V5Wj01Nl09IktleVoiLGVbZS5NZXRhPTU3XT0iTWV0YSIsZVtlLkNvbnRleHRNZW51PTU4XT0iQ29udGV4dE1lbnUiLGVbZS5GMT01OV09IkYxIixlW2UuRjI9NjBdPSJGMiIsZVtlLkYzPTYxXT0iRjMiLGVbZS5GND02Ml09IkY0IixlW2UuRjU9NjNdPSJGNSIsZVtlLkY2PTY0XT0iRjYiLGVbZS5GNz02NV09IkY3IixlW2UuRjg9NjZdPSJGOCIsZVtlLkY5PTY3XT0iRjkiLGVbZS5GMTA9NjhdPSJGMTAiLGVbZS5GMTE9NjldPSJGMTEiLGVbZS5GMTI9NzBdPSJGMTIiLGVbZS5GMTM9NzFdPSJGMTMiLGVbZS5GMTQ9NzJdPSJGMTQiLGVbZS5GMTU9NzNdPSJGMTUiLGVbZS5GMTY9NzRdPSJGMTYiLGVbZS5GMTc9NzVdPSJGMTciLGVbZS5GMTg9NzZdPSJGMTgiLGVbZS5GMTk9NzddPSJGMTkiLGVbZS5GMjA9NzhdPSJGMjAiLGVbZS5GMjE9NzldPSJGMjEiLGVbZS5GMjI9ODBdPSJGMjIiLGVbZS5GMjM9ODFdPSJGMjMiLGVbZS5GMjQ9ODJdPSJGMjQiLGVbZS5OdW1Mb2NrPTgzXT0iTnVtTG9jayIsZVtlLlNjcm9sbExvY2s9ODRdPSJTY3JvbGxMb2NrIixlW2UuU2VtaWNvbG9uPTg1XT0iU2VtaWNvbG9uIixlW2UuRXF1YWw9ODZdPSJFcXVhbCIsZVtlLkNvbW1hPTg3XT0iQ29tbWEiLGVbZS5NaW51cz04OF09Ik1pbnVzIixlW2UuUGVyaW9kPTg5XT0iUGVyaW9kIixlW2UuU2xhc2g9OTBdPSJTbGFzaCIsZVtlLkJhY2txdW90ZT05MV09IkJhY2txdW90ZSIsZVtlLkJyYWNrZXRMZWZ0PTkyXT0iQnJhY2tldExlZnQiLGVbZS5CYWNrc2xhc2g9OTNdPSJCYWNrc2xhc2giLGVbZS5CcmFja2V0UmlnaHQ9OTRdPSJCcmFja2V0UmlnaHQiLGVbZS5RdW90ZT05NV09IlF1b3RlIixlW2UuT0VNXzg9OTZdPSJPRU1fOCIsZVtlLkludGxCYWNrc2xhc2g9OTddPSJJbnRsQmFja3NsYXNoIixlW2UuTnVtcGFkMD05OF09Ik51bXBhZDAiLGVbZS5OdW1wYWQxPTk5XT0iTnVtcGFkMSIsZVtlLk51bXBhZDI9MTAwXT0iTnVtcGFkMiIsZVtlLk51bXBhZDM9MTAxXT0iTnVtcGFkMyIsZVtlLk51bXBhZDQ9MTAyXT0iTnVtcGFkNCIsZVtlLk51bXBhZDU9MTAzXT0iTnVtcGFkNSIsZVtlLk51bXBhZDY9MTA0XT0iTnVtcGFkNiIsZVtlLk51bXBhZDc9MTA1XT0iTnVtcGFkNyIsZVtlLk51bXBhZDg9MTA2XT0iTnVtcGFkOCIsZVtlLk51bXBhZDk9MTA3XT0iTnVtcGFkOSIsZVtlLk51bXBhZE11bHRpcGx5PTEwOF09Ik51bXBhZE11bHRpcGx5IixlW2UuTnVtcGFkQWRkPTEwOV09Ik51bXBhZEFkZCIsZVtlLk5VTVBBRF9TRVBBUkFUT1I9MTEwXT0iTlVNUEFEX1NFUEFSQVRPUiIsZVtlLk51bXBhZFN1YnRyYWN0PTExMV09Ik51bXBhZFN1YnRyYWN0IixlW2UuTnVtcGFkRGVjaW1hbD0xMTJdPSJOdW1wYWREZWNpbWFsIixlW2UuTnVtcGFkRGl2aWRlPTExM109Ik51bXBhZERpdmlkZSIsZVtlLktFWV9JTl9DT01QT1NJVElPTj0xMTRdPSJLRVlfSU5fQ09NUE9TSVRJT04iLGVbZS5BQk5UX0MxPTExNV09IkFCTlRfQzEiLGVbZS5BQk5UX0MyPTExNl09IkFCTlRfQzIiLGVbZS5BdWRpb1ZvbHVtZU11dGU9MTE3XT0iQXVkaW9Wb2x1bWVNdXRlIixlW2UuQXVkaW9Wb2x1bWVVcD0xMThdPSJBdWRpb1ZvbHVtZVVwIixlW2UuQXVkaW9Wb2x1bWVEb3duPTExOV09IkF1ZGlvVm9sdW1lRG93biIsZVtlLkJyb3dzZXJTZWFyY2g9MTIwXT0iQnJvd3NlclNlYXJjaCIsZVtlLkJyb3dzZXJIb21lPTEyMV09IkJyb3dzZXJIb21lIixlW2UuQnJvd3NlckJhY2s9MTIyXT0iQnJvd3NlckJhY2siLGVbZS5Ccm93c2VyRm9yd2FyZD0xMjNdPSJCcm93c2VyRm9yd2FyZCIsZVtlLk1lZGlhVHJhY2tOZXh0PTEyNF09Ik1lZGlhVHJhY2tOZXh0IixlW2UuTWVkaWFUcmFja1ByZXZpb3VzPTEyNV09Ik1lZGlhVHJhY2tQcmV2aW91cyIsZVtlLk1lZGlhU3RvcD0xMjZdPSJNZWRpYVN0b3AiLGVbZS5NZWRpYVBsYXlQYXVzZT0xMjddPSJNZWRpYVBsYXlQYXVzZSIsZVtlLkxhdW5jaE1lZGlhUGxheWVyPTEyOF09IkxhdW5jaE1lZGlhUGxheWVyIixlW2UuTGF1bmNoTWFpbD0xMjldPSJMYXVuY2hNYWlsIixlW2UuTGF1bmNoQXBwMj0xMzBdPSJMYXVuY2hBcHAyIixlW2UuQ2xlYXI9MTMxXT0iQ2xlYXIiLGVbZS5NQVhfVkFMVUU9MTMyXT0iTUFYX1ZBTFVFIn0oaG58fChobj17fSkpLGZ1bmN0aW9uKGUpe2VbZS5IaW50PTFdPSJIaW50IixlW2UuSW5mbz0yXT0iSW5mbyIsZVtlLldhcm5pbmc9NF09Ildhcm5pbmciLGVbZS5FcnJvcj04XT0iRXJyb3IifShkbnx8KGRuPXt9KSksZnVuY3Rpb24oZSl7ZVtlLlVubmVjZXNzYXJ5PTFdPSJVbm5lY2Vzc2FyeSIsZVtlLkRlcHJlY2F0ZWQ9Ml09IkRlcHJlY2F0ZWQifShwbnx8KHBuPXt9KSksZnVuY3Rpb24oZSl7ZVtlLklubGluZT0xXT0iSW5saW5lIixlW2UuR3V0dGVyPTJdPSJHdXR0ZXIifSh1bnx8KHVuPXt9KSksZnVuY3Rpb24oZSl7ZVtlLlVOS05PV049MF09IlVOS05PV04iLGVbZS5URVhUQVJFQT0xXT0iVEVYVEFSRUEiLGVbZS5HVVRURVJfR0xZUEhfTUFSR0lOPTJdPSJHVVRURVJfR0xZUEhfTUFSR0lOIixlW2UuR1VUVEVSX0xJTkVfTlVNQkVSUz0zXT0iR1VUVEVSX0xJTkVfTlVNQkVSUyIsZVtlLkdVVFRFUl9MSU5FX0RFQ09SQVRJT05TPTRdPSJHVVRURVJfTElORV9ERUNPUkFUSU9OUyIsZVtlLkdVVFRFUl9WSUVXX1pPTkU9NV09IkdVVFRFUl9WSUVXX1pPTkUiLGVbZS5DT05URU5UX1RFWFQ9Nl09IkNPTlRFTlRfVEVYVCIsZVtlLkNPTlRFTlRfRU1QVFk9N109IkNPTlRFTlRfRU1QVFkiLGVbZS5DT05URU5UX1ZJRVdfWk9ORT04XT0iQ09OVEVOVF9WSUVXX1pPTkUiLGVbZS5DT05URU5UX1dJREdFVD05XT0iQ09OVEVOVF9XSURHRVQiLGVbZS5PVkVSVklFV19SVUxFUj0xMF09Ik9WRVJWSUVXX1JVTEVSIixlW2UuU0NST0xMQkFSPTExXT0iU0NST0xMQkFSIixlW2UuT1ZFUkxBWV9XSURHRVQ9MTJdPSJPVkVSTEFZX1dJREdFVCIsZVtlLk9VVFNJREVfRURJVE9SPTEzXT0iT1VUU0lERV9FRElUT1IifShtbnx8KG1uPXt9KSksZnVuY3Rpb24oZSl7ZVtlLlRPUF9SSUdIVF9DT1JORVI9MF09IlRPUF9SSUdIVF9DT1JORVIiLGVbZS5CT1RUT01fUklHSFRfQ09STkVSPTFdPSJCT1RUT01fUklHSFRfQ09STkVSIixlW2UuVE9QX0NFTlRFUj0yXT0iVE9QX0NFTlRFUiJ9KGZufHwoZm49e30pKSxmdW5jdGlvbihlKXtlW2UuTGVmdD0xXT0iTGVmdCIsZVtlLkNlbnRlcj0yXT0iQ2VudGVyIixlW2UuUmlnaHQ9NF09IlJpZ2h0IixlW2UuRnVsbD03XT0iRnVsbCJ9KGdufHwoZ249e30pKSxmdW5jdGlvbihlKXtlW2UuTGVmdD0wXT0iTGVmdCIsZVtlLlJpZ2h0PTFdPSJSaWdodCIsZVtlLk5vbmU9Ml09Ik5vbmUiLGVbZS5MZWZ0T2ZJbmplY3RlZFRleHQ9M109IkxlZnRPZkluamVjdGVkVGV4dCIsZVtlLlJpZ2h0T2ZJbmplY3RlZFRleHQ9NF09IlJpZ2h0T2ZJbmplY3RlZFRleHQifShibnx8KGJuPXt9KSksZnVuY3Rpb24oZSl7ZVtlLk9mZj0wXT0iT2ZmIixlW2UuT249MV09Ik9uIixlW2UuUmVsYXRpdmU9Ml09IlJlbGF0aXZlIixlW2UuSW50ZXJ2YWw9M109IkludGVydmFsIixlW2UuQ3VzdG9tPTRdPSJDdXN0b20ifSh2bnx8KHZuPXt9KSksZnVuY3Rpb24oZSl7ZVtlLk5vbmU9MF09Ik5vbmUiLGVbZS5UZXh0PTFdPSJUZXh0IixlW2UuQmxvY2tzPTJdPSJCbG9ja3MifSh5bnx8KHluPXt9KSksZnVuY3Rpb24oZSl7ZVtlLlNtb290aD0wXT0iU21vb3RoIixlW2UuSW1tZWRpYXRlPTFdPSJJbW1lZGlhdGUifSh3bnx8KHduPXt9KSksZnVuY3Rpb24oZSl7ZVtlLkF1dG89MV09IkF1dG8iLGVbZS5IaWRkZW49Ml09IkhpZGRlbiIsZVtlLlZpc2libGU9M109IlZpc2libGUifSh4bnx8KHhuPXt9KSksZnVuY3Rpb24oZSl7ZVtlLkxUUj0wXT0iTFRSIixlW2UuUlRMPTFdPSJSVEwifShTbnx8KFNuPXt9KSksZnVuY3Rpb24oZSl7ZVtlLkludm9rZT0xXT0iSW52b2tlIixlW2UuVHJpZ2dlckNoYXJhY3Rlcj0yXT0iVHJpZ2dlckNoYXJhY3RlciIsZVtlLkNvbnRlbnRDaGFuZ2U9M109IkNvbnRlbnRDaGFuZ2UifShDbnx8KENuPXt9KSksZnVuY3Rpb24oZSl7ZVtlLkZpbGU9MF09IkZpbGUiLGVbZS5Nb2R1bGU9MV09Ik1vZHVsZSIsZVtlLk5hbWVzcGFjZT0yXT0iTmFtZXNwYWNlIixlW2UuUGFja2FnZT0zXT0iUGFja2FnZSIsZVtlLkNsYXNzPTRdPSJDbGFzcyIsZVtlLk1ldGhvZD01XT0iTWV0aG9kIixlW2UuUHJvcGVydHk9Nl09IlByb3BlcnR5IixlW2UuRmllbGQ9N109IkZpZWxkIixlW2UuQ29uc3RydWN0b3I9OF09IkNvbnN0cnVjdG9yIixlW2UuRW51bT05XT0iRW51bSIsZVtlLkludGVyZmFjZT0xMF09IkludGVyZmFjZSIsZVtlLkZ1bmN0aW9uPTExXT0iRnVuY3Rpb24iLGVbZS5WYXJpYWJsZT0xMl09IlZhcmlhYmxlIixlW2UuQ29uc3RhbnQ9MTNdPSJDb25zdGFudCIsZVtlLlN0cmluZz0xNF09IlN0cmluZyIsZVtlLk51bWJlcj0xNV09Ik51bWJlciIsZVtlLkJvb2xlYW49MTZdPSJCb29sZWFuIixlW2UuQXJyYXk9MTddPSJBcnJheSIsZVtlLk9iamVjdD0xOF09Ik9iamVjdCIsZVtlLktleT0xOV09IktleSIsZVtlLk51bGw9MjBdPSJOdWxsIixlW2UuRW51bU1lbWJlcj0yMV09IkVudW1NZW1iZXIiLGVbZS5TdHJ1Y3Q9MjJdPSJTdHJ1Y3QiLGVbZS5FdmVudD0yM109IkV2ZW50IixlW2UuT3BlcmF0b3I9MjRdPSJPcGVyYXRvciIsZVtlLlR5cGVQYXJhbWV0ZXI9MjVdPSJUeXBlUGFyYW1ldGVyIn0oa258fChrbj17fSkpLGZ1bmN0aW9uKGUpe2VbZS5EZXByZWNhdGVkPTFdPSJEZXByZWNhdGVkIn0oX258fChfbj17fSkpLGZ1bmN0aW9uKGUpe2VbZS5IaWRkZW49MF09IkhpZGRlbiIsZVtlLkJsaW5rPTFdPSJCbGluayIsZVtlLlNtb290aD0yXT0iU21vb3RoIixlW2UuUGhhc2U9M109IlBoYXNlIixlW2UuRXhwYW5kPTRdPSJFeHBhbmQiLGVbZS5Tb2xpZD01XT0iU29saWQifShFbnx8KEVuPXt9KSksZnVuY3Rpb24oZSl7ZVtlLkxpbmU9MV09IkxpbmUiLGVbZS5CbG9jaz0yXT0iQmxvY2siLGVbZS5VbmRlcmxpbmU9M109IlVuZGVybGluZSIsZVtlLkxpbmVUaGluPTRdPSJMaW5lVGhpbiIsZVtlLkJsb2NrT3V0bGluZT01XT0iQmxvY2tPdXRsaW5lIixlW2UuVW5kZXJsaW5lVGhpbj02XT0iVW5kZXJsaW5lVGhpbiJ9KFJufHwoUm49e30pKSxmdW5jdGlvbihlKXtlW2UuQWx3YXlzR3Jvd3NXaGVuVHlwaW5nQXRFZGdlcz0wXT0iQWx3YXlzR3Jvd3NXaGVuVHlwaW5nQXRFZGdlcyIsZVtlLk5ldmVyR3Jvd3NXaGVuVHlwaW5nQXRFZGdlcz0xXT0iTmV2ZXJHcm93c1doZW5UeXBpbmdBdEVkZ2VzIixlW2UuR3Jvd3NPbmx5V2hlblR5cGluZ0JlZm9yZT0yXT0iR3Jvd3NPbmx5V2hlblR5cGluZ0JlZm9yZSIsZVtlLkdyb3dzT25seVdoZW5UeXBpbmdBZnRlcj0zXT0iR3Jvd3NPbmx5V2hlblR5cGluZ0FmdGVyIn0oRm58fChGbj17fSkpLGZ1bmN0aW9uKGUpe2VbZS5Ob25lPTBdPSJOb25lIixlW2UuU2FtZT0xXT0iU2FtZSIsZVtlLkluZGVudD0yXT0iSW5kZW50IixlW2UuRGVlcEluZGVudD0zXT0iRGVlcEluZGVudCJ9KE5ufHwoTm49e30pKTtjbGFzcyBMbntzdGF0aWMgY2hvcmQoZSx0KXtyZXR1cm4gZnVuY3Rpb24oZSx0KXtyZXR1cm4oZXwoNjU1MzUmdCk8PDE2Pj4+MCk+Pj4wfShlLHQpfX1mdW5jdGlvbiBPbihlLHQsbixyLGkpe3JldHVybiBmdW5jdGlvbihlLHQsbixyLGkpe2lmKDA9PT1yKXJldHVybiEwO2NvbnN0IG89dC5jaGFyQ29kZUF0KHItMSk7aWYoMCE9PWUuZ2V0KG8pKXJldHVybiEwO2lmKDEzPT09b3x8MTA9PT1vKXJldHVybiEwO2lmKGk+MCl7Y29uc3Qgbj10LmNoYXJDb2RlQXQocik7aWYoMCE9PWUuZ2V0KG4pKXJldHVybiEwfXJldHVybiExfShlLHQsMCxyLGkpJiZmdW5jdGlvbihlLHQsbixyLGkpe2lmKHIraT09PW4pcmV0dXJuITA7Y29uc3Qgbz10LmNoYXJDb2RlQXQocitpKTtpZigwIT09ZS5nZXQobykpcmV0dXJuITA7aWYoMTM9PT1vfHwxMD09PW8pcmV0dXJuITA7aWYoaT4wKXtjb25zdCBuPXQuY2hhckNvZGVBdChyK2ktMSk7aWYoMCE9PWUuZ2V0KG4pKXJldHVybiEwfXJldHVybiExfShlLHQsbixyLGkpfUxuLkN0cmxDbWQ9MjA0OCxMbi5TaGlmdD0xMDI0LExuLkFsdD01MTIsTG4uV2luQ3RybD0yNTYsZnVuY3Rpb24oZSl7ZVtlLkxlZnQ9MV09IkxlZnQiLGVbZS5DZW50ZXI9Ml09IkNlbnRlciIsZVtlLlJpZ2h0PTRdPSJSaWdodCIsZVtlLkZ1bGw9N109IkZ1bGwifShEbnx8KERuPXt9KSksZnVuY3Rpb24oZSl7ZVtlLkxlZnQ9MV09IkxlZnQiLGVbZS5SaWdodD0yXT0iUmlnaHQifShUbnx8KFRuPXt9KSksZnVuY3Rpb24oZSl7ZVtlLklubGluZT0xXT0iSW5saW5lIixlW2UuR3V0dGVyPTJdPSJHdXR0ZXIifShBbnx8KEFuPXt9KSksZnVuY3Rpb24oZSl7ZVtlLkJvdGg9MF09IkJvdGgiLGVbZS5SaWdodD0xXT0iUmlnaHQiLGVbZS5MZWZ0PTJdPSJMZWZ0IixlW2UuTm9uZT0zXT0iTm9uZSJ9KE1ufHwoTW49e30pKTtjbGFzcyBXbntjb25zdHJ1Y3RvcihlLHQpe3RoaXMuX3dvcmRTZXBhcmF0b3JzPWUsdGhpcy5fc2VhcmNoUmVnZXg9dCx0aGlzLl9wcmV2TWF0Y2hTdGFydEluZGV4PS0xLHRoaXMuX3ByZXZNYXRjaExlbmd0aD0wfXJlc2V0KGUpe3RoaXMuX3NlYXJjaFJlZ2V4Lmxhc3RJbmRleD1lLHRoaXMuX3ByZXZNYXRjaFN0YXJ0SW5kZXg9LTEsdGhpcy5fcHJldk1hdGNoTGVuZ3RoPTB9bmV4dChlKXtjb25zdCB0PWUubGVuZ3RoO2xldCBuO2Rve2lmKHRoaXMuX3ByZXZNYXRjaFN0YXJ0SW5kZXgrdGhpcy5fcHJldk1hdGNoTGVuZ3RoPT09dClyZXR1cm4gbnVsbDtpZihuPXRoaXMuX3NlYXJjaFJlZ2V4LmV4ZWMoZSksIW4pcmV0dXJuIG51bGw7Y29uc3Qgcj1uLmluZGV4LGk9blswXS5sZW5ndGg7aWYocj09PXRoaXMuX3ByZXZNYXRjaFN0YXJ0SW5kZXgmJmk9PT10aGlzLl9wcmV2TWF0Y2hMZW5ndGgpe2lmKDA9PT1pKXtaKGUsdCx0aGlzLl9zZWFyY2hSZWdleC5sYXN0SW5kZXgpPjY1NTM1P3RoaXMuX3NlYXJjaFJlZ2V4Lmxhc3RJbmRleCs9Mjp0aGlzLl9zZWFyY2hSZWdleC5sYXN0SW5kZXgrPTE7Y29udGludWV9cmV0dXJuIG51bGx9aWYodGhpcy5fcHJldk1hdGNoU3RhcnRJbmRleD1yLHRoaXMuX3ByZXZNYXRjaExlbmd0aD1pLCF0aGlzLl93b3JkU2VwYXJhdG9yc3x8T24odGhpcy5fd29yZFNlcGFyYXRvcnMsZSx0LHIsaSkpcmV0dXJuIG59d2hpbGUobik7cmV0dXJuIG51bGx9fWZ1bmN0aW9uIFZuKGUsdD0iVW5yZWFjaGFibGUiKXt0aHJvdyBuZXcgRXJyb3IodCl9ZnVuY3Rpb24gVW4oZSl7ZSgpfHwoZSgpLHQobmV3IHMoIkFzc2VydGlvbiBGYWlsZWQiKSkpfWZ1bmN0aW9uIEJuKGUsdCl7bGV0IG49MDtmb3IoO248ZS5sZW5ndGgtMTspe2lmKCF0KGVbbl0sZVtuKzFdKSlyZXR1cm4hMTtuKyt9cmV0dXJuITB9Y2xhc3MgS257c3RhdGljIGNvbXB1dGVVbmljb2RlSGlnaGxpZ2h0cyhlLHQsbil7Y29uc3Qgcj1uP24uc3RhcnRMaW5lTnVtYmVyOjEsaT1uP24uZW5kTGluZU51bWJlcjplLmdldExpbmVDb3VudCgpLG89bmV3IGpuKHQpLHM9by5nZXRDYW5kaWRhdGVDb2RlUG9pbnRzKCk7bGV0IGE7dmFyIGwsYzthPSJhbGxOb25CYXNpY0FzY2lpIj09PXM/bmV3IFJlZ0V4cCgiW15cXHRcXG5cXHJcXHgyMC1cXHg3RV0iLCJnIik6bmV3IFJlZ0V4cCgiIisobD1BcnJheS5mcm9tKHMpLGBbJHtjPWwubWFwKChlPT5TdHJpbmcuZnJvbUNvZGVQb2ludChlKSkpLmpvaW4oIiIpLGMucmVwbGFjZSgvW1xcXHtcfVwqXCtcP1x8XF5cJFwuXFtcXVwoXCldL2csIlxcJCYiKX1dYCksImciKTtjb25zdCBoPW5ldyBXbihudWxsLGEpLGQ9W107bGV0IHAsdT0hMSxtPTAsZj0wLGc9MDtlOmZvcihsZXQgdD1yLG49aTt0PD1uO3QrKyl7Y29uc3Qgbj1lLmdldExpbmVDb250ZW50KHQpLHI9bi5sZW5ndGg7aC5yZXNldCgwKTtkb3tpZihwPWgubmV4dChuKSxwKXtsZXQgZT1wLmluZGV4LGk9cC5pbmRleCtwWzBdLmxlbmd0aDtpZihlPjApe1kobi5jaGFyQ29kZUF0KGUtMSkpJiZlLS19aWYoaSsxPHIpe1kobi5jaGFyQ29kZUF0KGktMSkpJiZpKyt9Y29uc3Qgcz1uLnN1YnN0cmluZyhlLGkpO2xldCBhPXB0KGUrMSxodCxuLDApO2EmJmEuZW5kQ29sdW1uPD1lKzEmJihhPW51bGwpO2NvbnN0IGw9by5zaG91bGRIaWdobGlnaHROb25CYXNpY0FTQ0lJKHMsYT9hLndvcmQ6bnVsbCk7aWYoMCE9PWwpezM9PT1sP20rKzoyPT09bD9mKys6MT09PWw/ZysrOlZuKCk7Y29uc3Qgbj0xZTM7aWYoZC5sZW5ndGg+PW4pe3U9ITA7YnJlYWsgZX1kLnB1c2gobmV3IHJ0KHQsZSsxLHQsaSsxKSl9fX13aGlsZShwKX1yZXR1cm57cmFuZ2VzOmQsaGFzTW9yZTp1LGFtYmlndW91c0NoYXJhY3RlckNvdW50Om0saW52aXNpYmxlQ2hhcmFjdGVyQ291bnQ6Zixub25CYXNpY0FzY2lpQ2hhcmFjdGVyQ291bnQ6Z319c3RhdGljIGNvbXB1dGVVbmljb2RlSGlnaGxpZ2h0UmVhc29uKGUsdCl7Y29uc3Qgbj1uZXcgam4odCk7c3dpdGNoKG4uc2hvdWxkSGlnaGxpZ2h0Tm9uQmFzaWNBU0NJSShlLG51bGwpKXtjYXNlIDA6cmV0dXJuIG51bGw7Y2FzZSAyOnJldHVybntraW5kOjF9O2Nhc2UgMzp7Y29uc3Qgcj1lLmNvZGVQb2ludEF0KDApLGk9bi5hbWJpZ3VvdXNDaGFyYWN0ZXJzLmdldFByaW1hcnlDb25mdXNhYmxlKHIpLG89ZWUuZ2V0TG9jYWxlcygpLmZpbHRlcigoZT0+IWVlLmdldEluc3RhbmNlKG5ldyBTZXQoWy4uLnQuYWxsb3dlZExvY2FsZXMsZV0pKS5pc0FtYmlndW91cyhyKSkpO3JldHVybntraW5kOjAsY29uZnVzYWJsZVdpdGg6U3RyaW5nLmZyb21Db2RlUG9pbnQoaSksbm90QW1iaWd1b3VzSW5Mb2NhbGVzOm99fWNhc2UgMTpyZXR1cm57a2luZDoyfX19fWNsYXNzIGpue2NvbnN0cnVjdG9yKGUpe3RoaXMub3B0aW9ucz1lLHRoaXMuYWxsb3dlZENvZGVQb2ludHM9bmV3IFNldChlLmFsbG93ZWRDb2RlUG9pbnRzKSx0aGlzLmFtYmlndW91c0NoYXJhY3RlcnM9ZWUuZ2V0SW5zdGFuY2UobmV3IFNldChlLmFsbG93ZWRMb2NhbGVzKSl9Z2V0Q2FuZGlkYXRlQ29kZVBvaW50cygpe2lmKHRoaXMub3B0aW9ucy5ub25CYXNpY0FTQ0lJKXJldHVybiJhbGxOb25CYXNpY0FzY2lpIjtjb25zdCBlPW5ldyBTZXQ7aWYodGhpcy5vcHRpb25zLmludmlzaWJsZUNoYXJhY3RlcnMpZm9yKGNvbnN0IHQgb2YgdGUuY29kZVBvaW50cylxbihTdHJpbmcuZnJvbUNvZGVQb2ludCh0KSl8fGUuYWRkKHQpO2lmKHRoaXMub3B0aW9ucy5hbWJpZ3VvdXNDaGFyYWN0ZXJzKWZvcihjb25zdCB0IG9mIHRoaXMuYW1iaWd1b3VzQ2hhcmFjdGVycy5nZXRDb25mdXNhYmxlQ29kZVBvaW50cygpKWUuYWRkKHQpO2Zvcihjb25zdCB0IG9mIHRoaXMuYWxsb3dlZENvZGVQb2ludHMpZS5kZWxldGUodCk7cmV0dXJuIGV9c2hvdWxkSGlnaGxpZ2h0Tm9uQmFzaWNBU0NJSShlLHQpe2NvbnN0IG49ZS5jb2RlUG9pbnRBdCgwKTtpZih0aGlzLmFsbG93ZWRDb2RlUG9pbnRzLmhhcyhuKSlyZXR1cm4gMDtpZih0aGlzLm9wdGlvbnMubm9uQmFzaWNBU0NJSSlyZXR1cm4gMTtsZXQgcj0hMSxpPSExO2lmKHQpZm9yKGNvbnN0IGUgb2YgdCl7Y29uc3QgdD1lLmNvZGVQb2ludEF0KDApLG49KG89ZSxRLnRlc3QobykpO3I9cnx8bixufHx0aGlzLmFtYmlndW91c0NoYXJhY3RlcnMuaXNBbWJpZ3VvdXModCl8fHRlLmlzSW52aXNpYmxlQ2hhcmFjdGVyKHQpfHwoaT0hMCl9dmFyIG87cmV0dXJuIXImJmk/MDp0aGlzLm9wdGlvbnMuaW52aXNpYmxlQ2hhcmFjdGVycyYmIXFuKGUpJiZ0ZS5pc0ludmlzaWJsZUNoYXJhY3RlcihuKT8yOnRoaXMub3B0aW9ucy5hbWJpZ3VvdXNDaGFyYWN0ZXJzJiZ0aGlzLmFtYmlndW91c0NoYXJhY3RlcnMuaXNBbWJpZ3VvdXMobik/MzowfX1mdW5jdGlvbiBxbihlKXtyZXR1cm4iICI9PT1lfHwiXG4iPT09ZXx8Ilx0Ij09PWV9Y2xhc3MgJG57c3RhdGljIGZyb21SYW5nZShlKXtyZXR1cm4gbmV3ICRuKGUuc3RhcnRMaW5lTnVtYmVyLGUuZW5kTGluZU51bWJlcil9c3RhdGljIGpvaW5NYW55KGUpe2lmKDA9PT1lLmxlbmd0aClyZXR1cm5bXTtsZXQgdD1lWzBdO2ZvcihsZXQgbj0xO248ZS5sZW5ndGg7bisrKXQ9dGhpcy5qb2luKHQsZVtuXSk7cmV0dXJuIHR9c3RhdGljIGpvaW4oZSx0KXtpZigwPT09ZS5sZW5ndGgpcmV0dXJuIHQ7aWYoMD09PXQubGVuZ3RoKXJldHVybiBlO2NvbnN0IG49W107bGV0IHI9MCxpPTAsbz1udWxsO2Zvcig7cjxlLmxlbmd0aHx8aTx0Lmxlbmd0aDspe2xldCBzPW51bGw7aWYocjxlLmxlbmd0aCYmaTx0Lmxlbmd0aCl7Y29uc3Qgbj1lW3JdLG89dFtpXTtuLnN0YXJ0TGluZU51bWJlcjxvLnN0YXJ0TGluZU51bWJlcj8ocz1uLHIrKyk6KHM9byxpKyspfWVsc2UgcjxlLmxlbmd0aD8ocz1lW3JdLHIrKyk6KHM9dFtpXSxpKyspO251bGw9PT1vP289czpvLmVuZExpbmVOdW1iZXJFeGNsdXNpdmU+PXMuc3RhcnRMaW5lTnVtYmVyP289bmV3ICRuKG8uc3RhcnRMaW5lTnVtYmVyLE1hdGgubWF4KG8uZW5kTGluZU51bWJlckV4Y2x1c2l2ZSxzLmVuZExpbmVOdW1iZXJFeGNsdXNpdmUpKToobi5wdXNoKG8pLG89cyl9cmV0dXJuIG51bGwhPT1vJiZuLnB1c2gobyksbn1zdGF0aWMgb2ZMZW5ndGgoZSx0KXtyZXR1cm4gbmV3ICRuKGUsZSt0KX1jb25zdHJ1Y3RvcihlLHQpe2lmKGU+dCl0aHJvdyBuZXcgcyhgc3RhcnRMaW5lTnVtYmVyICR7ZX0gY2Fubm90IGJlIGFmdGVyIGVuZExpbmVOdW1iZXJFeGNsdXNpdmUgJHt0fWApO3RoaXMuc3RhcnRMaW5lTnVtYmVyPWUsdGhpcy5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlPXR9Y29udGFpbnMoZSl7cmV0dXJuIHRoaXMuc3RhcnRMaW5lTnVtYmVyPD1lJiZlPHRoaXMuZW5kTGluZU51bWJlckV4Y2x1c2l2ZX1nZXQgaXNFbXB0eSgpe3JldHVybiB0aGlzLnN0YXJ0TGluZU51bWJlcj09PXRoaXMuZW5kTGluZU51bWJlckV4Y2x1c2l2ZX1kZWx0YShlKXtyZXR1cm4gbmV3ICRuKHRoaXMuc3RhcnRMaW5lTnVtYmVyK2UsdGhpcy5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlK2UpfWdldCBsZW5ndGgoKXtyZXR1cm4gdGhpcy5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlLXRoaXMuc3RhcnRMaW5lTnVtYmVyfWpvaW4oZSl7cmV0dXJuIG5ldyAkbihNYXRoLm1pbih0aGlzLnN0YXJ0TGluZU51bWJlcixlLnN0YXJ0TGluZU51bWJlciksTWF0aC5tYXgodGhpcy5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlLGUuZW5kTGluZU51bWJlckV4Y2x1c2l2ZSkpfXRvU3RyaW5nKCl7cmV0dXJuYFske3RoaXMuc3RhcnRMaW5lTnVtYmVyfSwke3RoaXMuZW5kTGluZU51bWJlckV4Y2x1c2l2ZX0pYH1pbnRlcnNlY3QoZSl7Y29uc3QgdD1NYXRoLm1heCh0aGlzLnN0YXJ0TGluZU51bWJlcixlLnN0YXJ0TGluZU51bWJlciksbj1NYXRoLm1pbih0aGlzLmVuZExpbmVOdW1iZXJFeGNsdXNpdmUsZS5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlKTtpZih0PD1uKXJldHVybiBuZXcgJG4odCxuKX1pbnRlcnNlY3RzU3RyaWN0KGUpe3JldHVybiB0aGlzLnN0YXJ0TGluZU51bWJlcjxlLmVuZExpbmVOdW1iZXJFeGNsdXNpdmUmJmUuc3RhcnRMaW5lTnVtYmVyPHRoaXMuZW5kTGluZU51bWJlckV4Y2x1c2l2ZX1vdmVybGFwT3JUb3VjaChlKXtyZXR1cm4gdGhpcy5zdGFydExpbmVOdW1iZXI8PWUuZW5kTGluZU51bWJlckV4Y2x1c2l2ZSYmZS5zdGFydExpbmVOdW1iZXI8PXRoaXMuZW5kTGluZU51bWJlckV4Y2x1c2l2ZX1lcXVhbHMoZSl7cmV0dXJuIHRoaXMuc3RhcnRMaW5lTnVtYmVyPT09ZS5zdGFydExpbmVOdW1iZXImJnRoaXMuZW5kTGluZU51bWJlckV4Y2x1c2l2ZT09PWUuZW5kTGluZU51bWJlckV4Y2x1c2l2ZX10b0luY2x1c2l2ZVJhbmdlKCl7cmV0dXJuIHRoaXMuaXNFbXB0eT9udWxsOm5ldyBydCh0aGlzLnN0YXJ0TGluZU51bWJlciwxLHRoaXMuZW5kTGluZU51bWJlckV4Y2x1c2l2ZS0xLE51bWJlci5NQVhfU0FGRV9JTlRFR0VSKX10b0V4Y2x1c2l2ZVJhbmdlKCl7cmV0dXJuIG5ldyBydCh0aGlzLnN0YXJ0TGluZU51bWJlciwxLHRoaXMuZW5kTGluZU51bWJlckV4Y2x1c2l2ZSwxKX19Y2xhc3MgSG57Y29uc3RydWN0b3IoZSx0KXt0aGlzLmNoYW5nZXM9ZSx0aGlzLmhpdFRpbWVvdXQ9dH19Y2xhc3MgR257c3RhdGljIGludmVyc2UoZSx0LG4pe2NvbnN0IHI9W107bGV0IGk9MSxvPTE7Zm9yKGNvbnN0IHQgb2YgZSl7Y29uc3QgZT1uZXcgR24obmV3ICRuKGksdC5vcmlnaW5hbFJhbmdlLnN0YXJ0TGluZU51bWJlciksbmV3ICRuKG8sdC5tb2RpZmllZFJhbmdlLnN0YXJ0TGluZU51bWJlciksdm9pZCAwKTtlLm1vZGlmaWVkUmFuZ2UuaXNFbXB0eXx8ci5wdXNoKGUpLGk9dC5vcmlnaW5hbFJhbmdlLmVuZExpbmVOdW1iZXJFeGNsdXNpdmUsbz10Lm1vZGlmaWVkUmFuZ2UuZW5kTGluZU51bWJlckV4Y2x1c2l2ZX1jb25zdCBzPW5ldyBHbihuZXcgJG4oaSx0KzEpLG5ldyAkbihvLG4rMSksdm9pZCAwKTtyZXR1cm4gcy5tb2RpZmllZFJhbmdlLmlzRW1wdHl8fHIucHVzaChzKSxyfWNvbnN0cnVjdG9yKGUsdCxuKXt0aGlzLm9yaWdpbmFsUmFuZ2U9ZSx0aGlzLm1vZGlmaWVkUmFuZ2U9dCx0aGlzLmlubmVyQ2hhbmdlcz1ufXRvU3RyaW5nKCl7cmV0dXJuYHske3RoaXMub3JpZ2luYWxSYW5nZS50b1N0cmluZygpfS0+JHt0aGlzLm1vZGlmaWVkUmFuZ2UudG9TdHJpbmcoKX19YH1nZXQgY2hhbmdlZExpbmVDb3VudCgpe3JldHVybiBNYXRoLm1heCh0aGlzLm9yaWdpbmFsUmFuZ2UubGVuZ3RoLHRoaXMubW9kaWZpZWRSYW5nZS5sZW5ndGgpfX1jbGFzcyBKbntjb25zdHJ1Y3RvcihlLHQpe3RoaXMub3JpZ2luYWxSYW5nZT1lLHRoaXMubW9kaWZpZWRSYW5nZT10fXRvU3RyaW5nKCl7cmV0dXJuYHske3RoaXMub3JpZ2luYWxSYW5nZS50b1N0cmluZygpfS0+JHt0aGlzLm1vZGlmaWVkUmFuZ2UudG9TdHJpbmcoKX19YH19ZnVuY3Rpb24gWG4oZSx0LG4scil7cmV0dXJuIG5ldyB5ZShlLHQsbikuQ29tcHV0ZURpZmYocil9bGV0IFluPWNsYXNze2NvbnN0cnVjdG9yKGUpe2NvbnN0IHQ9W10sbj1bXTtmb3IobGV0IHI9MCxpPWUubGVuZ3RoO3I8aTtyKyspdFtyXT1ucihlW3JdLDEpLG5bcl09cnIoZVtyXSwxKTt0aGlzLmxpbmVzPWUsdGhpcy5fc3RhcnRDb2x1bW5zPXQsdGhpcy5fZW5kQ29sdW1ucz1ufWdldEVsZW1lbnRzKCl7Y29uc3QgZT1bXTtmb3IobGV0IHQ9MCxuPXRoaXMubGluZXMubGVuZ3RoO3Q8bjt0KyspZVt0XT10aGlzLmxpbmVzW3RdLnN1YnN0cmluZyh0aGlzLl9zdGFydENvbHVtbnNbdF0tMSx0aGlzLl9lbmRDb2x1bW5zW3RdLTEpO3JldHVybiBlfWdldFN0cmljdEVsZW1lbnQoZSl7cmV0dXJuIHRoaXMubGluZXNbZV19Z2V0U3RhcnRMaW5lTnVtYmVyKGUpe3JldHVybiBlKzF9Z2V0RW5kTGluZU51bWJlcihlKXtyZXR1cm4gZSsxfWNyZWF0ZUNoYXJTZXF1ZW5jZShlLHQsbil7Y29uc3Qgcj1bXSxpPVtdLG89W107bGV0IHM9MDtmb3IobGV0IGE9dDthPD1uO2ErKyl7Y29uc3QgdD10aGlzLmxpbmVzW2FdLGw9ZT90aGlzLl9zdGFydENvbHVtbnNbYV06MSxjPWU/dGhpcy5fZW5kQ29sdW1uc1thXTp0Lmxlbmd0aCsxO2ZvcihsZXQgZT1sO2U8YztlKyspcltzXT10LmNoYXJDb2RlQXQoZS0xKSxpW3NdPWErMSxvW3NdPWUscysrOyFlJiZhPG4mJihyW3NdPTEwLGlbc109YSsxLG9bc109dC5sZW5ndGgrMSxzKyspfXJldHVybiBuZXcgWm4ocixpLG8pfX07Y2xhc3MgWm57Y29uc3RydWN0b3IoZSx0LG4pe3RoaXMuX2NoYXJDb2Rlcz1lLHRoaXMuX2xpbmVOdW1iZXJzPXQsdGhpcy5fY29sdW1ucz1ufXRvU3RyaW5nKCl7cmV0dXJuIlsiK3RoaXMuX2NoYXJDb2Rlcy5tYXAoKChlLHQpPT4oMTA9PT1lPyJcXG4iOlN0cmluZy5mcm9tQ2hhckNvZGUoZSkpK2AtKCR7dGhpcy5fbGluZU51bWJlcnNbdF19LCR7dGhpcy5fY29sdW1uc1t0XX0pYCkpLmpvaW4oIiwgIikrIl0ifV9hc3NlcnRJbmRleChlLHQpe2lmKGU8MHx8ZT49dC5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJJbGxlZ2FsIGluZGV4Iil9Z2V0RWxlbWVudHMoKXtyZXR1cm4gdGhpcy5fY2hhckNvZGVzfWdldFN0YXJ0TGluZU51bWJlcihlKXtyZXR1cm4gZT4wJiZlPT09dGhpcy5fbGluZU51bWJlcnMubGVuZ3RoP3RoaXMuZ2V0RW5kTGluZU51bWJlcihlLTEpOih0aGlzLl9hc3NlcnRJbmRleChlLHRoaXMuX2xpbmVOdW1iZXJzKSx0aGlzLl9saW5lTnVtYmVyc1tlXSl9Z2V0RW5kTGluZU51bWJlcihlKXtyZXR1cm4tMT09PWU/dGhpcy5nZXRTdGFydExpbmVOdW1iZXIoZSsxKToodGhpcy5fYXNzZXJ0SW5kZXgoZSx0aGlzLl9saW5lTnVtYmVycyksMTA9PT10aGlzLl9jaGFyQ29kZXNbZV0/dGhpcy5fbGluZU51bWJlcnNbZV0rMTp0aGlzLl9saW5lTnVtYmVyc1tlXSl9Z2V0U3RhcnRDb2x1bW4oZSl7cmV0dXJuIGU+MCYmZT09PXRoaXMuX2NvbHVtbnMubGVuZ3RoP3RoaXMuZ2V0RW5kQ29sdW1uKGUtMSk6KHRoaXMuX2Fzc2VydEluZGV4KGUsdGhpcy5fY29sdW1ucyksdGhpcy5fY29sdW1uc1tlXSl9Z2V0RW5kQ29sdW1uKGUpe3JldHVybi0xPT09ZT90aGlzLmdldFN0YXJ0Q29sdW1uKGUrMSk6KHRoaXMuX2Fzc2VydEluZGV4KGUsdGhpcy5fY29sdW1ucyksMTA9PT10aGlzLl9jaGFyQ29kZXNbZV0/MTp0aGlzLl9jb2x1bW5zW2VdKzEpfX1jbGFzcyBRbntjb25zdHJ1Y3RvcihlLHQsbixyLGksbyxzLGEpe3RoaXMub3JpZ2luYWxTdGFydExpbmVOdW1iZXI9ZSx0aGlzLm9yaWdpbmFsU3RhcnRDb2x1bW49dCx0aGlzLm9yaWdpbmFsRW5kTGluZU51bWJlcj1uLHRoaXMub3JpZ2luYWxFbmRDb2x1bW49cix0aGlzLm1vZGlmaWVkU3RhcnRMaW5lTnVtYmVyPWksdGhpcy5tb2RpZmllZFN0YXJ0Q29sdW1uPW8sdGhpcy5tb2RpZmllZEVuZExpbmVOdW1iZXI9cyx0aGlzLm1vZGlmaWVkRW5kQ29sdW1uPWF9c3RhdGljIGNyZWF0ZUZyb21EaWZmQ2hhbmdlKGUsdCxuKXtjb25zdCByPXQuZ2V0U3RhcnRMaW5lTnVtYmVyKGUub3JpZ2luYWxTdGFydCksaT10LmdldFN0YXJ0Q29sdW1uKGUub3JpZ2luYWxTdGFydCksbz10LmdldEVuZExpbmVOdW1iZXIoZS5vcmlnaW5hbFN0YXJ0K2Uub3JpZ2luYWxMZW5ndGgtMSkscz10LmdldEVuZENvbHVtbihlLm9yaWdpbmFsU3RhcnQrZS5vcmlnaW5hbExlbmd0aC0xKSxhPW4uZ2V0U3RhcnRMaW5lTnVtYmVyKGUubW9kaWZpZWRTdGFydCksbD1uLmdldFN0YXJ0Q29sdW1uKGUubW9kaWZpZWRTdGFydCksYz1uLmdldEVuZExpbmVOdW1iZXIoZS5tb2RpZmllZFN0YXJ0K2UubW9kaWZpZWRMZW5ndGgtMSksaD1uLmdldEVuZENvbHVtbihlLm1vZGlmaWVkU3RhcnQrZS5tb2RpZmllZExlbmd0aC0xKTtyZXR1cm4gbmV3IFFuKHIsaSxvLHMsYSxsLGMsaCl9fWNsYXNzIGVye2NvbnN0cnVjdG9yKGUsdCxuLHIsaSl7dGhpcy5vcmlnaW5hbFN0YXJ0TGluZU51bWJlcj1lLHRoaXMub3JpZ2luYWxFbmRMaW5lTnVtYmVyPXQsdGhpcy5tb2RpZmllZFN0YXJ0TGluZU51bWJlcj1uLHRoaXMubW9kaWZpZWRFbmRMaW5lTnVtYmVyPXIsdGhpcy5jaGFyQ2hhbmdlcz1pfXN0YXRpYyBjcmVhdGVGcm9tRGlmZlJlc3VsdChlLHQsbixyLGksbyxzKXtsZXQgYSxsLGMsaCxkO2lmKDA9PT10Lm9yaWdpbmFsTGVuZ3RoPyhhPW4uZ2V0U3RhcnRMaW5lTnVtYmVyKHQub3JpZ2luYWxTdGFydCktMSxsPTApOihhPW4uZ2V0U3RhcnRMaW5lTnVtYmVyKHQub3JpZ2luYWxTdGFydCksbD1uLmdldEVuZExpbmVOdW1iZXIodC5vcmlnaW5hbFN0YXJ0K3Qub3JpZ2luYWxMZW5ndGgtMSkpLDA9PT10Lm1vZGlmaWVkTGVuZ3RoPyhjPXIuZ2V0U3RhcnRMaW5lTnVtYmVyKHQubW9kaWZpZWRTdGFydCktMSxoPTApOihjPXIuZ2V0U3RhcnRMaW5lTnVtYmVyKHQubW9kaWZpZWRTdGFydCksaD1yLmdldEVuZExpbmVOdW1iZXIodC5tb2RpZmllZFN0YXJ0K3QubW9kaWZpZWRMZW5ndGgtMSkpLG8mJnQub3JpZ2luYWxMZW5ndGg+MCYmdC5vcmlnaW5hbExlbmd0aDwyMCYmdC5tb2RpZmllZExlbmd0aD4wJiZ0Lm1vZGlmaWVkTGVuZ3RoPDIwJiZpKCkpe2NvbnN0IG89bi5jcmVhdGVDaGFyU2VxdWVuY2UoZSx0Lm9yaWdpbmFsU3RhcnQsdC5vcmlnaW5hbFN0YXJ0K3Qub3JpZ2luYWxMZW5ndGgtMSksYT1yLmNyZWF0ZUNoYXJTZXF1ZW5jZShlLHQubW9kaWZpZWRTdGFydCx0Lm1vZGlmaWVkU3RhcnQrdC5tb2RpZmllZExlbmd0aC0xKTtpZihvLmdldEVsZW1lbnRzKCkubGVuZ3RoPjAmJmEuZ2V0RWxlbWVudHMoKS5sZW5ndGg+MCl7bGV0IGU9WG4obyxhLGksITApLmNoYW5nZXM7cyYmKGU9ZnVuY3Rpb24oZSl7aWYoZS5sZW5ndGg8PTEpcmV0dXJuIGU7Y29uc3QgdD1bZVswXV07bGV0IG49dFswXTtmb3IobGV0IHI9MSxpPWUubGVuZ3RoO3I8aTtyKyspe2NvbnN0IGk9ZVtyXSxvPWkub3JpZ2luYWxTdGFydC0obi5vcmlnaW5hbFN0YXJ0K24ub3JpZ2luYWxMZW5ndGgpLHM9aS5tb2RpZmllZFN0YXJ0LShuLm1vZGlmaWVkU3RhcnQrbi5tb2RpZmllZExlbmd0aCk7TWF0aC5taW4obyxzKTwzPyhuLm9yaWdpbmFsTGVuZ3RoPWkub3JpZ2luYWxTdGFydCtpLm9yaWdpbmFsTGVuZ3RoLW4ub3JpZ2luYWxTdGFydCxuLm1vZGlmaWVkTGVuZ3RoPWkubW9kaWZpZWRTdGFydCtpLm1vZGlmaWVkTGVuZ3RoLW4ubW9kaWZpZWRTdGFydCk6KHQucHVzaChpKSxuPWkpfXJldHVybiB0fShlKSksZD1bXTtmb3IobGV0IHQ9MCxuPWUubGVuZ3RoO3Q8bjt0KyspZC5wdXNoKFFuLmNyZWF0ZUZyb21EaWZmQ2hhbmdlKGVbdF0sbyxhKSl9fXJldHVybiBuZXcgZXIoYSxsLGMsaCxkKX19Y2xhc3MgdHJ7Y29uc3RydWN0b3IoZSx0LG4pe3RoaXMuc2hvdWxkQ29tcHV0ZUNoYXJDaGFuZ2VzPW4uc2hvdWxkQ29tcHV0ZUNoYXJDaGFuZ2VzLHRoaXMuc2hvdWxkUG9zdFByb2Nlc3NDaGFyQ2hhbmdlcz1uLnNob3VsZFBvc3RQcm9jZXNzQ2hhckNoYW5nZXMsdGhpcy5zaG91bGRJZ25vcmVUcmltV2hpdGVzcGFjZT1uLnNob3VsZElnbm9yZVRyaW1XaGl0ZXNwYWNlLHRoaXMuc2hvdWxkTWFrZVByZXR0eURpZmY9bi5zaG91bGRNYWtlUHJldHR5RGlmZix0aGlzLm9yaWdpbmFsTGluZXM9ZSx0aGlzLm1vZGlmaWVkTGluZXM9dCx0aGlzLm9yaWdpbmFsPW5ldyBZbihlKSx0aGlzLm1vZGlmaWVkPW5ldyBZbih0KSx0aGlzLmNvbnRpbnVlTGluZURpZmY9aXIobi5tYXhDb21wdXRhdGlvblRpbWUpLHRoaXMuY29udGludWVDaGFyRGlmZj1pcigwPT09bi5tYXhDb21wdXRhdGlvblRpbWU/MDpNYXRoLm1pbihuLm1heENvbXB1dGF0aW9uVGltZSw1ZTMpKX1jb21wdXRlRGlmZigpe2lmKDE9PT10aGlzLm9yaWdpbmFsLmxpbmVzLmxlbmd0aCYmMD09PXRoaXMub3JpZ2luYWwubGluZXNbMF0ubGVuZ3RoKXJldHVybiAxPT09dGhpcy5tb2RpZmllZC5saW5lcy5sZW5ndGgmJjA9PT10aGlzLm1vZGlmaWVkLmxpbmVzWzBdLmxlbmd0aD97cXVpdEVhcmx5OiExLGNoYW5nZXM6W119OntxdWl0RWFybHk6ITEsY2hhbmdlczpbe29yaWdpbmFsU3RhcnRMaW5lTnVtYmVyOjEsb3JpZ2luYWxFbmRMaW5lTnVtYmVyOjEsbW9kaWZpZWRTdGFydExpbmVOdW1iZXI6MSxtb2RpZmllZEVuZExpbmVOdW1iZXI6dGhpcy5tb2RpZmllZC5saW5lcy5sZW5ndGgsY2hhckNoYW5nZXM6dm9pZCAwfV19O2lmKDE9PT10aGlzLm1vZGlmaWVkLmxpbmVzLmxlbmd0aCYmMD09PXRoaXMubW9kaWZpZWQubGluZXNbMF0ubGVuZ3RoKXJldHVybntxdWl0RWFybHk6ITEsY2hhbmdlczpbe29yaWdpbmFsU3RhcnRMaW5lTnVtYmVyOjEsb3JpZ2luYWxFbmRMaW5lTnVtYmVyOnRoaXMub3JpZ2luYWwubGluZXMubGVuZ3RoLG1vZGlmaWVkU3RhcnRMaW5lTnVtYmVyOjEsbW9kaWZpZWRFbmRMaW5lTnVtYmVyOjEsY2hhckNoYW5nZXM6dm9pZCAwfV19O2NvbnN0IGU9WG4odGhpcy5vcmlnaW5hbCx0aGlzLm1vZGlmaWVkLHRoaXMuY29udGludWVMaW5lRGlmZix0aGlzLnNob3VsZE1ha2VQcmV0dHlEaWZmKSx0PWUuY2hhbmdlcyxuPWUucXVpdEVhcmx5O2lmKHRoaXMuc2hvdWxkSWdub3JlVHJpbVdoaXRlc3BhY2Upe2NvbnN0IGU9W107Zm9yKGxldCBuPTAscj10Lmxlbmd0aDtuPHI7bisrKWUucHVzaChlci5jcmVhdGVGcm9tRGlmZlJlc3VsdCh0aGlzLnNob3VsZElnbm9yZVRyaW1XaGl0ZXNwYWNlLHRbbl0sdGhpcy5vcmlnaW5hbCx0aGlzLm1vZGlmaWVkLHRoaXMuY29udGludWVDaGFyRGlmZix0aGlzLnNob3VsZENvbXB1dGVDaGFyQ2hhbmdlcyx0aGlzLnNob3VsZFBvc3RQcm9jZXNzQ2hhckNoYW5nZXMpKTtyZXR1cm57cXVpdEVhcmx5Om4sY2hhbmdlczplfX1jb25zdCByPVtdO2xldCBpPTAsbz0wO2ZvcihsZXQgZT0tMSxuPXQubGVuZ3RoO2U8bjtlKyspe2NvbnN0IHM9ZSsxPG4/dFtlKzFdOm51bGwsYT1zP3Mub3JpZ2luYWxTdGFydDp0aGlzLm9yaWdpbmFsTGluZXMubGVuZ3RoLGw9cz9zLm1vZGlmaWVkU3RhcnQ6dGhpcy5tb2RpZmllZExpbmVzLmxlbmd0aDtmb3IoO2k8YSYmbzxsOyl7Y29uc3QgZT10aGlzLm9yaWdpbmFsTGluZXNbaV0sdD10aGlzLm1vZGlmaWVkTGluZXNbb107aWYoZSE9PXQpe3tsZXQgbj1ucihlLDEpLHM9bnIodCwxKTtmb3IoO24+MSYmcz4xOyl7aWYoZS5jaGFyQ29kZUF0KG4tMikhPT10LmNoYXJDb2RlQXQocy0yKSlicmVhaztuLS0scy0tfShuPjF8fHM+MSkmJnRoaXMuX3B1c2hUcmltV2hpdGVzcGFjZUNoYXJDaGFuZ2UocixpKzEsMSxuLG8rMSwxLHMpfXtsZXQgbj1ycihlLDEpLHM9cnIodCwxKTtjb25zdCBhPWUubGVuZ3RoKzEsbD10Lmxlbmd0aCsxO2Zvcig7bjxhJiZzPGw7KXtpZihlLmNoYXJDb2RlQXQobi0xKSE9PWUuY2hhckNvZGVBdChzLTEpKWJyZWFrO24rKyxzKyt9KG48YXx8czxsKSYmdGhpcy5fcHVzaFRyaW1XaGl0ZXNwYWNlQ2hhckNoYW5nZShyLGkrMSxuLGEsbysxLHMsbCl9fWkrKyxvKyt9cyYmKHIucHVzaChlci5jcmVhdGVGcm9tRGlmZlJlc3VsdCh0aGlzLnNob3VsZElnbm9yZVRyaW1XaGl0ZXNwYWNlLHMsdGhpcy5vcmlnaW5hbCx0aGlzLm1vZGlmaWVkLHRoaXMuY29udGludWVDaGFyRGlmZix0aGlzLnNob3VsZENvbXB1dGVDaGFyQ2hhbmdlcyx0aGlzLnNob3VsZFBvc3RQcm9jZXNzQ2hhckNoYW5nZXMpKSxpKz1zLm9yaWdpbmFsTGVuZ3RoLG8rPXMubW9kaWZpZWRMZW5ndGgpfXJldHVybntxdWl0RWFybHk6bixjaGFuZ2VzOnJ9fV9wdXNoVHJpbVdoaXRlc3BhY2VDaGFyQ2hhbmdlKGUsdCxuLHIsaSxvLHMpe2lmKHRoaXMuX21lcmdlVHJpbVdoaXRlc3BhY2VDaGFyQ2hhbmdlKGUsdCxuLHIsaSxvLHMpKXJldHVybjtsZXQgYTt0aGlzLnNob3VsZENvbXB1dGVDaGFyQ2hhbmdlcyYmKGE9W25ldyBRbih0LG4sdCxyLGksbyxpLHMpXSksZS5wdXNoKG5ldyBlcih0LHQsaSxpLGEpKX1fbWVyZ2VUcmltV2hpdGVzcGFjZUNoYXJDaGFuZ2UoZSx0LG4scixpLG8scyl7Y29uc3QgYT1lLmxlbmd0aDtpZigwPT09YSlyZXR1cm4hMTtjb25zdCBsPWVbYS0xXTtyZXR1cm4gMCE9PWwub3JpZ2luYWxFbmRMaW5lTnVtYmVyJiYwIT09bC5tb2RpZmllZEVuZExpbmVOdW1iZXImJihsLm9yaWdpbmFsRW5kTGluZU51bWJlcj09PXQmJmwubW9kaWZpZWRFbmRMaW5lTnVtYmVyPT09aT8odGhpcy5zaG91bGRDb21wdXRlQ2hhckNoYW5nZXMmJmwuY2hhckNoYW5nZXMmJmwuY2hhckNoYW5nZXMucHVzaChuZXcgUW4odCxuLHQscixpLG8saSxzKSksITApOmwub3JpZ2luYWxFbmRMaW5lTnVtYmVyKzE9PT10JiZsLm1vZGlmaWVkRW5kTGluZU51bWJlcisxPT09aSYmKGwub3JpZ2luYWxFbmRMaW5lTnVtYmVyPXQsbC5tb2RpZmllZEVuZExpbmVOdW1iZXI9aSx0aGlzLnNob3VsZENvbXB1dGVDaGFyQ2hhbmdlcyYmbC5jaGFyQ2hhbmdlcyYmbC5jaGFyQ2hhbmdlcy5wdXNoKG5ldyBRbih0LG4sdCxyLGksbyxpLHMpKSwhMCkpfX1mdW5jdGlvbiBucihlLHQpe2NvbnN0IG49ZnVuY3Rpb24oZSl7Zm9yKGxldCB0PTAsbj1lLmxlbmd0aDt0PG47dCsrKXtjb25zdCBuPWUuY2hhckNvZGVBdCh0KTtpZigzMiE9PW4mJjkhPT1uKXJldHVybiB0fXJldHVybi0xfShlKTtyZXR1cm4tMT09PW4/dDpuKzF9ZnVuY3Rpb24gcnIoZSx0KXtjb25zdCBuPWZ1bmN0aW9uKGUsdD1lLmxlbmd0aC0xKXtmb3IobGV0IG49dDtuPj0wO24tLSl7Y29uc3QgdD1lLmNoYXJDb2RlQXQobik7aWYoMzIhPT10JiY5IT09dClyZXR1cm4gbn1yZXR1cm4tMX0oZSk7cmV0dXJuLTE9PT1uP3Q6bisyfWZ1bmN0aW9uIGlyKGUpe2lmKDA9PT1lKXJldHVybigpPT4hMDtjb25zdCB0PURhdGUubm93KCk7cmV0dXJuKCk9PkRhdGUubm93KCktdDxlfWNsYXNzIG9ye3N0YXRpYyBhZGRSYW5nZShlLHQpe2xldCBuPTA7Zm9yKDtuPHQubGVuZ3RoJiZ0W25dLmVuZEV4Y2x1c2l2ZTxlLnN0YXJ0OyluKys7bGV0IHI9bjtmb3IoO3I8dC5sZW5ndGgmJnRbcl0uc3RhcnQ8PWUuZW5kRXhjbHVzaXZlOylyKys7aWYobj09PXIpdC5zcGxpY2UobiwwLGUpO2Vsc2V7Y29uc3QgaT1NYXRoLm1pbihlLnN0YXJ0LHRbbl0uc3RhcnQpLG89TWF0aC5tYXgoZS5lbmRFeGNsdXNpdmUsdFtyLTFdLmVuZEV4Y2x1c2l2ZSk7dC5zcGxpY2UobixyLW4sbmV3IG9yKGksbykpfX1zdGF0aWMgdHJ5Q3JlYXRlKGUsdCl7aWYoIShlPnQpKXJldHVybiBuZXcgb3IoZSx0KX1jb25zdHJ1Y3RvcihlLHQpe2lmKHRoaXMuc3RhcnQ9ZSx0aGlzLmVuZEV4Y2x1c2l2ZT10LGU+dCl0aHJvdyBuZXcgcyhgSW52YWxpZCByYW5nZTogJHt0aGlzLnRvU3RyaW5nKCl9YCl9Z2V0IGlzRW1wdHkoKXtyZXR1cm4gdGhpcy5zdGFydD09PXRoaXMuZW5kRXhjbHVzaXZlfWRlbHRhKGUpe3JldHVybiBuZXcgb3IodGhpcy5zdGFydCtlLHRoaXMuZW5kRXhjbHVzaXZlK2UpfWdldCBsZW5ndGgoKXtyZXR1cm4gdGhpcy5lbmRFeGNsdXNpdmUtdGhpcy5zdGFydH10b1N0cmluZygpe3JldHVybmBbJHt0aGlzLnN0YXJ0fSwgJHt0aGlzLmVuZEV4Y2x1c2l2ZX0pYH1lcXVhbHMoZSl7cmV0dXJuIHRoaXMuc3RhcnQ9PT1lLnN0YXJ0JiZ0aGlzLmVuZEV4Y2x1c2l2ZT09PWUuZW5kRXhjbHVzaXZlfWNvbnRhaW5zUmFuZ2UoZSl7cmV0dXJuIHRoaXMuc3RhcnQ8PWUuc3RhcnQmJmUuZW5kRXhjbHVzaXZlPD10aGlzLmVuZEV4Y2x1c2l2ZX1qb2luKGUpe3JldHVybiBuZXcgb3IoTWF0aC5taW4odGhpcy5zdGFydCxlLnN0YXJ0KSxNYXRoLm1heCh0aGlzLmVuZEV4Y2x1c2l2ZSxlLmVuZEV4Y2x1c2l2ZSkpfWludGVyc2VjdChlKXtjb25zdCB0PU1hdGgubWF4KHRoaXMuc3RhcnQsZS5zdGFydCksbj1NYXRoLm1pbih0aGlzLmVuZEV4Y2x1c2l2ZSxlLmVuZEV4Y2x1c2l2ZSk7aWYodDw9bilyZXR1cm4gbmV3IG9yKHQsbil9fWNsYXNzIHNye3N0YXRpYyB0cml2aWFsKGUsdCl7cmV0dXJuIG5ldyBzcihbbmV3IGFyKG5ldyBvcigwLGUubGVuZ3RoKSxuZXcgb3IoMCx0Lmxlbmd0aCkpXSwhMSl9c3RhdGljIHRyaXZpYWxUaW1lZE91dChlLHQpe3JldHVybiBuZXcgc3IoW25ldyBhcihuZXcgb3IoMCxlLmxlbmd0aCksbmV3IG9yKDAsdC5sZW5ndGgpKV0sITApfWNvbnN0cnVjdG9yKGUsdCl7dGhpcy5kaWZmcz1lLHRoaXMuaGl0VGltZW91dD10fX1jbGFzcyBhcntjb25zdHJ1Y3RvcihlLHQpe3RoaXMuc2VxMVJhbmdlPWUsdGhpcy5zZXEyUmFuZ2U9dH1yZXZlcnNlKCl7cmV0dXJuIG5ldyBhcih0aGlzLnNlcTJSYW5nZSx0aGlzLnNlcTFSYW5nZSl9dG9TdHJpbmcoKXtyZXR1cm5gJHt0aGlzLnNlcTFSYW5nZX0gPC0+ICR7dGhpcy5zZXEyUmFuZ2V9YH1qb2luKGUpe3JldHVybiBuZXcgYXIodGhpcy5zZXExUmFuZ2Uuam9pbihlLnNlcTFSYW5nZSksdGhpcy5zZXEyUmFuZ2Uuam9pbihlLnNlcTJSYW5nZSkpfX1jbGFzcyBscntpc1ZhbGlkKCl7cmV0dXJuITB9fWxyLmluc3RhbmNlPW5ldyBscjtjbGFzcyBjcntjb25zdHJ1Y3RvcihlKXtpZih0aGlzLnRpbWVvdXQ9ZSx0aGlzLnN0YXJ0VGltZT1EYXRlLm5vdygpLHRoaXMudmFsaWQ9ITAsZTw9MCl0aHJvdyBuZXcgcygidGltZW91dCBtdXN0IGJlIHBvc2l0aXZlIil9aXNWYWxpZCgpe3JldHVybiEoRGF0ZS5ub3coKS10aGlzLnN0YXJ0VGltZTx0aGlzLnRpbWVvdXQpJiZ0aGlzLnZhbGlkJiYodGhpcy52YWxpZD0hMSksdGhpcy52YWxpZH19Y2xhc3MgaHJ7Y29uc3RydWN0b3IoZSx0KXt0aGlzLndpZHRoPWUsdGhpcy5oZWlnaHQ9dCx0aGlzLmFycmF5PVtdLHRoaXMuYXJyYXk9bmV3IEFycmF5KGUqdCl9Z2V0KGUsdCl7cmV0dXJuIHRoaXMuYXJyYXlbZSt0KnRoaXMud2lkdGhdfXNldChlLHQsbil7dGhpcy5hcnJheVtlK3QqdGhpcy53aWR0aF09bn19Y2xhc3MgZHJ7Y29tcHV0ZShlLHQsbj1sci5pbnN0YW5jZSxyKXtpZigwPT09ZS5sZW5ndGh8fDA9PT10Lmxlbmd0aClyZXR1cm4gc3IudHJpdmlhbChlLHQpO2NvbnN0IGk9bmV3IGhyKGUubGVuZ3RoLHQubGVuZ3RoKSxvPW5ldyBocihlLmxlbmd0aCx0Lmxlbmd0aCkscz1uZXcgaHIoZS5sZW5ndGgsdC5sZW5ndGgpO2ZvcihsZXQgYT0wO2E8ZS5sZW5ndGg7YSsrKWZvcihsZXQgbD0wO2w8dC5sZW5ndGg7bCsrKXtpZighbi5pc1ZhbGlkKCkpcmV0dXJuIHNyLnRyaXZpYWxUaW1lZE91dChlLHQpO2NvbnN0IGM9MD09PWE/MDppLmdldChhLTEsbCksaD0wPT09bD8wOmkuZ2V0KGEsbC0xKTtsZXQgZDtlLmdldEVsZW1lbnQoYSk9PT10LmdldEVsZW1lbnQobCk/KGQ9MD09PWF8fDA9PT1sPzA6aS5nZXQoYS0xLGwtMSksYT4wJiZsPjAmJjM9PT1vLmdldChhLTEsbC0xKSYmKGQrPXMuZ2V0KGEtMSxsLTEpKSxkKz1yP3IoYSxsKToxKTpkPS0xO2NvbnN0IHA9TWF0aC5tYXgoYyxoLGQpO2lmKHA9PT1kKXtjb25zdCBlPWE+MCYmbD4wP3MuZ2V0KGEtMSxsLTEpOjA7cy5zZXQoYSxsLGUrMSksby5zZXQoYSxsLDMpfWVsc2UgcD09PWM/KHMuc2V0KGEsbCwwKSxvLnNldChhLGwsMSkpOnA9PT1oJiYocy5zZXQoYSxsLDApLG8uc2V0KGEsbCwyKSk7aS5zZXQoYSxsLHApfWNvbnN0IGE9W107bGV0IGw9ZS5sZW5ndGgsYz10Lmxlbmd0aDtmdW5jdGlvbiBoKGUsdCl7ZSsxPT09bCYmdCsxPT09Y3x8YS5wdXNoKG5ldyBhcihuZXcgb3IoZSsxLGwpLG5ldyBvcih0KzEsYykpKSxsPWUsYz10fWxldCBkPWUubGVuZ3RoLTEscD10Lmxlbmd0aC0xO2Zvcig7ZD49MCYmcD49MDspMz09PW8uZ2V0KGQscCk/KGgoZCxwKSxkLS0scC0tKToxPT09by5nZXQoZCxwKT9kLS06cC0tO3JldHVybiBoKC0xLC0xKSxhLnJldmVyc2UoKSxuZXcgc3IoYSwhMSl9fWZ1bmN0aW9uIHByKGUsdCxuKXtsZXQgcj1uO3JldHVybiByPWZ1bmN0aW9uKGUsdCxuKXtjb25zdCByPVtdO24ubGVuZ3RoPjAmJnIucHVzaChuWzBdKTtmb3IobGV0IGU9MTtlPG4ubGVuZ3RoO2UrKyl7Y29uc3QgaT1yW3IubGVuZ3RoLTFdLG89bltlXTtpZihvLnNlcTFSYW5nZS5pc0VtcHR5KXtsZXQgZT0hMDtjb25zdCBuPW8uc2VxMVJhbmdlLnN0YXJ0LWkuc2VxMVJhbmdlLmVuZEV4Y2x1c2l2ZTtmb3IobGV0IHI9MTtyPD1uO3IrKylpZih0LmdldEVsZW1lbnQoby5zZXEyUmFuZ2Uuc3RhcnQtcikhPT10LmdldEVsZW1lbnQoby5zZXEyUmFuZ2UuZW5kRXhjbHVzaXZlLXIpKXtlPSExO2JyZWFrfWlmKGUpe3Jbci5sZW5ndGgtMV09bmV3IGFyKGkuc2VxMVJhbmdlLG5ldyBvcihpLnNlcTJSYW5nZS5zdGFydCxvLnNlcTJSYW5nZS5lbmRFeGNsdXNpdmUtbikpO2NvbnRpbnVlfX1yLnB1c2gobyl9cmV0dXJuIHJ9KDAsdCxyKSxyPWZ1bmN0aW9uKGUsdCxuKXtpZighZS5nZXRCb3VuZGFyeVNjb3JlfHwhdC5nZXRCb3VuZGFyeVNjb3JlKXJldHVybiBuO2ZvcihsZXQgcj0wO3I8bi5sZW5ndGg7cisrKXtjb25zdCBpPW5bcl07aWYoaS5zZXExUmFuZ2UuaXNFbXB0eSl7Y29uc3Qgbz1yPjA/bltyLTFdLnNlcTJSYW5nZS5lbmRFeGNsdXNpdmU6LTEscz1yKzE8bi5sZW5ndGg/bltyKzFdLnNlcTJSYW5nZS5zdGFydDp0Lmxlbmd0aDtuW3JdPXVyKGksZSx0LHMsbyl9ZWxzZSBpZihpLnNlcTJSYW5nZS5pc0VtcHR5KXtjb25zdCBvPXI+MD9uW3ItMV0uc2VxMVJhbmdlLmVuZEV4Y2x1c2l2ZTotMSxzPXIrMTxuLmxlbmd0aD9uW3IrMV0uc2VxMVJhbmdlLnN0YXJ0OmUubGVuZ3RoO25bcl09dXIoaS5yZXZlcnNlKCksdCxlLHMsbykucmV2ZXJzZSgpfX1yZXR1cm4gbn0oZSx0LHIpLHJ9ZnVuY3Rpb24gdXIoZSx0LG4scixpKXtsZXQgbz0xO2Zvcig7ZS5zZXEyUmFuZ2Uuc3RhcnQtbz5pJiZuLmdldEVsZW1lbnQoZS5zZXEyUmFuZ2Uuc3RhcnQtbyk9PT1uLmdldEVsZW1lbnQoZS5zZXEyUmFuZ2UuZW5kRXhjbHVzaXZlLW8pJiZvPDIwOylvKys7by0tO2xldCBzPTA7Zm9yKDtlLnNlcTJSYW5nZS5zdGFydCtzPHImJm4uZ2V0RWxlbWVudChlLnNlcTJSYW5nZS5zdGFydCtzKT09PW4uZ2V0RWxlbWVudChlLnNlcTJSYW5nZS5lbmRFeGNsdXNpdmUrcykmJnM8MjA7KXMrKztpZigwPT09byYmMD09PXMpcmV0dXJuIGU7bGV0IGE9MCxsPS0xO2ZvcihsZXQgcj0tbztyPD1zO3IrKyl7Y29uc3QgaT1lLnNlcTJSYW5nZS5zdGFydCtyLG89ZS5zZXEyUmFuZ2UuZW5kRXhjbHVzaXZlK3Iscz1lLnNlcTFSYW5nZS5zdGFydCtyLGM9dC5nZXRCb3VuZGFyeVNjb3JlKHMpK24uZ2V0Qm91bmRhcnlTY29yZShpKStuLmdldEJvdW5kYXJ5U2NvcmUobyk7Yz5sJiYobD1jLGE9cil9cmV0dXJuIDAhPT1hP25ldyBhcihlLnNlcTFSYW5nZS5kZWx0YShhKSxlLnNlcTJSYW5nZS5kZWx0YShhKSk6ZX1jbGFzcyBtcntjb21wdXRlKGUsdCxuPWxyLmluc3RhbmNlKXtpZigwPT09ZS5sZW5ndGh8fDA9PT10Lmxlbmd0aClyZXR1cm4gc3IudHJpdmlhbChlLHQpO2Z1bmN0aW9uIHIobixyKXtmb3IoO248ZS5sZW5ndGgmJnI8dC5sZW5ndGgmJmUuZ2V0RWxlbWVudChuKT09PXQuZ2V0RWxlbWVudChyKTspbisrLHIrKztyZXR1cm4gbn1sZXQgaT0wO2NvbnN0IG89bmV3IGdyO28uc2V0KDAscigwLDApKTtjb25zdCBzPW5ldyBicjtzLnNldCgwLDA9PT1vLmdldCgwKT9udWxsOm5ldyBmcihudWxsLDAsMCxvLmdldCgwKSkpO2xldCBhPTA7ZTpmb3IoOzspZm9yKGkrKyxhPS1pO2E8PWk7YSs9Mil7aWYoIW4uaXNWYWxpZCgpKXJldHVybiBzci50cml2aWFsVGltZWRPdXQoZSx0KTtjb25zdCBsPWE9PT1pPy0xOm8uZ2V0KGErMSksYz1hPT09LWk/LTE6by5nZXQoYS0xKSsxLGg9TWF0aC5taW4oTWF0aC5tYXgobCxjKSxlLmxlbmd0aCksZD1oLWEscD1yKGgsZCk7by5zZXQoYSxwKTtjb25zdCB1PWg9PT1sP3MuZ2V0KGErMSk6cy5nZXQoYS0xKTtpZihzLnNldChhLHAhPT1oP25ldyBmcih1LGgsZCxwLWgpOnUpLG8uZ2V0KGEpPT09ZS5sZW5ndGgmJm8uZ2V0KGEpLWE9PT10Lmxlbmd0aClicmVhayBlfWxldCBsPXMuZ2V0KGEpO2NvbnN0IGM9W107bGV0IGg9ZS5sZW5ndGgsZD10Lmxlbmd0aDtmb3IoOzspe2NvbnN0IGU9bD9sLngrbC5sZW5ndGg6MCx0PWw/bC55K2wubGVuZ3RoOjA7aWYoZT09PWgmJnQ9PT1kfHxjLnB1c2gobmV3IGFyKG5ldyBvcihlLGgpLG5ldyBvcih0LGQpKSksIWwpYnJlYWs7aD1sLngsZD1sLnksbD1sLnByZXZ9cmV0dXJuIGMucmV2ZXJzZSgpLG5ldyBzcihjLCExKX19Y2xhc3MgZnJ7Y29uc3RydWN0b3IoZSx0LG4scil7dGhpcy5wcmV2PWUsdGhpcy54PXQsdGhpcy55PW4sdGhpcy5sZW5ndGg9cn19Y2xhc3MgZ3J7Y29uc3RydWN0b3IoKXt0aGlzLnBvc2l0aXZlQXJyPW5ldyBJbnQzMkFycmF5KDEwKSx0aGlzLm5lZ2F0aXZlQXJyPW5ldyBJbnQzMkFycmF5KDEwKX1nZXQoZSl7cmV0dXJuIGU8MD8oZT0tZS0xLHRoaXMubmVnYXRpdmVBcnJbZV0pOnRoaXMucG9zaXRpdmVBcnJbZV19c2V0KGUsdCl7aWYoZTwwKXtpZigoZT0tZS0xKT49dGhpcy5uZWdhdGl2ZUFyci5sZW5ndGgpe2NvbnN0IGU9dGhpcy5uZWdhdGl2ZUFycjt0aGlzLm5lZ2F0aXZlQXJyPW5ldyBJbnQzMkFycmF5KDIqZS5sZW5ndGgpLHRoaXMubmVnYXRpdmVBcnIuc2V0KGUpfXRoaXMubmVnYXRpdmVBcnJbZV09dH1lbHNle2lmKGU+PXRoaXMucG9zaXRpdmVBcnIubGVuZ3RoKXtjb25zdCBlPXRoaXMucG9zaXRpdmVBcnI7dGhpcy5wb3NpdGl2ZUFycj1uZXcgSW50MzJBcnJheSgyKmUubGVuZ3RoKSx0aGlzLnBvc2l0aXZlQXJyLnNldChlKX10aGlzLnBvc2l0aXZlQXJyW2VdPXR9fX1jbGFzcyBicntjb25zdHJ1Y3Rvcigpe3RoaXMucG9zaXRpdmVBcnI9W10sdGhpcy5uZWdhdGl2ZUFycj1bXX1nZXQoZSl7cmV0dXJuIGU8MD8oZT0tZS0xLHRoaXMubmVnYXRpdmVBcnJbZV0pOnRoaXMucG9zaXRpdmVBcnJbZV19c2V0KGUsdCl7ZTwwPyhlPS1lLTEsdGhpcy5uZWdhdGl2ZUFycltlXT10KTp0aGlzLnBvc2l0aXZlQXJyW2VdPXR9fWNsYXNzIHZye2NvbnN0cnVjdG9yKGUsdCl7dGhpcy50cmltbWVkSGFzaD1lLHRoaXMubGluZXM9dH1nZXRFbGVtZW50KGUpe3JldHVybiB0aGlzLnRyaW1tZWRIYXNoW2VdfWdldCBsZW5ndGgoKXtyZXR1cm4gdGhpcy50cmltbWVkSGFzaC5sZW5ndGh9Z2V0Qm91bmRhcnlTY29yZShlKXtyZXR1cm4gMWUzLSgoMD09PWU/MDp5cih0aGlzLmxpbmVzW2UtMV0pKSsoZT09PXRoaXMubGluZXMubGVuZ3RoPzA6eXIodGhpcy5saW5lc1tlXSkpKX19ZnVuY3Rpb24geXIoZSl7bGV0IHQ9MDtmb3IoO3Q8ZS5sZW5ndGgmJigzMj09PWUuY2hhckNvZGVBdCh0KXx8OT09PWUuY2hhckNvZGVBdCh0KSk7KXQrKztyZXR1cm4gdH1jbGFzcyB3cntjb25zdHJ1Y3RvcihlLHQsbil7dGhpcy5saW5lcz1lLHRoaXMuY29uc2lkZXJXaGl0ZXNwYWNlQ2hhbmdlcz1uLHRoaXMuZWxlbWVudHM9W10sdGhpcy5maXJzdENoYXJPZmZzZXRCeUxpbmVNaW51c09uZT1bXSx0aGlzLm9mZnNldEJ5TGluZT1bXTtsZXQgcj0hMTt0LnN0YXJ0PjAmJnQuZW5kRXhjbHVzaXZlPj1lLmxlbmd0aCYmKHQ9bmV3IG9yKHQuc3RhcnQtMSx0LmVuZEV4Y2x1c2l2ZSkscj0hMCksdGhpcy5saW5lUmFuZ2U9dDtmb3IobGV0IHQ9dGhpcy5saW5lUmFuZ2Uuc3RhcnQ7dDx0aGlzLmxpbmVSYW5nZS5lbmRFeGNsdXNpdmU7dCsrKXtsZXQgaT1lW3RdLG89MDtpZihyKW89aS5sZW5ndGgsaT0iIixyPSExO2Vsc2UgaWYoIW4pe2NvbnN0IGU9aS50cmltU3RhcnQoKTtvPWkubGVuZ3RoLWUubGVuZ3RoLGk9ZS50cmltRW5kKCl9dGhpcy5vZmZzZXRCeUxpbmUucHVzaChvKTtmb3IobGV0IGU9MDtlPGkubGVuZ3RoO2UrKyl0aGlzLmVsZW1lbnRzLnB1c2goaS5jaGFyQ29kZUF0KGUpKTt0PGUubGVuZ3RoLTEmJih0aGlzLmVsZW1lbnRzLnB1c2goIlxuIi5jaGFyQ29kZUF0KDApKSx0aGlzLmZpcnN0Q2hhck9mZnNldEJ5TGluZU1pbnVzT25lW3QtdGhpcy5saW5lUmFuZ2Uuc3RhcnRdPXRoaXMuZWxlbWVudHMubGVuZ3RoKX10aGlzLm9mZnNldEJ5TGluZS5wdXNoKDApfXRvU3RyaW5nKCl7cmV0dXJuYFNsaWNlOiAiJHt0aGlzLnRleHR9ImB9Z2V0IHRleHQoKXtyZXR1cm5bLi4udGhpcy5lbGVtZW50c10ubWFwKChlPT5TdHJpbmcuZnJvbUNoYXJDb2RlKGUpKSkuam9pbigiIil9Z2V0RWxlbWVudChlKXtyZXR1cm4gdGhpcy5lbGVtZW50c1tlXX1nZXQgbGVuZ3RoKCl7cmV0dXJuIHRoaXMuZWxlbWVudHMubGVuZ3RofWdldEJvdW5kYXJ5U2NvcmUoZSl7Y29uc3QgdD1rcihlPjA/dGhpcy5lbGVtZW50c1tlLTFdOi0xKSxuPWtyKGU8dGhpcy5lbGVtZW50cy5sZW5ndGg/dGhpcy5lbGVtZW50c1tlXTotMSk7aWYoNj09PXQmJjc9PT1uKXJldHVybiAwO2xldCByPTA7cmV0dXJuIHQhPT1uJiYocis9MTAsMT09PW4mJihyKz0xKSkscis9Q3IodCkscis9Q3Iobikscn10cmFuc2xhdGVPZmZzZXQoZSl7aWYodGhpcy5saW5lUmFuZ2UuaXNFbXB0eSlyZXR1cm4gbmV3IG50KHRoaXMubGluZVJhbmdlLnN0YXJ0KzEsMSk7bGV0IHQ9MCxuPXRoaXMuZmlyc3RDaGFyT2Zmc2V0QnlMaW5lTWludXNPbmUubGVuZ3RoO2Zvcig7dDxuOyl7Y29uc3Qgcj1NYXRoLmZsb29yKCh0K24pLzIpO3RoaXMuZmlyc3RDaGFyT2Zmc2V0QnlMaW5lTWludXNPbmVbcl0+ZT9uPXI6dD1yKzF9Y29uc3Qgcj0wPT09dD8wOnRoaXMuZmlyc3RDaGFyT2Zmc2V0QnlMaW5lTWludXNPbmVbdC0xXTtyZXR1cm4gbmV3IG50KHRoaXMubGluZVJhbmdlLnN0YXJ0K3QrMSxlLXIrMSt0aGlzLm9mZnNldEJ5TGluZVt0XSl9dHJhbnNsYXRlUmFuZ2UoZSl7cmV0dXJuIHJ0LmZyb21Qb3NpdGlvbnModGhpcy50cmFuc2xhdGVPZmZzZXQoZS5zdGFydCksdGhpcy50cmFuc2xhdGVPZmZzZXQoZS5lbmRFeGNsdXNpdmUpKX1maW5kV29yZENvbnRhaW5pbmcoZSl7aWYoZTwwfHxlPj10aGlzLmVsZW1lbnRzLmxlbmd0aClyZXR1cm47aWYoIXhyKHRoaXMuZWxlbWVudHNbZV0pKXJldHVybjtsZXQgdD1lO2Zvcig7dD4wJiZ4cih0aGlzLmVsZW1lbnRzW3QtMV0pOyl0LS07bGV0IG49ZTtmb3IoO248dGhpcy5lbGVtZW50cy5sZW5ndGgmJnhyKHRoaXMuZWxlbWVudHNbbl0pOyluKys7cmV0dXJuIG5ldyBvcih0LG4pfX1mdW5jdGlvbiB4cihlKXtyZXR1cm4gZT49OTcmJmU8PTEyMnx8ZT49NjUmJmU8PTkwfHxlPj00OCYmZTw9NTd9Y29uc3QgU3I9ezA6MCwxOjAsMjowLDM6MTAsNDoyLDU6Myw2OjEwLDc6MTB9O2Z1bmN0aW9uIENyKGUpe3JldHVybiBTcltlXX1mdW5jdGlvbiBrcihlKXtyZXR1cm4gMTA9PT1lPzc6MTM9PT1lPzY6ZnVuY3Rpb24oZSl7cmV0dXJuIDMyPT09ZXx8OT09PWV9KGUpPzU6ZT49OTcmJmU8PTEyMj8wOmU+PTY1JiZlPD05MD8xOmU+PTQ4JiZlPD01Nz8yOi0xPT09ZT8zOjR9Y29uc3QgX3I9e2xlZ2FjeTpuZXcgY2xhc3N7Y29tcHV0ZURpZmYoZSx0LG4pe3ZhciByO2NvbnN0IGk9bmV3IHRyKGUsdCx7bWF4Q29tcHV0YXRpb25UaW1lOm4ubWF4Q29tcHV0YXRpb25UaW1lTXMsc2hvdWxkSWdub3JlVHJpbVdoaXRlc3BhY2U6bi5pZ25vcmVUcmltV2hpdGVzcGFjZSxzaG91bGRDb21wdXRlQ2hhckNoYW5nZXM6ITAsc2hvdWxkTWFrZVByZXR0eURpZmY6ITAsc2hvdWxkUG9zdFByb2Nlc3NDaGFyQ2hhbmdlczohMH0pLmNvbXB1dGVEaWZmKCksbz1bXTtsZXQgcz1udWxsO2Zvcihjb25zdCBlIG9mIGkuY2hhbmdlcyl7bGV0IHQsbjt0PTA9PT1lLm9yaWdpbmFsRW5kTGluZU51bWJlcj9uZXcgJG4oZS5vcmlnaW5hbFN0YXJ0TGluZU51bWJlcisxLGUub3JpZ2luYWxTdGFydExpbmVOdW1iZXIrMSk6bmV3ICRuKGUub3JpZ2luYWxTdGFydExpbmVOdW1iZXIsZS5vcmlnaW5hbEVuZExpbmVOdW1iZXIrMSksbj0wPT09ZS5tb2RpZmllZEVuZExpbmVOdW1iZXI/bmV3ICRuKGUubW9kaWZpZWRTdGFydExpbmVOdW1iZXIrMSxlLm1vZGlmaWVkU3RhcnRMaW5lTnVtYmVyKzEpOm5ldyAkbihlLm1vZGlmaWVkU3RhcnRMaW5lTnVtYmVyLGUubW9kaWZpZWRFbmRMaW5lTnVtYmVyKzEpO2xldCBpPW5ldyBHbih0LG4sbnVsbD09PShyPWUuY2hhckNoYW5nZXMpfHx2b2lkIDA9PT1yP3ZvaWQgMDpyLm1hcCgoZT0+bmV3IEpuKG5ldyBydChlLm9yaWdpbmFsU3RhcnRMaW5lTnVtYmVyLGUub3JpZ2luYWxTdGFydENvbHVtbixlLm9yaWdpbmFsRW5kTGluZU51bWJlcixlLm9yaWdpbmFsRW5kQ29sdW1uKSxuZXcgcnQoZS5tb2RpZmllZFN0YXJ0TGluZU51bWJlcixlLm1vZGlmaWVkU3RhcnRDb2x1bW4sZS5tb2RpZmllZEVuZExpbmVOdW1iZXIsZS5tb2RpZmllZEVuZENvbHVtbikpKSkpO3MmJihzLm1vZGlmaWVkUmFuZ2UuZW5kTGluZU51bWJlckV4Y2x1c2l2ZSE9PWkubW9kaWZpZWRSYW5nZS5zdGFydExpbmVOdW1iZXImJnMub3JpZ2luYWxSYW5nZS5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlIT09aS5vcmlnaW5hbFJhbmdlLnN0YXJ0TGluZU51bWJlcnx8KGk9bmV3IEduKHMub3JpZ2luYWxSYW5nZS5qb2luKGkub3JpZ2luYWxSYW5nZSkscy5tb2RpZmllZFJhbmdlLmpvaW4oaS5tb2RpZmllZFJhbmdlKSxzLmlubmVyQ2hhbmdlcyYmaS5pbm5lckNoYW5nZXM/cy5pbm5lckNoYW5nZXMuY29uY2F0KGkuaW5uZXJDaGFuZ2VzKTp2b2lkIDApLG8ucG9wKCkpKSxvLnB1c2goaSkscz1pfXJldHVybiBVbigoKCk9PkJuKG8sKChlLHQpPT50Lm9yaWdpbmFsUmFuZ2Uuc3RhcnRMaW5lTnVtYmVyLWUub3JpZ2luYWxSYW5nZS5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlPT10Lm1vZGlmaWVkUmFuZ2Uuc3RhcnRMaW5lTnVtYmVyLWUubW9kaWZpZWRSYW5nZS5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlJiZlLm9yaWdpbmFsUmFuZ2UuZW5kTGluZU51bWJlckV4Y2x1c2l2ZTx0Lm9yaWdpbmFsUmFuZ2Uuc3RhcnRMaW5lTnVtYmVyJiZlLm1vZGlmaWVkUmFuZ2UuZW5kTGluZU51bWJlckV4Y2x1c2l2ZTx0Lm1vZGlmaWVkUmFuZ2Uuc3RhcnRMaW5lTnVtYmVyKSkpKSxuZXcgSG4obyxpLnF1aXRFYXJseSl9fSxhZHZhbmNlZDpuZXcgY2xhc3N7Y29uc3RydWN0b3IoKXt0aGlzLmR5bmFtaWNQcm9ncmFtbWluZ0RpZmZpbmc9bmV3IGRyLHRoaXMubXllcnNEaWZmaW5nQWxnb3JpdGhtPW5ldyBtcn1jb21wdXRlRGlmZihlLHQsbil7Y29uc3Qgcj0wPT09bi5tYXhDb21wdXRhdGlvblRpbWVNcz9sci5pbnN0YW5jZTpuZXcgY3Iobi5tYXhDb21wdXRhdGlvblRpbWVNcyksaT0hbi5pZ25vcmVUcmltV2hpdGVzcGFjZSxvPW5ldyBNYXA7ZnVuY3Rpb24gcyhlKXtsZXQgdD1vLmdldChlKTtyZXR1cm4gdm9pZCAwPT09dCYmKHQ9by5zaXplLG8uc2V0KGUsdCkpLHR9Y29uc3QgYT1lLm1hcCgoZT0+cyhlLnRyaW0oKSkpKSxsPXQubWFwKChlPT5zKGUudHJpbSgpKSkpLGM9bmV3IHZyKGEsZSksaD1uZXcgdnIobCx0KSxkPSgoKT0+Yy5sZW5ndGgraC5sZW5ndGg8MTUwMD90aGlzLmR5bmFtaWNQcm9ncmFtbWluZ0RpZmZpbmcuY29tcHV0ZShjLGgsciwoKG4scik9PmVbbl09PT10W3JdPzA9PT10W3JdLmxlbmd0aD8uMToxK01hdGgubG9nKDErdFtyXS5sZW5ndGgpOi45OSkpOnRoaXMubXllcnNEaWZmaW5nQWxnb3JpdGhtLmNvbXB1dGUoYyxoKSkoKTtsZXQgcD1kLmRpZmZzLHU9ZC5oaXRUaW1lb3V0O3A9cHIoYyxoLHApO2NvbnN0IG09W10sZj1uPT57aWYoaSlmb3IobGV0IG89MDtvPG47bysrKXtjb25zdCBuPWcrbyxzPWIrbztpZihlW25dIT09dFtzXSl7Y29uc3Qgbz10aGlzLnJlZmluZURpZmYoZSx0LG5ldyBhcihuZXcgb3IobixuKzEpLG5ldyBvcihzLHMrMSkpLHIsaSk7Zm9yKGNvbnN0IGUgb2Ygby5tYXBwaW5ncyltLnB1c2goZSk7by5oaXRUaW1lb3V0JiYodT0hMCl9fX07bGV0IGc9MCxiPTA7Zm9yKGNvbnN0IG4gb2YgcCl7VW4oKCgpPT5uLnNlcTFSYW5nZS5zdGFydC1nPT1uLnNlcTJSYW5nZS5zdGFydC1iKSk7ZihuLnNlcTFSYW5nZS5zdGFydC1nKSxnPW4uc2VxMVJhbmdlLmVuZEV4Y2x1c2l2ZSxiPW4uc2VxMlJhbmdlLmVuZEV4Y2x1c2l2ZTtjb25zdCBvPXRoaXMucmVmaW5lRGlmZihlLHQsbixyLGkpO28uaGl0VGltZW91dCYmKHU9ITApO2Zvcihjb25zdCBlIG9mIG8ubWFwcGluZ3MpbS5wdXNoKGUpfWYoZS5sZW5ndGgtZyk7Y29uc3Qgdj1mdW5jdGlvbihlLHQsbil7Y29uc3Qgcj1bXTtmb3IoY29uc3QgaSBvZiBmdW5jdGlvbiooZSx0KXtsZXQgbixyO2Zvcihjb25zdCBpIG9mIGUpdm9pZCAwIT09ciYmdChyLGkpP24ucHVzaChpKToobiYmKHlpZWxkIG4pLG49W2ldKSxyPWk7biYmKHlpZWxkIG4pfShlLm1hcCgoZT0+ZnVuY3Rpb24oZSx0LG4pe2xldCByPTAsaT0wO2UubW9kaWZpZWRSYW5nZS5zdGFydENvbHVtbi0xPj1uW2UubW9kaWZpZWRSYW5nZS5zdGFydExpbmVOdW1iZXItMV0ubGVuZ3RoJiZlLm9yaWdpbmFsUmFuZ2Uuc3RhcnRDb2x1bW4tMT49dFtlLm9yaWdpbmFsUmFuZ2Uuc3RhcnRMaW5lTnVtYmVyLTFdLmxlbmd0aCYmKHI9MSk7MT09PWUubW9kaWZpZWRSYW5nZS5lbmRDb2x1bW4mJjE9PT1lLm9yaWdpbmFsUmFuZ2UuZW5kQ29sdW1uJiZlLm9yaWdpbmFsUmFuZ2Uuc3RhcnRMaW5lTnVtYmVyK3I8PWUub3JpZ2luYWxSYW5nZS5lbmRMaW5lTnVtYmVyJiZlLm1vZGlmaWVkUmFuZ2Uuc3RhcnRMaW5lTnVtYmVyK3I8PWUubW9kaWZpZWRSYW5nZS5lbmRMaW5lTnVtYmVyJiYoaT0tMSk7Y29uc3Qgbz1uZXcgJG4oZS5vcmlnaW5hbFJhbmdlLnN0YXJ0TGluZU51bWJlcityLGUub3JpZ2luYWxSYW5nZS5lbmRMaW5lTnVtYmVyKzEraSkscz1uZXcgJG4oZS5tb2RpZmllZFJhbmdlLnN0YXJ0TGluZU51bWJlcityLGUubW9kaWZpZWRSYW5nZS5lbmRMaW5lTnVtYmVyKzEraSk7cmV0dXJuIG5ldyBHbihvLHMsW2VdKX0oZSx0LG4pKSksKChlLHQpPT5lLm9yaWdpbmFsUmFuZ2Uub3ZlcmxhcE9yVG91Y2godC5vcmlnaW5hbFJhbmdlKXx8ZS5tb2RpZmllZFJhbmdlLm92ZXJsYXBPclRvdWNoKHQubW9kaWZpZWRSYW5nZSkpKSl7Y29uc3QgZT1pWzBdLHQ9aVtpLmxlbmd0aC0xXTtyLnB1c2gobmV3IEduKGUub3JpZ2luYWxSYW5nZS5qb2luKHQub3JpZ2luYWxSYW5nZSksZS5tb2RpZmllZFJhbmdlLmpvaW4odC5tb2RpZmllZFJhbmdlKSxpLm1hcCgoZT0+ZS5pbm5lckNoYW5nZXNbMF0pKSkpfXJldHVybiBVbigoKCk9PkJuKHIsKChlLHQpPT50Lm9yaWdpbmFsUmFuZ2Uuc3RhcnRMaW5lTnVtYmVyLWUub3JpZ2luYWxSYW5nZS5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlPT10Lm1vZGlmaWVkUmFuZ2Uuc3RhcnRMaW5lTnVtYmVyLWUubW9kaWZpZWRSYW5nZS5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlJiZlLm9yaWdpbmFsUmFuZ2UuZW5kTGluZU51bWJlckV4Y2x1c2l2ZTx0Lm9yaWdpbmFsUmFuZ2Uuc3RhcnRMaW5lTnVtYmVyJiZlLm1vZGlmaWVkUmFuZ2UuZW5kTGluZU51bWJlckV4Y2x1c2l2ZTx0Lm1vZGlmaWVkUmFuZ2Uuc3RhcnRMaW5lTnVtYmVyKSkpKSxyfShtLGUsdCk7cmV0dXJuIG5ldyBIbih2LHUpfXJlZmluZURpZmYoZSx0LG4scixpKXtjb25zdCBvPW5ldyB3cihlLG4uc2VxMVJhbmdlLGkpLHM9bmV3IHdyKHQsbi5zZXEyUmFuZ2UsaSksYT1vLmxlbmd0aCtzLmxlbmd0aDw1MDA/dGhpcy5keW5hbWljUHJvZ3JhbW1pbmdEaWZmaW5nLmNvbXB1dGUobyxzLHIpOnRoaXMubXllcnNEaWZmaW5nQWxnb3JpdGhtLmNvbXB1dGUobyxzLHIpO2xldCBsPWEuZGlmZnM7bD1wcihvLHMsbCksbD1mdW5jdGlvbihlLHQsbil7Y29uc3Qgcj1bXTtsZXQgaTtmdW5jdGlvbiBvKCl7aWYoIWkpcmV0dXJuO2NvbnN0IGU9aS5zMVJhbmdlLmxlbmd0aC1pLmRlbGV0ZWQ7aS5zMlJhbmdlLmxlbmd0aCxpLmFkZGVkLE1hdGgubWF4KGkuZGVsZXRlZCxpLmFkZGVkKSsoaS5jb3VudC0xKT5lJiZyLnB1c2gobmV3IGFyKGkuczFSYW5nZSxpLnMyUmFuZ2UpKSxpPXZvaWQgMH1mb3IoY29uc3QgcyBvZiBuKXtmdW5jdGlvbiBhKGUsdCl7dmFyIG4scixhLGw7aWYoIWl8fCFpLnMxUmFuZ2UuY29udGFpbnNSYW5nZShlKXx8IWkuczJSYW5nZS5jb250YWluc1JhbmdlKHQpKWlmKCFpfHxpLnMxUmFuZ2UuZW5kRXhjbHVzaXZlPGUuc3RhcnQmJmkuczJSYW5nZS5lbmRFeGNsdXNpdmU8dC5zdGFydClvKCksaT17YWRkZWQ6MCxkZWxldGVkOjAsY291bnQ6MCxzMVJhbmdlOmUsczJSYW5nZTp0fTtlbHNle2NvbnN0IG89b3IudHJ5Q3JlYXRlKGkuczFSYW5nZS5lbmRFeGNsdXNpdmUsZS5zdGFydCkscz1vci50cnlDcmVhdGUoaS5zMlJhbmdlLmVuZEV4Y2x1c2l2ZSx0LnN0YXJ0KTtpLmRlbGV0ZWQrPW51bGwhPT0obj1udWxsPT1vP3ZvaWQgMDpvLmxlbmd0aCkmJnZvaWQgMCE9PW4/bjowLGkuYWRkZWQrPW51bGwhPT0ocj1udWxsPT1zP3ZvaWQgMDpzLmxlbmd0aCkmJnZvaWQgMCE9PXI/cjowLGkuczFSYW5nZT1pLnMxUmFuZ2Uuam9pbihlKSxpLnMyUmFuZ2U9aS5zMlJhbmdlLmpvaW4odCl9Y29uc3QgYz1lLmludGVyc2VjdChzLnNlcTFSYW5nZSksaD10LmludGVyc2VjdChzLnNlcTJSYW5nZSk7aS5jb3VudCsrLGkuZGVsZXRlZCs9bnVsbCE9PShhPW51bGw9PWM/dm9pZCAwOmMubGVuZ3RoKSYmdm9pZCAwIT09YT9hOjAsaS5hZGRlZCs9bnVsbCE9PShsPW51bGw9PWg/dm9pZCAwOmgubGVuZ3RoKSYmdm9pZCAwIT09bD9sOjB9Y29uc3QgbD1lLmZpbmRXb3JkQ29udGFpbmluZyhzLnNlcTFSYW5nZS5zdGFydC0xKSxjPXQuZmluZFdvcmRDb250YWluaW5nKHMuc2VxMlJhbmdlLnN0YXJ0LTEpLGg9ZS5maW5kV29yZENvbnRhaW5pbmcocy5zZXExUmFuZ2UuZW5kRXhjbHVzaXZlKSxkPXQuZmluZFdvcmRDb250YWluaW5nKHMuc2VxMlJhbmdlLmVuZEV4Y2x1c2l2ZSk7bCYmaCYmYyYmZCYmbC5lcXVhbHMoaCkmJmMuZXF1YWxzKGQpP2EobCxjKToobCYmYyYmYShsLGMpLGgmJmQmJmEoaCxkKSl9bygpO3JldHVybiBmdW5jdGlvbihlLHQpe2NvbnN0IG49W107Zm9yKDtlLmxlbmd0aD4wfHx0Lmxlbmd0aD4wOyl7Y29uc3Qgcj1lWzBdLGk9dFswXTtsZXQgbztvPXImJighaXx8ci5zZXExUmFuZ2Uuc3RhcnQ8aS5zZXExUmFuZ2Uuc3RhcnQpP2Uuc2hpZnQoKTp0LnNoaWZ0KCksbi5sZW5ndGg+MCYmbltuLmxlbmd0aC0xXS5zZXExUmFuZ2UuZW5kRXhjbHVzaXZlPj1vLnNlcTFSYW5nZS5zdGFydD9uW24ubGVuZ3RoLTFdPW5bbi5sZW5ndGgtMV0uam9pbihvKTpuLnB1c2gobyl9cmV0dXJuIG59KG4scil9KG8scyxsKSxsPWZ1bmN0aW9uKGUsdCxuKXtjb25zdCByPVtdO2Zvcihjb25zdCBlIG9mIG4pe2NvbnN0IHQ9cltyLmxlbmd0aC0xXTt0JiYoZS5zZXExUmFuZ2Uuc3RhcnQtdC5zZXExUmFuZ2UuZW5kRXhjbHVzaXZlPD0yfHxlLnNlcTJSYW5nZS5zdGFydC10LnNlcTJSYW5nZS5lbmRFeGNsdXNpdmU8PTIpP3Jbci5sZW5ndGgtMV09bmV3IGFyKHQuc2VxMVJhbmdlLmpvaW4oZS5zZXExUmFuZ2UpLHQuc2VxMlJhbmdlLmpvaW4oZS5zZXEyUmFuZ2UpKTpyLnB1c2goZSl9cmV0dXJuIHJ9KDAsMCxsKTtyZXR1cm57bWFwcGluZ3M6bC5tYXAoKGU9Pm5ldyBKbihvLnRyYW5zbGF0ZVJhbmdlKGUuc2VxMVJhbmdlKSxzLnRyYW5zbGF0ZVJhbmdlKGUuc2VxMlJhbmdlKSkpKSxoaXRUaW1lb3V0OmEuaGl0VGltZW91dH19fX07ZnVuY3Rpb24gRXIoZSx0KXtjb25zdCBuPU1hdGgucG93KDEwLHQpO3JldHVybiBNYXRoLnJvdW5kKGUqbikvbn1jbGFzcyBScntjb25zdHJ1Y3RvcihlLHQsbixyPTEpe3RoaXMuX3JnYmFCcmFuZD12b2lkIDAsdGhpcy5yPTB8TWF0aC5taW4oMjU1LE1hdGgubWF4KDAsZSkpLHRoaXMuZz0wfE1hdGgubWluKDI1NSxNYXRoLm1heCgwLHQpKSx0aGlzLmI9MHxNYXRoLm1pbigyNTUsTWF0aC5tYXgoMCxuKSksdGhpcy5hPUVyKE1hdGgubWF4KE1hdGgubWluKDEsciksMCksMyl9c3RhdGljIGVxdWFscyhlLHQpe3JldHVybiBlLnI9PT10LnImJmUuZz09PXQuZyYmZS5iPT09dC5iJiZlLmE9PT10LmF9fWNsYXNzIEZye2NvbnN0cnVjdG9yKGUsdCxuLHIpe3RoaXMuX2hzbGFCcmFuZD12b2lkIDAsdGhpcy5oPTB8TWF0aC5tYXgoTWF0aC5taW4oMzYwLGUpLDApLHRoaXMucz1FcihNYXRoLm1heChNYXRoLm1pbigxLHQpLDApLDMpLHRoaXMubD1FcihNYXRoLm1heChNYXRoLm1pbigxLG4pLDApLDMpLHRoaXMuYT1FcihNYXRoLm1heChNYXRoLm1pbigxLHIpLDApLDMpfXN0YXRpYyBlcXVhbHMoZSx0KXtyZXR1cm4gZS5oPT09dC5oJiZlLnM9PT10LnMmJmUubD09PXQubCYmZS5hPT09dC5hfXN0YXRpYyBmcm9tUkdCQShlKXtjb25zdCB0PWUuci8yNTUsbj1lLmcvMjU1LHI9ZS5iLzI1NSxpPWUuYSxvPU1hdGgubWF4KHQsbixyKSxzPU1hdGgubWluKHQsbixyKTtsZXQgYT0wLGw9MDtjb25zdCBjPShzK28pLzIsaD1vLXM7aWYoaD4wKXtzd2l0Y2gobD1NYXRoLm1pbihjPD0uNT9oLygyKmMpOmgvKDItMipjKSwxKSxvKXtjYXNlIHQ6YT0obi1yKS9oKyhuPHI/NjowKTticmVhaztjYXNlIG46YT0oci10KS9oKzI7YnJlYWs7Y2FzZSByOmE9KHQtbikvaCs0fWEqPTYwLGE9TWF0aC5yb3VuZChhKX1yZXR1cm4gbmV3IEZyKGEsbCxjLGkpfXN0YXRpYyBfaHVlMnJnYihlLHQsbil7cmV0dXJuIG48MCYmKG4rPTEpLG4+MSYmKG4tPTEpLG48MS82P2UrNioodC1lKSpuOm48LjU/dDpuPDIvMz9lKyh0LWUpKigyLzMtbikqNjplfXN0YXRpYyB0b1JHQkEoZSl7Y29uc3QgdD1lLmgvMzYwLHtzOm4sbDpyLGE6aX09ZTtsZXQgbyxzLGE7aWYoMD09PW4pbz1zPWE9cjtlbHNle2NvbnN0IGU9cjwuNT9yKigxK24pOnIrbi1yKm4saT0yKnItZTtvPUZyLl9odWUycmdiKGksZSx0KzEvMykscz1Gci5faHVlMnJnYihpLGUsdCksYT1Gci5faHVlMnJnYihpLGUsdC0xLzMpfXJldHVybiBuZXcgUnIoTWF0aC5yb3VuZCgyNTUqbyksTWF0aC5yb3VuZCgyNTUqcyksTWF0aC5yb3VuZCgyNTUqYSksaSl9fWNsYXNzIE5ye2NvbnN0cnVjdG9yKGUsdCxuLHIpe3RoaXMuX2hzdmFCcmFuZD12b2lkIDAsdGhpcy5oPTB8TWF0aC5tYXgoTWF0aC5taW4oMzYwLGUpLDApLHRoaXMucz1FcihNYXRoLm1heChNYXRoLm1pbigxLHQpLDApLDMpLHRoaXMudj1FcihNYXRoLm1heChNYXRoLm1pbigxLG4pLDApLDMpLHRoaXMuYT1FcihNYXRoLm1heChNYXRoLm1pbigxLHIpLDApLDMpfXN0YXRpYyBlcXVhbHMoZSx0KXtyZXR1cm4gZS5oPT09dC5oJiZlLnM9PT10LnMmJmUudj09PXQudiYmZS5hPT09dC5hfXN0YXRpYyBmcm9tUkdCQShlKXtjb25zdCB0PWUuci8yNTUsbj1lLmcvMjU1LHI9ZS5iLzI1NSxpPU1hdGgubWF4KHQsbixyKSxvPWktTWF0aC5taW4odCxuLHIpLHM9MD09PWk/MDpvL2k7bGV0IGE7cmV0dXJuIGE9MD09PW8/MDppPT09dD8oKG4tcikvbyU2KzYpJTY6aT09PW4/KHItdCkvbysyOih0LW4pL28rNCxuZXcgTnIoTWF0aC5yb3VuZCg2MCphKSxzLGksZS5hKX1zdGF0aWMgdG9SR0JBKGUpe2NvbnN0e2g6dCxzOm4sdjpyLGE6aX09ZSxvPXIqbixzPW8qKDEtTWF0aC5hYnModC82MCUyLTEpKSxhPXItbztsZXRbbCxjLGhdPVswLDAsMF07cmV0dXJuIHQ8NjA/KGw9byxjPXMpOnQ8MTIwPyhsPXMsYz1vKTp0PDE4MD8oYz1vLGg9cyk6dDwyNDA/KGM9cyxoPW8pOnQ8MzAwPyhsPXMsaD1vKTp0PD0zNjAmJihsPW8saD1zKSxsPU1hdGgucm91bmQoMjU1KihsK2EpKSxjPU1hdGgucm91bmQoMjU1KihjK2EpKSxoPU1hdGgucm91bmQoMjU1KihoK2EpKSxuZXcgUnIobCxjLGgsaSl9fWxldCBEcj1jbGFzcyBle3N0YXRpYyBmcm9tSGV4KHQpe3JldHVybiBlLkZvcm1hdC5DU1MucGFyc2VIZXgodCl8fGUucmVkfXN0YXRpYyBlcXVhbHMoZSx0KXtyZXR1cm4hZSYmIXR8fCEoIWV8fCF0KSYmZS5lcXVhbHModCl9Z2V0IGhzbGEoKXtyZXR1cm4gdGhpcy5faHNsYT90aGlzLl9oc2xhOkZyLmZyb21SR0JBKHRoaXMucmdiYSl9Z2V0IGhzdmEoKXtyZXR1cm4gdGhpcy5faHN2YT90aGlzLl9oc3ZhOk5yLmZyb21SR0JBKHRoaXMucmdiYSl9Y29uc3RydWN0b3IoZSl7aWYoIWUpdGhyb3cgbmV3IEVycm9yKCJDb2xvciBuZWVkcyBhIHZhbHVlIik7aWYoZSBpbnN0YW5jZW9mIFJyKXRoaXMucmdiYT1lO2Vsc2UgaWYoZSBpbnN0YW5jZW9mIEZyKXRoaXMuX2hzbGE9ZSx0aGlzLnJnYmE9RnIudG9SR0JBKGUpO2Vsc2V7aWYoIShlIGluc3RhbmNlb2YgTnIpKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBjb2xvciBjdG9yIGFyZ3VtZW50Iik7dGhpcy5faHN2YT1lLHRoaXMucmdiYT1Oci50b1JHQkEoZSl9fWVxdWFscyhlKXtyZXR1cm4hIWUmJlJyLmVxdWFscyh0aGlzLnJnYmEsZS5yZ2JhKSYmRnIuZXF1YWxzKHRoaXMuaHNsYSxlLmhzbGEpJiZOci5lcXVhbHModGhpcy5oc3ZhLGUuaHN2YSl9Z2V0UmVsYXRpdmVMdW1pbmFuY2UoKXtyZXR1cm4gRXIoLjIxMjYqZS5fcmVsYXRpdmVMdW1pbmFuY2VGb3JDb21wb25lbnQodGhpcy5yZ2JhLnIpKy43MTUyKmUuX3JlbGF0aXZlTHVtaW5hbmNlRm9yQ29tcG9uZW50KHRoaXMucmdiYS5nKSsuMDcyMiplLl9yZWxhdGl2ZUx1bWluYW5jZUZvckNvbXBvbmVudCh0aGlzLnJnYmEuYiksNCl9c3RhdGljIF9yZWxhdGl2ZUx1bWluYW5jZUZvckNvbXBvbmVudChlKXtjb25zdCB0PWUvMjU1O3JldHVybiB0PD0uMDM5Mjg/dC8xMi45MjpNYXRoLnBvdygodCsuMDU1KS8xLjA1NSwyLjQpfWlzTGlnaHRlcigpe3JldHVybigyOTkqdGhpcy5yZ2JhLnIrNTg3KnRoaXMucmdiYS5nKzExNCp0aGlzLnJnYmEuYikvMWUzPj0xMjh9aXNMaWdodGVyVGhhbihlKXtyZXR1cm4gdGhpcy5nZXRSZWxhdGl2ZUx1bWluYW5jZSgpPmUuZ2V0UmVsYXRpdmVMdW1pbmFuY2UoKX1pc0RhcmtlclRoYW4oZSl7cmV0dXJuIHRoaXMuZ2V0UmVsYXRpdmVMdW1pbmFuY2UoKTxlLmdldFJlbGF0aXZlTHVtaW5hbmNlKCl9bGlnaHRlbih0KXtyZXR1cm4gbmV3IGUobmV3IEZyKHRoaXMuaHNsYS5oLHRoaXMuaHNsYS5zLHRoaXMuaHNsYS5sK3RoaXMuaHNsYS5sKnQsdGhpcy5oc2xhLmEpKX1kYXJrZW4odCl7cmV0dXJuIG5ldyBlKG5ldyBGcih0aGlzLmhzbGEuaCx0aGlzLmhzbGEucyx0aGlzLmhzbGEubC10aGlzLmhzbGEubCp0LHRoaXMuaHNsYS5hKSl9dHJhbnNwYXJlbnQodCl7Y29uc3R7cjpuLGc6cixiOmksYTpvfT10aGlzLnJnYmE7cmV0dXJuIG5ldyBlKG5ldyBScihuLHIsaSxvKnQpKX1pc1RyYW5zcGFyZW50KCl7cmV0dXJuIDA9PT10aGlzLnJnYmEuYX1pc09wYXF1ZSgpe3JldHVybiAxPT09dGhpcy5yZ2JhLmF9b3Bwb3NpdGUoKXtyZXR1cm4gbmV3IGUobmV3IFJyKDI1NS10aGlzLnJnYmEuciwyNTUtdGhpcy5yZ2JhLmcsMjU1LXRoaXMucmdiYS5iLHRoaXMucmdiYS5hKSl9bWFrZU9wYXF1ZSh0KXtpZih0aGlzLmlzT3BhcXVlKCl8fDEhPT10LnJnYmEuYSlyZXR1cm4gdGhpcztjb25zdHtyOm4sZzpyLGI6aSxhOm99PXRoaXMucmdiYTtyZXR1cm4gbmV3IGUobmV3IFJyKHQucmdiYS5yLW8qKHQucmdiYS5yLW4pLHQucmdiYS5nLW8qKHQucmdiYS5nLXIpLHQucmdiYS5iLW8qKHQucmdiYS5iLWkpLDEpKX10b1N0cmluZygpe3JldHVybiB0aGlzLl90b1N0cmluZ3x8KHRoaXMuX3RvU3RyaW5nPWUuRm9ybWF0LkNTUy5mb3JtYXQodGhpcykpLHRoaXMuX3RvU3RyaW5nfXN0YXRpYyBnZXRMaWdodGVyQ29sb3IoZSx0LG4pe2lmKGUuaXNMaWdodGVyVGhhbih0KSlyZXR1cm4gZTtuPW58fC41O2NvbnN0IHI9ZS5nZXRSZWxhdGl2ZUx1bWluYW5jZSgpLGk9dC5nZXRSZWxhdGl2ZUx1bWluYW5jZSgpO3JldHVybiBuPW4qKGktcikvaSxlLmxpZ2h0ZW4obil9c3RhdGljIGdldERhcmtlckNvbG9yKGUsdCxuKXtpZihlLmlzRGFya2VyVGhhbih0KSlyZXR1cm4gZTtuPW58fC41O2NvbnN0IHI9ZS5nZXRSZWxhdGl2ZUx1bWluYW5jZSgpO3JldHVybiBuPW4qKHItdC5nZXRSZWxhdGl2ZUx1bWluYW5jZSgpKS9yLGUuZGFya2VuKG4pfX07ZnVuY3Rpb24gVHIoZSl7Y29uc3QgdD1bXTtmb3IoY29uc3QgbiBvZiBlKXtjb25zdCBlPU51bWJlcihuKTsoZXx8MD09PWUmJiIiIT09bi5yZXBsYWNlKC9ccy9nLCIiKSkmJnQucHVzaChlKX1yZXR1cm4gdH1mdW5jdGlvbiBBcihlLHQsbixyKXtyZXR1cm57cmVkOmUvMjU1LGJsdWU6bi8yNTUsZ3JlZW46dC8yNTUsYWxwaGE6cn19ZnVuY3Rpb24gTXIoZSx0KXtjb25zdCBuPXQuaW5kZXgscj10WzBdLmxlbmd0aDtpZighbilyZXR1cm47Y29uc3QgaT1lLnBvc2l0aW9uQXQobik7cmV0dXJue3N0YXJ0TGluZU51bWJlcjppLmxpbmVOdW1iZXIsc3RhcnRDb2x1bW46aS5jb2x1bW4sZW5kTGluZU51bWJlcjppLmxpbmVOdW1iZXIsZW5kQ29sdW1uOmkuY29sdW1uK3J9fWZ1bmN0aW9uIHpyKGUsdCl7aWYoIWUpcmV0dXJuO2NvbnN0IG49RHIuRm9ybWF0LkNTUy5wYXJzZUhleCh0KTtyZXR1cm4gbj97cmFuZ2U6ZSxjb2xvcjpBcihuLnJnYmEucixuLnJnYmEuZyxuLnJnYmEuYixuLnJnYmEuYSl9OnZvaWQgMH1mdW5jdGlvbiBJcihlLHQsbil7aWYoIWV8fDEhPT10Lmxlbmd0aClyZXR1cm47Y29uc3Qgcj1Ucih0WzBdLnZhbHVlcygpKTtyZXR1cm57cmFuZ2U6ZSxjb2xvcjpBcihyWzBdLHJbMV0sclsyXSxuP3JbM106MSl9fWZ1bmN0aW9uIFByKGUsdCxuKXtpZighZXx8MSE9PXQubGVuZ3RoKXJldHVybjtjb25zdCByPVRyKHRbMF0udmFsdWVzKCkpLGk9bmV3IERyKG5ldyBGcihyWzBdLHJbMV0vMTAwLHJbMl0vMTAwLG4/clszXToxKSk7cmV0dXJue3JhbmdlOmUsY29sb3I6QXIoaS5yZ2JhLnIsaS5yZ2JhLmcsaS5yZ2JhLmIsaS5yZ2JhLmEpfX1mdW5jdGlvbiBMcihlLHQpe3JldHVybiJzdHJpbmciPT10eXBlb2YgZT9bLi4uZS5tYXRjaEFsbCh0KV06ZS5maW5kTWF0Y2hlcyh0KX1mdW5jdGlvbiBPcihlKXtyZXR1cm4gZSYmImZ1bmN0aW9uIj09dHlwZW9mIGUuZ2V0VmFsdWUmJiJmdW5jdGlvbiI9PXR5cGVvZiBlLnBvc2l0aW9uQXQ/ZnVuY3Rpb24oZSl7Y29uc3QgdD1bXSxuPUxyKGUsL1xiKHJnYnxyZ2JhfGhzbHxoc2xhKShcKFswLTlccywuXCVdKlwpKXwoIykoW0EtRmEtZjAtOV17Nn0pXGJ8KCMpKFtBLUZhLWYwLTldezh9KVxiL2dtKTtpZihuLmxlbmd0aD4wKWZvcihjb25zdCByIG9mIG4pe2NvbnN0IG49ci5maWx0ZXIoKGU9PnZvaWQgMCE9PWUpKSxpPW5bMV0sbz1uWzJdO2lmKCFvKWNvbnRpbnVlO2xldCBzO2lmKCJyZ2IiPT09aSl7Y29uc3QgdD0vXlwoXHMqKDI1WzAtNV18MlswLTRdWzAtOV18MVswLTldezJ9fFsxLTldWzAtOV18WzAtOV0pXHMqLFxzKigyNVswLTVdfDJbMC00XVswLTldfDFbMC05XXsyfXxbMS05XVswLTldfFswLTldKVxzKixccyooMjVbMC01XXwyWzAtNF1bMC05XXwxWzAtOV17Mn18WzEtOV1bMC05XXxbMC05XSlccypcKSQvZ207cz1JcihNcihlLHIpLExyKG8sdCksITEpfWVsc2UgaWYoInJnYmEiPT09aSl7Y29uc3QgdD0vXlwoXHMqKDI1WzAtNV18MlswLTRdWzAtOV18MVswLTldezJ9fFsxLTldWzAtOV18WzAtOV0pXHMqLFxzKigyNVswLTVdfDJbMC00XVswLTldfDFbMC05XXsyfXxbMS05XVswLTldfFswLTldKVxzKixccyooMjVbMC01XXwyWzAtNF1bMC05XXwxWzAtOV17Mn18WzEtOV1bMC05XXxbMC05XSlccyosXHMqKDBbLl1bMC05XSt8Wy5dWzAtOV0rfFswMV1bLl18WzAxXSlccypcKSQvZ207cz1JcihNcihlLHIpLExyKG8sdCksITApfWVsc2UgaWYoImhzbCI9PT1pKXtjb25zdCB0PS9eXChccyooMzZbMF18M1swLTVdWzAtOV18WzEyXVswLTldWzAtOV18WzEtOV0/WzAtOV0pXHMqLFxzKigxMDB8XGR7MSwyfVsuXVxkKnxcZHsxLDJ9KSVccyosXHMqKDEwMHxcZHsxLDJ9Wy5dXGQqfFxkezEsMn0pJVxzKlwpJC9nbTtzPVByKE1yKGUsciksTHIobyx0KSwhMSl9ZWxzZSBpZigiaHNsYSI9PT1pKXtjb25zdCB0PS9eXChccyooMzZbMF18M1swLTVdWzAtOV18WzEyXVswLTldWzAtOV18WzEtOV0/WzAtOV0pXHMqLFxzKigxMDB8XGR7MSwyfVsuXVxkKnxcZHsxLDJ9KSVccyosXHMqKDEwMHxcZHsxLDJ9Wy5dXGQqfFxkezEsMn0pJVxzKixccyooMFsuXVswLTldK3xbLl1bMC05XSt8WzAxXVsuXXxbMDFdKVxzKlwpJC9nbTtzPVByKE1yKGUsciksTHIobyx0KSwhMCl9ZWxzZSIjIj09PWkmJihzPXpyKE1yKGUsciksaStvKSk7cyYmdC5wdXNoKHMpfXJldHVybiB0fShlKTpbXX1Eci53aGl0ZT1uZXcgRHIobmV3IFJyKDI1NSwyNTUsMjU1LDEpKSxEci5ibGFjaz1uZXcgRHIobmV3IFJyKDAsMCwwLDEpKSxEci5yZWQ9bmV3IERyKG5ldyBScigyNTUsMCwwLDEpKSxEci5ibHVlPW5ldyBEcihuZXcgUnIoMCwwLDI1NSwxKSksRHIuZ3JlZW49bmV3IERyKG5ldyBScigwLDI1NSwwLDEpKSxEci5jeWFuPW5ldyBEcihuZXcgUnIoMCwyNTUsMjU1LDEpKSxEci5saWdodGdyZXk9bmV3IERyKG5ldyBScigyMTEsMjExLDIxMSwxKSksRHIudHJhbnNwYXJlbnQ9bmV3IERyKG5ldyBScigwLDAsMCwwKSksZnVuY3Rpb24oZSl7dmFyIHQ7KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIG4oZSl7Y29uc3QgdD1lLnRvU3RyaW5nKDE2KTtyZXR1cm4gMiE9PXQubGVuZ3RoPyIwIit0OnR9ZnVuY3Rpb24gcihlKXtzd2l0Y2goZSl7Y2FzZSA0ODpyZXR1cm4gMDtjYXNlIDQ5OnJldHVybiAxO2Nhc2UgNTA6cmV0dXJuIDI7Y2FzZSA1MTpyZXR1cm4gMztjYXNlIDUyOnJldHVybiA0O2Nhc2UgNTM6cmV0dXJuIDU7Y2FzZSA1NDpyZXR1cm4gNjtjYXNlIDU1OnJldHVybiA3O2Nhc2UgNTY6cmV0dXJuIDg7Y2FzZSA1NzpyZXR1cm4gOTtjYXNlIDk3OmNhc2UgNjU6cmV0dXJuIDEwO2Nhc2UgOTg6Y2FzZSA2NjpyZXR1cm4gMTE7Y2FzZSA5OTpjYXNlIDY3OnJldHVybiAxMjtjYXNlIDEwMDpjYXNlIDY4OnJldHVybiAxMztjYXNlIDEwMTpjYXNlIDY5OnJldHVybiAxNDtjYXNlIDEwMjpjYXNlIDcwOnJldHVybiAxNX1yZXR1cm4gMH10LmZvcm1hdFJHQj1mdW5jdGlvbih0KXtyZXR1cm4gMT09PXQucmdiYS5hP2ByZ2IoJHt0LnJnYmEucn0sICR7dC5yZ2JhLmd9LCAke3QucmdiYS5ifSlgOmUuRm9ybWF0LkNTUy5mb3JtYXRSR0JBKHQpfSx0LmZvcm1hdFJHQkE9ZnVuY3Rpb24oZSl7cmV0dXJuYHJnYmEoJHtlLnJnYmEucn0sICR7ZS5yZ2JhLmd9LCAke2UucmdiYS5ifSwgJHsrZS5yZ2JhLmEudG9GaXhlZCgyKX0pYH0sdC5mb3JtYXRIU0w9ZnVuY3Rpb24odCl7cmV0dXJuIDE9PT10LmhzbGEuYT9gaHNsKCR7dC5oc2xhLmh9LCAkeygxMDAqdC5oc2xhLnMpLnRvRml4ZWQoMil9JSwgJHsoMTAwKnQuaHNsYS5sKS50b0ZpeGVkKDIpfSUpYDplLkZvcm1hdC5DU1MuZm9ybWF0SFNMQSh0KX0sdC5mb3JtYXRIU0xBPWZ1bmN0aW9uKGUpe3JldHVybmBoc2xhKCR7ZS5oc2xhLmh9LCAkeygxMDAqZS5oc2xhLnMpLnRvRml4ZWQoMil9JSwgJHsoMTAwKmUuaHNsYS5sKS50b0ZpeGVkKDIpfSUsICR7ZS5oc2xhLmEudG9GaXhlZCgyKX0pYH0sdC5mb3JtYXRIZXg9ZnVuY3Rpb24oZSl7cmV0dXJuYCMke24oZS5yZ2JhLnIpfSR7bihlLnJnYmEuZyl9JHtuKGUucmdiYS5iKX1gfSx0LmZvcm1hdEhleEE9ZnVuY3Rpb24odCxyPSExKXtyZXR1cm4gciYmMT09PXQucmdiYS5hP2UuRm9ybWF0LkNTUy5mb3JtYXRIZXgodCk6YCMke24odC5yZ2JhLnIpfSR7bih0LnJnYmEuZyl9JHtuKHQucmdiYS5iKX0ke24oTWF0aC5yb3VuZCgyNTUqdC5yZ2JhLmEpKX1gfSx0LmZvcm1hdD1mdW5jdGlvbih0KXtyZXR1cm4gdC5pc09wYXF1ZSgpP2UuRm9ybWF0LkNTUy5mb3JtYXRIZXgodCk6ZS5Gb3JtYXQuQ1NTLmZvcm1hdFJHQkEodCl9LHQucGFyc2VIZXg9ZnVuY3Rpb24odCl7Y29uc3Qgbj10Lmxlbmd0aDtpZigwPT09bilyZXR1cm4gbnVsbDtpZigzNSE9PXQuY2hhckNvZGVBdCgwKSlyZXR1cm4gbnVsbDtpZig3PT09bil7Y29uc3Qgbj0xNipyKHQuY2hhckNvZGVBdCgxKSkrcih0LmNoYXJDb2RlQXQoMikpLGk9MTYqcih0LmNoYXJDb2RlQXQoMykpK3IodC5jaGFyQ29kZUF0KDQpKSxvPTE2KnIodC5jaGFyQ29kZUF0KDUpKStyKHQuY2hhckNvZGVBdCg2KSk7cmV0dXJuIG5ldyBlKG5ldyBScihuLGksbywxKSl9aWYoOT09PW4pe2NvbnN0IG49MTYqcih0LmNoYXJDb2RlQXQoMSkpK3IodC5jaGFyQ29kZUF0KDIpKSxpPTE2KnIodC5jaGFyQ29kZUF0KDMpKStyKHQuY2hhckNvZGVBdCg0KSksbz0xNipyKHQuY2hhckNvZGVBdCg1KSkrcih0LmNoYXJDb2RlQXQoNikpLHM9MTYqcih0LmNoYXJDb2RlQXQoNykpK3IodC5jaGFyQ29kZUF0KDgpKTtyZXR1cm4gbmV3IGUobmV3IFJyKG4saSxvLHMvMjU1KSl9aWYoND09PW4pe2NvbnN0IG49cih0LmNoYXJDb2RlQXQoMSkpLGk9cih0LmNoYXJDb2RlQXQoMikpLG89cih0LmNoYXJDb2RlQXQoMykpO3JldHVybiBuZXcgZShuZXcgUnIoMTYqbituLDE2KmkraSwxNipvK28pKX1pZig1PT09bil7Y29uc3Qgbj1yKHQuY2hhckNvZGVBdCgxKSksaT1yKHQuY2hhckNvZGVBdCgyKSksbz1yKHQuY2hhckNvZGVBdCgzKSkscz1yKHQuY2hhckNvZGVBdCg0KSk7cmV0dXJuIG5ldyBlKG5ldyBScigxNipuK24sMTYqaStpLDE2Km8rbywoMTYqcytzKS8yNTUpKX1yZXR1cm4gbnVsbH19KSgodD1lLkZvcm1hdHx8KGUuRm9ybWF0PXt9KSkuQ1NTfHwodC5DU1M9e30pKX0oRHJ8fChEcj17fSkpO3ZhciBXcj1mdW5jdGlvbihlLHQsbixyKXtyZXR1cm4gbmV3KG58fChuPVByb21pc2UpKSgoZnVuY3Rpb24oaSxvKXtmdW5jdGlvbiBzKGUpe3RyeXtsKHIubmV4dChlKSl9Y2F0Y2goZSl7byhlKX19ZnVuY3Rpb24gYShlKXt0cnl7bChyLnRocm93KGUpKX1jYXRjaChlKXtvKGUpfX1mdW5jdGlvbiBsKGUpe3ZhciB0O2UuZG9uZT9pKGUudmFsdWUpOih0PWUudmFsdWUsdCBpbnN0YW5jZW9mIG4/dDpuZXcgbigoZnVuY3Rpb24oZSl7ZSh0KX0pKSkudGhlbihzLGEpfWwoKHI9ci5hcHBseShlLHR8fFtdKSkubmV4dCgpKX0pKX07Y2xhc3MgVnIgZXh0ZW5kcyBjdHtnZXQgdXJpKCl7cmV0dXJuIHRoaXMuX3VyaX1nZXQgZW9sKCl7cmV0dXJuIHRoaXMuX2VvbH1nZXRWYWx1ZSgpe3JldHVybiB0aGlzLmdldFRleHQoKX1maW5kTWF0Y2hlcyhlKXtjb25zdCB0PVtdO2ZvcihsZXQgbj0wO248dGhpcy5fbGluZXMubGVuZ3RoO24rKyl7Y29uc3Qgcj10aGlzLl9saW5lc1tuXSxpPXRoaXMub2Zmc2V0QXQobmV3IG50KG4rMSwxKSksbz1yLm1hdGNoQWxsKGUpO2Zvcihjb25zdCBlIG9mIG8pKGUuaW5kZXh8fDA9PT1lLmluZGV4KSYmKGUuaW5kZXg9ZS5pbmRleCtpKSx0LnB1c2goZSl9cmV0dXJuIHR9Z2V0TGluZXNDb250ZW50KCl7cmV0dXJuIHRoaXMuX2xpbmVzLnNsaWNlKDApfWdldExpbmVDb3VudCgpe3JldHVybiB0aGlzLl9saW5lcy5sZW5ndGh9Z2V0TGluZUNvbnRlbnQoZSl7cmV0dXJuIHRoaXMuX2xpbmVzW2UtMV19Z2V0V29yZEF0UG9zaXRpb24oZSx0KXtjb25zdCBuPXB0KGUuY29sdW1uLGZ1bmN0aW9uKGUpe2xldCB0PWh0O2lmKGUmJmUgaW5zdGFuY2VvZiBSZWdFeHApaWYoZS5nbG9iYWwpdD1lO2Vsc2V7bGV0IG49ImciO2UuaWdub3JlQ2FzZSYmKG4rPSJpIiksZS5tdWx0aWxpbmUmJihuKz0ibSIpLGUudW5pY29kZSYmKG4rPSJ1IiksdD1uZXcgUmVnRXhwKGUuc291cmNlLG4pfXJldHVybiB0Lmxhc3RJbmRleD0wLHR9KHQpLHRoaXMuX2xpbmVzW2UubGluZU51bWJlci0xXSwwKTtyZXR1cm4gbj9uZXcgcnQoZS5saW5lTnVtYmVyLG4uc3RhcnRDb2x1bW4sZS5saW5lTnVtYmVyLG4uZW5kQ29sdW1uKTpudWxsfXdvcmRzKGUpe2NvbnN0IHQ9dGhpcy5fbGluZXMsbj10aGlzLl93b3JkZW5pemUuYmluZCh0aGlzKTtsZXQgcj0wLGk9IiIsbz0wLHM9W107cmV0dXJueypbU3ltYm9sLml0ZXJhdG9yXSgpe2Zvcig7OylpZihvPHMubGVuZ3RoKXtjb25zdCBlPWkuc3Vic3RyaW5nKHNbb10uc3RhcnQsc1tvXS5lbmQpO28rPTEseWllbGQgZX1lbHNle2lmKCEocjx0Lmxlbmd0aCkpYnJlYWs7aT10W3JdLHM9bihpLGUpLG89MCxyKz0xfX19fWdldExpbmVXb3JkcyhlLHQpe2NvbnN0IG49dGhpcy5fbGluZXNbZS0xXSxyPXRoaXMuX3dvcmRlbml6ZShuLHQpLGk9W107Zm9yKGNvbnN0IGUgb2YgcilpLnB1c2goe3dvcmQ6bi5zdWJzdHJpbmcoZS5zdGFydCxlLmVuZCksc3RhcnRDb2x1bW46ZS5zdGFydCsxLGVuZENvbHVtbjplLmVuZCsxfSk7cmV0dXJuIGl9X3dvcmRlbml6ZShlLHQpe2NvbnN0IG49W107bGV0IHI7Zm9yKHQubGFzdEluZGV4PTA7KHI9dC5leGVjKGUpKSYmMCE9PXJbMF0ubGVuZ3RoOyluLnB1c2goe3N0YXJ0OnIuaW5kZXgsZW5kOnIuaW5kZXgrclswXS5sZW5ndGh9KTtyZXR1cm4gbn1nZXRWYWx1ZUluUmFuZ2UoZSl7aWYoKGU9dGhpcy5fdmFsaWRhdGVSYW5nZShlKSkuc3RhcnRMaW5lTnVtYmVyPT09ZS5lbmRMaW5lTnVtYmVyKXJldHVybiB0aGlzLl9saW5lc1tlLnN0YXJ0TGluZU51bWJlci0xXS5zdWJzdHJpbmcoZS5zdGFydENvbHVtbi0xLGUuZW5kQ29sdW1uLTEpO2NvbnN0IHQ9dGhpcy5fZW9sLG49ZS5zdGFydExpbmVOdW1iZXItMSxyPWUuZW5kTGluZU51bWJlci0xLGk9W107aS5wdXNoKHRoaXMuX2xpbmVzW25dLnN1YnN0cmluZyhlLnN0YXJ0Q29sdW1uLTEpKTtmb3IobGV0IGU9bisxO2U8cjtlKyspaS5wdXNoKHRoaXMuX2xpbmVzW2VdKTtyZXR1cm4gaS5wdXNoKHRoaXMuX2xpbmVzW3JdLnN1YnN0cmluZygwLGUuZW5kQ29sdW1uLTEpKSxpLmpvaW4odCl9b2Zmc2V0QXQoZSl7cmV0dXJuIGU9dGhpcy5fdmFsaWRhdGVQb3NpdGlvbihlKSx0aGlzLl9lbnN1cmVMaW5lU3RhcnRzKCksdGhpcy5fbGluZVN0YXJ0cy5nZXRQcmVmaXhTdW0oZS5saW5lTnVtYmVyLTIpKyhlLmNvbHVtbi0xKX1wb3NpdGlvbkF0KGUpe2U9TWF0aC5mbG9vcihlKSxlPU1hdGgubWF4KDAsZSksdGhpcy5fZW5zdXJlTGluZVN0YXJ0cygpO2NvbnN0IHQ9dGhpcy5fbGluZVN0YXJ0cy5nZXRJbmRleE9mKGUpLG49dGhpcy5fbGluZXNbdC5pbmRleF0ubGVuZ3RoO3JldHVybntsaW5lTnVtYmVyOjErdC5pbmRleCxjb2x1bW46MStNYXRoLm1pbih0LnJlbWFpbmRlcixuKX19X3ZhbGlkYXRlUmFuZ2UoZSl7Y29uc3QgdD10aGlzLl92YWxpZGF0ZVBvc2l0aW9uKHtsaW5lTnVtYmVyOmUuc3RhcnRMaW5lTnVtYmVyLGNvbHVtbjplLnN0YXJ0Q29sdW1ufSksbj10aGlzLl92YWxpZGF0ZVBvc2l0aW9uKHtsaW5lTnVtYmVyOmUuZW5kTGluZU51bWJlcixjb2x1bW46ZS5lbmRDb2x1bW59KTtyZXR1cm4gdC5saW5lTnVtYmVyIT09ZS5zdGFydExpbmVOdW1iZXJ8fHQuY29sdW1uIT09ZS5zdGFydENvbHVtbnx8bi5saW5lTnVtYmVyIT09ZS5lbmRMaW5lTnVtYmVyfHxuLmNvbHVtbiE9PWUuZW5kQ29sdW1uP3tzdGFydExpbmVOdW1iZXI6dC5saW5lTnVtYmVyLHN0YXJ0Q29sdW1uOnQuY29sdW1uLGVuZExpbmVOdW1iZXI6bi5saW5lTnVtYmVyLGVuZENvbHVtbjpuLmNvbHVtbn06ZX1fdmFsaWRhdGVQb3NpdGlvbihlKXtpZighbnQuaXNJUG9zaXRpb24oZSkpdGhyb3cgbmV3IEVycm9yKCJiYWQgcG9zaXRpb24iKTtsZXR7bGluZU51bWJlcjp0LGNvbHVtbjpufT1lLHI9ITE7aWYodDwxKXQ9MSxuPTEscj0hMDtlbHNlIGlmKHQ+dGhpcy5fbGluZXMubGVuZ3RoKXQ9dGhpcy5fbGluZXMubGVuZ3RoLG49dGhpcy5fbGluZXNbdC0xXS5sZW5ndGgrMSxyPSEwO2Vsc2V7Y29uc3QgZT10aGlzLl9saW5lc1t0LTFdLmxlbmd0aCsxO248MT8obj0xLHI9ITApOm4+ZSYmKG49ZSxyPSEwKX1yZXR1cm4gcj97bGluZU51bWJlcjp0LGNvbHVtbjpufTplfX1jbGFzcyBVcntjb25zdHJ1Y3RvcihlLHQpe3RoaXMuX2hvc3Q9ZSx0aGlzLl9tb2RlbHM9T2JqZWN0LmNyZWF0ZShudWxsKSx0aGlzLl9mb3JlaWduTW9kdWxlRmFjdG9yeT10LHRoaXMuX2ZvcmVpZ25Nb2R1bGU9bnVsbH1kaXNwb3NlKCl7dGhpcy5fbW9kZWxzPU9iamVjdC5jcmVhdGUobnVsbCl9X2dldE1vZGVsKGUpe3JldHVybiB0aGlzLl9tb2RlbHNbZV19X2dldE1vZGVscygpe2NvbnN0IGU9W107cmV0dXJuIE9iamVjdC5rZXlzKHRoaXMuX21vZGVscykuZm9yRWFjaCgodD0+ZS5wdXNoKHRoaXMuX21vZGVsc1t0XSkpKSxlfWFjY2VwdE5ld01vZGVsKGUpe3RoaXMuX21vZGVsc1tlLnVybF09bmV3IFZyKHFlLnBhcnNlKGUudXJsKSxlLmxpbmVzLGUuRU9MLGUudmVyc2lvbklkKX1hY2NlcHRNb2RlbENoYW5nZWQoZSx0KXtpZighdGhpcy5fbW9kZWxzW2VdKXJldHVybjt0aGlzLl9tb2RlbHNbZV0ub25FdmVudHModCl9YWNjZXB0UmVtb3ZlZE1vZGVsKGUpe3RoaXMuX21vZGVsc1tlXSYmZGVsZXRlIHRoaXMuX21vZGVsc1tlXX1jb21wdXRlVW5pY29kZUhpZ2hsaWdodHMoZSx0LG4pe3JldHVybiBXcih0aGlzLHZvaWQgMCx2b2lkIDAsKGZ1bmN0aW9uKigpe2NvbnN0IHI9dGhpcy5fZ2V0TW9kZWwoZSk7cmV0dXJuIHI/S24uY29tcHV0ZVVuaWNvZGVIaWdobGlnaHRzKHIsdCxuKTp7cmFuZ2VzOltdLGhhc01vcmU6ITEsYW1iaWd1b3VzQ2hhcmFjdGVyQ291bnQ6MCxpbnZpc2libGVDaGFyYWN0ZXJDb3VudDowLG5vbkJhc2ljQXNjaWlDaGFyYWN0ZXJDb3VudDowfX0pKX1jb21wdXRlRGlmZihlLHQsbixyKXtyZXR1cm4gV3IodGhpcyx2b2lkIDAsdm9pZCAwLChmdW5jdGlvbiooKXtjb25zdCBpPXRoaXMuX2dldE1vZGVsKGUpLG89dGhpcy5fZ2V0TW9kZWwodCk7cmV0dXJuIGkmJm8/VXIuY29tcHV0ZURpZmYoaSxvLG4scik6bnVsbH0pKX1zdGF0aWMgY29tcHV0ZURpZmYoZSx0LG4scil7Y29uc3QgaT0iYWR2YW5jZWQiPT09cj9fci5hZHZhbmNlZDpfci5sZWdhY3ksbz1lLmdldExpbmVzQ29udGVudCgpLHM9dC5nZXRMaW5lc0NvbnRlbnQoKSxhPWkuY29tcHV0ZURpZmYobyxzLG4pO3JldHVybntpZGVudGljYWw6IShhLmNoYW5nZXMubGVuZ3RoPjApJiZ0aGlzLl9tb2RlbHNBcmVJZGVudGljYWwoZSx0KSxxdWl0RWFybHk6YS5oaXRUaW1lb3V0LGNoYW5nZXM6YS5jaGFuZ2VzLm1hcCgoZT0+e3ZhciB0O3JldHVybltlLm9yaWdpbmFsUmFuZ2Uuc3RhcnRMaW5lTnVtYmVyLGUub3JpZ2luYWxSYW5nZS5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlLGUubW9kaWZpZWRSYW5nZS5zdGFydExpbmVOdW1iZXIsZS5tb2RpZmllZFJhbmdlLmVuZExpbmVOdW1iZXJFeGNsdXNpdmUsbnVsbD09PSh0PWUuaW5uZXJDaGFuZ2VzKXx8dm9pZCAwPT09dD92b2lkIDA6dC5tYXAoKGU9PltlLm9yaWdpbmFsUmFuZ2Uuc3RhcnRMaW5lTnVtYmVyLGUub3JpZ2luYWxSYW5nZS5zdGFydENvbHVtbixlLm9yaWdpbmFsUmFuZ2UuZW5kTGluZU51bWJlcixlLm9yaWdpbmFsUmFuZ2UuZW5kQ29sdW1uLGUubW9kaWZpZWRSYW5nZS5zdGFydExpbmVOdW1iZXIsZS5tb2RpZmllZFJhbmdlLnN0YXJ0Q29sdW1uLGUubW9kaWZpZWRSYW5nZS5lbmRMaW5lTnVtYmVyLGUubW9kaWZpZWRSYW5nZS5lbmRDb2x1bW5dKSldfSkpfX1zdGF0aWMgX21vZGVsc0FyZUlkZW50aWNhbChlLHQpe2NvbnN0IG49ZS5nZXRMaW5lQ291bnQoKTtpZihuIT09dC5nZXRMaW5lQ291bnQoKSlyZXR1cm4hMTtmb3IobGV0IHI9MTtyPD1uO3IrKyl7aWYoZS5nZXRMaW5lQ29udGVudChyKSE9PXQuZ2V0TGluZUNvbnRlbnQocikpcmV0dXJuITF9cmV0dXJuITB9Y29tcHV0ZU1vcmVNaW5pbWFsRWRpdHMoZSx0LG4pe3JldHVybiBXcih0aGlzLHZvaWQgMCx2b2lkIDAsKGZ1bmN0aW9uKigpe2NvbnN0IHI9dGhpcy5fZ2V0TW9kZWwoZSk7aWYoIXIpcmV0dXJuIHQ7Y29uc3QgaT1bXTtsZXQgbzt0PXQuc2xpY2UoMCkuc29ydCgoKGUsdCk9PntpZihlLnJhbmdlJiZ0LnJhbmdlKXJldHVybiBydC5jb21wYXJlUmFuZ2VzVXNpbmdTdGFydHMoZS5yYW5nZSx0LnJhbmdlKTtyZXR1cm4oZS5yYW5nZT8wOjEpLSh0LnJhbmdlPzA6MSl9KSk7Zm9yKGxldHtyYW5nZTplLHRleHQ6cyxlb2w6YX1vZiB0KXtpZigibnVtYmVyIj09dHlwZW9mIGEmJihvPWEpLHJ0LmlzRW1wdHkoZSkmJiFzKWNvbnRpbnVlO2NvbnN0IHQ9ci5nZXRWYWx1ZUluUmFuZ2UoZSk7aWYocz1zLnJlcGxhY2UoL1xyXG58XG58XHIvZyxyLmVvbCksdD09PXMpY29udGludWU7aWYoTWF0aC5tYXgocy5sZW5ndGgsdC5sZW5ndGgpPlVyLl9kaWZmTGltaXQpe2kucHVzaCh7cmFuZ2U6ZSx0ZXh0OnN9KTtjb250aW51ZX1jb25zdCBsPWZlKHQscyxuKSxjPXIub2Zmc2V0QXQocnQubGlmdChlKS5nZXRTdGFydFBvc2l0aW9uKCkpO2Zvcihjb25zdCBlIG9mIGwpe2NvbnN0IHQ9ci5wb3NpdGlvbkF0KGMrZS5vcmlnaW5hbFN0YXJ0KSxuPXIucG9zaXRpb25BdChjK2Uub3JpZ2luYWxTdGFydCtlLm9yaWdpbmFsTGVuZ3RoKSxvPXt0ZXh0OnMuc3Vic3RyKGUubW9kaWZpZWRTdGFydCxlLm1vZGlmaWVkTGVuZ3RoKSxyYW5nZTp7c3RhcnRMaW5lTnVtYmVyOnQubGluZU51bWJlcixzdGFydENvbHVtbjp0LmNvbHVtbixlbmRMaW5lTnVtYmVyOm4ubGluZU51bWJlcixlbmRDb2x1bW46bi5jb2x1bW59fTtyLmdldFZhbHVlSW5SYW5nZShvLnJhbmdlKSE9PW8udGV4dCYmaS5wdXNoKG8pfX1yZXR1cm4ibnVtYmVyIj09dHlwZW9mIG8mJmkucHVzaCh7ZW9sOm8sdGV4dDoiIixyYW5nZTp7c3RhcnRMaW5lTnVtYmVyOjAsc3RhcnRDb2x1bW46MCxlbmRMaW5lTnVtYmVyOjAsZW5kQ29sdW1uOjB9fSksaX0pKX1jb21wdXRlTGlua3MoZSl7cmV0dXJuIFdyKHRoaXMsdm9pZCAwLHZvaWQgMCwoZnVuY3Rpb24qKCl7Y29uc3QgdD10aGlzLl9nZXRNb2RlbChlKTtyZXR1cm4gdD9mdW5jdGlvbihlKXtyZXR1cm4gZSYmImZ1bmN0aW9uIj09dHlwZW9mIGUuZ2V0TGluZUNvdW50JiYiZnVuY3Rpb24iPT10eXBlb2YgZS5nZXRMaW5lQ29udGVudD95dC5jb21wdXRlTGlua3MoZSk6W119KHQpOm51bGx9KSl9Y29tcHV0ZURlZmF1bHREb2N1bWVudENvbG9ycyhlKXtyZXR1cm4gV3IodGhpcyx2b2lkIDAsdm9pZCAwLChmdW5jdGlvbiooKXtjb25zdCB0PXRoaXMuX2dldE1vZGVsKGUpO3JldHVybiB0P09yKHQpOm51bGx9KSl9dGV4dHVhbFN1Z2dlc3QoZSx0LG4scil7cmV0dXJuIFdyKHRoaXMsdm9pZCAwLHZvaWQgMCwoZnVuY3Rpb24qKCl7Y29uc3QgaT1uZXcgTCghMCksbz1uZXcgUmVnRXhwKG4scikscz1uZXcgU2V0O2U6Zm9yKGNvbnN0IG4gb2YgZSl7Y29uc3QgZT10aGlzLl9nZXRNb2RlbChuKTtpZihlKWZvcihjb25zdCBuIG9mIGUud29yZHMobykpaWYobiE9PXQmJmlzTmFOKE51bWJlcihuKSkmJihzLmFkZChuKSxzLnNpemU+VXIuX3N1Z2dlc3Rpb25zTGltaXQpKWJyZWFrIGV9cmV0dXJue3dvcmRzOkFycmF5LmZyb20ocyksZHVyYXRpb246aS5lbGFwc2VkKCl9fSkpfWNvbXB1dGVXb3JkUmFuZ2VzKGUsdCxuLHIpe3JldHVybiBXcih0aGlzLHZvaWQgMCx2b2lkIDAsKGZ1bmN0aW9uKigpe2NvbnN0IGk9dGhpcy5fZ2V0TW9kZWwoZSk7aWYoIWkpcmV0dXJuIE9iamVjdC5jcmVhdGUobnVsbCk7Y29uc3Qgbz1uZXcgUmVnRXhwKG4scikscz1PYmplY3QuY3JlYXRlKG51bGwpO2ZvcihsZXQgZT10LnN0YXJ0TGluZU51bWJlcjtlPHQuZW5kTGluZU51bWJlcjtlKyspe2NvbnN0IHQ9aS5nZXRMaW5lV29yZHMoZSxvKTtmb3IoY29uc3QgbiBvZiB0KXtpZighaXNOYU4oTnVtYmVyKG4ud29yZCkpKWNvbnRpbnVlO2xldCB0PXNbbi53b3JkXTt0fHwodD1bXSxzW24ud29yZF09dCksdC5wdXNoKHtzdGFydExpbmVOdW1iZXI6ZSxzdGFydENvbHVtbjpuLnN0YXJ0Q29sdW1uLGVuZExpbmVOdW1iZXI6ZSxlbmRDb2x1bW46bi5lbmRDb2x1bW59KX19cmV0dXJuIHN9KSl9bmF2aWdhdGVWYWx1ZVNldChlLHQsbixyLGkpe3JldHVybiBXcih0aGlzLHZvaWQgMCx2b2lkIDAsKGZ1bmN0aW9uKigpe2NvbnN0IG89dGhpcy5fZ2V0TW9kZWwoZSk7aWYoIW8pcmV0dXJuIG51bGw7Y29uc3Qgcz1uZXcgUmVnRXhwKHIsaSk7dC5zdGFydENvbHVtbj09PXQuZW5kQ29sdW1uJiYodD17c3RhcnRMaW5lTnVtYmVyOnQuc3RhcnRMaW5lTnVtYmVyLHN0YXJ0Q29sdW1uOnQuc3RhcnRDb2x1bW4sZW5kTGluZU51bWJlcjp0LmVuZExpbmVOdW1iZXIsZW5kQ29sdW1uOnQuZW5kQ29sdW1uKzF9KTtjb25zdCBhPW8uZ2V0VmFsdWVJblJhbmdlKHQpLGw9by5nZXRXb3JkQXRQb3NpdGlvbih7bGluZU51bWJlcjp0LnN0YXJ0TGluZU51bWJlcixjb2x1bW46dC5zdGFydENvbHVtbn0scyk7aWYoIWwpcmV0dXJuIG51bGw7Y29uc3QgYz1vLmdldFZhbHVlSW5SYW5nZShsKTtyZXR1cm4gd3QuSU5TVEFOQ0UubmF2aWdhdGVWYWx1ZVNldCh0LGEsbCxjLG4pfSkpfWxvYWRGb3JlaWduTW9kdWxlKGUsdCxuKXtjb25zdCByPWZ1bmN0aW9uKGUsdCl7Y29uc3Qgbj1lPT5mdW5jdGlvbigpe2NvbnN0IG49QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDApO3JldHVybiB0KGUsbil9LHI9e307Zm9yKGNvbnN0IHQgb2YgZSlyW3RdPW4odCk7cmV0dXJuIHJ9KG4sKChlLHQpPT50aGlzLl9ob3N0LmZocihlLHQpKSksaT17aG9zdDpyLGdldE1pcnJvck1vZGVsczooKT0+dGhpcy5fZ2V0TW9kZWxzKCl9O3JldHVybiB0aGlzLl9mb3JlaWduTW9kdWxlRmFjdG9yeT8odGhpcy5fZm9yZWlnbk1vZHVsZT10aGlzLl9mb3JlaWduTW9kdWxlRmFjdG9yeShpLHQpLFByb21pc2UucmVzb2x2ZShIKHRoaXMuX2ZvcmVpZ25Nb2R1bGUpKSk6UHJvbWlzZS5yZWplY3QobmV3IEVycm9yKCJVbmV4cGVjdGVkIHVzYWdlIikpfWZtcihlLHQpe2lmKCF0aGlzLl9mb3JlaWduTW9kdWxlfHwiZnVuY3Rpb24iIT10eXBlb2YgdGhpcy5fZm9yZWlnbk1vZHVsZVtlXSlyZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKCJNaXNzaW5nIHJlcXVlc3RIYW5kbGVyIG9yIG1ldGhvZDogIitlKSk7dHJ5e3JldHVybiBQcm9taXNlLnJlc29sdmUodGhpcy5fZm9yZWlnbk1vZHVsZVtlXS5hcHBseSh0aGlzLl9mb3JlaWduTW9kdWxlLHQpKX1jYXRjaChlKXtyZXR1cm4gUHJvbWlzZS5yZWplY3QoZSl9fX1Vci5fZGlmZkxpbWl0PTFlNSxVci5fc3VnZ2VzdGlvbnNMaW1pdD0xZTQsImZ1bmN0aW9uIj09dHlwZW9mIGltcG9ydFNjcmlwdHMmJihnbG9iYWxUaGlzLm1vbmFjbz17ZWRpdG9yOnZvaWQgMCxsYW5ndWFnZXM6dm9pZCAwLENhbmNlbGxhdGlvblRva2VuU291cmNlOmt0LEVtaXR0ZXI6SyxLZXlDb2RlOmhuLEtleU1vZDpMbixQb3NpdGlvbjpudCxSYW5nZTpydCxTZWxlY3Rpb246TXQsU2VsZWN0aW9uRGlyZWN0aW9uOlNuLE1hcmtlclNldmVyaXR5OmRuLE1hcmtlclRhZzpwbixVcmk6cWUsVG9rZW46UG59KTtsZXQgQnI9ITE7ZnVuY3Rpb24gS3IoZSl7aWYoQnIpcmV0dXJuO0JyPSEwO2NvbnN0IHQ9bmV3IGhlKChlPT57Z2xvYmFsVGhpcy5wb3N0TWVzc2FnZShlKX0pLCh0PT5uZXcgVXIodCxlKSkpO2dsb2JhbFRoaXMub25tZXNzYWdlPWU9Pnt0Lm9ubWVzc2FnZShlLmRhdGEpfX0KLyohLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAqIENvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgICogVmVyc2lvbjogMC4zOS4wKGZmMzYyMWEzZmE2Mzg5ODczYmU1NDEyZDE3NTU0Mjk0ZWExYjA5NDEpCiAgICAgKiBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UKICAgICAqIGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQvbW9uYWNvLWVkaXRvci9ibG9iL21haW4vTElDRU5TRS50eHQKICAgICAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwp2YXIganIscXI7Z2xvYmFsVGhpcy5vbm1lc3NhZ2U9ZT0+e0JyfHxLcihudWxsKX0sKHFyPWpyfHwoanI9e30pKVtxci5JZGVudD0wXT0iSWRlbnQiLHFyW3FyLkF0S2V5d29yZD0xXT0iQXRLZXl3b3JkIixxcltxci5TdHJpbmc9Ml09IlN0cmluZyIscXJbcXIuQmFkU3RyaW5nPTNdPSJCYWRTdHJpbmciLHFyW3FyLlVucXVvdGVkU3RyaW5nPTRdPSJVbnF1b3RlZFN0cmluZyIscXJbcXIuSGFzaD01XT0iSGFzaCIscXJbcXIuTnVtPTZdPSJOdW0iLHFyW3FyLlBlcmNlbnRhZ2U9N109IlBlcmNlbnRhZ2UiLHFyW3FyLkRpbWVuc2lvbj04XT0iRGltZW5zaW9uIixxcltxci5Vbmljb2RlUmFuZ2U9OV09IlVuaWNvZGVSYW5nZSIscXJbcXIuQ0RPPTEwXT0iQ0RPIixxcltxci5DREM9MTFdPSJDREMiLHFyW3FyLkNvbG9uPTEyXT0iQ29sb24iLHFyW3FyLlNlbWlDb2xvbj0xM109IlNlbWlDb2xvbiIscXJbcXIuQ3VybHlMPTE0XT0iQ3VybHlMIixxcltxci5DdXJseVI9MTVdPSJDdXJseVIiLHFyW3FyLlBhcmVudGhlc2lzTD0xNl09IlBhcmVudGhlc2lzTCIscXJbcXIuUGFyZW50aGVzaXNSPTE3XT0iUGFyZW50aGVzaXNSIixxcltxci5CcmFja2V0TD0xOF09IkJyYWNrZXRMIixxcltxci5CcmFja2V0Uj0xOV09IkJyYWNrZXRSIixxcltxci5XaGl0ZXNwYWNlPTIwXT0iV2hpdGVzcGFjZSIscXJbcXIuSW5jbHVkZXM9MjFdPSJJbmNsdWRlcyIscXJbcXIuRGFzaG1hdGNoPTIyXT0iRGFzaG1hdGNoIixxcltxci5TdWJzdHJpbmdPcGVyYXRvcj0yM109IlN1YnN0cmluZ09wZXJhdG9yIixxcltxci5QcmVmaXhPcGVyYXRvcj0yNF09IlByZWZpeE9wZXJhdG9yIixxcltxci5TdWZmaXhPcGVyYXRvcj0yNV09IlN1ZmZpeE9wZXJhdG9yIixxcltxci5EZWxpbT0yNl09IkRlbGltIixxcltxci5FTVM9MjddPSJFTVMiLHFyW3FyLkVYUz0yOF09IkVYUyIscXJbcXIuTGVuZ3RoPTI5XT0iTGVuZ3RoIixxcltxci5BbmdsZT0zMF09IkFuZ2xlIixxcltxci5UaW1lPTMxXT0iVGltZSIscXJbcXIuRnJlcT0zMl09IkZyZXEiLHFyW3FyLkV4Y2xhbWF0aW9uPTMzXT0iRXhjbGFtYXRpb24iLHFyW3FyLlJlc29sdXRpb249MzRdPSJSZXNvbHV0aW9uIixxcltxci5Db21tYT0zNV09IkNvbW1hIixxcltxci5DaGFyc2V0PTM2XT0iQ2hhcnNldCIscXJbcXIuRXNjYXBlZEphdmFTY3JpcHQ9MzddPSJFc2NhcGVkSmF2YVNjcmlwdCIscXJbcXIuQmFkRXNjYXBlZEphdmFTY3JpcHQ9MzhdPSJCYWRFc2NhcGVkSmF2YVNjcmlwdCIscXJbcXIuQ29tbWVudD0zOV09IkNvbW1lbnQiLHFyW3FyLlNpbmdsZUxpbmVDb21tZW50PTQwXT0iU2luZ2xlTGluZUNvbW1lbnQiLHFyW3FyLkVPRj00MV09IkVPRiIscXJbcXIuQ3VzdG9tVG9rZW49NDJdPSJDdXN0b21Ub2tlbiI7dmFyICRyPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlKXt0aGlzLnNvdXJjZT1lLHRoaXMubGVuPWUubGVuZ3RoLHRoaXMucG9zaXRpb249MH1yZXR1cm4gZS5wcm90b3R5cGUuc3Vic3RyaW5nPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHZvaWQgMD09PXQmJih0PXRoaXMucG9zaXRpb24pLHRoaXMuc291cmNlLnN1YnN0cmluZyhlLHQpfSxlLnByb3RvdHlwZS5lb3M9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5sZW48PXRoaXMucG9zaXRpb259LGUucHJvdG90eXBlLnBvcz1mdW5jdGlvbigpe3JldHVybiB0aGlzLnBvc2l0aW9ufSxlLnByb3RvdHlwZS5nb0JhY2tUbz1mdW5jdGlvbihlKXt0aGlzLnBvc2l0aW9uPWV9LGUucHJvdG90eXBlLmdvQmFjaz1mdW5jdGlvbihlKXt0aGlzLnBvc2l0aW9uLT1lfSxlLnByb3RvdHlwZS5hZHZhbmNlPWZ1bmN0aW9uKGUpe3RoaXMucG9zaXRpb24rPWV9LGUucHJvdG90eXBlLm5leHRDaGFyPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc291cmNlLmNoYXJDb2RlQXQodGhpcy5wb3NpdGlvbisrKXx8MH0sZS5wcm90b3R5cGUucGVla0NoYXI9ZnVuY3Rpb24oZSl7cmV0dXJuIHZvaWQgMD09PWUmJihlPTApLHRoaXMuc291cmNlLmNoYXJDb2RlQXQodGhpcy5wb3NpdGlvbitlKXx8MH0sZS5wcm90b3R5cGUubG9va2JhY2tDaGFyPWZ1bmN0aW9uKGUpe3JldHVybiB2b2lkIDA9PT1lJiYoZT0wKSx0aGlzLnNvdXJjZS5jaGFyQ29kZUF0KHRoaXMucG9zaXRpb24tZSl8fDB9LGUucHJvdG90eXBlLmFkdmFuY2VJZkNoYXI9ZnVuY3Rpb24oZSl7cmV0dXJuIGU9PT10aGlzLnNvdXJjZS5jaGFyQ29kZUF0KHRoaXMucG9zaXRpb24pJiYodGhpcy5wb3NpdGlvbisrLCEwKX0sZS5wcm90b3R5cGUuYWR2YW5jZUlmQ2hhcnM9ZnVuY3Rpb24oZSl7aWYodGhpcy5wb3NpdGlvbitlLmxlbmd0aD50aGlzLnNvdXJjZS5sZW5ndGgpcmV0dXJuITE7Zm9yKHZhciB0PTA7dDxlLmxlbmd0aDt0KyspaWYodGhpcy5zb3VyY2UuY2hhckNvZGVBdCh0aGlzLnBvc2l0aW9uK3QpIT09ZVt0XSlyZXR1cm4hMTtyZXR1cm4gdGhpcy5hZHZhbmNlKHQpLCEwfSxlLnByb3RvdHlwZS5hZHZhbmNlV2hpbGVDaGFyPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD10aGlzLnBvc2l0aW9uO3RoaXMucG9zaXRpb248dGhpcy5sZW4mJmUodGhpcy5zb3VyY2UuY2hhckNvZGVBdCh0aGlzLnBvc2l0aW9uKSk7KXRoaXMucG9zaXRpb24rKztyZXR1cm4gdGhpcy5wb3NpdGlvbi10fSxlfSgpLEhyPSJhIi5jaGFyQ29kZUF0KDApLEdyPSJmIi5jaGFyQ29kZUF0KDApLEpyPSJ6Ii5jaGFyQ29kZUF0KDApLFhyPSJBIi5jaGFyQ29kZUF0KDApLFlyPSJGIi5jaGFyQ29kZUF0KDApLFpyPSJaIi5jaGFyQ29kZUF0KDApLFFyPSIwIi5jaGFyQ29kZUF0KDApLGVpPSI5Ii5jaGFyQ29kZUF0KDApLHRpPSJ+Ii5jaGFyQ29kZUF0KDApLG5pPSJeIi5jaGFyQ29kZUF0KDApLHJpPSI9Ii5jaGFyQ29kZUF0KDApLGlpPSJ8Ii5jaGFyQ29kZUF0KDApLG9pPSItIi5jaGFyQ29kZUF0KDApLHNpPSJfIi5jaGFyQ29kZUF0KDApLGFpPSIlIi5jaGFyQ29kZUF0KDApLGxpPSIqIi5jaGFyQ29kZUF0KDApLGNpPSIoIi5jaGFyQ29kZUF0KDApLGhpPSIpIi5jaGFyQ29kZUF0KDApLGRpPSI8Ii5jaGFyQ29kZUF0KDApLHBpPSI+Ii5jaGFyQ29kZUF0KDApLHVpPSJAIi5jaGFyQ29kZUF0KDApLG1pPSIjIi5jaGFyQ29kZUF0KDApLGZpPSIkIi5jaGFyQ29kZUF0KDApLGdpPSJcXCIuY2hhckNvZGVBdCgwKSxiaT0iLyIuY2hhckNvZGVBdCgwKSx2aT0iXG4iLmNoYXJDb2RlQXQoMCkseWk9IlxyIi5jaGFyQ29kZUF0KDApLHdpPSJcZiIuY2hhckNvZGVBdCgwKSx4aT0nIicuY2hhckNvZGVBdCgwKSxTaT0iJyIuY2hhckNvZGVBdCgwKSxDaT0iICIuY2hhckNvZGVBdCgwKSxraT0iXHQiLmNoYXJDb2RlQXQoMCksX2k9IjsiLmNoYXJDb2RlQXQoMCksRWk9IjoiLmNoYXJDb2RlQXQoMCksUmk9InsiLmNoYXJDb2RlQXQoMCksRmk9In0iLmNoYXJDb2RlQXQoMCksTmk9IlsiLmNoYXJDb2RlQXQoMCksRGk9Il0iLmNoYXJDb2RlQXQoMCksVGk9IiwiLmNoYXJDb2RlQXQoMCksQWk9Ii4iLmNoYXJDb2RlQXQoMCksTWk9IiEiLmNoYXJDb2RlQXQoMCksemk9Ij8iLmNoYXJDb2RlQXQoMCksSWk9IisiLmNoYXJDb2RlQXQoMCksUGk9e307UGlbX2ldPWpyLlNlbWlDb2xvbixQaVtFaV09anIuQ29sb24sUGlbUmldPWpyLkN1cmx5TCxQaVtGaV09anIuQ3VybHlSLFBpW0RpXT1qci5CcmFja2V0UixQaVtOaV09anIuQnJhY2tldEwsUGlbY2ldPWpyLlBhcmVudGhlc2lzTCxQaVtoaV09anIuUGFyZW50aGVzaXNSLFBpW1RpXT1qci5Db21tYTt2YXIgTGk9e307TGkuZW09anIuRU1TLExpLmV4PWpyLkVYUyxMaS5weD1qci5MZW5ndGgsTGkuY209anIuTGVuZ3RoLExpLm1tPWpyLkxlbmd0aCxMaS5pbj1qci5MZW5ndGgsTGkucHQ9anIuTGVuZ3RoLExpLnBjPWpyLkxlbmd0aCxMaS5kZWc9anIuQW5nbGUsTGkucmFkPWpyLkFuZ2xlLExpLmdyYWQ9anIuQW5nbGUsTGkubXM9anIuVGltZSxMaS5zPWpyLlRpbWUsTGkuaHo9anIuRnJlcSxMaS5raHo9anIuRnJlcSxMaVsiJSJdPWpyLlBlcmNlbnRhZ2UsTGkuZnI9anIuUGVyY2VudGFnZSxMaS5kcGk9anIuUmVzb2x1dGlvbixMaS5kcGNtPWpyLlJlc29sdXRpb247dmFyIE9pPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSgpe3RoaXMuc3RyZWFtPW5ldyAkcigiIiksdGhpcy5pZ25vcmVDb21tZW50PSEwLHRoaXMuaWdub3JlV2hpdGVzcGFjZT0hMCx0aGlzLmluVVJMPSExfXJldHVybiBlLnByb3RvdHlwZS5zZXRTb3VyY2U9ZnVuY3Rpb24oZSl7dGhpcy5zdHJlYW09bmV3ICRyKGUpfSxlLnByb3RvdHlwZS5maW5pc2hUb2tlbj1mdW5jdGlvbihlLHQsbil7cmV0dXJue29mZnNldDplLGxlbjp0aGlzLnN0cmVhbS5wb3MoKS1lLHR5cGU6dCx0ZXh0Om58fHRoaXMuc3RyZWFtLnN1YnN0cmluZyhlKX19LGUucHJvdG90eXBlLnN1YnN0cmluZz1mdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLnN0cmVhbS5zdWJzdHJpbmcoZSxlK3QpfSxlLnByb3RvdHlwZS5wb3M9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zdHJlYW0ucG9zKCl9LGUucHJvdG90eXBlLmdvQmFja1RvPWZ1bmN0aW9uKGUpe3RoaXMuc3RyZWFtLmdvQmFja1RvKGUpfSxlLnByb3RvdHlwZS5zY2FuVW5xdW90ZWRTdHJpbmc9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnN0cmVhbS5wb3MoKSx0PVtdO3JldHVybiB0aGlzLl91bnF1b3RlZFN0cmluZyh0KT90aGlzLmZpbmlzaFRva2VuKGUsanIuVW5xdW90ZWRTdHJpbmcsdC5qb2luKCIiKSk6bnVsbH0sZS5wcm90b3R5cGUuc2Nhbj1mdW5jdGlvbigpe3ZhciBlPXRoaXMudHJpdmlhKCk7aWYobnVsbCE9PWUpcmV0dXJuIGU7dmFyIHQ9dGhpcy5zdHJlYW0ucG9zKCk7cmV0dXJuIHRoaXMuc3RyZWFtLmVvcygpP3RoaXMuZmluaXNoVG9rZW4odCxqci5FT0YpOnRoaXMuc2Nhbk5leHQodCl9LGUucHJvdG90eXBlLnRyeVNjYW5Vbmljb2RlPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5zdHJlYW0ucG9zKCk7aWYoIXRoaXMuc3RyZWFtLmVvcygpJiZ0aGlzLl91bmljb2RlUmFuZ2UoKSlyZXR1cm4gdGhpcy5maW5pc2hUb2tlbihlLGpyLlVuaWNvZGVSYW5nZSk7dGhpcy5zdHJlYW0uZ29CYWNrVG8oZSl9LGUucHJvdG90eXBlLnNjYW5OZXh0PWZ1bmN0aW9uKGUpe2lmKHRoaXMuc3RyZWFtLmFkdmFuY2VJZkNoYXJzKFtkaSxNaSxvaSxvaV0pKXJldHVybiB0aGlzLmZpbmlzaFRva2VuKGUsanIuQ0RPKTtpZih0aGlzLnN0cmVhbS5hZHZhbmNlSWZDaGFycyhbb2ksb2kscGldKSlyZXR1cm4gdGhpcy5maW5pc2hUb2tlbihlLGpyLkNEQyk7dmFyIHQ9W107aWYodGhpcy5pZGVudCh0KSlyZXR1cm4gdGhpcy5maW5pc2hUb2tlbihlLGpyLklkZW50LHQuam9pbigiIikpO2lmKHRoaXMuc3RyZWFtLmFkdmFuY2VJZkNoYXIodWkpKXtpZih0PVsiQCJdLHRoaXMuX25hbWUodCkpe3ZhciBuPXQuam9pbigiIik7cmV0dXJuIkBjaGFyc2V0Ij09PW4/dGhpcy5maW5pc2hUb2tlbihlLGpyLkNoYXJzZXQsbik6dGhpcy5maW5pc2hUb2tlbihlLGpyLkF0S2V5d29yZCxuKX1yZXR1cm4gdGhpcy5maW5pc2hUb2tlbihlLGpyLkRlbGltKX1pZih0aGlzLnN0cmVhbS5hZHZhbmNlSWZDaGFyKG1pKSlyZXR1cm4gdD1bIiMiXSx0aGlzLl9uYW1lKHQpP3RoaXMuZmluaXNoVG9rZW4oZSxqci5IYXNoLHQuam9pbigiIikpOnRoaXMuZmluaXNoVG9rZW4oZSxqci5EZWxpbSk7aWYodGhpcy5zdHJlYW0uYWR2YW5jZUlmQ2hhcihNaSkpcmV0dXJuIHRoaXMuZmluaXNoVG9rZW4oZSxqci5FeGNsYW1hdGlvbik7aWYodGhpcy5fbnVtYmVyKCkpe3ZhciByPXRoaXMuc3RyZWFtLnBvcygpO2lmKHQ9W3RoaXMuc3RyZWFtLnN1YnN0cmluZyhlLHIpXSx0aGlzLnN0cmVhbS5hZHZhbmNlSWZDaGFyKGFpKSlyZXR1cm4gdGhpcy5maW5pc2hUb2tlbihlLGpyLlBlcmNlbnRhZ2UpO2lmKHRoaXMuaWRlbnQodCkpe3ZhciBpPXRoaXMuc3RyZWFtLnN1YnN0cmluZyhyKS50b0xvd2VyQ2FzZSgpLG89TGlbaV07cmV0dXJuIHZvaWQgMCE9PW8/dGhpcy5maW5pc2hUb2tlbihlLG8sdC5qb2luKCIiKSk6dGhpcy5maW5pc2hUb2tlbihlLGpyLkRpbWVuc2lvbix0LmpvaW4oIiIpKX1yZXR1cm4gdGhpcy5maW5pc2hUb2tlbihlLGpyLk51bSl9dD1bXTt2YXIgcz10aGlzLl9zdHJpbmcodCk7cmV0dXJuIG51bGwhPT1zP3RoaXMuZmluaXNoVG9rZW4oZSxzLHQuam9pbigiIikpOnZvaWQgMCE9PShzPVBpW3RoaXMuc3RyZWFtLnBlZWtDaGFyKCldKT8odGhpcy5zdHJlYW0uYWR2YW5jZSgxKSx0aGlzLmZpbmlzaFRva2VuKGUscykpOnRoaXMuc3RyZWFtLnBlZWtDaGFyKDApPT09dGkmJnRoaXMuc3RyZWFtLnBlZWtDaGFyKDEpPT09cmk/KHRoaXMuc3RyZWFtLmFkdmFuY2UoMiksdGhpcy5maW5pc2hUb2tlbihlLGpyLkluY2x1ZGVzKSk6dGhpcy5zdHJlYW0ucGVla0NoYXIoMCk9PT1paSYmdGhpcy5zdHJlYW0ucGVla0NoYXIoMSk9PT1yaT8odGhpcy5zdHJlYW0uYWR2YW5jZSgyKSx0aGlzLmZpbmlzaFRva2VuKGUsanIuRGFzaG1hdGNoKSk6dGhpcy5zdHJlYW0ucGVla0NoYXIoMCk9PT1saSYmdGhpcy5zdHJlYW0ucGVla0NoYXIoMSk9PT1yaT8odGhpcy5zdHJlYW0uYWR2YW5jZSgyKSx0aGlzLmZpbmlzaFRva2VuKGUsanIuU3Vic3RyaW5nT3BlcmF0b3IpKTp0aGlzLnN0cmVhbS5wZWVrQ2hhcigwKT09PW5pJiZ0aGlzLnN0cmVhbS5wZWVrQ2hhcigxKT09PXJpPyh0aGlzLnN0cmVhbS5hZHZhbmNlKDIpLHRoaXMuZmluaXNoVG9rZW4oZSxqci5QcmVmaXhPcGVyYXRvcikpOnRoaXMuc3RyZWFtLnBlZWtDaGFyKDApPT09ZmkmJnRoaXMuc3RyZWFtLnBlZWtDaGFyKDEpPT09cmk/KHRoaXMuc3RyZWFtLmFkdmFuY2UoMiksdGhpcy5maW5pc2hUb2tlbihlLGpyLlN1ZmZpeE9wZXJhdG9yKSk6KHRoaXMuc3RyZWFtLm5leHRDaGFyKCksdGhpcy5maW5pc2hUb2tlbihlLGpyLkRlbGltKSl9LGUucHJvdG90eXBlLnRyaXZpYT1mdW5jdGlvbigpe2Zvcig7Oyl7dmFyIGU9dGhpcy5zdHJlYW0ucG9zKCk7aWYodGhpcy5fd2hpdGVzcGFjZSgpKXtpZighdGhpcy5pZ25vcmVXaGl0ZXNwYWNlKXJldHVybiB0aGlzLmZpbmlzaFRva2VuKGUsanIuV2hpdGVzcGFjZSl9ZWxzZXtpZighdGhpcy5jb21tZW50KCkpcmV0dXJuIG51bGw7aWYoIXRoaXMuaWdub3JlQ29tbWVudClyZXR1cm4gdGhpcy5maW5pc2hUb2tlbihlLGpyLkNvbW1lbnQpfX19LGUucHJvdG90eXBlLmNvbW1lbnQ9ZnVuY3Rpb24oKXtpZih0aGlzLnN0cmVhbS5hZHZhbmNlSWZDaGFycyhbYmksbGldKSl7dmFyIGU9ITEsdD0hMTtyZXR1cm4gdGhpcy5zdHJlYW0uYWR2YW5jZVdoaWxlQ2hhcigoZnVuY3Rpb24obil7cmV0dXJuIHQmJm49PT1iaT8oZT0hMCwhMSk6KHQ9bj09PWxpLCEwKX0pKSxlJiZ0aGlzLnN0cmVhbS5hZHZhbmNlKDEpLCEwfXJldHVybiExfSxlLnByb3RvdHlwZS5fbnVtYmVyPWZ1bmN0aW9uKCl7dmFyIGUsdD0wO3JldHVybiB0aGlzLnN0cmVhbS5wZWVrQ2hhcigpPT09QWkmJih0PTEpLChlPXRoaXMuc3RyZWFtLnBlZWtDaGFyKHQpKT49UXImJmU8PWVpJiYodGhpcy5zdHJlYW0uYWR2YW5jZSh0KzEpLHRoaXMuc3RyZWFtLmFkdmFuY2VXaGlsZUNoYXIoKGZ1bmN0aW9uKGUpe3JldHVybiBlPj1RciYmZTw9ZWl8fDA9PT10JiZlPT09QWl9KSksITApfSxlLnByb3RvdHlwZS5fbmV3bGluZT1mdW5jdGlvbihlKXt2YXIgdD10aGlzLnN0cmVhbS5wZWVrQ2hhcigpO3N3aXRjaCh0KXtjYXNlIHlpOmNhc2Ugd2k6Y2FzZSB2aTpyZXR1cm4gdGhpcy5zdHJlYW0uYWR2YW5jZSgxKSxlLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZSh0KSksdD09PXlpJiZ0aGlzLnN0cmVhbS5hZHZhbmNlSWZDaGFyKHZpKSYmZS5wdXNoKCJcbiIpLCEwfXJldHVybiExfSxlLnByb3RvdHlwZS5fZXNjYXBlPWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5zdHJlYW0ucGVla0NoYXIoKTtpZihuPT09Z2kpe3RoaXMuc3RyZWFtLmFkdmFuY2UoMSksbj10aGlzLnN0cmVhbS5wZWVrQ2hhcigpO2Zvcih2YXIgcj0wO3I8NiYmKG4+PVFyJiZuPD1laXx8bj49SHImJm48PUdyfHxuPj1YciYmbjw9WXIpOyl0aGlzLnN0cmVhbS5hZHZhbmNlKDEpLG49dGhpcy5zdHJlYW0ucGVla0NoYXIoKSxyKys7aWYocj4wKXt0cnl7dmFyIGk9cGFyc2VJbnQodGhpcy5zdHJlYW0uc3Vic3RyaW5nKHRoaXMuc3RyZWFtLnBvcygpLXIpLDE2KTtpJiZlLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShpKSl9Y2F0Y2goZSl7fXJldHVybiBuPT09Q2l8fG49PT1raT90aGlzLnN0cmVhbS5hZHZhbmNlKDEpOnRoaXMuX25ld2xpbmUoW10pLCEwfWlmKG4hPT15aSYmbiE9PXdpJiZuIT09dmkpcmV0dXJuIHRoaXMuc3RyZWFtLmFkdmFuY2UoMSksZS5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUobikpLCEwO2lmKHQpcmV0dXJuIHRoaXMuX25ld2xpbmUoZSl9cmV0dXJuITF9LGUucHJvdG90eXBlLl9zdHJpbmdDaGFyPWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5zdHJlYW0ucGVla0NoYXIoKTtyZXR1cm4gMCE9PW4mJm4hPT1lJiZuIT09Z2kmJm4hPT15aSYmbiE9PXdpJiZuIT09dmkmJih0aGlzLnN0cmVhbS5hZHZhbmNlKDEpLHQucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKG4pKSwhMCl9LGUucHJvdG90eXBlLl9zdHJpbmc9ZnVuY3Rpb24oZSl7aWYodGhpcy5zdHJlYW0ucGVla0NoYXIoKT09PVNpfHx0aGlzLnN0cmVhbS5wZWVrQ2hhcigpPT09eGkpe3ZhciB0PXRoaXMuc3RyZWFtLm5leHRDaGFyKCk7Zm9yKGUucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKHQpKTt0aGlzLl9zdHJpbmdDaGFyKHQsZSl8fHRoaXMuX2VzY2FwZShlLCEwKTspO3JldHVybiB0aGlzLnN0cmVhbS5wZWVrQ2hhcigpPT09dD8odGhpcy5zdHJlYW0ubmV4dENoYXIoKSxlLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZSh0KSksanIuU3RyaW5nKTpqci5CYWRTdHJpbmd9cmV0dXJuIG51bGx9LGUucHJvdG90eXBlLl91bnF1b3RlZENoYXI9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5zdHJlYW0ucGVla0NoYXIoKTtyZXR1cm4gMCE9PXQmJnQhPT1naSYmdCE9PVNpJiZ0IT09eGkmJnQhPT1jaSYmdCE9PWhpJiZ0IT09Q2kmJnQhPT1raSYmdCE9PXZpJiZ0IT09d2kmJnQhPT15aSYmKHRoaXMuc3RyZWFtLmFkdmFuY2UoMSksZS5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUodCkpLCEwKX0sZS5wcm90b3R5cGUuX3VucXVvdGVkU3RyaW5nPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0hMTt0aGlzLl91bnF1b3RlZENoYXIoZSl8fHRoaXMuX2VzY2FwZShlKTspdD0hMDtyZXR1cm4gdH0sZS5wcm90b3R5cGUuX3doaXRlc3BhY2U9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zdHJlYW0uYWR2YW5jZVdoaWxlQ2hhcigoZnVuY3Rpb24oZSl7cmV0dXJuIGU9PT1DaXx8ZT09PWtpfHxlPT09dml8fGU9PT13aXx8ZT09PXlpfSkpPjB9LGUucHJvdG90eXBlLl9uYW1lPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0hMTt0aGlzLl9pZGVudENoYXIoZSl8fHRoaXMuX2VzY2FwZShlKTspdD0hMDtyZXR1cm4gdH0sZS5wcm90b3R5cGUuaWRlbnQ9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5zdHJlYW0ucG9zKCk7aWYodGhpcy5fbWludXMoZSkpe2lmKHRoaXMuX21pbnVzKGUpfHx0aGlzLl9pZGVudEZpcnN0Q2hhcihlKXx8dGhpcy5fZXNjYXBlKGUpKXtmb3IoO3RoaXMuX2lkZW50Q2hhcihlKXx8dGhpcy5fZXNjYXBlKGUpOyk7cmV0dXJuITB9fWVsc2UgaWYodGhpcy5faWRlbnRGaXJzdENoYXIoZSl8fHRoaXMuX2VzY2FwZShlKSl7Zm9yKDt0aGlzLl9pZGVudENoYXIoZSl8fHRoaXMuX2VzY2FwZShlKTspO3JldHVybiEwfXJldHVybiB0aGlzLnN0cmVhbS5nb0JhY2tUbyh0KSwhMX0sZS5wcm90b3R5cGUuX2lkZW50Rmlyc3RDaGFyPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuc3RyZWFtLnBlZWtDaGFyKCk7cmV0dXJuKHQ9PT1zaXx8dD49SHImJnQ8PUpyfHx0Pj1YciYmdDw9WnJ8fHQ+PTEyOCYmdDw9NjU1MzUpJiYodGhpcy5zdHJlYW0uYWR2YW5jZSgxKSxlLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZSh0KSksITApfSxlLnByb3RvdHlwZS5fbWludXM9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5zdHJlYW0ucGVla0NoYXIoKTtyZXR1cm4gdD09PW9pJiYodGhpcy5zdHJlYW0uYWR2YW5jZSgxKSxlLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZSh0KSksITApfSxlLnByb3RvdHlwZS5faWRlbnRDaGFyPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuc3RyZWFtLnBlZWtDaGFyKCk7cmV0dXJuKHQ9PT1zaXx8dD09PW9pfHx0Pj1IciYmdDw9SnJ8fHQ+PVhyJiZ0PD1acnx8dD49UXImJnQ8PWVpfHx0Pj0xMjgmJnQ8PTY1NTM1KSYmKHRoaXMuc3RyZWFtLmFkdmFuY2UoMSksZS5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUodCkpLCEwKX0sZS5wcm90b3R5cGUuX3VuaWNvZGVSYW5nZT1mdW5jdGlvbigpe2lmKHRoaXMuc3RyZWFtLmFkdmFuY2VJZkNoYXIoSWkpKXt2YXIgZT1mdW5jdGlvbihlKXtyZXR1cm4gZT49UXImJmU8PWVpfHxlPj1IciYmZTw9R3J8fGU+PVhyJiZlPD1Zcn0sdD10aGlzLnN0cmVhbS5hZHZhbmNlV2hpbGVDaGFyKGUpK3RoaXMuc3RyZWFtLmFkdmFuY2VXaGlsZUNoYXIoKGZ1bmN0aW9uKGUpe3JldHVybiBlPT09eml9KSk7aWYodD49MSYmdDw9Nil7aWYoIXRoaXMuc3RyZWFtLmFkdmFuY2VJZkNoYXIob2kpKXJldHVybiEwO3ZhciBuPXRoaXMuc3RyZWFtLmFkdmFuY2VXaGlsZUNoYXIoZSk7aWYobj49MSYmbjw9NilyZXR1cm4hMH19cmV0dXJuITF9LGV9KCk7ZnVuY3Rpb24gV2koZSx0KXtpZihlLmxlbmd0aDx0Lmxlbmd0aClyZXR1cm4hMTtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKylpZihlW25dIT09dFtuXSlyZXR1cm4hMTtyZXR1cm4hMH1mdW5jdGlvbiBWaShlLHQpe3ZhciBuPWUubGVuZ3RoLXQubGVuZ3RoO3JldHVybiBuPjA/ZS5sYXN0SW5kZXhPZih0KT09PW46MD09PW4mJmU9PT10fWZ1bmN0aW9uIFVpKGUsdCl7cmV0dXJuIHZvaWQgMD09PXQmJih0PSEwKSxlP2UubGVuZ3RoPDE0MD9lOmUuc2xpY2UoMCwxNDApKyh0PyLigKYiOiIiKToiIn1mdW5jdGlvbiBCaShlLHQpe2Zvcih2YXIgbj0iIjt0PjA7KTE9PSgxJnQpJiYobis9ZSksZSs9ZSx0Pj4+PTE7cmV0dXJuIG59dmFyIEtpLGppLHFpLCRpLEhpLEdpPShLaT1mdW5jdGlvbihlLHQpe3JldHVybihLaT1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fHtfX3Byb3RvX186W119aW5zdGFuY2VvZiBBcnJheSYmZnVuY3Rpb24oZSx0KXtlLl9fcHJvdG9fXz10fXx8ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG4gaW4gdClPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxuKSYmKGVbbl09dFtuXSl9KShlLHQpfSxmdW5jdGlvbihlLHQpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0JiZudWxsIT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKCJDbGFzcyBleHRlbmRzIHZhbHVlICIrU3RyaW5nKHQpKyIgaXMgbm90IGEgY29uc3RydWN0b3Igb3IgbnVsbCIpO2Z1bmN0aW9uIG4oKXt0aGlzLmNvbnN0cnVjdG9yPWV9S2koZSx0KSxlLnByb3RvdHlwZT1udWxsPT09dD9PYmplY3QuY3JlYXRlKHQpOihuLnByb3RvdHlwZT10LnByb3RvdHlwZSxuZXcgbil9KTtmdW5jdGlvbiBKaShlLHQpe3ZhciBuPW51bGw7cmV0dXJuIWV8fHQ8ZS5vZmZzZXR8fHQ+ZS5lbmQ/bnVsbDooZS5hY2NlcHQoKGZ1bmN0aW9uKGUpe3JldHVybi0xPT09ZS5vZmZzZXQmJi0xPT09ZS5sZW5ndGh8fGUub2Zmc2V0PD10JiZlLmVuZD49dCYmKG4/ZS5sZW5ndGg8PW4ubGVuZ3RoJiYobj1lKTpuPWUsITApfSkpLG4pfWZ1bmN0aW9uIFhpKGUsdCl7Zm9yKHZhciBuPUppKGUsdCkscj1bXTtuOylyLnVuc2hpZnQobiksbj1uLnBhcmVudDtyZXR1cm4gcn0ocWk9aml8fChqaT17fSkpW3FpLlVuZGVmaW5lZD0wXT0iVW5kZWZpbmVkIixxaVtxaS5JZGVudGlmaWVyPTFdPSJJZGVudGlmaWVyIixxaVtxaS5TdHlsZXNoZWV0PTJdPSJTdHlsZXNoZWV0IixxaVtxaS5SdWxlc2V0PTNdPSJSdWxlc2V0IixxaVtxaS5TZWxlY3Rvcj00XT0iU2VsZWN0b3IiLHFpW3FpLlNpbXBsZVNlbGVjdG9yPTVdPSJTaW1wbGVTZWxlY3RvciIscWlbcWkuU2VsZWN0b3JJbnRlcnBvbGF0aW9uPTZdPSJTZWxlY3RvckludGVycG9sYXRpb24iLHFpW3FpLlNlbGVjdG9yQ29tYmluYXRvcj03XT0iU2VsZWN0b3JDb21iaW5hdG9yIixxaVtxaS5TZWxlY3RvckNvbWJpbmF0b3JQYXJlbnQ9OF09IlNlbGVjdG9yQ29tYmluYXRvclBhcmVudCIscWlbcWkuU2VsZWN0b3JDb21iaW5hdG9yU2libGluZz05XT0iU2VsZWN0b3JDb21iaW5hdG9yU2libGluZyIscWlbcWkuU2VsZWN0b3JDb21iaW5hdG9yQWxsU2libGluZ3M9MTBdPSJTZWxlY3RvckNvbWJpbmF0b3JBbGxTaWJsaW5ncyIscWlbcWkuU2VsZWN0b3JDb21iaW5hdG9yU2hhZG93UGllcmNpbmdEZXNjZW5kYW50PTExXT0iU2VsZWN0b3JDb21iaW5hdG9yU2hhZG93UGllcmNpbmdEZXNjZW5kYW50IixxaVtxaS5QYWdlPTEyXT0iUGFnZSIscWlbcWkuUGFnZUJveE1hcmdpbkJveD0xM109IlBhZ2VCb3hNYXJnaW5Cb3giLHFpW3FpLkNsYXNzU2VsZWN0b3I9MTRdPSJDbGFzc1NlbGVjdG9yIixxaVtxaS5JZGVudGlmaWVyU2VsZWN0b3I9MTVdPSJJZGVudGlmaWVyU2VsZWN0b3IiLHFpW3FpLkVsZW1lbnROYW1lU2VsZWN0b3I9MTZdPSJFbGVtZW50TmFtZVNlbGVjdG9yIixxaVtxaS5Qc2V1ZG9TZWxlY3Rvcj0xN109IlBzZXVkb1NlbGVjdG9yIixxaVtxaS5BdHRyaWJ1dGVTZWxlY3Rvcj0xOF09IkF0dHJpYnV0ZVNlbGVjdG9yIixxaVtxaS5EZWNsYXJhdGlvbj0xOV09IkRlY2xhcmF0aW9uIixxaVtxaS5EZWNsYXJhdGlvbnM9MjBdPSJEZWNsYXJhdGlvbnMiLHFpW3FpLlByb3BlcnR5PTIxXT0iUHJvcGVydHkiLHFpW3FpLkV4cHJlc3Npb249MjJdPSJFeHByZXNzaW9uIixxaVtxaS5CaW5hcnlFeHByZXNzaW9uPTIzXT0iQmluYXJ5RXhwcmVzc2lvbiIscWlbcWkuVGVybT0yNF09IlRlcm0iLHFpW3FpLk9wZXJhdG9yPTI1XT0iT3BlcmF0b3IiLHFpW3FpLlZhbHVlPTI2XT0iVmFsdWUiLHFpW3FpLlN0cmluZ0xpdGVyYWw9MjddPSJTdHJpbmdMaXRlcmFsIixxaVtxaS5VUklMaXRlcmFsPTI4XT0iVVJJTGl0ZXJhbCIscWlbcWkuRXNjYXBlZFZhbHVlPTI5XT0iRXNjYXBlZFZhbHVlIixxaVtxaS5GdW5jdGlvbj0zMF09IkZ1bmN0aW9uIixxaVtxaS5OdW1lcmljVmFsdWU9MzFdPSJOdW1lcmljVmFsdWUiLHFpW3FpLkhleENvbG9yVmFsdWU9MzJdPSJIZXhDb2xvclZhbHVlIixxaVtxaS5SYXRpb1ZhbHVlPTMzXT0iUmF0aW9WYWx1ZSIscWlbcWkuTWl4aW5EZWNsYXJhdGlvbj0zNF09Ik1peGluRGVjbGFyYXRpb24iLHFpW3FpLk1peGluUmVmZXJlbmNlPTM1XT0iTWl4aW5SZWZlcmVuY2UiLHFpW3FpLlZhcmlhYmxlTmFtZT0zNl09IlZhcmlhYmxlTmFtZSIscWlbcWkuVmFyaWFibGVEZWNsYXJhdGlvbj0zN109IlZhcmlhYmxlRGVjbGFyYXRpb24iLHFpW3FpLlByaW89MzhdPSJQcmlvIixxaVtxaS5JbnRlcnBvbGF0aW9uPTM5XT0iSW50ZXJwb2xhdGlvbiIscWlbcWkuTmVzdGVkUHJvcGVydGllcz00MF09Ik5lc3RlZFByb3BlcnRpZXMiLHFpW3FpLkV4dGVuZHNSZWZlcmVuY2U9NDFdPSJFeHRlbmRzUmVmZXJlbmNlIixxaVtxaS5TZWxlY3RvclBsYWNlaG9sZGVyPTQyXT0iU2VsZWN0b3JQbGFjZWhvbGRlciIscWlbcWkuRGVidWc9NDNdPSJEZWJ1ZyIscWlbcWkuSWY9NDRdPSJJZiIscWlbcWkuRWxzZT00NV09IkVsc2UiLHFpW3FpLkZvcj00Nl09IkZvciIscWlbcWkuRWFjaD00N109IkVhY2giLHFpW3FpLldoaWxlPTQ4XT0iV2hpbGUiLHFpW3FpLk1peGluQ29udGVudFJlZmVyZW5jZT00OV09Ik1peGluQ29udGVudFJlZmVyZW5jZSIscWlbcWkuTWl4aW5Db250ZW50RGVjbGFyYXRpb249NTBdPSJNaXhpbkNvbnRlbnREZWNsYXJhdGlvbiIscWlbcWkuTWVkaWE9NTFdPSJNZWRpYSIscWlbcWkuS2V5ZnJhbWU9NTJdPSJLZXlmcmFtZSIscWlbcWkuRm9udEZhY2U9NTNdPSJGb250RmFjZSIscWlbcWkuSW1wb3J0PTU0XT0iSW1wb3J0IixxaVtxaS5OYW1lc3BhY2U9NTVdPSJOYW1lc3BhY2UiLHFpW3FpLkludm9jYXRpb249NTZdPSJJbnZvY2F0aW9uIixxaVtxaS5GdW5jdGlvbkRlY2xhcmF0aW9uPTU3XT0iRnVuY3Rpb25EZWNsYXJhdGlvbiIscWlbcWkuUmV0dXJuU3RhdGVtZW50PTU4XT0iUmV0dXJuU3RhdGVtZW50IixxaVtxaS5NZWRpYVF1ZXJ5PTU5XT0iTWVkaWFRdWVyeSIscWlbcWkuTWVkaWFDb25kaXRpb249NjBdPSJNZWRpYUNvbmRpdGlvbiIscWlbcWkuTWVkaWFGZWF0dXJlPTYxXT0iTWVkaWFGZWF0dXJlIixxaVtxaS5GdW5jdGlvblBhcmFtZXRlcj02Ml09IkZ1bmN0aW9uUGFyYW1ldGVyIixxaVtxaS5GdW5jdGlvbkFyZ3VtZW50PTYzXT0iRnVuY3Rpb25Bcmd1bWVudCIscWlbcWkuS2V5ZnJhbWVTZWxlY3Rvcj02NF09IktleWZyYW1lU2VsZWN0b3IiLHFpW3FpLlZpZXdQb3J0PTY1XT0iVmlld1BvcnQiLHFpW3FpLkRvY3VtZW50PTY2XT0iRG9jdW1lbnQiLHFpW3FpLkF0QXBwbHlSdWxlPTY3XT0iQXRBcHBseVJ1bGUiLHFpW3FpLkN1c3RvbVByb3BlcnR5RGVjbGFyYXRpb249NjhdPSJDdXN0b21Qcm9wZXJ0eURlY2xhcmF0aW9uIixxaVtxaS5DdXN0b21Qcm9wZXJ0eVNldD02OV09IkN1c3RvbVByb3BlcnR5U2V0IixxaVtxaS5MaXN0RW50cnk9NzBdPSJMaXN0RW50cnkiLHFpW3FpLlN1cHBvcnRzPTcxXT0iU3VwcG9ydHMiLHFpW3FpLlN1cHBvcnRzQ29uZGl0aW9uPTcyXT0iU3VwcG9ydHNDb25kaXRpb24iLHFpW3FpLk5hbWVzcGFjZVByZWZpeD03M109Ik5hbWVzcGFjZVByZWZpeCIscWlbcWkuR3JpZExpbmU9NzRdPSJHcmlkTGluZSIscWlbcWkuUGx1Z2luPTc1XT0iUGx1Z2luIixxaVtxaS5Vbmtub3duQXRSdWxlPTc2XT0iVW5rbm93bkF0UnVsZSIscWlbcWkuVXNlPTc3XT0iVXNlIixxaVtxaS5Nb2R1bGVDb25maWd1cmF0aW9uPTc4XT0iTW9kdWxlQ29uZmlndXJhdGlvbiIscWlbcWkuRm9yd2FyZD03OV09IkZvcndhcmQiLHFpW3FpLkZvcndhcmRWaXNpYmlsaXR5PTgwXT0iRm9yd2FyZFZpc2liaWxpdHkiLHFpW3FpLk1vZHVsZT04MV09Ik1vZHVsZSIscWlbcWkuVW5pY29kZVJhbmdlPTgyXT0iVW5pY29kZVJhbmdlIiwoSGk9JGl8fCgkaT17fSkpW0hpLk1peGluPTBdPSJNaXhpbiIsSGlbSGkuUnVsZT0xXT0iUnVsZSIsSGlbSGkuVmFyaWFibGU9Ml09IlZhcmlhYmxlIixIaVtIaS5GdW5jdGlvbj0zXT0iRnVuY3Rpb24iLEhpW0hpLktleWZyYW1lPTRdPSJLZXlmcmFtZSIsSGlbSGkuVW5rbm93bj01XT0iVW5rbm93biIsSGlbSGkuTW9kdWxlPTZdPSJNb2R1bGUiLEhpW0hpLkZvcndhcmQ9N109IkZvcndhcmQiLEhpW0hpLkZvcndhcmRWaXNpYmlsaXR5PThdPSJGb3J3YXJkVmlzaWJpbGl0eSI7dmFyIFlpPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQsbil7dm9pZCAwPT09ZSYmKGU9LTEpLHZvaWQgMD09PXQmJih0PS0xKSx0aGlzLnBhcmVudD1udWxsLHRoaXMub2Zmc2V0PWUsdGhpcy5sZW5ndGg9dCxuJiYodGhpcy5ub2RlVHlwZT1uKX1yZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJlbmQiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5vZmZzZXQrdGhpcy5sZW5ndGh9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJ0eXBlIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubm9kZVR5cGV8fGppLlVuZGVmaW5lZH0sc2V0OmZ1bmN0aW9uKGUpe3RoaXMubm9kZVR5cGU9ZX0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxlLnByb3RvdHlwZS5nZXRUZXh0UHJvdmlkZXI9ZnVuY3Rpb24oKXtmb3IodmFyIGU9dGhpcztlJiYhZS50ZXh0UHJvdmlkZXI7KWU9ZS5wYXJlbnQ7cmV0dXJuIGU/ZS50ZXh0UHJvdmlkZXI6ZnVuY3Rpb24oKXtyZXR1cm4idW5rbm93biJ9fSxlLnByb3RvdHlwZS5nZXRUZXh0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0VGV4dFByb3ZpZGVyKCkodGhpcy5vZmZzZXQsdGhpcy5sZW5ndGgpfSxlLnByb3RvdHlwZS5tYXRjaGVzPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmxlbmd0aD09PWUubGVuZ3RoJiZ0aGlzLmdldFRleHRQcm92aWRlcigpKHRoaXMub2Zmc2V0LHRoaXMubGVuZ3RoKT09PWV9LGUucHJvdG90eXBlLnN0YXJ0c1dpdGg9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMubGVuZ3RoPj1lLmxlbmd0aCYmdGhpcy5nZXRUZXh0UHJvdmlkZXIoKSh0aGlzLm9mZnNldCxlLmxlbmd0aCk9PT1lfSxlLnByb3RvdHlwZS5lbmRzV2l0aD1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5sZW5ndGg+PWUubGVuZ3RoJiZ0aGlzLmdldFRleHRQcm92aWRlcigpKHRoaXMuZW5kLWUubGVuZ3RoLGUubGVuZ3RoKT09PWV9LGUucHJvdG90eXBlLmFjY2VwdD1mdW5jdGlvbihlKXtpZihlKHRoaXMpJiZ0aGlzLmNoaWxkcmVuKWZvcih2YXIgdD0wLG49dGhpcy5jaGlsZHJlbjt0PG4ubGVuZ3RoO3QrKyl7blt0XS5hY2NlcHQoZSl9fSxlLnByb3RvdHlwZS5hY2NlcHRWaXNpdG9yPWZ1bmN0aW9uKGUpe3RoaXMuYWNjZXB0KGUudmlzaXROb2RlLmJpbmQoZSkpfSxlLnByb3RvdHlwZS5hZG9wdENoaWxkPWZ1bmN0aW9uKGUsdCl7aWYodm9pZCAwPT09dCYmKHQ9LTEpLGUucGFyZW50JiZlLnBhcmVudC5jaGlsZHJlbil7dmFyIG49ZS5wYXJlbnQuY2hpbGRyZW4uaW5kZXhPZihlKTtuPj0wJiZlLnBhcmVudC5jaGlsZHJlbi5zcGxpY2UobiwxKX1lLnBhcmVudD10aGlzO3ZhciByPXRoaXMuY2hpbGRyZW47cmV0dXJuIHJ8fChyPXRoaXMuY2hpbGRyZW49W10pLC0xIT09dD9yLnNwbGljZSh0LDAsZSk6ci5wdXNoKGUpLGV9LGUucHJvdG90eXBlLmF0dGFjaFRvPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHZvaWQgMD09PXQmJih0PS0xKSxlJiZlLmFkb3B0Q2hpbGQodGhpcyx0KSx0aGlzfSxlLnByb3RvdHlwZS5jb2xsZWN0SXNzdWVzPWZ1bmN0aW9uKGUpe3RoaXMuaXNzdWVzJiZlLnB1c2guYXBwbHkoZSx0aGlzLmlzc3Vlcyl9LGUucHJvdG90eXBlLmFkZElzc3VlPWZ1bmN0aW9uKGUpe3RoaXMuaXNzdWVzfHwodGhpcy5pc3N1ZXM9W10pLHRoaXMuaXNzdWVzLnB1c2goZSl9LGUucHJvdG90eXBlLmhhc0lzc3VlPWZ1bmN0aW9uKGUpe3JldHVybiBBcnJheS5pc0FycmF5KHRoaXMuaXNzdWVzKSYmdGhpcy5pc3N1ZXMuc29tZSgoZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0UnVsZSgpPT09ZX0pKX0sZS5wcm90b3R5cGUuaXNFcnJvbmVvdXM9ZnVuY3Rpb24oZSl7cmV0dXJuIHZvaWQgMD09PWUmJihlPSExKSwhISh0aGlzLmlzc3VlcyYmdGhpcy5pc3N1ZXMubGVuZ3RoPjApfHxlJiZBcnJheS5pc0FycmF5KHRoaXMuY2hpbGRyZW4pJiZ0aGlzLmNoaWxkcmVuLnNvbWUoKGZ1bmN0aW9uKGUpe3JldHVybiBlLmlzRXJyb25lb3VzKCEwKX0pKX0sZS5wcm90b3R5cGUuc2V0Tm9kZT1mdW5jdGlvbihlLHQsbil7cmV0dXJuIHZvaWQgMD09PW4mJihuPS0xKSwhIXQmJih0LmF0dGFjaFRvKHRoaXMsbiksdGhpc1tlXT10LCEwKX0sZS5wcm90b3R5cGUuYWRkQ2hpbGQ9ZnVuY3Rpb24oZSl7cmV0dXJuISFlJiYodGhpcy5jaGlsZHJlbnx8KHRoaXMuY2hpbGRyZW49W10pLGUuYXR0YWNoVG8odGhpcyksdGhpcy51cGRhdGVPZmZzZXRBbmRMZW5ndGgoZSksITApfSxlLnByb3RvdHlwZS51cGRhdGVPZmZzZXRBbmRMZW5ndGg9ZnVuY3Rpb24oZSl7KGUub2Zmc2V0PHRoaXMub2Zmc2V0fHwtMT09PXRoaXMub2Zmc2V0KSYmKHRoaXMub2Zmc2V0PWUub2Zmc2V0KTt2YXIgdD1lLmVuZDsodD50aGlzLmVuZHx8LTE9PT10aGlzLmxlbmd0aCkmJih0aGlzLmxlbmd0aD10LXRoaXMub2Zmc2V0KX0sZS5wcm90b3R5cGUuaGFzQ2hpbGRyZW49ZnVuY3Rpb24oKXtyZXR1cm4hIXRoaXMuY2hpbGRyZW4mJnRoaXMuY2hpbGRyZW4ubGVuZ3RoPjB9LGUucHJvdG90eXBlLmdldENoaWxkcmVuPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2hpbGRyZW4/dGhpcy5jaGlsZHJlbi5zbGljZSgwKTpbXX0sZS5wcm90b3R5cGUuZ2V0Q2hpbGQ9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuY2hpbGRyZW4mJmU8dGhpcy5jaGlsZHJlbi5sZW5ndGg/dGhpcy5jaGlsZHJlbltlXTpudWxsfSxlLnByb3RvdHlwZS5hZGRDaGlsZHJlbj1mdW5jdGlvbihlKXtmb3IodmFyIHQ9MCxuPWU7dDxuLmxlbmd0aDt0Kyspe3ZhciByPW5bdF07dGhpcy5hZGRDaGlsZChyKX19LGUucHJvdG90eXBlLmZpbmRGaXJzdENoaWxkQmVmb3JlT2Zmc2V0PWZ1bmN0aW9uKGUpe2lmKHRoaXMuY2hpbGRyZW4pZm9yKHZhciB0PW51bGwsbj10aGlzLmNoaWxkcmVuLmxlbmd0aC0xO24+PTA7bi0tKWlmKCh0PXRoaXMuY2hpbGRyZW5bbl0pLm9mZnNldDw9ZSlyZXR1cm4gdDtyZXR1cm4gbnVsbH0sZS5wcm90b3R5cGUuZmluZENoaWxkQXRPZmZzZXQ9ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLmZpbmRGaXJzdENoaWxkQmVmb3JlT2Zmc2V0KGUpO3JldHVybiBuJiZuLmVuZD49ZT90JiZuLmZpbmRDaGlsZEF0T2Zmc2V0KGUsITApfHxuOm51bGx9LGUucHJvdG90eXBlLmVuY2xvc2VzPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLm9mZnNldDw9ZS5vZmZzZXQmJnRoaXMub2Zmc2V0K3RoaXMubGVuZ3RoPj1lLm9mZnNldCtlLmxlbmd0aH0sZS5wcm90b3R5cGUuZ2V0UGFyZW50PWZ1bmN0aW9uKCl7Zm9yKHZhciBlPXRoaXMucGFyZW50O2UgaW5zdGFuY2VvZiBaaTspZT1lLnBhcmVudDtyZXR1cm4gZX0sZS5wcm90b3R5cGUuZmluZFBhcmVudD1mdW5jdGlvbihlKXtmb3IodmFyIHQ9dGhpczt0JiZ0LnR5cGUhPT1lOyl0PXQucGFyZW50O3JldHVybiB0fSxlLnByb3RvdHlwZS5maW5kQVBhcmVudD1mdW5jdGlvbigpe2Zvcih2YXIgZT1bXSx0PTA7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyllW3RdPWFyZ3VtZW50c1t0XTtmb3IodmFyIG49dGhpcztuJiYhZS5zb21lKChmdW5jdGlvbihlKXtyZXR1cm4gbi50eXBlPT09ZX0pKTspbj1uLnBhcmVudDtyZXR1cm4gbn0sZS5wcm90b3R5cGUuc2V0RGF0YT1mdW5jdGlvbihlLHQpe3RoaXMub3B0aW9uc3x8KHRoaXMub3B0aW9ucz17fSksdGhpcy5vcHRpb25zW2VdPXR9LGUucHJvdG90eXBlLmdldERhdGE9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMub3B0aW9ucyYmdGhpcy5vcHRpb25zLmhhc093blByb3BlcnR5KGUpP3RoaXMub3B0aW9uc1tlXTpudWxsfSxlfSgpLFppPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQodCxuKXt2b2lkIDA9PT1uJiYobj0tMSk7dmFyIHI9ZS5jYWxsKHRoaXMsLTEsLTEpfHx0aGlzO3JldHVybiByLmF0dGFjaFRvKHQsbiksci5vZmZzZXQ9LTEsci5sZW5ndGg9LTEscn1yZXR1cm4gR2kodCxlKSx0fShZaSksUWk9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCh0LG4pe3JldHVybiBlLmNhbGwodGhpcyx0LG4pfHx0aGlzfXJldHVybiBHaSh0LGUpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwidHlwZSIse2dldDpmdW5jdGlvbigpe3JldHVybiBqaS5Vbmljb2RlUmFuZ2V9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksdC5wcm90b3R5cGUuc2V0UmFuZ2VTdGFydD1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5zZXROb2RlKCJyYW5nZVN0YXJ0IixlKX0sdC5wcm90b3R5cGUuZ2V0UmFuZ2VTdGFydD1mdW5jdGlvbigpe3JldHVybiB0aGlzLnJhbmdlU3RhcnR9LHQucHJvdG90eXBlLnNldFJhbmdlRW5kPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnNldE5vZGUoInJhbmdlRW5kIixlKX0sdC5wcm90b3R5cGUuZ2V0UmFuZ2VFbmQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yYW5nZUVuZH0sdH0oWWkpLGVvPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQodCxuKXt2YXIgcj1lLmNhbGwodGhpcyx0LG4pfHx0aGlzO3JldHVybiByLmlzQ3VzdG9tUHJvcGVydHk9ITEscn1yZXR1cm4gR2kodCxlKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsInR5cGUiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gamkuSWRlbnRpZmllcn0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSx0LnByb3RvdHlwZS5jb250YWluc0ludGVycG9sYXRpb249ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5oYXNDaGlsZHJlbigpfSx0fShZaSksdG89ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCh0LG4pe3JldHVybiBlLmNhbGwodGhpcyx0LG4pfHx0aGlzfXJldHVybiBHaSh0LGUpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwidHlwZSIse2dldDpmdW5jdGlvbigpe3JldHVybiBqaS5TdHlsZXNoZWV0fSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLHR9KFlpKSxubz1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KHQsbil7cmV0dXJuIGUuY2FsbCh0aGlzLHQsbil8fHRoaXN9cmV0dXJuIEdpKHQsZSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJ0eXBlIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGppLkRlY2xhcmF0aW9uc30sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSx0fShZaSkscm89ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCh0LG4pe3JldHVybiBlLmNhbGwodGhpcyx0LG4pfHx0aGlzfXJldHVybiBHaSh0LGUpLHQucHJvdG90eXBlLmdldERlY2xhcmF0aW9ucz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmRlY2xhcmF0aW9uc30sdC5wcm90b3R5cGUuc2V0RGVjbGFyYXRpb25zPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnNldE5vZGUoImRlY2xhcmF0aW9ucyIsZSl9LHR9KFlpKSxpbz1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KHQsbil7cmV0dXJuIGUuY2FsbCh0aGlzLHQsbil8fHRoaXN9cmV0dXJuIEdpKHQsZSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJ0eXBlIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGppLlJ1bGVzZXR9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksdC5wcm90b3R5cGUuZ2V0U2VsZWN0b3JzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2VsZWN0b3JzfHwodGhpcy5zZWxlY3RvcnM9bmV3IFppKHRoaXMpKSx0aGlzLnNlbGVjdG9yc30sdC5wcm90b3R5cGUuaXNOZXN0ZWQ9ZnVuY3Rpb24oKXtyZXR1cm4hIXRoaXMucGFyZW50JiZudWxsIT09dGhpcy5wYXJlbnQuZmluZFBhcmVudChqaS5EZWNsYXJhdGlvbnMpfSx0fShybyksb289ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCh0LG4pe3JldHVybiBlLmNhbGwodGhpcyx0LG4pfHx0aGlzfXJldHVybiBHaSh0LGUpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwidHlwZSIse2dldDpmdW5jdGlvbigpe3JldHVybiBqaS5TZWxlY3Rvcn0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSx0fShZaSksc289ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCh0LG4pe3JldHVybiBlLmNhbGwodGhpcyx0LG4pfHx0aGlzfXJldHVybiBHaSh0LGUpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwidHlwZSIse2dldDpmdW5jdGlvbigpe3JldHVybiBqaS5TaW1wbGVTZWxlY3Rvcn0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSx0fShZaSk7IWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQodCxuKXtyZXR1cm4gZS5jYWxsKHRoaXMsdCxuKXx8dGhpc31HaSh0LGUpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwidHlwZSIse2dldDpmdW5jdGlvbigpe3JldHVybiBqaS5BdEFwcGx5UnVsZX0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSx0LnByb3RvdHlwZS5zZXRJZGVudGlmaWVyPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnNldE5vZGUoImlkZW50aWZpZXIiLGUsMCl9LHQucHJvdG90eXBlLmdldElkZW50aWZpZXI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pZGVudGlmaWVyfSx0LnByb3RvdHlwZS5nZXROYW1lPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaWRlbnRpZmllcj90aGlzLmlkZW50aWZpZXIuZ2V0VGV4dCgpOiIifX0oWWkpO3ZhciBhbz1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KHQsbil7cmV0dXJuIGUuY2FsbCh0aGlzLHQsbil8fHRoaXN9cmV0dXJuIEdpKHQsZSksdH0oWWkpLGxvPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQodCxuKXtyZXR1cm4gZS5jYWxsKHRoaXMsdCxuKXx8dGhpc31yZXR1cm4gR2kodCxlKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsInR5cGUiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gamkuQ3VzdG9tUHJvcGVydHlTZXR9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksdH0ocm8pLGNvPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQodCxuKXt2YXIgcj1lLmNhbGwodGhpcyx0LG4pfHx0aGlzO3JldHVybiByLnByb3BlcnR5PW51bGwscn1yZXR1cm4gR2kodCxlKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsInR5cGUiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gamkuRGVjbGFyYXRpb259LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksdC5wcm90b3R5cGUuc2V0UHJvcGVydHk9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuc2V0Tm9kZSgicHJvcGVydHkiLGUpfSx0LnByb3RvdHlwZS5nZXRQcm9wZXJ0eT1mdW5jdGlvbigpe3JldHVybiB0aGlzLnByb3BlcnR5fSx0LnByb3RvdHlwZS5nZXRGdWxsUHJvcGVydHlOYW1lPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5wcm9wZXJ0eT90aGlzLnByb3BlcnR5LmdldE5hbWUoKToidW5rbm93biI7aWYodGhpcy5wYXJlbnQgaW5zdGFuY2VvZiBubyYmdGhpcy5wYXJlbnQuZ2V0UGFyZW50KClpbnN0YW5jZW9mIGtvKXt2YXIgbj10aGlzLnBhcmVudC5nZXRQYXJlbnQoKS5nZXRQYXJlbnQoKTtpZihuIGluc3RhbmNlb2YgdClyZXR1cm4gbi5nZXRGdWxsUHJvcGVydHlOYW1lKCkrZX1yZXR1cm4gZX0sdC5wcm90b3R5cGUuZ2V0Tm9uUHJlZml4ZWRQcm9wZXJ0eU5hbWU9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmdldEZ1bGxQcm9wZXJ0eU5hbWUoKTtpZihlJiYiLSI9PT1lLmNoYXJBdCgwKSl7dmFyIHQ9ZS5pbmRleE9mKCItIiwxKTtpZigtMSE9PXQpcmV0dXJuIGUuc3Vic3RyaW5nKHQrMSl9cmV0dXJuIGV9LHQucHJvdG90eXBlLnNldFZhbHVlPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnNldE5vZGUoInZhbHVlIixlKX0sdC5wcm90b3R5cGUuZ2V0VmFsdWU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy52YWx1ZX0sdC5wcm90b3R5cGUuc2V0TmVzdGVkUHJvcGVydGllcz1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5zZXROb2RlKCJuZXN0ZWRQcm9wZXJ0aWVzIixlKX0sdC5wcm90b3R5cGUuZ2V0TmVzdGVkUHJvcGVydGllcz1mdW5jdGlvbigpe3JldHVybiB0aGlzLm5lc3RlZFByb3BlcnRpZXN9LHR9KGFvKSxobz1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KHQsbil7cmV0dXJuIGUuY2FsbCh0aGlzLHQsbil8fHRoaXN9cmV0dXJuIEdpKHQsZSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJ0eXBlIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGppLkN1c3RvbVByb3BlcnR5RGVjbGFyYXRpb259LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksdC5wcm90b3R5cGUuc2V0UHJvcGVydHlTZXQ9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuc2V0Tm9kZSgicHJvcGVydHlTZXQiLGUpfSx0LnByb3RvdHlwZS5nZXRQcm9wZXJ0eVNldD1mdW5jdGlvbigpe3JldHVybiB0aGlzLnByb3BlcnR5U2V0fSx0fShjbykscG89ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCh0LG4pe3JldHVybiBlLmNhbGwodGhpcyx0LG4pfHx0aGlzfXJldHVybiBHaSh0LGUpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwidHlwZSIse2dldDpmdW5jdGlvbigpe3JldHVybiBqaS5Qcm9wZXJ0eX0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSx0LnByb3RvdHlwZS5zZXRJZGVudGlmaWVyPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnNldE5vZGUoImlkZW50aWZpZXIiLGUpfSx0LnByb3RvdHlwZS5nZXRJZGVudGlmaWVyPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaWRlbnRpZmllcn0sdC5wcm90b3R5cGUuZ2V0TmFtZT1mdW5jdGlvbigpe3JldHVybiBlPXRoaXMuZ2V0VGV4dCgpLCh0PS9bX1wrXSskLy5leGVjKGUpKSYmdFswXS5sZW5ndGg/ZS5zdWJzdHIoMCxlLmxlbmd0aC10WzBdLmxlbmd0aCk6ZTt2YXIgZSx0fSx0LnByb3RvdHlwZS5pc0N1c3RvbVByb3BlcnR5PWZ1bmN0aW9uKCl7cmV0dXJuISF0aGlzLmlkZW50aWZpZXImJnRoaXMuaWRlbnRpZmllci5pc0N1c3RvbVByb3BlcnR5fSx0fShZaSksdW89ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCh0LG4pe3JldHVybiBlLmNhbGwodGhpcyx0LG4pfHx0aGlzfXJldHVybiBHaSh0LGUpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwidHlwZSIse2dldDpmdW5jdGlvbigpe3JldHVybiBqaS5GdW5jdGlvbn0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSx0LnByb3RvdHlwZS5zZXRJZGVudGlmaWVyPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnNldE5vZGUoImlkZW50aWZpZXIiLGUsMCl9LHQucHJvdG90eXBlLmdldElkZW50aWZpZXI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pZGVudGlmaWVyfSx0LnByb3RvdHlwZS5nZXROYW1lPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaWRlbnRpZmllcj90aGlzLmlkZW50aWZpZXIuZ2V0VGV4dCgpOiIifSx0fShmdW5jdGlvbihlKXtmdW5jdGlvbiB0KHQsbil7cmV0dXJuIGUuY2FsbCh0aGlzLHQsbil8fHRoaXN9cmV0dXJuIEdpKHQsZSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJ0eXBlIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGppLkludm9jYXRpb259LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksdC5wcm90b3R5cGUuZ2V0QXJndW1lbnRzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYXJndW1lbnRzfHwodGhpcy5hcmd1bWVudHM9bmV3IFppKHRoaXMpKSx0aGlzLmFyZ3VtZW50c30sdH0oWWkpKSxtbz1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KHQsbil7cmV0dXJuIGUuY2FsbCh0aGlzLHQsbil8fHRoaXN9cmV0dXJuIEdpKHQsZSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJ0eXBlIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGppLkZ1bmN0aW9uUGFyYW1ldGVyfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLHQucHJvdG90eXBlLnNldElkZW50aWZpZXI9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuc2V0Tm9kZSgiaWRlbnRpZmllciIsZSwwKX0sdC5wcm90b3R5cGUuZ2V0SWRlbnRpZmllcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLmlkZW50aWZpZXJ9LHQucHJvdG90eXBlLmdldE5hbWU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pZGVudGlmaWVyP3RoaXMuaWRlbnRpZmllci5nZXRUZXh0KCk6IiJ9LHQucHJvdG90eXBlLnNldERlZmF1bHRWYWx1ZT1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5zZXROb2RlKCJkZWZhdWx0VmFsdWUiLGUsMCl9LHQucHJvdG90eXBlLmdldERlZmF1bHRWYWx1ZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmRlZmF1bHRWYWx1ZX0sdH0oWWkpLGZvPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQodCxuKXtyZXR1cm4gZS5jYWxsKHRoaXMsdCxuKXx8dGhpc31yZXR1cm4gR2kodCxlKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsInR5cGUiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gamkuRnVuY3Rpb25Bcmd1bWVudH0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSx0LnByb3RvdHlwZS5zZXRJZGVudGlmaWVyPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnNldE5vZGUoImlkZW50aWZpZXIiLGUsMCl9LHQucHJvdG90eXBlLmdldElkZW50aWZpZXI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pZGVudGlmaWVyfSx0LnByb3RvdHlwZS5nZXROYW1lPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaWRlbnRpZmllcj90aGlzLmlkZW50aWZpZXIuZ2V0VGV4dCgpOiIifSx0LnByb3RvdHlwZS5zZXRWYWx1ZT1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5zZXROb2RlKCJ2YWx1ZSIsZSwwKX0sdC5wcm90b3R5cGUuZ2V0VmFsdWU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy52YWx1ZX0sdH0oWWkpLGdvPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQodCxuKXtyZXR1cm4gZS5jYWxsKHRoaXMsdCxuKXx8dGhpc31yZXR1cm4gR2kodCxlKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsInR5cGUiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gamkuSWZ9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksdC5wcm90b3R5cGUuc2V0RXhwcmVzc2lvbj1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5zZXROb2RlKCJleHByZXNzaW9uIixlLDApfSx0LnByb3RvdHlwZS5zZXRFbHNlQ2xhdXNlPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnNldE5vZGUoImVsc2VDbGF1c2UiLGUpfSx0fShybyksYm89ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCh0LG4pe3JldHVybiBlLmNhbGwodGhpcyx0LG4pfHx0aGlzfXJldHVybiBHaSh0LGUpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwidHlwZSIse2dldDpmdW5jdGlvbigpe3JldHVybiBqaS5Gb3J9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksdC5wcm90b3R5cGUuc2V0VmFyaWFibGU9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuc2V0Tm9kZSgidmFyaWFibGUiLGUsMCl9LHR9KHJvKSx2bz1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KHQsbil7cmV0dXJuIGUuY2FsbCh0aGlzLHQsbil8fHRoaXN9cmV0dXJuIEdpKHQsZSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJ0eXBlIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGppLkVhY2h9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksdC5wcm90b3R5cGUuZ2V0VmFyaWFibGVzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudmFyaWFibGVzfHwodGhpcy52YXJpYWJsZXM9bmV3IFppKHRoaXMpKSx0aGlzLnZhcmlhYmxlc30sdH0ocm8pLHlvPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQodCxuKXtyZXR1cm4gZS5jYWxsKHRoaXMsdCxuKXx8dGhpc31yZXR1cm4gR2kodCxlKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsInR5cGUiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gamkuV2hpbGV9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksdH0ocm8pLHdvPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQodCxuKXtyZXR1cm4gZS5jYWxsKHRoaXMsdCxuKXx8dGhpc31yZXR1cm4gR2kodCxlKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsInR5cGUiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gamkuRWxzZX0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSx0fShybykseG89ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCh0LG4pe3JldHVybiBlLmNhbGwodGhpcyx0LG4pfHx0aGlzfXJldHVybiBHaSh0LGUpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwidHlwZSIse2dldDpmdW5jdGlvbigpe3JldHVybiBqaS5GdW5jdGlvbkRlY2xhcmF0aW9ufSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLHQucHJvdG90eXBlLnNldElkZW50aWZpZXI9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuc2V0Tm9kZSgiaWRlbnRpZmllciIsZSwwKX0sdC5wcm90b3R5cGUuZ2V0SWRlbnRpZmllcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLmlkZW50aWZpZXJ9LHQucHJvdG90eXBlLmdldE5hbWU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pZGVudGlmaWVyP3RoaXMuaWRlbnRpZmllci5nZXRUZXh0KCk6IiJ9LHQucHJvdG90eXBlLmdldFBhcmFtZXRlcnM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wYXJhbWV0ZXJzfHwodGhpcy5wYXJhbWV0ZXJzPW5ldyBaaSh0aGlzKSksdGhpcy5wYXJhbWV0ZXJzfSx0fShybyksU289ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCh0LG4pe3JldHVybiBlLmNhbGwodGhpcyx0LG4pfHx0aGlzfXJldHVybiBHaSh0LGUpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwidHlwZSIse2dldDpmdW5jdGlvbigpe3JldHVybiBqaS5WaWV3UG9ydH0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSx0fShybyksQ289ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCh0LG4pe3JldHVybiBlLmNhbGwodGhpcyx0LG4pfHx0aGlzfXJldHVybiBHaSh0LGUpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwidHlwZSIse2dldDpmdW5jdGlvbigpe3JldHVybiBqaS5Gb250RmFjZX0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSx0fShybyksa289ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCh0LG4pe3JldHVybiBlLmNhbGwodGhpcyx0LG4pfHx0aGlzfXJldHVybiBHaSh0LGUpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwidHlwZSIse2dldDpmdW5jdGlvbigpe3JldHVybiBqaS5OZXN0ZWRQcm9wZXJ0aWVzfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLHR9KHJvKSxfbz1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KHQsbil7cmV0dXJuIGUuY2FsbCh0aGlzLHQsbil8fHRoaXN9cmV0dXJuIEdpKHQsZSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJ0eXBlIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGppLktleWZyYW1lfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLHQucHJvdG90eXBlLnNldEtleXdvcmQ9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuc2V0Tm9kZSgia2V5d29yZCIsZSwwKX0sdC5wcm90b3R5cGUuZ2V0S2V5d29yZD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmtleXdvcmR9LHQucHJvdG90eXBlLnNldElkZW50aWZpZXI9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuc2V0Tm9kZSgiaWRlbnRpZmllciIsZSwwKX0sdC5wcm90b3R5cGUuZ2V0SWRlbnRpZmllcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLmlkZW50aWZpZXJ9LHQucHJvdG90eXBlLmdldE5hbWU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pZGVudGlmaWVyP3RoaXMuaWRlbnRpZmllci5nZXRUZXh0KCk6IiJ9LHR9KHJvKSxFbz1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KHQsbil7cmV0dXJuIGUuY2FsbCh0aGlzLHQsbil8fHRoaXN9cmV0dXJuIEdpKHQsZSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJ0eXBlIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGppLktleWZyYW1lU2VsZWN0b3J9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksdH0ocm8pLFJvPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQodCxuKXtyZXR1cm4gZS5jYWxsKHRoaXMsdCxuKXx8dGhpc31yZXR1cm4gR2kodCxlKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsInR5cGUiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gamkuSW1wb3J0fSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLHQucHJvdG90eXBlLnNldE1lZGlhbGlzdD1mdW5jdGlvbihlKXtyZXR1cm4hIWUmJihlLmF0dGFjaFRvKHRoaXMpLCEwKX0sdH0oWWkpLEZvPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoKXtyZXR1cm4gbnVsbCE9PWUmJmUuYXBwbHkodGhpcyxhcmd1bWVudHMpfHx0aGlzfXJldHVybiBHaSh0LGUpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwidHlwZSIse2dldDpmdW5jdGlvbigpe3JldHVybiBqaS5Vc2V9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksdC5wcm90b3R5cGUuZ2V0UGFyYW1ldGVycz1mdW5jdGlvbigpe3JldHVybiB0aGlzLnBhcmFtZXRlcnN8fCh0aGlzLnBhcmFtZXRlcnM9bmV3IFppKHRoaXMpKSx0aGlzLnBhcmFtZXRlcnN9LHQucHJvdG90eXBlLnNldElkZW50aWZpZXI9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuc2V0Tm9kZSgiaWRlbnRpZmllciIsZSwwKX0sdC5wcm90b3R5cGUuZ2V0SWRlbnRpZmllcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLmlkZW50aWZpZXJ9LHR9KFlpKSxObz1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KCl7cmV0dXJuIG51bGwhPT1lJiZlLmFwcGx5KHRoaXMsYXJndW1lbnRzKXx8dGhpc31yZXR1cm4gR2kodCxlKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsInR5cGUiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gamkuTW9kdWxlQ29uZmlndXJhdGlvbn0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSx0LnByb3RvdHlwZS5zZXRJZGVudGlmaWVyPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnNldE5vZGUoImlkZW50aWZpZXIiLGUsMCl9LHQucHJvdG90eXBlLmdldElkZW50aWZpZXI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pZGVudGlmaWVyfSx0LnByb3RvdHlwZS5nZXROYW1lPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaWRlbnRpZmllcj90aGlzLmlkZW50aWZpZXIuZ2V0VGV4dCgpOiIifSx0LnByb3RvdHlwZS5zZXRWYWx1ZT1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5zZXROb2RlKCJ2YWx1ZSIsZSwwKX0sdC5wcm90b3R5cGUuZ2V0VmFsdWU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy52YWx1ZX0sdH0oWWkpLERvPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoKXtyZXR1cm4gbnVsbCE9PWUmJmUuYXBwbHkodGhpcyxhcmd1bWVudHMpfHx0aGlzfXJldHVybiBHaSh0LGUpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwidHlwZSIse2dldDpmdW5jdGlvbigpe3JldHVybiBqaS5Gb3J3YXJkfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLHQucHJvdG90eXBlLnNldElkZW50aWZpZXI9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuc2V0Tm9kZSgiaWRlbnRpZmllciIsZSwwKX0sdC5wcm90b3R5cGUuZ2V0SWRlbnRpZmllcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLmlkZW50aWZpZXJ9LHQucHJvdG90eXBlLmdldE1lbWJlcnM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tZW1iZXJzfHwodGhpcy5tZW1iZXJzPW5ldyBaaSh0aGlzKSksdGhpcy5tZW1iZXJzfSx0LnByb3RvdHlwZS5nZXRQYXJhbWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucGFyYW1ldGVyc3x8KHRoaXMucGFyYW1ldGVycz1uZXcgWmkodGhpcykpLHRoaXMucGFyYW1ldGVyc30sdH0oWWkpLFRvPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoKXtyZXR1cm4gbnVsbCE9PWUmJmUuYXBwbHkodGhpcyxhcmd1bWVudHMpfHx0aGlzfXJldHVybiBHaSh0LGUpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwidHlwZSIse2dldDpmdW5jdGlvbigpe3JldHVybiBqaS5Gb3J3YXJkVmlzaWJpbGl0eX0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSx0LnByb3RvdHlwZS5zZXRJZGVudGlmaWVyPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnNldE5vZGUoImlkZW50aWZpZXIiLGUsMCl9LHQucHJvdG90eXBlLmdldElkZW50aWZpZXI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pZGVudGlmaWVyfSx0fShZaSksQW89ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCh0LG4pe3JldHVybiBlLmNhbGwodGhpcyx0LG4pfHx0aGlzfXJldHVybiBHaSh0LGUpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwidHlwZSIse2dldDpmdW5jdGlvbigpe3JldHVybiBqaS5OYW1lc3BhY2V9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksdH0oWWkpLE1vPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQodCxuKXtyZXR1cm4gZS5jYWxsKHRoaXMsdCxuKXx8dGhpc31yZXR1cm4gR2kodCxlKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsInR5cGUiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gamkuTWVkaWF9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksdH0ocm8pLHpvPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQodCxuKXtyZXR1cm4gZS5jYWxsKHRoaXMsdCxuKXx8dGhpc31yZXR1cm4gR2kodCxlKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsInR5cGUiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gamkuU3VwcG9ydHN9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksdH0ocm8pLElvPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQodCxuKXtyZXR1cm4gZS5jYWxsKHRoaXMsdCxuKXx8dGhpc31yZXR1cm4gR2kodCxlKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsInR5cGUiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gamkuRG9jdW1lbnR9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksdH0ocm8pLFBvPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQodCxuKXtyZXR1cm4gZS5jYWxsKHRoaXMsdCxuKXx8dGhpc31yZXR1cm4gR2kodCxlKSx0LnByb3RvdHlwZS5nZXRNZWRpdW1zPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWVkaXVtc3x8KHRoaXMubWVkaXVtcz1uZXcgWmkodGhpcykpLHRoaXMubWVkaXVtc30sdH0oWWkpLExvPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQodCxuKXtyZXR1cm4gZS5jYWxsKHRoaXMsdCxuKXx8dGhpc31yZXR1cm4gR2kodCxlKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsInR5cGUiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gamkuTWVkaWFRdWVyeX0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSx0fShZaSksT289ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCh0LG4pe3JldHVybiBlLmNhbGwodGhpcyx0LG4pfHx0aGlzfXJldHVybiBHaSh0LGUpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwidHlwZSIse2dldDpmdW5jdGlvbigpe3JldHVybiBqaS5NZWRpYUNvbmRpdGlvbn0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSx0fShZaSksV289ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCh0LG4pe3JldHVybiBlLmNhbGwodGhpcyx0LG4pfHx0aGlzfXJldHVybiBHaSh0LGUpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwidHlwZSIse2dldDpmdW5jdGlvbigpe3JldHVybiBqaS5NZWRpYUZlYXR1cmV9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksdH0oWWkpLFZvPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQodCxuKXtyZXR1cm4gZS5jYWxsKHRoaXMsdCxuKXx8dGhpc31yZXR1cm4gR2kodCxlKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsInR5cGUiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gamkuU3VwcG9ydHNDb25kaXRpb259LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksdH0oWWkpLFVvPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQodCxuKXtyZXR1cm4gZS5jYWxsKHRoaXMsdCxuKXx8dGhpc31yZXR1cm4gR2kodCxlKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsInR5cGUiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gamkuUGFnZX0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSx0fShybyksQm89ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCh0LG4pe3JldHVybiBlLmNhbGwodGhpcyx0LG4pfHx0aGlzfXJldHVybiBHaSh0LGUpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwidHlwZSIse2dldDpmdW5jdGlvbigpe3JldHVybiBqaS5QYWdlQm94TWFyZ2luQm94fSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLHR9KHJvKSxLbz1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KHQsbil7cmV0dXJuIGUuY2FsbCh0aGlzLHQsbil8fHRoaXN9cmV0dXJuIEdpKHQsZSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJ0eXBlIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGppLkV4cHJlc3Npb259LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksdH0oWWkpLGpvPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQodCxuKXtyZXR1cm4gZS5jYWxsKHRoaXMsdCxuKXx8dGhpc31yZXR1cm4gR2kodCxlKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsInR5cGUiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gamkuQmluYXJ5RXhwcmVzc2lvbn0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSx0LnByb3RvdHlwZS5zZXRMZWZ0PWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnNldE5vZGUoImxlZnQiLGUpfSx0LnByb3RvdHlwZS5nZXRMZWZ0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubGVmdH0sdC5wcm90b3R5cGUuc2V0UmlnaHQ9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuc2V0Tm9kZSgicmlnaHQiLGUpfSx0LnByb3RvdHlwZS5nZXRSaWdodD1mdW5jdGlvbigpe3JldHVybiB0aGlzLnJpZ2h0fSx0LnByb3RvdHlwZS5zZXRPcGVyYXRvcj1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5zZXROb2RlKCJvcGVyYXRvciIsZSl9LHQucHJvdG90eXBlLmdldE9wZXJhdG9yPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMub3BlcmF0b3J9LHR9KFlpKSxxbz1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KHQsbil7cmV0dXJuIGUuY2FsbCh0aGlzLHQsbil8fHRoaXN9cmV0dXJuIEdpKHQsZSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJ0eXBlIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGppLlRlcm19LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksdC5wcm90b3R5cGUuc2V0T3BlcmF0b3I9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuc2V0Tm9kZSgib3BlcmF0b3IiLGUpfSx0LnByb3RvdHlwZS5nZXRPcGVyYXRvcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLm9wZXJhdG9yfSx0LnByb3RvdHlwZS5zZXRFeHByZXNzaW9uPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnNldE5vZGUoImV4cHJlc3Npb24iLGUpfSx0LnByb3RvdHlwZS5nZXRFeHByZXNzaW9uPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZXhwcmVzc2lvbn0sdH0oWWkpLCRvPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQodCxuKXtyZXR1cm4gZS5jYWxsKHRoaXMsdCxuKXx8dGhpc31yZXR1cm4gR2kodCxlKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsInR5cGUiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gamkuQXR0cmlidXRlU2VsZWN0b3J9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksdC5wcm90b3R5cGUuc2V0TmFtZXNwYWNlUHJlZml4PWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnNldE5vZGUoIm5hbWVzcGFjZVByZWZpeCIsZSl9LHQucHJvdG90eXBlLmdldE5hbWVzcGFjZVByZWZpeD1mdW5jdGlvbigpe3JldHVybiB0aGlzLm5hbWVzcGFjZVByZWZpeH0sdC5wcm90b3R5cGUuc2V0SWRlbnRpZmllcj1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5zZXROb2RlKCJpZGVudGlmaWVyIixlKX0sdC5wcm90b3R5cGUuZ2V0SWRlbnRpZmllcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLmlkZW50aWZpZXJ9LHQucHJvdG90eXBlLnNldE9wZXJhdG9yPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnNldE5vZGUoIm9wZXJhdG9yIixlKX0sdC5wcm90b3R5cGUuZ2V0T3BlcmF0b3I9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5vcGVyYXRvcn0sdC5wcm90b3R5cGUuc2V0VmFsdWU9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuc2V0Tm9kZSgidmFsdWUiLGUpfSx0LnByb3RvdHlwZS5nZXRWYWx1ZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLnZhbHVlfSx0fShZaSk7IWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQodCxuKXtyZXR1cm4gZS5jYWxsKHRoaXMsdCxuKXx8dGhpc31HaSh0LGUpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwidHlwZSIse2dldDpmdW5jdGlvbigpe3JldHVybiBqaS5PcGVyYXRvcn0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KX0oWWkpO3ZhciBIbyxHbyxKbz1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KHQsbil7cmV0dXJuIGUuY2FsbCh0aGlzLHQsbil8fHRoaXN9cmV0dXJuIEdpKHQsZSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJ0eXBlIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGppLkhleENvbG9yVmFsdWV9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksdH0oWWkpLFhvPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQodCxuKXtyZXR1cm4gZS5jYWxsKHRoaXMsdCxuKXx8dGhpc31yZXR1cm4gR2kodCxlKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsInR5cGUiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gamkuUmF0aW9WYWx1ZX0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSx0fShZaSksWW89Ii4iLmNoYXJDb2RlQXQoMCksWm89IjAiLmNoYXJDb2RlQXQoMCksUW89IjkiLmNoYXJDb2RlQXQoMCksZXM9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCh0LG4pe3JldHVybiBlLmNhbGwodGhpcyx0LG4pfHx0aGlzfXJldHVybiBHaSh0LGUpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwidHlwZSIse2dldDpmdW5jdGlvbigpe3JldHVybiBqaS5OdW1lcmljVmFsdWV9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksdC5wcm90b3R5cGUuZ2V0VmFsdWU9ZnVuY3Rpb24oKXtmb3IodmFyIGUsdD10aGlzLmdldFRleHQoKSxuPTAscj0wLGk9dC5sZW5ndGg7cjxpJiYoZT10LmNoYXJDb2RlQXQociksWm88PWUmJmU8PVFvfHxlPT09WW8pO3IrKyluKz0xO3JldHVybnt2YWx1ZTp0LnN1YnN0cmluZygwLG4pLHVuaXQ6bjx0Lmxlbmd0aD90LnN1YnN0cmluZyhuKTp2b2lkIDB9fSx0fShZaSksdHM9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCh0LG4pe3ZhciByPWUuY2FsbCh0aGlzLHQsbil8fHRoaXM7cmV0dXJuIHIudmFyaWFibGU9bnVsbCxyLnZhbHVlPW51bGwsci5uZWVkc1NlbWljb2xvbj0hMCxyfXJldHVybiBHaSh0LGUpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwidHlwZSIse2dldDpmdW5jdGlvbigpe3JldHVybiBqaS5WYXJpYWJsZURlY2xhcmF0aW9ufSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLHQucHJvdG90eXBlLnNldFZhcmlhYmxlPWZ1bmN0aW9uKGUpe3JldHVybiEhZSYmKGUuYXR0YWNoVG8odGhpcyksdGhpcy52YXJpYWJsZT1lLCEwKX0sdC5wcm90b3R5cGUuZ2V0VmFyaWFibGU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy52YXJpYWJsZX0sdC5wcm90b3R5cGUuZ2V0TmFtZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLnZhcmlhYmxlP3RoaXMudmFyaWFibGUuZ2V0TmFtZSgpOiIifSx0LnByb3RvdHlwZS5zZXRWYWx1ZT1mdW5jdGlvbihlKXtyZXR1cm4hIWUmJihlLmF0dGFjaFRvKHRoaXMpLHRoaXMudmFsdWU9ZSwhMCl9LHQucHJvdG90eXBlLmdldFZhbHVlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudmFsdWV9LHR9KGFvKSxucz1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KHQsbil7cmV0dXJuIGUuY2FsbCh0aGlzLHQsbil8fHRoaXN9cmV0dXJuIEdpKHQsZSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJ0eXBlIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGppLkludGVycG9sYXRpb259LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksdH0oWWkpLHJzPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQodCxuKXtyZXR1cm4gZS5jYWxsKHRoaXMsdCxuKXx8dGhpc31yZXR1cm4gR2kodCxlKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsInR5cGUiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gamkuVmFyaWFibGVOYW1lfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLHQucHJvdG90eXBlLmdldE5hbWU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRUZXh0KCl9LHR9KFlpKSxpcz1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KHQsbil7cmV0dXJuIGUuY2FsbCh0aGlzLHQsbil8fHRoaXN9cmV0dXJuIEdpKHQsZSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJ0eXBlIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGppLkV4dGVuZHNSZWZlcmVuY2V9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksdC5wcm90b3R5cGUuZ2V0U2VsZWN0b3JzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2VsZWN0b3JzfHwodGhpcy5zZWxlY3RvcnM9bmV3IFppKHRoaXMpKSx0aGlzLnNlbGVjdG9yc30sdH0oWWkpLG9zPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQodCxuKXtyZXR1cm4gZS5jYWxsKHRoaXMsdCxuKXx8dGhpc31yZXR1cm4gR2kodCxlKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsInR5cGUiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gamkuTWl4aW5Db250ZW50UmVmZXJlbmNlfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLHQucHJvdG90eXBlLmdldEFyZ3VtZW50cz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmFyZ3VtZW50c3x8KHRoaXMuYXJndW1lbnRzPW5ldyBaaSh0aGlzKSksdGhpcy5hcmd1bWVudHN9LHR9KFlpKSxzcz1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KHQsbil7cmV0dXJuIGUuY2FsbCh0aGlzLHQsbil8fHRoaXN9cmV0dXJuIEdpKHQsZSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJ0eXBlIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGppLk1peGluQ29udGVudFJlZmVyZW5jZX0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSx0LnByb3RvdHlwZS5nZXRQYXJhbWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucGFyYW1ldGVyc3x8KHRoaXMucGFyYW1ldGVycz1uZXcgWmkodGhpcykpLHRoaXMucGFyYW1ldGVyc30sdH0ocm8pLGFzPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQodCxuKXtyZXR1cm4gZS5jYWxsKHRoaXMsdCxuKXx8dGhpc31yZXR1cm4gR2kodCxlKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsInR5cGUiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gamkuTWl4aW5SZWZlcmVuY2V9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksdC5wcm90b3R5cGUuZ2V0TmFtZXNwYWNlcz1mdW5jdGlvbigpe3JldHVybiB0aGlzLm5hbWVzcGFjZXN8fCh0aGlzLm5hbWVzcGFjZXM9bmV3IFppKHRoaXMpKSx0aGlzLm5hbWVzcGFjZXN9LHQucHJvdG90eXBlLnNldElkZW50aWZpZXI9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuc2V0Tm9kZSgiaWRlbnRpZmllciIsZSwwKX0sdC5wcm90b3R5cGUuZ2V0SWRlbnRpZmllcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLmlkZW50aWZpZXJ9LHQucHJvdG90eXBlLmdldE5hbWU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pZGVudGlmaWVyP3RoaXMuaWRlbnRpZmllci5nZXRUZXh0KCk6IiJ9LHQucHJvdG90eXBlLmdldEFyZ3VtZW50cz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmFyZ3VtZW50c3x8KHRoaXMuYXJndW1lbnRzPW5ldyBaaSh0aGlzKSksdGhpcy5hcmd1bWVudHN9LHQucHJvdG90eXBlLnNldENvbnRlbnQ9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuc2V0Tm9kZSgiY29udGVudCIsZSl9LHQucHJvdG90eXBlLmdldENvbnRlbnQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jb250ZW50fSx0fShZaSksbHM9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCh0LG4pe3JldHVybiBlLmNhbGwodGhpcyx0LG4pfHx0aGlzfXJldHVybiBHaSh0LGUpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwidHlwZSIse2dldDpmdW5jdGlvbigpe3JldHVybiBqaS5NaXhpbkRlY2xhcmF0aW9ufSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLHQucHJvdG90eXBlLnNldElkZW50aWZpZXI9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuc2V0Tm9kZSgiaWRlbnRpZmllciIsZSwwKX0sdC5wcm90b3R5cGUuZ2V0SWRlbnRpZmllcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLmlkZW50aWZpZXJ9LHQucHJvdG90eXBlLmdldE5hbWU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pZGVudGlmaWVyP3RoaXMuaWRlbnRpZmllci5nZXRUZXh0KCk6IiJ9LHQucHJvdG90eXBlLmdldFBhcmFtZXRlcnM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wYXJhbWV0ZXJzfHwodGhpcy5wYXJhbWV0ZXJzPW5ldyBaaSh0aGlzKSksdGhpcy5wYXJhbWV0ZXJzfSx0LnByb3RvdHlwZS5zZXRHdWFyZD1mdW5jdGlvbihlKXtyZXR1cm4gZSYmKGUuYXR0YWNoVG8odGhpcyksdGhpcy5ndWFyZD1lKSwhMX0sdH0ocm8pLGNzPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQodCxuKXtyZXR1cm4gZS5jYWxsKHRoaXMsdCxuKXx8dGhpc31yZXR1cm4gR2kodCxlKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsInR5cGUiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gamkuVW5rbm93bkF0UnVsZX0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSx0LnByb3RvdHlwZS5zZXRBdFJ1bGVOYW1lPWZ1bmN0aW9uKGUpe3RoaXMuYXRSdWxlTmFtZT1lfSx0LnByb3RvdHlwZS5nZXRBdFJ1bGVOYW1lPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYXRSdWxlTmFtZX0sdH0ocm8pLGhzPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoKXtyZXR1cm4gbnVsbCE9PWUmJmUuYXBwbHkodGhpcyxhcmd1bWVudHMpfHx0aGlzfXJldHVybiBHaSh0LGUpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwidHlwZSIse2dldDpmdW5jdGlvbigpe3JldHVybiBqaS5MaXN0RW50cnl9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksdC5wcm90b3R5cGUuc2V0S2V5PWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnNldE5vZGUoImtleSIsZSwwKX0sdC5wcm90b3R5cGUuc2V0VmFsdWU9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuc2V0Tm9kZSgidmFsdWUiLGUsMSl9LHR9KFlpKSxkcz1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KCl7cmV0dXJuIG51bGwhPT1lJiZlLmFwcGx5KHRoaXMsYXJndW1lbnRzKXx8dGhpc31yZXR1cm4gR2kodCxlKSx0LnByb3RvdHlwZS5nZXRDb25kaXRpb25zPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY29uZGl0aW9uc3x8KHRoaXMuY29uZGl0aW9ucz1uZXcgWmkodGhpcykpLHRoaXMuY29uZGl0aW9uc30sdH0oWWkpLHBzPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoKXtyZXR1cm4gbnVsbCE9PWUmJmUuYXBwbHkodGhpcyxhcmd1bWVudHMpfHx0aGlzfXJldHVybiBHaSh0LGUpLHQucHJvdG90eXBlLnNldFZhcmlhYmxlPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnNldE5vZGUoInZhcmlhYmxlIixlKX0sdH0oWWkpLHVzPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoKXtyZXR1cm4gbnVsbCE9PWUmJmUuYXBwbHkodGhpcyxhcmd1bWVudHMpfHx0aGlzfXJldHVybiBHaSh0LGUpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwidHlwZSIse2dldDpmdW5jdGlvbigpe3JldHVybiBqaS5Nb2R1bGV9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksdC5wcm90b3R5cGUuc2V0SWRlbnRpZmllcj1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5zZXROb2RlKCJpZGVudGlmaWVyIixlLDApfSx0LnByb3RvdHlwZS5nZXRJZGVudGlmaWVyPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaWRlbnRpZmllcn0sdH0oWWkpOyhHbz1Ib3x8KEhvPXt9KSlbR28uSWdub3JlPTFdPSJJZ25vcmUiLEdvW0dvLldhcm5pbmc9Ml09Ildhcm5pbmciLEdvW0dvLkVycm9yPTRdPSJFcnJvciI7dmFyIG1zPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQsbixyLGksbyl7dm9pZCAwPT09aSYmKGk9ZS5vZmZzZXQpLHZvaWQgMD09PW8mJihvPWUubGVuZ3RoKSx0aGlzLm5vZGU9ZSx0aGlzLnJ1bGU9dCx0aGlzLmxldmVsPW4sdGhpcy5tZXNzYWdlPXJ8fHQubWVzc2FnZSx0aGlzLm9mZnNldD1pLHRoaXMubGVuZ3RoPW99cmV0dXJuIGUucHJvdG90eXBlLmdldFJ1bGU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5ydWxlfSxlLnByb3RvdHlwZS5nZXRMZXZlbD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmxldmVsfSxlLnByb3RvdHlwZS5nZXRPZmZzZXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5vZmZzZXR9LGUucHJvdG90eXBlLmdldExlbmd0aD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmxlbmd0aH0sZS5wcm90b3R5cGUuZ2V0Tm9kZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLm5vZGV9LGUucHJvdG90eXBlLmdldE1lc3NhZ2U9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tZXNzYWdlfSxlfSgpLGZzPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSgpe3RoaXMuZW50cmllcz1bXX1yZXR1cm4gZS5lbnRyaWVzPWZ1bmN0aW9uKHQpe3ZhciBuPW5ldyBlO3JldHVybiB0LmFjY2VwdFZpc2l0b3Iobiksbi5lbnRyaWVzfSxlLnByb3RvdHlwZS52aXNpdE5vZGU9ZnVuY3Rpb24oZSl7cmV0dXJuIGUuaXNFcnJvbmVvdXMoKSYmZS5jb2xsZWN0SXNzdWVzKHRoaXMuZW50cmllcyksITB9LGV9KCk7ZnVuY3Rpb24gZ3MoZSx0LC4uLm4pe3JldHVybiBmdW5jdGlvbihlLHQpe2xldCBuO3JldHVybiBuPTA9PT10Lmxlbmd0aD9lOmUucmVwbGFjZSgvXHsoXGQrKVx9L2csKChlLG4pPT57bGV0IHI9blswXTtyZXR1cm4gdm9pZCAwIT09dFtyXT90W3JdOmV9KSksbn0odCxuKX1mdW5jdGlvbiBicyhlKXtyZXR1cm4gZ3N9dmFyIHZzLHlzLHdzLHhzLFNzLENzLGtzLF9zLEVzLFJzLEZzLE5zLERzLFRzLEFzLE1zLHpzLElzLFBzLExzLE9zLFdzLFZzLFVzLEJzLEtzLGpzLHFzLCRzLEhzLEdzLEpzLFhzLFlzLFpzLFFzLGVhLHRhLG5hLHJhLGlhLG9hLHNhLGFhLGxhLGNhLGhhLGRhLHBhLHVhPWJzKCksbWE9ZnVuY3Rpb24oZSx0KXt0aGlzLmlkPWUsdGhpcy5tZXNzYWdlPXR9LGZhPXtOdW1iZXJFeHBlY3RlZDpuZXcgbWEoImNzcy1udW1iZXJleHBlY3RlZCIsdWEoImV4cGVjdGVkLm51bWJlciIsIm51bWJlciBleHBlY3RlZCIpKSxDb25kaXRpb25FeHBlY3RlZDpuZXcgbWEoImNzcy1jb25kaXRpb25leHBlY3RlZCIsdWEoImV4cGVjdGVkLmNvbmR0IiwiY29uZGl0aW9uIGV4cGVjdGVkIikpLFJ1bGVPclNlbGVjdG9yRXhwZWN0ZWQ6bmV3IG1hKCJjc3MtcnVsZW9yc2VsZWN0b3JleHBlY3RlZCIsdWEoImV4cGVjdGVkLnJ1bGVvcnNlbGVjdG9yIiwiYXQtcnVsZSBvciBzZWxlY3RvciBleHBlY3RlZCIpKSxEb3RFeHBlY3RlZDpuZXcgbWEoImNzcy1kb3RleHBlY3RlZCIsdWEoImV4cGVjdGVkLmRvdCIsImRvdCBleHBlY3RlZCIpKSxDb2xvbkV4cGVjdGVkOm5ldyBtYSgiY3NzLWNvbG9uZXhwZWN0ZWQiLHVhKCJleHBlY3RlZC5jb2xvbiIsImNvbG9uIGV4cGVjdGVkIikpLFNlbWlDb2xvbkV4cGVjdGVkOm5ldyBtYSgiY3NzLXNlbWljb2xvbmV4cGVjdGVkIix1YSgiZXhwZWN0ZWQuc2VtaWNvbG9uIiwic2VtaS1jb2xvbiBleHBlY3RlZCIpKSxUZXJtRXhwZWN0ZWQ6bmV3IG1hKCJjc3MtdGVybWV4cGVjdGVkIix1YSgiZXhwZWN0ZWQudGVybSIsInRlcm0gZXhwZWN0ZWQiKSksRXhwcmVzc2lvbkV4cGVjdGVkOm5ldyBtYSgiY3NzLWV4cHJlc3Npb25leHBlY3RlZCIsdWEoImV4cGVjdGVkLmV4cHJlc3Npb24iLCJleHByZXNzaW9uIGV4cGVjdGVkIikpLE9wZXJhdG9yRXhwZWN0ZWQ6bmV3IG1hKCJjc3Mtb3BlcmF0b3JleHBlY3RlZCIsdWEoImV4cGVjdGVkLm9wZXJhdG9yIiwib3BlcmF0b3IgZXhwZWN0ZWQiKSksSWRlbnRpZmllckV4cGVjdGVkOm5ldyBtYSgiY3NzLWlkZW50aWZpZXJleHBlY3RlZCIsdWEoImV4cGVjdGVkLmlkZW50IiwiaWRlbnRpZmllciBleHBlY3RlZCIpKSxQZXJjZW50YWdlRXhwZWN0ZWQ6bmV3IG1hKCJjc3MtcGVyY2VudGFnZWV4cGVjdGVkIix1YSgiZXhwZWN0ZWQucGVyY2VudGFnZSIsInBlcmNlbnRhZ2UgZXhwZWN0ZWQiKSksVVJJT3JTdHJpbmdFeHBlY3RlZDpuZXcgbWEoImNzcy11cmlvcnN0cmluZ2V4cGVjdGVkIix1YSgiZXhwZWN0ZWQudXJpb3JzdHJpbmciLCJ1cmkgb3Igc3RyaW5nIGV4cGVjdGVkIikpLFVSSUV4cGVjdGVkOm5ldyBtYSgiY3NzLXVyaWV4cGVjdGVkIix1YSgiZXhwZWN0ZWQudXJpIiwiVVJJIGV4cGVjdGVkIikpLFZhcmlhYmxlTmFtZUV4cGVjdGVkOm5ldyBtYSgiY3NzLXZhcm5hbWVleHBlY3RlZCIsdWEoImV4cGVjdGVkLnZhcm5hbWUiLCJ2YXJpYWJsZSBuYW1lIGV4cGVjdGVkIikpLFZhcmlhYmxlVmFsdWVFeHBlY3RlZDpuZXcgbWEoImNzcy12YXJ2YWx1ZWV4cGVjdGVkIix1YSgiZXhwZWN0ZWQudmFydmFsdWUiLCJ2YXJpYWJsZSB2YWx1ZSBleHBlY3RlZCIpKSxQcm9wZXJ0eVZhbHVlRXhwZWN0ZWQ6bmV3IG1hKCJjc3MtcHJvcGVydHl2YWx1ZWV4cGVjdGVkIix1YSgiZXhwZWN0ZWQucHJvcHZhbHVlIiwicHJvcGVydHkgdmFsdWUgZXhwZWN0ZWQiKSksTGVmdEN1cmx5RXhwZWN0ZWQ6bmV3IG1hKCJjc3MtbGN1cmx5ZXhwZWN0ZWQiLHVhKCJleHBlY3RlZC5sY3VybHkiLCJ7IGV4cGVjdGVkIikpLFJpZ2h0Q3VybHlFeHBlY3RlZDpuZXcgbWEoImNzcy1yY3VybHlleHBlY3RlZCIsdWEoImV4cGVjdGVkLnJjdXJseSIsIn0gZXhwZWN0ZWQiKSksTGVmdFNxdWFyZUJyYWNrZXRFeHBlY3RlZDpuZXcgbWEoImNzcy1yYnJhY2tldGV4cGVjdGVkIix1YSgiZXhwZWN0ZWQubHNxdWFyZSIsIlsgZXhwZWN0ZWQiKSksUmlnaHRTcXVhcmVCcmFja2V0RXhwZWN0ZWQ6bmV3IG1hKCJjc3MtbGJyYWNrZXRleHBlY3RlZCIsdWEoImV4cGVjdGVkLnJzcXVhcmUiLCJdIGV4cGVjdGVkIikpLExlZnRQYXJlbnRoZXNpc0V4cGVjdGVkOm5ldyBtYSgiY3NzLWxwYXJlbnRleHBlY3RlZCIsdWEoImV4cGVjdGVkLmxwYXJlbiIsIiggZXhwZWN0ZWQiKSksUmlnaHRQYXJlbnRoZXNpc0V4cGVjdGVkOm5ldyBtYSgiY3NzLXJwYXJlbnRleHBlY3RlZCIsdWEoImV4cGVjdGVkLnJwYXJlbnQiLCIpIGV4cGVjdGVkIikpLENvbW1hRXhwZWN0ZWQ6bmV3IG1hKCJjc3MtY29tbWFleHBlY3RlZCIsdWEoImV4cGVjdGVkLmNvbW1hIiwiY29tbWEgZXhwZWN0ZWQiKSksUGFnZURpcmVjdGl2ZU9yRGVjbGFyYXRpb25FeHBlY3RlZDpuZXcgbWEoImNzcy1wYWdlZGlyb3JkZWNsZXhwZWN0ZWQiLHVhKCJleHBlY3RlZC5wYWdlZGlyb3JkZWNsIiwicGFnZSBkaXJlY3RpdmUgb3IgZGVjbGFyYXRvbiBleHBlY3RlZCIpKSxVbmtub3duQXRSdWxlOm5ldyBtYSgiY3NzLXVua25vd25hdHJ1bGUiLHVhKCJ1bmtub3duLmF0cnVsZSIsImF0LXJ1bGUgdW5rbm93biIpKSxVbmtub3duS2V5d29yZDpuZXcgbWEoImNzcy11bmtub3dua2V5d29yZCIsdWEoInVua25vd24ua2V5d29yZCIsInVua25vd24ga2V5d29yZCIpKSxTZWxlY3RvckV4cGVjdGVkOm5ldyBtYSgiY3NzLXNlbGVjdG9yZXhwZWN0ZWQiLHVhKCJleHBlY3RlZC5zZWxlY3RvciIsInNlbGVjdG9yIGV4cGVjdGVkIikpLFN0cmluZ0xpdGVyYWxFeHBlY3RlZDpuZXcgbWEoImNzcy1zdHJpbmdsaXRlcmFsZXhwZWN0ZWQiLHVhKCJleHBlY3RlZC5zdHJpbmdsaXRlcmFsIiwic3RyaW5nIGxpdGVyYWwgZXhwZWN0ZWQiKSksV2hpdGVzcGFjZUV4cGVjdGVkOm5ldyBtYSgiY3NzLXdoaXRlc3BhY2VleHBlY3RlZCIsdWEoImV4cGVjdGVkLndoaXRlc3BhY2UiLCJ3aGl0ZXNwYWNlIGV4cGVjdGVkIikpLE1lZGlhUXVlcnlFeHBlY3RlZDpuZXcgbWEoImNzcy1tZWRpYXF1ZXJ5ZXhwZWN0ZWQiLHVhKCJleHBlY3RlZC5tZWRpYXF1ZXJ5IiwibWVkaWEgcXVlcnkgZXhwZWN0ZWQiKSksSWRlbnRpZmllck9yV2lsZGNhcmRFeHBlY3RlZDpuZXcgbWEoImNzcy1pZG9yd2lsZGNhcmRleHBlY3RlZCIsdWEoImV4cGVjdGVkLmlkb3J3aWxkY2FyZCIsImlkZW50aWZpZXIgb3Igd2lsZGNhcmQgZXhwZWN0ZWQiKSksV2lsZGNhcmRFeHBlY3RlZDpuZXcgbWEoImNzcy13aWxkY2FyZGV4cGVjdGVkIix1YSgiZXhwZWN0ZWQud2lsZGNhcmQiLCJ3aWxkY2FyZCBleHBlY3RlZCIpKSxJZGVudGlmaWVyT3JWYXJpYWJsZUV4cGVjdGVkOm5ldyBtYSgiY3NzLWlkb3J2YXJleHBlY3RlZCIsdWEoImV4cGVjdGVkLmlkb3J2YXIiLCJpZGVudGlmaWVyIG9yIHZhcmlhYmxlIGV4cGVjdGVkIikpfTsoeXM9dnN8fCh2cz17fSkpLk1JTl9WQUxVRT0tMjE0NzQ4MzY0OCx5cy5NQVhfVkFMVUU9MjE0NzQ4MzY0NywoeHM9d3N8fCh3cz17fSkpLk1JTl9WQUxVRT0wLHhzLk1BWF9WQUxVRT0yMTQ3NDgzNjQ3LChDcz1Tc3x8KFNzPXt9KSkuY3JlYXRlPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGU9PT1OdW1iZXIuTUFYX1ZBTFVFJiYoZT13cy5NQVhfVkFMVUUpLHQ9PT1OdW1iZXIuTUFYX1ZBTFVFJiYodD13cy5NQVhfVkFMVUUpLHtsaW5lOmUsY2hhcmFjdGVyOnR9fSxDcy5pcz1mdW5jdGlvbihlKXt2YXIgdD1lO3JldHVybiBmbC5vYmplY3RMaXRlcmFsKHQpJiZmbC51aW50ZWdlcih0LmxpbmUpJiZmbC51aW50ZWdlcih0LmNoYXJhY3Rlcil9LChfcz1rc3x8KGtzPXt9KSkuY3JlYXRlPWZ1bmN0aW9uKGUsdCxuLHIpe2lmKGZsLnVpbnRlZ2VyKGUpJiZmbC51aW50ZWdlcih0KSYmZmwudWludGVnZXIobikmJmZsLnVpbnRlZ2VyKHIpKXJldHVybntzdGFydDpTcy5jcmVhdGUoZSx0KSxlbmQ6U3MuY3JlYXRlKG4scil9O2lmKFNzLmlzKGUpJiZTcy5pcyh0KSlyZXR1cm57c3RhcnQ6ZSxlbmQ6dH07dGhyb3cgbmV3IEVycm9yKCJSYW5nZSNjcmVhdGUgY2FsbGVkIHdpdGggaW52YWxpZCBhcmd1bWVudHNbIitlKyIsICIrdCsiLCAiK24rIiwgIityKyJdIil9LF9zLmlzPWZ1bmN0aW9uKGUpe3ZhciB0PWU7cmV0dXJuIGZsLm9iamVjdExpdGVyYWwodCkmJlNzLmlzKHQuc3RhcnQpJiZTcy5pcyh0LmVuZCl9LChScz1Fc3x8KEVzPXt9KSkuY3JlYXRlPWZ1bmN0aW9uKGUsdCl7cmV0dXJue3VyaTplLHJhbmdlOnR9fSxScy5pcz1mdW5jdGlvbihlKXt2YXIgdD1lO3JldHVybiBmbC5kZWZpbmVkKHQpJiZrcy5pcyh0LnJhbmdlKSYmKGZsLnN0cmluZyh0LnVyaSl8fGZsLnVuZGVmaW5lZCh0LnVyaSkpfSwoTnM9RnN8fChGcz17fSkpLmNyZWF0ZT1mdW5jdGlvbihlLHQsbixyKXtyZXR1cm57dGFyZ2V0VXJpOmUsdGFyZ2V0UmFuZ2U6dCx0YXJnZXRTZWxlY3Rpb25SYW5nZTpuLG9yaWdpblNlbGVjdGlvblJhbmdlOnJ9fSxOcy5pcz1mdW5jdGlvbihlKXt2YXIgdD1lO3JldHVybiBmbC5kZWZpbmVkKHQpJiZrcy5pcyh0LnRhcmdldFJhbmdlKSYmZmwuc3RyaW5nKHQudGFyZ2V0VXJpKSYmKGtzLmlzKHQudGFyZ2V0U2VsZWN0aW9uUmFuZ2UpfHxmbC51bmRlZmluZWQodC50YXJnZXRTZWxlY3Rpb25SYW5nZSkpJiYoa3MuaXModC5vcmlnaW5TZWxlY3Rpb25SYW5nZSl8fGZsLnVuZGVmaW5lZCh0Lm9yaWdpblNlbGVjdGlvblJhbmdlKSl9LChUcz1Ec3x8KERzPXt9KSkuY3JlYXRlPWZ1bmN0aW9uKGUsdCxuLHIpe3JldHVybntyZWQ6ZSxncmVlbjp0LGJsdWU6bixhbHBoYTpyfX0sVHMuaXM9ZnVuY3Rpb24oZSl7dmFyIHQ9ZTtyZXR1cm4gZmwubnVtYmVyUmFuZ2UodC5yZWQsMCwxKSYmZmwubnVtYmVyUmFuZ2UodC5ncmVlbiwwLDEpJiZmbC5udW1iZXJSYW5nZSh0LmJsdWUsMCwxKSYmZmwubnVtYmVyUmFuZ2UodC5hbHBoYSwwLDEpfSwoTXM9QXN8fChBcz17fSkpLmNyZWF0ZT1mdW5jdGlvbihlLHQpe3JldHVybntyYW5nZTplLGNvbG9yOnR9fSxNcy5pcz1mdW5jdGlvbihlKXt2YXIgdD1lO3JldHVybiBrcy5pcyh0LnJhbmdlKSYmRHMuaXModC5jb2xvcil9LChJcz16c3x8KHpzPXt9KSkuY3JlYXRlPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm57bGFiZWw6ZSx0ZXh0RWRpdDp0LGFkZGl0aW9uYWxUZXh0RWRpdHM6bn19LElzLmlzPWZ1bmN0aW9uKGUpe3ZhciB0PWU7cmV0dXJuIGZsLnN0cmluZyh0LmxhYmVsKSYmKGZsLnVuZGVmaW5lZCh0LnRleHRFZGl0KXx8WXMuaXModCkpJiYoZmwudW5kZWZpbmVkKHQuYWRkaXRpb25hbFRleHRFZGl0cyl8fGZsLnR5cGVkQXJyYXkodC5hZGRpdGlvbmFsVGV4dEVkaXRzLFlzLmlzKSl9LChMcz1Qc3x8KFBzPXt9KSkuQ29tbWVudD0iY29tbWVudCIsTHMuSW1wb3J0cz0iaW1wb3J0cyIsTHMuUmVnaW9uPSJyZWdpb24iLChXcz1Pc3x8KE9zPXt9KSkuY3JlYXRlPWZ1bmN0aW9uKGUsdCxuLHIsaSl7dmFyIG89e3N0YXJ0TGluZTplLGVuZExpbmU6dH07cmV0dXJuIGZsLmRlZmluZWQobikmJihvLnN0YXJ0Q2hhcmFjdGVyPW4pLGZsLmRlZmluZWQocikmJihvLmVuZENoYXJhY3Rlcj1yKSxmbC5kZWZpbmVkKGkpJiYoby5raW5kPWkpLG99LFdzLmlzPWZ1bmN0aW9uKGUpe3ZhciB0PWU7cmV0dXJuIGZsLnVpbnRlZ2VyKHQuc3RhcnRMaW5lKSYmZmwudWludGVnZXIodC5zdGFydExpbmUpJiYoZmwudW5kZWZpbmVkKHQuc3RhcnRDaGFyYWN0ZXIpfHxmbC51aW50ZWdlcih0LnN0YXJ0Q2hhcmFjdGVyKSkmJihmbC51bmRlZmluZWQodC5lbmRDaGFyYWN0ZXIpfHxmbC51aW50ZWdlcih0LmVuZENoYXJhY3RlcikpJiYoZmwudW5kZWZpbmVkKHQua2luZCl8fGZsLnN0cmluZyh0LmtpbmQpKX0sKFVzPVZzfHwoVnM9e30pKS5jcmVhdGU9ZnVuY3Rpb24oZSx0KXtyZXR1cm57bG9jYXRpb246ZSxtZXNzYWdlOnR9fSxVcy5pcz1mdW5jdGlvbihlKXt2YXIgdD1lO3JldHVybiBmbC5kZWZpbmVkKHQpJiZFcy5pcyh0LmxvY2F0aW9uKSYmZmwuc3RyaW5nKHQubWVzc2FnZSl9LChLcz1Cc3x8KEJzPXt9KSkuRXJyb3I9MSxLcy5XYXJuaW5nPTIsS3MuSW5mb3JtYXRpb249MyxLcy5IaW50PTQsKHFzPWpzfHwoanM9e30pKS5Vbm5lY2Vzc2FyeT0xLHFzLkRlcHJlY2F0ZWQ9MiwoJHN8fCgkcz17fSkpLmlzPWZ1bmN0aW9uKGUpe3ZhciB0PWU7cmV0dXJuIG51bGwhPXQmJmZsLnN0cmluZyh0LmhyZWYpfSwoR3M9SHN8fChIcz17fSkpLmNyZWF0ZT1mdW5jdGlvbihlLHQsbixyLGksbyl7dmFyIHM9e3JhbmdlOmUsbWVzc2FnZTp0fTtyZXR1cm4gZmwuZGVmaW5lZChuKSYmKHMuc2V2ZXJpdHk9biksZmwuZGVmaW5lZChyKSYmKHMuY29kZT1yKSxmbC5kZWZpbmVkKGkpJiYocy5zb3VyY2U9aSksZmwuZGVmaW5lZChvKSYmKHMucmVsYXRlZEluZm9ybWF0aW9uPW8pLHN9LEdzLmlzPWZ1bmN0aW9uKGUpe3ZhciB0LG49ZTtyZXR1cm4gZmwuZGVmaW5lZChuKSYma3MuaXMobi5yYW5nZSkmJmZsLnN0cmluZyhuLm1lc3NhZ2UpJiYoZmwubnVtYmVyKG4uc2V2ZXJpdHkpfHxmbC51bmRlZmluZWQobi5zZXZlcml0eSkpJiYoZmwuaW50ZWdlcihuLmNvZGUpfHxmbC5zdHJpbmcobi5jb2RlKXx8ZmwudW5kZWZpbmVkKG4uY29kZSkpJiYoZmwudW5kZWZpbmVkKG4uY29kZURlc2NyaXB0aW9uKXx8Zmwuc3RyaW5nKG51bGw9PT0odD1uLmNvZGVEZXNjcmlwdGlvbil8fHZvaWQgMD09PXQ/dm9pZCAwOnQuaHJlZikpJiYoZmwuc3RyaW5nKG4uc291cmNlKXx8ZmwudW5kZWZpbmVkKG4uc291cmNlKSkmJihmbC51bmRlZmluZWQobi5yZWxhdGVkSW5mb3JtYXRpb24pfHxmbC50eXBlZEFycmF5KG4ucmVsYXRlZEluZm9ybWF0aW9uLFZzLmlzKSl9LChYcz1Kc3x8KEpzPXt9KSkuY3JlYXRlPWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuPVtdLHI9MjtyPGFyZ3VtZW50cy5sZW5ndGg7cisrKW5bci0yXT1hcmd1bWVudHNbcl07dmFyIGk9e3RpdGxlOmUsY29tbWFuZDp0fTtyZXR1cm4gZmwuZGVmaW5lZChuKSYmbi5sZW5ndGg+MCYmKGkuYXJndW1lbnRzPW4pLGl9LFhzLmlzPWZ1bmN0aW9uKGUpe3ZhciB0PWU7cmV0dXJuIGZsLmRlZmluZWQodCkmJmZsLnN0cmluZyh0LnRpdGxlKSYmZmwuc3RyaW5nKHQuY29tbWFuZCl9LChacz1Zc3x8KFlzPXt9KSkucmVwbGFjZT1mdW5jdGlvbihlLHQpe3JldHVybntyYW5nZTplLG5ld1RleHQ6dH19LFpzLmluc2VydD1mdW5jdGlvbihlLHQpe3JldHVybntyYW5nZTp7c3RhcnQ6ZSxlbmQ6ZX0sbmV3VGV4dDp0fX0sWnMuZGVsPWZ1bmN0aW9uKGUpe3JldHVybntyYW5nZTplLG5ld1RleHQ6IiJ9fSxacy5pcz1mdW5jdGlvbihlKXt2YXIgdD1lO3JldHVybiBmbC5vYmplY3RMaXRlcmFsKHQpJiZmbC5zdHJpbmcodC5uZXdUZXh0KSYma3MuaXModC5yYW5nZSl9LChlYT1Rc3x8KFFzPXt9KSkuY3JlYXRlPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj17bGFiZWw6ZX07cmV0dXJuIHZvaWQgMCE9PXQmJihyLm5lZWRzQ29uZmlybWF0aW9uPXQpLHZvaWQgMCE9PW4mJihyLmRlc2NyaXB0aW9uPW4pLHJ9LGVhLmlzPWZ1bmN0aW9uKGUpe3ZhciB0PWU7cmV0dXJuIHZvaWQgMCE9PXQmJmZsLm9iamVjdExpdGVyYWwodCkmJmZsLnN0cmluZyh0LmxhYmVsKSYmKGZsLmJvb2xlYW4odC5uZWVkc0NvbmZpcm1hdGlvbil8fHZvaWQgMD09PXQubmVlZHNDb25maXJtYXRpb24pJiYoZmwuc3RyaW5nKHQuZGVzY3JpcHRpb24pfHx2b2lkIDA9PT10LmRlc2NyaXB0aW9uKX0sKHRhfHwodGE9e30pKS5pcz1mdW5jdGlvbihlKXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGV9LChyYT1uYXx8KG5hPXt9KSkucmVwbGFjZT1mdW5jdGlvbihlLHQsbil7cmV0dXJue3JhbmdlOmUsbmV3VGV4dDp0LGFubm90YXRpb25JZDpufX0scmEuaW5zZXJ0PWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm57cmFuZ2U6e3N0YXJ0OmUsZW5kOmV9LG5ld1RleHQ6dCxhbm5vdGF0aW9uSWQ6bn19LHJhLmRlbD1mdW5jdGlvbihlLHQpe3JldHVybntyYW5nZTplLG5ld1RleHQ6IiIsYW5ub3RhdGlvbklkOnR9fSxyYS5pcz1mdW5jdGlvbihlKXt2YXIgdD1lO3JldHVybiBZcy5pcyh0KSYmKFFzLmlzKHQuYW5ub3RhdGlvbklkKXx8dGEuaXModC5hbm5vdGF0aW9uSWQpKX0sKG9hPWlhfHwoaWE9e30pKS5jcmVhdGU9ZnVuY3Rpb24oZSx0KXtyZXR1cm57dGV4dERvY3VtZW50OmUsZWRpdHM6dH19LG9hLmlzPWZ1bmN0aW9uKGUpe3ZhciB0PWU7cmV0dXJuIGZsLmRlZmluZWQodCkmJndhLmlzKHQudGV4dERvY3VtZW50KSYmQXJyYXkuaXNBcnJheSh0LmVkaXRzKX0sKGFhPXNhfHwoc2E9e30pKS5jcmVhdGU9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXtraW5kOiJjcmVhdGUiLHVyaTplfTtyZXR1cm4gdm9pZCAwPT09dHx8dm9pZCAwPT09dC5vdmVyd3JpdGUmJnZvaWQgMD09PXQuaWdub3JlSWZFeGlzdHN8fChyLm9wdGlvbnM9dCksdm9pZCAwIT09biYmKHIuYW5ub3RhdGlvbklkPW4pLHJ9LGFhLmlzPWZ1bmN0aW9uKGUpe3ZhciB0PWU7cmV0dXJuIHQmJiJjcmVhdGUiPT09dC5raW5kJiZmbC5zdHJpbmcodC51cmkpJiYodm9pZCAwPT09dC5vcHRpb25zfHwodm9pZCAwPT09dC5vcHRpb25zLm92ZXJ3cml0ZXx8ZmwuYm9vbGVhbih0Lm9wdGlvbnMub3ZlcndyaXRlKSkmJih2b2lkIDA9PT10Lm9wdGlvbnMuaWdub3JlSWZFeGlzdHN8fGZsLmJvb2xlYW4odC5vcHRpb25zLmlnbm9yZUlmRXhpc3RzKSkpJiYodm9pZCAwPT09dC5hbm5vdGF0aW9uSWR8fHRhLmlzKHQuYW5ub3RhdGlvbklkKSl9LChjYT1sYXx8KGxhPXt9KSkuY3JlYXRlPWZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBpPXtraW5kOiJyZW5hbWUiLG9sZFVyaTplLG5ld1VyaTp0fTtyZXR1cm4gdm9pZCAwPT09bnx8dm9pZCAwPT09bi5vdmVyd3JpdGUmJnZvaWQgMD09PW4uaWdub3JlSWZFeGlzdHN8fChpLm9wdGlvbnM9biksdm9pZCAwIT09ciYmKGkuYW5ub3RhdGlvbklkPXIpLGl9LGNhLmlzPWZ1bmN0aW9uKGUpe3ZhciB0PWU7cmV0dXJuIHQmJiJyZW5hbWUiPT09dC5raW5kJiZmbC5zdHJpbmcodC5vbGRVcmkpJiZmbC5zdHJpbmcodC5uZXdVcmkpJiYodm9pZCAwPT09dC5vcHRpb25zfHwodm9pZCAwPT09dC5vcHRpb25zLm92ZXJ3cml0ZXx8ZmwuYm9vbGVhbih0Lm9wdGlvbnMub3ZlcndyaXRlKSkmJih2b2lkIDA9PT10Lm9wdGlvbnMuaWdub3JlSWZFeGlzdHN8fGZsLmJvb2xlYW4odC5vcHRpb25zLmlnbm9yZUlmRXhpc3RzKSkpJiYodm9pZCAwPT09dC5hbm5vdGF0aW9uSWR8fHRhLmlzKHQuYW5ub3RhdGlvbklkKSl9LChkYT1oYXx8KGhhPXt9KSkuY3JlYXRlPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj17a2luZDoiZGVsZXRlIix1cmk6ZX07cmV0dXJuIHZvaWQgMD09PXR8fHZvaWQgMD09PXQucmVjdXJzaXZlJiZ2b2lkIDA9PT10Lmlnbm9yZUlmTm90RXhpc3RzfHwoci5vcHRpb25zPXQpLHZvaWQgMCE9PW4mJihyLmFubm90YXRpb25JZD1uKSxyfSxkYS5pcz1mdW5jdGlvbihlKXt2YXIgdD1lO3JldHVybiB0JiYiZGVsZXRlIj09PXQua2luZCYmZmwuc3RyaW5nKHQudXJpKSYmKHZvaWQgMD09PXQub3B0aW9uc3x8KHZvaWQgMD09PXQub3B0aW9ucy5yZWN1cnNpdmV8fGZsLmJvb2xlYW4odC5vcHRpb25zLnJlY3Vyc2l2ZSkpJiYodm9pZCAwPT09dC5vcHRpb25zLmlnbm9yZUlmTm90RXhpc3RzfHxmbC5ib29sZWFuKHQub3B0aW9ucy5pZ25vcmVJZk5vdEV4aXN0cykpKSYmKHZvaWQgMD09PXQuYW5ub3RhdGlvbklkfHx0YS5pcyh0LmFubm90YXRpb25JZCkpfSwocGF8fChwYT17fSkpLmlzPWZ1bmN0aW9uKGUpe3ZhciB0PWU7cmV0dXJuIHQmJih2b2lkIDAhPT10LmNoYW5nZXN8fHZvaWQgMCE9PXQuZG9jdW1lbnRDaGFuZ2VzKSYmKHZvaWQgMD09PXQuZG9jdW1lbnRDaGFuZ2VzfHx0LmRvY3VtZW50Q2hhbmdlcy5ldmVyeSgoZnVuY3Rpb24oZSl7cmV0dXJuIGZsLnN0cmluZyhlLmtpbmQpP3NhLmlzKGUpfHxsYS5pcyhlKXx8aGEuaXMoZSk6aWEuaXMoZSl9KSkpfTt2YXIgZ2EsYmEsdmEseWEsd2EseGEsU2EsQ2Esa2EsX2EsRWEsUmEsRmEsTmEsRGEsVGEsQWEsTWEsemEsSWEsUGEsTGEsT2EsV2EsVmEsVWEsQmEsS2EsamEscWEsJGEsSGEsR2EsSmEsWGEsWWEsWmEsUWEsZWwsdGwsbmwscmwsaWwsb2wsc2wsYWwsbGwsY2wsaGwsZGwscGwsdWw9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCl7dGhpcy5lZGl0cz1lLHRoaXMuY2hhbmdlQW5ub3RhdGlvbnM9dH1yZXR1cm4gZS5wcm90b3R5cGUuaW5zZXJ0PWZ1bmN0aW9uKGUsdCxuKXt2YXIgcixpO2lmKHZvaWQgMD09PW4/cj1Zcy5pbnNlcnQoZSx0KTp0YS5pcyhuKT8oaT1uLHI9bmEuaW5zZXJ0KGUsdCxuKSk6KHRoaXMuYXNzZXJ0Q2hhbmdlQW5ub3RhdGlvbnModGhpcy5jaGFuZ2VBbm5vdGF0aW9ucyksaT10aGlzLmNoYW5nZUFubm90YXRpb25zLm1hbmFnZShuKSxyPW5hLmluc2VydChlLHQsaSkpLHRoaXMuZWRpdHMucHVzaChyKSx2b2lkIDAhPT1pKXJldHVybiBpfSxlLnByb3RvdHlwZS5yZXBsYWNlPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcixpO2lmKHZvaWQgMD09PW4/cj1Zcy5yZXBsYWNlKGUsdCk6dGEuaXMobik/KGk9bixyPW5hLnJlcGxhY2UoZSx0LG4pKToodGhpcy5hc3NlcnRDaGFuZ2VBbm5vdGF0aW9ucyh0aGlzLmNoYW5nZUFubm90YXRpb25zKSxpPXRoaXMuY2hhbmdlQW5ub3RhdGlvbnMubWFuYWdlKG4pLHI9bmEucmVwbGFjZShlLHQsaSkpLHRoaXMuZWRpdHMucHVzaChyKSx2b2lkIDAhPT1pKXJldHVybiBpfSxlLnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24oZSx0KXt2YXIgbixyO2lmKHZvaWQgMD09PXQ/bj1Zcy5kZWwoZSk6dGEuaXModCk/KHI9dCxuPW5hLmRlbChlLHQpKToodGhpcy5hc3NlcnRDaGFuZ2VBbm5vdGF0aW9ucyh0aGlzLmNoYW5nZUFubm90YXRpb25zKSxyPXRoaXMuY2hhbmdlQW5ub3RhdGlvbnMubWFuYWdlKHQpLG49bmEuZGVsKGUscikpLHRoaXMuZWRpdHMucHVzaChuKSx2b2lkIDAhPT1yKXJldHVybiByfSxlLnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24oZSl7dGhpcy5lZGl0cy5wdXNoKGUpfSxlLnByb3RvdHlwZS5hbGw9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lZGl0c30sZS5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLmVkaXRzLnNwbGljZSgwLHRoaXMuZWRpdHMubGVuZ3RoKX0sZS5wcm90b3R5cGUuYXNzZXJ0Q2hhbmdlQW5ub3RhdGlvbnM9ZnVuY3Rpb24oZSl7aWYodm9pZCAwPT09ZSl0aHJvdyBuZXcgRXJyb3IoIlRleHQgZWRpdCBjaGFuZ2UgaXMgbm90IGNvbmZpZ3VyZWQgdG8gbWFuYWdlIGNoYW5nZSBhbm5vdGF0aW9ucy4iKX0sZX0oKSxtbD1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSl7dGhpcy5fYW5ub3RhdGlvbnM9dm9pZCAwPT09ZT9PYmplY3QuY3JlYXRlKG51bGwpOmUsdGhpcy5fY291bnRlcj0wLHRoaXMuX3NpemU9MH1yZXR1cm4gZS5wcm90b3R5cGUuYWxsPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2Fubm90YXRpb25zfSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsInNpemUiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc2l6ZX0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxlLnByb3RvdHlwZS5tYW5hZ2U9ZnVuY3Rpb24oZSx0KXt2YXIgbjtpZih0YS5pcyhlKT9uPWU6KG49dGhpcy5uZXh0SWQoKSx0PWUpLHZvaWQgMCE9PXRoaXMuX2Fubm90YXRpb25zW25dKXRocm93IG5ldyBFcnJvcigiSWQgIituKyIgaXMgYWxyZWFkeSBpbiB1c2UuIik7aWYodm9pZCAwPT09dCl0aHJvdyBuZXcgRXJyb3IoIk5vIGFubm90YXRpb24gcHJvdmlkZWQgZm9yIGlkICIrbik7cmV0dXJuIHRoaXMuX2Fubm90YXRpb25zW25dPXQsdGhpcy5fc2l6ZSsrLG59LGUucHJvdG90eXBlLm5leHRJZD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9jb3VudGVyKyssdGhpcy5fY291bnRlci50b1N0cmluZygpfSxlfSgpOyFmdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSl7dmFyIHQ9dGhpczt0aGlzLl90ZXh0RWRpdENoYW5nZXM9T2JqZWN0LmNyZWF0ZShudWxsKSx2b2lkIDAhPT1lPyh0aGlzLl93b3Jrc3BhY2VFZGl0PWUsZS5kb2N1bWVudENoYW5nZXM/KHRoaXMuX2NoYW5nZUFubm90YXRpb25zPW5ldyBtbChlLmNoYW5nZUFubm90YXRpb25zKSxlLmNoYW5nZUFubm90YXRpb25zPXRoaXMuX2NoYW5nZUFubm90YXRpb25zLmFsbCgpLGUuZG9jdW1lbnRDaGFuZ2VzLmZvckVhY2goKGZ1bmN0aW9uKGUpe2lmKGlhLmlzKGUpKXt2YXIgbj1uZXcgdWwoZS5lZGl0cyx0Ll9jaGFuZ2VBbm5vdGF0aW9ucyk7dC5fdGV4dEVkaXRDaGFuZ2VzW2UudGV4dERvY3VtZW50LnVyaV09bn19KSkpOmUuY2hhbmdlcyYmT2JqZWN0LmtleXMoZS5jaGFuZ2VzKS5mb3JFYWNoKChmdW5jdGlvbihuKXt2YXIgcj1uZXcgdWwoZS5jaGFuZ2VzW25dKTt0Ll90ZXh0RWRpdENoYW5nZXNbbl09cn0pKSk6dGhpcy5fd29ya3NwYWNlRWRpdD17fX1PYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsImVkaXQiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pbml0RG9jdW1lbnRDaGFuZ2VzKCksdm9pZCAwIT09dGhpcy5fY2hhbmdlQW5ub3RhdGlvbnMmJigwPT09dGhpcy5fY2hhbmdlQW5ub3RhdGlvbnMuc2l6ZT90aGlzLl93b3Jrc3BhY2VFZGl0LmNoYW5nZUFubm90YXRpb25zPXZvaWQgMDp0aGlzLl93b3Jrc3BhY2VFZGl0LmNoYW5nZUFubm90YXRpb25zPXRoaXMuX2NoYW5nZUFubm90YXRpb25zLmFsbCgpKSx0aGlzLl93b3Jrc3BhY2VFZGl0fSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLGUucHJvdG90eXBlLmdldFRleHRFZGl0Q2hhbmdlPWZ1bmN0aW9uKGUpe2lmKHdhLmlzKGUpKXtpZih0aGlzLmluaXREb2N1bWVudENoYW5nZXMoKSx2b2lkIDA9PT10aGlzLl93b3Jrc3BhY2VFZGl0LmRvY3VtZW50Q2hhbmdlcyl0aHJvdyBuZXcgRXJyb3IoIldvcmtzcGFjZSBlZGl0IGlzIG5vdCBjb25maWd1cmVkIGZvciBkb2N1bWVudCBjaGFuZ2VzLiIpO3ZhciB0PXt1cmk6ZS51cmksdmVyc2lvbjplLnZlcnNpb259O2lmKCEocj10aGlzLl90ZXh0RWRpdENoYW5nZXNbdC51cmldKSl7dmFyIG49e3RleHREb2N1bWVudDp0LGVkaXRzOmk9W119O3RoaXMuX3dvcmtzcGFjZUVkaXQuZG9jdW1lbnRDaGFuZ2VzLnB1c2gobikscj1uZXcgdWwoaSx0aGlzLl9jaGFuZ2VBbm5vdGF0aW9ucyksdGhpcy5fdGV4dEVkaXRDaGFuZ2VzW3QudXJpXT1yfXJldHVybiByfWlmKHRoaXMuaW5pdENoYW5nZXMoKSx2b2lkIDA9PT10aGlzLl93b3Jrc3BhY2VFZGl0LmNoYW5nZXMpdGhyb3cgbmV3IEVycm9yKCJXb3Jrc3BhY2UgZWRpdCBpcyBub3QgY29uZmlndXJlZCBmb3Igbm9ybWFsIHRleHQgZWRpdCBjaGFuZ2VzLiIpO3ZhciByO2lmKCEocj10aGlzLl90ZXh0RWRpdENoYW5nZXNbZV0pKXt2YXIgaT1bXTt0aGlzLl93b3Jrc3BhY2VFZGl0LmNoYW5nZXNbZV09aSxyPW5ldyB1bChpKSx0aGlzLl90ZXh0RWRpdENoYW5nZXNbZV09cn1yZXR1cm4gcn0sZS5wcm90b3R5cGUuaW5pdERvY3VtZW50Q2hhbmdlcz1mdW5jdGlvbigpe3ZvaWQgMD09PXRoaXMuX3dvcmtzcGFjZUVkaXQuZG9jdW1lbnRDaGFuZ2VzJiZ2b2lkIDA9PT10aGlzLl93b3Jrc3BhY2VFZGl0LmNoYW5nZXMmJih0aGlzLl9jaGFuZ2VBbm5vdGF0aW9ucz1uZXcgbWwsdGhpcy5fd29ya3NwYWNlRWRpdC5kb2N1bWVudENoYW5nZXM9W10sdGhpcy5fd29ya3NwYWNlRWRpdC5jaGFuZ2VBbm5vdGF0aW9ucz10aGlzLl9jaGFuZ2VBbm5vdGF0aW9ucy5hbGwoKSl9LGUucHJvdG90eXBlLmluaXRDaGFuZ2VzPWZ1bmN0aW9uKCl7dm9pZCAwPT09dGhpcy5fd29ya3NwYWNlRWRpdC5kb2N1bWVudENoYW5nZXMmJnZvaWQgMD09PXRoaXMuX3dvcmtzcGFjZUVkaXQuY2hhbmdlcyYmKHRoaXMuX3dvcmtzcGFjZUVkaXQuY2hhbmdlcz1PYmplY3QuY3JlYXRlKG51bGwpKX0sZS5wcm90b3R5cGUuY3JlYXRlRmlsZT1mdW5jdGlvbihlLHQsbil7aWYodGhpcy5pbml0RG9jdW1lbnRDaGFuZ2VzKCksdm9pZCAwPT09dGhpcy5fd29ya3NwYWNlRWRpdC5kb2N1bWVudENoYW5nZXMpdGhyb3cgbmV3IEVycm9yKCJXb3Jrc3BhY2UgZWRpdCBpcyBub3QgY29uZmlndXJlZCBmb3IgZG9jdW1lbnQgY2hhbmdlcy4iKTt2YXIgcixpLG87aWYoUXMuaXModCl8fHRhLmlzKHQpP3I9dDpuPXQsdm9pZCAwPT09cj9pPXNhLmNyZWF0ZShlLG4pOihvPXRhLmlzKHIpP3I6dGhpcy5fY2hhbmdlQW5ub3RhdGlvbnMubWFuYWdlKHIpLGk9c2EuY3JlYXRlKGUsbixvKSksdGhpcy5fd29ya3NwYWNlRWRpdC5kb2N1bWVudENoYW5nZXMucHVzaChpKSx2b2lkIDAhPT1vKXJldHVybiBvfSxlLnByb3RvdHlwZS5yZW5hbWVGaWxlPWZ1bmN0aW9uKGUsdCxuLHIpe2lmKHRoaXMuaW5pdERvY3VtZW50Q2hhbmdlcygpLHZvaWQgMD09PXRoaXMuX3dvcmtzcGFjZUVkaXQuZG9jdW1lbnRDaGFuZ2VzKXRocm93IG5ldyBFcnJvcigiV29ya3NwYWNlIGVkaXQgaXMgbm90IGNvbmZpZ3VyZWQgZm9yIGRvY3VtZW50IGNoYW5nZXMuIik7dmFyIGksbyxzO2lmKFFzLmlzKG4pfHx0YS5pcyhuKT9pPW46cj1uLHZvaWQgMD09PWk/bz1sYS5jcmVhdGUoZSx0LHIpOihzPXRhLmlzKGkpP2k6dGhpcy5fY2hhbmdlQW5ub3RhdGlvbnMubWFuYWdlKGkpLG89bGEuY3JlYXRlKGUsdCxyLHMpKSx0aGlzLl93b3Jrc3BhY2VFZGl0LmRvY3VtZW50Q2hhbmdlcy5wdXNoKG8pLHZvaWQgMCE9PXMpcmV0dXJuIHN9LGUucHJvdG90eXBlLmRlbGV0ZUZpbGU9ZnVuY3Rpb24oZSx0LG4pe2lmKHRoaXMuaW5pdERvY3VtZW50Q2hhbmdlcygpLHZvaWQgMD09PXRoaXMuX3dvcmtzcGFjZUVkaXQuZG9jdW1lbnRDaGFuZ2VzKXRocm93IG5ldyBFcnJvcigiV29ya3NwYWNlIGVkaXQgaXMgbm90IGNvbmZpZ3VyZWQgZm9yIGRvY3VtZW50IGNoYW5nZXMuIik7dmFyIHIsaSxvO2lmKFFzLmlzKHQpfHx0YS5pcyh0KT9yPXQ6bj10LHZvaWQgMD09PXI/aT1oYS5jcmVhdGUoZSxuKToobz10YS5pcyhyKT9yOnRoaXMuX2NoYW5nZUFubm90YXRpb25zLm1hbmFnZShyKSxpPWhhLmNyZWF0ZShlLG4sbykpLHRoaXMuX3dvcmtzcGFjZUVkaXQuZG9jdW1lbnRDaGFuZ2VzLnB1c2goaSksdm9pZCAwIT09bylyZXR1cm4gb319KCksKGJhPWdhfHwoZ2E9e30pKS5jcmVhdGU9ZnVuY3Rpb24oZSl7cmV0dXJue3VyaTplfX0sYmEuaXM9ZnVuY3Rpb24oZSl7dmFyIHQ9ZTtyZXR1cm4gZmwuZGVmaW5lZCh0KSYmZmwuc3RyaW5nKHQudXJpKX0sKHlhPXZhfHwodmE9e30pKS5jcmVhdGU9ZnVuY3Rpb24oZSx0KXtyZXR1cm57dXJpOmUsdmVyc2lvbjp0fX0seWEuaXM9ZnVuY3Rpb24oZSl7dmFyIHQ9ZTtyZXR1cm4gZmwuZGVmaW5lZCh0KSYmZmwuc3RyaW5nKHQudXJpKSYmZmwuaW50ZWdlcih0LnZlcnNpb24pfSwoeGE9d2F8fCh3YT17fSkpLmNyZWF0ZT1mdW5jdGlvbihlLHQpe3JldHVybnt1cmk6ZSx2ZXJzaW9uOnR9fSx4YS5pcz1mdW5jdGlvbihlKXt2YXIgdD1lO3JldHVybiBmbC5kZWZpbmVkKHQpJiZmbC5zdHJpbmcodC51cmkpJiYobnVsbD09PXQudmVyc2lvbnx8ZmwuaW50ZWdlcih0LnZlcnNpb24pKX0sKENhPVNhfHwoU2E9e30pKS5jcmVhdGU9ZnVuY3Rpb24oZSx0LG4scil7cmV0dXJue3VyaTplLGxhbmd1YWdlSWQ6dCx2ZXJzaW9uOm4sdGV4dDpyfX0sQ2EuaXM9ZnVuY3Rpb24oZSl7dmFyIHQ9ZTtyZXR1cm4gZmwuZGVmaW5lZCh0KSYmZmwuc3RyaW5nKHQudXJpKSYmZmwuc3RyaW5nKHQubGFuZ3VhZ2VJZCkmJmZsLmludGVnZXIodC52ZXJzaW9uKSYmZmwuc3RyaW5nKHQudGV4dCl9LChfYT1rYXx8KGthPXt9KSkuUGxhaW5UZXh0PSJwbGFpbnRleHQiLF9hLk1hcmtkb3duPSJtYXJrZG93biIsZnVuY3Rpb24oZSl7ZS5pcz1mdW5jdGlvbih0KXt2YXIgbj10O3JldHVybiBuPT09ZS5QbGFpblRleHR8fG49PT1lLk1hcmtkb3dufX0oa2F8fChrYT17fSkpLChFYXx8KEVhPXt9KSkuaXM9ZnVuY3Rpb24oZSl7dmFyIHQ9ZTtyZXR1cm4gZmwub2JqZWN0TGl0ZXJhbChlKSYma2EuaXModC5raW5kKSYmZmwuc3RyaW5nKHQudmFsdWUpfSwoRmE9UmF8fChSYT17fSkpLlRleHQ9MSxGYS5NZXRob2Q9MixGYS5GdW5jdGlvbj0zLEZhLkNvbnN0cnVjdG9yPTQsRmEuRmllbGQ9NSxGYS5WYXJpYWJsZT02LEZhLkNsYXNzPTcsRmEuSW50ZXJmYWNlPTgsRmEuTW9kdWxlPTksRmEuUHJvcGVydHk9MTAsRmEuVW5pdD0xMSxGYS5WYWx1ZT0xMixGYS5FbnVtPTEzLEZhLktleXdvcmQ9MTQsRmEuU25pcHBldD0xNSxGYS5Db2xvcj0xNixGYS5GaWxlPTE3LEZhLlJlZmVyZW5jZT0xOCxGYS5Gb2xkZXI9MTksRmEuRW51bU1lbWJlcj0yMCxGYS5Db25zdGFudD0yMSxGYS5TdHJ1Y3Q9MjIsRmEuRXZlbnQ9MjMsRmEuT3BlcmF0b3I9MjQsRmEuVHlwZVBhcmFtZXRlcj0yNSwoRGE9TmF8fChOYT17fSkpLlBsYWluVGV4dD0xLERhLlNuaXBwZXQ9MiwoVGF8fChUYT17fSkpLkRlcHJlY2F0ZWQ9MSwoTWE9QWF8fChBYT17fSkpLmNyZWF0ZT1mdW5jdGlvbihlLHQsbil7cmV0dXJue25ld1RleHQ6ZSxpbnNlcnQ6dCxyZXBsYWNlOm59fSxNYS5pcz1mdW5jdGlvbihlKXt2YXIgdD1lO3JldHVybiB0JiZmbC5zdHJpbmcodC5uZXdUZXh0KSYma3MuaXModC5pbnNlcnQpJiZrcy5pcyh0LnJlcGxhY2UpfSwoSWE9emF8fCh6YT17fSkpLmFzSXM9MSxJYS5hZGp1c3RJbmRlbnRhdGlvbj0yLChQYXx8KFBhPXt9KSkuY3JlYXRlPWZ1bmN0aW9uKGUpe3JldHVybntsYWJlbDplfX0sKExhfHwoTGE9e30pKS5jcmVhdGU9ZnVuY3Rpb24oZSx0KXtyZXR1cm57aXRlbXM6ZXx8W10saXNJbmNvbXBsZXRlOiEhdH19LChXYT1PYXx8KE9hPXt9KSkuZnJvbVBsYWluVGV4dD1mdW5jdGlvbihlKXtyZXR1cm4gZS5yZXBsYWNlKC9bXFxgKl97fVtcXSgpIytcLS4hXS9nLCJcXCQmIil9LFdhLmlzPWZ1bmN0aW9uKGUpe3ZhciB0PWU7cmV0dXJuIGZsLnN0cmluZyh0KXx8Zmwub2JqZWN0TGl0ZXJhbCh0KSYmZmwuc3RyaW5nKHQubGFuZ3VhZ2UpJiZmbC5zdHJpbmcodC52YWx1ZSl9LChWYXx8KFZhPXt9KSkuaXM9ZnVuY3Rpb24oZSl7dmFyIHQ9ZTtyZXR1cm4hIXQmJmZsLm9iamVjdExpdGVyYWwodCkmJihFYS5pcyh0LmNvbnRlbnRzKXx8T2EuaXModC5jb250ZW50cyl8fGZsLnR5cGVkQXJyYXkodC5jb250ZW50cyxPYS5pcykpJiYodm9pZCAwPT09ZS5yYW5nZXx8a3MuaXMoZS5yYW5nZSkpfSwoVWF8fChVYT17fSkpLmNyZWF0ZT1mdW5jdGlvbihlLHQpe3JldHVybiB0P3tsYWJlbDplLGRvY3VtZW50YXRpb246dH06e2xhYmVsOmV9fSwoQmF8fChCYT17fSkpLmNyZWF0ZT1mdW5jdGlvbihlLHQpe2Zvcih2YXIgbj1bXSxyPTI7cjxhcmd1bWVudHMubGVuZ3RoO3IrKyluW3ItMl09YXJndW1lbnRzW3JdO3ZhciBpPXtsYWJlbDplfTtyZXR1cm4gZmwuZGVmaW5lZCh0KSYmKGkuZG9jdW1lbnRhdGlvbj10KSxmbC5kZWZpbmVkKG4pP2kucGFyYW1ldGVycz1uOmkucGFyYW1ldGVycz1bXSxpfSwoamE9S2F8fChLYT17fSkpLlRleHQ9MSxqYS5SZWFkPTIsamEuV3JpdGU9MywocWF8fChxYT17fSkpLmNyZWF0ZT1mdW5jdGlvbihlLHQpe3ZhciBuPXtyYW5nZTplfTtyZXR1cm4gZmwubnVtYmVyKHQpJiYobi5raW5kPXQpLG59LChIYT0kYXx8KCRhPXt9KSkuRmlsZT0xLEhhLk1vZHVsZT0yLEhhLk5hbWVzcGFjZT0zLEhhLlBhY2thZ2U9NCxIYS5DbGFzcz01LEhhLk1ldGhvZD02LEhhLlByb3BlcnR5PTcsSGEuRmllbGQ9OCxIYS5Db25zdHJ1Y3Rvcj05LEhhLkVudW09MTAsSGEuSW50ZXJmYWNlPTExLEhhLkZ1bmN0aW9uPTEyLEhhLlZhcmlhYmxlPTEzLEhhLkNvbnN0YW50PTE0LEhhLlN0cmluZz0xNSxIYS5OdW1iZXI9MTYsSGEuQm9vbGVhbj0xNyxIYS5BcnJheT0xOCxIYS5PYmplY3Q9MTksSGEuS2V5PTIwLEhhLk51bGw9MjEsSGEuRW51bU1lbWJlcj0yMixIYS5TdHJ1Y3Q9MjMsSGEuRXZlbnQ9MjQsSGEuT3BlcmF0b3I9MjUsSGEuVHlwZVBhcmFtZXRlcj0yNiwoR2F8fChHYT17fSkpLkRlcHJlY2F0ZWQ9MSwoSmF8fChKYT17fSkpLmNyZWF0ZT1mdW5jdGlvbihlLHQsbixyLGkpe3ZhciBvPXtuYW1lOmUsa2luZDp0LGxvY2F0aW9uOnt1cmk6cixyYW5nZTpufX07cmV0dXJuIGkmJihvLmNvbnRhaW5lck5hbWU9aSksb30sKFlhPVhhfHwoWGE9e30pKS5jcmVhdGU9ZnVuY3Rpb24oZSx0LG4scixpLG8pe3ZhciBzPXtuYW1lOmUsZGV0YWlsOnQsa2luZDpuLHJhbmdlOnIsc2VsZWN0aW9uUmFuZ2U6aX07cmV0dXJuIHZvaWQgMCE9PW8mJihzLmNoaWxkcmVuPW8pLHN9LFlhLmlzPWZ1bmN0aW9uKGUpe3ZhciB0PWU7cmV0dXJuIHQmJmZsLnN0cmluZyh0Lm5hbWUpJiZmbC5udW1iZXIodC5raW5kKSYma3MuaXModC5yYW5nZSkmJmtzLmlzKHQuc2VsZWN0aW9uUmFuZ2UpJiYodm9pZCAwPT09dC5kZXRhaWx8fGZsLnN0cmluZyh0LmRldGFpbCkpJiYodm9pZCAwPT09dC5kZXByZWNhdGVkfHxmbC5ib29sZWFuKHQuZGVwcmVjYXRlZCkpJiYodm9pZCAwPT09dC5jaGlsZHJlbnx8QXJyYXkuaXNBcnJheSh0LmNoaWxkcmVuKSkmJih2b2lkIDA9PT10LnRhZ3N8fEFycmF5LmlzQXJyYXkodC50YWdzKSl9LChRYT1aYXx8KFphPXt9KSkuRW1wdHk9IiIsUWEuUXVpY2tGaXg9InF1aWNrZml4IixRYS5SZWZhY3Rvcj0icmVmYWN0b3IiLFFhLlJlZmFjdG9yRXh0cmFjdD0icmVmYWN0b3IuZXh0cmFjdCIsUWEuUmVmYWN0b3JJbmxpbmU9InJlZmFjdG9yLmlubGluZSIsUWEuUmVmYWN0b3JSZXdyaXRlPSJyZWZhY3Rvci5yZXdyaXRlIixRYS5Tb3VyY2U9InNvdXJjZSIsUWEuU291cmNlT3JnYW5pemVJbXBvcnRzPSJzb3VyY2Uub3JnYW5pemVJbXBvcnRzIixRYS5Tb3VyY2VGaXhBbGw9InNvdXJjZS5maXhBbGwiLCh0bD1lbHx8KGVsPXt9KSkuY3JlYXRlPWZ1bmN0aW9uKGUsdCl7dmFyIG49e2RpYWdub3N0aWNzOmV9O3JldHVybiBudWxsIT10JiYobi5vbmx5PXQpLG59LHRsLmlzPWZ1bmN0aW9uKGUpe3ZhciB0PWU7cmV0dXJuIGZsLmRlZmluZWQodCkmJmZsLnR5cGVkQXJyYXkodC5kaWFnbm9zdGljcyxIcy5pcykmJih2b2lkIDA9PT10Lm9ubHl8fGZsLnR5cGVkQXJyYXkodC5vbmx5LGZsLnN0cmluZykpfSwocmw9bmx8fChubD17fSkpLmNyZWF0ZT1mdW5jdGlvbihlLHQsbil7dmFyIHI9e3RpdGxlOmV9LGk9ITA7cmV0dXJuInN0cmluZyI9PXR5cGVvZiB0PyhpPSExLHIua2luZD10KTpKcy5pcyh0KT9yLmNvbW1hbmQ9dDpyLmVkaXQ9dCxpJiZ2b2lkIDAhPT1uJiYoci5raW5kPW4pLHJ9LHJsLmlzPWZ1bmN0aW9uKGUpe3ZhciB0PWU7cmV0dXJuIHQmJmZsLnN0cmluZyh0LnRpdGxlKSYmKHZvaWQgMD09PXQuZGlhZ25vc3RpY3N8fGZsLnR5cGVkQXJyYXkodC5kaWFnbm9zdGljcyxIcy5pcykpJiYodm9pZCAwPT09dC5raW5kfHxmbC5zdHJpbmcodC5raW5kKSkmJih2b2lkIDAhPT10LmVkaXR8fHZvaWQgMCE9PXQuY29tbWFuZCkmJih2b2lkIDA9PT10LmNvbW1hbmR8fEpzLmlzKHQuY29tbWFuZCkpJiYodm9pZCAwPT09dC5pc1ByZWZlcnJlZHx8ZmwuYm9vbGVhbih0LmlzUHJlZmVycmVkKSkmJih2b2lkIDA9PT10LmVkaXR8fHBhLmlzKHQuZWRpdCkpfSwob2w9aWx8fChpbD17fSkpLmNyZWF0ZT1mdW5jdGlvbihlLHQpe3ZhciBuPXtyYW5nZTplfTtyZXR1cm4gZmwuZGVmaW5lZCh0KSYmKG4uZGF0YT10KSxufSxvbC5pcz1mdW5jdGlvbihlKXt2YXIgdD1lO3JldHVybiBmbC5kZWZpbmVkKHQpJiZrcy5pcyh0LnJhbmdlKSYmKGZsLnVuZGVmaW5lZCh0LmNvbW1hbmQpfHxKcy5pcyh0LmNvbW1hbmQpKX0sKGFsPXNsfHwoc2w9e30pKS5jcmVhdGU9ZnVuY3Rpb24oZSx0KXtyZXR1cm57dGFiU2l6ZTplLGluc2VydFNwYWNlczp0fX0sYWwuaXM9ZnVuY3Rpb24oZSl7dmFyIHQ9ZTtyZXR1cm4gZmwuZGVmaW5lZCh0KSYmZmwudWludGVnZXIodC50YWJTaXplKSYmZmwuYm9vbGVhbih0Lmluc2VydFNwYWNlcyl9LChjbD1sbHx8KGxsPXt9KSkuY3JlYXRlPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm57cmFuZ2U6ZSx0YXJnZXQ6dCxkYXRhOm59fSxjbC5pcz1mdW5jdGlvbihlKXt2YXIgdD1lO3JldHVybiBmbC5kZWZpbmVkKHQpJiZrcy5pcyh0LnJhbmdlKSYmKGZsLnVuZGVmaW5lZCh0LnRhcmdldCl8fGZsLnN0cmluZyh0LnRhcmdldCkpfSwoZGw9aGx8fChobD17fSkpLmNyZWF0ZT1mdW5jdGlvbihlLHQpe3JldHVybntyYW5nZTplLHBhcmVudDp0fX0sZGwuaXM9ZnVuY3Rpb24oZSl7dmFyIHQ9ZTtyZXR1cm4gdm9pZCAwIT09dCYma3MuaXModC5yYW5nZSkmJih2b2lkIDA9PT10LnBhcmVudHx8ZGwuaXModC5wYXJlbnQpKX0sZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChlLG4pe2lmKGUubGVuZ3RoPD0xKXJldHVybiBlO3ZhciByPWUubGVuZ3RoLzJ8MCxpPWUuc2xpY2UoMCxyKSxvPWUuc2xpY2Uocik7dChpLG4pLHQobyxuKTtmb3IodmFyIHM9MCxhPTAsbD0wO3M8aS5sZW5ndGgmJmE8by5sZW5ndGg7KXt2YXIgYz1uKGlbc10sb1thXSk7ZVtsKytdPWM8PTA/aVtzKytdOm9bYSsrXX1mb3IoO3M8aS5sZW5ndGg7KWVbbCsrXT1pW3MrK107Zm9yKDthPG8ubGVuZ3RoOyllW2wrK109b1thKytdO3JldHVybiBlfWUuY3JlYXRlPWZ1bmN0aW9uKGUsdCxuLHIpe3JldHVybiBuZXcgdmwoZSx0LG4scil9LGUuaXM9ZnVuY3Rpb24oZSl7dmFyIHQ9ZTtyZXR1cm4hIShmbC5kZWZpbmVkKHQpJiZmbC5zdHJpbmcodC51cmkpJiYoZmwudW5kZWZpbmVkKHQubGFuZ3VhZ2VJZCl8fGZsLnN0cmluZyh0Lmxhbmd1YWdlSWQpKSYmZmwudWludGVnZXIodC5saW5lQ291bnQpJiZmbC5mdW5jKHQuZ2V0VGV4dCkmJmZsLmZ1bmModC5wb3NpdGlvbkF0KSYmZmwuZnVuYyh0Lm9mZnNldEF0KSl9LGUuYXBwbHlFZGl0cz1mdW5jdGlvbihlLG4pe2Zvcih2YXIgcj1lLmdldFRleHQoKSxpPXQobiwoZnVuY3Rpb24oZSx0KXt2YXIgbj1lLnJhbmdlLnN0YXJ0LmxpbmUtdC5yYW5nZS5zdGFydC5saW5lO3JldHVybiAwPT09bj9lLnJhbmdlLnN0YXJ0LmNoYXJhY3Rlci10LnJhbmdlLnN0YXJ0LmNoYXJhY3RlcjpufSkpLG89ci5sZW5ndGgscz1pLmxlbmd0aC0xO3M+PTA7cy0tKXt2YXIgYT1pW3NdLGw9ZS5vZmZzZXRBdChhLnJhbmdlLnN0YXJ0KSxjPWUub2Zmc2V0QXQoYS5yYW5nZS5lbmQpO2lmKCEoYzw9bykpdGhyb3cgbmV3IEVycm9yKCJPdmVybGFwcGluZyBlZGl0Iik7cj1yLnN1YnN0cmluZygwLGwpK2EubmV3VGV4dCtyLnN1YnN0cmluZyhjLHIubGVuZ3RoKSxvPWx9cmV0dXJuIHJ9fShwbHx8KHBsPXt9KSk7dmFyIGZsLGdsLGJsLHZsPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQsbixyKXt0aGlzLl91cmk9ZSx0aGlzLl9sYW5ndWFnZUlkPXQsdGhpcy5fdmVyc2lvbj1uLHRoaXMuX2NvbnRlbnQ9cix0aGlzLl9saW5lT2Zmc2V0cz12b2lkIDB9cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwidXJpIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3VyaX0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsImxhbmd1YWdlSWQiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbGFuZ3VhZ2VJZH0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsInZlcnNpb24iLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fdmVyc2lvbn0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxlLnByb3RvdHlwZS5nZXRUZXh0PWZ1bmN0aW9uKGUpe2lmKGUpe3ZhciB0PXRoaXMub2Zmc2V0QXQoZS5zdGFydCksbj10aGlzLm9mZnNldEF0KGUuZW5kKTtyZXR1cm4gdGhpcy5fY29udGVudC5zdWJzdHJpbmcodCxuKX1yZXR1cm4gdGhpcy5fY29udGVudH0sZS5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uKGUsdCl7dGhpcy5fY29udGVudD1lLnRleHQsdGhpcy5fdmVyc2lvbj10LHRoaXMuX2xpbmVPZmZzZXRzPXZvaWQgMH0sZS5wcm90b3R5cGUuZ2V0TGluZU9mZnNldHM9ZnVuY3Rpb24oKXtpZih2b2lkIDA9PT10aGlzLl9saW5lT2Zmc2V0cyl7Zm9yKHZhciBlPVtdLHQ9dGhpcy5fY29udGVudCxuPSEwLHI9MDtyPHQubGVuZ3RoO3IrKyl7biYmKGUucHVzaChyKSxuPSExKTt2YXIgaT10LmNoYXJBdChyKTtuPSJcciI9PT1pfHwiXG4iPT09aSwiXHIiPT09aSYmcisxPHQubGVuZ3RoJiYiXG4iPT09dC5jaGFyQXQocisxKSYmcisrfW4mJnQubGVuZ3RoPjAmJmUucHVzaCh0Lmxlbmd0aCksdGhpcy5fbGluZU9mZnNldHM9ZX1yZXR1cm4gdGhpcy5fbGluZU9mZnNldHN9LGUucHJvdG90eXBlLnBvc2l0aW9uQXQ9ZnVuY3Rpb24oZSl7ZT1NYXRoLm1heChNYXRoLm1pbihlLHRoaXMuX2NvbnRlbnQubGVuZ3RoKSwwKTt2YXIgdD10aGlzLmdldExpbmVPZmZzZXRzKCksbj0wLHI9dC5sZW5ndGg7aWYoMD09PXIpcmV0dXJuIFNzLmNyZWF0ZSgwLGUpO2Zvcig7bjxyOyl7dmFyIGk9TWF0aC5mbG9vcigobityKS8yKTt0W2ldPmU/cj1pOm49aSsxfXZhciBvPW4tMTtyZXR1cm4gU3MuY3JlYXRlKG8sZS10W29dKX0sZS5wcm90b3R5cGUub2Zmc2V0QXQ9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5nZXRMaW5lT2Zmc2V0cygpO2lmKGUubGluZT49dC5sZW5ndGgpcmV0dXJuIHRoaXMuX2NvbnRlbnQubGVuZ3RoO2lmKGUubGluZTwwKXJldHVybiAwO3ZhciBuPXRbZS5saW5lXSxyPWUubGluZSsxPHQubGVuZ3RoP3RbZS5saW5lKzFdOnRoaXMuX2NvbnRlbnQubGVuZ3RoO3JldHVybiBNYXRoLm1heChNYXRoLm1pbihuK2UuY2hhcmFjdGVyLHIpLG4pfSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsImxpbmVDb3VudCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmdldExpbmVPZmZzZXRzKCkubGVuZ3RofSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLGV9KCk7Z2w9Zmx8fChmbD17fSksYmw9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZyxnbC5kZWZpbmVkPWZ1bmN0aW9uKGUpe3JldHVybiB2b2lkIDAhPT1lfSxnbC51bmRlZmluZWQ9ZnVuY3Rpb24oZSl7cmV0dXJuIHZvaWQgMD09PWV9LGdsLmJvb2xlYW49ZnVuY3Rpb24oZSl7cmV0dXJuITA9PT1lfHwhMT09PWV9LGdsLnN0cmluZz1mdW5jdGlvbihlKXtyZXR1cm4iW29iamVjdCBTdHJpbmddIj09PWJsLmNhbGwoZSl9LGdsLm51bWJlcj1mdW5jdGlvbihlKXtyZXR1cm4iW29iamVjdCBOdW1iZXJdIj09PWJsLmNhbGwoZSl9LGdsLm51bWJlclJhbmdlPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4iW29iamVjdCBOdW1iZXJdIj09PWJsLmNhbGwoZSkmJnQ8PWUmJmU8PW59LGdsLmludGVnZXI9ZnVuY3Rpb24oZSl7cmV0dXJuIltvYmplY3QgTnVtYmVyXSI9PT1ibC5jYWxsKGUpJiYtMjE0NzQ4MzY0ODw9ZSYmZTw9MjE0NzQ4MzY0N30sZ2wudWludGVnZXI9ZnVuY3Rpb24oZSl7cmV0dXJuIltvYmplY3QgTnVtYmVyXSI9PT1ibC5jYWxsKGUpJiYwPD1lJiZlPD0yMTQ3NDgzNjQ3fSxnbC5mdW5jPWZ1bmN0aW9uKGUpe3JldHVybiJbb2JqZWN0IEZ1bmN0aW9uXSI9PT1ibC5jYWxsKGUpfSxnbC5vYmplY3RMaXRlcmFsPWZ1bmN0aW9uKGUpe3JldHVybiBudWxsIT09ZSYmIm9iamVjdCI9PXR5cGVvZiBlfSxnbC50eXBlZEFycmF5PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSkmJmUuZXZlcnkodCl9O3ZhciB5bCx3bCx4bCxTbCxDbCxrbD1jbGFzc3tjb25zdHJ1Y3RvcihlLHQsbixyKXt0aGlzLl91cmk9ZSx0aGlzLl9sYW5ndWFnZUlkPXQsdGhpcy5fdmVyc2lvbj1uLHRoaXMuX2NvbnRlbnQ9cix0aGlzLl9saW5lT2Zmc2V0cz12b2lkIDB9Z2V0IHVyaSgpe3JldHVybiB0aGlzLl91cml9Z2V0IGxhbmd1YWdlSWQoKXtyZXR1cm4gdGhpcy5fbGFuZ3VhZ2VJZH1nZXQgdmVyc2lvbigpe3JldHVybiB0aGlzLl92ZXJzaW9ufWdldFRleHQoZSl7aWYoZSl7Y29uc3QgdD10aGlzLm9mZnNldEF0KGUuc3RhcnQpLG49dGhpcy5vZmZzZXRBdChlLmVuZCk7cmV0dXJuIHRoaXMuX2NvbnRlbnQuc3Vic3RyaW5nKHQsbil9cmV0dXJuIHRoaXMuX2NvbnRlbnR9dXBkYXRlKGUsdCl7Zm9yKGxldCB0IG9mIGUpaWYoa2wuaXNJbmNyZW1lbnRhbCh0KSl7Y29uc3QgZT1SbCh0LnJhbmdlKSxuPXRoaXMub2Zmc2V0QXQoZS5zdGFydCkscj10aGlzLm9mZnNldEF0KGUuZW5kKTt0aGlzLl9jb250ZW50PXRoaXMuX2NvbnRlbnQuc3Vic3RyaW5nKDAsbikrdC50ZXh0K3RoaXMuX2NvbnRlbnQuc3Vic3RyaW5nKHIsdGhpcy5fY29udGVudC5sZW5ndGgpO2NvbnN0IGk9TWF0aC5tYXgoZS5zdGFydC5saW5lLDApLG89TWF0aC5tYXgoZS5lbmQubGluZSwwKTtsZXQgcz10aGlzLl9saW5lT2Zmc2V0cztjb25zdCBhPUVsKHQudGV4dCwhMSxuKTtpZihvLWk9PT1hLmxlbmd0aClmb3IobGV0IGU9MCx0PWEubGVuZ3RoO2U8dDtlKyspc1tlK2krMV09YVtlXTtlbHNlIGEubGVuZ3RoPDFlND9zLnNwbGljZShpKzEsby1pLC4uLmEpOnRoaXMuX2xpbmVPZmZzZXRzPXM9cy5zbGljZSgwLGkrMSkuY29uY2F0KGEscy5zbGljZShvKzEpKTtjb25zdCBsPXQudGV4dC5sZW5ndGgtKHItbik7aWYoMCE9PWwpZm9yKGxldCBlPWkrMSthLmxlbmd0aCx0PXMubGVuZ3RoO2U8dDtlKyspc1tlXT1zW2VdK2x9ZWxzZXtpZigha2wuaXNGdWxsKHQpKXRocm93IG5ldyBFcnJvcigiVW5rbm93biBjaGFuZ2UgZXZlbnQgcmVjZWl2ZWQiKTt0aGlzLl9jb250ZW50PXQudGV4dCx0aGlzLl9saW5lT2Zmc2V0cz12b2lkIDB9dGhpcy5fdmVyc2lvbj10fWdldExpbmVPZmZzZXRzKCl7cmV0dXJuIHZvaWQgMD09PXRoaXMuX2xpbmVPZmZzZXRzJiYodGhpcy5fbGluZU9mZnNldHM9RWwodGhpcy5fY29udGVudCwhMCkpLHRoaXMuX2xpbmVPZmZzZXRzfXBvc2l0aW9uQXQoZSl7ZT1NYXRoLm1heChNYXRoLm1pbihlLHRoaXMuX2NvbnRlbnQubGVuZ3RoKSwwKTtsZXQgdD10aGlzLmdldExpbmVPZmZzZXRzKCksbj0wLHI9dC5sZW5ndGg7aWYoMD09PXIpcmV0dXJue2xpbmU6MCxjaGFyYWN0ZXI6ZX07Zm9yKDtuPHI7KXtsZXQgaT1NYXRoLmZsb29yKChuK3IpLzIpO3RbaV0+ZT9yPWk6bj1pKzF9bGV0IGk9bi0xO3JldHVybntsaW5lOmksY2hhcmFjdGVyOmUtdFtpXX19b2Zmc2V0QXQoZSl7bGV0IHQ9dGhpcy5nZXRMaW5lT2Zmc2V0cygpO2lmKGUubGluZT49dC5sZW5ndGgpcmV0dXJuIHRoaXMuX2NvbnRlbnQubGVuZ3RoO2lmKGUubGluZTwwKXJldHVybiAwO2xldCBuPXRbZS5saW5lXSxyPWUubGluZSsxPHQubGVuZ3RoP3RbZS5saW5lKzFdOnRoaXMuX2NvbnRlbnQubGVuZ3RoO3JldHVybiBNYXRoLm1heChNYXRoLm1pbihuK2UuY2hhcmFjdGVyLHIpLG4pfWdldCBsaW5lQ291bnQoKXtyZXR1cm4gdGhpcy5nZXRMaW5lT2Zmc2V0cygpLmxlbmd0aH1zdGF0aWMgaXNJbmNyZW1lbnRhbChlKXtsZXQgdD1lO3JldHVybiBudWxsIT10JiYic3RyaW5nIj09dHlwZW9mIHQudGV4dCYmdm9pZCAwIT09dC5yYW5nZSYmKHZvaWQgMD09PXQucmFuZ2VMZW5ndGh8fCJudW1iZXIiPT10eXBlb2YgdC5yYW5nZUxlbmd0aCl9c3RhdGljIGlzRnVsbChlKXtsZXQgdD1lO3JldHVybiBudWxsIT10JiYic3RyaW5nIj09dHlwZW9mIHQudGV4dCYmdm9pZCAwPT09dC5yYW5nZSYmdm9pZCAwPT09dC5yYW5nZUxlbmd0aH19O2Z1bmN0aW9uIF9sKGUsdCl7aWYoZS5sZW5ndGg8PTEpcmV0dXJuIGU7Y29uc3Qgbj1lLmxlbmd0aC8yfDAscj1lLnNsaWNlKDAsbiksaT1lLnNsaWNlKG4pO19sKHIsdCksX2woaSx0KTtsZXQgbz0wLHM9MCxhPTA7Zm9yKDtvPHIubGVuZ3RoJiZzPGkubGVuZ3RoOyl7bGV0IG49dChyW29dLGlbc10pO2VbYSsrXT1uPD0wP3JbbysrXTppW3MrK119Zm9yKDtvPHIubGVuZ3RoOyllW2ErK109cltvKytdO2Zvcig7czxpLmxlbmd0aDspZVthKytdPWlbcysrXTtyZXR1cm4gZX1mdW5jdGlvbiBFbChlLHQsbj0wKXtjb25zdCByPXQ/W25dOltdO2ZvcihsZXQgdD0wO3Q8ZS5sZW5ndGg7dCsrKXtsZXQgaT1lLmNoYXJDb2RlQXQodCk7MTMhPT1pJiYxMCE9PWl8fCgxMz09PWkmJnQrMTxlLmxlbmd0aCYmMTA9PT1lLmNoYXJDb2RlQXQodCsxKSYmdCsrLHIucHVzaChuK3QrMSkpfXJldHVybiByfWZ1bmN0aW9uIFJsKGUpe2NvbnN0IHQ9ZS5zdGFydCxuPWUuZW5kO3JldHVybiB0LmxpbmU+bi5saW5lfHx0LmxpbmU9PT1uLmxpbmUmJnQuY2hhcmFjdGVyPm4uY2hhcmFjdGVyP3tzdGFydDpuLGVuZDp0fTplfWZ1bmN0aW9uIEZsKGUpe2NvbnN0IHQ9UmwoZS5yYW5nZSk7cmV0dXJuIHQhPT1lLnJhbmdlP3tuZXdUZXh0OmUubmV3VGV4dCxyYW5nZTp0fTplfSh3bD15bHx8KHlsPXt9KSkuY3JlYXRlPWZ1bmN0aW9uKGUsdCxuLHIpe3JldHVybiBuZXcga2woZSx0LG4scil9LHdsLnVwZGF0ZT1mdW5jdGlvbihlLHQsbil7aWYoZSBpbnN0YW5jZW9mIGtsKXJldHVybiBlLnVwZGF0ZSh0LG4pLGU7dGhyb3cgbmV3IEVycm9yKCJUZXh0RG9jdW1lbnQudXBkYXRlOiBkb2N1bWVudCBtdXN0IGJlIGNyZWF0ZWQgYnkgVGV4dERvY3VtZW50LmNyZWF0ZSIpfSx3bC5hcHBseUVkaXRzPWZ1bmN0aW9uKGUsdCl7bGV0IG49ZS5nZXRUZXh0KCkscj1fbCh0Lm1hcChGbCksKChlLHQpPT57bGV0IG49ZS5yYW5nZS5zdGFydC5saW5lLXQucmFuZ2Uuc3RhcnQubGluZTtyZXR1cm4gMD09PW4/ZS5yYW5nZS5zdGFydC5jaGFyYWN0ZXItdC5yYW5nZS5zdGFydC5jaGFyYWN0ZXI6bn0pKSxpPTA7Y29uc3Qgbz1bXTtmb3IoY29uc3QgdCBvZiByKXtsZXQgcj1lLm9mZnNldEF0KHQucmFuZ2Uuc3RhcnQpO2lmKHI8aSl0aHJvdyBuZXcgRXJyb3IoIk92ZXJsYXBwaW5nIGVkaXQiKTtyPmkmJm8ucHVzaChuLnN1YnN0cmluZyhpLHIpKSx0Lm5ld1RleHQubGVuZ3RoJiZvLnB1c2godC5uZXdUZXh0KSxpPWUub2Zmc2V0QXQodC5yYW5nZS5lbmQpfXJldHVybiBvLnB1c2gobi5zdWJzdHIoaSkpLG8uam9pbigiIil9LCh4bHx8KHhsPXt9KSkuTEFURVNUPXt0ZXh0RG9jdW1lbnQ6e2NvbXBsZXRpb246e2NvbXBsZXRpb25JdGVtOntkb2N1bWVudGF0aW9uRm9ybWF0OltrYS5NYXJrZG93bixrYS5QbGFpblRleHRdfX0saG92ZXI6e2NvbnRlbnRGb3JtYXQ6W2thLk1hcmtkb3duLGthLlBsYWluVGV4dF19fX0sKENsPVNsfHwoU2w9e30pKVtDbC5Vbmtub3duPTBdPSJVbmtub3duIixDbFtDbC5GaWxlPTFdPSJGaWxlIixDbFtDbC5EaXJlY3Rvcnk9Ml09IkRpcmVjdG9yeSIsQ2xbQ2wuU3ltYm9saWNMaW5rPTY0XT0iU3ltYm9saWNMaW5rIjt2YXIgTmw9e0U6IkVkZ2UiLEZGOiJGaXJlZm94IixTOiJTYWZhcmkiLEM6IkNocm9tZSIsSUU6IklFIixPOiJPcGVyYSJ9O2Z1bmN0aW9uIERsKGUpe3N3aXRjaChlKXtjYXNlImV4cGVyaW1lbnRhbCI6cmV0dXJuIuKaoO+4jyBQcm9wZXJ0eSBpcyBleHBlcmltZW50YWwuIEJlIGNhdXRpb3VzIHdoZW4gdXNpbmcgaXQu77iPXG5cbiI7Y2FzZSJub25zdGFuZGFyZCI6cmV0dXJuIvCfmqjvuI8gUHJvcGVydHkgaXMgbm9uc3RhbmRhcmQuIEF2b2lkIHVzaW5nIGl0LlxuXG4iO2Nhc2Uib2Jzb2xldGUiOnJldHVybiLwn5qo77iP77iP77iPIFByb3BlcnR5IGlzIG9ic29sZXRlLiBBdm9pZCB1c2luZyBpdC5cblxuIjtkZWZhdWx0OnJldHVybiIifX1mdW5jdGlvbiBUbChlLHQsbil7dmFyIHI7aWYoIiIhPT0ocj10P3traW5kOiJtYXJrZG93biIsdmFsdWU6emwoZSxuKX06e2tpbmQ6InBsYWludGV4dCIsdmFsdWU6TWwoZSxuKX0pLnZhbHVlKXJldHVybiByfWZ1bmN0aW9uIEFsKGUpe3JldHVybihlPWUucmVwbGFjZSgvW1xcYCpfe31bXF0oKSMrXC0uIV0vZywiXFwkJiIpKS5yZXBsYWNlKC88L2csIiZsdDsiKS5yZXBsYWNlKC8+L2csIiZndDsiKX1mdW5jdGlvbiBNbChlLHQpe2lmKCFlLmRlc2NyaXB0aW9ufHwiIj09PWUuZGVzY3JpcHRpb24pcmV0dXJuIiI7aWYoInN0cmluZyIhPXR5cGVvZiBlLmRlc2NyaXB0aW9uKXJldHVybiBlLmRlc2NyaXB0aW9uLnZhbHVlO3ZhciBuPSIiO2lmKCExIT09KG51bGw9PXQ/dm9pZCAwOnQuZG9jdW1lbnRhdGlvbikpe2Uuc3RhdHVzJiYobis9RGwoZS5zdGF0dXMpKSxuKz1lLmRlc2NyaXB0aW9uO3ZhciByPUlsKGUuYnJvd3NlcnMpO3ImJihuKz0iXG4oIityKyIpIiksInN5bnRheCJpbiBlJiYobis9IlxuXG5TeW50YXg6ICIuY29uY2F0KGUuc3ludGF4KSl9cmV0dXJuIGUucmVmZXJlbmNlcyYmZS5yZWZlcmVuY2VzLmxlbmd0aD4wJiYhMSE9PShudWxsPT10P3ZvaWQgMDp0LnJlZmVyZW5jZXMpJiYobi5sZW5ndGg+MCYmKG4rPSJcblxuIiksbis9ZS5yZWZlcmVuY2VzLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIiIuY29uY2F0KGUubmFtZSwiOiAiKS5jb25jYXQoZS51cmwpfSkpLmpvaW4oIiB8ICIpKSxufWZ1bmN0aW9uIHpsKGUsdCl7aWYoIWUuZGVzY3JpcHRpb258fCIiPT09ZS5kZXNjcmlwdGlvbilyZXR1cm4iIjt2YXIgbj0iIjtpZighMSE9PShudWxsPT10P3ZvaWQgMDp0LmRvY3VtZW50YXRpb24pKXtlLnN0YXR1cyYmKG4rPURsKGUuc3RhdHVzKSksInN0cmluZyI9PXR5cGVvZiBlLmRlc2NyaXB0aW9uP24rPUFsKGUuZGVzY3JpcHRpb24pOm4rPWUuZGVzY3JpcHRpb24ua2luZD09PWthLk1hcmtkb3duP2UuZGVzY3JpcHRpb24udmFsdWU6QWwoZS5kZXNjcmlwdGlvbi52YWx1ZSk7dmFyIHI9SWwoZS5icm93c2Vycyk7ciYmKG4rPSJcblxuKCIrQWwocikrIikiKSwic3ludGF4ImluIGUmJmUuc3ludGF4JiYobis9IlxuXG5TeW50YXg6ICIuY29uY2F0KEFsKGUuc3ludGF4KSkpfXJldHVybiBlLnJlZmVyZW5jZXMmJmUucmVmZXJlbmNlcy5sZW5ndGg+MCYmITEhPT0obnVsbD09dD92b2lkIDA6dC5yZWZlcmVuY2VzKSYmKG4ubGVuZ3RoPjAmJihuKz0iXG5cbiIpLG4rPWUucmVmZXJlbmNlcy5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiJbIi5jb25jYXQoZS5uYW1lLCJdKCIpLmNvbmNhdChlLnVybCwiKSIpfSkpLmpvaW4oIiB8ICIpKSxufWZ1bmN0aW9uIElsKGUpe3JldHVybiB2b2lkIDA9PT1lJiYoZT1bXSksMD09PWUubGVuZ3RoP251bGw6ZS5tYXAoKGZ1bmN0aW9uKGUpe3ZhciB0PSIiLG49ZS5tYXRjaCgvKFtBLVpdKykoXGQrKT8vKSxyPW5bMV0saT1uWzJdO3JldHVybiByIGluIE5sJiYodCs9Tmxbcl0pLGkmJih0Kz0iICIraSksdH0pKS5qb2luKCIsICIpfXZhciBQbD1icygpLExsPVt7ZnVuYzoicmdiKCRyZWQsICRncmVlbiwgJGJsdWUpIixkZXNjOlBsKCJjc3MuYnVpbHRpbi5yZ2IiLCJDcmVhdGVzIGEgQ29sb3IgZnJvbSByZWQsIGdyZWVuLCBhbmQgYmx1ZSB2YWx1ZXMuIil9LHtmdW5jOiJyZ2JhKCRyZWQsICRncmVlbiwgJGJsdWUsICRhbHBoYSkiLGRlc2M6UGwoImNzcy5idWlsdGluLnJnYmEiLCJDcmVhdGVzIGEgQ29sb3IgZnJvbSByZWQsIGdyZWVuLCBibHVlLCBhbmQgYWxwaGEgdmFsdWVzLiIpfSx7ZnVuYzoiaHNsKCRodWUsICRzYXR1cmF0aW9uLCAkbGlnaHRuZXNzKSIsZGVzYzpQbCgiY3NzLmJ1aWx0aW4uaHNsIiwiQ3JlYXRlcyBhIENvbG9yIGZyb20gaHVlLCBzYXR1cmF0aW9uLCBhbmQgbGlnaHRuZXNzIHZhbHVlcy4iKX0se2Z1bmM6ImhzbGEoJGh1ZSwgJHNhdHVyYXRpb24sICRsaWdodG5lc3MsICRhbHBoYSkiLGRlc2M6UGwoImNzcy5idWlsdGluLmhzbGEiLCJDcmVhdGVzIGEgQ29sb3IgZnJvbSBodWUsIHNhdHVyYXRpb24sIGxpZ2h0bmVzcywgYW5kIGFscGhhIHZhbHVlcy4iKX0se2Z1bmM6Imh3YigkaHVlICR3aGl0ZSAkYmxhY2spIixkZXNjOlBsKCJjc3MuYnVpbHRpbi5od2IiLCJDcmVhdGVzIGEgQ29sb3IgZnJvbSBodWUsIHdoaXRlIGFuZCBibGFjay4iKX1dLE9sPXthbGljZWJsdWU6IiNmMGY4ZmYiLGFudGlxdWV3aGl0ZToiI2ZhZWJkNyIsYXF1YToiIzAwZmZmZiIsYXF1YW1hcmluZToiIzdmZmZkNCIsYXp1cmU6IiNmMGZmZmYiLGJlaWdlOiIjZjVmNWRjIixiaXNxdWU6IiNmZmU0YzQiLGJsYWNrOiIjMDAwMDAwIixibGFuY2hlZGFsbW9uZDoiI2ZmZWJjZCIsYmx1ZToiIzAwMDBmZiIsYmx1ZXZpb2xldDoiIzhhMmJlMiIsYnJvd246IiNhNTJhMmEiLGJ1cmx5d29vZDoiI2RlYjg4NyIsY2FkZXRibHVlOiIjNWY5ZWEwIixjaGFydHJldXNlOiIjN2ZmZjAwIixjaG9jb2xhdGU6IiNkMjY5MWUiLGNvcmFsOiIjZmY3ZjUwIixjb3JuZmxvd2VyYmx1ZToiIzY0OTVlZCIsY29ybnNpbGs6IiNmZmY4ZGMiLGNyaW1zb246IiNkYzE0M2MiLGN5YW46IiMwMGZmZmYiLGRhcmtibHVlOiIjMDAwMDhiIixkYXJrY3lhbjoiIzAwOGI4YiIsZGFya2dvbGRlbnJvZDoiI2I4ODYwYiIsZGFya2dyYXk6IiNhOWE5YTkiLGRhcmtncmV5OiIjYTlhOWE5IixkYXJrZ3JlZW46IiMwMDY0MDAiLGRhcmtraGFraToiI2JkYjc2YiIsZGFya21hZ2VudGE6IiM4YjAwOGIiLGRhcmtvbGl2ZWdyZWVuOiIjNTU2YjJmIixkYXJrb3JhbmdlOiIjZmY4YzAwIixkYXJrb3JjaGlkOiIjOTkzMmNjIixkYXJrcmVkOiIjOGIwMDAwIixkYXJrc2FsbW9uOiIjZTk5NjdhIixkYXJrc2VhZ3JlZW46IiM4ZmJjOGYiLGRhcmtzbGF0ZWJsdWU6IiM0ODNkOGIiLGRhcmtzbGF0ZWdyYXk6IiMyZjRmNGYiLGRhcmtzbGF0ZWdyZXk6IiMyZjRmNGYiLGRhcmt0dXJxdW9pc2U6IiMwMGNlZDEiLGRhcmt2aW9sZXQ6IiM5NDAwZDMiLGRlZXBwaW5rOiIjZmYxNDkzIixkZWVwc2t5Ymx1ZToiIzAwYmZmZiIsZGltZ3JheToiIzY5Njk2OSIsZGltZ3JleToiIzY5Njk2OSIsZG9kZ2VyYmx1ZToiIzFlOTBmZiIsZmlyZWJyaWNrOiIjYjIyMjIyIixmbG9yYWx3aGl0ZToiI2ZmZmFmMCIsZm9yZXN0Z3JlZW46IiMyMjhiMjIiLGZ1Y2hzaWE6IiNmZjAwZmYiLGdhaW5zYm9ybzoiI2RjZGNkYyIsZ2hvc3R3aGl0ZToiI2Y4ZjhmZiIsZ29sZDoiI2ZmZDcwMCIsZ29sZGVucm9kOiIjZGFhNTIwIixncmF5OiIjODA4MDgwIixncmV5OiIjODA4MDgwIixncmVlbjoiIzAwODAwMCIsZ3JlZW55ZWxsb3c6IiNhZGZmMmYiLGhvbmV5ZGV3OiIjZjBmZmYwIixob3RwaW5rOiIjZmY2OWI0IixpbmRpYW5yZWQ6IiNjZDVjNWMiLGluZGlnbzoiIzRiMDA4MiIsaXZvcnk6IiNmZmZmZjAiLGtoYWtpOiIjZjBlNjhjIixsYXZlbmRlcjoiI2U2ZTZmYSIsbGF2ZW5kZXJibHVzaDoiI2ZmZjBmNSIsbGF3bmdyZWVuOiIjN2NmYzAwIixsZW1vbmNoaWZmb246IiNmZmZhY2QiLGxpZ2h0Ymx1ZToiI2FkZDhlNiIsbGlnaHRjb3JhbDoiI2YwODA4MCIsbGlnaHRjeWFuOiIjZTBmZmZmIixsaWdodGdvbGRlbnJvZHllbGxvdzoiI2ZhZmFkMiIsbGlnaHRncmF5OiIjZDNkM2QzIixsaWdodGdyZXk6IiNkM2QzZDMiLGxpZ2h0Z3JlZW46IiM5MGVlOTAiLGxpZ2h0cGluazoiI2ZmYjZjMSIsbGlnaHRzYWxtb246IiNmZmEwN2EiLGxpZ2h0c2VhZ3JlZW46IiMyMGIyYWEiLGxpZ2h0c2t5Ymx1ZToiIzg3Y2VmYSIsbGlnaHRzbGF0ZWdyYXk6IiM3Nzg4OTkiLGxpZ2h0c2xhdGVncmV5OiIjNzc4ODk5IixsaWdodHN0ZWVsYmx1ZToiI2IwYzRkZSIsbGlnaHR5ZWxsb3c6IiNmZmZmZTAiLGxpbWU6IiMwMGZmMDAiLGxpbWVncmVlbjoiIzMyY2QzMiIsbGluZW46IiNmYWYwZTYiLG1hZ2VudGE6IiNmZjAwZmYiLG1hcm9vbjoiIzgwMDAwMCIsbWVkaXVtYXF1YW1hcmluZToiIzY2Y2RhYSIsbWVkaXVtYmx1ZToiIzAwMDBjZCIsbWVkaXVtb3JjaGlkOiIjYmE1NWQzIixtZWRpdW1wdXJwbGU6IiM5MzcwZDgiLG1lZGl1bXNlYWdyZWVuOiIjM2NiMzcxIixtZWRpdW1zbGF0ZWJsdWU6IiM3YjY4ZWUiLG1lZGl1bXNwcmluZ2dyZWVuOiIjMDBmYTlhIixtZWRpdW10dXJxdW9pc2U6IiM0OGQxY2MiLG1lZGl1bXZpb2xldHJlZDoiI2M3MTU4NSIsbWlkbmlnaHRibHVlOiIjMTkxOTcwIixtaW50Y3JlYW06IiNmNWZmZmEiLG1pc3R5cm9zZToiI2ZmZTRlMSIsbW9jY2FzaW46IiNmZmU0YjUiLG5hdmFqb3doaXRlOiIjZmZkZWFkIixuYXZ5OiIjMDAwMDgwIixvbGRsYWNlOiIjZmRmNWU2IixvbGl2ZToiIzgwODAwMCIsb2xpdmVkcmFiOiIjNmI4ZTIzIixvcmFuZ2U6IiNmZmE1MDAiLG9yYW5nZXJlZDoiI2ZmNDUwMCIsb3JjaGlkOiIjZGE3MGQ2IixwYWxlZ29sZGVucm9kOiIjZWVlOGFhIixwYWxlZ3JlZW46IiM5OGZiOTgiLHBhbGV0dXJxdW9pc2U6IiNhZmVlZWUiLHBhbGV2aW9sZXRyZWQ6IiNkODcwOTMiLHBhcGF5YXdoaXA6IiNmZmVmZDUiLHBlYWNocHVmZjoiI2ZmZGFiOSIscGVydToiI2NkODUzZiIscGluazoiI2ZmYzBjYiIscGx1bToiI2RkYTBkZCIscG93ZGVyYmx1ZToiI2IwZTBlNiIscHVycGxlOiIjODAwMDgwIixyZWQ6IiNmZjAwMDAiLHJlYmVjY2FwdXJwbGU6IiM2NjMzOTkiLHJvc3licm93bjoiI2JjOGY4ZiIscm95YWxibHVlOiIjNDE2OWUxIixzYWRkbGVicm93bjoiIzhiNDUxMyIsc2FsbW9uOiIjZmE4MDcyIixzYW5keWJyb3duOiIjZjRhNDYwIixzZWFncmVlbjoiIzJlOGI1NyIsc2Vhc2hlbGw6IiNmZmY1ZWUiLHNpZW5uYToiI2EwNTIyZCIsc2lsdmVyOiIjYzBjMGMwIixza3libHVlOiIjODdjZWViIixzbGF0ZWJsdWU6IiM2YTVhY2QiLHNsYXRlZ3JheToiIzcwODA5MCIsc2xhdGVncmV5OiIjNzA4MDkwIixzbm93OiIjZmZmYWZhIixzcHJpbmdncmVlbjoiIzAwZmY3ZiIsc3RlZWxibHVlOiIjNDY4MmI0Iix0YW46IiNkMmI0OGMiLHRlYWw6IiMwMDgwODAiLHRoaXN0bGU6IiNkOGJmZDgiLHRvbWF0bzoiI2ZmNjM0NyIsdHVycXVvaXNlOiIjNDBlMGQwIix2aW9sZXQ6IiNlZTgyZWUiLHdoZWF0OiIjZjVkZWIzIix3aGl0ZToiI2ZmZmZmZiIsd2hpdGVzbW9rZToiI2Y1ZjVmNSIseWVsbG93OiIjZmZmZjAwIix5ZWxsb3dncmVlbjoiIzlhY2QzMiJ9LFdsPXtjdXJyZW50Q29sb3I6IlRoZSB2YWx1ZSBvZiB0aGUgJ2NvbG9yJyBwcm9wZXJ0eS4gVGhlIGNvbXB1dGVkIHZhbHVlIG9mIHRoZSAnY3VycmVudENvbG9yJyBrZXl3b3JkIGlzIHRoZSBjb21wdXRlZCB2YWx1ZSBvZiB0aGUgJ2NvbG9yJyBwcm9wZXJ0eS4gSWYgdGhlICdjdXJyZW50Q29sb3InIGtleXdvcmQgaXMgc2V0IG9uIHRoZSAnY29sb3InIHByb3BlcnR5IGl0c2VsZiwgaXQgaXMgdHJlYXRlZCBhcyAnY29sb3I6aW5oZXJpdCcgYXQgcGFyc2UgdGltZS4iLHRyYW5zcGFyZW50OiJGdWxseSB0cmFuc3BhcmVudC4gVGhpcyBrZXl3b3JkIGNhbiBiZSBjb25zaWRlcmVkIGEgc2hvcnRoYW5kIGZvciByZ2JhKDAsMCwwLDApIHdoaWNoIGlzIGl0cyBjb21wdXRlZCB2YWx1ZS4ifTtmdW5jdGlvbiBWbChlLHQpe3ZhciBuPWUuZ2V0VGV4dCgpLm1hdGNoKC9eKFstK10/WzAtOV0qXC4/WzAtOV0rKSglPykkLyk7aWYobil7blsyXSYmKHQ9MTAwKTt2YXIgcj1wYXJzZUZsb2F0KG5bMV0pL3Q7aWYocj49MCYmcjw9MSlyZXR1cm4gcn10aHJvdyBuZXcgRXJyb3J9ZnVuY3Rpb24gVWwoZSl7dmFyIHQ9ZS5nZXRUZXh0KCksbj10Lm1hdGNoKC9eKFstK10/WzAtOV0qXC4/WzAtOV0rKShkZWd8cmFkfGdyYWR8dHVybik/JC8pO2lmKG4pc3dpdGNoKG5bMl0pe2Nhc2UiZGVnIjpyZXR1cm4gcGFyc2VGbG9hdCh0KSUzNjA7Y2FzZSJyYWQiOnJldHVybiAxODAqcGFyc2VGbG9hdCh0KS9NYXRoLlBJJTM2MDtjYXNlImdyYWQiOnJldHVybi45KnBhcnNlRmxvYXQodCklMzYwO2Nhc2UidHVybiI6cmV0dXJuIDM2MCpwYXJzZUZsb2F0KHQpJTM2MDtkZWZhdWx0OmlmKHZvaWQgMD09PW5bMl0pcmV0dXJuIHBhcnNlRmxvYXQodCklMzYwfXRocm93IG5ldyBFcnJvcn12YXIgQmw9NDgsS2w9NTcsamw9NjUscWw9OTcsJGw9MTAyO2Z1bmN0aW9uIEhsKGUpe3JldHVybiBlPEJsPzA6ZTw9S2w/ZS1CbDooZTxxbCYmKGUrPXFsLWpsKSxlPj1xbCYmZTw9JGw/ZS1xbCsxMDowKX1mdW5jdGlvbiBHbChlKXtpZigiIyIhPT1lWzBdKXJldHVybiBudWxsO3N3aXRjaChlLmxlbmd0aCl7Y2FzZSA0OnJldHVybntyZWQ6MTcqSGwoZS5jaGFyQ29kZUF0KDEpKS8yNTUsZ3JlZW46MTcqSGwoZS5jaGFyQ29kZUF0KDIpKS8yNTUsYmx1ZToxNypIbChlLmNoYXJDb2RlQXQoMykpLzI1NSxhbHBoYToxfTtjYXNlIDU6cmV0dXJue3JlZDoxNypIbChlLmNoYXJDb2RlQXQoMSkpLzI1NSxncmVlbjoxNypIbChlLmNoYXJDb2RlQXQoMikpLzI1NSxibHVlOjE3KkhsKGUuY2hhckNvZGVBdCgzKSkvMjU1LGFscGhhOjE3KkhsKGUuY2hhckNvZGVBdCg0KSkvMjU1fTtjYXNlIDc6cmV0dXJue3JlZDooMTYqSGwoZS5jaGFyQ29kZUF0KDEpKStIbChlLmNoYXJDb2RlQXQoMikpKS8yNTUsZ3JlZW46KDE2KkhsKGUuY2hhckNvZGVBdCgzKSkrSGwoZS5jaGFyQ29kZUF0KDQpKSkvMjU1LGJsdWU6KDE2KkhsKGUuY2hhckNvZGVBdCg1KSkrSGwoZS5jaGFyQ29kZUF0KDYpKSkvMjU1LGFscGhhOjF9O2Nhc2UgOTpyZXR1cm57cmVkOigxNipIbChlLmNoYXJDb2RlQXQoMSkpK0hsKGUuY2hhckNvZGVBdCgyKSkpLzI1NSxncmVlbjooMTYqSGwoZS5jaGFyQ29kZUF0KDMpKStIbChlLmNoYXJDb2RlQXQoNCkpKS8yNTUsYmx1ZTooMTYqSGwoZS5jaGFyQ29kZUF0KDUpKStIbChlLmNoYXJDb2RlQXQoNikpKS8yNTUsYWxwaGE6KDE2KkhsKGUuY2hhckNvZGVBdCg3KSkrSGwoZS5jaGFyQ29kZUF0KDgpKSkvMjU1fX1yZXR1cm4gbnVsbH1mdW5jdGlvbiBKbChlLHQsbixyKXtpZih2b2lkIDA9PT1yJiYocj0xKSwwPT09dClyZXR1cm57cmVkOm4sZ3JlZW46bixibHVlOm4sYWxwaGE6cn07dmFyIGk9ZnVuY3Rpb24oZSx0LG4pe2Zvcig7bjwwOyluKz02O2Zvcig7bj49Njspbi09NjtyZXR1cm4gbjwxPyh0LWUpKm4rZTpuPDM/dDpuPDQ/KHQtZSkqKDQtbikrZTplfSxvPW48PS41P24qKHQrMSk6bit0LW4qdCxzPTIqbi1vO3JldHVybntyZWQ6aShzLG8sKGUvPTYwKSsyKSxncmVlbjppKHMsbyxlKSxibHVlOmkocyxvLGUtMiksYWxwaGE6cn19ZnVuY3Rpb24gWGwoZSl7dmFyIHQ9ZS5yZWQsbj1lLmdyZWVuLHI9ZS5ibHVlLGk9ZS5hbHBoYSxvPU1hdGgubWF4KHQsbixyKSxzPU1hdGgubWluKHQsbixyKSxhPTAsbD0wLGM9KHMrbykvMixoPW8tcztpZihoPjApe3N3aXRjaChsPU1hdGgubWluKGM8PS41P2gvKDIqYyk6aC8oMi0yKmMpLDEpLG8pe2Nhc2UgdDphPShuLXIpL2grKG48cj82OjApO2JyZWFrO2Nhc2UgbjphPShyLXQpL2grMjticmVhaztjYXNlIHI6YT0odC1uKS9oKzR9YSo9NjAsYT1NYXRoLnJvdW5kKGEpfXJldHVybntoOmEsczpsLGw6YyxhOml9fWZ1bmN0aW9uIFlsKGUpe2lmKGUudHlwZT09PWppLkhleENvbG9yVmFsdWUpcmV0dXJuIEdsKGUuZ2V0VGV4dCgpKTtpZihlLnR5cGU9PT1qaS5GdW5jdGlvbil7dmFyIHQ9ZSxuPXQuZ2V0TmFtZSgpLHI9dC5nZXRBcmd1bWVudHMoKS5nZXRDaGlsZHJlbigpO2lmKDE9PT1yLmxlbmd0aCl7dmFyIGk9clswXS5nZXRDaGlsZHJlbigpO2lmKDE9PT1pLmxlbmd0aCYmaVswXS50eXBlPT09amkuRXhwcmVzc2lvbiYmMz09PShyPWlbMF0uZ2V0Q2hpbGRyZW4oKSkubGVuZ3RoKXt2YXIgbz1yWzJdO2lmKG8gaW5zdGFuY2VvZiBqbyl7dmFyIHM9by5nZXRMZWZ0KCksYT1vLmdldFJpZ2h0KCksbD1vLmdldE9wZXJhdG9yKCk7cyYmYSYmbCYmbC5tYXRjaGVzKCIvIikmJihyPVtyWzBdLHJbMV0scyxhXSl9fX1pZighbnx8ci5sZW5ndGg8M3x8ci5sZW5ndGg+NClyZXR1cm4gbnVsbDt0cnl7dmFyIGM9ND09PXIubGVuZ3RoP1ZsKHJbM10sMSk6MTtpZigicmdiIj09PW58fCJyZ2JhIj09PW4pcmV0dXJue3JlZDpWbChyWzBdLDI1NSksZ3JlZW46VmwoclsxXSwyNTUpLGJsdWU6VmwoclsyXSwyNTUpLGFscGhhOmN9O2lmKCJoc2wiPT09bnx8ImhzbGEiPT09bilyZXR1cm4gSmwoVWwoclswXSksVmwoclsxXSwxMDApLFZsKHJbMl0sMTAwKSxjKTtpZigiaHdiIj09PW4pcmV0dXJuIGZ1bmN0aW9uKGUsdCxuLHIpe2lmKHZvaWQgMD09PXImJihyPTEpLHQrbj49MSl7dmFyIGk9dC8odCtuKTtyZXR1cm57cmVkOmksZ3JlZW46aSxibHVlOmksYWxwaGE6cn19dmFyIG89SmwoZSwxLC41LHIpLHM9by5yZWQ7cyo9MS10LW4scys9dDt2YXIgYT1vLmdyZWVuO2EqPTEtdC1uLGErPXQ7dmFyIGw9by5ibHVlO3JldHVybiBsKj0xLXQtbix7cmVkOnMsZ3JlZW46YSxibHVlOmwrPXQsYWxwaGE6cn19KFVsKHJbMF0pLFZsKHJbMV0sMTAwKSxWbChyWzJdLDEwMCksYyl9Y2F0Y2goZSl7cmV0dXJuIG51bGx9fWVsc2UgaWYoZS50eXBlPT09amkuSWRlbnRpZmllcil7aWYoZS5wYXJlbnQmJmUucGFyZW50LnR5cGUhPT1qaS5UZXJtKXJldHVybiBudWxsO3ZhciBoPWUucGFyZW50O2lmKGgmJmgucGFyZW50JiZoLnBhcmVudC50eXBlPT09amkuQmluYXJ5RXhwcmVzc2lvbil7dmFyIGQ9aC5wYXJlbnQ7aWYoZC5wYXJlbnQmJmQucGFyZW50LnR5cGU9PT1qaS5MaXN0RW50cnkmJmQucGFyZW50LmtleT09PWQpcmV0dXJuIG51bGx9dmFyIHA9ZS5nZXRUZXh0KCkudG9Mb3dlckNhc2UoKTtpZigibm9uZSI9PT1wKXJldHVybiBudWxsO3ZhciB1PU9sW3BdO2lmKHUpcmV0dXJuIEdsKHUpfXJldHVybiBudWxsfXZhciBabD17Ym90dG9tOiJDb21wdXRlcyB0byDigJgxMDAl4oCZIGZvciB0aGUgdmVydGljYWwgcG9zaXRpb24gaWYgb25lIG9yIHR3byB2YWx1ZXMgYXJlIGdpdmVuLCBvdGhlcndpc2Ugc3BlY2lmaWVzIHRoZSBib3R0b20gZWRnZSBhcyB0aGUgb3JpZ2luIGZvciB0aGUgbmV4dCBvZmZzZXQuIixjZW50ZXI6IkNvbXB1dGVzIHRvIOKAmDUwJeKAmSAo4oCYbGVmdCA1MCXigJkpIGZvciB0aGUgaG9yaXpvbnRhbCBwb3NpdGlvbiBpZiB0aGUgaG9yaXpvbnRhbCBwb3NpdGlvbiBpcyBub3Qgb3RoZXJ3aXNlIHNwZWNpZmllZCwgb3Ig4oCYNTAl4oCZICjigJh0b3AgNTAl4oCZKSBmb3IgdGhlIHZlcnRpY2FsIHBvc2l0aW9uIGlmIGl0IGlzLiIsbGVmdDoiQ29tcHV0ZXMgdG8g4oCYMCXigJkgZm9yIHRoZSBob3Jpem9udGFsIHBvc2l0aW9uIGlmIG9uZSBvciB0d28gdmFsdWVzIGFyZSBnaXZlbiwgb3RoZXJ3aXNlIHNwZWNpZmllcyB0aGUgbGVmdCBlZGdlIGFzIHRoZSBvcmlnaW4gZm9yIHRoZSBuZXh0IG9mZnNldC4iLHJpZ2h0OiJDb21wdXRlcyB0byDigJgxMDAl4oCZIGZvciB0aGUgaG9yaXpvbnRhbCBwb3NpdGlvbiBpZiBvbmUgb3IgdHdvIHZhbHVlcyBhcmUgZ2l2ZW4sIG90aGVyd2lzZSBzcGVjaWZpZXMgdGhlIHJpZ2h0IGVkZ2UgYXMgdGhlIG9yaWdpbiBmb3IgdGhlIG5leHQgb2Zmc2V0LiIsdG9wOiJDb21wdXRlcyB0byDigJgwJeKAmSBmb3IgdGhlIHZlcnRpY2FsIHBvc2l0aW9uIGlmIG9uZSBvciB0d28gdmFsdWVzIGFyZSBnaXZlbiwgb3RoZXJ3aXNlIHNwZWNpZmllcyB0aGUgdG9wIGVkZ2UgYXMgdGhlIG9yaWdpbiBmb3IgdGhlIG5leHQgb2Zmc2V0LiJ9LFFsPXsibm8tcmVwZWF0IjoiUGxhY2VkIG9uY2UgYW5kIG5vdCByZXBlYXRlZCBpbiB0aGlzIGRpcmVjdGlvbi4iLHJlcGVhdDoiUmVwZWF0ZWQgaW4gdGhpcyBkaXJlY3Rpb24gYXMgb2Z0ZW4gYXMgbmVlZGVkIHRvIGNvdmVyIHRoZSBiYWNrZ3JvdW5kIHBhaW50aW5nIGFyZWEuIiwicmVwZWF0LXgiOiJDb21wdXRlcyB0byDigJhyZXBlYXQgbm8tcmVwZWF04oCZLiIsInJlcGVhdC15IjoiQ29tcHV0ZXMgdG8g4oCYbm8tcmVwZWF0IHJlcGVhdOKAmS4iLHJvdW5kOiJSZXBlYXRlZCBhcyBvZnRlbiBhcyB3aWxsIGZpdCB3aXRoaW4gdGhlIGJhY2tncm91bmQgcG9zaXRpb25pbmcgYXJlYS4gSWYgaXQgZG9lc27igJl0IGZpdCBhIHdob2xlIG51bWJlciBvZiB0aW1lcywgaXQgaXMgcmVzY2FsZWQgc28gdGhhdCBpdCBkb2VzLiIsc3BhY2U6IlJlcGVhdGVkIGFzIG9mdGVuIGFzIHdpbGwgZml0IHdpdGhpbiB0aGUgYmFja2dyb3VuZCBwb3NpdGlvbmluZyBhcmVhIHdpdGhvdXQgYmVpbmcgY2xpcHBlZCBhbmQgdGhlbiB0aGUgaW1hZ2VzIGFyZSBzcGFjZWQgb3V0IHRvIGZpbGwgdGhlIGFyZWEuIn0sZWM9e2Rhc2hlZDoiQSBzZXJpZXMgb2Ygc3F1YXJlLWVuZGVkIGRhc2hlcy4iLGRvdHRlZDoiQSBzZXJpZXMgb2Ygcm91bmQgZG90cy4iLGRvdWJsZToiVHdvIHBhcmFsbGVsIHNvbGlkIGxpbmVzIHdpdGggc29tZSBzcGFjZSBiZXR3ZWVuIHRoZW0uIixncm9vdmU6Ikxvb2tzIGFzIGlmIGl0IHdlcmUgY2FydmVkIGluIHRoZSBjYW52YXMuIixoaWRkZW46IlNhbWUgYXMg4oCYbm9uZeKAmSwgYnV0IGhhcyBkaWZmZXJlbnQgYmVoYXZpb3IgaW4gdGhlIGJvcmRlciBjb25mbGljdCByZXNvbHV0aW9uIHJ1bGVzIGZvciBib3JkZXItY29sbGFwc2VkIHRhYmxlcy4iLGluc2V0OiJMb29rcyBhcyBpZiB0aGUgY29udGVudCBvbiB0aGUgaW5zaWRlIG9mIHRoZSBib3JkZXIgaXMgc3Vua2VuIGludG8gdGhlIGNhbnZhcy4iLG5vbmU6Ik5vIGJvcmRlci4gQ29sb3IgYW5kIHdpZHRoIGFyZSBpZ25vcmVkLiIsb3V0c2V0OiJMb29rcyBhcyBpZiB0aGUgY29udGVudCBvbiB0aGUgaW5zaWRlIG9mIHRoZSBib3JkZXIgaXMgY29taW5nIG91dCBvZiB0aGUgY2FudmFzLiIscmlkZ2U6Ikxvb2tzIGFzIGlmIGl0IHdlcmUgY29taW5nIG91dCBvZiB0aGUgY2FudmFzLiIsc29saWQ6IkEgc2luZ2xlIGxpbmUgc2VnbWVudC4ifSx0Yz1bIm1lZGl1bSIsInRoaWNrIiwidGhpbiJdLG5jPXsiYm9yZGVyLWJveCI6IlRoZSBiYWNrZ3JvdW5kIGlzIHBhaW50ZWQgd2l0aGluIChjbGlwcGVkIHRvKSB0aGUgYm9yZGVyIGJveC4iLCJjb250ZW50LWJveCI6IlRoZSBiYWNrZ3JvdW5kIGlzIHBhaW50ZWQgd2l0aGluIChjbGlwcGVkIHRvKSB0aGUgY29udGVudCBib3guIiwicGFkZGluZy1ib3giOiJUaGUgYmFja2dyb3VuZCBpcyBwYWludGVkIHdpdGhpbiAoY2xpcHBlZCB0bykgdGhlIHBhZGRpbmcgYm94LiJ9LHJjPXsibWFyZ2luLWJveCI6IlVzZXMgdGhlIG1hcmdpbiBib3ggYXMgcmVmZXJlbmNlIGJveC4iLCJmaWxsLWJveCI6IlVzZXMgdGhlIG9iamVjdCBib3VuZGluZyBib3ggYXMgcmVmZXJlbmNlIGJveC4iLCJzdHJva2UtYm94IjoiVXNlcyB0aGUgc3Ryb2tlIGJvdW5kaW5nIGJveCBhcyByZWZlcmVuY2UgYm94LiIsInZpZXctYm94IjoiVXNlcyB0aGUgbmVhcmVzdCBTVkcgdmlld3BvcnQgYXMgcmVmZXJlbmNlIGJveC4ifSxpYz17aW5pdGlhbDoiUmVwcmVzZW50cyB0aGUgdmFsdWUgc3BlY2lmaWVkIGFzIHRoZSBwcm9wZXJ0eeKAmXMgaW5pdGlhbCB2YWx1ZS4iLGluaGVyaXQ6IlJlcHJlc2VudHMgdGhlIGNvbXB1dGVkIHZhbHVlIG9mIHRoZSBwcm9wZXJ0eSBvbiB0aGUgZWxlbWVudOKAmXMgcGFyZW50LiIsdW5zZXQ6IkFjdHMgYXMgZWl0aGVyIGBpbmhlcml0YCBvciBgaW5pdGlhbGAsIGRlcGVuZGluZyBvbiB3aGV0aGVyIHRoZSBwcm9wZXJ0eSBpcyBpbmhlcml0ZWQgb3Igbm90LiJ9LG9jPXsidmFyKCkiOiJFdmFsdWF0ZXMgdGhlIHZhbHVlIG9mIGEgY3VzdG9tIHZhcmlhYmxlLiIsImNhbGMoKSI6IkV2YWx1YXRlcyBhbiBtYXRoZW1hdGljYWwgZXhwcmVzc2lvbi4gVGhlIGZvbGxvd2luZyBvcGVyYXRvcnMgY2FuIGJlIHVzZWQ6ICsgLSAqIC8uIn0sc2M9eyJ1cmwoKSI6IlJlZmVyZW5jZSBhbiBpbWFnZSBmaWxlIGJ5IFVSTCIsImltYWdlKCkiOiJQcm92aWRlIGltYWdlIGZhbGxiYWNrcyBhbmQgYW5ub3RhdGlvbnMuIiwiLXdlYmtpdC1pbWFnZS1zZXQoKSI6IlByb3ZpZGUgbXVsdGlwbGUgcmVzb2x1dGlvbnMuIFJlbWVtYmVyIHRvIHVzZSB1bnByZWZpeGVkIGltYWdlLXNldCgpIGluIGFkZGl0aW9uLiIsImltYWdlLXNldCgpIjoiUHJvdmlkZSBtdWx0aXBsZSByZXNvbHV0aW9ucyBvZiBhbiBpbWFnZSBhbmQgY29uc3QgdGhlIFVBIGRlY2lkZSB3aGljaCBpcyBtb3N0IGFwcHJvcHJpYXRlIGluIGEgZ2l2ZW4gc2l0dWF0aW9uLiIsIi1tb3otZWxlbWVudCgpIjoiVXNlIGFuIGVsZW1lbnQgaW4gdGhlIGRvY3VtZW50IGFzIGFuIGltYWdlLiBSZW1lbWJlciB0byB1c2UgdW5wcmVmaXhlZCBlbGVtZW50KCkgaW4gYWRkaXRpb24uIiwiZWxlbWVudCgpIjoiVXNlIGFuIGVsZW1lbnQgaW4gdGhlIGRvY3VtZW50IGFzIGFuIGltYWdlLiIsImNyb3NzLWZhZGUoKSI6IkluZGljYXRlcyB0aGUgdHdvIGltYWdlcyB0byBiZSBjb21iaW5lZCBhbmQgaG93IGZhciBhbG9uZyBpbiB0aGUgdHJhbnNpdGlvbiB0aGUgY29tYmluYXRpb24gaXMuIiwiLXdlYmtpdC1ncmFkaWVudCgpIjoiRGVwcmVjYXRlZC4gVXNlIG1vZGVybiBsaW5lYXItZ3JhZGllbnQoKSBvciByYWRpYWwtZ3JhZGllbnQoKSBpbnN0ZWFkLiIsIi13ZWJraXQtbGluZWFyLWdyYWRpZW50KCkiOiJMaW5lYXIgZ3JhZGllbnQuIFJlbWVtYmVyIHRvIHVzZSB1bnByZWZpeGVkIHZlcnNpb24gaW4gYWRkaXRpb24uIiwiLW1vei1saW5lYXItZ3JhZGllbnQoKSI6IkxpbmVhciBncmFkaWVudC4gUmVtZW1iZXIgdG8gdXNlIHVucHJlZml4ZWQgdmVyc2lvbiBpbiBhZGRpdGlvbi4iLCItby1saW5lYXItZ3JhZGllbnQoKSI6IkxpbmVhciBncmFkaWVudC4gUmVtZW1iZXIgdG8gdXNlIHVucHJlZml4ZWQgdmVyc2lvbiBpbiBhZGRpdGlvbi4iLCJsaW5lYXItZ3JhZGllbnQoKSI6IkEgbGluZWFyIGdyYWRpZW50IGlzIGNyZWF0ZWQgYnkgc3BlY2lmeWluZyBhIHN0cmFpZ2h0IGdyYWRpZW50IGxpbmUsIGFuZCB0aGVuIHNldmVyYWwgY29sb3JzIHBsYWNlZCBhbG9uZyB0aGF0IGxpbmUuIiwiLXdlYmtpdC1yZXBlYXRpbmctbGluZWFyLWdyYWRpZW50KCkiOiJSZXBlYXRpbmcgTGluZWFyIGdyYWRpZW50LiBSZW1lbWJlciB0byB1c2UgdW5wcmVmaXhlZCB2ZXJzaW9uIGluIGFkZGl0aW9uLiIsIi1tb3otcmVwZWF0aW5nLWxpbmVhci1ncmFkaWVudCgpIjoiUmVwZWF0aW5nIExpbmVhciBncmFkaWVudC4gUmVtZW1iZXIgdG8gdXNlIHVucHJlZml4ZWQgdmVyc2lvbiBpbiBhZGRpdGlvbi4iLCItby1yZXBlYXRpbmctbGluZWFyLWdyYWRpZW50KCkiOiJSZXBlYXRpbmcgTGluZWFyIGdyYWRpZW50LiBSZW1lbWJlciB0byB1c2UgdW5wcmVmaXhlZCB2ZXJzaW9uIGluIGFkZGl0aW9uLiIsInJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQoKSI6IlNhbWUgYXMgbGluZWFyLWdyYWRpZW50LCBleGNlcHQgdGhlIGNvbG9yLXN0b3BzIGFyZSByZXBlYXRlZCBpbmZpbml0ZWx5IGluIGJvdGggZGlyZWN0aW9ucywgd2l0aCB0aGVpciBwb3NpdGlvbnMgc2hpZnRlZCBieSBtdWx0aXBsZXMgb2YgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgbGFzdCBzcGVjaWZpZWQgY29sb3Itc3RvcOKAmXMgcG9zaXRpb24gYW5kIHRoZSBmaXJzdCBzcGVjaWZpZWQgY29sb3Itc3RvcOKAmXMgcG9zaXRpb24uIiwiLXdlYmtpdC1yYWRpYWwtZ3JhZGllbnQoKSI6IlJhZGlhbCBncmFkaWVudC4gUmVtZW1iZXIgdG8gdXNlIHVucHJlZml4ZWQgdmVyc2lvbiBpbiBhZGRpdGlvbi4iLCItbW96LXJhZGlhbC1ncmFkaWVudCgpIjoiUmFkaWFsIGdyYWRpZW50LiBSZW1lbWJlciB0byB1c2UgdW5wcmVmaXhlZCB2ZXJzaW9uIGluIGFkZGl0aW9uLiIsInJhZGlhbC1ncmFkaWVudCgpIjoiQ29sb3JzIGVtZXJnZSBmcm9tIGEgc2luZ2xlIHBvaW50IGFuZCBzbW9vdGhseSBzcHJlYWQgb3V0d2FyZCBpbiBhIGNpcmN1bGFyIG9yIGVsbGlwdGljYWwgc2hhcGUuIiwiLXdlYmtpdC1yZXBlYXRpbmctcmFkaWFsLWdyYWRpZW50KCkiOiJSZXBlYXRpbmcgcmFkaWFsIGdyYWRpZW50LiBSZW1lbWJlciB0byB1c2UgdW5wcmVmaXhlZCB2ZXJzaW9uIGluIGFkZGl0aW9uLiIsIi1tb3otcmVwZWF0aW5nLXJhZGlhbC1ncmFkaWVudCgpIjoiUmVwZWF0aW5nIHJhZGlhbCBncmFkaWVudC4gUmVtZW1iZXIgdG8gdXNlIHVucHJlZml4ZWQgdmVyc2lvbiBpbiBhZGRpdGlvbi4iLCJyZXBlYXRpbmctcmFkaWFsLWdyYWRpZW50KCkiOiJTYW1lIGFzIHJhZGlhbC1ncmFkaWVudCwgZXhjZXB0IHRoZSBjb2xvci1zdG9wcyBhcmUgcmVwZWF0ZWQgaW5maW5pdGVseSBpbiBib3RoIGRpcmVjdGlvbnMsIHdpdGggdGhlaXIgcG9zaXRpb25zIHNoaWZ0ZWQgYnkgbXVsdGlwbGVzIG9mIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhlIGxhc3Qgc3BlY2lmaWVkIGNvbG9yLXN0b3DigJlzIHBvc2l0aW9uIGFuZCB0aGUgZmlyc3Qgc3BlY2lmaWVkIGNvbG9yLXN0b3DigJlzIHBvc2l0aW9uLiJ9LGFjPXtlYXNlOiJFcXVpdmFsZW50IHRvIGN1YmljLWJlemllcigwLjI1LCAwLjEsIDAuMjUsIDEuMCkuIiwiZWFzZS1pbiI6IkVxdWl2YWxlbnQgdG8gY3ViaWMtYmV6aWVyKDAuNDIsIDAsIDEuMCwgMS4wKS4iLCJlYXNlLWluLW91dCI6IkVxdWl2YWxlbnQgdG8gY3ViaWMtYmV6aWVyKDAuNDIsIDAsIDAuNTgsIDEuMCkuIiwiZWFzZS1vdXQiOiJFcXVpdmFsZW50IHRvIGN1YmljLWJlemllcigwLCAwLCAwLjU4LCAxLjApLiIsbGluZWFyOiJFcXVpdmFsZW50IHRvIGN1YmljLWJlemllcigwLjAsIDAuMCwgMS4wLCAxLjApLiIsInN0ZXAtZW5kIjoiRXF1aXZhbGVudCB0byBzdGVwcygxLCBlbmQpLiIsInN0ZXAtc3RhcnQiOiJFcXVpdmFsZW50IHRvIHN0ZXBzKDEsIHN0YXJ0KS4iLCJzdGVwcygpIjoiVGhlIGZpcnN0IHBhcmFtZXRlciBzcGVjaWZpZXMgdGhlIG51bWJlciBvZiBpbnRlcnZhbHMgaW4gdGhlIGZ1bmN0aW9uLiBUaGUgc2Vjb25kIHBhcmFtZXRlciwgd2hpY2ggaXMgb3B0aW9uYWwsIGlzIGVpdGhlciB0aGUgdmFsdWUg4oCcc3RhcnTigJ0gb3Ig4oCcZW5k4oCdLiIsImN1YmljLWJlemllcigpIjoiU3BlY2lmaWVzIGEgY3ViaWMtYmV6aWVyIGN1cnZlLiBUaGUgZm91ciB2YWx1ZXMgc3BlY2lmeSBwb2ludHMgUDEgYW5kIFAyICBvZiB0aGUgY3VydmUgYXMgKHgxLCB5MSwgeDIsIHkyKS4iLCJjdWJpYy1iZXppZXIoMC42LCAtMC4yOCwgMC43MzUsIDAuMDQ1KSI6IkVhc2UtaW4gQmFjay4gT3ZlcnNob290cy4iLCJjdWJpYy1iZXppZXIoMC42OCwgLTAuNTUsIDAuMjY1LCAxLjU1KSI6IkVhc2UtaW4tb3V0IEJhY2suIE92ZXJzaG9vdHMuIiwiY3ViaWMtYmV6aWVyKDAuMTc1LCAwLjg4NSwgMC4zMiwgMS4yNzUpIjoiRWFzZS1vdXQgQmFjay4gT3ZlcnNob290cy4iLCJjdWJpYy1iZXppZXIoMC42LCAwLjA0LCAwLjk4LCAwLjMzNSkiOiJFYXNlLWluIENpcmN1bGFyLiBCYXNlZCBvbiBoYWxmIGNpcmNsZS4iLCJjdWJpYy1iZXppZXIoMC43ODUsIDAuMTM1LCAwLjE1LCAwLjg2KSI6IkVhc2UtaW4tb3V0IENpcmN1bGFyLiBCYXNlZCBvbiBoYWxmIGNpcmNsZS4iLCJjdWJpYy1iZXppZXIoMC4wNzUsIDAuODIsIDAuMTY1LCAxKSI6IkVhc2Utb3V0IENpcmN1bGFyLiBCYXNlZCBvbiBoYWxmIGNpcmNsZS4iLCJjdWJpYy1iZXppZXIoMC41NSwgMC4wNTUsIDAuNjc1LCAwLjE5KSI6IkVhc2UtaW4gQ3ViaWMuIEJhc2VkIG9uIHBvd2VyIG9mIHRocmVlLiIsImN1YmljLWJlemllcigwLjY0NSwgMC4wNDUsIDAuMzU1LCAxKSI6IkVhc2UtaW4tb3V0IEN1YmljLiBCYXNlZCBvbiBwb3dlciBvZiB0aHJlZS4iLCJjdWJpYy1iZXppZXIoMC4yMTUsIDAuNjEwLCAwLjM1NSwgMSkiOiJFYXNlLW91dCBDdWJpYy4gQmFzZWQgb24gcG93ZXIgb2YgdGhyZWUuIiwiY3ViaWMtYmV6aWVyKDAuOTUsIDAuMDUsIDAuNzk1LCAwLjAzNSkiOiJFYXNlLWluIEV4cG9uZW50aWFsLiBCYXNlZCBvbiB0d28gdG8gdGhlIHBvd2VyIHRlbi4iLCJjdWJpYy1iZXppZXIoMSwgMCwgMCwgMSkiOiJFYXNlLWluLW91dCBFeHBvbmVudGlhbC4gQmFzZWQgb24gdHdvIHRvIHRoZSBwb3dlciB0ZW4uIiwiY3ViaWMtYmV6aWVyKDAuMTksIDEsIDAuMjIsIDEpIjoiRWFzZS1vdXQgRXhwb25lbnRpYWwuIEJhc2VkIG9uIHR3byB0byB0aGUgcG93ZXIgdGVuLiIsImN1YmljLWJlemllcigwLjQ3LCAwLCAwLjc0NSwgMC43MTUpIjoiRWFzZS1pbiBTaW5lLiIsImN1YmljLWJlemllcigwLjQ0NSwgMC4wNSwgMC41NSwgMC45NSkiOiJFYXNlLWluLW91dCBTaW5lLiIsImN1YmljLWJlemllcigwLjM5LCAwLjU3NSwgMC41NjUsIDEpIjoiRWFzZS1vdXQgU2luZS4iLCJjdWJpYy1iZXppZXIoMC41NSwgMC4wODUsIDAuNjgsIDAuNTMpIjoiRWFzZS1pbiBRdWFkcmF0aWMuIEJhc2VkIG9uIHBvd2VyIG9mIHR3by4iLCJjdWJpYy1iZXppZXIoMC40NTUsIDAuMDMsIDAuNTE1LCAwLjk1NSkiOiJFYXNlLWluLW91dCBRdWFkcmF0aWMuIEJhc2VkIG9uIHBvd2VyIG9mIHR3by4iLCJjdWJpYy1iZXppZXIoMC4yNSwgMC40NiwgMC40NSwgMC45NCkiOiJFYXNlLW91dCBRdWFkcmF0aWMuIEJhc2VkIG9uIHBvd2VyIG9mIHR3by4iLCJjdWJpYy1iZXppZXIoMC44OTUsIDAuMDMsIDAuNjg1LCAwLjIyKSI6IkVhc2UtaW4gUXVhcnRpYy4gQmFzZWQgb24gcG93ZXIgb2YgZm91ci4iLCJjdWJpYy1iZXppZXIoMC43NywgMCwgMC4xNzUsIDEpIjoiRWFzZS1pbi1vdXQgUXVhcnRpYy4gQmFzZWQgb24gcG93ZXIgb2YgZm91ci4iLCJjdWJpYy1iZXppZXIoMC4xNjUsIDAuODQsIDAuNDQsIDEpIjoiRWFzZS1vdXQgUXVhcnRpYy4gQmFzZWQgb24gcG93ZXIgb2YgZm91ci4iLCJjdWJpYy1iZXppZXIoMC43NTUsIDAuMDUsIDAuODU1LCAwLjA2KSI6IkVhc2UtaW4gUXVpbnRpYy4gQmFzZWQgb24gcG93ZXIgb2YgZml2ZS4iLCJjdWJpYy1iZXppZXIoMC44NiwgMCwgMC4wNywgMSkiOiJFYXNlLWluLW91dCBRdWludGljLiBCYXNlZCBvbiBwb3dlciBvZiBmaXZlLiIsImN1YmljLWJlemllcigwLjIzLCAxLCAwLjMyMCwgMSkiOiJFYXNlLW91dCBRdWludGljLiBCYXNlZCBvbiBwb3dlciBvZiBmaXZlLiJ9LGxjPXsiY2lyY2xlKCkiOiJEZWZpbmVzIGEgY2lyY2xlLiIsImVsbGlwc2UoKSI6IkRlZmluZXMgYW4gZWxsaXBzZS4iLCJpbnNldCgpIjoiRGVmaW5lcyBhbiBpbnNldCByZWN0YW5nbGUuIiwicG9seWdvbigpIjoiRGVmaW5lcyBhIHBvbHlnb24uIn0sY2M9e2xlbmd0aDpbImVtIiwicmVtIiwiZXgiLCJweCIsImNtIiwibW0iLCJpbiIsInB0IiwicGMiLCJjaCIsInZ3IiwidmgiLCJ2bWluIiwidm1heCJdLGFuZ2xlOlsiZGVnIiwicmFkIiwiZ3JhZCIsInR1cm4iXSx0aW1lOlsibXMiLCJzIl0sZnJlcXVlbmN5OlsiSHoiLCJrSHoiXSxyZXNvbHV0aW9uOlsiZHBpIiwiZHBjbSIsImRwcHgiXSxwZXJjZW50YWdlOlsiJSIsImZyIl19LGhjPVsiYSIsImFiYnIiLCJhZGRyZXNzIiwiYXJlYSIsImFydGljbGUiLCJhc2lkZSIsImF1ZGlvIiwiYiIsImJhc2UiLCJiZGkiLCJiZG8iLCJibG9ja3F1b3RlIiwiYm9keSIsImJyIiwiYnV0dG9uIiwiY2FudmFzIiwiY2FwdGlvbiIsImNpdGUiLCJjb2RlIiwiY29sIiwiY29sZ3JvdXAiLCJkYXRhIiwiZGF0YWxpc3QiLCJkZCIsImRlbCIsImRldGFpbHMiLCJkZm4iLCJkaWFsb2ciLCJkaXYiLCJkbCIsImR0IiwiZW0iLCJlbWJlZCIsImZpZWxkc2V0IiwiZmlnY2FwdGlvbiIsImZpZ3VyZSIsImZvb3RlciIsImZvcm0iLCJoMSIsImgyIiwiaDMiLCJoNCIsImg1IiwiaDYiLCJoZWFkIiwiaGVhZGVyIiwiaGdyb3VwIiwiaHIiLCJodG1sIiwiaSIsImlmcmFtZSIsImltZyIsImlucHV0IiwiaW5zIiwia2JkIiwia2V5Z2VuIiwibGFiZWwiLCJsZWdlbmQiLCJsaSIsImxpbmsiLCJtYWluIiwibWFwIiwibWFyayIsIm1lbnUiLCJtZW51aXRlbSIsIm1ldGEiLCJtZXRlciIsIm5hdiIsIm5vc2NyaXB0Iiwib2JqZWN0Iiwib2wiLCJvcHRncm91cCIsIm9wdGlvbiIsIm91dHB1dCIsInAiLCJwYXJhbSIsInBpY3R1cmUiLCJwcmUiLCJwcm9ncmVzcyIsInEiLCJyYiIsInJwIiwicnQiLCJydGMiLCJydWJ5IiwicyIsInNhbXAiLCJzY3JpcHQiLCJzZWN0aW9uIiwic2VsZWN0Iiwic21hbGwiLCJzb3VyY2UiLCJzcGFuIiwic3Ryb25nIiwic3R5bGUiLCJzdWIiLCJzdW1tYXJ5Iiwic3VwIiwidGFibGUiLCJ0Ym9keSIsInRkIiwidGVtcGxhdGUiLCJ0ZXh0YXJlYSIsInRmb290IiwidGgiLCJ0aGVhZCIsInRpbWUiLCJ0aXRsZSIsInRyIiwidHJhY2siLCJ1IiwidWwiLCJjb25zdCIsInZpZGVvIiwid2JyIl0sZGM9WyJjaXJjbGUiLCJjbGlwUGF0aCIsImN1cnNvciIsImRlZnMiLCJkZXNjIiwiZWxsaXBzZSIsImZlQmxlbmQiLCJmZUNvbG9yTWF0cml4IiwiZmVDb21wb25lbnRUcmFuc2ZlciIsImZlQ29tcG9zaXRlIiwiZmVDb252b2x2ZU1hdHJpeCIsImZlRGlmZnVzZUxpZ2h0aW5nIiwiZmVEaXNwbGFjZW1lbnRNYXAiLCJmZURpc3RhbnRMaWdodCIsImZlRHJvcFNoYWRvdyIsImZlRmxvb2QiLCJmZUZ1bmNBIiwiZmVGdW5jQiIsImZlRnVuY0ciLCJmZUZ1bmNSIiwiZmVHYXVzc2lhbkJsdXIiLCJmZUltYWdlIiwiZmVNZXJnZSIsImZlTWVyZ2VOb2RlIiwiZmVNb3JwaG9sb2d5IiwiZmVPZmZzZXQiLCJmZVBvaW50TGlnaHQiLCJmZVNwZWN1bGFyTGlnaHRpbmciLCJmZVNwb3RMaWdodCIsImZlVGlsZSIsImZlVHVyYnVsZW5jZSIsImZpbHRlciIsImZvcmVpZ25PYmplY3QiLCJnIiwiaGF0Y2giLCJoYXRjaHBhdGgiLCJpbWFnZSIsImxpbmUiLCJsaW5lYXJHcmFkaWVudCIsIm1hcmtlciIsIm1hc2siLCJtZXNoIiwibWVzaHBhdGNoIiwibWVzaHJvdyIsIm1ldGFkYXRhIiwibXBhdGgiLCJwYXRoIiwicGF0dGVybiIsInBvbHlnb24iLCJwb2x5bGluZSIsInJhZGlhbEdyYWRpZW50IiwicmVjdCIsInNldCIsInNvbGlkY29sb3IiLCJzdG9wIiwic3ZnIiwic3dpdGNoIiwic3ltYm9sIiwidGV4dCIsInRleHRQYXRoIiwidHNwYW4iLCJ1c2UiLCJ2aWV3Il0scGM9WyJAYm90dG9tLWNlbnRlciIsIkBib3R0b20tbGVmdCIsIkBib3R0b20tbGVmdC1jb3JuZXIiLCJAYm90dG9tLXJpZ2h0IiwiQGJvdHRvbS1yaWdodC1jb3JuZXIiLCJAbGVmdC1ib3R0b20iLCJAbGVmdC1taWRkbGUiLCJAbGVmdC10b3AiLCJAcmlnaHQtYm90dG9tIiwiQHJpZ2h0LW1pZGRsZSIsIkByaWdodC10b3AiLCJAdG9wLWNlbnRlciIsIkB0b3AtbGVmdCIsIkB0b3AtbGVmdC1jb3JuZXIiLCJAdG9wLXJpZ2h0IiwiQHRvcC1yaWdodC1jb3JuZXIiXTtmdW5jdGlvbiB1YyhlKXtyZXR1cm4gT2JqZWN0LmtleXMoZSkubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gZVt0XX0pKX1mdW5jdGlvbiBtYyhlKXtyZXR1cm4gdm9pZCAwIT09ZX12YXIgZmM9ZnVuY3Rpb24oZSx0LG4pe2lmKG58fDI9PT1hcmd1bWVudHMubGVuZ3RoKWZvcih2YXIgcixpPTAsbz10Lmxlbmd0aDtpPG87aSsrKSFyJiZpIGluIHR8fChyfHwocj1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh0LDAsaSkpLHJbaV09dFtpXSk7cmV0dXJuIGUuY29uY2F0KHJ8fEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHQpKX0sZ2M9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUpe3ZvaWQgMD09PWUmJihlPW5ldyBPaSksdGhpcy5rZXlmcmFtZVJlZ2V4PS9eQChcLSh3ZWJraXR8bXN8bW96fG8pXC0pP2tleWZyYW1lcyQvaSx0aGlzLnNjYW5uZXI9ZSx0aGlzLnRva2VuPXt0eXBlOmpyLkVPRixvZmZzZXQ6LTEsbGVuOjAsdGV4dDoiIn0sdGhpcy5wcmV2VG9rZW49dm9pZCAwfXJldHVybiBlLnByb3RvdHlwZS5wZWVrSWRlbnQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGpyLklkZW50PT09dGhpcy50b2tlbi50eXBlJiZlLmxlbmd0aD09PXRoaXMudG9rZW4udGV4dC5sZW5ndGgmJmU9PT10aGlzLnRva2VuLnRleHQudG9Mb3dlckNhc2UoKX0sZS5wcm90b3R5cGUucGVla0tleXdvcmQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGpyLkF0S2V5d29yZD09PXRoaXMudG9rZW4udHlwZSYmZS5sZW5ndGg9PT10aGlzLnRva2VuLnRleHQubGVuZ3RoJiZlPT09dGhpcy50b2tlbi50ZXh0LnRvTG93ZXJDYXNlKCl9LGUucHJvdG90eXBlLnBlZWtEZWxpbT1mdW5jdGlvbihlKXtyZXR1cm4ganIuRGVsaW09PT10aGlzLnRva2VuLnR5cGUmJmU9PT10aGlzLnRva2VuLnRleHR9LGUucHJvdG90eXBlLnBlZWs9ZnVuY3Rpb24oZSl7cmV0dXJuIGU9PT10aGlzLnRva2VuLnR5cGV9LGUucHJvdG90eXBlLnBlZWtPbmU9ZnVuY3Rpb24oKXtmb3IodmFyIGU9W10sdD0wO3Q8YXJndW1lbnRzLmxlbmd0aDt0KyspZVt0XT1hcmd1bWVudHNbdF07cmV0dXJuLTEhPT1lLmluZGV4T2YodGhpcy50b2tlbi50eXBlKX0sZS5wcm90b3R5cGUucGVla1JlZ0V4cD1mdW5jdGlvbihlLHQpe3JldHVybiBlPT09dGhpcy50b2tlbi50eXBlJiZ0LnRlc3QodGhpcy50b2tlbi50ZXh0KX0sZS5wcm90b3R5cGUuaGFzV2hpdGVzcGFjZT1mdW5jdGlvbigpe3JldHVybiEhdGhpcy5wcmV2VG9rZW4mJnRoaXMucHJldlRva2VuLm9mZnNldCt0aGlzLnByZXZUb2tlbi5sZW4hPT10aGlzLnRva2VuLm9mZnNldH0sZS5wcm90b3R5cGUuY29uc3VtZVRva2VuPWZ1bmN0aW9uKCl7dGhpcy5wcmV2VG9rZW49dGhpcy50b2tlbix0aGlzLnRva2VuPXRoaXMuc2Nhbm5lci5zY2FuKCl9LGUucHJvdG90eXBlLmFjY2VwdFVuaWNvZGVSYW5nZT1mdW5jdGlvbigpe3ZhciBlPXRoaXMuc2Nhbm5lci50cnlTY2FuVW5pY29kZSgpO3JldHVybiEhZSYmKHRoaXMucHJldlRva2VuPWUsdGhpcy50b2tlbj10aGlzLnNjYW5uZXIuc2NhbigpLCEwKX0sZS5wcm90b3R5cGUubWFyaz1mdW5jdGlvbigpe3JldHVybntwcmV2OnRoaXMucHJldlRva2VuLGN1cnI6dGhpcy50b2tlbixwb3M6dGhpcy5zY2FubmVyLnBvcygpfX0sZS5wcm90b3R5cGUucmVzdG9yZUF0TWFyaz1mdW5jdGlvbihlKXt0aGlzLnByZXZUb2tlbj1lLnByZXYsdGhpcy50b2tlbj1lLmN1cnIsdGhpcy5zY2FubmVyLmdvQmFja1RvKGUucG9zKX0sZS5wcm90b3R5cGUudHJ5PWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMubWFyaygpLG49ZSgpO3JldHVybiBufHwodGhpcy5yZXN0b3JlQXRNYXJrKHQpLG51bGwpfSxlLnByb3RvdHlwZS5hY2NlcHRPbmVLZXl3b3JkPWZ1bmN0aW9uKGUpe2lmKGpyLkF0S2V5d29yZD09PXRoaXMudG9rZW4udHlwZSlmb3IodmFyIHQ9MCxuPWU7dDxuLmxlbmd0aDt0Kyspe3ZhciByPW5bdF07aWYoci5sZW5ndGg9PT10aGlzLnRva2VuLnRleHQubGVuZ3RoJiZyPT09dGhpcy50b2tlbi50ZXh0LnRvTG93ZXJDYXNlKCkpcmV0dXJuIHRoaXMuY29uc3VtZVRva2VuKCksITB9cmV0dXJuITF9LGUucHJvdG90eXBlLmFjY2VwdD1mdW5jdGlvbihlKXtyZXR1cm4gZT09PXRoaXMudG9rZW4udHlwZSYmKHRoaXMuY29uc3VtZVRva2VuKCksITApfSxlLnByb3RvdHlwZS5hY2NlcHRJZGVudD1mdW5jdGlvbihlKXtyZXR1cm4hIXRoaXMucGVla0lkZW50KGUpJiYodGhpcy5jb25zdW1lVG9rZW4oKSwhMCl9LGUucHJvdG90eXBlLmFjY2VwdEtleXdvcmQ9ZnVuY3Rpb24oZSl7cmV0dXJuISF0aGlzLnBlZWtLZXl3b3JkKGUpJiYodGhpcy5jb25zdW1lVG9rZW4oKSwhMCl9LGUucHJvdG90eXBlLmFjY2VwdERlbGltPWZ1bmN0aW9uKGUpe3JldHVybiEhdGhpcy5wZWVrRGVsaW0oZSkmJih0aGlzLmNvbnN1bWVUb2tlbigpLCEwKX0sZS5wcm90b3R5cGUuYWNjZXB0UmVnZXhwPWZ1bmN0aW9uKGUpe3JldHVybiEhZS50ZXN0KHRoaXMudG9rZW4udGV4dCkmJih0aGlzLmNvbnN1bWVUb2tlbigpLCEwKX0sZS5wcm90b3R5cGUuX3BhcnNlUmVnZXhwPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuY3JlYXRlTm9kZShqaS5JZGVudGlmaWVyKTtkb3t9d2hpbGUodGhpcy5hY2NlcHRSZWdleHAoZSkpO3JldHVybiB0aGlzLmZpbmlzaCh0KX0sZS5wcm90b3R5cGUuYWNjZXB0VW5xdW90ZWRTdHJpbmc9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnNjYW5uZXIucG9zKCk7dGhpcy5zY2FubmVyLmdvQmFja1RvKHRoaXMudG9rZW4ub2Zmc2V0KTt2YXIgdD10aGlzLnNjYW5uZXIuc2NhblVucXVvdGVkU3RyaW5nKCk7cmV0dXJuIHQ/KHRoaXMudG9rZW49dCx0aGlzLmNvbnN1bWVUb2tlbigpLCEwKToodGhpcy5zY2FubmVyLmdvQmFja1RvKGUpLCExKX0sZS5wcm90b3R5cGUucmVzeW5jPWZ1bmN0aW9uKGUsdCl7Zm9yKDs7KXtpZihlJiYtMSE9PWUuaW5kZXhPZih0aGlzLnRva2VuLnR5cGUpKXJldHVybiB0aGlzLmNvbnN1bWVUb2tlbigpLCEwO2lmKHQmJi0xIT09dC5pbmRleE9mKHRoaXMudG9rZW4udHlwZSkpcmV0dXJuITA7aWYodGhpcy50b2tlbi50eXBlPT09anIuRU9GKXJldHVybiExO3RoaXMudG9rZW49dGhpcy5zY2FubmVyLnNjYW4oKX19LGUucHJvdG90eXBlLmNyZWF0ZU5vZGU9ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBZaSh0aGlzLnRva2VuLm9mZnNldCx0aGlzLnRva2VuLmxlbixlKX0sZS5wcm90b3R5cGUuY3JlYXRlPWZ1bmN0aW9uKGUpe3JldHVybiBuZXcgZSh0aGlzLnRva2VuLm9mZnNldCx0aGlzLnRva2VuLmxlbil9LGUucHJvdG90eXBlLmZpbmlzaD1mdW5jdGlvbihlLHQsbixyKXtpZighKGUgaW5zdGFuY2VvZiBaaSkmJih0JiZ0aGlzLm1hcmtFcnJvcihlLHQsbixyKSx0aGlzLnByZXZUb2tlbikpe3ZhciBpPXRoaXMucHJldlRva2VuLm9mZnNldCt0aGlzLnByZXZUb2tlbi5sZW47ZS5sZW5ndGg9aT5lLm9mZnNldD9pLWUub2Zmc2V0OjB9cmV0dXJuIGV9LGUucHJvdG90eXBlLm1hcmtFcnJvcj1mdW5jdGlvbihlLHQsbixyKXt0aGlzLnRva2VuIT09dGhpcy5sYXN0RXJyb3JUb2tlbiYmKGUuYWRkSXNzdWUobmV3IG1zKGUsdCxIby5FcnJvcix2b2lkIDAsdGhpcy50b2tlbi5vZmZzZXQsdGhpcy50b2tlbi5sZW4pKSx0aGlzLmxhc3RFcnJvclRva2VuPXRoaXMudG9rZW4pLChufHxyKSYmdGhpcy5yZXN5bmMobixyKX0sZS5wcm90b3R5cGUucGFyc2VTdHlsZXNoZWV0PWZ1bmN0aW9uKGUpe3ZhciB0PWUudmVyc2lvbixuPWUuZ2V0VGV4dCgpO3JldHVybiB0aGlzLmludGVybmFsUGFyc2Uobix0aGlzLl9wYXJzZVN0eWxlc2hlZXQsKGZ1bmN0aW9uKHIsaSl7aWYoZS52ZXJzaW9uIT09dCl0aHJvdyBuZXcgRXJyb3IoIlVuZGVybHlpbmcgbW9kZWwgaGFzIGNoYW5nZWQsIEFTVCBpcyBubyBsb25nZXIgdmFsaWQiKTtyZXR1cm4gbi5zdWJzdHIocixpKX0pKX0sZS5wcm90b3R5cGUuaW50ZXJuYWxQYXJzZT1mdW5jdGlvbihlLHQsbil7dGhpcy5zY2FubmVyLnNldFNvdXJjZShlKSx0aGlzLnRva2VuPXRoaXMuc2Nhbm5lci5zY2FuKCk7dmFyIHI9dC5iaW5kKHRoaXMpKCk7cmV0dXJuIHImJihyLnRleHRQcm92aWRlcj1ufHxmdW5jdGlvbih0LG4pe3JldHVybiBlLnN1YnN0cih0LG4pfSkscn0sZS5wcm90b3R5cGUuX3BhcnNlU3R5bGVzaGVldD1mdW5jdGlvbigpe2Zvcih2YXIgZT10aGlzLmNyZWF0ZSh0byk7ZS5hZGRDaGlsZCh0aGlzLl9wYXJzZVN0eWxlc2hlZXRTdGFydCgpKTspO3ZhciB0PSExO2Rve3ZhciBuPSExO2Rve249ITE7dmFyIHI9dGhpcy5fcGFyc2VTdHlsZXNoZWV0U3RhdGVtZW50KCk7Zm9yKHImJihlLmFkZENoaWxkKHIpLG49ITAsdD0hMSx0aGlzLnBlZWsoanIuRU9GKXx8IXRoaXMuX25lZWRzU2VtaWNvbG9uQWZ0ZXIocil8fHRoaXMuYWNjZXB0KGpyLlNlbWlDb2xvbil8fHRoaXMubWFya0Vycm9yKGUsZmEuU2VtaUNvbG9uRXhwZWN0ZWQpKTt0aGlzLmFjY2VwdChqci5TZW1pQ29sb24pfHx0aGlzLmFjY2VwdChqci5DRE8pfHx0aGlzLmFjY2VwdChqci5DREMpOyluPSEwLHQ9ITF9d2hpbGUobik7aWYodGhpcy5wZWVrKGpyLkVPRikpYnJlYWs7dHx8KHRoaXMucGVlayhqci5BdEtleXdvcmQpP3RoaXMubWFya0Vycm9yKGUsZmEuVW5rbm93bkF0UnVsZSk6dGhpcy5tYXJrRXJyb3IoZSxmYS5SdWxlT3JTZWxlY3RvckV4cGVjdGVkKSx0PSEwKSx0aGlzLmNvbnN1bWVUb2tlbigpfXdoaWxlKCF0aGlzLnBlZWsoanIuRU9GKSk7cmV0dXJuIHRoaXMuZmluaXNoKGUpfSxlLnByb3RvdHlwZS5fcGFyc2VTdHlsZXNoZWV0U3RhcnQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcGFyc2VDaGFyc2V0KCl9LGUucHJvdG90eXBlLl9wYXJzZVN0eWxlc2hlZXRTdGF0ZW1lbnQ9ZnVuY3Rpb24oZSl7cmV0dXJuIHZvaWQgMD09PWUmJihlPSExKSx0aGlzLnBlZWsoanIuQXRLZXl3b3JkKT90aGlzLl9wYXJzZVN0eWxlc2hlZXRBdFN0YXRlbWVudChlKTp0aGlzLl9wYXJzZVJ1bGVzZXQoZSl9LGUucHJvdG90eXBlLl9wYXJzZVN0eWxlc2hlZXRBdFN0YXRlbWVudD1mdW5jdGlvbihlKXtyZXR1cm4gdm9pZCAwPT09ZSYmKGU9ITEpLHRoaXMuX3BhcnNlSW1wb3J0KCl8fHRoaXMuX3BhcnNlTWVkaWEoZSl8fHRoaXMuX3BhcnNlUGFnZSgpfHx0aGlzLl9wYXJzZUZvbnRGYWNlKCl8fHRoaXMuX3BhcnNlS2V5ZnJhbWUoKXx8dGhpcy5fcGFyc2VTdXBwb3J0cyhlKXx8dGhpcy5fcGFyc2VWaWV3UG9ydCgpfHx0aGlzLl9wYXJzZU5hbWVzcGFjZSgpfHx0aGlzLl9wYXJzZURvY3VtZW50KCl8fHRoaXMuX3BhcnNlVW5rbm93bkF0UnVsZSgpfSxlLnByb3RvdHlwZS5fdHJ5UGFyc2VSdWxlc2V0PWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMubWFyaygpO2lmKHRoaXMuX3BhcnNlU2VsZWN0b3IoZSkpe2Zvcig7dGhpcy5hY2NlcHQoanIuQ29tbWEpJiZ0aGlzLl9wYXJzZVNlbGVjdG9yKGUpOyk7aWYodGhpcy5hY2NlcHQoanIuQ3VybHlMKSlyZXR1cm4gdGhpcy5yZXN0b3JlQXRNYXJrKHQpLHRoaXMuX3BhcnNlUnVsZXNldChlKX1yZXR1cm4gdGhpcy5yZXN0b3JlQXRNYXJrKHQpLG51bGx9LGUucHJvdG90eXBlLl9wYXJzZVJ1bGVzZXQ9ZnVuY3Rpb24oZSl7dm9pZCAwPT09ZSYmKGU9ITEpO3ZhciB0PXRoaXMuY3JlYXRlKGlvKSxuPXQuZ2V0U2VsZWN0b3JzKCk7aWYoIW4uYWRkQ2hpbGQodGhpcy5fcGFyc2VTZWxlY3RvcihlKSkpcmV0dXJuIG51bGw7Zm9yKDt0aGlzLmFjY2VwdChqci5Db21tYSk7KWlmKCFuLmFkZENoaWxkKHRoaXMuX3BhcnNlU2VsZWN0b3IoZSkpKXJldHVybiB0aGlzLmZpbmlzaCh0LGZhLlNlbGVjdG9yRXhwZWN0ZWQpO3JldHVybiB0aGlzLl9wYXJzZUJvZHkodCx0aGlzLl9wYXJzZVJ1bGVTZXREZWNsYXJhdGlvbi5iaW5kKHRoaXMpKX0sZS5wcm90b3R5cGUuX3BhcnNlUnVsZVNldERlY2xhcmF0aW9uQXRTdGF0ZW1lbnQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcGFyc2VVbmtub3duQXRSdWxlKCl9LGUucHJvdG90eXBlLl9wYXJzZVJ1bGVTZXREZWNsYXJhdGlvbj1mdW5jdGlvbigpe3JldHVybiB0aGlzLnBlZWsoanIuQXRLZXl3b3JkKT90aGlzLl9wYXJzZVJ1bGVTZXREZWNsYXJhdGlvbkF0U3RhdGVtZW50KCk6dGhpcy5fcGFyc2VEZWNsYXJhdGlvbigpfSxlLnByb3RvdHlwZS5fbmVlZHNTZW1pY29sb25BZnRlcj1mdW5jdGlvbihlKXtzd2l0Y2goZS50eXBlKXtjYXNlIGppLktleWZyYW1lOmNhc2UgamkuVmlld1BvcnQ6Y2FzZSBqaS5NZWRpYTpjYXNlIGppLlJ1bGVzZXQ6Y2FzZSBqaS5OYW1lc3BhY2U6Y2FzZSBqaS5JZjpjYXNlIGppLkZvcjpjYXNlIGppLkVhY2g6Y2FzZSBqaS5XaGlsZTpjYXNlIGppLk1peGluRGVjbGFyYXRpb246Y2FzZSBqaS5GdW5jdGlvbkRlY2xhcmF0aW9uOmNhc2UgamkuTWl4aW5Db250ZW50RGVjbGFyYXRpb246cmV0dXJuITE7Y2FzZSBqaS5FeHRlbmRzUmVmZXJlbmNlOmNhc2UgamkuTWl4aW5Db250ZW50UmVmZXJlbmNlOmNhc2UgamkuUmV0dXJuU3RhdGVtZW50OmNhc2UgamkuTWVkaWFRdWVyeTpjYXNlIGppLkRlYnVnOmNhc2UgamkuSW1wb3J0OmNhc2UgamkuQXRBcHBseVJ1bGU6Y2FzZSBqaS5DdXN0b21Qcm9wZXJ0eURlY2xhcmF0aW9uOnJldHVybiEwO2Nhc2UgamkuVmFyaWFibGVEZWNsYXJhdGlvbjpyZXR1cm4gZS5uZWVkc1NlbWljb2xvbjtjYXNlIGppLk1peGluUmVmZXJlbmNlOnJldHVybiFlLmdldENvbnRlbnQoKTtjYXNlIGppLkRlY2xhcmF0aW9uOnJldHVybiFlLmdldE5lc3RlZFByb3BlcnRpZXMoKX1yZXR1cm4hMX0sZS5wcm90b3R5cGUuX3BhcnNlRGVjbGFyYXRpb25zPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuY3JlYXRlKG5vKTtpZighdGhpcy5hY2NlcHQoanIuQ3VybHlMKSlyZXR1cm4gbnVsbDtmb3IodmFyIG49ZSgpO3QuYWRkQ2hpbGQobikmJiF0aGlzLnBlZWsoanIuQ3VybHlSKTspe2lmKHRoaXMuX25lZWRzU2VtaWNvbG9uQWZ0ZXIobikmJiF0aGlzLmFjY2VwdChqci5TZW1pQ29sb24pKXJldHVybiB0aGlzLmZpbmlzaCh0LGZhLlNlbWlDb2xvbkV4cGVjdGVkLFtqci5TZW1pQ29sb24sanIuQ3VybHlSXSk7Zm9yKG4mJnRoaXMucHJldlRva2VuJiZ0aGlzLnByZXZUb2tlbi50eXBlPT09anIuU2VtaUNvbG9uJiYobi5zZW1pY29sb25Qb3NpdGlvbj10aGlzLnByZXZUb2tlbi5vZmZzZXQpO3RoaXMuYWNjZXB0KGpyLlNlbWlDb2xvbik7KTtuPWUoKX1yZXR1cm4gdGhpcy5hY2NlcHQoanIuQ3VybHlSKT90aGlzLmZpbmlzaCh0KTp0aGlzLmZpbmlzaCh0LGZhLlJpZ2h0Q3VybHlFeHBlY3RlZCxbanIuQ3VybHlSLGpyLlNlbWlDb2xvbl0pfSxlLnByb3RvdHlwZS5fcGFyc2VCb2R5PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuc2V0RGVjbGFyYXRpb25zKHRoaXMuX3BhcnNlRGVjbGFyYXRpb25zKHQpKT90aGlzLmZpbmlzaChlKTp0aGlzLmZpbmlzaChlLGZhLkxlZnRDdXJseUV4cGVjdGVkLFtqci5DdXJseVIsanIuU2VtaUNvbG9uXSl9LGUucHJvdG90eXBlLl9wYXJzZVNlbGVjdG9yPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuY3JlYXRlKG9vKSxuPSExO2ZvcihlJiYobj10LmFkZENoaWxkKHRoaXMuX3BhcnNlQ29tYmluYXRvcigpKSk7dC5hZGRDaGlsZCh0aGlzLl9wYXJzZVNpbXBsZVNlbGVjdG9yKCkpOyluPSEwLHQuYWRkQ2hpbGQodGhpcy5fcGFyc2VDb21iaW5hdG9yKCkpO3JldHVybiBuP3RoaXMuZmluaXNoKHQpOm51bGx9LGUucHJvdG90eXBlLl9wYXJzZURlY2xhcmF0aW9uPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX3RyeVBhcnNlQ3VzdG9tUHJvcGVydHlEZWNsYXJhdGlvbihlKTtpZih0KXJldHVybiB0O3ZhciBuPXRoaXMuY3JlYXRlKGNvKTtyZXR1cm4gbi5zZXRQcm9wZXJ0eSh0aGlzLl9wYXJzZVByb3BlcnR5KCkpP3RoaXMuYWNjZXB0KGpyLkNvbG9uKT8odGhpcy5wcmV2VG9rZW4mJihuLmNvbG9uUG9zaXRpb249dGhpcy5wcmV2VG9rZW4ub2Zmc2V0KSxuLnNldFZhbHVlKHRoaXMuX3BhcnNlRXhwcigpKT8obi5hZGRDaGlsZCh0aGlzLl9wYXJzZVByaW8oKSksdGhpcy5wZWVrKGpyLlNlbWlDb2xvbikmJihuLnNlbWljb2xvblBvc2l0aW9uPXRoaXMudG9rZW4ub2Zmc2V0KSx0aGlzLmZpbmlzaChuKSk6dGhpcy5maW5pc2gobixmYS5Qcm9wZXJ0eVZhbHVlRXhwZWN0ZWQpKTp0aGlzLmZpbmlzaChuLGZhLkNvbG9uRXhwZWN0ZWQsW2pyLkNvbG9uXSxlfHxbanIuU2VtaUNvbG9uXSk6bnVsbH0sZS5wcm90b3R5cGUuX3RyeVBhcnNlQ3VzdG9tUHJvcGVydHlEZWNsYXJhdGlvbj1mdW5jdGlvbihlKXtpZighdGhpcy5wZWVrUmVnRXhwKGpyLklkZW50LC9eLS0vKSlyZXR1cm4gbnVsbDt2YXIgdD10aGlzLmNyZWF0ZShobyk7aWYoIXQuc2V0UHJvcGVydHkodGhpcy5fcGFyc2VQcm9wZXJ0eSgpKSlyZXR1cm4gbnVsbDtpZighdGhpcy5hY2NlcHQoanIuQ29sb24pKXJldHVybiB0aGlzLmZpbmlzaCh0LGZhLkNvbG9uRXhwZWN0ZWQsW2pyLkNvbG9uXSk7dGhpcy5wcmV2VG9rZW4mJih0LmNvbG9uUG9zaXRpb249dGhpcy5wcmV2VG9rZW4ub2Zmc2V0KTt2YXIgbj10aGlzLm1hcmsoKTtpZih0aGlzLnBlZWsoanIuQ3VybHlMKSl7dmFyIHI9dGhpcy5jcmVhdGUobG8pLGk9dGhpcy5fcGFyc2VEZWNsYXJhdGlvbnModGhpcy5fcGFyc2VSdWxlU2V0RGVjbGFyYXRpb24uYmluZCh0aGlzKSk7aWYoci5zZXREZWNsYXJhdGlvbnMoaSkmJiFpLmlzRXJyb25lb3VzKCEwKSYmKHIuYWRkQ2hpbGQodGhpcy5fcGFyc2VQcmlvKCkpLHRoaXMucGVlayhqci5TZW1pQ29sb24pKSlyZXR1cm4gdGhpcy5maW5pc2gociksdC5zZXRQcm9wZXJ0eVNldChyKSx0LnNlbWljb2xvblBvc2l0aW9uPXRoaXMudG9rZW4ub2Zmc2V0LHRoaXMuZmluaXNoKHQpO3RoaXMucmVzdG9yZUF0TWFyayhuKX12YXIgbz10aGlzLl9wYXJzZUV4cHIoKTtyZXR1cm4gbyYmIW8uaXNFcnJvbmVvdXMoITApJiYodGhpcy5fcGFyc2VQcmlvKCksdGhpcy5wZWVrT25lLmFwcGx5KHRoaXMsZmMoZmMoW10sZXx8W10sITEpLFtqci5TZW1pQ29sb24sanIuRU9GXSwhMSkpKT8odC5zZXRWYWx1ZShvKSx0aGlzLnBlZWsoanIuU2VtaUNvbG9uKSYmKHQuc2VtaWNvbG9uUG9zaXRpb249dGhpcy50b2tlbi5vZmZzZXQpLHRoaXMuZmluaXNoKHQpKToodGhpcy5yZXN0b3JlQXRNYXJrKG4pLHQuYWRkQ2hpbGQodGhpcy5fcGFyc2VDdXN0b21Qcm9wZXJ0eVZhbHVlKGUpKSx0LmFkZENoaWxkKHRoaXMuX3BhcnNlUHJpbygpKSxtYyh0LmNvbG9uUG9zaXRpb24pJiZ0aGlzLnRva2VuLm9mZnNldD09PXQuY29sb25Qb3NpdGlvbisxP3RoaXMuZmluaXNoKHQsZmEuUHJvcGVydHlWYWx1ZUV4cGVjdGVkKTp0aGlzLmZpbmlzaCh0KSl9LGUucHJvdG90eXBlLl9wYXJzZUN1c3RvbVByb3BlcnR5VmFsdWU9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpczt2b2lkIDA9PT1lJiYoZT1banIuQ3VybHlSXSk7dmFyIG49dGhpcy5jcmVhdGUoWWkpLHI9ZnVuY3Rpb24oKXtyZXR1cm4gMD09PW8mJjA9PT1zJiYwPT09YX0saT1mdW5jdGlvbigpe3JldHVybi0xIT09ZS5pbmRleE9mKHQudG9rZW4udHlwZSl9LG89MCxzPTAsYT0wO2U6Zm9yKDs7KXtzd2l0Y2godGhpcy50b2tlbi50eXBlKXtjYXNlIGpyLlNlbWlDb2xvbjpjYXNlIGpyLkV4Y2xhbWF0aW9uOmlmKHIoKSlicmVhayBlO2JyZWFrO2Nhc2UganIuQ3VybHlMOm8rKzticmVhaztjYXNlIGpyLkN1cmx5UjppZigtLW88MCl7aWYoaSgpJiYwPT09cyYmMD09PWEpYnJlYWsgZTtyZXR1cm4gdGhpcy5maW5pc2gobixmYS5MZWZ0Q3VybHlFeHBlY3RlZCl9YnJlYWs7Y2FzZSBqci5QYXJlbnRoZXNpc0w6cysrO2JyZWFrO2Nhc2UganIuUGFyZW50aGVzaXNSOmlmKC0tczwwKXtpZihpKCkmJjA9PT1hJiYwPT09bylicmVhayBlO3JldHVybiB0aGlzLmZpbmlzaChuLGZhLkxlZnRQYXJlbnRoZXNpc0V4cGVjdGVkKX1icmVhaztjYXNlIGpyLkJyYWNrZXRMOmErKzticmVhaztjYXNlIGpyLkJyYWNrZXRSOmlmKC0tYTwwKXJldHVybiB0aGlzLmZpbmlzaChuLGZhLkxlZnRTcXVhcmVCcmFja2V0RXhwZWN0ZWQpO2JyZWFrO2Nhc2UganIuQmFkU3RyaW5nOmJyZWFrIGU7Y2FzZSBqci5FT0Y6dmFyIGw9ZmEuUmlnaHRDdXJseUV4cGVjdGVkO3JldHVybiBhPjA/bD1mYS5SaWdodFNxdWFyZUJyYWNrZXRFeHBlY3RlZDpzPjAmJihsPWZhLlJpZ2h0UGFyZW50aGVzaXNFeHBlY3RlZCksdGhpcy5maW5pc2gobixsKX10aGlzLmNvbnN1bWVUb2tlbigpfXJldHVybiB0aGlzLmZpbmlzaChuKX0sZS5wcm90b3R5cGUuX3RyeVRvUGFyc2VEZWNsYXJhdGlvbj1mdW5jdGlvbihlKXt2YXIgdD10aGlzLm1hcmsoKTtyZXR1cm4gdGhpcy5fcGFyc2VQcm9wZXJ0eSgpJiZ0aGlzLmFjY2VwdChqci5Db2xvbik/KHRoaXMucmVzdG9yZUF0TWFyayh0KSx0aGlzLl9wYXJzZURlY2xhcmF0aW9uKGUpKToodGhpcy5yZXN0b3JlQXRNYXJrKHQpLG51bGwpfSxlLnByb3RvdHlwZS5fcGFyc2VQcm9wZXJ0eT1mdW5jdGlvbigpe3ZhciBlPXRoaXMuY3JlYXRlKHBvKSx0PXRoaXMubWFyaygpO3JldHVybih0aGlzLmFjY2VwdERlbGltKCIqIil8fHRoaXMuYWNjZXB0RGVsaW0oIl8iKSkmJnRoaXMuaGFzV2hpdGVzcGFjZSgpPyh0aGlzLnJlc3RvcmVBdE1hcmsodCksbnVsbCk6ZS5zZXRJZGVudGlmaWVyKHRoaXMuX3BhcnNlUHJvcGVydHlJZGVudGlmaWVyKCkpP3RoaXMuZmluaXNoKGUpOm51bGx9LGUucHJvdG90eXBlLl9wYXJzZVByb3BlcnR5SWRlbnRpZmllcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9wYXJzZUlkZW50KCl9LGUucHJvdG90eXBlLl9wYXJzZUNoYXJzZXQ9ZnVuY3Rpb24oKXtpZighdGhpcy5wZWVrKGpyLkNoYXJzZXQpKXJldHVybiBudWxsO3ZhciBlPXRoaXMuY3JlYXRlKFlpKTtyZXR1cm4gdGhpcy5jb25zdW1lVG9rZW4oKSx0aGlzLmFjY2VwdChqci5TdHJpbmcpP3RoaXMuYWNjZXB0KGpyLlNlbWlDb2xvbik/dGhpcy5maW5pc2goZSk6dGhpcy5maW5pc2goZSxmYS5TZW1pQ29sb25FeHBlY3RlZCk6dGhpcy5maW5pc2goZSxmYS5JZGVudGlmaWVyRXhwZWN0ZWQpfSxlLnByb3RvdHlwZS5fcGFyc2VJbXBvcnQ9ZnVuY3Rpb24oKXtpZighdGhpcy5wZWVrS2V5d29yZCgiQGltcG9ydCIpKXJldHVybiBudWxsO3ZhciBlPXRoaXMuY3JlYXRlKFJvKTtyZXR1cm4gdGhpcy5jb25zdW1lVG9rZW4oKSxlLmFkZENoaWxkKHRoaXMuX3BhcnNlVVJJTGl0ZXJhbCgpKXx8ZS5hZGRDaGlsZCh0aGlzLl9wYXJzZVN0cmluZ0xpdGVyYWwoKSk/KHRoaXMucGVlayhqci5TZW1pQ29sb24pfHx0aGlzLnBlZWsoanIuRU9GKXx8ZS5zZXRNZWRpYWxpc3QodGhpcy5fcGFyc2VNZWRpYVF1ZXJ5TGlzdCgpKSx0aGlzLmZpbmlzaChlKSk6dGhpcy5maW5pc2goZSxmYS5VUklPclN0cmluZ0V4cGVjdGVkKX0sZS5wcm90b3R5cGUuX3BhcnNlTmFtZXNwYWNlPWZ1bmN0aW9uKCl7aWYoIXRoaXMucGVla0tleXdvcmQoIkBuYW1lc3BhY2UiKSlyZXR1cm4gbnVsbDt2YXIgZT10aGlzLmNyZWF0ZShBbyk7cmV0dXJuIHRoaXMuY29uc3VtZVRva2VuKCksZS5hZGRDaGlsZCh0aGlzLl9wYXJzZVVSSUxpdGVyYWwoKSl8fChlLmFkZENoaWxkKHRoaXMuX3BhcnNlSWRlbnQoKSksZS5hZGRDaGlsZCh0aGlzLl9wYXJzZVVSSUxpdGVyYWwoKSl8fGUuYWRkQ2hpbGQodGhpcy5fcGFyc2VTdHJpbmdMaXRlcmFsKCkpKT90aGlzLmFjY2VwdChqci5TZW1pQ29sb24pP3RoaXMuZmluaXNoKGUpOnRoaXMuZmluaXNoKGUsZmEuU2VtaUNvbG9uRXhwZWN0ZWQpOnRoaXMuZmluaXNoKGUsZmEuVVJJRXhwZWN0ZWQsW2pyLlNlbWlDb2xvbl0pfSxlLnByb3RvdHlwZS5fcGFyc2VGb250RmFjZT1mdW5jdGlvbigpe2lmKCF0aGlzLnBlZWtLZXl3b3JkKCJAZm9udC1mYWNlIikpcmV0dXJuIG51bGw7dmFyIGU9dGhpcy5jcmVhdGUoQ28pO3JldHVybiB0aGlzLmNvbnN1bWVUb2tlbigpLHRoaXMuX3BhcnNlQm9keShlLHRoaXMuX3BhcnNlUnVsZVNldERlY2xhcmF0aW9uLmJpbmQodGhpcykpfSxlLnByb3RvdHlwZS5fcGFyc2VWaWV3UG9ydD1mdW5jdGlvbigpe2lmKCF0aGlzLnBlZWtLZXl3b3JkKCJALW1zLXZpZXdwb3J0IikmJiF0aGlzLnBlZWtLZXl3b3JkKCJALW8tdmlld3BvcnQiKSYmIXRoaXMucGVla0tleXdvcmQoIkB2aWV3cG9ydCIpKXJldHVybiBudWxsO3ZhciBlPXRoaXMuY3JlYXRlKFNvKTtyZXR1cm4gdGhpcy5jb25zdW1lVG9rZW4oKSx0aGlzLl9wYXJzZUJvZHkoZSx0aGlzLl9wYXJzZVJ1bGVTZXREZWNsYXJhdGlvbi5iaW5kKHRoaXMpKX0sZS5wcm90b3R5cGUuX3BhcnNlS2V5ZnJhbWU9ZnVuY3Rpb24oKXtpZighdGhpcy5wZWVrUmVnRXhwKGpyLkF0S2V5d29yZCx0aGlzLmtleWZyYW1lUmVnZXgpKXJldHVybiBudWxsO3ZhciBlPXRoaXMuY3JlYXRlKF9vKSx0PXRoaXMuY3JlYXRlKFlpKTtyZXR1cm4gdGhpcy5jb25zdW1lVG9rZW4oKSxlLnNldEtleXdvcmQodGhpcy5maW5pc2godCkpLHQubWF0Y2hlcygiQC1tcy1rZXlmcmFtZXMiKSYmdGhpcy5tYXJrRXJyb3IodCxmYS5Vbmtub3duS2V5d29yZCksZS5zZXRJZGVudGlmaWVyKHRoaXMuX3BhcnNlS2V5ZnJhbWVJZGVudCgpKT90aGlzLl9wYXJzZUJvZHkoZSx0aGlzLl9wYXJzZUtleWZyYW1lU2VsZWN0b3IuYmluZCh0aGlzKSk6dGhpcy5maW5pc2goZSxmYS5JZGVudGlmaWVyRXhwZWN0ZWQsW2pyLkN1cmx5Ul0pfSxlLnByb3RvdHlwZS5fcGFyc2VLZXlmcmFtZUlkZW50PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3BhcnNlSWRlbnQoWyRpLktleWZyYW1lXSl9LGUucHJvdG90eXBlLl9wYXJzZUtleWZyYW1lU2VsZWN0b3I9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmNyZWF0ZShFbyk7aWYoIWUuYWRkQ2hpbGQodGhpcy5fcGFyc2VJZGVudCgpKSYmIXRoaXMuYWNjZXB0KGpyLlBlcmNlbnRhZ2UpKXJldHVybiBudWxsO2Zvcig7dGhpcy5hY2NlcHQoanIuQ29tbWEpOylpZighZS5hZGRDaGlsZCh0aGlzLl9wYXJzZUlkZW50KCkpJiYhdGhpcy5hY2NlcHQoanIuUGVyY2VudGFnZSkpcmV0dXJuIHRoaXMuZmluaXNoKGUsZmEuUGVyY2VudGFnZUV4cGVjdGVkKTtyZXR1cm4gdGhpcy5fcGFyc2VCb2R5KGUsdGhpcy5fcGFyc2VSdWxlU2V0RGVjbGFyYXRpb24uYmluZCh0aGlzKSl9LGUucHJvdG90eXBlLl90cnlQYXJzZUtleWZyYW1lU2VsZWN0b3I9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmNyZWF0ZShFbyksdD10aGlzLm1hcmsoKTtpZighZS5hZGRDaGlsZCh0aGlzLl9wYXJzZUlkZW50KCkpJiYhdGhpcy5hY2NlcHQoanIuUGVyY2VudGFnZSkpcmV0dXJuIG51bGw7Zm9yKDt0aGlzLmFjY2VwdChqci5Db21tYSk7KWlmKCFlLmFkZENoaWxkKHRoaXMuX3BhcnNlSWRlbnQoKSkmJiF0aGlzLmFjY2VwdChqci5QZXJjZW50YWdlKSlyZXR1cm4gdGhpcy5yZXN0b3JlQXRNYXJrKHQpLG51bGw7cmV0dXJuIHRoaXMucGVlayhqci5DdXJseUwpP3RoaXMuX3BhcnNlQm9keShlLHRoaXMuX3BhcnNlUnVsZVNldERlY2xhcmF0aW9uLmJpbmQodGhpcykpOih0aGlzLnJlc3RvcmVBdE1hcmsodCksbnVsbCl9LGUucHJvdG90eXBlLl9wYXJzZVN1cHBvcnRzPWZ1bmN0aW9uKGUpe2lmKHZvaWQgMD09PWUmJihlPSExKSwhdGhpcy5wZWVrS2V5d29yZCgiQHN1cHBvcnRzIikpcmV0dXJuIG51bGw7dmFyIHQ9dGhpcy5jcmVhdGUoem8pO3JldHVybiB0aGlzLmNvbnN1bWVUb2tlbigpLHQuYWRkQ2hpbGQodGhpcy5fcGFyc2VTdXBwb3J0c0NvbmRpdGlvbigpKSx0aGlzLl9wYXJzZUJvZHkodCx0aGlzLl9wYXJzZVN1cHBvcnRzRGVjbGFyYXRpb24uYmluZCh0aGlzLGUpKX0sZS5wcm90b3R5cGUuX3BhcnNlU3VwcG9ydHNEZWNsYXJhdGlvbj1mdW5jdGlvbihlKXtyZXR1cm4gdm9pZCAwPT09ZSYmKGU9ITEpLGU/dGhpcy5fdHJ5UGFyc2VSdWxlc2V0KCEwKXx8dGhpcy5fdHJ5VG9QYXJzZURlY2xhcmF0aW9uKCl8fHRoaXMuX3BhcnNlU3R5bGVzaGVldFN0YXRlbWVudCghMCk6dGhpcy5fcGFyc2VTdHlsZXNoZWV0U3RhdGVtZW50KCExKX0sZS5wcm90b3R5cGUuX3BhcnNlU3VwcG9ydHNDb25kaXRpb249ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmNyZWF0ZShWbyk7aWYodGhpcy5hY2NlcHRJZGVudCgibm90IikpZS5hZGRDaGlsZCh0aGlzLl9wYXJzZVN1cHBvcnRzQ29uZGl0aW9uSW5QYXJlbnMoKSk7ZWxzZSBpZihlLmFkZENoaWxkKHRoaXMuX3BhcnNlU3VwcG9ydHNDb25kaXRpb25JblBhcmVucygpKSx0aGlzLnBlZWtSZWdFeHAoanIuSWRlbnQsL14oYW5kfG9yKSQvaSkpZm9yKHZhciB0PXRoaXMudG9rZW4udGV4dC50b0xvd2VyQ2FzZSgpO3RoaXMuYWNjZXB0SWRlbnQodCk7KWUuYWRkQ2hpbGQodGhpcy5fcGFyc2VTdXBwb3J0c0NvbmRpdGlvbkluUGFyZW5zKCkpO3JldHVybiB0aGlzLmZpbmlzaChlKX0sZS5wcm90b3R5cGUuX3BhcnNlU3VwcG9ydHNDb25kaXRpb25JblBhcmVucz1mdW5jdGlvbigpe3ZhciBlPXRoaXMuY3JlYXRlKFZvKTtpZih0aGlzLmFjY2VwdChqci5QYXJlbnRoZXNpc0wpKXJldHVybiB0aGlzLnByZXZUb2tlbiYmKGUubFBhcmVudD10aGlzLnByZXZUb2tlbi5vZmZzZXQpLGUuYWRkQ2hpbGQodGhpcy5fdHJ5VG9QYXJzZURlY2xhcmF0aW9uKFtqci5QYXJlbnRoZXNpc1JdKSl8fHRoaXMuX3BhcnNlU3VwcG9ydHNDb25kaXRpb24oKT90aGlzLmFjY2VwdChqci5QYXJlbnRoZXNpc1IpPyh0aGlzLnByZXZUb2tlbiYmKGUuclBhcmVudD10aGlzLnByZXZUb2tlbi5vZmZzZXQpLHRoaXMuZmluaXNoKGUpKTp0aGlzLmZpbmlzaChlLGZhLlJpZ2h0UGFyZW50aGVzaXNFeHBlY3RlZCxbanIuUGFyZW50aGVzaXNSXSxbXSk6dGhpcy5maW5pc2goZSxmYS5Db25kaXRpb25FeHBlY3RlZCk7aWYodGhpcy5wZWVrKGpyLklkZW50KSl7dmFyIHQ9dGhpcy5tYXJrKCk7aWYodGhpcy5jb25zdW1lVG9rZW4oKSwhdGhpcy5oYXNXaGl0ZXNwYWNlKCkmJnRoaXMuYWNjZXB0KGpyLlBhcmVudGhlc2lzTCkpe2Zvcih2YXIgbj0xO3RoaXMudG9rZW4udHlwZSE9PWpyLkVPRiYmMCE9PW47KXRoaXMudG9rZW4udHlwZT09PWpyLlBhcmVudGhlc2lzTD9uKys6dGhpcy50b2tlbi50eXBlPT09anIuUGFyZW50aGVzaXNSJiZuLS0sdGhpcy5jb25zdW1lVG9rZW4oKTtyZXR1cm4gdGhpcy5maW5pc2goZSl9dGhpcy5yZXN0b3JlQXRNYXJrKHQpfXJldHVybiB0aGlzLmZpbmlzaChlLGZhLkxlZnRQYXJlbnRoZXNpc0V4cGVjdGVkLFtdLFtqci5QYXJlbnRoZXNpc0xdKX0sZS5wcm90b3R5cGUuX3BhcnNlTWVkaWFEZWNsYXJhdGlvbj1mdW5jdGlvbihlKXtyZXR1cm4gdm9pZCAwPT09ZSYmKGU9ITEpLGU/dGhpcy5fdHJ5UGFyc2VSdWxlc2V0KCEwKXx8dGhpcy5fdHJ5VG9QYXJzZURlY2xhcmF0aW9uKCl8fHRoaXMuX3BhcnNlU3R5bGVzaGVldFN0YXRlbWVudCghMCk6dGhpcy5fcGFyc2VTdHlsZXNoZWV0U3RhdGVtZW50KCExKX0sZS5wcm90b3R5cGUuX3BhcnNlTWVkaWE9ZnVuY3Rpb24oZSl7aWYodm9pZCAwPT09ZSYmKGU9ITEpLCF0aGlzLnBlZWtLZXl3b3JkKCJAbWVkaWEiKSlyZXR1cm4gbnVsbDt2YXIgdD10aGlzLmNyZWF0ZShNbyk7cmV0dXJuIHRoaXMuY29uc3VtZVRva2VuKCksdC5hZGRDaGlsZCh0aGlzLl9wYXJzZU1lZGlhUXVlcnlMaXN0KCkpP3RoaXMuX3BhcnNlQm9keSh0LHRoaXMuX3BhcnNlTWVkaWFEZWNsYXJhdGlvbi5iaW5kKHRoaXMsZSkpOnRoaXMuZmluaXNoKHQsZmEuTWVkaWFRdWVyeUV4cGVjdGVkKX0sZS5wcm90b3R5cGUuX3BhcnNlTWVkaWFRdWVyeUxpc3Q9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmNyZWF0ZShQbyk7aWYoIWUuYWRkQ2hpbGQodGhpcy5fcGFyc2VNZWRpYVF1ZXJ5KCkpKXJldHVybiB0aGlzLmZpbmlzaChlLGZhLk1lZGlhUXVlcnlFeHBlY3RlZCk7Zm9yKDt0aGlzLmFjY2VwdChqci5Db21tYSk7KWlmKCFlLmFkZENoaWxkKHRoaXMuX3BhcnNlTWVkaWFRdWVyeSgpKSlyZXR1cm4gdGhpcy5maW5pc2goZSxmYS5NZWRpYVF1ZXJ5RXhwZWN0ZWQpO3JldHVybiB0aGlzLmZpbmlzaChlKX0sZS5wcm90b3R5cGUuX3BhcnNlTWVkaWFRdWVyeT1mdW5jdGlvbigpe3ZhciBlPXRoaXMuY3JlYXRlKExvKSx0PXRoaXMubWFyaygpO2lmKHRoaXMuYWNjZXB0SWRlbnQoIm5vdCIpLHRoaXMucGVlayhqci5QYXJlbnRoZXNpc0wpKXRoaXMucmVzdG9yZUF0TWFyayh0KSxlLmFkZENoaWxkKHRoaXMuX3BhcnNlTWVkaWFDb25kaXRpb24oKSk7ZWxzZXtpZih0aGlzLmFjY2VwdElkZW50KCJvbmx5IiksIWUuYWRkQ2hpbGQodGhpcy5fcGFyc2VJZGVudCgpKSlyZXR1cm4gbnVsbDt0aGlzLmFjY2VwdElkZW50KCJhbmQiKSYmZS5hZGRDaGlsZCh0aGlzLl9wYXJzZU1lZGlhQ29uZGl0aW9uKCkpfXJldHVybiB0aGlzLmZpbmlzaChlKX0sZS5wcm90b3R5cGUuX3BhcnNlUmF0aW89ZnVuY3Rpb24oKXt2YXIgZT10aGlzLm1hcmsoKSx0PXRoaXMuY3JlYXRlKFhvKTtyZXR1cm4gdGhpcy5fcGFyc2VOdW1lcmljKCk/dGhpcy5hY2NlcHREZWxpbSgiLyIpP3RoaXMuX3BhcnNlTnVtZXJpYygpP3RoaXMuZmluaXNoKHQpOnRoaXMuZmluaXNoKHQsZmEuTnVtYmVyRXhwZWN0ZWQpOih0aGlzLnJlc3RvcmVBdE1hcmsoZSksbnVsbCk6bnVsbH0sZS5wcm90b3R5cGUuX3BhcnNlTWVkaWFDb25kaXRpb249ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmNyZWF0ZShPbyk7dGhpcy5hY2NlcHRJZGVudCgibm90Iik7Zm9yKHZhciB0PSEwO3Q7KXtpZighdGhpcy5hY2NlcHQoanIuUGFyZW50aGVzaXNMKSlyZXR1cm4gdGhpcy5maW5pc2goZSxmYS5MZWZ0UGFyZW50aGVzaXNFeHBlY3RlZCxbXSxbanIuQ3VybHlMXSk7aWYodGhpcy5wZWVrKGpyLlBhcmVudGhlc2lzTCl8fHRoaXMucGVla0lkZW50KCJub3QiKT9lLmFkZENoaWxkKHRoaXMuX3BhcnNlTWVkaWFDb25kaXRpb24oKSk6ZS5hZGRDaGlsZCh0aGlzLl9wYXJzZU1lZGlhRmVhdHVyZSgpKSwhdGhpcy5hY2NlcHQoanIuUGFyZW50aGVzaXNSKSlyZXR1cm4gdGhpcy5maW5pc2goZSxmYS5SaWdodFBhcmVudGhlc2lzRXhwZWN0ZWQsW10sW2pyLkN1cmx5TF0pO3Q9dGhpcy5hY2NlcHRJZGVudCgiYW5kIil8fHRoaXMuYWNjZXB0SWRlbnQoIm9yIil9cmV0dXJuIHRoaXMuZmluaXNoKGUpfSxlLnByb3RvdHlwZS5fcGFyc2VNZWRpYUZlYXR1cmU9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLHQ9W2pyLlBhcmVudGhlc2lzUl0sbj10aGlzLmNyZWF0ZShXbykscj1mdW5jdGlvbigpe3JldHVybiBlLmFjY2VwdERlbGltKCI8Iil8fGUuYWNjZXB0RGVsaW0oIj4iKT8oZS5oYXNXaGl0ZXNwYWNlKCl8fGUuYWNjZXB0RGVsaW0oIj0iKSwhMCk6ISFlLmFjY2VwdERlbGltKCI9Iil9O2lmKG4uYWRkQ2hpbGQodGhpcy5fcGFyc2VNZWRpYUZlYXR1cmVOYW1lKCkpKXtpZih0aGlzLmFjY2VwdChqci5Db2xvbikpe2lmKCFuLmFkZENoaWxkKHRoaXMuX3BhcnNlTWVkaWFGZWF0dXJlVmFsdWUoKSkpcmV0dXJuIHRoaXMuZmluaXNoKG4sZmEuVGVybUV4cGVjdGVkLFtdLHQpfWVsc2UgaWYocigpKXtpZighbi5hZGRDaGlsZCh0aGlzLl9wYXJzZU1lZGlhRmVhdHVyZVZhbHVlKCkpKXJldHVybiB0aGlzLmZpbmlzaChuLGZhLlRlcm1FeHBlY3RlZCxbXSx0KTtpZihyKCkmJiFuLmFkZENoaWxkKHRoaXMuX3BhcnNlTWVkaWFGZWF0dXJlVmFsdWUoKSkpcmV0dXJuIHRoaXMuZmluaXNoKG4sZmEuVGVybUV4cGVjdGVkLFtdLHQpfX1lbHNle2lmKCFuLmFkZENoaWxkKHRoaXMuX3BhcnNlTWVkaWFGZWF0dXJlVmFsdWUoKSkpcmV0dXJuIHRoaXMuZmluaXNoKG4sZmEuSWRlbnRpZmllckV4cGVjdGVkLFtdLHQpO2lmKCFyKCkpcmV0dXJuIHRoaXMuZmluaXNoKG4sZmEuT3BlcmF0b3JFeHBlY3RlZCxbXSx0KTtpZighbi5hZGRDaGlsZCh0aGlzLl9wYXJzZU1lZGlhRmVhdHVyZU5hbWUoKSkpcmV0dXJuIHRoaXMuZmluaXNoKG4sZmEuSWRlbnRpZmllckV4cGVjdGVkLFtdLHQpO2lmKHIoKSYmIW4uYWRkQ2hpbGQodGhpcy5fcGFyc2VNZWRpYUZlYXR1cmVWYWx1ZSgpKSlyZXR1cm4gdGhpcy5maW5pc2gobixmYS5UZXJtRXhwZWN0ZWQsW10sdCl9cmV0dXJuIHRoaXMuZmluaXNoKG4pfSxlLnByb3RvdHlwZS5fcGFyc2VNZWRpYUZlYXR1cmVOYW1lPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3BhcnNlSWRlbnQoKX0sZS5wcm90b3R5cGUuX3BhcnNlTWVkaWFGZWF0dXJlVmFsdWU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcGFyc2VSYXRpbygpfHx0aGlzLl9wYXJzZVRlcm1FeHByZXNzaW9uKCl9LGUucHJvdG90eXBlLl9wYXJzZU1lZGl1bT1mdW5jdGlvbigpe3ZhciBlPXRoaXMuY3JlYXRlKFlpKTtyZXR1cm4gZS5hZGRDaGlsZCh0aGlzLl9wYXJzZUlkZW50KCkpP3RoaXMuZmluaXNoKGUpOm51bGx9LGUucHJvdG90eXBlLl9wYXJzZVBhZ2VEZWNsYXJhdGlvbj1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9wYXJzZVBhZ2VNYXJnaW5Cb3goKXx8dGhpcy5fcGFyc2VSdWxlU2V0RGVjbGFyYXRpb24oKX0sZS5wcm90b3R5cGUuX3BhcnNlUGFnZT1mdW5jdGlvbigpe2lmKCF0aGlzLnBlZWtLZXl3b3JkKCJAcGFnZSIpKXJldHVybiBudWxsO3ZhciBlPXRoaXMuY3JlYXRlKFVvKTtpZih0aGlzLmNvbnN1bWVUb2tlbigpLGUuYWRkQ2hpbGQodGhpcy5fcGFyc2VQYWdlU2VsZWN0b3IoKSkpZm9yKDt0aGlzLmFjY2VwdChqci5Db21tYSk7KWlmKCFlLmFkZENoaWxkKHRoaXMuX3BhcnNlUGFnZVNlbGVjdG9yKCkpKXJldHVybiB0aGlzLmZpbmlzaChlLGZhLklkZW50aWZpZXJFeHBlY3RlZCk7cmV0dXJuIHRoaXMuX3BhcnNlQm9keShlLHRoaXMuX3BhcnNlUGFnZURlY2xhcmF0aW9uLmJpbmQodGhpcykpfSxlLnByb3RvdHlwZS5fcGFyc2VQYWdlTWFyZ2luQm94PWZ1bmN0aW9uKCl7aWYoIXRoaXMucGVlayhqci5BdEtleXdvcmQpKXJldHVybiBudWxsO3ZhciBlPXRoaXMuY3JlYXRlKEJvKTtyZXR1cm4gdGhpcy5hY2NlcHRPbmVLZXl3b3JkKHBjKXx8dGhpcy5tYXJrRXJyb3IoZSxmYS5Vbmtub3duQXRSdWxlLFtdLFtqci5DdXJseUxdKSx0aGlzLl9wYXJzZUJvZHkoZSx0aGlzLl9wYXJzZVJ1bGVTZXREZWNsYXJhdGlvbi5iaW5kKHRoaXMpKX0sZS5wcm90b3R5cGUuX3BhcnNlUGFnZVNlbGVjdG9yPWZ1bmN0aW9uKCl7aWYoIXRoaXMucGVlayhqci5JZGVudCkmJiF0aGlzLnBlZWsoanIuQ29sb24pKXJldHVybiBudWxsO3ZhciBlPXRoaXMuY3JlYXRlKFlpKTtyZXR1cm4gZS5hZGRDaGlsZCh0aGlzLl9wYXJzZUlkZW50KCkpLHRoaXMuYWNjZXB0KGpyLkNvbG9uKSYmIWUuYWRkQ2hpbGQodGhpcy5fcGFyc2VJZGVudCgpKT90aGlzLmZpbmlzaChlLGZhLklkZW50aWZpZXJFeHBlY3RlZCk6dGhpcy5maW5pc2goZSl9LGUucHJvdG90eXBlLl9wYXJzZURvY3VtZW50PWZ1bmN0aW9uKCl7aWYoIXRoaXMucGVla0tleXdvcmQoIkAtbW96LWRvY3VtZW50IikpcmV0dXJuIG51bGw7dmFyIGU9dGhpcy5jcmVhdGUoSW8pO3JldHVybiB0aGlzLmNvbnN1bWVUb2tlbigpLHRoaXMucmVzeW5jKFtdLFtqci5DdXJseUxdKSx0aGlzLl9wYXJzZUJvZHkoZSx0aGlzLl9wYXJzZVN0eWxlc2hlZXRTdGF0ZW1lbnQuYmluZCh0aGlzKSl9LGUucHJvdG90eXBlLl9wYXJzZVVua25vd25BdFJ1bGU9ZnVuY3Rpb24oKXtpZighdGhpcy5wZWVrKGpyLkF0S2V5d29yZCkpcmV0dXJuIG51bGw7dmFyIGU9dGhpcy5jcmVhdGUoY3MpO2UuYWRkQ2hpbGQodGhpcy5fcGFyc2VVbmtub3duQXRSdWxlTmFtZSgpKTt2YXIgdD0wLG49MCxyPTAsaT0wO2U6Zm9yKDs7KXtzd2l0Y2godGhpcy50b2tlbi50eXBlKXtjYXNlIGpyLlNlbWlDb2xvbjppZigwPT09biYmMD09PXImJjA9PT1pKWJyZWFrIGU7YnJlYWs7Y2FzZSBqci5FT0Y6cmV0dXJuIG4+MD90aGlzLmZpbmlzaChlLGZhLlJpZ2h0Q3VybHlFeHBlY3RlZCk6aT4wP3RoaXMuZmluaXNoKGUsZmEuUmlnaHRTcXVhcmVCcmFja2V0RXhwZWN0ZWQpOnI+MD90aGlzLmZpbmlzaChlLGZhLlJpZ2h0UGFyZW50aGVzaXNFeHBlY3RlZCk6dGhpcy5maW5pc2goZSk7Y2FzZSBqci5DdXJseUw6dCsrLG4rKzticmVhaztjYXNlIGpyLkN1cmx5UjppZihuLS0sdD4wJiYwPT09bil7aWYodGhpcy5jb25zdW1lVG9rZW4oKSxpPjApcmV0dXJuIHRoaXMuZmluaXNoKGUsZmEuUmlnaHRTcXVhcmVCcmFja2V0RXhwZWN0ZWQpO2lmKHI+MClyZXR1cm4gdGhpcy5maW5pc2goZSxmYS5SaWdodFBhcmVudGhlc2lzRXhwZWN0ZWQpO2JyZWFrIGV9aWYobjwwKXtpZigwPT09ciYmMD09PWkpYnJlYWsgZTtyZXR1cm4gdGhpcy5maW5pc2goZSxmYS5MZWZ0Q3VybHlFeHBlY3RlZCl9YnJlYWs7Y2FzZSBqci5QYXJlbnRoZXNpc0w6cisrO2JyZWFrO2Nhc2UganIuUGFyZW50aGVzaXNSOmlmKC0tcjwwKXJldHVybiB0aGlzLmZpbmlzaChlLGZhLkxlZnRQYXJlbnRoZXNpc0V4cGVjdGVkKTticmVhaztjYXNlIGpyLkJyYWNrZXRMOmkrKzticmVhaztjYXNlIGpyLkJyYWNrZXRSOmlmKC0taTwwKXJldHVybiB0aGlzLmZpbmlzaChlLGZhLkxlZnRTcXVhcmVCcmFja2V0RXhwZWN0ZWQpfXRoaXMuY29uc3VtZVRva2VuKCl9cmV0dXJuIGV9LGUucHJvdG90eXBlLl9wYXJzZVVua25vd25BdFJ1bGVOYW1lPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5jcmVhdGUoWWkpO3JldHVybiB0aGlzLmFjY2VwdChqci5BdEtleXdvcmQpP3RoaXMuZmluaXNoKGUpOmV9LGUucHJvdG90eXBlLl9wYXJzZU9wZXJhdG9yPWZ1bmN0aW9uKCl7aWYodGhpcy5wZWVrRGVsaW0oIi8iKXx8dGhpcy5wZWVrRGVsaW0oIioiKXx8dGhpcy5wZWVrRGVsaW0oIisiKXx8dGhpcy5wZWVrRGVsaW0oIi0iKXx8dGhpcy5wZWVrKGpyLkRhc2htYXRjaCl8fHRoaXMucGVlayhqci5JbmNsdWRlcyl8fHRoaXMucGVlayhqci5TdWJzdHJpbmdPcGVyYXRvcil8fHRoaXMucGVlayhqci5QcmVmaXhPcGVyYXRvcil8fHRoaXMucGVlayhqci5TdWZmaXhPcGVyYXRvcil8fHRoaXMucGVla0RlbGltKCI9Iikpe3ZhciBlPXRoaXMuY3JlYXRlTm9kZShqaS5PcGVyYXRvcik7cmV0dXJuIHRoaXMuY29uc3VtZVRva2VuKCksdGhpcy5maW5pc2goZSl9cmV0dXJuIG51bGx9LGUucHJvdG90eXBlLl9wYXJzZVVuYXJ5T3BlcmF0b3I9ZnVuY3Rpb24oKXtpZighdGhpcy5wZWVrRGVsaW0oIisiKSYmIXRoaXMucGVla0RlbGltKCItIikpcmV0dXJuIG51bGw7dmFyIGU9dGhpcy5jcmVhdGUoWWkpO3JldHVybiB0aGlzLmNvbnN1bWVUb2tlbigpLHRoaXMuZmluaXNoKGUpfSxlLnByb3RvdHlwZS5fcGFyc2VDb21iaW5hdG9yPWZ1bmN0aW9uKCl7aWYodGhpcy5wZWVrRGVsaW0oIj4iKSl7dmFyIGU9dGhpcy5jcmVhdGUoWWkpO3RoaXMuY29uc3VtZVRva2VuKCk7dmFyIHQ9dGhpcy5tYXJrKCk7aWYoIXRoaXMuaGFzV2hpdGVzcGFjZSgpJiZ0aGlzLmFjY2VwdERlbGltKCI+Iikpe2lmKCF0aGlzLmhhc1doaXRlc3BhY2UoKSYmdGhpcy5hY2NlcHREZWxpbSgiPiIpKXJldHVybiBlLnR5cGU9amkuU2VsZWN0b3JDb21iaW5hdG9yU2hhZG93UGllcmNpbmdEZXNjZW5kYW50LHRoaXMuZmluaXNoKGUpO3RoaXMucmVzdG9yZUF0TWFyayh0KX1yZXR1cm4gZS50eXBlPWppLlNlbGVjdG9yQ29tYmluYXRvclBhcmVudCx0aGlzLmZpbmlzaChlKX1pZih0aGlzLnBlZWtEZWxpbSgiKyIpKXtlPXRoaXMuY3JlYXRlKFlpKTtyZXR1cm4gdGhpcy5jb25zdW1lVG9rZW4oKSxlLnR5cGU9amkuU2VsZWN0b3JDb21iaW5hdG9yU2libGluZyx0aGlzLmZpbmlzaChlKX1pZih0aGlzLnBlZWtEZWxpbSgifiIpKXtlPXRoaXMuY3JlYXRlKFlpKTtyZXR1cm4gdGhpcy5jb25zdW1lVG9rZW4oKSxlLnR5cGU9amkuU2VsZWN0b3JDb21iaW5hdG9yQWxsU2libGluZ3MsdGhpcy5maW5pc2goZSl9aWYodGhpcy5wZWVrRGVsaW0oIi8iKSl7ZT10aGlzLmNyZWF0ZShZaSk7dGhpcy5jb25zdW1lVG9rZW4oKTt0PXRoaXMubWFyaygpO2lmKCF0aGlzLmhhc1doaXRlc3BhY2UoKSYmdGhpcy5hY2NlcHRJZGVudCgiZGVlcCIpJiYhdGhpcy5oYXNXaGl0ZXNwYWNlKCkmJnRoaXMuYWNjZXB0RGVsaW0oIi8iKSlyZXR1cm4gZS50eXBlPWppLlNlbGVjdG9yQ29tYmluYXRvclNoYWRvd1BpZXJjaW5nRGVzY2VuZGFudCx0aGlzLmZpbmlzaChlKTt0aGlzLnJlc3RvcmVBdE1hcmsodCl9cmV0dXJuIG51bGx9LGUucHJvdG90eXBlLl9wYXJzZVNpbXBsZVNlbGVjdG9yPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5jcmVhdGUoc28pLHQ9MDtmb3IoZS5hZGRDaGlsZCh0aGlzLl9wYXJzZUVsZW1lbnROYW1lKCkpJiZ0Kys7KDA9PT10fHwhdGhpcy5oYXNXaGl0ZXNwYWNlKCkpJiZlLmFkZENoaWxkKHRoaXMuX3BhcnNlU2ltcGxlU2VsZWN0b3JCb2R5KCkpOyl0Kys7cmV0dXJuIHQ+MD90aGlzLmZpbmlzaChlKTpudWxsfSxlLnByb3RvdHlwZS5fcGFyc2VTaW1wbGVTZWxlY3RvckJvZHk9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcGFyc2VQc2V1ZG8oKXx8dGhpcy5fcGFyc2VIYXNoKCl8fHRoaXMuX3BhcnNlQ2xhc3MoKXx8dGhpcy5fcGFyc2VBdHRyaWIoKX0sZS5wcm90b3R5cGUuX3BhcnNlU2VsZWN0b3JJZGVudD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9wYXJzZUlkZW50KCl9LGUucHJvdG90eXBlLl9wYXJzZUhhc2g9ZnVuY3Rpb24oKXtpZighdGhpcy5wZWVrKGpyLkhhc2gpJiYhdGhpcy5wZWVrRGVsaW0oIiMiKSlyZXR1cm4gbnVsbDt2YXIgZT10aGlzLmNyZWF0ZU5vZGUoamkuSWRlbnRpZmllclNlbGVjdG9yKTtpZih0aGlzLmFjY2VwdERlbGltKCIjIikpe2lmKHRoaXMuaGFzV2hpdGVzcGFjZSgpfHwhZS5hZGRDaGlsZCh0aGlzLl9wYXJzZVNlbGVjdG9ySWRlbnQoKSkpcmV0dXJuIHRoaXMuZmluaXNoKGUsZmEuSWRlbnRpZmllckV4cGVjdGVkKX1lbHNlIHRoaXMuY29uc3VtZVRva2VuKCk7cmV0dXJuIHRoaXMuZmluaXNoKGUpfSxlLnByb3RvdHlwZS5fcGFyc2VDbGFzcz1mdW5jdGlvbigpe2lmKCF0aGlzLnBlZWtEZWxpbSgiLiIpKXJldHVybiBudWxsO3ZhciBlPXRoaXMuY3JlYXRlTm9kZShqaS5DbGFzc1NlbGVjdG9yKTtyZXR1cm4gdGhpcy5jb25zdW1lVG9rZW4oKSx0aGlzLmhhc1doaXRlc3BhY2UoKXx8IWUuYWRkQ2hpbGQodGhpcy5fcGFyc2VTZWxlY3RvcklkZW50KCkpP3RoaXMuZmluaXNoKGUsZmEuSWRlbnRpZmllckV4cGVjdGVkKTp0aGlzLmZpbmlzaChlKX0sZS5wcm90b3R5cGUuX3BhcnNlRWxlbWVudE5hbWU9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLm1hcmsoKSx0PXRoaXMuY3JlYXRlTm9kZShqaS5FbGVtZW50TmFtZVNlbGVjdG9yKTtyZXR1cm4gdC5hZGRDaGlsZCh0aGlzLl9wYXJzZU5hbWVzcGFjZVByZWZpeCgpKSx0LmFkZENoaWxkKHRoaXMuX3BhcnNlU2VsZWN0b3JJZGVudCgpKXx8dGhpcy5hY2NlcHREZWxpbSgiKiIpP3RoaXMuZmluaXNoKHQpOih0aGlzLnJlc3RvcmVBdE1hcmsoZSksbnVsbCl9LGUucHJvdG90eXBlLl9wYXJzZU5hbWVzcGFjZVByZWZpeD1mdW5jdGlvbigpe3ZhciBlPXRoaXMubWFyaygpLHQ9dGhpcy5jcmVhdGVOb2RlKGppLk5hbWVzcGFjZVByZWZpeCk7cmV0dXJuIXQuYWRkQ2hpbGQodGhpcy5fcGFyc2VJZGVudCgpKSYmdGhpcy5hY2NlcHREZWxpbSgiKiIpLHRoaXMuYWNjZXB0RGVsaW0oInwiKT90aGlzLmZpbmlzaCh0KToodGhpcy5yZXN0b3JlQXRNYXJrKGUpLG51bGwpfSxlLnByb3RvdHlwZS5fcGFyc2VBdHRyaWI9ZnVuY3Rpb24oKXtpZighdGhpcy5wZWVrKGpyLkJyYWNrZXRMKSlyZXR1cm4gbnVsbDt2YXIgZT10aGlzLmNyZWF0ZSgkbyk7cmV0dXJuIHRoaXMuY29uc3VtZVRva2VuKCksZS5zZXROYW1lc3BhY2VQcmVmaXgodGhpcy5fcGFyc2VOYW1lc3BhY2VQcmVmaXgoKSksZS5zZXRJZGVudGlmaWVyKHRoaXMuX3BhcnNlSWRlbnQoKSk/KGUuc2V0T3BlcmF0b3IodGhpcy5fcGFyc2VPcGVyYXRvcigpKSYmKGUuc2V0VmFsdWUodGhpcy5fcGFyc2VCaW5hcnlFeHByKCkpLHRoaXMuYWNjZXB0SWRlbnQoImkiKSx0aGlzLmFjY2VwdElkZW50KCJzIikpLHRoaXMuYWNjZXB0KGpyLkJyYWNrZXRSKT90aGlzLmZpbmlzaChlKTp0aGlzLmZpbmlzaChlLGZhLlJpZ2h0U3F1YXJlQnJhY2tldEV4cGVjdGVkKSk6dGhpcy5maW5pc2goZSxmYS5JZGVudGlmaWVyRXhwZWN0ZWQpfSxlLnByb3RvdHlwZS5fcGFyc2VQc2V1ZG89ZnVuY3Rpb24oKXt2YXIgZT10aGlzLHQ9dGhpcy5fdHJ5UGFyc2VQc2V1ZG9JZGVudGlmaWVyKCk7aWYodCl7aWYoIXRoaXMuaGFzV2hpdGVzcGFjZSgpJiZ0aGlzLmFjY2VwdChqci5QYXJlbnRoZXNpc0wpKXtpZih0LmFkZENoaWxkKHRoaXMudHJ5KChmdW5jdGlvbigpe3ZhciB0PWUuY3JlYXRlKFlpKTtpZighdC5hZGRDaGlsZChlLl9wYXJzZVNlbGVjdG9yKCExKSkpcmV0dXJuIG51bGw7Zm9yKDtlLmFjY2VwdChqci5Db21tYSkmJnQuYWRkQ2hpbGQoZS5fcGFyc2VTZWxlY3RvcighMSkpOyk7cmV0dXJuIGUucGVlayhqci5QYXJlbnRoZXNpc1IpP2UuZmluaXNoKHQpOm51bGx9KSl8fHRoaXMuX3BhcnNlQmluYXJ5RXhwcigpKSwhdGhpcy5hY2NlcHQoanIuUGFyZW50aGVzaXNSKSlyZXR1cm4gdGhpcy5maW5pc2godCxmYS5SaWdodFBhcmVudGhlc2lzRXhwZWN0ZWQpfXJldHVybiB0aGlzLmZpbmlzaCh0KX1yZXR1cm4gbnVsbH0sZS5wcm90b3R5cGUuX3RyeVBhcnNlUHNldWRvSWRlbnRpZmllcj1mdW5jdGlvbigpe2lmKCF0aGlzLnBlZWsoanIuQ29sb24pKXJldHVybiBudWxsO3ZhciBlPXRoaXMubWFyaygpLHQ9dGhpcy5jcmVhdGVOb2RlKGppLlBzZXVkb1NlbGVjdG9yKTtyZXR1cm4gdGhpcy5jb25zdW1lVG9rZW4oKSx0aGlzLmhhc1doaXRlc3BhY2UoKT8odGhpcy5yZXN0b3JlQXRNYXJrKGUpLG51bGwpOih0aGlzLmFjY2VwdChqci5Db2xvbiksdGhpcy5oYXNXaGl0ZXNwYWNlKCl8fCF0LmFkZENoaWxkKHRoaXMuX3BhcnNlSWRlbnQoKSk/dGhpcy5maW5pc2godCxmYS5JZGVudGlmaWVyRXhwZWN0ZWQpOnRoaXMuZmluaXNoKHQpKX0sZS5wcm90b3R5cGUuX3RyeVBhcnNlUHJpbz1mdW5jdGlvbigpe3ZhciBlPXRoaXMubWFyaygpLHQ9dGhpcy5fcGFyc2VQcmlvKCk7cmV0dXJuIHR8fCh0aGlzLnJlc3RvcmVBdE1hcmsoZSksbnVsbCl9LGUucHJvdG90eXBlLl9wYXJzZVByaW89ZnVuY3Rpb24oKXtpZighdGhpcy5wZWVrKGpyLkV4Y2xhbWF0aW9uKSlyZXR1cm4gbnVsbDt2YXIgZT10aGlzLmNyZWF0ZU5vZGUoamkuUHJpbyk7cmV0dXJuIHRoaXMuYWNjZXB0KGpyLkV4Y2xhbWF0aW9uKSYmdGhpcy5hY2NlcHRJZGVudCgiaW1wb3J0YW50Iik/dGhpcy5maW5pc2goZSk6bnVsbH0sZS5wcm90b3R5cGUuX3BhcnNlRXhwcj1mdW5jdGlvbihlKXt2b2lkIDA9PT1lJiYoZT0hMSk7dmFyIHQ9dGhpcy5jcmVhdGUoS28pO2lmKCF0LmFkZENoaWxkKHRoaXMuX3BhcnNlQmluYXJ5RXhwcigpKSlyZXR1cm4gbnVsbDtmb3IoOzspe2lmKHRoaXMucGVlayhqci5Db21tYSkpe2lmKGUpcmV0dXJuIHRoaXMuZmluaXNoKHQpO3RoaXMuY29uc3VtZVRva2VuKCl9ZWxzZSBpZighdGhpcy5oYXNXaGl0ZXNwYWNlKCkpYnJlYWs7aWYoIXQuYWRkQ2hpbGQodGhpcy5fcGFyc2VCaW5hcnlFeHByKCkpKWJyZWFrfXJldHVybiB0aGlzLmZpbmlzaCh0KX0sZS5wcm90b3R5cGUuX3BhcnNlVW5pY29kZVJhbmdlPWZ1bmN0aW9uKCl7aWYoIXRoaXMucGVla0lkZW50KCJ1IikpcmV0dXJuIG51bGw7dmFyIGU9dGhpcy5jcmVhdGUoUWkpO3JldHVybiB0aGlzLmFjY2VwdFVuaWNvZGVSYW5nZSgpP3RoaXMuZmluaXNoKGUpOm51bGx9LGUucHJvdG90eXBlLl9wYXJzZU5hbWVkTGluZT1mdW5jdGlvbigpe2lmKCF0aGlzLnBlZWsoanIuQnJhY2tldEwpKXJldHVybiBudWxsO3ZhciBlPXRoaXMuY3JlYXRlTm9kZShqaS5HcmlkTGluZSk7Zm9yKHRoaXMuY29uc3VtZVRva2VuKCk7ZS5hZGRDaGlsZCh0aGlzLl9wYXJzZUlkZW50KCkpOyk7cmV0dXJuIHRoaXMuYWNjZXB0KGpyLkJyYWNrZXRSKT90aGlzLmZpbmlzaChlKTp0aGlzLmZpbmlzaChlLGZhLlJpZ2h0U3F1YXJlQnJhY2tldEV4cGVjdGVkKX0sZS5wcm90b3R5cGUuX3BhcnNlQmluYXJ5RXhwcj1mdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMuY3JlYXRlKGpvKTtpZighbi5zZXRMZWZ0KGV8fHRoaXMuX3BhcnNlVGVybSgpKSlyZXR1cm4gbnVsbDtpZighbi5zZXRPcGVyYXRvcih0fHx0aGlzLl9wYXJzZU9wZXJhdG9yKCkpKXJldHVybiB0aGlzLmZpbmlzaChuKTtpZighbi5zZXRSaWdodCh0aGlzLl9wYXJzZVRlcm0oKSkpcmV0dXJuIHRoaXMuZmluaXNoKG4sZmEuVGVybUV4cGVjdGVkKTtuPXRoaXMuZmluaXNoKG4pO3ZhciByPXRoaXMuX3BhcnNlT3BlcmF0b3IoKTtyZXR1cm4gciYmKG49dGhpcy5fcGFyc2VCaW5hcnlFeHByKG4scikpLHRoaXMuZmluaXNoKG4pfSxlLnByb3RvdHlwZS5fcGFyc2VUZXJtPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5jcmVhdGUocW8pO3JldHVybiBlLnNldE9wZXJhdG9yKHRoaXMuX3BhcnNlVW5hcnlPcGVyYXRvcigpKSxlLnNldEV4cHJlc3Npb24odGhpcy5fcGFyc2VUZXJtRXhwcmVzc2lvbigpKT90aGlzLmZpbmlzaChlKTpudWxsfSxlLnByb3RvdHlwZS5fcGFyc2VUZXJtRXhwcmVzc2lvbj1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9wYXJzZVVSSUxpdGVyYWwoKXx8dGhpcy5fcGFyc2VVbmljb2RlUmFuZ2UoKXx8dGhpcy5fcGFyc2VGdW5jdGlvbigpfHx0aGlzLl9wYXJzZUlkZW50KCl8fHRoaXMuX3BhcnNlU3RyaW5nTGl0ZXJhbCgpfHx0aGlzLl9wYXJzZU51bWVyaWMoKXx8dGhpcy5fcGFyc2VIZXhDb2xvcigpfHx0aGlzLl9wYXJzZU9wZXJhdGlvbigpfHx0aGlzLl9wYXJzZU5hbWVkTGluZSgpfSxlLnByb3RvdHlwZS5fcGFyc2VPcGVyYXRpb249ZnVuY3Rpb24oKXtpZighdGhpcy5wZWVrKGpyLlBhcmVudGhlc2lzTCkpcmV0dXJuIG51bGw7dmFyIGU9dGhpcy5jcmVhdGUoWWkpO3JldHVybiB0aGlzLmNvbnN1bWVUb2tlbigpLGUuYWRkQ2hpbGQodGhpcy5fcGFyc2VFeHByKCkpLHRoaXMuYWNjZXB0KGpyLlBhcmVudGhlc2lzUik/dGhpcy5maW5pc2goZSk6dGhpcy5maW5pc2goZSxmYS5SaWdodFBhcmVudGhlc2lzRXhwZWN0ZWQpfSxlLnByb3RvdHlwZS5fcGFyc2VOdW1lcmljPWZ1bmN0aW9uKCl7aWYodGhpcy5wZWVrKGpyLk51bSl8fHRoaXMucGVlayhqci5QZXJjZW50YWdlKXx8dGhpcy5wZWVrKGpyLlJlc29sdXRpb24pfHx0aGlzLnBlZWsoanIuTGVuZ3RoKXx8dGhpcy5wZWVrKGpyLkVNUyl8fHRoaXMucGVlayhqci5FWFMpfHx0aGlzLnBlZWsoanIuQW5nbGUpfHx0aGlzLnBlZWsoanIuVGltZSl8fHRoaXMucGVlayhqci5EaW1lbnNpb24pfHx0aGlzLnBlZWsoanIuRnJlcSkpe3ZhciBlPXRoaXMuY3JlYXRlKGVzKTtyZXR1cm4gdGhpcy5jb25zdW1lVG9rZW4oKSx0aGlzLmZpbmlzaChlKX1yZXR1cm4gbnVsbH0sZS5wcm90b3R5cGUuX3BhcnNlU3RyaW5nTGl0ZXJhbD1mdW5jdGlvbigpe2lmKCF0aGlzLnBlZWsoanIuU3RyaW5nKSYmIXRoaXMucGVlayhqci5CYWRTdHJpbmcpKXJldHVybiBudWxsO3ZhciBlPXRoaXMuY3JlYXRlTm9kZShqaS5TdHJpbmdMaXRlcmFsKTtyZXR1cm4gdGhpcy5jb25zdW1lVG9rZW4oKSx0aGlzLmZpbmlzaChlKX0sZS5wcm90b3R5cGUuX3BhcnNlVVJJTGl0ZXJhbD1mdW5jdGlvbigpe2lmKCF0aGlzLnBlZWtSZWdFeHAoanIuSWRlbnQsL151cmwoLXByZWZpeCk/JC9pKSlyZXR1cm4gbnVsbDt2YXIgZT10aGlzLm1hcmsoKSx0PXRoaXMuY3JlYXRlTm9kZShqaS5VUklMaXRlcmFsKTtyZXR1cm4gdGhpcy5hY2NlcHQoanIuSWRlbnQpLHRoaXMuaGFzV2hpdGVzcGFjZSgpfHwhdGhpcy5wZWVrKGpyLlBhcmVudGhlc2lzTCk/KHRoaXMucmVzdG9yZUF0TWFyayhlKSxudWxsKToodGhpcy5zY2FubmVyLmluVVJMPSEwLHRoaXMuY29uc3VtZVRva2VuKCksdC5hZGRDaGlsZCh0aGlzLl9wYXJzZVVSTEFyZ3VtZW50KCkpLHRoaXMuc2Nhbm5lci5pblVSTD0hMSx0aGlzLmFjY2VwdChqci5QYXJlbnRoZXNpc1IpP3RoaXMuZmluaXNoKHQpOnRoaXMuZmluaXNoKHQsZmEuUmlnaHRQYXJlbnRoZXNpc0V4cGVjdGVkKSl9LGUucHJvdG90eXBlLl9wYXJzZVVSTEFyZ3VtZW50PWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5jcmVhdGUoWWkpO3JldHVybiB0aGlzLmFjY2VwdChqci5TdHJpbmcpfHx0aGlzLmFjY2VwdChqci5CYWRTdHJpbmcpfHx0aGlzLmFjY2VwdFVucXVvdGVkU3RyaW5nKCk/dGhpcy5maW5pc2goZSk6bnVsbH0sZS5wcm90b3R5cGUuX3BhcnNlSWRlbnQ9ZnVuY3Rpb24oZSl7aWYoIXRoaXMucGVlayhqci5JZGVudCkpcmV0dXJuIG51bGw7dmFyIHQ9dGhpcy5jcmVhdGUoZW8pO3JldHVybiBlJiYodC5yZWZlcmVuY2VUeXBlcz1lKSx0LmlzQ3VzdG9tUHJvcGVydHk9dGhpcy5wZWVrUmVnRXhwKGpyLklkZW50LC9eLS0vKSx0aGlzLmNvbnN1bWVUb2tlbigpLHRoaXMuZmluaXNoKHQpfSxlLnByb3RvdHlwZS5fcGFyc2VGdW5jdGlvbj1mdW5jdGlvbigpe3ZhciBlPXRoaXMubWFyaygpLHQ9dGhpcy5jcmVhdGUodW8pO2lmKCF0LnNldElkZW50aWZpZXIodGhpcy5fcGFyc2VGdW5jdGlvbklkZW50aWZpZXIoKSkpcmV0dXJuIG51bGw7aWYodGhpcy5oYXNXaGl0ZXNwYWNlKCl8fCF0aGlzLmFjY2VwdChqci5QYXJlbnRoZXNpc0wpKXJldHVybiB0aGlzLnJlc3RvcmVBdE1hcmsoZSksbnVsbDtpZih0LmdldEFyZ3VtZW50cygpLmFkZENoaWxkKHRoaXMuX3BhcnNlRnVuY3Rpb25Bcmd1bWVudCgpKSlmb3IoO3RoaXMuYWNjZXB0KGpyLkNvbW1hKSYmIXRoaXMucGVlayhqci5QYXJlbnRoZXNpc1IpOyl0LmdldEFyZ3VtZW50cygpLmFkZENoaWxkKHRoaXMuX3BhcnNlRnVuY3Rpb25Bcmd1bWVudCgpKXx8dGhpcy5tYXJrRXJyb3IodCxmYS5FeHByZXNzaW9uRXhwZWN0ZWQpO3JldHVybiB0aGlzLmFjY2VwdChqci5QYXJlbnRoZXNpc1IpP3RoaXMuZmluaXNoKHQpOnRoaXMuZmluaXNoKHQsZmEuUmlnaHRQYXJlbnRoZXNpc0V4cGVjdGVkKX0sZS5wcm90b3R5cGUuX3BhcnNlRnVuY3Rpb25JZGVudGlmaWVyPWZ1bmN0aW9uKCl7aWYoIXRoaXMucGVlayhqci5JZGVudCkpcmV0dXJuIG51bGw7dmFyIGU9dGhpcy5jcmVhdGUoZW8pO2lmKGUucmVmZXJlbmNlVHlwZXM9WyRpLkZ1bmN0aW9uXSx0aGlzLmFjY2VwdElkZW50KCJwcm9naWQiKSl7aWYodGhpcy5hY2NlcHQoanIuQ29sb24pKWZvcig7dGhpcy5hY2NlcHQoanIuSWRlbnQpJiZ0aGlzLmFjY2VwdERlbGltKCIuIik7KTtyZXR1cm4gdGhpcy5maW5pc2goZSl9cmV0dXJuIHRoaXMuY29uc3VtZVRva2VuKCksdGhpcy5maW5pc2goZSl9LGUucHJvdG90eXBlLl9wYXJzZUZ1bmN0aW9uQXJndW1lbnQ9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmNyZWF0ZShmbyk7cmV0dXJuIGUuc2V0VmFsdWUodGhpcy5fcGFyc2VFeHByKCEwKSk/dGhpcy5maW5pc2goZSk6bnVsbH0sZS5wcm90b3R5cGUuX3BhcnNlSGV4Q29sb3I9ZnVuY3Rpb24oKXtpZih0aGlzLnBlZWtSZWdFeHAoanIuSGFzaCwvXiMoW0EtRmEtZjAtOV17M318W0EtRmEtZjAtOV17NH18W0EtRmEtZjAtOV17Nn18W0EtRmEtZjAtOV17OH0pJC9nKSl7dmFyIGU9dGhpcy5jcmVhdGUoSm8pO3JldHVybiB0aGlzLmNvbnN1bWVUb2tlbigpLHRoaXMuZmluaXNoKGUpfXJldHVybiBudWxsfSxlfSgpO2Z1bmN0aW9uIGJjKGUsdCl7cmV0dXJuLTEhPT1lLmluZGV4T2YodCl9ZnVuY3Rpb24gdmMoKXtmb3IodmFyIGU9W10sdD0wO3Q8YXJndW1lbnRzLmxlbmd0aDt0KyspZVt0XT1hcmd1bWVudHNbdF07Zm9yKHZhciBuPVtdLHI9MCxpPWU7cjxpLmxlbmd0aDtyKyspZm9yKHZhciBvPTAscz1pW3JdO288cy5sZW5ndGg7bysrKXt2YXIgYT1zW29dO2JjKG4sYSl8fG4ucHVzaChhKX1yZXR1cm4gbn12YXIgeWMsd2M9ZnVuY3Rpb24oKXt2YXIgZT1mdW5jdGlvbih0LG4pe3JldHVybihlPU9iamVjdC5zZXRQcm90b3R5cGVPZnx8e19fcHJvdG9fXzpbXX1pbnN0YW5jZW9mIEFycmF5JiZmdW5jdGlvbihlLHQpe2UuX19wcm90b19fPXR9fHxmdW5jdGlvbihlLHQpe2Zvcih2YXIgbiBpbiB0KU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LG4pJiYoZVtuXT10W25dKX0pKHQsbil9O3JldHVybiBmdW5jdGlvbih0LG4pe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBuJiZudWxsIT09bil0aHJvdyBuZXcgVHlwZUVycm9yKCJDbGFzcyBleHRlbmRzIHZhbHVlICIrU3RyaW5nKG4pKyIgaXMgbm90IGEgY29uc3RydWN0b3Igb3IgbnVsbCIpO2Z1bmN0aW9uIHIoKXt0aGlzLmNvbnN0cnVjdG9yPXR9ZSh0LG4pLHQucHJvdG90eXBlPW51bGw9PT1uP09iamVjdC5jcmVhdGUobik6KHIucHJvdG90eXBlPW4ucHJvdG90eXBlLG5ldyByKX19KCkseGM9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCl7dGhpcy5vZmZzZXQ9ZSx0aGlzLmxlbmd0aD10LHRoaXMuc3ltYm9scz1bXSx0aGlzLnBhcmVudD1udWxsLHRoaXMuY2hpbGRyZW49W119cmV0dXJuIGUucHJvdG90eXBlLmFkZENoaWxkPWZ1bmN0aW9uKGUpe3RoaXMuY2hpbGRyZW4ucHVzaChlKSxlLnNldFBhcmVudCh0aGlzKX0sZS5wcm90b3R5cGUuc2V0UGFyZW50PWZ1bmN0aW9uKGUpe3RoaXMucGFyZW50PWV9LGUucHJvdG90eXBlLmZpbmRTY29wZT1mdW5jdGlvbihlLHQpe3JldHVybiB2b2lkIDA9PT10JiYodD0wKSx0aGlzLm9mZnNldDw9ZSYmdGhpcy5vZmZzZXQrdGhpcy5sZW5ndGg+ZSt0fHx0aGlzLm9mZnNldD09PWUmJnRoaXMubGVuZ3RoPT09dD90aGlzLmZpbmRJblNjb3BlKGUsdCk6bnVsbH0sZS5wcm90b3R5cGUuZmluZEluU2NvcGU9ZnVuY3Rpb24oZSx0KXt2b2lkIDA9PT10JiYodD0wKTt2YXIgbj1lK3Qscj1mdW5jdGlvbihlLHQpe3ZhciBuPTAscj1lLmxlbmd0aDtpZigwPT09cilyZXR1cm4gMDtmb3IoO248cjspe3ZhciBpPU1hdGguZmxvb3IoKG4rcikvMik7dChlW2ldKT9yPWk6bj1pKzF9cmV0dXJuIG59KHRoaXMuY2hpbGRyZW4sKGZ1bmN0aW9uKGUpe3JldHVybiBlLm9mZnNldD5ufSkpO2lmKDA9PT1yKXJldHVybiB0aGlzO3ZhciBpPXRoaXMuY2hpbGRyZW5bci0xXTtyZXR1cm4gaS5vZmZzZXQ8PWUmJmkub2Zmc2V0K2kubGVuZ3RoPj1lK3Q/aS5maW5kSW5TY29wZShlLHQpOnRoaXN9LGUucHJvdG90eXBlLmFkZFN5bWJvbD1mdW5jdGlvbihlKXt0aGlzLnN5bWJvbHMucHVzaChlKX0sZS5wcm90b3R5cGUuZ2V0U3ltYm9sPWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuPTA7bjx0aGlzLnN5bWJvbHMubGVuZ3RoO24rKyl7dmFyIHI9dGhpcy5zeW1ib2xzW25dO2lmKHIubmFtZT09PWUmJnIudHlwZT09PXQpcmV0dXJuIHJ9cmV0dXJuIG51bGx9LGUucHJvdG90eXBlLmdldFN5bWJvbHM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zeW1ib2xzfSxlfSgpLFNjPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoKXtyZXR1cm4gZS5jYWxsKHRoaXMsMCxOdW1iZXIuTUFYX1ZBTFVFKXx8dGhpc31yZXR1cm4gd2ModCxlKSx0fSh4YyksQ2M9ZnVuY3Rpb24oZSx0LG4scil7dGhpcy5uYW1lPWUsdGhpcy52YWx1ZT10LHRoaXMubm9kZT1uLHRoaXMudHlwZT1yfSxrYz1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSl7dGhpcy5zY29wZT1lfXJldHVybiBlLnByb3RvdHlwZS5hZGRTeW1ib2w9ZnVuY3Rpb24oZSx0LG4scil7aWYoLTEhPT1lLm9mZnNldCl7dmFyIGk9dGhpcy5zY29wZS5maW5kU2NvcGUoZS5vZmZzZXQsZS5sZW5ndGgpO2kmJmkuYWRkU3ltYm9sKG5ldyBDYyh0LG4sZSxyKSl9fSxlLnByb3RvdHlwZS5hZGRTY29wZT1mdW5jdGlvbihlKXtpZigtMSE9PWUub2Zmc2V0KXt2YXIgdD10aGlzLnNjb3BlLmZpbmRTY29wZShlLm9mZnNldCxlLmxlbmd0aCk7aWYodCYmKHQub2Zmc2V0IT09ZS5vZmZzZXR8fHQubGVuZ3RoIT09ZS5sZW5ndGgpKXt2YXIgbj1uZXcgeGMoZS5vZmZzZXQsZS5sZW5ndGgpO3JldHVybiB0LmFkZENoaWxkKG4pLG59cmV0dXJuIHR9cmV0dXJuIG51bGx9LGUucHJvdG90eXBlLmFkZFN5bWJvbFRvQ2hpbGRTY29wZT1mdW5jdGlvbihlLHQsbixyLGkpe2lmKGUmJi0xIT09ZS5vZmZzZXQpe3ZhciBvPXRoaXMuYWRkU2NvcGUoZSk7byYmby5hZGRTeW1ib2wobmV3IENjKG4scix0LGkpKX19LGUucHJvdG90eXBlLnZpc2l0Tm9kZT1mdW5jdGlvbihlKXtzd2l0Y2goZS50eXBlKXtjYXNlIGppLktleWZyYW1lOnJldHVybiB0aGlzLmFkZFN5bWJvbChlLGUuZ2V0TmFtZSgpLHZvaWQgMCwkaS5LZXlmcmFtZSksITA7Y2FzZSBqaS5DdXN0b21Qcm9wZXJ0eURlY2xhcmF0aW9uOnJldHVybiB0aGlzLnZpc2l0Q3VzdG9tUHJvcGVydHlEZWNsYXJhdGlvbk5vZGUoZSk7Y2FzZSBqaS5WYXJpYWJsZURlY2xhcmF0aW9uOnJldHVybiB0aGlzLnZpc2l0VmFyaWFibGVEZWNsYXJhdGlvbk5vZGUoZSk7Y2FzZSBqaS5SdWxlc2V0OnJldHVybiB0aGlzLnZpc2l0UnVsZVNldChlKTtjYXNlIGppLk1peGluRGVjbGFyYXRpb246cmV0dXJuIHRoaXMuYWRkU3ltYm9sKGUsZS5nZXROYW1lKCksdm9pZCAwLCRpLk1peGluKSwhMDtjYXNlIGppLkZ1bmN0aW9uRGVjbGFyYXRpb246cmV0dXJuIHRoaXMuYWRkU3ltYm9sKGUsZS5nZXROYW1lKCksdm9pZCAwLCRpLkZ1bmN0aW9uKSwhMDtjYXNlIGppLkZ1bmN0aW9uUGFyYW1ldGVyOnJldHVybiB0aGlzLnZpc2l0RnVuY3Rpb25QYXJhbWV0ZXJOb2RlKGUpO2Nhc2UgamkuRGVjbGFyYXRpb25zOnJldHVybiB0aGlzLmFkZFNjb3BlKGUpLCEwO2Nhc2UgamkuRm9yOnZhciB0PWUsbj10LmdldERlY2xhcmF0aW9ucygpO3JldHVybiBuJiZ0LnZhcmlhYmxlJiZ0aGlzLmFkZFN5bWJvbFRvQ2hpbGRTY29wZShuLHQudmFyaWFibGUsdC52YXJpYWJsZS5nZXROYW1lKCksdm9pZCAwLCRpLlZhcmlhYmxlKSwhMDtjYXNlIGppLkVhY2g6dmFyIHI9ZSxpPXIuZ2V0RGVjbGFyYXRpb25zKCk7aWYoaSlmb3IodmFyIG89MCxzPXIuZ2V0VmFyaWFibGVzKCkuZ2V0Q2hpbGRyZW4oKTtvPHMubGVuZ3RoO28rKyl7dmFyIGE9c1tvXTt0aGlzLmFkZFN5bWJvbFRvQ2hpbGRTY29wZShpLGEsYS5nZXROYW1lKCksdm9pZCAwLCRpLlZhcmlhYmxlKX1yZXR1cm4hMH1yZXR1cm4hMH0sZS5wcm90b3R5cGUudmlzaXRSdWxlU2V0PWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuc2NvcGUuZmluZFNjb3BlKGUub2Zmc2V0LGUubGVuZ3RoKTtpZih0KWZvcih2YXIgbj0wLHI9ZS5nZXRTZWxlY3RvcnMoKS5nZXRDaGlsZHJlbigpO248ci5sZW5ndGg7bisrKXt2YXIgaT1yW25dO2kgaW5zdGFuY2VvZiBvbyYmMT09PWkuZ2V0Q2hpbGRyZW4oKS5sZW5ndGgmJnQuYWRkU3ltYm9sKG5ldyBDYyhpLmdldENoaWxkKDApLmdldFRleHQoKSx2b2lkIDAsaSwkaS5SdWxlKSl9cmV0dXJuITB9LGUucHJvdG90eXBlLnZpc2l0VmFyaWFibGVEZWNsYXJhdGlvbk5vZGU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5nZXRWYWx1ZSgpP2UuZ2V0VmFsdWUoKS5nZXRUZXh0KCk6dm9pZCAwO3JldHVybiB0aGlzLmFkZFN5bWJvbChlLGUuZ2V0TmFtZSgpLHQsJGkuVmFyaWFibGUpLCEwfSxlLnByb3RvdHlwZS52aXNpdEZ1bmN0aW9uUGFyYW1ldGVyTm9kZT1mdW5jdGlvbihlKXt2YXIgdD1lLmdldFBhcmVudCgpLmdldERlY2xhcmF0aW9ucygpO2lmKHQpe3ZhciBuPWUuZ2V0RGVmYXVsdFZhbHVlKCkscj1uP24uZ2V0VGV4dCgpOnZvaWQgMDt0aGlzLmFkZFN5bWJvbFRvQ2hpbGRTY29wZSh0LGUsZS5nZXROYW1lKCksciwkaS5WYXJpYWJsZSl9cmV0dXJuITB9LGUucHJvdG90eXBlLnZpc2l0Q3VzdG9tUHJvcGVydHlEZWNsYXJhdGlvbk5vZGU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5nZXRWYWx1ZSgpP2UuZ2V0VmFsdWUoKS5nZXRUZXh0KCk6IiI7cmV0dXJuIHRoaXMuYWRkQ1NTVmFyaWFibGUoZS5nZXRQcm9wZXJ0eSgpLGUuZ2V0UHJvcGVydHkoKS5nZXROYW1lKCksdCwkaS5WYXJpYWJsZSksITB9LGUucHJvdG90eXBlLmFkZENTU1ZhcmlhYmxlPWZ1bmN0aW9uKGUsdCxuLHIpey0xIT09ZS5vZmZzZXQmJnRoaXMuc2NvcGUuYWRkU3ltYm9sKG5ldyBDYyh0LG4sZSxyKSl9LGV9KCksX2M9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUpe3RoaXMuZ2xvYmFsPW5ldyBTYyxlLmFjY2VwdFZpc2l0b3IobmV3IGtjKHRoaXMuZ2xvYmFsKSl9cmV0dXJuIGUucHJvdG90eXBlLmZpbmRTeW1ib2xzQXRPZmZzZXQ9ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG49dGhpcy5nbG9iYWwuZmluZFNjb3BlKGUsMCkscj1bXSxpPXt9O247KXtmb3IodmFyIG89bi5nZXRTeW1ib2xzKCkscz0wO3M8by5sZW5ndGg7cysrKXt2YXIgYT1vW3NdO2EudHlwZSE9PXR8fGlbYS5uYW1lXXx8KHIucHVzaChhKSxpW2EubmFtZV09ITApfW49bi5wYXJlbnR9cmV0dXJuIHJ9LGUucHJvdG90eXBlLmludGVybmFsRmluZFN5bWJvbD1mdW5jdGlvbihlLHQpe3ZhciBuPWU7aWYoZS5wYXJlbnQgaW5zdGFuY2VvZiBtbyYmZS5wYXJlbnQuZ2V0UGFyZW50KClpbnN0YW5jZW9mIHJvJiYobj1lLnBhcmVudC5nZXRQYXJlbnQoKS5nZXREZWNsYXJhdGlvbnMoKSksZS5wYXJlbnQgaW5zdGFuY2VvZiBmbyYmZS5wYXJlbnQuZ2V0UGFyZW50KClpbnN0YW5jZW9mIHVvKXt2YXIgcj1lLnBhcmVudC5nZXRQYXJlbnQoKS5nZXRJZGVudGlmaWVyKCk7aWYocil7dmFyIGk9dGhpcy5pbnRlcm5hbEZpbmRTeW1ib2wocixbJGkuRnVuY3Rpb25dKTtpJiYobj1pLm5vZGUuZ2V0RGVjbGFyYXRpb25zKCkpfX1pZighbilyZXR1cm4gbnVsbDtmb3IodmFyIG89ZS5nZXRUZXh0KCkscz10aGlzLmdsb2JhbC5maW5kU2NvcGUobi5vZmZzZXQsbi5sZW5ndGgpO3M7KXtmb3IodmFyIGE9MDthPHQubGVuZ3RoO2ErKyl7dmFyIGw9dFthXSxjPXMuZ2V0U3ltYm9sKG8sbCk7aWYoYylyZXR1cm4gY31zPXMucGFyZW50fXJldHVybiBudWxsfSxlLnByb3RvdHlwZS5ldmFsdWF0ZVJlZmVyZW5jZVR5cGVzPWZ1bmN0aW9uKGUpe2lmKGUgaW5zdGFuY2VvZiBlbyl7dmFyIHQ9ZS5yZWZlcmVuY2VUeXBlcztpZih0KXJldHVybiB0O2lmKGUuaXNDdXN0b21Qcm9wZXJ0eSlyZXR1cm5bJGkuVmFyaWFibGVdO3ZhciBuPWZ1bmN0aW9uKGUpe3ZhciB0PWUuZmluZFBhcmVudChqaS5EZWNsYXJhdGlvbiksbj10JiZ0LmdldFZhbHVlKCk7cmV0dXJuIG4mJm4uZW5jbG9zZXMoZSk/dDpudWxsfShlKTtpZihuKXt2YXIgcj1uLmdldE5vblByZWZpeGVkUHJvcGVydHlOYW1lKCk7aWYoKCJhbmltYXRpb24iPT09cnx8ImFuaW1hdGlvbi1uYW1lIj09PXIpJiZuLmdldFZhbHVlKCkmJm4uZ2V0VmFsdWUoKS5vZmZzZXQ9PT1lLm9mZnNldClyZXR1cm5bJGkuS2V5ZnJhbWVdfX1lbHNlIGlmKGUgaW5zdGFuY2VvZiBycylyZXR1cm5bJGkuVmFyaWFibGVdO3JldHVybiBlLmZpbmRBUGFyZW50KGppLlNlbGVjdG9yLGppLkV4dGVuZHNSZWZlcmVuY2UpP1skaS5SdWxlXTpudWxsfSxlLnByb3RvdHlwZS5maW5kU3ltYm9sRnJvbU5vZGU9ZnVuY3Rpb24oZSl7aWYoIWUpcmV0dXJuIG51bGw7Zm9yKDtlLnR5cGU9PT1qaS5JbnRlcnBvbGF0aW9uOyllPWUuZ2V0UGFyZW50KCk7dmFyIHQ9dGhpcy5ldmFsdWF0ZVJlZmVyZW5jZVR5cGVzKGUpO3JldHVybiB0P3RoaXMuaW50ZXJuYWxGaW5kU3ltYm9sKGUsdCk6bnVsbH0sZS5wcm90b3R5cGUubWF0Y2hlc1N5bWJvbD1mdW5jdGlvbihlLHQpe2lmKCFlKXJldHVybiExO2Zvcig7ZS50eXBlPT09amkuSW50ZXJwb2xhdGlvbjspZT1lLmdldFBhcmVudCgpO2lmKCFlLm1hdGNoZXModC5uYW1lKSlyZXR1cm4hMTt2YXIgbj10aGlzLmV2YWx1YXRlUmVmZXJlbmNlVHlwZXMoZSk7cmV0dXJuISghbnx8LTE9PT1uLmluZGV4T2YodC50eXBlKSkmJnRoaXMuaW50ZXJuYWxGaW5kU3ltYm9sKGUsbik9PT10fSxlLnByb3RvdHlwZS5maW5kU3ltYm9sPWZ1bmN0aW9uKGUsdCxuKXtmb3IodmFyIHI9dGhpcy5nbG9iYWwuZmluZFNjb3BlKG4pO3I7KXt2YXIgaT1yLmdldFN5bWJvbChlLHQpO2lmKGkpcmV0dXJuIGk7cj1yLnBhcmVudH1yZXR1cm4gbnVsbH0sZX0oKTt5Yz0oKCk9Pnt2YXIgZT17NDcwOmU9PntmdW5jdGlvbiB0KGUpe2lmKCJzdHJpbmciIT10eXBlb2YgZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJQYXRoIG11c3QgYmUgYSBzdHJpbmcuIFJlY2VpdmVkICIrSlNPTi5zdHJpbmdpZnkoZSkpfWZ1bmN0aW9uIG4oZSx0KXtmb3IodmFyIG4scj0iIixpPTAsbz0tMSxzPTAsYT0wO2E8PWUubGVuZ3RoOysrYSl7aWYoYTxlLmxlbmd0aCluPWUuY2hhckNvZGVBdChhKTtlbHNle2lmKDQ3PT09bilicmVhaztuPTQ3fWlmKDQ3PT09bil7aWYobz09PWEtMXx8MT09PXMpO2Vsc2UgaWYobyE9PWEtMSYmMj09PXMpe2lmKHIubGVuZ3RoPDJ8fDIhPT1pfHw0NiE9PXIuY2hhckNvZGVBdChyLmxlbmd0aC0xKXx8NDYhPT1yLmNoYXJDb2RlQXQoci5sZW5ndGgtMikpaWYoci5sZW5ndGg+Mil7dmFyIGw9ci5sYXN0SW5kZXhPZigiLyIpO2lmKGwhPT1yLmxlbmd0aC0xKXstMT09PWw/KHI9IiIsaT0wKTppPShyPXIuc2xpY2UoMCxsKSkubGVuZ3RoLTEtci5sYXN0SW5kZXhPZigiLyIpLG89YSxzPTA7Y29udGludWV9fWVsc2UgaWYoMj09PXIubGVuZ3RofHwxPT09ci5sZW5ndGgpe3I9IiIsaT0wLG89YSxzPTA7Y29udGludWV9dCYmKHIubGVuZ3RoPjA/cis9Ii8uLiI6cj0iLi4iLGk9Mil9ZWxzZSByLmxlbmd0aD4wP3IrPSIvIitlLnNsaWNlKG8rMSxhKTpyPWUuc2xpY2UobysxLGEpLGk9YS1vLTE7bz1hLHM9MH1lbHNlIDQ2PT09biYmLTEhPT1zPysrczpzPS0xfXJldHVybiByfXZhciByPXtyZXNvbHZlOmZ1bmN0aW9uKCl7Zm9yKHZhciBlLHI9IiIsaT0hMSxvPWFyZ3VtZW50cy5sZW5ndGgtMTtvPj0tMSYmIWk7by0tKXt2YXIgcztvPj0wP3M9YXJndW1lbnRzW29dOih2b2lkIDA9PT1lJiYoZT1wcm9jZXNzLmN3ZCgpKSxzPWUpLHQocyksMCE9PXMubGVuZ3RoJiYocj1zKyIvIityLGk9NDc9PT1zLmNoYXJDb2RlQXQoMCkpfXJldHVybiByPW4ociwhaSksaT9yLmxlbmd0aD4wPyIvIityOiIvIjpyLmxlbmd0aD4wP3I6Ii4ifSxub3JtYWxpemU6ZnVuY3Rpb24oZSl7aWYodChlKSwwPT09ZS5sZW5ndGgpcmV0dXJuIi4iO3ZhciByPTQ3PT09ZS5jaGFyQ29kZUF0KDApLGk9NDc9PT1lLmNoYXJDb2RlQXQoZS5sZW5ndGgtMSk7cmV0dXJuIDAhPT0oZT1uKGUsIXIpKS5sZW5ndGh8fHJ8fChlPSIuIiksZS5sZW5ndGg+MCYmaSYmKGUrPSIvIikscj8iLyIrZTplfSxpc0Fic29sdXRlOmZ1bmN0aW9uKGUpe3JldHVybiB0KGUpLGUubGVuZ3RoPjAmJjQ3PT09ZS5jaGFyQ29kZUF0KDApfSxqb2luOmZ1bmN0aW9uKCl7aWYoMD09PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIi4iO2Zvcih2YXIgZSxuPTA7bjxhcmd1bWVudHMubGVuZ3RoOysrbil7dmFyIGk9YXJndW1lbnRzW25dO3QoaSksaS5sZW5ndGg+MCYmKHZvaWQgMD09PWU/ZT1pOmUrPSIvIitpKX1yZXR1cm4gdm9pZCAwPT09ZT8iLiI6ci5ub3JtYWxpemUoZSl9LHJlbGF0aXZlOmZ1bmN0aW9uKGUsbil7aWYodChlKSx0KG4pLGU9PT1uKXJldHVybiIiO2lmKChlPXIucmVzb2x2ZShlKSk9PT0obj1yLnJlc29sdmUobikpKXJldHVybiIiO2Zvcih2YXIgaT0xO2k8ZS5sZW5ndGgmJjQ3PT09ZS5jaGFyQ29kZUF0KGkpOysraSk7Zm9yKHZhciBvPWUubGVuZ3RoLHM9by1pLGE9MTthPG4ubGVuZ3RoJiY0Nz09PW4uY2hhckNvZGVBdChhKTsrK2EpO2Zvcih2YXIgbD1uLmxlbmd0aC1hLGM9czxsP3M6bCxoPS0xLGQ9MDtkPD1jOysrZCl7aWYoZD09PWMpe2lmKGw+Yyl7aWYoNDc9PT1uLmNoYXJDb2RlQXQoYStkKSlyZXR1cm4gbi5zbGljZShhK2QrMSk7aWYoMD09PWQpcmV0dXJuIG4uc2xpY2UoYStkKX1lbHNlIHM+YyYmKDQ3PT09ZS5jaGFyQ29kZUF0KGkrZCk/aD1kOjA9PT1kJiYoaD0wKSk7YnJlYWt9dmFyIHA9ZS5jaGFyQ29kZUF0KGkrZCk7aWYocCE9PW4uY2hhckNvZGVBdChhK2QpKWJyZWFrOzQ3PT09cCYmKGg9ZCl9dmFyIHU9IiI7Zm9yKGQ9aStoKzE7ZDw9bzsrK2QpZCE9PW8mJjQ3IT09ZS5jaGFyQ29kZUF0KGQpfHwoMD09PXUubGVuZ3RoP3UrPSIuLiI6dSs9Ii8uLiIpO3JldHVybiB1Lmxlbmd0aD4wP3Urbi5zbGljZShhK2gpOihhKz1oLDQ3PT09bi5jaGFyQ29kZUF0KGEpJiYrK2Esbi5zbGljZShhKSl9LF9tYWtlTG9uZzpmdW5jdGlvbihlKXtyZXR1cm4gZX0sZGlybmFtZTpmdW5jdGlvbihlKXtpZih0KGUpLDA9PT1lLmxlbmd0aClyZXR1cm4iLiI7Zm9yKHZhciBuPWUuY2hhckNvZGVBdCgwKSxyPTQ3PT09bixpPS0xLG89ITAscz1lLmxlbmd0aC0xO3M+PTE7LS1zKWlmKDQ3PT09KG49ZS5jaGFyQ29kZUF0KHMpKSl7aWYoIW8pe2k9czticmVha319ZWxzZSBvPSExO3JldHVybi0xPT09aT9yPyIvIjoiLiI6ciYmMT09PWk/Ii8vIjplLnNsaWNlKDAsaSl9LGJhc2VuYW1lOmZ1bmN0aW9uKGUsbil7aWYodm9pZCAwIT09biYmInN0cmluZyIhPXR5cGVvZiBuKXRocm93IG5ldyBUeXBlRXJyb3IoJyJleHQiIGFyZ3VtZW50IG11c3QgYmUgYSBzdHJpbmcnKTt0KGUpO3ZhciByLGk9MCxvPS0xLHM9ITA7aWYodm9pZCAwIT09biYmbi5sZW5ndGg+MCYmbi5sZW5ndGg8PWUubGVuZ3RoKXtpZihuLmxlbmd0aD09PWUubGVuZ3RoJiZuPT09ZSlyZXR1cm4iIjt2YXIgYT1uLmxlbmd0aC0xLGw9LTE7Zm9yKHI9ZS5sZW5ndGgtMTtyPj0wOy0tcil7dmFyIGM9ZS5jaGFyQ29kZUF0KHIpO2lmKDQ3PT09Yyl7aWYoIXMpe2k9cisxO2JyZWFrfX1lbHNlLTE9PT1sJiYocz0hMSxsPXIrMSksYT49MCYmKGM9PT1uLmNoYXJDb2RlQXQoYSk/LTE9PS0tYSYmKG89cik6KGE9LTEsbz1sKSl9cmV0dXJuIGk9PT1vP289bDotMT09PW8mJihvPWUubGVuZ3RoKSxlLnNsaWNlKGksbyl9Zm9yKHI9ZS5sZW5ndGgtMTtyPj0wOy0tcilpZig0Nz09PWUuY2hhckNvZGVBdChyKSl7aWYoIXMpe2k9cisxO2JyZWFrfX1lbHNlLTE9PT1vJiYocz0hMSxvPXIrMSk7cmV0dXJuLTE9PT1vPyIiOmUuc2xpY2UoaSxvKX0sZXh0bmFtZTpmdW5jdGlvbihlKXt0KGUpO2Zvcih2YXIgbj0tMSxyPTAsaT0tMSxvPSEwLHM9MCxhPWUubGVuZ3RoLTE7YT49MDstLWEpe3ZhciBsPWUuY2hhckNvZGVBdChhKTtpZig0NyE9PWwpLTE9PT1pJiYobz0hMSxpPWErMSksNDY9PT1sPy0xPT09bj9uPWE6MSE9PXMmJihzPTEpOi0xIT09biYmKHM9LTEpO2Vsc2UgaWYoIW8pe3I9YSsxO2JyZWFrfX1yZXR1cm4tMT09PW58fC0xPT09aXx8MD09PXN8fDE9PT1zJiZuPT09aS0xJiZuPT09cisxPyIiOmUuc2xpY2UobixpKX0sZm9ybWF0OmZ1bmN0aW9uKGUpe2lmKG51bGw9PT1lfHwib2JqZWN0IiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlICJwYXRoT2JqZWN0IiBhcmd1bWVudCBtdXN0IGJlIG9mIHR5cGUgT2JqZWN0LiBSZWNlaXZlZCB0eXBlICcrdHlwZW9mIGUpO3JldHVybiBuPSh0PWUpLmRpcnx8dC5yb290LHI9dC5iYXNlfHwodC5uYW1lfHwiIikrKHQuZXh0fHwiIiksbj9uPT09dC5yb290P24rcjpuKyIvIityOnI7dmFyIHQsbixyfSxwYXJzZTpmdW5jdGlvbihlKXt0KGUpO3ZhciBuPXtyb290OiIiLGRpcjoiIixiYXNlOiIiLGV4dDoiIixuYW1lOiIifTtpZigwPT09ZS5sZW5ndGgpcmV0dXJuIG47dmFyIHIsaT1lLmNoYXJDb2RlQXQoMCksbz00Nz09PWk7bz8obi5yb290PSIvIixyPTEpOnI9MDtmb3IodmFyIHM9LTEsYT0wLGw9LTEsYz0hMCxoPWUubGVuZ3RoLTEsZD0wO2g+PXI7LS1oKWlmKDQ3IT09KGk9ZS5jaGFyQ29kZUF0KGgpKSktMT09PWwmJihjPSExLGw9aCsxKSw0Nj09PWk/LTE9PT1zP3M9aDoxIT09ZCYmKGQ9MSk6LTEhPT1zJiYoZD0tMSk7ZWxzZSBpZighYyl7YT1oKzE7YnJlYWt9cmV0dXJuLTE9PT1zfHwtMT09PWx8fDA9PT1kfHwxPT09ZCYmcz09PWwtMSYmcz09PWErMT8tMSE9PWwmJihuLmJhc2U9bi5uYW1lPTA9PT1hJiZvP2Uuc2xpY2UoMSxsKTplLnNsaWNlKGEsbCkpOigwPT09YSYmbz8obi5uYW1lPWUuc2xpY2UoMSxzKSxuLmJhc2U9ZS5zbGljZSgxLGwpKToobi5uYW1lPWUuc2xpY2UoYSxzKSxuLmJhc2U9ZS5zbGljZShhLGwpKSxuLmV4dD1lLnNsaWNlKHMsbCkpLGE+MD9uLmRpcj1lLnNsaWNlKDAsYS0xKTpvJiYobi5kaXI9Ii8iKSxufSxzZXA6Ii8iLGRlbGltaXRlcjoiOiIsd2luMzI6bnVsbCxwb3NpeDpudWxsfTtyLnBvc2l4PXIsZS5leHBvcnRzPXJ9LDQ0NzooZSx0LG4pPT57dmFyIHI7aWYobi5yKHQpLG4uZCh0LHtVUkk6KCk9PmYsVXRpbHM6KCk9PkV9KSwib2JqZWN0Ij09dHlwZW9mIHByb2Nlc3Mpcj0id2luMzIiPT09cHJvY2Vzcy5wbGF0Zm9ybTtlbHNlIGlmKCJvYmplY3QiPT10eXBlb2YgbmF2aWdhdG9yKXt2YXIgaT1uYXZpZ2F0b3IudXNlckFnZW50O3I9aS5pbmRleE9mKCJXaW5kb3dzIik+PTB9dmFyIG8scyxhPShvPWZ1bmN0aW9uKGUsdCl7cmV0dXJuKG89T2JqZWN0LnNldFByb3RvdHlwZU9mfHx7X19wcm90b19fOltdfWluc3RhbmNlb2YgQXJyYXkmJmZ1bmN0aW9uKGUsdCl7ZS5fX3Byb3RvX189dH18fGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuIGluIHQpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsbikmJihlW25dPXRbbl0pfSkoZSx0KX0sZnVuY3Rpb24oZSx0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCYmbnVsbCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSAiK1N0cmluZyh0KSsiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIG51bGwiKTtmdW5jdGlvbiBuKCl7dGhpcy5jb25zdHJ1Y3Rvcj1lfW8oZSx0KSxlLnByb3RvdHlwZT1udWxsPT09dD9PYmplY3QuY3JlYXRlKHQpOihuLnByb3RvdHlwZT10LnByb3RvdHlwZSxuZXcgbil9KSxsPS9eXHdbXHdcZCsuLV0qJC8sYz0vXlwvLyxoPS9eXC9cLy87ZnVuY3Rpb24gZChlLHQpe2lmKCFlLnNjaGVtZSYmdCl0aHJvdyBuZXcgRXJyb3IoJ1tVcmlFcnJvcl06IFNjaGVtZSBpcyBtaXNzaW5nOiB7c2NoZW1lOiAiIiwgYXV0aG9yaXR5OiAiJy5jb25jYXQoZS5hdXRob3JpdHksJyIsIHBhdGg6ICInKS5jb25jYXQoZS5wYXRoLCciLCBxdWVyeTogIicpLmNvbmNhdChlLnF1ZXJ5LCciLCBmcmFnbWVudDogIicpLmNvbmNhdChlLmZyYWdtZW50LCcifScpKTtpZihlLnNjaGVtZSYmIWwudGVzdChlLnNjaGVtZSkpdGhyb3cgbmV3IEVycm9yKCJbVXJpRXJyb3JdOiBTY2hlbWUgY29udGFpbnMgaWxsZWdhbCBjaGFyYWN0ZXJzLiIpO2lmKGUucGF0aClpZihlLmF1dGhvcml0eSl7aWYoIWMudGVzdChlLnBhdGgpKXRocm93IG5ldyBFcnJvcignW1VyaUVycm9yXTogSWYgYSBVUkkgY29udGFpbnMgYW4gYXV0aG9yaXR5IGNvbXBvbmVudCwgdGhlbiB0aGUgcGF0aCBjb21wb25lbnQgbXVzdCBlaXRoZXIgYmUgZW1wdHkgb3IgYmVnaW4gd2l0aCBhIHNsYXNoICgiLyIpIGNoYXJhY3RlcicpfWVsc2UgaWYoaC50ZXN0KGUucGF0aCkpdGhyb3cgbmV3IEVycm9yKCdbVXJpRXJyb3JdOiBJZiBhIFVSSSBkb2VzIG5vdCBjb250YWluIGFuIGF1dGhvcml0eSBjb21wb25lbnQsIHRoZW4gdGhlIHBhdGggY2Fubm90IGJlZ2luIHdpdGggdHdvIHNsYXNoIGNoYXJhY3RlcnMgKCIvLyIpJyl9dmFyIHA9IiIsdT0iLyIsbT0vXigoW146Lz8jXSs/KTopPyhcL1wvKFteLz8jXSopKT8oW14/I10qKShcPyhbXiNdKikpPygjKC4qKSk/LyxmPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQsbixyLGksbyl7dmFyIHMsYTt2b2lkIDA9PT1vJiYobz0hMSksIm9iamVjdCI9PXR5cGVvZiBlPyh0aGlzLnNjaGVtZT1lLnNjaGVtZXx8cCx0aGlzLmF1dGhvcml0eT1lLmF1dGhvcml0eXx8cCx0aGlzLnBhdGg9ZS5wYXRofHxwLHRoaXMucXVlcnk9ZS5xdWVyeXx8cCx0aGlzLmZyYWdtZW50PWUuZnJhZ21lbnR8fHApOih0aGlzLnNjaGVtZT0oYT1vLChzPWUpfHxhP3M6ImZpbGUiKSx0aGlzLmF1dGhvcml0eT10fHxwLHRoaXMucGF0aD1mdW5jdGlvbihlLHQpe3N3aXRjaChlKXtjYXNlImh0dHBzIjpjYXNlImh0dHAiOmNhc2UiZmlsZSI6dD90WzBdIT09dSYmKHQ9dSt0KTp0PXV9cmV0dXJuIHR9KHRoaXMuc2NoZW1lLG58fHApLHRoaXMucXVlcnk9cnx8cCx0aGlzLmZyYWdtZW50PWl8fHAsZCh0aGlzLG8pKX1yZXR1cm4gZS5pc1VyaT1mdW5jdGlvbih0KXtyZXR1cm4gdCBpbnN0YW5jZW9mIGV8fCEhdCYmInN0cmluZyI9PXR5cGVvZiB0LmF1dGhvcml0eSYmInN0cmluZyI9PXR5cGVvZiB0LmZyYWdtZW50JiYic3RyaW5nIj09dHlwZW9mIHQucGF0aCYmInN0cmluZyI9PXR5cGVvZiB0LnF1ZXJ5JiYic3RyaW5nIj09dHlwZW9mIHQuc2NoZW1lJiYic3RyaW5nIj09dHlwZW9mIHQuZnNQYXRoJiYiZnVuY3Rpb24iPT10eXBlb2YgdC53aXRoJiYiZnVuY3Rpb24iPT10eXBlb2YgdC50b1N0cmluZ30sT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJmc1BhdGgiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4geCh0aGlzLCExKX0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxlLnByb3RvdHlwZS53aXRoPWZ1bmN0aW9uKGUpe2lmKCFlKXJldHVybiB0aGlzO3ZhciB0PWUuc2NoZW1lLG49ZS5hdXRob3JpdHkscj1lLnBhdGgsaT1lLnF1ZXJ5LG89ZS5mcmFnbWVudDtyZXR1cm4gdm9pZCAwPT09dD90PXRoaXMuc2NoZW1lOm51bGw9PT10JiYodD1wKSx2b2lkIDA9PT1uP249dGhpcy5hdXRob3JpdHk6bnVsbD09PW4mJihuPXApLHZvaWQgMD09PXI/cj10aGlzLnBhdGg6bnVsbD09PXImJihyPXApLHZvaWQgMD09PWk/aT10aGlzLnF1ZXJ5Om51bGw9PT1pJiYoaT1wKSx2b2lkIDA9PT1vP289dGhpcy5mcmFnbWVudDpudWxsPT09byYmKG89cCksdD09PXRoaXMuc2NoZW1lJiZuPT09dGhpcy5hdXRob3JpdHkmJnI9PT10aGlzLnBhdGgmJmk9PT10aGlzLnF1ZXJ5JiZvPT09dGhpcy5mcmFnbWVudD90aGlzOm5ldyBiKHQsbixyLGksbyl9LGUucGFyc2U9ZnVuY3Rpb24oZSx0KXt2b2lkIDA9PT10JiYodD0hMSk7dmFyIG49bS5leGVjKGUpO3JldHVybiBuP25ldyBiKG5bMl18fHAsXyhuWzRdfHxwKSxfKG5bNV18fHApLF8obls3XXx8cCksXyhuWzldfHxwKSx0KTpuZXcgYihwLHAscCxwLHApfSxlLmZpbGU9ZnVuY3Rpb24oZSl7dmFyIHQ9cDtpZihyJiYoZT1lLnJlcGxhY2UoL1xcL2csdSkpLGVbMF09PT11JiZlWzFdPT09dSl7dmFyIG49ZS5pbmRleE9mKHUsMik7LTE9PT1uPyh0PWUuc3Vic3RyaW5nKDIpLGU9dSk6KHQ9ZS5zdWJzdHJpbmcoMixuKSxlPWUuc3Vic3RyaW5nKG4pfHx1KX1yZXR1cm4gbmV3IGIoImZpbGUiLHQsZSxwLHApfSxlLmZyb209ZnVuY3Rpb24oZSl7dmFyIHQ9bmV3IGIoZS5zY2hlbWUsZS5hdXRob3JpdHksZS5wYXRoLGUucXVlcnksZS5mcmFnbWVudCk7cmV0dXJuIGQodCwhMCksdH0sZS5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oZSl7cmV0dXJuIHZvaWQgMD09PWUmJihlPSExKSxTKHRoaXMsZSl9LGUucHJvdG90eXBlLnRvSlNPTj1mdW5jdGlvbigpe3JldHVybiB0aGlzfSxlLnJldml2ZT1mdW5jdGlvbih0KXtpZih0KXtpZih0IGluc3RhbmNlb2YgZSlyZXR1cm4gdDt2YXIgbj1uZXcgYih0KTtyZXR1cm4gbi5fZm9ybWF0dGVkPXQuZXh0ZXJuYWwsbi5fZnNQYXRoPXQuX3NlcD09PWc/dC5mc1BhdGg6bnVsbCxufXJldHVybiB0fSxlfSgpLGc9cj8xOnZvaWQgMCxiPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoKXt2YXIgdD1udWxsIT09ZSYmZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fHRoaXM7cmV0dXJuIHQuX2Zvcm1hdHRlZD1udWxsLHQuX2ZzUGF0aD1udWxsLHR9cmV0dXJuIGEodCxlKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsImZzUGF0aCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9mc1BhdGh8fCh0aGlzLl9mc1BhdGg9eCh0aGlzLCExKSksdGhpcy5fZnNQYXRofSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLHQucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKGUpe3JldHVybiB2b2lkIDA9PT1lJiYoZT0hMSksZT9TKHRoaXMsITApOih0aGlzLl9mb3JtYXR0ZWR8fCh0aGlzLl9mb3JtYXR0ZWQ9Uyh0aGlzLCExKSksdGhpcy5fZm9ybWF0dGVkKX0sdC5wcm90b3R5cGUudG9KU09OPWZ1bmN0aW9uKCl7dmFyIGU9eyRtaWQ6MX07cmV0dXJuIHRoaXMuX2ZzUGF0aCYmKGUuZnNQYXRoPXRoaXMuX2ZzUGF0aCxlLl9zZXA9ZyksdGhpcy5fZm9ybWF0dGVkJiYoZS5leHRlcm5hbD10aGlzLl9mb3JtYXR0ZWQpLHRoaXMucGF0aCYmKGUucGF0aD10aGlzLnBhdGgpLHRoaXMuc2NoZW1lJiYoZS5zY2hlbWU9dGhpcy5zY2hlbWUpLHRoaXMuYXV0aG9yaXR5JiYoZS5hdXRob3JpdHk9dGhpcy5hdXRob3JpdHkpLHRoaXMucXVlcnkmJihlLnF1ZXJ5PXRoaXMucXVlcnkpLHRoaXMuZnJhZ21lbnQmJihlLmZyYWdtZW50PXRoaXMuZnJhZ21lbnQpLGV9LHR9KGYpLHY9KChzPXt9KVs1OF09IiUzQSIsc1s0N109IiUyRiIsc1s2M109IiUzRiIsc1szNV09IiUyMyIsc1s5MV09IiU1QiIsc1s5M109IiU1RCIsc1s2NF09IiU0MCIsc1szM109IiUyMSIsc1szNl09IiUyNCIsc1szOF09IiUyNiIsc1szOV09IiUyNyIsc1s0MF09IiUyOCIsc1s0MV09IiUyOSIsc1s0Ml09IiUyQSIsc1s0M109IiUyQiIsc1s0NF09IiUyQyIsc1s1OV09IiUzQiIsc1s2MV09IiUzRCIsc1szMl09IiUyMCIscyk7ZnVuY3Rpb24geShlLHQpe2Zvcih2YXIgbj12b2lkIDAscj0tMSxpPTA7aTxlLmxlbmd0aDtpKyspe3ZhciBvPWUuY2hhckNvZGVBdChpKTtpZihvPj05NyYmbzw9MTIyfHxvPj02NSYmbzw9OTB8fG8+PTQ4JiZvPD01N3x8NDU9PT1vfHw0Nj09PW98fDk1PT09b3x8MTI2PT09b3x8dCYmNDc9PT1vKS0xIT09ciYmKG4rPWVuY29kZVVSSUNvbXBvbmVudChlLnN1YnN0cmluZyhyLGkpKSxyPS0xKSx2b2lkIDAhPT1uJiYobis9ZS5jaGFyQXQoaSkpO2Vsc2V7dm9pZCAwPT09biYmKG49ZS5zdWJzdHIoMCxpKSk7dmFyIHM9dltvXTt2b2lkIDAhPT1zPygtMSE9PXImJihuKz1lbmNvZGVVUklDb21wb25lbnQoZS5zdWJzdHJpbmcocixpKSkscj0tMSksbis9cyk6LTE9PT1yJiYocj1pKX19cmV0dXJuLTEhPT1yJiYobis9ZW5jb2RlVVJJQ29tcG9uZW50KGUuc3Vic3RyaW5nKHIpKSksdm9pZCAwIT09bj9uOmV9ZnVuY3Rpb24gdyhlKXtmb3IodmFyIHQ9dm9pZCAwLG49MDtuPGUubGVuZ3RoO24rKyl7dmFyIHI9ZS5jaGFyQ29kZUF0KG4pOzM1PT09cnx8NjM9PT1yPyh2b2lkIDA9PT10JiYodD1lLnN1YnN0cigwLG4pKSx0Kz12W3JdKTp2b2lkIDAhPT10JiYodCs9ZVtuXSl9cmV0dXJuIHZvaWQgMCE9PXQ/dDplfWZ1bmN0aW9uIHgoZSx0KXt2YXIgbjtyZXR1cm4gbj1lLmF1dGhvcml0eSYmZS5wYXRoLmxlbmd0aD4xJiYiZmlsZSI9PT1lLnNjaGVtZT8iLy8iLmNvbmNhdChlLmF1dGhvcml0eSkuY29uY2F0KGUucGF0aCk6NDc9PT1lLnBhdGguY2hhckNvZGVBdCgwKSYmKGUucGF0aC5jaGFyQ29kZUF0KDEpPj02NSYmZS5wYXRoLmNoYXJDb2RlQXQoMSk8PTkwfHxlLnBhdGguY2hhckNvZGVBdCgxKT49OTcmJmUucGF0aC5jaGFyQ29kZUF0KDEpPD0xMjIpJiY1OD09PWUucGF0aC5jaGFyQ29kZUF0KDIpP3Q/ZS5wYXRoLnN1YnN0cigxKTplLnBhdGhbMV0udG9Mb3dlckNhc2UoKStlLnBhdGguc3Vic3RyKDIpOmUucGF0aCxyJiYobj1uLnJlcGxhY2UoL1wvL2csIlxcIikpLG59ZnVuY3Rpb24gUyhlLHQpe3ZhciBuPXQ/dzp5LHI9IiIsaT1lLnNjaGVtZSxvPWUuYXV0aG9yaXR5LHM9ZS5wYXRoLGE9ZS5xdWVyeSxsPWUuZnJhZ21lbnQ7aWYoaSYmKHIrPWkscis9IjoiKSwob3x8ImZpbGUiPT09aSkmJihyKz11LHIrPXUpLG8pe3ZhciBjPW8uaW5kZXhPZigiQCIpO2lmKC0xIT09Yyl7dmFyIGg9by5zdWJzdHIoMCxjKTtvPW8uc3Vic3RyKGMrMSksLTE9PT0oYz1oLmluZGV4T2YoIjoiKSk/cis9bihoLCExKToocis9bihoLnN1YnN0cigwLGMpLCExKSxyKz0iOiIscis9bihoLnN1YnN0cihjKzEpLCExKSkscis9IkAifS0xPT09KGM9KG89by50b0xvd2VyQ2FzZSgpKS5pbmRleE9mKCI6IikpP3IrPW4obywhMSk6KHIrPW4oby5zdWJzdHIoMCxjKSwhMSkscis9by5zdWJzdHIoYykpfWlmKHMpe2lmKHMubGVuZ3RoPj0zJiY0Nz09PXMuY2hhckNvZGVBdCgwKSYmNTg9PT1zLmNoYXJDb2RlQXQoMikpKGQ9cy5jaGFyQ29kZUF0KDEpKT49NjUmJmQ8PTkwJiYocz0iLyIuY29uY2F0KFN0cmluZy5mcm9tQ2hhckNvZGUoZCszMiksIjoiKS5jb25jYXQocy5zdWJzdHIoMykpKTtlbHNlIGlmKHMubGVuZ3RoPj0yJiY1OD09PXMuY2hhckNvZGVBdCgxKSl7dmFyIGQ7KGQ9cy5jaGFyQ29kZUF0KDApKT49NjUmJmQ8PTkwJiYocz0iIi5jb25jYXQoU3RyaW5nLmZyb21DaGFyQ29kZShkKzMyKSwiOiIpLmNvbmNhdChzLnN1YnN0cigyKSkpfXIrPW4ocywhMCl9cmV0dXJuIGEmJihyKz0iPyIscis9bihhLCExKSksbCYmKHIrPSIjIixyKz10P2w6eShsLCExKSkscn1mdW5jdGlvbiBDKGUpe3RyeXtyZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KGUpfWNhdGNoKHQpe3JldHVybiBlLmxlbmd0aD4zP2Uuc3Vic3RyKDAsMykrQyhlLnN1YnN0cigzKSk6ZX19dmFyIGs9LyglWzAtOUEtWmEtel1bMC05QS1aYS16XSkrL2c7ZnVuY3Rpb24gXyhlKXtyZXR1cm4gZS5tYXRjaChrKT9lLnJlcGxhY2UoaywoZnVuY3Rpb24oZSl7cmV0dXJuIEMoZSl9KSk6ZX12YXIgRSxSLEY9big0NzApLE49ZnVuY3Rpb24oZSx0LG4pe2lmKG58fDI9PT1hcmd1bWVudHMubGVuZ3RoKWZvcih2YXIgcixpPTAsbz10Lmxlbmd0aDtpPG87aSsrKSFyJiZpIGluIHR8fChyfHwocj1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh0LDAsaSkpLHJbaV09dFtpXSk7cmV0dXJuIGUuY29uY2F0KHJ8fEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHQpKX0sRD1GLnBvc2l4fHxGOyhSPUV8fChFPXt9KSkuam9pblBhdGg9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PVtdLG49MTtuPGFyZ3VtZW50cy5sZW5ndGg7bisrKXRbbi0xXT1hcmd1bWVudHNbbl07cmV0dXJuIGUud2l0aCh7cGF0aDpELmpvaW4uYXBwbHkoRCxOKFtlLnBhdGhdLHQsITEpKX0pfSxSLnJlc29sdmVQYXRoPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1bXSxuPTE7bjxhcmd1bWVudHMubGVuZ3RoO24rKyl0W24tMV09YXJndW1lbnRzW25dO3ZhciByPWUucGF0aHx8Ii8iO3JldHVybiBlLndpdGgoe3BhdGg6RC5yZXNvbHZlLmFwcGx5KEQsTihbcl0sdCwhMSkpfSl9LFIuZGlybmFtZT1mdW5jdGlvbihlKXt2YXIgdD1ELmRpcm5hbWUoZS5wYXRoKTtyZXR1cm4gMT09PXQubGVuZ3RoJiY0Nj09PXQuY2hhckNvZGVBdCgwKT9lOmUud2l0aCh7cGF0aDp0fSl9LFIuYmFzZW5hbWU9ZnVuY3Rpb24oZSl7cmV0dXJuIEQuYmFzZW5hbWUoZS5wYXRoKX0sUi5leHRuYW1lPWZ1bmN0aW9uKGUpe3JldHVybiBELmV4dG5hbWUoZS5wYXRoKX19fSx0PXt9O2Z1bmN0aW9uIG4ocil7aWYodFtyXSlyZXR1cm4gdFtyXS5leHBvcnRzO3ZhciBpPXRbcl09e2V4cG9ydHM6e319O3JldHVybiBlW3JdKGksaS5leHBvcnRzLG4pLGkuZXhwb3J0c31yZXR1cm4gbi5kPShlLHQpPT57Zm9yKHZhciByIGluIHQpbi5vKHQscikmJiFuLm8oZSxyKSYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGUscix7ZW51bWVyYWJsZTohMCxnZXQ6dFtyXX0pfSxuLm89KGUsdCk9Pk9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHQpLG4ucj1lPT57InVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJlN5bWJvbC50b1N0cmluZ1RhZyYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsU3ltYm9sLnRvU3RyaW5nVGFnLHt2YWx1ZToiTW9kdWxlIn0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KX0sbig0NDcpfSkoKTt2YXJ7VVJJOkVjLFV0aWxzOlJjfT15YztmdW5jdGlvbiBGYyhlKXtyZXR1cm4gUmMuZGlybmFtZShFYy5wYXJzZShlKSkudG9TdHJpbmcoKX1mdW5jdGlvbiBOYyhlKXtmb3IodmFyIHQ9W10sbj0xO248YXJndW1lbnRzLmxlbmd0aDtuKyspdFtuLTFdPWFyZ3VtZW50c1tuXTtyZXR1cm4gUmMuam9pblBhdGguYXBwbHkoUmMsZnVuY3Rpb24oZSx0LG4pe2lmKG58fDI9PT1hcmd1bWVudHMubGVuZ3RoKWZvcih2YXIgcixpPTAsbz10Lmxlbmd0aDtpPG87aSsrKSFyJiZpIGluIHR8fChyfHwocj1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh0LDAsaSkpLHJbaV09dFtpXSk7cmV0dXJuIGUuY29uY2F0KHJ8fEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHQpKX0oW0VjLnBhcnNlKGUpXSx0LCExKSkudG9TdHJpbmcoKX12YXIgRGM9ZnVuY3Rpb24oZSx0LG4scil7cmV0dXJuIG5ldyhufHwobj1Qcm9taXNlKSkoKGZ1bmN0aW9uKGksbyl7ZnVuY3Rpb24gcyhlKXt0cnl7bChyLm5leHQoZSkpfWNhdGNoKGUpe28oZSl9fWZ1bmN0aW9uIGEoZSl7dHJ5e2woci50aHJvdyhlKSl9Y2F0Y2goZSl7byhlKX19ZnVuY3Rpb24gbChlKXt2YXIgdDtlLmRvbmU/aShlLnZhbHVlKToodD1lLnZhbHVlLHQgaW5zdGFuY2VvZiBuP3Q6bmV3IG4oKGZ1bmN0aW9uKGUpe2UodCl9KSkpLnRoZW4ocyxhKX1sKChyPXIuYXBwbHkoZSx0fHxbXSkpLm5leHQoKSl9KSl9LFRjPWZ1bmN0aW9uKGUsdCl7dmFyIG4scixpLG8scz17bGFiZWw6MCxzZW50OmZ1bmN0aW9uKCl7aWYoMSZpWzBdKXRocm93IGlbMV07cmV0dXJuIGlbMV19LHRyeXM6W10sb3BzOltdfTtyZXR1cm4gbz17bmV4dDphKDApLHRocm93OmEoMSkscmV0dXJuOmEoMil9LCJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJihvW1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pLG87ZnVuY3Rpb24gYShvKXtyZXR1cm4gZnVuY3Rpb24oYSl7cmV0dXJuIGZ1bmN0aW9uKG8pe2lmKG4pdGhyb3cgbmV3IFR5cGVFcnJvcigiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLiIpO2Zvcig7czspdHJ5e2lmKG49MSxyJiYoaT0yJm9bMF0/ci5yZXR1cm46b1swXT9yLnRocm93fHwoKGk9ci5yZXR1cm4pJiZpLmNhbGwociksMCk6ci5uZXh0KSYmIShpPWkuY2FsbChyLG9bMV0pKS5kb25lKXJldHVybiBpO3N3aXRjaChyPTAsaSYmKG89WzImb1swXSxpLnZhbHVlXSksb1swXSl7Y2FzZSAwOmNhc2UgMTppPW87YnJlYWs7Y2FzZSA0OnJldHVybiBzLmxhYmVsKysse3ZhbHVlOm9bMV0sZG9uZTohMX07Y2FzZSA1OnMubGFiZWwrKyxyPW9bMV0sbz1bMF07Y29udGludWU7Y2FzZSA3Om89cy5vcHMucG9wKCkscy50cnlzLnBvcCgpO2NvbnRpbnVlO2RlZmF1bHQ6aWYoIShpPXMudHJ5cywoaT1pLmxlbmd0aD4wJiZpW2kubGVuZ3RoLTFdKXx8NiE9PW9bMF0mJjIhPT1vWzBdKSl7cz0wO2NvbnRpbnVlfWlmKDM9PT1vWzBdJiYoIWl8fG9bMV0+aVswXSYmb1sxXTxpWzNdKSl7cy5sYWJlbD1vWzFdO2JyZWFrfWlmKDY9PT1vWzBdJiZzLmxhYmVsPGlbMV0pe3MubGFiZWw9aVsxXSxpPW87YnJlYWt9aWYoaSYmcy5sYWJlbDxpWzJdKXtzLmxhYmVsPWlbMl0scy5vcHMucHVzaChvKTticmVha31pWzJdJiZzLm9wcy5wb3AoKSxzLnRyeXMucG9wKCk7Y29udGludWV9bz10LmNhbGwoZSxzKX1jYXRjaChlKXtvPVs2LGVdLHI9MH1maW5hbGx5e249aT0wfWlmKDUmb1swXSl0aHJvdyBvWzFdO3JldHVybnt2YWx1ZTpvWzBdP29bMV06dm9pZCAwLGRvbmU6ITB9fShbbyxhXSl9fX0sQWM9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUpe3RoaXMucmVhZERpcmVjdG9yeT1lLHRoaXMubGl0ZXJhbENvbXBsZXRpb25zPVtdLHRoaXMuaW1wb3J0Q29tcGxldGlvbnM9W119cmV0dXJuIGUucHJvdG90eXBlLm9uQ3NzVVJJTGl0ZXJhbFZhbHVlPWZ1bmN0aW9uKGUpe3RoaXMubGl0ZXJhbENvbXBsZXRpb25zLnB1c2goZSl9LGUucHJvdG90eXBlLm9uQ3NzSW1wb3J0UGF0aD1mdW5jdGlvbihlKXt0aGlzLmltcG9ydENvbXBsZXRpb25zLnB1c2goZSl9LGUucHJvdG90eXBlLmNvbXB1dGVDb21wbGV0aW9ucz1mdW5jdGlvbihlLHQpe3JldHVybiBEYyh0aGlzLHZvaWQgMCx2b2lkIDAsKGZ1bmN0aW9uKCl7dmFyIG4scixpLG8scyxhLGwsYyxoLGQscCx1LG0sZixnLGIsdjtyZXR1cm4gVGModGhpcywoZnVuY3Rpb24oeSl7c3dpdGNoKHkubGFiZWwpe2Nhc2UgMDpuPXtpdGVtczpbXSxpc0luY29tcGxldGU6ITF9LHI9MCxpPXRoaXMubGl0ZXJhbENvbXBsZXRpb25zLHkubGFiZWw9MTtjYXNlIDE6cmV0dXJuIHI8aS5sZW5ndGg/KG89aVtyXSxzPW8udXJpVmFsdWUsIi4iIT09KG09emMocykpJiYiLi4iIT09bT9bMywyXToobi5pc0luY29tcGxldGU9ITAsWzMsNF0pKTpbMyw1XTtjYXNlIDI6cmV0dXJuWzQsdGhpcy5wcm92aWRlUGF0aFN1Z2dlc3Rpb25zKHMsby5wb3NpdGlvbixvLnJhbmdlLGUsdCldO2Nhc2UgMzpmb3IoYT15LnNlbnQoKSxsPTAsYz1hO2w8Yy5sZW5ndGg7bCsrKXY9Y1tsXSxuLml0ZW1zLnB1c2godik7eS5sYWJlbD00O2Nhc2UgNDpyZXR1cm4gcisrLFszLDFdO2Nhc2UgNTpoPTAsZD10aGlzLmltcG9ydENvbXBsZXRpb25zLHkubGFiZWw9NjtjYXNlIDY6cmV0dXJuIGg8ZC5sZW5ndGg/KHA9ZFtoXSx1PXAucGF0aFZhbHVlLCIuIiE9PShtPXpjKHUpKSYmIi4uIiE9PW0/WzMsN106KG4uaXNJbmNvbXBsZXRlPSEwLFszLDldKSk6WzMsMTBdO2Nhc2UgNzpyZXR1cm5bNCx0aGlzLnByb3ZpZGVQYXRoU3VnZ2VzdGlvbnModSxwLnBvc2l0aW9uLHAucmFuZ2UsZSx0KV07Y2FzZSA4OmZvcihmPXkuc2VudCgpLCJzY3NzIj09PWUubGFuZ3VhZ2VJZCYmZi5mb3JFYWNoKChmdW5jdGlvbihlKXtXaShlLmxhYmVsLCJfIikmJlZpKGUubGFiZWwsIi5zY3NzIikmJihlLnRleHRFZGl0P2UudGV4dEVkaXQubmV3VGV4dD1lLmxhYmVsLnNsaWNlKDEsLTUpOmUubGFiZWw9ZS5sYWJlbC5zbGljZSgxLC01KSl9KSksZz0wLGI9ZjtnPGIubGVuZ3RoO2crKyl2PWJbZ10sbi5pdGVtcy5wdXNoKHYpO3kubGFiZWw9OTtjYXNlIDk6cmV0dXJuIGgrKyxbMyw2XTtjYXNlIDEwOnJldHVyblsyLG5dfX0pKX0pKX0sZS5wcm90b3R5cGUucHJvdmlkZVBhdGhTdWdnZXN0aW9ucz1mdW5jdGlvbihlLHQsbixyLGkpe3JldHVybiBEYyh0aGlzLHZvaWQgMCx2b2lkIDAsKGZ1bmN0aW9uKCl7dmFyIG8scyxhLGwsYyxoLGQscCx1LG0sZixnLGIsdix5O3JldHVybiBUYyh0aGlzLChmdW5jdGlvbih3KXtzd2l0Y2gody5sYWJlbCl7Y2FzZSAwOmlmKG89emMoZSkscz1XaShlLCInIil8fFdpKGUsJyInKSxhPXM/by5zbGljZSgwLHQuY2hhcmFjdGVyLShuLnN0YXJ0LmNoYXJhY3RlcisxKSk6by5zbGljZSgwLHQuY2hhcmFjdGVyLW4uc3RhcnQuY2hhcmFjdGVyKSxsPXIudXJpLGM9cz9mdW5jdGlvbihlLHQsbil7dmFyIHI9TGMoZS5zdGFydCx0KSxpPUxjKGUuZW5kLG4pO3JldHVybiBrcy5jcmVhdGUocixpKX0obiwxLC0xKTpuLGg9ZnVuY3Rpb24oZSx0LG4pe3ZhciByLGk9ZS5sYXN0SW5kZXhPZigiLyIpO2lmKC0xPT09aSlyPW47ZWxzZXt2YXIgbz10LnNsaWNlKGkrMSkscz1MYyhuLmVuZCwtby5sZW5ndGgpLGE9by5pbmRleE9mKCIgIiksbD12b2lkIDA7bD0tMSE9PWE/TGMocyxhKTpuLmVuZCxyPWtzLmNyZWF0ZShzLGwpfXJldHVybiByfShhLG8sYyksZD1hLnN1YnN0cmluZygwLGEubGFzdEluZGV4T2YoIi8iKSsxKSwhKHA9aS5yZXNvbHZlUmVmZXJlbmNlKGR8fCIuIixsKSkpcmV0dXJuWzMsNF07dy5sYWJlbD0xO2Nhc2UgMTpyZXR1cm4gdy50cnlzLnB1c2goWzEsMywsNF0pLHU9W10sWzQsdGhpcy5yZWFkRGlyZWN0b3J5KHApXTtjYXNlIDI6Zm9yKG09dy5zZW50KCksZj0wLGc9bTtmPGcubGVuZ3RoO2YrKyliPWdbZl0sdj1iWzBdLHk9YlsxXSx2LmNoYXJDb2RlQXQoMCk9PT1NY3x8eSE9PVNsLkRpcmVjdG9yeSYmTmMocCx2KT09PWx8fHUucHVzaChJYyh2LHk9PT1TbC5EaXJlY3RvcnksaCkpO3JldHVyblsyLHVdO2Nhc2UgMzpyZXR1cm4gdy5zZW50KCksWzMsNF07Y2FzZSA0OnJldHVyblsyLFtdXX19KSl9KSl9LGV9KCksTWM9Ii4iLmNoYXJDb2RlQXQoMCk7ZnVuY3Rpb24gemMoZSl7cmV0dXJuIFdpKGUsIiciKXx8V2koZSwnIicpP2Uuc2xpY2UoMSwtMSk6ZX1mdW5jdGlvbiBJYyhlLHQsbil7cmV0dXJuIHQ/e2xhYmVsOlBjKGUrPSIvIiksa2luZDpSYS5Gb2xkZXIsdGV4dEVkaXQ6WXMucmVwbGFjZShuLFBjKGUpKSxjb21tYW5kOnt0aXRsZToiU3VnZ2VzdCIsY29tbWFuZDoiZWRpdG9yLmFjdGlvbi50cmlnZ2VyU3VnZ2VzdCJ9fTp7bGFiZWw6UGMoZSksa2luZDpSYS5GaWxlLHRleHRFZGl0OllzLnJlcGxhY2UobixQYyhlKSl9fWZ1bmN0aW9uIFBjKGUpe3JldHVybiBlLnJlcGxhY2UoLyhcc3xcKHxcKXwsfCJ8JykvZywiXFwkMSIpfWZ1bmN0aW9uIExjKGUsdCl7cmV0dXJuIFNzLmNyZWF0ZShlLmxpbmUsZS5jaGFyYWN0ZXIrdCl9dmFyIE9jLFdjLFZjPWZ1bmN0aW9uKGUsdCxuLHIpe3JldHVybiBuZXcobnx8KG49UHJvbWlzZSkpKChmdW5jdGlvbihpLG8pe2Z1bmN0aW9uIHMoZSl7dHJ5e2woci5uZXh0KGUpKX1jYXRjaChlKXtvKGUpfX1mdW5jdGlvbiBhKGUpe3RyeXtsKHIudGhyb3coZSkpfWNhdGNoKGUpe28oZSl9fWZ1bmN0aW9uIGwoZSl7dmFyIHQ7ZS5kb25lP2koZS52YWx1ZSk6KHQ9ZS52YWx1ZSx0IGluc3RhbmNlb2Ygbj90Om5ldyBuKChmdW5jdGlvbihlKXtlKHQpfSkpKS50aGVuKHMsYSl9bCgocj1yLmFwcGx5KGUsdHx8W10pKS5uZXh0KCkpfSkpfSxVYz1mdW5jdGlvbihlLHQpe3ZhciBuLHIsaSxvLHM9e2xhYmVsOjAsc2VudDpmdW5jdGlvbigpe2lmKDEmaVswXSl0aHJvdyBpWzFdO3JldHVybiBpWzFdfSx0cnlzOltdLG9wczpbXX07cmV0dXJuIG89e25leHQ6YSgwKSx0aHJvdzphKDEpLHJldHVybjphKDIpfSwiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYob1tTeW1ib2wuaXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSxvO2Z1bmN0aW9uIGEobyl7cmV0dXJuIGZ1bmN0aW9uKGEpe3JldHVybiBmdW5jdGlvbihvKXtpZihuKXRocm93IG5ldyBUeXBlRXJyb3IoIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy4iKTtmb3IoO3M7KXRyeXtpZihuPTEsciYmKGk9MiZvWzBdP3IucmV0dXJuOm9bMF0/ci50aHJvd3x8KChpPXIucmV0dXJuKSYmaS5jYWxsKHIpLDApOnIubmV4dCkmJiEoaT1pLmNhbGwocixvWzFdKSkuZG9uZSlyZXR1cm4gaTtzd2l0Y2gocj0wLGkmJihvPVsyJm9bMF0saS52YWx1ZV0pLG9bMF0pe2Nhc2UgMDpjYXNlIDE6aT1vO2JyZWFrO2Nhc2UgNDpyZXR1cm4gcy5sYWJlbCsrLHt2YWx1ZTpvWzFdLGRvbmU6ITF9O2Nhc2UgNTpzLmxhYmVsKysscj1vWzFdLG89WzBdO2NvbnRpbnVlO2Nhc2UgNzpvPXMub3BzLnBvcCgpLHMudHJ5cy5wb3AoKTtjb250aW51ZTtkZWZhdWx0OmlmKCEoaT1zLnRyeXMsKGk9aS5sZW5ndGg+MCYmaVtpLmxlbmd0aC0xXSl8fDYhPT1vWzBdJiYyIT09b1swXSkpe3M9MDtjb250aW51ZX1pZigzPT09b1swXSYmKCFpfHxvWzFdPmlbMF0mJm9bMV08aVszXSkpe3MubGFiZWw9b1sxXTticmVha31pZig2PT09b1swXSYmcy5sYWJlbDxpWzFdKXtzLmxhYmVsPWlbMV0saT1vO2JyZWFrfWlmKGkmJnMubGFiZWw8aVsyXSl7cy5sYWJlbD1pWzJdLHMub3BzLnB1c2gobyk7YnJlYWt9aVsyXSYmcy5vcHMucG9wKCkscy50cnlzLnBvcCgpO2NvbnRpbnVlfW89dC5jYWxsKGUscyl9Y2F0Y2goZSl7bz1bNixlXSxyPTB9ZmluYWxseXtuPWk9MH1pZig1Jm9bMF0pdGhyb3cgb1sxXTtyZXR1cm57dmFsdWU6b1swXT9vWzFdOnZvaWQgMCxkb25lOiEwfX0oW28sYV0pfX19LEJjPWJzKCksS2M9TmEuU25pcHBldCxqYz17dGl0bGU6IlN1Z2dlc3QiLGNvbW1hbmQ6ImVkaXRvci5hY3Rpb24udHJpZ2dlclN1Z2dlc3QifTsoV2M9T2N8fChPYz17fSkpLkVudW1zPSIgIixXYy5Ob3JtYWw9ImQiLFdjLlZlbmRvclByZWZpeGVkPSJ4IixXYy5UZXJtPSJ5IixXYy5WYXJpYWJsZT0ieiI7dmFyIHFjPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQsbil7dm9pZCAwPT09ZSYmKGU9bnVsbCksdGhpcy52YXJpYWJsZVByZWZpeD1lLHRoaXMubHNPcHRpb25zPXQsdGhpcy5jc3NEYXRhTWFuYWdlcj1uLHRoaXMuY29tcGxldGlvblBhcnRpY2lwYW50cz1bXX1yZXR1cm4gZS5wcm90b3R5cGUuY29uZmlndXJlPWZ1bmN0aW9uKGUpe3RoaXMuZGVmYXVsdFNldHRpbmdzPWV9LGUucHJvdG90eXBlLmdldFN5bWJvbENvbnRleHQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zeW1ib2xDb250ZXh0fHwodGhpcy5zeW1ib2xDb250ZXh0PW5ldyBfYyh0aGlzLnN0eWxlU2hlZXQpKSx0aGlzLnN5bWJvbENvbnRleHR9LGUucHJvdG90eXBlLnNldENvbXBsZXRpb25QYXJ0aWNpcGFudHM9ZnVuY3Rpb24oZSl7dGhpcy5jb21wbGV0aW9uUGFydGljaXBhbnRzPWV8fFtdfSxlLnByb3RvdHlwZS5kb0NvbXBsZXRlMj1mdW5jdGlvbihlLHQsbixyLGkpe3JldHVybiB2b2lkIDA9PT1pJiYoaT10aGlzLmRlZmF1bHRTZXR0aW5ncyksVmModGhpcyx2b2lkIDAsdm9pZCAwLChmdW5jdGlvbigpe3ZhciBvLHMsYSxsO3JldHVybiBVYyh0aGlzLChmdW5jdGlvbihjKXtzd2l0Y2goYy5sYWJlbCl7Y2FzZSAwOmlmKCF0aGlzLmxzT3B0aW9ucy5maWxlU3lzdGVtUHJvdmlkZXJ8fCF0aGlzLmxzT3B0aW9ucy5maWxlU3lzdGVtUHJvdmlkZXIucmVhZERpcmVjdG9yeSlyZXR1cm5bMix0aGlzLmRvQ29tcGxldGUoZSx0LG4saSldO289bmV3IEFjKHRoaXMubHNPcHRpb25zLmZpbGVTeXN0ZW1Qcm92aWRlci5yZWFkRGlyZWN0b3J5KSxzPXRoaXMuY29tcGxldGlvblBhcnRpY2lwYW50cyx0aGlzLmNvbXBsZXRpb25QYXJ0aWNpcGFudHM9W29dLmNvbmNhdChzKSxhPXRoaXMuZG9Db21wbGV0ZShlLHQsbixpKSxjLmxhYmVsPTE7Y2FzZSAxOnJldHVybiBjLnRyeXMucHVzaChbMSwsMyw0XSksWzQsby5jb21wdXRlQ29tcGxldGlvbnMoZSxyKV07Y2FzZSAyOnJldHVybiBsPWMuc2VudCgpLFsyLHtpc0luY29tcGxldGU6YS5pc0luY29tcGxldGV8fGwuaXNJbmNvbXBsZXRlLGl0ZW1zOmwuaXRlbXMuY29uY2F0KGEuaXRlbXMpfV07Y2FzZSAzOnJldHVybiB0aGlzLmNvbXBsZXRpb25QYXJ0aWNpcGFudHM9cyxbN107Y2FzZSA0OnJldHVyblsyXX19KSl9KSl9LGUucHJvdG90eXBlLmRvQ29tcGxldGU9ZnVuY3Rpb24oZSx0LG4scil7dGhpcy5vZmZzZXQ9ZS5vZmZzZXRBdCh0KSx0aGlzLnBvc2l0aW9uPXQsdGhpcy5jdXJyZW50V29yZD1mdW5jdGlvbihlLHQpe3ZhciBuPXQtMSxyPWUuZ2V0VGV4dCgpO2Zvcig7bj49MCYmLTE9PT0nIFx0XG5cciI6e1soKV19LCo+KycuaW5kZXhPZihyLmNoYXJBdChuKSk7KW4tLTtyZXR1cm4gci5zdWJzdHJpbmcobisxLHQpfShlLHRoaXMub2Zmc2V0KSx0aGlzLmRlZmF1bHRSZXBsYWNlUmFuZ2U9a3MuY3JlYXRlKFNzLmNyZWF0ZSh0aGlzLnBvc2l0aW9uLmxpbmUsdGhpcy5wb3NpdGlvbi5jaGFyYWN0ZXItdGhpcy5jdXJyZW50V29yZC5sZW5ndGgpLHRoaXMucG9zaXRpb24pLHRoaXMudGV4dERvY3VtZW50PWUsdGhpcy5zdHlsZVNoZWV0PW4sdGhpcy5kb2N1bWVudFNldHRpbmdzPXI7dHJ5e3ZhciBpPXtpc0luY29tcGxldGU6ITEsaXRlbXM6W119O3RoaXMubm9kZVBhdGg9WGkodGhpcy5zdHlsZVNoZWV0LHRoaXMub2Zmc2V0KTtmb3IodmFyIG89dGhpcy5ub2RlUGF0aC5sZW5ndGgtMTtvPj0wO28tLSl7dmFyIHM9dGhpcy5ub2RlUGF0aFtvXTtpZihzIGluc3RhbmNlb2YgcG8pdGhpcy5nZXRDb21wbGV0aW9uc0ZvckRlY2xhcmF0aW9uUHJvcGVydHkocy5nZXRQYXJlbnQoKSxpKTtlbHNlIGlmKHMgaW5zdGFuY2VvZiBLbylzLnBhcmVudCBpbnN0YW5jZW9mIG5zP3RoaXMuZ2V0VmFyaWFibGVQcm9wb3NhbHMobnVsbCxpKTp0aGlzLmdldENvbXBsZXRpb25zRm9yRXhwcmVzc2lvbihzLGkpO2Vsc2UgaWYocyBpbnN0YW5jZW9mIHNvKXt2YXIgYT1zLmZpbmRBUGFyZW50KGppLkV4dGVuZHNSZWZlcmVuY2UsamkuUnVsZXNldCk7aWYoYSlpZihhLnR5cGU9PT1qaS5FeHRlbmRzUmVmZXJlbmNlKXRoaXMuZ2V0Q29tcGxldGlvbnNGb3JFeHRlbmRzUmVmZXJlbmNlKGEscyxpKTtlbHNle3ZhciBsPWE7dGhpcy5nZXRDb21wbGV0aW9uc0ZvclNlbGVjdG9yKGwsbCYmbC5pc05lc3RlZCgpLGkpfX1lbHNlIGlmKHMgaW5zdGFuY2VvZiBmbyl0aGlzLmdldENvbXBsZXRpb25zRm9yRnVuY3Rpb25Bcmd1bWVudChzLHMuZ2V0UGFyZW50KCksaSk7ZWxzZSBpZihzIGluc3RhbmNlb2Ygbm8pdGhpcy5nZXRDb21wbGV0aW9uc0ZvckRlY2xhcmF0aW9ucyhzLGkpO2Vsc2UgaWYocyBpbnN0YW5jZW9mIHRzKXRoaXMuZ2V0Q29tcGxldGlvbnNGb3JWYXJpYWJsZURlY2xhcmF0aW9uKHMsaSk7ZWxzZSBpZihzIGluc3RhbmNlb2YgaW8pdGhpcy5nZXRDb21wbGV0aW9uc0ZvclJ1bGVTZXQocyxpKTtlbHNlIGlmKHMgaW5zdGFuY2VvZiBucyl0aGlzLmdldENvbXBsZXRpb25zRm9ySW50ZXJwb2xhdGlvbihzLGkpO2Vsc2UgaWYocyBpbnN0YW5jZW9mIHhvKXRoaXMuZ2V0Q29tcGxldGlvbnNGb3JGdW5jdGlvbkRlY2xhcmF0aW9uKHMsaSk7ZWxzZSBpZihzIGluc3RhbmNlb2YgYXMpdGhpcy5nZXRDb21wbGV0aW9uc0Zvck1peGluUmVmZXJlbmNlKHMsaSk7ZWxzZSBpZihzIGluc3RhbmNlb2YgdW8pdGhpcy5nZXRDb21wbGV0aW9uc0ZvckZ1bmN0aW9uQXJndW1lbnQobnVsbCxzLGkpO2Vsc2UgaWYocyBpbnN0YW5jZW9mIHpvKXRoaXMuZ2V0Q29tcGxldGlvbnNGb3JTdXBwb3J0cyhzLGkpO2Vsc2UgaWYocyBpbnN0YW5jZW9mIFZvKXRoaXMuZ2V0Q29tcGxldGlvbnNGb3JTdXBwb3J0c0NvbmRpdGlvbihzLGkpO2Vsc2UgaWYocyBpbnN0YW5jZW9mIGlzKXRoaXMuZ2V0Q29tcGxldGlvbnNGb3JFeHRlbmRzUmVmZXJlbmNlKHMsbnVsbCxpKTtlbHNlIGlmKHMudHlwZT09PWppLlVSSUxpdGVyYWwpdGhpcy5nZXRDb21wbGV0aW9uRm9yVXJpTGl0ZXJhbFZhbHVlKHMsaSk7ZWxzZSBpZihudWxsPT09cy5wYXJlbnQpdGhpcy5nZXRDb21wbGV0aW9uRm9yVG9wTGV2ZWwoaSk7ZWxzZXtpZihzLnR5cGUhPT1qaS5TdHJpbmdMaXRlcmFsfHwhdGhpcy5pc0ltcG9ydFBhdGhQYXJlbnQocy5wYXJlbnQudHlwZSkpY29udGludWU7dGhpcy5nZXRDb21wbGV0aW9uRm9ySW1wb3J0UGF0aChzLGkpfWlmKGkuaXRlbXMubGVuZ3RoPjB8fHRoaXMub2Zmc2V0PnMub2Zmc2V0KXJldHVybiB0aGlzLmZpbmFsaXplKGkpfXJldHVybiB0aGlzLmdldENvbXBsZXRpb25zRm9yU3R5bGVzaGVldChpKSwwPT09aS5pdGVtcy5sZW5ndGgmJnRoaXMudmFyaWFibGVQcmVmaXgmJjA9PT10aGlzLmN1cnJlbnRXb3JkLmluZGV4T2YodGhpcy52YXJpYWJsZVByZWZpeCkmJnRoaXMuZ2V0VmFyaWFibGVQcm9wb3NhbHMobnVsbCxpKSx0aGlzLmZpbmFsaXplKGkpfWZpbmFsbHl7dGhpcy5wb3NpdGlvbj1udWxsLHRoaXMuY3VycmVudFdvcmQ9bnVsbCx0aGlzLnRleHREb2N1bWVudD1udWxsLHRoaXMuc3R5bGVTaGVldD1udWxsLHRoaXMuc3ltYm9sQ29udGV4dD1udWxsLHRoaXMuZGVmYXVsdFJlcGxhY2VSYW5nZT1udWxsLHRoaXMubm9kZVBhdGg9bnVsbH19LGUucHJvdG90eXBlLmlzSW1wb3J0UGF0aFBhcmVudD1mdW5jdGlvbihlKXtyZXR1cm4gZT09PWppLkltcG9ydH0sZS5wcm90b3R5cGUuZmluYWxpemU9ZnVuY3Rpb24oZSl7cmV0dXJuIGV9LGUucHJvdG90eXBlLmZpbmRJbk5vZGVQYXRoPWZ1bmN0aW9uKCl7Zm9yKHZhciBlPVtdLHQ9MDt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKWVbdF09YXJndW1lbnRzW3RdO2Zvcih2YXIgbj10aGlzLm5vZGVQYXRoLmxlbmd0aC0xO24+PTA7bi0tKXt2YXIgcj10aGlzLm5vZGVQYXRoW25dO2lmKC0xIT09ZS5pbmRleE9mKHIudHlwZSkpcmV0dXJuIHJ9cmV0dXJuIG51bGx9LGUucHJvdG90eXBlLmdldENvbXBsZXRpb25zRm9yRGVjbGFyYXRpb25Qcm9wZXJ0eT1mdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLmdldFByb3BlcnR5UHJvcG9zYWxzKGUsdCl9LGUucHJvdG90eXBlLmdldFByb3BlcnR5UHJvcG9zYWxzPWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcyxyPXRoaXMuaXNUcmlnZ2VyUHJvcGVydHlWYWx1ZUNvbXBsZXRpb25FbmFibGVkLGk9dGhpcy5pc0NvbXBsZXRlUHJvcGVydHlXaXRoU2VtaWNvbG9uRW5hYmxlZDtyZXR1cm4gdGhpcy5jc3NEYXRhTWFuYWdlci5nZXRQcm9wZXJ0aWVzKCkuZm9yRWFjaCgoZnVuY3Rpb24obyl7dmFyIHMsYSxsPSExO2U/KHM9bi5nZXRDb21wbGV0aW9uUmFuZ2UoZS5nZXRQcm9wZXJ0eSgpKSxhPW8ubmFtZSxtYyhlLmNvbG9uUG9zaXRpb24pfHwoYSs9IjogIixsPSEwKSk6KHM9bi5nZXRDb21wbGV0aW9uUmFuZ2UobnVsbCksYT1vLm5hbWUrIjogIixsPSEwKSwhZSYmaSYmKGErPSIkMDsiKSxlJiYhZS5zZW1pY29sb25Qb3NpdGlvbiYmaSYmbi5vZmZzZXQ+PW4udGV4dERvY3VtZW50Lm9mZnNldEF0KHMuZW5kKSYmKGErPSIkMDsiKTt2YXIgYz17bGFiZWw6by5uYW1lLGRvY3VtZW50YXRpb246VGwobyxuLmRvZXNTdXBwb3J0TWFya2Rvd24oKSksdGFnczokYyhvKT9bVGEuRGVwcmVjYXRlZF06W10sdGV4dEVkaXQ6WXMucmVwbGFjZShzLGEpLGluc2VydFRleHRGb3JtYXQ6TmEuU25pcHBldCxraW5kOlJhLlByb3BlcnR5fTtvLnJlc3RyaWN0aW9uc3x8KGw9ITEpLHImJmwmJihjLmNvbW1hbmQ9amMpO3ZhciBoPSgyNTUtKCJudW1iZXIiPT10eXBlb2Ygby5yZWxldmFuY2U/TWF0aC5taW4oTWF0aC5tYXgoby5yZWxldmFuY2UsMCksOTkpOjUwKSkudG9TdHJpbmcoMTYpLGQ9V2koby5uYW1lLCItIik/T2MuVmVuZG9yUHJlZml4ZWQ6T2MuTm9ybWFsO2Muc29ydFRleHQ9ZCsiXyIraCx0Lml0ZW1zLnB1c2goYyl9KSksdGhpcy5jb21wbGV0aW9uUGFydGljaXBhbnRzLmZvckVhY2goKGZ1bmN0aW9uKGUpe2Uub25Dc3NQcm9wZXJ0eSYmZS5vbkNzc1Byb3BlcnR5KHtwcm9wZXJ0eU5hbWU6bi5jdXJyZW50V29yZCxyYW5nZTpuLmRlZmF1bHRSZXBsYWNlUmFuZ2V9KX0pKSx0fSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsImlzVHJpZ2dlclByb3BlcnR5VmFsdWVDb21wbGV0aW9uRW5hYmxlZCIse2dldDpmdW5jdGlvbigpe3ZhciBlLHQ7cmV0dXJuIG51bGw9PT0odD1udWxsPT09KGU9dGhpcy5kb2N1bWVudFNldHRpbmdzKXx8dm9pZCAwPT09ZT92b2lkIDA6ZS50cmlnZ2VyUHJvcGVydHlWYWx1ZUNvbXBsZXRpb24pfHx2b2lkIDA9PT10fHx0fSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwiaXNDb21wbGV0ZVByb3BlcnR5V2l0aFNlbWljb2xvbkVuYWJsZWQiLHtnZXQ6ZnVuY3Rpb24oKXt2YXIgZSx0O3JldHVybiBudWxsPT09KHQ9bnVsbD09PShlPXRoaXMuZG9jdW1lbnRTZXR0aW5ncyl8fHZvaWQgMD09PWU/dm9pZCAwOmUuY29tcGxldGVQcm9wZXJ0eVdpdGhTZW1pY29sb24pfHx2b2lkIDA9PT10fHx0fSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLGUucHJvdG90eXBlLmdldENvbXBsZXRpb25zRm9yRGVjbGFyYXRpb25WYWx1ZT1mdW5jdGlvbihlLHQpe2Zvcih2YXIgbj10aGlzLHI9ZS5nZXRGdWxsUHJvcGVydHlOYW1lKCksaT10aGlzLmNzc0RhdGFNYW5hZ2VyLmdldFByb3BlcnR5KHIpLG89ZS5nZXRWYWx1ZSgpfHxudWxsO28mJm8uaGFzQ2hpbGRyZW4oKTspbz1vLmZpbmRDaGlsZEF0T2Zmc2V0KHRoaXMub2Zmc2V0LCExKTtpZih0aGlzLmNvbXBsZXRpb25QYXJ0aWNpcGFudHMuZm9yRWFjaCgoZnVuY3Rpb24oZSl7ZS5vbkNzc1Byb3BlcnR5VmFsdWUmJmUub25Dc3NQcm9wZXJ0eVZhbHVlKHtwcm9wZXJ0eU5hbWU6cixwcm9wZXJ0eVZhbHVlOm4uY3VycmVudFdvcmQscmFuZ2U6bi5nZXRDb21wbGV0aW9uUmFuZ2Uobyl9KX0pKSxpKXtpZihpLnJlc3RyaWN0aW9ucylmb3IodmFyIHM9MCxhPWkucmVzdHJpY3Rpb25zO3M8YS5sZW5ndGg7cysrKXtzd2l0Y2goYVtzXSl7Y2FzZSJjb2xvciI6dGhpcy5nZXRDb2xvclByb3Bvc2FscyhpLG8sdCk7YnJlYWs7Y2FzZSJwb3NpdGlvbiI6dGhpcy5nZXRQb3NpdGlvblByb3Bvc2FscyhpLG8sdCk7YnJlYWs7Y2FzZSJyZXBlYXQiOnRoaXMuZ2V0UmVwZWF0U3R5bGVQcm9wb3NhbHMoaSxvLHQpO2JyZWFrO2Nhc2UibGluZS1zdHlsZSI6dGhpcy5nZXRMaW5lU3R5bGVQcm9wb3NhbHMoaSxvLHQpO2JyZWFrO2Nhc2UibGluZS13aWR0aCI6dGhpcy5nZXRMaW5lV2lkdGhQcm9wb3NhbHMoaSxvLHQpO2JyZWFrO2Nhc2UiZ2VvbWV0cnktYm94Ijp0aGlzLmdldEdlb21ldHJ5Qm94UHJvcG9zYWxzKGksbyx0KTticmVhaztjYXNlImJveCI6dGhpcy5nZXRCb3hQcm9wb3NhbHMoaSxvLHQpO2JyZWFrO2Nhc2UiaW1hZ2UiOnRoaXMuZ2V0SW1hZ2VQcm9wb3NhbHMoaSxvLHQpO2JyZWFrO2Nhc2UidGltaW5nLWZ1bmN0aW9uIjp0aGlzLmdldFRpbWluZ0Z1bmN0aW9uUHJvcG9zYWxzKGksbyx0KTticmVhaztjYXNlInNoYXBlIjp0aGlzLmdldEJhc2ljU2hhcGVQcm9wb3NhbHMoaSxvLHQpfX10aGlzLmdldFZhbHVlRW51bVByb3Bvc2FscyhpLG8sdCksdGhpcy5nZXRDU1NXaWRlS2V5d29yZFByb3Bvc2FscyhpLG8sdCksdGhpcy5nZXRVbml0UHJvcG9zYWxzKGksbyx0KX1lbHNlIGZvcih2YXIgbD1mdW5jdGlvbihlLHQpe3ZhciBuPXQuZ2V0RnVsbFByb3BlcnR5TmFtZSgpLHI9bmV3IEhjO2Z1bmN0aW9uIGkoZSl7cmV0dXJuKGUgaW5zdGFuY2VvZiBlb3x8ZSBpbnN0YW5jZW9mIGVzfHxlIGluc3RhbmNlb2YgSm8pJiZyLmFkZChlLmdldFRleHQoKSksITB9ZnVuY3Rpb24gbyhlKXt2YXIgdD1lLmdldEZ1bGxQcm9wZXJ0eU5hbWUoKTtyZXR1cm4gbj09PXR9ZnVuY3Rpb24gcyhlKXtpZihlIGluc3RhbmNlb2YgY28mJmUhPT10JiZvKGUpKXt2YXIgbj1lLmdldFZhbHVlKCk7biYmbi5hY2NlcHQoaSl9cmV0dXJuITB9cmV0dXJuIGUuYWNjZXB0KHMpLHJ9KHRoaXMuc3R5bGVTaGVldCxlKSxjPTAsaD1sLmdldEVudHJpZXMoKTtjPGgubGVuZ3RoO2MrKyl7dmFyIGQ9aFtjXTt0Lml0ZW1zLnB1c2goe2xhYmVsOmQsdGV4dEVkaXQ6WXMucmVwbGFjZSh0aGlzLmdldENvbXBsZXRpb25SYW5nZShvKSxkKSxraW5kOlJhLlZhbHVlfSl9cmV0dXJuIHRoaXMuZ2V0VmFyaWFibGVQcm9wb3NhbHMobyx0KSx0aGlzLmdldFRlcm1Qcm9wb3NhbHMoaSxvLHQpLHR9LGUucHJvdG90eXBlLmdldFZhbHVlRW51bVByb3Bvc2Fscz1mdW5jdGlvbihlLHQsbil7aWYoZS52YWx1ZXMpZm9yKHZhciByPTAsaT1lLnZhbHVlcztyPGkubGVuZ3RoO3IrKyl7dmFyIG89aVtyXSxzPW8ubmFtZSxhPXZvaWQgMDtpZihWaShzLCIpIikpe3ZhciBsPXMubGFzdEluZGV4T2YoIigiKTstMSE9PWwmJihzPXMuc3Vic3RyKDAsbCkrIigkMSkiLGE9S2MpfXZhciBjPU9jLkVudW1zO1dpKG8ubmFtZSwiLSIpJiYoYys9T2MuVmVuZG9yUHJlZml4ZWQpO3ZhciBoPXtsYWJlbDpvLm5hbWUsZG9jdW1lbnRhdGlvbjpUbChvLHRoaXMuZG9lc1N1cHBvcnRNYXJrZG93bigpKSx0YWdzOiRjKGUpP1tUYS5EZXByZWNhdGVkXTpbXSx0ZXh0RWRpdDpZcy5yZXBsYWNlKHRoaXMuZ2V0Q29tcGxldGlvblJhbmdlKHQpLHMpLHNvcnRUZXh0OmMsa2luZDpSYS5WYWx1ZSxpbnNlcnRUZXh0Rm9ybWF0OmF9O24uaXRlbXMucHVzaChoKX1yZXR1cm4gbn0sZS5wcm90b3R5cGUuZ2V0Q1NTV2lkZUtleXdvcmRQcm9wb3NhbHM9ZnVuY3Rpb24oZSx0LG4pe2Zvcih2YXIgciBpbiBpYyluLml0ZW1zLnB1c2goe2xhYmVsOnIsZG9jdW1lbnRhdGlvbjppY1tyXSx0ZXh0RWRpdDpZcy5yZXBsYWNlKHRoaXMuZ2V0Q29tcGxldGlvblJhbmdlKHQpLHIpLGtpbmQ6UmEuVmFsdWV9KTtmb3IodmFyIGkgaW4gb2Mpe3ZhciBvPUdjKGkpO24uaXRlbXMucHVzaCh7bGFiZWw6aSxkb2N1bWVudGF0aW9uOm9jW2ldLHRleHRFZGl0OllzLnJlcGxhY2UodGhpcy5nZXRDb21wbGV0aW9uUmFuZ2UodCksbyksa2luZDpSYS5GdW5jdGlvbixpbnNlcnRUZXh0Rm9ybWF0OktjLGNvbW1hbmQ6V2koaSwidmFyIik/amM6dm9pZCAwfSl9cmV0dXJuIG59LGUucHJvdG90eXBlLmdldENvbXBsZXRpb25zRm9ySW50ZXJwb2xhdGlvbj1mdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLm9mZnNldD49ZS5vZmZzZXQrMiYmdGhpcy5nZXRWYXJpYWJsZVByb3Bvc2FscyhudWxsLHQpLHR9LGUucHJvdG90eXBlLmdldFZhcmlhYmxlUHJvcG9zYWxzPWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuPTAscj10aGlzLmdldFN5bWJvbENvbnRleHQoKS5maW5kU3ltYm9sc0F0T2Zmc2V0KHRoaXMub2Zmc2V0LCRpLlZhcmlhYmxlKTtuPHIubGVuZ3RoO24rKyl7dmFyIGk9cltuXSxvPVdpKGkubmFtZSwiLS0iKT8idmFyKCIuY29uY2F0KGkubmFtZSwiKSIpOmkubmFtZSxzPXtsYWJlbDppLm5hbWUsZG9jdW1lbnRhdGlvbjppLnZhbHVlP1VpKGkudmFsdWUpOmkudmFsdWUsdGV4dEVkaXQ6WXMucmVwbGFjZSh0aGlzLmdldENvbXBsZXRpb25SYW5nZShlKSxvKSxraW5kOlJhLlZhcmlhYmxlLHNvcnRUZXh0Ok9jLlZhcmlhYmxlfTtpZigic3RyaW5nIj09dHlwZW9mIHMuZG9jdW1lbnRhdGlvbiYmWWMocy5kb2N1bWVudGF0aW9uKSYmKHMua2luZD1SYS5Db2xvciksaS5ub2RlLnR5cGU9PT1qaS5GdW5jdGlvblBhcmFtZXRlcil7dmFyIGE9aS5ub2RlLmdldFBhcmVudCgpO2EudHlwZT09PWppLk1peGluRGVjbGFyYXRpb24mJihzLmRldGFpbD1CYygiY29tcGxldGlvbi5hcmd1bWVudCIsImFyZ3VtZW50IGZyb20gJ3swfSciLGEuZ2V0TmFtZSgpKSl9dC5pdGVtcy5wdXNoKHMpfXJldHVybiB0fSxlLnByb3RvdHlwZS5nZXRWYXJpYWJsZVByb3Bvc2Fsc0ZvckNTU1ZhckZ1bmN0aW9uPWZ1bmN0aW9uKGUpe3ZhciB0PW5ldyBIYzt0aGlzLnN0eWxlU2hlZXQuYWNjZXB0VmlzaXRvcihuZXcgWGModCx0aGlzLm9mZnNldCkpO2Zvcih2YXIgbj0wLHI9dGhpcy5nZXRTeW1ib2xDb250ZXh0KCkuZmluZFN5bWJvbHNBdE9mZnNldCh0aGlzLm9mZnNldCwkaS5WYXJpYWJsZSk7bjxyLmxlbmd0aDtuKyspe3ZhciBpPXJbbl07aWYoV2koaS5uYW1lLCItLSIpKSJzdHJpbmciPT10eXBlb2YobD17bGFiZWw6aS5uYW1lLGRvY3VtZW50YXRpb246aS52YWx1ZT9VaShpLnZhbHVlKTppLnZhbHVlLHRleHRFZGl0OllzLnJlcGxhY2UodGhpcy5nZXRDb21wbGV0aW9uUmFuZ2UobnVsbCksaS5uYW1lKSxraW5kOlJhLlZhcmlhYmxlfSkuZG9jdW1lbnRhdGlvbiYmWWMobC5kb2N1bWVudGF0aW9uKSYmKGwua2luZD1SYS5Db2xvciksZS5pdGVtcy5wdXNoKGwpO3QucmVtb3ZlKGkubmFtZSl9Zm9yKHZhciBvPTAscz10LmdldEVudHJpZXMoKTtvPHMubGVuZ3RoO28rKyl7dmFyIGE9c1tvXTtpZihXaShhLCItLSIpKXt2YXIgbD17bGFiZWw6YSx0ZXh0RWRpdDpZcy5yZXBsYWNlKHRoaXMuZ2V0Q29tcGxldGlvblJhbmdlKG51bGwpLGEpLGtpbmQ6UmEuVmFyaWFibGV9O2UuaXRlbXMucHVzaChsKX19cmV0dXJuIGV9LGUucHJvdG90eXBlLmdldFVuaXRQcm9wb3NhbHM9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPSIwIjtpZih0aGlzLmN1cnJlbnRXb3JkLmxlbmd0aD4wKXt2YXIgaT10aGlzLmN1cnJlbnRXb3JkLm1hdGNoKC9eLT9cZFtcLlxkK10qLyk7aSYmKHI9aVswXSxuLmlzSW5jb21wbGV0ZT1yLmxlbmd0aD09PXRoaXMuY3VycmVudFdvcmQubGVuZ3RoKX1lbHNlIDA9PT10aGlzLmN1cnJlbnRXb3JkLmxlbmd0aCYmKG4uaXNJbmNvbXBsZXRlPSEwKTtpZih0JiZ0LnBhcmVudCYmdC5wYXJlbnQudHlwZT09PWppLlRlcm0mJih0PXQuZ2V0UGFyZW50KCkpLGUucmVzdHJpY3Rpb25zKWZvcih2YXIgbz0wLHM9ZS5yZXN0cmljdGlvbnM7bzxzLmxlbmd0aDtvKyspe3ZhciBhPXNbb10sbD1jY1thXTtpZihsKWZvcih2YXIgYz0wLGg9bDtjPGgubGVuZ3RoO2MrKyl7dmFyIGQ9citoW2NdO24uaXRlbXMucHVzaCh7bGFiZWw6ZCx0ZXh0RWRpdDpZcy5yZXBsYWNlKHRoaXMuZ2V0Q29tcGxldGlvblJhbmdlKHQpLGQpLGtpbmQ6UmEuVW5pdH0pfX1yZXR1cm4gbn0sZS5wcm90b3R5cGUuZ2V0Q29tcGxldGlvblJhbmdlPWZ1bmN0aW9uKGUpe2lmKGUmJmUub2Zmc2V0PD10aGlzLm9mZnNldCYmdGhpcy5vZmZzZXQ8PWUuZW5kKXt2YXIgdD0tMSE9PWUuZW5kP3RoaXMudGV4dERvY3VtZW50LnBvc2l0aW9uQXQoZS5lbmQpOnRoaXMucG9zaXRpb24sbj10aGlzLnRleHREb2N1bWVudC5wb3NpdGlvbkF0KGUub2Zmc2V0KTtpZihuLmxpbmU9PT10LmxpbmUpcmV0dXJuIGtzLmNyZWF0ZShuLHQpfXJldHVybiB0aGlzLmRlZmF1bHRSZXBsYWNlUmFuZ2V9LGUucHJvdG90eXBlLmdldENvbG9yUHJvcG9zYWxzPWZ1bmN0aW9uKGUsdCxuKXtmb3IodmFyIHIgaW4gT2wpbi5pdGVtcy5wdXNoKHtsYWJlbDpyLGRvY3VtZW50YXRpb246T2xbcl0sdGV4dEVkaXQ6WXMucmVwbGFjZSh0aGlzLmdldENvbXBsZXRpb25SYW5nZSh0KSxyKSxraW5kOlJhLkNvbG9yfSk7Zm9yKHZhciByIGluIFdsKW4uaXRlbXMucHVzaCh7bGFiZWw6cixkb2N1bWVudGF0aW9uOldsW3JdLHRleHRFZGl0OllzLnJlcGxhY2UodGhpcy5nZXRDb21wbGV0aW9uUmFuZ2UodCksciksa2luZDpSYS5WYWx1ZX0pO3ZhciBpPW5ldyBIYzt0aGlzLnN0eWxlU2hlZXQuYWNjZXB0VmlzaXRvcihuZXcgSmMoaSx0aGlzLm9mZnNldCkpO2Zvcih2YXIgbz0wLHM9aS5nZXRFbnRyaWVzKCk7bzxzLmxlbmd0aDtvKyspe3I9c1tvXTtuLml0ZW1zLnB1c2goe2xhYmVsOnIsdGV4dEVkaXQ6WXMucmVwbGFjZSh0aGlzLmdldENvbXBsZXRpb25SYW5nZSh0KSxyKSxraW5kOlJhLkNvbG9yfSl9Zm9yKHZhciBhPWZ1bmN0aW9uKGUpe3ZhciByPTEsaT1lLmZ1bmMucmVwbGFjZSgvXFs/XCQoXHcrKVxdPy9nLChmdW5jdGlvbihlLHQpe3JldHVybiIkeyIrcisrKyI6Iit0KyJ9In0pKTtuLml0ZW1zLnB1c2goe2xhYmVsOmUuZnVuYy5zdWJzdHIoMCxlLmZ1bmMuaW5kZXhPZigiKCIpKSxkZXRhaWw6ZS5mdW5jLGRvY3VtZW50YXRpb246ZS5kZXNjLHRleHRFZGl0OllzLnJlcGxhY2UobC5nZXRDb21wbGV0aW9uUmFuZ2UodCksaSksaW5zZXJ0VGV4dEZvcm1hdDpLYyxraW5kOlJhLkZ1bmN0aW9ufSl9LGw9dGhpcyxjPTAsaD1MbDtjPGgubGVuZ3RoO2MrKyl7YShoW2NdKX1yZXR1cm4gbn0sZS5wcm90b3R5cGUuZ2V0UG9zaXRpb25Qcm9wb3NhbHM9ZnVuY3Rpb24oZSx0LG4pe2Zvcih2YXIgciBpbiBabCluLml0ZW1zLnB1c2goe2xhYmVsOnIsZG9jdW1lbnRhdGlvbjpabFtyXSx0ZXh0RWRpdDpZcy5yZXBsYWNlKHRoaXMuZ2V0Q29tcGxldGlvblJhbmdlKHQpLHIpLGtpbmQ6UmEuVmFsdWV9KTtyZXR1cm4gbn0sZS5wcm90b3R5cGUuZ2V0UmVwZWF0U3R5bGVQcm9wb3NhbHM9ZnVuY3Rpb24oZSx0LG4pe2Zvcih2YXIgciBpbiBRbCluLml0ZW1zLnB1c2goe2xhYmVsOnIsZG9jdW1lbnRhdGlvbjpRbFtyXSx0ZXh0RWRpdDpZcy5yZXBsYWNlKHRoaXMuZ2V0Q29tcGxldGlvblJhbmdlKHQpLHIpLGtpbmQ6UmEuVmFsdWV9KTtyZXR1cm4gbn0sZS5wcm90b3R5cGUuZ2V0TGluZVN0eWxlUHJvcG9zYWxzPWZ1bmN0aW9uKGUsdCxuKXtmb3IodmFyIHIgaW4gZWMpbi5pdGVtcy5wdXNoKHtsYWJlbDpyLGRvY3VtZW50YXRpb246ZWNbcl0sdGV4dEVkaXQ6WXMucmVwbGFjZSh0aGlzLmdldENvbXBsZXRpb25SYW5nZSh0KSxyKSxraW5kOlJhLlZhbHVlfSk7cmV0dXJuIG59LGUucHJvdG90eXBlLmdldExpbmVXaWR0aFByb3Bvc2Fscz1mdW5jdGlvbihlLHQsbil7Zm9yKHZhciByPTAsaT10YztyPGkubGVuZ3RoO3IrKyl7dmFyIG89aVtyXTtuLml0ZW1zLnB1c2goe2xhYmVsOm8sdGV4dEVkaXQ6WXMucmVwbGFjZSh0aGlzLmdldENvbXBsZXRpb25SYW5nZSh0KSxvKSxraW5kOlJhLlZhbHVlfSl9cmV0dXJuIG59LGUucHJvdG90eXBlLmdldEdlb21ldHJ5Qm94UHJvcG9zYWxzPWZ1bmN0aW9uKGUsdCxuKXtmb3IodmFyIHIgaW4gcmMpbi5pdGVtcy5wdXNoKHtsYWJlbDpyLGRvY3VtZW50YXRpb246cmNbcl0sdGV4dEVkaXQ6WXMucmVwbGFjZSh0aGlzLmdldENvbXBsZXRpb25SYW5nZSh0KSxyKSxraW5kOlJhLlZhbHVlfSk7cmV0dXJuIG59LGUucHJvdG90eXBlLmdldEJveFByb3Bvc2Fscz1mdW5jdGlvbihlLHQsbil7Zm9yKHZhciByIGluIG5jKW4uaXRlbXMucHVzaCh7bGFiZWw6cixkb2N1bWVudGF0aW9uOm5jW3JdLHRleHRFZGl0OllzLnJlcGxhY2UodGhpcy5nZXRDb21wbGV0aW9uUmFuZ2UodCksciksa2luZDpSYS5WYWx1ZX0pO3JldHVybiBufSxlLnByb3RvdHlwZS5nZXRJbWFnZVByb3Bvc2Fscz1mdW5jdGlvbihlLHQsbil7Zm9yKHZhciByIGluIHNjKXt2YXIgaT1HYyhyKTtuLml0ZW1zLnB1c2goe2xhYmVsOnIsZG9jdW1lbnRhdGlvbjpzY1tyXSx0ZXh0RWRpdDpZcy5yZXBsYWNlKHRoaXMuZ2V0Q29tcGxldGlvblJhbmdlKHQpLGkpLGtpbmQ6UmEuRnVuY3Rpb24saW5zZXJ0VGV4dEZvcm1hdDpyIT09aT9LYzp2b2lkIDB9KX1yZXR1cm4gbn0sZS5wcm90b3R5cGUuZ2V0VGltaW5nRnVuY3Rpb25Qcm9wb3NhbHM9ZnVuY3Rpb24oZSx0LG4pe2Zvcih2YXIgciBpbiBhYyl7dmFyIGk9R2Mocik7bi5pdGVtcy5wdXNoKHtsYWJlbDpyLGRvY3VtZW50YXRpb246YWNbcl0sdGV4dEVkaXQ6WXMucmVwbGFjZSh0aGlzLmdldENvbXBsZXRpb25SYW5nZSh0KSxpKSxraW5kOlJhLkZ1bmN0aW9uLGluc2VydFRleHRGb3JtYXQ6ciE9PWk/S2M6dm9pZCAwfSl9cmV0dXJuIG59LGUucHJvdG90eXBlLmdldEJhc2ljU2hhcGVQcm9wb3NhbHM9ZnVuY3Rpb24oZSx0LG4pe2Zvcih2YXIgciBpbiBsYyl7dmFyIGk9R2Mocik7bi5pdGVtcy5wdXNoKHtsYWJlbDpyLGRvY3VtZW50YXRpb246bGNbcl0sdGV4dEVkaXQ6WXMucmVwbGFjZSh0aGlzLmdldENvbXBsZXRpb25SYW5nZSh0KSxpKSxraW5kOlJhLkZ1bmN0aW9uLGluc2VydFRleHRGb3JtYXQ6ciE9PWk/S2M6dm9pZCAwfSl9cmV0dXJuIG59LGUucHJvdG90eXBlLmdldENvbXBsZXRpb25zRm9yU3R5bGVzaGVldD1mdW5jdGlvbihlKXt2YXIgdD10aGlzLnN0eWxlU2hlZXQuZmluZEZpcnN0Q2hpbGRCZWZvcmVPZmZzZXQodGhpcy5vZmZzZXQpO3JldHVybiB0P3QgaW5zdGFuY2VvZiBpbz90aGlzLmdldENvbXBsZXRpb25zRm9yUnVsZVNldCh0LGUpOnQgaW5zdGFuY2VvZiB6bz90aGlzLmdldENvbXBsZXRpb25zRm9yU3VwcG9ydHModCxlKTplOnRoaXMuZ2V0Q29tcGxldGlvbkZvclRvcExldmVsKGUpfSxlLnByb3RvdHlwZS5nZXRDb21wbGV0aW9uRm9yVG9wTGV2ZWw9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcztyZXR1cm4gdGhpcy5jc3NEYXRhTWFuYWdlci5nZXRBdERpcmVjdGl2ZXMoKS5mb3JFYWNoKChmdW5jdGlvbihuKXtlLml0ZW1zLnB1c2goe2xhYmVsOm4ubmFtZSx0ZXh0RWRpdDpZcy5yZXBsYWNlKHQuZ2V0Q29tcGxldGlvblJhbmdlKG51bGwpLG4ubmFtZSksZG9jdW1lbnRhdGlvbjpUbChuLHQuZG9lc1N1cHBvcnRNYXJrZG93bigpKSx0YWdzOiRjKG4pP1tUYS5EZXByZWNhdGVkXTpbXSxraW5kOlJhLktleXdvcmR9KX0pKSx0aGlzLmdldENvbXBsZXRpb25zRm9yU2VsZWN0b3IobnVsbCwhMSxlKSxlfSxlLnByb3RvdHlwZS5nZXRDb21wbGV0aW9uc0ZvclJ1bGVTZXQ9ZnVuY3Rpb24oZSx0KXt2YXIgbj1lLmdldERlY2xhcmF0aW9ucygpO3JldHVybiBuJiZuLmVuZHNXaXRoKCJ9IikmJnRoaXMub2Zmc2V0Pj1uLmVuZD90aGlzLmdldENvbXBsZXRpb25Gb3JUb3BMZXZlbCh0KTohbnx8dGhpcy5vZmZzZXQ8PW4ub2Zmc2V0P3RoaXMuZ2V0Q29tcGxldGlvbnNGb3JTZWxlY3RvcihlLGUuaXNOZXN0ZWQoKSx0KTp0aGlzLmdldENvbXBsZXRpb25zRm9yRGVjbGFyYXRpb25zKGUuZ2V0RGVjbGFyYXRpb25zKCksdCl9LGUucHJvdG90eXBlLmdldENvbXBsZXRpb25zRm9yU2VsZWN0b3I9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMsaT10aGlzLmZpbmRJbk5vZGVQYXRoKGppLlBzZXVkb1NlbGVjdG9yLGppLklkZW50aWZpZXJTZWxlY3RvcixqaS5DbGFzc1NlbGVjdG9yLGppLkVsZW1lbnROYW1lU2VsZWN0b3IpO2lmKCFpJiZ0aGlzLmhhc0NoYXJhY3RlckF0UG9zaXRpb24odGhpcy5vZmZzZXQtdGhpcy5jdXJyZW50V29yZC5sZW5ndGgtMSwiOiIpJiYodGhpcy5jdXJyZW50V29yZD0iOiIrdGhpcy5jdXJyZW50V29yZCx0aGlzLmhhc0NoYXJhY3RlckF0UG9zaXRpb24odGhpcy5vZmZzZXQtdGhpcy5jdXJyZW50V29yZC5sZW5ndGgtMSwiOiIpJiYodGhpcy5jdXJyZW50V29yZD0iOiIrdGhpcy5jdXJyZW50V29yZCksdGhpcy5kZWZhdWx0UmVwbGFjZVJhbmdlPWtzLmNyZWF0ZShTcy5jcmVhdGUodGhpcy5wb3NpdGlvbi5saW5lLHRoaXMucG9zaXRpb24uY2hhcmFjdGVyLXRoaXMuY3VycmVudFdvcmQubGVuZ3RoKSx0aGlzLnBvc2l0aW9uKSksdGhpcy5jc3NEYXRhTWFuYWdlci5nZXRQc2V1ZG9DbGFzc2VzKCkuZm9yRWFjaCgoZnVuY3Rpb24oZSl7dmFyIHQ9R2MoZS5uYW1lKSxvPXtsYWJlbDplLm5hbWUsdGV4dEVkaXQ6WXMucmVwbGFjZShyLmdldENvbXBsZXRpb25SYW5nZShpKSx0KSxkb2N1bWVudGF0aW9uOlRsKGUsci5kb2VzU3VwcG9ydE1hcmtkb3duKCkpLHRhZ3M6JGMoZSk/W1RhLkRlcHJlY2F0ZWRdOltdLGtpbmQ6UmEuRnVuY3Rpb24saW5zZXJ0VGV4dEZvcm1hdDplLm5hbWUhPT10P0tjOnZvaWQgMH07V2koZS5uYW1lLCI6LSIpJiYoby5zb3J0VGV4dD1PYy5WZW5kb3JQcmVmaXhlZCksbi5pdGVtcy5wdXNoKG8pfSkpLHRoaXMuY3NzRGF0YU1hbmFnZXIuZ2V0UHNldWRvRWxlbWVudHMoKS5mb3JFYWNoKChmdW5jdGlvbihlKXt2YXIgdD1HYyhlLm5hbWUpLG89e2xhYmVsOmUubmFtZSx0ZXh0RWRpdDpZcy5yZXBsYWNlKHIuZ2V0Q29tcGxldGlvblJhbmdlKGkpLHQpLGRvY3VtZW50YXRpb246VGwoZSxyLmRvZXNTdXBwb3J0TWFya2Rvd24oKSksdGFnczokYyhlKT9bVGEuRGVwcmVjYXRlZF06W10sa2luZDpSYS5GdW5jdGlvbixpbnNlcnRUZXh0Rm9ybWF0OmUubmFtZSE9PXQ/S2M6dm9pZCAwfTtXaShlLm5hbWUsIjo6LSIpJiYoby5zb3J0VGV4dD1PYy5WZW5kb3JQcmVmaXhlZCksbi5pdGVtcy5wdXNoKG8pfSkpLCF0KXtmb3IodmFyIG89MCxzPWhjO288cy5sZW5ndGg7bysrKXt2YXIgYT1zW29dO24uaXRlbXMucHVzaCh7bGFiZWw6YSx0ZXh0RWRpdDpZcy5yZXBsYWNlKHRoaXMuZ2V0Q29tcGxldGlvblJhbmdlKGkpLGEpLGtpbmQ6UmEuS2V5d29yZH0pfWZvcih2YXIgbD0wLGM9ZGM7bDxjLmxlbmd0aDtsKyspe2E9Y1tsXTtuLml0ZW1zLnB1c2goe2xhYmVsOmEsdGV4dEVkaXQ6WXMucmVwbGFjZSh0aGlzLmdldENvbXBsZXRpb25SYW5nZShpKSxhKSxraW5kOlJhLktleXdvcmR9KX19dmFyIGg9e307aFt0aGlzLmN1cnJlbnRXb3JkXT0hMDt2YXIgZD10aGlzLnRleHREb2N1bWVudC5nZXRUZXh0KCk7aWYodGhpcy5zdHlsZVNoZWV0LmFjY2VwdCgoZnVuY3Rpb24oZSl7aWYoZS50eXBlPT09amkuU2ltcGxlU2VsZWN0b3ImJmUubGVuZ3RoPjApe3ZhciB0PWQuc3Vic3RyKGUub2Zmc2V0LGUubGVuZ3RoKTtyZXR1cm4iLiIhPT10LmNoYXJBdCgwKXx8aFt0XXx8KGhbdF09ITAsbi5pdGVtcy5wdXNoKHtsYWJlbDp0LHRleHRFZGl0OllzLnJlcGxhY2Uoci5nZXRDb21wbGV0aW9uUmFuZ2UoaSksdCksa2luZDpSYS5LZXl3b3JkfSkpLCExfXJldHVybiEwfSkpLGUmJmUuaXNOZXN0ZWQoKSl7dmFyIHA9ZS5nZXRTZWxlY3RvcnMoKS5maW5kRmlyc3RDaGlsZEJlZm9yZU9mZnNldCh0aGlzLm9mZnNldCk7cCYmMD09PWUuZ2V0U2VsZWN0b3JzKCkuZ2V0Q2hpbGRyZW4oKS5pbmRleE9mKHApJiZ0aGlzLmdldFByb3BlcnR5UHJvcG9zYWxzKG51bGwsbil9cmV0dXJuIG59LGUucHJvdG90eXBlLmdldENvbXBsZXRpb25zRm9yRGVjbGFyYXRpb25zPWZ1bmN0aW9uKGUsdCl7aWYoIWV8fHRoaXMub2Zmc2V0PT09ZS5vZmZzZXQpcmV0dXJuIHQ7dmFyIG49ZS5maW5kRmlyc3RDaGlsZEJlZm9yZU9mZnNldCh0aGlzLm9mZnNldCk7aWYoIW4pcmV0dXJuIHRoaXMuZ2V0Q29tcGxldGlvbnNGb3JEZWNsYXJhdGlvblByb3BlcnR5KG51bGwsdCk7aWYobiBpbnN0YW5jZW9mIGFvKXt2YXIgcj1uO2lmKCFtYyhyLmNvbG9uUG9zaXRpb24pfHx0aGlzLm9mZnNldDw9ci5jb2xvblBvc2l0aW9uKXJldHVybiB0aGlzLmdldENvbXBsZXRpb25zRm9yRGVjbGFyYXRpb25Qcm9wZXJ0eShyLHQpO2lmKG1jKHIuc2VtaWNvbG9uUG9zaXRpb24pJiZyLnNlbWljb2xvblBvc2l0aW9uPHRoaXMub2Zmc2V0KXJldHVybiB0aGlzLm9mZnNldD09PXIuc2VtaWNvbG9uUG9zaXRpb24rMT90OnRoaXMuZ2V0Q29tcGxldGlvbnNGb3JEZWNsYXJhdGlvblByb3BlcnR5KG51bGwsdCk7aWYociBpbnN0YW5jZW9mIGNvKXJldHVybiB0aGlzLmdldENvbXBsZXRpb25zRm9yRGVjbGFyYXRpb25WYWx1ZShyLHQpfWVsc2UgbiBpbnN0YW5jZW9mIGlzP3RoaXMuZ2V0Q29tcGxldGlvbnNGb3JFeHRlbmRzUmVmZXJlbmNlKG4sbnVsbCx0KToodGhpcy5jdXJyZW50V29yZCYmIkAiPT09dGhpcy5jdXJyZW50V29yZFswXXx8biBpbnN0YW5jZW9mIGlvKSYmdGhpcy5nZXRDb21wbGV0aW9uc0ZvckRlY2xhcmF0aW9uUHJvcGVydHkobnVsbCx0KTtyZXR1cm4gdH0sZS5wcm90b3R5cGUuZ2V0Q29tcGxldGlvbnNGb3JWYXJpYWJsZURlY2xhcmF0aW9uPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMub2Zmc2V0JiZtYyhlLmNvbG9uUG9zaXRpb24pJiZ0aGlzLm9mZnNldD5lLmNvbG9uUG9zaXRpb24mJnRoaXMuZ2V0VmFyaWFibGVQcm9wb3NhbHMoZS5nZXRWYWx1ZSgpLHQpLHR9LGUucHJvdG90eXBlLmdldENvbXBsZXRpb25zRm9yRXhwcmVzc2lvbj1mdW5jdGlvbihlLHQpe3ZhciBuPWUuZ2V0UGFyZW50KCk7aWYobiBpbnN0YW5jZW9mIGZvKXJldHVybiB0aGlzLmdldENvbXBsZXRpb25zRm9yRnVuY3Rpb25Bcmd1bWVudChuLG4uZ2V0UGFyZW50KCksdCksdDt2YXIgcj1lLmZpbmRQYXJlbnQoamkuRGVjbGFyYXRpb24pO2lmKCFyKXJldHVybiB0aGlzLmdldFRlcm1Qcm9wb3NhbHModm9pZCAwLG51bGwsdCksdDt2YXIgaT1lLmZpbmRDaGlsZEF0T2Zmc2V0KHRoaXMub2Zmc2V0LCEwKTtyZXR1cm4gaT9pIGluc3RhbmNlb2YgZXN8fGkgaW5zdGFuY2VvZiBlbz90aGlzLmdldENvbXBsZXRpb25zRm9yRGVjbGFyYXRpb25WYWx1ZShyLHQpOnQ6dGhpcy5nZXRDb21wbGV0aW9uc0ZvckRlY2xhcmF0aW9uVmFsdWUocix0KX0sZS5wcm90b3R5cGUuZ2V0Q29tcGxldGlvbnNGb3JGdW5jdGlvbkFyZ3VtZW50PWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10LmdldElkZW50aWZpZXIoKTtyZXR1cm4gciYmci5tYXRjaGVzKCJ2YXIiKSYmKHQuZ2V0QXJndW1lbnRzKCkuaGFzQ2hpbGRyZW4oKSYmdC5nZXRBcmd1bWVudHMoKS5nZXRDaGlsZCgwKSE9PWV8fHRoaXMuZ2V0VmFyaWFibGVQcm9wb3NhbHNGb3JDU1NWYXJGdW5jdGlvbihuKSksbn0sZS5wcm90b3R5cGUuZ2V0Q29tcGxldGlvbnNGb3JGdW5jdGlvbkRlY2xhcmF0aW9uPWZ1bmN0aW9uKGUsdCl7dmFyIG49ZS5nZXREZWNsYXJhdGlvbnMoKTtyZXR1cm4gbiYmdGhpcy5vZmZzZXQ+bi5vZmZzZXQmJnRoaXMub2Zmc2V0PG4uZW5kJiZ0aGlzLmdldFRlcm1Qcm9wb3NhbHModm9pZCAwLG51bGwsdCksdH0sZS5wcm90b3R5cGUuZ2V0Q29tcGxldGlvbnNGb3JNaXhpblJlZmVyZW5jZT1mdW5jdGlvbihlLHQpe2Zvcih2YXIgbj10aGlzLHI9MCxpPXRoaXMuZ2V0U3ltYm9sQ29udGV4dCgpLmZpbmRTeW1ib2xzQXRPZmZzZXQodGhpcy5vZmZzZXQsJGkuTWl4aW4pO3I8aS5sZW5ndGg7cisrKXt2YXIgbz1pW3JdO28ubm9kZSBpbnN0YW5jZW9mIGxzJiZ0Lml0ZW1zLnB1c2godGhpcy5tYWtlVGVybVByb3Bvc2FsKG8sby5ub2RlLmdldFBhcmFtZXRlcnMoKSxudWxsKSl9dmFyIHM9ZS5nZXRJZGVudGlmaWVyKCl8fG51bGw7cmV0dXJuIHRoaXMuY29tcGxldGlvblBhcnRpY2lwYW50cy5mb3JFYWNoKChmdW5jdGlvbihlKXtlLm9uQ3NzTWl4aW5SZWZlcmVuY2UmJmUub25Dc3NNaXhpblJlZmVyZW5jZSh7bWl4aW5OYW1lOm4uY3VycmVudFdvcmQscmFuZ2U6bi5nZXRDb21wbGV0aW9uUmFuZ2Uocyl9KX0pKSx0fSxlLnByb3RvdHlwZS5nZXRUZXJtUHJvcG9zYWxzPWZ1bmN0aW9uKGUsdCxuKXtmb3IodmFyIHI9MCxpPXRoaXMuZ2V0U3ltYm9sQ29udGV4dCgpLmZpbmRTeW1ib2xzQXRPZmZzZXQodGhpcy5vZmZzZXQsJGkuRnVuY3Rpb24pO3I8aS5sZW5ndGg7cisrKXt2YXIgbz1pW3JdO28ubm9kZSBpbnN0YW5jZW9mIHhvJiZuLml0ZW1zLnB1c2godGhpcy5tYWtlVGVybVByb3Bvc2FsKG8sby5ub2RlLmdldFBhcmFtZXRlcnMoKSx0KSl9cmV0dXJuIG59LGUucHJvdG90eXBlLm1ha2VUZXJtUHJvcG9zYWw9ZnVuY3Rpb24oZSx0LG4pe2Uubm9kZTt2YXIgcj10LmdldENoaWxkcmVuKCkubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gZSBpbnN0YW5jZW9mIG1vP2UuZ2V0TmFtZSgpOmUuZ2V0VGV4dCgpfSkpLGk9ZS5uYW1lKyIoIityLm1hcCgoZnVuY3Rpb24oZSx0KXtyZXR1cm4iJHsiKyh0KzEpKyI6IitlKyJ9In0pKS5qb2luKCIsICIpKyIpIjtyZXR1cm57bGFiZWw6ZS5uYW1lLGRldGFpbDplLm5hbWUrIigiK3Iuam9pbigiLCAiKSsiKSIsdGV4dEVkaXQ6WXMucmVwbGFjZSh0aGlzLmdldENvbXBsZXRpb25SYW5nZShuKSxpKSxpbnNlcnRUZXh0Rm9ybWF0OktjLGtpbmQ6UmEuRnVuY3Rpb24sc29ydFRleHQ6T2MuVGVybX19LGUucHJvdG90eXBlLmdldENvbXBsZXRpb25zRm9yU3VwcG9ydHNDb25kaXRpb249ZnVuY3Rpb24oZSx0KXt2YXIgbj1lLmZpbmRGaXJzdENoaWxkQmVmb3JlT2Zmc2V0KHRoaXMub2Zmc2V0KTtpZihuKXtpZihuIGluc3RhbmNlb2YgY28pcmV0dXJuIW1jKG4uY29sb25Qb3NpdGlvbil8fHRoaXMub2Zmc2V0PD1uLmNvbG9uUG9zaXRpb24/dGhpcy5nZXRDb21wbGV0aW9uc0ZvckRlY2xhcmF0aW9uUHJvcGVydHkobix0KTp0aGlzLmdldENvbXBsZXRpb25zRm9yRGVjbGFyYXRpb25WYWx1ZShuLHQpO2lmKG4gaW5zdGFuY2VvZiBWbylyZXR1cm4gdGhpcy5nZXRDb21wbGV0aW9uc0ZvclN1cHBvcnRzQ29uZGl0aW9uKG4sdCl9cmV0dXJuIG1jKGUubFBhcmVudCkmJnRoaXMub2Zmc2V0PmUubFBhcmVudCYmKCFtYyhlLnJQYXJlbnQpfHx0aGlzLm9mZnNldDw9ZS5yUGFyZW50KT90aGlzLmdldENvbXBsZXRpb25zRm9yRGVjbGFyYXRpb25Qcm9wZXJ0eShudWxsLHQpOnR9LGUucHJvdG90eXBlLmdldENvbXBsZXRpb25zRm9yU3VwcG9ydHM9ZnVuY3Rpb24oZSx0KXt2YXIgbj1lLmdldERlY2xhcmF0aW9ucygpO2lmKCFufHx0aGlzLm9mZnNldDw9bi5vZmZzZXQpe3ZhciByPWUuZmluZEZpcnN0Q2hpbGRCZWZvcmVPZmZzZXQodGhpcy5vZmZzZXQpO3JldHVybiByIGluc3RhbmNlb2YgVm8/dGhpcy5nZXRDb21wbGV0aW9uc0ZvclN1cHBvcnRzQ29uZGl0aW9uKHIsdCk6dH1yZXR1cm4gdGhpcy5nZXRDb21wbGV0aW9uRm9yVG9wTGV2ZWwodCl9LGUucHJvdG90eXBlLmdldENvbXBsZXRpb25zRm9yRXh0ZW5kc1JlZmVyZW5jZT1mdW5jdGlvbihlLHQsbil7cmV0dXJuIG59LGUucHJvdG90eXBlLmdldENvbXBsZXRpb25Gb3JVcmlMaXRlcmFsVmFsdWU9ZnVuY3Rpb24oZSx0KXt2YXIgbixyLGk7aWYoZS5oYXNDaGlsZHJlbigpKXt2YXIgbz1lLmdldENoaWxkKDApO249by5nZXRUZXh0KCkscj10aGlzLnBvc2l0aW9uLGk9dGhpcy5nZXRDb21wbGV0aW9uUmFuZ2Uobyl9ZWxzZXtuPSIiLHI9dGhpcy5wb3NpdGlvbjt2YXIgcz10aGlzLnRleHREb2N1bWVudC5wb3NpdGlvbkF0KGUub2Zmc2V0KzQpO2k9a3MuY3JlYXRlKHMscyl9cmV0dXJuIHRoaXMuY29tcGxldGlvblBhcnRpY2lwYW50cy5mb3JFYWNoKChmdW5jdGlvbihlKXtlLm9uQ3NzVVJJTGl0ZXJhbFZhbHVlJiZlLm9uQ3NzVVJJTGl0ZXJhbFZhbHVlKHt1cmlWYWx1ZTpuLHBvc2l0aW9uOnIscmFuZ2U6aX0pfSkpLHR9LGUucHJvdG90eXBlLmdldENvbXBsZXRpb25Gb3JJbXBvcnRQYXRoPWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcztyZXR1cm4gdGhpcy5jb21wbGV0aW9uUGFydGljaXBhbnRzLmZvckVhY2goKGZ1bmN0aW9uKHQpe3Qub25Dc3NJbXBvcnRQYXRoJiZ0Lm9uQ3NzSW1wb3J0UGF0aCh7cGF0aFZhbHVlOmUuZ2V0VGV4dCgpLHBvc2l0aW9uOm4ucG9zaXRpb24scmFuZ2U6bi5nZXRDb21wbGV0aW9uUmFuZ2UoZSl9KX0pKSx0fSxlLnByb3RvdHlwZS5oYXNDaGFyYWN0ZXJBdFBvc2l0aW9uPWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy50ZXh0RG9jdW1lbnQuZ2V0VGV4dCgpO3JldHVybiBlPj0wJiZlPG4ubGVuZ3RoJiZuLmNoYXJBdChlKT09PXR9LGUucHJvdG90eXBlLmRvZXNTdXBwb3J0TWFya2Rvd249ZnVuY3Rpb24oKXt2YXIgZSx0LG47aWYoIW1jKHRoaXMuc3VwcG9ydHNNYXJrZG93bikpe2lmKCFtYyh0aGlzLmxzT3B0aW9ucy5jbGllbnRDYXBhYmlsaXRpZXMpKXJldHVybiB0aGlzLnN1cHBvcnRzTWFya2Rvd249ITAsdGhpcy5zdXBwb3J0c01hcmtkb3duO3ZhciByPW51bGw9PT0obj1udWxsPT09KHQ9bnVsbD09PShlPXRoaXMubHNPcHRpb25zLmNsaWVudENhcGFiaWxpdGllcy50ZXh0RG9jdW1lbnQpfHx2b2lkIDA9PT1lP3ZvaWQgMDplLmNvbXBsZXRpb24pfHx2b2lkIDA9PT10P3ZvaWQgMDp0LmNvbXBsZXRpb25JdGVtKXx8dm9pZCAwPT09bj92b2lkIDA6bi5kb2N1bWVudGF0aW9uRm9ybWF0O3RoaXMuc3VwcG9ydHNNYXJrZG93bj1BcnJheS5pc0FycmF5KHIpJiYtMSE9PXIuaW5kZXhPZihrYS5NYXJrZG93bil9cmV0dXJuIHRoaXMuc3VwcG9ydHNNYXJrZG93bn0sZX0oKTtmdW5jdGlvbiAkYyhlKXtyZXR1cm4hKCFlLnN0YXR1c3x8Im5vbnN0YW5kYXJkIiE9PWUuc3RhdHVzJiYib2Jzb2xldGUiIT09ZS5zdGF0dXMpfXZhciBIYz1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoKXt0aGlzLmVudHJpZXM9e319cmV0dXJuIGUucHJvdG90eXBlLmFkZD1mdW5jdGlvbihlKXt0aGlzLmVudHJpZXNbZV09ITB9LGUucHJvdG90eXBlLnJlbW92ZT1mdW5jdGlvbihlKXtkZWxldGUgdGhpcy5lbnRyaWVzW2VdfSxlLnByb3RvdHlwZS5nZXRFbnRyaWVzPWZ1bmN0aW9uKCl7cmV0dXJuIE9iamVjdC5rZXlzKHRoaXMuZW50cmllcyl9LGV9KCk7ZnVuY3Rpb24gR2MoZSl7cmV0dXJuIGUucmVwbGFjZSgvXChcKSQvLCIoJDEpIil9dmFyIEpjPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQpe3RoaXMuZW50cmllcz1lLHRoaXMuY3VycmVudE9mZnNldD10fXJldHVybiBlLnByb3RvdHlwZS52aXNpdE5vZGU9ZnVuY3Rpb24oZSl7cmV0dXJuKGUgaW5zdGFuY2VvZiBKb3x8ZSBpbnN0YW5jZW9mIHVvJiZmdW5jdGlvbihlKXt2YXIgdD1lLmdldE5hbWUoKTtyZXR1cm4hIXQmJi9eKHJnYnxyZ2JhfGhzbHxoc2xhfGh3YikkL2dpLnRlc3QodCl9KGUpKSYmKHRoaXMuY3VycmVudE9mZnNldDxlLm9mZnNldHx8ZS5lbmQ8dGhpcy5jdXJyZW50T2Zmc2V0KSYmdGhpcy5lbnRyaWVzLmFkZChlLmdldFRleHQoKSksITB9LGV9KCksWGM9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCl7dGhpcy5lbnRyaWVzPWUsdGhpcy5jdXJyZW50T2Zmc2V0PXR9cmV0dXJuIGUucHJvdG90eXBlLnZpc2l0Tm9kZT1mdW5jdGlvbihlKXtyZXR1cm4gZSBpbnN0YW5jZW9mIGVvJiZlLmlzQ3VzdG9tUHJvcGVydHkmJih0aGlzLmN1cnJlbnRPZmZzZXQ8ZS5vZmZzZXR8fGUuZW5kPHRoaXMuY3VycmVudE9mZnNldCkmJnRoaXMuZW50cmllcy5hZGQoZS5nZXRUZXh0KCkpLCEwfSxlfSgpO2Z1bmN0aW9uIFljKGUpe3JldHVybiBlLnRvTG93ZXJDYXNlKClpbiBPbHx8LyheI1swLTlBLUZdezZ9JCl8KF4jWzAtOUEtRl17M30kKS9pLnRlc3QoZSl9dmFyIFpjLFFjPWZ1bmN0aW9uKCl7dmFyIGU9ZnVuY3Rpb24odCxuKXtyZXR1cm4oZT1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fHtfX3Byb3RvX186W119aW5zdGFuY2VvZiBBcnJheSYmZnVuY3Rpb24oZSx0KXtlLl9fcHJvdG9fXz10fXx8ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG4gaW4gdClPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxuKSYmKGVbbl09dFtuXSl9KSh0LG4pfTtyZXR1cm4gZnVuY3Rpb24odCxuKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgbiYmbnVsbCE9PW4pdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSAiK1N0cmluZyhuKSsiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIG51bGwiKTtmdW5jdGlvbiByKCl7dGhpcy5jb25zdHJ1Y3Rvcj10fWUodCxuKSx0LnByb3RvdHlwZT1udWxsPT09bj9PYmplY3QuY3JlYXRlKG4pOihyLnByb3RvdHlwZT1uLnByb3RvdHlwZSxuZXcgcil9fSgpLGVoPWJzKCksdGg9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKCl7dGhpcy5wYXJlbnQ9bnVsbCx0aGlzLmNoaWxkcmVuPW51bGwsdGhpcy5hdHRyaWJ1dGVzPW51bGx9cmV0dXJuIGUucHJvdG90eXBlLmZpbmRBdHRyaWJ1dGU9ZnVuY3Rpb24oZSl7aWYodGhpcy5hdHRyaWJ1dGVzKWZvcih2YXIgdD0wLG49dGhpcy5hdHRyaWJ1dGVzO3Q8bi5sZW5ndGg7dCsrKXt2YXIgcj1uW3RdO2lmKHIubmFtZT09PWUpcmV0dXJuIHIudmFsdWV9cmV0dXJuIG51bGx9LGUucHJvdG90eXBlLmFkZENoaWxkPWZ1bmN0aW9uKHQpe3QgaW5zdGFuY2VvZiBlJiYodC5wYXJlbnQ9dGhpcyksdGhpcy5jaGlsZHJlbnx8KHRoaXMuY2hpbGRyZW49W10pLHRoaXMuY2hpbGRyZW4ucHVzaCh0KX0sZS5wcm90b3R5cGUuYXBwZW5kPWZ1bmN0aW9uKGUpe2lmKHRoaXMuYXR0cmlidXRlcyl7dmFyIHQ9dGhpcy5hdHRyaWJ1dGVzW3RoaXMuYXR0cmlidXRlcy5sZW5ndGgtMV07dC52YWx1ZT10LnZhbHVlK2V9fSxlLnByb3RvdHlwZS5wcmVwZW5kPWZ1bmN0aW9uKGUpe2lmKHRoaXMuYXR0cmlidXRlcyl7dmFyIHQ9dGhpcy5hdHRyaWJ1dGVzWzBdO3QudmFsdWU9ZSt0LnZhbHVlfX0sZS5wcm90b3R5cGUuZmluZFJvb3Q9ZnVuY3Rpb24oKXtmb3IodmFyIGU9dGhpcztlLnBhcmVudCYmIShlLnBhcmVudCBpbnN0YW5jZW9mIG5oKTspZT1lLnBhcmVudDtyZXR1cm4gZX0sZS5wcm90b3R5cGUucmVtb3ZlQ2hpbGQ9ZnVuY3Rpb24oZSl7aWYodGhpcy5jaGlsZHJlbil7dmFyIHQ9dGhpcy5jaGlsZHJlbi5pbmRleE9mKGUpO2lmKC0xIT09dClyZXR1cm4gdGhpcy5jaGlsZHJlbi5zcGxpY2UodCwxKSwhMH1yZXR1cm4hMX0sZS5wcm90b3R5cGUuYWRkQXR0cj1mdW5jdGlvbihlLHQpe3RoaXMuYXR0cmlidXRlc3x8KHRoaXMuYXR0cmlidXRlcz1bXSk7Zm9yKHZhciBuPTAscj10aGlzLmF0dHJpYnV0ZXM7bjxyLmxlbmd0aDtuKyspe3ZhciBpPXJbbl07aWYoaS5uYW1lPT09ZSlyZXR1cm4gdm9pZChpLnZhbHVlKz0iICIrdCl9dGhpcy5hdHRyaWJ1dGVzLnB1c2goe25hbWU6ZSx2YWx1ZTp0fSl9LGUucHJvdG90eXBlLmNsb25lPWZ1bmN0aW9uKHQpe3ZvaWQgMD09PXQmJih0PSEwKTt2YXIgbj1uZXcgZTtpZih0aGlzLmF0dHJpYnV0ZXMpe24uYXR0cmlidXRlcz1bXTtmb3IodmFyIHI9MCxpPXRoaXMuYXR0cmlidXRlcztyPGkubGVuZ3RoO3IrKyl7dmFyIG89aVtyXTtuLmFkZEF0dHIoby5uYW1lLG8udmFsdWUpfX1pZih0JiZ0aGlzLmNoaWxkcmVuKXtuLmNoaWxkcmVuPVtdO2Zvcih2YXIgcz0wO3M8dGhpcy5jaGlsZHJlbi5sZW5ndGg7cysrKW4uYWRkQ2hpbGQodGhpcy5jaGlsZHJlbltzXS5jbG9uZSgpKX1yZXR1cm4gbn0sZS5wcm90b3R5cGUuY2xvbmVXaXRoUGFyZW50PWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5jbG9uZSghMSk7IXRoaXMucGFyZW50fHx0aGlzLnBhcmVudCBpbnN0YW5jZW9mIG5ofHx0aGlzLnBhcmVudC5jbG9uZVdpdGhQYXJlbnQoKS5hZGRDaGlsZChlKTtyZXR1cm4gZX0sZX0oKSxuaD1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KCl7cmV0dXJuIG51bGwhPT1lJiZlLmFwcGx5KHRoaXMsYXJndW1lbnRzKXx8dGhpc31yZXR1cm4gUWModCxlKSx0fSh0aCkscmg9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCh0KXt2YXIgbj1lLmNhbGwodGhpcyl8fHRoaXM7cmV0dXJuIG4uYWRkQXR0cigibmFtZSIsdCksbn1yZXR1cm4gUWModCxlKSx0fSh0aCksaWg9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUpe3RoaXMucXVvdGU9ZSx0aGlzLnJlc3VsdD1bXX1yZXR1cm4gZS5wcm90b3R5cGUucHJpbnQ9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMucmVzdWx0PVtdLGUgaW5zdGFuY2VvZiBuaD9lLmNoaWxkcmVuJiZ0aGlzLmRvUHJpbnQoZS5jaGlsZHJlbiwwKTp0aGlzLmRvUHJpbnQoW2VdLDApLFt7bGFuZ3VhZ2U6Imh0bWwiLHZhbHVlOnRoaXMucmVzdWx0LmpvaW4oIlxuIil9XX0sZS5wcm90b3R5cGUuZG9QcmludD1mdW5jdGlvbihlLHQpe2Zvcih2YXIgbj0wLHI9ZTtuPHIubGVuZ3RoO24rKyl7dmFyIGk9cltuXTt0aGlzLmRvUHJpbnRFbGVtZW50KGksdCksaS5jaGlsZHJlbiYmdGhpcy5kb1ByaW50KGkuY2hpbGRyZW4sdCsxKX19LGUucHJvdG90eXBlLndyaXRlTGluZT1mdW5jdGlvbihlLHQpe3ZhciBuPW5ldyBBcnJheShlKzEpLmpvaW4oIiAgIik7dGhpcy5yZXN1bHQucHVzaChuK3QpfSxlLnByb3RvdHlwZS5kb1ByaW50RWxlbWVudD1mdW5jdGlvbihlLHQpe3ZhciBuPWUuZmluZEF0dHJpYnV0ZSgibmFtZSIpO2lmKGUgaW5zdGFuY2VvZiByaHx8IuKApiI9PT1uKXRoaXMud3JpdGVMaW5lKHQsbik7ZWxzZXt2YXIgcj1bIjwiXTtpZihuP3IucHVzaChuKTpyLnB1c2goImVsZW1lbnQiKSxlLmF0dHJpYnV0ZXMpZm9yKHZhciBpPTAsbz1lLmF0dHJpYnV0ZXM7aTxvLmxlbmd0aDtpKyspe3ZhciBzPW9baV07aWYoIm5hbWUiIT09cy5uYW1lKXtyLnB1c2goIiAiKSxyLnB1c2gocy5uYW1lKTt2YXIgYT1zLnZhbHVlO2EmJihyLnB1c2goIj0iKSxyLnB1c2goWmMuZW5zdXJlKGEsdGhpcy5xdW90ZSkpKX19ci5wdXNoKCI+IiksdGhpcy53cml0ZUxpbmUodCxyLmpvaW4oIiIpKX19LGV9KCk7IWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoZSl7dmFyIHQ9ZS5tYXRjaCgvXlsnIl0oLiopWyInXSQvKTtyZXR1cm4gdD90WzFdOmV9ZS5lbnN1cmU9ZnVuY3Rpb24oZSxuKXtyZXR1cm4gbit0KGUpK259LGUucmVtb3ZlPXR9KFpjfHwoWmM9e30pKTt2YXIgb2g9ZnVuY3Rpb24oKXt0aGlzLmlkPTAsdGhpcy5hdHRyPTAsdGhpcy50YWc9MH07ZnVuY3Rpb24gc2goZSx0KXtmb3IodmFyIG49bmV3IHRoLHI9MCxpPWUuZ2V0Q2hpbGRyZW4oKTtyPGkubGVuZ3RoO3IrKyl7dmFyIG89aVtyXTtzd2l0Y2goby50eXBlKXtjYXNlIGppLlNlbGVjdG9yQ29tYmluYXRvcjppZih0KXt2YXIgcz1vLmdldFRleHQoKS5zcGxpdCgiJiIpO2lmKDE9PT1zLmxlbmd0aCl7bi5hZGRBdHRyKCJuYW1lIixzWzBdKTticmVha31pZihuPXQuY2xvbmVXaXRoUGFyZW50KCksc1swXSluLmZpbmRSb290KCkucHJlcGVuZChzWzBdKTtmb3IodmFyIGE9MTthPHMubGVuZ3RoO2ErKyl7aWYoYT4xKXt2YXIgbD10LmNsb25lV2l0aFBhcmVudCgpO24uYWRkQ2hpbGQobC5maW5kUm9vdCgpKSxuPWx9bi5hcHBlbmQoc1thXSl9fWJyZWFrO2Nhc2UgamkuU2VsZWN0b3JQbGFjZWhvbGRlcjppZihvLm1hdGNoZXMoIkBhdC1yb290IikpcmV0dXJuIG47Y2FzZSBqaS5FbGVtZW50TmFtZVNlbGVjdG9yOnZhciBjPW8uZ2V0VGV4dCgpO24uYWRkQXR0cigibmFtZSIsIioiPT09Yz8iZWxlbWVudCI6YWgoYykpO2JyZWFrO2Nhc2UgamkuQ2xhc3NTZWxlY3RvcjpuLmFkZEF0dHIoImNsYXNzIixhaChvLmdldFRleHQoKS5zdWJzdHJpbmcoMSkpKTticmVhaztjYXNlIGppLklkZW50aWZpZXJTZWxlY3RvcjpuLmFkZEF0dHIoImlkIixhaChvLmdldFRleHQoKS5zdWJzdHJpbmcoMSkpKTticmVhaztjYXNlIGppLk1peGluRGVjbGFyYXRpb246bi5hZGRBdHRyKCJjbGFzcyIsby5nZXROYW1lKCkpO2JyZWFrO2Nhc2UgamkuUHNldWRvU2VsZWN0b3I6bi5hZGRBdHRyKGFoKG8uZ2V0VGV4dCgpKSwiIik7YnJlYWs7Y2FzZSBqaS5BdHRyaWJ1dGVTZWxlY3Rvcjp2YXIgaD1vLGQ9aC5nZXRJZGVudGlmaWVyKCk7aWYoZCl7dmFyIHA9aC5nZXRWYWx1ZSgpLHU9aC5nZXRPcGVyYXRvcigpLG09dm9pZCAwO2lmKHAmJnUpc3dpdGNoKGFoKHUuZ2V0VGV4dCgpKSl7Y2FzZSJ8PSI6bT0iIi5jb25jYXQoWmMucmVtb3ZlKGFoKHAuZ2V0VGV4dCgpKSksIi3igKYiKTticmVhaztjYXNlIl49IjptPSIiLmNvbmNhdChaYy5yZW1vdmUoYWgocC5nZXRUZXh0KCkpKSwi4oCmIik7YnJlYWs7Y2FzZSIkPSI6bT0i4oCmIi5jb25jYXQoWmMucmVtb3ZlKGFoKHAuZ2V0VGV4dCgpKSkpO2JyZWFrO2Nhc2Uifj0iOm09IiDigKYgIi5jb25jYXQoWmMucmVtb3ZlKGFoKHAuZ2V0VGV4dCgpKSksIiDigKYgIik7YnJlYWs7Y2FzZSIqPSI6bT0i4oCmIi5jb25jYXQoWmMucmVtb3ZlKGFoKHAuZ2V0VGV4dCgpKSksIuKApiIpO2JyZWFrO2RlZmF1bHQ6bT1aYy5yZW1vdmUoYWgocC5nZXRUZXh0KCkpKX1uLmFkZEF0dHIoYWgoZC5nZXRUZXh0KCkpLG0pfX19cmV0dXJuIG59ZnVuY3Rpb24gYWgoZSl7dmFyIHQ9bmV3IE9pO3Quc2V0U291cmNlKGUpO3ZhciBuPXQuc2NhblVucXVvdGVkU3RyaW5nKCk7cmV0dXJuIG4/bi50ZXh0OmV9dmFyIGxoPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlKXt0aGlzLmNzc0RhdGFNYW5hZ2VyPWV9cmV0dXJuIGUucHJvdG90eXBlLnNlbGVjdG9yVG9NYXJrZWRTdHJpbmc9ZnVuY3Rpb24oZSl7dmFyIHQ9ZnVuY3Rpb24oZSl7aWYoZS5tYXRjaGVzKCJAYXQtcm9vdCIpKXJldHVybiBudWxsO3ZhciB0PW5ldyBuaCxuPVtdLHI9ZS5nZXRQYXJlbnQoKTtpZihyIGluc3RhbmNlb2YgaW8pZm9yKHZhciBpPXIuZ2V0UGFyZW50KCk7aSYmIWhoKGkpOyl7aWYoaSBpbnN0YW5jZW9mIGlvKXtpZihpLmdldFNlbGVjdG9ycygpLm1hdGNoZXMoIkBhdC1yb290IikpYnJlYWs7bi5wdXNoKGkpfWk9aS5nZXRQYXJlbnQoKX1mb3IodmFyIG89bmV3IGNoKHQpLHM9bi5sZW5ndGgtMTtzPj0wO3MtLSl7dmFyIGE9bltzXS5nZXRTZWxlY3RvcnMoKS5nZXRDaGlsZCgwKTthJiZvLnByb2Nlc3NTZWxlY3RvcihhKX1yZXR1cm4gby5wcm9jZXNzU2VsZWN0b3IoZSksdH0oZSk7aWYodCl7dmFyIG49bmV3IGloKCciJykucHJpbnQodCk7cmV0dXJuIG4ucHVzaCh0aGlzLnNlbGVjdG9yVG9TcGVjaWZpY2l0eU1hcmtlZFN0cmluZyhlKSksbn1yZXR1cm5bXX0sZS5wcm90b3R5cGUuc2ltcGxlU2VsZWN0b3JUb01hcmtlZFN0cmluZz1mdW5jdGlvbihlKXt2YXIgdD1zaChlKSxuPW5ldyBpaCgnIicpLnByaW50KHQpO3JldHVybiBuLnB1c2godGhpcy5zZWxlY3RvclRvU3BlY2lmaWNpdHlNYXJrZWRTdHJpbmcoZSkpLG59LGUucHJvdG90eXBlLmlzUHNldWRvRWxlbWVudElkZW50aWZpZXI9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5tYXRjaCgvXjo6PyhbXHctXSspLyk7cmV0dXJuISF0JiYhIXRoaXMuY3NzRGF0YU1hbmFnZXIuZ2V0UHNldWRvRWxlbWVudCgiOjoiK3RbMV0pfSxlLnByb3RvdHlwZS5zZWxlY3RvclRvU3BlY2lmaWNpdHlNYXJrZWRTdHJpbmc9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcyxuPWZ1bmN0aW9uKGUpe3ZhciByPW5ldyBvaDtlOmZvcih2YXIgaT0wLG89ZS5nZXRDaGlsZHJlbigpO2k8by5sZW5ndGg7aSsrKXt2YXIgcz1vW2ldO3N3aXRjaChzLnR5cGUpe2Nhc2UgamkuSWRlbnRpZmllclNlbGVjdG9yOnIuaWQrKzticmVhaztjYXNlIGppLkNsYXNzU2VsZWN0b3I6Y2FzZSBqaS5BdHRyaWJ1dGVTZWxlY3RvcjpyLmF0dHIrKzticmVhaztjYXNlIGppLkVsZW1lbnROYW1lU2VsZWN0b3I6aWYocy5tYXRjaGVzKCIqIikpYnJlYWs7ci50YWcrKzticmVhaztjYXNlIGppLlBzZXVkb1NlbGVjdG9yOnZhciBhPXMuZ2V0VGV4dCgpO2lmKHQuaXNQc2V1ZG9FbGVtZW50SWRlbnRpZmllcihhKSl7ci50YWcrKzticmVha31pZihhLm1hdGNoKC9eOndoZXJlL2kpKWNvbnRpbnVlIGU7aWYoYS5tYXRjaCgvXjoobm90fGhhc3xpcykvaSkmJnMuZ2V0Q2hpbGRyZW4oKS5sZW5ndGg+MCl7Zm9yKHZhciBsPW5ldyBvaCxjPTAsaD1zLmdldENoaWxkcmVuKCk7YzxoLmxlbmd0aDtjKyspe3ZhciBkPWhbY107ZC50eXBlPT09amkuVW5kZWZpbmVkJiZkLmdldENoaWxkcmVuKCk7Zm9yKHZhciBwPTAsdT1kLmdldENoaWxkcmVuKCk7cDx1Lmxlbmd0aDtwKyspe3ZhciBtPXVbcF07KGY9bihtKSkuaWQ+bC5pZD9sPWY6Zi5pZDxsLmlkfHwoZi5hdHRyPmwuYXR0cj9sPWY6Zi5hdHRyPGwuYXR0cnx8Zi50YWc+bC50YWcmJihsPWYpKX19ci5pZCs9bC5pZCxyLmF0dHIrPWwuYXR0cixyLnRhZys9bC50YWc7Y29udGludWUgZX1yLmF0dHIrK31pZihzLmdldENoaWxkcmVuKCkubGVuZ3RoPjApe3ZhciBmPW4ocyk7ci5pZCs9Zi5pZCxyLmF0dHIrPWYuYXR0cixyLnRhZys9Zi50YWd9fXJldHVybiByfSxyPW4oZSk7cmV0dXJuIGVoKCJzcGVjaWZpY2l0eSIsIltTZWxlY3RvciBTcGVjaWZpY2l0eV0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL1NwZWNpZmljaXR5KTogKHswfSwgezF9LCB7Mn0pIixyLmlkLHIuYXR0cixyLnRhZyl9LGV9KCksY2g9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUpe3RoaXMucHJldj1udWxsLHRoaXMuZWxlbWVudD1lfXJldHVybiBlLnByb3RvdHlwZS5wcm9jZXNzU2VsZWN0b3I9ZnVuY3Rpb24oZSl7dmFyIHQ9bnVsbDtpZighKHRoaXMuZWxlbWVudCBpbnN0YW5jZW9mIG5oKSYmZS5nZXRDaGlsZHJlbigpLnNvbWUoKGZ1bmN0aW9uKGUpe3JldHVybiBlLmhhc0NoaWxkcmVuKCkmJmUuZ2V0Q2hpbGQoMCkudHlwZT09PWppLlNlbGVjdG9yQ29tYmluYXRvcn0pKSl7dmFyIG49dGhpcy5lbGVtZW50LmZpbmRSb290KCk7bi5wYXJlbnQgaW5zdGFuY2VvZiBuaCYmKHQ9dGhpcy5lbGVtZW50LHRoaXMuZWxlbWVudD1uLnBhcmVudCx0aGlzLmVsZW1lbnQucmVtb3ZlQ2hpbGQobiksdGhpcy5wcmV2PW51bGwpfWZvcih2YXIgcj0wLGk9ZS5nZXRDaGlsZHJlbigpO3I8aS5sZW5ndGg7cisrKXt2YXIgbz1pW3JdO2lmKG8gaW5zdGFuY2VvZiBzbyl7aWYodGhpcy5wcmV2IGluc3RhbmNlb2Ygc28pe3ZhciBzPW5ldyByaCgi4oCmIik7dGhpcy5lbGVtZW50LmFkZENoaWxkKHMpLHRoaXMuZWxlbWVudD1zfWVsc2UgdGhpcy5wcmV2JiYodGhpcy5wcmV2Lm1hdGNoZXMoIisiKXx8dGhpcy5wcmV2Lm1hdGNoZXMoIn4iKSkmJnRoaXMuZWxlbWVudC5wYXJlbnQmJih0aGlzLmVsZW1lbnQ9dGhpcy5lbGVtZW50LnBhcmVudCk7dGhpcy5wcmV2JiZ0aGlzLnByZXYubWF0Y2hlcygifiIpJiZ0aGlzLmVsZW1lbnQuYWRkQ2hpbGQobmV3IHJoKCLii64iKSk7dmFyIGE9c2gobyx0KSxsPWEuZmluZFJvb3QoKTt0aGlzLmVsZW1lbnQuYWRkQ2hpbGQobCksdGhpcy5lbGVtZW50PWF9KG8gaW5zdGFuY2VvZiBzb3x8by50eXBlPT09amkuU2VsZWN0b3JDb21iaW5hdG9yUGFyZW50fHxvLnR5cGU9PT1qaS5TZWxlY3RvckNvbWJpbmF0b3JTaGFkb3dQaWVyY2luZ0Rlc2NlbmRhbnR8fG8udHlwZT09PWppLlNlbGVjdG9yQ29tYmluYXRvclNpYmxpbmd8fG8udHlwZT09PWppLlNlbGVjdG9yQ29tYmluYXRvckFsbFNpYmxpbmdzKSYmKHRoaXMucHJldj1vKX19LGV9KCk7ZnVuY3Rpb24gaGgoZSl7c3dpdGNoKGUudHlwZSl7Y2FzZSBqaS5NaXhpbkRlY2xhcmF0aW9uOmNhc2UgamkuU3R5bGVzaGVldDpyZXR1cm4hMH1yZXR1cm4hMX12YXIgZGg9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCl7dGhpcy5jbGllbnRDYXBhYmlsaXRpZXM9ZSx0aGlzLmNzc0RhdGFNYW5hZ2VyPXQsdGhpcy5zZWxlY3RvclByaW50aW5nPW5ldyBsaCh0KX1yZXR1cm4gZS5wcm90b3R5cGUuY29uZmlndXJlPWZ1bmN0aW9uKGUpe3RoaXMuZGVmYXVsdFNldHRpbmdzPWV9LGUucHJvdG90eXBlLmRvSG92ZXI9ZnVuY3Rpb24oZSx0LG4scil7ZnVuY3Rpb24gaSh0KXtyZXR1cm4ga3MuY3JlYXRlKGUucG9zaXRpb25BdCh0Lm9mZnNldCksZS5wb3NpdGlvbkF0KHQuZW5kKSl9dm9pZCAwPT09ciYmKHI9dGhpcy5kZWZhdWx0U2V0dGluZ3MpO2Zvcih2YXIgbz1YaShuLGUub2Zmc2V0QXQodCkpLHM9bnVsbCxhPTA7YTxvLmxlbmd0aDthKyspe3ZhciBsPW9bYV07aWYobCBpbnN0YW5jZW9mIG9vKXtzPXtjb250ZW50czp0aGlzLnNlbGVjdG9yUHJpbnRpbmcuc2VsZWN0b3JUb01hcmtlZFN0cmluZyhsKSxyYW5nZTppKGwpfTticmVha31pZihsIGluc3RhbmNlb2Ygc28pe1dpKGwuZ2V0VGV4dCgpLCJAIil8fChzPXtjb250ZW50czp0aGlzLnNlbGVjdG9yUHJpbnRpbmcuc2ltcGxlU2VsZWN0b3JUb01hcmtlZFN0cmluZyhsKSxyYW5nZTppKGwpfSk7YnJlYWt9aWYobCBpbnN0YW5jZW9mIGNvKXt2YXIgYz1sLmdldEZ1bGxQcm9wZXJ0eU5hbWUoKTsoZD10aGlzLmNzc0RhdGFNYW5hZ2VyLmdldFByb3BlcnR5KGMpKSYmKHM9KHA9VGwoZCx0aGlzLmRvZXNTdXBwb3J0TWFya2Rvd24oKSxyKSk/e2NvbnRlbnRzOnAscmFuZ2U6aShsKX06bnVsbCl9ZWxzZSBpZihsIGluc3RhbmNlb2YgY3Mpe3ZhciBoPWwuZ2V0VGV4dCgpOyhkPXRoaXMuY3NzRGF0YU1hbmFnZXIuZ2V0QXREaXJlY3RpdmUoaCkpJiYocz0ocD1UbChkLHRoaXMuZG9lc1N1cHBvcnRNYXJrZG93bigpLHIpKT97Y29udGVudHM6cCxyYW5nZTppKGwpfTpudWxsKX1lbHNlIGlmKGwgaW5zdGFuY2VvZiBZaSYmbC50eXBlPT09amkuUHNldWRvU2VsZWN0b3Ipe3ZhciBkLHAsdT1sLmdldFRleHQoKTsoZD0iOjoiPT09dS5zbGljZSgwLDIpP3RoaXMuY3NzRGF0YU1hbmFnZXIuZ2V0UHNldWRvRWxlbWVudCh1KTp0aGlzLmNzc0RhdGFNYW5hZ2VyLmdldFBzZXVkb0NsYXNzKHUpKSYmKHM9KHA9VGwoZCx0aGlzLmRvZXNTdXBwb3J0TWFya2Rvd24oKSxyKSk/e2NvbnRlbnRzOnAscmFuZ2U6aShsKX06bnVsbCl9ZWxzZTt9cmV0dXJuIHMmJihzLmNvbnRlbnRzPXRoaXMuY29udmVydENvbnRlbnRzKHMuY29udGVudHMpKSxzfSxlLnByb3RvdHlwZS5jb252ZXJ0Q29udGVudHM9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuZG9lc1N1cHBvcnRNYXJrZG93bigpfHwic3RyaW5nIj09dHlwZW9mIGU/ZToia2luZCJpbiBlP3traW5kOiJwbGFpbnRleHQiLHZhbHVlOmUudmFsdWV9OkFycmF5LmlzQXJyYXkoZSk/ZS5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiJzdHJpbmciPT10eXBlb2YgZT9lOmUudmFsdWV9KSk6ZS52YWx1ZX0sZS5wcm90b3R5cGUuZG9lc1N1cHBvcnRNYXJrZG93bj1mdW5jdGlvbigpe2lmKCFtYyh0aGlzLnN1cHBvcnRzTWFya2Rvd24pKXtpZighbWModGhpcy5jbGllbnRDYXBhYmlsaXRpZXMpKXJldHVybiB0aGlzLnN1cHBvcnRzTWFya2Rvd249ITAsdGhpcy5zdXBwb3J0c01hcmtkb3duO3ZhciBlPXRoaXMuY2xpZW50Q2FwYWJpbGl0aWVzLnRleHREb2N1bWVudCYmdGhpcy5jbGllbnRDYXBhYmlsaXRpZXMudGV4dERvY3VtZW50LmhvdmVyO3RoaXMuc3VwcG9ydHNNYXJrZG93bj1lJiZlLmNvbnRlbnRGb3JtYXQmJkFycmF5LmlzQXJyYXkoZS5jb250ZW50Rm9ybWF0KSYmLTEhPT1lLmNvbnRlbnRGb3JtYXQuaW5kZXhPZihrYS5NYXJrZG93bil9cmV0dXJuIHRoaXMuc3VwcG9ydHNNYXJrZG93bn0sZX0oKSxwaD1mdW5jdGlvbihlLHQsbixyKXtyZXR1cm4gbmV3KG58fChuPVByb21pc2UpKSgoZnVuY3Rpb24oaSxvKXtmdW5jdGlvbiBzKGUpe3RyeXtsKHIubmV4dChlKSl9Y2F0Y2goZSl7byhlKX19ZnVuY3Rpb24gYShlKXt0cnl7bChyLnRocm93KGUpKX1jYXRjaChlKXtvKGUpfX1mdW5jdGlvbiBsKGUpe3ZhciB0O2UuZG9uZT9pKGUudmFsdWUpOih0PWUudmFsdWUsdCBpbnN0YW5jZW9mIG4/dDpuZXcgbigoZnVuY3Rpb24oZSl7ZSh0KX0pKSkudGhlbihzLGEpfWwoKHI9ci5hcHBseShlLHR8fFtdKSkubmV4dCgpKX0pKX0sdWg9ZnVuY3Rpb24oZSx0KXt2YXIgbixyLGksbyxzPXtsYWJlbDowLHNlbnQ6ZnVuY3Rpb24oKXtpZigxJmlbMF0pdGhyb3cgaVsxXTtyZXR1cm4gaVsxXX0sdHJ5czpbXSxvcHM6W119O3JldHVybiBvPXtuZXh0OmEoMCksdGhyb3c6YSgxKSxyZXR1cm46YSgyKX0sImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmKG9bU3ltYm9sLml0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSksbztmdW5jdGlvbiBhKG8pe3JldHVybiBmdW5jdGlvbihhKXtyZXR1cm4gZnVuY3Rpb24obyl7aWYobil0aHJvdyBuZXcgVHlwZUVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuIik7Zm9yKDtzOyl0cnl7aWYobj0xLHImJihpPTImb1swXT9yLnJldHVybjpvWzBdP3IudGhyb3d8fCgoaT1yLnJldHVybikmJmkuY2FsbChyKSwwKTpyLm5leHQpJiYhKGk9aS5jYWxsKHIsb1sxXSkpLmRvbmUpcmV0dXJuIGk7c3dpdGNoKHI9MCxpJiYobz1bMiZvWzBdLGkudmFsdWVdKSxvWzBdKXtjYXNlIDA6Y2FzZSAxOmk9bzticmVhaztjYXNlIDQ6cmV0dXJuIHMubGFiZWwrKyx7dmFsdWU6b1sxXSxkb25lOiExfTtjYXNlIDU6cy5sYWJlbCsrLHI9b1sxXSxvPVswXTtjb250aW51ZTtjYXNlIDc6bz1zLm9wcy5wb3AoKSxzLnRyeXMucG9wKCk7Y29udGludWU7ZGVmYXVsdDppZighKGk9cy50cnlzLChpPWkubGVuZ3RoPjAmJmlbaS5sZW5ndGgtMV0pfHw2IT09b1swXSYmMiE9PW9bMF0pKXtzPTA7Y29udGludWV9aWYoMz09PW9bMF0mJighaXx8b1sxXT5pWzBdJiZvWzFdPGlbM10pKXtzLmxhYmVsPW9bMV07YnJlYWt9aWYoNj09PW9bMF0mJnMubGFiZWw8aVsxXSl7cy5sYWJlbD1pWzFdLGk9bzticmVha31pZihpJiZzLmxhYmVsPGlbMl0pe3MubGFiZWw9aVsyXSxzLm9wcy5wdXNoKG8pO2JyZWFrfWlbMl0mJnMub3BzLnBvcCgpLHMudHJ5cy5wb3AoKTtjb250aW51ZX1vPXQuY2FsbChlLHMpfWNhdGNoKGUpe289WzYsZV0scj0wfWZpbmFsbHl7bj1pPTB9aWYoNSZvWzBdKXRocm93IG9bMV07cmV0dXJue3ZhbHVlOm9bMF0/b1sxXTp2b2lkIDAsZG9uZTohMH19KFtvLGFdKX19fSxtaD1icygpLGZoPS9eXHcrOlwvXC8vLGdoPS9eZGF0YTovLGJoPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQpe3RoaXMuZmlsZVN5c3RlbVByb3ZpZGVyPWUsdGhpcy5yZXNvbHZlTW9kdWxlUmVmZXJlbmNlcz10fXJldHVybiBlLnByb3RvdHlwZS5maW5kRGVmaW5pdGlvbj1mdW5jdGlvbihlLHQsbil7dmFyIHI9bmV3IF9jKG4pLGk9SmkobixlLm9mZnNldEF0KHQpKTtpZighaSlyZXR1cm4gbnVsbDt2YXIgbz1yLmZpbmRTeW1ib2xGcm9tTm9kZShpKTtyZXR1cm4gbz97dXJpOmUudXJpLHJhbmdlOnZoKG8ubm9kZSxlKX06bnVsbH0sZS5wcm90b3R5cGUuZmluZFJlZmVyZW5jZXM9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiB0aGlzLmZpbmREb2N1bWVudEhpZ2hsaWdodHMoZSx0LG4pLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJue3VyaTplLnVyaSxyYW5nZTp0LnJhbmdlfX0pKX0sZS5wcm90b3R5cGUuZmluZERvY3VtZW50SGlnaGxpZ2h0cz1mdW5jdGlvbihlLHQsbil7dmFyIHI9W10saT1KaShuLGUub2Zmc2V0QXQodCkpO2lmKCFpfHxpLnR5cGU9PT1qaS5TdHlsZXNoZWV0fHxpLnR5cGU9PT1qaS5EZWNsYXJhdGlvbnMpcmV0dXJuIHI7aS50eXBlPT09amkuSWRlbnRpZmllciYmaS5wYXJlbnQmJmkucGFyZW50LnR5cGU9PT1qaS5DbGFzc1NlbGVjdG9yJiYoaT1pLnBhcmVudCk7dmFyIG89bmV3IF9jKG4pLHM9by5maW5kU3ltYm9sRnJvbU5vZGUoaSksYT1pLmdldFRleHQoKTtyZXR1cm4gbi5hY2NlcHQoKGZ1bmN0aW9uKHQpe2lmKHMpe2lmKG8ubWF0Y2hlc1N5bWJvbCh0LHMpKXJldHVybiByLnB1c2goe2tpbmQ6eWgodCkscmFuZ2U6dmgodCxlKX0pLCExfWVsc2UgaSYmaS50eXBlPT09dC50eXBlJiZ0Lm1hdGNoZXMoYSkmJnIucHVzaCh7a2luZDp5aCh0KSxyYW5nZTp2aCh0LGUpfSk7cmV0dXJuITB9KSkscn0sZS5wcm90b3R5cGUuaXNSYXdTdHJpbmdEb2N1bWVudExpbmtOb2RlPWZ1bmN0aW9uKGUpe3JldHVybiBlLnR5cGU9PT1qaS5JbXBvcnR9LGUucHJvdG90eXBlLmZpbmREb2N1bWVudExpbmtzPWZ1bmN0aW9uKGUsdCxuKXtmb3IodmFyIHI9W10saT0wLG89dGhpcy5maW5kVW5yZXNvbHZlZExpbmtzKGUsdCk7aTxvLmxlbmd0aDtpKyspe3ZhciBzPW9baV0ubGluayxhPXMudGFyZ2V0O2lmKCFhfHxnaC50ZXN0KGEpKTtlbHNlIGlmKGZoLnRlc3QoYSkpci5wdXNoKHMpO2Vsc2V7dmFyIGw9bi5yZXNvbHZlUmVmZXJlbmNlKGEsZS51cmkpO2wmJihzLnRhcmdldD1sKSxyLnB1c2gocyl9fXJldHVybiByfSxlLnByb3RvdHlwZS5maW5kRG9jdW1lbnRMaW5rczI9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBwaCh0aGlzLHZvaWQgMCx2b2lkIDAsKGZ1bmN0aW9uKCl7dmFyIHIsaSxvLHMsYSxsLGMsaDtyZXR1cm4gdWgodGhpcywoZnVuY3Rpb24oZCl7c3dpdGNoKGQubGFiZWwpe2Nhc2UgMDpyPXRoaXMuZmluZFVucmVzb2x2ZWRMaW5rcyhlLHQpLGk9W10sbz0wLHM9cixkLmxhYmVsPTE7Y2FzZSAxOnJldHVybiBvPHMubGVuZ3RoPyhhPXNbb10sbD1hLmxpbmssKGM9bC50YXJnZXQpJiYhZ2gudGVzdChjKT9bMywyXTpbMyw1XSk6WzMsNl07Y2FzZSAyOnJldHVybiBmaC50ZXN0KGMpPyhpLnB1c2gobCksWzMsNV0pOlszLDNdO2Nhc2UgMzpyZXR1cm5bNCx0aGlzLnJlc29sdmVSZWxhdGl2ZVJlZmVyZW5jZShjLGUudXJpLG4sYS5pc1Jhd0xpbmspXTtjYXNlIDQ6dm9pZCAwIT09KGg9ZC5zZW50KCkpJiYobC50YXJnZXQ9aCxpLnB1c2gobCkpLGQubGFiZWw9NTtjYXNlIDU6cmV0dXJuIG8rKyxbMywxXTtjYXNlIDY6cmV0dXJuWzIsaV19fSkpfSkpfSxlLnByb3RvdHlwZS5maW5kVW5yZXNvbHZlZExpbmtzPWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcyxyPVtdLGk9ZnVuY3Rpb24odCl7dmFyIGk9dC5nZXRUZXh0KCksbz12aCh0LGUpO2lmKG8uc3RhcnQubGluZSE9PW8uZW5kLmxpbmV8fG8uc3RhcnQuY2hhcmFjdGVyIT09by5lbmQuY2hhcmFjdGVyKXsoV2koaSwiJyIpfHxXaShpLCciJykpJiYoaT1pLnNsaWNlKDEsLTEpKTt2YXIgcz0hIXQucGFyZW50JiZuLmlzUmF3U3RyaW5nRG9jdW1lbnRMaW5rTm9kZSh0LnBhcmVudCk7ci5wdXNoKHtsaW5rOnt0YXJnZXQ6aSxyYW5nZTpvfSxpc1Jhd0xpbms6c30pfX07cmV0dXJuIHQuYWNjZXB0KChmdW5jdGlvbihlKXtpZihlLnR5cGU9PT1qaS5VUklMaXRlcmFsKXt2YXIgdD1lLmdldENoaWxkKDApO3JldHVybiB0JiZpKHQpLCExfWlmKGUucGFyZW50JiZuLmlzUmF3U3RyaW5nRG9jdW1lbnRMaW5rTm9kZShlLnBhcmVudCkpe3ZhciByPWUuZ2V0VGV4dCgpO3JldHVybihXaShyLCInIil8fFdpKHIsJyInKSkmJmkoZSksITF9cmV0dXJuITB9KSkscn0sZS5wcm90b3R5cGUuZmluZERvY3VtZW50U3ltYm9scz1mdW5jdGlvbihlLHQpe3ZhciBuPVtdO3JldHVybiB0LmFjY2VwdCgoZnVuY3Rpb24odCl7dmFyIHI9e25hbWU6bnVsbCxraW5kOiRhLkNsYXNzLGxvY2F0aW9uOm51bGx9LGk9dDtpZih0IGluc3RhbmNlb2Ygb28pcmV0dXJuIHIubmFtZT10LmdldFRleHQoKSwoaT10LmZpbmRBUGFyZW50KGppLlJ1bGVzZXQsamkuRXh0ZW5kc1JlZmVyZW5jZSkpJiYoci5sb2NhdGlvbj1Fcy5jcmVhdGUoZS51cmksdmgoaSxlKSksbi5wdXNoKHIpKSwhMTtpZih0IGluc3RhbmNlb2YgdHMpci5uYW1lPXQuZ2V0TmFtZSgpLHIua2luZD0kYS5WYXJpYWJsZTtlbHNlIGlmKHQgaW5zdGFuY2VvZiBscylyLm5hbWU9dC5nZXROYW1lKCksci5raW5kPSRhLk1ldGhvZDtlbHNlIGlmKHQgaW5zdGFuY2VvZiB4bylyLm5hbWU9dC5nZXROYW1lKCksci5raW5kPSRhLkZ1bmN0aW9uO2Vsc2UgaWYodCBpbnN0YW5jZW9mIF9vKXIubmFtZT1taCgibGl0ZXJhbC5rZXlmcmFtZXMiLCJAa2V5ZnJhbWVzIHswfSIsdC5nZXROYW1lKCkpO2Vsc2UgaWYodCBpbnN0YW5jZW9mIENvKXIubmFtZT1taCgibGl0ZXJhbC5mb250ZmFjZSIsIkBmb250LWZhY2UiKTtlbHNlIGlmKHQgaW5zdGFuY2VvZiBNbyl7dmFyIG89dC5nZXRDaGlsZCgwKTtvIGluc3RhbmNlb2YgUG8mJihyLm5hbWU9IkBtZWRpYSAiK28uZ2V0VGV4dCgpLHIua2luZD0kYS5Nb2R1bGUpfXJldHVybiByLm5hbWUmJihyLmxvY2F0aW9uPUVzLmNyZWF0ZShlLnVyaSx2aChpLGUpKSxuLnB1c2gocikpLCEwfSkpLG59LGUucHJvdG90eXBlLmZpbmREb2N1bWVudENvbG9ycz1mdW5jdGlvbihlLHQpe3ZhciBuPVtdO3JldHVybiB0LmFjY2VwdCgoZnVuY3Rpb24odCl7dmFyIHI9ZnVuY3Rpb24oZSx0KXt2YXIgbj1ZbChlKTtpZihuKXtyZXR1cm57Y29sb3I6bixyYW5nZTp2aChlLHQpfX1yZXR1cm4gbnVsbH0odCxlKTtyZXR1cm4gciYmbi5wdXNoKHIpLCEwfSkpLG59LGUucHJvdG90eXBlLmdldENvbG9yUHJlc2VudGF0aW9ucz1mdW5jdGlvbihlLHQsbixyKXt2YXIgaSxvPVtdLHM9TWF0aC5yb3VuZCgyNTUqbi5yZWQpLGE9TWF0aC5yb3VuZCgyNTUqbi5ncmVlbiksbD1NYXRoLnJvdW5kKDI1NSpuLmJsdWUpO2k9MT09PW4uYWxwaGE/InJnYigiLmNvbmNhdChzLCIsICIpLmNvbmNhdChhLCIsICIpLmNvbmNhdChsLCIpIik6InJnYmEoIi5jb25jYXQocywiLCAiKS5jb25jYXQoYSwiLCAiKS5jb25jYXQobCwiLCAiKS5jb25jYXQobi5hbHBoYSwiKSIpLG8ucHVzaCh7bGFiZWw6aSx0ZXh0RWRpdDpZcy5yZXBsYWNlKHIsaSl9KSxpPTE9PT1uLmFscGhhPyIjIi5jb25jYXQod2gocykpLmNvbmNhdCh3aChhKSkuY29uY2F0KHdoKGwpKToiIyIuY29uY2F0KHdoKHMpKS5jb25jYXQod2goYSkpLmNvbmNhdCh3aChsKSkuY29uY2F0KHdoKE1hdGgucm91bmQoMjU1Km4uYWxwaGEpKSksby5wdXNoKHtsYWJlbDppLHRleHRFZGl0OllzLnJlcGxhY2UocixpKX0pO3ZhciBjPVhsKG4pO2k9MT09PWMuYT8iaHNsKCIuY29uY2F0KGMuaCwiLCAiKS5jb25jYXQoTWF0aC5yb3VuZCgxMDAqYy5zKSwiJSwgIikuY29uY2F0KE1hdGgucm91bmQoMTAwKmMubCksIiUpIik6ImhzbGEoIi5jb25jYXQoYy5oLCIsICIpLmNvbmNhdChNYXRoLnJvdW5kKDEwMCpjLnMpLCIlLCAiKS5jb25jYXQoTWF0aC5yb3VuZCgxMDAqYy5sKSwiJSwgIikuY29uY2F0KGMuYSwiKSIpLG8ucHVzaCh7bGFiZWw6aSx0ZXh0RWRpdDpZcy5yZXBsYWNlKHIsaSl9KTt2YXIgaD1mdW5jdGlvbihlKXt2YXIgdD1YbChlKSxuPU1hdGgubWluKGUucmVkLGUuZ3JlZW4sZS5ibHVlKSxyPTEtTWF0aC5tYXgoZS5yZWQsZS5ncmVlbixlLmJsdWUpO3JldHVybntoOnQuaCx3Om4sYjpyLGE6dC5hfX0obik7cmV0dXJuIGk9MT09PWguYT8iaHdiKCIuY29uY2F0KGguaCwiICIpLmNvbmNhdChNYXRoLnJvdW5kKDEwMCpoLncpLCIlICIpLmNvbmNhdChNYXRoLnJvdW5kKDEwMCpoLmIpLCIlKSIpOiJod2IoIi5jb25jYXQoaC5oLCIgIikuY29uY2F0KE1hdGgucm91bmQoMTAwKmgudyksIiUgIikuY29uY2F0KE1hdGgucm91bmQoMTAwKmguYiksIiUgLyAiKS5jb25jYXQoaC5hLCIpIiksby5wdXNoKHtsYWJlbDppLHRleHRFZGl0OllzLnJlcGxhY2UocixpKX0pLG99LGUucHJvdG90eXBlLmRvUmVuYW1lPWZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBpLG89dGhpcy5maW5kRG9jdW1lbnRIaWdobGlnaHRzKGUsdCxyKS5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiBZcy5yZXBsYWNlKGUucmFuZ2Usbil9KSk7cmV0dXJue2NoYW5nZXM6KGk9e30saVtlLnVyaV09byxpKX19LGUucHJvdG90eXBlLnJlc29sdmVNb2R1bGVSZWZlcmVuY2U9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBwaCh0aGlzLHZvaWQgMCx2b2lkIDAsKGZ1bmN0aW9uKCl7dmFyIHIsaSxvLHMsYTtyZXR1cm4gdWgodGhpcywoZnVuY3Rpb24obCl7c3dpdGNoKGwubGFiZWwpe2Nhc2UgMDpyZXR1cm4gV2kodCwiZmlsZTovLyIpPyhyPWZ1bmN0aW9uKGUpe2lmKCJAIj09PWVbMF0pcmV0dXJuIGUuc3Vic3RyaW5nKDAsZS5pbmRleE9mKCIvIixlLmluZGV4T2YoIi8iKSsxKSk7cmV0dXJuIGUuc3Vic3RyaW5nKDAsZS5pbmRleE9mKCIvIikpfShlKSxpPW4ucmVzb2x2ZVJlZmVyZW5jZSgiLyIsdCksbz1GYyh0KSxbNCx0aGlzLnJlc29sdmVQYXRoVG9Nb2R1bGUocixvLGkpXSk6WzMsMl07Y2FzZSAxOmlmKHM9bC5zZW50KCkpcmV0dXJuIGE9ZS5zdWJzdHJpbmcoci5sZW5ndGgrMSksWzIsTmMocyxhKV07bC5sYWJlbD0yO2Nhc2UgMjpyZXR1cm5bMix2b2lkIDBdfX0pKX0pKX0sZS5wcm90b3R5cGUucmVzb2x2ZVJlbGF0aXZlUmVmZXJlbmNlPWZ1bmN0aW9uKGUsdCxuLHIpe3JldHVybiBwaCh0aGlzLHZvaWQgMCx2b2lkIDAsKGZ1bmN0aW9uKCl7dmFyIHIsaTtyZXR1cm4gdWgodGhpcywoZnVuY3Rpb24obyl7c3dpdGNoKG8ubGFiZWwpe2Nhc2UgMDpyZXR1cm4gcj1uLnJlc29sdmVSZWZlcmVuY2UoZSx0KSwifiI9PT1lWzBdJiYiLyIhPT1lWzFdJiZ0aGlzLmZpbGVTeXN0ZW1Qcm92aWRlcj8oZT1lLnN1YnN0cmluZygxKSxbNCx0aGlzLnJlc29sdmVNb2R1bGVSZWZlcmVuY2UoZSx0LG4pXSk6WzMsMl07Y2FzZSAxOnJldHVyblsyLG8uc2VudCgpfHxyXTtjYXNlIDI6cmV0dXJuIHRoaXMucmVzb2x2ZU1vZHVsZVJlZmVyZW5jZXM/KGk9cik/WzQsdGhpcy5maWxlRXhpc3RzKHIpXTpbMyw0XTpbMyw3XTtjYXNlIDM6aT1vLnNlbnQoKSxvLmxhYmVsPTQ7Y2FzZSA0OnJldHVybiBpP1syLHJdOlszLDVdO2Nhc2UgNTpyZXR1cm5bNCx0aGlzLnJlc29sdmVNb2R1bGVSZWZlcmVuY2UoZSx0LG4pXTtjYXNlIDY6cmV0dXJuWzIsby5zZW50KCl8fHJdO2Nhc2UgNzpyZXR1cm5bMixyXX19KSl9KSl9LGUucHJvdG90eXBlLnJlc29sdmVQYXRoVG9Nb2R1bGU9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBwaCh0aGlzLHZvaWQgMCx2b2lkIDAsKGZ1bmN0aW9uKCl7dmFyIHI7cmV0dXJuIHVoKHRoaXMsKGZ1bmN0aW9uKGkpe3N3aXRjaChpLmxhYmVsKXtjYXNlIDA6cmV0dXJuIHI9TmModCwibm9kZV9tb2R1bGVzIixlLCJwYWNrYWdlLmpzb24iKSxbNCx0aGlzLmZpbGVFeGlzdHMocildO2Nhc2UgMTpyZXR1cm4gaS5zZW50KCk/WzIsRmMocildOm4mJnQuc3RhcnRzV2l0aChuKSYmdC5sZW5ndGghPT1uLmxlbmd0aD9bMix0aGlzLnJlc29sdmVQYXRoVG9Nb2R1bGUoZSxGYyh0KSxuKV06WzIsdm9pZCAwXX19KSl9KSl9LGUucHJvdG90eXBlLmZpbGVFeGlzdHM9ZnVuY3Rpb24oZSl7cmV0dXJuIHBoKHRoaXMsdm9pZCAwLHZvaWQgMCwoZnVuY3Rpb24oKXt2YXIgdDtyZXR1cm4gdWgodGhpcywoZnVuY3Rpb24obil7c3dpdGNoKG4ubGFiZWwpe2Nhc2UgMDppZighdGhpcy5maWxlU3lzdGVtUHJvdmlkZXIpcmV0dXJuWzIsITFdO24ubGFiZWw9MTtjYXNlIDE6cmV0dXJuIG4udHJ5cy5wdXNoKFsxLDMsLDRdKSxbNCx0aGlzLmZpbGVTeXN0ZW1Qcm92aWRlci5zdGF0KGUpXTtjYXNlIDI6cmV0dXJuKHQ9bi5zZW50KCkpLnR5cGU9PT1TbC5Vbmtub3duJiYtMT09PXQuc2l6ZT9bMiwhMV06WzIsITBdO2Nhc2UgMzpyZXR1cm4gbi5zZW50KCksWzIsITFdO2Nhc2UgNDpyZXR1cm5bMl19fSkpfSkpfSxlfSgpO2Z1bmN0aW9uIHZoKGUsdCl7cmV0dXJuIGtzLmNyZWF0ZSh0LnBvc2l0aW9uQXQoZS5vZmZzZXQpLHQucG9zaXRpb25BdChlLmVuZCkpfWZ1bmN0aW9uIHloKGUpe2lmKGUudHlwZT09PWppLlNlbGVjdG9yKXJldHVybiBLYS5Xcml0ZTtpZihlIGluc3RhbmNlb2YgZW8mJmUucGFyZW50JiZlLnBhcmVudCBpbnN0YW5jZW9mIHBvJiZlLmlzQ3VzdG9tUHJvcGVydHkpcmV0dXJuIEthLldyaXRlO2lmKGUucGFyZW50KXN3aXRjaChlLnBhcmVudC50eXBlKXtjYXNlIGppLkZ1bmN0aW9uRGVjbGFyYXRpb246Y2FzZSBqaS5NaXhpbkRlY2xhcmF0aW9uOmNhc2UgamkuS2V5ZnJhbWU6Y2FzZSBqaS5WYXJpYWJsZURlY2xhcmF0aW9uOmNhc2UgamkuRnVuY3Rpb25QYXJhbWV0ZXI6cmV0dXJuIEthLldyaXRlfXJldHVybiBLYS5SZWFkfWZ1bmN0aW9uIHdoKGUpe3ZhciB0PWUudG9TdHJpbmcoMTYpO3JldHVybiAyIT09dC5sZW5ndGg/IjAiK3Q6dH12YXIgeGg9YnMoKSxTaD1Iby5XYXJuaW5nLENoPUhvLkVycm9yLGtoPUhvLklnbm9yZSxfaD1mdW5jdGlvbihlLHQsbil7dGhpcy5pZD1lLHRoaXMubWVzc2FnZT10LHRoaXMuZGVmYXVsdFZhbHVlPW59LEVoPWZ1bmN0aW9uKGUsdCxuKXt0aGlzLmlkPWUsdGhpcy5tZXNzYWdlPXQsdGhpcy5kZWZhdWx0VmFsdWU9bn0sUmg9e0FsbFZlbmRvclByZWZpeGVzOm5ldyBfaCgiY29tcGF0aWJsZVZlbmRvclByZWZpeGVzIix4aCgicnVsZS52ZW5kb3JwcmVmaXhlcy5hbGwiLCJXaGVuIHVzaW5nIGEgdmVuZG9yLXNwZWNpZmljIHByZWZpeCBtYWtlIHN1cmUgdG8gYWxzbyBpbmNsdWRlIGFsbCBvdGhlciB2ZW5kb3Itc3BlY2lmaWMgcHJvcGVydGllcyIpLGtoKSxJbmNsdWRlU3RhbmRhcmRQcm9wZXJ0eVdoZW5Vc2luZ1ZlbmRvclByZWZpeDpuZXcgX2goInZlbmRvclByZWZpeCIseGgoInJ1bGUuc3RhbmRhcmR2ZW5kb3JwcmVmaXguYWxsIiwiV2hlbiB1c2luZyBhIHZlbmRvci1zcGVjaWZpYyBwcmVmaXggYWxzbyBpbmNsdWRlIHRoZSBzdGFuZGFyZCBwcm9wZXJ0eSIpLFNoKSxEdXBsaWNhdGVEZWNsYXJhdGlvbnM6bmV3IF9oKCJkdXBsaWNhdGVQcm9wZXJ0aWVzIix4aCgicnVsZS5kdXBsaWNhdGVEZWNsYXJhdGlvbnMiLCJEbyBub3QgdXNlIGR1cGxpY2F0ZSBzdHlsZSBkZWZpbml0aW9ucyIpLGtoKSxFbXB0eVJ1bGVTZXQ6bmV3IF9oKCJlbXB0eVJ1bGVzIix4aCgicnVsZS5lbXB0eVJ1bGVTZXRzIiwiRG8gbm90IHVzZSBlbXB0eSBydWxlc2V0cyIpLFNoKSxJbXBvcnRTdGF0ZW1lbWVudDpuZXcgX2goImltcG9ydFN0YXRlbWVudCIseGgoInJ1bGUuaW1wb3J0RGlyZWN0aXZlIiwiSW1wb3J0IHN0YXRlbWVudHMgZG8gbm90IGxvYWQgaW4gcGFyYWxsZWwiKSxraCksQmV3YXJlT2ZCb3hNb2RlbFNpemU6bmV3IF9oKCJib3hNb2RlbCIseGgoInJ1bGUuYmV3YXJlT2ZCb3hNb2RlbFNpemUiLCJEbyBub3QgdXNlIHdpZHRoIG9yIGhlaWdodCB3aGVuIHVzaW5nIHBhZGRpbmcgb3IgYm9yZGVyIiksa2gpLFVuaXZlcnNhbFNlbGVjdG9yOm5ldyBfaCgidW5pdmVyc2FsU2VsZWN0b3IiLHhoKCJydWxlLnVuaXZlcnNhbFNlbGVjdG9yIiwiVGhlIHVuaXZlcnNhbCBzZWxlY3RvciAoKikgaXMga25vd24gdG8gYmUgc2xvdyIpLGtoKSxaZXJvV2l0aFVuaXQ6bmV3IF9oKCJ6ZXJvVW5pdHMiLHhoKCJydWxlLnplcm9XaWR0aFVuaXQiLCJObyB1bml0IGZvciB6ZXJvIG5lZWRlZCIpLGtoKSxSZXF1aXJlZFByb3BlcnRpZXNGb3JGb250RmFjZTpuZXcgX2goImZvbnRGYWNlUHJvcGVydGllcyIseGgoInJ1bGUuZm9udEZhY2VQcm9wZXJ0aWVzIiwiQGZvbnQtZmFjZSBydWxlIG11c3QgZGVmaW5lICdzcmMnIGFuZCAnZm9udC1mYW1pbHknIHByb3BlcnRpZXMiKSxTaCksSGV4Q29sb3JMZW5ndGg6bmV3IF9oKCJoZXhDb2xvckxlbmd0aCIseGgoInJ1bGUuaGV4Q29sb3IiLCJIZXggY29sb3JzIG11c3QgY29uc2lzdCBvZiB0aHJlZSwgZm91ciwgc2l4IG9yIGVpZ2h0IGhleCBudW1iZXJzIiksQ2gpLEFyZ3NJbkNvbG9yRnVuY3Rpb246bmV3IF9oKCJhcmd1bWVudHNJbkNvbG9yRnVuY3Rpb24iLHhoKCJydWxlLmNvbG9yRnVuY3Rpb24iLCJJbnZhbGlkIG51bWJlciBvZiBwYXJhbWV0ZXJzIiksQ2gpLFVua25vd25Qcm9wZXJ0eTpuZXcgX2goInVua25vd25Qcm9wZXJ0aWVzIix4aCgicnVsZS51bmtub3duUHJvcGVydHkiLCJVbmtub3duIHByb3BlcnR5LiIpLFNoKSxVbmtub3duQXRSdWxlczpuZXcgX2goInVua25vd25BdFJ1bGVzIix4aCgicnVsZS51bmtub3duQXRSdWxlcyIsIlVua25vd24gYXQtcnVsZS4iKSxTaCksSUVTdGFySGFjazpuZXcgX2goImllSGFjayIseGgoInJ1bGUuaWVIYWNrIiwiSUUgaGFja3MgYXJlIG9ubHkgbmVjZXNzYXJ5IHdoZW4gc3VwcG9ydGluZyBJRTcgYW5kIG9sZGVyIiksa2gpLFVua25vd25WZW5kb3JTcGVjaWZpY1Byb3BlcnR5Om5ldyBfaCgidW5rbm93blZlbmRvclNwZWNpZmljUHJvcGVydGllcyIseGgoInJ1bGUudW5rbm93blZlbmRvclNwZWNpZmljUHJvcGVydHkiLCJVbmtub3duIHZlbmRvciBzcGVjaWZpYyBwcm9wZXJ0eS4iKSxraCksUHJvcGVydHlJZ25vcmVkRHVlVG9EaXNwbGF5Om5ldyBfaCgicHJvcGVydHlJZ25vcmVkRHVlVG9EaXNwbGF5Iix4aCgicnVsZS5wcm9wZXJ0eUlnbm9yZWREdWVUb0Rpc3BsYXkiLCJQcm9wZXJ0eSBpcyBpZ25vcmVkIGR1ZSB0byB0aGUgZGlzcGxheS4iKSxTaCksQXZvaWRJbXBvcnRhbnQ6bmV3IF9oKCJpbXBvcnRhbnQiLHhoKCJydWxlLmF2b2lkSW1wb3J0YW50IiwiQXZvaWQgdXNpbmcgIWltcG9ydGFudC4gSXQgaXMgYW4gaW5kaWNhdGlvbiB0aGF0IHRoZSBzcGVjaWZpY2l0eSBvZiB0aGUgZW50aXJlIENTUyBoYXMgZ290dGVuIG91dCBvZiBjb250cm9sIGFuZCBuZWVkcyB0byBiZSByZWZhY3RvcmVkLiIpLGtoKSxBdm9pZEZsb2F0Om5ldyBfaCgiZmxvYXQiLHhoKCJydWxlLmF2b2lkRmxvYXQiLCJBdm9pZCB1c2luZyAnZmxvYXQnLiBGbG9hdHMgbGVhZCB0byBmcmFnaWxlIENTUyB0aGF0IGlzIGVhc3kgdG8gYnJlYWsgaWYgb25lIGFzcGVjdCBvZiB0aGUgbGF5b3V0IGNoYW5nZXMuIiksa2gpLEF2b2lkSWRTZWxlY3RvcjpuZXcgX2goImlkU2VsZWN0b3IiLHhoKCJydWxlLmF2b2lkSWRTZWxlY3RvciIsIlNlbGVjdG9ycyBzaG91bGQgbm90IGNvbnRhaW4gSURzIGJlY2F1c2UgdGhlc2UgcnVsZXMgYXJlIHRvbyB0aWdodGx5IGNvdXBsZWQgd2l0aCB0aGUgSFRNTC4iKSxraCl9LEZoPXtWYWxpZFByb3BlcnRpZXM6bmV3IEVoKCJ2YWxpZFByb3BlcnRpZXMiLHhoKCJydWxlLnZhbGlkUHJvcGVydGllcyIsIkEgbGlzdCBvZiBwcm9wZXJ0aWVzIHRoYXQgYXJlIG5vdCB2YWxpZGF0ZWQgYWdhaW5zdCB0aGUgYHVua25vd25Qcm9wZXJ0aWVzYCBydWxlLiIpLFtdKX0sTmg9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUpe3ZvaWQgMD09PWUmJihlPXt9KSx0aGlzLmNvbmY9ZX1yZXR1cm4gZS5wcm90b3R5cGUuZ2V0UnVsZT1mdW5jdGlvbihlKXtpZih0aGlzLmNvbmYuaGFzT3duUHJvcGVydHkoZS5pZCkpe3ZhciB0PWZ1bmN0aW9uKGUpe3N3aXRjaChlKXtjYXNlImlnbm9yZSI6cmV0dXJuIEhvLklnbm9yZTtjYXNlIndhcm5pbmciOnJldHVybiBIby5XYXJuaW5nO2Nhc2UiZXJyb3IiOnJldHVybiBIby5FcnJvcn1yZXR1cm4gbnVsbH0odGhpcy5jb25mW2UuaWRdKTtpZih0KXJldHVybiB0fXJldHVybiBlLmRlZmF1bHRWYWx1ZX0sZS5wcm90b3R5cGUuZ2V0U2V0dGluZz1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5jb25mW2UuaWRdfSxlfSgpO3ZhciBEaD1icygpLFRoPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlKXt0aGlzLmNzc0RhdGFNYW5hZ2VyPWV9cmV0dXJuIGUucHJvdG90eXBlLmRvQ29kZUFjdGlvbnM9ZnVuY3Rpb24oZSx0LG4scil7cmV0dXJuIHRoaXMuZG9Db2RlQWN0aW9uczIoZSx0LG4scikubWFwKChmdW5jdGlvbih0KXt2YXIgbj10LmVkaXQmJnQuZWRpdC5kb2N1bWVudENoYW5nZXMmJnQuZWRpdC5kb2N1bWVudENoYW5nZXNbMF07cmV0dXJuIEpzLmNyZWF0ZSh0LnRpdGxlLCJfY3NzLmFwcGx5Q29kZUFjdGlvbiIsZS51cmksZS52ZXJzaW9uLG4mJm4uZWRpdHMpfSkpfSxlLnByb3RvdHlwZS5kb0NvZGVBY3Rpb25zMj1mdW5jdGlvbihlLHQsbixyKXt2YXIgaT1bXTtpZihuLmRpYWdub3N0aWNzKWZvcih2YXIgbz0wLHM9bi5kaWFnbm9zdGljcztvPHMubGVuZ3RoO28rKyl7dmFyIGE9c1tvXTt0aGlzLmFwcGVuZEZpeGVzRm9yTWFya2VyKGUscixhLGkpfXJldHVybiBpfSxlLnByb3RvdHlwZS5nZXRGaXhlc0ZvclVua25vd25Qcm9wZXJ0eT1mdW5jdGlvbihlLHQsbixyKXt2YXIgaT10LmdldE5hbWUoKSxvPVtdO3RoaXMuY3NzRGF0YU1hbmFnZXIuZ2V0UHJvcGVydGllcygpLmZvckVhY2goKGZ1bmN0aW9uKGUpe3ZhciB0PWZ1bmN0aW9uKGUsdCxuKXt2b2lkIDA9PT1uJiYobj00KTt2YXIgcj1NYXRoLmFicyhlLmxlbmd0aC10Lmxlbmd0aCk7aWYocj5uKXJldHVybiAwO3ZhciBpLG8scz1bXSxhPVtdO2ZvcihpPTA7aTx0Lmxlbmd0aCsxOysraSlhLnB1c2goMCk7Zm9yKGk9MDtpPGUubGVuZ3RoKzE7KytpKXMucHVzaChhKTtmb3IoaT0xO2k8ZS5sZW5ndGgrMTsrK2kpZm9yKG89MTtvPHQubGVuZ3RoKzE7KytvKWVbaS0xXT09PXRbby0xXT9zW2ldW29dPXNbaS0xXVtvLTFdKzE6c1tpXVtvXT1NYXRoLm1heChzW2ktMV1bb10sc1tpXVtvLTFdKTtyZXR1cm4gc1tlLmxlbmd0aF1bdC5sZW5ndGhdLU1hdGguc3FydChyKX0oaSxlLm5hbWUpO3Q+PWkubGVuZ3RoLzImJm8ucHVzaCh7cHJvcGVydHk6ZS5uYW1lLHNjb3JlOnR9KX0pKSxvLnNvcnQoKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQuc2NvcmUtZS5zY29yZXx8ZS5wcm9wZXJ0eS5sb2NhbGVDb21wYXJlKHQucHJvcGVydHkpfSkpO2Zvcih2YXIgcz0zLGE9MCxsPW87YTxsLmxlbmd0aDthKyspe3ZhciBjPWxbYV0ucHJvcGVydHksaD1EaCgiY3NzLmNvZGVhY3Rpb24ucmVuYW1lIiwiUmVuYW1lIHRvICd7MH0nIixjKSxkPVlzLnJlcGxhY2Uobi5yYW5nZSxjKSxwPXZhLmNyZWF0ZShlLnVyaSxlLnZlcnNpb24pLHU9e2RvY3VtZW50Q2hhbmdlczpbaWEuY3JlYXRlKHAsW2RdKV19LG09bmwuY3JlYXRlKGgsdSxaYS5RdWlja0ZpeCk7aWYobS5kaWFnbm9zdGljcz1bbl0sci5wdXNoKG0pLC0tczw9MClyZXR1cm59fSxlLnByb3RvdHlwZS5hcHBlbmRGaXhlc0Zvck1hcmtlcj1mdW5jdGlvbihlLHQsbixyKXtpZihuLmNvZGU9PT1SaC5Vbmtub3duUHJvcGVydHkuaWQpZm9yKHZhciBpPWUub2Zmc2V0QXQobi5yYW5nZS5zdGFydCksbz1lLm9mZnNldEF0KG4ucmFuZ2UuZW5kKSxzPVhpKHQsaSksYT1zLmxlbmd0aC0xO2E+PTA7YS0tKXt2YXIgbD1zW2FdO2lmKGwgaW5zdGFuY2VvZiBjbyl7dmFyIGM9bC5nZXRQcm9wZXJ0eSgpO2lmKGMmJmMub2Zmc2V0PT09aSYmYy5lbmQ9PT1vKXJldHVybiB2b2lkIHRoaXMuZ2V0Rml4ZXNGb3JVbmtub3duUHJvcGVydHkoZSxjLG4scil9fX0sZX0oKSxBaD1mdW5jdGlvbihlKXt0aGlzLmZ1bGxQcm9wZXJ0eU5hbWU9ZS5nZXRGdWxsUHJvcGVydHlOYW1lKCkudG9Mb3dlckNhc2UoKSx0aGlzLm5vZGU9ZX07ZnVuY3Rpb24gTWgoZSx0LG4scil7dmFyIGk9ZVt0XTtpLnZhbHVlPW4sbiYmKGJjKGkucHJvcGVydGllcyxyKXx8aS5wcm9wZXJ0aWVzLnB1c2gocikpfWZ1bmN0aW9uIHpoKGUsdCxuLHIpeyJ0b3AiPT09dHx8InJpZ2h0Ij09PXR8fCJib3R0b20iPT09dHx8ImxlZnQiPT09dD9NaChlLHQsbixyKTpmdW5jdGlvbihlLHQsbil7TWgoZSwidG9wIix0LG4pLE1oKGUsInJpZ2h0Iix0LG4pLE1oKGUsImJvdHRvbSIsdCxuKSxNaChlLCJsZWZ0Iix0LG4pfShlLG4scil9ZnVuY3Rpb24gSWgoZSx0LG4pe3N3aXRjaCh0Lmxlbmd0aCl7Y2FzZSAxOnpoKGUsdm9pZCAwLHRbMF0sbik7YnJlYWs7Y2FzZSAyOnpoKGUsInRvcCIsdFswXSxuKSx6aChlLCJib3R0b20iLHRbMF0sbiksemgoZSwicmlnaHQiLHRbMV0sbiksemgoZSwibGVmdCIsdFsxXSxuKTticmVhaztjYXNlIDM6emgoZSwidG9wIix0WzBdLG4pLHpoKGUsInJpZ2h0Iix0WzFdLG4pLHpoKGUsImxlZnQiLHRbMV0sbiksemgoZSwiYm90dG9tIix0WzJdLG4pO2JyZWFrO2Nhc2UgNDp6aChlLCJ0b3AiLHRbMF0sbiksemgoZSwicmlnaHQiLHRbMV0sbiksemgoZSwiYm90dG9tIix0WzJdLG4pLHpoKGUsImxlZnQiLHRbM10sbil9fWZ1bmN0aW9uIFBoKGUsdCl7Zm9yKHZhciBuPTAscj10O248ci5sZW5ndGg7bisrKXt2YXIgaT1yW25dO2lmKGUubWF0Y2hlcyhpKSlyZXR1cm4hMH1yZXR1cm4hMX1mdW5jdGlvbiBMaChlLHQpe3JldHVybiB2b2lkIDA9PT10JiYodD0hMCksKCF0fHwhUGgoZSxbImluaXRpYWwiLCJ1bnNldCJdKSkmJjAhPT1wYXJzZUZsb2F0KGUuZ2V0VGV4dCgpKX1mdW5jdGlvbiBPaChlLHQpe3JldHVybiB2b2lkIDA9PT10JiYodD0hMCksZS5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiBMaChlLHQpfSkpfWZ1bmN0aW9uIFdoKGUsdCl7cmV0dXJuIHZvaWQgMD09PXQmJih0PSEwKSwhUGgoZSxbIm5vbmUiLCJoaWRkZW4iXSkmJighdHx8IVBoKGUsWyJpbml0aWFsIiwidW5zZXQiXSkpfWZ1bmN0aW9uIFZoKGUsdCl7cmV0dXJuIHZvaWQgMD09PXQmJih0PSEwKSxlLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIFdoKGUsdCl9KSl9ZnVuY3Rpb24gVWgoZSl7dmFyIHQ9ZS5nZXRDaGlsZHJlbigpO2lmKDE9PT10Lmxlbmd0aClyZXR1cm4gTGgoaT10WzBdKSYmV2goaSk7Zm9yKHZhciBuPTAscj10O248ci5sZW5ndGg7bisrKXt2YXIgaTtpZighTGgoaT1yW25dLCExKXx8IVdoKGksITEpKXJldHVybiExfXJldHVybiEwfXZhciBCaD1icygpLEtoPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSgpe3RoaXMuZGF0YT17fX1yZXR1cm4gZS5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzLmRhdGFbZV07cnx8KHI9e25vZGVzOltdLG5hbWVzOltdfSx0aGlzLmRhdGFbZV09ciksci5uYW1lcy5wdXNoKHQpLG4mJnIubm9kZXMucHVzaChuKX0sZX0oKSxqaD1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSx0LG4pe3ZhciByPXRoaXM7dGhpcy5jc3NEYXRhTWFuYWdlcj1uLHRoaXMud2FybmluZ3M9W10sdGhpcy5zZXR0aW5ncz10LHRoaXMuZG9jdW1lbnRUZXh0PWUuZ2V0VGV4dCgpLHRoaXMua2V5ZnJhbWVzPW5ldyBLaCx0aGlzLnZhbGlkUHJvcGVydGllcz17fTt2YXIgaT10LmdldFNldHRpbmcoRmguVmFsaWRQcm9wZXJ0aWVzKTtBcnJheS5pc0FycmF5KGkpJiZpLmZvckVhY2goKGZ1bmN0aW9uKGUpe2lmKCJzdHJpbmciPT10eXBlb2YgZSl7dmFyIHQ9ZS50cmltKCkudG9Mb3dlckNhc2UoKTt0Lmxlbmd0aCYmKHIudmFsaWRQcm9wZXJ0aWVzW3RdPSEwKX19KSl9cmV0dXJuIGUuZW50cmllcz1mdW5jdGlvbih0LG4scixpLG8pe3ZhciBzPW5ldyBlKG4scixpKTtyZXR1cm4gdC5hY2NlcHRWaXNpdG9yKHMpLHMuY29tcGxldGVWYWxpZGF0aW9ucygpLHMuZ2V0RW50cmllcyhvKX0sZS5wcm90b3R5cGUuaXNWYWxpZFByb3BlcnR5RGVjbGFyYXRpb249ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5mdWxsUHJvcGVydHlOYW1lO3JldHVybiB0aGlzLnZhbGlkUHJvcGVydGllc1t0XX0sZS5wcm90b3R5cGUuZmV0Y2g9ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG49W10scj0wLGk9ZTtyPGkubGVuZ3RoO3IrKyl7dmFyIG89aVtyXTtvLmZ1bGxQcm9wZXJ0eU5hbWU9PT10JiZuLnB1c2gobyl9cmV0dXJuIG59LGUucHJvdG90eXBlLmZldGNoV2l0aFZhbHVlPWZ1bmN0aW9uKGUsdCxuKXtmb3IodmFyIHI9W10saT0wLG89ZTtpPG8ubGVuZ3RoO2krKyl7dmFyIHM9b1tpXTtpZihzLmZ1bGxQcm9wZXJ0eU5hbWU9PT10KXt2YXIgYT1zLm5vZGUuZ2V0VmFsdWUoKTthJiZ0aGlzLmZpbmRWYWx1ZUluRXhwcmVzc2lvbihhLG4pJiZyLnB1c2gocyl9fXJldHVybiByfSxlLnByb3RvdHlwZS5maW5kVmFsdWVJbkV4cHJlc3Npb249ZnVuY3Rpb24oZSx0KXt2YXIgbj0hMTtyZXR1cm4gZS5hY2NlcHQoKGZ1bmN0aW9uKGUpe3JldHVybiBlLnR5cGU9PT1qaS5JZGVudGlmaWVyJiZlLm1hdGNoZXModCkmJihuPSEwKSwhbn0pKSxufSxlLnByb3RvdHlwZS5nZXRFbnRyaWVzPWZ1bmN0aW9uKGUpe3JldHVybiB2b2lkIDA9PT1lJiYoZT1Iby5XYXJuaW5nfEhvLkVycm9yKSx0aGlzLndhcm5pbmdzLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIDAhPSh0LmdldExldmVsKCkmZSl9KSl9LGUucHJvdG90eXBlLmFkZEVudHJ5PWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uZXcgbXMoZSx0LHRoaXMuc2V0dGluZ3MuZ2V0UnVsZSh0KSxuKTt0aGlzLndhcm5pbmdzLnB1c2gocil9LGUucHJvdG90eXBlLmdldE1pc3NpbmdOYW1lcz1mdW5jdGlvbihlLHQpe2Zvcih2YXIgbj1lLnNsaWNlKDApLHI9MDtyPHQubGVuZ3RoO3IrKyl7dmFyIGk9bi5pbmRleE9mKHRbcl0pOy0xIT09aSYmKG5baV09bnVsbCl9dmFyIG89bnVsbDtmb3Iocj0wO3I8bi5sZW5ndGg7cisrKXt2YXIgcz1uW3JdO3MmJihvPW51bGw9PT1vP0JoKCJuYW1lbGlzdC5zaW5nbGUiLCInezB9JyIscyk6QmgoIm5hbWVsaXN0LmNvbmNhdGVuYXRlZCIsInswfSwgJ3sxfSciLG8scykpfXJldHVybiBvfSxlLnByb3RvdHlwZS52aXNpdE5vZGU9ZnVuY3Rpb24oZSl7c3dpdGNoKGUudHlwZSl7Y2FzZSBqaS5Vbmtub3duQXRSdWxlOnJldHVybiB0aGlzLnZpc2l0VW5rbm93bkF0UnVsZShlKTtjYXNlIGppLktleWZyYW1lOnJldHVybiB0aGlzLnZpc2l0S2V5ZnJhbWUoZSk7Y2FzZSBqaS5Gb250RmFjZTpyZXR1cm4gdGhpcy52aXNpdEZvbnRGYWNlKGUpO2Nhc2UgamkuUnVsZXNldDpyZXR1cm4gdGhpcy52aXNpdFJ1bGVTZXQoZSk7Y2FzZSBqaS5TaW1wbGVTZWxlY3RvcjpyZXR1cm4gdGhpcy52aXNpdFNpbXBsZVNlbGVjdG9yKGUpO2Nhc2UgamkuRnVuY3Rpb246cmV0dXJuIHRoaXMudmlzaXRGdW5jdGlvbihlKTtjYXNlIGppLk51bWVyaWNWYWx1ZTpyZXR1cm4gdGhpcy52aXNpdE51bWVyaWNWYWx1ZShlKTtjYXNlIGppLkltcG9ydDpyZXR1cm4gdGhpcy52aXNpdEltcG9ydChlKTtjYXNlIGppLkhleENvbG9yVmFsdWU6cmV0dXJuIHRoaXMudmlzaXRIZXhDb2xvclZhbHVlKGUpO2Nhc2UgamkuUHJpbzpyZXR1cm4gdGhpcy52aXNpdFByaW8oZSk7Y2FzZSBqaS5JZGVudGlmaWVyU2VsZWN0b3I6cmV0dXJuIHRoaXMudmlzaXRJZGVudGlmaWVyU2VsZWN0b3IoZSl9cmV0dXJuITB9LGUucHJvdG90eXBlLmNvbXBsZXRlVmFsaWRhdGlvbnM9ZnVuY3Rpb24oKXt0aGlzLnZhbGlkYXRlS2V5ZnJhbWVzKCl9LGUucHJvdG90eXBlLnZpc2l0VW5rbm93bkF0UnVsZT1mdW5jdGlvbihlKXt2YXIgdD1lLmdldENoaWxkKDApO3JldHVybiEhdCYmKCF0aGlzLmNzc0RhdGFNYW5hZ2VyLmdldEF0RGlyZWN0aXZlKHQuZ2V0VGV4dCgpKSYmKHRoaXMuYWRkRW50cnkodCxSaC5Vbmtub3duQXRSdWxlcywiVW5rbm93biBhdCBydWxlICIuY29uY2F0KHQuZ2V0VGV4dCgpKSksITApKX0sZS5wcm90b3R5cGUudmlzaXRLZXlmcmFtZT1mdW5jdGlvbihlKXt2YXIgdD1lLmdldEtleXdvcmQoKTtpZighdClyZXR1cm4hMTt2YXIgbj10LmdldFRleHQoKTtyZXR1cm4gdGhpcy5rZXlmcmFtZXMuYWRkKGUuZ2V0TmFtZSgpLG4sIkBrZXlmcmFtZXMiIT09bj90Om51bGwpLCEwfSxlLnByb3RvdHlwZS52YWxpZGF0ZUtleWZyYW1lcz1mdW5jdGlvbigpe3ZhciBlPVsiQC13ZWJraXQta2V5ZnJhbWVzIiwiQC1tb3ota2V5ZnJhbWVzIiwiQC1vLWtleWZyYW1lcyJdO2Zvcih2YXIgdCBpbiB0aGlzLmtleWZyYW1lcy5kYXRhKXt2YXIgbj10aGlzLmtleWZyYW1lcy5kYXRhW3RdLm5hbWVzLHI9LTE9PT1uLmluZGV4T2YoIkBrZXlmcmFtZXMiKTtpZihyfHwxIT09bi5sZW5ndGgpe3ZhciBpPXRoaXMuZ2V0TWlzc2luZ05hbWVzKGUsbik7aWYoaXx8cilmb3IodmFyIG89MCxzPXRoaXMua2V5ZnJhbWVzLmRhdGFbdF0ubm9kZXM7bzxzLmxlbmd0aDtvKyspe3ZhciBhPXNbb107aWYocil7dmFyIGw9QmgoImtleWZyYW1lcy5zdGFuZGFyZHJ1bGUubWlzc2luZyIsIkFsd2F5cyBkZWZpbmUgc3RhbmRhcmQgcnVsZSAnQGtleWZyYW1lcycgd2hlbiBkZWZpbmluZyBrZXlmcmFtZXMuIik7dGhpcy5hZGRFbnRyeShhLFJoLkluY2x1ZGVTdGFuZGFyZFByb3BlcnR5V2hlblVzaW5nVmVuZG9yUHJlZml4LGwpfWlmKGkpe2w9QmgoImtleWZyYW1lcy52ZW5kb3JzcGVjaWZpYy5taXNzaW5nIiwiQWx3YXlzIGluY2x1ZGUgYWxsIHZlbmRvciBzcGVjaWZpYyBydWxlczogTWlzc2luZzogezB9IixpKTt0aGlzLmFkZEVudHJ5KGEsUmguQWxsVmVuZG9yUHJlZml4ZXMsbCl9fX19cmV0dXJuITB9LGUucHJvdG90eXBlLnZpc2l0U2ltcGxlU2VsZWN0b3I9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5kb2N1bWVudFRleHQuY2hhckF0KGUub2Zmc2V0KTtyZXR1cm4gMT09PWUubGVuZ3RoJiYiKiI9PT10JiZ0aGlzLmFkZEVudHJ5KGUsUmguVW5pdmVyc2FsU2VsZWN0b3IpLCEwfSxlLnByb3RvdHlwZS52aXNpdElkZW50aWZpZXJTZWxlY3Rvcj1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5hZGRFbnRyeShlLFJoLkF2b2lkSWRTZWxlY3RvciksITB9LGUucHJvdG90eXBlLnZpc2l0SW1wb3J0PWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmFkZEVudHJ5KGUsUmguSW1wb3J0U3RhdGVtZW1lbnQpLCEwfSxlLnByb3RvdHlwZS52aXNpdFJ1bGVTZXQ9ZnVuY3Rpb24odCl7dmFyIG49dC5nZXREZWNsYXJhdGlvbnMoKTtpZighbilyZXR1cm4hMTtuLmhhc0NoaWxkcmVuKCl8fHRoaXMuYWRkRW50cnkodC5nZXRTZWxlY3RvcnMoKSxSaC5FbXB0eVJ1bGVTZXQpO2Zvcih2YXIgcj1bXSxpPTAsbz1uLmdldENoaWxkcmVuKCk7aTxvLmxlbmd0aDtpKyspeyh2PW9baV0paW5zdGFuY2VvZiBjbyYmci5wdXNoKG5ldyBBaCh2KSl9dmFyIHM9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PXt0b3A6e3ZhbHVlOiExLHByb3BlcnRpZXM6W119LHJpZ2h0Ont2YWx1ZTohMSxwcm9wZXJ0aWVzOltdfSxib3R0b206e3ZhbHVlOiExLHByb3BlcnRpZXM6W119LGxlZnQ6e3ZhbHVlOiExLHByb3BlcnRpZXM6W119fSxuPTAscj1lO248ci5sZW5ndGg7bisrKXt2YXIgaT1yW25dLG89aS5ub2RlLnZhbHVlO2lmKHZvaWQgMCE9PW8pc3dpdGNoKGkuZnVsbFByb3BlcnR5TmFtZSl7Y2FzZSJib3gtc2l6aW5nIjpyZXR1cm57dG9wOnt2YWx1ZTohMSxwcm9wZXJ0aWVzOltdfSxyaWdodDp7dmFsdWU6ITEscHJvcGVydGllczpbXX0sYm90dG9tOnt2YWx1ZTohMSxwcm9wZXJ0aWVzOltdfSxsZWZ0Ont2YWx1ZTohMSxwcm9wZXJ0aWVzOltdfX07Y2FzZSJ3aWR0aCI6dC53aWR0aD1pO2JyZWFrO2Nhc2UiaGVpZ2h0Ijp0LmhlaWdodD1pO2JyZWFrO2RlZmF1bHQ6dmFyIHM9aS5mdWxsUHJvcGVydHlOYW1lLnNwbGl0KCItIik7c3dpdGNoKHNbMF0pe2Nhc2UiYm9yZGVyIjpzd2l0Y2goc1sxXSl7Y2FzZSB2b2lkIDA6Y2FzZSJ0b3AiOmNhc2UicmlnaHQiOmNhc2UiYm90dG9tIjpjYXNlImxlZnQiOnN3aXRjaChzWzJdKXtjYXNlIHZvaWQgMDp6aCh0LHNbMV0sVWgobyksaSk7YnJlYWs7Y2FzZSJ3aWR0aCI6emgodCxzWzFdLExoKG8sITEpLGkpO2JyZWFrO2Nhc2Uic3R5bGUiOnpoKHQsc1sxXSxXaChvLCEwKSxpKX1icmVhaztjYXNlIndpZHRoIjpJaCh0LE9oKG8uZ2V0Q2hpbGRyZW4oKSwhMSksaSk7YnJlYWs7Y2FzZSJzdHlsZSI6SWgodCxWaChvLmdldENoaWxkcmVuKCksITApLGkpfWJyZWFrO2Nhc2UicGFkZGluZyI6MT09PXMubGVuZ3RoP0loKHQsT2goby5nZXRDaGlsZHJlbigpLCEwKSxpKTp6aCh0LHNbMV0sTGgobywhMCksaSl9fX1yZXR1cm4gdH0ocik7aWYocy53aWR0aCl7dmFyIGE9W107aWYocy5yaWdodC52YWx1ZSYmKGE9dmMoYSxzLnJpZ2h0LnByb3BlcnRpZXMpKSxzLmxlZnQudmFsdWUmJihhPXZjKGEscy5sZWZ0LnByb3BlcnRpZXMpKSwwIT09YS5sZW5ndGgpe2Zvcih2YXIgbD0wLGM9YTtsPGMubGVuZ3RoO2wrKyl7dmFyIGg9Y1tsXTt0aGlzLmFkZEVudHJ5KGgubm9kZSxSaC5CZXdhcmVPZkJveE1vZGVsU2l6ZSl9dGhpcy5hZGRFbnRyeShzLndpZHRoLm5vZGUsUmguQmV3YXJlT2ZCb3hNb2RlbFNpemUpfX1pZihzLmhlaWdodCl7YT1bXTtpZihzLnRvcC52YWx1ZSYmKGE9dmMoYSxzLnRvcC5wcm9wZXJ0aWVzKSkscy5ib3R0b20udmFsdWUmJihhPXZjKGEscy5ib3R0b20ucHJvcGVydGllcykpLDAhPT1hLmxlbmd0aCl7Zm9yKHZhciBkPTAscD1hO2Q8cC5sZW5ndGg7ZCsrKXtoPXBbZF07dGhpcy5hZGRFbnRyeShoLm5vZGUsUmguQmV3YXJlT2ZCb3hNb2RlbFNpemUpfXRoaXMuYWRkRW50cnkocy5oZWlnaHQubm9kZSxSaC5CZXdhcmVPZkJveE1vZGVsU2l6ZSl9fXZhciB1PXRoaXMuZmV0Y2hXaXRoVmFsdWUociwiZGlzcGxheSIsImlubGluZS1ibG9jayIpO2lmKHUubGVuZ3RoPjApZm9yKHZhciBtPXRoaXMuZmV0Y2gociwiZmxvYXQiKSxmPTA7ZjxtLmxlbmd0aDtmKyspe3ZhciBnPW1bZl0ubm9kZTsodz1nLmdldFZhbHVlKCkpJiYhdy5tYXRjaGVzKCJub25lIikmJnRoaXMuYWRkRW50cnkoZyxSaC5Qcm9wZXJ0eUlnbm9yZWREdWVUb0Rpc3BsYXksQmgoInJ1bGUucHJvcGVydHlJZ25vcmVkRHVlVG9EaXNwbGF5SW5saW5lQmxvY2siLCJpbmxpbmUtYmxvY2sgaXMgaWdub3JlZCBkdWUgdG8gdGhlIGZsb2F0LiBJZiAnZmxvYXQnIGhhcyBhIHZhbHVlIG90aGVyIHRoYW4gJ25vbmUnLCB0aGUgYm94IGlzIGZsb2F0ZWQgYW5kICdkaXNwbGF5JyBpcyB0cmVhdGVkIGFzICdibG9jayciKSl9aWYoKHU9dGhpcy5mZXRjaFdpdGhWYWx1ZShyLCJkaXNwbGF5IiwiYmxvY2siKSkubGVuZ3RoPjApZm9yKG09dGhpcy5mZXRjaChyLCJ2ZXJ0aWNhbC1hbGlnbiIpLGY9MDtmPG0ubGVuZ3RoO2YrKyl0aGlzLmFkZEVudHJ5KG1bZl0ubm9kZSxSaC5Qcm9wZXJ0eUlnbm9yZWREdWVUb0Rpc3BsYXksQmgoInJ1bGUucHJvcGVydHlJZ25vcmVkRHVlVG9EaXNwbGF5QmxvY2siLCJQcm9wZXJ0eSBpcyBpZ25vcmVkIGR1ZSB0byB0aGUgZGlzcGxheS4gV2l0aCAnZGlzcGxheTogYmxvY2snLCB2ZXJ0aWNhbC1hbGlnbiBzaG91bGQgbm90IGJlIHVzZWQuIikpO3ZhciBiPXRoaXMuZmV0Y2gociwiZmxvYXQiKTtmb3IoZj0wO2Y8Yi5sZW5ndGg7ZisrKXt2YXIgdj1iW2ZdO3RoaXMuaXNWYWxpZFByb3BlcnR5RGVjbGFyYXRpb24odil8fHRoaXMuYWRkRW50cnkodi5ub2RlLFJoLkF2b2lkRmxvYXQpfWZvcih2YXIgeT0wO3k8ci5sZW5ndGg7eSsrKXt2YXIgdztpZigiYmFja2dyb3VuZCIhPT0odj1yW3ldKS5mdWxsUHJvcGVydHlOYW1lJiYhdGhpcy52YWxpZFByb3BlcnRpZXNbdi5mdWxsUHJvcGVydHlOYW1lXSlpZigodz12Lm5vZGUuZ2V0VmFsdWUoKSkmJiItIiE9PXRoaXMuZG9jdW1lbnRUZXh0LmNoYXJBdCh3Lm9mZnNldCkpe3ZhciB4PXRoaXMuZmV0Y2gocix2LmZ1bGxQcm9wZXJ0eU5hbWUpO2lmKHgubGVuZ3RoPjEpZm9yKHZhciBTPTA7Uzx4Lmxlbmd0aDtTKyspe3ZhciBDPXhbU10ubm9kZS5nZXRWYWx1ZSgpO0MmJiItIiE9PXRoaXMuZG9jdW1lbnRUZXh0LmNoYXJBdChDLm9mZnNldCkmJnhbU10hPT12JiZ0aGlzLmFkZEVudHJ5KHYubm9kZSxSaC5EdXBsaWNhdGVEZWNsYXJhdGlvbnMpfX19aWYoIXQuZ2V0U2VsZWN0b3JzKCkubWF0Y2hlcygiOmV4cG9ydCIpKXtmb3IodmFyIGs9bmV3IEtoLF89ITEsRT0wLFI9cjtFPFIubGVuZ3RoO0UrKyl7dmFyIEY9KHY9UltFXSkubm9kZTtpZih0aGlzLmlzQ1NTRGVjbGFyYXRpb24oRikpe3ZhciBOPXYuZnVsbFByb3BlcnR5TmFtZSxEPU4uY2hhckF0KDApO2lmKCItIj09PUQpe2lmKCItIiE9PU4uY2hhckF0KDEpKXt0aGlzLmNzc0RhdGFNYW5hZ2VyLmlzS25vd25Qcm9wZXJ0eShOKXx8dGhpcy52YWxpZFByb3BlcnRpZXNbTl18fHRoaXMuYWRkRW50cnkoRi5nZXRQcm9wZXJ0eSgpLFJoLlVua25vd25WZW5kb3JTcGVjaWZpY1Byb3BlcnR5KTt2YXIgVD1GLmdldE5vblByZWZpeGVkUHJvcGVydHlOYW1lKCk7ay5hZGQoVCxOLEYuZ2V0UHJvcGVydHkoKSl9fWVsc2V7dmFyIEE9TjsiKiIhPT1EJiYiXyIhPT1EfHwodGhpcy5hZGRFbnRyeShGLmdldFByb3BlcnR5KCksUmguSUVTdGFySGFjayksTj1OLnN1YnN0cigxKSksdGhpcy5jc3NEYXRhTWFuYWdlci5pc0tub3duUHJvcGVydHkoQSl8fHRoaXMuY3NzRGF0YU1hbmFnZXIuaXNLbm93blByb3BlcnR5KE4pfHx0aGlzLnZhbGlkUHJvcGVydGllc1tOXXx8dGhpcy5hZGRFbnRyeShGLmdldFByb3BlcnR5KCksUmguVW5rbm93blByb3BlcnR5LEJoKCJwcm9wZXJ0eS51bmtub3ducHJvcGVydHkuZGV0YWlsZWQiLCJVbmtub3duIHByb3BlcnR5OiAnezB9JyIsRi5nZXRGdWxsUHJvcGVydHlOYW1lKCkpKSxrLmFkZChOLE4sbnVsbCl9fWVsc2UgXz0hMH1pZighXylmb3IodmFyIE0gaW4gay5kYXRhKXt2YXIgej1rLmRhdGFbTV0sST16Lm5hbWVzLFA9dGhpcy5jc3NEYXRhTWFuYWdlci5pc1N0YW5kYXJkUHJvcGVydHkoTSkmJi0xPT09SS5pbmRleE9mKE0pO2lmKFB8fDEhPT1JLmxlbmd0aCl7Zm9yKHZhciBMPVtdLE89KHk9MCxlLnByZWZpeGVzLmxlbmd0aCk7eTxPO3krKyl7dmFyIFc9ZS5wcmVmaXhlc1t5XTt0aGlzLmNzc0RhdGFNYW5hZ2VyLmlzU3RhbmRhcmRQcm9wZXJ0eShXK00pJiZMLnB1c2goVytNKX12YXIgVj10aGlzLmdldE1pc3NpbmdOYW1lcyhMLEkpO2lmKFZ8fFApZm9yKHZhciBVPTAsQj16Lm5vZGVzO1U8Qi5sZW5ndGg7VSsrKXt2YXIgSz1CW1VdO2lmKFApe3ZhciBqPUJoKCJwcm9wZXJ0eS5zdGFuZGFyZC5taXNzaW5nIiwiQWxzbyBkZWZpbmUgdGhlIHN0YW5kYXJkIHByb3BlcnR5ICd7MH0nIGZvciBjb21wYXRpYmlsaXR5IixNKTt0aGlzLmFkZEVudHJ5KEssUmguSW5jbHVkZVN0YW5kYXJkUHJvcGVydHlXaGVuVXNpbmdWZW5kb3JQcmVmaXgsail9aWYoVil7aj1CaCgicHJvcGVydHkudmVuZG9yc3BlY2lmaWMubWlzc2luZyIsIkFsd2F5cyBpbmNsdWRlIGFsbCB2ZW5kb3Igc3BlY2lmaWMgcHJvcGVydGllczogTWlzc2luZzogezB9IixWKTt0aGlzLmFkZEVudHJ5KEssUmguQWxsVmVuZG9yUHJlZml4ZXMsail9fX19fXJldHVybiEwfSxlLnByb3RvdHlwZS52aXNpdFByaW89ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuYWRkRW50cnkoZSxSaC5Bdm9pZEltcG9ydGFudCksITB9LGUucHJvdG90eXBlLnZpc2l0TnVtZXJpY1ZhbHVlPWZ1bmN0aW9uKGUpe3ZhciB0PWUuZmluZFBhcmVudChqaS5GdW5jdGlvbik7aWYodCYmImNhbGMiPT09dC5nZXROYW1lKCkpcmV0dXJuITA7dmFyIG49ZS5maW5kUGFyZW50KGppLkRlY2xhcmF0aW9uKTtpZihuJiZuLmdldFZhbHVlKCkpe3ZhciByPWUuZ2V0VmFsdWUoKTtpZighci51bml0fHwtMT09PWNjLmxlbmd0aC5pbmRleE9mKHIudW5pdC50b0xvd2VyQ2FzZSgpKSlyZXR1cm4hMDswPT09cGFyc2VGbG9hdChyLnZhbHVlKSYmci51bml0JiYhdGhpcy52YWxpZFByb3BlcnRpZXNbbi5nZXRGdWxsUHJvcGVydHlOYW1lKCldJiZ0aGlzLmFkZEVudHJ5KGUsUmguWmVyb1dpdGhVbml0KX1yZXR1cm4hMH0sZS5wcm90b3R5cGUudmlzaXRGb250RmFjZT1mdW5jdGlvbihlKXt2YXIgdD1lLmdldERlY2xhcmF0aW9ucygpO2lmKCF0KXJldHVybiExO2Zvcih2YXIgbj0hMSxyPSExLGk9ITEsbz0wLHM9dC5nZXRDaGlsZHJlbigpO288cy5sZW5ndGg7bysrKXt2YXIgYT1zW29dO2lmKHRoaXMuaXNDU1NEZWNsYXJhdGlvbihhKSl7dmFyIGw9YS5nZXRQcm9wZXJ0eSgpLmdldE5hbWUoKS50b0xvd2VyQ2FzZSgpOyJzcmMiPT09bCYmKG49ITApLCJmb250LWZhbWlseSI9PT1sJiYocj0hMCl9ZWxzZSBpPSEwfXJldHVybiBpfHxuJiZyfHx0aGlzLmFkZEVudHJ5KGUsUmguUmVxdWlyZWRQcm9wZXJ0aWVzRm9yRm9udEZhY2UpLCEwfSxlLnByb3RvdHlwZS5pc0NTU0RlY2xhcmF0aW9uPWZ1bmN0aW9uKGUpe2lmKGUgaW5zdGFuY2VvZiBjbyl7aWYoIWUuZ2V0VmFsdWUoKSlyZXR1cm4hMTt2YXIgdD1lLmdldFByb3BlcnR5KCk7aWYoIXQpcmV0dXJuITE7dmFyIG49dC5nZXRJZGVudGlmaWVyKCk7cmV0dXJuISghbnx8bi5jb250YWluc0ludGVycG9sYXRpb24oKSl9cmV0dXJuITF9LGUucHJvdG90eXBlLnZpc2l0SGV4Q29sb3JWYWx1ZT1mdW5jdGlvbihlKXt2YXIgdD1lLmxlbmd0aDtyZXR1cm4gOSE9PXQmJjchPT10JiY1IT09dCYmNCE9PXQmJnRoaXMuYWRkRW50cnkoZSxSaC5IZXhDb2xvckxlbmd0aCksITF9LGUucHJvdG90eXBlLnZpc2l0RnVuY3Rpb249ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5nZXROYW1lKCkudG9Mb3dlckNhc2UoKSxuPS0xLHI9MDtzd2l0Y2godCl7Y2FzZSJyZ2IoIjpjYXNlImhzbCgiOm49MzticmVhaztjYXNlInJnYmEoIjpjYXNlImhzbGEoIjpuPTR9cmV0dXJuLTEhPT1uJiYoZS5nZXRBcmd1bWVudHMoKS5hY2NlcHQoKGZ1bmN0aW9uKGUpe3JldHVybiEoZSBpbnN0YW5jZW9mIGpvKXx8KHIrPTEsITEpfSkpLHIhPT1uJiZ0aGlzLmFkZEVudHJ5KGUsUmguQXJnc0luQ29sb3JGdW5jdGlvbikpLCEwfSxlLnByZWZpeGVzPVsiLW1zLSIsIi1tb3otIiwiLW8tIiwiLXdlYmtpdC0iXSxlfSgpLHFoPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlKXt0aGlzLmNzc0RhdGFNYW5hZ2VyPWV9cmV0dXJuIGUucHJvdG90eXBlLmNvbmZpZ3VyZT1mdW5jdGlvbihlKXt0aGlzLnNldHRpbmdzPWV9LGUucHJvdG90eXBlLmRvVmFsaWRhdGlvbj1mdW5jdGlvbihlLHQsbil7aWYodm9pZCAwPT09biYmKG49dGhpcy5zZXR0aW5ncyksbiYmITE9PT1uLnZhbGlkYXRlKXJldHVybltdO3ZhciByPVtdO3IucHVzaC5hcHBseShyLGZzLmVudHJpZXModCkpLHIucHVzaC5hcHBseShyLGpoLmVudHJpZXModCxlLG5ldyBOaChuJiZuLmxpbnQpLHRoaXMuY3NzRGF0YU1hbmFnZXIpKTt2YXIgaT1bXTtmb3IodmFyIG8gaW4gUmgpaS5wdXNoKFJoW29dLmlkKTtyZXR1cm4gci5maWx0ZXIoKGZ1bmN0aW9uKGUpe3JldHVybiBlLmdldExldmVsKCkhPT1Iby5JZ25vcmV9KSkubWFwKChmdW5jdGlvbih0KXt2YXIgbj1rcy5jcmVhdGUoZS5wb3NpdGlvbkF0KHQuZ2V0T2Zmc2V0KCkpLGUucG9zaXRpb25BdCh0LmdldE9mZnNldCgpK3QuZ2V0TGVuZ3RoKCkpKSxyPWUubGFuZ3VhZ2VJZDtyZXR1cm57Y29kZTp0LmdldFJ1bGUoKS5pZCxzb3VyY2U6cixtZXNzYWdlOnQuZ2V0TWVzc2FnZSgpLHNldmVyaXR5OnQuZ2V0TGV2ZWwoKT09PUhvLldhcm5pbmc/QnMuV2FybmluZzpCcy5FcnJvcixyYW5nZTpufX0pKX0sZX0oKSwkaD1mdW5jdGlvbigpe3ZhciBlPWZ1bmN0aW9uKHQsbil7cmV0dXJuKGU9T2JqZWN0LnNldFByb3RvdHlwZU9mfHx7X19wcm90b19fOltdfWluc3RhbmNlb2YgQXJyYXkmJmZ1bmN0aW9uKGUsdCl7ZS5fX3Byb3RvX189dH18fGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuIGluIHQpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsbikmJihlW25dPXRbbl0pfSkodCxuKX07cmV0dXJuIGZ1bmN0aW9uKHQsbil7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIG4mJm51bGwhPT1uKXRocm93IG5ldyBUeXBlRXJyb3IoIkNsYXNzIGV4dGVuZHMgdmFsdWUgIitTdHJpbmcobikrIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsIik7ZnVuY3Rpb24gcigpe3RoaXMuY29uc3RydWN0b3I9dH1lKHQsbiksdC5wcm90b3R5cGU9bnVsbD09PW4/T2JqZWN0LmNyZWF0ZShuKTooci5wcm90b3R5cGU9bi5wcm90b3R5cGUsbmV3IHIpfX0oKSxIaD0iLyIuY2hhckNvZGVBdCgwKSxHaD0iXG4iLmNoYXJDb2RlQXQoMCksSmg9IlxyIi5jaGFyQ29kZUF0KDApLFhoPSJcZiIuY2hhckNvZGVBdCgwKSxZaD0iJCIuY2hhckNvZGVBdCgwKSxaaD0iIyIuY2hhckNvZGVBdCgwKSxRaD0ieyIuY2hhckNvZGVBdCgwKSxlZD0iPSIuY2hhckNvZGVBdCgwKSx0ZD0iISIuY2hhckNvZGVBdCgwKSxuZD0iPCIuY2hhckNvZGVBdCgwKSxyZD0iPiIuY2hhckNvZGVBdCgwKSxpZD0iLiIuY2hhckNvZGVBdCgwKSxvZD1qci5DdXN0b21Ub2tlbixzZD1vZCsrLGFkPW9kKys7b2QrKzt2YXIgbGQ9b2QrKyxjZD1vZCsrLGhkPW9kKyssZGQ9b2QrKyxwZD1vZCsrO29kKys7dmFyIHVkPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoKXtyZXR1cm4gbnVsbCE9PWUmJmUuYXBwbHkodGhpcyxhcmd1bWVudHMpfHx0aGlzfXJldHVybiAkaCh0LGUpLHQucHJvdG90eXBlLnNjYW5OZXh0PWZ1bmN0aW9uKHQpe2lmKHRoaXMuc3RyZWFtLmFkdmFuY2VJZkNoYXIoWWgpKXt2YXIgbj1bIiQiXTtpZih0aGlzLmlkZW50KG4pKXJldHVybiB0aGlzLmZpbmlzaFRva2VuKHQsc2Qsbi5qb2luKCIiKSk7dGhpcy5zdHJlYW0uZ29CYWNrVG8odCl9cmV0dXJuIHRoaXMuc3RyZWFtLmFkdmFuY2VJZkNoYXJzKFtaaCxRaF0pP3RoaXMuZmluaXNoVG9rZW4odCxhZCk6dGhpcy5zdHJlYW0uYWR2YW5jZUlmQ2hhcnMoW2VkLGVkXSk/dGhpcy5maW5pc2hUb2tlbih0LGxkKTp0aGlzLnN0cmVhbS5hZHZhbmNlSWZDaGFycyhbdGQsZWRdKT90aGlzLmZpbmlzaFRva2VuKHQsY2QpOnRoaXMuc3RyZWFtLmFkdmFuY2VJZkNoYXIobmQpP3RoaXMuc3RyZWFtLmFkdmFuY2VJZkNoYXIoZWQpP3RoaXMuZmluaXNoVG9rZW4odCxkZCk6dGhpcy5maW5pc2hUb2tlbih0LGpyLkRlbGltKTp0aGlzLnN0cmVhbS5hZHZhbmNlSWZDaGFyKHJkKT90aGlzLnN0cmVhbS5hZHZhbmNlSWZDaGFyKGVkKT90aGlzLmZpbmlzaFRva2VuKHQsaGQpOnRoaXMuZmluaXNoVG9rZW4odCxqci5EZWxpbSk6dGhpcy5zdHJlYW0uYWR2YW5jZUlmQ2hhcnMoW2lkLGlkLGlkXSk/dGhpcy5maW5pc2hUb2tlbih0LHBkKTplLnByb3RvdHlwZS5zY2FuTmV4dC5jYWxsKHRoaXMsdCl9LHQucHJvdG90eXBlLmNvbW1lbnQ9ZnVuY3Rpb24oKXtyZXR1cm4hIWUucHJvdG90eXBlLmNvbW1lbnQuY2FsbCh0aGlzKXx8ISh0aGlzLmluVVJMfHwhdGhpcy5zdHJlYW0uYWR2YW5jZUlmQ2hhcnMoW0hoLEhoXSkpJiYodGhpcy5zdHJlYW0uYWR2YW5jZVdoaWxlQ2hhcigoZnVuY3Rpb24oZSl7c3dpdGNoKGUpe2Nhc2UgR2g6Y2FzZSBKaDpjYXNlIFhoOnJldHVybiExO2RlZmF1bHQ6cmV0dXJuITB9fSkpLCEwKX0sdH0oT2kpLG1kPWJzKCksZmQ9ZnVuY3Rpb24oZSx0KXt0aGlzLmlkPWUsdGhpcy5tZXNzYWdlPXR9LGdkPXtGcm9tRXhwZWN0ZWQ6bmV3IGZkKCJzY3NzLWZyb21leHBlY3RlZCIsbWQoImV4cGVjdGVkLmZyb20iLCInZnJvbScgZXhwZWN0ZWQiKSksVGhyb3VnaE9yVG9FeHBlY3RlZDpuZXcgZmQoInNjc3MtdGhyb3VnaGV4cGVjdGVkIixtZCgiZXhwZWN0ZWQudGhyb3VnaCIsIid0aHJvdWdoJyBvciAndG8nIGV4cGVjdGVkIikpLEluRXhwZWN0ZWQ6bmV3IGZkKCJzY3NzLWZyb21leHBlY3RlZCIsbWQoImV4cGVjdGVkLmluIiwiJ2luJyBleHBlY3RlZCIpKX0sYmQ9ZnVuY3Rpb24oKXt2YXIgZT1mdW5jdGlvbih0LG4pe3JldHVybihlPU9iamVjdC5zZXRQcm90b3R5cGVPZnx8e19fcHJvdG9fXzpbXX1pbnN0YW5jZW9mIEFycmF5JiZmdW5jdGlvbihlLHQpe2UuX19wcm90b19fPXR9fHxmdW5jdGlvbihlLHQpe2Zvcih2YXIgbiBpbiB0KU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LG4pJiYoZVtuXT10W25dKX0pKHQsbil9O3JldHVybiBmdW5jdGlvbih0LG4pe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBuJiZudWxsIT09bil0aHJvdyBuZXcgVHlwZUVycm9yKCJDbGFzcyBleHRlbmRzIHZhbHVlICIrU3RyaW5nKG4pKyIgaXMgbm90IGEgY29uc3RydWN0b3Igb3IgbnVsbCIpO2Z1bmN0aW9uIHIoKXt0aGlzLmNvbnN0cnVjdG9yPXR9ZSh0LG4pLHQucHJvdG90eXBlPW51bGw9PT1uP09iamVjdC5jcmVhdGUobik6KHIucHJvdG90eXBlPW4ucHJvdG90eXBlLG5ldyByKX19KCksdmQ9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCgpe3JldHVybiBlLmNhbGwodGhpcyxuZXcgdWQpfHx0aGlzfXJldHVybiBiZCh0LGUpLHQucHJvdG90eXBlLl9wYXJzZVN0eWxlc2hlZXRTdGF0ZW1lbnQ9ZnVuY3Rpb24odCl7cmV0dXJuIHZvaWQgMD09PXQmJih0PSExKSx0aGlzLnBlZWsoanIuQXRLZXl3b3JkKT90aGlzLl9wYXJzZVdhcm5BbmREZWJ1ZygpfHx0aGlzLl9wYXJzZUNvbnRyb2xTdGF0ZW1lbnQoKXx8dGhpcy5fcGFyc2VNaXhpbkRlY2xhcmF0aW9uKCl8fHRoaXMuX3BhcnNlTWl4aW5Db250ZW50KCl8fHRoaXMuX3BhcnNlTWl4aW5SZWZlcmVuY2UoKXx8dGhpcy5fcGFyc2VGdW5jdGlvbkRlY2xhcmF0aW9uKCl8fHRoaXMuX3BhcnNlRm9yd2FyZCgpfHx0aGlzLl9wYXJzZVVzZSgpfHx0aGlzLl9wYXJzZVJ1bGVzZXQodCl8fGUucHJvdG90eXBlLl9wYXJzZVN0eWxlc2hlZXRBdFN0YXRlbWVudC5jYWxsKHRoaXMsdCk6dGhpcy5fcGFyc2VSdWxlc2V0KCEwKXx8dGhpcy5fcGFyc2VWYXJpYWJsZURlY2xhcmF0aW9uKCl9LHQucHJvdG90eXBlLl9wYXJzZUltcG9ydD1mdW5jdGlvbigpe2lmKCF0aGlzLnBlZWtLZXl3b3JkKCJAaW1wb3J0IikpcmV0dXJuIG51bGw7dmFyIGU9dGhpcy5jcmVhdGUoUm8pO2lmKHRoaXMuY29uc3VtZVRva2VuKCksIWUuYWRkQ2hpbGQodGhpcy5fcGFyc2VVUklMaXRlcmFsKCkpJiYhZS5hZGRDaGlsZCh0aGlzLl9wYXJzZVN0cmluZ0xpdGVyYWwoKSkpcmV0dXJuIHRoaXMuZmluaXNoKGUsZmEuVVJJT3JTdHJpbmdFeHBlY3RlZCk7Zm9yKDt0aGlzLmFjY2VwdChqci5Db21tYSk7KWlmKCFlLmFkZENoaWxkKHRoaXMuX3BhcnNlVVJJTGl0ZXJhbCgpKSYmIWUuYWRkQ2hpbGQodGhpcy5fcGFyc2VTdHJpbmdMaXRlcmFsKCkpKXJldHVybiB0aGlzLmZpbmlzaChlLGZhLlVSSU9yU3RyaW5nRXhwZWN0ZWQpO3JldHVybiB0aGlzLnBlZWsoanIuU2VtaUNvbG9uKXx8dGhpcy5wZWVrKGpyLkVPRil8fGUuc2V0TWVkaWFsaXN0KHRoaXMuX3BhcnNlTWVkaWFRdWVyeUxpc3QoKSksdGhpcy5maW5pc2goZSl9LHQucHJvdG90eXBlLl9wYXJzZVZhcmlhYmxlRGVjbGFyYXRpb249ZnVuY3Rpb24oZSl7aWYodm9pZCAwPT09ZSYmKGU9W10pLCF0aGlzLnBlZWsoc2QpKXJldHVybiBudWxsO3ZhciB0PXRoaXMuY3JlYXRlKHRzKTtpZighdC5zZXRWYXJpYWJsZSh0aGlzLl9wYXJzZVZhcmlhYmxlKCkpKXJldHVybiBudWxsO2lmKCF0aGlzLmFjY2VwdChqci5Db2xvbikpcmV0dXJuIHRoaXMuZmluaXNoKHQsZmEuQ29sb25FeHBlY3RlZCk7aWYodGhpcy5wcmV2VG9rZW4mJih0LmNvbG9uUG9zaXRpb249dGhpcy5wcmV2VG9rZW4ub2Zmc2V0KSwhdC5zZXRWYWx1ZSh0aGlzLl9wYXJzZUV4cHIoKSkpcmV0dXJuIHRoaXMuZmluaXNoKHQsZmEuVmFyaWFibGVWYWx1ZUV4cGVjdGVkLFtdLGUpO2Zvcig7dGhpcy5wZWVrKGpyLkV4Y2xhbWF0aW9uKTspaWYodC5hZGRDaGlsZCh0aGlzLl90cnlQYXJzZVByaW8oKSkpO2Vsc2V7aWYodGhpcy5jb25zdW1lVG9rZW4oKSwhdGhpcy5wZWVrUmVnRXhwKGpyLklkZW50LC9eKGRlZmF1bHR8Z2xvYmFsKSQvKSlyZXR1cm4gdGhpcy5maW5pc2godCxmYS5Vbmtub3duS2V5d29yZCk7dGhpcy5jb25zdW1lVG9rZW4oKX1yZXR1cm4gdGhpcy5wZWVrKGpyLlNlbWlDb2xvbikmJih0LnNlbWljb2xvblBvc2l0aW9uPXRoaXMudG9rZW4ub2Zmc2V0KSx0aGlzLmZpbmlzaCh0KX0sdC5wcm90b3R5cGUuX3BhcnNlTWVkaWFDb25kaXRpb249ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcGFyc2VJbnRlcnBvbGF0aW9uKCl8fGUucHJvdG90eXBlLl9wYXJzZU1lZGlhQ29uZGl0aW9uLmNhbGwodGhpcyl9LHQucHJvdG90eXBlLl9wYXJzZU1lZGlhRmVhdHVyZU5hbWU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcGFyc2VNb2R1bGVNZW1iZXIoKXx8dGhpcy5fcGFyc2VGdW5jdGlvbigpfHx0aGlzLl9wYXJzZUlkZW50KCl8fHRoaXMuX3BhcnNlVmFyaWFibGUoKX0sdC5wcm90b3R5cGUuX3BhcnNlS2V5ZnJhbWVTZWxlY3Rvcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLl90cnlQYXJzZUtleWZyYW1lU2VsZWN0b3IoKXx8dGhpcy5fcGFyc2VDb250cm9sU3RhdGVtZW50KHRoaXMuX3BhcnNlS2V5ZnJhbWVTZWxlY3Rvci5iaW5kKHRoaXMpKXx8dGhpcy5fcGFyc2VWYXJpYWJsZURlY2xhcmF0aW9uKCl8fHRoaXMuX3BhcnNlTWl4aW5Db250ZW50KCl9LHQucHJvdG90eXBlLl9wYXJzZVZhcmlhYmxlPWZ1bmN0aW9uKCl7aWYoIXRoaXMucGVlayhzZCkpcmV0dXJuIG51bGw7dmFyIGU9dGhpcy5jcmVhdGUocnMpO3JldHVybiB0aGlzLmNvbnN1bWVUb2tlbigpLGV9LHQucHJvdG90eXBlLl9wYXJzZU1vZHVsZU1lbWJlcj1mdW5jdGlvbigpe3ZhciBlPXRoaXMubWFyaygpLHQ9dGhpcy5jcmVhdGUodXMpO3JldHVybiB0LnNldElkZW50aWZpZXIodGhpcy5fcGFyc2VJZGVudChbJGkuTW9kdWxlXSkpP3RoaXMuaGFzV2hpdGVzcGFjZSgpfHwhdGhpcy5hY2NlcHREZWxpbSgiLiIpfHx0aGlzLmhhc1doaXRlc3BhY2UoKT8odGhpcy5yZXN0b3JlQXRNYXJrKGUpLG51bGwpOnQuYWRkQ2hpbGQodGhpcy5fcGFyc2VWYXJpYWJsZSgpfHx0aGlzLl9wYXJzZUZ1bmN0aW9uKCkpP3Q6dGhpcy5maW5pc2godCxmYS5JZGVudGlmaWVyT3JWYXJpYWJsZUV4cGVjdGVkKTpudWxsfSx0LnByb3RvdHlwZS5fcGFyc2VJZGVudD1mdW5jdGlvbihlKXt2YXIgdD10aGlzO2lmKCF0aGlzLnBlZWsoanIuSWRlbnQpJiYhdGhpcy5wZWVrKGFkKSYmIXRoaXMucGVla0RlbGltKCItIikpcmV0dXJuIG51bGw7dmFyIG49dGhpcy5jcmVhdGUoZW8pO24ucmVmZXJlbmNlVHlwZXM9ZSxuLmlzQ3VzdG9tUHJvcGVydHk9dGhpcy5wZWVrUmVnRXhwKGpyLklkZW50LC9eLS0vKTtmb3IodmFyIHIsaT0hMTsodGhpcy5hY2NlcHQoanIuSWRlbnQpfHxuLmFkZENoaWxkKChyPXZvaWQgMCxyPXQubWFyaygpLHQuYWNjZXB0RGVsaW0oIi0iKSYmKHQuaGFzV2hpdGVzcGFjZSgpfHx0LmFjY2VwdERlbGltKCItIiksdC5oYXNXaGl0ZXNwYWNlKCkpPyh0LnJlc3RvcmVBdE1hcmsociksbnVsbCk6dC5fcGFyc2VJbnRlcnBvbGF0aW9uKCkpKXx8aSYmdGhpcy5hY2NlcHRSZWdleHAoL15bXHctXS8pKSYmKGk9ITAsIXRoaXMuaGFzV2hpdGVzcGFjZSgpKTspO3JldHVybiBpP3RoaXMuZmluaXNoKG4pOm51bGx9LHQucHJvdG90eXBlLl9wYXJzZVRlcm1FeHByZXNzaW9uPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3BhcnNlTW9kdWxlTWVtYmVyKCl8fHRoaXMuX3BhcnNlVmFyaWFibGUoKXx8dGhpcy5fcGFyc2VTZWxlY3RvckNvbWJpbmF0b3IoKXx8ZS5wcm90b3R5cGUuX3BhcnNlVGVybUV4cHJlc3Npb24uY2FsbCh0aGlzKX0sdC5wcm90b3R5cGUuX3BhcnNlSW50ZXJwb2xhdGlvbj1mdW5jdGlvbigpe2lmKHRoaXMucGVlayhhZCkpe3ZhciBlPXRoaXMuY3JlYXRlKG5zKTtyZXR1cm4gdGhpcy5jb25zdW1lVG9rZW4oKSxlLmFkZENoaWxkKHRoaXMuX3BhcnNlRXhwcigpKXx8dGhpcy5fcGFyc2VTZWxlY3RvckNvbWJpbmF0b3IoKT90aGlzLmFjY2VwdChqci5DdXJseVIpP3RoaXMuZmluaXNoKGUpOnRoaXMuZmluaXNoKGUsZmEuUmlnaHRDdXJseUV4cGVjdGVkKTp0aGlzLmFjY2VwdChqci5DdXJseVIpP3RoaXMuZmluaXNoKGUpOnRoaXMuZmluaXNoKGUsZmEuRXhwcmVzc2lvbkV4cGVjdGVkKX1yZXR1cm4gbnVsbH0sdC5wcm90b3R5cGUuX3BhcnNlT3BlcmF0b3I9ZnVuY3Rpb24oKXtpZih0aGlzLnBlZWsobGQpfHx0aGlzLnBlZWsoY2QpfHx0aGlzLnBlZWsoaGQpfHx0aGlzLnBlZWsoZGQpfHx0aGlzLnBlZWtEZWxpbSgiPiIpfHx0aGlzLnBlZWtEZWxpbSgiPCIpfHx0aGlzLnBlZWtJZGVudCgiYW5kIil8fHRoaXMucGVla0lkZW50KCJvciIpfHx0aGlzLnBlZWtEZWxpbSgiJSIpKXt2YXIgdD10aGlzLmNyZWF0ZU5vZGUoamkuT3BlcmF0b3IpO3JldHVybiB0aGlzLmNvbnN1bWVUb2tlbigpLHRoaXMuZmluaXNoKHQpfXJldHVybiBlLnByb3RvdHlwZS5fcGFyc2VPcGVyYXRvci5jYWxsKHRoaXMpfSx0LnByb3RvdHlwZS5fcGFyc2VVbmFyeU9wZXJhdG9yPWZ1bmN0aW9uKCl7aWYodGhpcy5wZWVrSWRlbnQoIm5vdCIpKXt2YXIgdD10aGlzLmNyZWF0ZShZaSk7cmV0dXJuIHRoaXMuY29uc3VtZVRva2VuKCksdGhpcy5maW5pc2godCl9cmV0dXJuIGUucHJvdG90eXBlLl9wYXJzZVVuYXJ5T3BlcmF0b3IuY2FsbCh0aGlzKX0sdC5wcm90b3R5cGUuX3BhcnNlUnVsZVNldERlY2xhcmF0aW9uPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucGVlayhqci5BdEtleXdvcmQpP3RoaXMuX3BhcnNlS2V5ZnJhbWUoKXx8dGhpcy5fcGFyc2VJbXBvcnQoKXx8dGhpcy5fcGFyc2VNZWRpYSghMCl8fHRoaXMuX3BhcnNlRm9udEZhY2UoKXx8dGhpcy5fcGFyc2VXYXJuQW5kRGVidWcoKXx8dGhpcy5fcGFyc2VDb250cm9sU3RhdGVtZW50KCl8fHRoaXMuX3BhcnNlRnVuY3Rpb25EZWNsYXJhdGlvbigpfHx0aGlzLl9wYXJzZUV4dGVuZHMoKXx8dGhpcy5fcGFyc2VNaXhpblJlZmVyZW5jZSgpfHx0aGlzLl9wYXJzZU1peGluQ29udGVudCgpfHx0aGlzLl9wYXJzZU1peGluRGVjbGFyYXRpb24oKXx8dGhpcy5fcGFyc2VSdWxlc2V0KCEwKXx8dGhpcy5fcGFyc2VTdXBwb3J0cyghMCl8fGUucHJvdG90eXBlLl9wYXJzZVJ1bGVTZXREZWNsYXJhdGlvbkF0U3RhdGVtZW50LmNhbGwodGhpcyk6dGhpcy5fcGFyc2VWYXJpYWJsZURlY2xhcmF0aW9uKCl8fHRoaXMuX3RyeVBhcnNlUnVsZXNldCghMCl8fGUucHJvdG90eXBlLl9wYXJzZVJ1bGVTZXREZWNsYXJhdGlvbi5jYWxsKHRoaXMpfSx0LnByb3RvdHlwZS5fcGFyc2VEZWNsYXJhdGlvbj1mdW5jdGlvbihlKXt2YXIgdD10aGlzLl90cnlQYXJzZUN1c3RvbVByb3BlcnR5RGVjbGFyYXRpb24oZSk7aWYodClyZXR1cm4gdDt2YXIgbj10aGlzLmNyZWF0ZShjbyk7aWYoIW4uc2V0UHJvcGVydHkodGhpcy5fcGFyc2VQcm9wZXJ0eSgpKSlyZXR1cm4gbnVsbDtpZighdGhpcy5hY2NlcHQoanIuQ29sb24pKXJldHVybiB0aGlzLmZpbmlzaChuLGZhLkNvbG9uRXhwZWN0ZWQsW2pyLkNvbG9uXSxlfHxbanIuU2VtaUNvbG9uXSk7dGhpcy5wcmV2VG9rZW4mJihuLmNvbG9uUG9zaXRpb249dGhpcy5wcmV2VG9rZW4ub2Zmc2V0KTt2YXIgcj0hMTtpZihuLnNldFZhbHVlKHRoaXMuX3BhcnNlRXhwcigpKSYmKHI9ITAsbi5hZGRDaGlsZCh0aGlzLl9wYXJzZVByaW8oKSkpLHRoaXMucGVlayhqci5DdXJseUwpKW4uc2V0TmVzdGVkUHJvcGVydGllcyh0aGlzLl9wYXJzZU5lc3RlZFByb3BlcnRpZXMoKSk7ZWxzZSBpZighcilyZXR1cm4gdGhpcy5maW5pc2gobixmYS5Qcm9wZXJ0eVZhbHVlRXhwZWN0ZWQpO3JldHVybiB0aGlzLnBlZWsoanIuU2VtaUNvbG9uKSYmKG4uc2VtaWNvbG9uUG9zaXRpb249dGhpcy50b2tlbi5vZmZzZXQpLHRoaXMuZmluaXNoKG4pfSx0LnByb3RvdHlwZS5fcGFyc2VOZXN0ZWRQcm9wZXJ0aWVzPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5jcmVhdGUoa28pO3JldHVybiB0aGlzLl9wYXJzZUJvZHkoZSx0aGlzLl9wYXJzZURlY2xhcmF0aW9uLmJpbmQodGhpcykpfSx0LnByb3RvdHlwZS5fcGFyc2VFeHRlbmRzPWZ1bmN0aW9uKCl7aWYodGhpcy5wZWVrS2V5d29yZCgiQGV4dGVuZCIpKXt2YXIgZT10aGlzLmNyZWF0ZShpcyk7aWYodGhpcy5jb25zdW1lVG9rZW4oKSwhZS5nZXRTZWxlY3RvcnMoKS5hZGRDaGlsZCh0aGlzLl9wYXJzZVNpbXBsZVNlbGVjdG9yKCkpKXJldHVybiB0aGlzLmZpbmlzaChlLGZhLlNlbGVjdG9yRXhwZWN0ZWQpO2Zvcig7dGhpcy5hY2NlcHQoanIuQ29tbWEpOyllLmdldFNlbGVjdG9ycygpLmFkZENoaWxkKHRoaXMuX3BhcnNlU2ltcGxlU2VsZWN0b3IoKSk7cmV0dXJuIHRoaXMuYWNjZXB0KGpyLkV4Y2xhbWF0aW9uKSYmIXRoaXMuYWNjZXB0SWRlbnQoIm9wdGlvbmFsIik/dGhpcy5maW5pc2goZSxmYS5Vbmtub3duS2V5d29yZCk6dGhpcy5maW5pc2goZSl9cmV0dXJuIG51bGx9LHQucHJvdG90eXBlLl9wYXJzZVNpbXBsZVNlbGVjdG9yQm9keT1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9wYXJzZVNlbGVjdG9yQ29tYmluYXRvcigpfHx0aGlzLl9wYXJzZVNlbGVjdG9yUGxhY2Vob2xkZXIoKXx8ZS5wcm90b3R5cGUuX3BhcnNlU2ltcGxlU2VsZWN0b3JCb2R5LmNhbGwodGhpcyl9LHQucHJvdG90eXBlLl9wYXJzZVNlbGVjdG9yQ29tYmluYXRvcj1mdW5jdGlvbigpe2lmKHRoaXMucGVla0RlbGltKCImIikpe3ZhciBlPXRoaXMuY3JlYXRlTm9kZShqaS5TZWxlY3RvckNvbWJpbmF0b3IpO2Zvcih0aGlzLmNvbnN1bWVUb2tlbigpOyF0aGlzLmhhc1doaXRlc3BhY2UoKSYmKHRoaXMuYWNjZXB0RGVsaW0oIi0iKXx8dGhpcy5hY2NlcHQoanIuTnVtKXx8dGhpcy5hY2NlcHQoanIuRGltZW5zaW9uKXx8ZS5hZGRDaGlsZCh0aGlzLl9wYXJzZUlkZW50KCkpfHx0aGlzLmFjY2VwdERlbGltKCImIikpOyk7cmV0dXJuIHRoaXMuZmluaXNoKGUpfXJldHVybiBudWxsfSx0LnByb3RvdHlwZS5fcGFyc2VTZWxlY3RvclBsYWNlaG9sZGVyPWZ1bmN0aW9uKCl7aWYodGhpcy5wZWVrRGVsaW0oIiUiKSl7dmFyIGU9dGhpcy5jcmVhdGVOb2RlKGppLlNlbGVjdG9yUGxhY2Vob2xkZXIpO3JldHVybiB0aGlzLmNvbnN1bWVUb2tlbigpLHRoaXMuX3BhcnNlSWRlbnQoKSx0aGlzLmZpbmlzaChlKX1pZih0aGlzLnBlZWtLZXl3b3JkKCJAYXQtcm9vdCIpKXtlPXRoaXMuY3JlYXRlTm9kZShqaS5TZWxlY3RvclBsYWNlaG9sZGVyKTtyZXR1cm4gdGhpcy5jb25zdW1lVG9rZW4oKSx0aGlzLmZpbmlzaChlKX1yZXR1cm4gbnVsbH0sdC5wcm90b3R5cGUuX3BhcnNlRWxlbWVudE5hbWU9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLm1hcmsoKSxuPWUucHJvdG90eXBlLl9wYXJzZUVsZW1lbnROYW1lLmNhbGwodGhpcyk7cmV0dXJuIG4mJiF0aGlzLmhhc1doaXRlc3BhY2UoKSYmdGhpcy5wZWVrKGpyLlBhcmVudGhlc2lzTCk/KHRoaXMucmVzdG9yZUF0TWFyayh0KSxudWxsKTpufSx0LnByb3RvdHlwZS5fdHJ5UGFyc2VQc2V1ZG9JZGVudGlmaWVyPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3BhcnNlSW50ZXJwb2xhdGlvbigpfHxlLnByb3RvdHlwZS5fdHJ5UGFyc2VQc2V1ZG9JZGVudGlmaWVyLmNhbGwodGhpcyl9LHQucHJvdG90eXBlLl9wYXJzZVdhcm5BbmREZWJ1Zz1mdW5jdGlvbigpe2lmKCF0aGlzLnBlZWtLZXl3b3JkKCJAZGVidWciKSYmIXRoaXMucGVla0tleXdvcmQoIkB3YXJuIikmJiF0aGlzLnBlZWtLZXl3b3JkKCJAZXJyb3IiKSlyZXR1cm4gbnVsbDt2YXIgZT10aGlzLmNyZWF0ZU5vZGUoamkuRGVidWcpO3JldHVybiB0aGlzLmNvbnN1bWVUb2tlbigpLGUuYWRkQ2hpbGQodGhpcy5fcGFyc2VFeHByKCkpLHRoaXMuZmluaXNoKGUpfSx0LnByb3RvdHlwZS5fcGFyc2VDb250cm9sU3RhdGVtZW50PWZ1bmN0aW9uKGUpe3JldHVybiB2b2lkIDA9PT1lJiYoZT10aGlzLl9wYXJzZVJ1bGVTZXREZWNsYXJhdGlvbi5iaW5kKHRoaXMpKSx0aGlzLnBlZWsoanIuQXRLZXl3b3JkKT90aGlzLl9wYXJzZUlmU3RhdGVtZW50KGUpfHx0aGlzLl9wYXJzZUZvclN0YXRlbWVudChlKXx8dGhpcy5fcGFyc2VFYWNoU3RhdGVtZW50KGUpfHx0aGlzLl9wYXJzZVdoaWxlU3RhdGVtZW50KGUpOm51bGx9LHQucHJvdG90eXBlLl9wYXJzZUlmU3RhdGVtZW50PWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnBlZWtLZXl3b3JkKCJAaWYiKT90aGlzLl9pbnRlcm5hbFBhcnNlSWZTdGF0ZW1lbnQoZSk6bnVsbH0sdC5wcm90b3R5cGUuX2ludGVybmFsUGFyc2VJZlN0YXRlbWVudD1mdW5jdGlvbihlKXt2YXIgdD10aGlzLmNyZWF0ZShnbyk7aWYodGhpcy5jb25zdW1lVG9rZW4oKSwhdC5zZXRFeHByZXNzaW9uKHRoaXMuX3BhcnNlRXhwcighMCkpKXJldHVybiB0aGlzLmZpbmlzaCh0LGZhLkV4cHJlc3Npb25FeHBlY3RlZCk7aWYodGhpcy5fcGFyc2VCb2R5KHQsZSksdGhpcy5hY2NlcHRLZXl3b3JkKCJAZWxzZSIpKWlmKHRoaXMucGVla0lkZW50KCJpZiIpKXQuc2V0RWxzZUNsYXVzZSh0aGlzLl9pbnRlcm5hbFBhcnNlSWZTdGF0ZW1lbnQoZSkpO2Vsc2UgaWYodGhpcy5wZWVrKGpyLkN1cmx5TCkpe3ZhciBuPXRoaXMuY3JlYXRlKHdvKTt0aGlzLl9wYXJzZUJvZHkobixlKSx0LnNldEVsc2VDbGF1c2Uobil9cmV0dXJuIHRoaXMuZmluaXNoKHQpfSx0LnByb3RvdHlwZS5fcGFyc2VGb3JTdGF0ZW1lbnQ9ZnVuY3Rpb24oZSl7aWYoIXRoaXMucGVla0tleXdvcmQoIkBmb3IiKSlyZXR1cm4gbnVsbDt2YXIgdD10aGlzLmNyZWF0ZShibyk7cmV0dXJuIHRoaXMuY29uc3VtZVRva2VuKCksdC5zZXRWYXJpYWJsZSh0aGlzLl9wYXJzZVZhcmlhYmxlKCkpP3RoaXMuYWNjZXB0SWRlbnQoImZyb20iKT90LmFkZENoaWxkKHRoaXMuX3BhcnNlQmluYXJ5RXhwcigpKT90aGlzLmFjY2VwdElkZW50KCJ0byIpfHx0aGlzLmFjY2VwdElkZW50KCJ0aHJvdWdoIik/dC5hZGRDaGlsZCh0aGlzLl9wYXJzZUJpbmFyeUV4cHIoKSk/dGhpcy5fcGFyc2VCb2R5KHQsZSk6dGhpcy5maW5pc2godCxmYS5FeHByZXNzaW9uRXhwZWN0ZWQsW2pyLkN1cmx5Ul0pOnRoaXMuZmluaXNoKHQsZ2QuVGhyb3VnaE9yVG9FeHBlY3RlZCxbanIuQ3VybHlSXSk6dGhpcy5maW5pc2godCxmYS5FeHByZXNzaW9uRXhwZWN0ZWQsW2pyLkN1cmx5Ul0pOnRoaXMuZmluaXNoKHQsZ2QuRnJvbUV4cGVjdGVkLFtqci5DdXJseVJdKTp0aGlzLmZpbmlzaCh0LGZhLlZhcmlhYmxlTmFtZUV4cGVjdGVkLFtqci5DdXJseVJdKX0sdC5wcm90b3R5cGUuX3BhcnNlRWFjaFN0YXRlbWVudD1mdW5jdGlvbihlKXtpZighdGhpcy5wZWVrS2V5d29yZCgiQGVhY2giKSlyZXR1cm4gbnVsbDt2YXIgdD10aGlzLmNyZWF0ZSh2byk7dGhpcy5jb25zdW1lVG9rZW4oKTt2YXIgbj10LmdldFZhcmlhYmxlcygpO2lmKCFuLmFkZENoaWxkKHRoaXMuX3BhcnNlVmFyaWFibGUoKSkpcmV0dXJuIHRoaXMuZmluaXNoKHQsZmEuVmFyaWFibGVOYW1lRXhwZWN0ZWQsW2pyLkN1cmx5Ul0pO2Zvcig7dGhpcy5hY2NlcHQoanIuQ29tbWEpOylpZighbi5hZGRDaGlsZCh0aGlzLl9wYXJzZVZhcmlhYmxlKCkpKXJldHVybiB0aGlzLmZpbmlzaCh0LGZhLlZhcmlhYmxlTmFtZUV4cGVjdGVkLFtqci5DdXJseVJdKTtyZXR1cm4gdGhpcy5maW5pc2gobiksdGhpcy5hY2NlcHRJZGVudCgiaW4iKT90LmFkZENoaWxkKHRoaXMuX3BhcnNlRXhwcigpKT90aGlzLl9wYXJzZUJvZHkodCxlKTp0aGlzLmZpbmlzaCh0LGZhLkV4cHJlc3Npb25FeHBlY3RlZCxbanIuQ3VybHlSXSk6dGhpcy5maW5pc2godCxnZC5JbkV4cGVjdGVkLFtqci5DdXJseVJdKX0sdC5wcm90b3R5cGUuX3BhcnNlV2hpbGVTdGF0ZW1lbnQ9ZnVuY3Rpb24oZSl7aWYoIXRoaXMucGVla0tleXdvcmQoIkB3aGlsZSIpKXJldHVybiBudWxsO3ZhciB0PXRoaXMuY3JlYXRlKHlvKTtyZXR1cm4gdGhpcy5jb25zdW1lVG9rZW4oKSx0LmFkZENoaWxkKHRoaXMuX3BhcnNlQmluYXJ5RXhwcigpKT90aGlzLl9wYXJzZUJvZHkodCxlKTp0aGlzLmZpbmlzaCh0LGZhLkV4cHJlc3Npb25FeHBlY3RlZCxbanIuQ3VybHlSXSl9LHQucHJvdG90eXBlLl9wYXJzZUZ1bmN0aW9uQm9keURlY2xhcmF0aW9uPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3BhcnNlVmFyaWFibGVEZWNsYXJhdGlvbigpfHx0aGlzLl9wYXJzZVJldHVyblN0YXRlbWVudCgpfHx0aGlzLl9wYXJzZVdhcm5BbmREZWJ1ZygpfHx0aGlzLl9wYXJzZUNvbnRyb2xTdGF0ZW1lbnQodGhpcy5fcGFyc2VGdW5jdGlvbkJvZHlEZWNsYXJhdGlvbi5iaW5kKHRoaXMpKX0sdC5wcm90b3R5cGUuX3BhcnNlRnVuY3Rpb25EZWNsYXJhdGlvbj1mdW5jdGlvbigpe2lmKCF0aGlzLnBlZWtLZXl3b3JkKCJAZnVuY3Rpb24iKSlyZXR1cm4gbnVsbDt2YXIgZT10aGlzLmNyZWF0ZSh4byk7aWYodGhpcy5jb25zdW1lVG9rZW4oKSwhZS5zZXRJZGVudGlmaWVyKHRoaXMuX3BhcnNlSWRlbnQoWyRpLkZ1bmN0aW9uXSkpKXJldHVybiB0aGlzLmZpbmlzaChlLGZhLklkZW50aWZpZXJFeHBlY3RlZCxbanIuQ3VybHlSXSk7aWYoIXRoaXMuYWNjZXB0KGpyLlBhcmVudGhlc2lzTCkpcmV0dXJuIHRoaXMuZmluaXNoKGUsZmEuTGVmdFBhcmVudGhlc2lzRXhwZWN0ZWQsW2pyLkN1cmx5Ul0pO2lmKGUuZ2V0UGFyYW1ldGVycygpLmFkZENoaWxkKHRoaXMuX3BhcnNlUGFyYW1ldGVyRGVjbGFyYXRpb24oKSkpZm9yKDt0aGlzLmFjY2VwdChqci5Db21tYSkmJiF0aGlzLnBlZWsoanIuUGFyZW50aGVzaXNSKTspaWYoIWUuZ2V0UGFyYW1ldGVycygpLmFkZENoaWxkKHRoaXMuX3BhcnNlUGFyYW1ldGVyRGVjbGFyYXRpb24oKSkpcmV0dXJuIHRoaXMuZmluaXNoKGUsZmEuVmFyaWFibGVOYW1lRXhwZWN0ZWQpO3JldHVybiB0aGlzLmFjY2VwdChqci5QYXJlbnRoZXNpc1IpP3RoaXMuX3BhcnNlQm9keShlLHRoaXMuX3BhcnNlRnVuY3Rpb25Cb2R5RGVjbGFyYXRpb24uYmluZCh0aGlzKSk6dGhpcy5maW5pc2goZSxmYS5SaWdodFBhcmVudGhlc2lzRXhwZWN0ZWQsW2pyLkN1cmx5Ul0pfSx0LnByb3RvdHlwZS5fcGFyc2VSZXR1cm5TdGF0ZW1lbnQ9ZnVuY3Rpb24oKXtpZighdGhpcy5wZWVrS2V5d29yZCgiQHJldHVybiIpKXJldHVybiBudWxsO3ZhciBlPXRoaXMuY3JlYXRlTm9kZShqaS5SZXR1cm5TdGF0ZW1lbnQpO3JldHVybiB0aGlzLmNvbnN1bWVUb2tlbigpLGUuYWRkQ2hpbGQodGhpcy5fcGFyc2VFeHByKCkpP3RoaXMuZmluaXNoKGUpOnRoaXMuZmluaXNoKGUsZmEuRXhwcmVzc2lvbkV4cGVjdGVkKX0sdC5wcm90b3R5cGUuX3BhcnNlTWl4aW5EZWNsYXJhdGlvbj1mdW5jdGlvbigpe2lmKCF0aGlzLnBlZWtLZXl3b3JkKCJAbWl4aW4iKSlyZXR1cm4gbnVsbDt2YXIgZT10aGlzLmNyZWF0ZShscyk7aWYodGhpcy5jb25zdW1lVG9rZW4oKSwhZS5zZXRJZGVudGlmaWVyKHRoaXMuX3BhcnNlSWRlbnQoWyRpLk1peGluXSkpKXJldHVybiB0aGlzLmZpbmlzaChlLGZhLklkZW50aWZpZXJFeHBlY3RlZCxbanIuQ3VybHlSXSk7aWYodGhpcy5hY2NlcHQoanIuUGFyZW50aGVzaXNMKSl7aWYoZS5nZXRQYXJhbWV0ZXJzKCkuYWRkQ2hpbGQodGhpcy5fcGFyc2VQYXJhbWV0ZXJEZWNsYXJhdGlvbigpKSlmb3IoO3RoaXMuYWNjZXB0KGpyLkNvbW1hKSYmIXRoaXMucGVlayhqci5QYXJlbnRoZXNpc1IpOylpZighZS5nZXRQYXJhbWV0ZXJzKCkuYWRkQ2hpbGQodGhpcy5fcGFyc2VQYXJhbWV0ZXJEZWNsYXJhdGlvbigpKSlyZXR1cm4gdGhpcy5maW5pc2goZSxmYS5WYXJpYWJsZU5hbWVFeHBlY3RlZCk7aWYoIXRoaXMuYWNjZXB0KGpyLlBhcmVudGhlc2lzUikpcmV0dXJuIHRoaXMuZmluaXNoKGUsZmEuUmlnaHRQYXJlbnRoZXNpc0V4cGVjdGVkLFtqci5DdXJseVJdKX1yZXR1cm4gdGhpcy5fcGFyc2VCb2R5KGUsdGhpcy5fcGFyc2VSdWxlU2V0RGVjbGFyYXRpb24uYmluZCh0aGlzKSl9LHQucHJvdG90eXBlLl9wYXJzZVBhcmFtZXRlckRlY2xhcmF0aW9uPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5jcmVhdGUobW8pO3JldHVybiBlLnNldElkZW50aWZpZXIodGhpcy5fcGFyc2VWYXJpYWJsZSgpKT8odGhpcy5hY2NlcHQocGQpLHRoaXMuYWNjZXB0KGpyLkNvbG9uKSYmIWUuc2V0RGVmYXVsdFZhbHVlKHRoaXMuX3BhcnNlRXhwcighMCkpP3RoaXMuZmluaXNoKGUsZmEuVmFyaWFibGVWYWx1ZUV4cGVjdGVkLFtdLFtqci5Db21tYSxqci5QYXJlbnRoZXNpc1JdKTp0aGlzLmZpbmlzaChlKSk6bnVsbH0sdC5wcm90b3R5cGUuX3BhcnNlTWl4aW5Db250ZW50PWZ1bmN0aW9uKCl7aWYoIXRoaXMucGVla0tleXdvcmQoIkBjb250ZW50IikpcmV0dXJuIG51bGw7dmFyIGU9dGhpcy5jcmVhdGUob3MpO2lmKHRoaXMuY29uc3VtZVRva2VuKCksdGhpcy5hY2NlcHQoanIuUGFyZW50aGVzaXNMKSl7aWYoZS5nZXRBcmd1bWVudHMoKS5hZGRDaGlsZCh0aGlzLl9wYXJzZUZ1bmN0aW9uQXJndW1lbnQoKSkpZm9yKDt0aGlzLmFjY2VwdChqci5Db21tYSkmJiF0aGlzLnBlZWsoanIuUGFyZW50aGVzaXNSKTspaWYoIWUuZ2V0QXJndW1lbnRzKCkuYWRkQ2hpbGQodGhpcy5fcGFyc2VGdW5jdGlvbkFyZ3VtZW50KCkpKXJldHVybiB0aGlzLmZpbmlzaChlLGZhLkV4cHJlc3Npb25FeHBlY3RlZCk7aWYoIXRoaXMuYWNjZXB0KGpyLlBhcmVudGhlc2lzUikpcmV0dXJuIHRoaXMuZmluaXNoKGUsZmEuUmlnaHRQYXJlbnRoZXNpc0V4cGVjdGVkKX1yZXR1cm4gdGhpcy5maW5pc2goZSl9LHQucHJvdG90eXBlLl9wYXJzZU1peGluUmVmZXJlbmNlPWZ1bmN0aW9uKCl7aWYoIXRoaXMucGVla0tleXdvcmQoIkBpbmNsdWRlIikpcmV0dXJuIG51bGw7dmFyIGU9dGhpcy5jcmVhdGUoYXMpO3RoaXMuY29uc3VtZVRva2VuKCk7dmFyIHQ9dGhpcy5fcGFyc2VJZGVudChbJGkuTWl4aW5dKTtpZighZS5zZXRJZGVudGlmaWVyKHQpKXJldHVybiB0aGlzLmZpbmlzaChlLGZhLklkZW50aWZpZXJFeHBlY3RlZCxbanIuQ3VybHlSXSk7aWYoIXRoaXMuaGFzV2hpdGVzcGFjZSgpJiZ0aGlzLmFjY2VwdERlbGltKCIuIikmJiF0aGlzLmhhc1doaXRlc3BhY2UoKSl7dmFyIG49dGhpcy5fcGFyc2VJZGVudChbJGkuTWl4aW5dKTtpZighbilyZXR1cm4gdGhpcy5maW5pc2goZSxmYS5JZGVudGlmaWVyRXhwZWN0ZWQsW2pyLkN1cmx5Ul0pO3ZhciByPXRoaXMuY3JlYXRlKHVzKTt0LnJlZmVyZW5jZVR5cGVzPVskaS5Nb2R1bGVdLHIuc2V0SWRlbnRpZmllcih0KSxlLnNldElkZW50aWZpZXIobiksZS5hZGRDaGlsZChyKX1pZih0aGlzLmFjY2VwdChqci5QYXJlbnRoZXNpc0wpKXtpZihlLmdldEFyZ3VtZW50cygpLmFkZENoaWxkKHRoaXMuX3BhcnNlRnVuY3Rpb25Bcmd1bWVudCgpKSlmb3IoO3RoaXMuYWNjZXB0KGpyLkNvbW1hKSYmIXRoaXMucGVlayhqci5QYXJlbnRoZXNpc1IpOylpZighZS5nZXRBcmd1bWVudHMoKS5hZGRDaGlsZCh0aGlzLl9wYXJzZUZ1bmN0aW9uQXJndW1lbnQoKSkpcmV0dXJuIHRoaXMuZmluaXNoKGUsZmEuRXhwcmVzc2lvbkV4cGVjdGVkKTtpZighdGhpcy5hY2NlcHQoanIuUGFyZW50aGVzaXNSKSlyZXR1cm4gdGhpcy5maW5pc2goZSxmYS5SaWdodFBhcmVudGhlc2lzRXhwZWN0ZWQpfXJldHVybih0aGlzLnBlZWtJZGVudCgidXNpbmciKXx8dGhpcy5wZWVrKGpyLkN1cmx5TCkpJiZlLnNldENvbnRlbnQodGhpcy5fcGFyc2VNaXhpbkNvbnRlbnREZWNsYXJhdGlvbigpKSx0aGlzLmZpbmlzaChlKX0sdC5wcm90b3R5cGUuX3BhcnNlTWl4aW5Db250ZW50RGVjbGFyYXRpb249ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmNyZWF0ZShzcyk7aWYodGhpcy5hY2NlcHRJZGVudCgidXNpbmciKSl7aWYoIXRoaXMuYWNjZXB0KGpyLlBhcmVudGhlc2lzTCkpcmV0dXJuIHRoaXMuZmluaXNoKGUsZmEuTGVmdFBhcmVudGhlc2lzRXhwZWN0ZWQsW2pyLkN1cmx5TF0pO2lmKGUuZ2V0UGFyYW1ldGVycygpLmFkZENoaWxkKHRoaXMuX3BhcnNlUGFyYW1ldGVyRGVjbGFyYXRpb24oKSkpZm9yKDt0aGlzLmFjY2VwdChqci5Db21tYSkmJiF0aGlzLnBlZWsoanIuUGFyZW50aGVzaXNSKTspaWYoIWUuZ2V0UGFyYW1ldGVycygpLmFkZENoaWxkKHRoaXMuX3BhcnNlUGFyYW1ldGVyRGVjbGFyYXRpb24oKSkpcmV0dXJuIHRoaXMuZmluaXNoKGUsZmEuVmFyaWFibGVOYW1lRXhwZWN0ZWQpO2lmKCF0aGlzLmFjY2VwdChqci5QYXJlbnRoZXNpc1IpKXJldHVybiB0aGlzLmZpbmlzaChlLGZhLlJpZ2h0UGFyZW50aGVzaXNFeHBlY3RlZCxbanIuQ3VybHlMXSl9cmV0dXJuIHRoaXMucGVlayhqci5DdXJseUwpJiZ0aGlzLl9wYXJzZUJvZHkoZSx0aGlzLl9wYXJzZU1peGluUmVmZXJlbmNlQm9keVN0YXRlbWVudC5iaW5kKHRoaXMpKSx0aGlzLmZpbmlzaChlKX0sdC5wcm90b3R5cGUuX3BhcnNlTWl4aW5SZWZlcmVuY2VCb2R5U3RhdGVtZW50PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3RyeVBhcnNlS2V5ZnJhbWVTZWxlY3RvcigpfHx0aGlzLl9wYXJzZVJ1bGVTZXREZWNsYXJhdGlvbigpfSx0LnByb3RvdHlwZS5fcGFyc2VGdW5jdGlvbkFyZ3VtZW50PWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5jcmVhdGUoZm8pLHQ9dGhpcy5tYXJrKCksbj10aGlzLl9wYXJzZVZhcmlhYmxlKCk7aWYobilpZih0aGlzLmFjY2VwdChqci5Db2xvbikpZS5zZXRJZGVudGlmaWVyKG4pO2Vsc2V7aWYodGhpcy5hY2NlcHQocGQpKXJldHVybiBlLnNldFZhbHVlKG4pLHRoaXMuZmluaXNoKGUpO3RoaXMucmVzdG9yZUF0TWFyayh0KX1yZXR1cm4gZS5zZXRWYWx1ZSh0aGlzLl9wYXJzZUV4cHIoITApKT8odGhpcy5hY2NlcHQocGQpLGUuYWRkQ2hpbGQodGhpcy5fcGFyc2VQcmlvKCkpLHRoaXMuZmluaXNoKGUpKTplLnNldFZhbHVlKHRoaXMuX3RyeVBhcnNlUHJpbygpKT90aGlzLmZpbmlzaChlKTpudWxsfSx0LnByb3RvdHlwZS5fcGFyc2VVUkxBcmd1bWVudD1mdW5jdGlvbigpe3ZhciB0PXRoaXMubWFyaygpLG49ZS5wcm90b3R5cGUuX3BhcnNlVVJMQXJndW1lbnQuY2FsbCh0aGlzKTtpZighbnx8IXRoaXMucGVlayhqci5QYXJlbnRoZXNpc1IpKXt0aGlzLnJlc3RvcmVBdE1hcmsodCk7dmFyIHI9dGhpcy5jcmVhdGUoWWkpO3JldHVybiByLmFkZENoaWxkKHRoaXMuX3BhcnNlQmluYXJ5RXhwcigpKSx0aGlzLmZpbmlzaChyKX1yZXR1cm4gbn0sdC5wcm90b3R5cGUuX3BhcnNlT3BlcmF0aW9uPWZ1bmN0aW9uKCl7aWYoIXRoaXMucGVlayhqci5QYXJlbnRoZXNpc0wpKXJldHVybiBudWxsO3ZhciBlPXRoaXMuY3JlYXRlKFlpKTtmb3IodGhpcy5jb25zdW1lVG9rZW4oKTtlLmFkZENoaWxkKHRoaXMuX3BhcnNlTGlzdEVsZW1lbnQoKSk7KXRoaXMuYWNjZXB0KGpyLkNvbW1hKTtyZXR1cm4gdGhpcy5hY2NlcHQoanIuUGFyZW50aGVzaXNSKT90aGlzLmZpbmlzaChlKTp0aGlzLmZpbmlzaChlLGZhLlJpZ2h0UGFyZW50aGVzaXNFeHBlY3RlZCl9LHQucHJvdG90eXBlLl9wYXJzZUxpc3RFbGVtZW50PWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5jcmVhdGUoaHMpLHQ9dGhpcy5fcGFyc2VCaW5hcnlFeHByKCk7aWYoIXQpcmV0dXJuIG51bGw7aWYodGhpcy5hY2NlcHQoanIuQ29sb24pKXtpZihlLnNldEtleSh0KSwhZS5zZXRWYWx1ZSh0aGlzLl9wYXJzZUJpbmFyeUV4cHIoKSkpcmV0dXJuIHRoaXMuZmluaXNoKGUsZmEuRXhwcmVzc2lvbkV4cGVjdGVkKX1lbHNlIGUuc2V0VmFsdWUodCk7cmV0dXJuIHRoaXMuZmluaXNoKGUpfSx0LnByb3RvdHlwZS5fcGFyc2VVc2U9ZnVuY3Rpb24oKXtpZighdGhpcy5wZWVrS2V5d29yZCgiQHVzZSIpKXJldHVybiBudWxsO3ZhciBlPXRoaXMuY3JlYXRlKEZvKTtpZih0aGlzLmNvbnN1bWVUb2tlbigpLCFlLmFkZENoaWxkKHRoaXMuX3BhcnNlU3RyaW5nTGl0ZXJhbCgpKSlyZXR1cm4gdGhpcy5maW5pc2goZSxmYS5TdHJpbmdMaXRlcmFsRXhwZWN0ZWQpO2lmKCF0aGlzLnBlZWsoanIuU2VtaUNvbG9uKSYmIXRoaXMucGVlayhqci5FT0YpKXtpZighdGhpcy5wZWVrUmVnRXhwKGpyLklkZW50LC9hc3x3aXRoLykpcmV0dXJuIHRoaXMuZmluaXNoKGUsZmEuVW5rbm93bktleXdvcmQpO2lmKHRoaXMuYWNjZXB0SWRlbnQoImFzIikmJiFlLnNldElkZW50aWZpZXIodGhpcy5fcGFyc2VJZGVudChbJGkuTW9kdWxlXSkpJiYhdGhpcy5hY2NlcHREZWxpbSgiKiIpKXJldHVybiB0aGlzLmZpbmlzaChlLGZhLklkZW50aWZpZXJPcldpbGRjYXJkRXhwZWN0ZWQpO2lmKHRoaXMuYWNjZXB0SWRlbnQoIndpdGgiKSl7aWYoIXRoaXMuYWNjZXB0KGpyLlBhcmVudGhlc2lzTCkpcmV0dXJuIHRoaXMuZmluaXNoKGUsZmEuTGVmdFBhcmVudGhlc2lzRXhwZWN0ZWQsW2pyLlBhcmVudGhlc2lzUl0pO2lmKCFlLmdldFBhcmFtZXRlcnMoKS5hZGRDaGlsZCh0aGlzLl9wYXJzZU1vZHVsZUNvbmZpZ0RlY2xhcmF0aW9uKCkpKXJldHVybiB0aGlzLmZpbmlzaChlLGZhLlZhcmlhYmxlTmFtZUV4cGVjdGVkKTtmb3IoO3RoaXMuYWNjZXB0KGpyLkNvbW1hKSYmIXRoaXMucGVlayhqci5QYXJlbnRoZXNpc1IpOylpZighZS5nZXRQYXJhbWV0ZXJzKCkuYWRkQ2hpbGQodGhpcy5fcGFyc2VNb2R1bGVDb25maWdEZWNsYXJhdGlvbigpKSlyZXR1cm4gdGhpcy5maW5pc2goZSxmYS5WYXJpYWJsZU5hbWVFeHBlY3RlZCk7aWYoIXRoaXMuYWNjZXB0KGpyLlBhcmVudGhlc2lzUikpcmV0dXJuIHRoaXMuZmluaXNoKGUsZmEuUmlnaHRQYXJlbnRoZXNpc0V4cGVjdGVkKX19cmV0dXJuIHRoaXMuYWNjZXB0KGpyLlNlbWlDb2xvbil8fHRoaXMuYWNjZXB0KGpyLkVPRik/dGhpcy5maW5pc2goZSk6dGhpcy5maW5pc2goZSxmYS5TZW1pQ29sb25FeHBlY3RlZCl9LHQucHJvdG90eXBlLl9wYXJzZU1vZHVsZUNvbmZpZ0RlY2xhcmF0aW9uPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5jcmVhdGUoTm8pO3JldHVybiBlLnNldElkZW50aWZpZXIodGhpcy5fcGFyc2VWYXJpYWJsZSgpKT90aGlzLmFjY2VwdChqci5Db2xvbikmJmUuc2V0VmFsdWUodGhpcy5fcGFyc2VFeHByKCEwKSk/IXRoaXMuYWNjZXB0KGpyLkV4Y2xhbWF0aW9uKXx8IXRoaXMuaGFzV2hpdGVzcGFjZSgpJiZ0aGlzLmFjY2VwdElkZW50KCJkZWZhdWx0Iik/dGhpcy5maW5pc2goZSk6dGhpcy5maW5pc2goZSxmYS5Vbmtub3duS2V5d29yZCk6dGhpcy5maW5pc2goZSxmYS5WYXJpYWJsZVZhbHVlRXhwZWN0ZWQsW10sW2pyLkNvbW1hLGpyLlBhcmVudGhlc2lzUl0pOm51bGx9LHQucHJvdG90eXBlLl9wYXJzZUZvcndhcmQ9ZnVuY3Rpb24oKXtpZighdGhpcy5wZWVrS2V5d29yZCgiQGZvcndhcmQiKSlyZXR1cm4gbnVsbDt2YXIgZT10aGlzLmNyZWF0ZShEbyk7aWYodGhpcy5jb25zdW1lVG9rZW4oKSwhZS5hZGRDaGlsZCh0aGlzLl9wYXJzZVN0cmluZ0xpdGVyYWwoKSkpcmV0dXJuIHRoaXMuZmluaXNoKGUsZmEuU3RyaW5nTGl0ZXJhbEV4cGVjdGVkKTtpZih0aGlzLmFjY2VwdElkZW50KCJ3aXRoIikpe2lmKCF0aGlzLmFjY2VwdChqci5QYXJlbnRoZXNpc0wpKXJldHVybiB0aGlzLmZpbmlzaChlLGZhLkxlZnRQYXJlbnRoZXNpc0V4cGVjdGVkLFtqci5QYXJlbnRoZXNpc1JdKTtpZighZS5nZXRQYXJhbWV0ZXJzKCkuYWRkQ2hpbGQodGhpcy5fcGFyc2VNb2R1bGVDb25maWdEZWNsYXJhdGlvbigpKSlyZXR1cm4gdGhpcy5maW5pc2goZSxmYS5WYXJpYWJsZU5hbWVFeHBlY3RlZCk7Zm9yKDt0aGlzLmFjY2VwdChqci5Db21tYSkmJiF0aGlzLnBlZWsoanIuUGFyZW50aGVzaXNSKTspaWYoIWUuZ2V0UGFyYW1ldGVycygpLmFkZENoaWxkKHRoaXMuX3BhcnNlTW9kdWxlQ29uZmlnRGVjbGFyYXRpb24oKSkpcmV0dXJuIHRoaXMuZmluaXNoKGUsZmEuVmFyaWFibGVOYW1lRXhwZWN0ZWQpO2lmKCF0aGlzLmFjY2VwdChqci5QYXJlbnRoZXNpc1IpKXJldHVybiB0aGlzLmZpbmlzaChlLGZhLlJpZ2h0UGFyZW50aGVzaXNFeHBlY3RlZCl9aWYoIXRoaXMucGVlayhqci5TZW1pQ29sb24pJiYhdGhpcy5wZWVrKGpyLkVPRikpe2lmKCF0aGlzLnBlZWtSZWdFeHAoanIuSWRlbnQsL2FzfGhpZGV8c2hvdy8pKXJldHVybiB0aGlzLmZpbmlzaChlLGZhLlVua25vd25LZXl3b3JkKTtpZih0aGlzLmFjY2VwdElkZW50KCJhcyIpKXt2YXIgdD10aGlzLl9wYXJzZUlkZW50KFskaS5Gb3J3YXJkXSk7aWYoIWUuc2V0SWRlbnRpZmllcih0KSlyZXR1cm4gdGhpcy5maW5pc2goZSxmYS5JZGVudGlmaWVyRXhwZWN0ZWQpO2lmKHRoaXMuaGFzV2hpdGVzcGFjZSgpfHwhdGhpcy5hY2NlcHREZWxpbSgiKiIpKXJldHVybiB0aGlzLmZpbmlzaChlLGZhLldpbGRjYXJkRXhwZWN0ZWQpfWlmKCh0aGlzLnBlZWtJZGVudCgiaGlkZSIpfHx0aGlzLnBlZWtJZGVudCgic2hvdyIpKSYmIWUuYWRkQ2hpbGQodGhpcy5fcGFyc2VGb3J3YXJkVmlzaWJpbGl0eSgpKSlyZXR1cm4gdGhpcy5maW5pc2goZSxmYS5JZGVudGlmaWVyT3JWYXJpYWJsZUV4cGVjdGVkKX1yZXR1cm4gdGhpcy5hY2NlcHQoanIuU2VtaUNvbG9uKXx8dGhpcy5hY2NlcHQoanIuRU9GKT90aGlzLmZpbmlzaChlKTp0aGlzLmZpbmlzaChlLGZhLlNlbWlDb2xvbkV4cGVjdGVkKX0sdC5wcm90b3R5cGUuX3BhcnNlRm9yd2FyZFZpc2liaWxpdHk9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmNyZWF0ZShUbyk7Zm9yKGUuc2V0SWRlbnRpZmllcih0aGlzLl9wYXJzZUlkZW50KCkpO2UuYWRkQ2hpbGQodGhpcy5fcGFyc2VWYXJpYWJsZSgpfHx0aGlzLl9wYXJzZUlkZW50KCkpOyl0aGlzLmFjY2VwdChqci5Db21tYSk7cmV0dXJuIGUuZ2V0Q2hpbGRyZW4oKS5sZW5ndGg+MT9lOm51bGx9LHQucHJvdG90eXBlLl9wYXJzZVN1cHBvcnRzQ29uZGl0aW9uPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3BhcnNlSW50ZXJwb2xhdGlvbigpfHxlLnByb3RvdHlwZS5fcGFyc2VTdXBwb3J0c0NvbmRpdGlvbi5jYWxsKHRoaXMpfSx0fShnYykseWQ9ZnVuY3Rpb24oKXt2YXIgZT1mdW5jdGlvbih0LG4pe3JldHVybihlPU9iamVjdC5zZXRQcm90b3R5cGVPZnx8e19fcHJvdG9fXzpbXX1pbnN0YW5jZW9mIEFycmF5JiZmdW5jdGlvbihlLHQpe2UuX19wcm90b19fPXR9fHxmdW5jdGlvbihlLHQpe2Zvcih2YXIgbiBpbiB0KU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LG4pJiYoZVtuXT10W25dKX0pKHQsbil9O3JldHVybiBmdW5jdGlvbih0LG4pe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBuJiZudWxsIT09bil0aHJvdyBuZXcgVHlwZUVycm9yKCJDbGFzcyBleHRlbmRzIHZhbHVlICIrU3RyaW5nKG4pKyIgaXMgbm90IGEgY29uc3RydWN0b3Igb3IgbnVsbCIpO2Z1bmN0aW9uIHIoKXt0aGlzLmNvbnN0cnVjdG9yPXR9ZSh0LG4pLHQucHJvdG90eXBlPW51bGw9PT1uP09iamVjdC5jcmVhdGUobik6KHIucHJvdG90eXBlPW4ucHJvdG90eXBlLG5ldyByKX19KCksd2Q9YnMoKSx4ZD1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KG4scil7dmFyIGk9ZS5jYWxsKHRoaXMsIiQiLG4scil8fHRoaXM7cmV0dXJuIFNkKHQuc2Nzc01vZHVsZUxvYWRlcnMpLFNkKHQuc2Nzc01vZHVsZUJ1aWx0SW5zKSxpfXJldHVybiB5ZCh0LGUpLHQucHJvdG90eXBlLmlzSW1wb3J0UGF0aFBhcmVudD1mdW5jdGlvbih0KXtyZXR1cm4gdD09PWppLkZvcndhcmR8fHQ9PT1qaS5Vc2V8fGUucHJvdG90eXBlLmlzSW1wb3J0UGF0aFBhcmVudC5jYWxsKHRoaXMsdCl9LHQucHJvdG90eXBlLmdldENvbXBsZXRpb25Gb3JJbXBvcnRQYXRoPWZ1bmN0aW9uKG4scil7dmFyIGk9bi5nZXRQYXJlbnQoKS50eXBlO2lmKGk9PT1qaS5Gb3J3YXJkfHxpPT09amkuVXNlKWZvcih2YXIgbz0wLHM9dC5zY3NzTW9kdWxlQnVpbHRJbnM7bzxzLmxlbmd0aDtvKyspe3ZhciBhPXNbb10sbD17bGFiZWw6YS5sYWJlbCxkb2N1bWVudGF0aW9uOmEuZG9jdW1lbnRhdGlvbix0ZXh0RWRpdDpZcy5yZXBsYWNlKHRoaXMuZ2V0Q29tcGxldGlvblJhbmdlKG4pLCInIi5jb25jYXQoYS5sYWJlbCwiJyIpKSxraW5kOlJhLk1vZHVsZX07ci5pdGVtcy5wdXNoKGwpfXJldHVybiBlLnByb3RvdHlwZS5nZXRDb21wbGV0aW9uRm9ySW1wb3J0UGF0aC5jYWxsKHRoaXMsbixyKX0sdC5wcm90b3R5cGUuY3JlYXRlUmVwbGFjZUZ1bmN0aW9uPWZ1bmN0aW9uKCl7dmFyIGU9MTtyZXR1cm4gZnVuY3Rpb24obixyKXtyZXR1cm4iXFwiK3IrIjogJHsiK2UrKysiOiIrKHQudmFyaWFibGVEZWZhdWx0c1tyXXx8IiIpKyJ9In19LHQucHJvdG90eXBlLmNyZWF0ZUZ1bmN0aW9uUHJvcG9zYWxzPWZ1bmN0aW9uKGUsdCxuLHIpe2Zvcih2YXIgaT0wLG89ZTtpPG8ubGVuZ3RoO2krKyl7dmFyIHM9b1tpXSxhPXMuZnVuYy5yZXBsYWNlKC9cWz8oXCRcdyspXF0/L2csdGhpcy5jcmVhdGVSZXBsYWNlRnVuY3Rpb24oKSksbD17bGFiZWw6cy5mdW5jLnN1YnN0cigwLHMuZnVuYy5pbmRleE9mKCIoIikpLGRldGFpbDpzLmZ1bmMsZG9jdW1lbnRhdGlvbjpzLmRlc2MsdGV4dEVkaXQ6WXMucmVwbGFjZSh0aGlzLmdldENvbXBsZXRpb25SYW5nZSh0KSxhKSxpbnNlcnRUZXh0Rm9ybWF0Ok5hLlNuaXBwZXQsa2luZDpSYS5GdW5jdGlvbn07biYmKGwuc29ydFRleHQ9InoiKSxyLml0ZW1zLnB1c2gobCl9cmV0dXJuIHJ9LHQucHJvdG90eXBlLmdldENvbXBsZXRpb25zRm9yU2VsZWN0b3I9ZnVuY3Rpb24obixyLGkpe3JldHVybiB0aGlzLmNyZWF0ZUZ1bmN0aW9uUHJvcG9zYWxzKHQuc2VsZWN0b3JGdW5jcyxudWxsLCEwLGkpLGUucHJvdG90eXBlLmdldENvbXBsZXRpb25zRm9yU2VsZWN0b3IuY2FsbCh0aGlzLG4scixpKX0sdC5wcm90b3R5cGUuZ2V0VGVybVByb3Bvc2Fscz1mdW5jdGlvbihuLHIsaSl7dmFyIG89dC5idWlsdEluRnVuY3M7cmV0dXJuIG4mJihvPW8uZmlsdGVyKChmdW5jdGlvbihlKXtyZXR1cm4hZS50eXBlfHwhbi5yZXN0cmljdGlvbnN8fC0xIT09bi5yZXN0cmljdGlvbnMuaW5kZXhPZihlLnR5cGUpfSkpKSx0aGlzLmNyZWF0ZUZ1bmN0aW9uUHJvcG9zYWxzKG8sciwhMCxpKSxlLnByb3RvdHlwZS5nZXRUZXJtUHJvcG9zYWxzLmNhbGwodGhpcyxuLHIsaSl9LHQucHJvdG90eXBlLmdldENvbG9yUHJvcG9zYWxzPWZ1bmN0aW9uKG4scixpKXtyZXR1cm4gdGhpcy5jcmVhdGVGdW5jdGlvblByb3Bvc2Fscyh0LmNvbG9yUHJvcG9zYWxzLHIsITEsaSksZS5wcm90b3R5cGUuZ2V0Q29sb3JQcm9wb3NhbHMuY2FsbCh0aGlzLG4scixpKX0sdC5wcm90b3R5cGUuZ2V0Q29tcGxldGlvbnNGb3JEZWNsYXJhdGlvblByb3BlcnR5PWZ1bmN0aW9uKHQsbil7cmV0dXJuIHRoaXMuZ2V0Q29tcGxldGlvbkZvckF0RGlyZWN0aXZlcyhuKSx0aGlzLmdldENvbXBsZXRpb25zRm9yU2VsZWN0b3IobnVsbCwhMCxuKSxlLnByb3RvdHlwZS5nZXRDb21wbGV0aW9uc0ZvckRlY2xhcmF0aW9uUHJvcGVydHkuY2FsbCh0aGlzLHQsbil9LHQucHJvdG90eXBlLmdldENvbXBsZXRpb25zRm9yRXh0ZW5kc1JlZmVyZW5jZT1mdW5jdGlvbihlLHQsbil7Zm9yKHZhciByPTAsaT10aGlzLmdldFN5bWJvbENvbnRleHQoKS5maW5kU3ltYm9sc0F0T2Zmc2V0KHRoaXMub2Zmc2V0LCRpLlJ1bGUpO3I8aS5sZW5ndGg7cisrKXt2YXIgbz1pW3JdLHM9e2xhYmVsOm8ubmFtZSx0ZXh0RWRpdDpZcy5yZXBsYWNlKHRoaXMuZ2V0Q29tcGxldGlvblJhbmdlKHQpLG8ubmFtZSksa2luZDpSYS5GdW5jdGlvbn07bi5pdGVtcy5wdXNoKHMpfXJldHVybiBufSx0LnByb3RvdHlwZS5nZXRDb21wbGV0aW9uRm9yQXREaXJlY3RpdmVzPWZ1bmN0aW9uKGUpe3ZhciBuO3JldHVybihuPWUuaXRlbXMpLnB1c2guYXBwbHkobix0LnNjc3NBdERpcmVjdGl2ZXMpLGV9LHQucHJvdG90eXBlLmdldENvbXBsZXRpb25Gb3JUb3BMZXZlbD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5nZXRDb21wbGV0aW9uRm9yQXREaXJlY3RpdmVzKHQpLHRoaXMuZ2V0Q29tcGxldGlvbkZvck1vZHVsZUxvYWRlcnModCksZS5wcm90b3R5cGUuZ2V0Q29tcGxldGlvbkZvclRvcExldmVsLmNhbGwodGhpcyx0KSx0fSx0LnByb3RvdHlwZS5nZXRDb21wbGV0aW9uRm9yTW9kdWxlTG9hZGVycz1mdW5jdGlvbihlKXt2YXIgbjtyZXR1cm4obj1lLml0ZW1zKS5wdXNoLmFwcGx5KG4sdC5zY3NzTW9kdWxlTG9hZGVycyksZX0sdC52YXJpYWJsZURlZmF1bHRzPXskcmVkOiIxIiwkZ3JlZW46IjIiLCRibHVlOiIzIiwkYWxwaGE6IjEuMCIsJGNvbG9yOiIjMDAwMDAwIiwkd2VpZ2h0OiIwLjUiLCRodWU6IjAiLCRzYXR1cmF0aW9uOiIwJSIsJGxpZ2h0bmVzczoiMCUiLCRkZWdyZWVzOiIwIiwkYW1vdW50OiIwIiwkc3RyaW5nOiciIicsJHN1YnN0cmluZzonInMiJywkbnVtYmVyOiIwIiwkbGltaXQ6IjEifSx0LmNvbG9yUHJvcG9zYWxzPVt7ZnVuYzoicmVkKCRjb2xvcikiLGRlc2M6d2QoInNjc3MuYnVpbHRpbi5yZWQiLCJHZXRzIHRoZSByZWQgY29tcG9uZW50IG9mIGEgY29sb3IuIil9LHtmdW5jOiJncmVlbigkY29sb3IpIixkZXNjOndkKCJzY3NzLmJ1aWx0aW4uZ3JlZW4iLCJHZXRzIHRoZSBncmVlbiBjb21wb25lbnQgb2YgYSBjb2xvci4iKX0se2Z1bmM6ImJsdWUoJGNvbG9yKSIsZGVzYzp3ZCgic2Nzcy5idWlsdGluLmJsdWUiLCJHZXRzIHRoZSBibHVlIGNvbXBvbmVudCBvZiBhIGNvbG9yLiIpfSx7ZnVuYzoibWl4KCRjb2xvciwgJGNvbG9yLCBbJHdlaWdodF0pIixkZXNjOndkKCJzY3NzLmJ1aWx0aW4ubWl4IiwiTWl4ZXMgdHdvIGNvbG9ycyB0b2dldGhlci4iKX0se2Z1bmM6Imh1ZSgkY29sb3IpIixkZXNjOndkKCJzY3NzLmJ1aWx0aW4uaHVlIiwiR2V0cyB0aGUgaHVlIGNvbXBvbmVudCBvZiBhIGNvbG9yLiIpfSx7ZnVuYzoic2F0dXJhdGlvbigkY29sb3IpIixkZXNjOndkKCJzY3NzLmJ1aWx0aW4uc2F0dXJhdGlvbiIsIkdldHMgdGhlIHNhdHVyYXRpb24gY29tcG9uZW50IG9mIGEgY29sb3IuIil9LHtmdW5jOiJsaWdodG5lc3MoJGNvbG9yKSIsZGVzYzp3ZCgic2Nzcy5idWlsdGluLmxpZ2h0bmVzcyIsIkdldHMgdGhlIGxpZ2h0bmVzcyBjb21wb25lbnQgb2YgYSBjb2xvci4iKX0se2Z1bmM6ImFkanVzdC1odWUoJGNvbG9yLCAkZGVncmVlcykiLGRlc2M6d2QoInNjc3MuYnVpbHRpbi5hZGp1c3QtaHVlIiwiQ2hhbmdlcyB0aGUgaHVlIG9mIGEgY29sb3IuIil9LHtmdW5jOiJsaWdodGVuKCRjb2xvciwgJGFtb3VudCkiLGRlc2M6d2QoInNjc3MuYnVpbHRpbi5saWdodGVuIiwiTWFrZXMgYSBjb2xvciBsaWdodGVyLiIpfSx7ZnVuYzoiZGFya2VuKCRjb2xvciwgJGFtb3VudCkiLGRlc2M6d2QoInNjc3MuYnVpbHRpbi5kYXJrZW4iLCJNYWtlcyBhIGNvbG9yIGRhcmtlci4iKX0se2Z1bmM6InNhdHVyYXRlKCRjb2xvciwgJGFtb3VudCkiLGRlc2M6d2QoInNjc3MuYnVpbHRpbi5zYXR1cmF0ZSIsIk1ha2VzIGEgY29sb3IgbW9yZSBzYXR1cmF0ZWQuIil9LHtmdW5jOiJkZXNhdHVyYXRlKCRjb2xvciwgJGFtb3VudCkiLGRlc2M6d2QoInNjc3MuYnVpbHRpbi5kZXNhdHVyYXRlIiwiTWFrZXMgYSBjb2xvciBsZXNzIHNhdHVyYXRlZC4iKX0se2Z1bmM6ImdyYXlzY2FsZSgkY29sb3IpIixkZXNjOndkKCJzY3NzLmJ1aWx0aW4uZ3JheXNjYWxlIiwiQ29udmVydHMgYSBjb2xvciB0byBncmF5c2NhbGUuIil9LHtmdW5jOiJjb21wbGVtZW50KCRjb2xvcikiLGRlc2M6d2QoInNjc3MuYnVpbHRpbi5jb21wbGVtZW50IiwiUmV0dXJucyB0aGUgY29tcGxlbWVudCBvZiBhIGNvbG9yLiIpfSx7ZnVuYzoiaW52ZXJ0KCRjb2xvcikiLGRlc2M6d2QoInNjc3MuYnVpbHRpbi5pbnZlcnQiLCJSZXR1cm5zIHRoZSBpbnZlcnNlIG9mIGEgY29sb3IuIil9LHtmdW5jOiJhbHBoYSgkY29sb3IpIixkZXNjOndkKCJzY3NzLmJ1aWx0aW4uYWxwaGEiLCJHZXRzIHRoZSBvcGFjaXR5IGNvbXBvbmVudCBvZiBhIGNvbG9yLiIpfSx7ZnVuYzoib3BhY2l0eSgkY29sb3IpIixkZXNjOiJHZXRzIHRoZSBhbHBoYSBjb21wb25lbnQgKG9wYWNpdHkpIG9mIGEgY29sb3IuIn0se2Z1bmM6InJnYmEoJGNvbG9yLCAkYWxwaGEpIixkZXNjOndkKCJzY3NzLmJ1aWx0aW4ucmdiYSIsIkNoYW5nZXMgdGhlIGFscGhhIGNvbXBvbmVudCBmb3IgYSBjb2xvci4iKX0se2Z1bmM6Im9wYWNpZnkoJGNvbG9yLCAkYW1vdW50KSIsZGVzYzp3ZCgic2Nzcy5idWlsdGluLm9wYWNpZnkiLCJNYWtlcyBhIGNvbG9yIG1vcmUgb3BhcXVlLiIpfSx7ZnVuYzoiZmFkZS1pbigkY29sb3IsICRhbW91bnQpIixkZXNjOndkKCJzY3NzLmJ1aWx0aW4uZmFkZS1pbiIsIk1ha2VzIGEgY29sb3IgbW9yZSBvcGFxdWUuIil9LHtmdW5jOiJ0cmFuc3BhcmVudGl6ZSgkY29sb3IsICRhbW91bnQpIixkZXNjOndkKCJzY3NzLmJ1aWx0aW4udHJhbnNwYXJlbnRpemUiLCJNYWtlcyBhIGNvbG9yIG1vcmUgdHJhbnNwYXJlbnQuIil9LHtmdW5jOiJmYWRlLW91dCgkY29sb3IsICRhbW91bnQpIixkZXNjOndkKCJzY3NzLmJ1aWx0aW4uZmFkZS1vdXQiLCJNYWtlcyBhIGNvbG9yIG1vcmUgdHJhbnNwYXJlbnQuIil9LHtmdW5jOiJhZGp1c3QtY29sb3IoJGNvbG9yLCBbJHJlZF0sIFskZ3JlZW5dLCBbJGJsdWVdLCBbJGh1ZV0sIFskc2F0dXJhdGlvbl0sIFskbGlnaHRuZXNzXSwgWyRhbHBoYV0pIixkZXNjOndkKCJzY3NzLmJ1aWx0aW4uYWRqdXN0LWNvbG9yIiwiSW5jcmVhc2VzIG9yIGRlY3JlYXNlcyBvbmUgb3IgbW9yZSBjb21wb25lbnRzIG9mIGEgY29sb3IuIil9LHtmdW5jOiJzY2FsZS1jb2xvcigkY29sb3IsIFskcmVkXSwgWyRncmVlbl0sIFskYmx1ZV0sIFskc2F0dXJhdGlvbl0sIFskbGlnaHRuZXNzXSwgWyRhbHBoYV0pIixkZXNjOndkKCJzY3NzLmJ1aWx0aW4uc2NhbGUtY29sb3IiLCJGbHVpZGx5IHNjYWxlcyBvbmUgb3IgbW9yZSBwcm9wZXJ0aWVzIG9mIGEgY29sb3IuIil9LHtmdW5jOiJjaGFuZ2UtY29sb3IoJGNvbG9yLCBbJHJlZF0sIFskZ3JlZW5dLCBbJGJsdWVdLCBbJGh1ZV0sIFskc2F0dXJhdGlvbl0sIFskbGlnaHRuZXNzXSwgWyRhbHBoYV0pIixkZXNjOndkKCJzY3NzLmJ1aWx0aW4uY2hhbmdlLWNvbG9yIiwiQ2hhbmdlcyBvbmUgb3IgbW9yZSBwcm9wZXJ0aWVzIG9mIGEgY29sb3IuIil9LHtmdW5jOiJpZS1oZXgtc3RyKCRjb2xvcikiLGRlc2M6d2QoInNjc3MuYnVpbHRpbi5pZS1oZXgtc3RyIiwiQ29udmVydHMgYSBjb2xvciBpbnRvIHRoZSBmb3JtYXQgdW5kZXJzdG9vZCBieSBJRSBmaWx0ZXJzLiIpfV0sdC5zZWxlY3RvckZ1bmNzPVt7ZnVuYzoic2VsZWN0b3ItbmVzdCgkc2VsZWN0b3Jz4oCmKSIsZGVzYzp3ZCgic2Nzcy5idWlsdGluLnNlbGVjdG9yLW5lc3QiLCJOZXN0cyBzZWxlY3RvciBiZW5lYXRoIG9uZSBhbm90aGVyIGxpa2UgdGhleSB3b3VsZCBiZSBuZXN0ZWQgaW4gdGhlIHN0eWxlc2hlZXQuIil9LHtmdW5jOiJzZWxlY3Rvci1hcHBlbmQoJHNlbGVjdG9yc+KApikiLGRlc2M6d2QoInNjc3MuYnVpbHRpbi5zZWxlY3Rvci1hcHBlbmQiLCJBcHBlbmRzIHNlbGVjdG9ycyB0byBvbmUgYW5vdGhlciB3aXRob3V0IHNwYWNlcyBpbiBiZXR3ZWVuLiIpfSx7ZnVuYzoic2VsZWN0b3ItZXh0ZW5kKCRzZWxlY3RvciwgJGV4dGVuZGVlLCAkZXh0ZW5kZXIpIixkZXNjOndkKCJzY3NzLmJ1aWx0aW4uc2VsZWN0b3ItZXh0ZW5kIiwiRXh0ZW5kcyAkZXh0ZW5kZWUgd2l0aCAkZXh0ZW5kZXIgd2l0aGluICRzZWxlY3Rvci4iKX0se2Z1bmM6InNlbGVjdG9yLXJlcGxhY2UoJHNlbGVjdG9yLCAkb3JpZ2luYWwsICRyZXBsYWNlbWVudCkiLGRlc2M6d2QoInNjc3MuYnVpbHRpbi5zZWxlY3Rvci1yZXBsYWNlIiwiUmVwbGFjZXMgJG9yaWdpbmFsIHdpdGggJHJlcGxhY2VtZW50IHdpdGhpbiAkc2VsZWN0b3IuIil9LHtmdW5jOiJzZWxlY3Rvci11bmlmeSgkc2VsZWN0b3IxLCAkc2VsZWN0b3IyKSIsZGVzYzp3ZCgic2Nzcy5idWlsdGluLnNlbGVjdG9yLXVuaWZ5IiwiVW5pZmllcyB0d28gc2VsZWN0b3JzIHRvIHByb2R1Y2UgYSBzZWxlY3RvciB0aGF0IG1hdGNoZXMgZWxlbWVudHMgbWF0Y2hlZCBieSBib3RoLiIpfSx7ZnVuYzoiaXMtc3VwZXJzZWxlY3Rvcigkc3VwZXIsICRzdWIpIixkZXNjOndkKCJzY3NzLmJ1aWx0aW4uaXMtc3VwZXJzZWxlY3RvciIsIlJldHVybnMgd2hldGhlciAkc3VwZXIgbWF0Y2hlcyBhbGwgdGhlIGVsZW1lbnRzICRzdWIgZG9lcywgYW5kIHBvc3NpYmx5IG1vcmUuIil9LHtmdW5jOiJzaW1wbGUtc2VsZWN0b3JzKCRzZWxlY3RvcikiLGRlc2M6d2QoInNjc3MuYnVpbHRpbi5zaW1wbGUtc2VsZWN0b3JzIiwiUmV0dXJucyB0aGUgc2ltcGxlIHNlbGVjdG9ycyB0aGF0IGNvbXByaXNlIGEgY29tcG91bmQgc2VsZWN0b3IuIil9LHtmdW5jOiJzZWxlY3Rvci1wYXJzZSgkc2VsZWN0b3IpIixkZXNjOndkKCJzY3NzLmJ1aWx0aW4uc2VsZWN0b3ItcGFyc2UiLCJQYXJzZXMgYSBzZWxlY3RvciBpbnRvIHRoZSBmb3JtYXQgcmV0dXJuZWQgYnkgJi4iKX1dLHQuYnVpbHRJbkZ1bmNzPVt7ZnVuYzoidW5xdW90ZSgkc3RyaW5nKSIsZGVzYzp3ZCgic2Nzcy5idWlsdGluLnVucXVvdGUiLCJSZW1vdmVzIHF1b3RlcyBmcm9tIGEgc3RyaW5nLiIpfSx7ZnVuYzoicXVvdGUoJHN0cmluZykiLGRlc2M6d2QoInNjc3MuYnVpbHRpbi5xdW90ZSIsIkFkZHMgcXVvdGVzIHRvIGEgc3RyaW5nLiIpfSx7ZnVuYzoic3RyLWxlbmd0aCgkc3RyaW5nKSIsZGVzYzp3ZCgic2Nzcy5idWlsdGluLnN0ci1sZW5ndGgiLCJSZXR1cm5zIHRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyBpbiBhIHN0cmluZy4iKX0se2Z1bmM6InN0ci1pbnNlcnQoJHN0cmluZywgJGluc2VydCwgJGluZGV4KSIsZGVzYzp3ZCgic2Nzcy5idWlsdGluLnN0ci1pbnNlcnQiLCJJbnNlcnRzICRpbnNlcnQgaW50byAkc3RyaW5nIGF0ICRpbmRleC4iKX0se2Z1bmM6InN0ci1pbmRleCgkc3RyaW5nLCAkc3Vic3RyaW5nKSIsZGVzYzp3ZCgic2Nzcy5idWlsdGluLnN0ci1pbmRleCIsIlJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBmaXJzdCBvY2N1cmFuY2Ugb2YgJHN1YnN0cmluZyBpbiAkc3RyaW5nLiIpfSx7ZnVuYzoic3RyLXNsaWNlKCRzdHJpbmcsICRzdGFydC1hdCwgWyRlbmQtYXRdKSIsZGVzYzp3ZCgic2Nzcy5idWlsdGluLnN0ci1zbGljZSIsIkV4dHJhY3RzIGEgc3Vic3RyaW5nIGZyb20gJHN0cmluZy4iKX0se2Z1bmM6InRvLXVwcGVyLWNhc2UoJHN0cmluZykiLGRlc2M6d2QoInNjc3MuYnVpbHRpbi50by11cHBlci1jYXNlIiwiQ29udmVydHMgYSBzdHJpbmcgdG8gdXBwZXIgY2FzZS4iKX0se2Z1bmM6InRvLWxvd2VyLWNhc2UoJHN0cmluZykiLGRlc2M6d2QoInNjc3MuYnVpbHRpbi50by1sb3dlci1jYXNlIiwiQ29udmVydHMgYSBzdHJpbmcgdG8gbG93ZXIgY2FzZS4iKX0se2Z1bmM6InBlcmNlbnRhZ2UoJG51bWJlcikiLGRlc2M6d2QoInNjc3MuYnVpbHRpbi5wZXJjZW50YWdlIiwiQ29udmVydHMgYSB1bml0bGVzcyBudW1iZXIgdG8gYSBwZXJjZW50YWdlLiIpLHR5cGU6InBlcmNlbnRhZ2UifSx7ZnVuYzoicm91bmQoJG51bWJlcikiLGRlc2M6d2QoInNjc3MuYnVpbHRpbi5yb3VuZCIsIlJvdW5kcyBhIG51bWJlciB0byB0aGUgbmVhcmVzdCB3aG9sZSBudW1iZXIuIil9LHtmdW5jOiJjZWlsKCRudW1iZXIpIixkZXNjOndkKCJzY3NzLmJ1aWx0aW4uY2VpbCIsIlJvdW5kcyBhIG51bWJlciB1cCB0byB0aGUgbmV4dCB3aG9sZSBudW1iZXIuIil9LHtmdW5jOiJmbG9vcigkbnVtYmVyKSIsZGVzYzp3ZCgic2Nzcy5idWlsdGluLmZsb29yIiwiUm91bmRzIGEgbnVtYmVyIGRvd24gdG8gdGhlIHByZXZpb3VzIHdob2xlIG51bWJlci4iKX0se2Z1bmM6ImFicygkbnVtYmVyKSIsZGVzYzp3ZCgic2Nzcy5idWlsdGluLmFicyIsIlJldHVybnMgdGhlIGFic29sdXRlIHZhbHVlIG9mIGEgbnVtYmVyLiIpfSx7ZnVuYzoibWluKCRudW1iZXJzKSIsZGVzYzp3ZCgic2Nzcy5idWlsdGluLm1pbiIsIkZpbmRzIHRoZSBtaW5pbXVtIG9mIHNldmVyYWwgbnVtYmVycy4iKX0se2Z1bmM6Im1heCgkbnVtYmVycykiLGRlc2M6d2QoInNjc3MuYnVpbHRpbi5tYXgiLCJGaW5kcyB0aGUgbWF4aW11bSBvZiBzZXZlcmFsIG51bWJlcnMuIil9LHtmdW5jOiJyYW5kb20oWyRsaW1pdF0pIixkZXNjOndkKCJzY3NzLmJ1aWx0aW4ucmFuZG9tIiwiUmV0dXJucyBhIHJhbmRvbSBudW1iZXIuIil9LHtmdW5jOiJsZW5ndGgoJGxpc3QpIixkZXNjOndkKCJzY3NzLmJ1aWx0aW4ubGVuZ3RoIiwiUmV0dXJucyB0aGUgbGVuZ3RoIG9mIGEgbGlzdC4iKX0se2Z1bmM6Im50aCgkbGlzdCwgJG4pIixkZXNjOndkKCJzY3NzLmJ1aWx0aW4ubnRoIiwiUmV0dXJucyBhIHNwZWNpZmljIGl0ZW0gaW4gYSBsaXN0LiIpfSx7ZnVuYzoic2V0LW50aCgkbGlzdCwgJG4sICR2YWx1ZSkiLGRlc2M6d2QoInNjc3MuYnVpbHRpbi5zZXQtbnRoIiwiUmVwbGFjZXMgdGhlIG50aCBpdGVtIGluIGEgbGlzdC4iKX0se2Z1bmM6ImpvaW4oJGxpc3QxLCAkbGlzdDIsIFskc2VwYXJhdG9yXSkiLGRlc2M6d2QoInNjc3MuYnVpbHRpbi5qb2luIiwiSm9pbnMgdG9nZXRoZXIgdHdvIGxpc3RzIGludG8gb25lLiIpfSx7ZnVuYzoiYXBwZW5kKCRsaXN0MSwgJHZhbCwgWyRzZXBhcmF0b3JdKSIsZGVzYzp3ZCgic2Nzcy5idWlsdGluLmFwcGVuZCIsIkFwcGVuZHMgYSBzaW5nbGUgdmFsdWUgb250byB0aGUgZW5kIG9mIGEgbGlzdC4iKX0se2Z1bmM6InppcCgkbGlzdHMpIixkZXNjOndkKCJzY3NzLmJ1aWx0aW4uemlwIiwiQ29tYmluZXMgc2V2ZXJhbCBsaXN0cyBpbnRvIGEgc2luZ2xlIG11bHRpZGltZW5zaW9uYWwgbGlzdC4iKX0se2Z1bmM6ImluZGV4KCRsaXN0LCAkdmFsdWUpIixkZXNjOndkKCJzY3NzLmJ1aWx0aW4uaW5kZXgiLCJSZXR1cm5zIHRoZSBwb3NpdGlvbiBvZiBhIHZhbHVlIHdpdGhpbiBhIGxpc3QuIil9LHtmdW5jOiJsaXN0LXNlcGFyYXRvcigjbGlzdCkiLGRlc2M6d2QoInNjc3MuYnVpbHRpbi5saXN0LXNlcGFyYXRvciIsIlJldHVybnMgdGhlIHNlcGFyYXRvciBvZiBhIGxpc3QuIil9LHtmdW5jOiJtYXAtZ2V0KCRtYXAsICRrZXkpIixkZXNjOndkKCJzY3NzLmJ1aWx0aW4ubWFwLWdldCIsIlJldHVybnMgdGhlIHZhbHVlIGluIGEgbWFwIGFzc29jaWF0ZWQgd2l0aCBhIGdpdmVuIGtleS4iKX0se2Z1bmM6Im1hcC1tZXJnZSgkbWFwMSwgJG1hcDIpIixkZXNjOndkKCJzY3NzLmJ1aWx0aW4ubWFwLW1lcmdlIiwiTWVyZ2VzIHR3byBtYXBzIHRvZ2V0aGVyIGludG8gYSBuZXcgbWFwLiIpfSx7ZnVuYzoibWFwLXJlbW92ZSgkbWFwLCAka2V5cykiLGRlc2M6d2QoInNjc3MuYnVpbHRpbi5tYXAtcmVtb3ZlIiwiUmV0dXJucyBhIG5ldyBtYXAgd2l0aCBrZXlzIHJlbW92ZWQuIil9LHtmdW5jOiJtYXAta2V5cygkbWFwKSIsZGVzYzp3ZCgic2Nzcy5idWlsdGluLm1hcC1rZXlzIiwiUmV0dXJucyBhIGxpc3Qgb2YgYWxsIGtleXMgaW4gYSBtYXAuIil9LHtmdW5jOiJtYXAtdmFsdWVzKCRtYXApIixkZXNjOndkKCJzY3NzLmJ1aWx0aW4ubWFwLXZhbHVlcyIsIlJldHVybnMgYSBsaXN0IG9mIGFsbCB2YWx1ZXMgaW4gYSBtYXAuIil9LHtmdW5jOiJtYXAtaGFzLWtleSgkbWFwLCAka2V5KSIsZGVzYzp3ZCgic2Nzcy5idWlsdGluLm1hcC1oYXMta2V5IiwiUmV0dXJucyB3aGV0aGVyIGEgbWFwIGhhcyBhIHZhbHVlIGFzc29jaWF0ZWQgd2l0aCBhIGdpdmVuIGtleS4iKX0se2Z1bmM6ImtleXdvcmRzKCRhcmdzKSIsZGVzYzp3ZCgic2Nzcy5idWlsdGluLmtleXdvcmRzIiwiUmV0dXJucyB0aGUga2V5d29yZHMgcGFzc2VkIHRvIGEgZnVuY3Rpb24gdGhhdCB0YWtlcyB2YXJpYWJsZSBhcmd1bWVudHMuIil9LHtmdW5jOiJmZWF0dXJlLWV4aXN0cygkZmVhdHVyZSkiLGRlc2M6d2QoInNjc3MuYnVpbHRpbi5mZWF0dXJlLWV4aXN0cyIsIlJldHVybnMgd2hldGhlciBhIGZlYXR1cmUgZXhpc3RzIGluIHRoZSBjdXJyZW50IFNhc3MgcnVudGltZS4iKX0se2Z1bmM6InZhcmlhYmxlLWV4aXN0cygkbmFtZSkiLGRlc2M6d2QoInNjc3MuYnVpbHRpbi52YXJpYWJsZS1leGlzdHMiLCJSZXR1cm5zIHdoZXRoZXIgYSB2YXJpYWJsZSB3aXRoIHRoZSBnaXZlbiBuYW1lIGV4aXN0cyBpbiB0aGUgY3VycmVudCBzY29wZS4iKX0se2Z1bmM6Imdsb2JhbC12YXJpYWJsZS1leGlzdHMoJG5hbWUpIixkZXNjOndkKCJzY3NzLmJ1aWx0aW4uZ2xvYmFsLXZhcmlhYmxlLWV4aXN0cyIsIlJldHVybnMgd2hldGhlciBhIHZhcmlhYmxlIHdpdGggdGhlIGdpdmVuIG5hbWUgZXhpc3RzIGluIHRoZSBnbG9iYWwgc2NvcGUuIil9LHtmdW5jOiJmdW5jdGlvbi1leGlzdHMoJG5hbWUpIixkZXNjOndkKCJzY3NzLmJ1aWx0aW4uZnVuY3Rpb24tZXhpc3RzIiwiUmV0dXJucyB3aGV0aGVyIGEgZnVuY3Rpb24gd2l0aCB0aGUgZ2l2ZW4gbmFtZSBleGlzdHMuIil9LHtmdW5jOiJtaXhpbi1leGlzdHMoJG5hbWUpIixkZXNjOndkKCJzY3NzLmJ1aWx0aW4ubWl4aW4tZXhpc3RzIiwiUmV0dXJucyB3aGV0aGVyIGEgbWl4aW4gd2l0aCB0aGUgZ2l2ZW4gbmFtZSBleGlzdHMuIil9LHtmdW5jOiJpbnNwZWN0KCR2YWx1ZSkiLGRlc2M6d2QoInNjc3MuYnVpbHRpbi5pbnNwZWN0IiwiUmV0dXJucyB0aGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGEgdmFsdWUgYXMgaXQgd291bGQgYmUgcmVwcmVzZW50ZWQgaW4gU2Fzcy4iKX0se2Z1bmM6InR5cGUtb2YoJHZhbHVlKSIsZGVzYzp3ZCgic2Nzcy5idWlsdGluLnR5cGUtb2YiLCJSZXR1cm5zIHRoZSB0eXBlIG9mIGEgdmFsdWUuIil9LHtmdW5jOiJ1bml0KCRudW1iZXIpIixkZXNjOndkKCJzY3NzLmJ1aWx0aW4udW5pdCIsIlJldHVybnMgdGhlIHVuaXQocykgYXNzb2NpYXRlZCB3aXRoIGEgbnVtYmVyLiIpfSx7ZnVuYzoidW5pdGxlc3MoJG51bWJlcikiLGRlc2M6d2QoInNjc3MuYnVpbHRpbi51bml0bGVzcyIsIlJldHVybnMgd2hldGhlciBhIG51bWJlciBoYXMgdW5pdHMuIil9LHtmdW5jOiJjb21wYXJhYmxlKCRudW1iZXIxLCAkbnVtYmVyMikiLGRlc2M6d2QoInNjc3MuYnVpbHRpbi5jb21wYXJhYmxlIiwiUmV0dXJucyB3aGV0aGVyIHR3byBudW1iZXJzIGNhbiBiZSBhZGRlZCwgc3VidHJhY3RlZCwgb3IgY29tcGFyZWQuIil9LHtmdW5jOiJjYWxsKCRuYW1lLCAkYXJnc+KApikiLGRlc2M6d2QoInNjc3MuYnVpbHRpbi5jYWxsIiwiRHluYW1pY2FsbHkgY2FsbHMgYSBTYXNzIGZ1bmN0aW9uLiIpfV0sdC5zY3NzQXREaXJlY3RpdmVzPVt7bGFiZWw6IkBleHRlbmQiLGRvY3VtZW50YXRpb246d2QoInNjc3MuYnVpbHRpbi5AZXh0ZW5kIiwiSW5oZXJpdHMgdGhlIHN0eWxlcyBvZiBhbm90aGVyIHNlbGVjdG9yLiIpLGtpbmQ6UmEuS2V5d29yZH0se2xhYmVsOiJAYXQtcm9vdCIsZG9jdW1lbnRhdGlvbjp3ZCgic2Nzcy5idWlsdGluLkBhdC1yb290IiwiQ2F1c2VzIG9uZSBvciBtb3JlIHJ1bGVzIHRvIGJlIGVtaXR0ZWQgYXQgdGhlIHJvb3Qgb2YgdGhlIGRvY3VtZW50LiIpLGtpbmQ6UmEuS2V5d29yZH0se2xhYmVsOiJAZGVidWciLGRvY3VtZW50YXRpb246d2QoInNjc3MuYnVpbHRpbi5AZGVidWciLCJQcmludHMgdGhlIHZhbHVlIG9mIGFuIGV4cHJlc3Npb24gdG8gdGhlIHN0YW5kYXJkIGVycm9yIG91dHB1dCBzdHJlYW0uIFVzZWZ1bCBmb3IgZGVidWdnaW5nIGNvbXBsaWNhdGVkIFNhc3MgZmlsZXMuIiksa2luZDpSYS5LZXl3b3JkfSx7bGFiZWw6IkB3YXJuIixkb2N1bWVudGF0aW9uOndkKCJzY3NzLmJ1aWx0aW4uQHdhcm4iLCJQcmludHMgdGhlIHZhbHVlIG9mIGFuIGV4cHJlc3Npb24gdG8gdGhlIHN0YW5kYXJkIGVycm9yIG91dHB1dCBzdHJlYW0uIFVzZWZ1bCBmb3IgbGlicmFyaWVzIHRoYXQgbmVlZCB0byB3YXJuIHVzZXJzIG9mIGRlcHJlY2F0aW9ucyBvciByZWNvdmVyaW5nIGZyb20gbWlub3IgbWl4aW4gdXNhZ2UgbWlzdGFrZXMuIFdhcm5pbmdzIGNhbiBiZSB0dXJuZWQgb2ZmIHdpdGggdGhlIGAtLXF1aWV0YCBjb21tYW5kLWxpbmUgb3B0aW9uIG9yIHRoZSBgOnF1aWV0YCBTYXNzIG9wdGlvbi4iKSxraW5kOlJhLktleXdvcmR9LHtsYWJlbDoiQGVycm9yIixkb2N1bWVudGF0aW9uOndkKCJzY3NzLmJ1aWx0aW4uQGVycm9yIiwiVGhyb3dzIHRoZSB2YWx1ZSBvZiBhbiBleHByZXNzaW9uIGFzIGEgZmF0YWwgZXJyb3Igd2l0aCBzdGFjayB0cmFjZS4gVXNlZnVsIGZvciB2YWxpZGF0aW5nIGFyZ3VtZW50cyB0byBtaXhpbnMgYW5kIGZ1bmN0aW9ucy4iKSxraW5kOlJhLktleXdvcmR9LHtsYWJlbDoiQGlmIixkb2N1bWVudGF0aW9uOndkKCJzY3NzLmJ1aWx0aW4uQGlmIiwiSW5jbHVkZXMgdGhlIGJvZHkgaWYgdGhlIGV4cHJlc3Npb24gZG9lcyBub3QgZXZhbHVhdGUgdG8gYGZhbHNlYCBvciBgbnVsbGAuIiksaW5zZXJ0VGV4dDoiQGlmICR7MTpleHByfSB7XG5cdCQwXG59IixpbnNlcnRUZXh0Rm9ybWF0Ok5hLlNuaXBwZXQsa2luZDpSYS5LZXl3b3JkfSx7bGFiZWw6IkBmb3IiLGRvY3VtZW50YXRpb246d2QoInNjc3MuYnVpbHRpbi5AZm9yIiwiRm9yIGxvb3AgdGhhdCByZXBlYXRlZGx5IG91dHB1dHMgYSBzZXQgb2Ygc3R5bGVzIGZvciBlYWNoIGAkdmFyYCBpbiB0aGUgYGZyb20vdGhyb3VnaGAgb3IgYGZyb20vdG9gIGNsYXVzZS4iKSxpbnNlcnRUZXh0OiJAZm9yIFxcJCR7MTp2YXJ9IGZyb20gJHsyOnN0YXJ0fSAkezN8dG8sdGhyb3VnaHx9ICR7NDplbmR9IHtcblx0JDBcbn0iLGluc2VydFRleHRGb3JtYXQ6TmEuU25pcHBldCxraW5kOlJhLktleXdvcmR9LHtsYWJlbDoiQGVhY2giLGRvY3VtZW50YXRpb246d2QoInNjc3MuYnVpbHRpbi5AZWFjaCIsIkVhY2ggbG9vcCB0aGF0IHNldHMgYCR2YXJgIHRvIGVhY2ggaXRlbSBpbiB0aGUgbGlzdCBvciBtYXAsIHRoZW4gb3V0cHV0cyB0aGUgc3R5bGVzIGl0IGNvbnRhaW5zIHVzaW5nIHRoYXQgdmFsdWUgb2YgYCR2YXJgLiIpLGluc2VydFRleHQ6IkBlYWNoIFxcJCR7MTp2YXJ9IGluICR7MjpsaXN0fSB7XG5cdCQwXG59IixpbnNlcnRUZXh0Rm9ybWF0Ok5hLlNuaXBwZXQsa2luZDpSYS5LZXl3b3JkfSx7bGFiZWw6IkB3aGlsZSIsZG9jdW1lbnRhdGlvbjp3ZCgic2Nzcy5idWlsdGluLkB3aGlsZSIsIldoaWxlIGxvb3AgdGhhdCB0YWtlcyBhbiBleHByZXNzaW9uIGFuZCByZXBlYXRlZGx5IG91dHB1dHMgdGhlIG5lc3RlZCBzdHlsZXMgdW50aWwgdGhlIHN0YXRlbWVudCBldmFsdWF0ZXMgdG8gYGZhbHNlYC4iKSxpbnNlcnRUZXh0OiJAd2hpbGUgJHsxOmNvbmRpdGlvbn0ge1xuXHQkMFxufSIsaW5zZXJ0VGV4dEZvcm1hdDpOYS5TbmlwcGV0LGtpbmQ6UmEuS2V5d29yZH0se2xhYmVsOiJAbWl4aW4iLGRvY3VtZW50YXRpb246d2QoInNjc3MuYnVpbHRpbi5AbWl4aW4iLCJEZWZpbmVzIHN0eWxlcyB0aGF0IGNhbiBiZSByZS11c2VkIHRocm91Z2hvdXQgdGhlIHN0eWxlc2hlZXQgd2l0aCBgQGluY2x1ZGVgLiIpLGluc2VydFRleHQ6IkBtaXhpbiAkezE6bmFtZX0ge1xuXHQkMFxufSIsaW5zZXJ0VGV4dEZvcm1hdDpOYS5TbmlwcGV0LGtpbmQ6UmEuS2V5d29yZH0se2xhYmVsOiJAaW5jbHVkZSIsZG9jdW1lbnRhdGlvbjp3ZCgic2Nzcy5idWlsdGluLkBpbmNsdWRlIiwiSW5jbHVkZXMgdGhlIHN0eWxlcyBkZWZpbmVkIGJ5IGFub3RoZXIgbWl4aW4gaW50byB0aGUgY3VycmVudCBydWxlLiIpLGtpbmQ6UmEuS2V5d29yZH0se2xhYmVsOiJAZnVuY3Rpb24iLGRvY3VtZW50YXRpb246d2QoInNjc3MuYnVpbHRpbi5AZnVuY3Rpb24iLCJEZWZpbmVzIGNvbXBsZXggb3BlcmF0aW9ucyB0aGF0IGNhbiBiZSByZS11c2VkIHRocm91Z2hvdXQgc3R5bGVzaGVldHMuIiksa2luZDpSYS5LZXl3b3JkfV0sdC5zY3NzTW9kdWxlTG9hZGVycz1be2xhYmVsOiJAdXNlIixkb2N1bWVudGF0aW9uOndkKCJzY3NzLmJ1aWx0aW4uQHVzZSIsIkxvYWRzIG1peGlucywgZnVuY3Rpb25zLCBhbmQgdmFyaWFibGVzIGZyb20gb3RoZXIgU2FzcyBzdHlsZXNoZWV0cyBhcyAnbW9kdWxlcycsIGFuZCBjb21iaW5lcyBDU1MgZnJvbSBtdWx0aXBsZSBzdHlsZXNoZWV0cyB0b2dldGhlci4iKSxyZWZlcmVuY2VzOlt7bmFtZToiU2FzcyBkb2N1bWVudGF0aW9uIix1cmw6Imh0dHBzOi8vc2Fzcy1sYW5nLmNvbS9kb2N1bWVudGF0aW9uL2F0LXJ1bGVzL3VzZSJ9XSxpbnNlcnRUZXh0OiJAdXNlICQwOyIsaW5zZXJ0VGV4dEZvcm1hdDpOYS5TbmlwcGV0LGtpbmQ6UmEuS2V5d29yZH0se2xhYmVsOiJAZm9yd2FyZCIsZG9jdW1lbnRhdGlvbjp3ZCgic2Nzcy5idWlsdGluLkBmb3J3YXJkIiwiTG9hZHMgYSBTYXNzIHN0eWxlc2hlZXQgYW5kIG1ha2VzIGl0cyBtaXhpbnMsIGZ1bmN0aW9ucywgYW5kIHZhcmlhYmxlcyBhdmFpbGFibGUgd2hlbiB0aGlzIHN0eWxlc2hlZXQgaXMgbG9hZGVkIHdpdGggdGhlIEB1c2UgcnVsZS4iKSxyZWZlcmVuY2VzOlt7bmFtZToiU2FzcyBkb2N1bWVudGF0aW9uIix1cmw6Imh0dHBzOi8vc2Fzcy1sYW5nLmNvbS9kb2N1bWVudGF0aW9uL2F0LXJ1bGVzL2ZvcndhcmQifV0saW5zZXJ0VGV4dDoiQGZvcndhcmQgJDA7IixpbnNlcnRUZXh0Rm9ybWF0Ok5hLlNuaXBwZXQsa2luZDpSYS5LZXl3b3JkfV0sdC5zY3NzTW9kdWxlQnVpbHRJbnM9W3tsYWJlbDoic2FzczptYXRoIixkb2N1bWVudGF0aW9uOndkKCJzY3NzLmJ1aWx0aW4uc2FzczptYXRoIiwiUHJvdmlkZXMgZnVuY3Rpb25zIHRoYXQgb3BlcmF0ZSBvbiBudW1iZXJzLiIpLHJlZmVyZW5jZXM6W3tuYW1lOiJTYXNzIGRvY3VtZW50YXRpb24iLHVybDoiaHR0cHM6Ly9zYXNzLWxhbmcuY29tL2RvY3VtZW50YXRpb24vbW9kdWxlcy9tYXRoIn1dfSx7bGFiZWw6InNhc3M6c3RyaW5nIixkb2N1bWVudGF0aW9uOndkKCJzY3NzLmJ1aWx0aW4uc2FzczpzdHJpbmciLCJNYWtlcyBpdCBlYXN5IHRvIGNvbWJpbmUsIHNlYXJjaCwgb3Igc3BsaXQgYXBhcnQgc3RyaW5ncy4iKSxyZWZlcmVuY2VzOlt7bmFtZToiU2FzcyBkb2N1bWVudGF0aW9uIix1cmw6Imh0dHBzOi8vc2Fzcy1sYW5nLmNvbS9kb2N1bWVudGF0aW9uL21vZHVsZXMvc3RyaW5nIn1dfSx7bGFiZWw6InNhc3M6Y29sb3IiLGRvY3VtZW50YXRpb246d2QoInNjc3MuYnVpbHRpbi5zYXNzOmNvbG9yIiwiR2VuZXJhdGVzIG5ldyBjb2xvcnMgYmFzZWQgb24gZXhpc3Rpbmcgb25lcywgbWFraW5nIGl0IGVhc3kgdG8gYnVpbGQgY29sb3IgdGhlbWVzLiIpLHJlZmVyZW5jZXM6W3tuYW1lOiJTYXNzIGRvY3VtZW50YXRpb24iLHVybDoiaHR0cHM6Ly9zYXNzLWxhbmcuY29tL2RvY3VtZW50YXRpb24vbW9kdWxlcy9jb2xvciJ9XX0se2xhYmVsOiJzYXNzOmxpc3QiLGRvY3VtZW50YXRpb246d2QoInNjc3MuYnVpbHRpbi5zYXNzOmxpc3QiLCJMZXRzIHlvdSBhY2Nlc3MgYW5kIG1vZGlmeSB2YWx1ZXMgaW4gbGlzdHMuIikscmVmZXJlbmNlczpbe25hbWU6IlNhc3MgZG9jdW1lbnRhdGlvbiIsdXJsOiJodHRwczovL3Nhc3MtbGFuZy5jb20vZG9jdW1lbnRhdGlvbi9tb2R1bGVzL2xpc3QifV19LHtsYWJlbDoic2FzczptYXAiLGRvY3VtZW50YXRpb246d2QoInNjc3MuYnVpbHRpbi5zYXNzOm1hcCIsIk1ha2VzIGl0IHBvc3NpYmxlIHRvIGxvb2sgdXAgdGhlIHZhbHVlIGFzc29jaWF0ZWQgd2l0aCBhIGtleSBpbiBhIG1hcCwgYW5kIG11Y2ggbW9yZS4iKSxyZWZlcmVuY2VzOlt7bmFtZToiU2FzcyBkb2N1bWVudGF0aW9uIix1cmw6Imh0dHBzOi8vc2Fzcy1sYW5nLmNvbS9kb2N1bWVudGF0aW9uL21vZHVsZXMvbWFwIn1dfSx7bGFiZWw6InNhc3M6c2VsZWN0b3IiLGRvY3VtZW50YXRpb246d2QoInNjc3MuYnVpbHRpbi5zYXNzOnNlbGVjdG9yIiwiUHJvdmlkZXMgYWNjZXNzIHRvIFNhc3PigJlzIHBvd2VyZnVsIHNlbGVjdG9yIGVuZ2luZS4iKSxyZWZlcmVuY2VzOlt7bmFtZToiU2FzcyBkb2N1bWVudGF0aW9uIix1cmw6Imh0dHBzOi8vc2Fzcy1sYW5nLmNvbS9kb2N1bWVudGF0aW9uL21vZHVsZXMvc2VsZWN0b3IifV19LHtsYWJlbDoic2FzczptZXRhIixkb2N1bWVudGF0aW9uOndkKCJzY3NzLmJ1aWx0aW4uc2FzczptZXRhIiwiRXhwb3NlcyB0aGUgZGV0YWlscyBvZiBTYXNz4oCZcyBpbm5lciB3b3JraW5ncy4iKSxyZWZlcmVuY2VzOlt7bmFtZToiU2FzcyBkb2N1bWVudGF0aW9uIix1cmw6Imh0dHBzOi8vc2Fzcy1sYW5nLmNvbS9kb2N1bWVudGF0aW9uL21vZHVsZXMvbWV0YSJ9XX1dLHR9KHFjKTtmdW5jdGlvbiBTZChlKXtlLmZvckVhY2goKGZ1bmN0aW9uKGUpe2lmKGUuZG9jdW1lbnRhdGlvbiYmZS5yZWZlcmVuY2VzJiZlLnJlZmVyZW5jZXMubGVuZ3RoPjApe3ZhciB0PSJzdHJpbmciPT10eXBlb2YgZS5kb2N1bWVudGF0aW9uP3traW5kOiJtYXJrZG93biIsdmFsdWU6ZS5kb2N1bWVudGF0aW9ufTp7a2luZDoibWFya2Rvd24iLHZhbHVlOmUuZG9jdW1lbnRhdGlvbi52YWx1ZX07dC52YWx1ZSs9IlxuXG4iLHQudmFsdWUrPWUucmVmZXJlbmNlcy5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiJbIi5jb25jYXQoZS5uYW1lLCJdKCIpLmNvbmNhdChlLnVybCwiKSIpfSkpLmpvaW4oIiB8ICIpLGUuZG9jdW1lbnRhdGlvbj10fX0pKX12YXIgQ2Qsa2QsX2QsRWQ9ZnVuY3Rpb24oKXt2YXIgZT1mdW5jdGlvbih0LG4pe3JldHVybihlPU9iamVjdC5zZXRQcm90b3R5cGVPZnx8e19fcHJvdG9fXzpbXX1pbnN0YW5jZW9mIEFycmF5JiZmdW5jdGlvbihlLHQpe2UuX19wcm90b19fPXR9fHxmdW5jdGlvbihlLHQpe2Zvcih2YXIgbiBpbiB0KU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LG4pJiYoZVtuXT10W25dKX0pKHQsbil9O3JldHVybiBmdW5jdGlvbih0LG4pe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBuJiZudWxsIT09bil0aHJvdyBuZXcgVHlwZUVycm9yKCJDbGFzcyBleHRlbmRzIHZhbHVlICIrU3RyaW5nKG4pKyIgaXMgbm90IGEgY29uc3RydWN0b3Igb3IgbnVsbCIpO2Z1bmN0aW9uIHIoKXt0aGlzLmNvbnN0cnVjdG9yPXR9ZSh0LG4pLHQucHJvdG90eXBlPW51bGw9PT1uP09iamVjdC5jcmVhdGUobik6KHIucHJvdG90eXBlPW4ucHJvdG90eXBlLG5ldyByKX19KCksUmQ9Ii8iLmNoYXJDb2RlQXQoMCksRmQ9IlxuIi5jaGFyQ29kZUF0KDApLE5kPSJcciIuY2hhckNvZGVBdCgwKSxEZD0iXGYiLmNoYXJDb2RlQXQoMCksVGQ9ImAiLmNoYXJDb2RlQXQoMCksQWQ9Ii4iLmNoYXJDb2RlQXQoMCksTWQ9anIuQ3VzdG9tVG9rZW4semQ9TWQrKyxJZD1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KCl7cmV0dXJuIG51bGwhPT1lJiZlLmFwcGx5KHRoaXMsYXJndW1lbnRzKXx8dGhpc31yZXR1cm4gRWQodCxlKSx0LnByb3RvdHlwZS5zY2FuTmV4dD1mdW5jdGlvbih0KXt2YXIgbj10aGlzLmVzY2FwZWRKYXZhU2NyaXB0KCk7cmV0dXJuIG51bGwhPT1uP3RoaXMuZmluaXNoVG9rZW4odCxuKTp0aGlzLnN0cmVhbS5hZHZhbmNlSWZDaGFycyhbQWQsQWQsQWRdKT90aGlzLmZpbmlzaFRva2VuKHQsemQpOmUucHJvdG90eXBlLnNjYW5OZXh0LmNhbGwodGhpcyx0KX0sdC5wcm90b3R5cGUuY29tbWVudD1mdW5jdGlvbigpe3JldHVybiEhZS5wcm90b3R5cGUuY29tbWVudC5jYWxsKHRoaXMpfHwhKHRoaXMuaW5VUkx8fCF0aGlzLnN0cmVhbS5hZHZhbmNlSWZDaGFycyhbUmQsUmRdKSkmJih0aGlzLnN0cmVhbS5hZHZhbmNlV2hpbGVDaGFyKChmdW5jdGlvbihlKXtzd2l0Y2goZSl7Y2FzZSBGZDpjYXNlIE5kOmNhc2UgRGQ6cmV0dXJuITE7ZGVmYXVsdDpyZXR1cm4hMH19KSksITApfSx0LnByb3RvdHlwZS5lc2NhcGVkSmF2YVNjcmlwdD1mdW5jdGlvbigpe3JldHVybiB0aGlzLnN0cmVhbS5wZWVrQ2hhcigpPT09VGQ/KHRoaXMuc3RyZWFtLmFkdmFuY2UoMSksdGhpcy5zdHJlYW0uYWR2YW5jZVdoaWxlQ2hhcigoZnVuY3Rpb24oZSl7cmV0dXJuIGUhPT1UZH0pKSx0aGlzLnN0cmVhbS5hZHZhbmNlSWZDaGFyKFRkKT9qci5Fc2NhcGVkSmF2YVNjcmlwdDpqci5CYWRFc2NhcGVkSmF2YVNjcmlwdCk6bnVsbH0sdH0oT2kpLFBkPWZ1bmN0aW9uKCl7dmFyIGU9ZnVuY3Rpb24odCxuKXtyZXR1cm4oZT1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fHtfX3Byb3RvX186W119aW5zdGFuY2VvZiBBcnJheSYmZnVuY3Rpb24oZSx0KXtlLl9fcHJvdG9fXz10fXx8ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG4gaW4gdClPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxuKSYmKGVbbl09dFtuXSl9KSh0LG4pfTtyZXR1cm4gZnVuY3Rpb24odCxuKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgbiYmbnVsbCE9PW4pdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSAiK1N0cmluZyhuKSsiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIG51bGwiKTtmdW5jdGlvbiByKCl7dGhpcy5jb25zdHJ1Y3Rvcj10fWUodCxuKSx0LnByb3RvdHlwZT1udWxsPT09bj9PYmplY3QuY3JlYXRlKG4pOihyLnByb3RvdHlwZT1uLnByb3RvdHlwZSxuZXcgcil9fSgpLExkPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoKXtyZXR1cm4gZS5jYWxsKHRoaXMsbmV3IElkKXx8dGhpc31yZXR1cm4gUGQodCxlKSx0LnByb3RvdHlwZS5fcGFyc2VTdHlsZXNoZWV0U3RhdGVtZW50PWZ1bmN0aW9uKHQpe3JldHVybiB2b2lkIDA9PT10JiYodD0hMSksdGhpcy5wZWVrKGpyLkF0S2V5d29yZCk/dGhpcy5fcGFyc2VWYXJpYWJsZURlY2xhcmF0aW9uKCl8fHRoaXMuX3BhcnNlUGx1Z2luKCl8fGUucHJvdG90eXBlLl9wYXJzZVN0eWxlc2hlZXRBdFN0YXRlbWVudC5jYWxsKHRoaXMsdCk6dGhpcy5fdHJ5UGFyc2VNaXhpbkRlY2xhcmF0aW9uKCl8fHRoaXMuX3RyeVBhcnNlTWl4aW5SZWZlcmVuY2UoKXx8dGhpcy5fcGFyc2VGdW5jdGlvbigpfHx0aGlzLl9wYXJzZVJ1bGVzZXQoITApfSx0LnByb3RvdHlwZS5fcGFyc2VJbXBvcnQ9ZnVuY3Rpb24oKXtpZighdGhpcy5wZWVrS2V5d29yZCgiQGltcG9ydCIpJiYhdGhpcy5wZWVrS2V5d29yZCgiQGltcG9ydC1vbmNlIikpcmV0dXJuIG51bGw7dmFyIGU9dGhpcy5jcmVhdGUoUm8pO2lmKHRoaXMuY29uc3VtZVRva2VuKCksdGhpcy5hY2NlcHQoanIuUGFyZW50aGVzaXNMKSl7aWYoIXRoaXMuYWNjZXB0KGpyLklkZW50KSlyZXR1cm4gdGhpcy5maW5pc2goZSxmYS5JZGVudGlmaWVyRXhwZWN0ZWQsW2pyLlNlbWlDb2xvbl0pO2Rve2lmKCF0aGlzLmFjY2VwdChqci5Db21tYSkpYnJlYWt9d2hpbGUodGhpcy5hY2NlcHQoanIuSWRlbnQpKTtpZighdGhpcy5hY2NlcHQoanIuUGFyZW50aGVzaXNSKSlyZXR1cm4gdGhpcy5maW5pc2goZSxmYS5SaWdodFBhcmVudGhlc2lzRXhwZWN0ZWQsW2pyLlNlbWlDb2xvbl0pfXJldHVybiBlLmFkZENoaWxkKHRoaXMuX3BhcnNlVVJJTGl0ZXJhbCgpKXx8ZS5hZGRDaGlsZCh0aGlzLl9wYXJzZVN0cmluZ0xpdGVyYWwoKSk/KHRoaXMucGVlayhqci5TZW1pQ29sb24pfHx0aGlzLnBlZWsoanIuRU9GKXx8ZS5zZXRNZWRpYWxpc3QodGhpcy5fcGFyc2VNZWRpYVF1ZXJ5TGlzdCgpKSx0aGlzLmZpbmlzaChlKSk6dGhpcy5maW5pc2goZSxmYS5VUklPclN0cmluZ0V4cGVjdGVkLFtqci5TZW1pQ29sb25dKX0sdC5wcm90b3R5cGUuX3BhcnNlUGx1Z2luPWZ1bmN0aW9uKCl7aWYoIXRoaXMucGVla0tleXdvcmQoIkBwbHVnaW4iKSlyZXR1cm4gbnVsbDt2YXIgZT10aGlzLmNyZWF0ZU5vZGUoamkuUGx1Z2luKTtyZXR1cm4gdGhpcy5jb25zdW1lVG9rZW4oKSxlLmFkZENoaWxkKHRoaXMuX3BhcnNlU3RyaW5nTGl0ZXJhbCgpKT90aGlzLmFjY2VwdChqci5TZW1pQ29sb24pP3RoaXMuZmluaXNoKGUpOnRoaXMuZmluaXNoKGUsZmEuU2VtaUNvbG9uRXhwZWN0ZWQpOnRoaXMuZmluaXNoKGUsZmEuU3RyaW5nTGl0ZXJhbEV4cGVjdGVkKX0sdC5wcm90b3R5cGUuX3BhcnNlTWVkaWFRdWVyeT1mdW5jdGlvbigpe3ZhciB0PWUucHJvdG90eXBlLl9wYXJzZU1lZGlhUXVlcnkuY2FsbCh0aGlzKTtpZighdCl7dmFyIG49dGhpcy5jcmVhdGUoTG8pO3JldHVybiBuLmFkZENoaWxkKHRoaXMuX3BhcnNlVmFyaWFibGUoKSk/dGhpcy5maW5pc2gobik6bnVsbH1yZXR1cm4gdH0sdC5wcm90b3R5cGUuX3BhcnNlTWVkaWFEZWNsYXJhdGlvbj1mdW5jdGlvbihlKXtyZXR1cm4gdm9pZCAwPT09ZSYmKGU9ITEpLHRoaXMuX3RyeVBhcnNlUnVsZXNldChlKXx8dGhpcy5fdHJ5VG9QYXJzZURlY2xhcmF0aW9uKCl8fHRoaXMuX3RyeVBhcnNlTWl4aW5EZWNsYXJhdGlvbigpfHx0aGlzLl90cnlQYXJzZU1peGluUmVmZXJlbmNlKCl8fHRoaXMuX3BhcnNlRGV0YWNoZWRSdWxlU2V0TWl4aW4oKXx8dGhpcy5fcGFyc2VTdHlsZXNoZWV0U3RhdGVtZW50KGUpfSx0LnByb3RvdHlwZS5fcGFyc2VNZWRpYUZlYXR1cmVOYW1lPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3BhcnNlSWRlbnQoKXx8dGhpcy5fcGFyc2VWYXJpYWJsZSgpfSx0LnByb3RvdHlwZS5fcGFyc2VWYXJpYWJsZURlY2xhcmF0aW9uPWZ1bmN0aW9uKGUpe3ZvaWQgMD09PWUmJihlPVtdKTt2YXIgdD10aGlzLmNyZWF0ZSh0cyksbj10aGlzLm1hcmsoKTtpZighdC5zZXRWYXJpYWJsZSh0aGlzLl9wYXJzZVZhcmlhYmxlKCEwKSkpcmV0dXJuIG51bGw7aWYoIXRoaXMuYWNjZXB0KGpyLkNvbG9uKSlyZXR1cm4gdGhpcy5yZXN0b3JlQXRNYXJrKG4pLG51bGw7aWYodGhpcy5wcmV2VG9rZW4mJih0LmNvbG9uUG9zaXRpb249dGhpcy5wcmV2VG9rZW4ub2Zmc2V0KSx0LnNldFZhbHVlKHRoaXMuX3BhcnNlRGV0YWNoZWRSdWxlU2V0KCkpKXQubmVlZHNTZW1pY29sb249ITE7ZWxzZSBpZighdC5zZXRWYWx1ZSh0aGlzLl9wYXJzZUV4cHIoKSkpcmV0dXJuIHRoaXMuZmluaXNoKHQsZmEuVmFyaWFibGVWYWx1ZUV4cGVjdGVkLFtdLGUpO3JldHVybiB0LmFkZENoaWxkKHRoaXMuX3BhcnNlUHJpbygpKSx0aGlzLnBlZWsoanIuU2VtaUNvbG9uKSYmKHQuc2VtaWNvbG9uUG9zaXRpb249dGhpcy50b2tlbi5vZmZzZXQpLHRoaXMuZmluaXNoKHQpfSx0LnByb3RvdHlwZS5fcGFyc2VEZXRhY2hlZFJ1bGVTZXQ9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLm1hcmsoKTtpZih0aGlzLnBlZWtEZWxpbSgiIyIpfHx0aGlzLnBlZWtEZWxpbSgiLiIpKXtpZih0aGlzLmNvbnN1bWVUb2tlbigpLHRoaXMuaGFzV2hpdGVzcGFjZSgpfHwhdGhpcy5hY2NlcHQoanIuUGFyZW50aGVzaXNMKSlyZXR1cm4gdGhpcy5yZXN0b3JlQXRNYXJrKGUpLG51bGw7dmFyIHQ9dGhpcy5jcmVhdGUobHMpO2lmKHQuZ2V0UGFyYW1ldGVycygpLmFkZENoaWxkKHRoaXMuX3BhcnNlTWl4aW5QYXJhbWV0ZXIoKSkpZm9yKDsodGhpcy5hY2NlcHQoanIuQ29tbWEpfHx0aGlzLmFjY2VwdChqci5TZW1pQ29sb24pKSYmIXRoaXMucGVlayhqci5QYXJlbnRoZXNpc1IpOyl0LmdldFBhcmFtZXRlcnMoKS5hZGRDaGlsZCh0aGlzLl9wYXJzZU1peGluUGFyYW1ldGVyKCkpfHx0aGlzLm1hcmtFcnJvcih0LGZhLklkZW50aWZpZXJFeHBlY3RlZCxbXSxbanIuUGFyZW50aGVzaXNSXSk7aWYoIXRoaXMuYWNjZXB0KGpyLlBhcmVudGhlc2lzUikpcmV0dXJuIHRoaXMucmVzdG9yZUF0TWFyayhlKSxudWxsfWlmKCF0aGlzLnBlZWsoanIuQ3VybHlMKSlyZXR1cm4gbnVsbDt2YXIgbj10aGlzLmNyZWF0ZShybyk7cmV0dXJuIHRoaXMuX3BhcnNlQm9keShuLHRoaXMuX3BhcnNlRGV0YWNoZWRSdWxlU2V0Qm9keS5iaW5kKHRoaXMpKSx0aGlzLmZpbmlzaChuKX0sdC5wcm90b3R5cGUuX3BhcnNlRGV0YWNoZWRSdWxlU2V0Qm9keT1mdW5jdGlvbigpe3JldHVybiB0aGlzLl90cnlQYXJzZUtleWZyYW1lU2VsZWN0b3IoKXx8dGhpcy5fcGFyc2VSdWxlU2V0RGVjbGFyYXRpb24oKX0sdC5wcm90b3R5cGUuX2FkZExvb2t1cENoaWxkcmVuPWZ1bmN0aW9uKGUpe2lmKCFlLmFkZENoaWxkKHRoaXMuX3BhcnNlTG9va3VwVmFsdWUoKSkpcmV0dXJuITE7Zm9yKHZhciB0PSExO3RoaXMucGVlayhqci5CcmFja2V0TCkmJih0PSEwKSxlLmFkZENoaWxkKHRoaXMuX3BhcnNlTG9va3VwVmFsdWUoKSk7KXQ9ITE7cmV0dXJuIXR9LHQucHJvdG90eXBlLl9wYXJzZUxvb2t1cFZhbHVlPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5jcmVhdGUoWWkpLHQ9dGhpcy5tYXJrKCk7cmV0dXJuIHRoaXMuYWNjZXB0KGpyLkJyYWNrZXRMKSYmKChlLmFkZENoaWxkKHRoaXMuX3BhcnNlVmFyaWFibGUoITEsITApKXx8ZS5hZGRDaGlsZCh0aGlzLl9wYXJzZVByb3BlcnR5SWRlbnRpZmllcigpKSkmJnRoaXMuYWNjZXB0KGpyLkJyYWNrZXRSKXx8dGhpcy5hY2NlcHQoanIuQnJhY2tldFIpKT9lOih0aGlzLnJlc3RvcmVBdE1hcmsodCksbnVsbCl9LHQucHJvdG90eXBlLl9wYXJzZVZhcmlhYmxlPWZ1bmN0aW9uKGUsdCl7dm9pZCAwPT09ZSYmKGU9ITEpLHZvaWQgMD09PXQmJih0PSExKTt2YXIgbj0hZSYmdGhpcy5wZWVrRGVsaW0oIiQiKTtpZighdGhpcy5wZWVrRGVsaW0oIkAiKSYmIW4mJiF0aGlzLnBlZWsoanIuQXRLZXl3b3JkKSlyZXR1cm4gbnVsbDtmb3IodmFyIHI9dGhpcy5jcmVhdGUocnMpLGk9dGhpcy5tYXJrKCk7dGhpcy5hY2NlcHREZWxpbSgiQCIpfHwhZSYmdGhpcy5hY2NlcHREZWxpbSgiJCIpOylpZih0aGlzLmhhc1doaXRlc3BhY2UoKSlyZXR1cm4gdGhpcy5yZXN0b3JlQXRNYXJrKGkpLG51bGw7cmV0dXJuKHRoaXMuYWNjZXB0KGpyLkF0S2V5d29yZCl8fHRoaXMuYWNjZXB0KGpyLklkZW50KSkmJih0fHwhdGhpcy5wZWVrKGpyLkJyYWNrZXRMKXx8dGhpcy5fYWRkTG9va3VwQ2hpbGRyZW4ocikpP3I6KHRoaXMucmVzdG9yZUF0TWFyayhpKSxudWxsKX0sdC5wcm90b3R5cGUuX3BhcnNlVGVybUV4cHJlc3Npb249ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcGFyc2VWYXJpYWJsZSgpfHx0aGlzLl9wYXJzZUVzY2FwZWQoKXx8ZS5wcm90b3R5cGUuX3BhcnNlVGVybUV4cHJlc3Npb24uY2FsbCh0aGlzKXx8dGhpcy5fdHJ5UGFyc2VNaXhpblJlZmVyZW5jZSghMSl9LHQucHJvdG90eXBlLl9wYXJzZUVzY2FwZWQ9ZnVuY3Rpb24oKXtpZih0aGlzLnBlZWsoanIuRXNjYXBlZEphdmFTY3JpcHQpfHx0aGlzLnBlZWsoanIuQmFkRXNjYXBlZEphdmFTY3JpcHQpKXt2YXIgZT10aGlzLmNyZWF0ZU5vZGUoamkuRXNjYXBlZFZhbHVlKTtyZXR1cm4gdGhpcy5jb25zdW1lVG9rZW4oKSx0aGlzLmZpbmlzaChlKX1pZih0aGlzLnBlZWtEZWxpbSgifiIpKXtlPXRoaXMuY3JlYXRlTm9kZShqaS5Fc2NhcGVkVmFsdWUpO3JldHVybiB0aGlzLmNvbnN1bWVUb2tlbigpLHRoaXMuYWNjZXB0KGpyLlN0cmluZyl8fHRoaXMuYWNjZXB0KGpyLkVzY2FwZWRKYXZhU2NyaXB0KT90aGlzLmZpbmlzaChlKTp0aGlzLmZpbmlzaChlLGZhLlRlcm1FeHBlY3RlZCl9cmV0dXJuIG51bGx9LHQucHJvdG90eXBlLl9wYXJzZU9wZXJhdG9yPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fcGFyc2VHdWFyZE9wZXJhdG9yKCk7cmV0dXJuIHR8fGUucHJvdG90eXBlLl9wYXJzZU9wZXJhdG9yLmNhbGwodGhpcyl9LHQucHJvdG90eXBlLl9wYXJzZUd1YXJkT3BlcmF0b3I9ZnVuY3Rpb24oKXtpZih0aGlzLnBlZWtEZWxpbSgiPiIpKXt2YXIgZT10aGlzLmNyZWF0ZU5vZGUoamkuT3BlcmF0b3IpO3JldHVybiB0aGlzLmNvbnN1bWVUb2tlbigpLHRoaXMuYWNjZXB0RGVsaW0oIj0iKSxlfWlmKHRoaXMucGVla0RlbGltKCI9Iikpe2U9dGhpcy5jcmVhdGVOb2RlKGppLk9wZXJhdG9yKTtyZXR1cm4gdGhpcy5jb25zdW1lVG9rZW4oKSx0aGlzLmFjY2VwdERlbGltKCI8IiksZX1pZih0aGlzLnBlZWtEZWxpbSgiPCIpKXtlPXRoaXMuY3JlYXRlTm9kZShqaS5PcGVyYXRvcik7cmV0dXJuIHRoaXMuY29uc3VtZVRva2VuKCksdGhpcy5hY2NlcHREZWxpbSgiPSIpLGV9cmV0dXJuIG51bGx9LHQucHJvdG90eXBlLl9wYXJzZVJ1bGVTZXREZWNsYXJhdGlvbj1mdW5jdGlvbigpe3JldHVybiB0aGlzLnBlZWsoanIuQXRLZXl3b3JkKT90aGlzLl9wYXJzZUtleWZyYW1lKCl8fHRoaXMuX3BhcnNlTWVkaWEoITApfHx0aGlzLl9wYXJzZUltcG9ydCgpfHx0aGlzLl9wYXJzZVN1cHBvcnRzKCEwKXx8dGhpcy5fcGFyc2VEZXRhY2hlZFJ1bGVTZXRNaXhpbigpfHx0aGlzLl9wYXJzZVZhcmlhYmxlRGVjbGFyYXRpb24oKXx8ZS5wcm90b3R5cGUuX3BhcnNlUnVsZVNldERlY2xhcmF0aW9uQXRTdGF0ZW1lbnQuY2FsbCh0aGlzKTp0aGlzLl90cnlQYXJzZU1peGluRGVjbGFyYXRpb24oKXx8dGhpcy5fdHJ5UGFyc2VSdWxlc2V0KCEwKXx8dGhpcy5fdHJ5UGFyc2VNaXhpblJlZmVyZW5jZSgpfHx0aGlzLl9wYXJzZUZ1bmN0aW9uKCl8fHRoaXMuX3BhcnNlRXh0ZW5kKCl8fGUucHJvdG90eXBlLl9wYXJzZVJ1bGVTZXREZWNsYXJhdGlvbi5jYWxsKHRoaXMpfSx0LnByb3RvdHlwZS5fcGFyc2VLZXlmcmFtZUlkZW50PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3BhcnNlSWRlbnQoWyRpLktleWZyYW1lXSl8fHRoaXMuX3BhcnNlVmFyaWFibGUoKX0sdC5wcm90b3R5cGUuX3BhcnNlS2V5ZnJhbWVTZWxlY3Rvcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9wYXJzZURldGFjaGVkUnVsZVNldE1peGluKCl8fGUucHJvdG90eXBlLl9wYXJzZUtleWZyYW1lU2VsZWN0b3IuY2FsbCh0aGlzKX0sdC5wcm90b3R5cGUuX3BhcnNlU2ltcGxlU2VsZWN0b3JCb2R5PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3BhcnNlU2VsZWN0b3JDb21iaW5hdG9yKCl8fGUucHJvdG90eXBlLl9wYXJzZVNpbXBsZVNlbGVjdG9yQm9keS5jYWxsKHRoaXMpfSx0LnByb3RvdHlwZS5fcGFyc2VTZWxlY3Rvcj1mdW5jdGlvbihlKXt2YXIgdD10aGlzLmNyZWF0ZShvbyksbj0hMTtmb3IoZSYmKG49dC5hZGRDaGlsZCh0aGlzLl9wYXJzZUNvbWJpbmF0b3IoKSkpO3QuYWRkQ2hpbGQodGhpcy5fcGFyc2VTaW1wbGVTZWxlY3RvcigpKTspe249ITA7dmFyIHI9dGhpcy5tYXJrKCk7aWYodC5hZGRDaGlsZCh0aGlzLl9wYXJzZUd1YXJkKCkpJiZ0aGlzLnBlZWsoanIuQ3VybHlMKSlicmVhazt0aGlzLnJlc3RvcmVBdE1hcmsociksdC5hZGRDaGlsZCh0aGlzLl9wYXJzZUNvbWJpbmF0b3IoKSl9cmV0dXJuIG4/dGhpcy5maW5pc2godCk6bnVsbH0sdC5wcm90b3R5cGUuX3BhcnNlU2VsZWN0b3JDb21iaW5hdG9yPWZ1bmN0aW9uKCl7aWYodGhpcy5wZWVrRGVsaW0oIiYiKSl7dmFyIGU9dGhpcy5jcmVhdGVOb2RlKGppLlNlbGVjdG9yQ29tYmluYXRvcik7Zm9yKHRoaXMuY29uc3VtZVRva2VuKCk7IXRoaXMuaGFzV2hpdGVzcGFjZSgpJiYodGhpcy5hY2NlcHREZWxpbSgiLSIpfHx0aGlzLmFjY2VwdChqci5OdW0pfHx0aGlzLmFjY2VwdChqci5EaW1lbnNpb24pfHxlLmFkZENoaWxkKHRoaXMuX3BhcnNlSWRlbnQoKSl8fHRoaXMuYWNjZXB0RGVsaW0oIiYiKSk7KTtyZXR1cm4gdGhpcy5maW5pc2goZSl9cmV0dXJuIG51bGx9LHQucHJvdG90eXBlLl9wYXJzZVNlbGVjdG9ySWRlbnQ9ZnVuY3Rpb24oKXtpZighdGhpcy5wZWVrSW50ZXJwb2xhdGVkSWRlbnQoKSlyZXR1cm4gbnVsbDt2YXIgZT10aGlzLmNyZWF0ZU5vZGUoamkuU2VsZWN0b3JJbnRlcnBvbGF0aW9uKTtyZXR1cm4gdGhpcy5fYWNjZXB0SW50ZXJwb2xhdGVkSWRlbnQoZSk/dGhpcy5maW5pc2goZSk6bnVsbH0sdC5wcm90b3R5cGUuX3BhcnNlUHJvcGVydHlJZGVudGlmaWVyPWZ1bmN0aW9uKGUpe3ZvaWQgMD09PWUmJihlPSExKTt2YXIgdD0vXltcdy1dKy87aWYoIXRoaXMucGVla0ludGVycG9sYXRlZElkZW50KCkmJiF0aGlzLnBlZWtSZWdFeHAodGhpcy50b2tlbi50eXBlLHQpKXJldHVybiBudWxsO3ZhciBuPXRoaXMubWFyaygpLHI9dGhpcy5jcmVhdGUoZW8pO3IuaXNDdXN0b21Qcm9wZXJ0eT10aGlzLmFjY2VwdERlbGltKCItIikmJnRoaXMuYWNjZXB0RGVsaW0oIi0iKTtyZXR1cm4oZT9yLmlzQ3VzdG9tUHJvcGVydHk/ci5hZGRDaGlsZCh0aGlzLl9wYXJzZUlkZW50KCkpOnIuYWRkQ2hpbGQodGhpcy5fcGFyc2VSZWdleHAodCkpOnIuaXNDdXN0b21Qcm9wZXJ0eT90aGlzLl9hY2NlcHRJbnRlcnBvbGF0ZWRJZGVudChyKTp0aGlzLl9hY2NlcHRJbnRlcnBvbGF0ZWRJZGVudChyLHQpKT8oZXx8dGhpcy5oYXNXaGl0ZXNwYWNlKCl8fCh0aGlzLmFjY2VwdERlbGltKCIrIiksdGhpcy5oYXNXaGl0ZXNwYWNlKCl8fHRoaXMuYWNjZXB0SWRlbnQoIl8iKSksdGhpcy5maW5pc2gocikpOih0aGlzLnJlc3RvcmVBdE1hcmsobiksbnVsbCl9LHQucHJvdG90eXBlLnBlZWtJbnRlcnBvbGF0ZWRJZGVudD1mdW5jdGlvbigpe3JldHVybiB0aGlzLnBlZWsoanIuSWRlbnQpfHx0aGlzLnBlZWtEZWxpbSgiQCIpfHx0aGlzLnBlZWtEZWxpbSgiJCIpfHx0aGlzLnBlZWtEZWxpbSgiLSIpfSx0LnByb3RvdHlwZS5fYWNjZXB0SW50ZXJwb2xhdGVkSWRlbnQ9ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG49dGhpcyxyPSExLGk9ZnVuY3Rpb24oKXt2YXIgZT1uLm1hcmsoKTtyZXR1cm4gbi5hY2NlcHREZWxpbSgiLSIpJiYobi5oYXNXaGl0ZXNwYWNlKCl8fG4uYWNjZXB0RGVsaW0oIi0iKSxuLmhhc1doaXRlc3BhY2UoKSk/KG4ucmVzdG9yZUF0TWFyayhlKSxudWxsKTpuLl9wYXJzZUludGVycG9sYXRpb24oKX0sbz10P2Z1bmN0aW9uKCl7cmV0dXJuIG4uYWNjZXB0UmVnZXhwKHQpfTpmdW5jdGlvbigpe3JldHVybiBuLmFjY2VwdChqci5JZGVudCl9OyhvKCl8fGUuYWRkQ2hpbGQodGhpcy5fcGFyc2VJbnRlcnBvbGF0aW9uKCl8fHRoaXMudHJ5KGkpKSkmJihyPSEwLCF0aGlzLmhhc1doaXRlc3BhY2UoKSk7KTtyZXR1cm4gcn0sdC5wcm90b3R5cGUuX3BhcnNlSW50ZXJwb2xhdGlvbj1mdW5jdGlvbigpe3ZhciBlPXRoaXMubWFyaygpO2lmKHRoaXMucGVla0RlbGltKCJAIil8fHRoaXMucGVla0RlbGltKCIkIikpe3ZhciB0PXRoaXMuY3JlYXRlTm9kZShqaS5JbnRlcnBvbGF0aW9uKTtyZXR1cm4gdGhpcy5jb25zdW1lVG9rZW4oKSx0aGlzLmhhc1doaXRlc3BhY2UoKXx8IXRoaXMuYWNjZXB0KGpyLkN1cmx5TCk/KHRoaXMucmVzdG9yZUF0TWFyayhlKSxudWxsKTp0LmFkZENoaWxkKHRoaXMuX3BhcnNlSWRlbnQoKSk/dGhpcy5hY2NlcHQoanIuQ3VybHlSKT90aGlzLmZpbmlzaCh0KTp0aGlzLmZpbmlzaCh0LGZhLlJpZ2h0Q3VybHlFeHBlY3RlZCk6dGhpcy5maW5pc2godCxmYS5JZGVudGlmaWVyRXhwZWN0ZWQpfXJldHVybiBudWxsfSx0LnByb3RvdHlwZS5fdHJ5UGFyc2VNaXhpbkRlY2xhcmF0aW9uPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5tYXJrKCksdD10aGlzLmNyZWF0ZShscyk7aWYoIXQuc2V0SWRlbnRpZmllcih0aGlzLl9wYXJzZU1peGluRGVjbGFyYXRpb25JZGVudGlmaWVyKCkpfHwhdGhpcy5hY2NlcHQoanIuUGFyZW50aGVzaXNMKSlyZXR1cm4gdGhpcy5yZXN0b3JlQXRNYXJrKGUpLG51bGw7aWYodC5nZXRQYXJhbWV0ZXJzKCkuYWRkQ2hpbGQodGhpcy5fcGFyc2VNaXhpblBhcmFtZXRlcigpKSlmb3IoOyh0aGlzLmFjY2VwdChqci5Db21tYSl8fHRoaXMuYWNjZXB0KGpyLlNlbWlDb2xvbikpJiYhdGhpcy5wZWVrKGpyLlBhcmVudGhlc2lzUik7KXQuZ2V0UGFyYW1ldGVycygpLmFkZENoaWxkKHRoaXMuX3BhcnNlTWl4aW5QYXJhbWV0ZXIoKSl8fHRoaXMubWFya0Vycm9yKHQsZmEuSWRlbnRpZmllckV4cGVjdGVkLFtdLFtqci5QYXJlbnRoZXNpc1JdKTtyZXR1cm4gdGhpcy5hY2NlcHQoanIuUGFyZW50aGVzaXNSKT8odC5zZXRHdWFyZCh0aGlzLl9wYXJzZUd1YXJkKCkpLHRoaXMucGVlayhqci5DdXJseUwpP3RoaXMuX3BhcnNlQm9keSh0LHRoaXMuX3BhcnNlTWl4SW5Cb2R5RGVjbGFyYXRpb24uYmluZCh0aGlzKSk6KHRoaXMucmVzdG9yZUF0TWFyayhlKSxudWxsKSk6KHRoaXMucmVzdG9yZUF0TWFyayhlKSxudWxsKX0sdC5wcm90b3R5cGUuX3BhcnNlTWl4SW5Cb2R5RGVjbGFyYXRpb249ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcGFyc2VGb250RmFjZSgpfHx0aGlzLl9wYXJzZVJ1bGVTZXREZWNsYXJhdGlvbigpfSx0LnByb3RvdHlwZS5fcGFyc2VNaXhpbkRlY2xhcmF0aW9uSWRlbnRpZmllcj1mdW5jdGlvbigpe3ZhciBlO2lmKHRoaXMucGVla0RlbGltKCIjIil8fHRoaXMucGVla0RlbGltKCIuIikpe2lmKGU9dGhpcy5jcmVhdGUoZW8pLHRoaXMuY29uc3VtZVRva2VuKCksdGhpcy5oYXNXaGl0ZXNwYWNlKCl8fCFlLmFkZENoaWxkKHRoaXMuX3BhcnNlSWRlbnQoKSkpcmV0dXJuIG51bGx9ZWxzZXtpZighdGhpcy5wZWVrKGpyLkhhc2gpKXJldHVybiBudWxsO2U9dGhpcy5jcmVhdGUoZW8pLHRoaXMuY29uc3VtZVRva2VuKCl9cmV0dXJuIGUucmVmZXJlbmNlVHlwZXM9WyRpLk1peGluXSx0aGlzLmZpbmlzaChlKX0sdC5wcm90b3R5cGUuX3BhcnNlUHNldWRvPWZ1bmN0aW9uKCl7aWYoIXRoaXMucGVlayhqci5Db2xvbikpcmV0dXJuIG51bGw7dmFyIHQ9dGhpcy5tYXJrKCksbj10aGlzLmNyZWF0ZShpcyk7cmV0dXJuIHRoaXMuY29uc3VtZVRva2VuKCksdGhpcy5hY2NlcHRJZGVudCgiZXh0ZW5kIik/dGhpcy5fY29tcGxldGVFeHRlbmRzKG4pOih0aGlzLnJlc3RvcmVBdE1hcmsodCksZS5wcm90b3R5cGUuX3BhcnNlUHNldWRvLmNhbGwodGhpcykpfSx0LnByb3RvdHlwZS5fcGFyc2VFeHRlbmQ9ZnVuY3Rpb24oKXtpZighdGhpcy5wZWVrRGVsaW0oIiYiKSlyZXR1cm4gbnVsbDt2YXIgZT10aGlzLm1hcmsoKSx0PXRoaXMuY3JlYXRlKGlzKTtyZXR1cm4gdGhpcy5jb25zdW1lVG9rZW4oKSwhdGhpcy5oYXNXaGl0ZXNwYWNlKCkmJnRoaXMuYWNjZXB0KGpyLkNvbG9uKSYmdGhpcy5hY2NlcHRJZGVudCgiZXh0ZW5kIik/dGhpcy5fY29tcGxldGVFeHRlbmRzKHQpOih0aGlzLnJlc3RvcmVBdE1hcmsoZSksbnVsbCl9LHQucHJvdG90eXBlLl9jb21wbGV0ZUV4dGVuZHM9ZnVuY3Rpb24oZSl7aWYoIXRoaXMuYWNjZXB0KGpyLlBhcmVudGhlc2lzTCkpcmV0dXJuIHRoaXMuZmluaXNoKGUsZmEuTGVmdFBhcmVudGhlc2lzRXhwZWN0ZWQpO3ZhciB0PWUuZ2V0U2VsZWN0b3JzKCk7aWYoIXQuYWRkQ2hpbGQodGhpcy5fcGFyc2VTZWxlY3RvcighMCkpKXJldHVybiB0aGlzLmZpbmlzaChlLGZhLlNlbGVjdG9yRXhwZWN0ZWQpO2Zvcig7dGhpcy5hY2NlcHQoanIuQ29tbWEpOylpZighdC5hZGRDaGlsZCh0aGlzLl9wYXJzZVNlbGVjdG9yKCEwKSkpcmV0dXJuIHRoaXMuZmluaXNoKGUsZmEuU2VsZWN0b3JFeHBlY3RlZCk7cmV0dXJuIHRoaXMuYWNjZXB0KGpyLlBhcmVudGhlc2lzUik/dGhpcy5maW5pc2goZSk6dGhpcy5maW5pc2goZSxmYS5SaWdodFBhcmVudGhlc2lzRXhwZWN0ZWQpfSx0LnByb3RvdHlwZS5fcGFyc2VEZXRhY2hlZFJ1bGVTZXRNaXhpbj1mdW5jdGlvbigpe2lmKCF0aGlzLnBlZWsoanIuQXRLZXl3b3JkKSlyZXR1cm4gbnVsbDt2YXIgZT10aGlzLm1hcmsoKSx0PXRoaXMuY3JlYXRlKGFzKTtyZXR1cm4hdC5hZGRDaGlsZCh0aGlzLl9wYXJzZVZhcmlhYmxlKCEwKSl8fCF0aGlzLmhhc1doaXRlc3BhY2UoKSYmdGhpcy5hY2NlcHQoanIuUGFyZW50aGVzaXNMKT90aGlzLmFjY2VwdChqci5QYXJlbnRoZXNpc1IpP3RoaXMuZmluaXNoKHQpOnRoaXMuZmluaXNoKHQsZmEuUmlnaHRQYXJlbnRoZXNpc0V4cGVjdGVkKToodGhpcy5yZXN0b3JlQXRNYXJrKGUpLG51bGwpfSx0LnByb3RvdHlwZS5fdHJ5UGFyc2VNaXhpblJlZmVyZW5jZT1mdW5jdGlvbihlKXt2b2lkIDA9PT1lJiYoZT0hMCk7Zm9yKHZhciB0PXRoaXMubWFyaygpLG49dGhpcy5jcmVhdGUoYXMpLHI9dGhpcy5fcGFyc2VNaXhpbkRlY2xhcmF0aW9uSWRlbnRpZmllcigpO3I7KXt0aGlzLmFjY2VwdERlbGltKCI+Iik7dmFyIGk9dGhpcy5fcGFyc2VNaXhpbkRlY2xhcmF0aW9uSWRlbnRpZmllcigpO2lmKCFpKWJyZWFrO24uZ2V0TmFtZXNwYWNlcygpLmFkZENoaWxkKHIpLHI9aX1pZighbi5zZXRJZGVudGlmaWVyKHIpKXJldHVybiB0aGlzLnJlc3RvcmVBdE1hcmsodCksbnVsbDt2YXIgbz0hMTtpZih0aGlzLmFjY2VwdChqci5QYXJlbnRoZXNpc0wpKXtpZihvPSEwLG4uZ2V0QXJndW1lbnRzKCkuYWRkQ2hpbGQodGhpcy5fcGFyc2VNaXhpbkFyZ3VtZW50KCkpKWZvcig7KHRoaXMuYWNjZXB0KGpyLkNvbW1hKXx8dGhpcy5hY2NlcHQoanIuU2VtaUNvbG9uKSkmJiF0aGlzLnBlZWsoanIuUGFyZW50aGVzaXNSKTspaWYoIW4uZ2V0QXJndW1lbnRzKCkuYWRkQ2hpbGQodGhpcy5fcGFyc2VNaXhpbkFyZ3VtZW50KCkpKXJldHVybiB0aGlzLmZpbmlzaChuLGZhLkV4cHJlc3Npb25FeHBlY3RlZCk7aWYoIXRoaXMuYWNjZXB0KGpyLlBhcmVudGhlc2lzUikpcmV0dXJuIHRoaXMuZmluaXNoKG4sZmEuUmlnaHRQYXJlbnRoZXNpc0V4cGVjdGVkKTtyLnJlZmVyZW5jZVR5cGVzPVskaS5NaXhpbl19ZWxzZSByLnJlZmVyZW5jZVR5cGVzPVskaS5NaXhpbiwkaS5SdWxlXTtyZXR1cm4gdGhpcy5wZWVrKGpyLkJyYWNrZXRMKT9lfHx0aGlzLl9hZGRMb29rdXBDaGlsZHJlbihuKTpuLmFkZENoaWxkKHRoaXMuX3BhcnNlUHJpbygpKSxvfHx0aGlzLnBlZWsoanIuU2VtaUNvbG9uKXx8dGhpcy5wZWVrKGpyLkN1cmx5Uil8fHRoaXMucGVlayhqci5FT0YpP3RoaXMuZmluaXNoKG4pOih0aGlzLnJlc3RvcmVBdE1hcmsodCksbnVsbCl9LHQucHJvdG90eXBlLl9wYXJzZU1peGluQXJndW1lbnQ9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmNyZWF0ZShmbyksdD10aGlzLm1hcmsoKSxuPXRoaXMuX3BhcnNlVmFyaWFibGUoKTtyZXR1cm4gbiYmKHRoaXMuYWNjZXB0KGpyLkNvbG9uKT9lLnNldElkZW50aWZpZXIobik6dGhpcy5yZXN0b3JlQXRNYXJrKHQpKSxlLnNldFZhbHVlKHRoaXMuX3BhcnNlRGV0YWNoZWRSdWxlU2V0KCl8fHRoaXMuX3BhcnNlRXhwcighMCkpP3RoaXMuZmluaXNoKGUpOih0aGlzLnJlc3RvcmVBdE1hcmsodCksbnVsbCl9LHQucHJvdG90eXBlLl9wYXJzZU1peGluUGFyYW1ldGVyPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5jcmVhdGUobW8pO2lmKHRoaXMucGVla0tleXdvcmQoIkByZXN0Iikpe3ZhciB0PXRoaXMuY3JlYXRlKFlpKTtyZXR1cm4gdGhpcy5jb25zdW1lVG9rZW4oKSx0aGlzLmFjY2VwdCh6ZCk/KGUuc2V0SWRlbnRpZmllcih0aGlzLmZpbmlzaCh0KSksdGhpcy5maW5pc2goZSkpOnRoaXMuZmluaXNoKGUsZmEuRG90RXhwZWN0ZWQsW10sW2pyLkNvbW1hLGpyLlBhcmVudGhlc2lzUl0pfWlmKHRoaXMucGVlayh6ZCkpe3ZhciBuPXRoaXMuY3JlYXRlKFlpKTtyZXR1cm4gdGhpcy5jb25zdW1lVG9rZW4oKSxlLnNldElkZW50aWZpZXIodGhpcy5maW5pc2gobikpLHRoaXMuZmluaXNoKGUpfXZhciByPSExO3JldHVybiBlLnNldElkZW50aWZpZXIodGhpcy5fcGFyc2VWYXJpYWJsZSgpKSYmKHRoaXMuYWNjZXB0KGpyLkNvbG9uKSxyPSEwKSxlLnNldERlZmF1bHRWYWx1ZSh0aGlzLl9wYXJzZURldGFjaGVkUnVsZVNldCgpfHx0aGlzLl9wYXJzZUV4cHIoITApKXx8cj90aGlzLmZpbmlzaChlKTpudWxsfSx0LnByb3RvdHlwZS5fcGFyc2VHdWFyZD1mdW5jdGlvbigpe2lmKCF0aGlzLnBlZWtJZGVudCgid2hlbiIpKXJldHVybiBudWxsO3ZhciBlPXRoaXMuY3JlYXRlKGRzKTtpZih0aGlzLmNvbnN1bWVUb2tlbigpLGUuaXNOZWdhdGVkPXRoaXMuYWNjZXB0SWRlbnQoIm5vdCIpLCFlLmdldENvbmRpdGlvbnMoKS5hZGRDaGlsZCh0aGlzLl9wYXJzZUd1YXJkQ29uZGl0aW9uKCkpKXJldHVybiB0aGlzLmZpbmlzaChlLGZhLkNvbmRpdGlvbkV4cGVjdGVkKTtmb3IoO3RoaXMuYWNjZXB0SWRlbnQoImFuZCIpfHx0aGlzLmFjY2VwdChqci5Db21tYSk7KWlmKCFlLmdldENvbmRpdGlvbnMoKS5hZGRDaGlsZCh0aGlzLl9wYXJzZUd1YXJkQ29uZGl0aW9uKCkpKXJldHVybiB0aGlzLmZpbmlzaChlLGZhLkNvbmRpdGlvbkV4cGVjdGVkKTtyZXR1cm4gdGhpcy5maW5pc2goZSl9LHQucHJvdG90eXBlLl9wYXJzZUd1YXJkQ29uZGl0aW9uPWZ1bmN0aW9uKCl7aWYoIXRoaXMucGVlayhqci5QYXJlbnRoZXNpc0wpKXJldHVybiBudWxsO3ZhciBlPXRoaXMuY3JlYXRlKHBzKTtyZXR1cm4gdGhpcy5jb25zdW1lVG9rZW4oKSxlLmFkZENoaWxkKHRoaXMuX3BhcnNlRXhwcigpKSx0aGlzLmFjY2VwdChqci5QYXJlbnRoZXNpc1IpP3RoaXMuZmluaXNoKGUpOnRoaXMuZmluaXNoKGUsZmEuUmlnaHRQYXJlbnRoZXNpc0V4cGVjdGVkKX0sdC5wcm90b3R5cGUuX3BhcnNlRnVuY3Rpb249ZnVuY3Rpb24oKXt2YXIgZT10aGlzLm1hcmsoKSx0PXRoaXMuY3JlYXRlKHVvKTtpZighdC5zZXRJZGVudGlmaWVyKHRoaXMuX3BhcnNlRnVuY3Rpb25JZGVudGlmaWVyKCkpKXJldHVybiBudWxsO2lmKHRoaXMuaGFzV2hpdGVzcGFjZSgpfHwhdGhpcy5hY2NlcHQoanIuUGFyZW50aGVzaXNMKSlyZXR1cm4gdGhpcy5yZXN0b3JlQXRNYXJrKGUpLG51bGw7aWYodC5nZXRBcmd1bWVudHMoKS5hZGRDaGlsZCh0aGlzLl9wYXJzZU1peGluQXJndW1lbnQoKSkpZm9yKDsodGhpcy5hY2NlcHQoanIuQ29tbWEpfHx0aGlzLmFjY2VwdChqci5TZW1pQ29sb24pKSYmIXRoaXMucGVlayhqci5QYXJlbnRoZXNpc1IpOylpZighdC5nZXRBcmd1bWVudHMoKS5hZGRDaGlsZCh0aGlzLl9wYXJzZU1peGluQXJndW1lbnQoKSkpcmV0dXJuIHRoaXMuZmluaXNoKHQsZmEuRXhwcmVzc2lvbkV4cGVjdGVkKTtyZXR1cm4gdGhpcy5hY2NlcHQoanIuUGFyZW50aGVzaXNSKT90aGlzLmZpbmlzaCh0KTp0aGlzLmZpbmlzaCh0LGZhLlJpZ2h0UGFyZW50aGVzaXNFeHBlY3RlZCl9LHQucHJvdG90eXBlLl9wYXJzZUZ1bmN0aW9uSWRlbnRpZmllcj1mdW5jdGlvbigpe2lmKHRoaXMucGVla0RlbGltKCIlIikpe3ZhciB0PXRoaXMuY3JlYXRlKGVvKTtyZXR1cm4gdC5yZWZlcmVuY2VUeXBlcz1bJGkuRnVuY3Rpb25dLHRoaXMuY29uc3VtZVRva2VuKCksdGhpcy5maW5pc2godCl9cmV0dXJuIGUucHJvdG90eXBlLl9wYXJzZUZ1bmN0aW9uSWRlbnRpZmllci5jYWxsKHRoaXMpfSx0LnByb3RvdHlwZS5fcGFyc2VVUkxBcmd1bWVudD1mdW5jdGlvbigpe3ZhciB0PXRoaXMubWFyaygpLG49ZS5wcm90b3R5cGUuX3BhcnNlVVJMQXJndW1lbnQuY2FsbCh0aGlzKTtpZighbnx8IXRoaXMucGVlayhqci5QYXJlbnRoZXNpc1IpKXt0aGlzLnJlc3RvcmVBdE1hcmsodCk7dmFyIHI9dGhpcy5jcmVhdGUoWWkpO3JldHVybiByLmFkZENoaWxkKHRoaXMuX3BhcnNlQmluYXJ5RXhwcigpKSx0aGlzLmZpbmlzaChyKX1yZXR1cm4gbn0sdH0oZ2MpLE9kPWZ1bmN0aW9uKCl7dmFyIGU9ZnVuY3Rpb24odCxuKXtyZXR1cm4oZT1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fHtfX3Byb3RvX186W119aW5zdGFuY2VvZiBBcnJheSYmZnVuY3Rpb24oZSx0KXtlLl9fcHJvdG9fXz10fXx8ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG4gaW4gdClPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxuKSYmKGVbbl09dFtuXSl9KSh0LG4pfTtyZXR1cm4gZnVuY3Rpb24odCxuKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgbiYmbnVsbCE9PW4pdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSAiK1N0cmluZyhuKSsiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIG51bGwiKTtmdW5jdGlvbiByKCl7dGhpcy5jb25zdHJ1Y3Rvcj10fWUodCxuKSx0LnByb3RvdHlwZT1udWxsPT09bj9PYmplY3QuY3JlYXRlKG4pOihyLnByb3RvdHlwZT1uLnByb3RvdHlwZSxuZXcgcil9fSgpLFdkPWJzKCksVmQ9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCh0LG4pe3JldHVybiBlLmNhbGwodGhpcywiQCIsdCxuKXx8dGhpc31yZXR1cm4gT2QodCxlKSx0LnByb3RvdHlwZS5jcmVhdGVGdW5jdGlvblByb3Bvc2Fscz1mdW5jdGlvbihlLHQsbixyKXtmb3IodmFyIGk9MCxvPWU7aTxvLmxlbmd0aDtpKyspe3ZhciBzPW9baV0sYT17bGFiZWw6cy5uYW1lLGRldGFpbDpzLmV4YW1wbGUsZG9jdW1lbnRhdGlvbjpzLmRlc2NyaXB0aW9uLHRleHRFZGl0OllzLnJlcGxhY2UodGhpcy5nZXRDb21wbGV0aW9uUmFuZ2UodCkscy5uYW1lKyIoJDApIiksaW5zZXJ0VGV4dEZvcm1hdDpOYS5TbmlwcGV0LGtpbmQ6UmEuRnVuY3Rpb259O24mJihhLnNvcnRUZXh0PSJ6Iiksci5pdGVtcy5wdXNoKGEpfXJldHVybiByfSx0LnByb3RvdHlwZS5nZXRUZXJtUHJvcG9zYWxzPWZ1bmN0aW9uKG4scixpKXt2YXIgbz10LmJ1aWx0SW5Qcm9wb3NhbHM7cmV0dXJuIG4mJihvPW8uZmlsdGVyKChmdW5jdGlvbihlKXtyZXR1cm4hZS50eXBlfHwhbi5yZXN0cmljdGlvbnN8fC0xIT09bi5yZXN0cmljdGlvbnMuaW5kZXhPZihlLnR5cGUpfSkpKSx0aGlzLmNyZWF0ZUZ1bmN0aW9uUHJvcG9zYWxzKG8sciwhMCxpKSxlLnByb3RvdHlwZS5nZXRUZXJtUHJvcG9zYWxzLmNhbGwodGhpcyxuLHIsaSl9LHQucHJvdG90eXBlLmdldENvbG9yUHJvcG9zYWxzPWZ1bmN0aW9uKG4scixpKXtyZXR1cm4gdGhpcy5jcmVhdGVGdW5jdGlvblByb3Bvc2Fscyh0LmNvbG9yUHJvcG9zYWxzLHIsITEsaSksZS5wcm90b3R5cGUuZ2V0Q29sb3JQcm9wb3NhbHMuY2FsbCh0aGlzLG4scixpKX0sdC5wcm90b3R5cGUuZ2V0Q29tcGxldGlvbnNGb3JEZWNsYXJhdGlvblByb3BlcnR5PWZ1bmN0aW9uKHQsbil7cmV0dXJuIHRoaXMuZ2V0Q29tcGxldGlvbnNGb3JTZWxlY3RvcihudWxsLCEwLG4pLGUucHJvdG90eXBlLmdldENvbXBsZXRpb25zRm9yRGVjbGFyYXRpb25Qcm9wZXJ0eS5jYWxsKHRoaXMsdCxuKX0sdC5idWlsdEluUHJvcG9zYWxzPVt7bmFtZToiaWYiLGV4YW1wbGU6ImlmKGNvbmRpdGlvbiwgdHJ1ZVZhbHVlIFssIGZhbHNlVmFsdWVdKTsiLGRlc2NyaXB0aW9uOldkKCJsZXNzLmJ1aWx0aW4uaWYiLCJyZXR1cm5zIG9uZSBvZiB0d28gdmFsdWVzIGRlcGVuZGluZyBvbiBhIGNvbmRpdGlvbi4iKX0se25hbWU6ImJvb2xlYW4iLGV4YW1wbGU6ImJvb2xlYW4oY29uZGl0aW9uKTsiLGRlc2NyaXB0aW9uOldkKCJsZXNzLmJ1aWx0aW4uYm9vbGVhbiIsJyJzdG9yZSIgYSBib29sZWFuIHRlc3QgZm9yIGxhdGVyIGV2YWx1YXRpb24gaW4gYSBndWFyZCBvciBpZigpLicpfSx7bmFtZToibGVuZ3RoIixleGFtcGxlOiJsZW5ndGgoQGxpc3QpOyIsZGVzY3JpcHRpb246V2QoImxlc3MuYnVpbHRpbi5sZW5ndGgiLCJyZXR1cm5zIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgaW4gYSB2YWx1ZSBsaXN0Iil9LHtuYW1lOiJleHRyYWN0IixleGFtcGxlOiJleHRyYWN0KEBsaXN0LCBpbmRleCk7IixkZXNjcmlwdGlvbjpXZCgibGVzcy5idWlsdGluLmV4dHJhY3QiLCJyZXR1cm5zIGEgdmFsdWUgYXQgdGhlIHNwZWNpZmllZCBwb3NpdGlvbiBpbiB0aGUgbGlzdCIpfSx7bmFtZToicmFuZ2UiLGV4YW1wbGU6InJhbmdlKFtzdGFydCwgXSBlbmQgWywgc3RlcF0pOyIsZGVzY3JpcHRpb246V2QoImxlc3MuYnVpbHRpbi5yYW5nZSIsImdlbmVyYXRlIGEgbGlzdCBzcGFubmluZyBhIHJhbmdlIG9mIHZhbHVlcyIpfSx7bmFtZToiZWFjaCIsZXhhbXBsZToiZWFjaChAbGlzdCwgcnVsZXNldCk7IixkZXNjcmlwdGlvbjpXZCgibGVzcy5idWlsdGluLmVhY2giLCJiaW5kIHRoZSBldmFsdWF0aW9uIG9mIGEgcnVsZXNldCB0byBlYWNoIG1lbWJlciBvZiBhIGxpc3QuIil9LHtuYW1lOiJlc2NhcGUiLGV4YW1wbGU6ImVzY2FwZShAc3RyaW5nKTsiLGRlc2NyaXB0aW9uOldkKCJsZXNzLmJ1aWx0aW4uZXNjYXBlIiwiVVJMIGVuY29kZXMgYSBzdHJpbmciKX0se25hbWU6ImUiLGV4YW1wbGU6ImUoQHN0cmluZyk7IixkZXNjcmlwdGlvbjpXZCgibGVzcy5idWlsdGluLmUiLCJlc2NhcGUgc3RyaW5nIGNvbnRlbnQiKX0se25hbWU6InJlcGxhY2UiLGV4YW1wbGU6InJlcGxhY2UoQHN0cmluZywgQHBhdHRlcm4sIEByZXBsYWNlbWVudFssIEBmbGFnc10pOyIsZGVzY3JpcHRpb246V2QoImxlc3MuYnVpbHRpbi5yZXBsYWNlIiwic3RyaW5nIHJlcGxhY2UiKX0se25hbWU6InVuaXQiLGV4YW1wbGU6InVuaXQoQGRpbWVuc2lvbiwgW0B1bml0OiAnJ10pOyIsZGVzY3JpcHRpb246V2QoImxlc3MuYnVpbHRpbi51bml0IiwicmVtb3ZlIG9yIGNoYW5nZSB0aGUgdW5pdCBvZiBhIGRpbWVuc2lvbiIpfSx7bmFtZToiY29sb3IiLGV4YW1wbGU6ImNvbG9yKEBzdHJpbmcpOyIsZGVzY3JpcHRpb246V2QoImxlc3MuYnVpbHRpbi5jb2xvciIsInBhcnNlcyBhIHN0cmluZyB0byBhIGNvbG9yIiksdHlwZToiY29sb3IifSx7bmFtZToiY29udmVydCIsZXhhbXBsZToiY29udmVydChAdmFsdWUsIHVuaXQpOyIsZGVzY3JpcHRpb246V2QoImxlc3MuYnVpbHRpbi5jb252ZXJ0IiwiY29udmVydHMgbnVtYmVycyBmcm9tIG9uZSB0eXBlIGludG8gYW5vdGhlciIpfSx7bmFtZToiZGF0YS11cmkiLGV4YW1wbGU6ImRhdGEtdXJpKFttaW1ldHlwZSxdIHVybCk7IixkZXNjcmlwdGlvbjpXZCgibGVzcy5idWlsdGluLmRhdGEtdXJpIiwiaW5saW5lcyBhIHJlc291cmNlIGFuZCBmYWxscyBiYWNrIHRvIGB1cmwoKWAiKSx0eXBlOiJ1cmwifSx7bmFtZToiYWJzIixkZXNjcmlwdGlvbjpXZCgibGVzcy5idWlsdGluLmFicyIsImFic29sdXRlIHZhbHVlIG9mIGEgbnVtYmVyIiksZXhhbXBsZToiYWJzKG51bWJlcik7In0se25hbWU6ImFjb3MiLGRlc2NyaXB0aW9uOldkKCJsZXNzLmJ1aWx0aW4uYWNvcyIsImFyY2Nvc2luZSAtIGludmVyc2Ugb2YgY29zaW5lIGZ1bmN0aW9uIiksZXhhbXBsZToiYWNvcyhudW1iZXIpOyJ9LHtuYW1lOiJhc2luIixkZXNjcmlwdGlvbjpXZCgibGVzcy5idWlsdGluLmFzaW4iLCJhcmNzaW5lIC0gaW52ZXJzZSBvZiBzaW5lIGZ1bmN0aW9uIiksZXhhbXBsZToiYXNpbihudW1iZXIpOyJ9LHtuYW1lOiJjZWlsIixleGFtcGxlOiJjZWlsKEBudW1iZXIpOyIsZGVzY3JpcHRpb246V2QoImxlc3MuYnVpbHRpbi5jZWlsIiwicm91bmRzIHVwIHRvIGFuIGludGVnZXIiKX0se25hbWU6ImNvcyIsZGVzY3JpcHRpb246V2QoImxlc3MuYnVpbHRpbi5jb3MiLCJjb3NpbmUgZnVuY3Rpb24iKSxleGFtcGxlOiJjb3MobnVtYmVyKTsifSx7bmFtZToiZmxvb3IiLGRlc2NyaXB0aW9uOldkKCJsZXNzLmJ1aWx0aW4uZmxvb3IiLCJyb3VuZHMgZG93biB0byBhbiBpbnRlZ2VyIiksZXhhbXBsZToiZmxvb3IoQG51bWJlcik7In0se25hbWU6InBlcmNlbnRhZ2UiLGRlc2NyaXB0aW9uOldkKCJsZXNzLmJ1aWx0aW4ucGVyY2VudGFnZSIsImNvbnZlcnRzIHRvIGEgJSwgZS5nLiAwLjUgPiA1MCUiKSxleGFtcGxlOiJwZXJjZW50YWdlKEBudW1iZXIpOyIsdHlwZToicGVyY2VudGFnZSJ9LHtuYW1lOiJyb3VuZCIsZGVzY3JpcHRpb246V2QoImxlc3MuYnVpbHRpbi5yb3VuZCIsInJvdW5kcyBhIG51bWJlciB0byBhIG51bWJlciBvZiBwbGFjZXMiKSxleGFtcGxlOiJyb3VuZChudW1iZXIsIFtwbGFjZXM6IDBdKTsifSx7bmFtZToic3FydCIsZGVzY3JpcHRpb246V2QoImxlc3MuYnVpbHRpbi5zcXJ0IiwiY2FsY3VsYXRlcyBzcXVhcmUgcm9vdCBvZiBhIG51bWJlciIpLGV4YW1wbGU6InNxcnQobnVtYmVyKTsifSx7bmFtZToic2luIixkZXNjcmlwdGlvbjpXZCgibGVzcy5idWlsdGluLnNpbiIsInNpbmUgZnVuY3Rpb24iKSxleGFtcGxlOiJzaW4obnVtYmVyKTsifSx7bmFtZToidGFuIixkZXNjcmlwdGlvbjpXZCgibGVzcy5idWlsdGluLnRhbiIsInRhbmdlbnQgZnVuY3Rpb24iKSxleGFtcGxlOiJ0YW4obnVtYmVyKTsifSx7bmFtZToiYXRhbiIsZGVzY3JpcHRpb246V2QoImxlc3MuYnVpbHRpbi5hdGFuIiwiYXJjdGFuZ2VudCAtIGludmVyc2Ugb2YgdGFuZ2VudCBmdW5jdGlvbiIpLGV4YW1wbGU6ImF0YW4obnVtYmVyKTsifSx7bmFtZToicGkiLGRlc2NyaXB0aW9uOldkKCJsZXNzLmJ1aWx0aW4ucGkiLCJyZXR1cm5zIHBpIiksZXhhbXBsZToicGkoKTsifSx7bmFtZToicG93IixkZXNjcmlwdGlvbjpXZCgibGVzcy5idWlsdGluLnBvdyIsImZpcnN0IGFyZ3VtZW50IHJhaXNlZCB0byB0aGUgcG93ZXIgb2YgdGhlIHNlY29uZCBhcmd1bWVudCIpLGV4YW1wbGU6InBvdyhAYmFzZSwgQGV4cG9uZW50KTsifSx7bmFtZToibW9kIixkZXNjcmlwdGlvbjpXZCgibGVzcy5idWlsdGluLm1vZCIsImZpcnN0IGFyZ3VtZW50IG1vZHVsdXMgc2Vjb25kIGFyZ3VtZW50IiksZXhhbXBsZToibW9kKG51bWJlciwgbnVtYmVyKTsifSx7bmFtZToibWluIixkZXNjcmlwdGlvbjpXZCgibGVzcy5idWlsdGluLm1pbiIsInJldHVybnMgdGhlIGxvd2VzdCBvZiBvbmUgb3IgbW9yZSB2YWx1ZXMiKSxleGFtcGxlOiJtaW4oQHgsIEB5KTsifSx7bmFtZToibWF4IixkZXNjcmlwdGlvbjpXZCgibGVzcy5idWlsdGluLm1heCIsInJldHVybnMgdGhlIGxvd2VzdCBvZiBvbmUgb3IgbW9yZSB2YWx1ZXMiKSxleGFtcGxlOiJtYXgoQHgsIEB5KTsifV0sdC5jb2xvclByb3Bvc2Fscz1be25hbWU6ImFyZ2IiLGV4YW1wbGU6ImFyZ2IoQGNvbG9yKTsiLGRlc2NyaXB0aW9uOldkKCJsZXNzLmJ1aWx0aW4uYXJnYiIsImNyZWF0ZXMgYSAjQUFSUkdHQkIiKX0se25hbWU6ImhzbCIsZXhhbXBsZToiaHNsKEBodWUsIEBzYXR1cmF0aW9uLCBAbGlnaHRuZXNzKTsiLGRlc2NyaXB0aW9uOldkKCJsZXNzLmJ1aWx0aW4uaHNsIiwiY3JlYXRlcyBhIGNvbG9yIil9LHtuYW1lOiJoc2xhIixleGFtcGxlOiJoc2xhKEBodWUsIEBzYXR1cmF0aW9uLCBAbGlnaHRuZXNzLCBAYWxwaGEpOyIsZGVzY3JpcHRpb246V2QoImxlc3MuYnVpbHRpbi5oc2xhIiwiY3JlYXRlcyBhIGNvbG9yIil9LHtuYW1lOiJoc3YiLGV4YW1wbGU6ImhzdihAaHVlLCBAc2F0dXJhdGlvbiwgQHZhbHVlKTsiLGRlc2NyaXB0aW9uOldkKCJsZXNzLmJ1aWx0aW4uaHN2IiwiY3JlYXRlcyBhIGNvbG9yIil9LHtuYW1lOiJoc3ZhIixleGFtcGxlOiJoc3ZhKEBodWUsIEBzYXR1cmF0aW9uLCBAdmFsdWUsIEBhbHBoYSk7IixkZXNjcmlwdGlvbjpXZCgibGVzcy5idWlsdGluLmhzdmEiLCJjcmVhdGVzIGEgY29sb3IiKX0se25hbWU6Imh1ZSIsZXhhbXBsZToiaHVlKEBjb2xvcik7IixkZXNjcmlwdGlvbjpXZCgibGVzcy5idWlsdGluLmh1ZSIsInJldHVybnMgdGhlIGBodWVgIGNoYW5uZWwgb2YgYEBjb2xvcmAgaW4gdGhlIEhTTCBzcGFjZSIpfSx7bmFtZToic2F0dXJhdGlvbiIsZXhhbXBsZToic2F0dXJhdGlvbihAY29sb3IpOyIsZGVzY3JpcHRpb246V2QoImxlc3MuYnVpbHRpbi5zYXR1cmF0aW9uIiwicmV0dXJucyB0aGUgYHNhdHVyYXRpb25gIGNoYW5uZWwgb2YgYEBjb2xvcmAgaW4gdGhlIEhTTCBzcGFjZSIpfSx7bmFtZToibGlnaHRuZXNzIixleGFtcGxlOiJsaWdodG5lc3MoQGNvbG9yKTsiLGRlc2NyaXB0aW9uOldkKCJsZXNzLmJ1aWx0aW4ubGlnaHRuZXNzIiwicmV0dXJucyB0aGUgYGxpZ2h0bmVzc2AgY2hhbm5lbCBvZiBgQGNvbG9yYCBpbiB0aGUgSFNMIHNwYWNlIil9LHtuYW1lOiJoc3ZodWUiLGV4YW1wbGU6Imhzdmh1ZShAY29sb3IpOyIsZGVzY3JpcHRpb246V2QoImxlc3MuYnVpbHRpbi5oc3ZodWUiLCJyZXR1cm5zIHRoZSBgaHVlYCBjaGFubmVsIG9mIGBAY29sb3JgIGluIHRoZSBIU1Ygc3BhY2UiKX0se25hbWU6ImhzdnNhdHVyYXRpb24iLGV4YW1wbGU6ImhzdnNhdHVyYXRpb24oQGNvbG9yKTsiLGRlc2NyaXB0aW9uOldkKCJsZXNzLmJ1aWx0aW4uaHN2c2F0dXJhdGlvbiIsInJldHVybnMgdGhlIGBzYXR1cmF0aW9uYCBjaGFubmVsIG9mIGBAY29sb3JgIGluIHRoZSBIU1Ygc3BhY2UiKX0se25hbWU6ImhzdnZhbHVlIixleGFtcGxlOiJoc3Z2YWx1ZShAY29sb3IpOyIsZGVzY3JpcHRpb246V2QoImxlc3MuYnVpbHRpbi5oc3Z2YWx1ZSIsInJldHVybnMgdGhlIGB2YWx1ZWAgY2hhbm5lbCBvZiBgQGNvbG9yYCBpbiB0aGUgSFNWIHNwYWNlIil9LHtuYW1lOiJyZWQiLGV4YW1wbGU6InJlZChAY29sb3IpOyIsZGVzY3JpcHRpb246V2QoImxlc3MuYnVpbHRpbi5yZWQiLCJyZXR1cm5zIHRoZSBgcmVkYCBjaGFubmVsIG9mIGBAY29sb3JgIil9LHtuYW1lOiJncmVlbiIsZXhhbXBsZToiZ3JlZW4oQGNvbG9yKTsiLGRlc2NyaXB0aW9uOldkKCJsZXNzLmJ1aWx0aW4uZ3JlZW4iLCJyZXR1cm5zIHRoZSBgZ3JlZW5gIGNoYW5uZWwgb2YgYEBjb2xvcmAiKX0se25hbWU6ImJsdWUiLGV4YW1wbGU6ImJsdWUoQGNvbG9yKTsiLGRlc2NyaXB0aW9uOldkKCJsZXNzLmJ1aWx0aW4uYmx1ZSIsInJldHVybnMgdGhlIGBibHVlYCBjaGFubmVsIG9mIGBAY29sb3JgIil9LHtuYW1lOiJhbHBoYSIsZXhhbXBsZToiYWxwaGEoQGNvbG9yKTsiLGRlc2NyaXB0aW9uOldkKCJsZXNzLmJ1aWx0aW4uYWxwaGEiLCJyZXR1cm5zIHRoZSBgYWxwaGFgIGNoYW5uZWwgb2YgYEBjb2xvcmAiKX0se25hbWU6Imx1bWEiLGV4YW1wbGU6Imx1bWEoQGNvbG9yKTsiLGRlc2NyaXB0aW9uOldkKCJsZXNzLmJ1aWx0aW4ubHVtYSIsInJldHVybnMgdGhlIGBsdW1hYCB2YWx1ZSAocGVyY2VwdHVhbCBicmlnaHRuZXNzKSBvZiBgQGNvbG9yYCIpfSx7bmFtZToic2F0dXJhdGUiLGV4YW1wbGU6InNhdHVyYXRlKEBjb2xvciwgMTAlKTsiLGRlc2NyaXB0aW9uOldkKCJsZXNzLmJ1aWx0aW4uc2F0dXJhdGUiLCJyZXR1cm4gYEBjb2xvcmAgMTAlIHBvaW50cyBtb3JlIHNhdHVyYXRlZCIpfSx7bmFtZToiZGVzYXR1cmF0ZSIsZXhhbXBsZToiZGVzYXR1cmF0ZShAY29sb3IsIDEwJSk7IixkZXNjcmlwdGlvbjpXZCgibGVzcy5idWlsdGluLmRlc2F0dXJhdGUiLCJyZXR1cm4gYEBjb2xvcmAgMTAlIHBvaW50cyBsZXNzIHNhdHVyYXRlZCIpfSx7bmFtZToibGlnaHRlbiIsZXhhbXBsZToibGlnaHRlbihAY29sb3IsIDEwJSk7IixkZXNjcmlwdGlvbjpXZCgibGVzcy5idWlsdGluLmxpZ2h0ZW4iLCJyZXR1cm4gYEBjb2xvcmAgMTAlIHBvaW50cyBsaWdodGVyIil9LHtuYW1lOiJkYXJrZW4iLGV4YW1wbGU6ImRhcmtlbihAY29sb3IsIDEwJSk7IixkZXNjcmlwdGlvbjpXZCgibGVzcy5idWlsdGluLmRhcmtlbiIsInJldHVybiBgQGNvbG9yYCAxMCUgcG9pbnRzIGRhcmtlciIpfSx7bmFtZToiZmFkZWluIixleGFtcGxlOiJmYWRlaW4oQGNvbG9yLCAxMCUpOyIsZGVzY3JpcHRpb246V2QoImxlc3MuYnVpbHRpbi5mYWRlaW4iLCJyZXR1cm4gYEBjb2xvcmAgMTAlIHBvaW50cyBsZXNzIHRyYW5zcGFyZW50Iil9LHtuYW1lOiJmYWRlb3V0IixleGFtcGxlOiJmYWRlb3V0KEBjb2xvciwgMTAlKTsiLGRlc2NyaXB0aW9uOldkKCJsZXNzLmJ1aWx0aW4uZmFkZW91dCIsInJldHVybiBgQGNvbG9yYCAxMCUgcG9pbnRzIG1vcmUgdHJhbnNwYXJlbnQiKX0se25hbWU6ImZhZGUiLGV4YW1wbGU6ImZhZGUoQGNvbG9yLCA1MCUpOyIsZGVzY3JpcHRpb246V2QoImxlc3MuYnVpbHRpbi5mYWRlIiwicmV0dXJuIGBAY29sb3JgIHdpdGggNTAlIHRyYW5zcGFyZW5jeSIpfSx7bmFtZToic3BpbiIsZXhhbXBsZToic3BpbihAY29sb3IsIDEwKTsiLGRlc2NyaXB0aW9uOldkKCJsZXNzLmJ1aWx0aW4uc3BpbiIsInJldHVybiBgQGNvbG9yYCB3aXRoIGEgMTAgZGVncmVlIGxhcmdlciBpbiBodWUiKX0se25hbWU6Im1peCIsZXhhbXBsZToibWl4KEBjb2xvcjEsIEBjb2xvcjIsIFtAd2VpZ2h0OiA1MCVdKTsiLGRlc2NyaXB0aW9uOldkKCJsZXNzLmJ1aWx0aW4ubWl4IiwicmV0dXJuIGEgbWl4IG9mIGBAY29sb3IxYCBhbmQgYEBjb2xvcjJgIil9LHtuYW1lOiJncmV5c2NhbGUiLGV4YW1wbGU6ImdyZXlzY2FsZShAY29sb3IpOyIsZGVzY3JpcHRpb246V2QoImxlc3MuYnVpbHRpbi5ncmV5c2NhbGUiLCJyZXR1cm5zIGEgZ3JleSwgMTAwJSBkZXNhdHVyYXRlZCBjb2xvciIpfSx7bmFtZToiY29udHJhc3QiLGV4YW1wbGU6ImNvbnRyYXN0KEBjb2xvcjEsIFtAZGFya2NvbG9yOiBibGFja10sIFtAbGlnaHRjb2xvcjogd2hpdGVdLCBbQHRocmVzaG9sZDogNDMlXSk7IixkZXNjcmlwdGlvbjpXZCgibGVzcy5idWlsdGluLmNvbnRyYXN0IiwicmV0dXJuIGBAZGFya2NvbG9yYCBpZiBgQGNvbG9yMSBpcz4gNDMlIGx1bWFgIG90aGVyd2lzZSByZXR1cm4gYEBsaWdodGNvbG9yYCwgc2VlIG5vdGVzIil9LHtuYW1lOiJtdWx0aXBseSIsZXhhbXBsZToibXVsdGlwbHkoQGNvbG9yMSwgQGNvbG9yMik7In0se25hbWU6InNjcmVlbiIsZXhhbXBsZToic2NyZWVuKEBjb2xvcjEsIEBjb2xvcjIpOyJ9LHtuYW1lOiJvdmVybGF5IixleGFtcGxlOiJvdmVybGF5KEBjb2xvcjEsIEBjb2xvcjIpOyJ9LHtuYW1lOiJzb2Z0bGlnaHQiLGV4YW1wbGU6InNvZnRsaWdodChAY29sb3IxLCBAY29sb3IyKTsifSx7bmFtZToiaGFyZGxpZ2h0IixleGFtcGxlOiJoYXJkbGlnaHQoQGNvbG9yMSwgQGNvbG9yMik7In0se25hbWU6ImRpZmZlcmVuY2UiLGV4YW1wbGU6ImRpZmZlcmVuY2UoQGNvbG9yMSwgQGNvbG9yMik7In0se25hbWU6ImV4Y2x1c2lvbiIsZXhhbXBsZToiZXhjbHVzaW9uKEBjb2xvcjEsIEBjb2xvcjIpOyJ9LHtuYW1lOiJhdmVyYWdlIixleGFtcGxlOiJhdmVyYWdlKEBjb2xvcjEsIEBjb2xvcjIpOyJ9LHtuYW1lOiJuZWdhdGlvbiIsZXhhbXBsZToibmVnYXRpb24oQGNvbG9yMSwgQGNvbG9yMik7In1dLHR9KHFjKTtmdW5jdGlvbiBVZChlLHQpe3ZhciBuPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQodCl7cmV0dXJuIGUucG9zaXRpb25BdCh0Lm9mZnNldCkubGluZX1mdW5jdGlvbiBuKHQpe3JldHVybiBlLnBvc2l0aW9uQXQodC5vZmZzZXQrdC5sZW4pLmxpbmV9ZnVuY3Rpb24gcigpe3N3aXRjaChlLmxhbmd1YWdlSWQpe2Nhc2Uic2NzcyI6cmV0dXJuIG5ldyB1ZDtjYXNlImxlc3MiOnJldHVybiBuZXcgSWQ7ZGVmYXVsdDpyZXR1cm4gbmV3IE9pfX1mdW5jdGlvbiBpKGUscil7dmFyIGk9dChlKSxvPW4oZSk7cmV0dXJuIGkhPT1vP3tzdGFydExpbmU6aSxlbmRMaW5lOm8sa2luZDpyfTpudWxsfXZhciBvPVtdLHM9W10sYT1yKCk7YS5pZ25vcmVDb21tZW50PSExLGEuc2V0U291cmNlKGUuZ2V0VGV4dCgpKTt2YXIgbD1hLnNjYW4oKSxjPW51bGwsaD1mdW5jdGlvbigpe3N3aXRjaChsLnR5cGUpe2Nhc2UganIuQ3VybHlMOmNhc2UgYWQ6cy5wdXNoKHtsaW5lOnQobCksdHlwZToiYnJhY2UiLGlzU3RhcnQ6ITB9KTticmVhaztjYXNlIGpyLkN1cmx5UjppZigwIT09cy5sZW5ndGgpe2lmKCEocD1CZChzLCJicmFjZSIpKSlicmVhazt2YXIgcj1uKGwpOyJicmFjZSI9PT1wLnR5cGUmJihjJiZuKGMpIT09ciYmci0tLHAubGluZSE9PXImJm8ucHVzaCh7c3RhcnRMaW5lOnAubGluZSxlbmRMaW5lOnIsa2luZDp2b2lkIDB9KSl9YnJlYWs7Y2FzZSBqci5Db21tZW50OnZhciBoPWZ1bmN0aW9uKGUpe3JldHVybiIjcmVnaW9uIj09PWU/e2xpbmU6dChsKSx0eXBlOiJjb21tZW50Iixpc1N0YXJ0OiEwfTp7bGluZTpuKGwpLHR5cGU6ImNvbW1lbnQiLGlzU3RhcnQ6ITF9fSxkPWZ1bmN0aW9uKHQpe3ZhciBuPXQudGV4dC5tYXRjaCgvXlxzKlwvXCpccyooI3JlZ2lvbnwjZW5kcmVnaW9uKVxiXHMqKC4qPylccypcKlwvLyk7aWYobilyZXR1cm4gaChuWzFdKTtpZigic2NzcyI9PT1lLmxhbmd1YWdlSWR8fCJsZXNzIj09PWUubGFuZ3VhZ2VJZCl7dmFyIHI9dC50ZXh0Lm1hdGNoKC9eXHMqXC9cL1xzKigjcmVnaW9ufCNlbmRyZWdpb24pXGJccyooLio/KVxzKi8pO2lmKHIpcmV0dXJuIGgoclsxXSl9cmV0dXJuIG51bGx9KGwpO2lmKGQpaWYoZC5pc1N0YXJ0KXMucHVzaChkKTtlbHNle3ZhciBwO2lmKCEocD1CZChzLCJjb21tZW50IikpKWJyZWFrOyJjb21tZW50Ij09PXAudHlwZSYmcC5saW5lIT09ZC5saW5lJiZvLnB1c2goe3N0YXJ0TGluZTpwLmxpbmUsZW5kTGluZTpkLmxpbmUsa2luZDoicmVnaW9uIn0pfWVsc2V7dmFyIHU9aShsLCJjb21tZW50Iik7dSYmby5wdXNoKHUpfX1jPWwsbD1hLnNjYW4oKX07Zm9yKDtsLnR5cGUhPT1qci5FT0Y7KWgoKTtyZXR1cm4gb30oZSk7cmV0dXJuIGZ1bmN0aW9uKGUsdCl7dmFyIG49dCYmdC5yYW5nZUxpbWl0fHxOdW1iZXIuTUFYX1ZBTFVFLHI9ZS5zb3J0KChmdW5jdGlvbihlLHQpe3ZhciBuPWUuc3RhcnRMaW5lLXQuc3RhcnRMaW5lO3JldHVybiAwPT09biYmKG49ZS5lbmRMaW5lLXQuZW5kTGluZSksbn0pKSxpPVtdLG89LTE7cmV0dXJuIHIuZm9yRWFjaCgoZnVuY3Rpb24oZSl7ZS5zdGFydExpbmU8byYmbzxlLmVuZExpbmV8fChpLnB1c2goZSksbz1lLmVuZExpbmUpfSkpLGkubGVuZ3RoPG4/aTppLnNsaWNlKDAsbil9KG4sdCl9ZnVuY3Rpb24gQmQoZSx0KXtpZigwPT09ZS5sZW5ndGgpcmV0dXJuIG51bGw7Zm9yKHZhciBuPWUubGVuZ3RoLTE7bj49MDtuLS0paWYoZVtuXS50eXBlPT09dCYmZVtuXS5pc1N0YXJ0KXJldHVybiBlLnNwbGljZShuLDEpWzBdO3JldHVybiBudWxsfUNkPVssLGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoZSl7dGhpcy5fX3BhcmVudD1lLHRoaXMuX19jaGFyYWN0ZXJfY291bnQ9MCx0aGlzLl9faW5kZW50X2NvdW50PS0xLHRoaXMuX19hbGlnbm1lbnRfY291bnQ9MCx0aGlzLl9fd3JhcF9wb2ludF9pbmRleD0wLHRoaXMuX193cmFwX3BvaW50X2NoYXJhY3Rlcl9jb3VudD0wLHRoaXMuX193cmFwX3BvaW50X2luZGVudF9jb3VudD0tMSx0aGlzLl9fd3JhcF9wb2ludF9hbGlnbm1lbnRfY291bnQ9MCx0aGlzLl9faXRlbXM9W119ZnVuY3Rpb24gbihlLHQpe3RoaXMuX19jYWNoZT1bIiJdLHRoaXMuX19pbmRlbnRfc2l6ZT1lLmluZGVudF9zaXplLHRoaXMuX19pbmRlbnRfc3RyaW5nPWUuaW5kZW50X2NoYXIsZS5pbmRlbnRfd2l0aF90YWJzfHwodGhpcy5fX2luZGVudF9zdHJpbmc9bmV3IEFycmF5KGUuaW5kZW50X3NpemUrMSkuam9pbihlLmluZGVudF9jaGFyKSksdD10fHwiIixlLmluZGVudF9sZXZlbD4wJiYodD1uZXcgQXJyYXkoZS5pbmRlbnRfbGV2ZWwrMSkuam9pbih0aGlzLl9faW5kZW50X3N0cmluZykpLHRoaXMuX19iYXNlX3N0cmluZz10LHRoaXMuX19iYXNlX3N0cmluZ19sZW5ndGg9dC5sZW5ndGh9ZnVuY3Rpb24gcihlLHIpe3RoaXMuX19pbmRlbnRfY2FjaGU9bmV3IG4oZSxyKSx0aGlzLnJhdz0hMSx0aGlzLl9lbmRfd2l0aF9uZXdsaW5lPWUuZW5kX3dpdGhfbmV3bGluZSx0aGlzLmluZGVudF9zaXplPWUuaW5kZW50X3NpemUsdGhpcy53cmFwX2xpbmVfbGVuZ3RoPWUud3JhcF9saW5lX2xlbmd0aCx0aGlzLmluZGVudF9lbXB0eV9saW5lcz1lLmluZGVudF9lbXB0eV9saW5lcyx0aGlzLl9fbGluZXM9W10sdGhpcy5wcmV2aW91c19saW5lPW51bGwsdGhpcy5jdXJyZW50X2xpbmU9bnVsbCx0aGlzLm5leHRfbGluZT1uZXcgdCh0aGlzKSx0aGlzLnNwYWNlX2JlZm9yZV90b2tlbj0hMSx0aGlzLm5vbl9icmVha2luZ19zcGFjZT0hMSx0aGlzLnByZXZpb3VzX3Rva2VuX3dyYXBwZWQ9ITEsdGhpcy5fX2FkZF9vdXRwdXRsaW5lKCl9dC5wcm90b3R5cGUuY2xvbmVfZW1wdHk9ZnVuY3Rpb24oKXt2YXIgZT1uZXcgdCh0aGlzLl9fcGFyZW50KTtyZXR1cm4gZS5zZXRfaW5kZW50KHRoaXMuX19pbmRlbnRfY291bnQsdGhpcy5fX2FsaWdubWVudF9jb3VudCksZX0sdC5wcm90b3R5cGUuaXRlbT1mdW5jdGlvbihlKXtyZXR1cm4gZTwwP3RoaXMuX19pdGVtc1t0aGlzLl9faXRlbXMubGVuZ3RoK2VdOnRoaXMuX19pdGVtc1tlXX0sdC5wcm90b3R5cGUuaGFzX21hdGNoPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD10aGlzLl9faXRlbXMubGVuZ3RoLTE7dD49MDt0LS0paWYodGhpcy5fX2l0ZW1zW3RdLm1hdGNoKGUpKXJldHVybiEwO3JldHVybiExfSx0LnByb3RvdHlwZS5zZXRfaW5kZW50PWZ1bmN0aW9uKGUsdCl7dGhpcy5pc19lbXB0eSgpJiYodGhpcy5fX2luZGVudF9jb3VudD1lfHwwLHRoaXMuX19hbGlnbm1lbnRfY291bnQ9dHx8MCx0aGlzLl9fY2hhcmFjdGVyX2NvdW50PXRoaXMuX19wYXJlbnQuZ2V0X2luZGVudF9zaXplKHRoaXMuX19pbmRlbnRfY291bnQsdGhpcy5fX2FsaWdubWVudF9jb3VudCkpfSx0LnByb3RvdHlwZS5fc2V0X3dyYXBfcG9pbnQ9ZnVuY3Rpb24oKXt0aGlzLl9fcGFyZW50LndyYXBfbGluZV9sZW5ndGgmJih0aGlzLl9fd3JhcF9wb2ludF9pbmRleD10aGlzLl9faXRlbXMubGVuZ3RoLHRoaXMuX193cmFwX3BvaW50X2NoYXJhY3Rlcl9jb3VudD10aGlzLl9fY2hhcmFjdGVyX2NvdW50LHRoaXMuX193cmFwX3BvaW50X2luZGVudF9jb3VudD10aGlzLl9fcGFyZW50Lm5leHRfbGluZS5fX2luZGVudF9jb3VudCx0aGlzLl9fd3JhcF9wb2ludF9hbGlnbm1lbnRfY291bnQ9dGhpcy5fX3BhcmVudC5uZXh0X2xpbmUuX19hbGlnbm1lbnRfY291bnQpfSx0LnByb3RvdHlwZS5fc2hvdWxkX3dyYXA9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fX3dyYXBfcG9pbnRfaW5kZXgmJnRoaXMuX19jaGFyYWN0ZXJfY291bnQ+dGhpcy5fX3BhcmVudC53cmFwX2xpbmVfbGVuZ3RoJiZ0aGlzLl9fd3JhcF9wb2ludF9jaGFyYWN0ZXJfY291bnQ+dGhpcy5fX3BhcmVudC5uZXh0X2xpbmUuX19jaGFyYWN0ZXJfY291bnR9LHQucHJvdG90eXBlLl9hbGxvd193cmFwPWZ1bmN0aW9uKCl7aWYodGhpcy5fc2hvdWxkX3dyYXAoKSl7dGhpcy5fX3BhcmVudC5hZGRfbmV3X2xpbmUoKTt2YXIgZT10aGlzLl9fcGFyZW50LmN1cnJlbnRfbGluZTtyZXR1cm4gZS5zZXRfaW5kZW50KHRoaXMuX193cmFwX3BvaW50X2luZGVudF9jb3VudCx0aGlzLl9fd3JhcF9wb2ludF9hbGlnbm1lbnRfY291bnQpLGUuX19pdGVtcz10aGlzLl9faXRlbXMuc2xpY2UodGhpcy5fX3dyYXBfcG9pbnRfaW5kZXgpLHRoaXMuX19pdGVtcz10aGlzLl9faXRlbXMuc2xpY2UoMCx0aGlzLl9fd3JhcF9wb2ludF9pbmRleCksZS5fX2NoYXJhY3Rlcl9jb3VudCs9dGhpcy5fX2NoYXJhY3Rlcl9jb3VudC10aGlzLl9fd3JhcF9wb2ludF9jaGFyYWN0ZXJfY291bnQsdGhpcy5fX2NoYXJhY3Rlcl9jb3VudD10aGlzLl9fd3JhcF9wb2ludF9jaGFyYWN0ZXJfY291bnQsIiAiPT09ZS5fX2l0ZW1zWzBdJiYoZS5fX2l0ZW1zLnNwbGljZSgwLDEpLGUuX19jaGFyYWN0ZXJfY291bnQtPTEpLCEwfXJldHVybiExfSx0LnByb3RvdHlwZS5pc19lbXB0eT1mdW5jdGlvbigpe3JldHVybiAwPT09dGhpcy5fX2l0ZW1zLmxlbmd0aH0sdC5wcm90b3R5cGUubGFzdD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmlzX2VtcHR5KCk/bnVsbDp0aGlzLl9faXRlbXNbdGhpcy5fX2l0ZW1zLmxlbmd0aC0xXX0sdC5wcm90b3R5cGUucHVzaD1mdW5jdGlvbihlKXt0aGlzLl9faXRlbXMucHVzaChlKTt2YXIgdD1lLmxhc3RJbmRleE9mKCJcbiIpOy0xIT09dD90aGlzLl9fY2hhcmFjdGVyX2NvdW50PWUubGVuZ3RoLXQ6dGhpcy5fX2NoYXJhY3Rlcl9jb3VudCs9ZS5sZW5ndGh9LHQucHJvdG90eXBlLnBvcD1mdW5jdGlvbigpe3ZhciBlPW51bGw7cmV0dXJuIHRoaXMuaXNfZW1wdHkoKXx8KGU9dGhpcy5fX2l0ZW1zLnBvcCgpLHRoaXMuX19jaGFyYWN0ZXJfY291bnQtPWUubGVuZ3RoKSxlfSx0LnByb3RvdHlwZS5fcmVtb3ZlX2luZGVudD1mdW5jdGlvbigpe3RoaXMuX19pbmRlbnRfY291bnQ+MCYmKHRoaXMuX19pbmRlbnRfY291bnQtPTEsdGhpcy5fX2NoYXJhY3Rlcl9jb3VudC09dGhpcy5fX3BhcmVudC5pbmRlbnRfc2l6ZSl9LHQucHJvdG90eXBlLl9yZW1vdmVfd3JhcF9pbmRlbnQ9ZnVuY3Rpb24oKXt0aGlzLl9fd3JhcF9wb2ludF9pbmRlbnRfY291bnQ+MCYmKHRoaXMuX193cmFwX3BvaW50X2luZGVudF9jb3VudC09MSl9LHQucHJvdG90eXBlLnRyaW09ZnVuY3Rpb24oKXtmb3IoOyIgIj09PXRoaXMubGFzdCgpOyl0aGlzLl9faXRlbXMucG9wKCksdGhpcy5fX2NoYXJhY3Rlcl9jb3VudC09MX0sdC5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXt2YXIgZT0iIjtyZXR1cm4gdGhpcy5pc19lbXB0eSgpP3RoaXMuX19wYXJlbnQuaW5kZW50X2VtcHR5X2xpbmVzJiYoZT10aGlzLl9fcGFyZW50LmdldF9pbmRlbnRfc3RyaW5nKHRoaXMuX19pbmRlbnRfY291bnQpKTooZT10aGlzLl9fcGFyZW50LmdldF9pbmRlbnRfc3RyaW5nKHRoaXMuX19pbmRlbnRfY291bnQsdGhpcy5fX2FsaWdubWVudF9jb3VudCksZSs9dGhpcy5fX2l0ZW1zLmpvaW4oIiIpKSxlfSxuLnByb3RvdHlwZS5nZXRfaW5kZW50X3NpemU9ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLl9fYmFzZV9zdHJpbmdfbGVuZ3RoO3JldHVybiB0PXR8fDAsZTwwJiYobj0wKSxuKz1lKnRoaXMuX19pbmRlbnRfc2l6ZSxuKz10fSxuLnByb3RvdHlwZS5nZXRfaW5kZW50X3N0cmluZz1mdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMuX19iYXNlX3N0cmluZztyZXR1cm4gdD10fHwwLGU8MCYmKGU9MCxuPSIiKSx0Kz1lKnRoaXMuX19pbmRlbnRfc2l6ZSx0aGlzLl9fZW5zdXJlX2NhY2hlKHQpLG4rPXRoaXMuX19jYWNoZVt0XX0sbi5wcm90b3R5cGUuX19lbnN1cmVfY2FjaGU9ZnVuY3Rpb24oZSl7Zm9yKDtlPj10aGlzLl9fY2FjaGUubGVuZ3RoOyl0aGlzLl9fYWRkX2NvbHVtbigpfSxuLnByb3RvdHlwZS5fX2FkZF9jb2x1bW49ZnVuY3Rpb24oKXt2YXIgZT10aGlzLl9fY2FjaGUubGVuZ3RoLHQ9MCxuPSIiO3RoaXMuX19pbmRlbnRfc2l6ZSYmZT49dGhpcy5fX2luZGVudF9zaXplJiYoZS09KHQ9TWF0aC5mbG9vcihlL3RoaXMuX19pbmRlbnRfc2l6ZSkpKnRoaXMuX19pbmRlbnRfc2l6ZSxuPW5ldyBBcnJheSh0KzEpLmpvaW4odGhpcy5fX2luZGVudF9zdHJpbmcpKSxlJiYobis9bmV3IEFycmF5KGUrMSkuam9pbigiICIpKSx0aGlzLl9fY2FjaGUucHVzaChuKX0sci5wcm90b3R5cGUuX19hZGRfb3V0cHV0bGluZT1mdW5jdGlvbigpe3RoaXMucHJldmlvdXNfbGluZT10aGlzLmN1cnJlbnRfbGluZSx0aGlzLmN1cnJlbnRfbGluZT10aGlzLm5leHRfbGluZS5jbG9uZV9lbXB0eSgpLHRoaXMuX19saW5lcy5wdXNoKHRoaXMuY3VycmVudF9saW5lKX0sci5wcm90b3R5cGUuZ2V0X2xpbmVfbnVtYmVyPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX19saW5lcy5sZW5ndGh9LHIucHJvdG90eXBlLmdldF9pbmRlbnRfc3RyaW5nPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuX19pbmRlbnRfY2FjaGUuZ2V0X2luZGVudF9zdHJpbmcoZSx0KX0sci5wcm90b3R5cGUuZ2V0X2luZGVudF9zaXplPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuX19pbmRlbnRfY2FjaGUuZ2V0X2luZGVudF9zaXplKGUsdCl9LHIucHJvdG90eXBlLmlzX2VtcHR5PWZ1bmN0aW9uKCl7cmV0dXJuIXRoaXMucHJldmlvdXNfbGluZSYmdGhpcy5jdXJyZW50X2xpbmUuaXNfZW1wdHkoKX0sci5wcm90b3R5cGUuYWRkX25ld19saW5lPWZ1bmN0aW9uKGUpe3JldHVybiEodGhpcy5pc19lbXB0eSgpfHwhZSYmdGhpcy5qdXN0X2FkZGVkX25ld2xpbmUoKXx8KHRoaXMucmF3fHx0aGlzLl9fYWRkX291dHB1dGxpbmUoKSwwKSl9LHIucHJvdG90eXBlLmdldF9jb2RlPWZ1bmN0aW9uKGUpe3RoaXMudHJpbSghMCk7dmFyIHQ9dGhpcy5jdXJyZW50X2xpbmUucG9wKCk7dCYmKCJcbiI9PT10W3QubGVuZ3RoLTFdJiYodD10LnJlcGxhY2UoL1xuKyQvZywiIikpLHRoaXMuY3VycmVudF9saW5lLnB1c2godCkpLHRoaXMuX2VuZF93aXRoX25ld2xpbmUmJnRoaXMuX19hZGRfb3V0cHV0bGluZSgpO3ZhciBuPXRoaXMuX19saW5lcy5qb2luKCJcbiIpO3JldHVybiJcbiIhPT1lJiYobj1uLnJlcGxhY2UoL1tcbl0vZyxlKSksbn0sci5wcm90b3R5cGUuc2V0X3dyYXBfcG9pbnQ9ZnVuY3Rpb24oKXt0aGlzLmN1cnJlbnRfbGluZS5fc2V0X3dyYXBfcG9pbnQoKX0sci5wcm90b3R5cGUuc2V0X2luZGVudD1mdW5jdGlvbihlLHQpe3JldHVybiBlPWV8fDAsdD10fHwwLHRoaXMubmV4dF9saW5lLnNldF9pbmRlbnQoZSx0KSx0aGlzLl9fbGluZXMubGVuZ3RoPjE/KHRoaXMuY3VycmVudF9saW5lLnNldF9pbmRlbnQoZSx0KSwhMCk6KHRoaXMuY3VycmVudF9saW5lLnNldF9pbmRlbnQoKSwhMSl9LHIucHJvdG90eXBlLmFkZF9yYXdfdG9rZW49ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTA7dDxlLm5ld2xpbmVzO3QrKyl0aGlzLl9fYWRkX291dHB1dGxpbmUoKTt0aGlzLmN1cnJlbnRfbGluZS5zZXRfaW5kZW50KC0xKSx0aGlzLmN1cnJlbnRfbGluZS5wdXNoKGUud2hpdGVzcGFjZV9iZWZvcmUpLHRoaXMuY3VycmVudF9saW5lLnB1c2goZS50ZXh0KSx0aGlzLnNwYWNlX2JlZm9yZV90b2tlbj0hMSx0aGlzLm5vbl9icmVha2luZ19zcGFjZT0hMSx0aGlzLnByZXZpb3VzX3Rva2VuX3dyYXBwZWQ9ITF9LHIucHJvdG90eXBlLmFkZF90b2tlbj1mdW5jdGlvbihlKXt0aGlzLl9fYWRkX3NwYWNlX2JlZm9yZV90b2tlbigpLHRoaXMuY3VycmVudF9saW5lLnB1c2goZSksdGhpcy5zcGFjZV9iZWZvcmVfdG9rZW49ITEsdGhpcy5ub25fYnJlYWtpbmdfc3BhY2U9ITEsdGhpcy5wcmV2aW91c190b2tlbl93cmFwcGVkPXRoaXMuY3VycmVudF9saW5lLl9hbGxvd193cmFwKCl9LHIucHJvdG90eXBlLl9fYWRkX3NwYWNlX2JlZm9yZV90b2tlbj1mdW5jdGlvbigpe3RoaXMuc3BhY2VfYmVmb3JlX3Rva2VuJiYhdGhpcy5qdXN0X2FkZGVkX25ld2xpbmUoKSYmKHRoaXMubm9uX2JyZWFraW5nX3NwYWNlfHx0aGlzLnNldF93cmFwX3BvaW50KCksdGhpcy5jdXJyZW50X2xpbmUucHVzaCgiICIpKX0sci5wcm90b3R5cGUucmVtb3ZlX2luZGVudD1mdW5jdGlvbihlKXtmb3IodmFyIHQ9dGhpcy5fX2xpbmVzLmxlbmd0aDtlPHQ7KXRoaXMuX19saW5lc1tlXS5fcmVtb3ZlX2luZGVudCgpLGUrKzt0aGlzLmN1cnJlbnRfbGluZS5fcmVtb3ZlX3dyYXBfaW5kZW50KCl9LHIucHJvdG90eXBlLnRyaW09ZnVuY3Rpb24oZSl7Zm9yKGU9dm9pZCAwIT09ZSYmZSx0aGlzLmN1cnJlbnRfbGluZS50cmltKCk7ZSYmdGhpcy5fX2xpbmVzLmxlbmd0aD4xJiZ0aGlzLmN1cnJlbnRfbGluZS5pc19lbXB0eSgpOyl0aGlzLl9fbGluZXMucG9wKCksdGhpcy5jdXJyZW50X2xpbmU9dGhpcy5fX2xpbmVzW3RoaXMuX19saW5lcy5sZW5ndGgtMV0sdGhpcy5jdXJyZW50X2xpbmUudHJpbSgpO3RoaXMucHJldmlvdXNfbGluZT10aGlzLl9fbGluZXMubGVuZ3RoPjE/dGhpcy5fX2xpbmVzW3RoaXMuX19saW5lcy5sZW5ndGgtMl06bnVsbH0sci5wcm90b3R5cGUuanVzdF9hZGRlZF9uZXdsaW5lPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY3VycmVudF9saW5lLmlzX2VtcHR5KCl9LHIucHJvdG90eXBlLmp1c3RfYWRkZWRfYmxhbmtsaW5lPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXNfZW1wdHkoKXx8dGhpcy5jdXJyZW50X2xpbmUuaXNfZW1wdHkoKSYmdGhpcy5wcmV2aW91c19saW5lLmlzX2VtcHR5KCl9LHIucHJvdG90eXBlLmVuc3VyZV9lbXB0eV9saW5lX2Fib3ZlPWZ1bmN0aW9uKGUsbil7Zm9yKHZhciByPXRoaXMuX19saW5lcy5sZW5ndGgtMjtyPj0wOyl7dmFyIGk9dGhpcy5fX2xpbmVzW3JdO2lmKGkuaXNfZW1wdHkoKSlicmVhaztpZigwIT09aS5pdGVtKDApLmluZGV4T2YoZSkmJmkuaXRlbSgtMSkhPT1uKXt0aGlzLl9fbGluZXMuc3BsaWNlKHIrMSwwLG5ldyB0KHRoaXMpKSx0aGlzLnByZXZpb3VzX2xpbmU9dGhpcy5fX2xpbmVzW3RoaXMuX19saW5lcy5sZW5ndGgtMl07YnJlYWt9ci0tfX0sZS5leHBvcnRzLk91dHB1dD1yfSwsLCxmdW5jdGlvbihlKXtmdW5jdGlvbiB0KGUsdCl7dGhpcy5yYXdfb3B0aW9ucz1uKGUsdCksdGhpcy5kaXNhYmxlZD10aGlzLl9nZXRfYm9vbGVhbigiZGlzYWJsZWQiKSx0aGlzLmVvbD10aGlzLl9nZXRfY2hhcmFjdGVycygiZW9sIiwiYXV0byIpLHRoaXMuZW5kX3dpdGhfbmV3bGluZT10aGlzLl9nZXRfYm9vbGVhbigiZW5kX3dpdGhfbmV3bGluZSIpLHRoaXMuaW5kZW50X3NpemU9dGhpcy5fZ2V0X251bWJlcigiaW5kZW50X3NpemUiLDQpLHRoaXMuaW5kZW50X2NoYXI9dGhpcy5fZ2V0X2NoYXJhY3RlcnMoImluZGVudF9jaGFyIiwiICIpLHRoaXMuaW5kZW50X2xldmVsPXRoaXMuX2dldF9udW1iZXIoImluZGVudF9sZXZlbCIpLHRoaXMucHJlc2VydmVfbmV3bGluZXM9dGhpcy5fZ2V0X2Jvb2xlYW4oInByZXNlcnZlX25ld2xpbmVzIiwhMCksdGhpcy5tYXhfcHJlc2VydmVfbmV3bGluZXM9dGhpcy5fZ2V0X251bWJlcigibWF4X3ByZXNlcnZlX25ld2xpbmVzIiwzMjc4NiksdGhpcy5wcmVzZXJ2ZV9uZXdsaW5lc3x8KHRoaXMubWF4X3ByZXNlcnZlX25ld2xpbmVzPTApLHRoaXMuaW5kZW50X3dpdGhfdGFicz10aGlzLl9nZXRfYm9vbGVhbigiaW5kZW50X3dpdGhfdGFicyIsIlx0Ij09PXRoaXMuaW5kZW50X2NoYXIpLHRoaXMuaW5kZW50X3dpdGhfdGFicyYmKHRoaXMuaW5kZW50X2NoYXI9Ilx0IiwxPT09dGhpcy5pbmRlbnRfc2l6ZSYmKHRoaXMuaW5kZW50X3NpemU9NCkpLHRoaXMud3JhcF9saW5lX2xlbmd0aD10aGlzLl9nZXRfbnVtYmVyKCJ3cmFwX2xpbmVfbGVuZ3RoIix0aGlzLl9nZXRfbnVtYmVyKCJtYXhfY2hhciIpKSx0aGlzLmluZGVudF9lbXB0eV9saW5lcz10aGlzLl9nZXRfYm9vbGVhbigiaW5kZW50X2VtcHR5X2xpbmVzIiksdGhpcy50ZW1wbGF0aW5nPXRoaXMuX2dldF9zZWxlY3Rpb25fbGlzdCgidGVtcGxhdGluZyIsWyJhdXRvIiwibm9uZSIsImRqYW5nbyIsImVyYiIsImhhbmRsZWJhcnMiLCJwaHAiLCJzbWFydHkiXSxbImF1dG8iXSl9ZnVuY3Rpb24gbihlLHQpe3ZhciBuLGk9e307Zm9yKG4gaW4gZT1yKGUpKW4hPT10JiYoaVtuXT1lW25dKTtpZih0JiZlW3RdKWZvcihuIGluIGVbdF0paVtuXT1lW3RdW25dO3JldHVybiBpfWZ1bmN0aW9uIHIoZSl7dmFyIHQsbj17fTtmb3IodCBpbiBlKW5bdC5yZXBsYWNlKC8tL2csIl8iKV09ZVt0XTtyZXR1cm4gbn10LnByb3RvdHlwZS5fZ2V0X2FycmF5PWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5yYXdfb3B0aW9uc1tlXSxyPXR8fFtdO3JldHVybiJvYmplY3QiPT10eXBlb2Ygbj9udWxsIT09biYmImZ1bmN0aW9uIj09dHlwZW9mIG4uY29uY2F0JiYocj1uLmNvbmNhdCgpKToic3RyaW5nIj09dHlwZW9mIG4mJihyPW4uc3BsaXQoL1teYS16QS1aMC05X1wvXC1dKy8pKSxyfSx0LnByb3RvdHlwZS5fZ2V0X2Jvb2xlYW49ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLnJhd19vcHRpb25zW2VdO3JldHVybiB2b2lkIDA9PT1uPyEhdDohIW59LHQucHJvdG90eXBlLl9nZXRfY2hhcmFjdGVycz1mdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMucmF3X29wdGlvbnNbZV0scj10fHwiIjtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIG4mJihyPW4ucmVwbGFjZSgvXFxyLywiXHIiKS5yZXBsYWNlKC9cXG4vLCJcbiIpLnJlcGxhY2UoL1xcdC8sIlx0IikpLHJ9LHQucHJvdG90eXBlLl9nZXRfbnVtYmVyPWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5yYXdfb3B0aW9uc1tlXTt0PXBhcnNlSW50KHQsMTApLGlzTmFOKHQpJiYodD0wKTt2YXIgcj1wYXJzZUludChuLDEwKTtyZXR1cm4gaXNOYU4ocikmJihyPXQpLHJ9LHQucHJvdG90eXBlLl9nZXRfc2VsZWN0aW9uPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzLl9nZXRfc2VsZWN0aW9uX2xpc3QoZSx0LG4pO2lmKDEhPT1yLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgT3B0aW9uIFZhbHVlOiBUaGUgb3B0aW9uICciK2UrIicgY2FuIG9ubHkgYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOlxuIit0KyJcbllvdSBwYXNzZWQgaW46ICciK3RoaXMucmF3X29wdGlvbnNbZV0rIiciKTtyZXR1cm4gclswXX0sdC5wcm90b3R5cGUuX2dldF9zZWxlY3Rpb25fbGlzdD1mdW5jdGlvbihlLHQsbil7aWYoIXR8fDA9PT10Lmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoIlNlbGVjdGlvbiBsaXN0IGNhbm5vdCBiZSBlbXB0eS4iKTtpZihuPW58fFt0WzBdXSwhdGhpcy5faXNfdmFsaWRfc2VsZWN0aW9uKG4sdCkpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIERlZmF1bHQgVmFsdWUhIik7dmFyIHI9dGhpcy5fZ2V0X2FycmF5KGUsbik7aWYoIXRoaXMuX2lzX3ZhbGlkX3NlbGVjdGlvbihyLHQpKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBPcHRpb24gVmFsdWU6IFRoZSBvcHRpb24gJyIrZSsiJyBjYW4gY29udGFpbiBvbmx5IHRoZSBmb2xsb3dpbmcgdmFsdWVzOlxuIit0KyJcbllvdSBwYXNzZWQgaW46ICciK3RoaXMucmF3X29wdGlvbnNbZV0rIiciKTtyZXR1cm4gcn0sdC5wcm90b3R5cGUuX2lzX3ZhbGlkX3NlbGVjdGlvbj1mdW5jdGlvbihlLHQpe3JldHVybiBlLmxlbmd0aCYmdC5sZW5ndGgmJiFlLnNvbWUoKGZ1bmN0aW9uKGUpe3JldHVybi0xPT09dC5pbmRleE9mKGUpfSkpfSxlLmV4cG9ydHMuT3B0aW9ucz10LGUuZXhwb3J0cy5ub3JtYWxpemVPcHRzPXIsZS5leHBvcnRzLm1lcmdlT3B0cz1ufSwsZnVuY3Rpb24oZSl7dmFyIHQ9UmVnRXhwLnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSgic3RpY2t5Iik7ZnVuY3Rpb24gbihlKXt0aGlzLl9faW5wdXQ9ZXx8IiIsdGhpcy5fX2lucHV0X2xlbmd0aD10aGlzLl9faW5wdXQubGVuZ3RoLHRoaXMuX19wb3NpdGlvbj0wfW4ucHJvdG90eXBlLnJlc3RhcnQ9ZnVuY3Rpb24oKXt0aGlzLl9fcG9zaXRpb249MH0sbi5wcm90b3R5cGUuYmFjaz1mdW5jdGlvbigpe3RoaXMuX19wb3NpdGlvbj4wJiYodGhpcy5fX3Bvc2l0aW9uLT0xKX0sbi5wcm90b3R5cGUuaGFzTmV4dD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9fcG9zaXRpb248dGhpcy5fX2lucHV0X2xlbmd0aH0sbi5wcm90b3R5cGUubmV4dD1mdW5jdGlvbigpe3ZhciBlPW51bGw7cmV0dXJuIHRoaXMuaGFzTmV4dCgpJiYoZT10aGlzLl9faW5wdXQuY2hhckF0KHRoaXMuX19wb3NpdGlvbiksdGhpcy5fX3Bvc2l0aW9uKz0xKSxlfSxuLnByb3RvdHlwZS5wZWVrPWZ1bmN0aW9uKGUpe3ZhciB0PW51bGw7cmV0dXJuIGU9ZXx8MCwoZSs9dGhpcy5fX3Bvc2l0aW9uKT49MCYmZTx0aGlzLl9faW5wdXRfbGVuZ3RoJiYodD10aGlzLl9faW5wdXQuY2hhckF0KGUpKSx0fSxuLnByb3RvdHlwZS5fX21hdGNoPWZ1bmN0aW9uKGUsbil7ZS5sYXN0SW5kZXg9bjt2YXIgcj1lLmV4ZWModGhpcy5fX2lucHV0KTtyZXR1cm4hcnx8dCYmZS5zdGlja3l8fHIuaW5kZXghPT1uJiYocj1udWxsKSxyfSxuLnByb3RvdHlwZS50ZXN0PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQ9dHx8MCwodCs9dGhpcy5fX3Bvc2l0aW9uKT49MCYmdDx0aGlzLl9faW5wdXRfbGVuZ3RoJiYhIXRoaXMuX19tYXRjaChlLHQpfSxuLnByb3RvdHlwZS50ZXN0Q2hhcj1mdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMucGVlayh0KTtyZXR1cm4gZS5sYXN0SW5kZXg9MCxudWxsIT09biYmZS50ZXN0KG4pfSxuLnByb3RvdHlwZS5tYXRjaD1mdW5jdGlvbihlKXt2YXIgdD10aGlzLl9fbWF0Y2goZSx0aGlzLl9fcG9zaXRpb24pO3JldHVybiB0P3RoaXMuX19wb3NpdGlvbis9dFswXS5sZW5ndGg6dD1udWxsLHR9LG4ucHJvdG90eXBlLnJlYWQ9ZnVuY3Rpb24oZSx0LG4pe3ZhciByLGk9IiI7cmV0dXJuIGUmJihyPXRoaXMubWF0Y2goZSkpJiYoaSs9clswXSksIXR8fCFyJiZlfHwoaSs9dGhpcy5yZWFkVW50aWwodCxuKSksaX0sbi5wcm90b3R5cGUucmVhZFVudGlsPWZ1bmN0aW9uKGUsdCl7dmFyIG4scj10aGlzLl9fcG9zaXRpb247ZS5sYXN0SW5kZXg9dGhpcy5fX3Bvc2l0aW9uO3ZhciBpPWUuZXhlYyh0aGlzLl9faW5wdXQpO3JldHVybiBpPyhyPWkuaW5kZXgsdCYmKHIrPWlbMF0ubGVuZ3RoKSk6cj10aGlzLl9faW5wdXRfbGVuZ3RoLG49dGhpcy5fX2lucHV0LnN1YnN0cmluZyh0aGlzLl9fcG9zaXRpb24sciksdGhpcy5fX3Bvc2l0aW9uPXIsbn0sbi5wcm90b3R5cGUucmVhZFVudGlsQWZ0ZXI9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMucmVhZFVudGlsKGUsITApfSxuLnByb3RvdHlwZS5nZXRfcmVnZXhwPWZ1bmN0aW9uKGUsbil7dmFyIHI9bnVsbCxpPSJnIjtyZXR1cm4gbiYmdCYmKGk9InkiKSwic3RyaW5nIj09dHlwZW9mIGUmJiIiIT09ZT9yPW5ldyBSZWdFeHAoZSxpKTplJiYocj1uZXcgUmVnRXhwKGUuc291cmNlLGkpKSxyfSxuLnByb3RvdHlwZS5nZXRfbGl0ZXJhbF9yZWdleHA9ZnVuY3Rpb24oZSl7cmV0dXJuIFJlZ0V4cChlLnJlcGxhY2UoL1stXC9cXF4kKis/LigpfFtcXXt9XS9nLCJcXCQmIikpfSxuLnByb3RvdHlwZS5wZWVrVW50aWxBZnRlcj1mdW5jdGlvbihlKXt2YXIgdD10aGlzLl9fcG9zaXRpb24sbj10aGlzLnJlYWRVbnRpbEFmdGVyKGUpO3JldHVybiB0aGlzLl9fcG9zaXRpb249dCxufSxuLnByb3RvdHlwZS5sb29rQmFjaz1mdW5jdGlvbihlKXt2YXIgdD10aGlzLl9fcG9zaXRpb24tMTtyZXR1cm4gdD49ZS5sZW5ndGgmJnRoaXMuX19pbnB1dC5zdWJzdHJpbmcodC1lLmxlbmd0aCx0KS50b0xvd2VyQ2FzZSgpPT09ZX0sZS5leHBvcnRzLklucHV0U2Nhbm5lcj1ufSwsLCwsZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChlLHQpe2U9InN0cmluZyI9PXR5cGVvZiBlP2U6ZS5zb3VyY2UsdD0ic3RyaW5nIj09dHlwZW9mIHQ/dDp0LnNvdXJjZSx0aGlzLl9fZGlyZWN0aXZlc19ibG9ja19wYXR0ZXJuPW5ldyBSZWdFeHAoZSsvIGJlYXV0aWZ5KCBcdytbOl1cdyspKyAvLnNvdXJjZSt0LCJnIiksdGhpcy5fX2RpcmVjdGl2ZV9wYXR0ZXJuPS8gKFx3KylbOl0oXHcrKS9nLHRoaXMuX19kaXJlY3RpdmVzX2VuZF9pZ25vcmVfcGF0dGVybj1uZXcgUmVnRXhwKGUrL1xzYmVhdXRpZnlcc2lnbm9yZTplbmRccy8uc291cmNlK3QsImciKX10LnByb3RvdHlwZS5nZXRfZGlyZWN0aXZlcz1mdW5jdGlvbihlKXtpZighZS5tYXRjaCh0aGlzLl9fZGlyZWN0aXZlc19ibG9ja19wYXR0ZXJuKSlyZXR1cm4gbnVsbDt2YXIgdD17fTt0aGlzLl9fZGlyZWN0aXZlX3BhdHRlcm4ubGFzdEluZGV4PTA7Zm9yKHZhciBuPXRoaXMuX19kaXJlY3RpdmVfcGF0dGVybi5leGVjKGUpO247KXRbblsxXV09blsyXSxuPXRoaXMuX19kaXJlY3RpdmVfcGF0dGVybi5leGVjKGUpO3JldHVybiB0fSx0LnByb3RvdHlwZS5yZWFkSWdub3JlZD1mdW5jdGlvbihlKXtyZXR1cm4gZS5yZWFkVW50aWxBZnRlcih0aGlzLl9fZGlyZWN0aXZlc19lbmRfaWdub3JlX3BhdHRlcm4pfSxlLmV4cG9ydHMuRGlyZWN0aXZlcz10fSwsZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4oMTYpLkJlYXV0aWZpZXIsaT1uKDE3KS5PcHRpb25zO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3JldHVybiBuZXcgcihlLHQpLmJlYXV0aWZ5KCl9LGUuZXhwb3J0cy5kZWZhdWx0T3B0aW9ucz1mdW5jdGlvbigpe3JldHVybiBuZXcgaX19LGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uKDE3KS5PcHRpb25zLGk9bigyKS5PdXRwdXQsbz1uKDgpLklucHV0U2Nhbm5lcixzPW5ldygwLG4oMTMpLkRpcmVjdGl2ZXMpKC9cL1wqLywvXCpcLy8pLGE9L1xyXG58W1xyXG5dLyxsPS9cclxufFtcclxuXS9nLGM9L1xzLyxoPS8oPzpcc3xcbikrL2csZD0vXC9cKig/Oltcc1xTXSo/KSgoPzpcKlwvKXwkKS9nLHA9L1wvXC8oPzpbXlxuXHJcdTIwMjhcdTIwMjldKikvZztmdW5jdGlvbiB1KGUsdCl7dGhpcy5fc291cmNlX3RleHQ9ZXx8IiIsdGhpcy5fb3B0aW9ucz1uZXcgcih0KSx0aGlzLl9jaD1udWxsLHRoaXMuX2lucHV0PW51bGwsdGhpcy5ORVNURURfQVRfUlVMRT17IkBwYWdlIjohMCwiQGZvbnQtZmFjZSI6ITAsIkBrZXlmcmFtZXMiOiEwLCJAbWVkaWEiOiEwLCJAc3VwcG9ydHMiOiEwLCJAZG9jdW1lbnQiOiEwfSx0aGlzLkNPTkRJVElPTkFMX0dST1VQX1JVTEU9eyJAbWVkaWEiOiEwLCJAc3VwcG9ydHMiOiEwLCJAZG9jdW1lbnQiOiEwfX11LnByb3RvdHlwZS5lYXRTdHJpbmc9ZnVuY3Rpb24oZSl7dmFyIHQ9IiI7Zm9yKHRoaXMuX2NoPXRoaXMuX2lucHV0Lm5leHQoKTt0aGlzLl9jaDspe2lmKHQrPXRoaXMuX2NoLCJcXCI9PT10aGlzLl9jaCl0Kz10aGlzLl9pbnB1dC5uZXh0KCk7ZWxzZSBpZigtMSE9PWUuaW5kZXhPZih0aGlzLl9jaCl8fCJcbiI9PT10aGlzLl9jaClicmVhazt0aGlzLl9jaD10aGlzLl9pbnB1dC5uZXh0KCl9cmV0dXJuIHR9LHUucHJvdG90eXBlLmVhdFdoaXRlc3BhY2U9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PWMudGVzdCh0aGlzLl9pbnB1dC5wZWVrKCkpLG49MDtjLnRlc3QodGhpcy5faW5wdXQucGVlaygpKTspdGhpcy5fY2g9dGhpcy5faW5wdXQubmV4dCgpLGUmJiJcbiI9PT10aGlzLl9jaCYmKDA9PT1ufHxuPHRoaXMuX29wdGlvbnMubWF4X3ByZXNlcnZlX25ld2xpbmVzKSYmKG4rKyx0aGlzLl9vdXRwdXQuYWRkX25ld19saW5lKCEwKSk7cmV0dXJuIHR9LHUucHJvdG90eXBlLmZvdW5kTmVzdGVkUHNldWRvQ2xhc3M9ZnVuY3Rpb24oKXtmb3IodmFyIGU9MCx0PTEsbj10aGlzLl9pbnB1dC5wZWVrKHQpO247KXtpZigieyI9PT1uKXJldHVybiEwO2lmKCIoIj09PW4pZSs9MTtlbHNlIGlmKCIpIj09PW4pe2lmKDA9PT1lKXJldHVybiExO2UtPTF9ZWxzZSBpZigiOyI9PT1ufHwifSI9PT1uKXJldHVybiExO3QrKyxuPXRoaXMuX2lucHV0LnBlZWsodCl9cmV0dXJuITF9LHUucHJvdG90eXBlLnByaW50X3N0cmluZz1mdW5jdGlvbihlKXt0aGlzLl9vdXRwdXQuc2V0X2luZGVudCh0aGlzLl9pbmRlbnRMZXZlbCksdGhpcy5fb3V0cHV0Lm5vbl9icmVha2luZ19zcGFjZT0hMCx0aGlzLl9vdXRwdXQuYWRkX3Rva2VuKGUpfSx1LnByb3RvdHlwZS5wcmVzZXJ2ZVNpbmdsZVNwYWNlPWZ1bmN0aW9uKGUpe2UmJih0aGlzLl9vdXRwdXQuc3BhY2VfYmVmb3JlX3Rva2VuPSEwKX0sdS5wcm90b3R5cGUuaW5kZW50PWZ1bmN0aW9uKCl7dGhpcy5faW5kZW50TGV2ZWwrK30sdS5wcm90b3R5cGUub3V0ZGVudD1mdW5jdGlvbigpe3RoaXMuX2luZGVudExldmVsPjAmJnRoaXMuX2luZGVudExldmVsLS19LHUucHJvdG90eXBlLmJlYXV0aWZ5PWZ1bmN0aW9uKCl7aWYodGhpcy5fb3B0aW9ucy5kaXNhYmxlZClyZXR1cm4gdGhpcy5fc291cmNlX3RleHQ7dmFyIGU9dGhpcy5fc291cmNlX3RleHQsdD10aGlzLl9vcHRpb25zLmVvbDsiYXV0byI9PT10JiYodD0iXG4iLGUmJmEudGVzdChlfHwiIikmJih0PWUubWF0Y2goYSlbMF0pKTt2YXIgbj0oZT1lLnJlcGxhY2UobCwiXG4iKSkubWF0Y2goL15bXHQgXSovKVswXTt0aGlzLl9vdXRwdXQ9bmV3IGkodGhpcy5fb3B0aW9ucyxuKSx0aGlzLl9pbnB1dD1uZXcgbyhlKSx0aGlzLl9pbmRlbnRMZXZlbD0wLHRoaXMuX25lc3RlZExldmVsPTAsdGhpcy5fY2g9bnVsbDtmb3IodmFyIHIsdSxtPTAsZj0hMSxnPSExLGI9ITEsdj0hMSx5PSExLHc9dGhpcy5fY2g7cj0iIiE9PXRoaXMuX2lucHV0LnJlYWQoaCksdT13LHRoaXMuX2NoPXRoaXMuX2lucHV0Lm5leHQoKSwiXFwiPT09dGhpcy5fY2gmJnRoaXMuX2lucHV0Lmhhc05leHQoKSYmKHRoaXMuX2NoKz10aGlzLl9pbnB1dC5uZXh0KCkpLHc9dGhpcy5fY2gsdGhpcy5fY2g7KWlmKCIvIj09PXRoaXMuX2NoJiYiKiI9PT10aGlzLl9pbnB1dC5wZWVrKCkpe3RoaXMuX291dHB1dC5hZGRfbmV3X2xpbmUoKSx0aGlzLl9pbnB1dC5iYWNrKCk7dmFyIHg9dGhpcy5faW5wdXQucmVhZChkKSxTPXMuZ2V0X2RpcmVjdGl2ZXMoeCk7UyYmInN0YXJ0Ij09PVMuaWdub3JlJiYoeCs9cy5yZWFkSWdub3JlZCh0aGlzLl9pbnB1dCkpLHRoaXMucHJpbnRfc3RyaW5nKHgpLHRoaXMuZWF0V2hpdGVzcGFjZSghMCksdGhpcy5fb3V0cHV0LmFkZF9uZXdfbGluZSgpfWVsc2UgaWYoIi8iPT09dGhpcy5fY2gmJiIvIj09PXRoaXMuX2lucHV0LnBlZWsoKSl0aGlzLl9vdXRwdXQuc3BhY2VfYmVmb3JlX3Rva2VuPSEwLHRoaXMuX2lucHV0LmJhY2soKSx0aGlzLnByaW50X3N0cmluZyh0aGlzLl9pbnB1dC5yZWFkKHApKSx0aGlzLmVhdFdoaXRlc3BhY2UoITApO2Vsc2UgaWYoIkAiPT09dGhpcy5fY2gpaWYodGhpcy5wcmVzZXJ2ZVNpbmdsZVNwYWNlKHIpLCJ7Ij09PXRoaXMuX2lucHV0LnBlZWsoKSl0aGlzLnByaW50X3N0cmluZyh0aGlzLl9jaCt0aGlzLmVhdFN0cmluZygifSIpKTtlbHNle3RoaXMucHJpbnRfc3RyaW5nKHRoaXMuX2NoKTt2YXIgQz10aGlzLl9pbnB1dC5wZWVrVW50aWxBZnRlcigvWzogLDt7fSgpW1xdXC89JyJdL2cpO0MubWF0Y2goL1sgOl0kLykmJihDPXRoaXMuZWF0U3RyaW5nKCI6ICIpLnJlcGxhY2UoL1xzJC8sIiIpLHRoaXMucHJpbnRfc3RyaW5nKEMpLHRoaXMuX291dHB1dC5zcGFjZV9iZWZvcmVfdG9rZW49ITApLCJleHRlbmQiPT09KEM9Qy5yZXBsYWNlKC9ccyQvLCIiKSk/dj0hMDoiaW1wb3J0Ij09PUMmJih5PSEwKSxDIGluIHRoaXMuTkVTVEVEX0FUX1JVTEU/KHRoaXMuX25lc3RlZExldmVsKz0xLEMgaW4gdGhpcy5DT05ESVRJT05BTF9HUk9VUF9SVUxFJiYoYj0hMCkpOmZ8fDAhPT1tfHwtMT09PUMuaW5kZXhPZigiOiIpfHwoZz0hMCx0aGlzLmluZGVudCgpKX1lbHNlIiMiPT09dGhpcy5fY2gmJiJ7Ij09PXRoaXMuX2lucHV0LnBlZWsoKT8odGhpcy5wcmVzZXJ2ZVNpbmdsZVNwYWNlKHIpLHRoaXMucHJpbnRfc3RyaW5nKHRoaXMuX2NoK3RoaXMuZWF0U3RyaW5nKCJ9IikpKToieyI9PT10aGlzLl9jaD8oZyYmKGc9ITEsdGhpcy5vdXRkZW50KCkpLGI/KGI9ITEsZj10aGlzLl9pbmRlbnRMZXZlbD49dGhpcy5fbmVzdGVkTGV2ZWwpOmY9dGhpcy5faW5kZW50TGV2ZWw+PXRoaXMuX25lc3RlZExldmVsLTEsdGhpcy5fb3B0aW9ucy5uZXdsaW5lX2JldHdlZW5fcnVsZXMmJmYmJnRoaXMuX291dHB1dC5wcmV2aW91c19saW5lJiYieyIhPT10aGlzLl9vdXRwdXQucHJldmlvdXNfbGluZS5pdGVtKC0xKSYmdGhpcy5fb3V0cHV0LmVuc3VyZV9lbXB0eV9saW5lX2Fib3ZlKCIvIiwiLCIpLHRoaXMuX291dHB1dC5zcGFjZV9iZWZvcmVfdG9rZW49ITAsImV4cGFuZCI9PT10aGlzLl9vcHRpb25zLmJyYWNlX3N0eWxlPyh0aGlzLl9vdXRwdXQuYWRkX25ld19saW5lKCksdGhpcy5wcmludF9zdHJpbmcodGhpcy5fY2gpLHRoaXMuaW5kZW50KCksdGhpcy5fb3V0cHV0LnNldF9pbmRlbnQodGhpcy5faW5kZW50TGV2ZWwpKToodGhpcy5pbmRlbnQoKSx0aGlzLnByaW50X3N0cmluZyh0aGlzLl9jaCkpLHRoaXMuZWF0V2hpdGVzcGFjZSghMCksdGhpcy5fb3V0cHV0LmFkZF9uZXdfbGluZSgpKToifSI9PT10aGlzLl9jaD8odGhpcy5vdXRkZW50KCksdGhpcy5fb3V0cHV0LmFkZF9uZXdfbGluZSgpLCJ7Ij09PXUmJnRoaXMuX291dHB1dC50cmltKCEwKSx5PSExLHY9ITEsZyYmKHRoaXMub3V0ZGVudCgpLGc9ITEpLHRoaXMucHJpbnRfc3RyaW5nKHRoaXMuX2NoKSxmPSExLHRoaXMuX25lc3RlZExldmVsJiZ0aGlzLl9uZXN0ZWRMZXZlbC0tLHRoaXMuZWF0V2hpdGVzcGFjZSghMCksdGhpcy5fb3V0cHV0LmFkZF9uZXdfbGluZSgpLHRoaXMuX29wdGlvbnMubmV3bGluZV9iZXR3ZWVuX3J1bGVzJiYhdGhpcy5fb3V0cHV0Lmp1c3RfYWRkZWRfYmxhbmtsaW5lKCkmJiJ9IiE9PXRoaXMuX2lucHV0LnBlZWsoKSYmdGhpcy5fb3V0cHV0LmFkZF9uZXdfbGluZSghMCkpOiI6Ij09PXRoaXMuX2NoPyFmJiYhYnx8dGhpcy5faW5wdXQubG9va0JhY2soIiYiKXx8dGhpcy5mb3VuZE5lc3RlZFBzZXVkb0NsYXNzKCl8fHRoaXMuX2lucHV0Lmxvb2tCYWNrKCIoIil8fHZ8fDAhPT1tPyh0aGlzLl9pbnB1dC5sb29rQmFjaygiICIpJiYodGhpcy5fb3V0cHV0LnNwYWNlX2JlZm9yZV90b2tlbj0hMCksIjoiPT09dGhpcy5faW5wdXQucGVlaygpPyh0aGlzLl9jaD10aGlzLl9pbnB1dC5uZXh0KCksdGhpcy5wcmludF9zdHJpbmcoIjo6IikpOnRoaXMucHJpbnRfc3RyaW5nKCI6IikpOih0aGlzLnByaW50X3N0cmluZygiOiIpLGd8fChnPSEwLHRoaXMuX291dHB1dC5zcGFjZV9iZWZvcmVfdG9rZW49ITAsdGhpcy5lYXRXaGl0ZXNwYWNlKCEwKSx0aGlzLmluZGVudCgpKSk6JyInPT09dGhpcy5fY2h8fCInIj09PXRoaXMuX2NoPyh0aGlzLnByZXNlcnZlU2luZ2xlU3BhY2UociksdGhpcy5wcmludF9zdHJpbmcodGhpcy5fY2grdGhpcy5lYXRTdHJpbmcodGhpcy5fY2gpKSx0aGlzLmVhdFdoaXRlc3BhY2UoITApKToiOyI9PT10aGlzLl9jaD8wPT09bT8oZyYmKHRoaXMub3V0ZGVudCgpLGc9ITEpLHY9ITEseT0hMSx0aGlzLnByaW50X3N0cmluZyh0aGlzLl9jaCksdGhpcy5lYXRXaGl0ZXNwYWNlKCEwKSwiLyIhPT10aGlzLl9pbnB1dC5wZWVrKCkmJnRoaXMuX291dHB1dC5hZGRfbmV3X2xpbmUoKSk6KHRoaXMucHJpbnRfc3RyaW5nKHRoaXMuX2NoKSx0aGlzLmVhdFdoaXRlc3BhY2UoITApLHRoaXMuX291dHB1dC5zcGFjZV9iZWZvcmVfdG9rZW49ITApOiIoIj09PXRoaXMuX2NoP3RoaXMuX2lucHV0Lmxvb2tCYWNrKCJ1cmwiKT8odGhpcy5wcmludF9zdHJpbmcodGhpcy5fY2gpLHRoaXMuZWF0V2hpdGVzcGFjZSgpLG0rKyx0aGlzLmluZGVudCgpLHRoaXMuX2NoPXRoaXMuX2lucHV0Lm5leHQoKSwiKSI9PT10aGlzLl9jaHx8JyInPT09dGhpcy5fY2h8fCInIj09PXRoaXMuX2NoP3RoaXMuX2lucHV0LmJhY2soKTp0aGlzLl9jaCYmKHRoaXMucHJpbnRfc3RyaW5nKHRoaXMuX2NoK3RoaXMuZWF0U3RyaW5nKCIpIikpLG0mJihtLS0sdGhpcy5vdXRkZW50KCkpKSk6KHRoaXMucHJlc2VydmVTaW5nbGVTcGFjZShyKSx0aGlzLnByaW50X3N0cmluZyh0aGlzLl9jaCksdGhpcy5lYXRXaGl0ZXNwYWNlKCksbSsrLHRoaXMuaW5kZW50KCkpOiIpIj09PXRoaXMuX2NoPyhtJiYobS0tLHRoaXMub3V0ZGVudCgpKSx0aGlzLnByaW50X3N0cmluZyh0aGlzLl9jaCkpOiIsIj09PXRoaXMuX2NoPyh0aGlzLnByaW50X3N0cmluZyh0aGlzLl9jaCksdGhpcy5lYXRXaGl0ZXNwYWNlKCEwKSwhdGhpcy5fb3B0aW9ucy5zZWxlY3Rvcl9zZXBhcmF0b3JfbmV3bGluZXx8Z3x8MCE9PW18fHl8fHY/dGhpcy5fb3V0cHV0LnNwYWNlX2JlZm9yZV90b2tlbj0hMDp0aGlzLl9vdXRwdXQuYWRkX25ld19saW5lKCkpOiI+IiE9PXRoaXMuX2NoJiYiKyIhPT10aGlzLl9jaCYmIn4iIT09dGhpcy5fY2h8fGd8fDAhPT1tPyJdIj09PXRoaXMuX2NoP3RoaXMucHJpbnRfc3RyaW5nKHRoaXMuX2NoKToiWyI9PT10aGlzLl9jaD8odGhpcy5wcmVzZXJ2ZVNpbmdsZVNwYWNlKHIpLHRoaXMucHJpbnRfc3RyaW5nKHRoaXMuX2NoKSk6Ij0iPT09dGhpcy5fY2g/KHRoaXMuZWF0V2hpdGVzcGFjZSgpLHRoaXMucHJpbnRfc3RyaW5nKCI9IiksYy50ZXN0KHRoaXMuX2NoKSYmKHRoaXMuX2NoPSIiKSk6IiEiIT09dGhpcy5fY2h8fHRoaXMuX2lucHV0Lmxvb2tCYWNrKCJcXCIpPyh0aGlzLnByZXNlcnZlU2luZ2xlU3BhY2UociksdGhpcy5wcmludF9zdHJpbmcodGhpcy5fY2gpKToodGhpcy5wcmludF9zdHJpbmcoIiAiKSx0aGlzLnByaW50X3N0cmluZyh0aGlzLl9jaCkpOnRoaXMuX29wdGlvbnMuc3BhY2VfYXJvdW5kX2NvbWJpbmF0b3I/KHRoaXMuX291dHB1dC5zcGFjZV9iZWZvcmVfdG9rZW49ITAsdGhpcy5wcmludF9zdHJpbmcodGhpcy5fY2gpLHRoaXMuX291dHB1dC5zcGFjZV9iZWZvcmVfdG9rZW49ITApOih0aGlzLnByaW50X3N0cmluZyh0aGlzLl9jaCksdGhpcy5lYXRXaGl0ZXNwYWNlKCksdGhpcy5fY2gmJmMudGVzdCh0aGlzLl9jaCkmJih0aGlzLl9jaD0iIikpO3JldHVybiB0aGlzLl9vdXRwdXQuZ2V0X2NvZGUodCl9LGUuZXhwb3J0cy5CZWF1dGlmaWVyPXV9LGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uKDYpLk9wdGlvbnM7ZnVuY3Rpb24gaShlKXtyLmNhbGwodGhpcyxlLCJjc3MiKSx0aGlzLnNlbGVjdG9yX3NlcGFyYXRvcl9uZXdsaW5lPXRoaXMuX2dldF9ib29sZWFuKCJzZWxlY3Rvcl9zZXBhcmF0b3JfbmV3bGluZSIsITApLHRoaXMubmV3bGluZV9iZXR3ZWVuX3J1bGVzPXRoaXMuX2dldF9ib29sZWFuKCJuZXdsaW5lX2JldHdlZW5fcnVsZXMiLCEwKTt2YXIgdD10aGlzLl9nZXRfYm9vbGVhbigic3BhY2VfYXJvdW5kX3NlbGVjdG9yX3NlcGFyYXRvciIpO3RoaXMuc3BhY2VfYXJvdW5kX2NvbWJpbmF0b3I9dGhpcy5fZ2V0X2Jvb2xlYW4oInNwYWNlX2Fyb3VuZF9jb21iaW5hdG9yIil8fHQ7dmFyIG49dGhpcy5fZ2V0X3NlbGVjdGlvbl9saXN0KCJicmFjZV9zdHlsZSIsWyJjb2xsYXBzZSIsImV4cGFuZCIsImVuZC1leHBhbmQiLCJub25lIiwicHJlc2VydmUtaW5saW5lIl0pO3RoaXMuYnJhY2Vfc3R5bGU9ImNvbGxhcHNlIjtmb3IodmFyIGk9MDtpPG4ubGVuZ3RoO2krKykiZXhwYW5kIiE9PW5baV0/dGhpcy5icmFjZV9zdHlsZT0iY29sbGFwc2UiOnRoaXMuYnJhY2Vfc3R5bGU9bltpXX1pLnByb3RvdHlwZT1uZXcgcixlLmV4cG9ydHMuT3B0aW9ucz1pfV0sa2Q9e30sX2Q9ZnVuY3Rpb24gZSh0KXt2YXIgbj1rZFt0XTtpZih2b2lkIDAhPT1uKXJldHVybiBuLmV4cG9ydHM7dmFyIHI9a2RbdF09e2V4cG9ydHM6e319O3JldHVybiBDZFt0XShyLHIuZXhwb3J0cyxlKSxyLmV4cG9ydHN9KDE1KTt2YXIgS2Q9X2Q7ZnVuY3Rpb24gamQoZSx0LG4pe3ZhciByPWUuZ2V0VGV4dCgpLGk9ITAsbz0wLHM9ITEsYT1uLnRhYlNpemV8fDQ7aWYodCl7Zm9yKHZhciBsPWUub2Zmc2V0QXQodC5zdGFydCksYz1sO2M+MCYmWGQocixjLTEpOyljLS07MD09PWN8fEpkKHIsYy0xKT9sPWM6YzxsJiYobD1jKzEpO2Zvcih2YXIgaD1lLm9mZnNldEF0KHQuZW5kKSxkPWg7ZDxyLmxlbmd0aCYmWGQocixkKTspZCsrO2lmKChkPT09ci5sZW5ndGh8fEpkKHIsZCkpJiYoaD1kKSx0PWtzLmNyZWF0ZShlLnBvc2l0aW9uQXQobCksZS5wb3NpdGlvbkF0KGgpKSxzPWZ1bmN0aW9uKGUsdCl7Zm9yKDt0Pj0wOyl7dmFyIG49ZS5jaGFyQ29kZUF0KHQpO2lmKG49PT0kZClyZXR1cm4hMDtpZihuPT09SGQpcmV0dXJuITE7dC0tfXJldHVybiExfShyLGwpLGk9aD09PXIubGVuZ3RoLHI9ci5zdWJzdHJpbmcobCxoKSwwIT09bCl7dmFyIHA9ZS5vZmZzZXRBdChTcy5jcmVhdGUodC5zdGFydC5saW5lLDApKTtvPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10LGk9MCxvPW4udGFiU2l6ZXx8NDtmb3IoO3I8ZS5sZW5ndGg7KXt2YXIgcz1lLmNoYXJBdChyKTtpZigiICI9PT1zKWkrKztlbHNle2lmKCJcdCIhPT1zKWJyZWFrO2krPW99cisrfXJldHVybiBNYXRoLmZsb29yKGkvbyl9KGUuZ2V0VGV4dCgpLHAsbil9cyYmKHI9IntcbiIuY29uY2F0KHFkKHIpKSl9ZWxzZSB0PWtzLmNyZWF0ZShTcy5jcmVhdGUoMCwwKSxlLnBvc2l0aW9uQXQoci5sZW5ndGgpKTt2YXIgdT17aW5kZW50X3NpemU6YSxpbmRlbnRfY2hhcjpuLmluc2VydFNwYWNlcz8iICI6Ilx0IixlbmRfd2l0aF9uZXdsaW5lOmkmJkdkKG4sImluc2VydEZpbmFsTmV3bGluZSIsITEpLHNlbGVjdG9yX3NlcGFyYXRvcl9uZXdsaW5lOkdkKG4sIm5ld2xpbmVCZXR3ZWVuU2VsZWN0b3JzIiwhMCksbmV3bGluZV9iZXR3ZWVuX3J1bGVzOkdkKG4sIm5ld2xpbmVCZXR3ZWVuUnVsZXMiLCEwKSxzcGFjZV9hcm91bmRfc2VsZWN0b3Jfc2VwYXJhdG9yOkdkKG4sInNwYWNlQXJvdW5kU2VsZWN0b3JTZXBhcmF0b3IiLCExKSxicmFjZV9zdHlsZTpHZChuLCJicmFjZVN0eWxlIiwiY29sbGFwc2UiKSxpbmRlbnRfZW1wdHlfbGluZXM6R2QobiwiaW5kZW50RW1wdHlMaW5lcyIsITEpLG1heF9wcmVzZXJ2ZV9uZXdsaW5lczpHZChuLCJtYXhQcmVzZXJ2ZU5ld0xpbmVzIix2b2lkIDApLHByZXNlcnZlX25ld2xpbmVzOkdkKG4sInByZXNlcnZlTmV3TGluZXMiLCEwKSx3cmFwX2xpbmVfbGVuZ3RoOkdkKG4sIndyYXBMaW5lTGVuZ3RoIix2b2lkIDApLGVvbDoiXG4ifSxtPUtkKHIsdSk7aWYocyYmKG09cWQobS5zdWJzdHJpbmcoMikpKSxvPjApe3ZhciBmPW4uaW5zZXJ0U3BhY2VzP0JpKCIgIixhKm8pOkJpKCJcdCIsbyk7bT1tLnNwbGl0KCJcbiIpLmpvaW4oIlxuIitmKSwwPT09dC5zdGFydC5jaGFyYWN0ZXImJihtPWYrbSl9cmV0dXJuW3tyYW5nZTp0LG5ld1RleHQ6bX1dfWZ1bmN0aW9uIHFkKGUpe3JldHVybiBlLnJlcGxhY2UoL15ccysvLCIiKX12YXIgJGQ9InsiLmNoYXJDb2RlQXQoMCksSGQ9In0iLmNoYXJDb2RlQXQoMCk7ZnVuY3Rpb24gR2QoZSx0LG4pe2lmKGUmJmUuaGFzT3duUHJvcGVydHkodCkpe3ZhciByPWVbdF07aWYobnVsbCE9PXIpcmV0dXJuIHJ9cmV0dXJuIG59ZnVuY3Rpb24gSmQoZSx0KXtyZXR1cm4tMSE9PSJcclxuIi5pbmRleE9mKGUuY2hhckF0KHQpKX1mdW5jdGlvbiBYZChlLHQpe3JldHVybi0xIT09IiBcdCIuaW5kZXhPZihlLmNoYXJBdCh0KSl9dmFyIFlkPXt2ZXJzaW9uOjEuMSxwcm9wZXJ0aWVzOlt7bmFtZToiYWRkaXRpdmUtc3ltYm9scyIsYnJvd3NlcnM6WyJGRjMzIl0sc3ludGF4OiJbIDxpbnRlZ2VyPiAmJiA8c3ltYm9sPiBdIyIscmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJAY291bnRlci1zdHlsZSBkZXNjcmlwdG9yLiBTcGVjaWZpZXMgdGhlIHN5bWJvbHMgdXNlZCBieSB0aGUgbWFya2VyLWNvbnN0cnVjdGlvbiBhbGdvcml0aG0gc3BlY2lmaWVkIGJ5IHRoZSBzeXN0ZW0gZGVzY3JpcHRvci4gTmVlZHMgdG8gYmUgc3BlY2lmaWVkIGlmIHRoZSBjb3VudGVyIHN5c3RlbSBpcyAnYWRkaXRpdmUnLiIscmVzdHJpY3Rpb25zOlsiaW50ZWdlciIsInN0cmluZyIsImltYWdlIiwiaWRlbnRpZmllciJdfSx7bmFtZToiYWxpZ24tY29udGVudCIsdmFsdWVzOlt7bmFtZToiY2VudGVyIixkZXNjcmlwdGlvbjoiTGluZXMgYXJlIHBhY2tlZCB0b3dhcmQgdGhlIGNlbnRlciBvZiB0aGUgZmxleCBjb250YWluZXIuIn0se25hbWU6ImZsZXgtZW5kIixkZXNjcmlwdGlvbjoiTGluZXMgYXJlIHBhY2tlZCB0b3dhcmQgdGhlIGVuZCBvZiB0aGUgZmxleCBjb250YWluZXIuIn0se25hbWU6ImZsZXgtc3RhcnQiLGRlc2NyaXB0aW9uOiJMaW5lcyBhcmUgcGFja2VkIHRvd2FyZCB0aGUgc3RhcnQgb2YgdGhlIGZsZXggY29udGFpbmVyLiJ9LHtuYW1lOiJzcGFjZS1hcm91bmQiLGRlc2NyaXB0aW9uOiJMaW5lcyBhcmUgZXZlbmx5IGRpc3RyaWJ1dGVkIGluIHRoZSBmbGV4IGNvbnRhaW5lciwgd2l0aCBoYWxmLXNpemUgc3BhY2VzIG9uIGVpdGhlciBlbmQuIn0se25hbWU6InNwYWNlLWJldHdlZW4iLGRlc2NyaXB0aW9uOiJMaW5lcyBhcmUgZXZlbmx5IGRpc3RyaWJ1dGVkIGluIHRoZSBmbGV4IGNvbnRhaW5lci4ifSx7bmFtZToic3RyZXRjaCIsZGVzY3JpcHRpb246IkxpbmVzIHN0cmV0Y2ggdG8gdGFrZSB1cCB0aGUgcmVtYWluaW5nIHNwYWNlLiJ9XSxzeW50YXg6Im5vcm1hbCB8IDxiYXNlbGluZS1wb3NpdGlvbj4gfCA8Y29udGVudC1kaXN0cmlidXRpb24+IHwgPG92ZXJmbG93LXBvc2l0aW9uPj8gPGNvbnRlbnQtcG9zaXRpb24+IixyZWxldmFuY2U6NjIsZGVzY3JpcHRpb246IkFsaWducyBhIGZsZXggY29udGFpbmVy4oCZcyBsaW5lcyB3aXRoaW4gdGhlIGZsZXggY29udGFpbmVyIHdoZW4gdGhlcmUgaXMgZXh0cmEgc3BhY2UgaW4gdGhlIGNyb3NzLWF4aXMsIHNpbWlsYXIgdG8gaG93ICdqdXN0aWZ5LWNvbnRlbnQnIGFsaWducyBpbmRpdmlkdWFsIGl0ZW1zIHdpdGhpbiB0aGUgbWFpbi1heGlzLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiYWxpZ24taXRlbXMiLHZhbHVlczpbe25hbWU6ImJhc2VsaW5lIixkZXNjcmlwdGlvbjoiSWYgdGhlIGZsZXggaXRlbeKAmXMgaW5saW5lIGF4aXMgaXMgdGhlIHNhbWUgYXMgdGhlIGNyb3NzIGF4aXMsIHRoaXMgdmFsdWUgaXMgaWRlbnRpY2FsIHRvICdmbGV4LXN0YXJ0Jy4gT3RoZXJ3aXNlLCBpdCBwYXJ0aWNpcGF0ZXMgaW4gYmFzZWxpbmUgYWxpZ25tZW50LiJ9LHtuYW1lOiJjZW50ZXIiLGRlc2NyaXB0aW9uOiJUaGUgZmxleCBpdGVt4oCZcyBtYXJnaW4gYm94IGlzIGNlbnRlcmVkIGluIHRoZSBjcm9zcyBheGlzIHdpdGhpbiB0aGUgbGluZS4ifSx7bmFtZToiZmxleC1lbmQiLGRlc2NyaXB0aW9uOiJUaGUgY3Jvc3MtZW5kIG1hcmdpbiBlZGdlIG9mIHRoZSBmbGV4IGl0ZW0gaXMgcGxhY2VkIGZsdXNoIHdpdGggdGhlIGNyb3NzLWVuZCBlZGdlIG9mIHRoZSBsaW5lLiJ9LHtuYW1lOiJmbGV4LXN0YXJ0IixkZXNjcmlwdGlvbjoiVGhlIGNyb3NzLXN0YXJ0IG1hcmdpbiBlZGdlIG9mIHRoZSBmbGV4IGl0ZW0gaXMgcGxhY2VkIGZsdXNoIHdpdGggdGhlIGNyb3NzLXN0YXJ0IGVkZ2Ugb2YgdGhlIGxpbmUuIn0se25hbWU6InN0cmV0Y2giLGRlc2NyaXB0aW9uOiJJZiB0aGUgY3Jvc3Mgc2l6ZSBwcm9wZXJ0eSBvZiB0aGUgZmxleCBpdGVtIGNvbXB1dGVzIHRvIGF1dG8sIGFuZCBuZWl0aGVyIG9mIHRoZSBjcm9zcy1heGlzIG1hcmdpbnMgYXJlIGF1dG8sIHRoZSBmbGV4IGl0ZW0gaXMgc3RyZXRjaGVkLiJ9XSxzeW50YXg6Im5vcm1hbCB8IHN0cmV0Y2ggfCA8YmFzZWxpbmUtcG9zaXRpb24+IHwgWyA8b3ZlcmZsb3ctcG9zaXRpb24+PyA8c2VsZi1wb3NpdGlvbj4gXSIscmVsZXZhbmNlOjg1LGRlc2NyaXB0aW9uOiJBbGlnbnMgZmxleCBpdGVtcyBhbG9uZyB0aGUgY3Jvc3MgYXhpcyBvZiB0aGUgY3VycmVudCBsaW5lIG9mIHRoZSBmbGV4IGNvbnRhaW5lci4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Imp1c3RpZnktaXRlbXMiLHZhbHVlczpbe25hbWU6ImF1dG8ifSx7bmFtZToibm9ybWFsIn0se25hbWU6ImVuZCJ9LHtuYW1lOiJzdGFydCJ9LHtuYW1lOiJmbGV4LWVuZCIsZGVzY3JpcHRpb246JyJGbGV4IGl0ZW1zIGFyZSBwYWNrZWQgdG93YXJkIHRoZSBlbmQgb2YgdGhlIGxpbmUuIid9LHtuYW1lOiJmbGV4LXN0YXJ0IixkZXNjcmlwdGlvbjonIkZsZXggaXRlbXMgYXJlIHBhY2tlZCB0b3dhcmQgdGhlIHN0YXJ0IG9mIHRoZSBsaW5lLiInfSx7bmFtZToic2VsZi1lbmQiLGRlc2NyaXB0aW9uOiJUaGUgaXRlbSBpcyBwYWNrZWQgZmx1c2ggdG8gdGhlIGVkZ2Ugb2YgdGhlIGFsaWdubWVudCBjb250YWluZXIgb2YgdGhlIGVuZCBzaWRlIG9mIHRoZSBpdGVtLCBpbiB0aGUgYXBwcm9wcmlhdGUgYXhpcy4ifSx7bmFtZToic2VsZi1zdGFydCIsZGVzY3JpcHRpb246IlRoZSBpdGVtIGlzIHBhY2tlZCBmbHVzaCB0byB0aGUgZWRnZSBvZiB0aGUgYWxpZ25tZW50IGNvbnRhaW5lciBvZiB0aGUgc3RhcnQgc2lkZSBvZiB0aGUgaXRlbSwgaW4gdGhlIGFwcHJvcHJpYXRlIGF4aXMuLiJ9LHtuYW1lOiJjZW50ZXIiLGRlc2NyaXB0aW9uOiJUaGUgaXRlbXMgYXJlIHBhY2tlZCBmbHVzaCB0byBlYWNoIG90aGVyIHRvd2FyZCB0aGUgY2VudGVyIG9mIHRoZSBvZiB0aGUgYWxpZ25tZW50IGNvbnRhaW5lci4ifSx7bmFtZToibGVmdCJ9LHtuYW1lOiJyaWdodCJ9LHtuYW1lOiJiYXNlbGluZSJ9LHtuYW1lOiJmaXJzdCBiYXNlbGluZSJ9LHtuYW1lOiJsYXN0IGJhc2VsaW5lIn0se25hbWU6InN0cmV0Y2giLGRlc2NyaXB0aW9uOiJJZiB0aGUgY3Jvc3Mgc2l6ZSBwcm9wZXJ0eSBvZiB0aGUgZmxleCBpdGVtIGNvbXB1dGVzIHRvIGF1dG8sIGFuZCBuZWl0aGVyIG9mIHRoZSBjcm9zcy1heGlzIG1hcmdpbnMgYXJlIGF1dG8sIHRoZSBmbGV4IGl0ZW0gaXMgc3RyZXRjaGVkLiJ9LHtuYW1lOiJzYXZlIn0se25hbWU6InVuc2F2ZSJ9LHtuYW1lOiJsZWdhY3kifV0sc3ludGF4OiJub3JtYWwgfCBzdHJldGNoIHwgPGJhc2VsaW5lLXBvc2l0aW9uPiB8IDxvdmVyZmxvdy1wb3NpdGlvbj4/IFsgPHNlbGYtcG9zaXRpb24+IHwgbGVmdCB8IHJpZ2h0IF0gfCBsZWdhY3kgfCBsZWdhY3kgJiYgWyBsZWZ0IHwgcmlnaHQgfCBjZW50ZXIgXSIscmVsZXZhbmNlOjUzLGRlc2NyaXB0aW9uOiJEZWZpbmVzIHRoZSBkZWZhdWx0IGp1c3RpZnktc2VsZiBmb3IgYWxsIGl0ZW1zIG9mIHRoZSBib3gsIGdpdmluZyB0aGVtIHRoZSBkZWZhdWx0IHdheSBvZiBqdXN0aWZ5aW5nIGVhY2ggYm94IGFsb25nIHRoZSBhcHByb3ByaWF0ZSBheGlzIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJqdXN0aWZ5LXNlbGYiLHZhbHVlczpbe25hbWU6ImF1dG8ifSx7bmFtZToibm9ybWFsIn0se25hbWU6ImVuZCJ9LHtuYW1lOiJzdGFydCJ9LHtuYW1lOiJmbGV4LWVuZCIsZGVzY3JpcHRpb246JyJGbGV4IGl0ZW1zIGFyZSBwYWNrZWQgdG93YXJkIHRoZSBlbmQgb2YgdGhlIGxpbmUuIid9LHtuYW1lOiJmbGV4LXN0YXJ0IixkZXNjcmlwdGlvbjonIkZsZXggaXRlbXMgYXJlIHBhY2tlZCB0b3dhcmQgdGhlIHN0YXJ0IG9mIHRoZSBsaW5lLiInfSx7bmFtZToic2VsZi1lbmQiLGRlc2NyaXB0aW9uOiJUaGUgaXRlbSBpcyBwYWNrZWQgZmx1c2ggdG8gdGhlIGVkZ2Ugb2YgdGhlIGFsaWdubWVudCBjb250YWluZXIgb2YgdGhlIGVuZCBzaWRlIG9mIHRoZSBpdGVtLCBpbiB0aGUgYXBwcm9wcmlhdGUgYXhpcy4ifSx7bmFtZToic2VsZi1zdGFydCIsZGVzY3JpcHRpb246IlRoZSBpdGVtIGlzIHBhY2tlZCBmbHVzaCB0byB0aGUgZWRnZSBvZiB0aGUgYWxpZ25tZW50IGNvbnRhaW5lciBvZiB0aGUgc3RhcnQgc2lkZSBvZiB0aGUgaXRlbSwgaW4gdGhlIGFwcHJvcHJpYXRlIGF4aXMuLiJ9LHtuYW1lOiJjZW50ZXIiLGRlc2NyaXB0aW9uOiJUaGUgaXRlbXMgYXJlIHBhY2tlZCBmbHVzaCB0byBlYWNoIG90aGVyIHRvd2FyZCB0aGUgY2VudGVyIG9mIHRoZSBvZiB0aGUgYWxpZ25tZW50IGNvbnRhaW5lci4ifSx7bmFtZToibGVmdCJ9LHtuYW1lOiJyaWdodCJ9LHtuYW1lOiJiYXNlbGluZSJ9LHtuYW1lOiJmaXJzdCBiYXNlbGluZSJ9LHtuYW1lOiJsYXN0IGJhc2VsaW5lIn0se25hbWU6InN0cmV0Y2giLGRlc2NyaXB0aW9uOiJJZiB0aGUgY3Jvc3Mgc2l6ZSBwcm9wZXJ0eSBvZiB0aGUgZmxleCBpdGVtIGNvbXB1dGVzIHRvIGF1dG8sIGFuZCBuZWl0aGVyIG9mIHRoZSBjcm9zcy1heGlzIG1hcmdpbnMgYXJlIGF1dG8sIHRoZSBmbGV4IGl0ZW0gaXMgc3RyZXRjaGVkLiJ9LHtuYW1lOiJzYXZlIn0se25hbWU6InVuc2F2ZSJ9XSxzeW50YXg6ImF1dG8gfCBub3JtYWwgfCBzdHJldGNoIHwgPGJhc2VsaW5lLXBvc2l0aW9uPiB8IDxvdmVyZmxvdy1wb3NpdGlvbj4/IFsgPHNlbGYtcG9zaXRpb24+IHwgbGVmdCB8IHJpZ2h0IF0iLHJlbGV2YW5jZTo1MyxkZXNjcmlwdGlvbjoiRGVmaW5lcyB0aGUgd2F5IG9mIGp1c3RpZnlpbmcgYSBib3ggaW5zaWRlIGl0cyBjb250YWluZXIgYWxvbmcgdGhlIGFwcHJvcHJpYXRlIGF4aXMuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJhbGlnbi1zZWxmIix2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiQ29tcHV0ZXMgdG8gdGhlIHZhbHVlIG9mICdhbGlnbi1pdGVtcycgb24gdGhlIGVsZW1lbnTigJlzIHBhcmVudCwgb3IgJ3N0cmV0Y2gnIGlmIHRoZSBlbGVtZW50IGhhcyBubyBwYXJlbnQuIE9uIGFic29sdXRlbHkgcG9zaXRpb25lZCBlbGVtZW50cywgaXQgY29tcHV0ZXMgdG8gaXRzZWxmLiJ9LHtuYW1lOiJiYXNlbGluZSIsZGVzY3JpcHRpb246IklmIHRoZSBmbGV4IGl0ZW3igJlzIGlubGluZSBheGlzIGlzIHRoZSBzYW1lIGFzIHRoZSBjcm9zcyBheGlzLCB0aGlzIHZhbHVlIGlzIGlkZW50aWNhbCB0byAnZmxleC1zdGFydCcuIE90aGVyd2lzZSwgaXQgcGFydGljaXBhdGVzIGluIGJhc2VsaW5lIGFsaWdubWVudC4ifSx7bmFtZToiY2VudGVyIixkZXNjcmlwdGlvbjoiVGhlIGZsZXggaXRlbeKAmXMgbWFyZ2luIGJveCBpcyBjZW50ZXJlZCBpbiB0aGUgY3Jvc3MgYXhpcyB3aXRoaW4gdGhlIGxpbmUuIn0se25hbWU6ImZsZXgtZW5kIixkZXNjcmlwdGlvbjoiVGhlIGNyb3NzLWVuZCBtYXJnaW4gZWRnZSBvZiB0aGUgZmxleCBpdGVtIGlzIHBsYWNlZCBmbHVzaCB3aXRoIHRoZSBjcm9zcy1lbmQgZWRnZSBvZiB0aGUgbGluZS4ifSx7bmFtZToiZmxleC1zdGFydCIsZGVzY3JpcHRpb246IlRoZSBjcm9zcy1zdGFydCBtYXJnaW4gZWRnZSBvZiB0aGUgZmxleCBpdGVtIGlzIHBsYWNlZCBmbHVzaCB3aXRoIHRoZSBjcm9zcy1zdGFydCBlZGdlIG9mIHRoZSBsaW5lLiJ9LHtuYW1lOiJzdHJldGNoIixkZXNjcmlwdGlvbjoiSWYgdGhlIGNyb3NzIHNpemUgcHJvcGVydHkgb2YgdGhlIGZsZXggaXRlbSBjb21wdXRlcyB0byBhdXRvLCBhbmQgbmVpdGhlciBvZiB0aGUgY3Jvc3MtYXhpcyBtYXJnaW5zIGFyZSBhdXRvLCB0aGUgZmxleCBpdGVtIGlzIHN0cmV0Y2hlZC4ifV0sc3ludGF4OiJhdXRvIHwgbm9ybWFsIHwgc3RyZXRjaCB8IDxiYXNlbGluZS1wb3NpdGlvbj4gfCA8b3ZlcmZsb3ctcG9zaXRpb24+PyA8c2VsZi1wb3NpdGlvbj4iLHJlbGV2YW5jZTo3MixkZXNjcmlwdGlvbjoiQWxsb3dzIHRoZSBkZWZhdWx0IGFsaWdubWVudCBhbG9uZyB0aGUgY3Jvc3MgYXhpcyB0byBiZSBvdmVycmlkZGVuIGZvciBpbmRpdmlkdWFsIGZsZXggaXRlbXMuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJhbGwiLGJyb3dzZXJzOlsiRTc5IiwiRkYyNyIsIlM5LjEiLCJDMzciLCJPMjQiXSx2YWx1ZXM6W10sc3ludGF4OiJpbml0aWFsIHwgaW5oZXJpdCB8IHVuc2V0IHwgcmV2ZXJ0IixyZWxldmFuY2U6NTMscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2FsbCJ9XSxkZXNjcmlwdGlvbjoiU2hvcnRoYW5kIHRoYXQgcmVzZXRzIGFsbCBwcm9wZXJ0aWVzIGV4Y2VwdCAnZGlyZWN0aW9uJyBhbmQgJ3VuaWNvZGUtYmlkaScuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJhbHQiLGJyb3dzZXJzOlsiUzkiXSx2YWx1ZXM6W10scmVsZXZhbmNlOjUwLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9hbHQifV0sZGVzY3JpcHRpb246IlByb3ZpZGVzIGFsdGVybmF0aXZlIHRleHQgZm9yIGFzc2lzdGl2ZSB0ZWNobm9sb2d5IHRvIHJlcGxhY2UgdGhlIGdlbmVyYXRlZCBjb250ZW50IG9mIGEgOjpiZWZvcmUgb3IgOjphZnRlciBlbGVtZW50LiIscmVzdHJpY3Rpb25zOlsic3RyaW5nIiwiZW51bSJdfSx7bmFtZToiYW5pbWF0aW9uIix2YWx1ZXM6W3tuYW1lOiJhbHRlcm5hdGUiLGRlc2NyaXB0aW9uOiJUaGUgYW5pbWF0aW9uIGN5Y2xlIGl0ZXJhdGlvbnMgdGhhdCBhcmUgb2RkIGNvdW50cyBhcmUgcGxheWVkIGluIHRoZSBub3JtYWwgZGlyZWN0aW9uLCBhbmQgdGhlIGFuaW1hdGlvbiBjeWNsZSBpdGVyYXRpb25zIHRoYXQgYXJlIGV2ZW4gY291bnRzIGFyZSBwbGF5ZWQgaW4gYSByZXZlcnNlIGRpcmVjdGlvbi4ifSx7bmFtZToiYWx0ZXJuYXRlLXJldmVyc2UiLGRlc2NyaXB0aW9uOiJUaGUgYW5pbWF0aW9uIGN5Y2xlIGl0ZXJhdGlvbnMgdGhhdCBhcmUgb2RkIGNvdW50cyBhcmUgcGxheWVkIGluIHRoZSByZXZlcnNlIGRpcmVjdGlvbiwgYW5kIHRoZSBhbmltYXRpb24gY3ljbGUgaXRlcmF0aW9ucyB0aGF0IGFyZSBldmVuIGNvdW50cyBhcmUgcGxheWVkIGluIGEgbm9ybWFsIGRpcmVjdGlvbi4ifSx7bmFtZToiYmFja3dhcmRzIixkZXNjcmlwdGlvbjoiVGhlIGJlZ2lubmluZyBwcm9wZXJ0eSB2YWx1ZSAoYXMgZGVmaW5lZCBpbiB0aGUgZmlyc3QgQGtleWZyYW1lcyBhdC1ydWxlKSBpcyBhcHBsaWVkIGJlZm9yZSB0aGUgYW5pbWF0aW9uIGlzIGRpc3BsYXllZCwgZHVyaW5nIHRoZSBwZXJpb2QgZGVmaW5lZCBieSAnYW5pbWF0aW9uLWRlbGF5Jy4ifSx7bmFtZToiYm90aCIsZGVzY3JpcHRpb246IkJvdGggZm9yd2FyZHMgYW5kIGJhY2t3YXJkcyBmaWxsIG1vZGVzIGFyZSBhcHBsaWVkLiJ9LHtuYW1lOiJmb3J3YXJkcyIsZGVzY3JpcHRpb246IlRoZSBmaW5hbCBwcm9wZXJ0eSB2YWx1ZSAoYXMgZGVmaW5lZCBpbiB0aGUgbGFzdCBAa2V5ZnJhbWVzIGF0LXJ1bGUpIGlzIG1haW50YWluZWQgYWZ0ZXIgdGhlIGFuaW1hdGlvbiBjb21wbGV0ZXMuIn0se25hbWU6ImluZmluaXRlIixkZXNjcmlwdGlvbjoiQ2F1c2VzIHRoZSBhbmltYXRpb24gdG8gcmVwZWF0IGZvcmV2ZXIuIn0se25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJObyBhbmltYXRpb24gaXMgcGVyZm9ybWVkIn0se25hbWU6Im5vcm1hbCIsZGVzY3JpcHRpb246Ik5vcm1hbCBwbGF5YmFjay4ifSx7bmFtZToicmV2ZXJzZSIsZGVzY3JpcHRpb246IkFsbCBpdGVyYXRpb25zIG9mIHRoZSBhbmltYXRpb24gYXJlIHBsYXllZCBpbiB0aGUgcmV2ZXJzZSBkaXJlY3Rpb24gZnJvbSB0aGUgd2F5IHRoZXkgd2VyZSBzcGVjaWZpZWQuIn1dLHN5bnRheDoiPHNpbmdsZS1hbmltYXRpb24+IyIscmVsZXZhbmNlOjgyLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9hbmltYXRpb24ifV0sZGVzY3JpcHRpb246IlNob3J0aGFuZCBwcm9wZXJ0eSBjb21iaW5lcyBzaXggb2YgdGhlIGFuaW1hdGlvbiBwcm9wZXJ0aWVzIGludG8gYSBzaW5nbGUgcHJvcGVydHkuIixyZXN0cmljdGlvbnM6WyJ0aW1lIiwidGltaW5nLWZ1bmN0aW9uIiwiZW51bSIsImlkZW50aWZpZXIiLCJudW1iZXIiXX0se25hbWU6ImFuaW1hdGlvbi1kZWxheSIsc3ludGF4OiI8dGltZT4jIixyZWxldmFuY2U6NjQscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2FuaW1hdGlvbi1kZWxheSJ9XSxkZXNjcmlwdGlvbjoiRGVmaW5lcyB3aGVuIHRoZSBhbmltYXRpb24gd2lsbCBzdGFydC4iLHJlc3RyaWN0aW9uczpbInRpbWUiXX0se25hbWU6ImFuaW1hdGlvbi1kaXJlY3Rpb24iLHZhbHVlczpbe25hbWU6ImFsdGVybmF0ZSIsZGVzY3JpcHRpb246IlRoZSBhbmltYXRpb24gY3ljbGUgaXRlcmF0aW9ucyB0aGF0IGFyZSBvZGQgY291bnRzIGFyZSBwbGF5ZWQgaW4gdGhlIG5vcm1hbCBkaXJlY3Rpb24sIGFuZCB0aGUgYW5pbWF0aW9uIGN5Y2xlIGl0ZXJhdGlvbnMgdGhhdCBhcmUgZXZlbiBjb3VudHMgYXJlIHBsYXllZCBpbiBhIHJldmVyc2UgZGlyZWN0aW9uLiJ9LHtuYW1lOiJhbHRlcm5hdGUtcmV2ZXJzZSIsZGVzY3JpcHRpb246IlRoZSBhbmltYXRpb24gY3ljbGUgaXRlcmF0aW9ucyB0aGF0IGFyZSBvZGQgY291bnRzIGFyZSBwbGF5ZWQgaW4gdGhlIHJldmVyc2UgZGlyZWN0aW9uLCBhbmQgdGhlIGFuaW1hdGlvbiBjeWNsZSBpdGVyYXRpb25zIHRoYXQgYXJlIGV2ZW4gY291bnRzIGFyZSBwbGF5ZWQgaW4gYSBub3JtYWwgZGlyZWN0aW9uLiJ9LHtuYW1lOiJub3JtYWwiLGRlc2NyaXB0aW9uOiJOb3JtYWwgcGxheWJhY2suIn0se25hbWU6InJldmVyc2UiLGRlc2NyaXB0aW9uOiJBbGwgaXRlcmF0aW9ucyBvZiB0aGUgYW5pbWF0aW9uIGFyZSBwbGF5ZWQgaW4gdGhlIHJldmVyc2UgZGlyZWN0aW9uIGZyb20gdGhlIHdheSB0aGV5IHdlcmUgc3BlY2lmaWVkLiJ9XSxzeW50YXg6IjxzaW5nbGUtYW5pbWF0aW9uLWRpcmVjdGlvbj4jIixyZWxldmFuY2U6NTcscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2FuaW1hdGlvbi1kaXJlY3Rpb24ifV0sZGVzY3JpcHRpb246IkRlZmluZXMgd2hldGhlciBvciBub3QgdGhlIGFuaW1hdGlvbiBzaG91bGQgcGxheSBpbiByZXZlcnNlIG9uIGFsdGVybmF0ZSBjeWNsZXMuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJhbmltYXRpb24tZHVyYXRpb24iLHN5bnRheDoiPHRpbWU+IyIscmVsZXZhbmNlOjY4LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9hbmltYXRpb24tZHVyYXRpb24ifV0sZGVzY3JpcHRpb246IkRlZmluZXMgdGhlIGxlbmd0aCBvZiB0aW1lIHRoYXQgYW4gYW5pbWF0aW9uIHRha2VzIHRvIGNvbXBsZXRlIG9uZSBjeWNsZS4iLHJlc3RyaWN0aW9uczpbInRpbWUiXX0se25hbWU6ImFuaW1hdGlvbi1maWxsLW1vZGUiLHZhbHVlczpbe25hbWU6ImJhY2t3YXJkcyIsZGVzY3JpcHRpb246IlRoZSBiZWdpbm5pbmcgcHJvcGVydHkgdmFsdWUgKGFzIGRlZmluZWQgaW4gdGhlIGZpcnN0IEBrZXlmcmFtZXMgYXQtcnVsZSkgaXMgYXBwbGllZCBiZWZvcmUgdGhlIGFuaW1hdGlvbiBpcyBkaXNwbGF5ZWQsIGR1cmluZyB0aGUgcGVyaW9kIGRlZmluZWQgYnkgJ2FuaW1hdGlvbi1kZWxheScuIn0se25hbWU6ImJvdGgiLGRlc2NyaXB0aW9uOiJCb3RoIGZvcndhcmRzIGFuZCBiYWNrd2FyZHMgZmlsbCBtb2RlcyBhcmUgYXBwbGllZC4ifSx7bmFtZToiZm9yd2FyZHMiLGRlc2NyaXB0aW9uOiJUaGUgZmluYWwgcHJvcGVydHkgdmFsdWUgKGFzIGRlZmluZWQgaW4gdGhlIGxhc3QgQGtleWZyYW1lcyBhdC1ydWxlKSBpcyBtYWludGFpbmVkIGFmdGVyIHRoZSBhbmltYXRpb24gY29tcGxldGVzLiJ9LHtuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiVGhlcmUgaXMgbm8gY2hhbmdlIHRvIHRoZSBwcm9wZXJ0eSB2YWx1ZSBiZXR3ZWVuIHRoZSB0aW1lIHRoZSBhbmltYXRpb24gaXMgYXBwbGllZCBhbmQgdGhlIHRpbWUgdGhlIGFuaW1hdGlvbiBiZWdpbnMgcGxheWluZyBvciBhZnRlciB0aGUgYW5pbWF0aW9uIGNvbXBsZXRlcy4ifV0sc3ludGF4OiI8c2luZ2xlLWFuaW1hdGlvbi1maWxsLW1vZGU+IyIscmVsZXZhbmNlOjYzLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9hbmltYXRpb24tZmlsbC1tb2RlIn1dLGRlc2NyaXB0aW9uOiJEZWZpbmVzIHdoYXQgdmFsdWVzIGFyZSBhcHBsaWVkIGJ5IHRoZSBhbmltYXRpb24gb3V0c2lkZSB0aGUgdGltZSBpdCBpcyBleGVjdXRpbmcuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJhbmltYXRpb24taXRlcmF0aW9uLWNvdW50Iix2YWx1ZXM6W3tuYW1lOiJpbmZpbml0ZSIsZGVzY3JpcHRpb246IkNhdXNlcyB0aGUgYW5pbWF0aW9uIHRvIHJlcGVhdCBmb3JldmVyLiJ9XSxzeW50YXg6IjxzaW5nbGUtYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudD4jIixyZWxldmFuY2U6NjAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2FuaW1hdGlvbi1pdGVyYXRpb24tY291bnQifV0sZGVzY3JpcHRpb246IkRlZmluZXMgdGhlIG51bWJlciBvZiB0aW1lcyBhbiBhbmltYXRpb24gY3ljbGUgaXMgcGxheWVkLiBUaGUgZGVmYXVsdCB2YWx1ZSBpcyBvbmUsIG1lYW5pbmcgdGhlIGFuaW1hdGlvbiB3aWxsIHBsYXkgZnJvbSBiZWdpbm5pbmcgdG8gZW5kIG9uY2UuIixyZXN0cmljdGlvbnM6WyJudW1iZXIiLCJlbnVtIl19LHtuYW1lOiJhbmltYXRpb24tbmFtZSIsdmFsdWVzOlt7bmFtZToibm9uZSIsZGVzY3JpcHRpb246Ik5vIGFuaW1hdGlvbiBpcyBwZXJmb3JtZWQifV0sc3ludGF4OiJbIG5vbmUgfCA8a2V5ZnJhbWVzLW5hbWU+IF0jIixyZWxldmFuY2U6NjgscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2FuaW1hdGlvbi1uYW1lIn1dLGRlc2NyaXB0aW9uOiJEZWZpbmVzIGEgbGlzdCBvZiBhbmltYXRpb25zIHRoYXQgYXBwbHkuIEVhY2ggbmFtZSBpcyB1c2VkIHRvIHNlbGVjdCB0aGUga2V5ZnJhbWUgYXQtcnVsZSB0aGF0IHByb3ZpZGVzIHRoZSBwcm9wZXJ0eSB2YWx1ZXMgZm9yIHRoZSBhbmltYXRpb24uIixyZXN0cmljdGlvbnM6WyJpZGVudGlmaWVyIiwiZW51bSJdfSx7bmFtZToiYW5pbWF0aW9uLXBsYXktc3RhdGUiLHZhbHVlczpbe25hbWU6InBhdXNlZCIsZGVzY3JpcHRpb246IkEgcnVubmluZyBhbmltYXRpb24gd2lsbCBiZSBwYXVzZWQuIn0se25hbWU6InJ1bm5pbmciLGRlc2NyaXB0aW9uOiJSZXN1bWUgcGxheWJhY2sgb2YgYSBwYXVzZWQgYW5pbWF0aW9uLiJ9XSxzeW50YXg6IjxzaW5nbGUtYW5pbWF0aW9uLXBsYXktc3RhdGU+IyIscmVsZXZhbmNlOjU0LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9hbmltYXRpb24tcGxheS1zdGF0ZSJ9XSxkZXNjcmlwdGlvbjoiRGVmaW5lcyB3aGV0aGVyIHRoZSBhbmltYXRpb24gaXMgcnVubmluZyBvciBwYXVzZWQuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uIixzeW50YXg6IjxlYXNpbmctZnVuY3Rpb24+IyIscmVsZXZhbmNlOjcxLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uIn1dLGRlc2NyaXB0aW9uOiJEZXNjcmliZXMgaG93IHRoZSBhbmltYXRpb24gd2lsbCBwcm9ncmVzcyBvdmVyIG9uZSBjeWNsZSBvZiBpdHMgZHVyYXRpb24uIixyZXN0cmljdGlvbnM6WyJ0aW1pbmctZnVuY3Rpb24iXX0se25hbWU6ImJhY2tmYWNlLXZpc2liaWxpdHkiLHZhbHVlczpbe25hbWU6ImhpZGRlbiIsZGVzY3JpcHRpb246IkJhY2sgc2lkZSBpcyBoaWRkZW4uIn0se25hbWU6InZpc2libGUiLGRlc2NyaXB0aW9uOiJCYWNrIHNpZGUgaXMgdmlzaWJsZS4ifV0sc3ludGF4OiJ2aXNpYmxlIHwgaGlkZGVuIixyZWxldmFuY2U6NTkscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JhY2tmYWNlLXZpc2liaWxpdHkifV0sZGVzY3JpcHRpb246IkRldGVybWluZXMgd2hldGhlciBvciBub3QgdGhlICdiYWNrJyBzaWRlIG9mIGEgdHJhbnNmb3JtZWQgZWxlbWVudCBpcyB2aXNpYmxlIHdoZW4gZmFjaW5nIHRoZSB2aWV3ZXIuIFdpdGggYW4gaWRlbnRpdHkgdHJhbnNmb3JtLCB0aGUgZnJvbnQgc2lkZSBvZiBhbiBlbGVtZW50IGZhY2VzIHRoZSB2aWV3ZXIuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJiYWNrZ3JvdW5kIix2YWx1ZXM6W3tuYW1lOiJmaXhlZCIsZGVzY3JpcHRpb246IlRoZSBiYWNrZ3JvdW5kIGlzIGZpeGVkIHdpdGggcmVnYXJkIHRvIHRoZSB2aWV3cG9ydC4gSW4gcGFnZWQgbWVkaWEgd2hlcmUgdGhlcmUgaXMgbm8gdmlld3BvcnQsIGEgJ2ZpeGVkJyBiYWNrZ3JvdW5kIGlzIGZpeGVkIHdpdGggcmVzcGVjdCB0byB0aGUgcGFnZSBib3ggYW5kIHRoZXJlZm9yZSByZXBsaWNhdGVkIG9uIGV2ZXJ5IHBhZ2UuIn0se25hbWU6ImxvY2FsIixkZXNjcmlwdGlvbjoiVGhlIGJhY2tncm91bmQgaXMgZml4ZWQgd2l0aCByZWdhcmQgdG8gdGhlIGVsZW1lbnQncyBjb250ZW50czogaWYgdGhlIGVsZW1lbnQgaGFzIGEgc2Nyb2xsaW5nIG1lY2hhbmlzbSwgdGhlIGJhY2tncm91bmQgc2Nyb2xscyB3aXRoIHRoZSBlbGVtZW50J3MgY29udGVudHMuIn0se25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJBIHZhbHVlIG9mICdub25lJyBjb3VudHMgYXMgYW4gaW1hZ2UgbGF5ZXIgYnV0IGRyYXdzIG5vdGhpbmcuIn0se25hbWU6InNjcm9sbCIsZGVzY3JpcHRpb246IlRoZSBiYWNrZ3JvdW5kIGlzIGZpeGVkIHdpdGggcmVnYXJkIHRvIHRoZSBlbGVtZW50IGl0c2VsZiBhbmQgZG9lcyBub3Qgc2Nyb2xsIHdpdGggaXRzIGNvbnRlbnRzLiAoSXQgaXMgZWZmZWN0aXZlbHkgYXR0YWNoZWQgdG8gdGhlIGVsZW1lbnQncyBib3JkZXIuKSJ9XSxzeW50YXg6IlsgPGJnLWxheWVyPiAsIF0qIDxmaW5hbC1iZy1sYXllcj4iLHJlbGV2YW5jZTo5MyxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYmFja2dyb3VuZCJ9XSxkZXNjcmlwdGlvbjoiU2hvcnRoYW5kIHByb3BlcnR5IGZvciBzZXR0aW5nIG1vc3QgYmFja2dyb3VuZCBwcm9wZXJ0aWVzIGF0IHRoZSBzYW1lIHBsYWNlIGluIHRoZSBzdHlsZSBzaGVldC4iLHJlc3RyaWN0aW9uczpbImVudW0iLCJpbWFnZSIsImNvbG9yIiwicG9zaXRpb24iLCJsZW5ndGgiLCJyZXBlYXQiLCJwZXJjZW50YWdlIiwiYm94Il19LHtuYW1lOiJiYWNrZ3JvdW5kLWF0dGFjaG1lbnQiLHZhbHVlczpbe25hbWU6ImZpeGVkIixkZXNjcmlwdGlvbjoiVGhlIGJhY2tncm91bmQgaXMgZml4ZWQgd2l0aCByZWdhcmQgdG8gdGhlIHZpZXdwb3J0LiBJbiBwYWdlZCBtZWRpYSB3aGVyZSB0aGVyZSBpcyBubyB2aWV3cG9ydCwgYSAnZml4ZWQnIGJhY2tncm91bmQgaXMgZml4ZWQgd2l0aCByZXNwZWN0IHRvIHRoZSBwYWdlIGJveCBhbmQgdGhlcmVmb3JlIHJlcGxpY2F0ZWQgb24gZXZlcnkgcGFnZS4ifSx7bmFtZToibG9jYWwiLGRlc2NyaXB0aW9uOiJUaGUgYmFja2dyb3VuZCBpcyBmaXhlZCB3aXRoIHJlZ2FyZCB0byB0aGUgZWxlbWVudOKAmXMgY29udGVudHM6IGlmIHRoZSBlbGVtZW50IGhhcyBhIHNjcm9sbGluZyBtZWNoYW5pc20sIHRoZSBiYWNrZ3JvdW5kIHNjcm9sbHMgd2l0aCB0aGUgZWxlbWVudOKAmXMgY29udGVudHMuIn0se25hbWU6InNjcm9sbCIsZGVzY3JpcHRpb246IlRoZSBiYWNrZ3JvdW5kIGlzIGZpeGVkIHdpdGggcmVnYXJkIHRvIHRoZSBlbGVtZW50IGl0c2VsZiBhbmQgZG9lcyBub3Qgc2Nyb2xsIHdpdGggaXRzIGNvbnRlbnRzLiAoSXQgaXMgZWZmZWN0aXZlbHkgYXR0YWNoZWQgdG8gdGhlIGVsZW1lbnTigJlzIGJvcmRlci4pIn1dLHN5bnRheDoiPGF0dGFjaG1lbnQ+IyIscmVsZXZhbmNlOjU0LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9iYWNrZ3JvdW5kLWF0dGFjaG1lbnQifV0sZGVzY3JpcHRpb246IlNwZWNpZmllcyB3aGV0aGVyIHRoZSBiYWNrZ3JvdW5kIGltYWdlcyBhcmUgZml4ZWQgd2l0aCByZWdhcmQgdG8gdGhlIHZpZXdwb3J0ICgnZml4ZWQnKSBvciBzY3JvbGwgYWxvbmcgd2l0aCB0aGUgZWxlbWVudCAoJ3Njcm9sbCcpIG9yIGl0cyBjb250ZW50cyAoJ2xvY2FsJykuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJiYWNrZ3JvdW5kLWJsZW5kLW1vZGUiLGJyb3dzZXJzOlsiRTc5IiwiRkYzMCIsIlM4IiwiQzM1IiwiTzIyIl0sdmFsdWVzOlt7bmFtZToibm9ybWFsIixkZXNjcmlwdGlvbjoiRGVmYXVsdCBhdHRyaWJ1dGUgd2hpY2ggc3BlY2lmaWVzIG5vIGJsZW5kaW5nIn0se25hbWU6Im11bHRpcGx5IixkZXNjcmlwdGlvbjoiVGhlIHNvdXJjZSBjb2xvciBpcyBtdWx0aXBsaWVkIGJ5IHRoZSBkZXN0aW5hdGlvbiBjb2xvciBhbmQgcmVwbGFjZXMgdGhlIGRlc3RpbmF0aW9uLiJ9LHtuYW1lOiJzY3JlZW4iLGRlc2NyaXB0aW9uOiJNdWx0aXBsaWVzIHRoZSBjb21wbGVtZW50cyBvZiB0aGUgYmFja2Ryb3AgYW5kIHNvdXJjZSBjb2xvciB2YWx1ZXMsIHRoZW4gY29tcGxlbWVudHMgdGhlIHJlc3VsdC4ifSx7bmFtZToib3ZlcmxheSIsZGVzY3JpcHRpb246Ik11bHRpcGxpZXMgb3Igc2NyZWVucyB0aGUgY29sb3JzLCBkZXBlbmRpbmcgb24gdGhlIGJhY2tkcm9wIGNvbG9yIHZhbHVlLiJ9LHtuYW1lOiJkYXJrZW4iLGRlc2NyaXB0aW9uOiJTZWxlY3RzIHRoZSBkYXJrZXIgb2YgdGhlIGJhY2tkcm9wIGFuZCBzb3VyY2UgY29sb3JzLiJ9LHtuYW1lOiJsaWdodGVuIixkZXNjcmlwdGlvbjoiU2VsZWN0cyB0aGUgbGlnaHRlciBvZiB0aGUgYmFja2Ryb3AgYW5kIHNvdXJjZSBjb2xvcnMuIn0se25hbWU6ImNvbG9yLWRvZGdlIixkZXNjcmlwdGlvbjoiQnJpZ2h0ZW5zIHRoZSBiYWNrZHJvcCBjb2xvciB0byByZWZsZWN0IHRoZSBzb3VyY2UgY29sb3IuIn0se25hbWU6ImNvbG9yLWJ1cm4iLGRlc2NyaXB0aW9uOiJEYXJrZW5zIHRoZSBiYWNrZHJvcCBjb2xvciB0byByZWZsZWN0IHRoZSBzb3VyY2UgY29sb3IuIn0se25hbWU6ImhhcmQtbGlnaHQiLGRlc2NyaXB0aW9uOiJNdWx0aXBsaWVzIG9yIHNjcmVlbnMgdGhlIGNvbG9ycywgZGVwZW5kaW5nIG9uIHRoZSBzb3VyY2UgY29sb3IgdmFsdWUuIn0se25hbWU6InNvZnQtbGlnaHQiLGRlc2NyaXB0aW9uOiJEYXJrZW5zIG9yIGxpZ2h0ZW5zIHRoZSBjb2xvcnMsIGRlcGVuZGluZyBvbiB0aGUgc291cmNlIGNvbG9yIHZhbHVlLiJ9LHtuYW1lOiJkaWZmZXJlbmNlIixkZXNjcmlwdGlvbjoiU3VidHJhY3RzIHRoZSBkYXJrZXIgb2YgdGhlIHR3byBjb25zdGl0dWVudCBjb2xvcnMgZnJvbSB0aGUgbGlnaHRlciBjb2xvci4uIn0se25hbWU6ImV4Y2x1c2lvbiIsZGVzY3JpcHRpb246IlByb2R1Y2VzIGFuIGVmZmVjdCBzaW1pbGFyIHRvIHRoYXQgb2YgdGhlIERpZmZlcmVuY2UgbW9kZSBidXQgbG93ZXIgaW4gY29udHJhc3QuIn0se25hbWU6Imh1ZSIsYnJvd3NlcnM6WyJFNzkiLCJGRjMwIiwiUzgiLCJDMzUiLCJPMjIiXSxkZXNjcmlwdGlvbjoiQ3JlYXRlcyBhIGNvbG9yIHdpdGggdGhlIGh1ZSBvZiB0aGUgc291cmNlIGNvbG9yIGFuZCB0aGUgc2F0dXJhdGlvbiBhbmQgbHVtaW5vc2l0eSBvZiB0aGUgYmFja2Ryb3AgY29sb3IuIn0se25hbWU6InNhdHVyYXRpb24iLGJyb3dzZXJzOlsiRTc5IiwiRkYzMCIsIlM4IiwiQzM1IiwiTzIyIl0sZGVzY3JpcHRpb246IkNyZWF0ZXMgYSBjb2xvciB3aXRoIHRoZSBzYXR1cmF0aW9uIG9mIHRoZSBzb3VyY2UgY29sb3IgYW5kIHRoZSBodWUgYW5kIGx1bWlub3NpdHkgb2YgdGhlIGJhY2tkcm9wIGNvbG9yLiJ9LHtuYW1lOiJjb2xvciIsYnJvd3NlcnM6WyJFNzkiLCJGRjMwIiwiUzgiLCJDMzUiLCJPMjIiXSxkZXNjcmlwdGlvbjoiQ3JlYXRlcyBhIGNvbG9yIHdpdGggdGhlIGh1ZSBhbmQgc2F0dXJhdGlvbiBvZiB0aGUgc291cmNlIGNvbG9yIGFuZCB0aGUgbHVtaW5vc2l0eSBvZiB0aGUgYmFja2Ryb3AgY29sb3IuIn0se25hbWU6Imx1bWlub3NpdHkiLGJyb3dzZXJzOlsiRTc5IiwiRkYzMCIsIlM4IiwiQzM1IiwiTzIyIl0sZGVzY3JpcHRpb246IkNyZWF0ZXMgYSBjb2xvciB3aXRoIHRoZSBsdW1pbm9zaXR5IG9mIHRoZSBzb3VyY2UgY29sb3IgYW5kIHRoZSBodWUgYW5kIHNhdHVyYXRpb24gb2YgdGhlIGJhY2tkcm9wIGNvbG9yLiJ9XSxzeW50YXg6IjxibGVuZC1tb2RlPiMiLHJlbGV2YW5jZTo1MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYmFja2dyb3VuZC1ibGVuZC1tb2RlIn1dLGRlc2NyaXB0aW9uOiJEZWZpbmVzIHRoZSBibGVuZGluZyBtb2RlIG9mIGVhY2ggYmFja2dyb3VuZCBsYXllci4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6ImJhY2tncm91bmQtY2xpcCIsc3ludGF4OiI8Ym94PiMiLHJlbGV2YW5jZTo2OSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYmFja2dyb3VuZC1jbGlwIn1dLGRlc2NyaXB0aW9uOiJEZXRlcm1pbmVzIHRoZSBiYWNrZ3JvdW5kIHBhaW50aW5nIGFyZWEuIixyZXN0cmljdGlvbnM6WyJib3giXX0se25hbWU6ImJhY2tncm91bmQtY29sb3IiLHN5bnRheDoiPGNvbG9yPiIscmVsZXZhbmNlOjk1LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9iYWNrZ3JvdW5kLWNvbG9yIn1dLGRlc2NyaXB0aW9uOiJTZXRzIHRoZSBiYWNrZ3JvdW5kIGNvbG9yIG9mIGFuIGVsZW1lbnQuIixyZXN0cmljdGlvbnM6WyJjb2xvciJdfSx7bmFtZToiYmFja2dyb3VuZC1pbWFnZSIsdmFsdWVzOlt7bmFtZToibm9uZSIsZGVzY3JpcHRpb246IkNvdW50cyBhcyBhbiBpbWFnZSBsYXllciBidXQgZHJhd3Mgbm90aGluZy4ifV0sc3ludGF4OiI8YmctaW1hZ2U+IyIscmVsZXZhbmNlOjg5LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9iYWNrZ3JvdW5kLWltYWdlIn1dLGRlc2NyaXB0aW9uOiJTZXRzIHRoZSBiYWNrZ3JvdW5kIGltYWdlKHMpIG9mIGFuIGVsZW1lbnQuIixyZXN0cmljdGlvbnM6WyJpbWFnZSIsImVudW0iXX0se25hbWU6ImJhY2tncm91bmQtb3JpZ2luIixzeW50YXg6Ijxib3g+IyIscmVsZXZhbmNlOjUzLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9iYWNrZ3JvdW5kLW9yaWdpbiJ9XSxkZXNjcmlwdGlvbjoiRm9yIGVsZW1lbnRzIHJlbmRlcmVkIGFzIGEgc2luZ2xlIGJveCwgc3BlY2lmaWVzIHRoZSBiYWNrZ3JvdW5kIHBvc2l0aW9uaW5nIGFyZWEuIEZvciBlbGVtZW50cyByZW5kZXJlZCBhcyBtdWx0aXBsZSBib3hlcyAoZS5nLiwgaW5saW5lIGJveGVzIG9uIHNldmVyYWwgbGluZXMsIGJveGVzIG9uIHNldmVyYWwgcGFnZXMpIHNwZWNpZmllcyB3aGljaCBib3hlcyAnYm94LWRlY29yYXRpb24tYnJlYWsnIG9wZXJhdGVzIG9uIHRvIGRldGVybWluZSB0aGUgYmFja2dyb3VuZCBwb3NpdGlvbmluZyBhcmVhKHMpLiIscmVzdHJpY3Rpb25zOlsiYm94Il19LHtuYW1lOiJiYWNrZ3JvdW5kLXBvc2l0aW9uIixzeW50YXg6IjxiZy1wb3NpdGlvbj4jIixyZWxldmFuY2U6ODgscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JhY2tncm91bmQtcG9zaXRpb24ifV0sZGVzY3JpcHRpb246IlNwZWNpZmllcyB0aGUgaW5pdGlhbCBwb3NpdGlvbiBvZiB0aGUgYmFja2dyb3VuZCBpbWFnZShzKSAoYWZ0ZXIgYW55IHJlc2l6aW5nKSB3aXRoaW4gdGhlaXIgY29ycmVzcG9uZGluZyBiYWNrZ3JvdW5kIHBvc2l0aW9uaW5nIGFyZWEuIixyZXN0cmljdGlvbnM6WyJwb3NpdGlvbiIsImxlbmd0aCIsInBlcmNlbnRhZ2UiXX0se25hbWU6ImJhY2tncm91bmQtcG9zaXRpb24teCIsdmFsdWVzOlt7bmFtZToiY2VudGVyIixkZXNjcmlwdGlvbjoiRXF1aXZhbGVudCB0byAnNTAlJyAoJ2xlZnQgNTAlJykgZm9yIHRoZSBob3Jpem9udGFsIHBvc2l0aW9uIGlmIHRoZSBob3Jpem9udGFsIHBvc2l0aW9uIGlzIG5vdCBvdGhlcndpc2Ugc3BlY2lmaWVkLCBvciAnNTAlJyAoJ3RvcCA1MCUnKSBmb3IgdGhlIHZlcnRpY2FsIHBvc2l0aW9uIGlmIGl0IGlzLiJ9LHtuYW1lOiJsZWZ0IixkZXNjcmlwdGlvbjoiRXF1aXZhbGVudCB0byAnMCUnIGZvciB0aGUgaG9yaXpvbnRhbCBwb3NpdGlvbiBpZiBvbmUgb3IgdHdvIHZhbHVlcyBhcmUgZ2l2ZW4sIG90aGVyd2lzZSBzcGVjaWZpZXMgdGhlIGxlZnQgZWRnZSBhcyB0aGUgb3JpZ2luIGZvciB0aGUgbmV4dCBvZmZzZXQuIn0se25hbWU6InJpZ2h0IixkZXNjcmlwdGlvbjoiRXF1aXZhbGVudCB0byAnMTAwJScgZm9yIHRoZSBob3Jpem9udGFsIHBvc2l0aW9uIGlmIG9uZSBvciB0d28gdmFsdWVzIGFyZSBnaXZlbiwgb3RoZXJ3aXNlIHNwZWNpZmllcyB0aGUgcmlnaHQgZWRnZSBhcyB0aGUgb3JpZ2luIGZvciB0aGUgbmV4dCBvZmZzZXQuIn1dLHN0YXR1czoiZXhwZXJpbWVudGFsIixzeW50YXg6IlsgY2VudGVyIHwgWyBbIGxlZnQgfCByaWdodCB8IHgtc3RhcnQgfCB4LWVuZCBdPyA8bGVuZ3RoLXBlcmNlbnRhZ2U+PyBdISBdIyIscmVsZXZhbmNlOjU0LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9iYWNrZ3JvdW5kLXBvc2l0aW9uLXgifV0sZGVzY3JpcHRpb246IklmIGJhY2tncm91bmQgaW1hZ2VzIGhhdmUgYmVlbiBzcGVjaWZpZWQsIHRoaXMgcHJvcGVydHkgc3BlY2lmaWVzIHRoZWlyIGluaXRpYWwgcG9zaXRpb24gKGFmdGVyIGFueSByZXNpemluZykgd2l0aGluIHRoZWlyIGNvcnJlc3BvbmRpbmcgYmFja2dyb3VuZCBwb3NpdGlvbmluZyBhcmVhLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwicGVyY2VudGFnZSJdfSx7bmFtZToiYmFja2dyb3VuZC1wb3NpdGlvbi15Iix2YWx1ZXM6W3tuYW1lOiJib3R0b20iLGRlc2NyaXB0aW9uOiJFcXVpdmFsZW50IHRvICcxMDAlJyBmb3IgdGhlIHZlcnRpY2FsIHBvc2l0aW9uIGlmIG9uZSBvciB0d28gdmFsdWVzIGFyZSBnaXZlbiwgb3RoZXJ3aXNlIHNwZWNpZmllcyB0aGUgYm90dG9tIGVkZ2UgYXMgdGhlIG9yaWdpbiBmb3IgdGhlIG5leHQgb2Zmc2V0LiJ9LHtuYW1lOiJjZW50ZXIiLGRlc2NyaXB0aW9uOiJFcXVpdmFsZW50IHRvICc1MCUnICgnbGVmdCA1MCUnKSBmb3IgdGhlIGhvcml6b250YWwgcG9zaXRpb24gaWYgdGhlIGhvcml6b250YWwgcG9zaXRpb24gaXMgbm90IG90aGVyd2lzZSBzcGVjaWZpZWQsIG9yICc1MCUnICgndG9wIDUwJScpIGZvciB0aGUgdmVydGljYWwgcG9zaXRpb24gaWYgaXQgaXMuIn0se25hbWU6InRvcCIsZGVzY3JpcHRpb246IkVxdWl2YWxlbnQgdG8gJzAlJyBmb3IgdGhlIHZlcnRpY2FsIHBvc2l0aW9uIGlmIG9uZSBvciB0d28gdmFsdWVzIGFyZSBnaXZlbiwgb3RoZXJ3aXNlIHNwZWNpZmllcyB0aGUgdG9wIGVkZ2UgYXMgdGhlIG9yaWdpbiBmb3IgdGhlIG5leHQgb2Zmc2V0LiJ9XSxzdGF0dXM6ImV4cGVyaW1lbnRhbCIsc3ludGF4OiJbIGNlbnRlciB8IFsgWyB0b3AgfCBib3R0b20gfCB5LXN0YXJ0IHwgeS1lbmQgXT8gPGxlbmd0aC1wZXJjZW50YWdlPj8gXSEgXSMiLHJlbGV2YW5jZTo1MyxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYmFja2dyb3VuZC1wb3NpdGlvbi15In1dLGRlc2NyaXB0aW9uOiJJZiBiYWNrZ3JvdW5kIGltYWdlcyBoYXZlIGJlZW4gc3BlY2lmaWVkLCB0aGlzIHByb3BlcnR5IHNwZWNpZmllcyB0aGVpciBpbml0aWFsIHBvc2l0aW9uIChhZnRlciBhbnkgcmVzaXppbmcpIHdpdGhpbiB0aGVpciBjb3JyZXNwb25kaW5nIGJhY2tncm91bmQgcG9zaXRpb25pbmcgYXJlYS4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsInBlcmNlbnRhZ2UiXX0se25hbWU6ImJhY2tncm91bmQtcmVwZWF0Iix2YWx1ZXM6W10sc3ludGF4OiI8cmVwZWF0LXN0eWxlPiMiLHJlbGV2YW5jZTo4NSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYmFja2dyb3VuZC1yZXBlYXQifV0sZGVzY3JpcHRpb246IlNwZWNpZmllcyBob3cgYmFja2dyb3VuZCBpbWFnZXMgYXJlIHRpbGVkIGFmdGVyIHRoZXkgaGF2ZSBiZWVuIHNpemVkIGFuZCBwb3NpdGlvbmVkLiIscmVzdHJpY3Rpb25zOlsicmVwZWF0Il19LHtuYW1lOiJiYWNrZ3JvdW5kLXNpemUiLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJSZXNvbHZlZCBieSB1c2luZyB0aGUgaW1hZ2XigJlzIGludHJpbnNpYyByYXRpbyBhbmQgdGhlIHNpemUgb2YgdGhlIG90aGVyIGRpbWVuc2lvbiwgb3IgZmFpbGluZyB0aGF0LCB1c2luZyB0aGUgaW1hZ2XigJlzIGludHJpbnNpYyBzaXplLCBvciBmYWlsaW5nIHRoYXQsIHRyZWF0aW5nIGl0IGFzIDEwMCUuIn0se25hbWU6ImNvbnRhaW4iLGRlc2NyaXB0aW9uOiJTY2FsZSB0aGUgaW1hZ2UsIHdoaWxlIHByZXNlcnZpbmcgaXRzIGludHJpbnNpYyBhc3BlY3QgcmF0aW8gKGlmIGFueSksIHRvIHRoZSBsYXJnZXN0IHNpemUgc3VjaCB0aGF0IGJvdGggaXRzIHdpZHRoIGFuZCBpdHMgaGVpZ2h0IGNhbiBmaXQgaW5zaWRlIHRoZSBiYWNrZ3JvdW5kIHBvc2l0aW9uaW5nIGFyZWEuIn0se25hbWU6ImNvdmVyIixkZXNjcmlwdGlvbjoiU2NhbGUgdGhlIGltYWdlLCB3aGlsZSBwcmVzZXJ2aW5nIGl0cyBpbnRyaW5zaWMgYXNwZWN0IHJhdGlvIChpZiBhbnkpLCB0byB0aGUgc21hbGxlc3Qgc2l6ZSBzdWNoIHRoYXQgYm90aCBpdHMgd2lkdGggYW5kIGl0cyBoZWlnaHQgY2FuIGNvbXBsZXRlbHkgY292ZXIgdGhlIGJhY2tncm91bmQgcG9zaXRpb25pbmcgYXJlYS4ifV0sc3ludGF4OiI8Ymctc2l6ZT4jIixyZWxldmFuY2U6ODUscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JhY2tncm91bmQtc2l6ZSJ9XSxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHRoZSBzaXplIG9mIHRoZSBiYWNrZ3JvdW5kIGltYWdlcy4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsInBlcmNlbnRhZ2UiXX0se25hbWU6ImJlaGF2aW9yIixicm93c2VyczpbIklFNiJdLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiSUUgb25seS4gVXNlZCB0byBleHRlbmQgYmVoYXZpb3JzIG9mIHRoZSBicm93c2VyLiIscmVzdHJpY3Rpb25zOlsidXJsIl19LHtuYW1lOiJibG9jay1zaXplIixicm93c2VyczpbIkU3OSIsIkZGNDEiLCJTMTIuMSIsIkM1NyIsIk80NCJdLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJEZXBlbmRzIG9uIHRoZSB2YWx1ZXMgb2Ygb3RoZXIgcHJvcGVydGllcy4ifV0sc3ludGF4OiI8J3dpZHRoJz4iLHJlbGV2YW5jZTo1MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYmxvY2stc2l6ZSJ9XSxkZXNjcmlwdGlvbjoiU2l6ZSBvZiBhbiBlbGVtZW50IGluIHRoZSBkaXJlY3Rpb24gb3Bwb3NpdGUgdGhhdCBvZiB0aGUgZGlyZWN0aW9uIHNwZWNpZmllZCBieSAnd3JpdGluZy1tb2RlJy4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsInBlcmNlbnRhZ2UiXX0se25hbWU6ImJvcmRlciIsc3ludGF4OiI8bGluZS13aWR0aD4gfHwgPGxpbmUtc3R5bGU+IHx8IDxjb2xvcj4iLHJlbGV2YW5jZTo5NixyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYm9yZGVyIn1dLGRlc2NyaXB0aW9uOiJTaG9ydGhhbmQgcHJvcGVydHkgZm9yIHNldHRpbmcgYm9yZGVyIHdpZHRoLCBzdHlsZSwgYW5kIGNvbG9yLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwibGluZS13aWR0aCIsImxpbmUtc3R5bGUiLCJjb2xvciJdfSx7bmFtZToiYm9yZGVyLWJsb2NrLWVuZCIsYnJvd3NlcnM6WyJFNzkiLCJGRjQxIiwiUzEyLjEiLCJDNjkiLCJPNTYiXSxzeW50YXg6IjwnYm9yZGVyLXRvcC13aWR0aCc+IHx8IDwnYm9yZGVyLXRvcC1zdHlsZSc+IHx8IDxjb2xvcj4iLHJlbGV2YW5jZTo1MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYm9yZGVyLWJsb2NrLWVuZCJ9XSxkZXNjcmlwdGlvbjoiTG9naWNhbCAnYm9yZGVyLWJvdHRvbScuIE1hcHBpbmcgZGVwZW5kcyBvbiB0aGUgcGFyZW50IGVsZW1lbnTigJlzICd3cml0aW5nLW1vZGUnLCAnZGlyZWN0aW9uJywgYW5kICd0ZXh0LW9yaWVudGF0aW9uJy4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsImxpbmUtd2lkdGgiLCJsaW5lLXN0eWxlIiwiY29sb3IiXX0se25hbWU6ImJvcmRlci1ibG9jay1zdGFydCIsYnJvd3NlcnM6WyJFNzkiLCJGRjQxIiwiUzEyLjEiLCJDNjkiLCJPNTYiXSxzeW50YXg6IjwnYm9yZGVyLXRvcC13aWR0aCc+IHx8IDwnYm9yZGVyLXRvcC1zdHlsZSc+IHx8IDxjb2xvcj4iLHJlbGV2YW5jZTo1MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYm9yZGVyLWJsb2NrLXN0YXJ0In1dLGRlc2NyaXB0aW9uOiJMb2dpY2FsICdib3JkZXItdG9wJy4gTWFwcGluZyBkZXBlbmRzIG9uIHRoZSBwYXJlbnQgZWxlbWVudOKAmXMgJ3dyaXRpbmctbW9kZScsICdkaXJlY3Rpb24nLCBhbmQgJ3RleHQtb3JpZW50YXRpb24nLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwibGluZS13aWR0aCIsImxpbmUtc3R5bGUiLCJjb2xvciJdfSx7bmFtZToiYm9yZGVyLWJsb2NrLWVuZC1jb2xvciIsYnJvd3NlcnM6WyJFNzkiLCJGRjQxIiwiUzEyLjEiLCJDNjkiLCJPNTYiXSxzeW50YXg6IjwnYm9yZGVyLXRvcC1jb2xvcic+IixyZWxldmFuY2U6NTAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JvcmRlci1ibG9jay1lbmQtY29sb3IifV0sZGVzY3JpcHRpb246IkxvZ2ljYWwgJ2JvcmRlci1ib3R0b20tY29sb3InLiBNYXBwaW5nIGRlcGVuZHMgb24gdGhlIHBhcmVudCBlbGVtZW504oCZcyAnd3JpdGluZy1tb2RlJywgJ2RpcmVjdGlvbicsIGFuZCAndGV4dC1vcmllbnRhdGlvbicuIixyZXN0cmljdGlvbnM6WyJjb2xvciJdfSx7bmFtZToiYm9yZGVyLWJsb2NrLXN0YXJ0LWNvbG9yIixicm93c2VyczpbIkU3OSIsIkZGNDEiLCJTMTIuMSIsIkM2OSIsIk81NiJdLHN5bnRheDoiPCdib3JkZXItdG9wLWNvbG9yJz4iLHJlbGV2YW5jZTo1MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYm9yZGVyLWJsb2NrLXN0YXJ0LWNvbG9yIn1dLGRlc2NyaXB0aW9uOiJMb2dpY2FsICdib3JkZXItdG9wLWNvbG9yJy4gTWFwcGluZyBkZXBlbmRzIG9uIHRoZSBwYXJlbnQgZWxlbWVudOKAmXMgJ3dyaXRpbmctbW9kZScsICdkaXJlY3Rpb24nLCBhbmQgJ3RleHQtb3JpZW50YXRpb24nLiIscmVzdHJpY3Rpb25zOlsiY29sb3IiXX0se25hbWU6ImJvcmRlci1ibG9jay1lbmQtc3R5bGUiLGJyb3dzZXJzOlsiRTc5IiwiRkY0MSIsIlMxMi4xIiwiQzY5IiwiTzU2Il0sc3ludGF4OiI8J2JvcmRlci10b3Atc3R5bGUnPiIscmVsZXZhbmNlOjUwLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ib3JkZXItYmxvY2stZW5kLXN0eWxlIn1dLGRlc2NyaXB0aW9uOiJMb2dpY2FsICdib3JkZXItYm90dG9tLXN0eWxlJy4gTWFwcGluZyBkZXBlbmRzIG9uIHRoZSBwYXJlbnQgZWxlbWVudOKAmXMgJ3dyaXRpbmctbW9kZScsICdkaXJlY3Rpb24nLCBhbmQgJ3RleHQtb3JpZW50YXRpb24nLiIscmVzdHJpY3Rpb25zOlsibGluZS1zdHlsZSJdfSx7bmFtZToiYm9yZGVyLWJsb2NrLXN0YXJ0LXN0eWxlIixicm93c2VyczpbIkU3OSIsIkZGNDEiLCJTMTIuMSIsIkM2OSIsIk81NiJdLHN5bnRheDoiPCdib3JkZXItdG9wLXN0eWxlJz4iLHJlbGV2YW5jZTo1MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYm9yZGVyLWJsb2NrLXN0YXJ0LXN0eWxlIn1dLGRlc2NyaXB0aW9uOiJMb2dpY2FsICdib3JkZXItdG9wLXN0eWxlJy4gTWFwcGluZyBkZXBlbmRzIG9uIHRoZSBwYXJlbnQgZWxlbWVudOKAmXMgJ3dyaXRpbmctbW9kZScsICdkaXJlY3Rpb24nLCBhbmQgJ3RleHQtb3JpZW50YXRpb24nLiIscmVzdHJpY3Rpb25zOlsibGluZS1zdHlsZSJdfSx7bmFtZToiYm9yZGVyLWJsb2NrLWVuZC13aWR0aCIsYnJvd3NlcnM6WyJFNzkiLCJGRjQxIiwiUzEyLjEiLCJDNjkiLCJPNTYiXSxzeW50YXg6IjwnYm9yZGVyLXRvcC13aWR0aCc+IixyZWxldmFuY2U6NTAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JvcmRlci1ibG9jay1lbmQtd2lkdGgifV0sZGVzY3JpcHRpb246IkxvZ2ljYWwgJ2JvcmRlci1ib3R0b20td2lkdGgnLiBNYXBwaW5nIGRlcGVuZHMgb24gdGhlIHBhcmVudCBlbGVtZW504oCZcyAnd3JpdGluZy1tb2RlJywgJ2RpcmVjdGlvbicsIGFuZCAndGV4dC1vcmllbnRhdGlvbicuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJsaW5lLXdpZHRoIl19LHtuYW1lOiJib3JkZXItYmxvY2stc3RhcnQtd2lkdGgiLGJyb3dzZXJzOlsiRTc5IiwiRkY0MSIsIlMxMi4xIiwiQzY5IiwiTzU2Il0sc3ludGF4OiI8J2JvcmRlci10b3Atd2lkdGgnPiIscmVsZXZhbmNlOjUwLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ib3JkZXItYmxvY2stc3RhcnQtd2lkdGgifV0sZGVzY3JpcHRpb246IkxvZ2ljYWwgJ2JvcmRlci10b3Atd2lkdGgnLiBNYXBwaW5nIGRlcGVuZHMgb24gdGhlIHBhcmVudCBlbGVtZW504oCZcyAnd3JpdGluZy1tb2RlJywgJ2RpcmVjdGlvbicsIGFuZCAndGV4dC1vcmllbnRhdGlvbicuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJsaW5lLXdpZHRoIl19LHtuYW1lOiJib3JkZXItYm90dG9tIixzeW50YXg6IjxsaW5lLXdpZHRoPiB8fCA8bGluZS1zdHlsZT4gfHwgPGNvbG9yPiIscmVsZXZhbmNlOjg5LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ib3JkZXItYm90dG9tIn1dLGRlc2NyaXB0aW9uOiJTaG9ydGhhbmQgcHJvcGVydHkgZm9yIHNldHRpbmcgYm9yZGVyIHdpZHRoLCBzdHlsZSBhbmQgY29sb3IuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJsaW5lLXdpZHRoIiwibGluZS1zdHlsZSIsImNvbG9yIl19LHtuYW1lOiJib3JkZXItYm90dG9tLWNvbG9yIixzeW50YXg6IjwnYm9yZGVyLXRvcC1jb2xvcic+IixyZWxldmFuY2U6NzIscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JvcmRlci1ib3R0b20tY29sb3IifV0sZGVzY3JpcHRpb246IlNldHMgdGhlIGNvbG9yIG9mIHRoZSBib3R0b20gYm9yZGVyLiIscmVzdHJpY3Rpb25zOlsiY29sb3IiXX0se25hbWU6ImJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXMiLHN5bnRheDoiPGxlbmd0aC1wZXJjZW50YWdlPnsxLDJ9IixyZWxldmFuY2U6NzUscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXMifV0sZGVzY3JpcHRpb246IkRlZmluZXMgdGhlIHJhZGlpIG9mIHRoZSBib3R0b20gbGVmdCBvdXRlciBib3JkZXIgZWRnZS4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsInBlcmNlbnRhZ2UiXX0se25hbWU6ImJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzIixzeW50YXg6IjxsZW5ndGgtcGVyY2VudGFnZT57MSwyfSIscmVsZXZhbmNlOjc1LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1cyJ9XSxkZXNjcmlwdGlvbjoiRGVmaW5lcyB0aGUgcmFkaWkgb2YgdGhlIGJvdHRvbSByaWdodCBvdXRlciBib3JkZXIgZWRnZS4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsInBlcmNlbnRhZ2UiXX0se25hbWU6ImJvcmRlci1ib3R0b20tc3R5bGUiLHN5bnRheDoiPGxpbmUtc3R5bGU+IixyZWxldmFuY2U6NTkscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JvcmRlci1ib3R0b20tc3R5bGUifV0sZGVzY3JpcHRpb246IlNldHMgdGhlIHN0eWxlIG9mIHRoZSBib3R0b20gYm9yZGVyLiIscmVzdHJpY3Rpb25zOlsibGluZS1zdHlsZSJdfSx7bmFtZToiYm9yZGVyLWJvdHRvbS13aWR0aCIsc3ludGF4OiI8bGluZS13aWR0aD4iLHJlbGV2YW5jZTo2MyxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYm9yZGVyLWJvdHRvbS13aWR0aCJ9XSxkZXNjcmlwdGlvbjoiU2V0cyB0aGUgdGhpY2tuZXNzIG9mIHRoZSBib3R0b20gYm9yZGVyLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwibGluZS13aWR0aCJdfSx7bmFtZToiYm9yZGVyLWNvbGxhcHNlIix2YWx1ZXM6W3tuYW1lOiJjb2xsYXBzZSIsZGVzY3JpcHRpb246IlNlbGVjdHMgdGhlIGNvbGxhcHNpbmcgYm9yZGVycyBtb2RlbC4ifSx7bmFtZToic2VwYXJhdGUiLGRlc2NyaXB0aW9uOiJTZWxlY3RzIHRoZSBzZXBhcmF0ZWQgYm9yZGVycyBib3JkZXIgbW9kZWwuIn1dLHN5bnRheDoiY29sbGFwc2UgfCBzZXBhcmF0ZSIscmVsZXZhbmNlOjc1LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ib3JkZXItY29sbGFwc2UifV0sZGVzY3JpcHRpb246IlNlbGVjdHMgYSB0YWJsZSdzIGJvcmRlciBtb2RlbC4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6ImJvcmRlci1jb2xvciIsdmFsdWVzOltdLHN5bnRheDoiPGNvbG9yPnsxLDR9IixyZWxldmFuY2U6ODcscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JvcmRlci1jb2xvciJ9XSxkZXNjcmlwdGlvbjoiVGhlIGNvbG9yIG9mIHRoZSBib3JkZXIgYXJvdW5kIGFsbCBmb3VyIGVkZ2VzIG9mIGFuIGVsZW1lbnQuIixyZXN0cmljdGlvbnM6WyJjb2xvciJdfSx7bmFtZToiYm9yZGVyLWltYWdlIix2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiSWYgJ2F1dG8nIGlzIHNwZWNpZmllZCB0aGVuIHRoZSBib3JkZXIgaW1hZ2Ugd2lkdGggaXMgdGhlIGludHJpbnNpYyB3aWR0aCBvciBoZWlnaHQgKHdoaWNoZXZlciBpcyBhcHBsaWNhYmxlKSBvZiB0aGUgY29ycmVzcG9uZGluZyBpbWFnZSBzbGljZS4gSWYgdGhlIGltYWdlIGRvZXMgbm90IGhhdmUgdGhlIHJlcXVpcmVkIGludHJpbnNpYyBkaW1lbnNpb24gdGhlbiB0aGUgY29ycmVzcG9uZGluZyBib3JkZXItd2lkdGggaXMgdXNlZCBpbnN0ZWFkLiJ9LHtuYW1lOiJmaWxsIixkZXNjcmlwdGlvbjoiQ2F1c2VzIHRoZSBtaWRkbGUgcGFydCBvZiB0aGUgYm9yZGVyLWltYWdlIHRvIGJlIHByZXNlcnZlZC4ifSx7bmFtZToibm9uZSIsZGVzY3JpcHRpb246IlVzZSB0aGUgYm9yZGVyIHN0eWxlcy4ifSx7bmFtZToicmVwZWF0IixkZXNjcmlwdGlvbjoiVGhlIGltYWdlIGlzIHRpbGVkIChyZXBlYXRlZCkgdG8gZmlsbCB0aGUgYXJlYS4ifSx7bmFtZToicm91bmQiLGRlc2NyaXB0aW9uOiJUaGUgaW1hZ2UgaXMgdGlsZWQgKHJlcGVhdGVkKSB0byBmaWxsIHRoZSBhcmVhLiBJZiBpdCBkb2VzIG5vdCBmaWxsIHRoZSBhcmVhIHdpdGggYSB3aG9sZSBudW1iZXIgb2YgdGlsZXMsIHRoZSBpbWFnZSBpcyByZXNjYWxlZCBzbyB0aGF0IGl0IGRvZXMuIn0se25hbWU6InNwYWNlIixkZXNjcmlwdGlvbjoiVGhlIGltYWdlIGlzIHRpbGVkIChyZXBlYXRlZCkgdG8gZmlsbCB0aGUgYXJlYS4gSWYgaXQgZG9lcyBub3QgZmlsbCB0aGUgYXJlYSB3aXRoIGEgd2hvbGUgbnVtYmVyIG9mIHRpbGVzLCB0aGUgZXh0cmEgc3BhY2UgaXMgZGlzdHJpYnV0ZWQgYXJvdW5kIHRoZSB0aWxlcy4ifSx7bmFtZToic3RyZXRjaCIsZGVzY3JpcHRpb246IlRoZSBpbWFnZSBpcyBzdHJldGNoZWQgdG8gZmlsbCB0aGUgYXJlYS4ifSx7bmFtZToidXJsKCkifV0sc3ludGF4OiI8J2JvcmRlci1pbWFnZS1zb3VyY2UnPiB8fCA8J2JvcmRlci1pbWFnZS1zbGljZSc+IFsgLyA8J2JvcmRlci1pbWFnZS13aWR0aCc+IHwgLyA8J2JvcmRlci1pbWFnZS13aWR0aCc+PyAvIDwnYm9yZGVyLWltYWdlLW91dHNldCc+IF0/IHx8IDwnYm9yZGVyLWltYWdlLXJlcGVhdCc+IixyZWxldmFuY2U6NTIscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JvcmRlci1pbWFnZSJ9XSxkZXNjcmlwdGlvbjoiU2hvcnRoYW5kIHByb3BlcnR5IGZvciBzZXR0aW5nICdib3JkZXItaW1hZ2Utc291cmNlJywgJ2JvcmRlci1pbWFnZS1zbGljZScsICdib3JkZXItaW1hZ2Utd2lkdGgnLCAnYm9yZGVyLWltYWdlLW91dHNldCcgYW5kICdib3JkZXItaW1hZ2UtcmVwZWF0Jy4gT21pdHRlZCB2YWx1ZXMgYXJlIHNldCB0byB0aGVpciBpbml0aWFsIHZhbHVlcy4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsInBlcmNlbnRhZ2UiLCJudW1iZXIiLCJ1cmwiLCJlbnVtIl19LHtuYW1lOiJib3JkZXItaW1hZ2Utb3V0c2V0IixzeW50YXg6IlsgPGxlbmd0aD4gfCA8bnVtYmVyPiBdezEsNH0iLHJlbGV2YW5jZTo1MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYm9yZGVyLWltYWdlLW91dHNldCJ9XSxkZXNjcmlwdGlvbjoiVGhlIHZhbHVlcyBzcGVjaWZ5IHRoZSBhbW91bnQgYnkgd2hpY2ggdGhlIGJvcmRlciBpbWFnZSBhcmVhIGV4dGVuZHMgYmV5b25kIHRoZSBib3JkZXIgYm94IG9uIHRoZSB0b3AsIHJpZ2h0LCBib3R0b20sIGFuZCBsZWZ0IHNpZGVzIHJlc3BlY3RpdmVseS4gSWYgdGhlIGZvdXJ0aCB2YWx1ZSBpcyBhYnNlbnQsIGl0IGlzIHRoZSBzYW1lIGFzIHRoZSBzZWNvbmQuIElmIHRoZSB0aGlyZCBvbmUgaXMgYWxzbyBhYnNlbnQsIGl0IGlzIHRoZSBzYW1lIGFzIHRoZSBmaXJzdC4gSWYgdGhlIHNlY29uZCBvbmUgaXMgYWxzbyBhYnNlbnQsIGl0IGlzIHRoZSBzYW1lIGFzIHRoZSBmaXJzdC4gTnVtYmVycyByZXByZXNlbnQgbXVsdGlwbGVzIG9mIHRoZSBjb3JyZXNwb25kaW5nIGJvcmRlci13aWR0aC4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsIm51bWJlciJdfSx7bmFtZToiYm9yZGVyLWltYWdlLXJlcGVhdCIsdmFsdWVzOlt7bmFtZToicmVwZWF0IixkZXNjcmlwdGlvbjoiVGhlIGltYWdlIGlzIHRpbGVkIChyZXBlYXRlZCkgdG8gZmlsbCB0aGUgYXJlYS4ifSx7bmFtZToicm91bmQiLGRlc2NyaXB0aW9uOiJUaGUgaW1hZ2UgaXMgdGlsZWQgKHJlcGVhdGVkKSB0byBmaWxsIHRoZSBhcmVhLiBJZiBpdCBkb2VzIG5vdCBmaWxsIHRoZSBhcmVhIHdpdGggYSB3aG9sZSBudW1iZXIgb2YgdGlsZXMsIHRoZSBpbWFnZSBpcyByZXNjYWxlZCBzbyB0aGF0IGl0IGRvZXMuIn0se25hbWU6InNwYWNlIixkZXNjcmlwdGlvbjoiVGhlIGltYWdlIGlzIHRpbGVkIChyZXBlYXRlZCkgdG8gZmlsbCB0aGUgYXJlYS4gSWYgaXQgZG9lcyBub3QgZmlsbCB0aGUgYXJlYSB3aXRoIGEgd2hvbGUgbnVtYmVyIG9mIHRpbGVzLCB0aGUgZXh0cmEgc3BhY2UgaXMgZGlzdHJpYnV0ZWQgYXJvdW5kIHRoZSB0aWxlcy4ifSx7bmFtZToic3RyZXRjaCIsZGVzY3JpcHRpb246IlRoZSBpbWFnZSBpcyBzdHJldGNoZWQgdG8gZmlsbCB0aGUgYXJlYS4ifV0sc3ludGF4OiJbIHN0cmV0Y2ggfCByZXBlYXQgfCByb3VuZCB8IHNwYWNlIF17MSwyfSIscmVsZXZhbmNlOjUwLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ib3JkZXItaW1hZ2UtcmVwZWF0In1dLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgaG93IHRoZSBpbWFnZXMgZm9yIHRoZSBzaWRlcyBhbmQgdGhlIG1pZGRsZSBwYXJ0IG9mIHRoZSBib3JkZXIgaW1hZ2UgYXJlIHNjYWxlZCBhbmQgdGlsZWQuIElmIHRoZSBzZWNvbmQga2V5d29yZCBpcyBhYnNlbnQsIGl0IGlzIGFzc3VtZWQgdG8gYmUgdGhlIHNhbWUgYXMgdGhlIGZpcnN0LiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiYm9yZGVyLWltYWdlLXNsaWNlIix2YWx1ZXM6W3tuYW1lOiJmaWxsIixkZXNjcmlwdGlvbjoiQ2F1c2VzIHRoZSBtaWRkbGUgcGFydCBvZiB0aGUgYm9yZGVyLWltYWdlIHRvIGJlIHByZXNlcnZlZC4ifV0sc3ludGF4OiI8bnVtYmVyLXBlcmNlbnRhZ2U+ezEsNH0gJiYgZmlsbD8iLHJlbGV2YW5jZTo1MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYm9yZGVyLWltYWdlLXNsaWNlIn1dLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgaW53YXJkIG9mZnNldHMgZnJvbSB0aGUgdG9wLCByaWdodCwgYm90dG9tLCBhbmQgbGVmdCBlZGdlcyBvZiB0aGUgaW1hZ2UsIGRpdmlkaW5nIGl0IGludG8gbmluZSByZWdpb25zOiBmb3VyIGNvcm5lcnMsIGZvdXIgZWRnZXMgYW5kIGEgbWlkZGxlLiIscmVzdHJpY3Rpb25zOlsibnVtYmVyIiwicGVyY2VudGFnZSJdfSx7bmFtZToiYm9yZGVyLWltYWdlLXNvdXJjZSIsdmFsdWVzOlt7bmFtZToibm9uZSIsZGVzY3JpcHRpb246IlVzZSB0aGUgYm9yZGVyIHN0eWxlcy4ifV0sc3ludGF4OiJub25lIHwgPGltYWdlPiIscmVsZXZhbmNlOjUwLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ib3JkZXItaW1hZ2Utc291cmNlIn1dLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYW4gaW1hZ2UgdG8gdXNlIGluc3RlYWQgb2YgdGhlIGJvcmRlciBzdHlsZXMgZ2l2ZW4gYnkgdGhlICdib3JkZXItc3R5bGUnIHByb3BlcnRpZXMgYW5kIGFzIGFuIGFkZGl0aW9uYWwgYmFja2dyb3VuZCBsYXllciBmb3IgdGhlIGVsZW1lbnQuIElmIHRoZSB2YWx1ZSBpcyAnbm9uZScgb3IgaWYgdGhlIGltYWdlIGNhbm5vdCBiZSBkaXNwbGF5ZWQsIHRoZSBib3JkZXIgc3R5bGVzIHdpbGwgYmUgdXNlZC4iLHJlc3RyaWN0aW9uczpbImltYWdlIl19LHtuYW1lOiJib3JkZXItaW1hZ2Utd2lkdGgiLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJUaGUgYm9yZGVyIGltYWdlIHdpZHRoIGlzIHRoZSBpbnRyaW5zaWMgd2lkdGggb3IgaGVpZ2h0ICh3aGljaGV2ZXIgaXMgYXBwbGljYWJsZSkgb2YgdGhlIGNvcnJlc3BvbmRpbmcgaW1hZ2Ugc2xpY2UuIElmIHRoZSBpbWFnZSBkb2VzIG5vdCBoYXZlIHRoZSByZXF1aXJlZCBpbnRyaW5zaWMgZGltZW5zaW9uIHRoZW4gdGhlIGNvcnJlc3BvbmRpbmcgYm9yZGVyLXdpZHRoIGlzIHVzZWQgaW5zdGVhZC4ifV0sc3ludGF4OiJbIDxsZW5ndGgtcGVyY2VudGFnZT4gfCA8bnVtYmVyPiB8IGF1dG8gXXsxLDR9IixyZWxldmFuY2U6NTAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JvcmRlci1pbWFnZS13aWR0aCJ9XSxkZXNjcmlwdGlvbjoiVGhlIGZvdXIgdmFsdWVzIG9mICdib3JkZXItaW1hZ2Utd2lkdGgnIHNwZWNpZnkgb2Zmc2V0cyB0aGF0IGFyZSB1c2VkIHRvIGRpdmlkZSB0aGUgYm9yZGVyIGltYWdlIGFyZWEgaW50byBuaW5lIHBhcnRzLiBUaGV5IHJlcHJlc2VudCBpbndhcmQgZGlzdGFuY2VzIGZyb20gdGhlIHRvcCwgcmlnaHQsIGJvdHRvbSwgYW5kIGxlZnQgc2lkZXMgb2YgdGhlIGFyZWEsIHJlc3BlY3RpdmVseS4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsInBlcmNlbnRhZ2UiLCJudW1iZXIiXX0se25hbWU6ImJvcmRlci1pbmxpbmUtZW5kIixicm93c2VyczpbIkU3OSIsIkZGNDEiLCJTMTIuMSIsIkM2OSIsIk81NiJdLHN5bnRheDoiPCdib3JkZXItdG9wLXdpZHRoJz4gfHwgPCdib3JkZXItdG9wLXN0eWxlJz4gfHwgPGNvbG9yPiIscmVsZXZhbmNlOjUwLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ib3JkZXItaW5saW5lLWVuZCJ9XSxkZXNjcmlwdGlvbjoiTG9naWNhbCAnYm9yZGVyLXJpZ2h0Jy4gTWFwcGluZyBkZXBlbmRzIG9uIHRoZSBwYXJlbnQgZWxlbWVudOKAmXMgJ3dyaXRpbmctbW9kZScsICdkaXJlY3Rpb24nLCBhbmQgJ3RleHQtb3JpZW50YXRpb24nLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwibGluZS13aWR0aCIsImxpbmUtc3R5bGUiLCJjb2xvciJdfSx7bmFtZToiYm9yZGVyLWlubGluZS1zdGFydCIsYnJvd3NlcnM6WyJFNzkiLCJGRjQxIiwiUzEyLjEiLCJDNjkiLCJPNTYiXSxzeW50YXg6IjwnYm9yZGVyLXRvcC13aWR0aCc+IHx8IDwnYm9yZGVyLXRvcC1zdHlsZSc+IHx8IDxjb2xvcj4iLHJlbGV2YW5jZTo1MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYm9yZGVyLWlubGluZS1zdGFydCJ9XSxkZXNjcmlwdGlvbjoiTG9naWNhbCAnYm9yZGVyLWxlZnQnLiBNYXBwaW5nIGRlcGVuZHMgb24gdGhlIHBhcmVudCBlbGVtZW504oCZcyAnd3JpdGluZy1tb2RlJywgJ2RpcmVjdGlvbicsIGFuZCAndGV4dC1vcmllbnRhdGlvbicuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJsaW5lLXdpZHRoIiwibGluZS1zdHlsZSIsImNvbG9yIl19LHtuYW1lOiJib3JkZXItaW5saW5lLWVuZC1jb2xvciIsYnJvd3NlcnM6WyJFNzkiLCJGRjQxIiwiUzEyLjEiLCJDNjkiLCJPNTYiXSxzeW50YXg6IjwnYm9yZGVyLXRvcC1jb2xvcic+IixyZWxldmFuY2U6NTAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JvcmRlci1pbmxpbmUtZW5kLWNvbG9yIn1dLGRlc2NyaXB0aW9uOiJMb2dpY2FsICdib3JkZXItcmlnaHQtY29sb3InLiBNYXBwaW5nIGRlcGVuZHMgb24gdGhlIHBhcmVudCBlbGVtZW504oCZcyAnd3JpdGluZy1tb2RlJywgJ2RpcmVjdGlvbicsIGFuZCAndGV4dC1vcmllbnRhdGlvbicuIixyZXN0cmljdGlvbnM6WyJjb2xvciJdfSx7bmFtZToiYm9yZGVyLWlubGluZS1zdGFydC1jb2xvciIsYnJvd3NlcnM6WyJFNzkiLCJGRjQxIiwiUzEyLjEiLCJDNjkiLCJPNTYiXSxzeW50YXg6IjwnYm9yZGVyLXRvcC1jb2xvcic+IixyZWxldmFuY2U6NTAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JvcmRlci1pbmxpbmUtc3RhcnQtY29sb3IifV0sZGVzY3JpcHRpb246IkxvZ2ljYWwgJ2JvcmRlci1sZWZ0LWNvbG9yJy4gTWFwcGluZyBkZXBlbmRzIG9uIHRoZSBwYXJlbnQgZWxlbWVudOKAmXMgJ3dyaXRpbmctbW9kZScsICdkaXJlY3Rpb24nLCBhbmQgJ3RleHQtb3JpZW50YXRpb24nLiIscmVzdHJpY3Rpb25zOlsiY29sb3IiXX0se25hbWU6ImJvcmRlci1pbmxpbmUtZW5kLXN0eWxlIixicm93c2VyczpbIkU3OSIsIkZGNDEiLCJTMTIuMSIsIkM2OSIsIk81NiJdLHN5bnRheDoiPCdib3JkZXItdG9wLXN0eWxlJz4iLHJlbGV2YW5jZTo1MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYm9yZGVyLWlubGluZS1lbmQtc3R5bGUifV0sZGVzY3JpcHRpb246IkxvZ2ljYWwgJ2JvcmRlci1yaWdodC1zdHlsZScuIE1hcHBpbmcgZGVwZW5kcyBvbiB0aGUgcGFyZW50IGVsZW1lbnTigJlzICd3cml0aW5nLW1vZGUnLCAnZGlyZWN0aW9uJywgYW5kICd0ZXh0LW9yaWVudGF0aW9uJy4iLHJlc3RyaWN0aW9uczpbImxpbmUtc3R5bGUiXX0se25hbWU6ImJvcmRlci1pbmxpbmUtc3RhcnQtc3R5bGUiLGJyb3dzZXJzOlsiRTc5IiwiRkY0MSIsIlMxMi4xIiwiQzY5IiwiTzU2Il0sc3ludGF4OiI8J2JvcmRlci10b3Atc3R5bGUnPiIscmVsZXZhbmNlOjUwLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ib3JkZXItaW5saW5lLXN0YXJ0LXN0eWxlIn1dLGRlc2NyaXB0aW9uOiJMb2dpY2FsICdib3JkZXItbGVmdC1zdHlsZScuIE1hcHBpbmcgZGVwZW5kcyBvbiB0aGUgcGFyZW50IGVsZW1lbnTigJlzICd3cml0aW5nLW1vZGUnLCAnZGlyZWN0aW9uJywgYW5kICd0ZXh0LW9yaWVudGF0aW9uJy4iLHJlc3RyaWN0aW9uczpbImxpbmUtc3R5bGUiXX0se25hbWU6ImJvcmRlci1pbmxpbmUtZW5kLXdpZHRoIixicm93c2VyczpbIkU3OSIsIkZGNDEiLCJTMTIuMSIsIkM2OSIsIk81NiJdLHN5bnRheDoiPCdib3JkZXItdG9wLXdpZHRoJz4iLHJlbGV2YW5jZTo1MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYm9yZGVyLWlubGluZS1lbmQtd2lkdGgifV0sZGVzY3JpcHRpb246IkxvZ2ljYWwgJ2JvcmRlci1yaWdodC13aWR0aCcuIE1hcHBpbmcgZGVwZW5kcyBvbiB0aGUgcGFyZW50IGVsZW1lbnTigJlzICd3cml0aW5nLW1vZGUnLCAnZGlyZWN0aW9uJywgYW5kICd0ZXh0LW9yaWVudGF0aW9uJy4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsImxpbmUtd2lkdGgiXX0se25hbWU6ImJvcmRlci1pbmxpbmUtc3RhcnQtd2lkdGgiLGJyb3dzZXJzOlsiRTc5IiwiRkY0MSIsIlMxMi4xIiwiQzY5IiwiTzU2Il0sc3ludGF4OiI8J2JvcmRlci10b3Atd2lkdGgnPiIscmVsZXZhbmNlOjUwLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ib3JkZXItaW5saW5lLXN0YXJ0LXdpZHRoIn1dLGRlc2NyaXB0aW9uOiJMb2dpY2FsICdib3JkZXItbGVmdC13aWR0aCcuIE1hcHBpbmcgZGVwZW5kcyBvbiB0aGUgcGFyZW50IGVsZW1lbnTigJlzICd3cml0aW5nLW1vZGUnLCAnZGlyZWN0aW9uJywgYW5kICd0ZXh0LW9yaWVudGF0aW9uJy4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsImxpbmUtd2lkdGgiXX0se25hbWU6ImJvcmRlci1sZWZ0IixzeW50YXg6IjxsaW5lLXdpZHRoPiB8fCA8bGluZS1zdHlsZT4gfHwgPGNvbG9yPiIscmVsZXZhbmNlOjgzLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ib3JkZXItbGVmdCJ9XSxkZXNjcmlwdGlvbjoiU2hvcnRoYW5kIHByb3BlcnR5IGZvciBzZXR0aW5nIGJvcmRlciB3aWR0aCwgc3R5bGUgYW5kIGNvbG9yIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJsaW5lLXdpZHRoIiwibGluZS1zdHlsZSIsImNvbG9yIl19LHtuYW1lOiJib3JkZXItbGVmdC1jb2xvciIsc3ludGF4OiI8Y29sb3I+IixyZWxldmFuY2U6NjUscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JvcmRlci1sZWZ0LWNvbG9yIn1dLGRlc2NyaXB0aW9uOiJTZXRzIHRoZSBjb2xvciBvZiB0aGUgbGVmdCBib3JkZXIuIixyZXN0cmljdGlvbnM6WyJjb2xvciJdfSx7bmFtZToiYm9yZGVyLWxlZnQtc3R5bGUiLHN5bnRheDoiPGxpbmUtc3R5bGU+IixyZWxldmFuY2U6NTMscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JvcmRlci1sZWZ0LXN0eWxlIn1dLGRlc2NyaXB0aW9uOiJTZXRzIHRoZSBzdHlsZSBvZiB0aGUgbGVmdCBib3JkZXIuIixyZXN0cmljdGlvbnM6WyJsaW5lLXN0eWxlIl19LHtuYW1lOiJib3JkZXItbGVmdC13aWR0aCIsc3ludGF4OiI8bGluZS13aWR0aD4iLHJlbGV2YW5jZTo1OSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYm9yZGVyLWxlZnQtd2lkdGgifV0sZGVzY3JpcHRpb246IlNldHMgdGhlIHRoaWNrbmVzcyBvZiB0aGUgbGVmdCBib3JkZXIuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJsaW5lLXdpZHRoIl19LHtuYW1lOiJib3JkZXItcmFkaXVzIixzeW50YXg6IjxsZW5ndGgtcGVyY2VudGFnZT57MSw0fSBbIC8gPGxlbmd0aC1wZXJjZW50YWdlPnsxLDR9IF0/IixyZWxldmFuY2U6OTIscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JvcmRlci1yYWRpdXMifV0sZGVzY3JpcHRpb246IkRlZmluZXMgdGhlIHJhZGlpIG9mIHRoZSBvdXRlciBib3JkZXIgZWRnZS4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsInBlcmNlbnRhZ2UiXX0se25hbWU6ImJvcmRlci1yaWdodCIsc3ludGF4OiI8bGluZS13aWR0aD4gfHwgPGxpbmUtc3R5bGU+IHx8IDxjb2xvcj4iLHJlbGV2YW5jZTo4MixyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYm9yZGVyLXJpZ2h0In1dLGRlc2NyaXB0aW9uOiJTaG9ydGhhbmQgcHJvcGVydHkgZm9yIHNldHRpbmcgYm9yZGVyIHdpZHRoLCBzdHlsZSBhbmQgY29sb3IiLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsImxpbmUtd2lkdGgiLCJsaW5lLXN0eWxlIiwiY29sb3IiXX0se25hbWU6ImJvcmRlci1yaWdodC1jb2xvciIsc3ludGF4OiI8Y29sb3I+IixyZWxldmFuY2U6NjUscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JvcmRlci1yaWdodC1jb2xvciJ9XSxkZXNjcmlwdGlvbjoiU2V0cyB0aGUgY29sb3Igb2YgdGhlIHJpZ2h0IGJvcmRlci4iLHJlc3RyaWN0aW9uczpbImNvbG9yIl19LHtuYW1lOiJib3JkZXItcmlnaHQtc3R5bGUiLHN5bnRheDoiPGxpbmUtc3R5bGU+IixyZWxldmFuY2U6NTMscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JvcmRlci1yaWdodC1zdHlsZSJ9XSxkZXNjcmlwdGlvbjoiU2V0cyB0aGUgc3R5bGUgb2YgdGhlIHJpZ2h0IGJvcmRlci4iLHJlc3RyaWN0aW9uczpbImxpbmUtc3R5bGUiXX0se25hbWU6ImJvcmRlci1yaWdodC13aWR0aCIsc3ludGF4OiI8bGluZS13aWR0aD4iLHJlbGV2YW5jZTo1OSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYm9yZGVyLXJpZ2h0LXdpZHRoIn1dLGRlc2NyaXB0aW9uOiJTZXRzIHRoZSB0aGlja25lc3Mgb2YgdGhlIHJpZ2h0IGJvcmRlci4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsImxpbmUtd2lkdGgiXX0se25hbWU6ImJvcmRlci1zcGFjaW5nIixzeW50YXg6IjxsZW5ndGg+IDxsZW5ndGg+PyIscmVsZXZhbmNlOjY4LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ib3JkZXItc3BhY2luZyJ9XSxkZXNjcmlwdGlvbjoiVGhlIGxlbmd0aHMgc3BlY2lmeSB0aGUgZGlzdGFuY2UgdGhhdCBzZXBhcmF0ZXMgYWRqb2luaW5nIGNlbGwgYm9yZGVycy4gSWYgb25lIGxlbmd0aCBpcyBzcGVjaWZpZWQsIGl0IGdpdmVzIGJvdGggdGhlIGhvcml6b250YWwgYW5kIHZlcnRpY2FsIHNwYWNpbmcuIElmIHR3byBhcmUgc3BlY2lmaWVkLCB0aGUgZmlyc3QgZ2l2ZXMgdGhlIGhvcml6b250YWwgc3BhY2luZyBhbmQgdGhlIHNlY29uZCB0aGUgdmVydGljYWwgc3BhY2luZy4gTGVuZ3RocyBtYXkgbm90IGJlIG5lZ2F0aXZlLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIl19LHtuYW1lOiJib3JkZXItc3R5bGUiLHZhbHVlczpbXSxzeW50YXg6IjxsaW5lLXN0eWxlPnsxLDR9IixyZWxldmFuY2U6ODEscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JvcmRlci1zdHlsZSJ9XSxkZXNjcmlwdGlvbjoiVGhlIHN0eWxlIG9mIHRoZSBib3JkZXIgYXJvdW5kIGVkZ2VzIG9mIGFuIGVsZW1lbnQuIixyZXN0cmljdGlvbnM6WyJsaW5lLXN0eWxlIl19LHtuYW1lOiJib3JkZXItdG9wIixzeW50YXg6IjxsaW5lLXdpZHRoPiB8fCA8bGluZS1zdHlsZT4gfHwgPGNvbG9yPiIscmVsZXZhbmNlOjg4LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ib3JkZXItdG9wIn1dLGRlc2NyaXB0aW9uOiJTaG9ydGhhbmQgcHJvcGVydHkgZm9yIHNldHRpbmcgYm9yZGVyIHdpZHRoLCBzdHlsZSBhbmQgY29sb3IiLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsImxpbmUtd2lkdGgiLCJsaW5lLXN0eWxlIiwiY29sb3IiXX0se25hbWU6ImJvcmRlci10b3AtY29sb3IiLHN5bnRheDoiPGNvbG9yPiIscmVsZXZhbmNlOjcyLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ib3JkZXItdG9wLWNvbG9yIn1dLGRlc2NyaXB0aW9uOiJTZXRzIHRoZSBjb2xvciBvZiB0aGUgdG9wIGJvcmRlci4iLHJlc3RyaWN0aW9uczpbImNvbG9yIl19LHtuYW1lOiJib3JkZXItdG9wLWxlZnQtcmFkaXVzIixzeW50YXg6IjxsZW5ndGgtcGVyY2VudGFnZT57MSwyfSIscmVsZXZhbmNlOjc2LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ib3JkZXItdG9wLWxlZnQtcmFkaXVzIn1dLGRlc2NyaXB0aW9uOiJEZWZpbmVzIHRoZSByYWRpaSBvZiB0aGUgdG9wIGxlZnQgb3V0ZXIgYm9yZGVyIGVkZ2UuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJwZXJjZW50YWdlIl19LHtuYW1lOiJib3JkZXItdG9wLXJpZ2h0LXJhZGl1cyIsc3ludGF4OiI8bGVuZ3RoLXBlcmNlbnRhZ2U+ezEsMn0iLHJlbGV2YW5jZTo3NSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYm9yZGVyLXRvcC1yaWdodC1yYWRpdXMifV0sZGVzY3JpcHRpb246IkRlZmluZXMgdGhlIHJhZGlpIG9mIHRoZSB0b3AgcmlnaHQgb3V0ZXIgYm9yZGVyIGVkZ2UuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJwZXJjZW50YWdlIl19LHtuYW1lOiJib3JkZXItdG9wLXN0eWxlIixzeW50YXg6IjxsaW5lLXN0eWxlPiIscmVsZXZhbmNlOjU3LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ib3JkZXItdG9wLXN0eWxlIn1dLGRlc2NyaXB0aW9uOiJTZXRzIHRoZSBzdHlsZSBvZiB0aGUgdG9wIGJvcmRlci4iLHJlc3RyaWN0aW9uczpbImxpbmUtc3R5bGUiXX0se25hbWU6ImJvcmRlci10b3Atd2lkdGgiLHN5bnRheDoiPGxpbmUtd2lkdGg+IixyZWxldmFuY2U6NjEscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JvcmRlci10b3Atd2lkdGgifV0sZGVzY3JpcHRpb246IlNldHMgdGhlIHRoaWNrbmVzcyBvZiB0aGUgdG9wIGJvcmRlci4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsImxpbmUtd2lkdGgiXX0se25hbWU6ImJvcmRlci13aWR0aCIsdmFsdWVzOltdLHN5bnRheDoiPGxpbmUtd2lkdGg+ezEsNH0iLHJlbGV2YW5jZTo4MixyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYm9yZGVyLXdpZHRoIn1dLGRlc2NyaXB0aW9uOiJTaG9ydGhhbmQgdGhhdCBzZXRzIHRoZSBmb3VyICdib3JkZXItKi13aWR0aCcgcHJvcGVydGllcy4gSWYgaXQgaGFzIGZvdXIgdmFsdWVzLCB0aGV5IHNldCB0b3AsIHJpZ2h0LCBib3R0b20gYW5kIGxlZnQgaW4gdGhhdCBvcmRlci4gSWYgbGVmdCBpcyBtaXNzaW5nLCBpdCBpcyB0aGUgc2FtZSBhcyByaWdodDsgaWYgYm90dG9tIGlzIG1pc3NpbmcsIGl0IGlzIHRoZSBzYW1lIGFzIHRvcDsgaWYgcmlnaHQgaXMgbWlzc2luZywgaXQgaXMgdGhlIHNhbWUgYXMgdG9wLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwibGluZS13aWR0aCJdfSx7bmFtZToiYm90dG9tIix2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiRm9yIG5vbi1yZXBsYWNlZCBlbGVtZW50cywgdGhlIGVmZmVjdCBvZiB0aGlzIHZhbHVlIGRlcGVuZHMgb24gd2hpY2ggb2YgcmVsYXRlZCBwcm9wZXJ0aWVzIGhhdmUgdGhlIHZhbHVlICdhdXRvJyBhcyB3ZWxsIn1dLHN5bnRheDoiPGxlbmd0aD4gfCA8cGVyY2VudGFnZT4gfCBhdXRvIixyZWxldmFuY2U6OTAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JvdHRvbSJ9XSxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGhvdyBmYXIgYW4gYWJzb2x1dGVseSBwb3NpdGlvbmVkIGJveCdzIGJvdHRvbSBtYXJnaW4gZWRnZSBpcyBvZmZzZXQgYWJvdmUgdGhlIGJvdHRvbSBlZGdlIG9mIHRoZSBib3gncyAnY29udGFpbmluZyBibG9jaycuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJwZXJjZW50YWdlIl19LHtuYW1lOiJib3gtZGVjb3JhdGlvbi1icmVhayIsYnJvd3NlcnM6WyJFNzkiLCJGRjMyIiwiUzciLCJDMjIiLCJPMTUiXSx2YWx1ZXM6W3tuYW1lOiJjbG9uZSIsZGVzY3JpcHRpb246IkVhY2ggYm94IGlzIGluZGVwZW5kZW50bHkgd3JhcHBlZCB3aXRoIHRoZSBib3JkZXIgYW5kIHBhZGRpbmcuIn0se25hbWU6InNsaWNlIixkZXNjcmlwdGlvbjoiVGhlIGVmZmVjdCBpcyBhcyB0aG91Z2ggdGhlIGVsZW1lbnQgd2VyZSByZW5kZXJlZCB3aXRoIG5vIGJyZWFrcyBwcmVzZW50LCBhbmQgdGhlbiBzbGljZWQgYnkgdGhlIGJyZWFrcyBhZnRlcndhcmQuIn1dLHN5bnRheDoic2xpY2UgfCBjbG9uZSIscmVsZXZhbmNlOjUwLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ib3gtZGVjb3JhdGlvbi1icmVhayJ9XSxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHdoZXRoZXIgaW5kaXZpZHVhbCBib3hlcyBhcmUgdHJlYXRlZCBhcyBicm9rZW4gcGllY2VzIG9mIG9uZSBjb250aW51b3VzIGJveCwgb3Igd2hldGhlciBlYWNoIGJveCBpcyBpbmRpdmlkdWFsbHkgd3JhcHBlZCB3aXRoIHRoZSBib3JkZXIgYW5kIHBhZGRpbmcuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJib3gtc2hhZG93Iix2YWx1ZXM6W3tuYW1lOiJpbnNldCIsZGVzY3JpcHRpb246IkNoYW5nZXMgdGhlIGRyb3Agc2hhZG93IGZyb20gYW4gb3V0ZXIgc2hhZG93IChvbmUgdGhhdCBzaGFkb3dzIHRoZSBib3ggb250byB0aGUgY2FudmFzLCBhcyBpZiBpdCB3ZXJlIGxpZnRlZCBhYm92ZSB0aGUgY2FudmFzKSB0byBhbiBpbm5lciBzaGFkb3cgKG9uZSB0aGF0IHNoYWRvd3MgdGhlIGNhbnZhcyBvbnRvIHRoZSBib3gsIGFzIGlmIHRoZSBib3ggd2VyZSBjdXQgb3V0IG9mIHRoZSBjYW52YXMgYW5kIHNoaWZ0ZWQgYmVoaW5kIGl0KS4ifSx7bmFtZToibm9uZSIsZGVzY3JpcHRpb246Ik5vIHNoYWRvdy4ifV0sc3ludGF4OiJub25lIHwgPHNoYWRvdz4jIixyZWxldmFuY2U6OTAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JveC1zaGFkb3cifV0sZGVzY3JpcHRpb246IkF0dGFjaGVzIG9uZSBvciBtb3JlIGRyb3Atc2hhZG93cyB0byB0aGUgYm94LiBUaGUgcHJvcGVydHkgaXMgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBzaGFkb3dzLCBlYWNoIHNwZWNpZmllZCBieSAyLTQgbGVuZ3RoIHZhbHVlcywgYW4gb3B0aW9uYWwgY29sb3IsIGFuZCBhbiBvcHRpb25hbCAnaW5zZXQnIGtleXdvcmQuIE9taXR0ZWQgbGVuZ3RocyBhcmUgMDsgb21pdHRlZCBjb2xvcnMgYXJlIGEgdXNlciBhZ2VudCBjaG9zZW4gY29sb3IuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJjb2xvciIsImVudW0iXX0se25hbWU6ImJveC1zaXppbmciLHZhbHVlczpbe25hbWU6ImJvcmRlci1ib3giLGRlc2NyaXB0aW9uOiJUaGUgc3BlY2lmaWVkIHdpZHRoIGFuZCBoZWlnaHQgKGFuZCByZXNwZWN0aXZlIG1pbi9tYXggcHJvcGVydGllcykgb24gdGhpcyBlbGVtZW50IGRldGVybWluZSB0aGUgYm9yZGVyIGJveCBvZiB0aGUgZWxlbWVudC4ifSx7bmFtZToiY29udGVudC1ib3giLGRlc2NyaXB0aW9uOiJCZWhhdmlvciBvZiB3aWR0aCBhbmQgaGVpZ2h0IGFzIHNwZWNpZmllZCBieSBDU1MyLjEuIFRoZSBzcGVjaWZpZWQgd2lkdGggYW5kIGhlaWdodCAoYW5kIHJlc3BlY3RpdmUgbWluL21heCBwcm9wZXJ0aWVzKSBhcHBseSB0byB0aGUgd2lkdGggYW5kIGhlaWdodCByZXNwZWN0aXZlbHkgb2YgdGhlIGNvbnRlbnQgYm94IG9mIHRoZSBlbGVtZW50LiJ9XSxzeW50YXg6ImNvbnRlbnQtYm94IHwgYm9yZGVyLWJveCIscmVsZXZhbmNlOjkzLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ib3gtc2l6aW5nIn1dLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgdGhlIGJlaGF2aW9yIG9mIHRoZSAnd2lkdGgnIGFuZCAnaGVpZ2h0JyBwcm9wZXJ0aWVzLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiYnJlYWstYWZ0ZXIiLHZhbHVlczpbe25hbWU6ImFsd2F5cyIsZGVzY3JpcHRpb246IkFsd2F5cyBmb3JjZSBhIHBhZ2UgYnJlYWsgYmVmb3JlL2FmdGVyIHRoZSBnZW5lcmF0ZWQgYm94LiJ9LHtuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiTmVpdGhlciBmb3JjZSBub3IgZm9yYmlkIGEgcGFnZS9jb2x1bW4gYnJlYWsgYmVmb3JlL2FmdGVyIHRoZSBwcmluY2lwYWwgYm94LiJ9LHtuYW1lOiJhdm9pZCIsZGVzY3JpcHRpb246IkF2b2lkIGEgYnJlYWsgYmVmb3JlL2FmdGVyIHRoZSBwcmluY2lwYWwgYm94LiJ9LHtuYW1lOiJhdm9pZC1jb2x1bW4iLGRlc2NyaXB0aW9uOiJBdm9pZCBhIGNvbHVtbiBicmVhayBiZWZvcmUvYWZ0ZXIgdGhlIHByaW5jaXBhbCBib3guIn0se25hbWU6ImF2b2lkLXBhZ2UiLGRlc2NyaXB0aW9uOiJBdm9pZCBhIHBhZ2UgYnJlYWsgYmVmb3JlL2FmdGVyIHRoZSBwcmluY2lwYWwgYm94LiJ9LHtuYW1lOiJjb2x1bW4iLGRlc2NyaXB0aW9uOiJBbHdheXMgZm9yY2UgYSBjb2x1bW4gYnJlYWsgYmVmb3JlL2FmdGVyIHRoZSBwcmluY2lwYWwgYm94LiJ9LHtuYW1lOiJsZWZ0IixkZXNjcmlwdGlvbjoiRm9yY2Ugb25lIG9yIHR3byBwYWdlIGJyZWFrcyBiZWZvcmUvYWZ0ZXIgdGhlIGdlbmVyYXRlZCBib3ggc28gdGhhdCB0aGUgbmV4dCBwYWdlIGlzIGZvcm1hdHRlZCBhcyBhIGxlZnQgcGFnZS4ifSx7bmFtZToicGFnZSIsZGVzY3JpcHRpb246IkFsd2F5cyBmb3JjZSBhIHBhZ2UgYnJlYWsgYmVmb3JlL2FmdGVyIHRoZSBwcmluY2lwYWwgYm94LiJ9LHtuYW1lOiJyaWdodCIsZGVzY3JpcHRpb246IkZvcmNlIG9uZSBvciB0d28gcGFnZSBicmVha3MgYmVmb3JlL2FmdGVyIHRoZSBnZW5lcmF0ZWQgYm94IHNvIHRoYXQgdGhlIG5leHQgcGFnZSBpcyBmb3JtYXR0ZWQgYXMgYSByaWdodCBwYWdlLiJ9XSxzeW50YXg6ImF1dG8gfCBhdm9pZCB8IGFsd2F5cyB8IGFsbCB8IGF2b2lkLXBhZ2UgfCBwYWdlIHwgbGVmdCB8IHJpZ2h0IHwgcmVjdG8gfCB2ZXJzbyB8IGF2b2lkLWNvbHVtbiB8IGNvbHVtbiB8IGF2b2lkLXJlZ2lvbiB8IHJlZ2lvbiIscmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJEZXNjcmliZXMgdGhlIHBhZ2UvY29sdW1uL3JlZ2lvbiBicmVhayBiZWhhdmlvciBhZnRlciB0aGUgZ2VuZXJhdGVkIGJveC4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6ImJyZWFrLWJlZm9yZSIsdmFsdWVzOlt7bmFtZToiYWx3YXlzIixkZXNjcmlwdGlvbjoiQWx3YXlzIGZvcmNlIGEgcGFnZSBicmVhayBiZWZvcmUvYWZ0ZXIgdGhlIGdlbmVyYXRlZCBib3guIn0se25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJOZWl0aGVyIGZvcmNlIG5vciBmb3JiaWQgYSBwYWdlL2NvbHVtbiBicmVhayBiZWZvcmUvYWZ0ZXIgdGhlIHByaW5jaXBhbCBib3guIn0se25hbWU6ImF2b2lkIixkZXNjcmlwdGlvbjoiQXZvaWQgYSBicmVhayBiZWZvcmUvYWZ0ZXIgdGhlIHByaW5jaXBhbCBib3guIn0se25hbWU6ImF2b2lkLWNvbHVtbiIsZGVzY3JpcHRpb246IkF2b2lkIGEgY29sdW1uIGJyZWFrIGJlZm9yZS9hZnRlciB0aGUgcHJpbmNpcGFsIGJveC4ifSx7bmFtZToiYXZvaWQtcGFnZSIsZGVzY3JpcHRpb246IkF2b2lkIGEgcGFnZSBicmVhayBiZWZvcmUvYWZ0ZXIgdGhlIHByaW5jaXBhbCBib3guIn0se25hbWU6ImNvbHVtbiIsZGVzY3JpcHRpb246IkFsd2F5cyBmb3JjZSBhIGNvbHVtbiBicmVhayBiZWZvcmUvYWZ0ZXIgdGhlIHByaW5jaXBhbCBib3guIn0se25hbWU6ImxlZnQiLGRlc2NyaXB0aW9uOiJGb3JjZSBvbmUgb3IgdHdvIHBhZ2UgYnJlYWtzIGJlZm9yZS9hZnRlciB0aGUgZ2VuZXJhdGVkIGJveCBzbyB0aGF0IHRoZSBuZXh0IHBhZ2UgaXMgZm9ybWF0dGVkIGFzIGEgbGVmdCBwYWdlLiJ9LHtuYW1lOiJwYWdlIixkZXNjcmlwdGlvbjoiQWx3YXlzIGZvcmNlIGEgcGFnZSBicmVhayBiZWZvcmUvYWZ0ZXIgdGhlIHByaW5jaXBhbCBib3guIn0se25hbWU6InJpZ2h0IixkZXNjcmlwdGlvbjoiRm9yY2Ugb25lIG9yIHR3byBwYWdlIGJyZWFrcyBiZWZvcmUvYWZ0ZXIgdGhlIGdlbmVyYXRlZCBib3ggc28gdGhhdCB0aGUgbmV4dCBwYWdlIGlzIGZvcm1hdHRlZCBhcyBhIHJpZ2h0IHBhZ2UuIn1dLHN5bnRheDoiYXV0byB8IGF2b2lkIHwgYWx3YXlzIHwgYWxsIHwgYXZvaWQtcGFnZSB8IHBhZ2UgfCBsZWZ0IHwgcmlnaHQgfCByZWN0byB8IHZlcnNvIHwgYXZvaWQtY29sdW1uIHwgY29sdW1uIHwgYXZvaWQtcmVnaW9uIHwgcmVnaW9uIixyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkRlc2NyaWJlcyB0aGUgcGFnZS9jb2x1bW4vcmVnaW9uIGJyZWFrIGJlaGF2aW9yIGJlZm9yZSB0aGUgZ2VuZXJhdGVkIGJveC4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6ImJyZWFrLWluc2lkZSIsdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IkltcG9zZSBubyBhZGRpdGlvbmFsIGJyZWFraW5nIGNvbnN0cmFpbnRzIHdpdGhpbiB0aGUgYm94LiJ9LHtuYW1lOiJhdm9pZCIsZGVzY3JpcHRpb246IkF2b2lkIGJyZWFrcyB3aXRoaW4gdGhlIGJveC4ifSx7bmFtZToiYXZvaWQtY29sdW1uIixkZXNjcmlwdGlvbjoiQXZvaWQgYSBjb2x1bW4gYnJlYWsgd2l0aGluIHRoZSBib3guIn0se25hbWU6ImF2b2lkLXBhZ2UiLGRlc2NyaXB0aW9uOiJBdm9pZCBhIHBhZ2UgYnJlYWsgd2l0aGluIHRoZSBib3guIn1dLHN5bnRheDoiYXV0byB8IGF2b2lkIHwgYXZvaWQtcGFnZSB8IGF2b2lkLWNvbHVtbiB8IGF2b2lkLXJlZ2lvbiIscmVsZXZhbmNlOjUxLGRlc2NyaXB0aW9uOiJEZXNjcmliZXMgdGhlIHBhZ2UvY29sdW1uL3JlZ2lvbiBicmVhayBiZWhhdmlvciBpbnNpZGUgdGhlIHByaW5jaXBhbCBib3guIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJjYXB0aW9uLXNpZGUiLHZhbHVlczpbe25hbWU6ImJvdHRvbSIsZGVzY3JpcHRpb246IlBvc2l0aW9ucyB0aGUgY2FwdGlvbiBib3ggYmVsb3cgdGhlIHRhYmxlIGJveC4ifSx7bmFtZToidG9wIixkZXNjcmlwdGlvbjoiUG9zaXRpb25zIHRoZSBjYXB0aW9uIGJveCBhYm92ZSB0aGUgdGFibGUgYm94LiJ9XSxzeW50YXg6InRvcCB8IGJvdHRvbSB8IGJsb2NrLXN0YXJ0IHwgYmxvY2stZW5kIHwgaW5saW5lLXN0YXJ0IHwgaW5saW5lLWVuZCIscmVsZXZhbmNlOjUyLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9jYXB0aW9uLXNpZGUifV0sZGVzY3JpcHRpb246IlNwZWNpZmllcyB0aGUgcG9zaXRpb24gb2YgdGhlIGNhcHRpb24gYm94IHdpdGggcmVzcGVjdCB0byB0aGUgdGFibGUgYm94LiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiY2FyZXQtY29sb3IiLGJyb3dzZXJzOlsiRTc5IiwiRkY1MyIsIlMxMS4xIiwiQzU3IiwiTzQ0Il0sdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IlRoZSB1c2VyIGFnZW50IHNlbGVjdHMgYW4gYXBwcm9wcmlhdGUgY29sb3IgZm9yIHRoZSBjYXJldC4gVGhpcyBpcyBnZW5lcmFsbHkgY3VycmVudGNvbG9yLCBidXQgdGhlIHVzZXIgYWdlbnQgbWF5IGNob29zZSBhIGRpZmZlcmVudCBjb2xvciB0byBlbnN1cmUgZ29vZCB2aXNpYmlsaXR5IGFuZCBjb250cmFzdCB3aXRoIHRoZSBzdXJyb3VuZGluZyBjb250ZW50LCB0YWtpbmcgaW50byBhY2NvdW50IHRoZSB2YWx1ZSBvZiBjdXJyZW50Y29sb3IsIHRoZSBiYWNrZ3JvdW5kLCBzaGFkb3dzLCBhbmQgb3RoZXIgZmFjdG9ycy4ifV0sc3ludGF4OiJhdXRvIHwgPGNvbG9yPiIscmVsZXZhbmNlOjUzLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9jYXJldC1jb2xvciJ9XSxkZXNjcmlwdGlvbjoiQ29udHJvbHMgdGhlIGNvbG9yIG9mIHRoZSB0ZXh0IGluc2VydGlvbiBpbmRpY2F0b3IuIixyZXN0cmljdGlvbnM6WyJjb2xvciIsImVudW0iXX0se25hbWU6ImNsZWFyIix2YWx1ZXM6W3tuYW1lOiJib3RoIixkZXNjcmlwdGlvbjoiVGhlIGNsZWFyYW5jZSBvZiB0aGUgZ2VuZXJhdGVkIGJveCBpcyBzZXQgdG8gdGhlIGFtb3VudCBuZWNlc3NhcnkgdG8gcGxhY2UgdGhlIHRvcCBib3JkZXIgZWRnZSBiZWxvdyB0aGUgYm90dG9tIG91dGVyIGVkZ2Ugb2YgYW55IHJpZ2h0LWZsb2F0aW5nIGFuZCBsZWZ0LWZsb2F0aW5nIGJveGVzIHRoYXQgcmVzdWx0ZWQgZnJvbSBlbGVtZW50cyBlYXJsaWVyIGluIHRoZSBzb3VyY2UgZG9jdW1lbnQuIn0se25hbWU6ImxlZnQiLGRlc2NyaXB0aW9uOiJUaGUgY2xlYXJhbmNlIG9mIHRoZSBnZW5lcmF0ZWQgYm94IGlzIHNldCB0byB0aGUgYW1vdW50IG5lY2Vzc2FyeSB0byBwbGFjZSB0aGUgdG9wIGJvcmRlciBlZGdlIGJlbG93IHRoZSBib3R0b20gb3V0ZXIgZWRnZSBvZiBhbnkgbGVmdC1mbG9hdGluZyBib3hlcyB0aGF0IHJlc3VsdGVkIGZyb20gZWxlbWVudHMgZWFybGllciBpbiB0aGUgc291cmNlIGRvY3VtZW50LiJ9LHtuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiTm8gY29uc3RyYWludCBvbiB0aGUgYm94J3MgcG9zaXRpb24gd2l0aCByZXNwZWN0IHRvIGZsb2F0cy4ifSx7bmFtZToicmlnaHQiLGRlc2NyaXB0aW9uOiJUaGUgY2xlYXJhbmNlIG9mIHRoZSBnZW5lcmF0ZWQgYm94IGlzIHNldCB0byB0aGUgYW1vdW50IG5lY2Vzc2FyeSB0byBwbGFjZSB0aGUgdG9wIGJvcmRlciBlZGdlIGJlbG93IHRoZSBib3R0b20gb3V0ZXIgZWRnZSBvZiBhbnkgcmlnaHQtZmxvYXRpbmcgYm94ZXMgdGhhdCByZXN1bHRlZCBmcm9tIGVsZW1lbnRzIGVhcmxpZXIgaW4gdGhlIHNvdXJjZSBkb2N1bWVudC4ifV0sc3ludGF4OiJub25lIHwgbGVmdCB8IHJpZ2h0IHwgYm90aCB8IGlubGluZS1zdGFydCB8IGlubGluZS1lbmQiLHJlbGV2YW5jZTo4NSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvY2xlYXIifV0sZGVzY3JpcHRpb246IkluZGljYXRlcyB3aGljaCBzaWRlcyBvZiBhbiBlbGVtZW50J3MgYm94KGVzKSBtYXkgbm90IGJlIGFkamFjZW50IHRvIGFuIGVhcmxpZXIgZmxvYXRpbmcgYm94LiBUaGUgJ2NsZWFyJyBwcm9wZXJ0eSBkb2VzIG5vdCBjb25zaWRlciBmbG9hdHMgaW5zaWRlIHRoZSBlbGVtZW50IGl0c2VsZiBvciBpbiBvdGhlciBibG9jayBmb3JtYXR0aW5nIGNvbnRleHRzLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiY2xpcCIsdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IlRoZSBlbGVtZW50IGRvZXMgbm90IGNsaXAuIn0se25hbWU6InJlY3QoKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBvZmZzZXRzIGZyb20gdGhlIGVkZ2VzIG9mIHRoZSBib3JkZXIgYm94LiJ9XSxzeW50YXg6IjxzaGFwZT4gfCBhdXRvIixyZWxldmFuY2U6NzUscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2NsaXAifV0sZGVzY3JpcHRpb246IkRlcHJlY2F0ZWQuIFVzZSB0aGUgJ2NsaXAtcGF0aCcgcHJvcGVydHkgd2hlbiBzdXBwb3J0IGFsbG93cy4gRGVmaW5lcyB0aGUgdmlzaWJsZSBwb3J0aW9uIG9mIGFuIGVsZW1lbnTigJlzIGJveC4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6ImNsaXAtcGF0aCIsdmFsdWVzOlt7bmFtZToibm9uZSIsZGVzY3JpcHRpb246Ik5vIGNsaXBwaW5nIHBhdGggZ2V0cyBjcmVhdGVkLiJ9LHtuYW1lOiJ1cmwoKSIsZGVzY3JpcHRpb246IlJlZmVyZW5jZXMgYSA8Y2xpcFBhdGg+IGVsZW1lbnQgdG8gY3JlYXRlIGEgY2xpcHBpbmcgcGF0aC4ifV0sc3ludGF4OiI8Y2xpcC1zb3VyY2U+IHwgWyA8YmFzaWMtc2hhcGU+IHx8IDxnZW9tZXRyeS1ib3g+IF0gfCBub25lIixyZWxldmFuY2U6NjIscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2NsaXAtcGF0aCJ9XSxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgY2xpcHBpbmcgcGF0aCB3aGVyZSBldmVyeXRoaW5nIGluc2lkZSB0aGUgcGF0aCBpcyB2aXNpYmxlIGFuZCBldmVyeXRoaW5nIG91dHNpZGUgaXMgY2xpcHBlZCBvdXQuIixyZXN0cmljdGlvbnM6WyJ1cmwiLCJzaGFwZSIsImdlb21ldHJ5LWJveCIsImVudW0iXX0se25hbWU6ImNsaXAtcnVsZSIsYnJvd3NlcnM6WyJFIiwiQzUiLCJGRjMiLCJJRTEwIiwiTzkiLCJTNiJdLHZhbHVlczpbe25hbWU6ImV2ZW5vZGQiLGRlc2NyaXB0aW9uOiJEZXRlcm1pbmVzIHRoZSDigJhpbnNpZGVuZXNz4oCZIG9mIGEgcG9pbnQgb24gdGhlIGNhbnZhcyBieSBkcmF3aW5nIGEgcmF5IGZyb20gdGhhdCBwb2ludCB0byBpbmZpbml0eSBpbiBhbnkgZGlyZWN0aW9uIGFuZCBjb3VudGluZyB0aGUgbnVtYmVyIG9mIHBhdGggc2VnbWVudHMgZnJvbSB0aGUgZ2l2ZW4gc2hhcGUgdGhhdCB0aGUgcmF5IGNyb3NzZXMuIn0se25hbWU6Im5vbnplcm8iLGRlc2NyaXB0aW9uOiJEZXRlcm1pbmVzIHRoZSDigJhpbnNpZGVuZXNz4oCZIG9mIGEgcG9pbnQgb24gdGhlIGNhbnZhcyBieSBkcmF3aW5nIGEgcmF5IGZyb20gdGhhdCBwb2ludCB0byBpbmZpbml0eSBpbiBhbnkgZGlyZWN0aW9uIGFuZCB0aGVuIGV4YW1pbmluZyB0aGUgcGxhY2VzIHdoZXJlIGEgc2VnbWVudCBvZiB0aGUgc2hhcGUgY3Jvc3NlcyB0aGUgcmF5LiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGUgYWxnb3JpdGhtIHdoaWNoIGlzIHRvIGJlIHVzZWQgdG8gZGV0ZXJtaW5lIHdoYXQgcGFydHMgb2YgdGhlIGNhbnZhcyBhcmUgaW5jbHVkZWQgaW5zaWRlIHRoZSBzaGFwZS4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6ImNvbG9yIixzeW50YXg6Ijxjb2xvcj4iLHJlbGV2YW5jZTo5NSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvY29sb3IifV0sZGVzY3JpcHRpb246IlNldHMgdGhlIGNvbG9yIG9mIGFuIGVsZW1lbnQncyB0ZXh0IixyZXN0cmljdGlvbnM6WyJjb2xvciJdfSx7bmFtZToiY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzIixicm93c2VyczpbIkUiLCJDNSIsIkZGMyIsIklFMTAiLCJPOSIsIlM2Il0sdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IkNvbG9yIG9wZXJhdGlvbnMgYXJlIG5vdCByZXF1aXJlZCB0byBvY2N1ciBpbiBhIHBhcnRpY3VsYXIgY29sb3Igc3BhY2UuIn0se25hbWU6ImxpbmVhclJHQiIsZGVzY3JpcHRpb246IkNvbG9yIG9wZXJhdGlvbnMgc2hvdWxkIG9jY3VyIGluIHRoZSBsaW5lYXJpemVkIFJHQiBjb2xvciBzcGFjZS4ifSx7bmFtZToic1JHQiIsZGVzY3JpcHRpb246IkNvbG9yIG9wZXJhdGlvbnMgc2hvdWxkIG9jY3VyIGluIHRoZSBzUkdCIGNvbG9yIHNwYWNlLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlNwZWNpZmllcyB0aGUgY29sb3Igc3BhY2UgZm9yIGltYWdpbmcgb3BlcmF0aW9ucyBwZXJmb3JtZWQgdmlhIGZpbHRlciBlZmZlY3RzLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiY29sdW1uLWNvdW50Iix2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiRGV0ZXJtaW5lcyB0aGUgbnVtYmVyIG9mIGNvbHVtbnMgYnkgdGhlICdjb2x1bW4td2lkdGgnIHByb3BlcnR5IGFuZCB0aGUgZWxlbWVudCB3aWR0aC4ifV0sc3ludGF4OiI8aW50ZWdlcj4gfCBhdXRvIixyZWxldmFuY2U6NTMscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2NvbHVtbi1jb3VudCJ9XSxkZXNjcmlwdGlvbjoiRGVzY3JpYmVzIHRoZSBvcHRpbWFsIG51bWJlciBvZiBjb2x1bW5zIGludG8gd2hpY2ggdGhlIGNvbnRlbnQgb2YgdGhlIGVsZW1lbnQgd2lsbCBiZSBmbG93ZWQuIixyZXN0cmljdGlvbnM6WyJpbnRlZ2VyIiwiZW51bSJdfSx7bmFtZToiY29sdW1uLWZpbGwiLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJGaWxscyBjb2x1bW5zIHNlcXVlbnRpYWxseS4ifSx7bmFtZToiYmFsYW5jZSIsZGVzY3JpcHRpb246IkJhbGFuY2UgY29udGVudCBlcXVhbGx5IGJldHdlZW4gY29sdW1ucywgaWYgcG9zc2libGUuIn1dLHN5bnRheDoiYXV0byB8IGJhbGFuY2UgfCBiYWxhbmNlLWFsbCIscmVsZXZhbmNlOjUwLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9jb2x1bW4tZmlsbCJ9XSxkZXNjcmlwdGlvbjoiSW4gY29udGludW91cyBtZWRpYSwgdGhpcyBwcm9wZXJ0eSB3aWxsIG9ubHkgYmUgY29uc3VsdGVkIGlmIHRoZSBsZW5ndGggb2YgY29sdW1ucyBoYXMgYmVlbiBjb25zdHJhaW5lZC4gT3RoZXJ3aXNlLCBjb2x1bW5zIHdpbGwgYXV0b21hdGljYWxseSBiZSBiYWxhbmNlZC4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6ImNvbHVtbi1nYXAiLHZhbHVlczpbe25hbWU6Im5vcm1hbCIsZGVzY3JpcHRpb246IlVzZXIgYWdlbnQgc3BlY2lmaWMgYW5kIHR5cGljYWxseSBlcXVpdmFsZW50IHRvIDFlbS4ifV0sc3ludGF4OiJub3JtYWwgfCA8bGVuZ3RoLXBlcmNlbnRhZ2U+IixyZWxldmFuY2U6NTQsZGVzY3JpcHRpb246IlNldHMgdGhlIGdhcCBiZXR3ZWVuIGNvbHVtbnMuIElmIHRoZXJlIGlzIGEgY29sdW1uIHJ1bGUgYmV0d2VlbiBjb2x1bW5zLCBpdCB3aWxsIGFwcGVhciBpbiB0aGUgbWlkZGxlIG9mIHRoZSBnYXAuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJlbnVtIl19LHtuYW1lOiJjb2x1bW4tcnVsZSIsc3ludGF4OiI8J2NvbHVtbi1ydWxlLXdpZHRoJz4gfHwgPCdjb2x1bW4tcnVsZS1zdHlsZSc+IHx8IDwnY29sdW1uLXJ1bGUtY29sb3InPiIscmVsZXZhbmNlOjUxLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9jb2x1bW4tcnVsZSJ9XSxkZXNjcmlwdGlvbjoiU2hvcnRoYW5kIGZvciBzZXR0aW5nICdjb2x1bW4tcnVsZS13aWR0aCcsICdjb2x1bW4tcnVsZS1zdHlsZScsIGFuZCAnY29sdW1uLXJ1bGUtY29sb3InIGF0IHRoZSBzYW1lIHBsYWNlIGluIHRoZSBzdHlsZSBzaGVldC4gT21pdHRlZCB2YWx1ZXMgYXJlIHNldCB0byB0aGVpciBpbml0aWFsIHZhbHVlcy4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsImxpbmUtd2lkdGgiLCJsaW5lLXN0eWxlIiwiY29sb3IiXX0se25hbWU6ImNvbHVtbi1ydWxlLWNvbG9yIixzeW50YXg6Ijxjb2xvcj4iLHJlbGV2YW5jZTo1MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvY29sdW1uLXJ1bGUtY29sb3IifV0sZGVzY3JpcHRpb246IlNldHMgdGhlIGNvbG9yIG9mIHRoZSBjb2x1bW4gcnVsZSIscmVzdHJpY3Rpb25zOlsiY29sb3IiXX0se25hbWU6ImNvbHVtbi1ydWxlLXN0eWxlIixzeW50YXg6IjwnYm9yZGVyLXN0eWxlJz4iLHJlbGV2YW5jZTo1MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvY29sdW1uLXJ1bGUtc3R5bGUifV0sZGVzY3JpcHRpb246IlNldHMgdGhlIHN0eWxlIG9mIHRoZSBydWxlIGJldHdlZW4gY29sdW1ucyBvZiBhbiBlbGVtZW50LiIscmVzdHJpY3Rpb25zOlsibGluZS1zdHlsZSJdfSx7bmFtZToiY29sdW1uLXJ1bGUtd2lkdGgiLHN5bnRheDoiPCdib3JkZXItd2lkdGgnPiIscmVsZXZhbmNlOjUwLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9jb2x1bW4tcnVsZS13aWR0aCJ9XSxkZXNjcmlwdGlvbjoiU2V0cyB0aGUgd2lkdGggb2YgdGhlIHJ1bGUgYmV0d2VlbiBjb2x1bW5zLiBOZWdhdGl2ZSB2YWx1ZXMgYXJlIG5vdCBhbGxvd2VkLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwibGluZS13aWR0aCJdfSx7bmFtZToiY29sdW1ucyIsdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IlRoZSB3aWR0aCBkZXBlbmRzIG9uIHRoZSB2YWx1ZXMgb2Ygb3RoZXIgcHJvcGVydGllcy4ifV0sc3ludGF4OiI8J2NvbHVtbi13aWR0aCc+IHx8IDwnY29sdW1uLWNvdW50Jz4iLHJlbGV2YW5jZTo1MSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvY29sdW1ucyJ9XSxkZXNjcmlwdGlvbjoiQSBzaG9ydGhhbmQgcHJvcGVydHkgd2hpY2ggc2V0cyBib3RoICdjb2x1bW4td2lkdGgnIGFuZCAnY29sdW1uLWNvdW50Jy4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsImludGVnZXIiLCJlbnVtIl19LHtuYW1lOiJjb2x1bW4tc3BhbiIsdmFsdWVzOlt7bmFtZToiYWxsIixkZXNjcmlwdGlvbjoiVGhlIGVsZW1lbnQgc3BhbnMgYWNyb3NzIGFsbCBjb2x1bW5zLiBDb250ZW50IGluIHRoZSBub3JtYWwgZmxvdyB0aGF0IGFwcGVhcnMgYmVmb3JlIHRoZSBlbGVtZW50IGlzIGF1dG9tYXRpY2FsbHkgYmFsYW5jZWQgYWNyb3NzIGFsbCBjb2x1bW5zIGJlZm9yZSB0aGUgZWxlbWVudCBhcHBlYXIuIn0se25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJUaGUgZWxlbWVudCBkb2VzIG5vdCBzcGFuIG11bHRpcGxlIGNvbHVtbnMuIn1dLHN5bnRheDoibm9uZSB8IGFsbCIscmVsZXZhbmNlOjUwLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9jb2x1bW4tc3BhbiJ9XSxkZXNjcmlwdGlvbjoiRGVzY3JpYmVzIHRoZSBwYWdlL2NvbHVtbiBicmVhayBiZWhhdmlvciBhZnRlciB0aGUgZ2VuZXJhdGVkIGJveC4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6ImNvbHVtbi13aWR0aCIsdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IlRoZSB3aWR0aCBkZXBlbmRzIG9uIHRoZSB2YWx1ZXMgb2Ygb3RoZXIgcHJvcGVydGllcy4ifV0sc3ludGF4OiI8bGVuZ3RoPiB8IGF1dG8iLHJlbGV2YW5jZTo1MSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvY29sdW1uLXdpZHRoIn1dLGRlc2NyaXB0aW9uOiJEZXNjcmliZXMgdGhlIHdpZHRoIG9mIGNvbHVtbnMgaW4gbXVsdGljb2wgZWxlbWVudHMuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJlbnVtIl19LHtuYW1lOiJjb250YWluIixicm93c2VyczpbIkU3OSIsIkZGNjkiLCJTMTUuNCIsIkM1MiIsIk80MCJdLHZhbHVlczpbe25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgdGhhdCB0aGUgcHJvcGVydHkgaGFzIG5vIGVmZmVjdC4ifSx7bmFtZToic3RyaWN0IixkZXNjcmlwdGlvbjoiVHVybnMgb24gYWxsIGZvcm1zIG9mIGNvbnRhaW5tZW50IGZvciB0aGUgZWxlbWVudC4ifSx7bmFtZToiY29udGVudCIsZGVzY3JpcHRpb246IkFsbCBjb250YWlubWVudCBydWxlcyBleGNlcHQgc2l6ZSBhcmUgYXBwbGllZCB0byB0aGUgZWxlbWVudC4ifSx7bmFtZToic2l6ZSIsZGVzY3JpcHRpb246IkZvciBwcm9wZXJ0aWVzIHRoYXQgY2FuIGhhdmUgZWZmZWN0cyBvbiBtb3JlIHRoYW4ganVzdCBhbiBlbGVtZW50IGFuZCBpdHMgZGVzY2VuZGFudHMsIHRob3NlIGVmZmVjdHMgZG9uJ3QgZXNjYXBlIHRoZSBjb250YWluaW5nIGVsZW1lbnQuIn0se25hbWU6ImxheW91dCIsZGVzY3JpcHRpb246IlR1cm5zIG9uIGxheW91dCBjb250YWlubWVudCBmb3IgdGhlIGVsZW1lbnQuIn0se25hbWU6InN0eWxlIixkZXNjcmlwdGlvbjoiVHVybnMgb24gc3R5bGUgY29udGFpbm1lbnQgZm9yIHRoZSBlbGVtZW50LiJ9LHtuYW1lOiJwYWludCIsZGVzY3JpcHRpb246IlR1cm5zIG9uIHBhaW50IGNvbnRhaW5tZW50IGZvciB0aGUgZWxlbWVudC4ifV0sc3ludGF4OiJub25lIHwgc3RyaWN0IHwgY29udGVudCB8IFsgc2l6ZSB8fCBsYXlvdXQgfHwgc3R5bGUgfHwgcGFpbnQgXSIscmVsZXZhbmNlOjU5LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9jb250YWluIn1dLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgdGhhdCBhbiBlbGVtZW50IGFuZCBpdHMgY29udGVudHMgYXJlLCBhcyBtdWNoIGFzIHBvc3NpYmxlLCBpbmRlcGVuZGVudCBvZiB0aGUgcmVzdCBvZiB0aGUgZG9jdW1lbnQgdHJlZS4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6ImNvbnRlbnQiLHZhbHVlczpbe25hbWU6ImF0dHIoKSIsZGVzY3JpcHRpb246IlRoZSBhdHRyKG4pIGZ1bmN0aW9uIHJldHVybnMgYXMgYSBzdHJpbmcgdGhlIHZhbHVlIG9mIGF0dHJpYnV0ZSBuIGZvciB0aGUgc3ViamVjdCBvZiB0aGUgc2VsZWN0b3IuIn0se25hbWU6ImNvdW50ZXIobmFtZSkiLGRlc2NyaXB0aW9uOiJDb3VudGVycyBhcmUgZGVub3RlZCBieSBpZGVudGlmaWVycyAoc2VlIHRoZSAnY291bnRlci1pbmNyZW1lbnQnIGFuZCAnY291bnRlci1yZXNldCcgcHJvcGVydGllcykuIn0se25hbWU6Imljb24iLGRlc2NyaXB0aW9uOiJUaGUgKHBzZXVkby0pZWxlbWVudCBpcyByZXBsYWNlZCBpbiBpdHMgZW50aXJldHkgYnkgdGhlIHJlc291cmNlIHJlZmVyZW5jZWQgYnkgaXRzICdpY29uJyBwcm9wZXJ0eSwgYW5kIHRyZWF0ZWQgYXMgYSByZXBsYWNlZCBlbGVtZW50LiJ9LHtuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiT24gZWxlbWVudHMsIHRoaXMgaW5oaWJpdHMgdGhlIGNoaWxkcmVuIG9mIHRoZSBlbGVtZW50IGZyb20gYmVpbmcgcmVuZGVyZWQgYXMgY2hpbGRyZW4gb2YgdGhpcyBlbGVtZW50LCBhcyBpZiB0aGUgZWxlbWVudCB3YXMgZW1wdHkuIE9uIHBzZXVkby1lbGVtZW50cyBpdCBjYXVzZXMgdGhlIHBzZXVkby1lbGVtZW50IHRvIGhhdmUgbm8gY29udGVudC4ifSx7bmFtZToibm9ybWFsIixkZXNjcmlwdGlvbjoiU2VlIGh0dHA6Ly93d3cudzMub3JnL1RSL2NzczMtY29udGVudC8jY29udGVudCBmb3IgY29tcHV0YXRpb24gcnVsZXMuIn0se25hbWU6InVybCgpIn1dLHN5bnRheDoibm9ybWFsIHwgbm9uZSB8IFsgPGNvbnRlbnQtcmVwbGFjZW1lbnQ+IHwgPGNvbnRlbnQtbGlzdD4gXSBbLyBbIDxzdHJpbmc+IHwgPGNvdW50ZXI+IF0rIF0/IixyZWxldmFuY2U6OTAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2NvbnRlbnQifV0sZGVzY3JpcHRpb246IkRldGVybWluZXMgd2hpY2ggcGFnZS1iYXNlZCBvY2N1cnJlbmNlIG9mIGEgZ2l2ZW4gZWxlbWVudCBpcyBhcHBsaWVkIHRvIGEgY291bnRlciBvciBzdHJpbmcgdmFsdWUuIixyZXN0cmljdGlvbnM6WyJzdHJpbmciLCJ1cmwiXX0se25hbWU6ImNvdW50ZXItaW5jcmVtZW50Iix2YWx1ZXM6W3tuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiVGhpcyBlbGVtZW50IGRvZXMgbm90IGFsdGVyIHRoZSB2YWx1ZSBvZiBhbnkgY291bnRlcnMuIn1dLHN5bnRheDoiWyA8Y291bnRlci1uYW1lPiA8aW50ZWdlcj4/IF0rIHwgbm9uZSIscmVsZXZhbmNlOjUzLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9jb3VudGVyLWluY3JlbWVudCJ9XSxkZXNjcmlwdGlvbjoiTWFuaXB1bGF0ZSB0aGUgdmFsdWUgb2YgZXhpc3RpbmcgY291bnRlcnMuIixyZXN0cmljdGlvbnM6WyJpZGVudGlmaWVyIiwiaW50ZWdlciJdfSx7bmFtZToiY291bnRlci1yZXNldCIsdmFsdWVzOlt7bmFtZToibm9uZSIsZGVzY3JpcHRpb246IlRoZSBjb3VudGVyIGlzIG5vdCBtb2RpZmllZC4ifV0sc3ludGF4OiJbIDxjb3VudGVyLW5hbWU+IDxpbnRlZ2VyPj8gfCA8cmV2ZXJzZWQtY291bnRlci1uYW1lPiA8aW50ZWdlcj4/IF0rIHwgbm9uZSIscmVsZXZhbmNlOjUzLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9jb3VudGVyLXJlc2V0In1dLGRlc2NyaXB0aW9uOiJQcm9wZXJ0eSBhY2NlcHRzIG9uZSBvciBtb3JlIG5hbWVzIG9mIGNvdW50ZXJzIChpZGVudGlmaWVycyksIGVhY2ggb25lIG9wdGlvbmFsbHkgZm9sbG93ZWQgYnkgYW4gaW50ZWdlci4gVGhlIGludGVnZXIgZ2l2ZXMgdGhlIHZhbHVlIHRoYXQgdGhlIGNvdW50ZXIgaXMgc2V0IHRvIG9uIGVhY2ggb2NjdXJyZW5jZSBvZiB0aGUgZWxlbWVudC4iLHJlc3RyaWN0aW9uczpbImlkZW50aWZpZXIiLCJpbnRlZ2VyIl19LHtuYW1lOiJjdXJzb3IiLHZhbHVlczpbe25hbWU6ImFsaWFzIixkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIGFuIGFsaWFzIG9mL3Nob3J0Y3V0IHRvIHNvbWV0aGluZyBpcyB0byBiZSBjcmVhdGVkLiBPZnRlbiByZW5kZXJlZCBhcyBhbiBhcnJvdyB3aXRoIGEgc21hbGwgY3VydmVkIGFycm93IG5leHQgdG8gaXQuIn0se25hbWU6ImFsbC1zY3JvbGwiLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgdGhhdCB0aGUgc29tZXRoaW5nIGNhbiBiZSBzY3JvbGxlZCBpbiBhbnkgZGlyZWN0aW9uLiBPZnRlbiByZW5kZXJlZCBhcyBhcnJvd3MgcG9pbnRpbmcgdXAsIGRvd24sIGxlZnQsIGFuZCByaWdodCB3aXRoIGEgZG90IGluIHRoZSBtaWRkbGUuIn0se25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJUaGUgVUEgZGV0ZXJtaW5lcyB0aGUgY3Vyc29yIHRvIGRpc3BsYXkgYmFzZWQgb24gdGhlIGN1cnJlbnQgY29udGV4dC4ifSx7bmFtZToiY2VsbCIsZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGF0IGEgY2VsbCBvciBzZXQgb2YgY2VsbHMgbWF5IGJlIHNlbGVjdGVkLiBPZnRlbiByZW5kZXJlZCBhcyBhIHRoaWNrIHBsdXMtc2lnbiB3aXRoIGEgZG90IGluIHRoZSBtaWRkbGUuIn0se25hbWU6ImNvbC1yZXNpemUiLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgdGhhdCB0aGUgaXRlbS9jb2x1bW4gY2FuIGJlIHJlc2l6ZWQgaG9yaXpvbnRhbGx5LiBPZnRlbiByZW5kZXJlZCBhcyBhcnJvd3MgcG9pbnRpbmcgbGVmdCBhbmQgcmlnaHQgd2l0aCBhIHZlcnRpY2FsIGJhciBzZXBhcmF0aW5nIHRoZW0uIn0se25hbWU6ImNvbnRleHQtbWVudSIsZGVzY3JpcHRpb246IkEgY29udGV4dCBtZW51IGlzIGF2YWlsYWJsZSBmb3IgdGhlIG9iamVjdCB1bmRlciB0aGUgY3Vyc29yLiBPZnRlbiByZW5kZXJlZCBhcyBhbiBhcnJvdyB3aXRoIGEgc21hbGwgbWVudS1saWtlIGdyYXBoaWMgbmV4dCB0byBpdC4ifSx7bmFtZToiY29weSIsZGVzY3JpcHRpb246IkluZGljYXRlcyBzb21ldGhpbmcgaXMgdG8gYmUgY29waWVkLiBPZnRlbiByZW5kZXJlZCBhcyBhbiBhcnJvdyB3aXRoIGEgc21hbGwgcGx1cyBzaWduIG5leHQgdG8gaXQuIn0se25hbWU6ImNyb3NzaGFpciIsZGVzY3JpcHRpb246IkEgc2ltcGxlIGNyb3NzaGFpciAoZS5nLiwgc2hvcnQgbGluZSBzZWdtZW50cyByZXNlbWJsaW5nIGEgJysnIHNpZ24pLiBPZnRlbiB1c2VkIHRvIGluZGljYXRlIGEgdHdvIGRpbWVuc2lvbmFsIGJpdG1hcCBzZWxlY3Rpb24gbW9kZS4ifSx7bmFtZToiZGVmYXVsdCIsZGVzY3JpcHRpb246IlRoZSBwbGF0Zm9ybS1kZXBlbmRlbnQgZGVmYXVsdCBjdXJzb3IuIE9mdGVuIHJlbmRlcmVkIGFzIGFuIGFycm93LiJ9LHtuYW1lOiJlLXJlc2l6ZSIsZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGF0IGVhc3QgZWRnZSBpcyB0byBiZSBtb3ZlZC4ifSx7bmFtZToiZXctcmVzaXplIixkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIGEgYmlkaXJlY3Rpb25hbCBlYXN0LXdlc3QgcmVzaXplIGN1cnNvci4ifSx7bmFtZToiZ3JhYiIsZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGF0IHNvbWV0aGluZyBjYW4gYmUgZ3JhYmJlZC4ifSx7bmFtZToiZ3JhYmJpbmciLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgdGhhdCBzb21ldGhpbmcgaXMgYmVpbmcgZ3JhYmJlZC4ifSx7bmFtZToiaGVscCIsZGVzY3JpcHRpb246IkhlbHAgaXMgYXZhaWxhYmxlIGZvciB0aGUgb2JqZWN0IHVuZGVyIHRoZSBjdXJzb3IuIE9mdGVuIHJlbmRlcmVkIGFzIGEgcXVlc3Rpb24gbWFyayBvciBhIGJhbGxvb24uIn0se25hbWU6Im1vdmUiLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgc29tZXRoaW5nIGlzIHRvIGJlIG1vdmVkLiJ9LHtuYW1lOiItbW96LWdyYWIiLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgdGhhdCBzb21ldGhpbmcgY2FuIGJlIGdyYWJiZWQuIn0se25hbWU6Ii1tb3otZ3JhYmJpbmciLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgdGhhdCBzb21ldGhpbmcgaXMgYmVpbmcgZ3JhYmJlZC4ifSx7bmFtZToiLW1vei16b29tLWluIixkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHRoYXQgc29tZXRoaW5nIGNhbiBiZSB6b29tZWQgKG1hZ25pZmllZCkgaW4uIn0se25hbWU6Ii1tb3otem9vbS1vdXQiLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgdGhhdCBzb21ldGhpbmcgY2FuIGJlIHpvb21lZCAobWFnbmlmaWVkKSBvdXQuIn0se25hbWU6Im5lLXJlc2l6ZSIsZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGF0IG1vdmVtZW50IHN0YXJ0cyBmcm9tIG5vcnRoLWVhc3QgY29ybmVyLiJ9LHtuYW1lOiJuZXN3LXJlc2l6ZSIsZGVzY3JpcHRpb246IkluZGljYXRlcyBhIGJpZGlyZWN0aW9uYWwgbm9ydGgtZWFzdC9zb3V0aC13ZXN0IGN1cnNvci4ifSx7bmFtZToibm8tZHJvcCIsZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGF0IHRoZSBkcmFnZ2VkIGl0ZW0gY2Fubm90IGJlIGRyb3BwZWQgYXQgdGhlIGN1cnJlbnQgY3Vyc29yIGxvY2F0aW9uLiBPZnRlbiByZW5kZXJlZCBhcyBhIGhhbmQgb3IgcG9pbnRlciB3aXRoIGEgc21hbGwgY2lyY2xlIHdpdGggYSBsaW5lIHRocm91Z2ggaXQuIn0se25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJObyBjdXJzb3IgaXMgcmVuZGVyZWQgZm9yIHRoZSBlbGVtZW50LiJ9LHtuYW1lOiJub3QtYWxsb3dlZCIsZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGF0IHRoZSByZXF1ZXN0ZWQgYWN0aW9uIHdpbGwgbm90IGJlIGNhcnJpZWQgb3V0LiBPZnRlbiByZW5kZXJlZCBhcyBhIGNpcmNsZSB3aXRoIGEgbGluZSB0aHJvdWdoIGl0LiJ9LHtuYW1lOiJuLXJlc2l6ZSIsZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGF0IG5vcnRoIGVkZ2UgaXMgdG8gYmUgbW92ZWQuIn0se25hbWU6Im5zLXJlc2l6ZSIsZGVzY3JpcHRpb246IkluZGljYXRlcyBhIGJpZGlyZWN0aW9uYWwgbm9ydGgtc291dGggY3Vyc29yLiJ9LHtuYW1lOiJudy1yZXNpemUiLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgdGhhdCBtb3ZlbWVudCBzdGFydHMgZnJvbSBub3J0aC13ZXN0IGNvcm5lci4ifSx7bmFtZToibndzZS1yZXNpemUiLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgYSBiaWRpcmVjdGlvbmFsIG5vcnRoLXdlc3Qvc291dGgtZWFzdCBjdXJzb3IuIn0se25hbWU6InBvaW50ZXIiLGRlc2NyaXB0aW9uOiJUaGUgY3Vyc29yIGlzIGEgcG9pbnRlciB0aGF0IGluZGljYXRlcyBhIGxpbmsuIn0se25hbWU6InByb2dyZXNzIixkZXNjcmlwdGlvbjoiQSBwcm9ncmVzcyBpbmRpY2F0b3IuIFRoZSBwcm9ncmFtIGlzIHBlcmZvcm1pbmcgc29tZSBwcm9jZXNzaW5nLCBidXQgaXMgZGlmZmVyZW50IGZyb20gJ3dhaXQnIGluIHRoYXQgdGhlIHVzZXIgbWF5IHN0aWxsIGludGVyYWN0IHdpdGggdGhlIHByb2dyYW0uIE9mdGVuIHJlbmRlcmVkIGFzIGEgc3Bpbm5pbmcgYmVhY2ggYmFsbCwgb3IgYW4gYXJyb3cgd2l0aCBhIHdhdGNoIG9yIGhvdXJnbGFzcy4ifSx7bmFtZToicm93LXJlc2l6ZSIsZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGF0IHRoZSBpdGVtL3JvdyBjYW4gYmUgcmVzaXplZCB2ZXJ0aWNhbGx5LiBPZnRlbiByZW5kZXJlZCBhcyBhcnJvd3MgcG9pbnRpbmcgdXAgYW5kIGRvd24gd2l0aCBhIGhvcml6b250YWwgYmFyIHNlcGFyYXRpbmcgdGhlbS4ifSx7bmFtZToic2UtcmVzaXplIixkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHRoYXQgbW92ZW1lbnQgc3RhcnRzIGZyb20gc291dGgtZWFzdCBjb3JuZXIuIn0se25hbWU6InMtcmVzaXplIixkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHRoYXQgc291dGggZWRnZSBpcyB0byBiZSBtb3ZlZC4ifSx7bmFtZToic3ctcmVzaXplIixkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHRoYXQgbW92ZW1lbnQgc3RhcnRzIGZyb20gc291dGgtd2VzdCBjb3JuZXIuIn0se25hbWU6InRleHQiLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgdGV4dCB0aGF0IG1heSBiZSBzZWxlY3RlZC4gT2Z0ZW4gcmVuZGVyZWQgYXMgYSB2ZXJ0aWNhbCBJLWJlYW0uIn0se25hbWU6InZlcnRpY2FsLXRleHQiLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgdmVydGljYWwtdGV4dCB0aGF0IG1heSBiZSBzZWxlY3RlZC4gT2Z0ZW4gcmVuZGVyZWQgYXMgYSBob3Jpem9udGFsIEktYmVhbS4ifSx7bmFtZToid2FpdCIsZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGF0IHRoZSBwcm9ncmFtIGlzIGJ1c3kgYW5kIHRoZSB1c2VyIHNob3VsZCB3YWl0LiBPZnRlbiByZW5kZXJlZCBhcyBhIHdhdGNoIG9yIGhvdXJnbGFzcy4ifSx7bmFtZToiLXdlYmtpdC1ncmFiIixkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHRoYXQgc29tZXRoaW5nIGNhbiBiZSBncmFiYmVkLiJ9LHtuYW1lOiItd2Via2l0LWdyYWJiaW5nIixkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHRoYXQgc29tZXRoaW5nIGlzIGJlaW5nIGdyYWJiZWQuIn0se25hbWU6Ii13ZWJraXQtem9vbS1pbiIsZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGF0IHNvbWV0aGluZyBjYW4gYmUgem9vbWVkIChtYWduaWZpZWQpIGluLiJ9LHtuYW1lOiItd2Via2l0LXpvb20tb3V0IixkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHRoYXQgc29tZXRoaW5nIGNhbiBiZSB6b29tZWQgKG1hZ25pZmllZCkgb3V0LiJ9LHtuYW1lOiJ3LXJlc2l6ZSIsZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGF0IHdlc3QgZWRnZSBpcyB0byBiZSBtb3ZlZC4ifSx7bmFtZToiem9vbS1pbiIsZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGF0IHNvbWV0aGluZyBjYW4gYmUgem9vbWVkIChtYWduaWZpZWQpIGluLiJ9LHtuYW1lOiJ6b29tLW91dCIsZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGF0IHNvbWV0aGluZyBjYW4gYmUgem9vbWVkIChtYWduaWZpZWQpIG91dC4ifV0sc3ludGF4OiJbIFsgPHVybD4gWyA8eD4gPHk+IF0/ICwgXSogWyBhdXRvIHwgZGVmYXVsdCB8IG5vbmUgfCBjb250ZXh0LW1lbnUgfCBoZWxwIHwgcG9pbnRlciB8IHByb2dyZXNzIHwgd2FpdCB8IGNlbGwgfCBjcm9zc2hhaXIgfCB0ZXh0IHwgdmVydGljYWwtdGV4dCB8IGFsaWFzIHwgY29weSB8IG1vdmUgfCBuby1kcm9wIHwgbm90LWFsbG93ZWQgfCBlLXJlc2l6ZSB8IG4tcmVzaXplIHwgbmUtcmVzaXplIHwgbnctcmVzaXplIHwgcy1yZXNpemUgfCBzZS1yZXNpemUgfCBzdy1yZXNpemUgfCB3LXJlc2l6ZSB8IGV3LXJlc2l6ZSB8IG5zLXJlc2l6ZSB8IG5lc3ctcmVzaXplIHwgbndzZS1yZXNpemUgfCBjb2wtcmVzaXplIHwgcm93LXJlc2l6ZSB8IGFsbC1zY3JvbGwgfCB6b29tLWluIHwgem9vbS1vdXQgfCBncmFiIHwgZ3JhYmJpbmcgXSBdIixyZWxldmFuY2U6OTIscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2N1cnNvciJ9XSxkZXNjcmlwdGlvbjoiQWxsb3dzIGNvbnRyb2wgb3ZlciBjdXJzb3IgYXBwZWFyYW5jZSBpbiBhbiBlbGVtZW50IixyZXN0cmljdGlvbnM6WyJ1cmwiLCJudW1iZXIiLCJlbnVtIl19LHtuYW1lOiJkaXJlY3Rpb24iLHZhbHVlczpbe25hbWU6Imx0ciIsZGVzY3JpcHRpb246IkxlZnQtdG8tcmlnaHQgZGlyZWN0aW9uLiJ9LHtuYW1lOiJydGwiLGRlc2NyaXB0aW9uOiJSaWdodC10by1sZWZ0IGRpcmVjdGlvbi4ifV0sc3ludGF4OiJsdHIgfCBydGwiLHJlbGV2YW5jZTo2OSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvZGlyZWN0aW9uIn1dLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgdGhlIGlubGluZSBiYXNlIGRpcmVjdGlvbiBvciBkaXJlY3Rpb25hbGl0eSBvZiBhbnkgYmlkaSBwYXJhZ3JhcGgsIGVtYmVkZGluZywgaXNvbGF0ZSwgb3Igb3ZlcnJpZGUgZXN0YWJsaXNoZWQgYnkgdGhlIGJveC4gTm90ZTogZm9yIEhUTUwgY29udGVudCB1c2UgdGhlICdkaXInIGF0dHJpYnV0ZSBhbmQgJ2JkbycgZWxlbWVudCByYXRoZXIgdGhhbiB0aGlzIHByb3BlcnR5LiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiZGlzcGxheSIsdmFsdWVzOlt7bmFtZToiYmxvY2siLGRlc2NyaXB0aW9uOiJUaGUgZWxlbWVudCBnZW5lcmF0ZXMgYSBibG9jay1sZXZlbCBib3gifSx7bmFtZToiY29udGVudHMiLGRlc2NyaXB0aW9uOiJUaGUgZWxlbWVudCBpdHNlbGYgZG9lcyBub3QgZ2VuZXJhdGUgYW55IGJveGVzLCBidXQgaXRzIGNoaWxkcmVuIGFuZCBwc2V1ZG8tZWxlbWVudHMgc3RpbGwgZ2VuZXJhdGUgYm94ZXMgYXMgbm9ybWFsLiJ9LHtuYW1lOiJmbGV4IixkZXNjcmlwdGlvbjoiVGhlIGVsZW1lbnQgZ2VuZXJhdGVzIGEgcHJpbmNpcGFsIGZsZXggY29udGFpbmVyIGJveCBhbmQgZXN0YWJsaXNoZXMgYSBmbGV4IGZvcm1hdHRpbmcgY29udGV4dC4ifSx7bmFtZToiZmxleGJveCIsZGVzY3JpcHRpb246IlRoZSBlbGVtZW50IGxheXMgb3V0IGl0cyBjb250ZW50cyB1c2luZyBmbG93IGxheW91dCAoYmxvY2stYW5kLWlubGluZSBsYXlvdXQpLiBTdGFuZGFyZGl6ZWQgYXMgJ2ZsZXgnLiJ9LHtuYW1lOiJmbG93LXJvb3QiLGRlc2NyaXB0aW9uOiJUaGUgZWxlbWVudCBnZW5lcmF0ZXMgYSBibG9jayBjb250YWluZXIgYm94LCBhbmQgbGF5cyBvdXQgaXRzIGNvbnRlbnRzIHVzaW5nIGZsb3cgbGF5b3V0LiJ9LHtuYW1lOiJncmlkIixkZXNjcmlwdGlvbjoiVGhlIGVsZW1lbnQgZ2VuZXJhdGVzIGEgcHJpbmNpcGFsIGdyaWQgY29udGFpbmVyIGJveCwgYW5kIGVzdGFibGlzaGVzIGEgZ3JpZCBmb3JtYXR0aW5nIGNvbnRleHQuIn0se25hbWU6ImlubGluZSIsZGVzY3JpcHRpb246IlRoZSBlbGVtZW50IGdlbmVyYXRlcyBhbiBpbmxpbmUtbGV2ZWwgYm94LiJ9LHtuYW1lOiJpbmxpbmUtYmxvY2siLGRlc2NyaXB0aW9uOiJBIGJsb2NrIGJveCwgd2hpY2ggaXRzZWxmIGlzIGZsb3dlZCBhcyBhIHNpbmdsZSBpbmxpbmUgYm94LCBzaW1pbGFyIHRvIGEgcmVwbGFjZWQgZWxlbWVudC4gVGhlIGluc2lkZSBvZiBhbiBpbmxpbmUtYmxvY2sgaXMgZm9ybWF0dGVkIGFzIGEgYmxvY2sgYm94LCBhbmQgdGhlIGJveCBpdHNlbGYgaXMgZm9ybWF0dGVkIGFzIGFuIGlubGluZSBib3guIn0se25hbWU6ImlubGluZS1mbGV4IixkZXNjcmlwdGlvbjoiSW5saW5lLWxldmVsIGZsZXggY29udGFpbmVyLiJ9LHtuYW1lOiJpbmxpbmUtZmxleGJveCIsZGVzY3JpcHRpb246IklubGluZS1sZXZlbCBmbGV4IGNvbnRhaW5lci4gU3RhbmRhcmRpemVkIGFzICdpbmxpbmUtZmxleCcifSx7bmFtZToiaW5saW5lLXRhYmxlIixkZXNjcmlwdGlvbjoiSW5saW5lLWxldmVsIHRhYmxlIHdyYXBwZXIgYm94IGNvbnRhaW5pbmcgdGFibGUgYm94LiJ9LHtuYW1lOiJsaXN0LWl0ZW0iLGRlc2NyaXB0aW9uOiJPbmUgb3IgbW9yZSBibG9jayBib3hlcyBhbmQgb25lIG1hcmtlciBib3guIn0se25hbWU6Ii1tb3otYm94IixkZXNjcmlwdGlvbjoiVGhlIGVsZW1lbnQgbGF5cyBvdXQgaXRzIGNvbnRlbnRzIHVzaW5nIGZsb3cgbGF5b3V0IChibG9jay1hbmQtaW5saW5lIGxheW91dCkuIFN0YW5kYXJkaXplZCBhcyAnZmxleCcuIn0se25hbWU6Ii1tb3otZGVjayJ9LHtuYW1lOiItbW96LWdyaWQifSx7bmFtZToiLW1vei1ncmlkLWdyb3VwIn0se25hbWU6Ii1tb3otZ3JpZC1saW5lIn0se25hbWU6Ii1tb3otZ3JvdXBib3gifSx7bmFtZToiLW1vei1pbmxpbmUtYm94IixkZXNjcmlwdGlvbjoiSW5saW5lLWxldmVsIGZsZXggY29udGFpbmVyLiBTdGFuZGFyZGl6ZWQgYXMgJ2lubGluZS1mbGV4JyJ9LHtuYW1lOiItbW96LWlubGluZS1ncmlkIn0se25hbWU6Ii1tb3otaW5saW5lLXN0YWNrIn0se25hbWU6Ii1tb3otbWFya2VyIn0se25hbWU6Ii1tb3otcG9wdXAifSx7bmFtZToiLW1vei1zdGFjayJ9LHtuYW1lOiItbXMtZmxleGJveCIsZGVzY3JpcHRpb246IlRoZSBlbGVtZW50IGxheXMgb3V0IGl0cyBjb250ZW50cyB1c2luZyBmbG93IGxheW91dCAoYmxvY2stYW5kLWlubGluZSBsYXlvdXQpLiBTdGFuZGFyZGl6ZWQgYXMgJ2ZsZXgnLiJ9LHtuYW1lOiItbXMtZ3JpZCIsZGVzY3JpcHRpb246IlRoZSBlbGVtZW50IGdlbmVyYXRlcyBhIHByaW5jaXBhbCBncmlkIGNvbnRhaW5lciBib3gsIGFuZCBlc3RhYmxpc2hlcyBhIGdyaWQgZm9ybWF0dGluZyBjb250ZXh0LiJ9LHtuYW1lOiItbXMtaW5saW5lLWZsZXhib3giLGRlc2NyaXB0aW9uOiJJbmxpbmUtbGV2ZWwgZmxleCBjb250YWluZXIuIFN0YW5kYXJkaXplZCBhcyAnaW5saW5lLWZsZXgnIn0se25hbWU6Ii1tcy1pbmxpbmUtZ3JpZCIsZGVzY3JpcHRpb246IklubGluZS1sZXZlbCBncmlkIGNvbnRhaW5lci4ifSx7bmFtZToibm9uZSIsZGVzY3JpcHRpb246IlRoZSBlbGVtZW50IGFuZCBpdHMgZGVzY2VuZGFudHMgZ2VuZXJhdGVzIG5vIGJveGVzLiJ9LHtuYW1lOiJydWJ5IixkZXNjcmlwdGlvbjoiVGhlIGVsZW1lbnQgZ2VuZXJhdGVzIGEgcHJpbmNpcGFsIHJ1YnkgY29udGFpbmVyIGJveCwgYW5kIGVzdGFibGlzaGVzIGEgcnVieSBmb3JtYXR0aW5nIGNvbnRleHQuIn0se25hbWU6InJ1YnktYmFzZSJ9LHtuYW1lOiJydWJ5LWJhc2UtY29udGFpbmVyIn0se25hbWU6InJ1YnktdGV4dCJ9LHtuYW1lOiJydWJ5LXRleHQtY29udGFpbmVyIn0se25hbWU6InJ1bi1pbiIsZGVzY3JpcHRpb246IlRoZSBlbGVtZW50IGdlbmVyYXRlcyBhIHJ1bi1pbiBib3guIFJ1bi1pbiBlbGVtZW50cyBhY3QgbGlrZSBpbmxpbmVzIG9yIGJsb2NrcywgZGVwZW5kaW5nIG9uIHRoZSBzdXJyb3VuZGluZyBlbGVtZW50cy4ifSx7bmFtZToidGFibGUiLGRlc2NyaXB0aW9uOiJUaGUgZWxlbWVudCBnZW5lcmF0ZXMgYSBwcmluY2lwYWwgdGFibGUgd3JhcHBlciBib3ggY29udGFpbmluZyBhbiBhZGRpdGlvbmFsbHktZ2VuZXJhdGVkIHRhYmxlIGJveCwgYW5kIGVzdGFibGlzaGVzIGEgdGFibGUgZm9ybWF0dGluZyBjb250ZXh0LiJ9LHtuYW1lOiJ0YWJsZS1jYXB0aW9uIn0se25hbWU6InRhYmxlLWNlbGwifSx7bmFtZToidGFibGUtY29sdW1uIn0se25hbWU6InRhYmxlLWNvbHVtbi1ncm91cCJ9LHtuYW1lOiJ0YWJsZS1mb290ZXItZ3JvdXAifSx7bmFtZToidGFibGUtaGVhZGVyLWdyb3VwIn0se25hbWU6InRhYmxlLXJvdyJ9LHtuYW1lOiJ0YWJsZS1yb3ctZ3JvdXAifSx7bmFtZToiLXdlYmtpdC1ib3giLGRlc2NyaXB0aW9uOiJUaGUgZWxlbWVudCBsYXlzIG91dCBpdHMgY29udGVudHMgdXNpbmcgZmxvdyBsYXlvdXQgKGJsb2NrLWFuZC1pbmxpbmUgbGF5b3V0KS4gU3RhbmRhcmRpemVkIGFzICdmbGV4Jy4ifSx7bmFtZToiLXdlYmtpdC1mbGV4IixkZXNjcmlwdGlvbjoiVGhlIGVsZW1lbnQgbGF5cyBvdXQgaXRzIGNvbnRlbnRzIHVzaW5nIGZsb3cgbGF5b3V0IChibG9jay1hbmQtaW5saW5lIGxheW91dCkuIn0se25hbWU6Ii13ZWJraXQtaW5saW5lLWJveCIsZGVzY3JpcHRpb246IklubGluZS1sZXZlbCBmbGV4IGNvbnRhaW5lci4gU3RhbmRhcmRpemVkIGFzICdpbmxpbmUtZmxleCcifSx7bmFtZToiLXdlYmtpdC1pbmxpbmUtZmxleCIsZGVzY3JpcHRpb246IklubGluZS1sZXZlbCBmbGV4IGNvbnRhaW5lci4ifV0sc3ludGF4OiJbIDxkaXNwbGF5LW91dHNpZGU+IHx8IDxkaXNwbGF5LWluc2lkZT4gXSB8IDxkaXNwbGF5LWxpc3RpdGVtPiB8IDxkaXNwbGF5LWludGVybmFsPiB8IDxkaXNwbGF5LWJveD4gfCA8ZGlzcGxheS1sZWdhY3k+IixyZWxldmFuY2U6OTYscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2Rpc3BsYXkifV0sZGVzY3JpcHRpb246IkluIGNvbWJpbmF0aW9uIHdpdGggJ2Zsb2F0JyBhbmQgJ3Bvc2l0aW9uJywgZGV0ZXJtaW5lcyB0aGUgdHlwZSBvZiBib3ggb3IgYm94ZXMgdGhhdCBhcmUgZ2VuZXJhdGVkIGZvciBhbiBlbGVtZW50LiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiZW1wdHktY2VsbHMiLHZhbHVlczpbe25hbWU6ImhpZGUiLGRlc2NyaXB0aW9uOiJObyBib3JkZXJzIG9yIGJhY2tncm91bmRzIGFyZSBkcmF3biBhcm91bmQvYmVoaW5kIGVtcHR5IGNlbGxzLiJ9LHtuYW1lOiItbW96LXNob3ctYmFja2dyb3VuZCJ9LHtuYW1lOiJzaG93IixkZXNjcmlwdGlvbjoiQm9yZGVycyBhbmQgYmFja2dyb3VuZHMgYXJlIGRyYXduIGFyb3VuZC9iZWhpbmQgZW1wdHkgY2VsbHMgKGxpa2Ugbm9ybWFsIGNlbGxzKS4ifV0sc3ludGF4OiJzaG93IHwgaGlkZSIscmVsZXZhbmNlOjUxLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9lbXB0eS1jZWxscyJ9XSxkZXNjcmlwdGlvbjoiSW4gdGhlIHNlcGFyYXRlZCBib3JkZXJzIG1vZGVsLCB0aGlzIHByb3BlcnR5IGNvbnRyb2xzIHRoZSByZW5kZXJpbmcgb2YgYm9yZGVycyBhbmQgYmFja2dyb3VuZHMgYXJvdW5kIGNlbGxzIHRoYXQgaGF2ZSBubyB2aXNpYmxlIGNvbnRlbnQuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJlbmFibGUtYmFja2dyb3VuZCIsdmFsdWVzOlt7bmFtZToiYWNjdW11bGF0ZSIsZGVzY3JpcHRpb246IklmIHRoZSBhbmNlc3RvciBjb250YWluZXIgZWxlbWVudCBoYXMgYSBwcm9wZXJ0eSBvZiBuZXcsIHRoZW4gYWxsIGdyYXBoaWNzIGVsZW1lbnRzIHdpdGhpbiB0aGUgY3VycmVudCBjb250YWluZXIgYXJlIHJlbmRlcmVkIGJvdGggb24gdGhlIHBhcmVudCdzIGJhY2tncm91bmQgaW1hZ2UgYW5kIG9udG8gdGhlIHRhcmdldC4ifSx7bmFtZToibmV3IixkZXNjcmlwdGlvbjoiQ3JlYXRlIGEgbmV3IGJhY2tncm91bmQgaW1hZ2UgY2FudmFzLiBBbGwgY2hpbGRyZW4gb2YgdGhlIGN1cnJlbnQgY29udGFpbmVyIGVsZW1lbnQgY2FuIGFjY2VzcyB0aGUgYmFja2dyb3VuZCwgYW5kIHRoZXkgd2lsbCBiZSByZW5kZXJlZCBvbnRvIGJvdGggdGhlIHBhcmVudCdzIGJhY2tncm91bmQgaW1hZ2UgY2FudmFzIGluIGFkZGl0aW9uIHRvIHRoZSB0YXJnZXQgZGV2aWNlLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkRlcHJlY2F0ZWQuIFVzZSAnaXNvbGF0aW9uJyBwcm9wZXJ0eSBpbnN0ZWFkIHdoZW4gc3VwcG9ydCBhbGxvd3MuIFNwZWNpZmllcyBob3cgdGhlIGFjY3VtdWxhdGlvbiBvZiB0aGUgYmFja2dyb3VuZCBpbWFnZSBpcyBtYW5hZ2VkLiIscmVzdHJpY3Rpb25zOlsiaW50ZWdlciIsImxlbmd0aCIsInBlcmNlbnRhZ2UiLCJlbnVtIl19LHtuYW1lOiJmYWxsYmFjayIsYnJvd3NlcnM6WyJGRjMzIl0sc3ludGF4OiI8Y291bnRlci1zdHlsZS1uYW1lPiIscmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJAY291bnRlci1zdHlsZSBkZXNjcmlwdG9yLiBTcGVjaWZpZXMgYSBmYWxsYmFjayBjb3VudGVyIHN0eWxlIHRvIGJlIHVzZWQgd2hlbiB0aGUgY3VycmVudCBjb3VudGVyIHN0eWxlIGNhbuKAmXQgY3JlYXRlIGEgcmVwcmVzZW50YXRpb24gZm9yIGEgZ2l2ZW4gY291bnRlciB2YWx1ZS4iLHJlc3RyaWN0aW9uczpbImlkZW50aWZpZXIiXX0se25hbWU6ImZpbGwiLHZhbHVlczpbe25hbWU6InVybCgpIixkZXNjcmlwdGlvbjoiQSBVUkwgcmVmZXJlbmNlIHRvIGEgcGFpbnQgc2VydmVyIGVsZW1lbnQsIHdoaWNoIGlzIGFuIGVsZW1lbnQgdGhhdCBkZWZpbmVzIGEgcGFpbnQgc2VydmVyOiDigJhoYXRjaOKAmSwg4oCYbGluZWFyR3JhZGllbnTigJksIOKAmG1lc2jigJksIOKAmHBhdHRlcm7igJksIOKAmHJhZGlhbEdyYWRpZW504oCZIGFuZCDigJhzb2xpZGNvbG9y4oCZLiJ9LHtuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiTm8gcGFpbnQgaXMgYXBwbGllZCBpbiB0aGlzIGxheWVyLiJ9XSxyZWxldmFuY2U6NzcsZGVzY3JpcHRpb246IlBhaW50cyB0aGUgaW50ZXJpb3Igb2YgdGhlIGdpdmVuIGdyYXBoaWNhbCBlbGVtZW50LiIscmVzdHJpY3Rpb25zOlsiY29sb3IiLCJlbnVtIiwidXJsIl19LHtuYW1lOiJmaWxsLW9wYWNpdHkiLHJlbGV2YW5jZTo1MixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHRoZSBvcGFjaXR5IG9mIHRoZSBwYWludGluZyBvcGVyYXRpb24gdXNlZCB0byBwYWludCB0aGUgaW50ZXJpb3IgdGhlIGN1cnJlbnQgb2JqZWN0LiIscmVzdHJpY3Rpb25zOlsibnVtYmVyKDAtMSkiXX0se25hbWU6ImZpbGwtcnVsZSIsdmFsdWVzOlt7bmFtZToiZXZlbm9kZCIsZGVzY3JpcHRpb246IkRldGVybWluZXMgdGhlIOKAmGluc2lkZW5lc3PigJkgb2YgYSBwb2ludCBvbiB0aGUgY2FudmFzIGJ5IGRyYXdpbmcgYSByYXkgZnJvbSB0aGF0IHBvaW50IHRvIGluZmluaXR5IGluIGFueSBkaXJlY3Rpb24gYW5kIGNvdW50aW5nIHRoZSBudW1iZXIgb2YgcGF0aCBzZWdtZW50cyBmcm9tIHRoZSBnaXZlbiBzaGFwZSB0aGF0IHRoZSByYXkgY3Jvc3Nlcy4ifSx7bmFtZToibm9uemVybyIsZGVzY3JpcHRpb246IkRldGVybWluZXMgdGhlIOKAmGluc2lkZW5lc3PigJkgb2YgYSBwb2ludCBvbiB0aGUgY2FudmFzIGJ5IGRyYXdpbmcgYSByYXkgZnJvbSB0aGF0IHBvaW50IHRvIGluZmluaXR5IGluIGFueSBkaXJlY3Rpb24gYW5kIHRoZW4gZXhhbWluaW5nIHRoZSBwbGFjZXMgd2hlcmUgYSBzZWdtZW50IG9mIHRoZSBzaGFwZSBjcm9zc2VzIHRoZSByYXkuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHRoZSBhbGdvcml0aG0gKG9yIHdpbmRpbmcgcnVsZSkgd2hpY2ggaXMgdG8gYmUgdXNlZCB0byBkZXRlcm1pbmUgd2hhdCBwYXJ0cyBvZiB0aGUgY2FudmFzIGFyZSBpbmNsdWRlZCBpbnNpZGUgdGhlIHNoYXBlLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiZmlsdGVyIixicm93c2VyczpbIkUxMiIsIkZGMzUiLCJTOS4xIiwiQzUzIiwiTzQwIl0sdmFsdWVzOlt7bmFtZToibm9uZSIsZGVzY3JpcHRpb246Ik5vIGZpbHRlciBlZmZlY3RzIGFyZSBhcHBsaWVkLiJ9LHtuYW1lOiJibHVyKCkiLGRlc2NyaXB0aW9uOiJBcHBsaWVzIGEgR2F1c3NpYW4gYmx1ciB0byB0aGUgaW5wdXQgaW1hZ2UuIn0se25hbWU6ImJyaWdodG5lc3MoKSIsZGVzY3JpcHRpb246IkFwcGxpZXMgYSBsaW5lYXIgbXVsdGlwbGllciB0byBpbnB1dCBpbWFnZSwgbWFraW5nIGl0IGFwcGVhciBtb3JlIG9yIGxlc3MgYnJpZ2h0LiJ9LHtuYW1lOiJjb250cmFzdCgpIixkZXNjcmlwdGlvbjoiQWRqdXN0cyB0aGUgY29udHJhc3Qgb2YgdGhlIGlucHV0LiJ9LHtuYW1lOiJkcm9wLXNoYWRvdygpIixkZXNjcmlwdGlvbjoiQXBwbGllcyBhIGRyb3Agc2hhZG93IGVmZmVjdCB0byB0aGUgaW5wdXQgaW1hZ2UuIn0se25hbWU6ImdyYXlzY2FsZSgpIixkZXNjcmlwdGlvbjoiQ29udmVydHMgdGhlIGlucHV0IGltYWdlIHRvIGdyYXlzY2FsZS4ifSx7bmFtZToiaHVlLXJvdGF0ZSgpIixkZXNjcmlwdGlvbjoiQXBwbGllcyBhIGh1ZSByb3RhdGlvbiBvbiB0aGUgaW5wdXQgaW1hZ2UuICJ9LHtuYW1lOiJpbnZlcnQoKSIsZGVzY3JpcHRpb246IkludmVydHMgdGhlIHNhbXBsZXMgaW4gdGhlIGlucHV0IGltYWdlLiJ9LHtuYW1lOiJvcGFjaXR5KCkiLGRlc2NyaXB0aW9uOiJBcHBsaWVzIHRyYW5zcGFyZW5jeSB0byB0aGUgc2FtcGxlcyBpbiB0aGUgaW5wdXQgaW1hZ2UuIn0se25hbWU6InNhdHVyYXRlKCkiLGRlc2NyaXB0aW9uOiJTYXR1cmF0ZXMgdGhlIGlucHV0IGltYWdlLiJ9LHtuYW1lOiJzZXBpYSgpIixkZXNjcmlwdGlvbjoiQ29udmVydHMgdGhlIGlucHV0IGltYWdlIHRvIHNlcGlhLiJ9LHtuYW1lOiJ1cmwoKSIsYnJvd3NlcnM6WyJFMTIiLCJGRjM1IiwiUzkuMSIsIkM1MyIsIk80MCJdLGRlc2NyaXB0aW9uOiJBIGZpbHRlciByZWZlcmVuY2UgdG8gYSA8ZmlsdGVyPiBlbGVtZW50LiJ9XSxzeW50YXg6Im5vbmUgfCA8ZmlsdGVyLWZ1bmN0aW9uLWxpc3Q+IixyZWxldmFuY2U6NjYscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2ZpbHRlciJ9XSxkZXNjcmlwdGlvbjoiUHJvY2Vzc2VzIGFuIGVsZW1lbnTigJlzIHJlbmRlcmluZyBiZWZvcmUgaXQgaXMgZGlzcGxheWVkIGluIHRoZSBkb2N1bWVudCwgYnkgYXBwbHlpbmcgb25lIG9yIG1vcmUgZmlsdGVyIGVmZmVjdHMuIixyZXN0cmljdGlvbnM6WyJlbnVtIiwidXJsIl19LHtuYW1lOiJmbGV4Iix2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiUmV0cmlldmVzIHRoZSB2YWx1ZSBvZiB0aGUgbWFpbiBzaXplIHByb3BlcnR5IGFzIHRoZSB1c2VkICdmbGV4LWJhc2lzJy4ifSx7bmFtZToiY29udGVudCIsZGVzY3JpcHRpb246IkluZGljYXRlcyBhdXRvbWF0aWMgc2l6aW5nLCBiYXNlZCBvbiB0aGUgZmxleCBpdGVt4oCZcyBjb250ZW50LiJ9LHtuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiRXhwYW5kcyB0byAnMCAwIGF1dG8nLiJ9XSxzeW50YXg6Im5vbmUgfCBbIDwnZmxleC1ncm93Jz4gPCdmbGV4LXNocmluayc+PyB8fCA8J2ZsZXgtYmFzaXMnPiBdIixyZWxldmFuY2U6ODAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2ZsZXgifV0sZGVzY3JpcHRpb246IlNwZWNpZmllcyB0aGUgY29tcG9uZW50cyBvZiBhIGZsZXhpYmxlIGxlbmd0aDogdGhlIGZsZXggZ3JvdyBmYWN0b3IgYW5kIGZsZXggc2hyaW5rIGZhY3RvciwgYW5kIHRoZSBmbGV4IGJhc2lzLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwibnVtYmVyIiwicGVyY2VudGFnZSJdfSx7bmFtZToiZmxleC1iYXNpcyIsdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IlJldHJpZXZlcyB0aGUgdmFsdWUgb2YgdGhlIG1haW4gc2l6ZSBwcm9wZXJ0eSBhcyB0aGUgdXNlZCAnZmxleC1iYXNpcycuIn0se25hbWU6ImNvbnRlbnQiLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgYXV0b21hdGljIHNpemluZywgYmFzZWQgb24gdGhlIGZsZXggaXRlbeKAmXMgY29udGVudC4ifV0sc3ludGF4OiJjb250ZW50IHwgPCd3aWR0aCc+IixyZWxldmFuY2U6NjUscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2ZsZXgtYmFzaXMifV0sZGVzY3JpcHRpb246IlNldHMgdGhlIGZsZXggYmFzaXMuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJudW1iZXIiLCJwZXJjZW50YWdlIl19LHtuYW1lOiJmbGV4LWRpcmVjdGlvbiIsdmFsdWVzOlt7bmFtZToiY29sdW1uIixkZXNjcmlwdGlvbjoiVGhlIGZsZXggY29udGFpbmVy4oCZcyBtYWluIGF4aXMgaGFzIHRoZSBzYW1lIG9yaWVudGF0aW9uIGFzIHRoZSBibG9jayBheGlzIG9mIHRoZSBjdXJyZW50IHdyaXRpbmcgbW9kZS4ifSx7bmFtZToiY29sdW1uLXJldmVyc2UiLGRlc2NyaXB0aW9uOiJTYW1lIGFzICdjb2x1bW4nLCBleGNlcHQgdGhlIG1haW4tc3RhcnQgYW5kIG1haW4tZW5kIGRpcmVjdGlvbnMgYXJlIHN3YXBwZWQuIn0se25hbWU6InJvdyIsZGVzY3JpcHRpb246IlRoZSBmbGV4IGNvbnRhaW5lcuKAmXMgbWFpbiBheGlzIGhhcyB0aGUgc2FtZSBvcmllbnRhdGlvbiBhcyB0aGUgaW5saW5lIGF4aXMgb2YgdGhlIGN1cnJlbnQgd3JpdGluZyBtb2RlLiJ9LHtuYW1lOiJyb3ctcmV2ZXJzZSIsZGVzY3JpcHRpb246IlNhbWUgYXMgJ3JvdycsIGV4Y2VwdCB0aGUgbWFpbi1zdGFydCBhbmQgbWFpbi1lbmQgZGlyZWN0aW9ucyBhcmUgc3dhcHBlZC4ifV0sc3ludGF4OiJyb3cgfCByb3ctcmV2ZXJzZSB8IGNvbHVtbiB8IGNvbHVtbi1yZXZlcnNlIixyZWxldmFuY2U6ODMscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2ZsZXgtZGlyZWN0aW9uIn1dLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgaG93IGZsZXggaXRlbXMgYXJlIHBsYWNlZCBpbiB0aGUgZmxleCBjb250YWluZXIsIGJ5IHNldHRpbmcgdGhlIGRpcmVjdGlvbiBvZiB0aGUgZmxleCBjb250YWluZXLigJlzIG1haW4gYXhpcy4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6ImZsZXgtZmxvdyIsdmFsdWVzOlt7bmFtZToiY29sdW1uIixkZXNjcmlwdGlvbjoiVGhlIGZsZXggY29udGFpbmVy4oCZcyBtYWluIGF4aXMgaGFzIHRoZSBzYW1lIG9yaWVudGF0aW9uIGFzIHRoZSBibG9jayBheGlzIG9mIHRoZSBjdXJyZW50IHdyaXRpbmcgbW9kZS4ifSx7bmFtZToiY29sdW1uLXJldmVyc2UiLGRlc2NyaXB0aW9uOiJTYW1lIGFzICdjb2x1bW4nLCBleGNlcHQgdGhlIG1haW4tc3RhcnQgYW5kIG1haW4tZW5kIGRpcmVjdGlvbnMgYXJlIHN3YXBwZWQuIn0se25hbWU6Im5vd3JhcCIsZGVzY3JpcHRpb246IlRoZSBmbGV4IGNvbnRhaW5lciBpcyBzaW5nbGUtbGluZS4ifSx7bmFtZToicm93IixkZXNjcmlwdGlvbjoiVGhlIGZsZXggY29udGFpbmVy4oCZcyBtYWluIGF4aXMgaGFzIHRoZSBzYW1lIG9yaWVudGF0aW9uIGFzIHRoZSBpbmxpbmUgYXhpcyBvZiB0aGUgY3VycmVudCB3cml0aW5nIG1vZGUuIn0se25hbWU6InJvdy1yZXZlcnNlIixkZXNjcmlwdGlvbjoiU2FtZSBhcyAncm93JywgZXhjZXB0IHRoZSBtYWluLXN0YXJ0IGFuZCBtYWluLWVuZCBkaXJlY3Rpb25zIGFyZSBzd2FwcGVkLiJ9LHtuYW1lOiJ3cmFwIixkZXNjcmlwdGlvbjoiVGhlIGZsZXhib3ggaXMgbXVsdGktbGluZS4ifSx7bmFtZToid3JhcC1yZXZlcnNlIixkZXNjcmlwdGlvbjoiU2FtZSBhcyAnd3JhcCcsIGV4Y2VwdCB0aGUgY3Jvc3Mtc3RhcnQgYW5kIGNyb3NzLWVuZCBkaXJlY3Rpb25zIGFyZSBzd2FwcGVkLiJ9XSxzeW50YXg6IjwnZmxleC1kaXJlY3Rpb24nPiB8fCA8J2ZsZXgtd3JhcCc+IixyZWxldmFuY2U6NjEscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2ZsZXgtZmxvdyJ9XSxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGhvdyBmbGV4Ym94IGl0ZW1zIGFyZSBwbGFjZWQgaW4gdGhlIGZsZXhib3guIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJmbGV4LWdyb3ciLHN5bnRheDoiPG51bWJlcj4iLHJlbGV2YW5jZTo3NSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvZmxleC1ncm93In1dLGRlc2NyaXB0aW9uOiJTZXRzIHRoZSBmbGV4IGdyb3cgZmFjdG9yLiBOZWdhdGl2ZSBudW1iZXJzIGFyZSBpbnZhbGlkLiIscmVzdHJpY3Rpb25zOlsibnVtYmVyIl19LHtuYW1lOiJmbGV4LXNocmluayIsc3ludGF4OiI8bnVtYmVyPiIscmVsZXZhbmNlOjc0LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9mbGV4LXNocmluayJ9XSxkZXNjcmlwdGlvbjoiU2V0cyB0aGUgZmxleCBzaHJpbmsgZmFjdG9yLiBOZWdhdGl2ZSBudW1iZXJzIGFyZSBpbnZhbGlkLiIscmVzdHJpY3Rpb25zOlsibnVtYmVyIl19LHtuYW1lOiJmbGV4LXdyYXAiLHZhbHVlczpbe25hbWU6Im5vd3JhcCIsZGVzY3JpcHRpb246IlRoZSBmbGV4IGNvbnRhaW5lciBpcyBzaW5nbGUtbGluZS4ifSx7bmFtZToid3JhcCIsZGVzY3JpcHRpb246IlRoZSBmbGV4Ym94IGlzIG11bHRpLWxpbmUuIn0se25hbWU6IndyYXAtcmV2ZXJzZSIsZGVzY3JpcHRpb246IlNhbWUgYXMgJ3dyYXAnLCBleGNlcHQgdGhlIGNyb3NzLXN0YXJ0IGFuZCBjcm9zcy1lbmQgZGlyZWN0aW9ucyBhcmUgc3dhcHBlZC4ifV0sc3ludGF4OiJub3dyYXAgfCB3cmFwIHwgd3JhcC1yZXZlcnNlIixyZWxldmFuY2U6NzkscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2ZsZXgtd3JhcCJ9XSxkZXNjcmlwdGlvbjoiQ29udHJvbHMgd2hldGhlciB0aGUgZmxleCBjb250YWluZXIgaXMgc2luZ2xlLWxpbmUgb3IgbXVsdGktbGluZSwgYW5kIHRoZSBkaXJlY3Rpb24gb2YgdGhlIGNyb3NzLWF4aXMsIHdoaWNoIGRldGVybWluZXMgdGhlIGRpcmVjdGlvbiBuZXcgbGluZXMgYXJlIHN0YWNrZWQgaW4uIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJmbG9hdCIsdmFsdWVzOlt7bmFtZToiaW5saW5lLWVuZCIsZGVzY3JpcHRpb246IkEga2V5d29yZCBpbmRpY2F0aW5nIHRoYXQgdGhlIGVsZW1lbnQgbXVzdCBmbG9hdCBvbiB0aGUgZW5kIHNpZGUgb2YgaXRzIGNvbnRhaW5pbmcgYmxvY2suIFRoYXQgaXMgdGhlIHJpZ2h0IHNpZGUgd2l0aCBsdHIgc2NyaXB0cywgYW5kIHRoZSBsZWZ0IHNpZGUgd2l0aCBydGwgc2NyaXB0cy4ifSx7bmFtZToiaW5saW5lLXN0YXJ0IixkZXNjcmlwdGlvbjoiQSBrZXl3b3JkIGluZGljYXRpbmcgdGhhdCB0aGUgZWxlbWVudCBtdXN0IGZsb2F0IG9uIHRoZSBzdGFydCBzaWRlIG9mIGl0cyBjb250YWluaW5nIGJsb2NrLiBUaGF0IGlzIHRoZSBsZWZ0IHNpZGUgd2l0aCBsdHIgc2NyaXB0cywgYW5kIHRoZSByaWdodCBzaWRlIHdpdGggcnRsIHNjcmlwdHMuIn0se25hbWU6ImxlZnQiLGRlc2NyaXB0aW9uOiJUaGUgZWxlbWVudCBnZW5lcmF0ZXMgYSBibG9jayBib3ggdGhhdCBpcyBmbG9hdGVkIHRvIHRoZSBsZWZ0LiBDb250ZW50IGZsb3dzIG9uIHRoZSByaWdodCBzaWRlIG9mIHRoZSBib3gsIHN0YXJ0aW5nIGF0IHRoZSB0b3AgKHN1YmplY3QgdG8gdGhlICdjbGVhcicgcHJvcGVydHkpLiJ9LHtuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiVGhlIGJveCBpcyBub3QgZmxvYXRlZC4ifSx7bmFtZToicmlnaHQiLGRlc2NyaXB0aW9uOiJTaW1pbGFyIHRvICdsZWZ0JywgZXhjZXB0IHRoZSBib3ggaXMgZmxvYXRlZCB0byB0aGUgcmlnaHQsIGFuZCBjb250ZW50IGZsb3dzIG9uIHRoZSBsZWZ0IHNpZGUgb2YgdGhlIGJveCwgc3RhcnRpbmcgYXQgdGhlIHRvcC4ifV0sc3ludGF4OiJsZWZ0IHwgcmlnaHQgfCBub25lIHwgaW5saW5lLXN0YXJ0IHwgaW5saW5lLWVuZCIscmVsZXZhbmNlOjkxLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9mbG9hdCJ9XSxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGhvdyBhIGJveCBzaG91bGQgYmUgZmxvYXRlZC4gSXQgbWF5IGJlIHNldCBmb3IgYW55IGVsZW1lbnQsIGJ1dCBvbmx5IGFwcGxpZXMgdG8gZWxlbWVudHMgdGhhdCBnZW5lcmF0ZSBib3hlcyB0aGF0IGFyZSBub3QgYWJzb2x1dGVseSBwb3NpdGlvbmVkLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiZmxvb2QtY29sb3IiLGJyb3dzZXJzOlsiRSIsIkM1IiwiRkYzIiwiSUUxMCIsIk85IiwiUzYiXSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkluZGljYXRlcyB3aGF0IGNvbG9yIHRvIHVzZSB0byBmbG9vZCB0aGUgY3VycmVudCBmaWx0ZXIgcHJpbWl0aXZlIHN1YnJlZ2lvbi4iLHJlc3RyaWN0aW9uczpbImNvbG9yIl19LHtuYW1lOiJmbG9vZC1vcGFjaXR5Iixicm93c2VyczpbIkUiLCJDNSIsIkZGMyIsIklFMTAiLCJPOSIsIlM2Il0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgd2hhdCBvcGFjaXR5IHRvIHVzZSB0byBmbG9vZCB0aGUgY3VycmVudCBmaWx0ZXIgcHJpbWl0aXZlIHN1YnJlZ2lvbi4iLHJlc3RyaWN0aW9uczpbIm51bWJlcigwLTEpIiwicGVyY2VudGFnZSJdfSx7bmFtZToiZm9udCIsdmFsdWVzOlt7bmFtZToiMTAwIixkZXNjcmlwdGlvbjoiVGhpbiJ9LHtuYW1lOiIyMDAiLGRlc2NyaXB0aW9uOiJFeHRyYSBMaWdodCAoVWx0cmEgTGlnaHQpIn0se25hbWU6IjMwMCIsZGVzY3JpcHRpb246IkxpZ2h0In0se25hbWU6IjQwMCIsZGVzY3JpcHRpb246Ik5vcm1hbCJ9LHtuYW1lOiI1MDAiLGRlc2NyaXB0aW9uOiJNZWRpdW0ifSx7bmFtZToiNjAwIixkZXNjcmlwdGlvbjoiU2VtaSBCb2xkIChEZW1pIEJvbGQpIn0se25hbWU6IjcwMCIsZGVzY3JpcHRpb246IkJvbGQifSx7bmFtZToiODAwIixkZXNjcmlwdGlvbjoiRXh0cmEgQm9sZCAoVWx0cmEgQm9sZCkifSx7bmFtZToiOTAwIixkZXNjcmlwdGlvbjoiQmxhY2sgKEhlYXZ5KSJ9LHtuYW1lOiJib2xkIixkZXNjcmlwdGlvbjoiU2FtZSBhcyA3MDAifSx7bmFtZToiYm9sZGVyIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHRoZSB3ZWlnaHQgb2YgdGhlIGZhY2UgYm9sZGVyIHRoYW4gdGhlIGluaGVyaXRlZCB2YWx1ZS4ifSx7bmFtZToiY2FwdGlvbiIsZGVzY3JpcHRpb246IlRoZSBmb250IHVzZWQgZm9yIGNhcHRpb25lZCBjb250cm9scyAoZS5nLiwgYnV0dG9ucywgZHJvcC1kb3ducywgZXRjLikuIn0se25hbWU6Imljb24iLGRlc2NyaXB0aW9uOiJUaGUgZm9udCB1c2VkIHRvIGxhYmVsIGljb25zLiJ9LHtuYW1lOiJpdGFsaWMiLGRlc2NyaXB0aW9uOiJTZWxlY3RzIGEgZm9udCB0aGF0IGlzIGxhYmVsZWQgJ2l0YWxpYycsIG9yLCBpZiB0aGF0IGlzIG5vdCBhdmFpbGFibGUsIG9uZSBsYWJlbGVkICdvYmxpcXVlJy4ifSx7bmFtZToibGFyZ2UifSx7bmFtZToibGFyZ2VyIn0se25hbWU6ImxpZ2h0ZXIiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgdGhlIHdlaWdodCBvZiB0aGUgZmFjZSBsaWdodGVyIHRoYW4gdGhlIGluaGVyaXRlZCB2YWx1ZS4ifSx7bmFtZToibWVkaXVtIn0se25hbWU6Im1lbnUiLGRlc2NyaXB0aW9uOiJUaGUgZm9udCB1c2VkIGluIG1lbnVzIChlLmcuLCBkcm9wZG93biBtZW51cyBhbmQgbWVudSBsaXN0cykuIn0se25hbWU6Im1lc3NhZ2UtYm94IixkZXNjcmlwdGlvbjoiVGhlIGZvbnQgdXNlZCBpbiBkaWFsb2cgYm94ZXMuIn0se25hbWU6Im5vcm1hbCIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIGZhY2UgdGhhdCBpcyBub3QgbGFiZWxlZCBhcyBhIHNtYWxsLWNhcHMgZm9udC4ifSx7bmFtZToib2JsaXF1ZSIsZGVzY3JpcHRpb246IlNlbGVjdHMgYSBmb250IHRoYXQgaXMgbGFiZWxlZCAnb2JsaXF1ZScuIn0se25hbWU6InNtYWxsIn0se25hbWU6InNtYWxsLWNhcHMiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSBmb250IHRoYXQgaXMgbGFiZWxlZCBhcyBhIHNtYWxsLWNhcHMgZm9udC4gSWYgYSBnZW51aW5lIHNtYWxsLWNhcHMgZm9udCBpcyBub3QgYXZhaWxhYmxlLCB1c2VyIGFnZW50cyBzaG91bGQgc2ltdWxhdGUgYSBzbWFsbC1jYXBzIGZvbnQuIn0se25hbWU6InNtYWxsLWNhcHRpb24iLGRlc2NyaXB0aW9uOiJUaGUgZm9udCB1c2VkIGZvciBsYWJlbGluZyBzbWFsbCBjb250cm9scy4ifSx7bmFtZToic21hbGxlciJ9LHtuYW1lOiJzdGF0dXMtYmFyIixkZXNjcmlwdGlvbjoiVGhlIGZvbnQgdXNlZCBpbiB3aW5kb3cgc3RhdHVzIGJhcnMuIn0se25hbWU6IngtbGFyZ2UifSx7bmFtZToieC1zbWFsbCJ9LHtuYW1lOiJ4eC1sYXJnZSJ9LHtuYW1lOiJ4eC1zbWFsbCJ9XSxzeW50YXg6IlsgWyA8J2ZvbnQtc3R5bGUnPiB8fCA8Zm9udC12YXJpYW50LWNzczIxPiB8fCA8J2ZvbnQtd2VpZ2h0Jz4gfHwgPCdmb250LXN0cmV0Y2gnPiBdPyA8J2ZvbnQtc2l6ZSc+IFsgLyA8J2xpbmUtaGVpZ2h0Jz4gXT8gPCdmb250LWZhbWlseSc+IF0gfCBjYXB0aW9uIHwgaWNvbiB8IG1lbnUgfCBtZXNzYWdlLWJveCB8IHNtYWxsLWNhcHRpb24gfCBzdGF0dXMtYmFyIixyZWxldmFuY2U6ODQscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2ZvbnQifV0sZGVzY3JpcHRpb246IlNob3J0aGFuZCBwcm9wZXJ0eSBmb3Igc2V0dGluZyAnZm9udC1zdHlsZScsICdmb250LXZhcmlhbnQnLCAnZm9udC13ZWlnaHQnLCAnZm9udC1zaXplJywgJ2xpbmUtaGVpZ2h0JywgYW5kICdmb250LWZhbWlseScsIGF0IHRoZSBzYW1lIHBsYWNlIGluIHRoZSBzdHlsZSBzaGVldC4gVGhlIHN5bnRheCBvZiB0aGlzIHByb3BlcnR5IGlzIGJhc2VkIG9uIGEgdHJhZGl0aW9uYWwgdHlwb2dyYXBoaWNhbCBzaG9ydGhhbmQgbm90YXRpb24gdG8gc2V0IG11bHRpcGxlIHByb3BlcnRpZXMgcmVsYXRlZCB0byBmb250cy4iLHJlc3RyaWN0aW9uczpbImZvbnQiXX0se25hbWU6ImZvbnQtZmFtaWx5Iix2YWx1ZXM6W3tuYW1lOiItYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsICdTZWdvZSBVSScsIFJvYm90bywgT3h5Z2VuLCBVYnVudHUsIENhbnRhcmVsbCwgJ09wZW4gU2FucycsICdIZWx2ZXRpY2EgTmV1ZScsIHNhbnMtc2VyaWYifSx7bmFtZToiQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZiJ9LHtuYW1lOiJDYW1icmlhLCBDb2NoaW4sIEdlb3JnaWEsIFRpbWVzLCAnVGltZXMgTmV3IFJvbWFuJywgc2VyaWYifSx7bmFtZToiJ0NvdXJpZXIgTmV3JywgQ291cmllciwgbW9ub3NwYWNlIn0se25hbWU6ImN1cnNpdmUifSx7bmFtZToiZmFudGFzeSJ9LHtuYW1lOiInRnJhbmtsaW4gR290aGljIE1lZGl1bScsICdBcmlhbCBOYXJyb3cnLCBBcmlhbCwgc2Fucy1zZXJpZiJ9LHtuYW1lOiJHZW9yZ2lhLCAnVGltZXMgTmV3IFJvbWFuJywgVGltZXMsIHNlcmlmIn0se25hbWU6IidHaWxsIFNhbnMnLCAnR2lsbCBTYW5zIE1UJywgQ2FsaWJyaSwgJ1RyZWJ1Y2hldCBNUycsIHNhbnMtc2VyaWYifSx7bmFtZToiSW1wYWN0LCBIYWV0dGVuc2Nod2VpbGVyLCAnQXJpYWwgTmFycm93IEJvbGQnLCBzYW5zLXNlcmlmIn0se25hbWU6IidMdWNpZGEgU2FucycsICdMdWNpZGEgU2FucyBSZWd1bGFyJywgJ0x1Y2lkYSBHcmFuZGUnLCAnTHVjaWRhIFNhbnMgVW5pY29kZScsIEdlbmV2YSwgVmVyZGFuYSwgc2Fucy1zZXJpZiJ9LHtuYW1lOiJtb25vc3BhY2UifSx7bmFtZToic2Fucy1zZXJpZiJ9LHtuYW1lOiInU2Vnb2UgVUknLCBUYWhvbWEsIEdlbmV2YSwgVmVyZGFuYSwgc2Fucy1zZXJpZiJ9LHtuYW1lOiJzZXJpZiJ9LHtuYW1lOiInVGltZXMgTmV3IFJvbWFuJywgVGltZXMsIHNlcmlmIn0se25hbWU6IidUcmVidWNoZXQgTVMnLCAnTHVjaWRhIFNhbnMgVW5pY29kZScsICdMdWNpZGEgR3JhbmRlJywgJ0x1Y2lkYSBTYW5zJywgQXJpYWwsIHNhbnMtc2VyaWYifSx7bmFtZToiVmVyZGFuYSwgR2VuZXZhLCBUYWhvbWEsIHNhbnMtc2VyaWYifV0sc3ludGF4OiI8ZmFtaWx5LW5hbWU+IixyZWxldmFuY2U6OTQscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2ZvbnQtZmFtaWx5In1dLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSBwcmlvcml0aXplZCBsaXN0IG9mIGZvbnQgZmFtaWx5IG5hbWVzIG9yIGdlbmVyaWMgZmFtaWx5IG5hbWVzLiBBIHVzZXIgYWdlbnQgaXRlcmF0ZXMgdGhyb3VnaCB0aGUgbGlzdCBvZiBmYW1pbHkgbmFtZXMgdW50aWwgaXQgbWF0Y2hlcyBhbiBhdmFpbGFibGUgZm9udCB0aGF0IGNvbnRhaW5zIGEgZ2x5cGggZm9yIHRoZSBjaGFyYWN0ZXIgdG8gYmUgcmVuZGVyZWQuIixyZXN0cmljdGlvbnM6WyJmb250Il19LHtuYW1lOiJmb250LWZlYXR1cmUtc2V0dGluZ3MiLHZhbHVlczpbe25hbWU6JyJhYWx0IicsZGVzY3JpcHRpb246IkFjY2VzcyBBbGwgQWx0ZXJuYXRlcy4ifSx7bmFtZTonImFidmYiJyxkZXNjcmlwdGlvbjoiQWJvdmUtYmFzZSBGb3Jtcy4gUmVxdWlyZWQgaW4gS2htZXIgc2NyaXB0LiJ9LHtuYW1lOiciYWJ2bSInLGRlc2NyaXB0aW9uOiJBYm92ZS1iYXNlIE1hcmsgUG9zaXRpb25pbmcuIFJlcXVpcmVkIGluIEluZGljIHNjcmlwdHMuIn0se25hbWU6JyJhYnZzIicsZGVzY3JpcHRpb246IkFib3ZlLWJhc2UgU3Vic3RpdHV0aW9ucy4gUmVxdWlyZWQgaW4gSW5kaWMgc2NyaXB0cy4ifSx7bmFtZTonImFmcmMiJyxkZXNjcmlwdGlvbjoiQWx0ZXJuYXRpdmUgRnJhY3Rpb25zLiJ9LHtuYW1lOiciYWtobiInLGRlc2NyaXB0aW9uOiJBa2hhbmQuIFJlcXVpcmVkIGluIG1vc3QgSW5kaWMgc2NyaXB0cy4ifSx7bmFtZTonImJsd2YiJyxkZXNjcmlwdGlvbjoiQmVsb3ctYmFzZSBGb3JtLiBSZXF1aXJlZCBpbiBhIG51bWJlciBvZiBJbmRpYyBzY3JpcHRzLiJ9LHtuYW1lOiciYmx3bSInLGRlc2NyaXB0aW9uOiJCZWxvdy1iYXNlIE1hcmsgUG9zaXRpb25pbmcuIFJlcXVpcmVkIGluIEluZGljIHNjcmlwdHMuIn0se25hbWU6JyJibHdzIicsZGVzY3JpcHRpb246IkJlbG93LWJhc2UgU3Vic3RpdHV0aW9ucy4gUmVxdWlyZWQgaW4gSW5kaWMgc2NyaXB0cy4ifSx7bmFtZTonImNhbHQiJyxkZXNjcmlwdGlvbjoiQ29udGV4dHVhbCBBbHRlcm5hdGVzLiJ9LHtuYW1lOiciY2FzZSInLGRlc2NyaXB0aW9uOiJDYXNlLVNlbnNpdGl2ZSBGb3Jtcy4gQXBwbGllcyBvbmx5IHRvIEV1cm9wZWFuIHNjcmlwdHM7IHBhcnRpY3VsYXJseSBwcm9taW5lbnQgaW4gU3BhbmlzaC1sYW5ndWFnZSBzZXR0aW5nLiJ9LHtuYW1lOiciY2NtcCInLGRlc2NyaXB0aW9uOiJHbHlwaCBDb21wb3NpdGlvbi9EZWNvbXBvc2l0aW9uLiJ9LHtuYW1lOiciY2ZhciInLGRlc2NyaXB0aW9uOiJDb25qdW5jdCBGb3JtIEFmdGVyIFJvLiBSZXF1aXJlZCBpbiBLaG1lciBzY3JpcHRzLiJ9LHtuYW1lOiciY2pjdCInLGRlc2NyaXB0aW9uOiJDb25qdW5jdCBGb3Jtcy4gUmVxdWlyZWQgaW4gSW5kaWMgc2NyaXB0cyB0aGF0IHNob3cgc2ltaWxhcml0eSB0byBEZXZhbmFnYXJpLiJ9LHtuYW1lOiciY2xpZyInLGRlc2NyaXB0aW9uOiJDb250ZXh0dWFsIExpZ2F0dXJlcy4ifSx7bmFtZTonImNwY3QiJyxkZXNjcmlwdGlvbjoiQ2VudGVyZWQgQ0pLIFB1bmN0dWF0aW9uLiBVc2VkIHByaW1hcmlseSBpbiBDaGluZXNlIGZvbnRzLiJ9LHtuYW1lOiciY3BzcCInLGRlc2NyaXB0aW9uOiJDYXBpdGFsIFNwYWNpbmcuIFNob3VsZCBub3QgYmUgdXNlZCBpbiBjb25uZWN0aW5nIHNjcmlwdHMgKGUuZy4gbW9zdCBBcmFiaWMpLiJ9LHtuYW1lOiciY3N3aCInLGRlc2NyaXB0aW9uOiJDb250ZXh0dWFsIFN3YXNoLiJ9LHtuYW1lOiciY3VycyInLGRlc2NyaXB0aW9uOiJDdXJzaXZlIFBvc2l0aW9uaW5nLiBDYW4gYmUgdXNlZCBpbiBhbnkgY3Vyc2l2ZSBzY3JpcHQuIn0se25hbWU6JyJjMnBjIicsZGVzY3JpcHRpb246IlBldGl0ZSBDYXBpdGFscyBGcm9tIENhcGl0YWxzLiBBcHBsaWVzIG9ubHkgdG8gYmljYW1lcmFsIHNjcmlwdHMuIn0se25hbWU6JyJjMnNjIicsZGVzY3JpcHRpb246IlNtYWxsIENhcGl0YWxzIEZyb20gQ2FwaXRhbHMuIEFwcGxpZXMgb25seSB0byBiaWNhbWVyYWwgc2NyaXB0cy4ifSx7bmFtZTonImRpc3QiJyxkZXNjcmlwdGlvbjoiRGlzdGFuY2VzLiBSZXF1aXJlZCBpbiBJbmRpYyBzY3JpcHRzLiJ9LHtuYW1lOiciZGxpZyInLGRlc2NyaXB0aW9uOiJEaXNjcmV0aW9uYXJ5IGxpZ2F0dXJlcy4ifSx7bmFtZTonImRub20iJyxkZXNjcmlwdGlvbjoiRGVub21pbmF0b3JzLiJ9LHtuYW1lOiciZHRscyInLGRlc2NyaXB0aW9uOiJEb3RsZXNzIEZvcm1zLiBBcHBsaWVkIHRvIG1hdGggZm9ybXVsYSBsYXlvdXQuIn0se25hbWU6JyJleHB0IicsZGVzY3JpcHRpb246IkV4cGVydCBGb3Jtcy4gQXBwbGllcyBvbmx5IHRvIEphcGFuZXNlLiJ9LHtuYW1lOiciZmFsdCInLGRlc2NyaXB0aW9uOiJGaW5hbCBHbHlwaCBvbiBMaW5lIEFsdGVybmF0ZXMuIENhbiBiZSB1c2VkIGluIGFueSBjdXJzaXZlIHNjcmlwdC4ifSx7bmFtZTonImZpbjIiJyxkZXNjcmlwdGlvbjoiVGVybWluYWwgRm9ybSAjMi4gVXNlZCBvbmx5IHdpdGggdGhlIFN5cmlhYyBzY3JpcHQuIn0se25hbWU6JyJmaW4zIicsZGVzY3JpcHRpb246IlRlcm1pbmFsIEZvcm0gIzMuIFVzZWQgb25seSB3aXRoIHRoZSBTeXJpYWMgc2NyaXB0LiJ9LHtuYW1lOiciZmluYSInLGRlc2NyaXB0aW9uOiJUZXJtaW5hbCBGb3Jtcy4gQ2FuIGJlIHVzZWQgaW4gYW55IGFscGhhYmV0aWMgc2NyaXB0LiJ9LHtuYW1lOiciZmxhYyInLGRlc2NyaXB0aW9uOiJGbGF0dGVuZWQgYXNjZW50IGZvcm1zLiBBcHBsaWVkIHRvIG1hdGggZm9ybXVsYSBsYXlvdXQuIn0se25hbWU6JyJmcmFjIicsZGVzY3JpcHRpb246IkZyYWN0aW9ucy4ifSx7bmFtZTonImZ3aWQiJyxkZXNjcmlwdGlvbjoiRnVsbCBXaWR0aHMuIEFwcGxpZXMgdG8gYW55IHNjcmlwdCB3aGljaCBjYW4gdXNlIG1vbm9zcGFjZWQgZm9ybXMuIn0se25hbWU6JyJoYWxmIicsZGVzY3JpcHRpb246IkhhbGYgRm9ybXMuIFJlcXVpcmVkIGluIEluZGljIHNjcmlwdHMgdGhhdCBzaG93IHNpbWlsYXJpdHkgdG8gRGV2YW5hZ2FyaS4ifSx7bmFtZTonImhhbG4iJyxkZXNjcmlwdGlvbjoiSGFsYW50IEZvcm1zLiBSZXF1aXJlZCBpbiBJbmRpYyBzY3JpcHRzLiJ9LHtuYW1lOiciaGFsdCInLGRlc2NyaXB0aW9uOiJBbHRlcm5hdGUgSGFsZiBXaWR0aHMuIFVzZWQgb25seSBpbiBDSktWIGZvbnRzLiJ9LHtuYW1lOiciaGlzdCInLGRlc2NyaXB0aW9uOiJIaXN0b3JpY2FsIEZvcm1zLiJ9LHtuYW1lOiciaGtuYSInLGRlc2NyaXB0aW9uOiJIb3Jpem9udGFsIEthbmEgQWx0ZXJuYXRlcy4gQXBwbGllcyBvbmx5IHRvIGZvbnRzIHRoYXQgc3VwcG9ydCBrYW5hIChoaXJhZ2FuYSBhbmQga2F0YWthbmEpLiJ9LHtuYW1lOiciaGxpZyInLGRlc2NyaXB0aW9uOiJIaXN0b3JpY2FsIExpZ2F0dXJlcy4ifSx7bmFtZTonImhuZ2wiJyxkZXNjcmlwdGlvbjoiSGFuZ3VsLiBLb3JlYW4gb25seS4ifSx7bmFtZTonImhvam8iJyxkZXNjcmlwdGlvbjoiSG9qbyBLYW5qaSBGb3JtcyAoSklTIFggMDIxMi0xOTkwIEthbmppIEZvcm1zKS4gVXNlZCBvbmx5IHdpdGggS2Fuamkgc2NyaXB0LiJ9LHtuYW1lOiciaHdpZCInLGRlc2NyaXB0aW9uOiJIYWxmIFdpZHRocy4gR2VuZXJhbGx5IHVzZWQgb25seSBpbiBDSktWIGZvbnRzLiJ9LHtuYW1lOiciaW5pdCInLGRlc2NyaXB0aW9uOiJJbml0aWFsIEZvcm1zLiBDYW4gYmUgdXNlZCBpbiBhbnkgYWxwaGFiZXRpYyBzY3JpcHQuIn0se25hbWU6JyJpc29sIicsZGVzY3JpcHRpb246Iklzb2xhdGVkIEZvcm1zLiBDYW4gYmUgdXNlZCBpbiBhbnkgY3Vyc2l2ZSBzY3JpcHQuIn0se25hbWU6JyJpdGFsIicsZGVzY3JpcHRpb246Ikl0YWxpY3MuIEFwcGxpZXMgbW9zdGx5IHRvIExhdGluOyBub3RlIHRoYXQgbWFueSBub24tTGF0aW4gZm9udHMgY29udGFpbiBMYXRpbiBhcyB3ZWxsLiJ9LHtuYW1lOiciamFsdCInLGRlc2NyaXB0aW9uOiJKdXN0aWZpY2F0aW9uIEFsdGVybmF0ZXMuIENhbiBiZSB1c2VkIGluIGFueSBjdXJzaXZlIHNjcmlwdC4ifSx7bmFtZTonImpwNzgiJyxkZXNjcmlwdGlvbjoiSklTNzggRm9ybXMuIEFwcGxpZXMgb25seSB0byBKYXBhbmVzZS4ifSx7bmFtZTonImpwODMiJyxkZXNjcmlwdGlvbjoiSklTODMgRm9ybXMuIEFwcGxpZXMgb25seSB0byBKYXBhbmVzZS4ifSx7bmFtZTonImpwOTAiJyxkZXNjcmlwdGlvbjoiSklTOTAgRm9ybXMuIEFwcGxpZXMgb25seSB0byBKYXBhbmVzZS4ifSx7bmFtZTonImpwMDQiJyxkZXNjcmlwdGlvbjoiSklTMjAwNCBGb3Jtcy4gQXBwbGllcyBvbmx5IHRvIEphcGFuZXNlLiJ9LHtuYW1lOicia2VybiInLGRlc2NyaXB0aW9uOiJLZXJuaW5nLiJ9LHtuYW1lOicibGZiZCInLGRlc2NyaXB0aW9uOiJMZWZ0IEJvdW5kcy4ifSx7bmFtZTonImxpZ2EiJyxkZXNjcmlwdGlvbjoiU3RhbmRhcmQgTGlnYXR1cmVzLiJ9LHtuYW1lOicibGptbyInLGRlc2NyaXB0aW9uOiJMZWFkaW5nIEphbW8gRm9ybXMuIFJlcXVpcmVkIGZvciBIYW5ndWwgc2NyaXB0IHdoZW4gQW5jaWVudCBIYW5ndWwgd3JpdGluZyBzeXN0ZW0gaXMgc3VwcG9ydGVkLiJ9LHtuYW1lOicibG51bSInLGRlc2NyaXB0aW9uOiJMaW5pbmcgRmlndXJlcy4ifSx7bmFtZTonImxvY2wiJyxkZXNjcmlwdGlvbjoiTG9jYWxpemVkIEZvcm1zLiJ9LHtuYW1lOicibHRyYSInLGRlc2NyaXB0aW9uOiJMZWZ0LXRvLXJpZ2h0IGdseXBoIGFsdGVybmF0ZXMuIn0se25hbWU6JyJsdHJtIicsZGVzY3JpcHRpb246IkxlZnQtdG8tcmlnaHQgbWlycm9yZWQgZm9ybXMuIn0se25hbWU6JyJtYXJrIicsZGVzY3JpcHRpb246Ik1hcmsgUG9zaXRpb25pbmcuIn0se25hbWU6JyJtZWQyIicsZGVzY3JpcHRpb246Ik1lZGlhbCBGb3JtICMyLiBVc2VkIG9ubHkgd2l0aCB0aGUgU3lyaWFjIHNjcmlwdC4ifSx7bmFtZTonIm1lZGkiJyxkZXNjcmlwdGlvbjoiTWVkaWFsIEZvcm1zLiJ9LHtuYW1lOicibWdyayInLGRlc2NyaXB0aW9uOiJNYXRoZW1hdGljYWwgR3JlZWsuIn0se25hbWU6JyJta21rIicsZGVzY3JpcHRpb246Ik1hcmsgdG8gTWFyayBQb3NpdGlvbmluZy4ifSx7bmFtZTonIm5hbHQiJyxkZXNjcmlwdGlvbjoiQWx0ZXJuYXRlIEFubm90YXRpb24gRm9ybXMuIn0se25hbWU6JyJubGNrIicsZGVzY3JpcHRpb246Ik5MQyBLYW5qaSBGb3Jtcy4gVXNlZCBvbmx5IHdpdGggS2Fuamkgc2NyaXB0LiJ9LHtuYW1lOicibnVrdCInLGRlc2NyaXB0aW9uOiJOdWt0YSBGb3Jtcy4gUmVxdWlyZWQgaW4gSW5kaWMgc2NyaXB0cy4uIn0se25hbWU6JyJudW1yIicsZGVzY3JpcHRpb246Ik51bWVyYXRvcnMuIn0se25hbWU6JyJvbnVtIicsZGVzY3JpcHRpb246Ik9sZHN0eWxlIEZpZ3VyZXMuIn0se25hbWU6JyJvcGJkIicsZGVzY3JpcHRpb246Ik9wdGljYWwgQm91bmRzLiJ9LHtuYW1lOicib3JkbiInLGRlc2NyaXB0aW9uOiJPcmRpbmFscy4gQXBwbGllcyBtb3N0bHkgdG8gTGF0aW4gc2NyaXB0LiJ9LHtuYW1lOicib3JubSInLGRlc2NyaXB0aW9uOiJPcm5hbWVudHMuIn0se25hbWU6JyJwYWx0IicsZGVzY3JpcHRpb246IlByb3BvcnRpb25hbCBBbHRlcm5hdGUgV2lkdGhzLiBVc2VkIG1vc3RseSBpbiBDSktWIGZvbnRzLiJ9LHtuYW1lOicicGNhcCInLGRlc2NyaXB0aW9uOiJQZXRpdGUgQ2FwaXRhbHMuIn0se25hbWU6JyJwa25hIicsZGVzY3JpcHRpb246IlByb3BvcnRpb25hbCBLYW5hLiBHZW5lcmFsbHkgdXNlZCBvbmx5IGluIEphcGFuZXNlIGZvbnRzLiJ9LHtuYW1lOicicG51bSInLGRlc2NyaXB0aW9uOiJQcm9wb3J0aW9uYWwgRmlndXJlcy4ifSx7bmFtZTonInByZWYiJyxkZXNjcmlwdGlvbjoiUHJlLWJhc2UgRm9ybXMuIFJlcXVpcmVkIGluIEtobWVyIGFuZCBNeWFubWFyIChCdXJtZXNlKSBzY3JpcHRzIGFuZCBzb3V0aGVybiBJbmRpYyBzY3JpcHRzIHRoYXQgbWF5IGRpc3BsYXkgYSBwcmUtYmFzZSBmb3JtIG9mIFJhLiJ9LHtuYW1lOicicHJlcyInLGRlc2NyaXB0aW9uOiJQcmUtYmFzZSBTdWJzdGl0dXRpb25zLiBSZXF1aXJlZCBpbiBJbmRpYyBzY3JpcHRzLiJ9LHtuYW1lOicicHN0ZiInLGRlc2NyaXB0aW9uOiJQb3N0LWJhc2UgRm9ybXMuIFJlcXVpcmVkIGluIHNjcmlwdHMgb2Ygc291dGggYW5kIHNvdXRoZWFzdCBBc2lhIHRoYXQgaGF2ZSBwb3N0LWJhc2UgZm9ybXMgZm9yIGNvbnNvbmFudHMgZWc6IEd1cm11a2hpLCBNYWxheWFsYW0sIEtobWVyLiJ9LHtuYW1lOicicHN0cyInLGRlc2NyaXB0aW9uOiJQb3N0LWJhc2UgU3Vic3RpdHV0aW9ucy4ifSx7bmFtZTonInB3aWQiJyxkZXNjcmlwdGlvbjoiUHJvcG9ydGlvbmFsIFdpZHRocy4ifSx7bmFtZTonInF3aWQiJyxkZXNjcmlwdGlvbjoiUXVhcnRlciBXaWR0aHMuIEdlbmVyYWxseSB1c2VkIG9ubHkgaW4gQ0pLViBmb250cy4ifSx7bmFtZTonInJhbmQiJyxkZXNjcmlwdGlvbjoiUmFuZG9taXplLiJ9LHtuYW1lOicicmNsdCInLGRlc2NyaXB0aW9uOiJSZXF1aXJlZCBDb250ZXh0dWFsIEFsdGVybmF0ZXMuIE1heSBhcHBseSB0byBhbnkgc2NyaXB0LCBidXQgaXMgZXNwZWNpYWxseSBpbXBvcnRhbnQgZm9yIG1hbnkgc3R5bGVzIG9mIEFyYWJpYy4ifSx7bmFtZTonInJsaWciJyxkZXNjcmlwdGlvbjoiUmVxdWlyZWQgTGlnYXR1cmVzLiBBcHBsaWVzIHRvIEFyYWJpYyBhbmQgU3lyaWFjLiBNYXkgYXBwbHkgdG8gc29tZSBvdGhlciBzY3JpcHRzLiJ9LHtuYW1lOicicmtyZiInLGRlc2NyaXB0aW9uOiJSYWthciBGb3Jtcy4gUmVxdWlyZWQgaW4gRGV2YW5hZ2FyaSBhbmQgR3VqYXJhdGkgc2NyaXB0cy4ifSx7bmFtZTonInJwaGYiJyxkZXNjcmlwdGlvbjoiUmVwaCBGb3JtLiBSZXF1aXJlZCBpbiBJbmRpYyBzY3JpcHRzLiBFLmcuIERldmFuYWdhcmksIEthbm5hZGEuIn0se25hbWU6JyJydGJkIicsZGVzY3JpcHRpb246IlJpZ2h0IEJvdW5kcy4ifSx7bmFtZTonInJ0bGEiJyxkZXNjcmlwdGlvbjoiUmlnaHQtdG8tbGVmdCBhbHRlcm5hdGVzLiJ9LHtuYW1lOicicnRsbSInLGRlc2NyaXB0aW9uOiJSaWdodC10by1sZWZ0IG1pcnJvcmVkIGZvcm1zLiJ9LHtuYW1lOicicnVieSInLGRlc2NyaXB0aW9uOiJSdWJ5IE5vdGF0aW9uIEZvcm1zLiBBcHBsaWVzIG9ubHkgdG8gSmFwYW5lc2UuIn0se25hbWU6JyJzYWx0IicsZGVzY3JpcHRpb246IlN0eWxpc3RpYyBBbHRlcm5hdGVzLiJ9LHtuYW1lOicic2luZiInLGRlc2NyaXB0aW9uOiJTY2llbnRpZmljIEluZmVyaW9ycy4ifSx7bmFtZTonInNpemUiJyxkZXNjcmlwdGlvbjoiT3B0aWNhbCBzaXplLiJ9LHtuYW1lOicic21jcCInLGRlc2NyaXB0aW9uOiJTbWFsbCBDYXBpdGFscy4gQXBwbGllcyBvbmx5IHRvIGJpY2FtZXJhbCBzY3JpcHRzLiJ9LHtuYW1lOicic21wbCInLGRlc2NyaXB0aW9uOiJTaW1wbGlmaWVkIEZvcm1zLiBBcHBsaWVzIG9ubHkgdG8gQ2hpbmVzZSBhbmQgSmFwYW5lc2UuIn0se25hbWU6JyJzc3R5IicsZGVzY3JpcHRpb246Ik1hdGggc2NyaXB0IHN0eWxlIGFsdGVybmF0ZXMuIn0se25hbWU6JyJzdGNoIicsZGVzY3JpcHRpb246IlN0cmV0Y2hpbmcgR2x5cGggRGVjb21wb3NpdGlvbi4ifSx7bmFtZTonInN1YnMiJyxkZXNjcmlwdGlvbjoiU3Vic2NyaXB0LiJ9LHtuYW1lOicic3VwcyInLGRlc2NyaXB0aW9uOiJTdXBlcnNjcmlwdC4ifSx7bmFtZTonInN3c2giJyxkZXNjcmlwdGlvbjoiU3dhc2guIERvZXMgbm90IGFwcGx5IHRvIGlkZW9ncmFwaGljIHNjcmlwdHMuIn0se25hbWU6JyJ0aXRsIicsZGVzY3JpcHRpb246IlRpdGxpbmcuIn0se25hbWU6JyJ0am1vIicsZGVzY3JpcHRpb246IlRyYWlsaW5nIEphbW8gRm9ybXMuIFJlcXVpcmVkIGZvciBIYW5ndWwgc2NyaXB0IHdoZW4gQW5jaWVudCBIYW5ndWwgd3JpdGluZyBzeXN0ZW0gaXMgc3VwcG9ydGVkLiJ9LHtuYW1lOicidG5hbSInLGRlc2NyaXB0aW9uOiJUcmFkaXRpb25hbCBOYW1lIEZvcm1zLiBBcHBsaWVzIG9ubHkgdG8gSmFwYW5lc2UuIn0se25hbWU6JyJ0bnVtIicsZGVzY3JpcHRpb246IlRhYnVsYXIgRmlndXJlcy4ifSx7bmFtZTonInRyYWQiJyxkZXNjcmlwdGlvbjoiVHJhZGl0aW9uYWwgRm9ybXMuIEFwcGxpZXMgb25seSB0byBDaGluZXNlIGFuZCBKYXBhbmVzZS4ifSx7bmFtZTonInR3aWQiJyxkZXNjcmlwdGlvbjoiVGhpcmQgV2lkdGhzLiBHZW5lcmFsbHkgdXNlZCBvbmx5IGluIENKS1YgZm9udHMuIn0se25hbWU6JyJ1bmljIicsZGVzY3JpcHRpb246IlVuaWNhc2UuIn0se25hbWU6JyJ2YWx0IicsZGVzY3JpcHRpb246IkFsdGVybmF0ZSBWZXJ0aWNhbCBNZXRyaWNzLiBBcHBsaWVzIG9ubHkgdG8gc2NyaXB0cyB3aXRoIHZlcnRpY2FsIHdyaXRpbmcgbW9kZXMuIn0se25hbWU6JyJ2YXR1IicsZGVzY3JpcHRpb246IlZhdHR1IFZhcmlhbnRzLiBVc2VkIGZvciBJbmRpYyBzY3JpcHRzLiBFLmcuIERldmFuYWdhcmkuIn0se25hbWU6JyJ2ZXJ0IicsZGVzY3JpcHRpb246IlZlcnRpY2FsIEFsdGVybmF0ZXMuIEFwcGxpZXMgb25seSB0byBzY3JpcHRzIHdpdGggdmVydGljYWwgd3JpdGluZyBtb2Rlcy4ifSx7bmFtZTonInZoYWwiJyxkZXNjcmlwdGlvbjoiQWx0ZXJuYXRlIFZlcnRpY2FsIEhhbGYgTWV0cmljcy4gVXNlZCBvbmx5IGluIENKS1YgZm9udHMuIn0se25hbWU6JyJ2am1vIicsZGVzY3JpcHRpb246IlZvd2VsIEphbW8gRm9ybXMuIFJlcXVpcmVkIGZvciBIYW5ndWwgc2NyaXB0IHdoZW4gQW5jaWVudCBIYW5ndWwgd3JpdGluZyBzeXN0ZW0gaXMgc3VwcG9ydGVkLiJ9LHtuYW1lOicidmtuYSInLGRlc2NyaXB0aW9uOiJWZXJ0aWNhbCBLYW5hIEFsdGVybmF0ZXMuIEFwcGxpZXMgb25seSB0byBmb250cyB0aGF0IHN1cHBvcnQga2FuYSAoaGlyYWdhbmEgYW5kIGthdGFrYW5hKS4ifSx7bmFtZTonInZrcm4iJyxkZXNjcmlwdGlvbjoiVmVydGljYWwgS2VybmluZy4ifSx7bmFtZTonInZwYWwiJyxkZXNjcmlwdGlvbjoiUHJvcG9ydGlvbmFsIEFsdGVybmF0ZSBWZXJ0aWNhbCBNZXRyaWNzLiBVc2VkIG1vc3RseSBpbiBDSktWIGZvbnRzLiJ9LHtuYW1lOicidnJ0MiInLGRlc2NyaXB0aW9uOiJWZXJ0aWNhbCBBbHRlcm5hdGVzIGFuZCBSb3RhdGlvbi4gQXBwbGllcyBvbmx5IHRvIHNjcmlwdHMgd2l0aCB2ZXJ0aWNhbCB3cml0aW5nIG1vZGVzLiJ9LHtuYW1lOiciemVybyInLGRlc2NyaXB0aW9uOiJTbGFzaGVkIFplcm8uIn0se25hbWU6Im5vcm1hbCIsZGVzY3JpcHRpb246Ik5vIGNoYW5nZSBpbiBnbHlwaCBzdWJzdGl0dXRpb24gb3IgcG9zaXRpb25pbmcgb2NjdXJzLiJ9LHtuYW1lOiJvZmYiLGRlc2NyaXB0aW9uOiJEaXNhYmxlIGZlYXR1cmUuIn0se25hbWU6Im9uIixkZXNjcmlwdGlvbjoiRW5hYmxlIGZlYXR1cmUuIn1dLHN5bnRheDoibm9ybWFsIHwgPGZlYXR1cmUtdGFnLXZhbHVlPiMiLHJlbGV2YW5jZTo1NyxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvZm9udC1mZWF0dXJlLXNldHRpbmdzIn1dLGRlc2NyaXB0aW9uOiJQcm92aWRlcyBsb3ctbGV2ZWwgY29udHJvbCBvdmVyIE9wZW5UeXBlIGZvbnQgZmVhdHVyZXMuIEl0IGlzIGludGVuZGVkIGFzIGEgd2F5IG9mIHByb3ZpZGluZyBhY2Nlc3MgdG8gZm9udCBmZWF0dXJlcyB0aGF0IGFyZSBub3Qgd2lkZWx5IHVzZWQgYnV0IGFyZSBuZWVkZWQgZm9yIGEgcGFydGljdWxhciB1c2UgY2FzZS4iLHJlc3RyaWN0aW9uczpbInN0cmluZyIsImludGVnZXIiXX0se25hbWU6ImZvbnQta2VybmluZyIsYnJvd3NlcnM6WyJFNzkiLCJGRjMyIiwiUzkiLCJDMzMiLCJPMjAiXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHRoYXQga2VybmluZyBpcyBhcHBsaWVkIGF0IHRoZSBkaXNjcmV0aW9uIG9mIHRoZSB1c2VyIGFnZW50LiJ9LHtuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHRoYXQga2VybmluZyBpcyBub3QgYXBwbGllZC4ifSx7bmFtZToibm9ybWFsIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHRoYXQga2VybmluZyBpcyBhcHBsaWVkLiJ9XSxzeW50YXg6ImF1dG8gfCBub3JtYWwgfCBub25lIixyZWxldmFuY2U6NTAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2ZvbnQta2VybmluZyJ9XSxkZXNjcmlwdGlvbjoiS2VybmluZyBpcyB0aGUgY29udGV4dHVhbCBhZGp1c3RtZW50IG9mIGludGVyLWdseXBoIHNwYWNpbmcuIFRoaXMgcHJvcGVydHkgY29udHJvbHMgbWV0cmljIGtlcm5pbmcsIGtlcm5pbmcgdGhhdCB1dGlsaXplcyBhZGp1c3RtZW50IGRhdGEgY29udGFpbmVkIGluIHRoZSBmb250LiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiZm9udC1sYW5ndWFnZS1vdmVycmlkZSIsYnJvd3NlcnM6WyJGRjM0Il0sdmFsdWVzOlt7bmFtZToibm9ybWFsIixkZXNjcmlwdGlvbjoiSW1wbGllcyB0aGF0IHdoZW4gcmVuZGVyaW5nIHdpdGggT3BlblR5cGUgZm9udHMgdGhlIGxhbmd1YWdlIG9mIHRoZSBkb2N1bWVudCBpcyB1c2VkIHRvIGluZmVyIHRoZSBPcGVuVHlwZSBsYW5ndWFnZSBzeXN0ZW0sIHVzZWQgdG8gc2VsZWN0IGxhbmd1YWdlIHNwZWNpZmljIGZlYXR1cmVzIHdoZW4gcmVuZGVyaW5nLiJ9XSxzeW50YXg6Im5vcm1hbCB8IDxzdHJpbmc+IixyZWxldmFuY2U6NTAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2ZvbnQtbGFuZ3VhZ2Utb3ZlcnJpZGUifV0sZGVzY3JpcHRpb246IlRoZSB2YWx1ZSBvZiAnbm9ybWFsJyBpbXBsaWVzIHRoYXQgd2hlbiByZW5kZXJpbmcgd2l0aCBPcGVuVHlwZSBmb250cyB0aGUgbGFuZ3VhZ2Ugb2YgdGhlIGRvY3VtZW50IGlzIHVzZWQgdG8gaW5mZXIgdGhlIE9wZW5UeXBlIGxhbmd1YWdlIHN5c3RlbSwgdXNlZCB0byBzZWxlY3QgbGFuZ3VhZ2Ugc3BlY2lmaWMgZmVhdHVyZXMgd2hlbiByZW5kZXJpbmcuIixyZXN0cmljdGlvbnM6WyJzdHJpbmciXX0se25hbWU6ImZvbnQtc2l6ZSIsdmFsdWVzOlt7bmFtZToibGFyZ2UifSx7bmFtZToibGFyZ2VyIn0se25hbWU6Im1lZGl1bSJ9LHtuYW1lOiJzbWFsbCJ9LHtuYW1lOiJzbWFsbGVyIn0se25hbWU6IngtbGFyZ2UifSx7bmFtZToieC1zbWFsbCJ9LHtuYW1lOiJ4eC1sYXJnZSJ9LHtuYW1lOiJ4eC1zbWFsbCJ9XSxzeW50YXg6IjxhYnNvbHV0ZS1zaXplPiB8IDxyZWxhdGl2ZS1zaXplPiB8IDxsZW5ndGgtcGVyY2VudGFnZT4iLHJlbGV2YW5jZTo5NSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvZm9udC1zaXplIn1dLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgdGhlIGRlc2lyZWQgaGVpZ2h0IG9mIGdseXBocyBmcm9tIHRoZSBmb250LiBGb3Igc2NhbGFibGUgZm9udHMsIHRoZSBmb250LXNpemUgaXMgYSBzY2FsZSBmYWN0b3IgYXBwbGllZCB0byB0aGUgRU0gdW5pdCBvZiB0aGUgZm9udC4gKE5vdGUgdGhhdCBjZXJ0YWluIGdseXBocyBtYXkgYmxlZWQgb3V0c2lkZSB0aGVpciBFTSBib3guKSBGb3Igbm9uLXNjYWxhYmxlIGZvbnRzLCB0aGUgZm9udC1zaXplIGlzIGNvbnZlcnRlZCBpbnRvIGFic29sdXRlIHVuaXRzIGFuZCBtYXRjaGVkIGFnYWluc3QgdGhlIGRlY2xhcmVkIGZvbnQtc2l6ZSBvZiB0aGUgZm9udCwgdXNpbmcgdGhlIHNhbWUgYWJzb2x1dGUgY29vcmRpbmF0ZSBzcGFjZSBmb3IgYm90aCBvZiB0aGUgbWF0Y2hlZCB2YWx1ZXMuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJwZXJjZW50YWdlIl19LHtuYW1lOiJmb250LXNpemUtYWRqdXN0Iixicm93c2VyczpbIkU3OSIsIkZGNDAiLCJDNDMiLCJPMzAiXSx2YWx1ZXM6W3tuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiRG8gbm90IHByZXNlcnZlIHRoZSBmb2504oCZcyB4LWhlaWdodC4ifV0sc3ludGF4OiJub25lIHwgWyBleC1oZWlnaHQgfCBjYXAtaGVpZ2h0IHwgY2gtd2lkdGggfCBpYy13aWR0aCB8IGljLWhlaWdodCBdPyBbIGZyb20tZm9udCB8IDxudW1iZXI+IF0iLHJlbGV2YW5jZTo1MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvZm9udC1zaXplLWFkanVzdCJ9XSxkZXNjcmlwdGlvbjoiUHJlc2VydmVzIHRoZSByZWFkYWJpbGl0eSBvZiB0ZXh0IHdoZW4gZm9udCBmYWxsYmFjayBvY2N1cnMgYnkgYWRqdXN0aW5nIHRoZSBmb250LXNpemUgc28gdGhhdCB0aGUgeC1oZWlnaHQgaXMgdGhlIHNhbWUgcmVnYXJkbGVzcyBvZiB0aGUgZm9udCB1c2VkLiIscmVzdHJpY3Rpb25zOlsibnVtYmVyIl19LHtuYW1lOiJmb250LXN0cmV0Y2giLHZhbHVlczpbe25hbWU6ImNvbmRlbnNlZCJ9LHtuYW1lOiJleHBhbmRlZCJ9LHtuYW1lOiJleHRyYS1jb25kZW5zZWQifSx7bmFtZToiZXh0cmEtZXhwYW5kZWQifSx7bmFtZToibmFycm93ZXIiLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgYSBuYXJyb3dlciB2YWx1ZSByZWxhdGl2ZSB0byB0aGUgd2lkdGggb2YgdGhlIHBhcmVudCBlbGVtZW50LiJ9LHtuYW1lOiJub3JtYWwifSx7bmFtZToic2VtaS1jb25kZW5zZWQifSx7bmFtZToic2VtaS1leHBhbmRlZCJ9LHtuYW1lOiJ1bHRyYS1jb25kZW5zZWQifSx7bmFtZToidWx0cmEtZXhwYW5kZWQifSx7bmFtZToid2lkZXIiLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgYSB3aWRlciB2YWx1ZSByZWxhdGl2ZSB0byB0aGUgd2lkdGggb2YgdGhlIHBhcmVudCBlbGVtZW50LiJ9XSxzeW50YXg6Ijxmb250LXN0cmV0Y2gtYWJzb2x1dGU+ezEsMn0iLHJlbGV2YW5jZTo1NixyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvZm9udC1zdHJldGNoIn1dLGRlc2NyaXB0aW9uOiJTZWxlY3RzIGEgbm9ybWFsLCBjb25kZW5zZWQsIG9yIGV4cGFuZGVkIGZhY2UgZnJvbSBhIGZvbnQgZmFtaWx5LiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiZm9udC1zdHlsZSIsdmFsdWVzOlt7bmFtZToiaXRhbGljIixkZXNjcmlwdGlvbjoiU2VsZWN0cyBhIGZvbnQgdGhhdCBpcyBsYWJlbGVkIGFzIGFuICdpdGFsaWMnIGZhY2UsIG9yIGFuICdvYmxpcXVlJyBmYWNlIGlmIG9uZSBpcyBub3QifSx7bmFtZToibm9ybWFsIixkZXNjcmlwdGlvbjoiU2VsZWN0cyBhIGZhY2UgdGhhdCBpcyBjbGFzc2lmaWVkIGFzICdub3JtYWwnLiJ9LHtuYW1lOiJvYmxpcXVlIixkZXNjcmlwdGlvbjoiU2VsZWN0cyBhIGZvbnQgdGhhdCBpcyBsYWJlbGVkIGFzIGFuICdvYmxpcXVlJyBmYWNlLCBvciBhbiAnaXRhbGljJyBmYWNlIGlmIG9uZSBpcyBub3QuIn1dLHN5bnRheDoibm9ybWFsIHwgaXRhbGljIHwgb2JsaXF1ZSA8YW5nbGU+ezAsMn0iLHJlbGV2YW5jZTo5MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvZm9udC1zdHlsZSJ9XSxkZXNjcmlwdGlvbjoiQWxsb3dzIGl0YWxpYyBvciBvYmxpcXVlIGZhY2VzIHRvIGJlIHNlbGVjdGVkLiBJdGFsaWMgZm9ybXMgYXJlIGdlbmVyYWxseSBjdXJzaXZlIGluIG5hdHVyZSB3aGlsZSBvYmxpcXVlIGZhY2VzIGFyZSB0eXBpY2FsbHkgc2xvcGVkIHZlcnNpb25zIG9mIHRoZSByZWd1bGFyIGZhY2UuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJmb250LXN5bnRoZXNpcyIsYnJvd3NlcnM6WyJFOTciLCJGRjM0IiwiUzkiLCJDOTciLCJPODMiXSx2YWx1ZXM6W3tuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiRGlzYWxsb3cgYWxsIHN5bnRoZXRpYyBmYWNlcy4ifSx7bmFtZToic3R5bGUiLGRlc2NyaXB0aW9uOiJBbGxvdyBzeW50aGV0aWMgaXRhbGljIGZhY2VzLiJ9LHtuYW1lOiJ3ZWlnaHQiLGRlc2NyaXB0aW9uOiJBbGxvdyBzeW50aGV0aWMgYm9sZCBmYWNlcy4ifV0sc3ludGF4OiJub25lIHwgWyB3ZWlnaHQgfHwgc3R5bGUgfHwgc21hbGwtY2FwcyBdIixyZWxldmFuY2U6NTAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2ZvbnQtc3ludGhlc2lzIn1dLGRlc2NyaXB0aW9uOiJDb250cm9scyB3aGV0aGVyIHVzZXIgYWdlbnRzIGFyZSBhbGxvd2VkIHRvIHN5bnRoZXNpemUgYm9sZCBvciBvYmxpcXVlIGZvbnQgZmFjZXMgd2hlbiBhIGZvbnQgZmFtaWx5IGxhY2tzIGJvbGQgb3IgaXRhbGljIGZhY2VzLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiZm9udC12YXJpYW50Iix2YWx1ZXM6W3tuYW1lOiJub3JtYWwiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSBmYWNlIHRoYXQgaXMgbm90IGxhYmVsZWQgYXMgYSBzbWFsbC1jYXBzIGZvbnQuIn0se25hbWU6InNtYWxsLWNhcHMiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSBmb250IHRoYXQgaXMgbGFiZWxlZCBhcyBhIHNtYWxsLWNhcHMgZm9udC4gSWYgYSBnZW51aW5lIHNtYWxsLWNhcHMgZm9udCBpcyBub3QgYXZhaWxhYmxlLCB1c2VyIGFnZW50cyBzaG91bGQgc2ltdWxhdGUgYSBzbWFsbC1jYXBzIGZvbnQuIn1dLHN5bnRheDoibm9ybWFsIHwgbm9uZSB8IFsgPGNvbW1vbi1saWctdmFsdWVzPiB8fCA8ZGlzY3JldGlvbmFyeS1saWctdmFsdWVzPiB8fCA8aGlzdG9yaWNhbC1saWctdmFsdWVzPiB8fCA8Y29udGV4dHVhbC1hbHQtdmFsdWVzPiB8fCBzdHlsaXN0aWMoPGZlYXR1cmUtdmFsdWUtbmFtZT4pIHx8IGhpc3RvcmljYWwtZm9ybXMgfHwgc3R5bGVzZXQoPGZlYXR1cmUtdmFsdWUtbmFtZT4jKSB8fCBjaGFyYWN0ZXItdmFyaWFudCg8ZmVhdHVyZS12YWx1ZS1uYW1lPiMpIHx8IHN3YXNoKDxmZWF0dXJlLXZhbHVlLW5hbWU+KSB8fCBvcm5hbWVudHMoPGZlYXR1cmUtdmFsdWUtbmFtZT4pIHx8IGFubm90YXRpb24oPGZlYXR1cmUtdmFsdWUtbmFtZT4pIHx8IFsgc21hbGwtY2FwcyB8IGFsbC1zbWFsbC1jYXBzIHwgcGV0aXRlLWNhcHMgfCBhbGwtcGV0aXRlLWNhcHMgfCB1bmljYXNlIHwgdGl0bGluZy1jYXBzIF0gfHwgPG51bWVyaWMtZmlndXJlLXZhbHVlcz4gfHwgPG51bWVyaWMtc3BhY2luZy12YWx1ZXM+IHx8IDxudW1lcmljLWZyYWN0aW9uLXZhbHVlcz4gfHwgb3JkaW5hbCB8fCBzbGFzaGVkLXplcm8gfHwgPGVhc3QtYXNpYW4tdmFyaWFudC12YWx1ZXM+IHx8IDxlYXN0LWFzaWFuLXdpZHRoLXZhbHVlcz4gfHwgcnVieSBdIixyZWxldmFuY2U6NjQscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2ZvbnQtdmFyaWFudCJ9XSxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHZhcmlhbnQgcmVwcmVzZW50YXRpb25zIG9mIHRoZSBmb250IixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJmb250LXZhcmlhbnQtYWx0ZXJuYXRlcyIsYnJvd3NlcnM6WyJGRjM0IiwiUzkuMSJdLHZhbHVlczpbe25hbWU6ImFubm90YXRpb24oKSIsZGVzY3JpcHRpb246IkVuYWJsZXMgZGlzcGxheSBvZiBhbHRlcm5hdGUgYW5ub3RhdGlvbiBmb3Jtcy4ifSx7bmFtZToiY2hhcmFjdGVyLXZhcmlhbnQoKSIsZGVzY3JpcHRpb246IkVuYWJsZXMgZGlzcGxheSBvZiBzcGVjaWZpYyBjaGFyYWN0ZXIgdmFyaWFudHMuIn0se25hbWU6Imhpc3RvcmljYWwtZm9ybXMiLGRlc2NyaXB0aW9uOiJFbmFibGVzIGRpc3BsYXkgb2YgaGlzdG9yaWNhbCBmb3Jtcy4ifSx7bmFtZToibm9ybWFsIixkZXNjcmlwdGlvbjoiTm9uZSBvZiB0aGUgZmVhdHVyZXMgYXJlIGVuYWJsZWQuIn0se25hbWU6Im9ybmFtZW50cygpIixkZXNjcmlwdGlvbjoiRW5hYmxlcyByZXBsYWNlbWVudCBvZiBkZWZhdWx0IGdseXBocyB3aXRoIG9ybmFtZW50cywgaWYgcHJvdmlkZWQgaW4gdGhlIGZvbnQuIn0se25hbWU6InN0eWxlc2V0KCkiLGRlc2NyaXB0aW9uOiJFbmFibGVzIGRpc3BsYXkgd2l0aCBzdHlsaXN0aWMgc2V0cy4ifSx7bmFtZToic3R5bGlzdGljKCkiLGRlc2NyaXB0aW9uOiJFbmFibGVzIGRpc3BsYXkgb2Ygc3R5bGlzdGljIGFsdGVybmF0ZXMuIn0se25hbWU6InN3YXNoKCkiLGRlc2NyaXB0aW9uOiJFbmFibGVzIGRpc3BsYXkgb2Ygc3dhc2ggZ2x5cGhzLiJ9XSxzeW50YXg6Im5vcm1hbCB8IFsgc3R5bGlzdGljKCA8ZmVhdHVyZS12YWx1ZS1uYW1lPiApIHx8IGhpc3RvcmljYWwtZm9ybXMgfHwgc3R5bGVzZXQoIDxmZWF0dXJlLXZhbHVlLW5hbWU+IyApIHx8IGNoYXJhY3Rlci12YXJpYW50KCA8ZmVhdHVyZS12YWx1ZS1uYW1lPiMgKSB8fCBzd2FzaCggPGZlYXR1cmUtdmFsdWUtbmFtZT4gKSB8fCBvcm5hbWVudHMoIDxmZWF0dXJlLXZhbHVlLW5hbWU+ICkgfHwgYW5ub3RhdGlvbiggPGZlYXR1cmUtdmFsdWUtbmFtZT4gKSBdIixyZWxldmFuY2U6NTAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2ZvbnQtdmFyaWFudC1hbHRlcm5hdGVzIn1dLGRlc2NyaXB0aW9uOiJGb3IgYW55IGdpdmVuIGNoYXJhY3RlciwgZm9udHMgY2FuIHByb3ZpZGUgYSB2YXJpZXR5IG9mIGFsdGVybmF0ZSBnbHlwaHMgaW4gYWRkaXRpb24gdG8gdGhlIGRlZmF1bHQgZ2x5cGggZm9yIHRoYXQgY2hhcmFjdGVyLiBUaGlzIHByb3BlcnR5IHByb3ZpZGVzIGNvbnRyb2wgb3ZlciB0aGUgc2VsZWN0aW9uIG9mIHRoZXNlIGFsdGVybmF0ZSBnbHlwaHMuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJmb250LXZhcmlhbnQtY2FwcyIsYnJvd3NlcnM6WyJFNzkiLCJGRjM0IiwiUzkuMSIsIkM1MiIsIk8zOSJdLHZhbHVlczpbe25hbWU6ImFsbC1wZXRpdGUtY2FwcyIsZGVzY3JpcHRpb246IkVuYWJsZXMgZGlzcGxheSBvZiBwZXRpdGUgY2FwaXRhbHMgZm9yIGJvdGggdXBwZXIgYW5kIGxvd2VyY2FzZSBsZXR0ZXJzLiJ9LHtuYW1lOiJhbGwtc21hbGwtY2FwcyIsZGVzY3JpcHRpb246IkVuYWJsZXMgZGlzcGxheSBvZiBzbWFsbCBjYXBpdGFscyBmb3IgYm90aCB1cHBlciBhbmQgbG93ZXJjYXNlIGxldHRlcnMuIn0se25hbWU6Im5vcm1hbCIsZGVzY3JpcHRpb246Ik5vbmUgb2YgdGhlIGZlYXR1cmVzIGFyZSBlbmFibGVkLiJ9LHtuYW1lOiJwZXRpdGUtY2FwcyIsZGVzY3JpcHRpb246IkVuYWJsZXMgZGlzcGxheSBvZiBwZXRpdGUgY2FwaXRhbHMuIn0se25hbWU6InNtYWxsLWNhcHMiLGRlc2NyaXB0aW9uOiJFbmFibGVzIGRpc3BsYXkgb2Ygc21hbGwgY2FwaXRhbHMuIFNtYWxsLWNhcHMgZ2x5cGhzIHR5cGljYWxseSB1c2UgdGhlIGZvcm0gb2YgdXBwZXJjYXNlIGxldHRlcnMgYnV0IGFyZSByZWR1Y2VkIHRvIHRoZSBzaXplIG9mIGxvd2VyY2FzZSBsZXR0ZXJzLiJ9LHtuYW1lOiJ0aXRsaW5nLWNhcHMiLGRlc2NyaXB0aW9uOiJFbmFibGVzIGRpc3BsYXkgb2YgdGl0bGluZyBjYXBpdGFscy4ifSx7bmFtZToidW5pY2FzZSIsZGVzY3JpcHRpb246IkVuYWJsZXMgZGlzcGxheSBvZiBtaXh0dXJlIG9mIHNtYWxsIGNhcGl0YWxzIGZvciB1cHBlcmNhc2UgbGV0dGVycyB3aXRoIG5vcm1hbCBsb3dlcmNhc2UgbGV0dGVycy4ifV0sc3ludGF4OiJub3JtYWwgfCBzbWFsbC1jYXBzIHwgYWxsLXNtYWxsLWNhcHMgfCBwZXRpdGUtY2FwcyB8IGFsbC1wZXRpdGUtY2FwcyB8IHVuaWNhc2UgfCB0aXRsaW5nLWNhcHMiLHJlbGV2YW5jZTo1MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvZm9udC12YXJpYW50LWNhcHMifV0sZGVzY3JpcHRpb246IlNwZWNpZmllcyBjb250cm9sIG92ZXIgY2FwaXRhbGl6ZWQgZm9ybXMuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJmb250LXZhcmlhbnQtZWFzdC1hc2lhbiIsYnJvd3NlcnM6WyJFNzkiLCJGRjM0IiwiUzkuMSIsIkM2MyIsIk81MCJdLHZhbHVlczpbe25hbWU6ImZ1bGwtd2lkdGgiLGRlc2NyaXB0aW9uOiJFbmFibGVzIHJlbmRlcmluZyBvZiBmdWxsLXdpZHRoIHZhcmlhbnRzLiJ9LHtuYW1lOiJqaXMwNCIsZGVzY3JpcHRpb246IkVuYWJsZXMgcmVuZGVyaW5nIG9mIEpJUzA0IGZvcm1zLiJ9LHtuYW1lOiJqaXM3OCIsZGVzY3JpcHRpb246IkVuYWJsZXMgcmVuZGVyaW5nIG9mIEpJUzc4IGZvcm1zLiJ9LHtuYW1lOiJqaXM4MyIsZGVzY3JpcHRpb246IkVuYWJsZXMgcmVuZGVyaW5nIG9mIEpJUzgzIGZvcm1zLiJ9LHtuYW1lOiJqaXM5MCIsZGVzY3JpcHRpb246IkVuYWJsZXMgcmVuZGVyaW5nIG9mIEpJUzkwIGZvcm1zLiJ9LHtuYW1lOiJub3JtYWwiLGRlc2NyaXB0aW9uOiJOb25lIG9mIHRoZSBmZWF0dXJlcyBhcmUgZW5hYmxlZC4ifSx7bmFtZToicHJvcG9ydGlvbmFsLXdpZHRoIixkZXNjcmlwdGlvbjoiRW5hYmxlcyByZW5kZXJpbmcgb2YgcHJvcG9ydGlvbmFsbHktc3BhY2VkIHZhcmlhbnRzLiJ9LHtuYW1lOiJydWJ5IixkZXNjcmlwdGlvbjoiRW5hYmxlcyBkaXNwbGF5IG9mIHJ1YnkgdmFyaWFudCBnbHlwaHMuIn0se25hbWU6InNpbXBsaWZpZWQiLGRlc2NyaXB0aW9uOiJFbmFibGVzIHJlbmRlcmluZyBvZiBzaW1wbGlmaWVkIGZvcm1zLiJ9LHtuYW1lOiJ0cmFkaXRpb25hbCIsZGVzY3JpcHRpb246IkVuYWJsZXMgcmVuZGVyaW5nIG9mIHRyYWRpdGlvbmFsIGZvcm1zLiJ9XSxzeW50YXg6Im5vcm1hbCB8IFsgPGVhc3QtYXNpYW4tdmFyaWFudC12YWx1ZXM+IHx8IDxlYXN0LWFzaWFuLXdpZHRoLXZhbHVlcz4gfHwgcnVieSBdIixyZWxldmFuY2U6NTAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2ZvbnQtdmFyaWFudC1lYXN0LWFzaWFuIn1dLGRlc2NyaXB0aW9uOiJBbGxvd3MgY29udHJvbCBvZiBnbHlwaCBzdWJzdGl0dXRlIGFuZCBwb3NpdGlvbmluZyBpbiBFYXN0IEFzaWFuIHRleHQuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJmb250LXZhcmlhbnQtbGlnYXR1cmVzIixicm93c2VyczpbIkU3OSIsIkZGMzQiLCJTOS4xIiwiQzM0IiwiTzIxIl0sdmFsdWVzOlt7bmFtZToiYWRkaXRpb25hbC1saWdhdHVyZXMiLGRlc2NyaXB0aW9uOiJFbmFibGVzIGRpc3BsYXkgb2YgYWRkaXRpb25hbCBsaWdhdHVyZXMuIn0se25hbWU6ImNvbW1vbi1saWdhdHVyZXMiLGRlc2NyaXB0aW9uOiJFbmFibGVzIGRpc3BsYXkgb2YgY29tbW9uIGxpZ2F0dXJlcy4ifSx7bmFtZToiY29udGV4dHVhbCIsYnJvd3NlcnM6WyJFNzkiLCJGRjM0IiwiUzkuMSIsIkMzNCIsIk8yMSJdLGRlc2NyaXB0aW9uOiJFbmFibGVzIGRpc3BsYXkgb2YgY29udGV4dHVhbCBhbHRlcm5hdGVzLiJ9LHtuYW1lOiJkaXNjcmV0aW9uYXJ5LWxpZ2F0dXJlcyIsZGVzY3JpcHRpb246IkVuYWJsZXMgZGlzcGxheSBvZiBkaXNjcmV0aW9uYXJ5IGxpZ2F0dXJlcy4ifSx7bmFtZToiaGlzdG9yaWNhbC1saWdhdHVyZXMiLGRlc2NyaXB0aW9uOiJFbmFibGVzIGRpc3BsYXkgb2YgaGlzdG9yaWNhbCBsaWdhdHVyZXMuIn0se25hbWU6Im5vLWFkZGl0aW9uYWwtbGlnYXR1cmVzIixkZXNjcmlwdGlvbjoiRGlzYWJsZXMgZGlzcGxheSBvZiBhZGRpdGlvbmFsIGxpZ2F0dXJlcy4ifSx7bmFtZToibm8tY29tbW9uLWxpZ2F0dXJlcyIsZGVzY3JpcHRpb246IkRpc2FibGVzIGRpc3BsYXkgb2YgY29tbW9uIGxpZ2F0dXJlcy4ifSx7bmFtZToibm8tY29udGV4dHVhbCIsYnJvd3NlcnM6WyJFNzkiLCJGRjM0IiwiUzkuMSIsIkMzNCIsIk8yMSJdLGRlc2NyaXB0aW9uOiJEaXNhYmxlcyBkaXNwbGF5IG9mIGNvbnRleHR1YWwgYWx0ZXJuYXRlcy4ifSx7bmFtZToibm8tZGlzY3JldGlvbmFyeS1saWdhdHVyZXMiLGRlc2NyaXB0aW9uOiJEaXNhYmxlcyBkaXNwbGF5IG9mIGRpc2NyZXRpb25hcnkgbGlnYXR1cmVzLiJ9LHtuYW1lOiJuby1oaXN0b3JpY2FsLWxpZ2F0dXJlcyIsZGVzY3JpcHRpb246IkRpc2FibGVzIGRpc3BsYXkgb2YgaGlzdG9yaWNhbCBsaWdhdHVyZXMuIn0se25hbWU6Im5vbmUiLGJyb3dzZXJzOlsiRTc5IiwiRkYzNCIsIlM5LjEiLCJDMzQiLCJPMjEiXSxkZXNjcmlwdGlvbjoiRGlzYWJsZXMgYWxsIGxpZ2F0dXJlcy4ifSx7bmFtZToibm9ybWFsIixkZXNjcmlwdGlvbjoiSW1wbGllcyB0aGF0IHRoZSBkZWZhdWx0cyBzZXQgYnkgdGhlIGZvbnQgYXJlIHVzZWQuIn1dLHN5bnRheDoibm9ybWFsIHwgbm9uZSB8IFsgPGNvbW1vbi1saWctdmFsdWVzPiB8fCA8ZGlzY3JldGlvbmFyeS1saWctdmFsdWVzPiB8fCA8aGlzdG9yaWNhbC1saWctdmFsdWVzPiB8fCA8Y29udGV4dHVhbC1hbHQtdmFsdWVzPiBdIixyZWxldmFuY2U6NTMscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2ZvbnQtdmFyaWFudC1saWdhdHVyZXMifV0sZGVzY3JpcHRpb246IlNwZWNpZmllcyBjb250cm9sIG92ZXIgd2hpY2ggbGlnYXR1cmVzIGFyZSBlbmFibGVkIG9yIGRpc2FibGVkLiBBIHZhbHVlIG9mIOKAmG5vcm1hbOKAmSBpbXBsaWVzIHRoYXQgdGhlIGRlZmF1bHRzIHNldCBieSB0aGUgZm9udCBhcmUgdXNlZC4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6ImZvbnQtdmFyaWFudC1udW1lcmljIixicm93c2VyczpbIkU3OSIsIkZGMzQiLCJTOS4xIiwiQzUyIiwiTzM5Il0sdmFsdWVzOlt7bmFtZToiZGlhZ29uYWwtZnJhY3Rpb25zIixkZXNjcmlwdGlvbjoiRW5hYmxlcyBkaXNwbGF5IG9mIGxpbmluZyBkaWFnb25hbCBmcmFjdGlvbnMuIn0se25hbWU6ImxpbmluZy1udW1zIixkZXNjcmlwdGlvbjoiRW5hYmxlcyBkaXNwbGF5IG9mIGxpbmluZyBudW1lcmFscy4ifSx7bmFtZToibm9ybWFsIixkZXNjcmlwdGlvbjoiTm9uZSBvZiB0aGUgZmVhdHVyZXMgYXJlIGVuYWJsZWQuIn0se25hbWU6Im9sZHN0eWxlLW51bXMiLGRlc2NyaXB0aW9uOiJFbmFibGVzIGRpc3BsYXkgb2Ygb2xkLXN0eWxlIG51bWVyYWxzLiJ9LHtuYW1lOiJvcmRpbmFsIixkZXNjcmlwdGlvbjoiRW5hYmxlcyBkaXNwbGF5IG9mIGxldHRlciBmb3JtcyB1c2VkIHdpdGggb3JkaW5hbCBudW1iZXJzLiJ9LHtuYW1lOiJwcm9wb3J0aW9uYWwtbnVtcyIsZGVzY3JpcHRpb246IkVuYWJsZXMgZGlzcGxheSBvZiBwcm9wb3J0aW9uYWwgbnVtZXJhbHMuIn0se25hbWU6InNsYXNoZWQtemVybyIsZGVzY3JpcHRpb246IkVuYWJsZXMgZGlzcGxheSBvZiBzbGFzaGVkIHplcm9zLiJ9LHtuYW1lOiJzdGFja2VkLWZyYWN0aW9ucyIsZGVzY3JpcHRpb246IkVuYWJsZXMgZGlzcGxheSBvZiBsaW5pbmcgc3RhY2tlZCBmcmFjdGlvbnMuIn0se25hbWU6InRhYnVsYXItbnVtcyIsZGVzY3JpcHRpb246IkVuYWJsZXMgZGlzcGxheSBvZiB0YWJ1bGFyIG51bWVyYWxzLiJ9XSxzeW50YXg6Im5vcm1hbCB8IFsgPG51bWVyaWMtZmlndXJlLXZhbHVlcz4gfHwgPG51bWVyaWMtc3BhY2luZy12YWx1ZXM+IHx8IDxudW1lcmljLWZyYWN0aW9uLXZhbHVlcz4gfHwgb3JkaW5hbCB8fCBzbGFzaGVkLXplcm8gXSIscmVsZXZhbmNlOjUwLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9mb250LXZhcmlhbnQtbnVtZXJpYyJ9XSxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGNvbnRyb2wgb3ZlciBudW1lcmljYWwgZm9ybXMuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJmb250LXZhcmlhbnQtcG9zaXRpb24iLGJyb3dzZXJzOlsiRkYzNCIsIlM5LjEiXSx2YWx1ZXM6W3tuYW1lOiJub3JtYWwiLGRlc2NyaXB0aW9uOiJOb25lIG9mIHRoZSBmZWF0dXJlcyBhcmUgZW5hYmxlZC4ifSx7bmFtZToic3ViIixkZXNjcmlwdGlvbjoiRW5hYmxlcyBkaXNwbGF5IG9mIHN1YnNjcmlwdCB2YXJpYW50cyAoT3BlblR5cGUgZmVhdHVyZTogc3VicykuIn0se25hbWU6InN1cGVyIixkZXNjcmlwdGlvbjoiRW5hYmxlcyBkaXNwbGF5IG9mIHN1cGVyc2NyaXB0IHZhcmlhbnRzIChPcGVuVHlwZSBmZWF0dXJlOiBzdXBzKS4ifV0sc3ludGF4OiJub3JtYWwgfCBzdWIgfCBzdXBlciIscmVsZXZhbmNlOjUwLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9mb250LXZhcmlhbnQtcG9zaXRpb24ifV0sZGVzY3JpcHRpb246IlNwZWNpZmllcyB0aGUgdmVydGljYWwgcG9zaXRpb24iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6ImZvbnQtd2VpZ2h0Iix2YWx1ZXM6W3tuYW1lOiIxMDAiLGRlc2NyaXB0aW9uOiJUaGluIn0se25hbWU6IjIwMCIsZGVzY3JpcHRpb246IkV4dHJhIExpZ2h0IChVbHRyYSBMaWdodCkifSx7bmFtZToiMzAwIixkZXNjcmlwdGlvbjoiTGlnaHQifSx7bmFtZToiNDAwIixkZXNjcmlwdGlvbjoiTm9ybWFsIn0se25hbWU6IjUwMCIsZGVzY3JpcHRpb246Ik1lZGl1bSJ9LHtuYW1lOiI2MDAiLGRlc2NyaXB0aW9uOiJTZW1pIEJvbGQgKERlbWkgQm9sZCkifSx7bmFtZToiNzAwIixkZXNjcmlwdGlvbjoiQm9sZCJ9LHtuYW1lOiI4MDAiLGRlc2NyaXB0aW9uOiJFeHRyYSBCb2xkIChVbHRyYSBCb2xkKSJ9LHtuYW1lOiI5MDAiLGRlc2NyaXB0aW9uOiJCbGFjayAoSGVhdnkpIn0se25hbWU6ImJvbGQiLGRlc2NyaXB0aW9uOiJTYW1lIGFzIDcwMCJ9LHtuYW1lOiJib2xkZXIiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgdGhlIHdlaWdodCBvZiB0aGUgZmFjZSBib2xkZXIgdGhhbiB0aGUgaW5oZXJpdGVkIHZhbHVlLiJ9LHtuYW1lOiJsaWdodGVyIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHRoZSB3ZWlnaHQgb2YgdGhlIGZhY2UgbGlnaHRlciB0aGFuIHRoZSBpbmhlcml0ZWQgdmFsdWUuIn0se25hbWU6Im5vcm1hbCIsZGVzY3JpcHRpb246IlNhbWUgYXMgNDAwIn1dLHN5bnRheDoiPGZvbnQtd2VpZ2h0LWFic29sdXRlPnsxLDJ9IixyZWxldmFuY2U6OTQscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2ZvbnQtd2VpZ2h0In1dLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgd2VpZ2h0IG9mIGdseXBocyBpbiB0aGUgZm9udCwgdGhlaXIgZGVncmVlIG9mIGJsYWNrbmVzcyBvciBzdHJva2UgdGhpY2tuZXNzLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiZ2x5cGgtb3JpZW50YXRpb24taG9yaXpvbnRhbCIscmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJDb250cm9scyBnbHlwaCBvcmllbnRhdGlvbiB3aGVuIHRoZSBpbmxpbmUtcHJvZ3Jlc3Npb24tZGlyZWN0aW9uIGlzIGhvcml6b250YWwuIixyZXN0cmljdGlvbnM6WyJhbmdsZSIsIm51bWJlciJdfSx7bmFtZToiZ2x5cGgtb3JpZW50YXRpb24tdmVydGljYWwiLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJTZXRzIHRoZSBvcmllbnRhdGlvbiBiYXNlZCBvbiB0aGUgZnVsbHdpZHRoIG9yIG5vbi1mdWxsd2lkdGggY2hhcmFjdGVycyBhbmQgdGhlIG1vc3QgY29tbW9uIG9yaWVudGF0aW9uLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkNvbnRyb2xzIGdseXBoIG9yaWVudGF0aW9uIHdoZW4gdGhlIGlubGluZS1wcm9ncmVzc2lvbi1kaXJlY3Rpb24gaXMgdmVydGljYWwuIixyZXN0cmljdGlvbnM6WyJhbmdsZSIsIm51bWJlciIsImVudW0iXX0se25hbWU6ImdyaWQtYXJlYSIsYnJvd3NlcnM6WyJFMTYiLCJGRjUyIiwiUzEwLjEiLCJDNTciLCJPNDQiXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiVGhlIHByb3BlcnR5IGNvbnRyaWJ1dGVzIG5vdGhpbmcgdG8gdGhlIGdyaWQgaXRlbeKAmXMgcGxhY2VtZW50LCBpbmRpY2F0aW5nIGF1dG8tcGxhY2VtZW50LCBhbiBhdXRvbWF0aWMgc3Bhbiwgb3IgYSBkZWZhdWx0IHNwYW4gb2Ygb25lLiJ9LHtuYW1lOiJzcGFuIixkZXNjcmlwdGlvbjoiQ29udHJpYnV0ZXMgYSBncmlkIHNwYW4gdG8gdGhlIGdyaWQgaXRlbeKAmXMgcGxhY2VtZW50IHN1Y2ggdGhhdCB0aGUgY29ycmVzcG9uZGluZyBlZGdlIG9mIHRoZSBncmlkIGl0ZW3igJlzIGdyaWQgYXJlYSBpcyBOIGxpbmVzIGZyb20gaXRzIG9wcG9zaXRlIGVkZ2UuIn1dLHN5bnRheDoiPGdyaWQtbGluZT4gWyAvIDxncmlkLWxpbmU+IF17MCwzfSIscmVsZXZhbmNlOjUzLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ncmlkLWFyZWEifV0sZGVzY3JpcHRpb246IkRldGVybWluZSBhIGdyaWQgaXRlbeKAmXMgc2l6ZSBhbmQgbG9jYXRpb24gd2l0aGluIHRoZSBncmlkIGJ5IGNvbnRyaWJ1dGluZyBhIGxpbmUsIGEgc3Bhbiwgb3Igbm90aGluZyAoYXV0b21hdGljKSB0byBpdHMgZ3JpZCBwbGFjZW1lbnQuIFNob3J0aGFuZCBmb3IgJ2dyaWQtcm93LXN0YXJ0JywgJ2dyaWQtY29sdW1uLXN0YXJ0JywgJ2dyaWQtcm93LWVuZCcsIGFuZCAnZ3JpZC1jb2x1bW4tZW5kJy4iLHJlc3RyaWN0aW9uczpbImlkZW50aWZpZXIiLCJpbnRlZ2VyIl19LHtuYW1lOiJncmlkIixicm93c2VyczpbIkUxNiIsIkZGNTIiLCJTMTAuMSIsIkM1NyIsIk80NCJdLHN5bnRheDoiPCdncmlkLXRlbXBsYXRlJz4gfCA8J2dyaWQtdGVtcGxhdGUtcm93cyc+IC8gWyBhdXRvLWZsb3cgJiYgZGVuc2U/IF0gPCdncmlkLWF1dG8tY29sdW1ucyc+PyB8IFsgYXV0by1mbG93ICYmIGRlbnNlPyBdIDwnZ3JpZC1hdXRvLXJvd3MnPj8gLyA8J2dyaWQtdGVtcGxhdGUtY29sdW1ucyc+IixyZWxldmFuY2U6NTAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2dyaWQifV0sZGVzY3JpcHRpb246IlRoZSBncmlkIENTUyBwcm9wZXJ0eSBpcyBhIHNob3J0aGFuZCBwcm9wZXJ0eSB0aGF0IHNldHMgYWxsIG9mIHRoZSBleHBsaWNpdCBncmlkIHByb3BlcnRpZXMgKCdncmlkLXRlbXBsYXRlLXJvd3MnLCAnZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zJywgYW5kICdncmlkLXRlbXBsYXRlLWFyZWFzJyksIGFuZCBhbGwgdGhlIGltcGxpY2l0IGdyaWQgcHJvcGVydGllcyAoJ2dyaWQtYXV0by1yb3dzJywgJ2dyaWQtYXV0by1jb2x1bW5zJywgYW5kICdncmlkLWF1dG8tZmxvdycpLCBpbiBhIHNpbmdsZSBkZWNsYXJhdGlvbi4iLHJlc3RyaWN0aW9uczpbImlkZW50aWZpZXIiLCJsZW5ndGgiLCJwZXJjZW50YWdlIiwic3RyaW5nIiwiZW51bSJdfSx7bmFtZToiZ3JpZC1hdXRvLWNvbHVtbnMiLHZhbHVlczpbe25hbWU6Im1pbi1jb250ZW50IixkZXNjcmlwdGlvbjoiUmVwcmVzZW50cyB0aGUgbGFyZ2VzdCBtaW4tY29udGVudCBjb250cmlidXRpb24gb2YgdGhlIGdyaWQgaXRlbXMgb2NjdXB5aW5nIHRoZSBncmlkIHRyYWNrLiJ9LHtuYW1lOiJtYXgtY29udGVudCIsZGVzY3JpcHRpb246IlJlcHJlc2VudHMgdGhlIGxhcmdlc3QgbWF4LWNvbnRlbnQgY29udHJpYnV0aW9uIG9mIHRoZSBncmlkIGl0ZW1zIG9jY3VweWluZyB0aGUgZ3JpZCB0cmFjay4ifSx7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IkFzIGEgbWF4aW11bSwgaWRlbnRpY2FsIHRvICdtYXgtY29udGVudCcuIEFzIGEgbWluaW11bSwgcmVwcmVzZW50cyB0aGUgbGFyZ2VzdCBtaW5pbXVtIHNpemUgKGFzIHNwZWNpZmllZCBieSBtaW4td2lkdGgvbWluLWhlaWdodCkgb2YgdGhlIGdyaWQgaXRlbXMgb2NjdXB5aW5nIHRoZSBncmlkIHRyYWNrLiJ9LHtuYW1lOiJtaW5tYXgoKSIsZGVzY3JpcHRpb246IkRlZmluZXMgYSBzaXplIHJhbmdlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byBtaW4gYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byBtYXguIn1dLHN5bnRheDoiPHRyYWNrLXNpemU+KyIscmVsZXZhbmNlOjUwLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ncmlkLWF1dG8tY29sdW1ucyJ9XSxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHRoZSBzaXplIG9mIGltcGxpY2l0bHkgY3JlYXRlZCBjb2x1bW5zLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwicGVyY2VudGFnZSJdfSx7bmFtZToiZ3JpZC1hdXRvLWZsb3ciLGJyb3dzZXJzOlsiRTE2IiwiRkY1MiIsIlMxMC4xIiwiQzU3IiwiTzQ0Il0sdmFsdWVzOlt7bmFtZToicm93IixkZXNjcmlwdGlvbjoiVGhlIGF1dG8tcGxhY2VtZW50IGFsZ29yaXRobSBwbGFjZXMgaXRlbXMgYnkgZmlsbGluZyBlYWNoIHJvdyBpbiB0dXJuLCBhZGRpbmcgbmV3IHJvd3MgYXMgbmVjZXNzYXJ5LiJ9LHtuYW1lOiJjb2x1bW4iLGRlc2NyaXB0aW9uOiJUaGUgYXV0by1wbGFjZW1lbnQgYWxnb3JpdGhtIHBsYWNlcyBpdGVtcyBieSBmaWxsaW5nIGVhY2ggY29sdW1uIGluIHR1cm4sIGFkZGluZyBuZXcgY29sdW1ucyBhcyBuZWNlc3NhcnkuIn0se25hbWU6ImRlbnNlIixkZXNjcmlwdGlvbjoiSWYgc3BlY2lmaWVkLCB0aGUgYXV0by1wbGFjZW1lbnQgYWxnb3JpdGhtIHVzZXMgYSDigJxkZW5zZeKAnSBwYWNraW5nIGFsZ29yaXRobSwgd2hpY2ggYXR0ZW1wdHMgdG8gZmlsbCBpbiBob2xlcyBlYXJsaWVyIGluIHRoZSBncmlkIGlmIHNtYWxsZXIgaXRlbXMgY29tZSB1cCBsYXRlci4ifV0sc3ludGF4OiJbIHJvdyB8IGNvbHVtbiBdIHx8IGRlbnNlIixyZWxldmFuY2U6NTIscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2dyaWQtYXV0by1mbG93In1dLGRlc2NyaXB0aW9uOiJDb250cm9scyBob3cgdGhlIGF1dG8tcGxhY2VtZW50IGFsZ29yaXRobSB3b3Jrcywgc3BlY2lmeWluZyBleGFjdGx5IGhvdyBhdXRvLXBsYWNlZCBpdGVtcyBnZXQgZmxvd2VkIGludG8gdGhlIGdyaWQuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJncmlkLWF1dG8tcm93cyIsdmFsdWVzOlt7bmFtZToibWluLWNvbnRlbnQiLGRlc2NyaXB0aW9uOiJSZXByZXNlbnRzIHRoZSBsYXJnZXN0IG1pbi1jb250ZW50IGNvbnRyaWJ1dGlvbiBvZiB0aGUgZ3JpZCBpdGVtcyBvY2N1cHlpbmcgdGhlIGdyaWQgdHJhY2suIn0se25hbWU6Im1heC1jb250ZW50IixkZXNjcmlwdGlvbjoiUmVwcmVzZW50cyB0aGUgbGFyZ2VzdCBtYXgtY29udGVudCBjb250cmlidXRpb24gb2YgdGhlIGdyaWQgaXRlbXMgb2NjdXB5aW5nIHRoZSBncmlkIHRyYWNrLiJ9LHtuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiQXMgYSBtYXhpbXVtLCBpZGVudGljYWwgdG8gJ21heC1jb250ZW50Jy4gQXMgYSBtaW5pbXVtLCByZXByZXNlbnRzIHRoZSBsYXJnZXN0IG1pbmltdW0gc2l6ZSAoYXMgc3BlY2lmaWVkIGJ5IG1pbi13aWR0aC9taW4taGVpZ2h0KSBvZiB0aGUgZ3JpZCBpdGVtcyBvY2N1cHlpbmcgdGhlIGdyaWQgdHJhY2suIn0se25hbWU6Im1pbm1heCgpIixkZXNjcmlwdGlvbjoiRGVmaW5lcyBhIHNpemUgcmFuZ2UgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIG1pbiBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIG1heC4ifV0sc3ludGF4OiI8dHJhY2stc2l6ZT4rIixyZWxldmFuY2U6NTEscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2dyaWQtYXV0by1yb3dzIn1dLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgdGhlIHNpemUgb2YgaW1wbGljaXRseSBjcmVhdGVkIHJvd3MuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJwZXJjZW50YWdlIl19LHtuYW1lOiJncmlkLWNvbHVtbiIsYnJvd3NlcnM6WyJFMTYiLCJGRjUyIiwiUzEwLjEiLCJDNTciLCJPNDQiXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiVGhlIHByb3BlcnR5IGNvbnRyaWJ1dGVzIG5vdGhpbmcgdG8gdGhlIGdyaWQgaXRlbeKAmXMgcGxhY2VtZW50LCBpbmRpY2F0aW5nIGF1dG8tcGxhY2VtZW50LCBhbiBhdXRvbWF0aWMgc3Bhbiwgb3IgYSBkZWZhdWx0IHNwYW4gb2Ygb25lLiJ9LHtuYW1lOiJzcGFuIixkZXNjcmlwdGlvbjoiQ29udHJpYnV0ZXMgYSBncmlkIHNwYW4gdG8gdGhlIGdyaWQgaXRlbeKAmXMgcGxhY2VtZW50IHN1Y2ggdGhhdCB0aGUgY29ycmVzcG9uZGluZyBlZGdlIG9mIHRoZSBncmlkIGl0ZW3igJlzIGdyaWQgYXJlYSBpcyBOIGxpbmVzIGZyb20gaXRzIG9wcG9zaXRlIGVkZ2UuIn1dLHN5bnRheDoiPGdyaWQtbGluZT4gWyAvIDxncmlkLWxpbmU+IF0/IixyZWxldmFuY2U6NTMscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2dyaWQtY29sdW1uIn1dLGRlc2NyaXB0aW9uOiJTaG9ydGhhbmQgZm9yICdncmlkLWNvbHVtbi1zdGFydCcgYW5kICdncmlkLWNvbHVtbi1lbmQnLiIscmVzdHJpY3Rpb25zOlsiaWRlbnRpZmllciIsImludGVnZXIiLCJlbnVtIl19LHtuYW1lOiJncmlkLWNvbHVtbi1lbmQiLGJyb3dzZXJzOlsiRTE2IiwiRkY1MiIsIlMxMC4xIiwiQzU3IiwiTzQ0Il0sdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IlRoZSBwcm9wZXJ0eSBjb250cmlidXRlcyBub3RoaW5nIHRvIHRoZSBncmlkIGl0ZW3igJlzIHBsYWNlbWVudCwgaW5kaWNhdGluZyBhdXRvLXBsYWNlbWVudCwgYW4gYXV0b21hdGljIHNwYW4sIG9yIGEgZGVmYXVsdCBzcGFuIG9mIG9uZS4ifSx7bmFtZToic3BhbiIsZGVzY3JpcHRpb246IkNvbnRyaWJ1dGVzIGEgZ3JpZCBzcGFuIHRvIHRoZSBncmlkIGl0ZW3igJlzIHBsYWNlbWVudCBzdWNoIHRoYXQgdGhlIGNvcnJlc3BvbmRpbmcgZWRnZSBvZiB0aGUgZ3JpZCBpdGVt4oCZcyBncmlkIGFyZWEgaXMgTiBsaW5lcyBmcm9tIGl0cyBvcHBvc2l0ZSBlZGdlLiJ9XSxzeW50YXg6IjxncmlkLWxpbmU+IixyZWxldmFuY2U6NTEscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2dyaWQtY29sdW1uLWVuZCJ9XSxkZXNjcmlwdGlvbjoiRGV0ZXJtaW5lIGEgZ3JpZCBpdGVt4oCZcyBzaXplIGFuZCBsb2NhdGlvbiB3aXRoaW4gdGhlIGdyaWQgYnkgY29udHJpYnV0aW5nIGEgbGluZSwgYSBzcGFuLCBvciBub3RoaW5nIChhdXRvbWF0aWMpIHRvIGl0cyBncmlkIHBsYWNlbWVudC4iLHJlc3RyaWN0aW9uczpbImlkZW50aWZpZXIiLCJpbnRlZ2VyIiwiZW51bSJdfSx7bmFtZToiZ3JpZC1jb2x1bW4tZ2FwIixicm93c2VyczpbIkZGNTIiLCJDNTciLCJTMTAuMSIsIk80NCJdLHN0YXR1czoib2Jzb2xldGUiLHN5bnRheDoiPGxlbmd0aC1wZXJjZW50YWdlPiIscmVsZXZhbmNlOjIsZGVzY3JpcHRpb246IlNwZWNpZmllcyB0aGUgZ3V0dGVycyBiZXR3ZWVuIGdyaWQgY29sdW1ucy4gUmVwbGFjZWQgYnkgJ2NvbHVtbi1nYXAnIHByb3BlcnR5LiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIl19LHtuYW1lOiJncmlkLWNvbHVtbi1zdGFydCIsYnJvd3NlcnM6WyJFMTYiLCJGRjUyIiwiUzEwLjEiLCJDNTciLCJPNDQiXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiVGhlIHByb3BlcnR5IGNvbnRyaWJ1dGVzIG5vdGhpbmcgdG8gdGhlIGdyaWQgaXRlbeKAmXMgcGxhY2VtZW50LCBpbmRpY2F0aW5nIGF1dG8tcGxhY2VtZW50LCBhbiBhdXRvbWF0aWMgc3Bhbiwgb3IgYSBkZWZhdWx0IHNwYW4gb2Ygb25lLiJ9LHtuYW1lOiJzcGFuIixkZXNjcmlwdGlvbjoiQ29udHJpYnV0ZXMgYSBncmlkIHNwYW4gdG8gdGhlIGdyaWQgaXRlbeKAmXMgcGxhY2VtZW50IHN1Y2ggdGhhdCB0aGUgY29ycmVzcG9uZGluZyBlZGdlIG9mIHRoZSBncmlkIGl0ZW3igJlzIGdyaWQgYXJlYSBpcyBOIGxpbmVzIGZyb20gaXRzIG9wcG9zaXRlIGVkZ2UuIn1dLHN5bnRheDoiPGdyaWQtbGluZT4iLHJlbGV2YW5jZTo1MSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvZ3JpZC1jb2x1bW4tc3RhcnQifV0sZGVzY3JpcHRpb246IkRldGVybWluZSBhIGdyaWQgaXRlbeKAmXMgc2l6ZSBhbmQgbG9jYXRpb24gd2l0aGluIHRoZSBncmlkIGJ5IGNvbnRyaWJ1dGluZyBhIGxpbmUsIGEgc3Bhbiwgb3Igbm90aGluZyAoYXV0b21hdGljKSB0byBpdHMgZ3JpZCBwbGFjZW1lbnQuIixyZXN0cmljdGlvbnM6WyJpZGVudGlmaWVyIiwiaW50ZWdlciIsImVudW0iXX0se25hbWU6ImdyaWQtZ2FwIixicm93c2VyczpbIkZGNTIiLCJDNTciLCJTMTAuMSIsIk80NCJdLHN0YXR1czoib2Jzb2xldGUiLHN5bnRheDoiPCdncmlkLXJvdy1nYXAnPiA8J2dyaWQtY29sdW1uLWdhcCc+PyIscmVsZXZhbmNlOjMsZGVzY3JpcHRpb246IlNob3J0aGFuZCB0aGF0IHNwZWNpZmllcyB0aGUgZ3V0dGVycyBiZXR3ZWVuIGdyaWQgY29sdW1ucyBhbmQgZ3JpZCByb3dzIGluIG9uZSBkZWNsYXJhdGlvbi4gUmVwbGFjZWQgYnkgJ2dhcCcgcHJvcGVydHkuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiXX0se25hbWU6ImdyaWQtcm93Iixicm93c2VyczpbIkUxNiIsIkZGNTIiLCJTMTAuMSIsIkM1NyIsIk80NCJdLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJUaGUgcHJvcGVydHkgY29udHJpYnV0ZXMgbm90aGluZyB0byB0aGUgZ3JpZCBpdGVt4oCZcyBwbGFjZW1lbnQsIGluZGljYXRpbmcgYXV0by1wbGFjZW1lbnQsIGFuIGF1dG9tYXRpYyBzcGFuLCBvciBhIGRlZmF1bHQgc3BhbiBvZiBvbmUuIn0se25hbWU6InNwYW4iLGRlc2NyaXB0aW9uOiJDb250cmlidXRlcyBhIGdyaWQgc3BhbiB0byB0aGUgZ3JpZCBpdGVt4oCZcyBwbGFjZW1lbnQgc3VjaCB0aGF0IHRoZSBjb3JyZXNwb25kaW5nIGVkZ2Ugb2YgdGhlIGdyaWQgaXRlbeKAmXMgZ3JpZCBhcmVhIGlzIE4gbGluZXMgZnJvbSBpdHMgb3Bwb3NpdGUgZWRnZS4ifV0sc3ludGF4OiI8Z3JpZC1saW5lPiBbIC8gPGdyaWQtbGluZT4gXT8iLHJlbGV2YW5jZTo1MixyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvZ3JpZC1yb3cifV0sZGVzY3JpcHRpb246IlNob3J0aGFuZCBmb3IgJ2dyaWQtcm93LXN0YXJ0JyBhbmQgJ2dyaWQtcm93LWVuZCcuIixyZXN0cmljdGlvbnM6WyJpZGVudGlmaWVyIiwiaW50ZWdlciIsImVudW0iXX0se25hbWU6ImdyaWQtcm93LWVuZCIsYnJvd3NlcnM6WyJFMTYiLCJGRjUyIiwiUzEwLjEiLCJDNTciLCJPNDQiXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiVGhlIHByb3BlcnR5IGNvbnRyaWJ1dGVzIG5vdGhpbmcgdG8gdGhlIGdyaWQgaXRlbeKAmXMgcGxhY2VtZW50LCBpbmRpY2F0aW5nIGF1dG8tcGxhY2VtZW50LCBhbiBhdXRvbWF0aWMgc3Bhbiwgb3IgYSBkZWZhdWx0IHNwYW4gb2Ygb25lLiJ9LHtuYW1lOiJzcGFuIixkZXNjcmlwdGlvbjoiQ29udHJpYnV0ZXMgYSBncmlkIHNwYW4gdG8gdGhlIGdyaWQgaXRlbeKAmXMgcGxhY2VtZW50IHN1Y2ggdGhhdCB0aGUgY29ycmVzcG9uZGluZyBlZGdlIG9mIHRoZSBncmlkIGl0ZW3igJlzIGdyaWQgYXJlYSBpcyBOIGxpbmVzIGZyb20gaXRzIG9wcG9zaXRlIGVkZ2UuIn1dLHN5bnRheDoiPGdyaWQtbGluZT4iLHJlbGV2YW5jZTo1MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvZ3JpZC1yb3ctZW5kIn1dLGRlc2NyaXB0aW9uOiJEZXRlcm1pbmUgYSBncmlkIGl0ZW3igJlzIHNpemUgYW5kIGxvY2F0aW9uIHdpdGhpbiB0aGUgZ3JpZCBieSBjb250cmlidXRpbmcgYSBsaW5lLCBhIHNwYW4sIG9yIG5vdGhpbmcgKGF1dG9tYXRpYykgdG8gaXRzIGdyaWQgcGxhY2VtZW50LiIscmVzdHJpY3Rpb25zOlsiaWRlbnRpZmllciIsImludGVnZXIiLCJlbnVtIl19LHtuYW1lOiJncmlkLXJvdy1nYXAiLGJyb3dzZXJzOlsiRkY1MiIsIkM1NyIsIlMxMC4xIiwiTzQ0Il0sc3RhdHVzOiJvYnNvbGV0ZSIsc3ludGF4OiI8bGVuZ3RoLXBlcmNlbnRhZ2U+IixyZWxldmFuY2U6MSxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHRoZSBndXR0ZXJzIGJldHdlZW4gZ3JpZCByb3dzLiBSZXBsYWNlZCBieSAncm93LWdhcCcgcHJvcGVydHkuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiXX0se25hbWU6ImdyaWQtcm93LXN0YXJ0Iixicm93c2VyczpbIkUxNiIsIkZGNTIiLCJTMTAuMSIsIkM1NyIsIk80NCJdLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJUaGUgcHJvcGVydHkgY29udHJpYnV0ZXMgbm90aGluZyB0byB0aGUgZ3JpZCBpdGVt4oCZcyBwbGFjZW1lbnQsIGluZGljYXRpbmcgYXV0by1wbGFjZW1lbnQsIGFuIGF1dG9tYXRpYyBzcGFuLCBvciBhIGRlZmF1bHQgc3BhbiBvZiBvbmUuIn0se25hbWU6InNwYW4iLGRlc2NyaXB0aW9uOiJDb250cmlidXRlcyBhIGdyaWQgc3BhbiB0byB0aGUgZ3JpZCBpdGVt4oCZcyBwbGFjZW1lbnQgc3VjaCB0aGF0IHRoZSBjb3JyZXNwb25kaW5nIGVkZ2Ugb2YgdGhlIGdyaWQgaXRlbeKAmXMgZ3JpZCBhcmVhIGlzIE4gbGluZXMgZnJvbSBpdHMgb3Bwb3NpdGUgZWRnZS4ifV0sc3ludGF4OiI8Z3JpZC1saW5lPiIscmVsZXZhbmNlOjUwLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ncmlkLXJvdy1zdGFydCJ9XSxkZXNjcmlwdGlvbjoiRGV0ZXJtaW5lIGEgZ3JpZCBpdGVt4oCZcyBzaXplIGFuZCBsb2NhdGlvbiB3aXRoaW4gdGhlIGdyaWQgYnkgY29udHJpYnV0aW5nIGEgbGluZSwgYSBzcGFuLCBvciBub3RoaW5nIChhdXRvbWF0aWMpIHRvIGl0cyBncmlkIHBsYWNlbWVudC4iLHJlc3RyaWN0aW9uczpbImlkZW50aWZpZXIiLCJpbnRlZ2VyIiwiZW51bSJdfSx7bmFtZToiZ3JpZC10ZW1wbGF0ZSIsYnJvd3NlcnM6WyJFMTYiLCJGRjUyIiwiUzEwLjEiLCJDNTciLCJPNDQiXSx2YWx1ZXM6W3tuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiU2V0cyBhbGwgdGhyZWUgcHJvcGVydGllcyB0byB0aGVpciBpbml0aWFsIHZhbHVlcy4ifSx7bmFtZToibWluLWNvbnRlbnQiLGRlc2NyaXB0aW9uOiJSZXByZXNlbnRzIHRoZSBsYXJnZXN0IG1pbi1jb250ZW50IGNvbnRyaWJ1dGlvbiBvZiB0aGUgZ3JpZCBpdGVtcyBvY2N1cHlpbmcgdGhlIGdyaWQgdHJhY2suIn0se25hbWU6Im1heC1jb250ZW50IixkZXNjcmlwdGlvbjoiUmVwcmVzZW50cyB0aGUgbGFyZ2VzdCBtYXgtY29udGVudCBjb250cmlidXRpb24gb2YgdGhlIGdyaWQgaXRlbXMgb2NjdXB5aW5nIHRoZSBncmlkIHRyYWNrLiJ9LHtuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiQXMgYSBtYXhpbXVtLCBpZGVudGljYWwgdG8gJ21heC1jb250ZW50Jy4gQXMgYSBtaW5pbXVtLCByZXByZXNlbnRzIHRoZSBsYXJnZXN0IG1pbmltdW0gc2l6ZSAoYXMgc3BlY2lmaWVkIGJ5IG1pbi13aWR0aC9taW4taGVpZ2h0KSBvZiB0aGUgZ3JpZCBpdGVtcyBvY2N1cHlpbmcgdGhlIGdyaWQgdHJhY2suIn0se25hbWU6InN1YmdyaWQiLGRlc2NyaXB0aW9uOiJTZXRzICdncmlkLXRlbXBsYXRlLXJvd3MnIGFuZCAnZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zJyB0byAnc3ViZ3JpZCcsIGFuZCAnZ3JpZC10ZW1wbGF0ZS1hcmVhcycgdG8gaXRzIGluaXRpYWwgdmFsdWUuIn0se25hbWU6Im1pbm1heCgpIixkZXNjcmlwdGlvbjoiRGVmaW5lcyBhIHNpemUgcmFuZ2UgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIG1pbiBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIG1heC4ifSx7bmFtZToicmVwZWF0KCkiLGRlc2NyaXB0aW9uOiJSZXByZXNlbnRzIGEgcmVwZWF0ZWQgZnJhZ21lbnQgb2YgdGhlIHRyYWNrIGxpc3QsIGFsbG93aW5nIGEgbGFyZ2UgbnVtYmVyIG9mIGNvbHVtbnMgb3Igcm93cyB0aGF0IGV4aGliaXQgYSByZWN1cnJpbmcgcGF0dGVybiB0byBiZSB3cml0dGVuIGluIGEgbW9yZSBjb21wYWN0IGZvcm0uIn1dLHN5bnRheDoibm9uZSB8IFsgPCdncmlkLXRlbXBsYXRlLXJvd3MnPiAvIDwnZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zJz4gXSB8IFsgPGxpbmUtbmFtZXM+PyA8c3RyaW5nPiA8dHJhY2stc2l6ZT4/IDxsaW5lLW5hbWVzPj8gXSsgWyAvIDxleHBsaWNpdC10cmFjay1saXN0PiBdPyIscmVsZXZhbmNlOjUwLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ncmlkLXRlbXBsYXRlIn1dLGRlc2NyaXB0aW9uOiJTaG9ydGhhbmQgZm9yIHNldHRpbmcgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zLCBncmlkLXRlbXBsYXRlLXJvd3MsIGFuZCBncmlkLXRlbXBsYXRlLWFyZWFzIGluIGEgc2luZ2xlIGRlY2xhcmF0aW9uLiIscmVzdHJpY3Rpb25zOlsiaWRlbnRpZmllciIsImxlbmd0aCIsInBlcmNlbnRhZ2UiLCJzdHJpbmciLCJlbnVtIl19LHtuYW1lOiJncmlkLXRlbXBsYXRlLWFyZWFzIixicm93c2VyczpbIkUxNiIsIkZGNTIiLCJTMTAuMSIsIkM1NyIsIk80NCJdLHZhbHVlczpbe25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJUaGUgZ3JpZCBjb250YWluZXIgZG9lc27igJl0IGRlZmluZSBhbnkgbmFtZWQgZ3JpZCBhcmVhcy4ifV0sc3ludGF4OiJub25lIHwgPHN0cmluZz4rIixyZWxldmFuY2U6NTIscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2dyaWQtdGVtcGxhdGUtYXJlYXMifV0sZGVzY3JpcHRpb246IlNwZWNpZmllcyBuYW1lZCBncmlkIGFyZWFzLCB3aGljaCBhcmUgbm90IGFzc29jaWF0ZWQgd2l0aCBhbnkgcGFydGljdWxhciBncmlkIGl0ZW0sIGJ1dCBjYW4gYmUgcmVmZXJlbmNlZCBmcm9tIHRoZSBncmlkLXBsYWNlbWVudCBwcm9wZXJ0aWVzLiIscmVzdHJpY3Rpb25zOlsic3RyaW5nIl19LHtuYW1lOiJncmlkLXRlbXBsYXRlLWNvbHVtbnMiLHZhbHVlczpbe25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJUaGVyZSBpcyBubyBleHBsaWNpdCBncmlkOyBhbnkgcm93cy9jb2x1bW5zIHdpbGwgYmUgaW1wbGljaXRseSBnZW5lcmF0ZWQuIn0se25hbWU6Im1pbi1jb250ZW50IixkZXNjcmlwdGlvbjoiUmVwcmVzZW50cyB0aGUgbGFyZ2VzdCBtaW4tY29udGVudCBjb250cmlidXRpb24gb2YgdGhlIGdyaWQgaXRlbXMgb2NjdXB5aW5nIHRoZSBncmlkIHRyYWNrLiJ9LHtuYW1lOiJtYXgtY29udGVudCIsZGVzY3JpcHRpb246IlJlcHJlc2VudHMgdGhlIGxhcmdlc3QgbWF4LWNvbnRlbnQgY29udHJpYnV0aW9uIG9mIHRoZSBncmlkIGl0ZW1zIG9jY3VweWluZyB0aGUgZ3JpZCB0cmFjay4ifSx7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IkFzIGEgbWF4aW11bSwgaWRlbnRpY2FsIHRvICdtYXgtY29udGVudCcuIEFzIGEgbWluaW11bSwgcmVwcmVzZW50cyB0aGUgbGFyZ2VzdCBtaW5pbXVtIHNpemUgKGFzIHNwZWNpZmllZCBieSBtaW4td2lkdGgvbWluLWhlaWdodCkgb2YgdGhlIGdyaWQgaXRlbXMgb2NjdXB5aW5nIHRoZSBncmlkIHRyYWNrLiJ9LHtuYW1lOiJzdWJncmlkIixkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHRoYXQgdGhlIGdyaWQgd2lsbCBhbGlnbiB0byBpdHMgcGFyZW50IGdyaWQgaW4gdGhhdCBheGlzLiJ9LHtuYW1lOiJtaW5tYXgoKSIsZGVzY3JpcHRpb246IkRlZmluZXMgYSBzaXplIHJhbmdlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byBtaW4gYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byBtYXguIn0se25hbWU6InJlcGVhdCgpIixkZXNjcmlwdGlvbjoiUmVwcmVzZW50cyBhIHJlcGVhdGVkIGZyYWdtZW50IG9mIHRoZSB0cmFjayBsaXN0LCBhbGxvd2luZyBhIGxhcmdlIG51bWJlciBvZiBjb2x1bW5zIG9yIHJvd3MgdGhhdCBleGhpYml0IGEgcmVjdXJyaW5nIHBhdHRlcm4gdG8gYmUgd3JpdHRlbiBpbiBhIG1vcmUgY29tcGFjdCBmb3JtLiJ9XSxzeW50YXg6Im5vbmUgfCA8dHJhY2stbGlzdD4gfCA8YXV0by10cmFjay1saXN0PiB8IHN1YmdyaWQgPGxpbmUtbmFtZS1saXN0Pj8iLHJlbGV2YW5jZTo1OCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zIn1dLGRlc2NyaXB0aW9uOiJzcGVjaWZpZXMsIGFzIGEgc3BhY2Utc2VwYXJhdGVkIHRyYWNrIGxpc3QsIHRoZSBsaW5lIG5hbWVzIGFuZCB0cmFjayBzaXppbmcgZnVuY3Rpb25zIG9mIHRoZSBncmlkLiIscmVzdHJpY3Rpb25zOlsiaWRlbnRpZmllciIsImxlbmd0aCIsInBlcmNlbnRhZ2UiLCJlbnVtIl19LHtuYW1lOiJncmlkLXRlbXBsYXRlLXJvd3MiLHZhbHVlczpbe25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJUaGVyZSBpcyBubyBleHBsaWNpdCBncmlkOyBhbnkgcm93cy9jb2x1bW5zIHdpbGwgYmUgaW1wbGljaXRseSBnZW5lcmF0ZWQuIn0se25hbWU6Im1pbi1jb250ZW50IixkZXNjcmlwdGlvbjoiUmVwcmVzZW50cyB0aGUgbGFyZ2VzdCBtaW4tY29udGVudCBjb250cmlidXRpb24gb2YgdGhlIGdyaWQgaXRlbXMgb2NjdXB5aW5nIHRoZSBncmlkIHRyYWNrLiJ9LHtuYW1lOiJtYXgtY29udGVudCIsZGVzY3JpcHRpb246IlJlcHJlc2VudHMgdGhlIGxhcmdlc3QgbWF4LWNvbnRlbnQgY29udHJpYnV0aW9uIG9mIHRoZSBncmlkIGl0ZW1zIG9jY3VweWluZyB0aGUgZ3JpZCB0cmFjay4ifSx7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IkFzIGEgbWF4aW11bSwgaWRlbnRpY2FsIHRvICdtYXgtY29udGVudCcuIEFzIGEgbWluaW11bSwgcmVwcmVzZW50cyB0aGUgbGFyZ2VzdCBtaW5pbXVtIHNpemUgKGFzIHNwZWNpZmllZCBieSBtaW4td2lkdGgvbWluLWhlaWdodCkgb2YgdGhlIGdyaWQgaXRlbXMgb2NjdXB5aW5nIHRoZSBncmlkIHRyYWNrLiJ9LHtuYW1lOiJzdWJncmlkIixkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHRoYXQgdGhlIGdyaWQgd2lsbCBhbGlnbiB0byBpdHMgcGFyZW50IGdyaWQgaW4gdGhhdCBheGlzLiJ9LHtuYW1lOiJtaW5tYXgoKSIsZGVzY3JpcHRpb246IkRlZmluZXMgYSBzaXplIHJhbmdlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byBtaW4gYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byBtYXguIn0se25hbWU6InJlcGVhdCgpIixkZXNjcmlwdGlvbjoiUmVwcmVzZW50cyBhIHJlcGVhdGVkIGZyYWdtZW50IG9mIHRoZSB0cmFjayBsaXN0LCBhbGxvd2luZyBhIGxhcmdlIG51bWJlciBvZiBjb2x1bW5zIG9yIHJvd3MgdGhhdCBleGhpYml0IGEgcmVjdXJyaW5nIHBhdHRlcm4gdG8gYmUgd3JpdHRlbiBpbiBhIG1vcmUgY29tcGFjdCBmb3JtLiJ9XSxzeW50YXg6Im5vbmUgfCA8dHJhY2stbGlzdD4gfCA8YXV0by10cmFjay1saXN0PiB8IHN1YmdyaWQgPGxpbmUtbmFtZS1saXN0Pj8iLHJlbGV2YW5jZTo1NCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvZ3JpZC10ZW1wbGF0ZS1yb3dzIn1dLGRlc2NyaXB0aW9uOiJzcGVjaWZpZXMsIGFzIGEgc3BhY2Utc2VwYXJhdGVkIHRyYWNrIGxpc3QsIHRoZSBsaW5lIG5hbWVzIGFuZCB0cmFjayBzaXppbmcgZnVuY3Rpb25zIG9mIHRoZSBncmlkLiIscmVzdHJpY3Rpb25zOlsiaWRlbnRpZmllciIsImxlbmd0aCIsInBlcmNlbnRhZ2UiLCJzdHJpbmciLCJlbnVtIl19LHtuYW1lOiJoZWlnaHQiLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJUaGUgaGVpZ2h0IGRlcGVuZHMgb24gdGhlIHZhbHVlcyBvZiBvdGhlciBwcm9wZXJ0aWVzLiJ9LHtuYW1lOiJmaXQtY29udGVudCIsZGVzY3JpcHRpb246IlVzZSB0aGUgZml0LWNvbnRlbnQgaW5saW5lIHNpemUgb3IgZml0LWNvbnRlbnQgYmxvY2sgc2l6ZSwgYXMgYXBwcm9wcmlhdGUgdG8gdGhlIHdyaXRpbmcgbW9kZS4ifSx7bmFtZToibWF4LWNvbnRlbnQiLGRlc2NyaXB0aW9uOiJVc2UgdGhlIG1heC1jb250ZW50IGlubGluZSBzaXplIG9yIG1heC1jb250ZW50IGJsb2NrIHNpemUsIGFzIGFwcHJvcHJpYXRlIHRvIHRoZSB3cml0aW5nIG1vZGUuIn0se25hbWU6Im1pbi1jb250ZW50IixkZXNjcmlwdGlvbjoiVXNlIHRoZSBtaW4tY29udGVudCBpbmxpbmUgc2l6ZSBvciBtaW4tY29udGVudCBibG9jayBzaXplLCBhcyBhcHByb3ByaWF0ZSB0byB0aGUgd3JpdGluZyBtb2RlLiJ9XSxzeW50YXg6Ijx2aWV3cG9ydC1sZW5ndGg+ezEsMn0iLHJlbGV2YW5jZTo5NixyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvaGVpZ2h0In1dLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgdGhlIGhlaWdodCBvZiB0aGUgY29udGVudCBhcmVhLCBwYWRkaW5nIGFyZWEgb3IgYm9yZGVyIGFyZWEgKGRlcGVuZGluZyBvbiAnYm94LXNpemluZycpIG9mIGNlcnRhaW4gYm94ZXMuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJwZXJjZW50YWdlIl19LHtuYW1lOiJoeXBoZW5zIix2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiQ29uZGl0aW9uYWwgaHlwaGVuYXRpb24gY2hhcmFjdGVycyBpbnNpZGUgYSB3b3JkLCBpZiBwcmVzZW50LCB0YWtlIHByaW9yaXR5IG92ZXIgYXV0b21hdGljIHJlc291cmNlcyB3aGVuIGRldGVybWluaW5nIGh5cGhlbmF0aW9uIHBvaW50cyB3aXRoaW4gdGhlIHdvcmQuIn0se25hbWU6Im1hbnVhbCIsZGVzY3JpcHRpb246IldvcmRzIGFyZSBvbmx5IGJyb2tlbiBhdCBsaW5lIGJyZWFrcyB3aGVyZSB0aGVyZSBhcmUgY2hhcmFjdGVycyBpbnNpZGUgdGhlIHdvcmQgdGhhdCBzdWdnZXN0IGxpbmUgYnJlYWsgb3Bwb3J0dW5pdGllcyJ9LHtuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiV29yZHMgYXJlIG5vdCBicm9rZW4gYXQgbGluZSBicmVha3MsIGV2ZW4gaWYgY2hhcmFjdGVycyBpbnNpZGUgdGhlIHdvcmQgc3VnZ2VzdCBsaW5lIGJyZWFrIHBvaW50cy4ifV0sc3ludGF4OiJub25lIHwgbWFudWFsIHwgYXV0byIscmVsZXZhbmNlOjU1LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9oeXBoZW5zIn1dLGRlc2NyaXB0aW9uOiJDb250cm9scyB3aGV0aGVyIGh5cGhlbmF0aW9uIGlzIGFsbG93ZWQgdG8gY3JlYXRlIG1vcmUgYnJlYWsgb3Bwb3J0dW5pdGllcyB3aXRoaW4gYSBsaW5lIG9mIHRleHQuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJpbWFnZS1vcmllbnRhdGlvbiIsYnJvd3NlcnM6WyJFODEiLCJGRjI2IiwiUzEzLjEiLCJDODEiLCJPNjciXSx2YWx1ZXM6W3tuYW1lOiJmbGlwIixkZXNjcmlwdGlvbjoiQWZ0ZXIgcm90YXRpbmcgYnkgdGhlIHByZWNlZGVkaW5nIGFuZ2xlLCB0aGUgaW1hZ2UgaXMgZmxpcHBlZCBob3Jpem9udGFsbHkuIERlZmF1bHRzIHRvIDBkZWcgaWYgdGhlIGFuZ2xlIGlzIG9tbWl0dGVkLiJ9LHtuYW1lOiJmcm9tLWltYWdlIixkZXNjcmlwdGlvbjoiSWYgdGhlIGltYWdlIGhhcyBhbiBvcmllbnRhdGlvbiBzcGVjaWZpZWQgaW4gaXRzIG1ldGFkYXRhLCBzdWNoIGFzIEVYSUYsIHRoaXMgdmFsdWUgY29tcHV0ZXMgdG8gdGhlIGFuZ2xlIHRoYXQgdGhlIG1ldGFkYXRhIHNwZWNpZmllcyBpcyBuZWNlc3NhcnkgdG8gY29ycmVjdGx5IG9yaWVudCB0aGUgaW1hZ2UuIn1dLHN5bnRheDoiZnJvbS1pbWFnZSB8IDxhbmdsZT4gfCBbIDxhbmdsZT4/IGZsaXAgXSIscmVsZXZhbmNlOjUwLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9pbWFnZS1vcmllbnRhdGlvbiJ9XSxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGFuIG9ydGhvZ29uYWwgcm90YXRpb24gdG8gYmUgYXBwbGllZCB0byBhbiBpbWFnZSBiZWZvcmUgaXQgaXMgbGFpZCBvdXQuIixyZXN0cmljdGlvbnM6WyJhbmdsZSJdfSx7bmFtZToiaW1hZ2UtcmVuZGVyaW5nIixicm93c2VyczpbIkU3OSIsIkZGMy42IiwiUzYiLCJDMTMiLCJPMTUiXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiVGhlIGltYWdlIHNob3VsZCBiZSBzY2FsZWQgd2l0aCBhbiBhbGdvcml0aG0gdGhhdCBtYXhpbWl6ZXMgdGhlIGFwcGVhcmFuY2Ugb2YgdGhlIGltYWdlLiJ9LHtuYW1lOiJjcmlzcC1lZGdlcyIsZGVzY3JpcHRpb246IlRoZSBpbWFnZSBtdXN0IGJlIHNjYWxlZCB3aXRoIGFuIGFsZ29yaXRobSB0aGF0IHByZXNlcnZlcyBjb250cmFzdCBhbmQgZWRnZXMgaW4gdGhlIGltYWdlLCBhbmQgd2hpY2ggZG9lcyBub3Qgc21vb3RoIGNvbG9ycyBvciBpbnRyb2R1Y2UgYmx1ciB0byB0aGUgaW1hZ2UgaW4gdGhlIHByb2Nlc3MuIn0se25hbWU6Ii1tb3otY3Jpc3AtZWRnZXMiLGJyb3dzZXJzOlsiRTc5IiwiRkYzLjYiLCJTNiIsIkMxMyIsIk8xNSJdfSx7bmFtZToib3B0aW1pemVRdWFsaXR5IixkZXNjcmlwdGlvbjoiRGVwcmVjYXRlZC4ifSx7bmFtZToib3B0aW1pemVTcGVlZCIsZGVzY3JpcHRpb246IkRlcHJlY2F0ZWQuIn0se25hbWU6InBpeGVsYXRlZCIsZGVzY3JpcHRpb246IldoZW4gc2NhbGluZyB0aGUgaW1hZ2UgdXAsIHRoZSAnbmVhcmVzdCBuZWlnaGJvcicgb3Igc2ltaWxhciBhbGdvcml0aG0gbXVzdCBiZSB1c2VkLCBzbyB0aGF0IHRoZSBpbWFnZSBhcHBlYXJzIHRvIGJlIHNpbXBseSBjb21wb3NlZCBvZiB2ZXJ5IGxhcmdlIHBpeGVscy4ifV0sc3ludGF4OiJhdXRvIHwgY3Jpc3AtZWRnZXMgfCBwaXhlbGF0ZWQiLHJlbGV2YW5jZTo1NCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvaW1hZ2UtcmVuZGVyaW5nIn1dLGRlc2NyaXB0aW9uOiJQcm92aWRlcyBhIGhpbnQgdG8gdGhlIHVzZXItYWdlbnQgYWJvdXQgd2hhdCBhc3BlY3RzIG9mIGFuIGltYWdlIGFyZSBtb3N0IGltcG9ydGFudCB0byBwcmVzZXJ2ZSB3aGVuIHRoZSBpbWFnZSBpcyBzY2FsZWQsIHRvIGFpZCB0aGUgdXNlci1hZ2VudCBpbiB0aGUgY2hvaWNlIG9mIGFuIGFwcHJvcHJpYXRlIHNjYWxpbmcgYWxnb3JpdGhtLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiaW1lLW1vZGUiLGJyb3dzZXJzOlsiRTEyIiwiRkYzIiwiSUU1Il0sdmFsdWVzOlt7bmFtZToiYWN0aXZlIixkZXNjcmlwdGlvbjoiVGhlIGlucHV0IG1ldGhvZCBlZGl0b3IgaXMgaW5pdGlhbGx5IGFjdGl2ZTsgdGV4dCBlbnRyeSBpcyBwZXJmb3JtZWQgdXNpbmcgaXQgdW5sZXNzIHRoZSB1c2VyIHNwZWNpZmljYWxseSBkaXNtaXNzZXMgaXQuIn0se25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJObyBjaGFuZ2UgaXMgbWFkZSB0byB0aGUgY3VycmVudCBpbnB1dCBtZXRob2QgZWRpdG9yIHN0YXRlLiBUaGlzIGlzIHRoZSBkZWZhdWx0LiJ9LHtuYW1lOiJkaXNhYmxlZCIsZGVzY3JpcHRpb246IlRoZSBpbnB1dCBtZXRob2QgZWRpdG9yIGlzIGRpc2FibGVkIGFuZCBtYXkgbm90IGJlIGFjdGl2YXRlZCBieSB0aGUgdXNlci4ifSx7bmFtZToiaW5hY3RpdmUiLGRlc2NyaXB0aW9uOiJUaGUgaW5wdXQgbWV0aG9kIGVkaXRvciBpcyBpbml0aWFsbHkgaW5hY3RpdmUsIGJ1dCB0aGUgdXNlciBtYXkgYWN0aXZhdGUgaXQgaWYgdGhleSB3aXNoLiJ9LHtuYW1lOiJub3JtYWwiLGRlc2NyaXB0aW9uOiJUaGUgSU1FIHN0YXRlIHNob3VsZCBiZSBub3JtYWw7IHRoaXMgdmFsdWUgY2FuIGJlIHVzZWQgaW4gYSB1c2VyIHN0eWxlIHNoZWV0IHRvIG92ZXJyaWRlIHRoZSBwYWdlIHNldHRpbmcuIn1dLHN0YXR1czoib2Jzb2xldGUiLHN5bnRheDoiYXV0byB8IG5vcm1hbCB8IGFjdGl2ZSB8IGluYWN0aXZlIHwgZGlzYWJsZWQiLHJlbGV2YW5jZTowLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9pbWUtbW9kZSJ9XSxkZXNjcmlwdGlvbjoiQ29udHJvbHMgdGhlIHN0YXRlIG9mIHRoZSBpbnB1dCBtZXRob2QgZWRpdG9yIGZvciB0ZXh0IGZpZWxkcy4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6ImlubGluZS1zaXplIixicm93c2VyczpbIkU3OSIsIkZGNDEiLCJTMTIuMSIsIkM1NyIsIk80NCJdLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJEZXBlbmRzIG9uIHRoZSB2YWx1ZXMgb2Ygb3RoZXIgcHJvcGVydGllcy4ifV0sc3ludGF4OiI8J3dpZHRoJz4iLHJlbGV2YW5jZTo1MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvaW5saW5lLXNpemUifV0sZGVzY3JpcHRpb246IlNpemUgb2YgYW4gZWxlbWVudCBpbiB0aGUgZGlyZWN0aW9uIHNwZWNpZmllZCBieSAnd3JpdGluZy1tb2RlJy4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsInBlcmNlbnRhZ2UiXX0se25hbWU6Imlzb2xhdGlvbiIsYnJvd3NlcnM6WyJFNzkiLCJGRjM2IiwiUzgiLCJDNDEiLCJPMzAiXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiRWxlbWVudHMgYXJlIG5vdCBpc29sYXRlZCB1bmxlc3MgYW4gb3BlcmF0aW9uIGlzIGFwcGxpZWQgdGhhdCBjYXVzZXMgdGhlIGNyZWF0aW9uIG9mIGEgc3RhY2tpbmcgY29udGV4dC4ifSx7bmFtZToiaXNvbGF0ZSIsZGVzY3JpcHRpb246IkluIENTUyB3aWxsIHR1cm4gdGhlIGVsZW1lbnQgaW50byBhIHN0YWNraW5nIGNvbnRleHQuIn1dLHN5bnRheDoiYXV0byB8IGlzb2xhdGUiLHJlbGV2YW5jZTo1MSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvaXNvbGF0aW9uIn1dLGRlc2NyaXB0aW9uOiJJbiBDU1Mgc2V0dGluZyB0byAnaXNvbGF0ZScgd2lsbCB0dXJuIHRoZSBlbGVtZW50IGludG8gYSBzdGFja2luZyBjb250ZXh0LiBJbiBTVkcsIGl0IGRlZmluZXMgd2hldGhlciBhbiBlbGVtZW50IGlzIGlzb2xhdGVkIG9yIG5vdC4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Imp1c3RpZnktY29udGVudCIsdmFsdWVzOlt7bmFtZToiY2VudGVyIixkZXNjcmlwdGlvbjoiRmxleCBpdGVtcyBhcmUgcGFja2VkIHRvd2FyZCB0aGUgY2VudGVyIG9mIHRoZSBsaW5lLiJ9LHtuYW1lOiJzdGFydCIsZGVzY3JpcHRpb246IlRoZSBpdGVtcyBhcmUgcGFja2VkIGZsdXNoIHRvIGVhY2ggb3RoZXIgdG93YXJkIHRoZSBzdGFydCBlZGdlIG9mIHRoZSBhbGlnbm1lbnQgY29udGFpbmVyIGluIHRoZSBtYWluIGF4aXMuIn0se25hbWU6ImVuZCIsZGVzY3JpcHRpb246IlRoZSBpdGVtcyBhcmUgcGFja2VkIGZsdXNoIHRvIGVhY2ggb3RoZXIgdG93YXJkIHRoZSBlbmQgZWRnZSBvZiB0aGUgYWxpZ25tZW50IGNvbnRhaW5lciBpbiB0aGUgbWFpbiBheGlzLiJ9LHtuYW1lOiJsZWZ0IixkZXNjcmlwdGlvbjoiVGhlIGl0ZW1zIGFyZSBwYWNrZWQgZmx1c2ggdG8gZWFjaCBvdGhlciB0b3dhcmQgdGhlIGxlZnQgZWRnZSBvZiB0aGUgYWxpZ25tZW50IGNvbnRhaW5lciBpbiB0aGUgbWFpbiBheGlzLiJ9LHtuYW1lOiJyaWdodCIsZGVzY3JpcHRpb246IlRoZSBpdGVtcyBhcmUgcGFja2VkIGZsdXNoIHRvIGVhY2ggb3RoZXIgdG93YXJkIHRoZSByaWdodCBlZGdlIG9mIHRoZSBhbGlnbm1lbnQgY29udGFpbmVyIGluIHRoZSBtYWluIGF4aXMuIn0se25hbWU6InNhZmUiLGRlc2NyaXB0aW9uOiJJZiB0aGUgc2l6ZSBvZiB0aGUgaXRlbSBvdmVyZmxvd3MgdGhlIGFsaWdubWVudCBjb250YWluZXIsIHRoZSBpdGVtIGlzIGluc3RlYWQgYWxpZ25lZCBhcyBpZiB0aGUgYWxpZ25tZW50IG1vZGUgd2VyZSBzdGFydC4ifSx7bmFtZToidW5zYWZlIixkZXNjcmlwdGlvbjoiUmVnYXJkbGVzcyBvZiB0aGUgcmVsYXRpdmUgc2l6ZXMgb2YgdGhlIGl0ZW0gYW5kIGFsaWdubWVudCBjb250YWluZXIsIHRoZSBnaXZlbiBhbGlnbm1lbnQgdmFsdWUgaXMgaG9ub3JlZC4ifSx7bmFtZToic3RyZXRjaCIsZGVzY3JpcHRpb246IklmIHRoZSBjb21iaW5lZCBzaXplIG9mIHRoZSBhbGlnbm1lbnQgc3ViamVjdHMgaXMgbGVzcyB0aGFuIHRoZSBzaXplIG9mIHRoZSBhbGlnbm1lbnQgY29udGFpbmVyLCBhbnkgYXV0by1zaXplZCBhbGlnbm1lbnQgc3ViamVjdHMgaGF2ZSB0aGVpciBzaXplIGluY3JlYXNlZCBlcXVhbGx5IChub3QgcHJvcG9ydGlvbmFsbHkpLCB3aGlsZSBzdGlsbCByZXNwZWN0aW5nIHRoZSBjb25zdHJhaW50cyBpbXBvc2VkIGJ5IG1heC1oZWlnaHQvbWF4LXdpZHRoIChvciBlcXVpdmFsZW50IGZ1bmN0aW9uYWxpdHkpLCBzbyB0aGF0IHRoZSBjb21iaW5lZCBzaXplIGV4YWN0bHkgZmlsbHMgdGhlIGFsaWdubWVudCBjb250YWluZXIuIn0se25hbWU6InNwYWNlLWV2ZW5seSIsZGVzY3JpcHRpb246IlRoZSBpdGVtcyBhcmUgZXZlbmx5IGRpc3RyaWJ1dGVkIHdpdGhpbiB0aGUgYWxpZ25tZW50IGNvbnRhaW5lciBhbG9uZyB0aGUgbWFpbiBheGlzLiJ9LHtuYW1lOiJmbGV4LWVuZCIsZGVzY3JpcHRpb246IkZsZXggaXRlbXMgYXJlIHBhY2tlZCB0b3dhcmQgdGhlIGVuZCBvZiB0aGUgbGluZS4ifSx7bmFtZToiZmxleC1zdGFydCIsZGVzY3JpcHRpb246IkZsZXggaXRlbXMgYXJlIHBhY2tlZCB0b3dhcmQgdGhlIHN0YXJ0IG9mIHRoZSBsaW5lLiJ9LHtuYW1lOiJzcGFjZS1hcm91bmQiLGRlc2NyaXB0aW9uOiJGbGV4IGl0ZW1zIGFyZSBldmVubHkgZGlzdHJpYnV0ZWQgaW4gdGhlIGxpbmUsIHdpdGggaGFsZi1zaXplIHNwYWNlcyBvbiBlaXRoZXIgZW5kLiJ9LHtuYW1lOiJzcGFjZS1iZXR3ZWVuIixkZXNjcmlwdGlvbjoiRmxleCBpdGVtcyBhcmUgZXZlbmx5IGRpc3RyaWJ1dGVkIGluIHRoZSBsaW5lLiJ9LHtuYW1lOiJiYXNlbGluZSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBwYXJ0aWNpcGF0aW9uIGluIGZpcnN0LWJhc2VsaW5lIGFsaWdubWVudC4ifSx7bmFtZToiZmlyc3QgYmFzZWxpbmUiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgcGFydGljaXBhdGlvbiBpbiBmaXJzdC1iYXNlbGluZSBhbGlnbm1lbnQuIn0se25hbWU6Imxhc3QgYmFzZWxpbmUiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgcGFydGljaXBhdGlvbiBpbiBsYXN0LWJhc2VsaW5lIGFsaWdubWVudC4ifV0sc3ludGF4OiJub3JtYWwgfCA8Y29udGVudC1kaXN0cmlidXRpb24+IHwgPG92ZXJmbG93LXBvc2l0aW9uPj8gWyA8Y29udGVudC1wb3NpdGlvbj4gfCBsZWZ0IHwgcmlnaHQgXSIscmVsZXZhbmNlOjg1LGRlc2NyaXB0aW9uOiJBbGlnbnMgZmxleCBpdGVtcyBhbG9uZyB0aGUgbWFpbiBheGlzIG9mIHRoZSBjdXJyZW50IGxpbmUgb2YgdGhlIGZsZXggY29udGFpbmVyLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToia2VybmluZyIsdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGF0IHRoZSB1c2VyIGFnZW50IHNob3VsZCBhZGp1c3QgaW50ZXItZ2x5cGggc3BhY2luZyBiYXNlZCBvbiBrZXJuaW5nIHRhYmxlcyB0aGF0IGFyZSBpbmNsdWRlZCBpbiB0aGUgZm9udCB0aGF0IHdpbGwgYmUgdXNlZC4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgd2hldGhlciB0aGUgdXNlciBhZ2VudCBzaG91bGQgYWRqdXN0IGludGVyLWdseXBoIHNwYWNpbmcgYmFzZWQgb24ga2VybmluZyB0YWJsZXMgdGhhdCBhcmUgaW5jbHVkZWQgaW4gdGhlIHJlbGV2YW50IGZvbnQgb3IgaW5zdGVhZCBkaXNhYmxlIGF1dG8ta2VybmluZyBhbmQgc2V0IGludGVyLWNoYXJhY3RlciBzcGFjaW5nIHRvIGEgc3BlY2lmaWMgbGVuZ3RoLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwiZW51bSJdfSx7bmFtZToibGVmdCIsdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IkZvciBub24tcmVwbGFjZWQgZWxlbWVudHMsIHRoZSBlZmZlY3Qgb2YgdGhpcyB2YWx1ZSBkZXBlbmRzIG9uIHdoaWNoIG9mIHJlbGF0ZWQgcHJvcGVydGllcyBoYXZlIHRoZSB2YWx1ZSAnYXV0bycgYXMgd2VsbCJ9XSxzeW50YXg6IjxsZW5ndGg+IHwgPHBlcmNlbnRhZ2U+IHwgYXV0byIscmVsZXZhbmNlOjk1LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9sZWZ0In1dLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgaG93IGZhciBhbiBhYnNvbHV0ZWx5IHBvc2l0aW9uZWQgYm94J3MgbGVmdCBtYXJnaW4gZWRnZSBpcyBvZmZzZXQgdG8gdGhlIHJpZ2h0IG9mIHRoZSBsZWZ0IGVkZ2Ugb2YgdGhlIGJveCdzICdjb250YWluaW5nIGJsb2NrJy4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsInBlcmNlbnRhZ2UiXX0se25hbWU6ImxldHRlci1zcGFjaW5nIix2YWx1ZXM6W3tuYW1lOiJub3JtYWwiLGRlc2NyaXB0aW9uOiJUaGUgc3BhY2luZyBpcyB0aGUgbm9ybWFsIHNwYWNpbmcgZm9yIHRoZSBjdXJyZW50IGZvbnQuIEl0IGlzIHR5cGljYWxseSB6ZXJvLWxlbmd0aC4ifV0sc3ludGF4OiJub3JtYWwgfCA8bGVuZ3RoPiIscmVsZXZhbmNlOjgxLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9sZXR0ZXItc3BhY2luZyJ9XSxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHRoZSBtaW5pbXVtLCBtYXhpbXVtLCBhbmQgb3B0aW1hbCBzcGFjaW5nIGJldHdlZW4gZ3JhcGhlbWUgY2x1c3RlcnMuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiXX0se25hbWU6ImxpZ2h0aW5nLWNvbG9yIixicm93c2VyczpbIkUiLCJDNSIsIkZGMyIsIklFMTAiLCJPOSIsIlM2Il0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJEZWZpbmVzIHRoZSBjb2xvciBvZiB0aGUgbGlnaHQgc291cmNlIGZvciBmaWx0ZXIgcHJpbWl0aXZlcyAnZmVEaWZmdXNlTGlnaHRpbmcnIGFuZCAnZmVTcGVjdWxhckxpZ2h0aW5nJy4iLHJlc3RyaWN0aW9uczpbImNvbG9yIl19LHtuYW1lOiJsaW5lLWJyZWFrIix2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiVGhlIFVBIGRldGVybWluZXMgdGhlIHNldCBvZiBsaW5lLWJyZWFraW5nIHJlc3RyaWN0aW9ucyB0byB1c2UgZm9yIENKSyBzY3JpcHRzLCBhbmQgaXQgbWF5IHZhcnkgdGhlIHJlc3RyaWN0aW9ucyBiYXNlZCBvbiB0aGUgbGVuZ3RoIG9mIHRoZSBsaW5lOyBlLmcuLCB1c2UgYSBsZXNzIHJlc3RyaWN0aXZlIHNldCBvZiBsaW5lLWJyZWFrIHJ1bGVzIGZvciBzaG9ydCBsaW5lcy4ifSx7bmFtZToibG9vc2UiLGRlc2NyaXB0aW9uOiJCcmVha3MgdGV4dCB1c2luZyB0aGUgbGVhc3QgcmVzdHJpY3RpdmUgc2V0IG9mIGxpbmUtYnJlYWtpbmcgcnVsZXMuIFR5cGljYWxseSB1c2VkIGZvciBzaG9ydCBsaW5lcywgc3VjaCBhcyBpbiBuZXdzcGFwZXJzLiJ9LHtuYW1lOiJub3JtYWwiLGRlc2NyaXB0aW9uOiJCcmVha3MgdGV4dCB1c2luZyB0aGUgbW9zdCBjb21tb24gc2V0IG9mIGxpbmUtYnJlYWtpbmcgcnVsZXMuIn0se25hbWU6InN0cmljdCIsZGVzY3JpcHRpb246IkJyZWFrcyBDSksgc2NyaXB0cyB1c2luZyBhIG1vcmUgcmVzdHJpY3RpdmUgc2V0IG9mIGxpbmUtYnJlYWtpbmcgcnVsZXMgdGhhbiAnbm9ybWFsJy4ifV0sc3ludGF4OiJhdXRvIHwgbG9vc2UgfCBub3JtYWwgfCBzdHJpY3QgfCBhbnl3aGVyZSIscmVsZXZhbmNlOjUxLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9saW5lLWJyZWFrIn1dLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgd2hhdCBzZXQgb2YgbGluZSBicmVha2luZyByZXN0cmljdGlvbnMgYXJlIGluIGVmZmVjdCB3aXRoaW4gdGhlIGVsZW1lbnQuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJsaW5lLWhlaWdodCIsdmFsdWVzOlt7bmFtZToibm9ybWFsIixkZXNjcmlwdGlvbjoiVGVsbHMgdXNlciBhZ2VudHMgdG8gc2V0IHRoZSBjb21wdXRlZCB2YWx1ZSB0byBhICdyZWFzb25hYmxlJyB2YWx1ZSBiYXNlZCBvbiB0aGUgZm9udCBzaXplIG9mIHRoZSBlbGVtZW50LiJ9XSxzeW50YXg6Im5vcm1hbCB8IDxudW1iZXI+IHwgPGxlbmd0aD4gfCA8cGVyY2VudGFnZT4iLHJlbGV2YW5jZTo5MyxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvbGluZS1oZWlnaHQifV0sZGVzY3JpcHRpb246IkRldGVybWluZXMgdGhlIGJsb2NrLXByb2dyZXNzaW9uIGRpbWVuc2lvbiBvZiB0aGUgdGV4dCBjb250ZW50IGFyZWEgb2YgYW4gaW5saW5lIGJveC4iLHJlc3RyaWN0aW9uczpbIm51bWJlciIsImxlbmd0aCIsInBlcmNlbnRhZ2UiXX0se25hbWU6Imxpc3Qtc3R5bGUiLHZhbHVlczpbe25hbWU6ImFybWVuaWFuIn0se25hbWU6ImNpcmNsZSIsZGVzY3JpcHRpb246IkEgaG9sbG93IGNpcmNsZS4ifSx7bmFtZToiZGVjaW1hbCJ9LHtuYW1lOiJkZWNpbWFsLWxlYWRpbmctemVybyJ9LHtuYW1lOiJkaXNjIixkZXNjcmlwdGlvbjoiQSBmaWxsZWQgY2lyY2xlLiJ9LHtuYW1lOiJnZW9yZ2lhbiJ9LHtuYW1lOiJpbnNpZGUiLGRlc2NyaXB0aW9uOiJUaGUgbWFya2VyIGJveCBpcyBvdXRzaWRlIHRoZSBwcmluY2lwYWwgYmxvY2sgYm94LCBhcyBkZXNjcmliZWQgaW4gdGhlIHNlY3Rpb24gb24gdGhlIDo6bWFya2VyIHBzZXVkby1lbGVtZW50IGJlbG93LiJ9LHtuYW1lOiJsb3dlci1hbHBoYSJ9LHtuYW1lOiJsb3dlci1ncmVlayJ9LHtuYW1lOiJsb3dlci1sYXRpbiJ9LHtuYW1lOiJsb3dlci1yb21hbiJ9LHtuYW1lOiJub25lIn0se25hbWU6Im91dHNpZGUiLGRlc2NyaXB0aW9uOiJUaGUgOjptYXJrZXIgcHNldWRvLWVsZW1lbnQgaXMgYW4gaW5saW5lIGVsZW1lbnQgcGxhY2VkIGltbWVkaWF0ZWx5IGJlZm9yZSBhbGwgOjpiZWZvcmUgcHNldWRvLWVsZW1lbnRzIGluIHRoZSBwcmluY2lwYWwgYmxvY2sgYm94LCBhZnRlciB3aGljaCB0aGUgZWxlbWVudCdzIGNvbnRlbnQgZmxvd3MuIn0se25hbWU6InNxdWFyZSIsZGVzY3JpcHRpb246IkEgZmlsbGVkIHNxdWFyZS4ifSx7bmFtZToic3ltYm9scygpIixkZXNjcmlwdGlvbjoiQWxsb3dzIGEgY291bnRlciBzdHlsZSB0byBiZSBkZWZpbmVkIGlubGluZS4ifSx7bmFtZToidXBwZXItYWxwaGEifSx7bmFtZToidXBwZXItbGF0aW4ifSx7bmFtZToidXBwZXItcm9tYW4ifSx7bmFtZToidXJsKCkifV0sc3ludGF4OiI8J2xpc3Qtc3R5bGUtdHlwZSc+IHx8IDwnbGlzdC1zdHlsZS1wb3NpdGlvbic+IHx8IDwnbGlzdC1zdHlsZS1pbWFnZSc+IixyZWxldmFuY2U6ODUscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2xpc3Qtc3R5bGUifV0sZGVzY3JpcHRpb246IlNob3J0aGFuZCBmb3Igc2V0dGluZyAnbGlzdC1zdHlsZS10eXBlJywgJ2xpc3Qtc3R5bGUtcG9zaXRpb24nIGFuZCAnbGlzdC1zdHlsZS1pbWFnZSciLHJlc3RyaWN0aW9uczpbImltYWdlIiwiZW51bSIsInVybCJdfSx7bmFtZToibGlzdC1zdHlsZS1pbWFnZSIsdmFsdWVzOlt7bmFtZToibm9uZSIsZGVzY3JpcHRpb246IlRoZSBkZWZhdWx0IGNvbnRlbnRzIG9mIHRoZSBvZiB0aGUgbGlzdCBpdGVt4oCZcyBtYXJrZXIgYXJlIGdpdmVuIGJ5ICdsaXN0LXN0eWxlLXR5cGUnIGluc3RlYWQuIn1dLHN5bnRheDoiPGltYWdlPiB8IG5vbmUiLHJlbGV2YW5jZTo1MixyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvbGlzdC1zdHlsZS1pbWFnZSJ9XSxkZXNjcmlwdGlvbjoiU2V0cyB0aGUgaW1hZ2UgdGhhdCB3aWxsIGJlIHVzZWQgYXMgdGhlIGxpc3QgaXRlbSBtYXJrZXIuIFdoZW4gdGhlIGltYWdlIGlzIGF2YWlsYWJsZSwgaXQgd2lsbCByZXBsYWNlIHRoZSBtYXJrZXIgc2V0IHdpdGggdGhlICdsaXN0LXN0eWxlLXR5cGUnIG1hcmtlci4iLHJlc3RyaWN0aW9uczpbImltYWdlIl19LHtuYW1lOiJsaXN0LXN0eWxlLXBvc2l0aW9uIix2YWx1ZXM6W3tuYW1lOiJpbnNpZGUiLGRlc2NyaXB0aW9uOiJUaGUgbWFya2VyIGJveCBpcyBvdXRzaWRlIHRoZSBwcmluY2lwYWwgYmxvY2sgYm94LCBhcyBkZXNjcmliZWQgaW4gdGhlIHNlY3Rpb24gb24gdGhlIDo6bWFya2VyIHBzZXVkby1lbGVtZW50IGJlbG93LiJ9LHtuYW1lOiJvdXRzaWRlIixkZXNjcmlwdGlvbjoiVGhlIDo6bWFya2VyIHBzZXVkby1lbGVtZW50IGlzIGFuIGlubGluZSBlbGVtZW50IHBsYWNlZCBpbW1lZGlhdGVseSBiZWZvcmUgYWxsIDo6YmVmb3JlIHBzZXVkby1lbGVtZW50cyBpbiB0aGUgcHJpbmNpcGFsIGJsb2NrIGJveCwgYWZ0ZXIgd2hpY2ggdGhlIGVsZW1lbnQncyBjb250ZW50IGZsb3dzLiJ9XSxzeW50YXg6Imluc2lkZSB8IG91dHNpZGUiLHJlbGV2YW5jZTo1NSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvbGlzdC1zdHlsZS1wb3NpdGlvbiJ9XSxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHRoZSBwb3NpdGlvbiBvZiB0aGUgJzo6bWFya2VyJyBwc2V1ZG8tZWxlbWVudCdzIGJveCBpbiB0aGUgbGlzdCBpdGVtLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToibGlzdC1zdHlsZS10eXBlIix2YWx1ZXM6W3tuYW1lOiJhcm1lbmlhbiIsZGVzY3JpcHRpb246IlRyYWRpdGlvbmFsIHVwcGVyY2FzZSBBcm1lbmlhbiBudW1iZXJpbmcuIn0se25hbWU6ImNpcmNsZSIsZGVzY3JpcHRpb246IkEgaG9sbG93IGNpcmNsZS4ifSx7bmFtZToiZGVjaW1hbCIsZGVzY3JpcHRpb246Ildlc3Rlcm4gZGVjaW1hbCBudW1iZXJzLiJ9LHtuYW1lOiJkZWNpbWFsLWxlYWRpbmctemVybyIsZGVzY3JpcHRpb246IkRlY2ltYWwgbnVtYmVycyBwYWRkZWQgYnkgaW5pdGlhbCB6ZXJvcy4ifSx7bmFtZToiZGlzYyIsZGVzY3JpcHRpb246IkEgZmlsbGVkIGNpcmNsZS4ifSx7bmFtZToiZ2VvcmdpYW4iLGRlc2NyaXB0aW9uOiJUcmFkaXRpb25hbCBHZW9yZ2lhbiBudW1iZXJpbmcuIn0se25hbWU6Imxvd2VyLWFscGhhIixkZXNjcmlwdGlvbjoiTG93ZXJjYXNlIEFTQ0lJIGxldHRlcnMuIn0se25hbWU6Imxvd2VyLWdyZWVrIixkZXNjcmlwdGlvbjoiTG93ZXJjYXNlIGNsYXNzaWNhbCBHcmVlay4ifSx7bmFtZToibG93ZXItbGF0aW4iLGRlc2NyaXB0aW9uOiJMb3dlcmNhc2UgQVNDSUkgbGV0dGVycy4ifSx7bmFtZToibG93ZXItcm9tYW4iLGRlc2NyaXB0aW9uOiJMb3dlcmNhc2UgQVNDSUkgUm9tYW4gbnVtZXJhbHMuIn0se25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJObyBtYXJrZXIifSx7bmFtZToic3F1YXJlIixkZXNjcmlwdGlvbjoiQSBmaWxsZWQgc3F1YXJlLiJ9LHtuYW1lOiJzeW1ib2xzKCkiLGRlc2NyaXB0aW9uOiJBbGxvd3MgYSBjb3VudGVyIHN0eWxlIHRvIGJlIGRlZmluZWQgaW5saW5lLiJ9LHtuYW1lOiJ1cHBlci1hbHBoYSIsZGVzY3JpcHRpb246IlVwcGVyY2FzZSBBU0NJSSBsZXR0ZXJzLiJ9LHtuYW1lOiJ1cHBlci1sYXRpbiIsZGVzY3JpcHRpb246IlVwcGVyY2FzZSBBU0NJSSBsZXR0ZXJzLiJ9LHtuYW1lOiJ1cHBlci1yb21hbiIsZGVzY3JpcHRpb246IlVwcGVyY2FzZSBBU0NJSSBSb21hbiBudW1lcmFscy4ifV0sc3ludGF4OiI8Y291bnRlci1zdHlsZT4gfCA8c3RyaW5nPiB8IG5vbmUiLHJlbGV2YW5jZTo3NSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvbGlzdC1zdHlsZS10eXBlIn1dLGRlc2NyaXB0aW9uOiJVc2VkIHRvIGNvbnN0cnVjdCB0aGUgZGVmYXVsdCBjb250ZW50cyBvZiBhIGxpc3QgaXRlbeKAmXMgbWFya2VyIixyZXN0cmljdGlvbnM6WyJlbnVtIiwic3RyaW5nIl19LHtuYW1lOiJtYXJnaW4iLHZhbHVlczpbe25hbWU6ImF1dG8ifV0sc3ludGF4OiJbIDxsZW5ndGg+IHwgPHBlcmNlbnRhZ2U+IHwgYXV0byBdezEsNH0iLHJlbGV2YW5jZTo5NixyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvbWFyZ2luIn1dLGRlc2NyaXB0aW9uOiJTaG9ydGhhbmQgcHJvcGVydHkgdG8gc2V0IHZhbHVlcyBmb3IgdGhlIHRoaWNrbmVzcyBvZiB0aGUgbWFyZ2luIGFyZWEuIElmIGxlZnQgaXMgb21pdHRlZCwgaXQgaXMgdGhlIHNhbWUgYXMgcmlnaHQuIElmIGJvdHRvbSBpcyBvbWl0dGVkIGl0IGlzIHRoZSBzYW1lIGFzIHRvcCwgaWYgcmlnaHQgaXMgb21pdHRlZCBpdCBpcyB0aGUgc2FtZSBhcyB0b3AuIE5lZ2F0aXZlIHZhbHVlcyBmb3IgbWFyZ2luIHByb3BlcnRpZXMgYXJlIGFsbG93ZWQsIGJ1dCB0aGVyZSBtYXkgYmUgaW1wbGVtZW50YXRpb24tc3BlY2lmaWMgbGltaXRzLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwicGVyY2VudGFnZSJdfSx7bmFtZToibWFyZ2luLWJsb2NrLWVuZCIsYnJvd3NlcnM6WyJFNzkiLCJGRjQxIiwiUzEyLjEiLCJDNjkiLCJPNTYiXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIn1dLHN5bnRheDoiPCdtYXJnaW4tbGVmdCc+IixyZWxldmFuY2U6NTMscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL21hcmdpbi1ibG9jay1lbmQifV0sZGVzY3JpcHRpb246IkxvZ2ljYWwgJ21hcmdpbi1ib3R0b20nLiBNYXBwaW5nIGRlcGVuZHMgb24gdGhlIHBhcmVudCBlbGVtZW504oCZcyAnd3JpdGluZy1tb2RlJywgJ2RpcmVjdGlvbicsIGFuZCAndGV4dC1vcmllbnRhdGlvbicuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJwZXJjZW50YWdlIl19LHtuYW1lOiJtYXJnaW4tYmxvY2stc3RhcnQiLGJyb3dzZXJzOlsiRTc5IiwiRkY0MSIsIlMxMi4xIiwiQzY5IiwiTzU2Il0sdmFsdWVzOlt7bmFtZToiYXV0byJ9XSxzeW50YXg6IjwnbWFyZ2luLWxlZnQnPiIscmVsZXZhbmNlOjUzLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9tYXJnaW4tYmxvY2stc3RhcnQifV0sZGVzY3JpcHRpb246IkxvZ2ljYWwgJ21hcmdpbi10b3AnLiBNYXBwaW5nIGRlcGVuZHMgb24gdGhlIHBhcmVudCBlbGVtZW504oCZcyAnd3JpdGluZy1tb2RlJywgJ2RpcmVjdGlvbicsIGFuZCAndGV4dC1vcmllbnRhdGlvbicuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJwZXJjZW50YWdlIl19LHtuYW1lOiJtYXJnaW4tYm90dG9tIix2YWx1ZXM6W3tuYW1lOiJhdXRvIn1dLHN5bnRheDoiPGxlbmd0aD4gfCA8cGVyY2VudGFnZT4gfCBhdXRvIixyZWxldmFuY2U6OTIscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL21hcmdpbi1ib3R0b20ifV0sZGVzY3JpcHRpb246IlNob3J0aGFuZCBwcm9wZXJ0eSB0byBzZXQgdmFsdWVzIGZvciB0aGUgdGhpY2tuZXNzIG9mIHRoZSBtYXJnaW4gYXJlYS4gSWYgbGVmdCBpcyBvbWl0dGVkLCBpdCBpcyB0aGUgc2FtZSBhcyByaWdodC4gSWYgYm90dG9tIGlzIG9taXR0ZWQgaXQgaXMgdGhlIHNhbWUgYXMgdG9wLCBpZiByaWdodCBpcyBvbWl0dGVkIGl0IGlzIHRoZSBzYW1lIGFzIHRvcC4gTmVnYXRpdmUgdmFsdWVzIGZvciBtYXJnaW4gcHJvcGVydGllcyBhcmUgYWxsb3dlZCwgYnV0IHRoZXJlIG1heSBiZSBpbXBsZW1lbnRhdGlvbi1zcGVjaWZpYyBsaW1pdHMuLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwicGVyY2VudGFnZSJdfSx7bmFtZToibWFyZ2luLWlubGluZS1lbmQiLGJyb3dzZXJzOlsiRTc5IiwiRkY0MSIsIlMxMi4xIiwiQzY5IiwiTzU2Il0sdmFsdWVzOlt7bmFtZToiYXV0byJ9XSxzeW50YXg6IjwnbWFyZ2luLWxlZnQnPiIscmVsZXZhbmNlOjUxLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9tYXJnaW4taW5saW5lLWVuZCJ9XSxkZXNjcmlwdGlvbjoiTG9naWNhbCAnbWFyZ2luLXJpZ2h0Jy4gTWFwcGluZyBkZXBlbmRzIG9uIHRoZSBwYXJlbnQgZWxlbWVudOKAmXMgJ3dyaXRpbmctbW9kZScsICdkaXJlY3Rpb24nLCBhbmQgJ3RleHQtb3JpZW50YXRpb24nLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwicGVyY2VudGFnZSJdfSx7bmFtZToibWFyZ2luLWlubGluZS1zdGFydCIsYnJvd3NlcnM6WyJFNzkiLCJGRjQxIiwiUzEyLjEiLCJDNjkiLCJPNTYiXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIn1dLHN5bnRheDoiPCdtYXJnaW4tbGVmdCc+IixyZWxldmFuY2U6NTIscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL21hcmdpbi1pbmxpbmUtc3RhcnQifV0sZGVzY3JpcHRpb246IkxvZ2ljYWwgJ21hcmdpbi1sZWZ0Jy4gTWFwcGluZyBkZXBlbmRzIG9uIHRoZSBwYXJlbnQgZWxlbWVudOKAmXMgJ3dyaXRpbmctbW9kZScsICdkaXJlY3Rpb24nLCBhbmQgJ3RleHQtb3JpZW50YXRpb24nLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwicGVyY2VudGFnZSJdfSx7bmFtZToibWFyZ2luLWxlZnQiLHZhbHVlczpbe25hbWU6ImF1dG8ifV0sc3ludGF4OiI8bGVuZ3RoPiB8IDxwZXJjZW50YWdlPiB8IGF1dG8iLHJlbGV2YW5jZTo5MixyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvbWFyZ2luLWxlZnQifV0sZGVzY3JpcHRpb246IlNob3J0aGFuZCBwcm9wZXJ0eSB0byBzZXQgdmFsdWVzIGZvciB0aGUgdGhpY2tuZXNzIG9mIHRoZSBtYXJnaW4gYXJlYS4gSWYgbGVmdCBpcyBvbWl0dGVkLCBpdCBpcyB0aGUgc2FtZSBhcyByaWdodC4gSWYgYm90dG9tIGlzIG9taXR0ZWQgaXQgaXMgdGhlIHNhbWUgYXMgdG9wLCBpZiByaWdodCBpcyBvbWl0dGVkIGl0IGlzIHRoZSBzYW1lIGFzIHRvcC4gTmVnYXRpdmUgdmFsdWVzIGZvciBtYXJnaW4gcHJvcGVydGllcyBhcmUgYWxsb3dlZCwgYnV0IHRoZXJlIG1heSBiZSBpbXBsZW1lbnRhdGlvbi1zcGVjaWZpYyBsaW1pdHMuLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwicGVyY2VudGFnZSJdfSx7bmFtZToibWFyZ2luLXJpZ2h0Iix2YWx1ZXM6W3tuYW1lOiJhdXRvIn1dLHN5bnRheDoiPGxlbmd0aD4gfCA8cGVyY2VudGFnZT4gfCBhdXRvIixyZWxldmFuY2U6OTEscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL21hcmdpbi1yaWdodCJ9XSxkZXNjcmlwdGlvbjoiU2hvcnRoYW5kIHByb3BlcnR5IHRvIHNldCB2YWx1ZXMgZm9yIHRoZSB0aGlja25lc3Mgb2YgdGhlIG1hcmdpbiBhcmVhLiBJZiBsZWZ0IGlzIG9taXR0ZWQsIGl0IGlzIHRoZSBzYW1lIGFzIHJpZ2h0LiBJZiBib3R0b20gaXMgb21pdHRlZCBpdCBpcyB0aGUgc2FtZSBhcyB0b3AsIGlmIHJpZ2h0IGlzIG9taXR0ZWQgaXQgaXMgdGhlIHNhbWUgYXMgdG9wLiBOZWdhdGl2ZSB2YWx1ZXMgZm9yIG1hcmdpbiBwcm9wZXJ0aWVzIGFyZSBhbGxvd2VkLCBidXQgdGhlcmUgbWF5IGJlIGltcGxlbWVudGF0aW9uLXNwZWNpZmljIGxpbWl0cy4uIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJwZXJjZW50YWdlIl19LHtuYW1lOiJtYXJnaW4tdG9wIix2YWx1ZXM6W3tuYW1lOiJhdXRvIn1dLHN5bnRheDoiPGxlbmd0aD4gfCA8cGVyY2VudGFnZT4gfCBhdXRvIixyZWxldmFuY2U6OTUscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL21hcmdpbi10b3AifV0sZGVzY3JpcHRpb246IlNob3J0aGFuZCBwcm9wZXJ0eSB0byBzZXQgdmFsdWVzIGZvciB0aGUgdGhpY2tuZXNzIG9mIHRoZSBtYXJnaW4gYXJlYS4gSWYgbGVmdCBpcyBvbWl0dGVkLCBpdCBpcyB0aGUgc2FtZSBhcyByaWdodC4gSWYgYm90dG9tIGlzIG9taXR0ZWQgaXQgaXMgdGhlIHNhbWUgYXMgdG9wLCBpZiByaWdodCBpcyBvbWl0dGVkIGl0IGlzIHRoZSBzYW1lIGFzIHRvcC4gTmVnYXRpdmUgdmFsdWVzIGZvciBtYXJnaW4gcHJvcGVydGllcyBhcmUgYWxsb3dlZCwgYnV0IHRoZXJlIG1heSBiZSBpbXBsZW1lbnRhdGlvbi1zcGVjaWZpYyBsaW1pdHMuLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwicGVyY2VudGFnZSJdfSx7bmFtZToibWFya2VyIix2YWx1ZXM6W3tuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHRoYXQgbm8gbWFya2VyIHN5bWJvbCB3aWxsIGJlIGRyYXduIGF0IHRoZSBnaXZlbiB2ZXJ0ZXggb3IgdmVydGljZXMuIn0se25hbWU6InVybCgpIixkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHRoYXQgdGhlIDxtYXJrZXI+IGVsZW1lbnQgcmVmZXJlbmNlZCB3aWxsIGJlIHVzZWQuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHRoZSBtYXJrZXIgc3ltYm9sIHRoYXQgc2hhbGwgYmUgdXNlZCBmb3IgYWxsIHBvaW50cyBvbiB0aGUgc2V0cyB0aGUgdmFsdWUgZm9yIGFsbCB2ZXJ0aWNlcyBvbiB0aGUgZ2l2ZW4g4oCYcGF0aOKAmSBlbGVtZW50IG9yIGJhc2ljIHNoYXBlLiIscmVzdHJpY3Rpb25zOlsidXJsIl19LHtuYW1lOiJtYXJrZXItZW5kIix2YWx1ZXM6W3tuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHRoYXQgbm8gbWFya2VyIHN5bWJvbCB3aWxsIGJlIGRyYXduIGF0IHRoZSBnaXZlbiB2ZXJ0ZXggb3IgdmVydGljZXMuIn0se25hbWU6InVybCgpIixkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHRoYXQgdGhlIDxtYXJrZXI+IGVsZW1lbnQgcmVmZXJlbmNlZCB3aWxsIGJlIHVzZWQuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHRoZSBtYXJrZXIgdGhhdCB3aWxsIGJlIGRyYXduIGF0IHRoZSBsYXN0IHZlcnRpY2VzIG9mIHRoZSBnaXZlbiBtYXJrYWJsZSBlbGVtZW50LiIscmVzdHJpY3Rpb25zOlsidXJsIl19LHtuYW1lOiJtYXJrZXItbWlkIix2YWx1ZXM6W3tuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHRoYXQgbm8gbWFya2VyIHN5bWJvbCB3aWxsIGJlIGRyYXduIGF0IHRoZSBnaXZlbiB2ZXJ0ZXggb3IgdmVydGljZXMuIn0se25hbWU6InVybCgpIixkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHRoYXQgdGhlIDxtYXJrZXI+IGVsZW1lbnQgcmVmZXJlbmNlZCB3aWxsIGJlIHVzZWQuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHRoZSBtYXJrZXIgdGhhdCB3aWxsIGJlIGRyYXduIGF0IGFsbCB2ZXJ0aWNlcyBleGNlcHQgdGhlIGZpcnN0IGFuZCBsYXN0LiIscmVzdHJpY3Rpb25zOlsidXJsIl19LHtuYW1lOiJtYXJrZXItc3RhcnQiLHZhbHVlczpbe25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgdGhhdCBubyBtYXJrZXIgc3ltYm9sIHdpbGwgYmUgZHJhd24gYXQgdGhlIGdpdmVuIHZlcnRleCBvciB2ZXJ0aWNlcy4ifSx7bmFtZToidXJsKCkiLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgdGhhdCB0aGUgPG1hcmtlcj4gZWxlbWVudCByZWZlcmVuY2VkIHdpbGwgYmUgdXNlZC4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgdGhlIG1hcmtlciB0aGF0IHdpbGwgYmUgZHJhd24gYXQgdGhlIGZpcnN0IHZlcnRpY2VzIG9mIHRoZSBnaXZlbiBtYXJrYWJsZSBlbGVtZW50LiIscmVzdHJpY3Rpb25zOlsidXJsIl19LHtuYW1lOiJtYXNrLWltYWdlIixicm93c2VyczpbIkU3OSIsIkZGNTMiLCJTMTUuNCIsIkMxIiwiTzE1Il0sdmFsdWVzOlt7bmFtZToibm9uZSIsZGVzY3JpcHRpb246IkNvdW50cyBhcyBhIHRyYW5zcGFyZW50IGJsYWNrIGltYWdlIGxheWVyLiJ9LHtuYW1lOiJ1cmwoKSIsZGVzY3JpcHRpb246IlJlZmVyZW5jZSB0byBhIDxtYXNrIGVsZW1lbnQgb3IgdG8gYSBDU1MgaW1hZ2UuIn1dLHN5bnRheDoiPG1hc2stcmVmZXJlbmNlPiMiLHJlbGV2YW5jZTo1MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvbWFzay1pbWFnZSJ9XSxkZXNjcmlwdGlvbjoiU2V0cyB0aGUgbWFzayBsYXllciBpbWFnZSBvZiBhbiBlbGVtZW50LiIscmVzdHJpY3Rpb25zOlsidXJsIiwiaW1hZ2UiLCJlbnVtIl19LHtuYW1lOiJtYXNrLW1vZGUiLGJyb3dzZXJzOlsiRkY1MyIsIlMxNS40Il0sdmFsdWVzOlt7bmFtZToiYWxwaGEiLGRlc2NyaXB0aW9uOiJBbHBoYSB2YWx1ZXMgb2YgdGhlIG1hc2sgbGF5ZXIgaW1hZ2Ugc2hvdWxkIGJlIHVzZWQgYXMgdGhlIG1hc2sgdmFsdWVzLiJ9LHtuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiVXNlIGFscGhhIHZhbHVlcyBpZiAnbWFzay1pbWFnZScgaXMgYW4gaW1hZ2UsIGx1bWluYW5jZSBpZiBhIDxtYXNrPiBlbGVtZW50IG9yIGEgQ1NTIGltYWdlLiJ9LHtuYW1lOiJsdW1pbmFuY2UiLGRlc2NyaXB0aW9uOiJMdW1pbmFuY2UgdmFsdWVzIG9mIHRoZSBtYXNrIGxheWVyIGltYWdlIHNob3VsZCBiZSB1c2VkIGFzIHRoZSBtYXNrIHZhbHVlcy4ifV0sc3ludGF4OiI8bWFza2luZy1tb2RlPiMiLHJlbGV2YW5jZTo1MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvbWFzay1tb2RlIn1dLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgd2hldGhlciB0aGUgbWFzayBsYXllciBpbWFnZSBpcyB0cmVhdGVkIGFzIGx1bWluYW5jZSBtYXNrIG9yIGFscGhhIG1hc2suIixyZXN0cmljdGlvbnM6WyJ1cmwiLCJpbWFnZSIsImVudW0iXX0se25hbWU6Im1hc2stb3JpZ2luIixicm93c2VyczpbIkU3OSIsIkZGNTMiLCJTMTUuNCIsIkMxIiwiTzE1Il0sc3ludGF4OiI8Z2VvbWV0cnktYm94PiMiLHJlbGV2YW5jZTo1MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvbWFzay1vcmlnaW4ifV0sZGVzY3JpcHRpb246IlNwZWNpZmllcyB0aGUgbWFzayBwb3NpdGlvbmluZyBhcmVhLiIscmVzdHJpY3Rpb25zOlsiZ2VvbWV0cnktYm94IiwiZW51bSJdfSx7bmFtZToibWFzay1wb3NpdGlvbiIsYnJvd3NlcnM6WyJFNzkiLCJGRjUzIiwiUzE1LjQiLCJDMSIsIk8xNSJdLHN5bnRheDoiPHBvc2l0aW9uPiMiLHJlbGV2YW5jZTo1MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvbWFzay1wb3NpdGlvbiJ9XSxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGhvdyBtYXNrIGxheWVyIGltYWdlcyBhcmUgcG9zaXRpb25lZC4iLHJlc3RyaWN0aW9uczpbInBvc2l0aW9uIiwibGVuZ3RoIiwicGVyY2VudGFnZSJdfSx7bmFtZToibWFzay1yZXBlYXQiLGJyb3dzZXJzOlsiRTc5IiwiRkY1MyIsIlMxNS40IiwiQzEiLCJPMTUiXSxzeW50YXg6IjxyZXBlYXQtc3R5bGU+IyIscmVsZXZhbmNlOjUwLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9tYXNrLXJlcGVhdCJ9XSxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGhvdyBtYXNrIGxheWVyIGltYWdlcyBhcmUgdGlsZWQgYWZ0ZXIgdGhleSBoYXZlIGJlZW4gc2l6ZWQgYW5kIHBvc2l0aW9uZWQuIixyZXN0cmljdGlvbnM6WyJyZXBlYXQiXX0se25hbWU6Im1hc2stc2l6ZSIsYnJvd3NlcnM6WyJFNzkiLCJGRjUzIiwiUzE1LjQiLCJDNCIsIk8xNSJdLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJSZXNvbHZlZCBieSB1c2luZyB0aGUgaW1hZ2XigJlzIGludHJpbnNpYyByYXRpbyBhbmQgdGhlIHNpemUgb2YgdGhlIG90aGVyIGRpbWVuc2lvbiwgb3IgZmFpbGluZyB0aGF0LCB1c2luZyB0aGUgaW1hZ2XigJlzIGludHJpbnNpYyBzaXplLCBvciBmYWlsaW5nIHRoYXQsIHRyZWF0aW5nIGl0IGFzIDEwMCUuIn0se25hbWU6ImNvbnRhaW4iLGRlc2NyaXB0aW9uOiJTY2FsZSB0aGUgaW1hZ2UsIHdoaWxlIHByZXNlcnZpbmcgaXRzIGludHJpbnNpYyBhc3BlY3QgcmF0aW8gKGlmIGFueSksIHRvIHRoZSBsYXJnZXN0IHNpemUgc3VjaCB0aGF0IGJvdGggaXRzIHdpZHRoIGFuZCBpdHMgaGVpZ2h0IGNhbiBmaXQgaW5zaWRlIHRoZSBiYWNrZ3JvdW5kIHBvc2l0aW9uaW5nIGFyZWEuIn0se25hbWU6ImNvdmVyIixkZXNjcmlwdGlvbjoiU2NhbGUgdGhlIGltYWdlLCB3aGlsZSBwcmVzZXJ2aW5nIGl0cyBpbnRyaW5zaWMgYXNwZWN0IHJhdGlvIChpZiBhbnkpLCB0byB0aGUgc21hbGxlc3Qgc2l6ZSBzdWNoIHRoYXQgYm90aCBpdHMgd2lkdGggYW5kIGl0cyBoZWlnaHQgY2FuIGNvbXBsZXRlbHkgY292ZXIgdGhlIGJhY2tncm91bmQgcG9zaXRpb25pbmcgYXJlYS4ifV0sc3ludGF4OiI8Ymctc2l6ZT4jIixyZWxldmFuY2U6NTAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL21hc2stc2l6ZSJ9XSxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHRoZSBzaXplIG9mIHRoZSBtYXNrIGxheWVyIGltYWdlcy4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsInBlcmNlbnRhZ2UiLCJlbnVtIl19LHtuYW1lOiJtYXNrLXR5cGUiLGJyb3dzZXJzOlsiRTc5IiwiRkYzNSIsIlM3IiwiQzI0IiwiTzE1Il0sdmFsdWVzOlt7bmFtZToiYWxwaGEiLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgdGhhdCB0aGUgYWxwaGEgdmFsdWVzIG9mIHRoZSBtYXNrIHNob3VsZCBiZSB1c2VkLiJ9LHtuYW1lOiJsdW1pbmFuY2UiLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgdGhhdCB0aGUgbHVtaW5hbmNlIHZhbHVlcyBvZiB0aGUgbWFzayBzaG91bGQgYmUgdXNlZC4ifV0sc3ludGF4OiJsdW1pbmFuY2UgfCBhbHBoYSIscmVsZXZhbmNlOjUwLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9tYXNrLXR5cGUifV0sZGVzY3JpcHRpb246IkRlZmluZXMgd2hldGhlciB0aGUgY29udGVudCBvZiB0aGUgPG1hc2s+IGVsZW1lbnQgaXMgdHJlYXRlZCBhcyBhcyBsdW1pbmFuY2UgbWFzayBvciBhbHBoYSBtYXNrLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToibWF4LWJsb2NrLXNpemUiLGJyb3dzZXJzOlsiRTc5IiwiRkY0MSIsIlMxMi4xIiwiQzU3IiwiTzQ0Il0sdmFsdWVzOlt7bmFtZToibm9uZSIsZGVzY3JpcHRpb246Ik5vIGxpbWl0IG9uIHRoZSB3aWR0aCBvZiB0aGUgYm94LiJ9XSxzeW50YXg6IjwnbWF4LXdpZHRoJz4iLHJlbGV2YW5jZTo1MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvbWF4LWJsb2NrLXNpemUifV0sZGVzY3JpcHRpb246Ik1heGltdW0gc2l6ZSBvZiBhbiBlbGVtZW50IGluIHRoZSBkaXJlY3Rpb24gb3Bwb3NpdGUgdGhhdCBvZiB0aGUgZGlyZWN0aW9uIHNwZWNpZmllZCBieSAnd3JpdGluZy1tb2RlJy4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsInBlcmNlbnRhZ2UiXX0se25hbWU6Im1heC1oZWlnaHQiLHZhbHVlczpbe25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJObyBsaW1pdCBvbiB0aGUgaGVpZ2h0IG9mIHRoZSBib3guIn0se25hbWU6ImZpdC1jb250ZW50IixkZXNjcmlwdGlvbjoiVXNlIHRoZSBmaXQtY29udGVudCBpbmxpbmUgc2l6ZSBvciBmaXQtY29udGVudCBibG9jayBzaXplLCBhcyBhcHByb3ByaWF0ZSB0byB0aGUgd3JpdGluZyBtb2RlLiJ9LHtuYW1lOiJtYXgtY29udGVudCIsZGVzY3JpcHRpb246IlVzZSB0aGUgbWF4LWNvbnRlbnQgaW5saW5lIHNpemUgb3IgbWF4LWNvbnRlbnQgYmxvY2sgc2l6ZSwgYXMgYXBwcm9wcmlhdGUgdG8gdGhlIHdyaXRpbmcgbW9kZS4ifSx7bmFtZToibWluLWNvbnRlbnQiLGRlc2NyaXB0aW9uOiJVc2UgdGhlIG1pbi1jb250ZW50IGlubGluZSBzaXplIG9yIG1pbi1jb250ZW50IGJsb2NrIHNpemUsIGFzIGFwcHJvcHJpYXRlIHRvIHRoZSB3cml0aW5nIG1vZGUuIn1dLHN5bnRheDoiPHZpZXdwb3J0LWxlbmd0aD4iLHJlbGV2YW5jZTo4NSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvbWF4LWhlaWdodCJ9XSxkZXNjcmlwdGlvbjoiQWxsb3dzIGF1dGhvcnMgdG8gY29uc3RyYWluIGNvbnRlbnQgaGVpZ2h0IHRvIGEgY2VydGFpbiByYW5nZS4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsInBlcmNlbnRhZ2UiXX0se25hbWU6Im1heC1pbmxpbmUtc2l6ZSIsYnJvd3NlcnM6WyJFNzkiLCJGRjQxIiwiUzEyLjEiLCJDNTciLCJPNDQiXSx2YWx1ZXM6W3tuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiTm8gbGltaXQgb24gdGhlIGhlaWdodCBvZiB0aGUgYm94LiJ9XSxzeW50YXg6IjwnbWF4LXdpZHRoJz4iLHJlbGV2YW5jZTo1MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvbWF4LWlubGluZS1zaXplIn1dLGRlc2NyaXB0aW9uOiJNYXhpbXVtIHNpemUgb2YgYW4gZWxlbWVudCBpbiB0aGUgZGlyZWN0aW9uIHNwZWNpZmllZCBieSAnd3JpdGluZy1tb2RlJy4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsInBlcmNlbnRhZ2UiXX0se25hbWU6Im1heC13aWR0aCIsdmFsdWVzOlt7bmFtZToibm9uZSIsZGVzY3JpcHRpb246Ik5vIGxpbWl0IG9uIHRoZSB3aWR0aCBvZiB0aGUgYm94LiJ9LHtuYW1lOiJmaXQtY29udGVudCIsZGVzY3JpcHRpb246IlVzZSB0aGUgZml0LWNvbnRlbnQgaW5saW5lIHNpemUgb3IgZml0LWNvbnRlbnQgYmxvY2sgc2l6ZSwgYXMgYXBwcm9wcmlhdGUgdG8gdGhlIHdyaXRpbmcgbW9kZS4ifSx7bmFtZToibWF4LWNvbnRlbnQiLGRlc2NyaXB0aW9uOiJVc2UgdGhlIG1heC1jb250ZW50IGlubGluZSBzaXplIG9yIG1heC1jb250ZW50IGJsb2NrIHNpemUsIGFzIGFwcHJvcHJpYXRlIHRvIHRoZSB3cml0aW5nIG1vZGUuIn0se25hbWU6Im1pbi1jb250ZW50IixkZXNjcmlwdGlvbjoiVXNlIHRoZSBtaW4tY29udGVudCBpbmxpbmUgc2l6ZSBvciBtaW4tY29udGVudCBibG9jayBzaXplLCBhcyBhcHByb3ByaWF0ZSB0byB0aGUgd3JpdGluZyBtb2RlLiJ9XSxzeW50YXg6Ijx2aWV3cG9ydC1sZW5ndGg+IixyZWxldmFuY2U6OTEscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL21heC13aWR0aCJ9XSxkZXNjcmlwdGlvbjoiQWxsb3dzIGF1dGhvcnMgdG8gY29uc3RyYWluIGNvbnRlbnQgd2lkdGggdG8gYSBjZXJ0YWluIHJhbmdlLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwicGVyY2VudGFnZSJdfSx7bmFtZToibWluLWJsb2NrLXNpemUiLGJyb3dzZXJzOlsiRTc5IiwiRkY0MSIsIlMxMi4xIiwiQzU3IiwiTzQ0Il0sc3ludGF4OiI8J21pbi13aWR0aCc+IixyZWxldmFuY2U6NTAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL21pbi1ibG9jay1zaXplIn1dLGRlc2NyaXB0aW9uOiJNaW5pbWFsIHNpemUgb2YgYW4gZWxlbWVudCBpbiB0aGUgZGlyZWN0aW9uIG9wcG9zaXRlIHRoYXQgb2YgdGhlIGRpcmVjdGlvbiBzcGVjaWZpZWQgYnkgJ3dyaXRpbmctbW9kZScuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJwZXJjZW50YWdlIl19LHtuYW1lOiJtaW4taGVpZ2h0Iix2YWx1ZXM6W3tuYW1lOiJhdXRvIn0se25hbWU6ImZpdC1jb250ZW50IixkZXNjcmlwdGlvbjoiVXNlIHRoZSBmaXQtY29udGVudCBpbmxpbmUgc2l6ZSBvciBmaXQtY29udGVudCBibG9jayBzaXplLCBhcyBhcHByb3ByaWF0ZSB0byB0aGUgd3JpdGluZyBtb2RlLiJ9LHtuYW1lOiJtYXgtY29udGVudCIsZGVzY3JpcHRpb246IlVzZSB0aGUgbWF4LWNvbnRlbnQgaW5saW5lIHNpemUgb3IgbWF4LWNvbnRlbnQgYmxvY2sgc2l6ZSwgYXMgYXBwcm9wcmlhdGUgdG8gdGhlIHdyaXRpbmcgbW9kZS4ifSx7bmFtZToibWluLWNvbnRlbnQiLGRlc2NyaXB0aW9uOiJVc2UgdGhlIG1pbi1jb250ZW50IGlubGluZSBzaXplIG9yIG1pbi1jb250ZW50IGJsb2NrIHNpemUsIGFzIGFwcHJvcHJpYXRlIHRvIHRoZSB3cml0aW5nIG1vZGUuIn1dLHN5bnRheDoiPHZpZXdwb3J0LWxlbmd0aD4iLHJlbGV2YW5jZTo5MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvbWluLWhlaWdodCJ9XSxkZXNjcmlwdGlvbjoiQWxsb3dzIGF1dGhvcnMgdG8gY29uc3RyYWluIGNvbnRlbnQgaGVpZ2h0IHRvIGEgY2VydGFpbiByYW5nZS4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsInBlcmNlbnRhZ2UiXX0se25hbWU6Im1pbi1pbmxpbmUtc2l6ZSIsYnJvd3NlcnM6WyJFNzkiLCJGRjQxIiwiUzEyLjEiLCJDNTciLCJPNDQiXSxzeW50YXg6IjwnbWluLXdpZHRoJz4iLHJlbGV2YW5jZTo1MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvbWluLWlubGluZS1zaXplIn1dLGRlc2NyaXB0aW9uOiJNaW5pbWFsIHNpemUgb2YgYW4gZWxlbWVudCBpbiB0aGUgZGlyZWN0aW9uIHNwZWNpZmllZCBieSAnd3JpdGluZy1tb2RlJy4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsInBlcmNlbnRhZ2UiXX0se25hbWU6Im1pbi13aWR0aCIsdmFsdWVzOlt7bmFtZToiYXV0byJ9LHtuYW1lOiJmaXQtY29udGVudCIsZGVzY3JpcHRpb246IlVzZSB0aGUgZml0LWNvbnRlbnQgaW5saW5lIHNpemUgb3IgZml0LWNvbnRlbnQgYmxvY2sgc2l6ZSwgYXMgYXBwcm9wcmlhdGUgdG8gdGhlIHdyaXRpbmcgbW9kZS4ifSx7bmFtZToibWF4LWNvbnRlbnQiLGRlc2NyaXB0aW9uOiJVc2UgdGhlIG1heC1jb250ZW50IGlubGluZSBzaXplIG9yIG1heC1jb250ZW50IGJsb2NrIHNpemUsIGFzIGFwcHJvcHJpYXRlIHRvIHRoZSB3cml0aW5nIG1vZGUuIn0se25hbWU6Im1pbi1jb250ZW50IixkZXNjcmlwdGlvbjoiVXNlIHRoZSBtaW4tY29udGVudCBpbmxpbmUgc2l6ZSBvciBtaW4tY29udGVudCBibG9jayBzaXplLCBhcyBhcHByb3ByaWF0ZSB0byB0aGUgd3JpdGluZyBtb2RlLiJ9XSxzeW50YXg6Ijx2aWV3cG9ydC1sZW5ndGg+IixyZWxldmFuY2U6ODgscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL21pbi13aWR0aCJ9XSxkZXNjcmlwdGlvbjoiQWxsb3dzIGF1dGhvcnMgdG8gY29uc3RyYWluIGNvbnRlbnQgd2lkdGggdG8gYSBjZXJ0YWluIHJhbmdlLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwicGVyY2VudGFnZSJdfSx7bmFtZToibWl4LWJsZW5kLW1vZGUiLGJyb3dzZXJzOlsiRTc5IiwiRkYzMiIsIlM4IiwiQzQxIiwiTzI4Il0sdmFsdWVzOlt7bmFtZToibm9ybWFsIixkZXNjcmlwdGlvbjoiRGVmYXVsdCBhdHRyaWJ1dGUgd2hpY2ggc3BlY2lmaWVzIG5vIGJsZW5kaW5nIn0se25hbWU6Im11bHRpcGx5IixkZXNjcmlwdGlvbjoiVGhlIHNvdXJjZSBjb2xvciBpcyBtdWx0aXBsaWVkIGJ5IHRoZSBkZXN0aW5hdGlvbiBjb2xvciBhbmQgcmVwbGFjZXMgdGhlIGRlc3RpbmF0aW9uLiJ9LHtuYW1lOiJzY3JlZW4iLGRlc2NyaXB0aW9uOiJNdWx0aXBsaWVzIHRoZSBjb21wbGVtZW50cyBvZiB0aGUgYmFja2Ryb3AgYW5kIHNvdXJjZSBjb2xvciB2YWx1ZXMsIHRoZW4gY29tcGxlbWVudHMgdGhlIHJlc3VsdC4ifSx7bmFtZToib3ZlcmxheSIsZGVzY3JpcHRpb246Ik11bHRpcGxpZXMgb3Igc2NyZWVucyB0aGUgY29sb3JzLCBkZXBlbmRpbmcgb24gdGhlIGJhY2tkcm9wIGNvbG9yIHZhbHVlLiJ9LHtuYW1lOiJkYXJrZW4iLGRlc2NyaXB0aW9uOiJTZWxlY3RzIHRoZSBkYXJrZXIgb2YgdGhlIGJhY2tkcm9wIGFuZCBzb3VyY2UgY29sb3JzLiJ9LHtuYW1lOiJsaWdodGVuIixkZXNjcmlwdGlvbjoiU2VsZWN0cyB0aGUgbGlnaHRlciBvZiB0aGUgYmFja2Ryb3AgYW5kIHNvdXJjZSBjb2xvcnMuIn0se25hbWU6ImNvbG9yLWRvZGdlIixkZXNjcmlwdGlvbjoiQnJpZ2h0ZW5zIHRoZSBiYWNrZHJvcCBjb2xvciB0byByZWZsZWN0IHRoZSBzb3VyY2UgY29sb3IuIn0se25hbWU6ImNvbG9yLWJ1cm4iLGRlc2NyaXB0aW9uOiJEYXJrZW5zIHRoZSBiYWNrZHJvcCBjb2xvciB0byByZWZsZWN0IHRoZSBzb3VyY2UgY29sb3IuIn0se25hbWU6ImhhcmQtbGlnaHQiLGRlc2NyaXB0aW9uOiJNdWx0aXBsaWVzIG9yIHNjcmVlbnMgdGhlIGNvbG9ycywgZGVwZW5kaW5nIG9uIHRoZSBzb3VyY2UgY29sb3IgdmFsdWUuIn0se25hbWU6InNvZnQtbGlnaHQiLGRlc2NyaXB0aW9uOiJEYXJrZW5zIG9yIGxpZ2h0ZW5zIHRoZSBjb2xvcnMsIGRlcGVuZGluZyBvbiB0aGUgc291cmNlIGNvbG9yIHZhbHVlLiJ9LHtuYW1lOiJkaWZmZXJlbmNlIixkZXNjcmlwdGlvbjoiU3VidHJhY3RzIHRoZSBkYXJrZXIgb2YgdGhlIHR3byBjb25zdGl0dWVudCBjb2xvcnMgZnJvbSB0aGUgbGlnaHRlciBjb2xvci4uIn0se25hbWU6ImV4Y2x1c2lvbiIsZGVzY3JpcHRpb246IlByb2R1Y2VzIGFuIGVmZmVjdCBzaW1pbGFyIHRvIHRoYXQgb2YgdGhlIERpZmZlcmVuY2UgbW9kZSBidXQgbG93ZXIgaW4gY29udHJhc3QuIn0se25hbWU6Imh1ZSIsYnJvd3NlcnM6WyJFNzkiLCJGRjMyIiwiUzgiLCJDNDEiLCJPMjgiXSxkZXNjcmlwdGlvbjoiQ3JlYXRlcyBhIGNvbG9yIHdpdGggdGhlIGh1ZSBvZiB0aGUgc291cmNlIGNvbG9yIGFuZCB0aGUgc2F0dXJhdGlvbiBhbmQgbHVtaW5vc2l0eSBvZiB0aGUgYmFja2Ryb3AgY29sb3IuIn0se25hbWU6InNhdHVyYXRpb24iLGJyb3dzZXJzOlsiRTc5IiwiRkYzMiIsIlM4IiwiQzQxIiwiTzI4Il0sZGVzY3JpcHRpb246IkNyZWF0ZXMgYSBjb2xvciB3aXRoIHRoZSBzYXR1cmF0aW9uIG9mIHRoZSBzb3VyY2UgY29sb3IgYW5kIHRoZSBodWUgYW5kIGx1bWlub3NpdHkgb2YgdGhlIGJhY2tkcm9wIGNvbG9yLiJ9LHtuYW1lOiJjb2xvciIsYnJvd3NlcnM6WyJFNzkiLCJGRjMyIiwiUzgiLCJDNDEiLCJPMjgiXSxkZXNjcmlwdGlvbjoiQ3JlYXRlcyBhIGNvbG9yIHdpdGggdGhlIGh1ZSBhbmQgc2F0dXJhdGlvbiBvZiB0aGUgc291cmNlIGNvbG9yIGFuZCB0aGUgbHVtaW5vc2l0eSBvZiB0aGUgYmFja2Ryb3AgY29sb3IuIn0se25hbWU6Imx1bWlub3NpdHkiLGJyb3dzZXJzOlsiRTc5IiwiRkYzMiIsIlM4IiwiQzQxIiwiTzI4Il0sZGVzY3JpcHRpb246IkNyZWF0ZXMgYSBjb2xvciB3aXRoIHRoZSBsdW1pbm9zaXR5IG9mIHRoZSBzb3VyY2UgY29sb3IgYW5kIHRoZSBodWUgYW5kIHNhdHVyYXRpb24gb2YgdGhlIGJhY2tkcm9wIGNvbG9yLiJ9XSxzeW50YXg6IjxibGVuZC1tb2RlPiIscmVsZXZhbmNlOjUyLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9taXgtYmxlbmQtbW9kZSJ9XSxkZXNjcmlwdGlvbjoiRGVmaW5lcyB0aGUgZm9ybXVsYSB0aGF0IG11c3QgYmUgdXNlZCB0byBtaXggdGhlIGNvbG9ycyB3aXRoIHRoZSBiYWNrZHJvcC4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Im1vdGlvbiIsYnJvd3NlcnM6WyJDNDYiLCJPMzMiXSx2YWx1ZXM6W3tuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiTm8gbW90aW9uIHBhdGggZ2V0cyBjcmVhdGVkLiJ9LHtuYW1lOiJwYXRoKCkiLGRlc2NyaXB0aW9uOiJEZWZpbmVzIGFuIFNWRyBwYXRoIGFzIGEgc3RyaW5nLCB3aXRoIG9wdGlvbmFsICdmaWxsLXJ1bGUnIGFzIHRoZSBmaXJzdCBhcmd1bWVudC4ifSx7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGF0IHRoZSBvYmplY3QgaXMgcm90YXRlZCBieSB0aGUgYW5nbGUgb2YgdGhlIGRpcmVjdGlvbiBvZiB0aGUgbW90aW9uIHBhdGguIn0se25hbWU6InJldmVyc2UiLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgdGhhdCB0aGUgb2JqZWN0IGlzIHJvdGF0ZWQgYnkgdGhlIGFuZ2xlIG9mIHRoZSBkaXJlY3Rpb24gb2YgdGhlIG1vdGlvbiBwYXRoIHBsdXMgMTgwIGRlZ3JlZXMuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiU2hvcnRoYW5kIHByb3BlcnR5IGZvciBzZXR0aW5nICdtb3Rpb24tcGF0aCcsICdtb3Rpb24tb2Zmc2V0JyBhbmQgJ21vdGlvbi1yb3RhdGlvbicuIixyZXN0cmljdGlvbnM6WyJ1cmwiLCJsZW5ndGgiLCJwZXJjZW50YWdlIiwiYW5nbGUiLCJzaGFwZSIsImdlb21ldHJ5LWJveCIsImVudW0iXX0se25hbWU6Im1vdGlvbi1vZmZzZXQiLGJyb3dzZXJzOlsiQzQ2IiwiTzMzIl0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJBIGRpc3RhbmNlIHRoYXQgZGVzY3JpYmVzIHRoZSBwb3NpdGlvbiBhbG9uZyB0aGUgc3BlY2lmaWVkIG1vdGlvbiBwYXRoLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwicGVyY2VudGFnZSJdfSx7bmFtZToibW90aW9uLXBhdGgiLGJyb3dzZXJzOlsiQzQ2IiwiTzMzIl0sdmFsdWVzOlt7bmFtZToibm9uZSIsZGVzY3JpcHRpb246Ik5vIG1vdGlvbiBwYXRoIGdldHMgY3JlYXRlZC4ifSx7bmFtZToicGF0aCgpIixkZXNjcmlwdGlvbjoiRGVmaW5lcyBhbiBTVkcgcGF0aCBhcyBhIHN0cmluZywgd2l0aCBvcHRpb25hbCAnZmlsbC1ydWxlJyBhcyB0aGUgZmlyc3QgYXJndW1lbnQuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHRoZSBtb3Rpb24gcGF0aCB0aGUgZWxlbWVudCBnZXRzIHBvc2l0aW9uZWQgYXQuIixyZXN0cmljdGlvbnM6WyJ1cmwiLCJzaGFwZSIsImdlb21ldHJ5LWJveCIsImVudW0iXX0se25hbWU6Im1vdGlvbi1yb3RhdGlvbiIsYnJvd3NlcnM6WyJDNDYiLCJPMzMiXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHRoYXQgdGhlIG9iamVjdCBpcyByb3RhdGVkIGJ5IHRoZSBhbmdsZSBvZiB0aGUgZGlyZWN0aW9uIG9mIHRoZSBtb3Rpb24gcGF0aC4ifSx7bmFtZToicmV2ZXJzZSIsZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGF0IHRoZSBvYmplY3QgaXMgcm90YXRlZCBieSB0aGUgYW5nbGUgb2YgdGhlIGRpcmVjdGlvbiBvZiB0aGUgbW90aW9uIHBhdGggcGx1cyAxODAgZGVncmVlcy4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJEZWZpbmVzIHRoZSBkaXJlY3Rpb24gb2YgdGhlIGVsZW1lbnQgd2hpbGUgcG9zaXRpb25pbmcgYWxvbmcgdGhlIG1vdGlvbiBwYXRoLiIscmVzdHJpY3Rpb25zOlsiYW5nbGUiXX0se25hbWU6Ii1tb3otYW5pbWF0aW9uIixicm93c2VyczpbIkZGOSJdLHZhbHVlczpbe25hbWU6ImFsdGVybmF0ZSIsZGVzY3JpcHRpb246IlRoZSBhbmltYXRpb24gY3ljbGUgaXRlcmF0aW9ucyB0aGF0IGFyZSBvZGQgY291bnRzIGFyZSBwbGF5ZWQgaW4gdGhlIG5vcm1hbCBkaXJlY3Rpb24sIGFuZCB0aGUgYW5pbWF0aW9uIGN5Y2xlIGl0ZXJhdGlvbnMgdGhhdCBhcmUgZXZlbiBjb3VudHMgYXJlIHBsYXllZCBpbiBhIHJldmVyc2UgZGlyZWN0aW9uLiJ9LHtuYW1lOiJhbHRlcm5hdGUtcmV2ZXJzZSIsZGVzY3JpcHRpb246IlRoZSBhbmltYXRpb24gY3ljbGUgaXRlcmF0aW9ucyB0aGF0IGFyZSBvZGQgY291bnRzIGFyZSBwbGF5ZWQgaW4gdGhlIHJldmVyc2UgZGlyZWN0aW9uLCBhbmQgdGhlIGFuaW1hdGlvbiBjeWNsZSBpdGVyYXRpb25zIHRoYXQgYXJlIGV2ZW4gY291bnRzIGFyZSBwbGF5ZWQgaW4gYSBub3JtYWwgZGlyZWN0aW9uLiJ9LHtuYW1lOiJiYWNrd2FyZHMiLGRlc2NyaXB0aW9uOiJUaGUgYmVnaW5uaW5nIHByb3BlcnR5IHZhbHVlIChhcyBkZWZpbmVkIGluIHRoZSBmaXJzdCBAa2V5ZnJhbWVzIGF0LXJ1bGUpIGlzIGFwcGxpZWQgYmVmb3JlIHRoZSBhbmltYXRpb24gaXMgZGlzcGxheWVkLCBkdXJpbmcgdGhlIHBlcmlvZCBkZWZpbmVkIGJ5ICdhbmltYXRpb24tZGVsYXknLiJ9LHtuYW1lOiJib3RoIixkZXNjcmlwdGlvbjoiQm90aCBmb3J3YXJkcyBhbmQgYmFja3dhcmRzIGZpbGwgbW9kZXMgYXJlIGFwcGxpZWQuIn0se25hbWU6ImZvcndhcmRzIixkZXNjcmlwdGlvbjoiVGhlIGZpbmFsIHByb3BlcnR5IHZhbHVlIChhcyBkZWZpbmVkIGluIHRoZSBsYXN0IEBrZXlmcmFtZXMgYXQtcnVsZSkgaXMgbWFpbnRhaW5lZCBhZnRlciB0aGUgYW5pbWF0aW9uIGNvbXBsZXRlcy4ifSx7bmFtZToiaW5maW5pdGUiLGRlc2NyaXB0aW9uOiJDYXVzZXMgdGhlIGFuaW1hdGlvbiB0byByZXBlYXQgZm9yZXZlci4ifSx7bmFtZToibm9uZSIsZGVzY3JpcHRpb246Ik5vIGFuaW1hdGlvbiBpcyBwZXJmb3JtZWQifSx7bmFtZToibm9ybWFsIixkZXNjcmlwdGlvbjoiTm9ybWFsIHBsYXliYWNrLiJ9LHtuYW1lOiJyZXZlcnNlIixkZXNjcmlwdGlvbjoiQWxsIGl0ZXJhdGlvbnMgb2YgdGhlIGFuaW1hdGlvbiBhcmUgcGxheWVkIGluIHRoZSByZXZlcnNlIGRpcmVjdGlvbiBmcm9tIHRoZSB3YXkgdGhleSB3ZXJlIHNwZWNpZmllZC4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJTaG9ydGhhbmQgcHJvcGVydHkgY29tYmluZXMgc2l4IG9mIHRoZSBhbmltYXRpb24gcHJvcGVydGllcyBpbnRvIGEgc2luZ2xlIHByb3BlcnR5LiIscmVzdHJpY3Rpb25zOlsidGltZSIsImVudW0iLCJ0aW1pbmctZnVuY3Rpb24iLCJpZGVudGlmaWVyIiwibnVtYmVyIl19LHtuYW1lOiItbW96LWFuaW1hdGlvbi1kZWxheSIsYnJvd3NlcnM6WyJGRjkiXSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkRlZmluZXMgd2hlbiB0aGUgYW5pbWF0aW9uIHdpbGwgc3RhcnQuIixyZXN0cmljdGlvbnM6WyJ0aW1lIl19LHtuYW1lOiItbW96LWFuaW1hdGlvbi1kaXJlY3Rpb24iLGJyb3dzZXJzOlsiRkY5Il0sdmFsdWVzOlt7bmFtZToiYWx0ZXJuYXRlIixkZXNjcmlwdGlvbjoiVGhlIGFuaW1hdGlvbiBjeWNsZSBpdGVyYXRpb25zIHRoYXQgYXJlIG9kZCBjb3VudHMgYXJlIHBsYXllZCBpbiB0aGUgbm9ybWFsIGRpcmVjdGlvbiwgYW5kIHRoZSBhbmltYXRpb24gY3ljbGUgaXRlcmF0aW9ucyB0aGF0IGFyZSBldmVuIGNvdW50cyBhcmUgcGxheWVkIGluIGEgcmV2ZXJzZSBkaXJlY3Rpb24uIn0se25hbWU6ImFsdGVybmF0ZS1yZXZlcnNlIixkZXNjcmlwdGlvbjoiVGhlIGFuaW1hdGlvbiBjeWNsZSBpdGVyYXRpb25zIHRoYXQgYXJlIG9kZCBjb3VudHMgYXJlIHBsYXllZCBpbiB0aGUgcmV2ZXJzZSBkaXJlY3Rpb24sIGFuZCB0aGUgYW5pbWF0aW9uIGN5Y2xlIGl0ZXJhdGlvbnMgdGhhdCBhcmUgZXZlbiBjb3VudHMgYXJlIHBsYXllZCBpbiBhIG5vcm1hbCBkaXJlY3Rpb24uIn0se25hbWU6Im5vcm1hbCIsZGVzY3JpcHRpb246Ik5vcm1hbCBwbGF5YmFjay4ifSx7bmFtZToicmV2ZXJzZSIsZGVzY3JpcHRpb246IkFsbCBpdGVyYXRpb25zIG9mIHRoZSBhbmltYXRpb24gYXJlIHBsYXllZCBpbiB0aGUgcmV2ZXJzZSBkaXJlY3Rpb24gZnJvbSB0aGUgd2F5IHRoZXkgd2VyZSBzcGVjaWZpZWQuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiRGVmaW5lcyB3aGV0aGVyIG9yIG5vdCB0aGUgYW5pbWF0aW9uIHNob3VsZCBwbGF5IGluIHJldmVyc2Ugb24gYWx0ZXJuYXRlIGN5Y2xlcy4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii1tb3otYW5pbWF0aW9uLWR1cmF0aW9uIixicm93c2VyczpbIkZGOSJdLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiRGVmaW5lcyB0aGUgbGVuZ3RoIG9mIHRpbWUgdGhhdCBhbiBhbmltYXRpb24gdGFrZXMgdG8gY29tcGxldGUgb25lIGN5Y2xlLiIscmVzdHJpY3Rpb25zOlsidGltZSJdfSx7bmFtZToiLW1vei1hbmltYXRpb24taXRlcmF0aW9uLWNvdW50Iixicm93c2VyczpbIkZGOSJdLHZhbHVlczpbe25hbWU6ImluZmluaXRlIixkZXNjcmlwdGlvbjoiQ2F1c2VzIHRoZSBhbmltYXRpb24gdG8gcmVwZWF0IGZvcmV2ZXIuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiRGVmaW5lcyB0aGUgbnVtYmVyIG9mIHRpbWVzIGFuIGFuaW1hdGlvbiBjeWNsZSBpcyBwbGF5ZWQuIFRoZSBkZWZhdWx0IHZhbHVlIGlzIG9uZSwgbWVhbmluZyB0aGUgYW5pbWF0aW9uIHdpbGwgcGxheSBmcm9tIGJlZ2lubmluZyB0byBlbmQgb25jZS4iLHJlc3RyaWN0aW9uczpbIm51bWJlciIsImVudW0iXX0se25hbWU6Ii1tb3otYW5pbWF0aW9uLW5hbWUiLGJyb3dzZXJzOlsiRkY5Il0sdmFsdWVzOlt7bmFtZToibm9uZSIsZGVzY3JpcHRpb246Ik5vIGFuaW1hdGlvbiBpcyBwZXJmb3JtZWQifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJEZWZpbmVzIGEgbGlzdCBvZiBhbmltYXRpb25zIHRoYXQgYXBwbHkuIEVhY2ggbmFtZSBpcyB1c2VkIHRvIHNlbGVjdCB0aGUga2V5ZnJhbWUgYXQtcnVsZSB0aGF0IHByb3ZpZGVzIHRoZSBwcm9wZXJ0eSB2YWx1ZXMgZm9yIHRoZSBhbmltYXRpb24uIixyZXN0cmljdGlvbnM6WyJpZGVudGlmaWVyIiwiZW51bSJdfSx7bmFtZToiLW1vei1hbmltYXRpb24tcGxheS1zdGF0ZSIsYnJvd3NlcnM6WyJGRjkiXSx2YWx1ZXM6W3tuYW1lOiJwYXVzZWQiLGRlc2NyaXB0aW9uOiJBIHJ1bm5pbmcgYW5pbWF0aW9uIHdpbGwgYmUgcGF1c2VkLiJ9LHtuYW1lOiJydW5uaW5nIixkZXNjcmlwdGlvbjoiUmVzdW1lIHBsYXliYWNrIG9mIGEgcGF1c2VkIGFuaW1hdGlvbi4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJEZWZpbmVzIHdoZXRoZXIgdGhlIGFuaW1hdGlvbiBpcyBydW5uaW5nIG9yIHBhdXNlZC4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii1tb3otYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbiIsYnJvd3NlcnM6WyJGRjkiXSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkRlc2NyaWJlcyBob3cgdGhlIGFuaW1hdGlvbiB3aWxsIHByb2dyZXNzIG92ZXIgb25lIGN5Y2xlIG9mIGl0cyBkdXJhdGlvbi4gU2VlIHRoZSAndHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb24nLiIscmVzdHJpY3Rpb25zOlsidGltaW5nLWZ1bmN0aW9uIl19LHtuYW1lOiItbW96LWFwcGVhcmFuY2UiLGJyb3dzZXJzOlsiRkYxIl0sdmFsdWVzOlt7bmFtZToiYnV0dG9uIn0se25hbWU6ImJ1dHRvbi1hcnJvdy1kb3duIn0se25hbWU6ImJ1dHRvbi1hcnJvdy1uZXh0In0se25hbWU6ImJ1dHRvbi1hcnJvdy1wcmV2aW91cyJ9LHtuYW1lOiJidXR0b24tYXJyb3ctdXAifSx7bmFtZToiYnV0dG9uLWJldmVsIn0se25hbWU6ImNoZWNrYm94In0se25hbWU6ImNoZWNrYm94LWNvbnRhaW5lciJ9LHtuYW1lOiJjaGVja2JveC1sYWJlbCJ9LHtuYW1lOiJkaWFsb2cifSx7bmFtZToiZ3JvdXBib3gifSx7bmFtZToibGlzdGJveCJ9LHtuYW1lOiJtZW51YXJyb3cifSx7bmFtZToibWVudWltYWdlIn0se25hbWU6Im1lbnVpdGVtIn0se25hbWU6Im1lbnVpdGVtdGV4dCJ9LHtuYW1lOiJtZW51bGlzdCJ9LHtuYW1lOiJtZW51bGlzdC1idXR0b24ifSx7bmFtZToibWVudWxpc3QtdGV4dCJ9LHtuYW1lOiJtZW51bGlzdC10ZXh0ZmllbGQifSx7bmFtZToibWVudXBvcHVwIn0se25hbWU6Im1lbnVyYWRpbyJ9LHtuYW1lOiJtZW51c2VwYXJhdG9yIn0se25hbWU6Ii1tb3otbWFjLXVuaWZpZWQtdG9vbGJhciJ9LHtuYW1lOiItbW96LXdpbi1ib3JkZXJsZXNzLWdsYXNzIn0se25hbWU6Ii1tb3otd2luLWJyb3dzZXJ0YWJiYXItdG9vbGJveCJ9LHtuYW1lOiItbW96LXdpbi1jb21tdW5pY2F0aW9ucy10b29sYm94In0se25hbWU6Ii1tb3otd2luLWdsYXNzIn0se25hbWU6Ii1tb3otd2luLW1lZGlhLXRvb2xib3gifSx7bmFtZToibm9uZSJ9LHtuYW1lOiJwcm9ncmVzc2JhciJ9LHtuYW1lOiJwcm9ncmVzc2NodW5rIn0se25hbWU6InJhZGlvIn0se25hbWU6InJhZGlvLWNvbnRhaW5lciJ9LHtuYW1lOiJyYWRpby1sYWJlbCJ9LHtuYW1lOiJyYWRpb21lbnVpdGVtIn0se25hbWU6InJlc2l6ZXIifSx7bmFtZToicmVzaXplcnBhbmVsIn0se25hbWU6InNjcm9sbGJhcmJ1dHRvbi1kb3duIn0se25hbWU6InNjcm9sbGJhcmJ1dHRvbi1sZWZ0In0se25hbWU6InNjcm9sbGJhcmJ1dHRvbi1yaWdodCJ9LHtuYW1lOiJzY3JvbGxiYXJidXR0b24tdXAifSx7bmFtZToic2Nyb2xsYmFyLXNtYWxsIn0se25hbWU6InNjcm9sbGJhcnRyYWNrLWhvcml6b250YWwifSx7bmFtZToic2Nyb2xsYmFydHJhY2stdmVydGljYWwifSx7bmFtZToic2VwYXJhdG9yIn0se25hbWU6InNwaW5uZXIifSx7bmFtZToic3Bpbm5lci1kb3duYnV0dG9uIn0se25hbWU6InNwaW5uZXItdGV4dGZpZWxkIn0se25hbWU6InNwaW5uZXItdXBidXR0b24ifSx7bmFtZToic3RhdHVzYmFyIn0se25hbWU6InN0YXR1c2JhcnBhbmVsIn0se25hbWU6InRhYiJ9LHtuYW1lOiJ0YWJwYW5lbHMifSx7bmFtZToidGFiLXNjcm9sbC1hcnJvdy1iYWNrIn0se25hbWU6InRhYi1zY3JvbGwtYXJyb3ctZm9yd2FyZCJ9LHtuYW1lOiJ0ZXh0ZmllbGQifSx7bmFtZToidGV4dGZpZWxkLW11bHRpbGluZSJ9LHtuYW1lOiJ0b29sYmFyIn0se25hbWU6InRvb2xib3gifSx7bmFtZToidG9vbHRpcCJ9LHtuYW1lOiJ0cmVlaGVhZGVyY2VsbCJ9LHtuYW1lOiJ0cmVlaGVhZGVyc29ydGFycm93In0se25hbWU6InRyZWVpdGVtIn0se25hbWU6InRyZWV0d2lzdHlvcGVuIn0se25hbWU6InRyZWV2aWV3In0se25hbWU6InRyZWV3aXN0eSJ9LHtuYW1lOiJ3aW5kb3cifV0sc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiJub25lIHwgYnV0dG9uIHwgYnV0dG9uLWFycm93LWRvd24gfCBidXR0b24tYXJyb3ctbmV4dCB8IGJ1dHRvbi1hcnJvdy1wcmV2aW91cyB8IGJ1dHRvbi1hcnJvdy11cCB8IGJ1dHRvbi1iZXZlbCB8IGJ1dHRvbi1mb2N1cyB8IGNhcmV0IHwgY2hlY2tib3ggfCBjaGVja2JveC1jb250YWluZXIgfCBjaGVja2JveC1sYWJlbCB8IGNoZWNrbWVudWl0ZW0gfCBkdWFsYnV0dG9uIHwgZ3JvdXBib3ggfCBsaXN0Ym94IHwgbGlzdGl0ZW0gfCBtZW51YXJyb3cgfCBtZW51YmFyIHwgbWVudWNoZWNrYm94IHwgbWVudWltYWdlIHwgbWVudWl0ZW0gfCBtZW51aXRlbXRleHQgfCBtZW51bGlzdCB8IG1lbnVsaXN0LWJ1dHRvbiB8IG1lbnVsaXN0LXRleHQgfCBtZW51bGlzdC10ZXh0ZmllbGQgfCBtZW51cG9wdXAgfCBtZW51cmFkaW8gfCBtZW51c2VwYXJhdG9yIHwgbWV0ZXJiYXIgfCBtZXRlcmNodW5rIHwgcHJvZ3Jlc3NiYXIgfCBwcm9ncmVzc2Jhci12ZXJ0aWNhbCB8IHByb2dyZXNzY2h1bmsgfCBwcm9ncmVzc2NodW5rLXZlcnRpY2FsIHwgcmFkaW8gfCByYWRpby1jb250YWluZXIgfCByYWRpby1sYWJlbCB8IHJhZGlvbWVudWl0ZW0gfCByYW5nZSB8IHJhbmdlLXRodW1iIHwgcmVzaXplciB8IHJlc2l6ZXJwYW5lbCB8IHNjYWxlLWhvcml6b250YWwgfCBzY2FsZXRodW1iZW5kIHwgc2NhbGV0aHVtYi1ob3Jpem9udGFsIHwgc2NhbGV0aHVtYnN0YXJ0IHwgc2NhbGV0aHVtYnRpY2sgfCBzY2FsZXRodW1iLXZlcnRpY2FsIHwgc2NhbGUtdmVydGljYWwgfCBzY3JvbGxiYXJidXR0b24tZG93biB8IHNjcm9sbGJhcmJ1dHRvbi1sZWZ0IHwgc2Nyb2xsYmFyYnV0dG9uLXJpZ2h0IHwgc2Nyb2xsYmFyYnV0dG9uLXVwIHwgc2Nyb2xsYmFydGh1bWItaG9yaXpvbnRhbCB8IHNjcm9sbGJhcnRodW1iLXZlcnRpY2FsIHwgc2Nyb2xsYmFydHJhY2staG9yaXpvbnRhbCB8IHNjcm9sbGJhcnRyYWNrLXZlcnRpY2FsIHwgc2VhcmNoZmllbGQgfCBzZXBhcmF0b3IgfCBzaGVldCB8IHNwaW5uZXIgfCBzcGlubmVyLWRvd25idXR0b24gfCBzcGlubmVyLXRleHRmaWVsZCB8IHNwaW5uZXItdXBidXR0b24gfCBzcGxpdHRlciB8IHN0YXR1c2JhciB8IHN0YXR1c2JhcnBhbmVsIHwgdGFiIHwgdGFicGFuZWwgfCB0YWJwYW5lbHMgfCB0YWItc2Nyb2xsLWFycm93LWJhY2sgfCB0YWItc2Nyb2xsLWFycm93LWZvcndhcmQgfCB0ZXh0ZmllbGQgfCB0ZXh0ZmllbGQtbXVsdGlsaW5lIHwgdG9vbGJhciB8IHRvb2xiYXJidXR0b24gfCB0b29sYmFyYnV0dG9uLWRyb3Bkb3duIHwgdG9vbGJhcmdyaXBwZXIgfCB0b29sYm94IHwgdG9vbHRpcCB8IHRyZWVoZWFkZXIgfCB0cmVlaGVhZGVyY2VsbCB8IHRyZWVoZWFkZXJzb3J0YXJyb3cgfCB0cmVlaXRlbSB8IHRyZWVsaW5lIHwgdHJlZXR3aXN0eSB8IHRyZWV0d2lzdHlvcGVuIHwgdHJlZXZpZXcgfCAtbW96LW1hYy11bmlmaWVkLXRvb2xiYXIgfCAtbW96LXdpbi1ib3JkZXJsZXNzLWdsYXNzIHwgLW1vei13aW4tYnJvd3NlcnRhYmJhci10b29sYm94IHwgLW1vei13aW4tY29tbXVuaWNhdGlvbnN0ZXh0IHwgLW1vei13aW4tY29tbXVuaWNhdGlvbnMtdG9vbGJveCB8IC1tb3otd2luLWV4Y2x1ZGUtZ2xhc3MgfCAtbW96LXdpbi1nbGFzcyB8IC1tb3otd2luLW1lZGlhdGV4dCB8IC1tb3otd2luLW1lZGlhLXRvb2xib3ggfCAtbW96LXdpbmRvdy1idXR0b24tYm94IHwgLW1vei13aW5kb3ctYnV0dG9uLWJveC1tYXhpbWl6ZWQgfCAtbW96LXdpbmRvdy1idXR0b24tY2xvc2UgfCAtbW96LXdpbmRvdy1idXR0b24tbWF4aW1pemUgfCAtbW96LXdpbmRvdy1idXR0b24tbWluaW1pemUgfCAtbW96LXdpbmRvdy1idXR0b24tcmVzdG9yZSB8IC1tb3otd2luZG93LWZyYW1lLWJvdHRvbSB8IC1tb3otd2luZG93LWZyYW1lLWxlZnQgfCAtbW96LXdpbmRvdy1mcmFtZS1yaWdodCB8IC1tb3otd2luZG93LXRpdGxlYmFyIHwgLW1vei13aW5kb3ctdGl0bGViYXItbWF4aW1pemVkIixyZWxldmFuY2U6MCxkZXNjcmlwdGlvbjoiVXNlZCBpbiBHZWNrbyAoRmlyZWZveCkgdG8gZGlzcGxheSBhbiBlbGVtZW50IHVzaW5nIGEgcGxhdGZvcm0tbmF0aXZlIHN0eWxpbmcgYmFzZWQgb24gdGhlIG9wZXJhdGluZyBzeXN0ZW0ncyB0aGVtZS4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii1tb3otYmFja2ZhY2UtdmlzaWJpbGl0eSIsYnJvd3NlcnM6WyJGRjEwIl0sdmFsdWVzOlt7bmFtZToiaGlkZGVuIn0se25hbWU6InZpc2libGUifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJEZXRlcm1pbmVzIHdoZXRoZXIgb3Igbm90IHRoZSAnYmFjaycgc2lkZSBvZiBhIHRyYW5zZm9ybWVkIGVsZW1lbnQgaXMgdmlzaWJsZSB3aGVuIGZhY2luZyB0aGUgdmlld2VyLiBXaXRoIGFuIGlkZW50aXR5IHRyYW5zZm9ybSwgdGhlIGZyb250IHNpZGUgb2YgYW4gZWxlbWVudCBmYWNlcyB0aGUgdmlld2VyLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLW1vei1iYWNrZ3JvdW5kLWNsaXAiLGJyb3dzZXJzOlsiRkYxLTMuNiJdLHZhbHVlczpbe25hbWU6InBhZGRpbmcifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJEZXRlcm1pbmVzIHRoZSBiYWNrZ3JvdW5kIHBhaW50aW5nIGFyZWEuIixyZXN0cmljdGlvbnM6WyJib3giLCJlbnVtIl19LHtuYW1lOiItbW96LWJhY2tncm91bmQtaW5saW5lLXBvbGljeSIsYnJvd3NlcnM6WyJGRjEiXSx2YWx1ZXM6W3tuYW1lOiJib3VuZGluZy1ib3gifSx7bmFtZToiY29udGludW91cyJ9LHtuYW1lOiJlYWNoLWJveCJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkluIEdlY2tvLWJhc2VkIGFwcGxpY2F0aW9ucyBsaWtlIEZpcmVmb3gsIHRoZSAtbW96LWJhY2tncm91bmQtaW5saW5lLXBvbGljeSBDU1MgcHJvcGVydHkgc3BlY2lmaWVzIGhvdyB0aGUgYmFja2dyb3VuZCBpbWFnZSBvZiBhbiBpbmxpbmUgZWxlbWVudCBpcyBkZXRlcm1pbmVkIHdoZW4gdGhlIGNvbnRlbnQgb2YgdGhlIGlubGluZSBlbGVtZW50IHdyYXBzIG9udG8gbXVsdGlwbGUgbGluZXMuIFRoZSBjaG9pY2Ugb2YgcG9zaXRpb24gaGFzIHNpZ25pZmljYW50IGVmZmVjdHMgb24gcmVwZXRpdGlvbi4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii1tb3otYmFja2dyb3VuZC1vcmlnaW4iLGJyb3dzZXJzOlsiRkYxIl0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJGb3IgZWxlbWVudHMgcmVuZGVyZWQgYXMgYSBzaW5nbGUgYm94LCBzcGVjaWZpZXMgdGhlIGJhY2tncm91bmQgcG9zaXRpb25pbmcgYXJlYS4gRm9yIGVsZW1lbnRzIHJlbmRlcmVkIGFzIG11bHRpcGxlIGJveGVzIChlLmcuLCBpbmxpbmUgYm94ZXMgb24gc2V2ZXJhbCBsaW5lcywgYm94ZXMgb24gc2V2ZXJhbCBwYWdlcykgc3BlY2lmaWVzIHdoaWNoIGJveGVzICdib3gtZGVjb3JhdGlvbi1icmVhaycgb3BlcmF0ZXMgb24gdG8gZGV0ZXJtaW5lIHRoZSBiYWNrZ3JvdW5kIHBvc2l0aW9uaW5nIGFyZWEocykuIixyZXN0cmljdGlvbnM6WyJib3giXX0se25hbWU6Ii1tb3otYm9yZGVyLWJvdHRvbS1jb2xvcnMiLGJyb3dzZXJzOlsiRkYxIl0sc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiI8Y29sb3I+KyB8IG5vbmUiLHJlbGV2YW5jZTowLGRlc2NyaXB0aW9uOiJTZXRzIGEgbGlzdCBvZiBjb2xvcnMgZm9yIHRoZSBib3R0b20gYm9yZGVyLiIscmVzdHJpY3Rpb25zOlsiY29sb3IiXX0se25hbWU6Ii1tb3otYm9yZGVyLWltYWdlIixicm93c2VyczpbIkZGMy42Il0sdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IklmICdhdXRvJyBpcyBzcGVjaWZpZWQgdGhlbiB0aGUgYm9yZGVyIGltYWdlIHdpZHRoIGlzIHRoZSBpbnRyaW5zaWMgd2lkdGggb3IgaGVpZ2h0ICh3aGljaGV2ZXIgaXMgYXBwbGljYWJsZSkgb2YgdGhlIGNvcnJlc3BvbmRpbmcgaW1hZ2Ugc2xpY2UuIElmIHRoZSBpbWFnZSBkb2VzIG5vdCBoYXZlIHRoZSByZXF1aXJlZCBpbnRyaW5zaWMgZGltZW5zaW9uIHRoZW4gdGhlIGNvcnJlc3BvbmRpbmcgYm9yZGVyLXdpZHRoIGlzIHVzZWQgaW5zdGVhZC4ifSx7bmFtZToiZmlsbCIsZGVzY3JpcHRpb246IkNhdXNlcyB0aGUgbWlkZGxlIHBhcnQgb2YgdGhlIGJvcmRlci1pbWFnZSB0byBiZSBwcmVzZXJ2ZWQuIn0se25hbWU6Im5vbmUifSx7bmFtZToicmVwZWF0IixkZXNjcmlwdGlvbjoiVGhlIGltYWdlIGlzIHRpbGVkIChyZXBlYXRlZCkgdG8gZmlsbCB0aGUgYXJlYS4ifSx7bmFtZToicm91bmQiLGRlc2NyaXB0aW9uOiJUaGUgaW1hZ2UgaXMgdGlsZWQgKHJlcGVhdGVkKSB0byBmaWxsIHRoZSBhcmVhLiBJZiBpdCBkb2VzIG5vdCBmaWxsIHRoZSBhcmVhIHdpdGggYSB3aG9sZSBudW1iZXIgb2YgdGlsZXMsIHRoZSBpbWFnZSBpcyByZXNjYWxlZCBzbyB0aGF0IGl0IGRvZXMuIn0se25hbWU6InNwYWNlIixkZXNjcmlwdGlvbjoiVGhlIGltYWdlIGlzIHRpbGVkIChyZXBlYXRlZCkgdG8gZmlsbCB0aGUgYXJlYS4gSWYgaXQgZG9lcyBub3QgZmlsbCB0aGUgYXJlYSB3aXRoIGEgd2hvbGUgbnVtYmVyIG9mIHRpbGVzLCB0aGUgZXh0cmEgc3BhY2UgaXMgZGlzdHJpYnV0ZWQgYXJvdW5kIHRoZSB0aWxlcy4ifSx7bmFtZToic3RyZXRjaCIsZGVzY3JpcHRpb246IlRoZSBpbWFnZSBpcyBzdHJldGNoZWQgdG8gZmlsbCB0aGUgYXJlYS4ifSx7bmFtZToidXJsKCkifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJTaG9ydGhhbmQgcHJvcGVydHkgZm9yIHNldHRpbmcgJ2JvcmRlci1pbWFnZS1zb3VyY2UnLCAnYm9yZGVyLWltYWdlLXNsaWNlJywgJ2JvcmRlci1pbWFnZS13aWR0aCcsICdib3JkZXItaW1hZ2Utb3V0c2V0JyBhbmQgJ2JvcmRlci1pbWFnZS1yZXBlYXQnLiBPbWl0dGVkIHZhbHVlcyBhcmUgc2V0IHRvIHRoZWlyIGluaXRpYWwgdmFsdWVzLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwicGVyY2VudGFnZSIsIm51bWJlciIsInVybCIsImVudW0iXX0se25hbWU6Ii1tb3otYm9yZGVyLWxlZnQtY29sb3JzIixicm93c2VyczpbIkZGMSJdLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoiPGNvbG9yPisgfCBub25lIixyZWxldmFuY2U6MCxkZXNjcmlwdGlvbjoiU2V0cyBhIGxpc3Qgb2YgY29sb3JzIGZvciB0aGUgYm90dG9tIGJvcmRlci4iLHJlc3RyaWN0aW9uczpbImNvbG9yIl19LHtuYW1lOiItbW96LWJvcmRlci1yaWdodC1jb2xvcnMiLGJyb3dzZXJzOlsiRkYxIl0sc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiI8Y29sb3I+KyB8IG5vbmUiLHJlbGV2YW5jZTowLGRlc2NyaXB0aW9uOiJTZXRzIGEgbGlzdCBvZiBjb2xvcnMgZm9yIHRoZSBib3R0b20gYm9yZGVyLiIscmVzdHJpY3Rpb25zOlsiY29sb3IiXX0se25hbWU6Ii1tb3otYm9yZGVyLXRvcC1jb2xvcnMiLGJyb3dzZXJzOlsiRkYxIl0sc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiI8Y29sb3I+KyB8IG5vbmUiLHJlbGV2YW5jZTowLGRlc2NyaXB0aW9uOiJTa2UgRmlyZWZveCwgLW1vei1ib3JkZXItYm90dG9tLWNvbG9ycyBzZXRzIGEgbGlzdCBvZiBjb2xvcnMgZm9yIHRoZSBib3R0b20gYm9yZGVyLiIscmVzdHJpY3Rpb25zOlsiY29sb3IiXX0se25hbWU6Ii1tb3otYm94LWFsaWduIixicm93c2VyczpbIkZGMSJdLHZhbHVlczpbe25hbWU6ImJhc2VsaW5lIixkZXNjcmlwdGlvbjoiSWYgdGhpcyBib3ggb3JpZW50YXRpb24gaXMgaW5saW5lLWF4aXMgb3IgaG9yaXpvbnRhbCwgYWxsIGNoaWxkcmVuIGFyZSBwbGFjZWQgd2l0aCB0aGVpciBiYXNlbGluZXMgYWxpZ25lZCwgYW5kIGV4dHJhIHNwYWNlIHBsYWNlZCBiZWZvcmUgb3IgYWZ0ZXIgYXMgbmVjZXNzYXJ5LiBGb3IgYmxvY2sgZmxvd3MsIHRoZSBiYXNlbGluZSBvZiB0aGUgZmlyc3Qgbm9uLWVtcHR5IGxpbmUgYm94IGxvY2F0ZWQgd2l0aGluIHRoZSBlbGVtZW50IGlzIHVzZWQuIEZvciB0YWJsZXMsIHRoZSBiYXNlbGluZSBvZiB0aGUgZmlyc3QgY2VsbCBpcyB1c2VkLiJ9LHtuYW1lOiJjZW50ZXIiLGRlc2NyaXB0aW9uOiJBbnkgZXh0cmEgc3BhY2UgaXMgZGl2aWRlZCBldmVubHksIHdpdGggaGFsZiBwbGFjZWQgYWJvdmUgdGhlIGNoaWxkIGFuZCB0aGUgb3RoZXIgaGFsZiBwbGFjZWQgYWZ0ZXIgdGhlIGNoaWxkLiJ9LHtuYW1lOiJlbmQiLGRlc2NyaXB0aW9uOiJGb3Igbm9ybWFsIGRpcmVjdGlvbiBib3hlcywgdGhlIGJvdHRvbSBlZGdlIG9mIGVhY2ggY2hpbGQgaXMgcGxhY2VkIGFsb25nIHRoZSBib3R0b20gb2YgdGhlIGJveC4gRXh0cmEgc3BhY2UgaXMgcGxhY2VkIGFib3ZlIHRoZSBlbGVtZW50LiBGb3IgcmV2ZXJzZSBkaXJlY3Rpb24gYm94ZXMsIHRoZSB0b3AgZWRnZSBvZiBlYWNoIGNoaWxkIGlzIHBsYWNlZCBhbG9uZyB0aGUgdG9wIG9mIHRoZSBib3guIEV4dHJhIHNwYWNlIGlzIHBsYWNlZCBiZWxvdyB0aGUgZWxlbWVudC4ifSx7bmFtZToic3RhcnQiLGRlc2NyaXB0aW9uOiJGb3Igbm9ybWFsIGRpcmVjdGlvbiBib3hlcywgdGhlIHRvcCBlZGdlIG9mIGVhY2ggY2hpbGQgaXMgcGxhY2VkIGFsb25nIHRoZSB0b3Agb2YgdGhlIGJveC4gRXh0cmEgc3BhY2UgaXMgcGxhY2VkIGJlbG93IHRoZSBlbGVtZW50LiBGb3IgcmV2ZXJzZSBkaXJlY3Rpb24gYm94ZXMsIHRoZSBib3R0b20gZWRnZSBvZiBlYWNoIGNoaWxkIGlzIHBsYWNlZCBhbG9uZyB0aGUgYm90dG9tIG9mIHRoZSBib3guIEV4dHJhIHNwYWNlIGlzIHBsYWNlZCBhYm92ZSB0aGUgZWxlbWVudC4ifSx7bmFtZToic3RyZXRjaCIsZGVzY3JpcHRpb246IlRoZSBoZWlnaHQgb2YgZWFjaCBjaGlsZCBpcyBhZGp1c3RlZCB0byB0aGF0IG9mIHRoZSBjb250YWluaW5nIGJsb2NrLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlNwZWNpZmllcyBob3cgYSBYVUwgYm94IGFsaWducyBpdHMgY29udGVudHMgYWNyb3NzIChwZXJwZW5kaWN1bGFyIHRvKSB0aGUgZGlyZWN0aW9uIG9mIGl0cyBsYXlvdXQuIFRoZSBlZmZlY3Qgb2YgdGhpcyBpcyBvbmx5IHZpc2libGUgaWYgdGhlcmUgaXMgZXh0cmEgc3BhY2UgaW4gdGhlIGJveC4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii1tb3otYm94LWRpcmVjdGlvbiIsYnJvd3NlcnM6WyJGRjEiXSx2YWx1ZXM6W3tuYW1lOiJub3JtYWwiLGRlc2NyaXB0aW9uOiJBIGJveCB3aXRoIGEgY29tcHV0ZWQgdmFsdWUgb2YgaG9yaXpvbnRhbCBmb3IgYm94LW9yaWVudCBkaXNwbGF5cyBpdHMgY2hpbGRyZW4gZnJvbSBsZWZ0IHRvIHJpZ2h0LiBBIGJveCB3aXRoIGEgY29tcHV0ZWQgdmFsdWUgb2YgdmVydGljYWwgZGlzcGxheXMgaXRzIGNoaWxkcmVuIGZyb20gdG9wIHRvIGJvdHRvbS4ifSx7bmFtZToicmV2ZXJzZSIsZGVzY3JpcHRpb246IkEgYm94IHdpdGggYSBjb21wdXRlZCB2YWx1ZSBvZiBob3Jpem9udGFsIGZvciBib3gtb3JpZW50IGRpc3BsYXlzIGl0cyBjaGlsZHJlbiBmcm9tIHJpZ2h0IHRvIGxlZnQuIEEgYm94IHdpdGggYSBjb21wdXRlZCB2YWx1ZSBvZiB2ZXJ0aWNhbCBkaXNwbGF5cyBpdHMgY2hpbGRyZW4gZnJvbSBib3R0b20gdG8gdG9wLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlNwZWNpZmllcyB3aGV0aGVyIGEgYm94IGxheXMgb3V0IGl0cyBjb250ZW50cyBub3JtYWxseSAoZnJvbSB0aGUgdG9wIG9yIGxlZnQgZWRnZSksIG9yIGluIHJldmVyc2UgKGZyb20gdGhlIGJvdHRvbSBvciByaWdodCBlZGdlKS4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii1tb3otYm94LWZsZXgiLGJyb3dzZXJzOlsiRkYxIl0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgaG93IGEgYm94IGdyb3dzIHRvIGZpbGwgdGhlIGJveCB0aGF0IGNvbnRhaW5zIGl0LCBpbiB0aGUgZGlyZWN0aW9uIG9mIHRoZSBjb250YWluaW5nIGJveCdzIGxheW91dC4iLHJlc3RyaWN0aW9uczpbIm51bWJlciJdfSx7bmFtZToiLW1vei1ib3gtZmxleGdyb3VwIixicm93c2VyczpbIkZGMSJdLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiRmxleGlibGUgZWxlbWVudHMgY2FuIGJlIGFzc2lnbmVkIHRvIGZsZXggZ3JvdXBzIHVzaW5nIHRoZSAnYm94LWZsZXgtZ3JvdXAnIHByb3BlcnR5LiIscmVzdHJpY3Rpb25zOlsiaW50ZWdlciJdfSx7bmFtZToiLW1vei1ib3gtb3JkaW5hbC1ncm91cCIsYnJvd3NlcnM6WyJGRjEiXSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGUgb3JkaW5hbCBncm91cCB0aGUgZWxlbWVudCBiZWxvbmdzIHRvLiBFbGVtZW50cyB3aXRoIGEgbG93ZXIgb3JkaW5hbCBncm91cCBhcmUgZGlzcGxheWVkIGJlZm9yZSB0aG9zZSB3aXRoIGEgaGlnaGVyIG9yZGluYWwgZ3JvdXAuIixyZXN0cmljdGlvbnM6WyJpbnRlZ2VyIl19LHtuYW1lOiItbW96LWJveC1vcmllbnQiLGJyb3dzZXJzOlsiRkYxIl0sdmFsdWVzOlt7bmFtZToiYmxvY2stYXhpcyIsZGVzY3JpcHRpb246IkVsZW1lbnRzIGFyZSBvcmllbnRlZCBhbG9uZyB0aGUgYm94J3MgYXhpcy4ifSx7bmFtZToiaG9yaXpvbnRhbCIsZGVzY3JpcHRpb246IlRoZSBib3ggZGlzcGxheXMgaXRzIGNoaWxkcmVuIGZyb20gbGVmdCB0byByaWdodCBpbiBhIGhvcml6b250YWwgbGluZS4ifSx7bmFtZToiaW5saW5lLWF4aXMiLGRlc2NyaXB0aW9uOiJFbGVtZW50cyBhcmUgb3JpZW50ZWQgdmVydGljYWxseS4ifSx7bmFtZToidmVydGljYWwiLGRlc2NyaXB0aW9uOiJUaGUgYm94IGRpc3BsYXlzIGl0cyBjaGlsZHJlbiBmcm9tIHN0YWNrZWQgZnJvbSB0b3AgdG8gYm90dG9tIHZlcnRpY2FsbHkuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiSW4gTW96aWxsYSBhcHBsaWNhdGlvbnMsIC1tb3otYm94LW9yaWVudCBzcGVjaWZpZXMgd2hldGhlciBhIGJveCBsYXlzIG91dCBpdHMgY29udGVudHMgaG9yaXpvbnRhbGx5IG9yIHZlcnRpY2FsbHkuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiItbW96LWJveC1wYWNrIixicm93c2VyczpbIkZGMSJdLHZhbHVlczpbe25hbWU6ImNlbnRlciIsZGVzY3JpcHRpb246IlRoZSBleHRyYSBzcGFjZSBpcyBkaXZpZGVkIGV2ZW5seSwgd2l0aCBoYWxmIHBsYWNlZCBiZWZvcmUgdGhlIGZpcnN0IGNoaWxkIGFuZCB0aGUgb3RoZXIgaGFsZiBwbGFjZWQgYWZ0ZXIgdGhlIGxhc3QgY2hpbGQuIn0se25hbWU6ImVuZCIsZGVzY3JpcHRpb246IkZvciBub3JtYWwgZGlyZWN0aW9uIGJveGVzLCB0aGUgcmlnaHQgZWRnZSBvZiB0aGUgbGFzdCBjaGlsZCBpcyBwbGFjZWQgYXQgdGhlIHJpZ2h0IHNpZGUsIHdpdGggYWxsIGV4dHJhIHNwYWNlIHBsYWNlZCBiZWZvcmUgdGhlIGZpcnN0IGNoaWxkLiBGb3IgcmV2ZXJzZSBkaXJlY3Rpb24gYm94ZXMsIHRoZSBsZWZ0IGVkZ2Ugb2YgdGhlIGZpcnN0IGNoaWxkIGlzIHBsYWNlZCBhdCB0aGUgbGVmdCBzaWRlLCB3aXRoIGFsbCBleHRyYSBzcGFjZSBwbGFjZWQgYWZ0ZXIgdGhlIGxhc3QgY2hpbGQuIn0se25hbWU6Imp1c3RpZnkiLGRlc2NyaXB0aW9uOiJUaGUgc3BhY2UgaXMgZGl2aWRlZCBldmVubHkgaW4tYmV0d2VlbiBlYWNoIGNoaWxkLCB3aXRoIG5vbmUgb2YgdGhlIGV4dHJhIHNwYWNlIHBsYWNlZCBiZWZvcmUgdGhlIGZpcnN0IGNoaWxkIG9yIGFmdGVyIHRoZSBsYXN0IGNoaWxkLiBJZiB0aGVyZSBpcyBvbmx5IG9uZSBjaGlsZCwgdHJlYXQgdGhlIHBhY2sgdmFsdWUgYXMgaWYgaXQgd2VyZSBzdGFydC4ifSx7bmFtZToic3RhcnQiLGRlc2NyaXB0aW9uOiJGb3Igbm9ybWFsIGRpcmVjdGlvbiBib3hlcywgdGhlIGxlZnQgZWRnZSBvZiB0aGUgZmlyc3QgY2hpbGQgaXMgcGxhY2VkIGF0IHRoZSBsZWZ0IHNpZGUsIHdpdGggYWxsIGV4dHJhIHNwYWNlIHBsYWNlZCBhZnRlciB0aGUgbGFzdCBjaGlsZC4gRm9yIHJldmVyc2UgZGlyZWN0aW9uIGJveGVzLCB0aGUgcmlnaHQgZWRnZSBvZiB0aGUgbGFzdCBjaGlsZCBpcyBwbGFjZWQgYXQgdGhlIHJpZ2h0IHNpZGUsIHdpdGggYWxsIGV4dHJhIHNwYWNlIHBsYWNlZCBiZWZvcmUgdGhlIGZpcnN0IGNoaWxkLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlNwZWNpZmllcyBob3cgYSBib3ggcGFja3MgaXRzIGNvbnRlbnRzIGluIHRoZSBkaXJlY3Rpb24gb2YgaXRzIGxheW91dC4gVGhlIGVmZmVjdCBvZiB0aGlzIGlzIG9ubHkgdmlzaWJsZSBpZiB0aGVyZSBpcyBleHRyYSBzcGFjZSBpbiB0aGUgYm94LiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLW1vei1ib3gtc2l6aW5nIixicm93c2VyczpbIkZGMSJdLHZhbHVlczpbe25hbWU6ImJvcmRlci1ib3giLGRlc2NyaXB0aW9uOiJUaGUgc3BlY2lmaWVkIHdpZHRoIGFuZCBoZWlnaHQgKGFuZCByZXNwZWN0aXZlIG1pbi9tYXggcHJvcGVydGllcykgb24gdGhpcyBlbGVtZW50IGRldGVybWluZSB0aGUgYm9yZGVyIGJveCBvZiB0aGUgZWxlbWVudC4ifSx7bmFtZToiY29udGVudC1ib3giLGRlc2NyaXB0aW9uOiJCZWhhdmlvciBvZiB3aWR0aCBhbmQgaGVpZ2h0IGFzIHNwZWNpZmllZCBieSBDU1MyLjEuIFRoZSBzcGVjaWZpZWQgd2lkdGggYW5kIGhlaWdodCAoYW5kIHJlc3BlY3RpdmUgbWluL21heCBwcm9wZXJ0aWVzKSBhcHBseSB0byB0aGUgd2lkdGggYW5kIGhlaWdodCByZXNwZWN0aXZlbHkgb2YgdGhlIGNvbnRlbnQgYm94IG9mIHRoZSBlbGVtZW50LiJ9LHtuYW1lOiJwYWRkaW5nLWJveCIsZGVzY3JpcHRpb246IlRoZSBzcGVjaWZpZWQgd2lkdGggYW5kIGhlaWdodCAoYW5kIHJlc3BlY3RpdmUgbWluL21heCBwcm9wZXJ0aWVzKSBvbiB0aGlzIGVsZW1lbnQgZGV0ZXJtaW5lIHRoZSBwYWRkaW5nIGJveCBvZiB0aGUgZWxlbWVudC4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJCb3ggTW9kZWwgYWRkaXRpb24gaW4gQ1NTMy4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii1tb3otY29sdW1uLWNvdW50Iixicm93c2VyczpbIkZGMy41Il0sdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IkRldGVybWluZXMgdGhlIG51bWJlciBvZiBjb2x1bW5zIGJ5IHRoZSAnY29sdW1uLXdpZHRoJyBwcm9wZXJ0eSBhbmQgdGhlIGVsZW1lbnQgd2lkdGguIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiRGVzY3JpYmVzIHRoZSBvcHRpbWFsIG51bWJlciBvZiBjb2x1bW5zIGludG8gd2hpY2ggdGhlIGNvbnRlbnQgb2YgdGhlIGVsZW1lbnQgd2lsbCBiZSBmbG93ZWQuIixyZXN0cmljdGlvbnM6WyJpbnRlZ2VyIl19LHtuYW1lOiItbW96LWNvbHVtbi1nYXAiLGJyb3dzZXJzOlsiRkYzLjUiXSx2YWx1ZXM6W3tuYW1lOiJub3JtYWwiLGRlc2NyaXB0aW9uOiJVc2VyIGFnZW50IHNwZWNpZmljIGFuZCB0eXBpY2FsbHkgZXF1aXZhbGVudCB0byAxZW0uIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiU2V0cyB0aGUgZ2FwIGJldHdlZW4gY29sdW1ucy4gSWYgdGhlcmUgaXMgYSBjb2x1bW4gcnVsZSBiZXR3ZWVuIGNvbHVtbnMsIGl0IHdpbGwgYXBwZWFyIGluIHRoZSBtaWRkbGUgb2YgdGhlIGdhcC4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCJdfSx7bmFtZToiLW1vei1jb2x1bW4tcnVsZSIsYnJvd3NlcnM6WyJGRjMuNSJdLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiU2hvcnRoYW5kIGZvciBzZXR0aW5nICdjb2x1bW4tcnVsZS13aWR0aCcsICdjb2x1bW4tcnVsZS1zdHlsZScsIGFuZCAnY29sdW1uLXJ1bGUtY29sb3InIGF0IHRoZSBzYW1lIHBsYWNlIGluIHRoZSBzdHlsZSBzaGVldC4gT21pdHRlZCB2YWx1ZXMgYXJlIHNldCB0byB0aGVpciBpbml0aWFsIHZhbHVlcy4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsImxpbmUtd2lkdGgiLCJsaW5lLXN0eWxlIiwiY29sb3IiXX0se25hbWU6Ii1tb3otY29sdW1uLXJ1bGUtY29sb3IiLGJyb3dzZXJzOlsiRkYzLjUiXSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlNldHMgdGhlIGNvbG9yIG9mIHRoZSBjb2x1bW4gcnVsZSIscmVzdHJpY3Rpb25zOlsiY29sb3IiXX0se25hbWU6Ii1tb3otY29sdW1uLXJ1bGUtc3R5bGUiLGJyb3dzZXJzOlsiRkYzLjUiXSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlNldHMgdGhlIHN0eWxlIG9mIHRoZSBydWxlIGJldHdlZW4gY29sdW1ucyBvZiBhbiBlbGVtZW50LiIscmVzdHJpY3Rpb25zOlsibGluZS1zdHlsZSJdfSx7bmFtZToiLW1vei1jb2x1bW4tcnVsZS13aWR0aCIsYnJvd3NlcnM6WyJGRjMuNSJdLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiU2V0cyB0aGUgd2lkdGggb2YgdGhlIHJ1bGUgYmV0d2VlbiBjb2x1bW5zLiBOZWdhdGl2ZSB2YWx1ZXMgYXJlIG5vdCBhbGxvd2VkLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwibGluZS13aWR0aCJdfSx7bmFtZToiLW1vei1jb2x1bW5zIixicm93c2VyczpbIkZGOSJdLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJUaGUgd2lkdGggZGVwZW5kcyBvbiB0aGUgdmFsdWVzIG9mIG90aGVyIHByb3BlcnRpZXMuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiQSBzaG9ydGhhbmQgcHJvcGVydHkgd2hpY2ggc2V0cyBib3RoICdjb2x1bW4td2lkdGgnIGFuZCAnY29sdW1uLWNvdW50Jy4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsImludGVnZXIiXX0se25hbWU6Ii1tb3otY29sdW1uLXdpZHRoIixicm93c2VyczpbIkZGMy41Il0sdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IlRoZSB3aWR0aCBkZXBlbmRzIG9uIHRoZSB2YWx1ZXMgb2Ygb3RoZXIgcHJvcGVydGllcy4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJUaGlzIHByb3BlcnR5IGRlc2NyaWJlcyB0aGUgd2lkdGggb2YgY29sdW1ucyBpbiBtdWx0aWNvbCBlbGVtZW50cy4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCJdfSx7bmFtZToiLW1vei1mb250LWZlYXR1cmUtc2V0dGluZ3MiLGJyb3dzZXJzOlsiRkY0Il0sdmFsdWVzOlt7bmFtZTonImMyY3MiJ30se25hbWU6JyJkbGlnIid9LHtuYW1lOicia2VybiInfSx7bmFtZTonImxpZ2EiJ30se25hbWU6JyJsbnVtIid9LHtuYW1lOicib251bSInfSx7bmFtZTonInNtY3AiJ30se25hbWU6JyJzd3NoIid9LHtuYW1lOicidG51bSInfSx7bmFtZToibm9ybWFsIixkZXNjcmlwdGlvbjoiTm8gY2hhbmdlIGluIGdseXBoIHN1YnN0aXR1dGlvbiBvciBwb3NpdGlvbmluZyBvY2N1cnMuIn0se25hbWU6Im9mZiIsYnJvd3NlcnM6WyJGRjQiXX0se25hbWU6Im9uIixicm93c2VyczpbIkZGNCJdfV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJQcm92aWRlcyBsb3ctbGV2ZWwgY29udHJvbCBvdmVyIE9wZW5UeXBlIGZvbnQgZmVhdHVyZXMuIEl0IGlzIGludGVuZGVkIGFzIGEgd2F5IG9mIHByb3ZpZGluZyBhY2Nlc3MgdG8gZm9udCBmZWF0dXJlcyB0aGF0IGFyZSBub3Qgd2lkZWx5IHVzZWQgYnV0IGFyZSBuZWVkZWQgZm9yIGEgcGFydGljdWxhciB1c2UgY2FzZS4iLHJlc3RyaWN0aW9uczpbInN0cmluZyIsImludGVnZXIiXX0se25hbWU6Ii1tb3otaHlwaGVucyIsYnJvd3NlcnM6WyJGRjkiXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiQ29uZGl0aW9uYWwgaHlwaGVuYXRpb24gY2hhcmFjdGVycyBpbnNpZGUgYSB3b3JkLCBpZiBwcmVzZW50LCB0YWtlIHByaW9yaXR5IG92ZXIgYXV0b21hdGljIHJlc291cmNlcyB3aGVuIGRldGVybWluaW5nIGh5cGhlbmF0aW9uIHBvaW50cyB3aXRoaW4gdGhlIHdvcmQuIn0se25hbWU6Im1hbnVhbCIsZGVzY3JpcHRpb246IldvcmRzIGFyZSBvbmx5IGJyb2tlbiBhdCBsaW5lIGJyZWFrcyB3aGVyZSB0aGVyZSBhcmUgY2hhcmFjdGVycyBpbnNpZGUgdGhlIHdvcmQgdGhhdCBzdWdnZXN0IGxpbmUgYnJlYWsgb3Bwb3J0dW5pdGllcyJ9LHtuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiV29yZHMgYXJlIG5vdCBicm9rZW4gYXQgbGluZSBicmVha3MsIGV2ZW4gaWYgY2hhcmFjdGVycyBpbnNpZGUgdGhlIHdvcmQgc3VnZ2VzdCBsaW5lIGJyZWFrIHBvaW50cy4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJDb250cm9scyB3aGV0aGVyIGh5cGhlbmF0aW9uIGlzIGFsbG93ZWQgdG8gY3JlYXRlIG1vcmUgYnJlYWsgb3Bwb3J0dW5pdGllcyB3aXRoaW4gYSBsaW5lIG9mIHRleHQuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiItbW96LXBlcnNwZWN0aXZlIixicm93c2VyczpbIkZGMTAiXSx2YWx1ZXM6W3tuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiTm8gcGVyc3BlY3RpdmUgdHJhbnNmb3JtIGlzIGFwcGxpZWQuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiQXBwbGllcyB0aGUgc2FtZSB0cmFuc2Zvcm0gYXMgdGhlIHBlcnNwZWN0aXZlKDxudW1iZXI+KSB0cmFuc2Zvcm0gZnVuY3Rpb24sIGV4Y2VwdCB0aGF0IGl0IGFwcGxpZXMgb25seSB0byB0aGUgcG9zaXRpb25lZCBvciB0cmFuc2Zvcm1lZCBjaGlsZHJlbiBvZiB0aGUgZWxlbWVudCwgbm90IHRvIHRoZSB0cmFuc2Zvcm0gb24gdGhlIGVsZW1lbnQgaXRzZWxmLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIl19LHtuYW1lOiItbW96LXBlcnNwZWN0aXZlLW9yaWdpbiIsYnJvd3NlcnM6WyJGRjEwIl0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJFc3RhYmxpc2hlcyB0aGUgb3JpZ2luIGZvciB0aGUgcGVyc3BlY3RpdmUgcHJvcGVydHkuIEl0IGVmZmVjdGl2ZWx5IHNldHMgdGhlIFggYW5kIFkgcG9zaXRpb24gYXQgd2hpY2ggdGhlIHZpZXdlciBhcHBlYXJzIHRvIGJlIGxvb2tpbmcgYXQgdGhlIGNoaWxkcmVuIG9mIHRoZSBlbGVtZW50LiIscmVzdHJpY3Rpb25zOlsicG9zaXRpb24iLCJwZXJjZW50YWdlIiwibGVuZ3RoIl19LHtuYW1lOiItbW96LXRleHQtYWxpZ24tbGFzdCIsYnJvd3NlcnM6WyJGRjEyIl0sdmFsdWVzOlt7bmFtZToiYXV0byJ9LHtuYW1lOiJjZW50ZXIiLGRlc2NyaXB0aW9uOiJUaGUgaW5saW5lIGNvbnRlbnRzIGFyZSBjZW50ZXJlZCB3aXRoaW4gdGhlIGxpbmUgYm94LiJ9LHtuYW1lOiJqdXN0aWZ5IixkZXNjcmlwdGlvbjoiVGhlIHRleHQgaXMganVzdGlmaWVkIGFjY29yZGluZyB0byB0aGUgbWV0aG9kIHNwZWNpZmllZCBieSB0aGUgJ3RleHQtanVzdGlmeScgcHJvcGVydHkuIn0se25hbWU6ImxlZnQiLGRlc2NyaXB0aW9uOiJUaGUgaW5saW5lIGNvbnRlbnRzIGFyZSBhbGlnbmVkIHRvIHRoZSBsZWZ0IGVkZ2Ugb2YgdGhlIGxpbmUgYm94LiBJbiB2ZXJ0aWNhbCB0ZXh0LCAnbGVmdCcgYWxpZ25zIHRvIHRoZSBlZGdlIG9mIHRoZSBsaW5lIGJveCB0aGF0IHdvdWxkIGJlIHRoZSBzdGFydCBlZGdlIGZvciBsZWZ0LXRvLXJpZ2h0IHRleHQuIn0se25hbWU6InJpZ2h0IixkZXNjcmlwdGlvbjoiVGhlIGlubGluZSBjb250ZW50cyBhcmUgYWxpZ25lZCB0byB0aGUgcmlnaHQgZWRnZSBvZiB0aGUgbGluZSBib3guIEluIHZlcnRpY2FsIHRleHQsICdyaWdodCcgYWxpZ25zIHRvIHRoZSBlZGdlIG9mIHRoZSBsaW5lIGJveCB0aGF0IHdvdWxkIGJlIHRoZSBlbmQgZWRnZSBmb3IgbGVmdC10by1yaWdodCB0ZXh0LiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkRlc2NyaWJlcyBob3cgdGhlIGxhc3QgbGluZSBvZiBhIGJsb2NrIG9yIGEgbGluZSByaWdodCBiZWZvcmUgYSBmb3JjZWQgbGluZSBicmVhayBpcyBhbGlnbmVkIHdoZW4gJ3RleHQtYWxpZ24nIGlzIHNldCB0byAnanVzdGlmeScuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiItbW96LXRleHQtZGVjb3JhdGlvbi1jb2xvciIsYnJvd3NlcnM6WyJGRjYiXSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlNwZWNpZmllcyB0aGUgY29sb3Igb2YgdGV4dCBkZWNvcmF0aW9uICh1bmRlcmxpbmVzIG92ZXJsaW5lcywgYW5kIGxpbmUtdGhyb3VnaHMpIHNldCBvbiB0aGUgZWxlbWVudCB3aXRoIHRleHQtZGVjb3JhdGlvbi1saW5lLiIscmVzdHJpY3Rpb25zOlsiY29sb3IiXX0se25hbWU6Ii1tb3otdGV4dC1kZWNvcmF0aW9uLWxpbmUiLGJyb3dzZXJzOlsiRkY2Il0sdmFsdWVzOlt7bmFtZToibGluZS10aHJvdWdoIixkZXNjcmlwdGlvbjoiRWFjaCBsaW5lIG9mIHRleHQgaGFzIGEgbGluZSB0aHJvdWdoIHRoZSBtaWRkbGUuIn0se25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJOZWl0aGVyIHByb2R1Y2VzIG5vciBpbmhpYml0cyB0ZXh0IGRlY29yYXRpb24uIn0se25hbWU6Im92ZXJsaW5lIixkZXNjcmlwdGlvbjoiRWFjaCBsaW5lIG9mIHRleHQgaGFzIGEgbGluZSBhYm92ZSBpdC4ifSx7bmFtZToidW5kZXJsaW5lIixkZXNjcmlwdGlvbjoiRWFjaCBsaW5lIG9mIHRleHQgaXMgdW5kZXJsaW5lZC4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgd2hhdCBsaW5lIGRlY29yYXRpb25zLCBpZiBhbnksIGFyZSBhZGRlZCB0byB0aGUgZWxlbWVudC4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii1tb3otdGV4dC1kZWNvcmF0aW9uLXN0eWxlIixicm93c2VyczpbIkZGNiJdLHZhbHVlczpbe25hbWU6ImRhc2hlZCIsZGVzY3JpcHRpb246IlByb2R1Y2VzIGEgZGFzaGVkIGxpbmUgc3R5bGUuIn0se25hbWU6ImRvdHRlZCIsZGVzY3JpcHRpb246IlByb2R1Y2VzIGEgZG90dGVkIGxpbmUuIn0se25hbWU6ImRvdWJsZSIsZGVzY3JpcHRpb246IlByb2R1Y2VzIGEgZG91YmxlIGxpbmUuIn0se25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJQcm9kdWNlcyBubyBsaW5lLiJ9LHtuYW1lOiJzb2xpZCIsZGVzY3JpcHRpb246IlByb2R1Y2VzIGEgc29saWQgbGluZS4ifSx7bmFtZToid2F2eSIsZGVzY3JpcHRpb246IlByb2R1Y2VzIGEgd2F2eSBsaW5lLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlNwZWNpZmllcyB0aGUgbGluZSBzdHlsZSBmb3IgdW5kZXJsaW5lLCBsaW5lLXRocm91Z2ggYW5kIG92ZXJsaW5lIHRleHQgZGVjb3JhdGlvbi4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii1tb3otdGV4dC1zaXplLWFkanVzdCIsYnJvd3NlcnM6WyJGRiJdLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJSZW5kZXJlcnMgbXVzdCB1c2UgdGhlIGRlZmF1bHQgc2l6ZSBhZGp1c3RtZW50IHdoZW4gZGlzcGxheWluZyBvbiBhIHNtYWxsIGRldmljZS4ifSx7bmFtZToibm9uZSIsZGVzY3JpcHRpb246IlJlbmRlcmVycyBtdXN0IG5vdCBkbyBzaXplIGFkanVzdG1lbnQgd2hlbiBkaXNwbGF5aW5nIG9uIGEgc21hbGwgZGV2aWNlLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIHNpemUgYWRqdXN0bWVudCBmb3IgZGlzcGxheWluZyB0ZXh0IGNvbnRlbnQgaW4gbW9iaWxlIGJyb3dzZXJzLiIscmVzdHJpY3Rpb25zOlsiZW51bSIsInBlcmNlbnRhZ2UiXX0se25hbWU6Ii1tb3otdHJhbnNmb3JtIixicm93c2VyczpbIkZGMy41Il0sdmFsdWVzOlt7bmFtZToibWF0cml4KCkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSAyRCB0cmFuc2Zvcm1hdGlvbiBpbiB0aGUgZm9ybSBvZiBhIHRyYW5zZm9ybWF0aW9uIG1hdHJpeCBvZiBzaXggdmFsdWVzLiBtYXRyaXgoYSxiLGMsZCxlLGYpIGlzIGVxdWl2YWxlbnQgdG8gYXBwbHlpbmcgdGhlIHRyYW5zZm9ybWF0aW9uIG1hdHJpeCBbYSBiIGMgZCBlIGZdIn0se25hbWU6Im1hdHJpeDNkKCkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSAzRCB0cmFuc2Zvcm1hdGlvbiBhcyBhIDR4NCBob21vZ2VuZW91cyBtYXRyaXggb2YgMTYgdmFsdWVzIGluIGNvbHVtbi1tYWpvciBvcmRlci4ifSx7bmFtZToibm9uZSJ9LHtuYW1lOiJwZXJzcGVjdGl2ZSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIHBlcnNwZWN0aXZlIHByb2plY3Rpb24gbWF0cml4LiJ9LHtuYW1lOiJyb3RhdGUoKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIDJEIHJvdGF0aW9uIGJ5IHRoZSBhbmdsZSBzcGVjaWZpZWQgaW4gdGhlIHBhcmFtZXRlciBhYm91dCB0aGUgb3JpZ2luIG9mIHRoZSBlbGVtZW50LCBhcyBkZWZpbmVkIGJ5IHRoZSB0cmFuc2Zvcm0tb3JpZ2luIHByb3BlcnR5LiJ9LHtuYW1lOiJyb3RhdGUzZCgpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgY2xvY2t3aXNlIDNEIHJvdGF0aW9uIGJ5IHRoZSBhbmdsZSBzcGVjaWZpZWQgaW4gbGFzdCBwYXJhbWV0ZXIgYWJvdXQgdGhlIFt4LHksel0gZGlyZWN0aW9uIHZlY3RvciBkZXNjcmliZWQgYnkgdGhlIGZpcnN0IDMgcGFyYW1ldGVycy4ifSx7bmFtZToicm90YXRlWCgnYW5nbGUnKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIGNsb2Nrd2lzZSByb3RhdGlvbiBieSB0aGUgZ2l2ZW4gYW5nbGUgYWJvdXQgdGhlIFggYXhpcy4ifSx7bmFtZToicm90YXRlWSgnYW5nbGUnKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIGNsb2Nrd2lzZSByb3RhdGlvbiBieSB0aGUgZ2l2ZW4gYW5nbGUgYWJvdXQgdGhlIFkgYXhpcy4ifSx7bmFtZToicm90YXRlWignYW5nbGUnKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIGNsb2Nrd2lzZSByb3RhdGlvbiBieSB0aGUgZ2l2ZW4gYW5nbGUgYWJvdXQgdGhlIFogYXhpcy4ifSx7bmFtZToic2NhbGUoKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIDJEIHNjYWxlIG9wZXJhdGlvbiBieSB0aGUgW3N4LHN5XSBzY2FsaW5nIHZlY3RvciBkZXNjcmliZWQgYnkgdGhlIDIgcGFyYW1ldGVycy4gSWYgdGhlIHNlY29uZCBwYXJhbWV0ZXIgaXMgbm90IHByb3ZpZGVkLCBpdCBpcyB0YWtlcyBhIHZhbHVlIGVxdWFsIHRvIHRoZSBmaXJzdC4ifSx7bmFtZToic2NhbGUzZCgpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgM0Qgc2NhbGUgb3BlcmF0aW9uIGJ5IHRoZSBbc3gsc3ksc3pdIHNjYWxpbmcgdmVjdG9yIGRlc2NyaWJlZCBieSB0aGUgMyBwYXJhbWV0ZXJzLiJ9LHtuYW1lOiJzY2FsZVgoKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIHNjYWxlIG9wZXJhdGlvbiB1c2luZyB0aGUgW3N4LDFdIHNjYWxpbmcgdmVjdG9yLCB3aGVyZSBzeCBpcyBnaXZlbiBhcyB0aGUgcGFyYW1ldGVyLiJ9LHtuYW1lOiJzY2FsZVkoKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIHNjYWxlIG9wZXJhdGlvbiB1c2luZyB0aGUgW3N5LDFdIHNjYWxpbmcgdmVjdG9yLCB3aGVyZSBzeSBpcyBnaXZlbiBhcyB0aGUgcGFyYW1ldGVyLiJ9LHtuYW1lOiJzY2FsZVooKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIHNjYWxlIG9wZXJhdGlvbiB1c2luZyB0aGUgWzEsMSxzel0gc2NhbGluZyB2ZWN0b3IsIHdoZXJlIHN6IGlzIGdpdmVuIGFzIHRoZSBwYXJhbWV0ZXIuIn0se25hbWU6InNrZXcoKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIHNrZXcgdHJhbnNmb3JtYXRpb24gYWxvbmcgdGhlIFggYW5kIFkgYXhlcy4gVGhlIGZpcnN0IGFuZ2xlIHBhcmFtZXRlciBzcGVjaWZpZXMgdGhlIHNrZXcgb24gdGhlIFggYXhpcy4gVGhlIHNlY29uZCBhbmdsZSBwYXJhbWV0ZXIgc3BlY2lmaWVzIHRoZSBza2V3IG9uIHRoZSBZIGF4aXMuIElmIHRoZSBzZWNvbmQgcGFyYW1ldGVyIGlzIG5vdCBnaXZlbiB0aGVuIGEgdmFsdWUgb2YgMCBpcyB1c2VkIGZvciB0aGUgWSBhbmdsZSAoaWU6IG5vIHNrZXcgb24gdGhlIFkgYXhpcykuIn0se25hbWU6InNrZXdYKCkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSBza2V3IHRyYW5zZm9ybWF0aW9uIGFsb25nIHRoZSBYIGF4aXMgYnkgdGhlIGdpdmVuIGFuZ2xlLiJ9LHtuYW1lOiJza2V3WSgpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgc2tldyB0cmFuc2Zvcm1hdGlvbiBhbG9uZyB0aGUgWSBheGlzIGJ5IHRoZSBnaXZlbiBhbmdsZS4ifSx7bmFtZToidHJhbnNsYXRlKCkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSAyRCB0cmFuc2xhdGlvbiBieSB0aGUgdmVjdG9yIFt0eCwgdHldLCB3aGVyZSB0eCBpcyB0aGUgZmlyc3QgdHJhbnNsYXRpb24tdmFsdWUgcGFyYW1ldGVyIGFuZCB0eSBpcyB0aGUgb3B0aW9uYWwgc2Vjb25kIHRyYW5zbGF0aW9uLXZhbHVlIHBhcmFtZXRlci4ifSx7bmFtZToidHJhbnNsYXRlM2QoKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIDNEIHRyYW5zbGF0aW9uIGJ5IHRoZSB2ZWN0b3IgW3R4LHR5LHR6XSwgd2l0aCB0eCwgdHkgYW5kIHR6IGJlaW5nIHRoZSBmaXJzdCwgc2Vjb25kIGFuZCB0aGlyZCB0cmFuc2xhdGlvbi12YWx1ZSBwYXJhbWV0ZXJzIHJlc3BlY3RpdmVseS4ifSx7bmFtZToidHJhbnNsYXRlWCgpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgdHJhbnNsYXRpb24gYnkgdGhlIGdpdmVuIGFtb3VudCBpbiB0aGUgWCBkaXJlY3Rpb24uIn0se25hbWU6InRyYW5zbGF0ZVkoKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIHRyYW5zbGF0aW9uIGJ5IHRoZSBnaXZlbiBhbW91bnQgaW4gdGhlIFkgZGlyZWN0aW9uLiJ9LHtuYW1lOiJ0cmFuc2xhdGVaKCkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSB0cmFuc2xhdGlvbiBieSB0aGUgZ2l2ZW4gYW1vdW50IGluIHRoZSBaIGRpcmVjdGlvbi4gTm90ZSB0aGF0IHBlcmNlbnRhZ2UgdmFsdWVzIGFyZSBub3QgYWxsb3dlZCBpbiB0aGUgdHJhbnNsYXRlWiB0cmFuc2xhdGlvbi12YWx1ZSwgYW5kIGlmIHByZXNlbnQgYXJlIGV2YWx1YXRlZCBhcyAwLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkEgdHdvLWRpbWVuc2lvbmFsIHRyYW5zZm9ybWF0aW9uIGlzIGFwcGxpZWQgdG8gYW4gZWxlbWVudCB0aHJvdWdoIHRoZSAndHJhbnNmb3JtJyBwcm9wZXJ0eS4gVGhpcyBwcm9wZXJ0eSBjb250YWlucyBhIGxpc3Qgb2YgdHJhbnNmb3JtIGZ1bmN0aW9ucyBzaW1pbGFyIHRvIHRob3NlIGFsbG93ZWQgYnkgU1ZHLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLW1vei10cmFuc2Zvcm0tb3JpZ2luIixicm93c2VyczpbIkZGMy41Il0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJFc3RhYmxpc2hlcyB0aGUgb3JpZ2luIG9mIHRyYW5zZm9ybWF0aW9uIGZvciBhbiBlbGVtZW50LiIscmVzdHJpY3Rpb25zOlsicG9zaXRpb24iLCJsZW5ndGgiLCJwZXJjZW50YWdlIl19LHtuYW1lOiItbW96LXRyYW5zaXRpb24iLGJyb3dzZXJzOlsiRkY0Il0sdmFsdWVzOlt7bmFtZToiYWxsIixkZXNjcmlwdGlvbjoiRXZlcnkgcHJvcGVydHkgdGhhdCBpcyBhYmxlIHRvIHVuZGVyZ28gYSB0cmFuc2l0aW9uIHdpbGwgZG8gc28uIn0se25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJObyBwcm9wZXJ0eSB3aWxsIHRyYW5zaXRpb24uIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiU2hvcnRoYW5kIHByb3BlcnR5IGNvbWJpbmVzIGZvdXIgb2YgdGhlIHRyYW5zaXRpb24gcHJvcGVydGllcyBpbnRvIGEgc2luZ2xlIHByb3BlcnR5LiIscmVzdHJpY3Rpb25zOlsidGltZSIsInByb3BlcnR5IiwidGltaW5nLWZ1bmN0aW9uIiwiZW51bSJdfSx7bmFtZToiLW1vei10cmFuc2l0aW9uLWRlbGF5Iixicm93c2VyczpbIkZGNCJdLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiRGVmaW5lcyB3aGVuIHRoZSB0cmFuc2l0aW9uIHdpbGwgc3RhcnQuIEl0IGFsbG93cyBhIHRyYW5zaXRpb24gdG8gYmVnaW4gZXhlY3V0aW9uIHNvbWUgcGVyaW9kIG9mIHRpbWUgZnJvbSB3aGVuIGl0IGlzIGFwcGxpZWQuIixyZXN0cmljdGlvbnM6WyJ0aW1lIl19LHtuYW1lOiItbW96LXRyYW5zaXRpb24tZHVyYXRpb24iLGJyb3dzZXJzOlsiRkY0Il0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgaG93IGxvbmcgdGhlIHRyYW5zaXRpb24gZnJvbSB0aGUgb2xkIHZhbHVlIHRvIHRoZSBuZXcgdmFsdWUgc2hvdWxkIHRha2UuIixyZXN0cmljdGlvbnM6WyJ0aW1lIl19LHtuYW1lOiItbW96LXRyYW5zaXRpb24tcHJvcGVydHkiLGJyb3dzZXJzOlsiRkY0Il0sdmFsdWVzOlt7bmFtZToiYWxsIixkZXNjcmlwdGlvbjoiRXZlcnkgcHJvcGVydHkgdGhhdCBpcyBhYmxlIHRvIHVuZGVyZ28gYSB0cmFuc2l0aW9uIHdpbGwgZG8gc28uIn0se25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJObyBwcm9wZXJ0eSB3aWxsIHRyYW5zaXRpb24uIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHRoZSBuYW1lIG9mIHRoZSBDU1MgcHJvcGVydHkgdG8gd2hpY2ggdGhlIHRyYW5zaXRpb24gaXMgYXBwbGllZC4iLHJlc3RyaWN0aW9uczpbInByb3BlcnR5Il19LHtuYW1lOiItbW96LXRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uIixicm93c2VyczpbIkZGNCJdLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiRGVzY3JpYmVzIGhvdyB0aGUgaW50ZXJtZWRpYXRlIHZhbHVlcyB1c2VkIGR1cmluZyBhIHRyYW5zaXRpb24gd2lsbCBiZSBjYWxjdWxhdGVkLiIscmVzdHJpY3Rpb25zOlsidGltaW5nLWZ1bmN0aW9uIl19LHtuYW1lOiItbW96LXVzZXItZm9jdXMiLGJyb3dzZXJzOlsiRkYxIl0sdmFsdWVzOlt7bmFtZToiaWdub3JlIn0se25hbWU6Im5vcm1hbCJ9XSxzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6Imlnbm9yZSB8IG5vcm1hbCB8IHNlbGVjdC1hZnRlciB8IHNlbGVjdC1iZWZvcmUgfCBzZWxlY3QtbWVudSB8IHNlbGVjdC1zYW1lIHwgc2VsZWN0LWFsbCB8IG5vbmUiLHJlbGV2YW5jZTowLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy8tbW96LXVzZXItZm9jdXMifV0sZGVzY3JpcHRpb246IlVzZWQgdG8gaW5kaWNhdGUgd2hldGhlciB0aGUgZWxlbWVudCBjYW4gaGF2ZSBmb2N1cy4ifSx7bmFtZToiLW1vei11c2VyLXNlbGVjdCIsYnJvd3NlcnM6WyJGRjEuNSJdLHZhbHVlczpbe25hbWU6ImFsbCJ9LHtuYW1lOiJlbGVtZW50In0se25hbWU6ImVsZW1lbnRzIn0se25hbWU6Ii1tb3otYWxsIn0se25hbWU6Ii1tb3otbm9uZSJ9LHtuYW1lOiJub25lIn0se25hbWU6InRleHQifSx7bmFtZToidG9nZ2xlIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiQ29udHJvbHMgdGhlIGFwcGVhcmFuY2Ugb2Ygc2VsZWN0aW9uLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLW1zLWFjY2VsZXJhdG9yIixicm93c2VyczpbIkUiLCJJRTEwIl0sdmFsdWVzOlt7bmFtZToiZmFsc2UiLGRlc2NyaXB0aW9uOiJUaGUgZWxlbWVudCBkb2VzIG5vdCBjb250YWluIGFuIGFjY2VsZXJhdG9yIGtleSBzZXF1ZW5jZS4ifSx7bmFtZToidHJ1ZSIsZGVzY3JpcHRpb246IlRoZSBlbGVtZW50IGNvbnRhaW5zIGFuIGFjY2VsZXJhdG9yIGtleSBzZXF1ZW5jZS4ifV0sc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiJmYWxzZSB8IHRydWUiLHJlbGV2YW5jZTowLGRlc2NyaXB0aW9uOiJJRSBvbmx5LiBIYXMgdGhlIGFiaWxpdHkgdG8gdHVybiBvZmYgaXRzIHN5c3RlbSB1bmRlcmxpbmVzIGZvciBhY2NlbGVyYXRvciBrZXlzIHVudGlsIHRoZSBBTFQga2V5IGlzIHByZXNzZWQiLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii1tcy1iZWhhdmlvciIsYnJvd3NlcnM6WyJJRTgiXSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IklFIG9ubHkuIFVzZWQgdG8gZXh0ZW5kIGJlaGF2aW9ycyBvZiB0aGUgYnJvd3NlciIscmVzdHJpY3Rpb25zOlsidXJsIl19LHtuYW1lOiItbXMtYmxvY2stcHJvZ3Jlc3Npb24iLGJyb3dzZXJzOlsiSUU4Il0sdmFsdWVzOlt7bmFtZToiYnQiLGRlc2NyaXB0aW9uOiJCb3R0b20tdG8tdG9wIGJsb2NrIGZsb3cuIExheW91dCBpcyBob3Jpem9udGFsLiJ9LHtuYW1lOiJsciIsZGVzY3JpcHRpb246IkxlZnQtdG8tcmlnaHQgZGlyZWN0aW9uLiBUaGUgZmxvdyBvcmllbnRhdGlvbiBpcyB2ZXJ0aWNhbC4ifSx7bmFtZToicmwiLGRlc2NyaXB0aW9uOiJSaWdodC10by1sZWZ0IGRpcmVjdGlvbi4gVGhlIGZsb3cgb3JpZW50YXRpb24gaXMgdmVydGljYWwuIn0se25hbWU6InRiIixkZXNjcmlwdGlvbjoiVG9wLXRvLWJvdHRvbSBkaXJlY3Rpb24uIFRoZSBmbG93IG9yaWVudGF0aW9uIGlzIGhvcml6b250YWwuIn1dLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoidGIgfCBybCB8IGJ0IHwgbHIiLHJlbGV2YW5jZTowLGRlc2NyaXB0aW9uOiJTZXRzIHRoZSBibG9jay1wcm9ncmVzc2lvbiB2YWx1ZSBhbmQgdGhlIGZsb3cgb3JpZW50YXRpb24iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii1tcy1jb250ZW50LXpvb20tY2hhaW5pbmciLGJyb3dzZXJzOlsiRSIsIklFMTAiXSx2YWx1ZXM6W3tuYW1lOiJjaGFpbmVkIixkZXNjcmlwdGlvbjoiVGhlIG5lYXJlc3Qgem9vbWFibGUgcGFyZW50IGVsZW1lbnQgYmVnaW5zIHpvb21pbmcgd2hlbiB0aGUgdXNlciBoaXRzIGEgem9vbSBsaW1pdCBkdXJpbmcgYSBtYW5pcHVsYXRpb24uIE5vIGJvdW5jZSBlZmZlY3QgaXMgc2hvd24uIn0se25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJBIGJvdW5jZSBlZmZlY3QgaXMgc2hvd24gd2hlbiB0aGUgdXNlciBoaXRzIGEgem9vbSBsaW1pdCBkdXJpbmcgYSBtYW5pcHVsYXRpb24uIn1dLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoibm9uZSB8IGNoYWluZWQiLHJlbGV2YW5jZTowLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgdGhlIHpvb20gYmVoYXZpb3IgdGhhdCBvY2N1cnMgd2hlbiBhIHVzZXIgaGl0cyB0aGUgem9vbSBsaW1pdCBkdXJpbmcgYSBtYW5pcHVsYXRpb24uIn0se25hbWU6Ii1tcy1jb250ZW50LXpvb21pbmciLGJyb3dzZXJzOlsiRSIsIklFMTAiXSx2YWx1ZXM6W3tuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiVGhlIGVsZW1lbnQgaXMgbm90IHpvb21hYmxlLiJ9LHtuYW1lOiJ6b29tIixkZXNjcmlwdGlvbjoiVGhlIGVsZW1lbnQgaXMgem9vbWFibGUuIn1dLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoibm9uZSB8IHpvb20iLHJlbGV2YW5jZTowLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgd2hldGhlciB6b29taW5nIGlzIGVuYWJsZWQuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiItbXMtY29udGVudC16b29tLWxpbWl0Iixicm93c2VyczpbIkUiLCJJRTEwIl0sc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiI8Jy1tcy1jb250ZW50LXpvb20tbGltaXQtbWluJz4gPCctbXMtY29udGVudC16b29tLWxpbWl0LW1heCc+IixyZWxldmFuY2U6MCxkZXNjcmlwdGlvbjoiU2hvcnRoYW5kIHByb3BlcnR5IGZvciB0aGUgLW1zLWNvbnRlbnQtem9vbS1saW1pdC1taW4gYW5kIC1tcy1jb250ZW50LXpvb20tbGltaXQtbWF4IHByb3BlcnRpZXMuIixyZXN0cmljdGlvbnM6WyJwZXJjZW50YWdlIl19LHtuYW1lOiItbXMtY29udGVudC16b29tLWxpbWl0LW1heCIsYnJvd3NlcnM6WyJFIiwiSUUxMCJdLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoiPHBlcmNlbnRhZ2U+IixyZWxldmFuY2U6MCxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHRoZSBtYXhpbXVtIHpvb20gZmFjdG9yLiIscmVzdHJpY3Rpb25zOlsicGVyY2VudGFnZSJdfSx7bmFtZToiLW1zLWNvbnRlbnQtem9vbS1saW1pdC1taW4iLGJyb3dzZXJzOlsiRSIsIklFMTAiXSxzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6IjxwZXJjZW50YWdlPiIscmVsZXZhbmNlOjAsZGVzY3JpcHRpb246IlNwZWNpZmllcyB0aGUgbWluaW11bSB6b29tIGZhY3Rvci4iLHJlc3RyaWN0aW9uczpbInBlcmNlbnRhZ2UiXX0se25hbWU6Ii1tcy1jb250ZW50LXpvb20tc25hcCIsYnJvd3NlcnM6WyJFIiwiSUUxMCJdLHZhbHVlczpbe25hbWU6Im1hbmRhdG9yeSIsZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGF0IHRoZSBtb3Rpb24gb2YgdGhlIGNvbnRlbnQgYWZ0ZXIgdGhlIGNvbnRhY3QgaXMgcGlja2VkIHVwIGlzIGFsd2F5cyBhZGp1c3RlZCBzbyB0aGF0IGl0IGxhbmRzIG9uIGEgc25hcC1wb2ludC4ifSx7bmFtZToibm9uZSIsZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGF0IHpvb21pbmcgaXMgdW5hZmZlY3RlZCBieSBhbnkgZGVmaW5lZCBzbmFwLXBvaW50cy4ifSx7bmFtZToicHJveGltaXR5IixkZXNjcmlwdGlvbjonSW5kaWNhdGVzIHRoYXQgdGhlIG1vdGlvbiBvZiB0aGUgY29udGVudCBhZnRlciB0aGUgY29udGFjdCBpcyBwaWNrZWQgdXAgbWF5IGJlIGFkanVzdGVkIGlmIHRoZSBjb250ZW50IHdvdWxkIG5vcm1hbGx5IHN0b3AgImNsb3NlIGVub3VnaCIgdG8gYSBzbmFwLXBvaW50Lid9LHtuYW1lOiJzbmFwSW50ZXJ2YWwoMTAwJSwgMTAwJSkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgd2hlcmUgdGhlIHNuYXAtcG9pbnRzIHdpbGwgYmUgcGxhY2VkLiJ9LHtuYW1lOiJzbmFwTGlzdCgpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHRoZSBwb3NpdGlvbiBvZiBpbmRpdmlkdWFsIHNuYXAtcG9pbnRzIGFzIGEgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2Ygem9vbSBmYWN0b3JzLiJ9XSxzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6IjwnLW1zLWNvbnRlbnQtem9vbS1zbmFwLXR5cGUnPiB8fCA8Jy1tcy1jb250ZW50LXpvb20tc25hcC1wb2ludHMnPiIscmVsZXZhbmNlOjAsZGVzY3JpcHRpb246IlNob3J0aGFuZCBwcm9wZXJ0eSBmb3IgdGhlIC1tcy1jb250ZW50LXpvb20tc25hcC10eXBlIGFuZCAtbXMtY29udGVudC16b29tLXNuYXAtcG9pbnRzIHByb3BlcnRpZXMuIn0se25hbWU6Ii1tcy1jb250ZW50LXpvb20tc25hcC1wb2ludHMiLGJyb3dzZXJzOlsiRSIsIklFMTAiXSx2YWx1ZXM6W3tuYW1lOiJzbmFwSW50ZXJ2YWwoMTAwJSwgMTAwJSkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgd2hlcmUgdGhlIHNuYXAtcG9pbnRzIHdpbGwgYmUgcGxhY2VkLiJ9LHtuYW1lOiJzbmFwTGlzdCgpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHRoZSBwb3NpdGlvbiBvZiBpbmRpdmlkdWFsIHNuYXAtcG9pbnRzIGFzIGEgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2Ygem9vbSBmYWN0b3JzLiJ9XSxzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6InNuYXBJbnRlcnZhbCggPHBlcmNlbnRhZ2U+LCA8cGVyY2VudGFnZT4gKSB8IHNuYXBMaXN0KCA8cGVyY2VudGFnZT4jICkiLHJlbGV2YW5jZTowLGRlc2NyaXB0aW9uOiJEZWZpbmVzIHdoZXJlIHpvb20gc25hcC1wb2ludHMgYXJlIGxvY2F0ZWQuIn0se25hbWU6Ii1tcy1jb250ZW50LXpvb20tc25hcC10eXBlIixicm93c2VyczpbIkUiLCJJRTEwIl0sdmFsdWVzOlt7bmFtZToibWFuZGF0b3J5IixkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHRoYXQgdGhlIG1vdGlvbiBvZiB0aGUgY29udGVudCBhZnRlciB0aGUgY29udGFjdCBpcyBwaWNrZWQgdXAgaXMgYWx3YXlzIGFkanVzdGVkIHNvIHRoYXQgaXQgbGFuZHMgb24gYSBzbmFwLXBvaW50LiJ9LHtuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHRoYXQgem9vbWluZyBpcyB1bmFmZmVjdGVkIGJ5IGFueSBkZWZpbmVkIHNuYXAtcG9pbnRzLiJ9LHtuYW1lOiJwcm94aW1pdHkiLGRlc2NyaXB0aW9uOidJbmRpY2F0ZXMgdGhhdCB0aGUgbW90aW9uIG9mIHRoZSBjb250ZW50IGFmdGVyIHRoZSBjb250YWN0IGlzIHBpY2tlZCB1cCBtYXkgYmUgYWRqdXN0ZWQgaWYgdGhlIGNvbnRlbnQgd291bGQgbm9ybWFsbHkgc3RvcCAiY2xvc2UgZW5vdWdoIiB0byBhIHNuYXAtcG9pbnQuJ31dLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoibm9uZSB8IHByb3hpbWl0eSB8IG1hbmRhdG9yeSIscmVsZXZhbmNlOjAsZGVzY3JpcHRpb246IlNwZWNpZmllcyBob3cgem9vbWluZyBpcyBhZmZlY3RlZCBieSBkZWZpbmVkIHNuYXAtcG9pbnRzLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLW1zLWZpbHRlciIsYnJvd3NlcnM6WyJJRTgtOSJdLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoiPHN0cmluZz4iLHJlbGV2YW5jZTowLGRlc2NyaXB0aW9uOiJJRSBvbmx5LiBVc2VkIHRvIHByb2R1Y2UgdmlzdWFsIGVmZmVjdHMuIixyZXN0cmljdGlvbnM6WyJzdHJpbmciXX0se25hbWU6Ii1tcy1mbGV4Iixicm93c2VyczpbIklFMTAiXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiUmV0cmlldmVzIHRoZSB2YWx1ZSBvZiB0aGUgbWFpbiBzaXplIHByb3BlcnR5IGFzIHRoZSB1c2VkICdmbGV4LWJhc2lzJy4ifSx7bmFtZToibm9uZSIsZGVzY3JpcHRpb246IkV4cGFuZHMgdG8gJzAgMCBhdXRvJy4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJzcGVjaWZpZXMgdGhlIHBhcmFtZXRlcnMgb2YgYSBmbGV4aWJsZSBsZW5ndGg6IHRoZSBwb3NpdGl2ZSBhbmQgbmVnYXRpdmUgZmxleGliaWxpdHksIGFuZCB0aGUgcHJlZmVycmVkIHNpemUuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJudW1iZXIiLCJwZXJjZW50YWdlIl19LHtuYW1lOiItbXMtZmxleC1hbGlnbiIsYnJvd3NlcnM6WyJJRTEwIl0sdmFsdWVzOlt7bmFtZToiYmFzZWxpbmUiLGRlc2NyaXB0aW9uOiJJZiB0aGUgZmxleCBpdGVt4oCZcyBpbmxpbmUgYXhpcyBpcyB0aGUgc2FtZSBhcyB0aGUgY3Jvc3MgYXhpcywgdGhpcyB2YWx1ZSBpcyBpZGVudGljYWwgdG8gJ2ZsZXgtc3RhcnQnLiBPdGhlcndpc2UsIGl0IHBhcnRpY2lwYXRlcyBpbiBiYXNlbGluZSBhbGlnbm1lbnQuIn0se25hbWU6ImNlbnRlciIsZGVzY3JpcHRpb246IlRoZSBmbGV4IGl0ZW3igJlzIG1hcmdpbiBib3ggaXMgY2VudGVyZWQgaW4gdGhlIGNyb3NzIGF4aXMgd2l0aGluIHRoZSBsaW5lLiJ9LHtuYW1lOiJlbmQiLGRlc2NyaXB0aW9uOiJUaGUgY3Jvc3MtZW5kIG1hcmdpbiBlZGdlIG9mIHRoZSBmbGV4IGl0ZW0gaXMgcGxhY2VkIGZsdXNoIHdpdGggdGhlIGNyb3NzLWVuZCBlZGdlIG9mIHRoZSBsaW5lLiJ9LHtuYW1lOiJzdGFydCIsZGVzY3JpcHRpb246IlRoZSBjcm9zcy1zdGFydCBtYXJnaW4gZWRnZSBvZiB0aGUgZmxleGJveCBpdGVtIGlzIHBsYWNlZCBmbHVzaCB3aXRoIHRoZSBjcm9zcy1zdGFydCBlZGdlIG9mIHRoZSBsaW5lLiJ9LHtuYW1lOiJzdHJldGNoIixkZXNjcmlwdGlvbjoiSWYgdGhlIGNyb3NzIHNpemUgcHJvcGVydHkgb2YgdGhlIGZsZXhib3ggaXRlbSBpcyBhbnl0aGluZyBvdGhlciB0aGFuICdhdXRvJywgdGhpcyB2YWx1ZSBpcyBpZGVudGljYWwgdG8gJ3N0YXJ0Jy4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJBbGlnbnMgZmxleCBpdGVtcyBhbG9uZyB0aGUgY3Jvc3MgYXhpcyBvZiB0aGUgY3VycmVudCBsaW5lIG9mIHRoZSBmbGV4IGNvbnRhaW5lci4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii1tcy1mbGV4LWRpcmVjdGlvbiIsYnJvd3NlcnM6WyJJRTEwIl0sdmFsdWVzOlt7bmFtZToiY29sdW1uIixkZXNjcmlwdGlvbjoiVGhlIGZsZXggY29udGFpbmVy4oCZcyBtYWluIGF4aXMgaGFzIHRoZSBzYW1lIG9yaWVudGF0aW9uIGFzIHRoZSBibG9jayBheGlzIG9mIHRoZSBjdXJyZW50IHdyaXRpbmcgbW9kZS4ifSx7bmFtZToiY29sdW1uLXJldmVyc2UiLGRlc2NyaXB0aW9uOiJTYW1lIGFzICdjb2x1bW4nLCBleGNlcHQgdGhlIG1haW4tc3RhcnQgYW5kIG1haW4tZW5kIGRpcmVjdGlvbnMgYXJlIHN3YXBwZWQuIn0se25hbWU6InJvdyIsZGVzY3JpcHRpb246IlRoZSBmbGV4IGNvbnRhaW5lcuKAmXMgbWFpbiBheGlzIGhhcyB0aGUgc2FtZSBvcmllbnRhdGlvbiBhcyB0aGUgaW5saW5lIGF4aXMgb2YgdGhlIGN1cnJlbnQgd3JpdGluZyBtb2RlLiJ9LHtuYW1lOiJyb3ctcmV2ZXJzZSIsZGVzY3JpcHRpb246IlNhbWUgYXMgJ3JvdycsIGV4Y2VwdCB0aGUgbWFpbi1zdGFydCBhbmQgbWFpbi1lbmQgZGlyZWN0aW9ucyBhcmUgc3dhcHBlZC4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgaG93IGZsZXggaXRlbXMgYXJlIHBsYWNlZCBpbiB0aGUgZmxleCBjb250YWluZXIsIGJ5IHNldHRpbmcgdGhlIGRpcmVjdGlvbiBvZiB0aGUgZmxleCBjb250YWluZXLigJlzIG1haW4gYXhpcy4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii1tcy1mbGV4LWZsb3ciLGJyb3dzZXJzOlsiSUUxMCJdLHZhbHVlczpbe25hbWU6ImNvbHVtbiIsZGVzY3JpcHRpb246IlRoZSBmbGV4IGNvbnRhaW5lcuKAmXMgbWFpbiBheGlzIGhhcyB0aGUgc2FtZSBvcmllbnRhdGlvbiBhcyB0aGUgYmxvY2sgYXhpcyBvZiB0aGUgY3VycmVudCB3cml0aW5nIG1vZGUuIn0se25hbWU6ImNvbHVtbi1yZXZlcnNlIixkZXNjcmlwdGlvbjoiU2FtZSBhcyAnY29sdW1uJywgZXhjZXB0IHRoZSBtYWluLXN0YXJ0IGFuZCBtYWluLWVuZCBkaXJlY3Rpb25zIGFyZSBzd2FwcGVkLiJ9LHtuYW1lOiJub3dyYXAiLGRlc2NyaXB0aW9uOiJUaGUgZmxleCBjb250YWluZXIgaXMgc2luZ2xlLWxpbmUuIn0se25hbWU6InJvdyIsZGVzY3JpcHRpb246IlRoZSBmbGV4IGNvbnRhaW5lcuKAmXMgbWFpbiBheGlzIGhhcyB0aGUgc2FtZSBvcmllbnRhdGlvbiBhcyB0aGUgaW5saW5lIGF4aXMgb2YgdGhlIGN1cnJlbnQgd3JpdGluZyBtb2RlLiJ9LHtuYW1lOiJ3cmFwIixkZXNjcmlwdGlvbjoiVGhlIGZsZXhib3ggaXMgbXVsdGktbGluZS4ifSx7bmFtZToid3JhcC1yZXZlcnNlIixkZXNjcmlwdGlvbjoiU2FtZSBhcyAnd3JhcCcsIGV4Y2VwdCB0aGUgY3Jvc3Mtc3RhcnQgYW5kIGNyb3NzLWVuZCBkaXJlY3Rpb25zIGFyZSBzd2FwcGVkLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlNwZWNpZmllcyBob3cgZmxleGJveCBpdGVtcyBhcmUgcGxhY2VkIGluIHRoZSBmbGV4Ym94LiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLW1zLWZsZXgtaXRlbS1hbGlnbiIsYnJvd3NlcnM6WyJJRTEwIl0sdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IkNvbXB1dGVzIHRvIHRoZSB2YWx1ZSBvZiAnYWxpZ24taXRlbXMnIG9uIHRoZSBlbGVtZW504oCZcyBwYXJlbnQsIG9yICdzdHJldGNoJyBpZiB0aGUgZWxlbWVudCBoYXMgbm8gcGFyZW50LiBPbiBhYnNvbHV0ZWx5IHBvc2l0aW9uZWQgZWxlbWVudHMsIGl0IGNvbXB1dGVzIHRvIGl0c2VsZi4ifSx7bmFtZToiYmFzZWxpbmUiLGRlc2NyaXB0aW9uOiJJZiB0aGUgZmxleCBpdGVt4oCZcyBpbmxpbmUgYXhpcyBpcyB0aGUgc2FtZSBhcyB0aGUgY3Jvc3MgYXhpcywgdGhpcyB2YWx1ZSBpcyBpZGVudGljYWwgdG8gJ2ZsZXgtc3RhcnQnLiBPdGhlcndpc2UsIGl0IHBhcnRpY2lwYXRlcyBpbiBiYXNlbGluZSBhbGlnbm1lbnQuIn0se25hbWU6ImNlbnRlciIsZGVzY3JpcHRpb246IlRoZSBmbGV4IGl0ZW3igJlzIG1hcmdpbiBib3ggaXMgY2VudGVyZWQgaW4gdGhlIGNyb3NzIGF4aXMgd2l0aGluIHRoZSBsaW5lLiJ9LHtuYW1lOiJlbmQiLGRlc2NyaXB0aW9uOiJUaGUgY3Jvc3MtZW5kIG1hcmdpbiBlZGdlIG9mIHRoZSBmbGV4IGl0ZW0gaXMgcGxhY2VkIGZsdXNoIHdpdGggdGhlIGNyb3NzLWVuZCBlZGdlIG9mIHRoZSBsaW5lLiJ9LHtuYW1lOiJzdGFydCIsZGVzY3JpcHRpb246IlRoZSBjcm9zcy1zdGFydCBtYXJnaW4gZWRnZSBvZiB0aGUgZmxleCBpdGVtIGlzIHBsYWNlZCBmbHVzaCB3aXRoIHRoZSBjcm9zcy1zdGFydCBlZGdlIG9mIHRoZSBsaW5lLiJ9LHtuYW1lOiJzdHJldGNoIixkZXNjcmlwdGlvbjoiSWYgdGhlIGNyb3NzIHNpemUgcHJvcGVydHkgb2YgdGhlIGZsZXggaXRlbSBjb21wdXRlcyB0byBhdXRvLCBhbmQgbmVpdGhlciBvZiB0aGUgY3Jvc3MtYXhpcyBtYXJnaW5zIGFyZSBhdXRvLCB0aGUgZmxleCBpdGVtIGlzIHN0cmV0Y2hlZC4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJBbGxvd3MgdGhlIGRlZmF1bHQgYWxpZ25tZW50IGFsb25nIHRoZSBjcm9zcyBheGlzIHRvIGJlIG92ZXJyaWRkZW4gZm9yIGluZGl2aWR1YWwgZmxleCBpdGVtcy4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii1tcy1mbGV4LWxpbmUtcGFjayIsYnJvd3NlcnM6WyJJRTEwIl0sdmFsdWVzOlt7bmFtZToiY2VudGVyIixkZXNjcmlwdGlvbjoiTGluZXMgYXJlIHBhY2tlZCB0b3dhcmQgdGhlIGNlbnRlciBvZiB0aGUgZmxleCBjb250YWluZXIuIn0se25hbWU6ImRpc3RyaWJ1dGUiLGRlc2NyaXB0aW9uOiJMaW5lcyBhcmUgZXZlbmx5IGRpc3RyaWJ1dGVkIGluIHRoZSBmbGV4IGNvbnRhaW5lciwgd2l0aCBoYWxmLXNpemUgc3BhY2VzIG9uIGVpdGhlciBlbmQuIn0se25hbWU6ImVuZCIsZGVzY3JpcHRpb246IkxpbmVzIGFyZSBwYWNrZWQgdG93YXJkIHRoZSBlbmQgb2YgdGhlIGZsZXggY29udGFpbmVyLiJ9LHtuYW1lOiJqdXN0aWZ5IixkZXNjcmlwdGlvbjoiTGluZXMgYXJlIGV2ZW5seSBkaXN0cmlidXRlZCBpbiB0aGUgZmxleCBjb250YWluZXIuIn0se25hbWU6InN0YXJ0IixkZXNjcmlwdGlvbjoiTGluZXMgYXJlIHBhY2tlZCB0b3dhcmQgdGhlIHN0YXJ0IG9mIHRoZSBmbGV4IGNvbnRhaW5lci4ifSx7bmFtZToic3RyZXRjaCIsZGVzY3JpcHRpb246IkxpbmVzIHN0cmV0Y2ggdG8gdGFrZSB1cCB0aGUgcmVtYWluaW5nIHNwYWNlLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkFsaWducyBhIGZsZXggY29udGFpbmVy4oCZcyBsaW5lcyB3aXRoaW4gdGhlIGZsZXggY29udGFpbmVyIHdoZW4gdGhlcmUgaXMgZXh0cmEgc3BhY2UgaW4gdGhlIGNyb3NzLWF4aXMsIHNpbWlsYXIgdG8gaG93ICdqdXN0aWZ5LWNvbnRlbnQnIGFsaWducyBpbmRpdmlkdWFsIGl0ZW1zIHdpdGhpbiB0aGUgbWFpbi1heGlzLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLW1zLWZsZXgtb3JkZXIiLGJyb3dzZXJzOlsiSUUxMCJdLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiQ29udHJvbHMgdGhlIG9yZGVyIGluIHdoaWNoIGNoaWxkcmVuIG9mIGEgZmxleCBjb250YWluZXIgYXBwZWFyIHdpdGhpbiB0aGUgZmxleCBjb250YWluZXIsIGJ5IGFzc2lnbmluZyB0aGVtIHRvIG9yZGluYWwgZ3JvdXBzLiIscmVzdHJpY3Rpb25zOlsiaW50ZWdlciJdfSx7bmFtZToiLW1zLWZsZXgtcGFjayIsYnJvd3NlcnM6WyJJRTEwIl0sdmFsdWVzOlt7bmFtZToiY2VudGVyIixkZXNjcmlwdGlvbjoiRmxleCBpdGVtcyBhcmUgcGFja2VkIHRvd2FyZCB0aGUgY2VudGVyIG9mIHRoZSBsaW5lLiJ9LHtuYW1lOiJkaXN0cmlidXRlIixkZXNjcmlwdGlvbjoiRmxleCBpdGVtcyBhcmUgZXZlbmx5IGRpc3RyaWJ1dGVkIGluIHRoZSBsaW5lLCB3aXRoIGhhbGYtc2l6ZSBzcGFjZXMgb24gZWl0aGVyIGVuZC4ifSx7bmFtZToiZW5kIixkZXNjcmlwdGlvbjoiRmxleCBpdGVtcyBhcmUgcGFja2VkIHRvd2FyZCB0aGUgZW5kIG9mIHRoZSBsaW5lLiJ9LHtuYW1lOiJqdXN0aWZ5IixkZXNjcmlwdGlvbjoiRmxleCBpdGVtcyBhcmUgZXZlbmx5IGRpc3RyaWJ1dGVkIGluIHRoZSBsaW5lLiJ9LHtuYW1lOiJzdGFydCIsZGVzY3JpcHRpb246IkZsZXggaXRlbXMgYXJlIHBhY2tlZCB0b3dhcmQgdGhlIHN0YXJ0IG9mIHRoZSBsaW5lLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkFsaWducyBmbGV4IGl0ZW1zIGFsb25nIHRoZSBtYWluIGF4aXMgb2YgdGhlIGN1cnJlbnQgbGluZSBvZiB0aGUgZmxleCBjb250YWluZXIuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiItbXMtZmxleC13cmFwIixicm93c2VyczpbIklFMTAiXSx2YWx1ZXM6W3tuYW1lOiJub3dyYXAiLGRlc2NyaXB0aW9uOiJUaGUgZmxleCBjb250YWluZXIgaXMgc2luZ2xlLWxpbmUuIn0se25hbWU6IndyYXAiLGRlc2NyaXB0aW9uOiJUaGUgZmxleGJveCBpcyBtdWx0aS1saW5lLiJ9LHtuYW1lOiJ3cmFwLXJldmVyc2UiLGRlc2NyaXB0aW9uOiJTYW1lIGFzICd3cmFwJywgZXhjZXB0IHRoZSBjcm9zcy1zdGFydCBhbmQgY3Jvc3MtZW5kIGRpcmVjdGlvbnMgYXJlIHN3YXBwZWQuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiQ29udHJvbHMgd2hldGhlciB0aGUgZmxleCBjb250YWluZXIgaXMgc2luZ2xlLWxpbmUgb3IgbXVsdGktbGluZSwgYW5kIHRoZSBkaXJlY3Rpb24gb2YgdGhlIGNyb3NzLWF4aXMsIHdoaWNoIGRldGVybWluZXMgdGhlIGRpcmVjdGlvbiBuZXcgbGluZXMgYXJlIHN0YWNrZWQgaW4uIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiItbXMtZmxvdy1mcm9tIixicm93c2VyczpbIkUiLCJJRTEwIl0sdmFsdWVzOlt7bmFtZToibm9uZSIsZGVzY3JpcHRpb246IlRoZSBibG9jayBjb250YWluZXIgaXMgbm90IGEgQ1NTIFJlZ2lvbi4ifV0sc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiJbIG5vbmUgfCA8Y3VzdG9tLWlkZW50PiBdIyIscmVsZXZhbmNlOjAsZGVzY3JpcHRpb246Ik1ha2VzIGEgYmxvY2sgY29udGFpbmVyIGEgcmVnaW9uIGFuZCBhc3NvY2lhdGVzIGl0IHdpdGggYSBuYW1lZCBmbG93LiIscmVzdHJpY3Rpb25zOlsiaWRlbnRpZmllciJdfSx7bmFtZToiLW1zLWZsb3ctaW50byIsYnJvd3NlcnM6WyJFIiwiSUUxMCJdLHZhbHVlczpbe25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJUaGUgZWxlbWVudCBpcyBub3QgbW92ZWQgdG8gYSBuYW1lZCBmbG93IGFuZCBub3JtYWwgQ1NTIHByb2Nlc3NpbmcgdGFrZXMgcGxhY2UuIn1dLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoiWyBub25lIHwgPGN1c3RvbS1pZGVudD4gXSMiLHJlbGV2YW5jZTowLGRlc2NyaXB0aW9uOiJQbGFjZXMgYW4gZWxlbWVudCBvciBpdHMgY29udGVudHMgaW50byBhIG5hbWVkIGZsb3cuIixyZXN0cmljdGlvbnM6WyJpZGVudGlmaWVyIl19LHtuYW1lOiItbXMtZ3JpZC1jb2x1bW4iLGJyb3dzZXJzOlsiRTEyIiwiSUUxMCJdLHZhbHVlczpbe25hbWU6ImF1dG8ifSx7bmFtZToiZW5kIn0se25hbWU6InN0YXJ0In1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiVXNlZCB0byBwbGFjZSBncmlkIGl0ZW1zIGFuZCBleHBsaWNpdGx5IGRlZmluZWQgZ3JpZCBjZWxscyBpbiB0aGUgR3JpZC4iLHJlc3RyaWN0aW9uczpbImludGVnZXIiLCJzdHJpbmciLCJlbnVtIl19LHtuYW1lOiItbXMtZ3JpZC1jb2x1bW4tYWxpZ24iLGJyb3dzZXJzOlsiRTEyIiwiSUUxMCJdLHZhbHVlczpbe25hbWU6ImNlbnRlciIsZGVzY3JpcHRpb246IlBsYWNlcyB0aGUgY2VudGVyIG9mIHRoZSBHcmlkIEl0ZW0ncyBtYXJnaW4gYm94IGF0IHRoZSBjZW50ZXIgb2YgdGhlIEdyaWQgSXRlbSdzIGNvbHVtbi4ifSx7bmFtZToiZW5kIixkZXNjcmlwdGlvbjoiQWxpZ25zIHRoZSBlbmQgZWRnZSBvZiB0aGUgR3JpZCBJdGVtJ3MgbWFyZ2luIGJveCB0byB0aGUgZW5kIGVkZ2Ugb2YgdGhlIEdyaWQgSXRlbSdzIGNvbHVtbi4ifSx7bmFtZToic3RhcnQiLGRlc2NyaXB0aW9uOiJBbGlnbnMgdGhlIHN0YXJ0aW5nIGVkZ2Ugb2YgdGhlIEdyaWQgSXRlbSdzIG1hcmdpbiBib3ggdG8gdGhlIHN0YXJ0aW5nIGVkZ2Ugb2YgdGhlIEdyaWQgSXRlbSdzIGNvbHVtbi4ifSx7bmFtZToic3RyZXRjaCIsZGVzY3JpcHRpb246IkVuc3VyZXMgdGhhdCB0aGUgR3JpZCBJdGVtJ3MgbWFyZ2luIGJveCBpcyBlcXVhbCB0byB0aGUgc2l6ZSBvZiB0aGUgR3JpZCBJdGVtJ3MgY29sdW1uLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkFsaWducyB0aGUgY29sdW1ucyBpbiBhIGdyaWQuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiItbXMtZ3JpZC1jb2x1bW5zIixicm93c2VyczpbIkUiLCJJRTEwIl0sc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiJub25lIHwgPHRyYWNrLWxpc3Q+IHwgPGF1dG8tdHJhY2stbGlzdD4iLHJlbGV2YW5jZTowLGRlc2NyaXB0aW9uOiJMYXlzIG91dCB0aGUgY29sdW1ucyBvZiB0aGUgZ3JpZC4ifSx7bmFtZToiLW1zLWdyaWQtY29sdW1uLXNwYW4iLGJyb3dzZXJzOlsiRTEyIiwiSUUxMCJdLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHRoZSBudW1iZXIgb2YgY29sdW1ucyB0byBzcGFuLiIscmVzdHJpY3Rpb25zOlsiaW50ZWdlciJdfSx7bmFtZToiLW1zLWdyaWQtbGF5ZXIiLGJyb3dzZXJzOlsiRSIsIklFMTAiXSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkdyaWQtbGF5ZXIgaXMgc2ltaWxhciBpbiBjb25jZXB0IHRvIHotaW5kZXgsIGJ1dCBhdm9pZHMgb3ZlcmxvYWRpbmcgdGhlIG1lYW5pbmcgb2YgdGhlIHotaW5kZXggcHJvcGVydHksIHdoaWNoIGlzIGFwcGxpY2FibGUgb25seSB0byBwb3NpdGlvbmVkIGVsZW1lbnRzLiIscmVzdHJpY3Rpb25zOlsiaW50ZWdlciJdfSx7bmFtZToiLW1zLWdyaWQtcm93Iixicm93c2VyczpbIkUxMiIsIklFMTAiXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIn0se25hbWU6ImVuZCJ9LHtuYW1lOiJzdGFydCJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246ImdyaWQtcm93IGlzIHVzZWQgdG8gcGxhY2UgZ3JpZCBpdGVtcyBhbmQgZXhwbGljaXRseSBkZWZpbmVkIGdyaWQgY2VsbHMgaW4gdGhlIEdyaWQuIixyZXN0cmljdGlvbnM6WyJpbnRlZ2VyIiwic3RyaW5nIiwiZW51bSJdfSx7bmFtZToiLW1zLWdyaWQtcm93LWFsaWduIixicm93c2VyczpbIkUxMiIsIklFMTAiXSx2YWx1ZXM6W3tuYW1lOiJjZW50ZXIiLGRlc2NyaXB0aW9uOiJQbGFjZXMgdGhlIGNlbnRlciBvZiB0aGUgR3JpZCBJdGVtJ3MgbWFyZ2luIGJveCBhdCB0aGUgY2VudGVyIG9mIHRoZSBHcmlkIEl0ZW0ncyByb3cuIn0se25hbWU6ImVuZCIsZGVzY3JpcHRpb246IkFsaWducyB0aGUgZW5kIGVkZ2Ugb2YgdGhlIEdyaWQgSXRlbSdzIG1hcmdpbiBib3ggdG8gdGhlIGVuZCBlZGdlIG9mIHRoZSBHcmlkIEl0ZW0ncyByb3cuIn0se25hbWU6InN0YXJ0IixkZXNjcmlwdGlvbjoiQWxpZ25zIHRoZSBzdGFydGluZyBlZGdlIG9mIHRoZSBHcmlkIEl0ZW0ncyBtYXJnaW4gYm94IHRvIHRoZSBzdGFydGluZyBlZGdlIG9mIHRoZSBHcmlkIEl0ZW0ncyByb3cuIn0se25hbWU6InN0cmV0Y2giLGRlc2NyaXB0aW9uOiJFbnN1cmVzIHRoYXQgdGhlIEdyaWQgSXRlbSdzIG1hcmdpbiBib3ggaXMgZXF1YWwgdG8gdGhlIHNpemUgb2YgdGhlIEdyaWQgSXRlbSdzIHJvdy4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJBbGlnbnMgdGhlIHJvd3MgaW4gYSBncmlkLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLW1zLWdyaWQtcm93cyIsYnJvd3NlcnM6WyJFIiwiSUUxMCJdLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoibm9uZSB8IDx0cmFjay1saXN0PiB8IDxhdXRvLXRyYWNrLWxpc3Q+IixyZWxldmFuY2U6MCxkZXNjcmlwdGlvbjoiTGF5cyBvdXQgdGhlIGNvbHVtbnMgb2YgdGhlIGdyaWQuIn0se25hbWU6Ii1tcy1ncmlkLXJvdy1zcGFuIixicm93c2VyczpbIkUxMiIsIklFMTAiXSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIHJvd3MgdG8gc3Bhbi4iLHJlc3RyaWN0aW9uczpbImludGVnZXIiXX0se25hbWU6Ii1tcy1oaWdoLWNvbnRyYXN0LWFkanVzdCIsYnJvd3NlcnM6WyJFIiwiSUUxMCJdLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJQcm9wZXJ0aWVzIHdpbGwgYmUgYWRqdXN0ZWQgYXMgYXBwbGljYWJsZS4ifSx7bmFtZToibm9uZSIsZGVzY3JpcHRpb246Ik5vIGFkanVzdG1lbnRzIHdpbGwgYmUgYXBwbGllZC4ifV0sc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiJhdXRvIHwgbm9uZSIscmVsZXZhbmNlOjAsZGVzY3JpcHRpb246IlNwZWNpZmllcyBpZiBwcm9wZXJ0aWVzIHNob3VsZCBiZSBhZGp1c3RlZCBpbiBoaWdoIGNvbnRyYXN0IG1vZGUuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiItbXMtaHlwaGVuYXRlLWxpbWl0LWNoYXJzIixicm93c2VyczpbIkUiLCJJRTEwIl0sdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IlRoZSB1c2VyIGFnZW50IGNob29zZXMgYSB2YWx1ZSB0aGF0IGFkYXB0cyB0byB0aGUgY3VycmVudCBsYXlvdXQuIn1dLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoiYXV0byB8IDxpbnRlZ2VyPnsxLDN9IixyZWxldmFuY2U6MCxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHRoZSBtaW5pbXVtIG51bWJlciBvZiBjaGFyYWN0ZXJzIGluIGEgaHlwaGVuYXRlZCB3b3JkLiIscmVzdHJpY3Rpb25zOlsiaW50ZWdlciJdfSx7bmFtZToiLW1zLWh5cGhlbmF0ZS1saW1pdC1saW5lcyIsYnJvd3NlcnM6WyJFIiwiSUUxMCJdLHZhbHVlczpbe25hbWU6Im5vLWxpbWl0IixkZXNjcmlwdGlvbjoiVGhlcmUgaXMgbm8gbGltaXQuIn1dLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoibm8tbGltaXQgfCA8aW50ZWdlcj4iLHJlbGV2YW5jZTowLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgdGhlIG1heGltdW0gbnVtYmVyIG9mIHN1Y2Nlc3NpdmUgaHlwaGVuYXRlZCBsaW5lcyBpbiBhbiBlbGVtZW50LiIscmVzdHJpY3Rpb25zOlsiaW50ZWdlciJdfSx7bmFtZToiLW1zLWh5cGhlbmF0ZS1saW1pdC16b25lIixicm93c2VyczpbIkUiLCJJRTEwIl0sc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiI8cGVyY2VudGFnZT4gfCA8bGVuZ3RoPiIscmVsZXZhbmNlOjAsZGVzY3JpcHRpb246IlNwZWNpZmllcyB0aGUgbWF4aW11bSBhbW91bnQgb2YgdW5maWxsZWQgc3BhY2UgKGJlZm9yZSBqdXN0aWZpY2F0aW9uKSB0aGF0IG1heSBiZSBsZWZ0IGluIHRoZSBsaW5lIGJveCBiZWZvcmUgaHlwaGVuYXRpb24gaXMgdHJpZ2dlcmVkIHRvIHB1bGwgcGFydCBvZiBhIHdvcmQgZnJvbSB0aGUgbmV4dCBsaW5lIGJhY2sgdXAgaW50byB0aGUgY3VycmVudCBsaW5lLiIscmVzdHJpY3Rpb25zOlsicGVyY2VudGFnZSIsImxlbmd0aCJdfSx7bmFtZToiLW1zLWh5cGhlbnMiLGJyb3dzZXJzOlsiRSIsIklFMTAiXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiQ29uZGl0aW9uYWwgaHlwaGVuYXRpb24gY2hhcmFjdGVycyBpbnNpZGUgYSB3b3JkLCBpZiBwcmVzZW50LCB0YWtlIHByaW9yaXR5IG92ZXIgYXV0b21hdGljIHJlc291cmNlcyB3aGVuIGRldGVybWluaW5nIGh5cGhlbmF0aW9uIHBvaW50cyB3aXRoaW4gdGhlIHdvcmQuIn0se25hbWU6Im1hbnVhbCIsZGVzY3JpcHRpb246IldvcmRzIGFyZSBvbmx5IGJyb2tlbiBhdCBsaW5lIGJyZWFrcyB3aGVyZSB0aGVyZSBhcmUgY2hhcmFjdGVycyBpbnNpZGUgdGhlIHdvcmQgdGhhdCBzdWdnZXN0IGxpbmUgYnJlYWsgb3Bwb3J0dW5pdGllcyJ9LHtuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiV29yZHMgYXJlIG5vdCBicm9rZW4gYXQgbGluZSBicmVha3MsIGV2ZW4gaWYgY2hhcmFjdGVycyBpbnNpZGUgdGhlIHdvcmQgc3VnZ2VzdCBsaW5lIGJyZWFrIHBvaW50cy4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJDb250cm9scyB3aGV0aGVyIGh5cGhlbmF0aW9uIGlzIGFsbG93ZWQgdG8gY3JlYXRlIG1vcmUgYnJlYWsgb3Bwb3J0dW5pdGllcyB3aXRoaW4gYSBsaW5lIG9mIHRleHQuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiItbXMtaW1lLW1vZGUiLGJyb3dzZXJzOlsiSUUxMCJdLHZhbHVlczpbe25hbWU6ImFjdGl2ZSIsZGVzY3JpcHRpb246IlRoZSBpbnB1dCBtZXRob2QgZWRpdG9yIGlzIGluaXRpYWxseSBhY3RpdmU7IHRleHQgZW50cnkgaXMgcGVyZm9ybWVkIHVzaW5nIGl0IHVubGVzcyB0aGUgdXNlciBzcGVjaWZpY2FsbHkgZGlzbWlzc2VzIGl0LiJ9LHtuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiTm8gY2hhbmdlIGlzIG1hZGUgdG8gdGhlIGN1cnJlbnQgaW5wdXQgbWV0aG9kIGVkaXRvciBzdGF0ZS4gVGhpcyBpcyB0aGUgZGVmYXVsdC4ifSx7bmFtZToiZGlzYWJsZWQiLGRlc2NyaXB0aW9uOiJUaGUgaW5wdXQgbWV0aG9kIGVkaXRvciBpcyBkaXNhYmxlZCBhbmQgbWF5IG5vdCBiZSBhY3RpdmF0ZWQgYnkgdGhlIHVzZXIuIn0se25hbWU6ImluYWN0aXZlIixkZXNjcmlwdGlvbjoiVGhlIGlucHV0IG1ldGhvZCBlZGl0b3IgaXMgaW5pdGlhbGx5IGluYWN0aXZlLCBidXQgdGhlIHVzZXIgbWF5IGFjdGl2YXRlIGl0IGlmIHRoZXkgd2lzaC4ifSx7bmFtZToibm9ybWFsIixkZXNjcmlwdGlvbjoiVGhlIElNRSBzdGF0ZSBzaG91bGQgYmUgbm9ybWFsOyB0aGlzIHZhbHVlIGNhbiBiZSB1c2VkIGluIGEgdXNlciBzdHlsZSBzaGVldCB0byBvdmVycmlkZSB0aGUgcGFnZSBzZXR0aW5nLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkNvbnRyb2xzIHRoZSBzdGF0ZSBvZiB0aGUgaW5wdXQgbWV0aG9kIGVkaXRvciBmb3IgdGV4dCBmaWVsZHMuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiItbXMtaW50ZXJwb2xhdGlvbi1tb2RlIixicm93c2VyczpbIklFNyJdLHZhbHVlczpbe25hbWU6ImJpY3ViaWMifSx7bmFtZToibmVhcmVzdC1uZWlnaGJvciJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkdldHMgb3Igc2V0cyB0aGUgaW50ZXJwb2xhdGlvbiAocmVzYW1wbGluZykgbWV0aG9kIHVzZWQgdG8gc3RyZXRjaCBpbWFnZXMuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiItbXMtbGF5b3V0LWdyaWQiLGJyb3dzZXJzOlsiRSIsIklFMTAiXSx2YWx1ZXM6W3tuYW1lOiJjaGFyIixkZXNjcmlwdGlvbjoiQW55IG9mIHRoZSByYW5nZSBvZiBjaGFyYWN0ZXIgdmFsdWVzIGF2YWlsYWJsZSB0byB0aGUgLW1zLWxheW91dC1ncmlkLWNoYXIgcHJvcGVydHkuIn0se25hbWU6ImxpbmUiLGRlc2NyaXB0aW9uOiJBbnkgb2YgdGhlIHJhbmdlIG9mIGxpbmUgdmFsdWVzIGF2YWlsYWJsZSB0byB0aGUgLW1zLWxheW91dC1ncmlkLWxpbmUgcHJvcGVydHkuIn0se25hbWU6Im1vZGUiLGRlc2NyaXB0aW9uOiJBbnkgb2YgdGhlIHJhbmdlIG9mIG1vZGUgdmFsdWVzIGF2YWlsYWJsZSB0byB0aGUgLW1zLWxheW91dC1ncmlkLW1vZGUgcHJvcGVydHkuIn0se25hbWU6InR5cGUiLGRlc2NyaXB0aW9uOiJBbnkgb2YgdGhlIHJhbmdlIG9mIHR5cGUgdmFsdWVzIGF2YWlsYWJsZSB0byB0aGUgLW1zLWxheW91dC1ncmlkLXR5cGUgcHJvcGVydHkuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiU2V0cyBvciByZXRyaWV2ZXMgdGhlIGNvbXBvc2l0ZSBkb2N1bWVudCBncmlkIHByb3BlcnRpZXMgdGhhdCBzcGVjaWZ5IHRoZSBsYXlvdXQgb2YgdGV4dCBjaGFyYWN0ZXJzLiJ9LHtuYW1lOiItbXMtbGF5b3V0LWdyaWQtY2hhciIsYnJvd3NlcnM6WyJFIiwiSUUxMCJdLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJMYXJnZXN0IGNoYXJhY3RlciBpbiB0aGUgZm9udCBvZiB0aGUgZWxlbWVudCBpcyB1c2VkIHRvIHNldCB0aGUgY2hhcmFjdGVyIGdyaWQuIn0se25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJEZWZhdWx0LiBObyBjaGFyYWN0ZXIgZ3JpZCBpcyBzZXQuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiU2V0cyBvciByZXRyaWV2ZXMgdGhlIHNpemUgb2YgdGhlIGNoYXJhY3RlciBncmlkIHVzZWQgZm9yIHJlbmRlcmluZyB0aGUgdGV4dCBjb250ZW50IG9mIGFuIGVsZW1lbnQuIixyZXN0cmljdGlvbnM6WyJlbnVtIiwibGVuZ3RoIiwicGVyY2VudGFnZSJdfSx7bmFtZToiLW1zLWxheW91dC1ncmlkLWxpbmUiLGJyb3dzZXJzOlsiRSIsIklFMTAiXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiTGFyZ2VzdCBjaGFyYWN0ZXIgaW4gdGhlIGZvbnQgb2YgdGhlIGVsZW1lbnQgaXMgdXNlZCB0byBzZXQgdGhlIGNoYXJhY3RlciBncmlkLiJ9LHtuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiRGVmYXVsdC4gTm8gZ3JpZCBsaW5lIGlzIHNldC4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJTZXRzIG9yIHJldHJpZXZlcyB0aGUgZ3JpZGxpbmUgdmFsdWUgdXNlZCBmb3IgcmVuZGVyaW5nIHRoZSB0ZXh0IGNvbnRlbnQgb2YgYW4gZWxlbWVudC4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCJdfSx7bmFtZToiLW1zLWxheW91dC1ncmlkLW1vZGUiLGJyb3dzZXJzOlsiRSIsIklFMTAiXSx2YWx1ZXM6W3tuYW1lOiJib3RoIixkZXNjcmlwdGlvbjoiRGVmYXVsdC4gQm90aCB0aGUgY2hhciBhbmQgbGluZSBncmlkIG1vZGVzIGFyZSBlbmFibGVkLiBUaGlzIHNldHRpbmcgaXMgbmVjZXNzYXJ5IHRvIGZ1bGx5IGVuYWJsZSB0aGUgbGF5b3V0IGdyaWQgb24gYW4gZWxlbWVudC4ifSx7bmFtZToiY2hhciIsZGVzY3JpcHRpb246Ik9ubHkgYSBjaGFyYWN0ZXIgZ3JpZCBpcyB1c2VkLiBUaGlzIGlzIHJlY29tbWVuZGVkIGZvciB1c2Ugd2l0aCBibG9jay1sZXZlbCBlbGVtZW50cywgc3VjaCBhcyBhIGJsb2NrcXVvdGUsIHdoZXJlIHRoZSBsaW5lIGdyaWQgaXMgaW50ZW5kZWQgdG8gYmUgZGlzYWJsZWQuIn0se25hbWU6ImxpbmUiLGRlc2NyaXB0aW9uOiJPbmx5IGEgbGluZSBncmlkIGlzIHVzZWQuIFRoaXMgaXMgcmVjb21tZW5kZWQgZm9yIHVzZSB3aXRoIGlubGluZSBlbGVtZW50cywgc3VjaCBhcyBhIHNwYW4sIHRvIGRpc2FibGUgdGhlIGhvcml6b250YWwgZ3JpZCBvbiBydW5zIG9mIHRleHQgdGhhdCBhY3QgYXMgYSBzaW5nbGUgZW50aXR5IGluIHRoZSBncmlkIGxheW91dC4ifSx7bmFtZToibm9uZSIsZGVzY3JpcHRpb246Ik5vIGdyaWQgaXMgdXNlZC4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJHZXRzIG9yIHNldHMgd2hldGhlciB0aGUgdGV4dCBsYXlvdXQgZ3JpZCB1c2VzIHR3byBkaW1lbnNpb25zLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLW1zLWxheW91dC1ncmlkLXR5cGUiLGJyb3dzZXJzOlsiRSIsIklFMTAiXSx2YWx1ZXM6W3tuYW1lOiJmaXhlZCIsZGVzY3JpcHRpb246IkdyaWQgdXNlZCBmb3IgbW9ub3NwYWNlZCBsYXlvdXQuIEFsbCBub25jdXJzaXZlIGNoYXJhY3RlcnMgYXJlIHRyZWF0ZWQgYXMgZXF1YWw7IGV2ZXJ5IGNoYXJhY3RlciBpcyBjZW50ZXJlZCB3aXRoaW4gYSBzaW5nbGUgZ3JpZCBzcGFjZSBieSBkZWZhdWx0LiJ9LHtuYW1lOiJsb29zZSIsZGVzY3JpcHRpb246IkRlZmF1bHQuIEdyaWQgdXNlZCBmb3IgSmFwYW5lc2UgYW5kIEtvcmVhbiBjaGFyYWN0ZXJzLiJ9LHtuYW1lOiJzdHJpY3QiLGRlc2NyaXB0aW9uOiJHcmlkIHVzZWQgZm9yIENoaW5lc2UsIGFzIHdlbGwgYXMgSmFwYW5lc2UgKEdlbmtvKSBhbmQgS29yZWFuIGNoYXJhY3RlcnMuIE9ubHkgdGhlIGlkZW9ncmFwaHMsIGthbmFzLCBhbmQgd2lkZSBjaGFyYWN0ZXJzIGFyZSBzbmFwcGVkIHRvIHRoZSBncmlkLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlNldHMgb3IgcmV0cmlldmVzIHRoZSB0eXBlIG9mIGdyaWQgdXNlZCBmb3IgcmVuZGVyaW5nIHRoZSB0ZXh0IGNvbnRlbnQgb2YgYW4gZWxlbWVudC4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii1tcy1saW5lLWJyZWFrIixicm93c2VyczpbIkUiLCJJRTEwIl0sdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IlRoZSBVQSBkZXRlcm1pbmVzIHRoZSBzZXQgb2YgbGluZS1icmVha2luZyByZXN0cmljdGlvbnMgdG8gdXNlIGZvciBDSksgc2NyaXB0cywgYW5kIGl0IG1heSB2YXJ5IHRoZSByZXN0cmljdGlvbnMgYmFzZWQgb24gdGhlIGxlbmd0aCBvZiB0aGUgbGluZTsgZS5nLiwgdXNlIGEgbGVzcyByZXN0cmljdGl2ZSBzZXQgb2YgbGluZS1icmVhayBydWxlcyBmb3Igc2hvcnQgbGluZXMuIn0se25hbWU6ImtlZXAtYWxsIixkZXNjcmlwdGlvbjoiU2VxdWVuY2VzIG9mIENKSyBjaGFyYWN0ZXJzIGNhbiBubyBsb25nZXIgYnJlYWsgb24gaW1wbGllZCBicmVhayBwb2ludHMuIFRoaXMgb3B0aW9uIHNob3VsZCBvbmx5IGJlIHVzZWQgd2hlcmUgdGhlIHByZXNlbmNlIG9mIHdvcmQgc2VwYXJhdG9yIGNoYXJhY3RlcnMgc3RpbGwgY3JlYXRlcyBsaW5lLWJyZWFraW5nIG9wcG9ydHVuaXRpZXMsIGFzIGluIEtvcmVhbi4ifSx7bmFtZToibmV3c3BhcGVyIixkZXNjcmlwdGlvbjoiQnJlYWtzIENKSyBzY3JpcHRzIHVzaW5nIHRoZSBsZWFzdCByZXN0cmljdGl2ZSBzZXQgb2YgbGluZS1icmVha2luZyBydWxlcy4gVHlwaWNhbGx5IHVzZWQgZm9yIHNob3J0IGxpbmVzLCBzdWNoIGFzIGluIG5ld3NwYXBlcnMuIn0se25hbWU6Im5vcm1hbCIsZGVzY3JpcHRpb246IkJyZWFrcyBDSksgc2NyaXB0cyB1c2luZyBhIG5vcm1hbCBzZXQgb2YgbGluZS1icmVha2luZyBydWxlcy4ifSx7bmFtZToic3RyaWN0IixkZXNjcmlwdGlvbjoiQnJlYWtzIENKSyBzY3JpcHRzIHVzaW5nIGEgbW9yZSByZXN0cmljdGl2ZSBzZXQgb2YgbGluZS1icmVha2luZyBydWxlcyB0aGFuICdub3JtYWwnLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlNwZWNpZmllcyB3aGF0IHNldCBvZiBsaW5lIGJyZWFraW5nIHJlc3RyaWN0aW9ucyBhcmUgaW4gZWZmZWN0IHdpdGhpbiB0aGUgZWxlbWVudC4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii1tcy1vdmVyZmxvdy1zdHlsZSIsYnJvd3NlcnM6WyJFIiwiSUUxMCJdLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJObyBwcmVmZXJlbmNlLCBVQSBzaG91bGQgdXNlIHRoZSBmaXJzdCBzY3JvbGxpbmcgbWV0aG9kIGluIHRoZSBsaXN0IHRoYXQgaXQgc3VwcG9ydHMuIn0se25hbWU6Ii1tcy1hdXRvaGlkaW5nLXNjcm9sbGJhciIsZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGUgZWxlbWVudCBkaXNwbGF5cyBhdXRvLWhpZGluZyBzY3JvbGxiYXJzIGR1cmluZyBtb3VzZSBpbnRlcmFjdGlvbnMgYW5kIHBhbm5pbmcgaW5kaWNhdG9ycyBkdXJpbmcgdG91Y2ggYW5kIGtleWJvYXJkIGludGVyYWN0aW9ucy4ifSx7bmFtZToibm9uZSIsZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGUgZWxlbWVudCBkb2VzIG5vdCBkaXNwbGF5IHNjcm9sbGJhcnMgb3IgcGFubmluZyBpbmRpY2F0b3JzLCBldmVuIHdoZW4gaXRzIGNvbnRlbnQgb3ZlcmZsb3dzLiJ9LHtuYW1lOiJzY3JvbGxiYXIiLGRlc2NyaXB0aW9uOidTY3JvbGxiYXJzIGFyZSB0eXBpY2FsbHkgbmFycm93IHN0cmlwcyBpbnNlcnRlZCBvbiBvbmUgb3IgdHdvIGVkZ2VzIG9mIGFuIGVsZW1lbnQgYW5kIHdoaWNoIG9mdGVuIGhhdmUgYXJyb3dzIHRvIGNsaWNrIG9uIGFuZCBhICJ0aHVtYiIgdG8gZHJhZyB1cCBhbmQgZG93biAob3IgbGVmdCBhbmQgcmlnaHQpIHRvIG1vdmUgdGhlIGNvbnRlbnRzIG9mIHRoZSBlbGVtZW50Lid9XSxzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6ImF1dG8gfCBub25lIHwgc2Nyb2xsYmFyIHwgLW1zLWF1dG9oaWRpbmctc2Nyb2xsYmFyIixyZWxldmFuY2U6MCxkZXNjcmlwdGlvbjoiU3BlY2lmeSB3aGV0aGVyIGNvbnRlbnQgaXMgY2xpcHBlZCB3aGVuIGl0IG92ZXJmbG93cyB0aGUgZWxlbWVudCdzIGNvbnRlbnQgYXJlYS4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii1tcy1wZXJzcGVjdGl2ZSIsYnJvd3NlcnM6WyJJRTEwIl0sdmFsdWVzOlt7bmFtZToibm9uZSIsZGVzY3JpcHRpb246Ik5vIHBlcnNwZWN0aXZlIHRyYW5zZm9ybSBpcyBhcHBsaWVkLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkFwcGxpZXMgdGhlIHNhbWUgdHJhbnNmb3JtIGFzIHRoZSBwZXJzcGVjdGl2ZSg8bnVtYmVyPikgdHJhbnNmb3JtIGZ1bmN0aW9uLCBleGNlcHQgdGhhdCBpdCBhcHBsaWVzIG9ubHkgdG8gdGhlIHBvc2l0aW9uZWQgb3IgdHJhbnNmb3JtZWQgY2hpbGRyZW4gb2YgdGhlIGVsZW1lbnQsIG5vdCB0byB0aGUgdHJhbnNmb3JtIG9uIHRoZSBlbGVtZW50IGl0c2VsZi4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCJdfSx7bmFtZToiLW1zLXBlcnNwZWN0aXZlLW9yaWdpbiIsYnJvd3NlcnM6WyJJRTEwIl0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJFc3RhYmxpc2hlcyB0aGUgb3JpZ2luIGZvciB0aGUgcGVyc3BlY3RpdmUgcHJvcGVydHkuIEl0IGVmZmVjdGl2ZWx5IHNldHMgdGhlIFggYW5kIFkgcG9zaXRpb24gYXQgd2hpY2ggdGhlIHZpZXdlciBhcHBlYXJzIHRvIGJlIGxvb2tpbmcgYXQgdGhlIGNoaWxkcmVuIG9mIHRoZSBlbGVtZW50LiIscmVzdHJpY3Rpb25zOlsicG9zaXRpb24iLCJwZXJjZW50YWdlIiwibGVuZ3RoIl19LHtuYW1lOiItbXMtcGVyc3BlY3RpdmUtb3JpZ2luLXgiLGJyb3dzZXJzOlsiSUUxMCJdLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiRXN0YWJsaXNoZXMgdGhlIG9yaWdpbiBmb3IgdGhlIHBlcnNwZWN0aXZlIHByb3BlcnR5LiBJdCBlZmZlY3RpdmVseSBzZXRzIHRoZSBYICBwb3NpdGlvbiBhdCB3aGljaCB0aGUgdmlld2VyIGFwcGVhcnMgdG8gYmUgbG9va2luZyBhdCB0aGUgY2hpbGRyZW4gb2YgdGhlIGVsZW1lbnQuIixyZXN0cmljdGlvbnM6WyJwb3NpdGlvbiIsInBlcmNlbnRhZ2UiLCJsZW5ndGgiXX0se25hbWU6Ii1tcy1wZXJzcGVjdGl2ZS1vcmlnaW4teSIsYnJvd3NlcnM6WyJJRTEwIl0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJFc3RhYmxpc2hlcyB0aGUgb3JpZ2luIGZvciB0aGUgcGVyc3BlY3RpdmUgcHJvcGVydHkuIEl0IGVmZmVjdGl2ZWx5IHNldHMgdGhlIFkgcG9zaXRpb24gYXQgd2hpY2ggdGhlIHZpZXdlciBhcHBlYXJzIHRvIGJlIGxvb2tpbmcgYXQgdGhlIGNoaWxkcmVuIG9mIHRoZSBlbGVtZW50LiIscmVzdHJpY3Rpb25zOlsicG9zaXRpb24iLCJwZXJjZW50YWdlIiwibGVuZ3RoIl19LHtuYW1lOiItbXMtcHJvZ3Jlc3MtYXBwZWFyYW5jZSIsYnJvd3NlcnM6WyJJRTEwIl0sdmFsdWVzOlt7bmFtZToiYmFyIn0se25hbWU6InJpbmcifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJHZXRzIG9yIHNldHMgYSB2YWx1ZSB0aGF0IHNwZWNpZmllcyB3aGV0aGVyIGEgcHJvZ3Jlc3MgY29udHJvbCBkaXNwbGF5cyBhcyBhIGJhciBvciBhIHJpbmcuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiItbXMtc2Nyb2xsYmFyLTNkbGlnaHQtY29sb3IiLGJyb3dzZXJzOlsiSUU4Il0sc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiI8Y29sb3I+IixyZWxldmFuY2U6MCxkZXNjcmlwdGlvbjoiRGV0ZXJtaW5lcyB0aGUgY29sb3Igb2YgdGhlIHRvcCBhbmQgbGVmdCBlZGdlcyBvZiB0aGUgc2Nyb2xsIGJveCBhbmQgc2Nyb2xsIGFycm93cyBvZiBhIHNjcm9sbCBiYXIuIixyZXN0cmljdGlvbnM6WyJjb2xvciJdfSx7bmFtZToiLW1zLXNjcm9sbGJhci1hcnJvdy1jb2xvciIsYnJvd3NlcnM6WyJJRTgiXSxzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6Ijxjb2xvcj4iLHJlbGV2YW5jZTowLGRlc2NyaXB0aW9uOiJEZXRlcm1pbmVzIHRoZSBjb2xvciBvZiB0aGUgYXJyb3cgZWxlbWVudHMgb2YgYSBzY3JvbGwgYXJyb3cuIixyZXN0cmljdGlvbnM6WyJjb2xvciJdfSx7bmFtZToiLW1zLXNjcm9sbGJhci1iYXNlLWNvbG9yIixicm93c2VyczpbIklFOCJdLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoiPGNvbG9yPiIscmVsZXZhbmNlOjAsZGVzY3JpcHRpb246IkRldGVybWluZXMgdGhlIGNvbG9yIG9mIHRoZSBtYWluIGVsZW1lbnRzIG9mIGEgc2Nyb2xsIGJhciwgd2hpY2ggaW5jbHVkZSB0aGUgc2Nyb2xsIGJveCwgdHJhY2ssIGFuZCBzY3JvbGwgYXJyb3dzLiIscmVzdHJpY3Rpb25zOlsiY29sb3IiXX0se25hbWU6Ii1tcy1zY3JvbGxiYXItZGFya3NoYWRvdy1jb2xvciIsYnJvd3NlcnM6WyJJRTgiXSxzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6Ijxjb2xvcj4iLHJlbGV2YW5jZTowLGRlc2NyaXB0aW9uOiJEZXRlcm1pbmVzIHRoZSBjb2xvciBvZiB0aGUgZ3V0dGVyIG9mIGEgc2Nyb2xsIGJhci4iLHJlc3RyaWN0aW9uczpbImNvbG9yIl19LHtuYW1lOiItbXMtc2Nyb2xsYmFyLWZhY2UtY29sb3IiLGJyb3dzZXJzOlsiSUU4Il0sc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiI8Y29sb3I+IixyZWxldmFuY2U6MCxkZXNjcmlwdGlvbjoiRGV0ZXJtaW5lcyB0aGUgY29sb3Igb2YgdGhlIHNjcm9sbCBib3ggYW5kIHNjcm9sbCBhcnJvd3Mgb2YgYSBzY3JvbGwgYmFyLiIscmVzdHJpY3Rpb25zOlsiY29sb3IiXX0se25hbWU6Ii1tcy1zY3JvbGxiYXItaGlnaGxpZ2h0LWNvbG9yIixicm93c2VyczpbIklFOCJdLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoiPGNvbG9yPiIscmVsZXZhbmNlOjAsZGVzY3JpcHRpb246IkRldGVybWluZXMgdGhlIGNvbG9yIG9mIHRoZSB0b3AgYW5kIGxlZnQgZWRnZXMgb2YgdGhlIHNjcm9sbCBib3ggYW5kIHNjcm9sbCBhcnJvd3Mgb2YgYSBzY3JvbGwgYmFyLiIscmVzdHJpY3Rpb25zOlsiY29sb3IiXX0se25hbWU6Ii1tcy1zY3JvbGxiYXItc2hhZG93LWNvbG9yIixicm93c2VyczpbIklFOCJdLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoiPGNvbG9yPiIscmVsZXZhbmNlOjAsZGVzY3JpcHRpb246IkRldGVybWluZXMgdGhlIGNvbG9yIG9mIHRoZSBib3R0b20gYW5kIHJpZ2h0IGVkZ2VzIG9mIHRoZSBzY3JvbGwgYm94IGFuZCBzY3JvbGwgYXJyb3dzIG9mIGEgc2Nyb2xsIGJhci4iLHJlc3RyaWN0aW9uczpbImNvbG9yIl19LHtuYW1lOiItbXMtc2Nyb2xsYmFyLXRyYWNrLWNvbG9yIixicm93c2VyczpbIklFNSJdLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoiPGNvbG9yPiIscmVsZXZhbmNlOjAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLy1tcy1zY3JvbGxiYXItdHJhY2stY29sb3IifV0sZGVzY3JpcHRpb246IkRldGVybWluZXMgdGhlIGNvbG9yIG9mIHRoZSB0cmFjayBlbGVtZW50IG9mIGEgc2Nyb2xsIGJhci4iLHJlc3RyaWN0aW9uczpbImNvbG9yIl19LHtuYW1lOiItbXMtc2Nyb2xsLWNoYWluaW5nIixicm93c2VyczpbIkUiLCJJRTEwIl0sdmFsdWVzOlt7bmFtZToiY2hhaW5lZCJ9LHtuYW1lOiJub25lIn1dLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoiY2hhaW5lZCB8IG5vbmUiLHJlbGV2YW5jZTowLGRlc2NyaXB0aW9uOiJHZXRzIG9yIHNldHMgYSB2YWx1ZSB0aGF0IGluZGljYXRlcyB0aGUgc2Nyb2xsaW5nIGJlaGF2aW9yIHRoYXQgb2NjdXJzIHdoZW4gYSB1c2VyIGhpdHMgdGhlIGNvbnRlbnQgYm91bmRhcnkgZHVyaW5nIGEgbWFuaXB1bGF0aW9uLiIscmVzdHJpY3Rpb25zOlsiZW51bSIsImxlbmd0aCJdfSx7bmFtZToiLW1zLXNjcm9sbC1saW1pdCIsYnJvd3NlcnM6WyJFIiwiSUUxMCJdLHZhbHVlczpbe25hbWU6ImF1dG8ifV0sc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiI8Jy1tcy1zY3JvbGwtbGltaXQteC1taW4nPiA8Jy1tcy1zY3JvbGwtbGltaXQteS1taW4nPiA8Jy1tcy1zY3JvbGwtbGltaXQteC1tYXgnPiA8Jy1tcy1zY3JvbGwtbGltaXQteS1tYXgnPiIscmVsZXZhbmNlOjAsZGVzY3JpcHRpb246IkdldHMgb3Igc2V0cyBhIHNob3J0aGFuZCB2YWx1ZSB0aGF0IHNldHMgdmFsdWVzIGZvciB0aGUgLW1zLXNjcm9sbC1saW1pdC14LW1pbiwgLW1zLXNjcm9sbC1saW1pdC15LW1pbiwgLW1zLXNjcm9sbC1saW1pdC14LW1heCwgYW5kIC1tcy1zY3JvbGwtbGltaXQteS1tYXggcHJvcGVydGllcy4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCJdfSx7bmFtZToiLW1zLXNjcm9sbC1saW1pdC14LW1heCIsYnJvd3NlcnM6WyJFIiwiSUUxMCJdLHZhbHVlczpbe25hbWU6ImF1dG8ifV0sc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiJhdXRvIHwgPGxlbmd0aD4iLHJlbGV2YW5jZTowLGRlc2NyaXB0aW9uOiJHZXRzIG9yIHNldHMgYSB2YWx1ZSB0aGF0IHNwZWNpZmllcyB0aGUgbWF4aW11bSB2YWx1ZSBmb3IgdGhlIHNjcm9sbExlZnQgcHJvcGVydHkuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiXX0se25hbWU6Ii1tcy1zY3JvbGwtbGltaXQteC1taW4iLGJyb3dzZXJzOlsiRSIsIklFMTAiXSxzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6IjxsZW5ndGg+IixyZWxldmFuY2U6MCxkZXNjcmlwdGlvbjoiR2V0cyBvciBzZXRzIGEgdmFsdWUgdGhhdCBzcGVjaWZpZXMgdGhlIG1pbmltdW0gdmFsdWUgZm9yIHRoZSBzY3JvbGxMZWZ0IHByb3BlcnR5LiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIl19LHtuYW1lOiItbXMtc2Nyb2xsLWxpbWl0LXktbWF4Iixicm93c2VyczpbIkUiLCJJRTEwIl0sdmFsdWVzOlt7bmFtZToiYXV0byJ9XSxzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6ImF1dG8gfCA8bGVuZ3RoPiIscmVsZXZhbmNlOjAsZGVzY3JpcHRpb246IkdldHMgb3Igc2V0cyBhIHZhbHVlIHRoYXQgc3BlY2lmaWVzIHRoZSBtYXhpbXVtIHZhbHVlIGZvciB0aGUgc2Nyb2xsVG9wIHByb3BlcnR5LiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIl19LHtuYW1lOiItbXMtc2Nyb2xsLWxpbWl0LXktbWluIixicm93c2VyczpbIkUiLCJJRTEwIl0sc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiI8bGVuZ3RoPiIscmVsZXZhbmNlOjAsZGVzY3JpcHRpb246IkdldHMgb3Igc2V0cyBhIHZhbHVlIHRoYXQgc3BlY2lmaWVzIHRoZSBtaW5pbXVtIHZhbHVlIGZvciB0aGUgc2Nyb2xsVG9wIHByb3BlcnR5LiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIl19LHtuYW1lOiItbXMtc2Nyb2xsLXJhaWxzIixicm93c2VyczpbIkUiLCJJRTEwIl0sdmFsdWVzOlt7bmFtZToibm9uZSJ9LHtuYW1lOiJyYWlsZWQifV0sc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiJub25lIHwgcmFpbGVkIixyZWxldmFuY2U6MCxkZXNjcmlwdGlvbjoiR2V0cyBvciBzZXRzIGEgdmFsdWUgdGhhdCBpbmRpY2F0ZXMgd2hldGhlciBvciBub3Qgc21hbGwgbW90aW9ucyBwZXJwZW5kaWN1bGFyIHRvIHRoZSBwcmltYXJ5IGF4aXMgb2YgbW90aW9uIHdpbGwgcmVzdWx0IGluIGVpdGhlciBjaGFuZ2VzIHRvIGJvdGggdGhlIHNjcm9sbFRvcCBhbmQgc2Nyb2xsTGVmdCBwcm9wZXJ0aWVzIG9yIGEgY2hhbmdlIHRvIHRoZSBwcmltYXJ5IGF4aXMgKGZvciBpbnN0YW5jZSwgZWl0aGVyIHRoZSBzY3JvbGxUb3Agb3Igc2Nyb2xsTGVmdCBwcm9wZXJ0aWVzIHdpbGwgY2hhbmdlLCBidXQgbm90IGJvdGgpLiIscmVzdHJpY3Rpb25zOlsiZW51bSIsImxlbmd0aCJdfSx7bmFtZToiLW1zLXNjcm9sbC1zbmFwLXBvaW50cy14Iixicm93c2VyczpbIkUiLCJJRTEwIl0sdmFsdWVzOlt7bmFtZToic25hcEludGVydmFsKDEwMCUsIDEwMCUpIn0se25hbWU6InNuYXBMaXN0KCkifV0sc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiJzbmFwSW50ZXJ2YWwoIDxsZW5ndGgtcGVyY2VudGFnZT4sIDxsZW5ndGgtcGVyY2VudGFnZT4gKSB8IHNuYXBMaXN0KCA8bGVuZ3RoLXBlcmNlbnRhZ2U+IyApIixyZWxldmFuY2U6MCxkZXNjcmlwdGlvbjoiR2V0cyBvciBzZXRzIGEgdmFsdWUgdGhhdCBkZWZpbmVzIHdoZXJlIHNuYXAtcG9pbnRzIHdpbGwgYmUgbG9jYXRlZCBhbG9uZyB0aGUgeC1heGlzLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLW1zLXNjcm9sbC1zbmFwLXBvaW50cy15Iixicm93c2VyczpbIkUiLCJJRTEwIl0sdmFsdWVzOlt7bmFtZToic25hcEludGVydmFsKDEwMCUsIDEwMCUpIn0se25hbWU6InNuYXBMaXN0KCkifV0sc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiJzbmFwSW50ZXJ2YWwoIDxsZW5ndGgtcGVyY2VudGFnZT4sIDxsZW5ndGgtcGVyY2VudGFnZT4gKSB8IHNuYXBMaXN0KCA8bGVuZ3RoLXBlcmNlbnRhZ2U+IyApIixyZWxldmFuY2U6MCxkZXNjcmlwdGlvbjoiR2V0cyBvciBzZXRzIGEgdmFsdWUgdGhhdCBkZWZpbmVzIHdoZXJlIHNuYXAtcG9pbnRzIHdpbGwgYmUgbG9jYXRlZCBhbG9uZyB0aGUgeS1heGlzLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLW1zLXNjcm9sbC1zbmFwLXR5cGUiLGJyb3dzZXJzOlsiRSIsIklFMTAiXSx2YWx1ZXM6W3tuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiVGhlIHZpc3VhbCB2aWV3cG9ydCBvZiB0aGlzIHNjcm9sbCBjb250YWluZXIgbXVzdCBpZ25vcmUgc25hcCBwb2ludHMsIGlmIGFueSwgd2hlbiBzY3JvbGxlZC4ifSx7bmFtZToibWFuZGF0b3J5IixkZXNjcmlwdGlvbjoiVGhlIHZpc3VhbCB2aWV3cG9ydCBvZiB0aGlzIHNjcm9sbCBjb250YWluZXIgaXMgZ3VhcmFudGVlZCB0byByZXN0IG9uIGEgc25hcCBwb2ludCB3aGVuIHRoZXJlIGFyZSBubyBhY3RpdmUgc2Nyb2xsaW5nIG9wZXJhdGlvbnMuIn0se25hbWU6InByb3hpbWl0eSIsZGVzY3JpcHRpb246IlRoZSB2aXN1YWwgdmlld3BvcnQgb2YgdGhpcyBzY3JvbGwgY29udGFpbmVyIG1heSBjb21lIHRvIHJlc3Qgb24gYSBzbmFwIHBvaW50IGF0IHRoZSB0ZXJtaW5hdGlvbiBvZiBhIHNjcm9sbCBhdCB0aGUgZGlzY3JldGlvbiBvZiB0aGUgVUEgZ2l2ZW4gdGhlIHBhcmFtZXRlcnMgb2YgdGhlIHNjcm9sbC4ifV0sc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiJub25lIHwgcHJveGltaXR5IHwgbWFuZGF0b3J5IixyZWxldmFuY2U6MCxkZXNjcmlwdGlvbjoiR2V0cyBvciBzZXRzIGEgdmFsdWUgdGhhdCBkZWZpbmVzIHdoYXQgdHlwZSBvZiBzbmFwLXBvaW50IHNob3VsZCBiZSB1c2VkIGZvciB0aGUgY3VycmVudCBlbGVtZW50LiBUaGVyZSBhcmUgdHdvIHR5cGUgb2Ygc25hcC1wb2ludHMsIHdpdGggdGhlIHByaW1hcnkgZGlmZmVyZW5jZSBiZWluZyB3aGV0aGVyIG9yIG5vdCB0aGUgdXNlciBpcyBndWFyYW50ZWVkIHRvIGFsd2F5cyBzdG9wIG9uIGEgc25hcC1wb2ludC4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii1tcy1zY3JvbGwtc25hcC14Iixicm93c2VyczpbIkUiLCJJRTEwIl0sdmFsdWVzOlt7bmFtZToibWFuZGF0b3J5In0se25hbWU6Im5vbmUifSx7bmFtZToicHJveGltaXR5In0se25hbWU6InNuYXBJbnRlcnZhbCgxMDAlLCAxMDAlKSJ9LHtuYW1lOiJzbmFwTGlzdCgpIn1dLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoiPCctbXMtc2Nyb2xsLXNuYXAtdHlwZSc+IDwnLW1zLXNjcm9sbC1zbmFwLXBvaW50cy14Jz4iLHJlbGV2YW5jZTowLGRlc2NyaXB0aW9uOiJHZXRzIG9yIHNldHMgYSBzaG9ydGhhbmQgdmFsdWUgdGhhdCBzZXRzIHZhbHVlcyBmb3IgdGhlIC1tcy1zY3JvbGwtc25hcC10eXBlIGFuZCAtbXMtc2Nyb2xsLXNuYXAtcG9pbnRzLXggcHJvcGVydGllcy4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii1tcy1zY3JvbGwtc25hcC15Iixicm93c2VyczpbIkUiLCJJRTEwIl0sdmFsdWVzOlt7bmFtZToibWFuZGF0b3J5In0se25hbWU6Im5vbmUifSx7bmFtZToicHJveGltaXR5In0se25hbWU6InNuYXBJbnRlcnZhbCgxMDAlLCAxMDAlKSJ9LHtuYW1lOiJzbmFwTGlzdCgpIn1dLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoiPCctbXMtc2Nyb2xsLXNuYXAtdHlwZSc+IDwnLW1zLXNjcm9sbC1zbmFwLXBvaW50cy15Jz4iLHJlbGV2YW5jZTowLGRlc2NyaXB0aW9uOiJHZXRzIG9yIHNldHMgYSBzaG9ydGhhbmQgdmFsdWUgdGhhdCBzZXRzIHZhbHVlcyBmb3IgdGhlIC1tcy1zY3JvbGwtc25hcC10eXBlIGFuZCAtbXMtc2Nyb2xsLXNuYXAtcG9pbnRzLXkgcHJvcGVydGllcy4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii1tcy1zY3JvbGwtdHJhbnNsYXRpb24iLGJyb3dzZXJzOlsiRSIsIklFMTAiXSx2YWx1ZXM6W3tuYW1lOiJub25lIn0se25hbWU6InZlcnRpY2FsLXRvLWhvcml6b250YWwifV0sc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiJub25lIHwgdmVydGljYWwtdG8taG9yaXpvbnRhbCIscmVsZXZhbmNlOjAsZGVzY3JpcHRpb246IkdldHMgb3Igc2V0cyBhIHZhbHVlIHRoYXQgc3BlY2lmaWVzIHdoZXRoZXIgdmVydGljYWwtdG8taG9yaXpvbnRhbCBzY3JvbGwgd2hlZWwgdHJhbnNsYXRpb24gb2NjdXJzIG9uIHRoZSBzcGVjaWZpZWQgZWxlbWVudC4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii1tcy10ZXh0LWFsaWduLWxhc3QiLGJyb3dzZXJzOlsiRSIsIklFOCJdLHZhbHVlczpbe25hbWU6ImF1dG8ifSx7bmFtZToiY2VudGVyIixkZXNjcmlwdGlvbjoiVGhlIGlubGluZSBjb250ZW50cyBhcmUgY2VudGVyZWQgd2l0aGluIHRoZSBsaW5lIGJveC4ifSx7bmFtZToianVzdGlmeSIsZGVzY3JpcHRpb246IlRoZSB0ZXh0IGlzIGp1c3RpZmllZCBhY2NvcmRpbmcgdG8gdGhlIG1ldGhvZCBzcGVjaWZpZWQgYnkgdGhlICd0ZXh0LWp1c3RpZnknIHByb3BlcnR5LiJ9LHtuYW1lOiJsZWZ0IixkZXNjcmlwdGlvbjoiVGhlIGlubGluZSBjb250ZW50cyBhcmUgYWxpZ25lZCB0byB0aGUgbGVmdCBlZGdlIG9mIHRoZSBsaW5lIGJveC4gSW4gdmVydGljYWwgdGV4dCwgJ2xlZnQnIGFsaWducyB0byB0aGUgZWRnZSBvZiB0aGUgbGluZSBib3ggdGhhdCB3b3VsZCBiZSB0aGUgc3RhcnQgZWRnZSBmb3IgbGVmdC10by1yaWdodCB0ZXh0LiJ9LHtuYW1lOiJyaWdodCIsZGVzY3JpcHRpb246IlRoZSBpbmxpbmUgY29udGVudHMgYXJlIGFsaWduZWQgdG8gdGhlIHJpZ2h0IGVkZ2Ugb2YgdGhlIGxpbmUgYm94LiBJbiB2ZXJ0aWNhbCB0ZXh0LCAncmlnaHQnIGFsaWducyB0byB0aGUgZWRnZSBvZiB0aGUgbGluZSBib3ggdGhhdCB3b3VsZCBiZSB0aGUgZW5kIGVkZ2UgZm9yIGxlZnQtdG8tcmlnaHQgdGV4dC4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJEZXNjcmliZXMgaG93IHRoZSBsYXN0IGxpbmUgb2YgYSBibG9jayBvciBhIGxpbmUgcmlnaHQgYmVmb3JlIGEgZm9yY2VkIGxpbmUgYnJlYWsgaXMgYWxpZ25lZCB3aGVuICd0ZXh0LWFsaWduJyBpcyBzZXQgdG8gJ2p1c3RpZnknLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLW1zLXRleHQtYXV0b3NwYWNlIixicm93c2VyczpbIkUiLCJJRTgiXSx2YWx1ZXM6W3tuYW1lOiJpZGVvZ3JhcGgtYWxwaGEiLGRlc2NyaXB0aW9uOiJDcmVhdGVzIDEvNGVtIGV4dHJhIHNwYWNpbmcgYmV0d2VlbiBydW5zIG9mIGlkZW9ncmFwaGljIGxldHRlcnMgYW5kIG5vbi1pZGVvZ3JhcGhpYyBsZXR0ZXJzLCBzdWNoIGFzIExhdGluLWJhc2VkLCBDeXJpbGxpYywgR3JlZWssIEFyYWJpYyBvciBIZWJyZXcuIn0se25hbWU6ImlkZW9ncmFwaC1udW1lcmljIixkZXNjcmlwdGlvbjoiQ3JlYXRlcyAxLzRlbSBleHRyYSBzcGFjaW5nIGJldHdlZW4gcnVucyBvZiBpZGVvZ3JhcGhpYyBsZXR0ZXJzIGFuZCBudW1lcmljIGdseXBocy4ifSx7bmFtZToiaWRlb2dyYXBoLXBhcmVudGhlc2lzIixkZXNjcmlwdGlvbjoiQ3JlYXRlcyBleHRyYSBzcGFjaW5nIGJldHdlZW4gbm9ybWFsIChub24gd2lkZSkgcGFyZW50aGVzaXMgYW5kIGlkZW9ncmFwaHMuIn0se25hbWU6ImlkZW9ncmFwaC1zcGFjZSIsZGVzY3JpcHRpb246IkV4dGVuZHMgdGhlIHdpZHRoIG9mIHRoZSBzcGFjZSBjaGFyYWN0ZXIgd2hpbGUgc3Vycm91bmRlZCBieSBpZGVvZ3JhcGhzLiJ9LHtuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiTm8gZXh0cmEgc3BhY2UgaXMgY3JlYXRlZC4ifSx7bmFtZToicHVuY3R1YXRpb24iLGRlc2NyaXB0aW9uOiJDcmVhdGVzIGV4dHJhIG5vbi1icmVha2luZyBzcGFjaW5nIGFyb3VuZCBwdW5jdHVhdGlvbiBhcyByZXF1aXJlZCBieSBsYW5ndWFnZS1zcGVjaWZpYyB0eXBvZ3JhcGhpYyBjb252ZW50aW9ucy4ifV0sc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiJub25lIHwgaWRlb2dyYXBoLWFscGhhIHwgaWRlb2dyYXBoLW51bWVyaWMgfCBpZGVvZ3JhcGgtcGFyZW50aGVzaXMgfCBpZGVvZ3JhcGgtc3BhY2UiLHJlbGV2YW5jZTowLGRlc2NyaXB0aW9uOiJEZXRlcm1pbmVzIHdoZXRoZXIgb3Igbm90IGEgZnVsbC13aWR0aCBwdW5jdHVhdGlvbiBtYXJrIGNoYXJhY3RlciBzaG91bGQgYmUgdHJpbW1lZCBpZiBpdCBhcHBlYXJzIGF0IHRoZSBiZWdpbm5pbmcgb2YgYSBsaW5lLCBzbyB0aGF0IGl0cyAnaW5rJyBsaW5lcyB1cCB3aXRoIHRoZSBmaXJzdCBnbHlwaCBpbiB0aGUgbGluZSBhYm92ZSBhbmQgYmVsb3cuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiItbXMtdGV4dC1jb21iaW5lLWhvcml6b250YWwiLGJyb3dzZXJzOlsiRSIsIklFMTEiXSx2YWx1ZXM6W3tuYW1lOiJhbGwiLGRlc2NyaXB0aW9uOiJBdHRlbXB0IHRvIHR5cGVzZXQgaG9yaXpvbnRhbGx5IGFsbCBjb25zZWN1dGl2ZSBjaGFyYWN0ZXJzIHdpdGhpbiB0aGUgYm94IHN1Y2ggdGhhdCB0aGV5IHRha2UgdXAgdGhlIHNwYWNlIG9mIGEgc2luZ2xlIGNoYXJhY3RlciB3aXRoaW4gdGhlIHZlcnRpY2FsIGxpbmUgYm94LiJ9LHtuYW1lOiJkaWdpdHMiLGRlc2NyaXB0aW9uOiJBdHRlbXB0IHRvIHR5cGVzZXQgaG9yaXpvbnRhbGx5IGVhY2ggbWF4aW1hbCBzZXF1ZW5jZSBvZiBjb25zZWN1dGl2ZSBBU0NJSSBkaWdpdHMgKFUrMDAzMOKAk1UrMDAzOSkgdGhhdCBoYXMgYXMgbWFueSBvciBmZXdlciBjaGFyYWN0ZXJzIHRoYW4gdGhlIHNwZWNpZmllZCBpbnRlZ2VyIHN1Y2ggdGhhdCBpdCB0YWtlcyB1cCB0aGUgc3BhY2Ugb2YgYSBzaW5nbGUgY2hhcmFjdGVyIHdpdGhpbiB0aGUgdmVydGljYWwgbGluZSBib3guIn0se25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJObyBzcGVjaWFsIHByb2Nlc3NpbmcuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiVGhpcyBwcm9wZXJ0eSBzcGVjaWZpZXMgdGhlIGNvbWJpbmF0aW9uIG9mIG11bHRpcGxlIGNoYXJhY3RlcnMgaW50byB0aGUgc3BhY2Ugb2YgYSBzaW5nbGUgY2hhcmFjdGVyLiIscmVzdHJpY3Rpb25zOlsiZW51bSIsImludGVnZXIiXX0se25hbWU6Ii1tcy10ZXh0LWp1c3RpZnkiLGJyb3dzZXJzOlsiRSIsIklFOCJdLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJUaGUgVUEgZGV0ZXJtaW5lcyB0aGUganVzdGlmaWNhdGlvbiBhbGdvcml0aG0gdG8gZm9sbG93LCBiYXNlZCBvbiBhIGJhbGFuY2UgYmV0d2VlbiBwZXJmb3JtYW5jZSBhbmQgYWRlcXVhdGUgcHJlc2VudGF0aW9uIHF1YWxpdHkuIn0se25hbWU6ImRpc3RyaWJ1dGUiLGRlc2NyaXB0aW9uOiJKdXN0aWZpY2F0aW9uIHByaW1hcmlseSBjaGFuZ2VzIHNwYWNpbmcgYm90aCBhdCB3b3JkIHNlcGFyYXRvcnMgYW5kIGF0IGdyYXBoZW1lIGNsdXN0ZXIgYm91bmRhcmllcyBpbiBhbGwgc2NyaXB0cyBleGNlcHQgdGhvc2UgaW4gdGhlIGNvbm5lY3RlZCBhbmQgY3Vyc2l2ZSBncm91cHMuIFRoaXMgdmFsdWUgaXMgc29tZXRpbWVzIHVzZWQgaW4gZS5nLiBKYXBhbmVzZSwgb2Z0ZW4gd2l0aCB0aGUgJ3RleHQtYWxpZ24tbGFzdCcgcHJvcGVydHkuIn0se25hbWU6ImludGVyLWNsdXN0ZXIiLGRlc2NyaXB0aW9uOiJKdXN0aWZpY2F0aW9uIHByaW1hcmlseSBjaGFuZ2VzIHNwYWNpbmcgYXQgd29yZCBzZXBhcmF0b3JzIGFuZCBhdCBncmFwaGVtZSBjbHVzdGVyIGJvdW5kYXJpZXMgaW4gY2x1c3RlcmVkIHNjcmlwdHMuIFRoaXMgdmFsdWUgaXMgdHlwaWNhbGx5IHVzZWQgZm9yIFNvdXRoZWFzdCBBc2lhbiBzY3JpcHRzIHN1Y2ggYXMgVGhhaS4ifSx7bmFtZToiaW50ZXItaWRlb2dyYXBoIixkZXNjcmlwdGlvbjoiSnVzdGlmaWNhdGlvbiBwcmltYXJpbHkgY2hhbmdlcyBzcGFjaW5nIGF0IHdvcmQgc2VwYXJhdG9ycyBhbmQgYXQgaW50ZXItZ3JhcGhlbWljIGJvdW5kYXJpZXMgaW4gc2NyaXB0cyB0aGF0IHVzZSBubyB3b3JkIHNwYWNlcy4gVGhpcyB2YWx1ZSBpcyB0eXBpY2FsbHkgdXNlZCBmb3IgQ0pLIGxhbmd1YWdlcy4ifSx7bmFtZToiaW50ZXItd29yZCIsZGVzY3JpcHRpb246Ikp1c3RpZmljYXRpb24gcHJpbWFyaWx5IGNoYW5nZXMgc3BhY2luZyBhdCB3b3JkIHNlcGFyYXRvcnMuIFRoaXMgdmFsdWUgaXMgdHlwaWNhbGx5IHVzZWQgZm9yIGxhbmd1YWdlcyB0aGF0IHNlcGFyYXRlIHdvcmRzIHVzaW5nIHNwYWNlcywgbGlrZSBFbmdsaXNoIG9yIChzb21ldGltZXMpIEtvcmVhbi4ifSx7bmFtZToia2FzaGlkYSIsZGVzY3JpcHRpb246Ikp1c3RpZmljYXRpb24gcHJpbWFyaWx5IHN0cmV0Y2hlcyBBcmFiaWMgYW5kIHJlbGF0ZWQgc2NyaXB0cyB0aHJvdWdoIHRoZSB1c2Ugb2Yga2FzaGlkYSBvciBvdGhlciBjYWxsaWdyYXBoaWMgZWxvbmdhdGlvbi4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJTZWxlY3RzIHRoZSBqdXN0aWZpY2F0aW9uIGFsZ29yaXRobSB1c2VkIHdoZW4gJ3RleHQtYWxpZ24nIGlzIHNldCB0byAnanVzdGlmeScuIFRoZSBwcm9wZXJ0eSBhcHBsaWVzIHRvIGJsb2NrIGNvbnRhaW5lcnMsIGJ1dCB0aGUgVUEgbWF5IChidXQgaXMgbm90IHJlcXVpcmVkIHRvKSBhbHNvIHN1cHBvcnQgaXQgb24gaW5saW5lIGVsZW1lbnRzLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLW1zLXRleHQta2FzaGlkYS1zcGFjZSIsYnJvd3NlcnM6WyJFIiwiSUUxMCJdLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiU2V0cyBvciByZXRyaWV2ZXMgdGhlIHJhdGlvIG9mIGthc2hpZGEgZXhwYW5zaW9uIHRvIHdoaXRlIHNwYWNlIGV4cGFuc2lvbiB3aGVuIGp1c3RpZnlpbmcgbGluZXMgb2YgdGV4dCBpbiB0aGUgb2JqZWN0LiIscmVzdHJpY3Rpb25zOlsicGVyY2VudGFnZSJdfSx7bmFtZToiLW1zLXRleHQtb3ZlcmZsb3ciLGJyb3dzZXJzOlsiSUUxMCJdLHZhbHVlczpbe25hbWU6ImNsaXAiLGRlc2NyaXB0aW9uOiJDbGlwIGlubGluZSBjb250ZW50IHRoYXQgb3ZlcmZsb3dzLiBDaGFyYWN0ZXJzIG1heSBiZSBvbmx5IHBhcnRpYWxseSByZW5kZXJlZC4ifSx7bmFtZToiZWxsaXBzaXMiLGRlc2NyaXB0aW9uOiJSZW5kZXIgYW4gZWxsaXBzaXMgY2hhcmFjdGVyIChVKzIwMjYpIHRvIHJlcHJlc2VudCBjbGlwcGVkIGlubGluZSBjb250ZW50LiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlRleHQgY2FuIG92ZXJmbG93IGZvciBleGFtcGxlIHdoZW4gaXQgaXMgcHJldmVudGVkIGZyb20gd3JhcHBpbmciLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii1tcy10ZXh0LXNpemUtYWRqdXN0Iixicm93c2VyczpbIkUiLCJJRTEwIl0sdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IlJlbmRlcmVycyBtdXN0IHVzZSB0aGUgZGVmYXVsdCBzaXplIGFkanVzdG1lbnQgd2hlbiBkaXNwbGF5aW5nIG9uIGEgc21hbGwgZGV2aWNlLiJ9LHtuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiUmVuZGVyZXJzIG11c3Qgbm90IGRvIHNpemUgYWRqdXN0bWVudCB3aGVuIGRpc3BsYXlpbmcgb24gYSBzbWFsbCBkZXZpY2UuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgc2l6ZSBhZGp1c3RtZW50IGZvciBkaXNwbGF5aW5nIHRleHQgY29udGVudCBpbiBtb2JpbGUgYnJvd3NlcnMuIixyZXN0cmljdGlvbnM6WyJlbnVtIiwicGVyY2VudGFnZSJdfSx7bmFtZToiLW1zLXRleHQtdW5kZXJsaW5lLXBvc2l0aW9uIixicm93c2VyczpbIkUiLCJJRTEwIl0sdmFsdWVzOlt7bmFtZToiYWxwaGFiZXRpYyIsZGVzY3JpcHRpb246IlRoZSB1bmRlcmxpbmUgaXMgYWxpZ25lZCB3aXRoIHRoZSBhbHBoYWJldGljIGJhc2VsaW5lLiBJbiB0aGlzIGNhc2UgdGhlIHVuZGVybGluZSBpcyBsaWtlbHkgdG8gY3Jvc3Mgc29tZSBkZXNjZW5kZXJzLiJ9LHtuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiVGhlIHVzZXIgYWdlbnQgbWF5IHVzZSBhbnkgYWxnb3JpdGhtIHRvIGRldGVybWluZSB0aGUgdW5kZXJsaW5lJ3MgcG9zaXRpb24uIEluIGhvcml6b250YWwgbGluZSBsYXlvdXQsIHRoZSB1bmRlcmxpbmUgc2hvdWxkIGJlIGFsaWduZWQgYXMgZm9yIGFscGhhYmV0aWMuIEluIHZlcnRpY2FsIGxpbmUgbGF5b3V0LCBpZiB0aGUgbGFuZ3VhZ2UgaXMgc2V0IHRvIEphcGFuZXNlIG9yIEtvcmVhbiwgdGhlIHVuZGVybGluZSBzaG91bGQgYmUgYWxpZ25lZCBhcyBmb3Igb3Zlci4ifSx7bmFtZToib3ZlciIsZGVzY3JpcHRpb246IlRoZSB1bmRlcmxpbmUgaXMgYWxpZ25lZCB3aXRoIHRoZSAndG9wJyAocmlnaHQgaW4gdmVydGljYWwgd3JpdGluZykgZWRnZSBvZiB0aGUgZWxlbWVudCdzIGVtLWJveC4gSW4gdGhpcyBtb2RlLCBhbiBvdmVybGluZSBhbHNvIHN3aXRjaGVzIHNpZGVzLiJ9LHtuYW1lOiJ1bmRlciIsZGVzY3JpcHRpb246IlRoZSB1bmRlcmxpbmUgaXMgYWxpZ25lZCB3aXRoIHRoZSAnYm90dG9tJyAobGVmdCBpbiB2ZXJ0aWNhbCB3cml0aW5nKSBlZGdlIG9mIHRoZSBlbGVtZW50J3MgZW0tYm94LiBJbiB0aGlzIGNhc2UgdGhlIHVuZGVybGluZSB1c3VhbGx5IGRvZXMgbm90IGNyb3NzIHRoZSBkZXNjZW5kZXJzLiBUaGlzIGlzIHNvbWV0aW1lcyBjYWxsZWQgJ2FjY291bnRpbmcnIHVuZGVybGluZS4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJTZXRzIHRoZSBwb3NpdGlvbiBvZiBhbiB1bmRlcmxpbmUgc3BlY2lmaWVkIG9uIHRoZSBzYW1lIGVsZW1lbnQ6IGl0IGRvZXMgbm90IGFmZmVjdCB1bmRlcmxpbmVzIHNwZWNpZmllZCBieSBhbmNlc3RvciBlbGVtZW50cy5UaGlzIHByb3BlcnR5IGlzIHR5cGljYWxseSB1c2VkIGluIHZlcnRpY2FsIHdyaXRpbmcgY29udGV4dHMgc3VjaCBhcyBpbiBKYXBhbmVzZSBkb2N1bWVudHMgd2hlcmUgaXQgb2Z0ZW4gZGVzaXJlZCB0byBoYXZlIHRoZSB1bmRlcmxpbmUgYXBwZWFyICdvdmVyJyAodG8gdGhlIHJpZ2h0IG9mKSB0aGUgYWZmZWN0ZWQgcnVuIG9mIHRleHQiLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii1tcy10b3VjaC1hY3Rpb24iLGJyb3dzZXJzOlsiSUUxMCJdLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJUaGUgZWxlbWVudCBpcyBhIHBhc3NpdmUgZWxlbWVudCwgd2l0aCBzZXZlcmFsIGV4Y2VwdGlvbnMuIn0se25hbWU6ImRvdWJsZS10YXAtem9vbSIsZGVzY3JpcHRpb246IlRoZSBlbGVtZW50IHdpbGwgem9vbSBvbiBkb3VibGUtdGFwLiJ9LHtuYW1lOiJtYW5pcHVsYXRpb24iLGRlc2NyaXB0aW9uOiJUaGUgZWxlbWVudCBpcyBhIG1hbmlwdWxhdGlvbi1jYXVzaW5nIGVsZW1lbnQuIn0se25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJUaGUgZWxlbWVudCBpcyBhIG1hbmlwdWxhdGlvbi1ibG9ja2luZyBlbGVtZW50LiJ9LHtuYW1lOiJwYW4teCIsZGVzY3JpcHRpb246IlRoZSBlbGVtZW50IHBlcm1pdHMgdG91Y2gtZHJpdmVuIHBhbm5pbmcgb24gdGhlIGhvcml6b250YWwgYXhpcy4gVGhlIHRvdWNoIHBhbiBpcyBwZXJmb3JtZWQgb24gdGhlIG5lYXJlc3QgYW5jZXN0b3Igd2l0aCBob3Jpem9udGFsbHkgc2Nyb2xsYWJsZSBjb250ZW50LiJ9LHtuYW1lOiJwYW4teSIsZGVzY3JpcHRpb246IlRoZSBlbGVtZW50IHBlcm1pdHMgdG91Y2gtZHJpdmVuIHBhbm5pbmcgb24gdGhlIHZlcnRpY2FsIGF4aXMuIFRoZSB0b3VjaCBwYW4gaXMgcGVyZm9ybWVkIG9uIHRoZSBuZWFyZXN0IGFuY2VzdG9yIHdpdGggdmVydGljYWxseSBzY3JvbGxhYmxlIGNvbnRlbnQuIn0se25hbWU6InBpbmNoLXpvb20iLGRlc2NyaXB0aW9uOiJUaGUgZWxlbWVudCBwZXJtaXRzIHBpbmNoLXpvb21pbmcuIFRoZSBwaW5jaC16b29tIGlzIHBlcmZvcm1lZCBvbiB0aGUgbmVhcmVzdCBhbmNlc3RvciB3aXRoIHpvb21hYmxlIGNvbnRlbnQuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiR2V0cyBvciBzZXRzIGEgdmFsdWUgdGhhdCBpbmRpY2F0ZXMgd2hldGhlciBhbmQgaG93IGEgZ2l2ZW4gcmVnaW9uIGNhbiBiZSBtYW5pcHVsYXRlZCBieSB0aGUgdXNlci4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii1tcy10b3VjaC1zZWxlY3QiLGJyb3dzZXJzOlsiRSIsIklFMTAiXSx2YWx1ZXM6W3tuYW1lOiJncmlwcGVycyIsZGVzY3JpcHRpb246IkdyaXBwZXJzIGFyZSBhbHdheXMgb24uIn0se25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJHcmlwcGVycyBhcmUgYWx3YXlzIG9mZi4ifV0sc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiJncmlwcGVycyB8IG5vbmUiLHJlbGV2YW5jZTowLGRlc2NyaXB0aW9uOiJHZXRzIG9yIHNldHMgYSB2YWx1ZSB0aGF0IHRvZ2dsZXMgdGhlICdncmlwcGVyJyB2aXN1YWwgZWxlbWVudHMgdGhhdCBlbmFibGUgdG91Y2ggdGV4dCBzZWxlY3Rpb24uIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiItbXMtdHJhbnNmb3JtIixicm93c2VyczpbIklFOS05Il0sdmFsdWVzOlt7bmFtZToibWF0cml4KCkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSAyRCB0cmFuc2Zvcm1hdGlvbiBpbiB0aGUgZm9ybSBvZiBhIHRyYW5zZm9ybWF0aW9uIG1hdHJpeCBvZiBzaXggdmFsdWVzLiBtYXRyaXgoYSxiLGMsZCxlLGYpIGlzIGVxdWl2YWxlbnQgdG8gYXBwbHlpbmcgdGhlIHRyYW5zZm9ybWF0aW9uIG1hdHJpeCBbYSBiIGMgZCBlIGZdIn0se25hbWU6Im1hdHJpeDNkKCkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSAzRCB0cmFuc2Zvcm1hdGlvbiBhcyBhIDR4NCBob21vZ2VuZW91cyBtYXRyaXggb2YgMTYgdmFsdWVzIGluIGNvbHVtbi1tYWpvciBvcmRlci4ifSx7bmFtZToibm9uZSJ9LHtuYW1lOiJyb3RhdGUoKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIDJEIHJvdGF0aW9uIGJ5IHRoZSBhbmdsZSBzcGVjaWZpZWQgaW4gdGhlIHBhcmFtZXRlciBhYm91dCB0aGUgb3JpZ2luIG9mIHRoZSBlbGVtZW50LCBhcyBkZWZpbmVkIGJ5IHRoZSB0cmFuc2Zvcm0tb3JpZ2luIHByb3BlcnR5LiJ9LHtuYW1lOiJyb3RhdGUzZCgpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgY2xvY2t3aXNlIDNEIHJvdGF0aW9uIGJ5IHRoZSBhbmdsZSBzcGVjaWZpZWQgaW4gbGFzdCBwYXJhbWV0ZXIgYWJvdXQgdGhlIFt4LHksel0gZGlyZWN0aW9uIHZlY3RvciBkZXNjcmliZWQgYnkgdGhlIGZpcnN0IDMgcGFyYW1ldGVycy4ifSx7bmFtZToicm90YXRlWCgnYW5nbGUnKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIGNsb2Nrd2lzZSByb3RhdGlvbiBieSB0aGUgZ2l2ZW4gYW5nbGUgYWJvdXQgdGhlIFggYXhpcy4ifSx7bmFtZToicm90YXRlWSgnYW5nbGUnKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIGNsb2Nrd2lzZSByb3RhdGlvbiBieSB0aGUgZ2l2ZW4gYW5nbGUgYWJvdXQgdGhlIFkgYXhpcy4ifSx7bmFtZToicm90YXRlWignYW5nbGUnKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIGNsb2Nrd2lzZSByb3RhdGlvbiBieSB0aGUgZ2l2ZW4gYW5nbGUgYWJvdXQgdGhlIFogYXhpcy4ifSx7bmFtZToic2NhbGUoKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIDJEIHNjYWxlIG9wZXJhdGlvbiBieSB0aGUgW3N4LHN5XSBzY2FsaW5nIHZlY3RvciBkZXNjcmliZWQgYnkgdGhlIDIgcGFyYW1ldGVycy4gSWYgdGhlIHNlY29uZCBwYXJhbWV0ZXIgaXMgbm90IHByb3ZpZGVkLCBpdCBpcyB0YWtlcyBhIHZhbHVlIGVxdWFsIHRvIHRoZSBmaXJzdC4ifSx7bmFtZToic2NhbGUzZCgpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgM0Qgc2NhbGUgb3BlcmF0aW9uIGJ5IHRoZSBbc3gsc3ksc3pdIHNjYWxpbmcgdmVjdG9yIGRlc2NyaWJlZCBieSB0aGUgMyBwYXJhbWV0ZXJzLiJ9LHtuYW1lOiJzY2FsZVgoKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIHNjYWxlIG9wZXJhdGlvbiB1c2luZyB0aGUgW3N4LDFdIHNjYWxpbmcgdmVjdG9yLCB3aGVyZSBzeCBpcyBnaXZlbiBhcyB0aGUgcGFyYW1ldGVyLiJ9LHtuYW1lOiJzY2FsZVkoKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIHNjYWxlIG9wZXJhdGlvbiB1c2luZyB0aGUgW3N5LDFdIHNjYWxpbmcgdmVjdG9yLCB3aGVyZSBzeSBpcyBnaXZlbiBhcyB0aGUgcGFyYW1ldGVyLiJ9LHtuYW1lOiJzY2FsZVooKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIHNjYWxlIG9wZXJhdGlvbiB1c2luZyB0aGUgWzEsMSxzel0gc2NhbGluZyB2ZWN0b3IsIHdoZXJlIHN6IGlzIGdpdmVuIGFzIHRoZSBwYXJhbWV0ZXIuIn0se25hbWU6InNrZXcoKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIHNrZXcgdHJhbnNmb3JtYXRpb24gYWxvbmcgdGhlIFggYW5kIFkgYXhlcy4gVGhlIGZpcnN0IGFuZ2xlIHBhcmFtZXRlciBzcGVjaWZpZXMgdGhlIHNrZXcgb24gdGhlIFggYXhpcy4gVGhlIHNlY29uZCBhbmdsZSBwYXJhbWV0ZXIgc3BlY2lmaWVzIHRoZSBza2V3IG9uIHRoZSBZIGF4aXMuIElmIHRoZSBzZWNvbmQgcGFyYW1ldGVyIGlzIG5vdCBnaXZlbiB0aGVuIGEgdmFsdWUgb2YgMCBpcyB1c2VkIGZvciB0aGUgWSBhbmdsZSAoaWU6IG5vIHNrZXcgb24gdGhlIFkgYXhpcykuIn0se25hbWU6InNrZXdYKCkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSBza2V3IHRyYW5zZm9ybWF0aW9uIGFsb25nIHRoZSBYIGF4aXMgYnkgdGhlIGdpdmVuIGFuZ2xlLiJ9LHtuYW1lOiJza2V3WSgpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgc2tldyB0cmFuc2Zvcm1hdGlvbiBhbG9uZyB0aGUgWSBheGlzIGJ5IHRoZSBnaXZlbiBhbmdsZS4ifSx7bmFtZToidHJhbnNsYXRlKCkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSAyRCB0cmFuc2xhdGlvbiBieSB0aGUgdmVjdG9yIFt0eCwgdHldLCB3aGVyZSB0eCBpcyB0aGUgZmlyc3QgdHJhbnNsYXRpb24tdmFsdWUgcGFyYW1ldGVyIGFuZCB0eSBpcyB0aGUgb3B0aW9uYWwgc2Vjb25kIHRyYW5zbGF0aW9uLXZhbHVlIHBhcmFtZXRlci4ifSx7bmFtZToidHJhbnNsYXRlM2QoKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIDNEIHRyYW5zbGF0aW9uIGJ5IHRoZSB2ZWN0b3IgW3R4LHR5LHR6XSwgd2l0aCB0eCwgdHkgYW5kIHR6IGJlaW5nIHRoZSBmaXJzdCwgc2Vjb25kIGFuZCB0aGlyZCB0cmFuc2xhdGlvbi12YWx1ZSBwYXJhbWV0ZXJzIHJlc3BlY3RpdmVseS4ifSx7bmFtZToidHJhbnNsYXRlWCgpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgdHJhbnNsYXRpb24gYnkgdGhlIGdpdmVuIGFtb3VudCBpbiB0aGUgWCBkaXJlY3Rpb24uIn0se25hbWU6InRyYW5zbGF0ZVkoKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIHRyYW5zbGF0aW9uIGJ5IHRoZSBnaXZlbiBhbW91bnQgaW4gdGhlIFkgZGlyZWN0aW9uLiJ9LHtuYW1lOiJ0cmFuc2xhdGVaKCkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSB0cmFuc2xhdGlvbiBieSB0aGUgZ2l2ZW4gYW1vdW50IGluIHRoZSBaIGRpcmVjdGlvbi4gTm90ZSB0aGF0IHBlcmNlbnRhZ2UgdmFsdWVzIGFyZSBub3QgYWxsb3dlZCBpbiB0aGUgdHJhbnNsYXRlWiB0cmFuc2xhdGlvbi12YWx1ZSwgYW5kIGlmIHByZXNlbnQgYXJlIGV2YWx1YXRlZCBhcyAwLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkEgdHdvLWRpbWVuc2lvbmFsIHRyYW5zZm9ybWF0aW9uIGlzIGFwcGxpZWQgdG8gYW4gZWxlbWVudCB0aHJvdWdoIHRoZSAndHJhbnNmb3JtJyBwcm9wZXJ0eS4gVGhpcyBwcm9wZXJ0eSBjb250YWlucyBhIGxpc3Qgb2YgdHJhbnNmb3JtIGZ1bmN0aW9ucyBzaW1pbGFyIHRvIHRob3NlIGFsbG93ZWQgYnkgU1ZHLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLW1zLXRyYW5zZm9ybS1vcmlnaW4iLGJyb3dzZXJzOlsiSUU5LTkiXSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkVzdGFibGlzaGVzIHRoZSBvcmlnaW4gb2YgdHJhbnNmb3JtYXRpb24gZm9yIGFuIGVsZW1lbnQuIixyZXN0cmljdGlvbnM6WyJwb3NpdGlvbiIsImxlbmd0aCIsInBlcmNlbnRhZ2UiXX0se25hbWU6Ii1tcy10cmFuc2Zvcm0tb3JpZ2luLXgiLGJyb3dzZXJzOlsiSUUxMCJdLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiVGhlIHggY29vcmRpbmF0ZSBvZiB0aGUgb3JpZ2luIGZvciB0cmFuc2Zvcm1zIGFwcGxpZWQgdG8gYW4gZWxlbWVudCB3aXRoIHJlc3BlY3QgdG8gaXRzIGJvcmRlciBib3guIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJwZXJjZW50YWdlIl19LHtuYW1lOiItbXMtdHJhbnNmb3JtLW9yaWdpbi15Iixicm93c2VyczpbIklFMTAiXSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlRoZSB5IGNvb3JkaW5hdGUgb2YgdGhlIG9yaWdpbiBmb3IgdHJhbnNmb3JtcyBhcHBsaWVkIHRvIGFuIGVsZW1lbnQgd2l0aCByZXNwZWN0IHRvIGl0cyBib3JkZXIgYm94LiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwicGVyY2VudGFnZSJdfSx7bmFtZToiLW1zLXRyYW5zZm9ybS1vcmlnaW4teiIsYnJvd3NlcnM6WyJJRTEwIl0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJUaGUgeiBjb29yZGluYXRlIG9mIHRoZSBvcmlnaW4gZm9yIHRyYW5zZm9ybXMgYXBwbGllZCB0byBhbiBlbGVtZW50IHdpdGggcmVzcGVjdCB0byBpdHMgYm9yZGVyIGJveC4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsInBlcmNlbnRhZ2UiXX0se25hbWU6Ii1tcy11c2VyLXNlbGVjdCIsYnJvd3NlcnM6WyJFIiwiSUUxMCJdLHZhbHVlczpbe25hbWU6ImVsZW1lbnQifSx7bmFtZToibm9uZSJ9LHtuYW1lOiJ0ZXh0In1dLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoibm9uZSB8IGVsZW1lbnQgfCB0ZXh0IixyZWxldmFuY2U6MCxkZXNjcmlwdGlvbjoiQ29udHJvbHMgdGhlIGFwcGVhcmFuY2Ugb2Ygc2VsZWN0aW9uLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLW1zLXdvcmQtYnJlYWsiLGJyb3dzZXJzOlsiSUU4Il0sdmFsdWVzOlt7bmFtZToiYnJlYWstYWxsIixkZXNjcmlwdGlvbjoiTGluZXMgbWF5IGJyZWFrIGJldHdlZW4gYW55IHR3byBncmFwaGVtZSBjbHVzdGVycyBmb3Igbm9uLUNKSyBzY3JpcHRzLiJ9LHtuYW1lOiJrZWVwLWFsbCIsZGVzY3JpcHRpb246IkJsb2NrIGNoYXJhY3RlcnMgY2FuIG5vIGxvbmdlciBjcmVhdGUgaW1wbGllZCBicmVhayBwb2ludHMuIn0se25hbWU6Im5vcm1hbCIsZGVzY3JpcHRpb246IkJyZWFrcyBub24tQ0pLIHNjcmlwdHMgYWNjb3JkaW5nIHRvIHRoZWlyIG93biBydWxlcy4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgbGluZSBicmVhayBvcHBvcnR1bml0aWVzIGZvciBub24tQ0pLIHNjcmlwdHMuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiItbXMtd29yZC13cmFwIixicm93c2VyczpbIklFOCJdLHZhbHVlczpbe25hbWU6ImJyZWFrLXdvcmQiLGRlc2NyaXB0aW9uOiJBbiB1bmJyZWFrYWJsZSAnd29yZCcgbWF5IGJlIGJyb2tlbiBhdCBhbiBhcmJpdHJhcnkgcG9pbnQgaWYgdGhlcmUgYXJlIG5vIG90aGVyd2lzZS1hY2NlcHRhYmxlIGJyZWFrIHBvaW50cyBpbiB0aGUgbGluZS4ifSx7bmFtZToibm9ybWFsIixkZXNjcmlwdGlvbjoiTGluZXMgbWF5IGJyZWFrIG9ubHkgYXQgYWxsb3dlZCBicmVhayBwb2ludHMuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHdoZXRoZXIgdGhlIFVBIG1heSBicmVhayB3aXRoaW4gYSB3b3JkIHRvIHByZXZlbnQgb3ZlcmZsb3cgd2hlbiBhbiBvdGhlcndpc2UtdW5icmVha2FibGUgc3RyaW5nIGlzIHRvbyBsb25nIHRvIGZpdC4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii1tcy13cmFwLWZsb3ciLGJyb3dzZXJzOlsiRSIsIklFMTAiXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiRm9yIGZsb2F0cyBhbiBleGNsdXNpb24gaXMgY3JlYXRlZCwgZm9yIGFsbCBvdGhlciBlbGVtZW50cyBhbiBleGNsdXNpb24gaXMgbm90IGNyZWF0ZWQuIn0se25hbWU6ImJvdGgiLGRlc2NyaXB0aW9uOiJJbmxpbmUgZmxvdyBjb250ZW50IGNhbiBmbG93IG9uIGFsbCBzaWRlcyBvZiB0aGUgZXhjbHVzaW9uLiJ9LHtuYW1lOiJjbGVhciIsZGVzY3JpcHRpb246IklubGluZSBmbG93IGNvbnRlbnQgY2FuIG9ubHkgd3JhcCBvbiB0b3AgYW5kIGJvdHRvbSBvZiB0aGUgZXhjbHVzaW9uIGFuZCBtdXN0IGxlYXZlIHRoZSBhcmVhcyB0byB0aGUgc3RhcnQgYW5kIGVuZCBlZGdlcyBvZiB0aGUgZXhjbHVzaW9uIGJveCBlbXB0eS4ifSx7bmFtZToiZW5kIixkZXNjcmlwdGlvbjoiSW5saW5lIGZsb3cgY29udGVudCBjYW4gd3JhcCBvbiB0aGUgZW5kIHNpZGUgb2YgdGhlIGV4Y2x1c2lvbiBhcmVhIGJ1dCBtdXN0IGxlYXZlIHRoZSBhcmVhIHRvIHRoZSBzdGFydCBlZGdlIG9mIHRoZSBleGNsdXNpb24gYXJlYSBlbXB0eS4ifSx7bmFtZToibWF4aW11bSIsZGVzY3JpcHRpb246IklubGluZSBmbG93IGNvbnRlbnQgY2FuIHdyYXAgb24gdGhlIHNpZGUgb2YgdGhlIGV4Y2x1c2lvbiB3aXRoIHRoZSBsYXJnZXN0IGF2YWlsYWJsZSBzcGFjZSBmb3IgdGhlIGdpdmVuIGxpbmUsIGFuZCBtdXN0IGxlYXZlIHRoZSBvdGhlciBzaWRlIG9mIHRoZSBleGNsdXNpb24gZW1wdHkuIn0se25hbWU6Im1pbmltdW0iLGRlc2NyaXB0aW9uOiJJbmxpbmUgZmxvdyBjb250ZW50IGNhbiBmbG93IGFyb3VuZCB0aGUgZWRnZSBvZiB0aGUgZXhjbHVzaW9uIHdpdGggdGhlIHNtYWxsZXN0IGF2YWlsYWJsZSBzcGFjZSB3aXRoaW4gdGhlIGZsb3cgY29udGVudOKAmXMgY29udGFpbmluZyBibG9jaywgYW5kIG11c3QgbGVhdmUgdGhlIG90aGVyIGVkZ2Ugb2YgdGhlIGV4Y2x1c2lvbiBlbXB0eS4ifSx7bmFtZToic3RhcnQiLGRlc2NyaXB0aW9uOiJJbmxpbmUgZmxvdyBjb250ZW50IGNhbiB3cmFwIG9uIHRoZSBzdGFydCBlZGdlIG9mIHRoZSBleGNsdXNpb24gYXJlYSBidXQgbXVzdCBsZWF2ZSB0aGUgYXJlYSB0byBlbmQgZWRnZSBvZiB0aGUgZXhjbHVzaW9uIGFyZWEgZW1wdHkuIn1dLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoiYXV0byB8IGJvdGggfCBzdGFydCB8IGVuZCB8IG1heGltdW0gfCBjbGVhciIscmVsZXZhbmNlOjAsZGVzY3JpcHRpb246IkFuIGVsZW1lbnQgYmVjb21lcyBhbiBleGNsdXNpb24gd2hlbiBpdHMgJ3dyYXAtZmxvdycgcHJvcGVydHkgaGFzIGEgY29tcHV0ZWQgdmFsdWUgb3RoZXIgdGhhbiAnYXV0bycuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiItbXMtd3JhcC1tYXJnaW4iLGJyb3dzZXJzOlsiRSIsIklFMTAiXSxzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6IjxsZW5ndGg+IixyZWxldmFuY2U6MCxkZXNjcmlwdGlvbjoiR2V0cyBvciBzZXRzIGEgdmFsdWUgdGhhdCBpcyB1c2VkIHRvIG9mZnNldCB0aGUgaW5uZXIgd3JhcCBzaGFwZSBmcm9tIG90aGVyIHNoYXBlcy4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsInBlcmNlbnRhZ2UiXX0se25hbWU6Ii1tcy13cmFwLXRocm91Z2giLGJyb3dzZXJzOlsiRSIsIklFMTAiXSx2YWx1ZXM6W3tuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiVGhlIGV4Y2x1c2lvbiBlbGVtZW50IGRvZXMgbm90IGluaGVyaXQgaXRzIHBhcmVudCBub2RlJ3Mgd3JhcHBpbmcgY29udGV4dC4gSXRzIGRlc2NlbmRhbnRzIGFyZSBvbmx5IHN1YmplY3QgdG8gZXhjbHVzaW9uIHNoYXBlcyBkZWZpbmVkIGluc2lkZSB0aGUgZWxlbWVudC4ifSx7bmFtZToid3JhcCIsZGVzY3JpcHRpb246IlRoZSBleGNsdXNpb24gZWxlbWVudCBpbmhlcml0cyBpdHMgcGFyZW50IG5vZGUncyB3cmFwcGluZyBjb250ZXh0LiBJdHMgZGVzY2VuZGFudCBpbmxpbmUgY29udGVudCB3cmFwcyBhcm91bmQgZXhjbHVzaW9ucyBkZWZpbmVkIG91dHNpZGUgdGhlIGVsZW1lbnQuIn1dLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoid3JhcCB8IG5vbmUiLHJlbGV2YW5jZTowLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgaWYgYW4gZWxlbWVudCBpbmhlcml0cyBpdHMgcGFyZW50IHdyYXBwaW5nIGNvbnRleHQuIEluIG90aGVyIHdvcmRzIGlmIGl0IGlzIHN1YmplY3QgdG8gdGhlIGV4Y2x1c2lvbnMgZGVmaW5lZCBvdXRzaWRlIHRoZSBlbGVtZW50LiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLW1zLXdyaXRpbmctbW9kZSIsYnJvd3NlcnM6WyJJRTgiXSx2YWx1ZXM6W3tuYW1lOiJidC1sciJ9LHtuYW1lOiJidC1ybCJ9LHtuYW1lOiJsci1idCJ9LHtuYW1lOiJsci10YiJ9LHtuYW1lOiJybC1idCJ9LHtuYW1lOiJybC10YiJ9LHtuYW1lOiJ0Yi1sciJ9LHtuYW1lOiJ0Yi1ybCJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlNob3J0aGFuZCBwcm9wZXJ0eSBmb3IgYm90aCAnZGlyZWN0aW9uJyBhbmQgJ2Jsb2NrLXByb2dyZXNzaW9uJy4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii1tcy16b29tIixicm93c2VyczpbIklFOCJdLHZhbHVlczpbe25hbWU6Im5vcm1hbCJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlNldHMgb3IgcmV0cmlldmVzIHRoZSBtYWduaWZpY2F0aW9uIHNjYWxlIG9mIHRoZSBvYmplY3QuIixyZXN0cmljdGlvbnM6WyJlbnVtIiwiaW50ZWdlciIsIm51bWJlciIsInBlcmNlbnRhZ2UiXX0se25hbWU6Ii1tcy16b29tLWFuaW1hdGlvbiIsYnJvd3NlcnM6WyJJRTEwIl0sdmFsdWVzOlt7bmFtZToiZGVmYXVsdCJ9LHtuYW1lOiJub25lIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiR2V0cyBvciBzZXRzIGEgdmFsdWUgdGhhdCBpbmRpY2F0ZXMgd2hldGhlciBhbiBhbmltYXRpb24gaXMgdXNlZCB3aGVuIHpvb21pbmcuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJuYXYtZG93biIsYnJvd3NlcnM6WyJPOS41Il0sdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IlRoZSB1c2VyIGFnZW50IGF1dG9tYXRpY2FsbHkgZGV0ZXJtaW5lcyB3aGljaCBlbGVtZW50IHRvIG5hdmlnYXRlIHRoZSBmb2N1cyB0byBpbiByZXNwb25zZSB0byBkaXJlY3Rpb25hbCBuYXZpZ2F0aW9uYWwgaW5wdXQuIn0se25hbWU6ImN1cnJlbnQiLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgdGhhdCB0aGUgdXNlciBhZ2VudCBzaG91bGQgdGFyZ2V0IHRoZSBmcmFtZSB0aGF0IHRoZSBlbGVtZW50IGlzIGluLiJ9LHtuYW1lOiJyb290IixkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHRoYXQgdGhlIHVzZXIgYWdlbnQgc2hvdWxkIHRhcmdldCB0aGUgZnVsbCB3aW5kb3cuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiUHJvdmlkZXMgYW4gd2F5IHRvIGNvbnRyb2wgZGlyZWN0aW9uYWwgZm9jdXMgbmF2aWdhdGlvbi4iLHJlc3RyaWN0aW9uczpbImVudW0iLCJpZGVudGlmaWVyIiwic3RyaW5nIl19LHtuYW1lOiJuYXYtaW5kZXgiLGJyb3dzZXJzOlsiTzkuNSJdLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJUaGUgZWxlbWVudCdzIHNlcXVlbnRpYWwgbmF2aWdhdGlvbiBvcmRlciBpcyBhc3NpZ25lZCBhdXRvbWF0aWNhbGx5IGJ5IHRoZSB1c2VyIGFnZW50LiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlByb3ZpZGVzIGFuIGlucHV0LW1ldGhvZC1uZXV0cmFsIHdheSBvZiBzcGVjaWZ5aW5nIHRoZSBzZXF1ZW50aWFsIG5hdmlnYXRpb24gb3JkZXIgKGFsc28ga25vd24gYXMgJ3RhYmJpbmcgb3JkZXInKS4iLHJlc3RyaWN0aW9uczpbIm51bWJlciJdfSx7bmFtZToibmF2LWxlZnQiLGJyb3dzZXJzOlsiTzkuNSJdLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJUaGUgdXNlciBhZ2VudCBhdXRvbWF0aWNhbGx5IGRldGVybWluZXMgd2hpY2ggZWxlbWVudCB0byBuYXZpZ2F0ZSB0aGUgZm9jdXMgdG8gaW4gcmVzcG9uc2UgdG8gZGlyZWN0aW9uYWwgbmF2aWdhdGlvbmFsIGlucHV0LiJ9LHtuYW1lOiJjdXJyZW50IixkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHRoYXQgdGhlIHVzZXIgYWdlbnQgc2hvdWxkIHRhcmdldCB0aGUgZnJhbWUgdGhhdCB0aGUgZWxlbWVudCBpcyBpbi4ifSx7bmFtZToicm9vdCIsZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGF0IHRoZSB1c2VyIGFnZW50IHNob3VsZCB0YXJnZXQgdGhlIGZ1bGwgd2luZG93LiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlByb3ZpZGVzIGFuIHdheSB0byBjb250cm9sIGRpcmVjdGlvbmFsIGZvY3VzIG5hdmlnYXRpb24uIixyZXN0cmljdGlvbnM6WyJlbnVtIiwiaWRlbnRpZmllciIsInN0cmluZyJdfSx7bmFtZToibmF2LXJpZ2h0Iixicm93c2VyczpbIk85LjUiXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiVGhlIHVzZXIgYWdlbnQgYXV0b21hdGljYWxseSBkZXRlcm1pbmVzIHdoaWNoIGVsZW1lbnQgdG8gbmF2aWdhdGUgdGhlIGZvY3VzIHRvIGluIHJlc3BvbnNlIHRvIGRpcmVjdGlvbmFsIG5hdmlnYXRpb25hbCBpbnB1dC4ifSx7bmFtZToiY3VycmVudCIsZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGF0IHRoZSB1c2VyIGFnZW50IHNob3VsZCB0YXJnZXQgdGhlIGZyYW1lIHRoYXQgdGhlIGVsZW1lbnQgaXMgaW4uIn0se25hbWU6InJvb3QiLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgdGhhdCB0aGUgdXNlciBhZ2VudCBzaG91bGQgdGFyZ2V0IHRoZSBmdWxsIHdpbmRvdy4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJQcm92aWRlcyBhbiB3YXkgdG8gY29udHJvbCBkaXJlY3Rpb25hbCBmb2N1cyBuYXZpZ2F0aW9uLiIscmVzdHJpY3Rpb25zOlsiZW51bSIsImlkZW50aWZpZXIiLCJzdHJpbmciXX0se25hbWU6Im5hdi11cCIsYnJvd3NlcnM6WyJPOS41Il0sdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IlRoZSB1c2VyIGFnZW50IGF1dG9tYXRpY2FsbHkgZGV0ZXJtaW5lcyB3aGljaCBlbGVtZW50IHRvIG5hdmlnYXRlIHRoZSBmb2N1cyB0byBpbiByZXNwb25zZSB0byBkaXJlY3Rpb25hbCBuYXZpZ2F0aW9uYWwgaW5wdXQuIn0se25hbWU6ImN1cnJlbnQiLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgdGhhdCB0aGUgdXNlciBhZ2VudCBzaG91bGQgdGFyZ2V0IHRoZSBmcmFtZSB0aGF0IHRoZSBlbGVtZW50IGlzIGluLiJ9LHtuYW1lOiJyb290IixkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHRoYXQgdGhlIHVzZXIgYWdlbnQgc2hvdWxkIHRhcmdldCB0aGUgZnVsbCB3aW5kb3cuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiUHJvdmlkZXMgYW4gd2F5IHRvIGNvbnRyb2wgZGlyZWN0aW9uYWwgZm9jdXMgbmF2aWdhdGlvbi4iLHJlc3RyaWN0aW9uczpbImVudW0iLCJpZGVudGlmaWVyIiwic3RyaW5nIl19LHtuYW1lOiJuZWdhdGl2ZSIsYnJvd3NlcnM6WyJGRjMzIl0sc3ludGF4OiI8c3ltYm9sPiA8c3ltYm9sPj8iLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiQGNvdW50ZXItc3R5bGUgZGVzY3JpcHRvci4gRGVmaW5lcyBob3cgdG8gYWx0ZXIgdGhlIHJlcHJlc2VudGF0aW9uIHdoZW4gdGhlIGNvdW50ZXIgdmFsdWUgaXMgbmVnYXRpdmUuIixyZXN0cmljdGlvbnM6WyJpbWFnZSIsImlkZW50aWZpZXIiLCJzdHJpbmciXX0se25hbWU6Ii1vLWFuaW1hdGlvbiIsYnJvd3NlcnM6WyJPMTIiXSx2YWx1ZXM6W3tuYW1lOiJhbHRlcm5hdGUiLGRlc2NyaXB0aW9uOiJUaGUgYW5pbWF0aW9uIGN5Y2xlIGl0ZXJhdGlvbnMgdGhhdCBhcmUgb2RkIGNvdW50cyBhcmUgcGxheWVkIGluIHRoZSBub3JtYWwgZGlyZWN0aW9uLCBhbmQgdGhlIGFuaW1hdGlvbiBjeWNsZSBpdGVyYXRpb25zIHRoYXQgYXJlIGV2ZW4gY291bnRzIGFyZSBwbGF5ZWQgaW4gYSByZXZlcnNlIGRpcmVjdGlvbi4ifSx7bmFtZToiYWx0ZXJuYXRlLXJldmVyc2UiLGRlc2NyaXB0aW9uOiJUaGUgYW5pbWF0aW9uIGN5Y2xlIGl0ZXJhdGlvbnMgdGhhdCBhcmUgb2RkIGNvdW50cyBhcmUgcGxheWVkIGluIHRoZSByZXZlcnNlIGRpcmVjdGlvbiwgYW5kIHRoZSBhbmltYXRpb24gY3ljbGUgaXRlcmF0aW9ucyB0aGF0IGFyZSBldmVuIGNvdW50cyBhcmUgcGxheWVkIGluIGEgbm9ybWFsIGRpcmVjdGlvbi4ifSx7bmFtZToiYmFja3dhcmRzIixkZXNjcmlwdGlvbjoiVGhlIGJlZ2lubmluZyBwcm9wZXJ0eSB2YWx1ZSAoYXMgZGVmaW5lZCBpbiB0aGUgZmlyc3QgQGtleWZyYW1lcyBhdC1ydWxlKSBpcyBhcHBsaWVkIGJlZm9yZSB0aGUgYW5pbWF0aW9uIGlzIGRpc3BsYXllZCwgZHVyaW5nIHRoZSBwZXJpb2QgZGVmaW5lZCBieSAnYW5pbWF0aW9uLWRlbGF5Jy4ifSx7bmFtZToiYm90aCIsZGVzY3JpcHRpb246IkJvdGggZm9yd2FyZHMgYW5kIGJhY2t3YXJkcyBmaWxsIG1vZGVzIGFyZSBhcHBsaWVkLiJ9LHtuYW1lOiJmb3J3YXJkcyIsZGVzY3JpcHRpb246IlRoZSBmaW5hbCBwcm9wZXJ0eSB2YWx1ZSAoYXMgZGVmaW5lZCBpbiB0aGUgbGFzdCBAa2V5ZnJhbWVzIGF0LXJ1bGUpIGlzIG1haW50YWluZWQgYWZ0ZXIgdGhlIGFuaW1hdGlvbiBjb21wbGV0ZXMuIn0se25hbWU6ImluZmluaXRlIixkZXNjcmlwdGlvbjoiQ2F1c2VzIHRoZSBhbmltYXRpb24gdG8gcmVwZWF0IGZvcmV2ZXIuIn0se25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJObyBhbmltYXRpb24gaXMgcGVyZm9ybWVkIn0se25hbWU6Im5vcm1hbCIsZGVzY3JpcHRpb246Ik5vcm1hbCBwbGF5YmFjay4ifSx7bmFtZToicmV2ZXJzZSIsZGVzY3JpcHRpb246IkFsbCBpdGVyYXRpb25zIG9mIHRoZSBhbmltYXRpb24gYXJlIHBsYXllZCBpbiB0aGUgcmV2ZXJzZSBkaXJlY3Rpb24gZnJvbSB0aGUgd2F5IHRoZXkgd2VyZSBzcGVjaWZpZWQuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiU2hvcnRoYW5kIHByb3BlcnR5IGNvbWJpbmVzIHNpeCBvZiB0aGUgYW5pbWF0aW9uIHByb3BlcnRpZXMgaW50byBhIHNpbmdsZSBwcm9wZXJ0eS4iLHJlc3RyaWN0aW9uczpbInRpbWUiLCJlbnVtIiwidGltaW5nLWZ1bmN0aW9uIiwiaWRlbnRpZmllciIsIm51bWJlciJdfSx7bmFtZToiLW8tYW5pbWF0aW9uLWRlbGF5Iixicm93c2VyczpbIk8xMiJdLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiRGVmaW5lcyB3aGVuIHRoZSBhbmltYXRpb24gd2lsbCBzdGFydC4iLHJlc3RyaWN0aW9uczpbInRpbWUiXX0se25hbWU6Ii1vLWFuaW1hdGlvbi1kaXJlY3Rpb24iLGJyb3dzZXJzOlsiTzEyIl0sdmFsdWVzOlt7bmFtZToiYWx0ZXJuYXRlIixkZXNjcmlwdGlvbjoiVGhlIGFuaW1hdGlvbiBjeWNsZSBpdGVyYXRpb25zIHRoYXQgYXJlIG9kZCBjb3VudHMgYXJlIHBsYXllZCBpbiB0aGUgbm9ybWFsIGRpcmVjdGlvbiwgYW5kIHRoZSBhbmltYXRpb24gY3ljbGUgaXRlcmF0aW9ucyB0aGF0IGFyZSBldmVuIGNvdW50cyBhcmUgcGxheWVkIGluIGEgcmV2ZXJzZSBkaXJlY3Rpb24uIn0se25hbWU6ImFsdGVybmF0ZS1yZXZlcnNlIixkZXNjcmlwdGlvbjoiVGhlIGFuaW1hdGlvbiBjeWNsZSBpdGVyYXRpb25zIHRoYXQgYXJlIG9kZCBjb3VudHMgYXJlIHBsYXllZCBpbiB0aGUgcmV2ZXJzZSBkaXJlY3Rpb24sIGFuZCB0aGUgYW5pbWF0aW9uIGN5Y2xlIGl0ZXJhdGlvbnMgdGhhdCBhcmUgZXZlbiBjb3VudHMgYXJlIHBsYXllZCBpbiBhIG5vcm1hbCBkaXJlY3Rpb24uIn0se25hbWU6Im5vcm1hbCIsZGVzY3JpcHRpb246Ik5vcm1hbCBwbGF5YmFjay4ifSx7bmFtZToicmV2ZXJzZSIsZGVzY3JpcHRpb246IkFsbCBpdGVyYXRpb25zIG9mIHRoZSBhbmltYXRpb24gYXJlIHBsYXllZCBpbiB0aGUgcmV2ZXJzZSBkaXJlY3Rpb24gZnJvbSB0aGUgd2F5IHRoZXkgd2VyZSBzcGVjaWZpZWQuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiRGVmaW5lcyB3aGV0aGVyIG9yIG5vdCB0aGUgYW5pbWF0aW9uIHNob3VsZCBwbGF5IGluIHJldmVyc2Ugb24gYWx0ZXJuYXRlIGN5Y2xlcy4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii1vLWFuaW1hdGlvbi1kdXJhdGlvbiIsYnJvd3NlcnM6WyJPMTIiXSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkRlZmluZXMgdGhlIGxlbmd0aCBvZiB0aW1lIHRoYXQgYW4gYW5pbWF0aW9uIHRha2VzIHRvIGNvbXBsZXRlIG9uZSBjeWNsZS4iLHJlc3RyaWN0aW9uczpbInRpbWUiXX0se25hbWU6Ii1vLWFuaW1hdGlvbi1maWxsLW1vZGUiLGJyb3dzZXJzOlsiTzEyIl0sdmFsdWVzOlt7bmFtZToiYmFja3dhcmRzIixkZXNjcmlwdGlvbjoiVGhlIGJlZ2lubmluZyBwcm9wZXJ0eSB2YWx1ZSAoYXMgZGVmaW5lZCBpbiB0aGUgZmlyc3QgQGtleWZyYW1lcyBhdC1ydWxlKSBpcyBhcHBsaWVkIGJlZm9yZSB0aGUgYW5pbWF0aW9uIGlzIGRpc3BsYXllZCwgZHVyaW5nIHRoZSBwZXJpb2QgZGVmaW5lZCBieSAnYW5pbWF0aW9uLWRlbGF5Jy4ifSx7bmFtZToiYm90aCIsZGVzY3JpcHRpb246IkJvdGggZm9yd2FyZHMgYW5kIGJhY2t3YXJkcyBmaWxsIG1vZGVzIGFyZSBhcHBsaWVkLiJ9LHtuYW1lOiJmb3J3YXJkcyIsZGVzY3JpcHRpb246IlRoZSBmaW5hbCBwcm9wZXJ0eSB2YWx1ZSAoYXMgZGVmaW5lZCBpbiB0aGUgbGFzdCBAa2V5ZnJhbWVzIGF0LXJ1bGUpIGlzIG1haW50YWluZWQgYWZ0ZXIgdGhlIGFuaW1hdGlvbiBjb21wbGV0ZXMuIn0se25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJUaGVyZSBpcyBubyBjaGFuZ2UgdG8gdGhlIHByb3BlcnR5IHZhbHVlIGJldHdlZW4gdGhlIHRpbWUgdGhlIGFuaW1hdGlvbiBpcyBhcHBsaWVkIGFuZCB0aGUgdGltZSB0aGUgYW5pbWF0aW9uIGJlZ2lucyBwbGF5aW5nIG9yIGFmdGVyIHRoZSBhbmltYXRpb24gY29tcGxldGVzLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkRlZmluZXMgd2hhdCB2YWx1ZXMgYXJlIGFwcGxpZWQgYnkgdGhlIGFuaW1hdGlvbiBvdXRzaWRlIHRoZSB0aW1lIGl0IGlzIGV4ZWN1dGluZy4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii1vLWFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQiLGJyb3dzZXJzOlsiTzEyIl0sdmFsdWVzOlt7bmFtZToiaW5maW5pdGUiLGRlc2NyaXB0aW9uOiJDYXVzZXMgdGhlIGFuaW1hdGlvbiB0byByZXBlYXQgZm9yZXZlci4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJEZWZpbmVzIHRoZSBudW1iZXIgb2YgdGltZXMgYW4gYW5pbWF0aW9uIGN5Y2xlIGlzIHBsYXllZC4gVGhlIGRlZmF1bHQgdmFsdWUgaXMgb25lLCBtZWFuaW5nIHRoZSBhbmltYXRpb24gd2lsbCBwbGF5IGZyb20gYmVnaW5uaW5nIHRvIGVuZCBvbmNlLiIscmVzdHJpY3Rpb25zOlsibnVtYmVyIiwiZW51bSJdfSx7bmFtZToiLW8tYW5pbWF0aW9uLW5hbWUiLGJyb3dzZXJzOlsiTzEyIl0sdmFsdWVzOlt7bmFtZToibm9uZSIsZGVzY3JpcHRpb246Ik5vIGFuaW1hdGlvbiBpcyBwZXJmb3JtZWQifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJEZWZpbmVzIGEgbGlzdCBvZiBhbmltYXRpb25zIHRoYXQgYXBwbHkuIEVhY2ggbmFtZSBpcyB1c2VkIHRvIHNlbGVjdCB0aGUga2V5ZnJhbWUgYXQtcnVsZSB0aGF0IHByb3ZpZGVzIHRoZSBwcm9wZXJ0eSB2YWx1ZXMgZm9yIHRoZSBhbmltYXRpb24uIixyZXN0cmljdGlvbnM6WyJpZGVudGlmaWVyIiwiZW51bSJdfSx7bmFtZToiLW8tYW5pbWF0aW9uLXBsYXktc3RhdGUiLGJyb3dzZXJzOlsiTzEyIl0sdmFsdWVzOlt7bmFtZToicGF1c2VkIixkZXNjcmlwdGlvbjoiQSBydW5uaW5nIGFuaW1hdGlvbiB3aWxsIGJlIHBhdXNlZC4ifSx7bmFtZToicnVubmluZyIsZGVzY3JpcHRpb246IlJlc3VtZSBwbGF5YmFjayBvZiBhIHBhdXNlZCBhbmltYXRpb24uIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiRGVmaW5lcyB3aGV0aGVyIHRoZSBhbmltYXRpb24gaXMgcnVubmluZyBvciBwYXVzZWQuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiItby1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uIixicm93c2VyczpbIk8xMiJdLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiRGVzY3JpYmVzIGhvdyB0aGUgYW5pbWF0aW9uIHdpbGwgcHJvZ3Jlc3Mgb3ZlciBvbmUgY3ljbGUgb2YgaXRzIGR1cmF0aW9uLiBTZWUgdGhlICd0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbicuIixyZXN0cmljdGlvbnM6WyJ0aW1pbmctZnVuY3Rpb24iXX0se25hbWU6Im9iamVjdC1maXQiLGJyb3dzZXJzOlsiRTc5IiwiRkYzNiIsIlMxMCIsIkMzMiIsIk8xOSJdLHZhbHVlczpbe25hbWU6ImNvbnRhaW4iLGRlc2NyaXB0aW9uOiJUaGUgcmVwbGFjZWQgY29udGVudCBpcyBzaXplZCB0byBtYWludGFpbiBpdHMgYXNwZWN0IHJhdGlvIHdoaWxlIGZpdHRpbmcgd2l0aGluIHRoZSBlbGVtZW504oCZcyBjb250ZW50IGJveDogaXRzIGNvbmNyZXRlIG9iamVjdCBzaXplIGlzIHJlc29sdmVkIGFzIGEgY29udGFpbiBjb25zdHJhaW50IGFnYWluc3QgdGhlIGVsZW1lbnQncyB1c2VkIHdpZHRoIGFuZCBoZWlnaHQuIn0se25hbWU6ImNvdmVyIixkZXNjcmlwdGlvbjoiVGhlIHJlcGxhY2VkIGNvbnRlbnQgaXMgc2l6ZWQgdG8gbWFpbnRhaW4gaXRzIGFzcGVjdCByYXRpbyB3aGlsZSBmaWxsaW5nIHRoZSBlbGVtZW50J3MgZW50aXJlIGNvbnRlbnQgYm94OiBpdHMgY29uY3JldGUgb2JqZWN0IHNpemUgaXMgcmVzb2x2ZWQgYXMgYSBjb3ZlciBjb25zdHJhaW50IGFnYWluc3QgdGhlIGVsZW1lbnTigJlzIHVzZWQgd2lkdGggYW5kIGhlaWdodC4ifSx7bmFtZToiZmlsbCIsZGVzY3JpcHRpb246IlRoZSByZXBsYWNlZCBjb250ZW50IGlzIHNpemVkIHRvIGZpbGwgdGhlIGVsZW1lbnTigJlzIGNvbnRlbnQgYm94OiB0aGUgb2JqZWN0J3MgY29uY3JldGUgb2JqZWN0IHNpemUgaXMgdGhlIGVsZW1lbnQncyB1c2VkIHdpZHRoIGFuZCBoZWlnaHQuIn0se25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJUaGUgcmVwbGFjZWQgY29udGVudCBpcyBub3QgcmVzaXplZCB0byBmaXQgaW5zaWRlIHRoZSBlbGVtZW50J3MgY29udGVudCBib3gifSx7bmFtZToic2NhbGUtZG93biIsZGVzY3JpcHRpb246IlNpemUgdGhlIGNvbnRlbnQgYXMgaWYg4oCYbm9uZeKAmSBvciDigJhjb250YWlu4oCZIHdlcmUgc3BlY2lmaWVkLCB3aGljaGV2ZXIgd291bGQgcmVzdWx0IGluIGEgc21hbGxlciBjb25jcmV0ZSBvYmplY3Qgc2l6ZS4ifV0sc3ludGF4OiJmaWxsIHwgY29udGFpbiB8IGNvdmVyIHwgbm9uZSB8IHNjYWxlLWRvd24iLHJlbGV2YW5jZTo2OCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1Mvb2JqZWN0LWZpdCJ9XSxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGhvdyB0aGUgY29udGVudHMgb2YgYSByZXBsYWNlZCBlbGVtZW50IHNob3VsZCBiZSBzY2FsZWQgcmVsYXRpdmUgdG8gdGhlIGJveCBlc3RhYmxpc2hlZCBieSBpdHMgdXNlZCBoZWlnaHQgYW5kIHdpZHRoLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToib2JqZWN0LXBvc2l0aW9uIixicm93c2VyczpbIkU3OSIsIkZGMzYiLCJTMTAiLCJDMzIiLCJPMTkiXSxzeW50YXg6Ijxwb3NpdGlvbj4iLHJlbGV2YW5jZTo1MyxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1Mvb2JqZWN0LXBvc2l0aW9uIn1dLGRlc2NyaXB0aW9uOiJEZXRlcm1pbmVzIHRoZSBhbGlnbm1lbnQgb2YgdGhlIHJlcGxhY2VkIGVsZW1lbnQgaW5zaWRlIGl0cyBib3guIixyZXN0cmljdGlvbnM6WyJwb3NpdGlvbiIsImxlbmd0aCIsInBlcmNlbnRhZ2UiXX0se25hbWU6Ii1vLWJvcmRlci1pbWFnZSIsYnJvd3NlcnM6WyJPMTEuNiJdLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJJZiAnYXV0bycgaXMgc3BlY2lmaWVkIHRoZW4gdGhlIGJvcmRlciBpbWFnZSB3aWR0aCBpcyB0aGUgaW50cmluc2ljIHdpZHRoIG9yIGhlaWdodCAod2hpY2hldmVyIGlzIGFwcGxpY2FibGUpIG9mIHRoZSBjb3JyZXNwb25kaW5nIGltYWdlIHNsaWNlLiBJZiB0aGUgaW1hZ2UgZG9lcyBub3QgaGF2ZSB0aGUgcmVxdWlyZWQgaW50cmluc2ljIGRpbWVuc2lvbiB0aGVuIHRoZSBjb3JyZXNwb25kaW5nIGJvcmRlci13aWR0aCBpcyB1c2VkIGluc3RlYWQuIn0se25hbWU6ImZpbGwiLGRlc2NyaXB0aW9uOiJDYXVzZXMgdGhlIG1pZGRsZSBwYXJ0IG9mIHRoZSBib3JkZXItaW1hZ2UgdG8gYmUgcHJlc2VydmVkLiJ9LHtuYW1lOiJub25lIn0se25hbWU6InJlcGVhdCIsZGVzY3JpcHRpb246IlRoZSBpbWFnZSBpcyB0aWxlZCAocmVwZWF0ZWQpIHRvIGZpbGwgdGhlIGFyZWEuIn0se25hbWU6InJvdW5kIixkZXNjcmlwdGlvbjoiVGhlIGltYWdlIGlzIHRpbGVkIChyZXBlYXRlZCkgdG8gZmlsbCB0aGUgYXJlYS4gSWYgaXQgZG9lcyBub3QgZmlsbCB0aGUgYXJlYSB3aXRoIGEgd2hvbGUgbnVtYmVyIG9mIHRpbGVzLCB0aGUgaW1hZ2UgaXMgcmVzY2FsZWQgc28gdGhhdCBpdCBkb2VzLiJ9LHtuYW1lOiJzcGFjZSIsZGVzY3JpcHRpb246IlRoZSBpbWFnZSBpcyB0aWxlZCAocmVwZWF0ZWQpIHRvIGZpbGwgdGhlIGFyZWEuIElmIGl0IGRvZXMgbm90IGZpbGwgdGhlIGFyZWEgd2l0aCBhIHdob2xlIG51bWJlciBvZiB0aWxlcywgdGhlIGV4dHJhIHNwYWNlIGlzIGRpc3RyaWJ1dGVkIGFyb3VuZCB0aGUgdGlsZXMuIn0se25hbWU6InN0cmV0Y2giLGRlc2NyaXB0aW9uOiJUaGUgaW1hZ2UgaXMgc3RyZXRjaGVkIHRvIGZpbGwgdGhlIGFyZWEuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiU2hvcnRoYW5kIHByb3BlcnR5IGZvciBzZXR0aW5nICdib3JkZXItaW1hZ2Utc291cmNlJywgJ2JvcmRlci1pbWFnZS1zbGljZScsICdib3JkZXItaW1hZ2Utd2lkdGgnLCAnYm9yZGVyLWltYWdlLW91dHNldCcgYW5kICdib3JkZXItaW1hZ2UtcmVwZWF0Jy4gT21pdHRlZCB2YWx1ZXMgYXJlIHNldCB0byB0aGVpciBpbml0aWFsIHZhbHVlcy4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsInBlcmNlbnRhZ2UiLCJudW1iZXIiLCJpbWFnZSIsImVudW0iXX0se25hbWU6Ii1vLW9iamVjdC1maXQiLGJyb3dzZXJzOlsiTzEwLjYiXSx2YWx1ZXM6W3tuYW1lOiJjb250YWluIixkZXNjcmlwdGlvbjoiVGhlIHJlcGxhY2VkIGNvbnRlbnQgaXMgc2l6ZWQgdG8gbWFpbnRhaW4gaXRzIGFzcGVjdCByYXRpbyB3aGlsZSBmaXR0aW5nIHdpdGhpbiB0aGUgZWxlbWVudOKAmXMgY29udGVudCBib3g6IGl0cyBjb25jcmV0ZSBvYmplY3Qgc2l6ZSBpcyByZXNvbHZlZCBhcyBhIGNvbnRhaW4gY29uc3RyYWludCBhZ2FpbnN0IHRoZSBlbGVtZW50J3MgdXNlZCB3aWR0aCBhbmQgaGVpZ2h0LiJ9LHtuYW1lOiJjb3ZlciIsZGVzY3JpcHRpb246IlRoZSByZXBsYWNlZCBjb250ZW50IGlzIHNpemVkIHRvIG1haW50YWluIGl0cyBhc3BlY3QgcmF0aW8gd2hpbGUgZmlsbGluZyB0aGUgZWxlbWVudCdzIGVudGlyZSBjb250ZW50IGJveDogaXRzIGNvbmNyZXRlIG9iamVjdCBzaXplIGlzIHJlc29sdmVkIGFzIGEgY292ZXIgY29uc3RyYWludCBhZ2FpbnN0IHRoZSBlbGVtZW504oCZcyB1c2VkIHdpZHRoIGFuZCBoZWlnaHQuIn0se25hbWU6ImZpbGwiLGRlc2NyaXB0aW9uOiJUaGUgcmVwbGFjZWQgY29udGVudCBpcyBzaXplZCB0byBmaWxsIHRoZSBlbGVtZW504oCZcyBjb250ZW50IGJveDogdGhlIG9iamVjdCdzIGNvbmNyZXRlIG9iamVjdCBzaXplIGlzIHRoZSBlbGVtZW50J3MgdXNlZCB3aWR0aCBhbmQgaGVpZ2h0LiJ9LHtuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiVGhlIHJlcGxhY2VkIGNvbnRlbnQgaXMgbm90IHJlc2l6ZWQgdG8gZml0IGluc2lkZSB0aGUgZWxlbWVudCdzIGNvbnRlbnQgYm94In0se25hbWU6InNjYWxlLWRvd24iLGRlc2NyaXB0aW9uOiJTaXplIHRoZSBjb250ZW50IGFzIGlmIOKAmG5vbmXigJkgb3Ig4oCYY29udGFpbuKAmSB3ZXJlIHNwZWNpZmllZCwgd2hpY2hldmVyIHdvdWxkIHJlc3VsdCBpbiBhIHNtYWxsZXIgY29uY3JldGUgb2JqZWN0IHNpemUuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGhvdyB0aGUgY29udGVudHMgb2YgYSByZXBsYWNlZCBlbGVtZW50IHNob3VsZCBiZSBzY2FsZWQgcmVsYXRpdmUgdG8gdGhlIGJveCBlc3RhYmxpc2hlZCBieSBpdHMgdXNlZCBoZWlnaHQgYW5kIHdpZHRoLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLW8tb2JqZWN0LXBvc2l0aW9uIixicm93c2VyczpbIk8xMC42Il0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJEZXRlcm1pbmVzIHRoZSBhbGlnbm1lbnQgb2YgdGhlIHJlcGxhY2VkIGVsZW1lbnQgaW5zaWRlIGl0cyBib3guIixyZXN0cmljdGlvbnM6WyJwb3NpdGlvbiIsImxlbmd0aCIsInBlcmNlbnRhZ2UiXX0se25hbWU6Im9wYWNpdHkiLHN5bnRheDoiPGFscGhhLXZhbHVlPiIscmVsZXZhbmNlOjkzLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9vcGFjaXR5In1dLGRlc2NyaXB0aW9uOiJPcGFjaXR5IG9mIGFuIGVsZW1lbnQncyB0ZXh0LCB3aGVyZSAxIGlzIG9wYXF1ZSBhbmQgMCBpcyBlbnRpcmVseSB0cmFuc3BhcmVudC4iLHJlc3RyaWN0aW9uczpbIm51bWJlcigwLTEpIl19LHtuYW1lOiJvcmRlciIsc3ludGF4OiI8aW50ZWdlcj4iLHJlbGV2YW5jZTo2MyxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1Mvb3JkZXIifV0sZGVzY3JpcHRpb246IkNvbnRyb2xzIHRoZSBvcmRlciBpbiB3aGljaCBjaGlsZHJlbiBvZiBhIGZsZXggY29udGFpbmVyIGFwcGVhciB3aXRoaW4gdGhlIGZsZXggY29udGFpbmVyLCBieSBhc3NpZ25pbmcgdGhlbSB0byBvcmRpbmFsIGdyb3Vwcy4iLHJlc3RyaWN0aW9uczpbImludGVnZXIiXX0se25hbWU6Im9ycGhhbnMiLGJyb3dzZXJzOlsiRTEyIiwiUzEuMyIsIkMyNSIsIklFOCIsIk85LjIiXSxzeW50YXg6IjxpbnRlZ2VyPiIscmVsZXZhbmNlOjUxLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9vcnBoYW5zIn1dLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgdGhlIG1pbmltdW0gbnVtYmVyIG9mIGxpbmUgYm94ZXMgaW4gYSBibG9jayBjb250YWluZXIgdGhhdCBtdXN0IGJlIGxlZnQgaW4gYSBmcmFnbWVudCBiZWZvcmUgYSBmcmFnbWVudGF0aW9uIGJyZWFrLiIscmVzdHJpY3Rpb25zOlsiaW50ZWdlciJdfSx7bmFtZToiLW8tdGFibGUtYmFzZWxpbmUiLGJyb3dzZXJzOlsiTzkuNiJdLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiRGV0ZXJtaW5lcyB3aGljaCByb3cgb2YgYSBpbmxpbmUtdGFibGUgc2hvdWxkIGJlIHVzZWQgYXMgYmFzZWxpbmUgb2YgaW5saW5lLXRhYmxlLiIscmVzdHJpY3Rpb25zOlsiaW50ZWdlciJdfSx7bmFtZToiLW8tdGFiLXNpemUiLGJyb3dzZXJzOlsiTzEwLjYiXSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlRoaXMgcHJvcGVydHkgZGV0ZXJtaW5lcyB0aGUgd2lkdGggb2YgdGhlIHRhYiBjaGFyYWN0ZXIgKFUrMDAwOSksIGluIHNwYWNlIGNoYXJhY3RlcnMgKFUrMDAyMCksIHdoZW4gcmVuZGVyZWQuIixyZXN0cmljdGlvbnM6WyJpbnRlZ2VyIiwibGVuZ3RoIl19LHtuYW1lOiItby10ZXh0LW92ZXJmbG93Iixicm93c2VyczpbIk8xMCJdLHZhbHVlczpbe25hbWU6ImNsaXAiLGRlc2NyaXB0aW9uOiJDbGlwIGlubGluZSBjb250ZW50IHRoYXQgb3ZlcmZsb3dzLiBDaGFyYWN0ZXJzIG1heSBiZSBvbmx5IHBhcnRpYWxseSByZW5kZXJlZC4ifSx7bmFtZToiZWxsaXBzaXMiLGRlc2NyaXB0aW9uOiJSZW5kZXIgYW4gZWxsaXBzaXMgY2hhcmFjdGVyIChVKzIwMjYpIHRvIHJlcHJlc2VudCBjbGlwcGVkIGlubGluZSBjb250ZW50LiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlRleHQgY2FuIG92ZXJmbG93IGZvciBleGFtcGxlIHdoZW4gaXQgaXMgcHJldmVudGVkIGZyb20gd3JhcHBpbmciLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii1vLXRyYW5zZm9ybSIsYnJvd3NlcnM6WyJPMTAuNSJdLHZhbHVlczpbe25hbWU6Im1hdHJpeCgpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgMkQgdHJhbnNmb3JtYXRpb24gaW4gdGhlIGZvcm0gb2YgYSB0cmFuc2Zvcm1hdGlvbiBtYXRyaXggb2Ygc2l4IHZhbHVlcy4gbWF0cml4KGEsYixjLGQsZSxmKSBpcyBlcXVpdmFsZW50IHRvIGFwcGx5aW5nIHRoZSB0cmFuc2Zvcm1hdGlvbiBtYXRyaXggW2EgYiBjIGQgZSBmXSJ9LHtuYW1lOiJtYXRyaXgzZCgpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgM0QgdHJhbnNmb3JtYXRpb24gYXMgYSA0eDQgaG9tb2dlbmVvdXMgbWF0cml4IG9mIDE2IHZhbHVlcyBpbiBjb2x1bW4tbWFqb3Igb3JkZXIuIn0se25hbWU6Im5vbmUifSx7bmFtZToicm90YXRlKCkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSAyRCByb3RhdGlvbiBieSB0aGUgYW5nbGUgc3BlY2lmaWVkIGluIHRoZSBwYXJhbWV0ZXIgYWJvdXQgdGhlIG9yaWdpbiBvZiB0aGUgZWxlbWVudCwgYXMgZGVmaW5lZCBieSB0aGUgdHJhbnNmb3JtLW9yaWdpbiBwcm9wZXJ0eS4ifSx7bmFtZToicm90YXRlM2QoKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIGNsb2Nrd2lzZSAzRCByb3RhdGlvbiBieSB0aGUgYW5nbGUgc3BlY2lmaWVkIGluIGxhc3QgcGFyYW1ldGVyIGFib3V0IHRoZSBbeCx5LHpdIGRpcmVjdGlvbiB2ZWN0b3IgZGVzY3JpYmVkIGJ5IHRoZSBmaXJzdCAzIHBhcmFtZXRlcnMuIn0se25hbWU6InJvdGF0ZVgoJ2FuZ2xlJykiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSBjbG9ja3dpc2Ugcm90YXRpb24gYnkgdGhlIGdpdmVuIGFuZ2xlIGFib3V0IHRoZSBYIGF4aXMuIn0se25hbWU6InJvdGF0ZVkoJ2FuZ2xlJykiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSBjbG9ja3dpc2Ugcm90YXRpb24gYnkgdGhlIGdpdmVuIGFuZ2xlIGFib3V0IHRoZSBZIGF4aXMuIn0se25hbWU6InJvdGF0ZVooJ2FuZ2xlJykiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSBjbG9ja3dpc2Ugcm90YXRpb24gYnkgdGhlIGdpdmVuIGFuZ2xlIGFib3V0IHRoZSBaIGF4aXMuIn0se25hbWU6InNjYWxlKCkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSAyRCBzY2FsZSBvcGVyYXRpb24gYnkgdGhlIFtzeCxzeV0gc2NhbGluZyB2ZWN0b3IgZGVzY3JpYmVkIGJ5IHRoZSAyIHBhcmFtZXRlcnMuIElmIHRoZSBzZWNvbmQgcGFyYW1ldGVyIGlzIG5vdCBwcm92aWRlZCwgaXQgaXMgdGFrZXMgYSB2YWx1ZSBlcXVhbCB0byB0aGUgZmlyc3QuIn0se25hbWU6InNjYWxlM2QoKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIDNEIHNjYWxlIG9wZXJhdGlvbiBieSB0aGUgW3N4LHN5LHN6XSBzY2FsaW5nIHZlY3RvciBkZXNjcmliZWQgYnkgdGhlIDMgcGFyYW1ldGVycy4ifSx7bmFtZToic2NhbGVYKCkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSBzY2FsZSBvcGVyYXRpb24gdXNpbmcgdGhlIFtzeCwxXSBzY2FsaW5nIHZlY3Rvciwgd2hlcmUgc3ggaXMgZ2l2ZW4gYXMgdGhlIHBhcmFtZXRlci4ifSx7bmFtZToic2NhbGVZKCkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSBzY2FsZSBvcGVyYXRpb24gdXNpbmcgdGhlIFtzeSwxXSBzY2FsaW5nIHZlY3Rvciwgd2hlcmUgc3kgaXMgZ2l2ZW4gYXMgdGhlIHBhcmFtZXRlci4ifSx7bmFtZToic2NhbGVaKCkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSBzY2FsZSBvcGVyYXRpb24gdXNpbmcgdGhlIFsxLDEsc3pdIHNjYWxpbmcgdmVjdG9yLCB3aGVyZSBzeiBpcyBnaXZlbiBhcyB0aGUgcGFyYW1ldGVyLiJ9LHtuYW1lOiJza2V3KCkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSBza2V3IHRyYW5zZm9ybWF0aW9uIGFsb25nIHRoZSBYIGFuZCBZIGF4ZXMuIFRoZSBmaXJzdCBhbmdsZSBwYXJhbWV0ZXIgc3BlY2lmaWVzIHRoZSBza2V3IG9uIHRoZSBYIGF4aXMuIFRoZSBzZWNvbmQgYW5nbGUgcGFyYW1ldGVyIHNwZWNpZmllcyB0aGUgc2tldyBvbiB0aGUgWSBheGlzLiBJZiB0aGUgc2Vjb25kIHBhcmFtZXRlciBpcyBub3QgZ2l2ZW4gdGhlbiBhIHZhbHVlIG9mIDAgaXMgdXNlZCBmb3IgdGhlIFkgYW5nbGUgKGllOiBubyBza2V3IG9uIHRoZSBZIGF4aXMpLiJ9LHtuYW1lOiJza2V3WCgpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgc2tldyB0cmFuc2Zvcm1hdGlvbiBhbG9uZyB0aGUgWCBheGlzIGJ5IHRoZSBnaXZlbiBhbmdsZS4ifSx7bmFtZToic2tld1koKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIHNrZXcgdHJhbnNmb3JtYXRpb24gYWxvbmcgdGhlIFkgYXhpcyBieSB0aGUgZ2l2ZW4gYW5nbGUuIn0se25hbWU6InRyYW5zbGF0ZSgpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgMkQgdHJhbnNsYXRpb24gYnkgdGhlIHZlY3RvciBbdHgsIHR5XSwgd2hlcmUgdHggaXMgdGhlIGZpcnN0IHRyYW5zbGF0aW9uLXZhbHVlIHBhcmFtZXRlciBhbmQgdHkgaXMgdGhlIG9wdGlvbmFsIHNlY29uZCB0cmFuc2xhdGlvbi12YWx1ZSBwYXJhbWV0ZXIuIn0se25hbWU6InRyYW5zbGF0ZTNkKCkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSAzRCB0cmFuc2xhdGlvbiBieSB0aGUgdmVjdG9yIFt0eCx0eSx0el0sIHdpdGggdHgsIHR5IGFuZCB0eiBiZWluZyB0aGUgZmlyc3QsIHNlY29uZCBhbmQgdGhpcmQgdHJhbnNsYXRpb24tdmFsdWUgcGFyYW1ldGVycyByZXNwZWN0aXZlbHkuIn0se25hbWU6InRyYW5zbGF0ZVgoKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIHRyYW5zbGF0aW9uIGJ5IHRoZSBnaXZlbiBhbW91bnQgaW4gdGhlIFggZGlyZWN0aW9uLiJ9LHtuYW1lOiJ0cmFuc2xhdGVZKCkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSB0cmFuc2xhdGlvbiBieSB0aGUgZ2l2ZW4gYW1vdW50IGluIHRoZSBZIGRpcmVjdGlvbi4ifSx7bmFtZToidHJhbnNsYXRlWigpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgdHJhbnNsYXRpb24gYnkgdGhlIGdpdmVuIGFtb3VudCBpbiB0aGUgWiBkaXJlY3Rpb24uIE5vdGUgdGhhdCBwZXJjZW50YWdlIHZhbHVlcyBhcmUgbm90IGFsbG93ZWQgaW4gdGhlIHRyYW5zbGF0ZVogdHJhbnNsYXRpb24tdmFsdWUsIGFuZCBpZiBwcmVzZW50IGFyZSBldmFsdWF0ZWQgYXMgMC4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJBIHR3by1kaW1lbnNpb25hbCB0cmFuc2Zvcm1hdGlvbiBpcyBhcHBsaWVkIHRvIGFuIGVsZW1lbnQgdGhyb3VnaCB0aGUgJ3RyYW5zZm9ybScgcHJvcGVydHkuIFRoaXMgcHJvcGVydHkgY29udGFpbnMgYSBsaXN0IG9mIHRyYW5zZm9ybSBmdW5jdGlvbnMgc2ltaWxhciB0byB0aG9zZSBhbGxvd2VkIGJ5IFNWRy4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii1vLXRyYW5zZm9ybS1vcmlnaW4iLGJyb3dzZXJzOlsiTzEwLjUiXSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkVzdGFibGlzaGVzIHRoZSBvcmlnaW4gb2YgdHJhbnNmb3JtYXRpb24gZm9yIGFuIGVsZW1lbnQuIixyZXN0cmljdGlvbnM6WyJwb3NpdG9uIiwibGVuZ3RoIiwicGVyY2VudGFnZSJdfSx7bmFtZToiLW8tdHJhbnNpdGlvbiIsYnJvd3NlcnM6WyJPMTEuNSJdLHZhbHVlczpbe25hbWU6ImFsbCIsZGVzY3JpcHRpb246IkV2ZXJ5IHByb3BlcnR5IHRoYXQgaXMgYWJsZSB0byB1bmRlcmdvIGEgdHJhbnNpdGlvbiB3aWxsIGRvIHNvLiJ9LHtuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiTm8gcHJvcGVydHkgd2lsbCB0cmFuc2l0aW9uLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlNob3J0aGFuZCBwcm9wZXJ0eSBjb21iaW5lcyBmb3VyIG9mIHRoZSB0cmFuc2l0aW9uIHByb3BlcnRpZXMgaW50byBhIHNpbmdsZSBwcm9wZXJ0eS4iLHJlc3RyaWN0aW9uczpbInRpbWUiLCJwcm9wZXJ0eSIsInRpbWluZy1mdW5jdGlvbiIsImVudW0iXX0se25hbWU6Ii1vLXRyYW5zaXRpb24tZGVsYXkiLGJyb3dzZXJzOlsiTzExLjUiXSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkRlZmluZXMgd2hlbiB0aGUgdHJhbnNpdGlvbiB3aWxsIHN0YXJ0LiBJdCBhbGxvd3MgYSB0cmFuc2l0aW9uIHRvIGJlZ2luIGV4ZWN1dGlvbiBzb21lIHBlcmlvZCBvZiB0aW1lIGZyb20gd2hlbiBpdCBpcyBhcHBsaWVkLiIscmVzdHJpY3Rpb25zOlsidGltZSJdfSx7bmFtZToiLW8tdHJhbnNpdGlvbi1kdXJhdGlvbiIsYnJvd3NlcnM6WyJPMTEuNSJdLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGhvdyBsb25nIHRoZSB0cmFuc2l0aW9uIGZyb20gdGhlIG9sZCB2YWx1ZSB0byB0aGUgbmV3IHZhbHVlIHNob3VsZCB0YWtlLiIscmVzdHJpY3Rpb25zOlsidGltZSJdfSx7bmFtZToiLW8tdHJhbnNpdGlvbi1wcm9wZXJ0eSIsYnJvd3NlcnM6WyJPMTEuNSJdLHZhbHVlczpbe25hbWU6ImFsbCIsZGVzY3JpcHRpb246IkV2ZXJ5IHByb3BlcnR5IHRoYXQgaXMgYWJsZSB0byB1bmRlcmdvIGEgdHJhbnNpdGlvbiB3aWxsIGRvIHNvLiJ9LHtuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiTm8gcHJvcGVydHkgd2lsbCB0cmFuc2l0aW9uLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlNwZWNpZmllcyB0aGUgbmFtZSBvZiB0aGUgQ1NTIHByb3BlcnR5IHRvIHdoaWNoIHRoZSB0cmFuc2l0aW9uIGlzIGFwcGxpZWQuIixyZXN0cmljdGlvbnM6WyJwcm9wZXJ0eSJdfSx7bmFtZToiLW8tdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb24iLGJyb3dzZXJzOlsiTzExLjUiXSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkRlc2NyaWJlcyBob3cgdGhlIGludGVybWVkaWF0ZSB2YWx1ZXMgdXNlZCBkdXJpbmcgYSB0cmFuc2l0aW9uIHdpbGwgYmUgY2FsY3VsYXRlZC4iLHJlc3RyaWN0aW9uczpbInRpbWluZy1mdW5jdGlvbiJdfSx7bmFtZToib2Zmc2V0LWJsb2NrLWVuZCIsYnJvd3NlcnM6WyJGRjQxIl0sdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IkZvciBub24tcmVwbGFjZWQgZWxlbWVudHMsIHRoZSBlZmZlY3Qgb2YgdGhpcyB2YWx1ZSBkZXBlbmRzIG9uIHdoaWNoIG9mIHJlbGF0ZWQgcHJvcGVydGllcyBoYXZlIHRoZSB2YWx1ZSAnYXV0bycgYXMgd2VsbC4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJMb2dpY2FsICdib3R0b20nLiBNYXBwaW5nIGRlcGVuZHMgb24gdGhlIHBhcmVudCBlbGVtZW504oCZcyAnd3JpdGluZy1tb2RlJywgJ2RpcmVjdGlvbicsIGFuZCAndGV4dC1vcmllbnRhdGlvbicuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJwZXJjZW50YWdlIl19LHtuYW1lOiJvZmZzZXQtYmxvY2stc3RhcnQiLGJyb3dzZXJzOlsiRkY0MSJdLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJGb3Igbm9uLXJlcGxhY2VkIGVsZW1lbnRzLCB0aGUgZWZmZWN0IG9mIHRoaXMgdmFsdWUgZGVwZW5kcyBvbiB3aGljaCBvZiByZWxhdGVkIHByb3BlcnRpZXMgaGF2ZSB0aGUgdmFsdWUgJ2F1dG8nIGFzIHdlbGwuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiTG9naWNhbCAndG9wJy4gTWFwcGluZyBkZXBlbmRzIG9uIHRoZSBwYXJlbnQgZWxlbWVudOKAmXMgJ3dyaXRpbmctbW9kZScsICdkaXJlY3Rpb24nLCBhbmQgJ3RleHQtb3JpZW50YXRpb24nLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwicGVyY2VudGFnZSJdfSx7bmFtZToib2Zmc2V0LWlubGluZS1lbmQiLGJyb3dzZXJzOlsiRkY0MSJdLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJGb3Igbm9uLXJlcGxhY2VkIGVsZW1lbnRzLCB0aGUgZWZmZWN0IG9mIHRoaXMgdmFsdWUgZGVwZW5kcyBvbiB3aGljaCBvZiByZWxhdGVkIHByb3BlcnRpZXMgaGF2ZSB0aGUgdmFsdWUgJ2F1dG8nIGFzIHdlbGwuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiTG9naWNhbCAncmlnaHQnLiBNYXBwaW5nIGRlcGVuZHMgb24gdGhlIHBhcmVudCBlbGVtZW504oCZcyAnd3JpdGluZy1tb2RlJywgJ2RpcmVjdGlvbicsIGFuZCAndGV4dC1vcmllbnRhdGlvbicuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJwZXJjZW50YWdlIl19LHtuYW1lOiJvZmZzZXQtaW5saW5lLXN0YXJ0Iixicm93c2VyczpbIkZGNDEiXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiRm9yIG5vbi1yZXBsYWNlZCBlbGVtZW50cywgdGhlIGVmZmVjdCBvZiB0aGlzIHZhbHVlIGRlcGVuZHMgb24gd2hpY2ggb2YgcmVsYXRlZCBwcm9wZXJ0aWVzIGhhdmUgdGhlIHZhbHVlICdhdXRvJyBhcyB3ZWxsLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkxvZ2ljYWwgJ2xlZnQnLiBNYXBwaW5nIGRlcGVuZHMgb24gdGhlIHBhcmVudCBlbGVtZW504oCZcyAnd3JpdGluZy1tb2RlJywgJ2RpcmVjdGlvbicsIGFuZCAndGV4dC1vcmllbnRhdGlvbicuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJwZXJjZW50YWdlIl19LHtuYW1lOiJvdXRsaW5lIix2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiUGVybWl0cyB0aGUgdXNlciBhZ2VudCB0byByZW5kZXIgYSBjdXN0b20gb3V0bGluZSBzdHlsZSwgdHlwaWNhbGx5IHRoZSBkZWZhdWx0IHBsYXRmb3JtIHN0eWxlLiJ9LHtuYW1lOiJpbnZlcnQiLGRlc2NyaXB0aW9uOiJQZXJmb3JtcyBhIGNvbG9yIGludmVyc2lvbiBvbiB0aGUgcGl4ZWxzIG9uIHRoZSBzY3JlZW4uIn1dLHN5bnRheDoiWyA8J291dGxpbmUtY29sb3InPiB8fCA8J291dGxpbmUtc3R5bGUnPiB8fCA8J291dGxpbmUtd2lkdGgnPiBdIixyZWxldmFuY2U6ODgscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL291dGxpbmUifV0sZGVzY3JpcHRpb246IlNob3J0aGFuZCBwcm9wZXJ0eSBmb3IgJ291dGxpbmUtc3R5bGUnLCAnb3V0bGluZS13aWR0aCcsIGFuZCAnb3V0bGluZS1jb2xvcicuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJsaW5lLXdpZHRoIiwibGluZS1zdHlsZSIsImNvbG9yIiwiZW51bSJdfSx7bmFtZToib3V0bGluZS1jb2xvciIsdmFsdWVzOlt7bmFtZToiaW52ZXJ0IixkZXNjcmlwdGlvbjoiUGVyZm9ybXMgYSBjb2xvciBpbnZlcnNpb24gb24gdGhlIHBpeGVscyBvbiB0aGUgc2NyZWVuLiJ9XSxzeW50YXg6Ijxjb2xvcj4gfCBpbnZlcnQiLHJlbGV2YW5jZTo1NSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1Mvb3V0bGluZS1jb2xvciJ9XSxkZXNjcmlwdGlvbjoiVGhlIGNvbG9yIG9mIHRoZSBvdXRsaW5lLiIscmVzdHJpY3Rpb25zOlsiZW51bSIsImNvbG9yIl19LHtuYW1lOiJvdXRsaW5lLW9mZnNldCIsYnJvd3NlcnM6WyJFMTUiLCJGRjEuNSIsIlMxLjIiLCJDMSIsIk85LjUiXSxzeW50YXg6IjxsZW5ndGg+IixyZWxldmFuY2U6NjkscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL291dGxpbmUtb2Zmc2V0In1dLGRlc2NyaXB0aW9uOiJPZmZzZXQgdGhlIG91dGxpbmUgYW5kIGRyYXcgaXQgYmV5b25kIHRoZSBib3JkZXIgZWRnZS4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCJdfSx7bmFtZToib3V0bGluZS1zdHlsZSIsdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IlBlcm1pdHMgdGhlIHVzZXIgYWdlbnQgdG8gcmVuZGVyIGEgY3VzdG9tIG91dGxpbmUgc3R5bGUsIHR5cGljYWxseSB0aGUgZGVmYXVsdCBwbGF0Zm9ybSBzdHlsZS4ifV0sc3ludGF4OiJhdXRvIHwgPCdib3JkZXItc3R5bGUnPiIscmVsZXZhbmNlOjYxLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9vdXRsaW5lLXN0eWxlIn1dLGRlc2NyaXB0aW9uOiJTdHlsZSBvZiB0aGUgb3V0bGluZS4iLHJlc3RyaWN0aW9uczpbImxpbmUtc3R5bGUiLCJlbnVtIl19LHtuYW1lOiJvdXRsaW5lLXdpZHRoIixzeW50YXg6IjxsaW5lLXdpZHRoPiIscmVsZXZhbmNlOjYxLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9vdXRsaW5lLXdpZHRoIn1dLGRlc2NyaXB0aW9uOiJXaWR0aCBvZiB0aGUgb3V0bGluZS4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsImxpbmUtd2lkdGgiXX0se25hbWU6Im92ZXJmbG93Iix2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiVGhlIGJlaGF2aW9yIG9mIHRoZSAnYXV0bycgdmFsdWUgaXMgVUEtZGVwZW5kZW50LCBidXQgc2hvdWxkIGNhdXNlIGEgc2Nyb2xsaW5nIG1lY2hhbmlzbSB0byBiZSBwcm92aWRlZCBmb3Igb3ZlcmZsb3dpbmcgYm94ZXMuIn0se25hbWU6ImhpZGRlbiIsZGVzY3JpcHRpb246IkNvbnRlbnQgaXMgY2xpcHBlZCBhbmQgbm8gc2Nyb2xsaW5nIG1lY2hhbmlzbSBzaG91bGQgYmUgcHJvdmlkZWQgdG8gdmlldyB0aGUgY29udGVudCBvdXRzaWRlIHRoZSBjbGlwcGluZyByZWdpb24uIn0se25hbWU6Ii1tb3otaGlkZGVuLXVuc2Nyb2xsYWJsZSIsZGVzY3JpcHRpb246IlNhbWUgYXMgdGhlIHN0YW5kYXJkaXplZCAnY2xpcCcsIGV4Y2VwdCBkb2VzbuKAmXQgZXN0YWJsaXNoIGEgYmxvY2sgZm9ybWF0dGluZyBjb250ZXh0LiJ9LHtuYW1lOiJzY3JvbGwiLGRlc2NyaXB0aW9uOiJDb250ZW50IGlzIGNsaXBwZWQgYW5kIGlmIHRoZSB1c2VyIGFnZW50IHVzZXMgYSBzY3JvbGxpbmcgbWVjaGFuaXNtIHRoYXQgaXMgdmlzaWJsZSBvbiB0aGUgc2NyZWVuIChzdWNoIGFzIGEgc2Nyb2xsIGJhciBvciBhIHBhbm5lciksIHRoYXQgbWVjaGFuaXNtIHNob3VsZCBiZSBkaXNwbGF5ZWQgZm9yIGEgYm94IHdoZXRoZXIgb3Igbm90IGFueSBvZiBpdHMgY29udGVudCBpcyBjbGlwcGVkLiJ9LHtuYW1lOiJ2aXNpYmxlIixkZXNjcmlwdGlvbjoiQ29udGVudCBpcyBub3QgY2xpcHBlZCwgaS5lLiwgaXQgbWF5IGJlIHJlbmRlcmVkIG91dHNpZGUgdGhlIGNvbnRlbnQgYm94LiJ9XSxzeW50YXg6IlsgdmlzaWJsZSB8IGhpZGRlbiB8IGNsaXAgfCBzY3JvbGwgfCBhdXRvIF17MSwyfSIscmVsZXZhbmNlOjkzLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9vdmVyZmxvdyJ9XSxkZXNjcmlwdGlvbjoiU2hvcnRoYW5kIGZvciBzZXR0aW5nICdvdmVyZmxvdy14JyBhbmQgJ292ZXJmbG93LXknLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToib3ZlcmZsb3ctd3JhcCIsdmFsdWVzOlt7bmFtZToiYnJlYWstd29yZCIsZGVzY3JpcHRpb246IkFuIG90aGVyd2lzZSB1bmJyZWFrYWJsZSBzZXF1ZW5jZSBvZiBjaGFyYWN0ZXJzIG1heSBiZSBicm9rZW4gYXQgYW4gYXJiaXRyYXJ5IHBvaW50IGlmIHRoZXJlIGFyZSBubyBvdGhlcndpc2UtYWNjZXB0YWJsZSBicmVhayBwb2ludHMgaW4gdGhlIGxpbmUuIn0se25hbWU6Im5vcm1hbCIsZGVzY3JpcHRpb246IkxpbmVzIG1heSBicmVhayBvbmx5IGF0IGFsbG93ZWQgYnJlYWsgcG9pbnRzLiJ9XSxzeW50YXg6Im5vcm1hbCB8IGJyZWFrLXdvcmQgfCBhbnl3aGVyZSIscmVsZXZhbmNlOjY2LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9vdmVyZmxvdy13cmFwIn1dLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgd2hldGhlciB0aGUgVUEgbWF5IGJyZWFrIHdpdGhpbiBhIHdvcmQgdG8gcHJldmVudCBvdmVyZmxvdyB3aGVuIGFuIG90aGVyd2lzZS11bmJyZWFrYWJsZSBzdHJpbmcgaXMgdG9vIGxvbmcgdG8gZml0IHdpdGhpbiB0aGUgbGluZSBib3guIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJvdmVyZmxvdy14Iix2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiVGhlIGJlaGF2aW9yIG9mIHRoZSAnYXV0bycgdmFsdWUgaXMgVUEtZGVwZW5kZW50LCBidXQgc2hvdWxkIGNhdXNlIGEgc2Nyb2xsaW5nIG1lY2hhbmlzbSB0byBiZSBwcm92aWRlZCBmb3Igb3ZlcmZsb3dpbmcgYm94ZXMuIn0se25hbWU6ImhpZGRlbiIsZGVzY3JpcHRpb246IkNvbnRlbnQgaXMgY2xpcHBlZCBhbmQgbm8gc2Nyb2xsaW5nIG1lY2hhbmlzbSBzaG91bGQgYmUgcHJvdmlkZWQgdG8gdmlldyB0aGUgY29udGVudCBvdXRzaWRlIHRoZSBjbGlwcGluZyByZWdpb24uIn0se25hbWU6InNjcm9sbCIsZGVzY3JpcHRpb246IkNvbnRlbnQgaXMgY2xpcHBlZCBhbmQgaWYgdGhlIHVzZXIgYWdlbnQgdXNlcyBhIHNjcm9sbGluZyBtZWNoYW5pc20gdGhhdCBpcyB2aXNpYmxlIG9uIHRoZSBzY3JlZW4gKHN1Y2ggYXMgYSBzY3JvbGwgYmFyIG9yIGEgcGFubmVyKSwgdGhhdCBtZWNoYW5pc20gc2hvdWxkIGJlIGRpc3BsYXllZCBmb3IgYSBib3ggd2hldGhlciBvciBub3QgYW55IG9mIGl0cyBjb250ZW50IGlzIGNsaXBwZWQuIn0se25hbWU6InZpc2libGUiLGRlc2NyaXB0aW9uOiJDb250ZW50IGlzIG5vdCBjbGlwcGVkLCBpLmUuLCBpdCBtYXkgYmUgcmVuZGVyZWQgb3V0c2lkZSB0aGUgY29udGVudCBib3guIn1dLHN5bnRheDoidmlzaWJsZSB8IGhpZGRlbiB8IGNsaXAgfCBzY3JvbGwgfCBhdXRvIixyZWxldmFuY2U6ODEscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL292ZXJmbG93LXgifV0sZGVzY3JpcHRpb246IlNwZWNpZmllcyB0aGUgaGFuZGxpbmcgb2Ygb3ZlcmZsb3cgaW4gdGhlIGhvcml6b250YWwgZGlyZWN0aW9uLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToib3ZlcmZsb3cteSIsdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IlRoZSBiZWhhdmlvciBvZiB0aGUgJ2F1dG8nIHZhbHVlIGlzIFVBLWRlcGVuZGVudCwgYnV0IHNob3VsZCBjYXVzZSBhIHNjcm9sbGluZyBtZWNoYW5pc20gdG8gYmUgcHJvdmlkZWQgZm9yIG92ZXJmbG93aW5nIGJveGVzLiJ9LHtuYW1lOiJoaWRkZW4iLGRlc2NyaXB0aW9uOiJDb250ZW50IGlzIGNsaXBwZWQgYW5kIG5vIHNjcm9sbGluZyBtZWNoYW5pc20gc2hvdWxkIGJlIHByb3ZpZGVkIHRvIHZpZXcgdGhlIGNvbnRlbnQgb3V0c2lkZSB0aGUgY2xpcHBpbmcgcmVnaW9uLiJ9LHtuYW1lOiJzY3JvbGwiLGRlc2NyaXB0aW9uOiJDb250ZW50IGlzIGNsaXBwZWQgYW5kIGlmIHRoZSB1c2VyIGFnZW50IHVzZXMgYSBzY3JvbGxpbmcgbWVjaGFuaXNtIHRoYXQgaXMgdmlzaWJsZSBvbiB0aGUgc2NyZWVuIChzdWNoIGFzIGEgc2Nyb2xsIGJhciBvciBhIHBhbm5lciksIHRoYXQgbWVjaGFuaXNtIHNob3VsZCBiZSBkaXNwbGF5ZWQgZm9yIGEgYm94IHdoZXRoZXIgb3Igbm90IGFueSBvZiBpdHMgY29udGVudCBpcyBjbGlwcGVkLiJ9LHtuYW1lOiJ2aXNpYmxlIixkZXNjcmlwdGlvbjoiQ29udGVudCBpcyBub3QgY2xpcHBlZCwgaS5lLiwgaXQgbWF5IGJlIHJlbmRlcmVkIG91dHNpZGUgdGhlIGNvbnRlbnQgYm94LiJ9XSxzeW50YXg6InZpc2libGUgfCBoaWRkZW4gfCBjbGlwIHwgc2Nyb2xsIHwgYXV0byIscmVsZXZhbmNlOjgzLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9vdmVyZmxvdy15In1dLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgdGhlIGhhbmRsaW5nIG9mIG92ZXJmbG93IGluIHRoZSB2ZXJ0aWNhbCBkaXJlY3Rpb24uIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJwYWQiLGJyb3dzZXJzOlsiRkYzMyJdLHN5bnRheDoiPGludGVnZXI+ICYmIDxzeW1ib2w+IixyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkBjb3VudGVyLXN0eWxlIGRlc2NyaXB0b3IuIFNwZWNpZmllcyBhIOKAnGZpeGVkLXdpZHRo4oCdIGNvdW50ZXIgc3R5bGUsIHdoZXJlIHJlcHJlc2VudGF0aW9ucyBzaG9ydGVyIHRoYW4gdGhlIHBhZCB2YWx1ZSBhcmUgcGFkZGVkIHdpdGggYSBwYXJ0aWN1bGFyIDxzeW1ib2w+IixyZXN0cmljdGlvbnM6WyJpbnRlZ2VyIiwiaW1hZ2UiLCJzdHJpbmciLCJpZGVudGlmaWVyIl19LHtuYW1lOiJwYWRkaW5nIix2YWx1ZXM6W10sc3ludGF4OiJbIDxsZW5ndGg+IHwgPHBlcmNlbnRhZ2U+IF17MSw0fSIscmVsZXZhbmNlOjk2LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9wYWRkaW5nIn1dLGRlc2NyaXB0aW9uOiJTaG9ydGhhbmQgcHJvcGVydHkgdG8gc2V0IHZhbHVlcyBmb3IgdGhlIHRoaWNrbmVzcyBvZiB0aGUgcGFkZGluZyBhcmVhLiBJZiBsZWZ0IGlzIG9taXR0ZWQsIGl0IGlzIHRoZSBzYW1lIGFzIHJpZ2h0LiBJZiBib3R0b20gaXMgb21pdHRlZCBpdCBpcyB0aGUgc2FtZSBhcyB0b3AsIGlmIHJpZ2h0IGlzIG9taXR0ZWQgaXQgaXMgdGhlIHNhbWUgYXMgdG9wLiBUaGUgdmFsdWUgbWF5IG5vdCBiZSBuZWdhdGl2ZS4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsInBlcmNlbnRhZ2UiXX0se25hbWU6InBhZGRpbmctYm90dG9tIixzeW50YXg6IjxsZW5ndGg+IHwgPHBlcmNlbnRhZ2U+IixyZWxldmFuY2U6ODkscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3BhZGRpbmctYm90dG9tIn1dLGRlc2NyaXB0aW9uOiJTaG9ydGhhbmQgcHJvcGVydHkgdG8gc2V0IHZhbHVlcyBmb3IgdGhlIHRoaWNrbmVzcyBvZiB0aGUgcGFkZGluZyBhcmVhLiBJZiBsZWZ0IGlzIG9taXR0ZWQsIGl0IGlzIHRoZSBzYW1lIGFzIHJpZ2h0LiBJZiBib3R0b20gaXMgb21pdHRlZCBpdCBpcyB0aGUgc2FtZSBhcyB0b3AsIGlmIHJpZ2h0IGlzIG9taXR0ZWQgaXQgaXMgdGhlIHNhbWUgYXMgdG9wLiBUaGUgdmFsdWUgbWF5IG5vdCBiZSBuZWdhdGl2ZS4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsInBlcmNlbnRhZ2UiXX0se25hbWU6InBhZGRpbmctYmxvY2stZW5kIixicm93c2VyczpbIkU3OSIsIkZGNDEiLCJTMTIuMSIsIkM2OSIsIk81NiJdLHN5bnRheDoiPCdwYWRkaW5nLWxlZnQnPiIscmVsZXZhbmNlOjUwLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9wYWRkaW5nLWJsb2NrLWVuZCJ9XSxkZXNjcmlwdGlvbjoiTG9naWNhbCAncGFkZGluZy1ib3R0b20nLiBNYXBwaW5nIGRlcGVuZHMgb24gdGhlIHBhcmVudCBlbGVtZW504oCZcyAnd3JpdGluZy1tb2RlJywgJ2RpcmVjdGlvbicsIGFuZCAndGV4dC1vcmllbnRhdGlvbicuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJwZXJjZW50YWdlIl19LHtuYW1lOiJwYWRkaW5nLWJsb2NrLXN0YXJ0Iixicm93c2VyczpbIkU3OSIsIkZGNDEiLCJTMTIuMSIsIkM2OSIsIk81NiJdLHN5bnRheDoiPCdwYWRkaW5nLWxlZnQnPiIscmVsZXZhbmNlOjUwLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9wYWRkaW5nLWJsb2NrLXN0YXJ0In1dLGRlc2NyaXB0aW9uOiJMb2dpY2FsICdwYWRkaW5nLXRvcCcuIE1hcHBpbmcgZGVwZW5kcyBvbiB0aGUgcGFyZW50IGVsZW1lbnTigJlzICd3cml0aW5nLW1vZGUnLCAnZGlyZWN0aW9uJywgYW5kICd0ZXh0LW9yaWVudGF0aW9uJy4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsInBlcmNlbnRhZ2UiXX0se25hbWU6InBhZGRpbmctaW5saW5lLWVuZCIsYnJvd3NlcnM6WyJFNzkiLCJGRjQxIiwiUzEyLjEiLCJDNjkiLCJPNTYiXSxzeW50YXg6IjwncGFkZGluZy1sZWZ0Jz4iLHJlbGV2YW5jZTo1MSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvcGFkZGluZy1pbmxpbmUtZW5kIn1dLGRlc2NyaXB0aW9uOiJMb2dpY2FsICdwYWRkaW5nLXJpZ2h0Jy4gTWFwcGluZyBkZXBlbmRzIG9uIHRoZSBwYXJlbnQgZWxlbWVudOKAmXMgJ3dyaXRpbmctbW9kZScsICdkaXJlY3Rpb24nLCBhbmQgJ3RleHQtb3JpZW50YXRpb24nLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwicGVyY2VudGFnZSJdfSx7bmFtZToicGFkZGluZy1pbmxpbmUtc3RhcnQiLGJyb3dzZXJzOlsiRTc5IiwiRkY0MSIsIlMxMi4xIiwiQzY5IiwiTzU2Il0sc3ludGF4OiI8J3BhZGRpbmctbGVmdCc+IixyZWxldmFuY2U6NTIscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3BhZGRpbmctaW5saW5lLXN0YXJ0In1dLGRlc2NyaXB0aW9uOiJMb2dpY2FsICdwYWRkaW5nLWxlZnQnLiBNYXBwaW5nIGRlcGVuZHMgb24gdGhlIHBhcmVudCBlbGVtZW504oCZcyAnd3JpdGluZy1tb2RlJywgJ2RpcmVjdGlvbicsIGFuZCAndGV4dC1vcmllbnRhdGlvbicuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJwZXJjZW50YWdlIl19LHtuYW1lOiJwYWRkaW5nLWxlZnQiLHN5bnRheDoiPGxlbmd0aD4gfCA8cGVyY2VudGFnZT4iLHJlbGV2YW5jZTo5MSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvcGFkZGluZy1sZWZ0In1dLGRlc2NyaXB0aW9uOiJTaG9ydGhhbmQgcHJvcGVydHkgdG8gc2V0IHZhbHVlcyBmb3IgdGhlIHRoaWNrbmVzcyBvZiB0aGUgcGFkZGluZyBhcmVhLiBJZiBsZWZ0IGlzIG9taXR0ZWQsIGl0IGlzIHRoZSBzYW1lIGFzIHJpZ2h0LiBJZiBib3R0b20gaXMgb21pdHRlZCBpdCBpcyB0aGUgc2FtZSBhcyB0b3AsIGlmIHJpZ2h0IGlzIG9taXR0ZWQgaXQgaXMgdGhlIHNhbWUgYXMgdG9wLiBUaGUgdmFsdWUgbWF5IG5vdCBiZSBuZWdhdGl2ZS4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsInBlcmNlbnRhZ2UiXX0se25hbWU6InBhZGRpbmctcmlnaHQiLHN5bnRheDoiPGxlbmd0aD4gfCA8cGVyY2VudGFnZT4iLHJlbGV2YW5jZTo5MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvcGFkZGluZy1yaWdodCJ9XSxkZXNjcmlwdGlvbjoiU2hvcnRoYW5kIHByb3BlcnR5IHRvIHNldCB2YWx1ZXMgZm9yIHRoZSB0aGlja25lc3Mgb2YgdGhlIHBhZGRpbmcgYXJlYS4gSWYgbGVmdCBpcyBvbWl0dGVkLCBpdCBpcyB0aGUgc2FtZSBhcyByaWdodC4gSWYgYm90dG9tIGlzIG9taXR0ZWQgaXQgaXMgdGhlIHNhbWUgYXMgdG9wLCBpZiByaWdodCBpcyBvbWl0dGVkIGl0IGlzIHRoZSBzYW1lIGFzIHRvcC4gVGhlIHZhbHVlIG1heSBub3QgYmUgbmVnYXRpdmUuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJwZXJjZW50YWdlIl19LHtuYW1lOiJwYWRkaW5nLXRvcCIsc3ludGF4OiI8bGVuZ3RoPiB8IDxwZXJjZW50YWdlPiIscmVsZXZhbmNlOjkwLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9wYWRkaW5nLXRvcCJ9XSxkZXNjcmlwdGlvbjoiU2hvcnRoYW5kIHByb3BlcnR5IHRvIHNldCB2YWx1ZXMgZm9yIHRoZSB0aGlja25lc3Mgb2YgdGhlIHBhZGRpbmcgYXJlYS4gSWYgbGVmdCBpcyBvbWl0dGVkLCBpdCBpcyB0aGUgc2FtZSBhcyByaWdodC4gSWYgYm90dG9tIGlzIG9taXR0ZWQgaXQgaXMgdGhlIHNhbWUgYXMgdG9wLCBpZiByaWdodCBpcyBvbWl0dGVkIGl0IGlzIHRoZSBzYW1lIGFzIHRvcC4gVGhlIHZhbHVlIG1heSBub3QgYmUgbmVnYXRpdmUuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJwZXJjZW50YWdlIl19LHtuYW1lOiJwYWdlLWJyZWFrLWFmdGVyIix2YWx1ZXM6W3tuYW1lOiJhbHdheXMiLGRlc2NyaXB0aW9uOiJBbHdheXMgZm9yY2UgYSBwYWdlIGJyZWFrIGFmdGVyIHRoZSBnZW5lcmF0ZWQgYm94LiJ9LHtuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiTmVpdGhlciBmb3JjZSBub3IgZm9yYmlkIGEgcGFnZSBicmVhayBhZnRlciBnZW5lcmF0ZWQgYm94LiJ9LHtuYW1lOiJhdm9pZCIsZGVzY3JpcHRpb246IkF2b2lkIGEgcGFnZSBicmVhayBhZnRlciB0aGUgZ2VuZXJhdGVkIGJveC4ifSx7bmFtZToibGVmdCIsZGVzY3JpcHRpb246IkZvcmNlIG9uZSBvciB0d28gcGFnZSBicmVha3MgYWZ0ZXIgdGhlIGdlbmVyYXRlZCBib3ggc28gdGhhdCB0aGUgbmV4dCBwYWdlIGlzIGZvcm1hdHRlZCBhcyBhIGxlZnQgcGFnZS4ifSx7bmFtZToicmlnaHQiLGRlc2NyaXB0aW9uOiJGb3JjZSBvbmUgb3IgdHdvIHBhZ2UgYnJlYWtzIGFmdGVyIHRoZSBnZW5lcmF0ZWQgYm94IHNvIHRoYXQgdGhlIG5leHQgcGFnZSBpcyBmb3JtYXR0ZWQgYXMgYSByaWdodCBwYWdlLiJ9XSxzeW50YXg6ImF1dG8gfCBhbHdheXMgfCBhdm9pZCB8IGxlZnQgfCByaWdodCB8IHJlY3RvIHwgdmVyc28iLHJlbGV2YW5jZTo1MixyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvcGFnZS1icmVhay1hZnRlciJ9XSxkZXNjcmlwdGlvbjoiRGVmaW5lcyBydWxlcyBmb3IgcGFnZSBicmVha3MgYWZ0ZXIgYW4gZWxlbWVudC4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6InBhZ2UtYnJlYWstYmVmb3JlIix2YWx1ZXM6W3tuYW1lOiJhbHdheXMiLGRlc2NyaXB0aW9uOiJBbHdheXMgZm9yY2UgYSBwYWdlIGJyZWFrIGJlZm9yZSB0aGUgZ2VuZXJhdGVkIGJveC4ifSx7bmFtZToiYXV0byIsZGVzY3JpcHRpb246Ik5laXRoZXIgZm9yY2Ugbm9yIGZvcmJpZCBhIHBhZ2UgYnJlYWsgYmVmb3JlIHRoZSBnZW5lcmF0ZWQgYm94LiJ9LHtuYW1lOiJhdm9pZCIsZGVzY3JpcHRpb246IkF2b2lkIGEgcGFnZSBicmVhayBiZWZvcmUgdGhlIGdlbmVyYXRlZCBib3guIn0se25hbWU6ImxlZnQiLGRlc2NyaXB0aW9uOiJGb3JjZSBvbmUgb3IgdHdvIHBhZ2UgYnJlYWtzIGJlZm9yZSB0aGUgZ2VuZXJhdGVkIGJveCBzbyB0aGF0IHRoZSBuZXh0IHBhZ2UgaXMgZm9ybWF0dGVkIGFzIGEgbGVmdCBwYWdlLiJ9LHtuYW1lOiJyaWdodCIsZGVzY3JpcHRpb246IkZvcmNlIG9uZSBvciB0d28gcGFnZSBicmVha3MgYmVmb3JlIHRoZSBnZW5lcmF0ZWQgYm94IHNvIHRoYXQgdGhlIG5leHQgcGFnZSBpcyBmb3JtYXR0ZWQgYXMgYSByaWdodCBwYWdlLiJ9XSxzeW50YXg6ImF1dG8gfCBhbHdheXMgfCBhdm9pZCB8IGxlZnQgfCByaWdodCB8IHJlY3RvIHwgdmVyc28iLHJlbGV2YW5jZTo1MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvcGFnZS1icmVhay1iZWZvcmUifV0sZGVzY3JpcHRpb246IkRlZmluZXMgcnVsZXMgZm9yIHBhZ2UgYnJlYWtzIGJlZm9yZSBhbiBlbGVtZW50LiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToicGFnZS1icmVhay1pbnNpZGUiLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJOZWl0aGVyIGZvcmNlIG5vciBmb3JiaWQgYSBwYWdlIGJyZWFrIGluc2lkZSB0aGUgZ2VuZXJhdGVkIGJveC4ifSx7bmFtZToiYXZvaWQiLGRlc2NyaXB0aW9uOiJBdm9pZCBhIHBhZ2UgYnJlYWsgaW5zaWRlIHRoZSBnZW5lcmF0ZWQgYm94LiJ9XSxzeW50YXg6ImF1dG8gfCBhdm9pZCIscmVsZXZhbmNlOjUzLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9wYWdlLWJyZWFrLWluc2lkZSJ9XSxkZXNjcmlwdGlvbjoiRGVmaW5lcyBydWxlcyBmb3IgcGFnZSBicmVha3MgaW5zaWRlIGFuIGVsZW1lbnQuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJwYWludC1vcmRlciIsYnJvd3NlcnM6WyJFMTciLCJGRjYwIiwiUzgiLCJDMzUiLCJPMjIiXSx2YWx1ZXM6W3tuYW1lOiJmaWxsIn0se25hbWU6Im1hcmtlcnMifSx7bmFtZToibm9ybWFsIixkZXNjcmlwdGlvbjoiVGhlIGVsZW1lbnQgaXMgcGFpbnRlZCB3aXRoIHRoZSBzdGFuZGFyZCBvcmRlciBvZiBwYWludGluZyBvcGVyYXRpb25zOiB0aGUgJ2ZpbGwnIGlzIHBhaW50ZWQgZmlyc3QsIHRoZW4gaXRzICdzdHJva2UnIGFuZCBmaW5hbGx5IGl0cyBtYXJrZXJzLiJ9LHtuYW1lOiJzdHJva2UifV0sc3ludGF4OiJub3JtYWwgfCBbIGZpbGwgfHwgc3Ryb2tlIHx8IG1hcmtlcnMgXSIscmVsZXZhbmNlOjUwLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9wYWludC1vcmRlciJ9XSxkZXNjcmlwdGlvbjoiQ29udHJvbHMgdGhlIG9yZGVyIHRoYXQgdGhlIHRocmVlIHBhaW50IG9wZXJhdGlvbnMgdGhhdCBzaGFwZXMgYW5kIHRleHQgYXJlIHJlbmRlcmVkIHdpdGg6IHRoZWlyIGZpbGwsIHRoZWlyIHN0cm9rZSBhbmQgYW55IG1hcmtlcnMgdGhleSBtaWdodCBoYXZlLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToicGVyc3BlY3RpdmUiLHZhbHVlczpbe25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJObyBwZXJzcGVjdGl2ZSB0cmFuc2Zvcm0gaXMgYXBwbGllZC4ifV0sc3ludGF4OiJub25lIHwgPGxlbmd0aD4iLHJlbGV2YW5jZTo1NSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvcGVyc3BlY3RpdmUifV0sZGVzY3JpcHRpb246IkFwcGxpZXMgdGhlIHNhbWUgdHJhbnNmb3JtIGFzIHRoZSBwZXJzcGVjdGl2ZSg8bnVtYmVyPikgdHJhbnNmb3JtIGZ1bmN0aW9uLCBleGNlcHQgdGhhdCBpdCBhcHBsaWVzIG9ubHkgdG8gdGhlIHBvc2l0aW9uZWQgb3IgdHJhbnNmb3JtZWQgY2hpbGRyZW4gb2YgdGhlIGVsZW1lbnQsIG5vdCB0byB0aGUgdHJhbnNmb3JtIG9uIHRoZSBlbGVtZW50IGl0c2VsZi4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsImVudW0iXX0se25hbWU6InBlcnNwZWN0aXZlLW9yaWdpbiIsc3ludGF4OiI8cG9zaXRpb24+IixyZWxldmFuY2U6NTEscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3BlcnNwZWN0aXZlLW9yaWdpbiJ9XSxkZXNjcmlwdGlvbjoiRXN0YWJsaXNoZXMgdGhlIG9yaWdpbiBmb3IgdGhlIHBlcnNwZWN0aXZlIHByb3BlcnR5LiBJdCBlZmZlY3RpdmVseSBzZXRzIHRoZSBYIGFuZCBZIHBvc2l0aW9uIGF0IHdoaWNoIHRoZSB2aWV3ZXIgYXBwZWFycyB0byBiZSBsb29raW5nIGF0IHRoZSBjaGlsZHJlbiBvZiB0aGUgZWxlbWVudC4iLHJlc3RyaWN0aW9uczpbInBvc2l0aW9uIiwicGVyY2VudGFnZSIsImxlbmd0aCJdfSx7bmFtZToicG9pbnRlci1ldmVudHMiLHZhbHVlczpbe25hbWU6ImFsbCIsZGVzY3JpcHRpb246IlRoZSBnaXZlbiBlbGVtZW50IGNhbiBiZSB0aGUgdGFyZ2V0IGVsZW1lbnQgZm9yIHBvaW50ZXIgZXZlbnRzIHdoZW5ldmVyIHRoZSBwb2ludGVyIGlzIG92ZXIgZWl0aGVyIHRoZSBpbnRlcmlvciBvciB0aGUgcGVyaW1ldGVyIG9mIHRoZSBlbGVtZW50LiJ9LHtuYW1lOiJmaWxsIixkZXNjcmlwdGlvbjoiVGhlIGdpdmVuIGVsZW1lbnQgY2FuIGJlIHRoZSB0YXJnZXQgZWxlbWVudCBmb3IgcG9pbnRlciBldmVudHMgd2hlbmV2ZXIgdGhlIHBvaW50ZXIgaXMgb3ZlciB0aGUgaW50ZXJpb3Igb2YgdGhlIGVsZW1lbnQuIn0se25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJUaGUgZ2l2ZW4gZWxlbWVudCBkb2VzIG5vdCByZWNlaXZlIHBvaW50ZXIgZXZlbnRzLiJ9LHtuYW1lOiJwYWludGVkIixkZXNjcmlwdGlvbjonVGhlIGdpdmVuIGVsZW1lbnQgY2FuIGJlIHRoZSB0YXJnZXQgZWxlbWVudCBmb3IgcG9pbnRlciBldmVudHMgd2hlbiB0aGUgcG9pbnRlciBpcyBvdmVyIGEgInBhaW50ZWQiIGFyZWEuICd9LHtuYW1lOiJzdHJva2UiLGRlc2NyaXB0aW9uOiJUaGUgZ2l2ZW4gZWxlbWVudCBjYW4gYmUgdGhlIHRhcmdldCBlbGVtZW50IGZvciBwb2ludGVyIGV2ZW50cyB3aGVuZXZlciB0aGUgcG9pbnRlciBpcyBvdmVyIHRoZSBwZXJpbWV0ZXIgb2YgdGhlIGVsZW1lbnQuIn0se25hbWU6InZpc2libGUiLGRlc2NyaXB0aW9uOiJUaGUgZ2l2ZW4gZWxlbWVudCBjYW4gYmUgdGhlIHRhcmdldCBlbGVtZW50IGZvciBwb2ludGVyIGV2ZW50cyB3aGVuIHRoZSDigJh2aXNpYmlsaXR54oCZIHByb3BlcnR5IGlzIHNldCB0byB2aXNpYmxlIGFuZCB0aGUgcG9pbnRlciBpcyBvdmVyIGVpdGhlciB0aGUgaW50ZXJpb3Igb3IgdGhlIHBlcmltZXRlciBvZiB0aGUgZWxlbWVudC4ifSx7bmFtZToidmlzaWJsZUZpbGwiLGRlc2NyaXB0aW9uOiJUaGUgZ2l2ZW4gZWxlbWVudCBjYW4gYmUgdGhlIHRhcmdldCBlbGVtZW50IGZvciBwb2ludGVyIGV2ZW50cyB3aGVuIHRoZSDigJh2aXNpYmlsaXR54oCZIHByb3BlcnR5IGlzIHNldCB0byB2aXNpYmxlIGFuZCB3aGVuIHRoZSBwb2ludGVyIGlzIG92ZXIgdGhlIGludGVyaW9yIG9mIHRoZSBlbGVtZW50LiJ9LHtuYW1lOiJ2aXNpYmxlUGFpbnRlZCIsZGVzY3JpcHRpb246IlRoZSBnaXZlbiBlbGVtZW50IGNhbiBiZSB0aGUgdGFyZ2V0IGVsZW1lbnQgZm9yIHBvaW50ZXIgZXZlbnRzIHdoZW4gdGhlIOKAmHZpc2liaWxpdHnigJkgcHJvcGVydHkgaXMgc2V0IHRvIHZpc2libGUgYW5kIHdoZW4gdGhlIHBvaW50ZXIgaXMgb3ZlciBhIOKAmHBhaW50ZWTigJkgYXJlYS4ifSx7bmFtZToidmlzaWJsZVN0cm9rZSIsZGVzY3JpcHRpb246IlRoZSBnaXZlbiBlbGVtZW50IGNhbiBiZSB0aGUgdGFyZ2V0IGVsZW1lbnQgZm9yIHBvaW50ZXIgZXZlbnRzIHdoZW4gdGhlIOKAmHZpc2liaWxpdHnigJkgcHJvcGVydHkgaXMgc2V0IHRvIHZpc2libGUgYW5kIHdoZW4gdGhlIHBvaW50ZXIgaXMgb3ZlciB0aGUgcGVyaW1ldGVyIG9mIHRoZSBlbGVtZW50LiJ9XSxzeW50YXg6ImF1dG8gfCBub25lIHwgdmlzaWJsZVBhaW50ZWQgfCB2aXNpYmxlRmlsbCB8IHZpc2libGVTdHJva2UgfCB2aXNpYmxlIHwgcGFpbnRlZCB8IGZpbGwgfCBzdHJva2UgfCBhbGwgfCBpbmhlcml0IixyZWxldmFuY2U6ODIscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3BvaW50ZXItZXZlbnRzIn1dLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgdW5kZXIgd2hhdCBjaXJjdW1zdGFuY2VzIGEgZ2l2ZW4gZWxlbWVudCBjYW4gYmUgdGhlIHRhcmdldCBlbGVtZW50IGZvciBhIHBvaW50ZXIgZXZlbnQuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJwb3NpdGlvbiIsdmFsdWVzOlt7bmFtZToiYWJzb2x1dGUiLGRlc2NyaXB0aW9uOiJUaGUgYm94J3MgcG9zaXRpb24gKGFuZCBwb3NzaWJseSBzaXplKSBpcyBzcGVjaWZpZWQgd2l0aCB0aGUgJ3RvcCcsICdyaWdodCcsICdib3R0b20nLCBhbmQgJ2xlZnQnIHByb3BlcnRpZXMuIFRoZXNlIHByb3BlcnRpZXMgc3BlY2lmeSBvZmZzZXRzIHdpdGggcmVzcGVjdCB0byB0aGUgYm94J3MgJ2NvbnRhaW5pbmcgYmxvY2snLiJ9LHtuYW1lOiJmaXhlZCIsZGVzY3JpcHRpb246IlRoZSBib3gncyBwb3NpdGlvbiBpcyBjYWxjdWxhdGVkIGFjY29yZGluZyB0byB0aGUgJ2Fic29sdXRlJyBtb2RlbCwgYnV0IGluIGFkZGl0aW9uLCB0aGUgYm94IGlzIGZpeGVkIHdpdGggcmVzcGVjdCB0byBzb21lIHJlZmVyZW5jZS4gQXMgd2l0aCB0aGUgJ2Fic29sdXRlJyBtb2RlbCwgdGhlIGJveCdzIG1hcmdpbnMgZG8gbm90IGNvbGxhcHNlIHdpdGggYW55IG90aGVyIG1hcmdpbnMuIn0se25hbWU6Ii1tcy1wYWdlIixkZXNjcmlwdGlvbjoiVGhlIGJveCdzIHBvc2l0aW9uIGlzIGNhbGN1bGF0ZWQgYWNjb3JkaW5nIHRvIHRoZSAnYWJzb2x1dGUnIG1vZGVsLiJ9LHtuYW1lOiJyZWxhdGl2ZSIsZGVzY3JpcHRpb246IlRoZSBib3gncyBwb3NpdGlvbiBpcyBjYWxjdWxhdGVkIGFjY29yZGluZyB0byB0aGUgbm9ybWFsIGZsb3cgKHRoaXMgaXMgY2FsbGVkIHRoZSBwb3NpdGlvbiBpbiBub3JtYWwgZmxvdykuIFRoZW4gdGhlIGJveCBpcyBvZmZzZXQgcmVsYXRpdmUgdG8gaXRzIG5vcm1hbCBwb3NpdGlvbi4ifSx7bmFtZToic3RhdGljIixkZXNjcmlwdGlvbjoiVGhlIGJveCBpcyBhIG5vcm1hbCBib3gsIGxhaWQgb3V0IGFjY29yZGluZyB0byB0aGUgbm9ybWFsIGZsb3cuIFRoZSAndG9wJywgJ3JpZ2h0JywgJ2JvdHRvbScsIGFuZCAnbGVmdCcgcHJvcGVydGllcyBkbyBub3QgYXBwbHkuIn0se25hbWU6InN0aWNreSIsZGVzY3JpcHRpb246IlRoZSBib3gncyBwb3NpdGlvbiBpcyBjYWxjdWxhdGVkIGFjY29yZGluZyB0byB0aGUgbm9ybWFsIGZsb3cuIFRoZW4gdGhlIGJveCBpcyBvZmZzZXQgcmVsYXRpdmUgdG8gaXRzIGZsb3cgcm9vdCBhbmQgY29udGFpbmluZyBibG9jayBhbmQgaW4gYWxsIGNhc2VzLCBpbmNsdWRpbmcgdGFibGUgZWxlbWVudHMsIGRvZXMgbm90IGFmZmVjdCB0aGUgcG9zaXRpb24gb2YgYW55IGZvbGxvd2luZyBib3hlcy4ifSx7bmFtZToiLXdlYmtpdC1zdGlja3kiLGRlc2NyaXB0aW9uOiJUaGUgYm94J3MgcG9zaXRpb24gaXMgY2FsY3VsYXRlZCBhY2NvcmRpbmcgdG8gdGhlIG5vcm1hbCBmbG93LiBUaGVuIHRoZSBib3ggaXMgb2Zmc2V0IHJlbGF0aXZlIHRvIGl0cyBmbG93IHJvb3QgYW5kIGNvbnRhaW5pbmcgYmxvY2sgYW5kIGluIGFsbCBjYXNlcywgaW5jbHVkaW5nIHRhYmxlIGVsZW1lbnRzLCBkb2VzIG5vdCBhZmZlY3QgdGhlIHBvc2l0aW9uIG9mIGFueSBmb2xsb3dpbmcgYm94ZXMuIn1dLHN5bnRheDoic3RhdGljIHwgcmVsYXRpdmUgfCBhYnNvbHV0ZSB8IHN0aWNreSB8IGZpeGVkIixyZWxldmFuY2U6OTYscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3Bvc2l0aW9uIn1dLGRlc2NyaXB0aW9uOiJUaGUgcG9zaXRpb24gQ1NTIHByb3BlcnR5IHNldHMgaG93IGFuIGVsZW1lbnQgaXMgcG9zaXRpb25lZCBpbiBhIGRvY3VtZW50LiBUaGUgdG9wLCByaWdodCwgYm90dG9tLCBhbmQgbGVmdCBwcm9wZXJ0aWVzIGRldGVybWluZSB0aGUgZmluYWwgbG9jYXRpb24gb2YgcG9zaXRpb25lZCBlbGVtZW50cy4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6InByZWZpeCIsYnJvd3NlcnM6WyJGRjMzIl0sc3ludGF4OiI8c3ltYm9sPiIscmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJAY291bnRlci1zdHlsZSBkZXNjcmlwdG9yLiBTcGVjaWZpZXMgYSA8c3ltYm9sPiB0aGF0IGlzIHByZXBlbmRlZCB0byB0aGUgbWFya2VyIHJlcHJlc2VudGF0aW9uLiIscmVzdHJpY3Rpb25zOlsiaW1hZ2UiLCJzdHJpbmciLCJpZGVudGlmaWVyIl19LHtuYW1lOiJxdW90ZXMiLHZhbHVlczpbe25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJUaGUgJ29wZW4tcXVvdGUnIGFuZCAnY2xvc2UtcXVvdGUnIHZhbHVlcyBvZiB0aGUgJ2NvbnRlbnQnIHByb3BlcnR5IHByb2R1Y2Ugbm8gcXVvdGF0aW9ucyBtYXJrcywgYXMgaWYgdGhleSB3ZXJlICduby1vcGVuLXF1b3RlJyBhbmQgJ25vLWNsb3NlLXF1b3RlJyByZXNwZWN0aXZlbHkuIn1dLHN5bnRheDoibm9uZSB8IGF1dG8gfCBbIDxzdHJpbmc+IDxzdHJpbmc+IF0rIixyZWxldmFuY2U6NTMscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3F1b3RlcyJ9XSxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHF1b3RhdGlvbiBtYXJrcyBmb3IgYW55IG51bWJlciBvZiBlbWJlZGRlZCBxdW90YXRpb25zLiIscmVzdHJpY3Rpb25zOlsic3RyaW5nIl19LHtuYW1lOiJyYW5nZSIsYnJvd3NlcnM6WyJGRjMzIl0sdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IlRoZSByYW5nZSBkZXBlbmRzIG9uIHRoZSBjb3VudGVyIHN5c3RlbS4ifSx7bmFtZToiaW5maW5pdGUiLGRlc2NyaXB0aW9uOiJJZiB1c2VkIGFzIHRoZSBmaXJzdCB2YWx1ZSBpbiBhIHJhbmdlLCBpdCByZXByZXNlbnRzIG5lZ2F0aXZlIGluZmluaXR5OyBpZiB1c2VkIGFzIHRoZSBzZWNvbmQgdmFsdWUsIGl0IHJlcHJlc2VudHMgcG9zaXRpdmUgaW5maW5pdHkuIn1dLHN5bnRheDoiWyBbIDxpbnRlZ2VyPiB8IGluZmluaXRlIF17Mn0gXSMgfCBhdXRvIixyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkBjb3VudGVyLXN0eWxlIGRlc2NyaXB0b3IuIERlZmluZXMgdGhlIHJhbmdlcyBvdmVyIHdoaWNoIHRoZSBjb3VudGVyIHN0eWxlIGlzIGRlZmluZWQuIixyZXN0cmljdGlvbnM6WyJpbnRlZ2VyIiwiZW51bSJdfSx7bmFtZToicmVzaXplIixicm93c2VyczpbIkU3OSIsIkZGNCIsIlMzIiwiQzEiLCJPMTIuMSJdLHZhbHVlczpbe25hbWU6ImJvdGgiLGRlc2NyaXB0aW9uOiJUaGUgVUEgcHJlc2VudHMgYSBiaWRpcmVjdGlvbmFsIHJlc2l6aW5nIG1lY2hhbmlzbSB0byBhbGxvdyB0aGUgdXNlciB0byBhZGp1c3QgYm90aCB0aGUgaGVpZ2h0IGFuZCB0aGUgd2lkdGggb2YgdGhlIGVsZW1lbnQuIn0se25hbWU6Imhvcml6b250YWwiLGRlc2NyaXB0aW9uOiJUaGUgVUEgcHJlc2VudHMgYSB1bmlkaXJlY3Rpb25hbCBob3Jpem9udGFsIHJlc2l6aW5nIG1lY2hhbmlzbSB0byBhbGxvdyB0aGUgdXNlciB0byBhZGp1c3Qgb25seSB0aGUgd2lkdGggb2YgdGhlIGVsZW1lbnQuIn0se25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJUaGUgVUEgZG9lcyBub3QgcHJlc2VudCBhIHJlc2l6aW5nIG1lY2hhbmlzbSBvbiB0aGUgZWxlbWVudCwgYW5kIHRoZSB1c2VyIGlzIGdpdmVuIG5vIGRpcmVjdCBtYW5pcHVsYXRpb24gbWVjaGFuaXNtIHRvIHJlc2l6ZSB0aGUgZWxlbWVudC4ifSx7bmFtZToidmVydGljYWwiLGRlc2NyaXB0aW9uOiJUaGUgVUEgcHJlc2VudHMgYSB1bmlkaXJlY3Rpb25hbCB2ZXJ0aWNhbCByZXNpemluZyBtZWNoYW5pc20gdG8gYWxsb3cgdGhlIHVzZXIgdG8gYWRqdXN0IG9ubHkgdGhlIGhlaWdodCBvZiB0aGUgZWxlbWVudC4ifV0sc3ludGF4OiJub25lIHwgYm90aCB8IGhvcml6b250YWwgfCB2ZXJ0aWNhbCB8IGJsb2NrIHwgaW5saW5lIixyZWxldmFuY2U6NjEscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3Jlc2l6ZSJ9XSxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHdoZXRoZXIgb3Igbm90IGFuIGVsZW1lbnQgaXMgcmVzaXphYmxlIGJ5IHRoZSB1c2VyLCBhbmQgaWYgc28sIGFsb25nIHdoaWNoIGF4aXMvYXhlcy4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6InJpZ2h0Iix2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiRm9yIG5vbi1yZXBsYWNlZCBlbGVtZW50cywgdGhlIGVmZmVjdCBvZiB0aGlzIHZhbHVlIGRlcGVuZHMgb24gd2hpY2ggb2YgcmVsYXRlZCBwcm9wZXJ0aWVzIGhhdmUgdGhlIHZhbHVlICdhdXRvJyBhcyB3ZWxsIn1dLHN5bnRheDoiPGxlbmd0aD4gfCA8cGVyY2VudGFnZT4gfCBhdXRvIixyZWxldmFuY2U6OTEscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3JpZ2h0In1dLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgaG93IGZhciBhbiBhYnNvbHV0ZWx5IHBvc2l0aW9uZWQgYm94J3MgcmlnaHQgbWFyZ2luIGVkZ2UgaXMgb2Zmc2V0IHRvIHRoZSBsZWZ0IG9mIHRoZSByaWdodCBlZGdlIG9mIHRoZSBib3gncyAnY29udGFpbmluZyBibG9jaycuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJwZXJjZW50YWdlIl19LHtuYW1lOiJydWJ5LWFsaWduIixicm93c2VyczpbIkZGMzgiXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIixicm93c2VyczpbIkZGMzgiXSxkZXNjcmlwdGlvbjoiVGhlIHVzZXIgYWdlbnQgZGV0ZXJtaW5lcyBob3cgdGhlIHJ1YnkgY29udGVudHMgYXJlIGFsaWduZWQuIFRoaXMgaXMgdGhlIGluaXRpYWwgdmFsdWUuIn0se25hbWU6ImNlbnRlciIsZGVzY3JpcHRpb246IlRoZSBydWJ5IGNvbnRlbnQgaXMgY2VudGVyZWQgd2l0aGluIGl0cyBib3guIn0se25hbWU6ImRpc3RyaWJ1dGUtbGV0dGVyIixicm93c2VyczpbIkZGMzgiXSxkZXNjcmlwdGlvbjoiSWYgdGhlIHdpZHRoIG9mIHRoZSBydWJ5IHRleHQgaXMgc21hbGxlciB0aGFuIHRoYXQgb2YgdGhlIGJhc2UsIHRoZW4gdGhlIHJ1YnkgdGV4dCBjb250ZW50cyBhcmUgZXZlbmx5IGRpc3RyaWJ1dGVkIGFjcm9zcyB0aGUgd2lkdGggb2YgdGhlIGJhc2UsIHdpdGggdGhlIGZpcnN0IGFuZCBsYXN0IHJ1YnkgdGV4dCBnbHlwaHMgbGluaW5nIHVwIHdpdGggdGhlIGNvcnJlc3BvbmRpbmcgZmlyc3QgYW5kIGxhc3QgYmFzZSBnbHlwaHMuIElmIHRoZSB3aWR0aCBvZiB0aGUgcnVieSB0ZXh0IGlzIGF0IGxlYXN0IHRoZSB3aWR0aCBvZiB0aGUgYmFzZSwgdGhlbiB0aGUgbGV0dGVycyBvZiB0aGUgYmFzZSBhcmUgZXZlbmx5IGRpc3RyaWJ1dGVkIGFjcm9zcyB0aGUgd2lkdGggb2YgdGhlIHJ1YnkgdGV4dC4ifSx7bmFtZToiZGlzdHJpYnV0ZS1zcGFjZSIsYnJvd3NlcnM6WyJGRjM4Il0sZGVzY3JpcHRpb246IklmIHRoZSB3aWR0aCBvZiB0aGUgcnVieSB0ZXh0IGlzIHNtYWxsZXIgdGhhbiB0aGF0IG9mIHRoZSBiYXNlLCB0aGVuIHRoZSBydWJ5IHRleHQgY29udGVudHMgYXJlIGV2ZW5seSBkaXN0cmlidXRlZCBhY3Jvc3MgdGhlIHdpZHRoIG9mIHRoZSBiYXNlLCB3aXRoIGEgY2VydGFpbiBhbW91bnQgb2Ygd2hpdGUgc3BhY2UgcHJlY2VkaW5nIHRoZSBmaXJzdCBhbmQgZm9sbG93aW5nIHRoZSBsYXN0IGNoYXJhY3RlciBpbiB0aGUgcnVieSB0ZXh0LiBUaGF0IGFtb3VudCBvZiB3aGl0ZSBzcGFjZSBpcyBub3JtYWxseSBlcXVhbCB0byBoYWxmIHRoZSBhbW91bnQgb2YgaW50ZXItY2hhcmFjdGVyIHNwYWNlIG9mIHRoZSBydWJ5IHRleHQuIn0se25hbWU6ImxlZnQiLGRlc2NyaXB0aW9uOiJUaGUgcnVieSB0ZXh0IGNvbnRlbnQgaXMgYWxpZ25lZCB3aXRoIHRoZSBzdGFydCBlZGdlIG9mIHRoZSBiYXNlLiJ9LHtuYW1lOiJsaW5lLWVkZ2UiLGJyb3dzZXJzOlsiRkYzOCJdLGRlc2NyaXB0aW9uOiJJZiB0aGUgcnVieSB0ZXh0IGlzIG5vdCBhZGphY2VudCB0byBhIGxpbmUgZWRnZSwgaXQgaXMgYWxpZ25lZCBhcyBpbiAnYXV0bycuIElmIGl0IGlzIGFkamFjZW50IHRvIGEgbGluZSBlZGdlLCB0aGVuIGl0IGlzIHN0aWxsIGFsaWduZWQgYXMgaW4gYXV0bywgYnV0IHRoZSBzaWRlIG9mIHRoZSBydWJ5IHRleHQgdGhhdCB0b3VjaGVzIHRoZSBlbmQgb2YgdGhlIGxpbmUgaXMgbGluZWQgdXAgd2l0aCB0aGUgY29ycmVzcG9uZGluZyBlZGdlIG9mIHRoZSBiYXNlLiJ9LHtuYW1lOiJyaWdodCIsYnJvd3NlcnM6WyJGRjM4Il0sZGVzY3JpcHRpb246IlRoZSBydWJ5IHRleHQgY29udGVudCBpcyBhbGlnbmVkIHdpdGggdGhlIGVuZCBlZGdlIG9mIHRoZSBiYXNlLiJ9LHtuYW1lOiJzdGFydCIsYnJvd3NlcnM6WyJGRjM4Il0sZGVzY3JpcHRpb246IlRoZSBydWJ5IHRleHQgY29udGVudCBpcyBhbGlnbmVkIHdpdGggdGhlIHN0YXJ0IGVkZ2Ugb2YgdGhlIGJhc2UuIn0se25hbWU6InNwYWNlLWJldHdlZW4iLGJyb3dzZXJzOlsiRkYzOCJdLGRlc2NyaXB0aW9uOiJUaGUgcnVieSBjb250ZW50IGV4cGFuZHMgYXMgZGVmaW5lZCBmb3Igbm9ybWFsIHRleHQganVzdGlmaWNhdGlvbiAoYXMgZGVmaW5lZCBieSAndGV4dC1qdXN0aWZ5JyksIn0se25hbWU6InNwYWNlLWFyb3VuZCIsYnJvd3NlcnM6WyJGRjM4Il0sZGVzY3JpcHRpb246IkFzIGZvciAnc3BhY2UtYmV0d2VlbicgZXhjZXB0IHRoYXQgdGhlcmUgZXhpc3RzIGFuIGV4dHJhIGp1c3RpZmljYXRpb24gb3Bwb3J0dW5pdGllcyB3aG9zZSBzcGFjZSBpcyBkaXN0cmlidXRlZCBoYWxmIGJlZm9yZSBhbmQgaGFsZiBhZnRlciB0aGUgcnVieSBjb250ZW50LiJ9XSxzdGF0dXM6ImV4cGVyaW1lbnRhbCIsc3ludGF4OiJzdGFydCB8IGNlbnRlciB8IHNwYWNlLWJldHdlZW4gfCBzcGFjZS1hcm91bmQiLHJlbGV2YW5jZTo1MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvcnVieS1hbGlnbiJ9XSxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGhvdyB0ZXh0IGlzIGRpc3RyaWJ1dGVkIHdpdGhpbiB0aGUgdmFyaW91cyBydWJ5IGJveGVzIHdoZW4gdGhlaXIgY29udGVudHMgZG8gbm90IGV4YWN0bHkgZmlsbCB0aGVpciByZXNwZWN0aXZlIGJveGVzLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToicnVieS1vdmVyaGFuZyIsYnJvd3NlcnM6WyJGRjEwIiwiSUU1Il0sdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IlRoZSBydWJ5IHRleHQgY2FuIG92ZXJoYW5nIHRleHQgYWRqYWNlbnQgdG8gdGhlIGJhc2Ugb24gZWl0aGVyIHNpZGUuIFRoaXMgaXMgdGhlIGluaXRpYWwgdmFsdWUuIn0se25hbWU6ImVuZCIsZGVzY3JpcHRpb246IlRoZSBydWJ5IHRleHQgY2FuIG92ZXJoYW5nIHRoZSB0ZXh0IHRoYXQgZm9sbG93cyBpdC4ifSx7bmFtZToibm9uZSIsZGVzY3JpcHRpb246IlRoZSBydWJ5IHRleHQgY2Fubm90IG92ZXJoYW5nIGFueSB0ZXh0IGFkamFjZW50IHRvIGl0cyBiYXNlLCBvbmx5IGl0cyBvd24gYmFzZS4ifSx7bmFtZToic3RhcnQiLGRlc2NyaXB0aW9uOiJUaGUgcnVieSB0ZXh0IGNhbiBvdmVyaGFuZyB0aGUgdGV4dCB0aGF0IHByZWNlZGVzIGl0LiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkRldGVybWluZXMgd2hldGhlciwgYW5kIG9uIHdoaWNoIHNpZGUsIHJ1YnkgdGV4dCBpcyBhbGxvd2VkIHRvIHBhcnRpYWxseSBvdmVyaGFuZyBhbnkgYWRqYWNlbnQgdGV4dCBpbiBhZGRpdGlvbiB0byBpdHMgb3duIGJhc2UsIHdoZW4gdGhlIHJ1YnkgdGV4dCBpcyB3aWRlciB0aGFuIHRoZSBydWJ5IGJhc2UuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJydWJ5LXBvc2l0aW9uIixicm93c2VyczpbIkU4NCIsIkZGMzgiLCJTNyIsIkM4NCIsIk83MCJdLHZhbHVlczpbe25hbWU6ImFmdGVyIixkZXNjcmlwdGlvbjoiVGhlIHJ1YnkgdGV4dCBhcHBlYXJzIGFmdGVyIHRoZSBiYXNlLiBUaGlzIGlzIGEgcmVsYXRpdmVseSByYXJlIHNldHRpbmcgdXNlZCBpbiBpZGVvZ3JhcGhpYyBFYXN0IEFzaWFuIHdyaXRpbmcgc3lzdGVtcywgbW9zdCBlYXNpbHkgZm91bmQgaW4gZWR1Y2F0aW9uYWwgdGV4dC4ifSx7bmFtZToiYmVmb3JlIixkZXNjcmlwdGlvbjoiVGhlIHJ1YnkgdGV4dCBhcHBlYXJzIGJlZm9yZSB0aGUgYmFzZS4gVGhpcyBpcyB0aGUgbW9zdCBjb21tb24gc2V0dGluZyB1c2VkIGluIGlkZW9ncmFwaGljIEVhc3QgQXNpYW4gd3JpdGluZyBzeXN0ZW1zLiJ9LHtuYW1lOiJpbmxpbmUifSx7bmFtZToicmlnaHQiLGRlc2NyaXB0aW9uOiJUaGUgcnVieSB0ZXh0IGFwcGVhcnMgb24gdGhlIHJpZ2h0IG9mIHRoZSBiYXNlLiBVbmxpa2UgJ2JlZm9yZScgYW5kICdhZnRlcicsIHRoaXMgdmFsdWUgaXMgbm90IHJlbGF0aXZlIHRvIHRoZSB0ZXh0IGZsb3cgZGlyZWN0aW9uLiJ9XSxzdGF0dXM6ImV4cGVyaW1lbnRhbCIsc3ludGF4OiJbIGFsdGVybmF0ZSB8fCBbIG92ZXIgfCB1bmRlciBdIF0gfCBpbnRlci1jaGFyYWN0ZXIiLHJlbGV2YW5jZTo1MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvcnVieS1wb3NpdGlvbiJ9XSxkZXNjcmlwdGlvbjoiVXNlZCBieSB0aGUgcGFyZW50IG9mIGVsZW1lbnRzIHdpdGggZGlzcGxheTogcnVieS10ZXh0IHRvIGNvbnRyb2wgdGhlIHBvc2l0aW9uIG9mIHRoZSBydWJ5IHRleHQgd2l0aCByZXNwZWN0IHRvIGl0cyBiYXNlLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToicnVieS1zcGFuIixicm93c2VyczpbIkZGMTAiXSx2YWx1ZXM6W3tuYW1lOiJhdHRyKHgpIixkZXNjcmlwdGlvbjoiVGhlIHZhbHVlIG9mIGF0dHJpYnV0ZSAneCcgaXMgYSBzdHJpbmcgdmFsdWUuIFRoZSBzdHJpbmcgdmFsdWUgaXMgZXZhbHVhdGVkIGFzIGEgPG51bWJlcj4gdG8gZGV0ZXJtaW5lIHRoZSBudW1iZXIgb2YgcnVieSBiYXNlIGVsZW1lbnRzIHRvIGJlIHNwYW5uZWQgYnkgdGhlIGFubm90YXRpb24gZWxlbWVudC4ifSx7bmFtZToibm9uZSIsZGVzY3JpcHRpb246Ik5vIHNwYW5uaW5nLiBUaGUgY29tcHV0ZWQgdmFsdWUgaXMgJzEnLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkRldGVybWluZXMgd2hldGhlciwgYW5kIG9uIHdoaWNoIHNpZGUsIHJ1YnkgdGV4dCBpcyBhbGxvd2VkIHRvIHBhcnRpYWxseSBvdmVyaGFuZyBhbnkgYWRqYWNlbnQgdGV4dCBpbiBhZGRpdGlvbiB0byBpdHMgb3duIGJhc2UsIHdoZW4gdGhlIHJ1YnkgdGV4dCBpcyB3aWRlciB0aGFuIHRoZSBydWJ5IGJhc2UuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJzY3JvbGxiYXItM2RsaWdodC1jb2xvciIsYnJvd3NlcnM6WyJJRTUiXSxyZWxldmFuY2U6NTAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3Njcm9sbGJhci0zZGxpZ2h0LWNvbG9yIn1dLGRlc2NyaXB0aW9uOiJEZXRlcm1pbmVzIHRoZSBjb2xvciBvZiB0aGUgdG9wIGFuZCBsZWZ0IGVkZ2VzIG9mIHRoZSBzY3JvbGwgYm94IGFuZCBzY3JvbGwgYXJyb3dzIG9mIGEgc2Nyb2xsIGJhci4iLHJlc3RyaWN0aW9uczpbImNvbG9yIl19LHtuYW1lOiJzY3JvbGxiYXItYXJyb3ctY29sb3IiLGJyb3dzZXJzOlsiSUU1Il0scmVsZXZhbmNlOjUwLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9zY3JvbGxiYXItYXJyb3ctY29sb3IifV0sZGVzY3JpcHRpb246IkRldGVybWluZXMgdGhlIGNvbG9yIG9mIHRoZSBhcnJvdyBlbGVtZW50cyBvZiBhIHNjcm9sbCBhcnJvdy4iLHJlc3RyaWN0aW9uczpbImNvbG9yIl19LHtuYW1lOiJzY3JvbGxiYXItYmFzZS1jb2xvciIsYnJvd3NlcnM6WyJJRTUiXSxyZWxldmFuY2U6NTAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3Njcm9sbGJhci1iYXNlLWNvbG9yIn1dLGRlc2NyaXB0aW9uOiJEZXRlcm1pbmVzIHRoZSBjb2xvciBvZiB0aGUgbWFpbiBlbGVtZW50cyBvZiBhIHNjcm9sbCBiYXIsIHdoaWNoIGluY2x1ZGUgdGhlIHNjcm9sbCBib3gsIHRyYWNrLCBhbmQgc2Nyb2xsIGFycm93cy4iLHJlc3RyaWN0aW9uczpbImNvbG9yIl19LHtuYW1lOiJzY3JvbGxiYXItZGFya3NoYWRvdy1jb2xvciIsYnJvd3NlcnM6WyJJRTUiXSxyZWxldmFuY2U6NTAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3Njcm9sbGJhci1kYXJrc2hhZG93LWNvbG9yIn1dLGRlc2NyaXB0aW9uOiJEZXRlcm1pbmVzIHRoZSBjb2xvciBvZiB0aGUgZ3V0dGVyIG9mIGEgc2Nyb2xsIGJhci4iLHJlc3RyaWN0aW9uczpbImNvbG9yIl19LHtuYW1lOiJzY3JvbGxiYXItZmFjZS1jb2xvciIsYnJvd3NlcnM6WyJJRTUiXSxyZWxldmFuY2U6NTAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3Njcm9sbGJhci1mYWNlLWNvbG9yIn1dLGRlc2NyaXB0aW9uOiJEZXRlcm1pbmVzIHRoZSBjb2xvciBvZiB0aGUgc2Nyb2xsIGJveCBhbmQgc2Nyb2xsIGFycm93cyBvZiBhIHNjcm9sbCBiYXIuIixyZXN0cmljdGlvbnM6WyJjb2xvciJdfSx7bmFtZToic2Nyb2xsYmFyLWhpZ2hsaWdodC1jb2xvciIsYnJvd3NlcnM6WyJJRTUiXSxyZWxldmFuY2U6NTAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3Njcm9sbGJhci1oaWdobGlnaHQtY29sb3IifV0sZGVzY3JpcHRpb246IkRldGVybWluZXMgdGhlIGNvbG9yIG9mIHRoZSB0b3AgYW5kIGxlZnQgZWRnZXMgb2YgdGhlIHNjcm9sbCBib3ggYW5kIHNjcm9sbCBhcnJvd3Mgb2YgYSBzY3JvbGwgYmFyLiIscmVzdHJpY3Rpb25zOlsiY29sb3IiXX0se25hbWU6InNjcm9sbGJhci1zaGFkb3ctY29sb3IiLGJyb3dzZXJzOlsiSUU1Il0scmVsZXZhbmNlOjUwLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9zY3JvbGxiYXItc2hhZG93LWNvbG9yIn1dLGRlc2NyaXB0aW9uOiJEZXRlcm1pbmVzIHRoZSBjb2xvciBvZiB0aGUgYm90dG9tIGFuZCByaWdodCBlZGdlcyBvZiB0aGUgc2Nyb2xsIGJveCBhbmQgc2Nyb2xsIGFycm93cyBvZiBhIHNjcm9sbCBiYXIuIixyZXN0cmljdGlvbnM6WyJjb2xvciJdfSx7bmFtZToic2Nyb2xsYmFyLXRyYWNrLWNvbG9yIixicm93c2VyczpbIklFNiJdLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiRGV0ZXJtaW5lcyB0aGUgY29sb3Igb2YgdGhlIHRyYWNrIGVsZW1lbnQgb2YgYSBzY3JvbGwgYmFyLiIscmVzdHJpY3Rpb25zOlsiY29sb3IiXX0se25hbWU6InNjcm9sbC1iZWhhdmlvciIsYnJvd3NlcnM6WyJFNzkiLCJGRjM2IiwiUzE1LjQiLCJDNjEiLCJPNDgiXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiU2Nyb2xscyBpbiBhbiBpbnN0YW50IGZhc2hpb24uIn0se25hbWU6InNtb290aCIsZGVzY3JpcHRpb246IlNjcm9sbHMgaW4gYSBzbW9vdGggZmFzaGlvbiB1c2luZyBhIHVzZXItYWdlbnQtZGVmaW5lZCB0aW1pbmcgZnVuY3Rpb24gYW5kIHRpbWUgcGVyaW9kLiJ9XSxzeW50YXg6ImF1dG8gfCBzbW9vdGgiLHJlbGV2YW5jZTo1MixyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1Mvc2Nyb2xsLWJlaGF2aW9yIn1dLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgdGhlIHNjcm9sbGluZyBiZWhhdmlvciBmb3IgYSBzY3JvbGxpbmcgYm94LCB3aGVuIHNjcm9sbGluZyBoYXBwZW5zIGR1ZSB0byBuYXZpZ2F0aW9uIG9yIENTU09NIHNjcm9sbGluZyBBUElzLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToic2Nyb2xsLXNuYXAtY29vcmRpbmF0ZSIsYnJvd3NlcnM6WyJGRjM5Il0sdmFsdWVzOlt7bmFtZToibm9uZSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyB0aGF0IHRoaXMgZWxlbWVudCBkb2VzIG5vdCBjb250cmlidXRlIGEgc25hcCBwb2ludC4ifV0sc3RhdHVzOiJvYnNvbGV0ZSIsc3ludGF4OiJub25lIHwgPHBvc2l0aW9uPiMiLHJlbGV2YW5jZTowLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9zY3JvbGwtc25hcC1jb29yZGluYXRlIn1dLGRlc2NyaXB0aW9uOiJEZWZpbmVzIHRoZSB4IGFuZCB5IGNvb3JkaW5hdGUgd2l0aGluIHRoZSBlbGVtZW50IHdoaWNoIHdpbGwgYWxpZ24gd2l0aCB0aGUgbmVhcmVzdCBhbmNlc3RvciBzY3JvbGwgY29udGFpbmVy4oCZcyBzbmFwLWRlc3RpbmF0aW9uIGZvciB0aGUgcmVzcGVjdGl2ZSBheGlzLiIscmVzdHJpY3Rpb25zOlsicG9zaXRpb24iLCJsZW5ndGgiLCJwZXJjZW50YWdlIiwiZW51bSJdfSx7bmFtZToic2Nyb2xsLXNuYXAtZGVzdGluYXRpb24iLGJyb3dzZXJzOlsiRkYzOSJdLHN0YXR1czoib2Jzb2xldGUiLHN5bnRheDoiPHBvc2l0aW9uPiIscmVsZXZhbmNlOjAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3Njcm9sbC1zbmFwLWRlc3RpbmF0aW9uIn1dLGRlc2NyaXB0aW9uOiJEZWZpbmUgdGhlIHggYW5kIHkgY29vcmRpbmF0ZSB3aXRoaW4gdGhlIHNjcm9sbCBjb250YWluZXLigJlzIHZpc3VhbCB2aWV3cG9ydCB3aGljaCBlbGVtZW50IHNuYXAgcG9pbnRzIHdpbGwgYWxpZ24gd2l0aC4iLHJlc3RyaWN0aW9uczpbInBvc2l0aW9uIiwibGVuZ3RoIiwicGVyY2VudGFnZSJdfSx7bmFtZToic2Nyb2xsLXNuYXAtcG9pbnRzLXgiLGJyb3dzZXJzOlsiRkYzOSIsIlM5Il0sdmFsdWVzOlt7bmFtZToibm9uZSIsZGVzY3JpcHRpb246Ik5vIHNuYXAgcG9pbnRzIGFyZSBkZWZpbmVkIGJ5IHRoaXMgc2Nyb2xsIGNvbnRhaW5lci4ifSx7bmFtZToicmVwZWF0KCkiLGRlc2NyaXB0aW9uOiJEZWZpbmVzIGFuIGludGVydmFsIGF0IHdoaWNoIHNuYXAgcG9pbnRzIGFyZSBkZWZpbmVkLCBzdGFydGluZyBmcm9tIHRoZSBjb250YWluZXLigJlzIHJlbGV2YW50IHN0YXJ0IGVkZ2UuIn1dLHN0YXR1czoib2Jzb2xldGUiLHN5bnRheDoibm9uZSB8IHJlcGVhdCggPGxlbmd0aC1wZXJjZW50YWdlPiApIixyZWxldmFuY2U6MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1Mvc2Nyb2xsLXNuYXAtcG9pbnRzLXgifV0sZGVzY3JpcHRpb246IkRlZmluZXMgdGhlIHBvc2l0aW9uaW5nIG9mIHNuYXAgcG9pbnRzIGFsb25nIHRoZSB4IGF4aXMgb2YgdGhlIHNjcm9sbCBjb250YWluZXIgaXQgaXMgYXBwbGllZCB0by4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6InNjcm9sbC1zbmFwLXBvaW50cy15Iixicm93c2VyczpbIkZGMzkiLCJTOSJdLHZhbHVlczpbe25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJObyBzbmFwIHBvaW50cyBhcmUgZGVmaW5lZCBieSB0aGlzIHNjcm9sbCBjb250YWluZXIuIn0se25hbWU6InJlcGVhdCgpIixkZXNjcmlwdGlvbjoiRGVmaW5lcyBhbiBpbnRlcnZhbCBhdCB3aGljaCBzbmFwIHBvaW50cyBhcmUgZGVmaW5lZCwgc3RhcnRpbmcgZnJvbSB0aGUgY29udGFpbmVy4oCZcyByZWxldmFudCBzdGFydCBlZGdlLiJ9XSxzdGF0dXM6Im9ic29sZXRlIixzeW50YXg6Im5vbmUgfCByZXBlYXQoIDxsZW5ndGgtcGVyY2VudGFnZT4gKSIscmVsZXZhbmNlOjAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3Njcm9sbC1zbmFwLXBvaW50cy15In1dLGRlc2NyaXB0aW9uOiJEZWZpbmVzIHRoZSBwb3NpdGlvbmluZyBvZiBzbmFwIHBvaW50cyBhbG9uZyB0aGUgeSBheGlzIG9mIHRoZSBzY3JvbGwgY29udGFpbmVyIGl0IGlzIGFwcGxpZWQgdG8uIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJzY3JvbGwtc25hcC10eXBlIix2YWx1ZXM6W3tuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiVGhlIHZpc3VhbCB2aWV3cG9ydCBvZiB0aGlzIHNjcm9sbCBjb250YWluZXIgbXVzdCBpZ25vcmUgc25hcCBwb2ludHMsIGlmIGFueSwgd2hlbiBzY3JvbGxlZC4ifSx7bmFtZToibWFuZGF0b3J5IixkZXNjcmlwdGlvbjoiVGhlIHZpc3VhbCB2aWV3cG9ydCBvZiB0aGlzIHNjcm9sbCBjb250YWluZXIgaXMgZ3VhcmFudGVlZCB0byByZXN0IG9uIGEgc25hcCBwb2ludCB3aGVuIHRoZXJlIGFyZSBubyBhY3RpdmUgc2Nyb2xsaW5nIG9wZXJhdGlvbnMuIn0se25hbWU6InByb3hpbWl0eSIsZGVzY3JpcHRpb246IlRoZSB2aXN1YWwgdmlld3BvcnQgb2YgdGhpcyBzY3JvbGwgY29udGFpbmVyIG1heSBjb21lIHRvIHJlc3Qgb24gYSBzbmFwIHBvaW50IGF0IHRoZSB0ZXJtaW5hdGlvbiBvZiBhIHNjcm9sbCBhdCB0aGUgZGlzY3JldGlvbiBvZiB0aGUgVUEgZ2l2ZW4gdGhlIHBhcmFtZXRlcnMgb2YgdGhlIHNjcm9sbC4ifV0sc3ludGF4OiJub25lIHwgWyB4IHwgeSB8IGJsb2NrIHwgaW5saW5lIHwgYm90aCBdIFsgbWFuZGF0b3J5IHwgcHJveGltaXR5IF0/IixyZWxldmFuY2U6NTIscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3Njcm9sbC1zbmFwLXR5cGUifV0sZGVzY3JpcHRpb246IkRlZmluZXMgaG93IHN0cmljdGx5IHNuYXAgcG9pbnRzIGFyZSBlbmZvcmNlZCBvbiB0aGUgc2Nyb2xsIGNvbnRhaW5lci4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6InNoYXBlLWltYWdlLXRocmVzaG9sZCIsYnJvd3NlcnM6WyJFNzkiLCJGRjYyIiwiUzEwLjEiLCJDMzciLCJPMjQiXSxzeW50YXg6IjxhbHBoYS12YWx1ZT4iLHJlbGV2YW5jZTo1MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1Mvc2hhcGUtaW1hZ2UtdGhyZXNob2xkIn1dLGRlc2NyaXB0aW9uOiJEZWZpbmVzIHRoZSBhbHBoYSBjaGFubmVsIHRocmVzaG9sZCB1c2VkIHRvIGV4dHJhY3QgdGhlIHNoYXBlIHVzaW5nIGFuIGltYWdlLiBBIHZhbHVlIG9mIDAuNSBtZWFucyB0aGF0IHRoZSBzaGFwZSB3aWxsIGVuY2xvc2UgYWxsIHRoZSBwaXhlbHMgdGhhdCBhcmUgbW9yZSB0aGFuIDUwJSBvcGFxdWUuIixyZXN0cmljdGlvbnM6WyJudW1iZXIiXX0se25hbWU6InNoYXBlLW1hcmdpbiIsYnJvd3NlcnM6WyJFNzkiLCJGRjYyIiwiUzEwLjEiLCJDMzciLCJPMjQiXSxzeW50YXg6IjxsZW5ndGgtcGVyY2VudGFnZT4iLHJlbGV2YW5jZTo1MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1Mvc2hhcGUtbWFyZ2luIn1dLGRlc2NyaXB0aW9uOiJBZGRzIGEgbWFyZ2luIHRvIGEgJ3NoYXBlLW91dHNpZGUnLiBUaGlzIGRlZmluZXMgYSBuZXcgc2hhcGUgdGhhdCBpcyB0aGUgc21hbGxlc3QgY29udG91ciB0aGF0IGluY2x1ZGVzIGFsbCB0aGUgcG9pbnRzIHRoYXQgYXJlIHRoZSAnc2hhcGUtbWFyZ2luJyBkaXN0YW5jZSBvdXR3YXJkIGluIHRoZSBwZXJwZW5kaWN1bGFyIGRpcmVjdGlvbiBmcm9tIGEgcG9pbnQgb24gdGhlIHVuZGVybHlpbmcgc2hhcGUuIixyZXN0cmljdGlvbnM6WyJ1cmwiLCJsZW5ndGgiLCJwZXJjZW50YWdlIl19LHtuYW1lOiJzaGFwZS1vdXRzaWRlIixicm93c2VyczpbIkU3OSIsIkZGNjIiLCJTMTAuMSIsIkMzNyIsIk8yNCJdLHZhbHVlczpbe25hbWU6Im1hcmdpbi1ib3giLGRlc2NyaXB0aW9uOiJUaGUgYmFja2dyb3VuZCBpcyBwYWludGVkIHdpdGhpbiAoY2xpcHBlZCB0bykgdGhlIG1hcmdpbiBib3guIn0se25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJUaGUgZmxvYXQgYXJlYSBpcyB1bmFmZmVjdGVkLiJ9XSxzeW50YXg6Im5vbmUgfCBbIDxzaGFwZS1ib3g+IHx8IDxiYXNpYy1zaGFwZT4gXSB8IDxpbWFnZT4iLHJlbGV2YW5jZTo1MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1Mvc2hhcGUtb3V0c2lkZSJ9XSxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGFuIG9ydGhvZ29uYWwgcm90YXRpb24gdG8gYmUgYXBwbGllZCB0byBhbiBpbWFnZSBiZWZvcmUgaXQgaXMgbGFpZCBvdXQuIixyZXN0cmljdGlvbnM6WyJpbWFnZSIsImJveCIsInNoYXBlIiwiZW51bSJdfSx7bmFtZToic2hhcGUtcmVuZGVyaW5nIix2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiU3VwcHJlc3NlcyBhdXJhbCByZW5kZXJpbmcuIn0se25hbWU6ImNyaXNwRWRnZXMiLGRlc2NyaXB0aW9uOiJFbXBoYXNpemUgdGhlIGNvbnRyYXN0IGJldHdlZW4gY2xlYW4gZWRnZXMgb2YgYXJ0d29yayBvdmVyIHJlbmRlcmluZyBzcGVlZCBhbmQgZ2VvbWV0cmljIHByZWNpc2lvbi4ifSx7bmFtZToiZ2VvbWV0cmljUHJlY2lzaW9uIixkZXNjcmlwdGlvbjoiRW1waGFzaXplIGdlb21ldHJpYyBwcmVjaXNpb24gb3ZlciBzcGVlZCBhbmQgY3Jpc3AgZWRnZXMuIn0se25hbWU6Im9wdGltaXplU3BlZWQiLGRlc2NyaXB0aW9uOiJFbXBoYXNpemUgcmVuZGVyaW5nIHNwZWVkIG92ZXIgZ2VvbWV0cmljIHByZWNpc2lvbiBhbmQgY3Jpc3AgZWRnZXMuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiUHJvdmlkZXMgaGludHMgYWJvdXQgd2hhdCB0cmFkZW9mZnMgdG8gbWFrZSBhcyBpdCByZW5kZXJzIHZlY3RvciBncmFwaGljcyBlbGVtZW50cyBzdWNoIGFzIDxwYXRoPiBlbGVtZW50cyBhbmQgYmFzaWMgc2hhcGVzIHN1Y2ggYXMgY2lyY2xlcyBhbmQgcmVjdGFuZ2xlcy4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6InNpemUiLGJyb3dzZXJzOlsiQyIsIk84Il0sc3ludGF4OiI8bGVuZ3RoPnsxLDJ9IHwgYXV0byB8IFsgPHBhZ2Utc2l6ZT4gfHwgWyBwb3J0cmFpdCB8IGxhbmRzY2FwZSBdIF0iLHJlbGV2YW5jZTo1MyxkZXNjcmlwdGlvbjoiVGhlIHNpemUgQ1NTIGF0LXJ1bGUgZGVzY3JpcHRvciwgdXNlZCB3aXRoIHRoZSBAcGFnZSBhdC1ydWxlLCBkZWZpbmVzIHRoZSBzaXplIGFuZCBvcmllbnRhdGlvbiBvZiB0aGUgYm94IHdoaWNoIGlzIHVzZWQgdG8gcmVwcmVzZW50IGEgcGFnZS4gTW9zdCBvZiB0aGUgdGltZSwgdGhpcyBzaXplIGNvcnJlc3BvbmRzIHRvIHRoZSB0YXJnZXQgc2l6ZSBvZiB0aGUgcHJpbnRlZCBwYWdlIGlmIGFwcGxpY2FibGUuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiXX0se25hbWU6InNyYyIsdmFsdWVzOlt7bmFtZToidXJsKCkiLGRlc2NyaXB0aW9uOiJSZWZlcmVuY2UgZm9udCBieSBVUkwifSx7bmFtZToiZm9ybWF0KCkiLGRlc2NyaXB0aW9uOiJPcHRpb25hbCBoaW50IGRlc2NyaWJpbmcgdGhlIGZvcm1hdCBvZiB0aGUgZm9udCByZXNvdXJjZS4ifSx7bmFtZToibG9jYWwoKSIsZGVzY3JpcHRpb246IkZvcm1hdC1zcGVjaWZpYyBzdHJpbmcgdGhhdCBpZGVudGlmaWVzIGEgbG9jYWxseSBhdmFpbGFibGUgY29weSBvZiBhIGdpdmVuIGZvbnQuIn1dLHN5bnRheDoiWyA8dXJsPiBbIGZvcm1hdCggPHN0cmluZz4jICkgXT8gfCBsb2NhbCggPGZhbWlseS1uYW1lPiApIF0jIixyZWxldmFuY2U6ODcsZGVzY3JpcHRpb246IkBmb250LWZhY2UgZGVzY3JpcHRvci4gU3BlY2lmaWVzIHRoZSByZXNvdXJjZSBjb250YWluaW5nIGZvbnQgZGF0YS4gSXQgaXMgcmVxdWlyZWQsIHdoZXRoZXIgdGhlIGZvbnQgaXMgZG93bmxvYWRhYmxlIG9yIGxvY2FsbHkgaW5zdGFsbGVkLiIscmVzdHJpY3Rpb25zOlsiZW51bSIsInVybCIsImlkZW50aWZpZXIiXX0se25hbWU6InN0b3AtY29sb3IiLHJlbGV2YW5jZTo1MSxkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHdoYXQgY29sb3IgdG8gdXNlIGF0IHRoYXQgZ3JhZGllbnQgc3RvcC4iLHJlc3RyaWN0aW9uczpbImNvbG9yIl19LHtuYW1lOiJzdG9wLW9wYWNpdHkiLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiRGVmaW5lcyB0aGUgb3BhY2l0eSBvZiBhIGdpdmVuIGdyYWRpZW50IHN0b3AuIixyZXN0cmljdGlvbnM6WyJudW1iZXIoMC0xKSJdfSx7bmFtZToic3Ryb2tlIix2YWx1ZXM6W3tuYW1lOiJ1cmwoKSIsZGVzY3JpcHRpb246IkEgVVJMIHJlZmVyZW5jZSB0byBhIHBhaW50IHNlcnZlciBlbGVtZW50LCB3aGljaCBpcyBhbiBlbGVtZW50IHRoYXQgZGVmaW5lcyBhIHBhaW50IHNlcnZlcjog4oCYaGF0Y2jigJksIOKAmGxpbmVhckdyYWRpZW504oCZLCDigJhtZXNo4oCZLCDigJhwYXR0ZXJu4oCZLCDigJhyYWRpYWxHcmFkaWVudOKAmSBhbmQg4oCYc29saWRjb2xvcuKAmS4ifSx7bmFtZToibm9uZSIsZGVzY3JpcHRpb246Ik5vIHBhaW50IGlzIGFwcGxpZWQgaW4gdGhpcyBsYXllci4ifV0scmVsZXZhbmNlOjY1LGRlc2NyaXB0aW9uOiJQYWludHMgYWxvbmcgdGhlIG91dGxpbmUgb2YgdGhlIGdpdmVuIGdyYXBoaWNhbCBlbGVtZW50LiIscmVzdHJpY3Rpb25zOlsiY29sb3IiLCJlbnVtIiwidXJsIl19LHtuYW1lOiJzdHJva2UtZGFzaGFycmF5Iix2YWx1ZXM6W3tuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHRoYXQgbm8gZGFzaGluZyBpcyB1c2VkLiJ9XSxyZWxldmFuY2U6NTgsZGVzY3JpcHRpb246IkNvbnRyb2xzIHRoZSBwYXR0ZXJuIG9mIGRhc2hlcyBhbmQgZ2FwcyB1c2VkIHRvIHN0cm9rZSBwYXRocy4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsInBlcmNlbnRhZ2UiLCJudW1iZXIiLCJlbnVtIl19LHtuYW1lOiJzdHJva2UtZGFzaG9mZnNldCIscmVsZXZhbmNlOjU5LGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgdGhlIGRpc3RhbmNlIGludG8gdGhlIGRhc2ggcGF0dGVybiB0byBzdGFydCB0aGUgZGFzaC4iLHJlc3RyaWN0aW9uczpbInBlcmNlbnRhZ2UiLCJsZW5ndGgiXX0se25hbWU6InN0cm9rZS1saW5lY2FwIix2YWx1ZXM6W3tuYW1lOiJidXR0IixkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHRoYXQgdGhlIHN0cm9rZSBmb3IgZWFjaCBzdWJwYXRoIGRvZXMgbm90IGV4dGVuZCBiZXlvbmQgaXRzIHR3byBlbmRwb2ludHMuIn0se25hbWU6InJvdW5kIixkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHRoYXQgYXQgZWFjaCBlbmQgb2YgZWFjaCBzdWJwYXRoLCB0aGUgc2hhcGUgcmVwcmVzZW50aW5nIHRoZSBzdHJva2Ugd2lsbCBiZSBleHRlbmRlZCBieSBhIGhhbGYgY2lyY2xlIHdpdGggYSByYWRpdXMgZXF1YWwgdG8gdGhlIHN0cm9rZSB3aWR0aC4ifSx7bmFtZToic3F1YXJlIixkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHRoYXQgYXQgdGhlIGVuZCBvZiBlYWNoIHN1YnBhdGgsIHRoZSBzaGFwZSByZXByZXNlbnRpbmcgdGhlIHN0cm9rZSB3aWxsIGJlIGV4dGVuZGVkIGJ5IGEgcmVjdGFuZ2xlIHdpdGggdGhlIHNhbWUgd2lkdGggYXMgdGhlIHN0cm9rZSB3aWR0aCBhbmQgd2hvc2UgbGVuZ3RoIGlzIGhhbGYgb2YgdGhlIHN0cm9rZSB3aWR0aC4ifV0scmVsZXZhbmNlOjUzLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgdGhlIHNoYXBlIHRvIGJlIHVzZWQgYXQgdGhlIGVuZCBvZiBvcGVuIHN1YnBhdGhzIHdoZW4gdGhleSBhcmUgc3Ryb2tlZC4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6InN0cm9rZS1saW5lam9pbiIsdmFsdWVzOlt7bmFtZToiYmV2ZWwiLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgdGhhdCBhIGJldmVsbGVkIGNvcm5lciBpcyB0byBiZSB1c2VkIHRvIGpvaW4gcGF0aCBzZWdtZW50cy4ifSx7bmFtZToibWl0ZXIiLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgdGhhdCBhIHNoYXJwIGNvcm5lciBpcyB0byBiZSB1c2VkIHRvIGpvaW4gcGF0aCBzZWdtZW50cy4ifSx7bmFtZToicm91bmQiLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgdGhhdCBhIHJvdW5kIGNvcm5lciBpcyB0byBiZSB1c2VkIHRvIGpvaW4gcGF0aCBzZWdtZW50cy4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgdGhlIHNoYXBlIHRvIGJlIHVzZWQgYXQgdGhlIGNvcm5lcnMgb2YgcGF0aHMgb3IgYmFzaWMgc2hhcGVzIHdoZW4gdGhleSBhcmUgc3Ryb2tlZC4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6InN0cm9rZS1taXRlcmxpbWl0IixyZWxldmFuY2U6NTEsZGVzY3JpcHRpb246IldoZW4gdHdvIGxpbmUgc2VnbWVudHMgbWVldCBhdCBhIHNoYXJwIGFuZ2xlIGFuZCBtaXRlciBqb2lucyBoYXZlIGJlZW4gc3BlY2lmaWVkIGZvciAnc3Ryb2tlLWxpbmVqb2luJywgaXQgaXMgcG9zc2libGUgZm9yIHRoZSBtaXRlciB0byBleHRlbmQgZmFyIGJleW9uZCB0aGUgdGhpY2tuZXNzIG9mIHRoZSBsaW5lIHN0cm9raW5nIHRoZSBwYXRoLiIscmVzdHJpY3Rpb25zOlsibnVtYmVyIl19LHtuYW1lOiJzdHJva2Utb3BhY2l0eSIscmVsZXZhbmNlOjUyLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgdGhlIG9wYWNpdHkgb2YgdGhlIHBhaW50aW5nIG9wZXJhdGlvbiB1c2VkIHRvIHN0cm9rZSB0aGUgY3VycmVudCBvYmplY3QuIixyZXN0cmljdGlvbnM6WyJudW1iZXIoMC0xKSJdfSx7bmFtZToic3Ryb2tlLXdpZHRoIixyZWxldmFuY2U6NjEsZGVzY3JpcHRpb246IlNwZWNpZmllcyB0aGUgd2lkdGggb2YgdGhlIHN0cm9rZSBvbiB0aGUgY3VycmVudCBvYmplY3QuIixyZXN0cmljdGlvbnM6WyJwZXJjZW50YWdlIiwibGVuZ3RoIl19LHtuYW1lOiJzdWZmaXgiLGJyb3dzZXJzOlsiRkYzMyJdLHN5bnRheDoiPHN5bWJvbD4iLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiQGNvdW50ZXItc3R5bGUgZGVzY3JpcHRvci4gU3BlY2lmaWVzIGEgPHN5bWJvbD4gdGhhdCBpcyBhcHBlbmRlZCB0byB0aGUgbWFya2VyIHJlcHJlc2VudGF0aW9uLiIscmVzdHJpY3Rpb25zOlsiaW1hZ2UiLCJzdHJpbmciLCJpZGVudGlmaWVyIl19LHtuYW1lOiJzeXN0ZW0iLGJyb3dzZXJzOlsiRkYzMyJdLHZhbHVlczpbe25hbWU6ImFkZGl0aXZlIixkZXNjcmlwdGlvbjoiUmVwcmVzZW50cyDigJxzaWduLXZhbHVl4oCdIG51bWJlcmluZyBzeXN0ZW1zLCB3aGljaCwgcmF0aGVyIHRoYW4gdXNpbmcgcmV1c2luZyBkaWdpdHMgaW4gZGlmZmVyZW50IHBvc2l0aW9ucyB0byBjaGFuZ2UgdGhlaXIgdmFsdWUsIGRlZmluZSBhZGRpdGlvbmFsIGRpZ2l0cyB3aXRoIG11Y2ggbGFyZ2VyIHZhbHVlcywgc28gdGhhdCB0aGUgdmFsdWUgb2YgdGhlIG51bWJlciBjYW4gYmUgb2J0YWluZWQgYnkgYWRkaW5nIGFsbCB0aGUgZGlnaXRzIHRvZ2V0aGVyLiJ9LHtuYW1lOiJhbHBoYWJldGljIixkZXNjcmlwdGlvbjonSW50ZXJwcmV0cyB0aGUgbGlzdCBvZiBjb3VudGVyIHN5bWJvbHMgYXMgZGlnaXRzIHRvIGFuIGFscGhhYmV0aWMgbnVtYmVyaW5nIHN5c3RlbSwgc2ltaWxhciB0byB0aGUgZGVmYXVsdCBsb3dlci1hbHBoYSBjb3VudGVyIHN0eWxlLCB3aGljaCB3cmFwcyBmcm9tICJhIiwgImIiLCAiYyIsIHRvICJhYSIsICJhYiIsICJhYyIuJ30se25hbWU6ImN5Y2xpYyIsZGVzY3JpcHRpb246IkN5Y2xlcyByZXBlYXRlZGx5IHRocm91Z2ggaXRzIHByb3ZpZGVkIHN5bWJvbHMsIGxvb3BpbmcgYmFjayB0byB0aGUgYmVnaW5uaW5nIHdoZW4gaXQgcmVhY2hlcyB0aGUgZW5kIG9mIHRoZSBsaXN0LiJ9LHtuYW1lOiJleHRlbmRzIixkZXNjcmlwdGlvbjoiVXNlIHRoZSBhbGdvcml0aG0gb2YgYW5vdGhlciBjb3VudGVyIHN0eWxlLCBidXQgYWx0ZXIgb3RoZXIgYXNwZWN0cy4ifSx7bmFtZToiZml4ZWQiLGRlc2NyaXB0aW9uOiJSdW5zIHRocm91Z2ggaXRzIGxpc3Qgb2YgY291bnRlciBzeW1ib2xzIG9uY2UsIHRoZW4gZmFsbHMgYmFjay4ifSx7bmFtZToibnVtZXJpYyIsZGVzY3JpcHRpb246ImludGVycHJldHMgdGhlIGxpc3Qgb2YgY291bnRlciBzeW1ib2xzIGFzIGRpZ2l0cyB0byBhIFwicGxhY2UtdmFsdWVcIiBudW1iZXJpbmcgc3lzdGVtLCBzaW1pbGFyIHRvIHRoZSBkZWZhdWx0ICdkZWNpbWFsJyBjb3VudGVyIHN0eWxlLiJ9LHtuYW1lOiJzeW1ib2xpYyIsZGVzY3JpcHRpb246IkN5Y2xlcyByZXBlYXRlZGx5IHRocm91Z2ggaXRzIHByb3ZpZGVkIHN5bWJvbHMsIGRvdWJsaW5nLCB0cmlwbGluZywgZXRjLiB0aGUgc3ltYm9scyBvbiBlYWNoIHN1Y2Nlc3NpdmUgcGFzcyB0aHJvdWdoIHRoZSBsaXN0LiJ9XSxzeW50YXg6ImN5Y2xpYyB8IG51bWVyaWMgfCBhbHBoYWJldGljIHwgc3ltYm9saWMgfCBhZGRpdGl2ZSB8IFsgZml4ZWQgPGludGVnZXI+PyBdIHwgWyBleHRlbmRzIDxjb3VudGVyLXN0eWxlLW5hbWU+IF0iLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiQGNvdW50ZXItc3R5bGUgZGVzY3JpcHRvci4gU3BlY2lmaWVzIHdoaWNoIGFsZ29yaXRobSB3aWxsIGJlIHVzZWQgdG8gY29uc3RydWN0IHRoZSBjb3VudGVy4oCZcyByZXByZXNlbnRhdGlvbiBiYXNlZCBvbiB0aGUgY291bnRlciB2YWx1ZS4iLHJlc3RyaWN0aW9uczpbImVudW0iLCJpbnRlZ2VyIl19LHtuYW1lOiJzeW1ib2xzIixicm93c2VyczpbIkZGMzMiXSxzeW50YXg6IjxzeW1ib2w+KyIscmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJAY291bnRlci1zdHlsZSBkZXNjcmlwdG9yLiBTcGVjaWZpZXMgdGhlIHN5bWJvbHMgdXNlZCBieSB0aGUgbWFya2VyLWNvbnN0cnVjdGlvbiBhbGdvcml0aG0gc3BlY2lmaWVkIGJ5IHRoZSBzeXN0ZW0gZGVzY3JpcHRvci4iLHJlc3RyaWN0aW9uczpbImltYWdlIiwic3RyaW5nIiwiaWRlbnRpZmllciJdfSx7bmFtZToidGFibGUtbGF5b3V0Iix2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiVXNlIGFueSBhdXRvbWF0aWMgdGFibGUgbGF5b3V0IGFsZ29yaXRobS4ifSx7bmFtZToiZml4ZWQiLGRlc2NyaXB0aW9uOiJVc2UgdGhlIGZpeGVkIHRhYmxlIGxheW91dCBhbGdvcml0aG0uIn1dLHN5bnRheDoiYXV0byB8IGZpeGVkIixyZWxldmFuY2U6NjAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3RhYmxlLWxheW91dCJ9XSxkZXNjcmlwdGlvbjoiQ29udHJvbHMgdGhlIGFsZ29yaXRobSB1c2VkIHRvIGxheSBvdXQgdGhlIHRhYmxlIGNlbGxzLCByb3dzLCBhbmQgY29sdW1ucy4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6InRhYi1zaXplIixicm93c2VyczpbIkU3OSIsIkZGOTEiLCJTNyIsIkMyMSIsIk8xNSJdLHN5bnRheDoiPGludGVnZXI+IHwgPGxlbmd0aD4iLHJlbGV2YW5jZTo1MSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvdGFiLXNpemUifV0sZGVzY3JpcHRpb246IkRldGVybWluZXMgdGhlIHdpZHRoIG9mIHRoZSB0YWIgY2hhcmFjdGVyIChVKzAwMDkpLCBpbiBzcGFjZSBjaGFyYWN0ZXJzIChVKzAwMjApLCB3aGVuIHJlbmRlcmVkLiIscmVzdHJpY3Rpb25zOlsiaW50ZWdlciIsImxlbmd0aCJdfSx7bmFtZToidGV4dC1hbGlnbiIsdmFsdWVzOlt7bmFtZToiY2VudGVyIixkZXNjcmlwdGlvbjoiVGhlIGlubGluZSBjb250ZW50cyBhcmUgY2VudGVyZWQgd2l0aGluIHRoZSBsaW5lIGJveC4ifSx7bmFtZToiZW5kIixkZXNjcmlwdGlvbjoiVGhlIGlubGluZSBjb250ZW50cyBhcmUgYWxpZ25lZCB0byB0aGUgZW5kIGVkZ2Ugb2YgdGhlIGxpbmUgYm94LiJ9LHtuYW1lOiJqdXN0aWZ5IixkZXNjcmlwdGlvbjoiVGhlIHRleHQgaXMganVzdGlmaWVkIGFjY29yZGluZyB0byB0aGUgbWV0aG9kIHNwZWNpZmllZCBieSB0aGUgJ3RleHQtanVzdGlmeScgcHJvcGVydHkuIn0se25hbWU6ImxlZnQiLGRlc2NyaXB0aW9uOiJUaGUgaW5saW5lIGNvbnRlbnRzIGFyZSBhbGlnbmVkIHRvIHRoZSBsZWZ0IGVkZ2Ugb2YgdGhlIGxpbmUgYm94LiBJbiB2ZXJ0aWNhbCB0ZXh0LCAnbGVmdCcgYWxpZ25zIHRvIHRoZSBlZGdlIG9mIHRoZSBsaW5lIGJveCB0aGF0IHdvdWxkIGJlIHRoZSBzdGFydCBlZGdlIGZvciBsZWZ0LXRvLXJpZ2h0IHRleHQuIn0se25hbWU6InJpZ2h0IixkZXNjcmlwdGlvbjoiVGhlIGlubGluZSBjb250ZW50cyBhcmUgYWxpZ25lZCB0byB0aGUgcmlnaHQgZWRnZSBvZiB0aGUgbGluZSBib3guIEluIHZlcnRpY2FsIHRleHQsICdyaWdodCcgYWxpZ25zIHRvIHRoZSBlZGdlIG9mIHRoZSBsaW5lIGJveCB0aGF0IHdvdWxkIGJlIHRoZSBlbmQgZWRnZSBmb3IgbGVmdC10by1yaWdodCB0ZXh0LiJ9LHtuYW1lOiJzdGFydCIsZGVzY3JpcHRpb246IlRoZSBpbmxpbmUgY29udGVudHMgYXJlIGFsaWduZWQgdG8gdGhlIHN0YXJ0IGVkZ2Ugb2YgdGhlIGxpbmUgYm94LiJ9XSxzeW50YXg6InN0YXJ0IHwgZW5kIHwgbGVmdCB8IHJpZ2h0IHwgY2VudGVyIHwganVzdGlmeSB8IG1hdGNoLXBhcmVudCIscmVsZXZhbmNlOjk0LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy90ZXh0LWFsaWduIn1dLGRlc2NyaXB0aW9uOiJEZXNjcmliZXMgaG93IGlubGluZSBjb250ZW50cyBvZiBhIGJsb2NrIGFyZSBob3Jpem9udGFsbHkgYWxpZ25lZCBpZiB0aGUgY29udGVudHMgZG8gbm90IGNvbXBsZXRlbHkgZmlsbCB0aGUgbGluZSBib3guIixyZXN0cmljdGlvbnM6WyJzdHJpbmciXX0se25hbWU6InRleHQtYWxpZ24tbGFzdCIsYnJvd3NlcnM6WyJFMTIiLCJGRjQ5IiwiQzQ3IiwiSUU1LjUiLCJPMzQiXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiQ29udGVudCBvbiB0aGUgYWZmZWN0ZWQgbGluZSBpcyBhbGlnbmVkIHBlciAndGV4dC1hbGlnbicgdW5sZXNzICd0ZXh0LWFsaWduJyBpcyBzZXQgdG8gJ2p1c3RpZnknLCBpbiB3aGljaCBjYXNlIGl0IGlzICdzdGFydC1hbGlnbmVkJy4ifSx7bmFtZToiY2VudGVyIixkZXNjcmlwdGlvbjoiVGhlIGlubGluZSBjb250ZW50cyBhcmUgY2VudGVyZWQgd2l0aGluIHRoZSBsaW5lIGJveC4ifSx7bmFtZToianVzdGlmeSIsZGVzY3JpcHRpb246IlRoZSB0ZXh0IGlzIGp1c3RpZmllZCBhY2NvcmRpbmcgdG8gdGhlIG1ldGhvZCBzcGVjaWZpZWQgYnkgdGhlICd0ZXh0LWp1c3RpZnknIHByb3BlcnR5LiJ9LHtuYW1lOiJsZWZ0IixkZXNjcmlwdGlvbjoiVGhlIGlubGluZSBjb250ZW50cyBhcmUgYWxpZ25lZCB0byB0aGUgbGVmdCBlZGdlIG9mIHRoZSBsaW5lIGJveC4gSW4gdmVydGljYWwgdGV4dCwgJ2xlZnQnIGFsaWducyB0byB0aGUgZWRnZSBvZiB0aGUgbGluZSBib3ggdGhhdCB3b3VsZCBiZSB0aGUgc3RhcnQgZWRnZSBmb3IgbGVmdC10by1yaWdodCB0ZXh0LiJ9LHtuYW1lOiJyaWdodCIsZGVzY3JpcHRpb246IlRoZSBpbmxpbmUgY29udGVudHMgYXJlIGFsaWduZWQgdG8gdGhlIHJpZ2h0IGVkZ2Ugb2YgdGhlIGxpbmUgYm94LiBJbiB2ZXJ0aWNhbCB0ZXh0LCAncmlnaHQnIGFsaWducyB0byB0aGUgZWRnZSBvZiB0aGUgbGluZSBib3ggdGhhdCB3b3VsZCBiZSB0aGUgZW5kIGVkZ2UgZm9yIGxlZnQtdG8tcmlnaHQgdGV4dC4ifV0sc3ludGF4OiJhdXRvIHwgc3RhcnQgfCBlbmQgfCBsZWZ0IHwgcmlnaHQgfCBjZW50ZXIgfCBqdXN0aWZ5IixyZWxldmFuY2U6NTEscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3RleHQtYWxpZ24tbGFzdCJ9XSxkZXNjcmlwdGlvbjoiRGVzY3JpYmVzIGhvdyB0aGUgbGFzdCBsaW5lIG9mIGEgYmxvY2sgb3IgYSBsaW5lIHJpZ2h0IGJlZm9yZSBhIGZvcmNlZCBsaW5lIGJyZWFrIGlzIGFsaWduZWQgd2hlbiAndGV4dC1hbGlnbicgaXMgc2V0IHRvICdqdXN0aWZ5Jy4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6InRleHQtYW5jaG9yIix2YWx1ZXM6W3tuYW1lOiJlbmQiLGRlc2NyaXB0aW9uOiJUaGUgcmVuZGVyZWQgY2hhcmFjdGVycyBhcmUgYWxpZ25lZCBzdWNoIHRoYXQgdGhlIGVuZCBvZiB0aGUgcmVzdWx0aW5nIHJlbmRlcmVkIHRleHQgaXMgYXQgdGhlIGluaXRpYWwgY3VycmVudCB0ZXh0IHBvc2l0aW9uLiJ9LHtuYW1lOiJtaWRkbGUiLGRlc2NyaXB0aW9uOiJUaGUgcmVuZGVyZWQgY2hhcmFjdGVycyBhcmUgYWxpZ25lZCBzdWNoIHRoYXQgdGhlIGdlb21ldHJpYyBtaWRkbGUgb2YgdGhlIHJlc3VsdGluZyByZW5kZXJlZCB0ZXh0IGlzIGF0IHRoZSBpbml0aWFsIGN1cnJlbnQgdGV4dCBwb3NpdGlvbi4ifSx7bmFtZToic3RhcnQiLGRlc2NyaXB0aW9uOiJUaGUgcmVuZGVyZWQgY2hhcmFjdGVycyBhcmUgYWxpZ25lZCBzdWNoIHRoYXQgdGhlIHN0YXJ0IG9mIHRoZSByZXN1bHRpbmcgcmVuZGVyZWQgdGV4dCBpcyBhdCB0aGUgaW5pdGlhbCBjdXJyZW50IHRleHQgcG9zaXRpb24uIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiVXNlZCB0byBhbGlnbiAoc3RhcnQtLCBtaWRkbGUtIG9yIGVuZC1hbGlnbm1lbnQpIGEgc3RyaW5nIG9mIHRleHQgcmVsYXRpdmUgdG8gYSBnaXZlbiBwb2ludC4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6InRleHQtZGVjb3JhdGlvbiIsdmFsdWVzOlt7bmFtZToiZGFzaGVkIixkZXNjcmlwdGlvbjoiUHJvZHVjZXMgYSBkYXNoZWQgbGluZSBzdHlsZS4ifSx7bmFtZToiZG90dGVkIixkZXNjcmlwdGlvbjoiUHJvZHVjZXMgYSBkb3R0ZWQgbGluZS4ifSx7bmFtZToiZG91YmxlIixkZXNjcmlwdGlvbjoiUHJvZHVjZXMgYSBkb3VibGUgbGluZS4ifSx7bmFtZToibGluZS10aHJvdWdoIixkZXNjcmlwdGlvbjoiRWFjaCBsaW5lIG9mIHRleHQgaGFzIGEgbGluZSB0aHJvdWdoIHRoZSBtaWRkbGUuIn0se25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJQcm9kdWNlcyBubyBsaW5lLiJ9LHtuYW1lOiJvdmVybGluZSIsZGVzY3JpcHRpb246IkVhY2ggbGluZSBvZiB0ZXh0IGhhcyBhIGxpbmUgYWJvdmUgaXQuIn0se25hbWU6InNvbGlkIixkZXNjcmlwdGlvbjoiUHJvZHVjZXMgYSBzb2xpZCBsaW5lLiJ9LHtuYW1lOiJ1bmRlcmxpbmUiLGRlc2NyaXB0aW9uOiJFYWNoIGxpbmUgb2YgdGV4dCBpcyB1bmRlcmxpbmVkLiJ9LHtuYW1lOiJ3YXZ5IixkZXNjcmlwdGlvbjoiUHJvZHVjZXMgYSB3YXZ5IGxpbmUuIn1dLHN5bnRheDoiPCd0ZXh0LWRlY29yYXRpb24tbGluZSc+IHx8IDwndGV4dC1kZWNvcmF0aW9uLXN0eWxlJz4gfHwgPCd0ZXh0LWRlY29yYXRpb24tY29sb3InPiB8fCA8J3RleHQtZGVjb3JhdGlvbi10aGlja25lc3MnPiIscmVsZXZhbmNlOjkyLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy90ZXh0LWRlY29yYXRpb24ifV0sZGVzY3JpcHRpb246IkRlY29yYXRpb25zIGFwcGxpZWQgdG8gZm9udCB1c2VkIGZvciBhbiBlbGVtZW50J3MgdGV4dC4iLHJlc3RyaWN0aW9uczpbImVudW0iLCJjb2xvciJdfSx7bmFtZToidGV4dC1kZWNvcmF0aW9uLWNvbG9yIixicm93c2VyczpbIkU3OSIsIkZGMzYiLCJTMTIuMSIsIkM1NyIsIk80NCJdLHN5bnRheDoiPGNvbG9yPiIscmVsZXZhbmNlOjUyLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy90ZXh0LWRlY29yYXRpb24tY29sb3IifV0sZGVzY3JpcHRpb246IlNwZWNpZmllcyB0aGUgY29sb3Igb2YgdGV4dCBkZWNvcmF0aW9uICh1bmRlcmxpbmVzIG92ZXJsaW5lcywgYW5kIGxpbmUtdGhyb3VnaHMpIHNldCBvbiB0aGUgZWxlbWVudCB3aXRoIHRleHQtZGVjb3JhdGlvbi1saW5lLiIscmVzdHJpY3Rpb25zOlsiY29sb3IiXX0se25hbWU6InRleHQtZGVjb3JhdGlvbi1saW5lIixicm93c2VyczpbIkU3OSIsIkZGMzYiLCJTMTIuMSIsIkM1NyIsIk80NCJdLHZhbHVlczpbe25hbWU6ImxpbmUtdGhyb3VnaCIsZGVzY3JpcHRpb246IkVhY2ggbGluZSBvZiB0ZXh0IGhhcyBhIGxpbmUgdGhyb3VnaCB0aGUgbWlkZGxlLiJ9LHtuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiTmVpdGhlciBwcm9kdWNlcyBub3IgaW5oaWJpdHMgdGV4dCBkZWNvcmF0aW9uLiJ9LHtuYW1lOiJvdmVybGluZSIsZGVzY3JpcHRpb246IkVhY2ggbGluZSBvZiB0ZXh0IGhhcyBhIGxpbmUgYWJvdmUgaXQuIn0se25hbWU6InVuZGVybGluZSIsZGVzY3JpcHRpb246IkVhY2ggbGluZSBvZiB0ZXh0IGlzIHVuZGVybGluZWQuIn1dLHN5bnRheDoibm9uZSB8IFsgdW5kZXJsaW5lIHx8IG92ZXJsaW5lIHx8IGxpbmUtdGhyb3VnaCB8fCBibGluayBdIHwgc3BlbGxpbmctZXJyb3IgfCBncmFtbWFyLWVycm9yIixyZWxldmFuY2U6NTIscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3RleHQtZGVjb3JhdGlvbi1saW5lIn1dLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgd2hhdCBsaW5lIGRlY29yYXRpb25zLCBpZiBhbnksIGFyZSBhZGRlZCB0byB0aGUgZWxlbWVudC4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6InRleHQtZGVjb3JhdGlvbi1zdHlsZSIsYnJvd3NlcnM6WyJFNzkiLCJGRjM2IiwiUzEyLjEiLCJDNTciLCJPNDQiXSx2YWx1ZXM6W3tuYW1lOiJkYXNoZWQiLGRlc2NyaXB0aW9uOiJQcm9kdWNlcyBhIGRhc2hlZCBsaW5lIHN0eWxlLiJ9LHtuYW1lOiJkb3R0ZWQiLGRlc2NyaXB0aW9uOiJQcm9kdWNlcyBhIGRvdHRlZCBsaW5lLiJ9LHtuYW1lOiJkb3VibGUiLGRlc2NyaXB0aW9uOiJQcm9kdWNlcyBhIGRvdWJsZSBsaW5lLiJ9LHtuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiUHJvZHVjZXMgbm8gbGluZS4ifSx7bmFtZToic29saWQiLGRlc2NyaXB0aW9uOiJQcm9kdWNlcyBhIHNvbGlkIGxpbmUuIn0se25hbWU6IndhdnkiLGRlc2NyaXB0aW9uOiJQcm9kdWNlcyBhIHdhdnkgbGluZS4ifV0sc3ludGF4OiJzb2xpZCB8IGRvdWJsZSB8IGRvdHRlZCB8IGRhc2hlZCB8IHdhdnkiLHJlbGV2YW5jZTo1MSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvdGV4dC1kZWNvcmF0aW9uLXN0eWxlIn1dLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgdGhlIGxpbmUgc3R5bGUgZm9yIHVuZGVybGluZSwgbGluZS10aHJvdWdoIGFuZCBvdmVybGluZSB0ZXh0IGRlY29yYXRpb24uIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJ0ZXh0LWluZGVudCIsdmFsdWVzOltdLHN5bnRheDoiPGxlbmd0aC1wZXJjZW50YWdlPiAmJiBoYW5naW5nPyAmJiBlYWNoLWxpbmU/IixyZWxldmFuY2U6NjgscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3RleHQtaW5kZW50In1dLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgdGhlIGluZGVudGF0aW9uIGFwcGxpZWQgdG8gbGluZXMgb2YgaW5saW5lIGNvbnRlbnQgaW4gYSBibG9jay4gVGhlIGluZGVudGF0aW9uIG9ubHkgYWZmZWN0cyB0aGUgZmlyc3QgbGluZSBvZiBpbmxpbmUgY29udGVudCBpbiB0aGUgYmxvY2sgdW5sZXNzIHRoZSAnaGFuZ2luZycga2V5d29yZCBpcyBzcGVjaWZpZWQsIGluIHdoaWNoIGNhc2UgaXQgYWZmZWN0cyBhbGwgbGluZXMgZXhjZXB0IHRoZSBmaXJzdC4iLHJlc3RyaWN0aW9uczpbInBlcmNlbnRhZ2UiLCJsZW5ndGgiXX0se25hbWU6InRleHQtanVzdGlmeSIsYnJvd3NlcnM6WyJFMTIiLCJGRjU1IiwiQzMyIiwiSUUxMSIsIk8xOSJdLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJUaGUgVUEgZGV0ZXJtaW5lcyB0aGUganVzdGlmaWNhdGlvbiBhbGdvcml0aG0gdG8gZm9sbG93LCBiYXNlZCBvbiBhIGJhbGFuY2UgYmV0d2VlbiBwZXJmb3JtYW5jZSBhbmQgYWRlcXVhdGUgcHJlc2VudGF0aW9uIHF1YWxpdHkuIn0se25hbWU6ImRpc3RyaWJ1dGUiLGRlc2NyaXB0aW9uOiJKdXN0aWZpY2F0aW9uIHByaW1hcmlseSBjaGFuZ2VzIHNwYWNpbmcgYm90aCBhdCB3b3JkIHNlcGFyYXRvcnMgYW5kIGF0IGdyYXBoZW1lIGNsdXN0ZXIgYm91bmRhcmllcyBpbiBhbGwgc2NyaXB0cyBleGNlcHQgdGhvc2UgaW4gdGhlIGNvbm5lY3RlZCBhbmQgY3Vyc2l2ZSBncm91cHMuIFRoaXMgdmFsdWUgaXMgc29tZXRpbWVzIHVzZWQgaW4gZS5nLiBKYXBhbmVzZSwgb2Z0ZW4gd2l0aCB0aGUgJ3RleHQtYWxpZ24tbGFzdCcgcHJvcGVydHkuIn0se25hbWU6ImRpc3RyaWJ1dGUtYWxsLWxpbmVzIn0se25hbWU6ImludGVyLWNsdXN0ZXIiLGRlc2NyaXB0aW9uOiJKdXN0aWZpY2F0aW9uIHByaW1hcmlseSBjaGFuZ2VzIHNwYWNpbmcgYXQgd29yZCBzZXBhcmF0b3JzIGFuZCBhdCBncmFwaGVtZSBjbHVzdGVyIGJvdW5kYXJpZXMgaW4gY2x1c3RlcmVkIHNjcmlwdHMuIFRoaXMgdmFsdWUgaXMgdHlwaWNhbGx5IHVzZWQgZm9yIFNvdXRoZWFzdCBBc2lhbiBzY3JpcHRzIHN1Y2ggYXMgVGhhaS4ifSx7bmFtZToiaW50ZXItaWRlb2dyYXBoIixkZXNjcmlwdGlvbjoiSnVzdGlmaWNhdGlvbiBwcmltYXJpbHkgY2hhbmdlcyBzcGFjaW5nIGF0IHdvcmQgc2VwYXJhdG9ycyBhbmQgYXQgaW50ZXItZ3JhcGhlbWljIGJvdW5kYXJpZXMgaW4gc2NyaXB0cyB0aGF0IHVzZSBubyB3b3JkIHNwYWNlcy4gVGhpcyB2YWx1ZSBpcyB0eXBpY2FsbHkgdXNlZCBmb3IgQ0pLIGxhbmd1YWdlcy4ifSx7bmFtZToiaW50ZXItd29yZCIsZGVzY3JpcHRpb246Ikp1c3RpZmljYXRpb24gcHJpbWFyaWx5IGNoYW5nZXMgc3BhY2luZyBhdCB3b3JkIHNlcGFyYXRvcnMuIFRoaXMgdmFsdWUgaXMgdHlwaWNhbGx5IHVzZWQgZm9yIGxhbmd1YWdlcyB0aGF0IHNlcGFyYXRlIHdvcmRzIHVzaW5nIHNwYWNlcywgbGlrZSBFbmdsaXNoIG9yIChzb21ldGltZXMpIEtvcmVhbi4ifSx7bmFtZToia2FzaGlkYSIsZGVzY3JpcHRpb246Ikp1c3RpZmljYXRpb24gcHJpbWFyaWx5IHN0cmV0Y2hlcyBBcmFiaWMgYW5kIHJlbGF0ZWQgc2NyaXB0cyB0aHJvdWdoIHRoZSB1c2Ugb2Yga2FzaGlkYSBvciBvdGhlciBjYWxsaWdyYXBoaWMgZWxvbmdhdGlvbi4ifSx7bmFtZToibmV3c3BhcGVyIn1dLHN5bnRheDoiYXV0byB8IGludGVyLWNoYXJhY3RlciB8IGludGVyLXdvcmQgfCBub25lIixyZWxldmFuY2U6NTAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3RleHQtanVzdGlmeSJ9XSxkZXNjcmlwdGlvbjoiU2VsZWN0cyB0aGUganVzdGlmaWNhdGlvbiBhbGdvcml0aG0gdXNlZCB3aGVuICd0ZXh0LWFsaWduJyBpcyBzZXQgdG8gJ2p1c3RpZnknLiBUaGUgcHJvcGVydHkgYXBwbGllcyB0byBibG9jayBjb250YWluZXJzLCBidXQgdGhlIFVBIG1heSAoYnV0IGlzIG5vdCByZXF1aXJlZCB0bykgYWxzbyBzdXBwb3J0IGl0IG9uIGlubGluZSBlbGVtZW50cy4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6InRleHQtb3JpZW50YXRpb24iLGJyb3dzZXJzOlsiRTc5IiwiRkY0MSIsIlMxNCIsIkM0OCIsIk8zNSJdLHZhbHVlczpbe25hbWU6InNpZGV3YXlzIixicm93c2VyczpbIkU3OSIsIkZGNDEiLCJTMTQiLCJDNDgiLCJPMzUiXSxkZXNjcmlwdGlvbjoiVGhpcyB2YWx1ZSBpcyBlcXVpdmFsZW50IHRvICdzaWRld2F5cy1yaWdodCcgaW4gJ3ZlcnRpY2FsLXJsJyB3cml0aW5nIG1vZGUgYW5kIGVxdWl2YWxlbnQgdG8gJ3NpZGV3YXlzLWxlZnQnIGluICd2ZXJ0aWNhbC1scicgd3JpdGluZyBtb2RlLiJ9LHtuYW1lOiJzaWRld2F5cy1yaWdodCIsYnJvd3NlcnM6WyJFNzkiLCJGRjQxIiwiUzE0IiwiQzQ4IiwiTzM1Il0sZGVzY3JpcHRpb246IkluIHZlcnRpY2FsIHdyaXRpbmcgbW9kZXMsIHRoaXMgY2F1c2VzIHRleHQgdG8gYmUgc2V0IGFzIGlmIGluIGEgaG9yaXpvbnRhbCBsYXlvdXQsIGJ1dCByb3RhdGVkIDkwwrAgY2xvY2t3aXNlLiJ9LHtuYW1lOiJ1cHJpZ2h0IixkZXNjcmlwdGlvbjoiSW4gdmVydGljYWwgd3JpdGluZyBtb2RlcywgY2hhcmFjdGVycyBmcm9tIGhvcml6b250YWwtb25seSBzY3JpcHRzIGFyZSByZW5kZXJlZCB1cHJpZ2h0LCBpLmUuIGluIHRoZWlyIHN0YW5kYXJkIGhvcml6b250YWwgb3JpZW50YXRpb24uIn1dLHN5bnRheDoibWl4ZWQgfCB1cHJpZ2h0IHwgc2lkZXdheXMiLHJlbGV2YW5jZTo1MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvdGV4dC1vcmllbnRhdGlvbiJ9XSxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHRoZSBvcmllbnRhdGlvbiBvZiB0ZXh0IHdpdGhpbiBhIGxpbmUuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJ0ZXh0LW92ZXJmbG93Iix2YWx1ZXM6W3tuYW1lOiJjbGlwIixkZXNjcmlwdGlvbjoiQ2xpcCBpbmxpbmUgY29udGVudCB0aGF0IG92ZXJmbG93cy4gQ2hhcmFjdGVycyBtYXkgYmUgb25seSBwYXJ0aWFsbHkgcmVuZGVyZWQuIn0se25hbWU6ImVsbGlwc2lzIixkZXNjcmlwdGlvbjoiUmVuZGVyIGFuIGVsbGlwc2lzIGNoYXJhY3RlciAoVSsyMDI2KSB0byByZXByZXNlbnQgY2xpcHBlZCBpbmxpbmUgY29udGVudC4ifV0sc3ludGF4OiJbIGNsaXAgfCBlbGxpcHNpcyB8IDxzdHJpbmc+IF17MSwyfSIscmVsZXZhbmNlOjgyLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy90ZXh0LW92ZXJmbG93In1dLGRlc2NyaXB0aW9uOiJUZXh0IGNhbiBvdmVyZmxvdyBmb3IgZXhhbXBsZSB3aGVuIGl0IGlzIHByZXZlbnRlZCBmcm9tIHdyYXBwaW5nLiIscmVzdHJpY3Rpb25zOlsiZW51bSIsInN0cmluZyJdfSx7bmFtZToidGV4dC1yZW5kZXJpbmciLGJyb3dzZXJzOlsiRTc5IiwiRkYxIiwiUzUiLCJDNCIsIk8xNSJdLHZhbHVlczpbe25hbWU6ImF1dG8ifSx7bmFtZToiZ2VvbWV0cmljUHJlY2lzaW9uIixkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHRoYXQgdGhlIHVzZXIgYWdlbnQgc2hhbGwgZW1waGFzaXplIGdlb21ldHJpYyBwcmVjaXNpb24gb3ZlciBsZWdpYmlsaXR5IGFuZCByZW5kZXJpbmcgc3BlZWQuIn0se25hbWU6Im9wdGltaXplTGVnaWJpbGl0eSIsZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGF0IHRoZSB1c2VyIGFnZW50IHNoYWxsIGVtcGhhc2l6ZSBsZWdpYmlsaXR5IG92ZXIgcmVuZGVyaW5nIHNwZWVkIGFuZCBnZW9tZXRyaWMgcHJlY2lzaW9uLiJ9LHtuYW1lOiJvcHRpbWl6ZVNwZWVkIixkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHRoYXQgdGhlIHVzZXIgYWdlbnQgc2hhbGwgZW1waGFzaXplIHJlbmRlcmluZyBzcGVlZCBvdmVyIGxlZ2liaWxpdHkgYW5kIGdlb21ldHJpYyBwcmVjaXNpb24uIn1dLHN5bnRheDoiYXV0byB8IG9wdGltaXplU3BlZWQgfCBvcHRpbWl6ZUxlZ2liaWxpdHkgfCBnZW9tZXRyaWNQcmVjaXNpb24iLHJlbGV2YW5jZTo3MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvdGV4dC1yZW5kZXJpbmcifV0sZGVzY3JpcHRpb246IlRoZSBjcmVhdG9yIG9mIFNWRyBjb250ZW50IG1pZ2h0IHdhbnQgdG8gcHJvdmlkZSBhIGhpbnQgdG8gdGhlIGltcGxlbWVudGF0aW9uIGFib3V0IHdoYXQgdHJhZGVvZmZzIHRvIG1ha2UgYXMgaXQgcmVuZGVycyB0ZXh0LiBUaGUg4oCYdGV4dC1yZW5kZXJpbmfigJkgcHJvcGVydHkgcHJvdmlkZXMgdGhlc2UgaGludHMuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJ0ZXh0LXNoYWRvdyIsdmFsdWVzOlt7bmFtZToibm9uZSIsZGVzY3JpcHRpb246Ik5vIHNoYWRvdy4ifV0sc3ludGF4OiJub25lIHwgPHNoYWRvdy10PiMiLHJlbGV2YW5jZTo3NCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvdGV4dC1zaGFkb3cifV0sZGVzY3JpcHRpb246IkVuYWJsZXMgc2hhZG93IGVmZmVjdHMgdG8gYmUgYXBwbGllZCB0byB0aGUgdGV4dCBvZiB0aGUgZWxlbWVudC4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsImNvbG9yIl19LHtuYW1lOiJ0ZXh0LXRyYW5zZm9ybSIsdmFsdWVzOlt7bmFtZToiY2FwaXRhbGl6ZSIsZGVzY3JpcHRpb246IlB1dHMgdGhlIGZpcnN0IHR5cG9ncmFwaGljIGxldHRlciB1bml0IG9mIGVhY2ggd29yZCBpbiB0aXRsZWNhc2UuIn0se25hbWU6Imxvd2VyY2FzZSIsZGVzY3JpcHRpb246IlB1dHMgYWxsIGxldHRlcnMgaW4gbG93ZXJjYXNlLiJ9LHtuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiTm8gZWZmZWN0cy4ifSx7bmFtZToidXBwZXJjYXNlIixkZXNjcmlwdGlvbjoiUHV0cyBhbGwgbGV0dGVycyBpbiB1cHBlcmNhc2UuIn1dLHN5bnRheDoibm9uZSB8IGNhcGl0YWxpemUgfCB1cHBlcmNhc2UgfCBsb3dlcmNhc2UgfCBmdWxsLXdpZHRoIHwgZnVsbC1zaXplLWthbmEiLHJlbGV2YW5jZTo4NixyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvdGV4dC10cmFuc2Zvcm0ifV0sZGVzY3JpcHRpb246IkNvbnRyb2xzIGNhcGl0YWxpemF0aW9uIGVmZmVjdHMgb2YgYW4gZWxlbWVudOKAmXMgdGV4dC4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6InRleHQtdW5kZXJsaW5lLXBvc2l0aW9uIix2YWx1ZXM6W3tuYW1lOiJhYm92ZSJ9LHtuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiVGhlIHVzZXIgYWdlbnQgbWF5IHVzZSBhbnkgYWxnb3JpdGhtIHRvIGRldGVybWluZSB0aGUgdW5kZXJsaW5l4oCZcyBwb3NpdGlvbi4gSW4gaG9yaXpvbnRhbCBsaW5lIGxheW91dCwgdGhlIHVuZGVybGluZSBzaG91bGQgYmUgYWxpZ25lZCBhcyBmb3IgYWxwaGFiZXRpYy4gSW4gdmVydGljYWwgbGluZSBsYXlvdXQsIGlmIHRoZSBsYW5ndWFnZSBpcyBzZXQgdG8gSmFwYW5lc2Ugb3IgS29yZWFuLCB0aGUgdW5kZXJsaW5lIHNob3VsZCBiZSBhbGlnbmVkIGFzIGZvciBvdmVyLiJ9LHtuYW1lOiJiZWxvdyIsZGVzY3JpcHRpb246IlRoZSB1bmRlcmxpbmUgaXMgYWxpZ25lZCB3aXRoIHRoZSB1bmRlciBlZGdlIG9mIHRoZSBlbGVtZW504oCZcyBjb250ZW50IGJveC4ifV0sc3ludGF4OiJhdXRvIHwgZnJvbS1mb250IHwgWyB1bmRlciB8fCBbIGxlZnQgfCByaWdodCBdIF0iLHJlbGV2YW5jZTo1MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvdGV4dC11bmRlcmxpbmUtcG9zaXRpb24ifV0sZGVzY3JpcHRpb246IlNldHMgdGhlIHBvc2l0aW9uIG9mIGFuIHVuZGVybGluZSBzcGVjaWZpZWQgb24gdGhlIHNhbWUgZWxlbWVudDogaXQgZG9lcyBub3QgYWZmZWN0IHVuZGVybGluZXMgc3BlY2lmaWVkIGJ5IGFuY2VzdG9yIGVsZW1lbnRzLiBUaGlzIHByb3BlcnR5IGlzIHR5cGljYWxseSB1c2VkIGluIHZlcnRpY2FsIHdyaXRpbmcgY29udGV4dHMgc3VjaCBhcyBpbiBKYXBhbmVzZSBkb2N1bWVudHMgd2hlcmUgaXQgb2Z0ZW4gZGVzaXJlZCB0byBoYXZlIHRoZSB1bmRlcmxpbmUgYXBwZWFyICdvdmVyJyAodG8gdGhlIHJpZ2h0IG9mKSB0aGUgYWZmZWN0ZWQgcnVuIG9mIHRleHQiLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6InRvcCIsdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IkZvciBub24tcmVwbGFjZWQgZWxlbWVudHMsIHRoZSBlZmZlY3Qgb2YgdGhpcyB2YWx1ZSBkZXBlbmRzIG9uIHdoaWNoIG9mIHJlbGF0ZWQgcHJvcGVydGllcyBoYXZlIHRoZSB2YWx1ZSAnYXV0bycgYXMgd2VsbCJ9XSxzeW50YXg6IjxsZW5ndGg+IHwgPHBlcmNlbnRhZ2U+IHwgYXV0byIscmVsZXZhbmNlOjk1LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy90b3AifV0sZGVzY3JpcHRpb246IlNwZWNpZmllcyBob3cgZmFyIGFuIGFic29sdXRlbHkgcG9zaXRpb25lZCBib3gncyB0b3AgbWFyZ2luIGVkZ2UgaXMgb2Zmc2V0IGJlbG93IHRoZSB0b3AgZWRnZSBvZiB0aGUgYm94J3MgJ2NvbnRhaW5pbmcgYmxvY2snLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwicGVyY2VudGFnZSJdfSx7bmFtZToidG91Y2gtYWN0aW9uIix2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiVGhlIHVzZXIgYWdlbnQgbWF5IGRldGVybWluZSBhbnkgcGVybWl0dGVkIHRvdWNoIGJlaGF2aW9ycyBmb3IgdG91Y2hlcyB0aGF0IGJlZ2luIG9uIHRoZSBlbGVtZW50LiJ9LHtuYW1lOiJjcm9zcy1zbGlkZS14In0se25hbWU6ImNyb3NzLXNsaWRlLXkifSx7bmFtZToiZG91YmxlLXRhcC16b29tIn0se25hbWU6Im1hbmlwdWxhdGlvbiIsZGVzY3JpcHRpb246IlRoZSB1c2VyIGFnZW50IG1heSBjb25zaWRlciB0b3VjaGVzIHRoYXQgYmVnaW4gb24gdGhlIGVsZW1lbnQgb25seSBmb3IgdGhlIHB1cnBvc2VzIG9mIHNjcm9sbGluZyBhbmQgY29udGludW91cyB6b29taW5nLiJ9LHtuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiVG91Y2hlcyB0aGF0IGJlZ2luIG9uIHRoZSBlbGVtZW50IG11c3Qgbm90IHRyaWdnZXIgZGVmYXVsdCB0b3VjaCBiZWhhdmlvcnMuIn0se25hbWU6InBhbi14IixkZXNjcmlwdGlvbjoiVGhlIHVzZXIgYWdlbnQgbWF5IGNvbnNpZGVyIHRvdWNoZXMgdGhhdCBiZWdpbiBvbiB0aGUgZWxlbWVudCBvbmx5IGZvciB0aGUgcHVycG9zZXMgb2YgaG9yaXpvbnRhbGx5IHNjcm9sbGluZyB0aGUgZWxlbWVudOKAmXMgbmVhcmVzdCBhbmNlc3RvciB3aXRoIGhvcml6b250YWxseSBzY3JvbGxhYmxlIGNvbnRlbnQuIn0se25hbWU6InBhbi15IixkZXNjcmlwdGlvbjoiVGhlIHVzZXIgYWdlbnQgbWF5IGNvbnNpZGVyIHRvdWNoZXMgdGhhdCBiZWdpbiBvbiB0aGUgZWxlbWVudCBvbmx5IGZvciB0aGUgcHVycG9zZXMgb2YgdmVydGljYWxseSBzY3JvbGxpbmcgdGhlIGVsZW1lbnTigJlzIG5lYXJlc3QgYW5jZXN0b3Igd2l0aCB2ZXJ0aWNhbGx5IHNjcm9sbGFibGUgY29udGVudC4ifSx7bmFtZToicGluY2gtem9vbSJ9XSxzeW50YXg6ImF1dG8gfCBub25lIHwgWyBbIHBhbi14IHwgcGFuLWxlZnQgfCBwYW4tcmlnaHQgXSB8fCBbIHBhbi15IHwgcGFuLXVwIHwgcGFuLWRvd24gXSB8fCBwaW5jaC16b29tIF0gfCBtYW5pcHVsYXRpb24iLHJlbGV2YW5jZTo2NyxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvdG91Y2gtYWN0aW9uIn1dLGRlc2NyaXB0aW9uOiJEZXRlcm1pbmVzIHdoZXRoZXIgdG91Y2ggaW5wdXQgbWF5IHRyaWdnZXIgZGVmYXVsdCBiZWhhdmlvciBzdXBwbGllZCBieSB1c2VyIGFnZW50LiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToidHJhbnNmb3JtIix2YWx1ZXM6W3tuYW1lOiJtYXRyaXgoKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIDJEIHRyYW5zZm9ybWF0aW9uIGluIHRoZSBmb3JtIG9mIGEgdHJhbnNmb3JtYXRpb24gbWF0cml4IG9mIHNpeCB2YWx1ZXMuIG1hdHJpeChhLGIsYyxkLGUsZikgaXMgZXF1aXZhbGVudCB0byBhcHBseWluZyB0aGUgdHJhbnNmb3JtYXRpb24gbWF0cml4IFthIGIgYyBkIGUgZl0ifSx7bmFtZToibWF0cml4M2QoKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIDNEIHRyYW5zZm9ybWF0aW9uIGFzIGEgNHg0IGhvbW9nZW5lb3VzIG1hdHJpeCBvZiAxNiB2YWx1ZXMgaW4gY29sdW1uLW1ham9yIG9yZGVyLiJ9LHtuYW1lOiJub25lIn0se25hbWU6InBlcnNwZWN0aXZlKCkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSBwZXJzcGVjdGl2ZSBwcm9qZWN0aW9uIG1hdHJpeC4ifSx7bmFtZToicm90YXRlKCkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSAyRCByb3RhdGlvbiBieSB0aGUgYW5nbGUgc3BlY2lmaWVkIGluIHRoZSBwYXJhbWV0ZXIgYWJvdXQgdGhlIG9yaWdpbiBvZiB0aGUgZWxlbWVudCwgYXMgZGVmaW5lZCBieSB0aGUgdHJhbnNmb3JtLW9yaWdpbiBwcm9wZXJ0eS4ifSx7bmFtZToicm90YXRlM2QoKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIGNsb2Nrd2lzZSAzRCByb3RhdGlvbiBieSB0aGUgYW5nbGUgc3BlY2lmaWVkIGluIGxhc3QgcGFyYW1ldGVyIGFib3V0IHRoZSBbeCx5LHpdIGRpcmVjdGlvbiB2ZWN0b3IgZGVzY3JpYmVkIGJ5IHRoZSBmaXJzdCAzIHBhcmFtZXRlcnMuIn0se25hbWU6InJvdGF0ZVgoJ2FuZ2xlJykiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSBjbG9ja3dpc2Ugcm90YXRpb24gYnkgdGhlIGdpdmVuIGFuZ2xlIGFib3V0IHRoZSBYIGF4aXMuIn0se25hbWU6InJvdGF0ZVkoJ2FuZ2xlJykiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSBjbG9ja3dpc2Ugcm90YXRpb24gYnkgdGhlIGdpdmVuIGFuZ2xlIGFib3V0IHRoZSBZIGF4aXMuIn0se25hbWU6InJvdGF0ZVooJ2FuZ2xlJykiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSBjbG9ja3dpc2Ugcm90YXRpb24gYnkgdGhlIGdpdmVuIGFuZ2xlIGFib3V0IHRoZSBaIGF4aXMuIn0se25hbWU6InNjYWxlKCkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSAyRCBzY2FsZSBvcGVyYXRpb24gYnkgdGhlIFtzeCxzeV0gc2NhbGluZyB2ZWN0b3IgZGVzY3JpYmVkIGJ5IHRoZSAyIHBhcmFtZXRlcnMuIElmIHRoZSBzZWNvbmQgcGFyYW1ldGVyIGlzIG5vdCBwcm92aWRlZCwgaXQgaXMgdGFrZXMgYSB2YWx1ZSBlcXVhbCB0byB0aGUgZmlyc3QuIn0se25hbWU6InNjYWxlM2QoKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIDNEIHNjYWxlIG9wZXJhdGlvbiBieSB0aGUgW3N4LHN5LHN6XSBzY2FsaW5nIHZlY3RvciBkZXNjcmliZWQgYnkgdGhlIDMgcGFyYW1ldGVycy4ifSx7bmFtZToic2NhbGVYKCkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSBzY2FsZSBvcGVyYXRpb24gdXNpbmcgdGhlIFtzeCwxXSBzY2FsaW5nIHZlY3Rvciwgd2hlcmUgc3ggaXMgZ2l2ZW4gYXMgdGhlIHBhcmFtZXRlci4ifSx7bmFtZToic2NhbGVZKCkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSBzY2FsZSBvcGVyYXRpb24gdXNpbmcgdGhlIFtzeSwxXSBzY2FsaW5nIHZlY3Rvciwgd2hlcmUgc3kgaXMgZ2l2ZW4gYXMgdGhlIHBhcmFtZXRlci4ifSx7bmFtZToic2NhbGVaKCkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSBzY2FsZSBvcGVyYXRpb24gdXNpbmcgdGhlIFsxLDEsc3pdIHNjYWxpbmcgdmVjdG9yLCB3aGVyZSBzeiBpcyBnaXZlbiBhcyB0aGUgcGFyYW1ldGVyLiJ9LHtuYW1lOiJza2V3KCkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSBza2V3IHRyYW5zZm9ybWF0aW9uIGFsb25nIHRoZSBYIGFuZCBZIGF4ZXMuIFRoZSBmaXJzdCBhbmdsZSBwYXJhbWV0ZXIgc3BlY2lmaWVzIHRoZSBza2V3IG9uIHRoZSBYIGF4aXMuIFRoZSBzZWNvbmQgYW5nbGUgcGFyYW1ldGVyIHNwZWNpZmllcyB0aGUgc2tldyBvbiB0aGUgWSBheGlzLiBJZiB0aGUgc2Vjb25kIHBhcmFtZXRlciBpcyBub3QgZ2l2ZW4gdGhlbiBhIHZhbHVlIG9mIDAgaXMgdXNlZCBmb3IgdGhlIFkgYW5nbGUgKGllOiBubyBza2V3IG9uIHRoZSBZIGF4aXMpLiJ9LHtuYW1lOiJza2V3WCgpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgc2tldyB0cmFuc2Zvcm1hdGlvbiBhbG9uZyB0aGUgWCBheGlzIGJ5IHRoZSBnaXZlbiBhbmdsZS4ifSx7bmFtZToic2tld1koKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIHNrZXcgdHJhbnNmb3JtYXRpb24gYWxvbmcgdGhlIFkgYXhpcyBieSB0aGUgZ2l2ZW4gYW5nbGUuIn0se25hbWU6InRyYW5zbGF0ZSgpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgMkQgdHJhbnNsYXRpb24gYnkgdGhlIHZlY3RvciBbdHgsIHR5XSwgd2hlcmUgdHggaXMgdGhlIGZpcnN0IHRyYW5zbGF0aW9uLXZhbHVlIHBhcmFtZXRlciBhbmQgdHkgaXMgdGhlIG9wdGlvbmFsIHNlY29uZCB0cmFuc2xhdGlvbi12YWx1ZSBwYXJhbWV0ZXIuIn0se25hbWU6InRyYW5zbGF0ZTNkKCkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSAzRCB0cmFuc2xhdGlvbiBieSB0aGUgdmVjdG9yIFt0eCx0eSx0el0sIHdpdGggdHgsIHR5IGFuZCB0eiBiZWluZyB0aGUgZmlyc3QsIHNlY29uZCBhbmQgdGhpcmQgdHJhbnNsYXRpb24tdmFsdWUgcGFyYW1ldGVycyByZXNwZWN0aXZlbHkuIn0se25hbWU6InRyYW5zbGF0ZVgoKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIHRyYW5zbGF0aW9uIGJ5IHRoZSBnaXZlbiBhbW91bnQgaW4gdGhlIFggZGlyZWN0aW9uLiJ9LHtuYW1lOiJ0cmFuc2xhdGVZKCkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSB0cmFuc2xhdGlvbiBieSB0aGUgZ2l2ZW4gYW1vdW50IGluIHRoZSBZIGRpcmVjdGlvbi4ifSx7bmFtZToidHJhbnNsYXRlWigpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgdHJhbnNsYXRpb24gYnkgdGhlIGdpdmVuIGFtb3VudCBpbiB0aGUgWiBkaXJlY3Rpb24uIE5vdGUgdGhhdCBwZXJjZW50YWdlIHZhbHVlcyBhcmUgbm90IGFsbG93ZWQgaW4gdGhlIHRyYW5zbGF0ZVogdHJhbnNsYXRpb24tdmFsdWUsIGFuZCBpZiBwcmVzZW50IGFyZSBldmFsdWF0ZWQgYXMgMC4ifV0sc3ludGF4OiJub25lIHwgPHRyYW5zZm9ybS1saXN0PiIscmVsZXZhbmNlOjkwLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy90cmFuc2Zvcm0ifV0sZGVzY3JpcHRpb246IkEgdHdvLWRpbWVuc2lvbmFsIHRyYW5zZm9ybWF0aW9uIGlzIGFwcGxpZWQgdG8gYW4gZWxlbWVudCB0aHJvdWdoIHRoZSAndHJhbnNmb3JtJyBwcm9wZXJ0eS4gVGhpcyBwcm9wZXJ0eSBjb250YWlucyBhIGxpc3Qgb2YgdHJhbnNmb3JtIGZ1bmN0aW9ucyBzaW1pbGFyIHRvIHRob3NlIGFsbG93ZWQgYnkgU1ZHLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToidHJhbnNmb3JtLW9yaWdpbiIsc3ludGF4OiJbIDxsZW5ndGgtcGVyY2VudGFnZT4gfCBsZWZ0IHwgY2VudGVyIHwgcmlnaHQgfCB0b3AgfCBib3R0b20gXSB8IFsgWyA8bGVuZ3RoLXBlcmNlbnRhZ2U+IHwgbGVmdCB8IGNlbnRlciB8IHJpZ2h0IF0gJiYgWyA8bGVuZ3RoLXBlcmNlbnRhZ2U+IHwgdG9wIHwgY2VudGVyIHwgYm90dG9tIF0gXSA8bGVuZ3RoPj8iLHJlbGV2YW5jZTo3NyxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvdHJhbnNmb3JtLW9yaWdpbiJ9XSxkZXNjcmlwdGlvbjoiRXN0YWJsaXNoZXMgdGhlIG9yaWdpbiBvZiB0cmFuc2Zvcm1hdGlvbiBmb3IgYW4gZWxlbWVudC4iLHJlc3RyaWN0aW9uczpbInBvc2l0aW9uIiwibGVuZ3RoIiwicGVyY2VudGFnZSJdfSx7bmFtZToidHJhbnNmb3JtLXN0eWxlIixicm93c2VyczpbIkUxMiIsIkZGMTYiLCJTOSIsIkMzNiIsIk8yMyJdLHZhbHVlczpbe25hbWU6ImZsYXQiLGRlc2NyaXB0aW9uOiJBbGwgY2hpbGRyZW4gb2YgdGhpcyBlbGVtZW50IGFyZSByZW5kZXJlZCBmbGF0dGVuZWQgaW50byB0aGUgMkQgcGxhbmUgb2YgdGhlIGVsZW1lbnQuIn0se25hbWU6InByZXNlcnZlLTNkIixicm93c2VyczpbIkUxMiIsIkZGMTYiLCJTOSIsIkMzNiIsIk8yMyJdLGRlc2NyaXB0aW9uOiJGbGF0dGVuaW5nIGlzIG5vdCBwZXJmb3JtZWQsIHNvIGNoaWxkcmVuIG1haW50YWluIHRoZWlyIHBvc2l0aW9uIGluIDNEIHNwYWNlLiJ9XSxzeW50YXg6ImZsYXQgfCBwcmVzZXJ2ZS0zZCIscmVsZXZhbmNlOjU1LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy90cmFuc2Zvcm0tc3R5bGUifV0sZGVzY3JpcHRpb246IkRlZmluZXMgaG93IG5lc3RlZCBlbGVtZW50cyBhcmUgcmVuZGVyZWQgaW4gM0Qgc3BhY2UuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJ0cmFuc2l0aW9uIix2YWx1ZXM6W3tuYW1lOiJhbGwiLGRlc2NyaXB0aW9uOiJFdmVyeSBwcm9wZXJ0eSB0aGF0IGlzIGFibGUgdG8gdW5kZXJnbyBhIHRyYW5zaXRpb24gd2lsbCBkbyBzby4ifSx7bmFtZToibm9uZSIsZGVzY3JpcHRpb246Ik5vIHByb3BlcnR5IHdpbGwgdHJhbnNpdGlvbi4ifV0sc3ludGF4OiI8c2luZ2xlLXRyYW5zaXRpb24+IyIscmVsZXZhbmNlOjg4LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy90cmFuc2l0aW9uIn1dLGRlc2NyaXB0aW9uOiJTaG9ydGhhbmQgcHJvcGVydHkgY29tYmluZXMgZm91ciBvZiB0aGUgdHJhbnNpdGlvbiBwcm9wZXJ0aWVzIGludG8gYSBzaW5nbGUgcHJvcGVydHkuIixyZXN0cmljdGlvbnM6WyJ0aW1lIiwicHJvcGVydHkiLCJ0aW1pbmctZnVuY3Rpb24iLCJlbnVtIl19LHtuYW1lOiJ0cmFuc2l0aW9uLWRlbGF5IixzeW50YXg6Ijx0aW1lPiMiLHJlbGV2YW5jZTo2NCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvdHJhbnNpdGlvbi1kZWxheSJ9XSxkZXNjcmlwdGlvbjoiRGVmaW5lcyB3aGVuIHRoZSB0cmFuc2l0aW9uIHdpbGwgc3RhcnQuIEl0IGFsbG93cyBhIHRyYW5zaXRpb24gdG8gYmVnaW4gZXhlY3V0aW9uIHNvbWUgcGVyaW9kIG9mIHRpbWUgZnJvbSB3aGVuIGl0IGlzIGFwcGxpZWQuIixyZXN0cmljdGlvbnM6WyJ0aW1lIl19LHtuYW1lOiJ0cmFuc2l0aW9uLWR1cmF0aW9uIixzeW50YXg6Ijx0aW1lPiMiLHJlbGV2YW5jZTo2NCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvdHJhbnNpdGlvbi1kdXJhdGlvbiJ9XSxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGhvdyBsb25nIHRoZSB0cmFuc2l0aW9uIGZyb20gdGhlIG9sZCB2YWx1ZSB0byB0aGUgbmV3IHZhbHVlIHNob3VsZCB0YWtlLiIscmVzdHJpY3Rpb25zOlsidGltZSJdfSx7bmFtZToidHJhbnNpdGlvbi1wcm9wZXJ0eSIsdmFsdWVzOlt7bmFtZToiYWxsIixkZXNjcmlwdGlvbjoiRXZlcnkgcHJvcGVydHkgdGhhdCBpcyBhYmxlIHRvIHVuZGVyZ28gYSB0cmFuc2l0aW9uIHdpbGwgZG8gc28uIn0se25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJObyBwcm9wZXJ0eSB3aWxsIHRyYW5zaXRpb24uIn1dLHN5bnRheDoibm9uZSB8IDxzaW5nbGUtdHJhbnNpdGlvbi1wcm9wZXJ0eT4jIixyZWxldmFuY2U6NjQscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3RyYW5zaXRpb24tcHJvcGVydHkifV0sZGVzY3JpcHRpb246IlNwZWNpZmllcyB0aGUgbmFtZSBvZiB0aGUgQ1NTIHByb3BlcnR5IHRvIHdoaWNoIHRoZSB0cmFuc2l0aW9uIGlzIGFwcGxpZWQuIixyZXN0cmljdGlvbnM6WyJwcm9wZXJ0eSJdfSx7bmFtZToidHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb24iLHN5bnRheDoiPGVhc2luZy1mdW5jdGlvbj4jIixyZWxldmFuY2U6NjQscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3RyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uIn1dLGRlc2NyaXB0aW9uOiJEZXNjcmliZXMgaG93IHRoZSBpbnRlcm1lZGlhdGUgdmFsdWVzIHVzZWQgZHVyaW5nIGEgdHJhbnNpdGlvbiB3aWxsIGJlIGNhbGN1bGF0ZWQuIixyZXN0cmljdGlvbnM6WyJ0aW1pbmctZnVuY3Rpb24iXX0se25hbWU6InVuaWNvZGUtYmlkaSIsdmFsdWVzOlt7bmFtZToiYmlkaS1vdmVycmlkZSIsZGVzY3JpcHRpb246Ikluc2lkZSB0aGUgZWxlbWVudCwgcmVvcmRlcmluZyBpcyBzdHJpY3RseSBpbiBzZXF1ZW5jZSBhY2NvcmRpbmcgdG8gdGhlICdkaXJlY3Rpb24nIHByb3BlcnR5OyB0aGUgaW1wbGljaXQgcGFydCBvZiB0aGUgYmlkaXJlY3Rpb25hbCBhbGdvcml0aG0gaXMgaWdub3JlZC4ifSx7bmFtZToiZW1iZWQiLGRlc2NyaXB0aW9uOiJJZiB0aGUgZWxlbWVudCBpcyBpbmxpbmUtbGV2ZWwsIHRoaXMgdmFsdWUgb3BlbnMgYW4gYWRkaXRpb25hbCBsZXZlbCBvZiBlbWJlZGRpbmcgd2l0aCByZXNwZWN0IHRvIHRoZSBiaWRpcmVjdGlvbmFsIGFsZ29yaXRobS4gVGhlIGRpcmVjdGlvbiBvZiB0aGlzIGVtYmVkZGluZyBsZXZlbCBpcyBnaXZlbiBieSB0aGUgJ2RpcmVjdGlvbicgcHJvcGVydHkuIn0se25hbWU6Imlzb2xhdGUiLGRlc2NyaXB0aW9uOiJUaGUgY29udGVudHMgb2YgdGhlIGVsZW1lbnQgYXJlIGNvbnNpZGVyZWQgdG8gYmUgaW5zaWRlIGEgc2VwYXJhdGUsIGluZGVwZW5kZW50IHBhcmFncmFwaC4ifSx7bmFtZToiaXNvbGF0ZS1vdmVycmlkZSIsZGVzY3JpcHRpb246IlRoaXMgY29tYmluZXMgdGhlIGlzb2xhdGlvbiBiZWhhdmlvciBvZiAnaXNvbGF0ZScgd2l0aCB0aGUgZGlyZWN0aW9uYWwgb3ZlcnJpZGUgYmVoYXZpb3Igb2YgJ2JpZGktb3ZlcnJpZGUnIn0se25hbWU6Im5vcm1hbCIsZGVzY3JpcHRpb246IlRoZSBlbGVtZW50IGRvZXMgbm90IG9wZW4gYW4gYWRkaXRpb25hbCBsZXZlbCBvZiBlbWJlZGRpbmcgd2l0aCByZXNwZWN0IHRvIHRoZSBiaWRpcmVjdGlvbmFsIGFsZ29yaXRobS4gRm9yIGlubGluZS1sZXZlbCBlbGVtZW50cywgaW1wbGljaXQgcmVvcmRlcmluZyB3b3JrcyBhY3Jvc3MgZWxlbWVudCBib3VuZGFyaWVzLiJ9LHtuYW1lOiJwbGFpbnRleHQiLGRlc2NyaXB0aW9uOiJGb3IgdGhlIHB1cnBvc2VzIG9mIHRoZSBVbmljb2RlIGJpZGlyZWN0aW9uYWwgYWxnb3JpdGhtLCB0aGUgYmFzZSBkaXJlY3Rpb25hbGl0eSBvZiBlYWNoIGJpZGkgcGFyYWdyYXBoIGZvciB3aGljaCB0aGUgZWxlbWVudCBmb3JtcyB0aGUgY29udGFpbmluZyBibG9jayBpcyBkZXRlcm1pbmVkIG5vdCBieSB0aGUgZWxlbWVudCdzIGNvbXB1dGVkICdkaXJlY3Rpb24nLiJ9XSxzeW50YXg6Im5vcm1hbCB8IGVtYmVkIHwgaXNvbGF0ZSB8IGJpZGktb3ZlcnJpZGUgfCBpc29sYXRlLW92ZXJyaWRlIHwgcGxhaW50ZXh0IixyZWxldmFuY2U6NTcscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3VuaWNvZGUtYmlkaSJ9XSxkZXNjcmlwdGlvbjoiVGhlIGxldmVsIG9mIGVtYmVkZGluZyB3aXRoIHJlc3BlY3QgdG8gdGhlIGJpZGlyZWN0aW9uYWwgYWxnb3JpdGhtLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToidW5pY29kZS1yYW5nZSIsdmFsdWVzOlt7bmFtZToiVSsyNiIsZGVzY3JpcHRpb246IkFtcGVyc2FuZC4ifSx7bmFtZToiVSsyMC0yNEYsIFUrMkIwLTJGRiwgVSszNzAtNEZGLCBVKzFFMDAtMUVGRiwgVSsyMDAwLTIwQ0YsIFUrMjEwMC0yM0ZGLCBVKzI1MDAtMjZGRiwgVStFMDAwLUY4RkYsIFUrRkIwMOKAk0ZCNEYiLGRlc2NyaXB0aW9uOiJXR0w0IGNoYXJhY3RlciBzZXQgKFBhbi1FdXJvcGVhbikuIn0se25hbWU6IlUrMjAtMTdGLCBVKzJCMC0yRkYsIFUrMjAwMC0yMDZGLCBVKzIwQTAtMjBDRiwgVSsyMTAwLTIxRkYsIFUrMjYwMC0yNkZGIixkZXNjcmlwdGlvbjoiVGhlIE11bHRpbGluZ3VhbCBFdXJvcGVhbiBTdWJzZXQgTm8uIDEuIExhdGluLiBDb3ZlcnMgfjQ0IGxhbmd1YWdlcy4ifSx7bmFtZToiVSsyMC0yRkYsIFUrMzcwLTRGRiwgVSsxRTAwLTIwQ0YsIFUrMjEwMC0yM0ZGLCBVKzI1MDAtMjZGRiwgVStGQjAwLUZCNEYsIFUrRkZGMC1GRkZEIixkZXNjcmlwdGlvbjoiVGhlIE11bHRpbGluZ3VhbCBFdXJvcGVhbiBTdWJzZXQgTm8uIDIuIExhdGluLCBHcmVlaywgYW5kIEN5cmlsbGljLiBDb3ZlcnMgfjEyOCBsYW5ndWFnZS4ifSx7bmFtZToiVSsyMC00RkYsIFUrNTMwLTU4RiwgVSsxMEQwLTEwRkYsIFUrMUUwMC0yM0ZGLCBVKzI0NDAtMjQ1RiwgVSsyNTAwLTI2RkYsIFUrRkIwMC1GQjRGLCBVK0ZFMjAtRkUyRiwgVStGRkYwLUZGRkQiLGRlc2NyaXB0aW9uOiJUaGUgTXVsdGlsaW5ndWFsIEV1cm9wZWFuIFN1YnNldCBOby4gMy4gQ292ZXJzIGFsbCBjaGFyYWN0ZXJzIGJlbG9uZ2luZyB0byBFdXJvcGVhbiBzY3JpcHRzLiJ9LHtuYW1lOiJVKzAwLTdGIixkZXNjcmlwdGlvbjoiQmFzaWMgTGF0aW4gKEFTQ0lJKS4ifSx7bmFtZToiVSs4MC1GRiIsZGVzY3JpcHRpb246IkxhdGluLTEgU3VwcGxlbWVudC4gQWNjZW50ZWQgY2hhcmFjdGVycyBmb3IgV2VzdGVybiBFdXJvcGVhbiBsYW5ndWFnZXMsIGNvbW1vbiBwdW5jdHVhdGlvbiBjaGFyYWN0ZXJzLCBtdWx0aXBsaWNhdGlvbiBhbmQgZGl2aXNpb24gc2lnbnMuIn0se25hbWU6IlUrMTAwLTE3RiIsZGVzY3JpcHRpb246IkxhdGluIEV4dGVuZGVkLUEuIEFjY2VudGVkIGNoYXJhY3RlcnMgZm9yIGZvciBDemVjaCwgRHV0Y2gsIFBvbGlzaCwgYW5kIFR1cmtpc2guIn0se25hbWU6IlUrMTgwLTI0RiIsZGVzY3JpcHRpb246IkxhdGluIEV4dGVuZGVkLUIuIENyb2F0aWFuLCBTbG92ZW5pYW4sIFJvbWFuaWFuLCBOb24tRXVyb3BlYW4gYW5kIGhpc3RvcmljIGxhdGluLCBLaG9pc2FuLCBQaW55aW4sIExpdm9uaWFuLCBTaW5vbG9neS4ifSx7bmFtZToiVSsxRTAwLTFFRkYiLGRlc2NyaXB0aW9uOiJMYXRpbiBFeHRlbmRlZCBBZGRpdGlvbmFsLiBWaWV0bmFtZXNlLCBHZXJtYW4gY2FwdGlhbCBzaGFycCBzLCBNZWRpZXZhbGlzdCwgTGF0aW4gZ2VuZXJhbCB1c2UuIn0se25hbWU6IlUrMjUwLTJBRiIsZGVzY3JpcHRpb246IkludGVybmF0aW9uYWwgUGhvbmV0aWMgQWxwaGFiZXQgRXh0ZW5zaW9ucy4ifSx7bmFtZToiVSszNzAtM0ZGIixkZXNjcmlwdGlvbjoiR3JlZWsgYW5kIENvcHRpYy4ifSx7bmFtZToiVSsxRjAwLTFGRkYiLGRlc2NyaXB0aW9uOiJHcmVlayBFeHRlbmRlZC4gQWNjZW50ZWQgY2hhcmFjdGVycyBmb3IgcG9seXRvbmljIEdyZWVrLiJ9LHtuYW1lOiJVKzQwMC00RkYiLGRlc2NyaXB0aW9uOiJDeXJpbGxpYy4ifSx7bmFtZToiVSs1MDAtNTJGIixkZXNjcmlwdGlvbjoiQ3lyaWxsaWMgU3VwcGxlbWVudC4gRXh0cmEgbGV0dGVycyBmb3IgS29taSwgS2hhbnR5LCBDaHVrY2hpLCBNb3JkdmluLCBLdXJkaXNoLCBBbGV1dCwgQ2h1dmFzaCwgQWJraGF6LCBBemVyYmFpamFuaSwgYW5kIE9yb2suIn0se25hbWU6IlUrMDAtNTJGLCBVKzFFMDAtMUZGRiwgVSsyMjAw4oCTMjJGRiIsZGVzY3JpcHRpb246IkxhdGluLCBHcmVlaywgQ3lyaWxsaWMsIHNvbWUgcHVuY3R1YXRpb24gYW5kIHN5bWJvbHMuIn0se25hbWU6IlUrNTMw4oCTNThGIixkZXNjcmlwdGlvbjoiQXJtZW5pYW4uIn0se25hbWU6IlUrNTkw4oCTNUZGIixkZXNjcmlwdGlvbjoiSGVicmV3LiJ9LHtuYW1lOiJVKzYwMOKAkzZGRiIsZGVzY3JpcHRpb246IkFyYWJpYy4ifSx7bmFtZToiVSs3NTDigJM3N0YiLGRlc2NyaXB0aW9uOiJBcmFiaWMgU3VwcGxlbWVudC4gQWRkaXRpb25hbCBsZXR0ZXJzIGZvciBBZnJpY2FuIGxhbmd1YWdlcywgS2hvd2FyLCBUb3J3YWxpLCBCdXJ1c2hhc2tpLCBhbmQgZWFybHkgUGVyc2lhbi4ifSx7bmFtZToiVSs4QTDigJM4RkYiLGRlc2NyaXB0aW9uOiJBcmFiaWMgRXh0ZW5kZWQtQS4gQWRkaXRpb25hbCBsZXR0ZXJzIGZvciBBZnJpY2FuIGxhbmd1YWdlcywgRXVyb3BlYW4gYW5kIENlbnRyYWwgQXNpYW4gbGFuZ3VhZ2VzLCBSb2hpbmd5YSwgVGFtYXppZ2h0LCBBcndpLCBhbmQgS29yYW5pYyBhbm5vdGF0aW9uIHNpZ25zLiJ9LHtuYW1lOiJVKzcwMOKAkzc0RiIsZGVzY3JpcHRpb246IlN5cmlhYy4ifSx7bmFtZToiVSs5MDDigJM5N0YiLGRlc2NyaXB0aW9uOiJEZXZhbmFnYXJpLiJ9LHtuYW1lOiJVKzk4MOKAkzlGRiIsZGVzY3JpcHRpb246IkJlbmdhbGkuIn0se25hbWU6IlUrQTAw4oCTQTdGIixkZXNjcmlwdGlvbjoiR3VybXVraGkuIn0se25hbWU6IlUrQTgw4oCTQUZGIixkZXNjcmlwdGlvbjoiR3VqYXJhdGkuIn0se25hbWU6IlUrQjAw4oCTQjdGIixkZXNjcmlwdGlvbjoiT3JpeWEuIn0se25hbWU6IlUrQjgw4oCTQkZGIixkZXNjcmlwdGlvbjoiVGFtaWwuIn0se25hbWU6IlUrQzAw4oCTQzdGIixkZXNjcmlwdGlvbjoiVGVsdWd1LiJ9LHtuYW1lOiJVK0M4MOKAk0NGRiIsZGVzY3JpcHRpb246Ikthbm5hZGEuIn0se25hbWU6IlUrRDAw4oCTRDdGIixkZXNjcmlwdGlvbjoiTWFsYXlhbGFtLiJ9LHtuYW1lOiJVK0Q4MOKAk0RGRiIsZGVzY3JpcHRpb246IlNpbmhhbGEuIn0se25hbWU6IlUrMTE4QTDigJMxMThGRiIsZGVzY3JpcHRpb246IldhcmFuZyBDaXRpLiJ9LHtuYW1lOiJVK0UwMOKAk0U3RiIsZGVzY3JpcHRpb246IlRoYWkuIn0se25hbWU6IlUrMUEyMOKAkzFBQUYiLGRlc2NyaXB0aW9uOiJUYWkgVGhhbS4ifSx7bmFtZToiVStBQTgw4oCTQUFERiIsZGVzY3JpcHRpb246IlRhaSBWaWV0LiJ9LHtuYW1lOiJVK0U4MOKAk0VGRiIsZGVzY3JpcHRpb246Ikxhby4ifSx7bmFtZToiVStGMDDigJNGRkYiLGRlc2NyaXB0aW9uOiJUaWJldGFuLiJ9LHtuYW1lOiJVKzEwMDDigJMxMDlGIixkZXNjcmlwdGlvbjoiTXlhbm1hciAoQnVybWVzZSkuIn0se25hbWU6IlUrMTBBMOKAkzEwRkYiLGRlc2NyaXB0aW9uOiJHZW9yZ2lhbi4ifSx7bmFtZToiVSsxMjAw4oCTMTM3RiIsZGVzY3JpcHRpb246IkV0aGlvcGljLiJ9LHtuYW1lOiJVKzEzODDigJMxMzlGIixkZXNjcmlwdGlvbjoiRXRoaW9waWMgU3VwcGxlbWVudC4gRXh0cmEgU3lsbGFibGVzIGZvciBTZWJhdGJlaXQsIGFuZCBUb25hbCBtYXJrcyJ9LHtuYW1lOiJVKzJEODDigJMyRERGIixkZXNjcmlwdGlvbjoiRXRoaW9waWMgRXh0ZW5kZWQuIEV4dHJhIFN5bGxhYmxlcyBmb3IgTWUnZW4sIEJsaW4sIGFuZCBTZWJhdGJlaXQuIn0se25hbWU6IlUrQUIwMOKAk0FCMkYiLGRlc2NyaXB0aW9uOiJFdGhpb3BpYyBFeHRlbmRlZC1BLiBFeHRyYSBjaGFyYWN0ZXJzIGZvciBHYW1vLUdvZmEtRGF3cm8sIEJhc2tldG8sIGFuZCBHdW11ei4ifSx7bmFtZToiVSsxNzgw4oCTMTdGRiIsZGVzY3JpcHRpb246IktobWVyLiJ9LHtuYW1lOiJVKzE4MDDigJMxOEFGIixkZXNjcmlwdGlvbjoiTW9uZ29saWFuLiJ9LHtuYW1lOiJVKzFCODDigJMxQkJGIixkZXNjcmlwdGlvbjoiU3VuZGFuZXNlLiJ9LHtuYW1lOiJVKzFDQzDigJMxQ0NGIixkZXNjcmlwdGlvbjoiU3VuZGFuZXNlIFN1cHBsZW1lbnQuIFB1bmN0dWF0aW9uLiJ9LHtuYW1lOiJVKzRFMDDigJM5RkQ1IixkZXNjcmlwdGlvbjoiQ0pLIChDaGluZXNlLCBKYXBhbmVzZSwgS29yZWFuKSBVbmlmaWVkIElkZW9ncmFwaHMuIE1vc3QgY29tbW9uIGlkZW9ncmFwaHMgZm9yIG1vZGVybiBDaGluZXNlIGFuZCBKYXBhbmVzZS4ifSx7bmFtZToiVSszNDAw4oCTNERCNSIsZGVzY3JpcHRpb246IkNKSyBVbmlmaWVkIElkZW9ncmFwaHMgRXh0ZW5zaW9uIEEuIFJhcmUgaWRlb2dyYXBocy4ifSx7bmFtZToiVSsyRjAw4oCTMkZERiIsZGVzY3JpcHRpb246Ikthbmd4aSBSYWRpY2Fscy4ifSx7bmFtZToiVSsyRTgw4oCTMkVGRiIsZGVzY3JpcHRpb246IkNKSyBSYWRpY2FscyBTdXBwbGVtZW50LiBBbHRlcm5hdGl2ZSBmb3JtcyBvZiBLYW5neGkgUmFkaWNhbHMuIn0se25hbWU6IlUrMTEwMOKAkzExRkYiLGRlc2NyaXB0aW9uOiJIYW5ndWwgSmFtby4ifSx7bmFtZToiVStBQzAw4oCTRDdBRiIsZGVzY3JpcHRpb246Ikhhbmd1bCBTeWxsYWJsZXMuIn0se25hbWU6IlUrMzA0MOKAkzMwOUYiLGRlc2NyaXB0aW9uOiJIaXJhZ2FuYS4ifSx7bmFtZToiVSszMEEw4oCTMzBGRiIsZGVzY3JpcHRpb246IkthdGFrYW5hLiJ9LHtuYW1lOiJVK0E1LCBVKzRFMDAtOUZGRiwgVSszMD8/LCBVK0ZGMDAtRkY5RiIsZGVzY3JpcHRpb246IkphcGFuZXNlIEthbmppLCBIaXJhZ2FuYSBhbmQgS2F0YWthbmEgY2hhcmFjdGVycyBwbHVzIFllbi9ZdWFuIHN5bWJvbC4ifSx7bmFtZToiVStBNEQw4oCTQTRGRiIsZGVzY3JpcHRpb246Ikxpc3UuIn0se25hbWU6IlUrQTAwMOKAk0E0OEYiLGRlc2NyaXB0aW9uOiJZaSBTeWxsYWJsZXMuIn0se25hbWU6IlUrQTQ5MOKAk0E0Q0YiLGRlc2NyaXB0aW9uOiJZaSBSYWRpY2Fscy4ifSx7bmFtZToiVSsyMDAwLTIwNkYiLGRlc2NyaXB0aW9uOiJHZW5lcmFsIFB1bmN0dWF0aW9uLiJ9LHtuYW1lOiJVKzMwMDDigJMzMDNGIixkZXNjcmlwdGlvbjoiQ0pLIFN5bWJvbHMgYW5kIFB1bmN0dWF0aW9uLiJ9LHtuYW1lOiJVKzIwNzDigJMyMDlGIixkZXNjcmlwdGlvbjoiU3VwZXJzY3JpcHRzIGFuZCBTdWJzY3JpcHRzLiJ9LHtuYW1lOiJVKzIwQTDigJMyMENGIixkZXNjcmlwdGlvbjoiQ3VycmVuY3kgU3ltYm9scy4ifSx7bmFtZToiVSsyMTAw4oCTMjE0RiIsZGVzY3JpcHRpb246IkxldHRlcmxpa2UgU3ltYm9scy4ifSx7bmFtZToiVSsyMTUw4oCTMjE4RiIsZGVzY3JpcHRpb246Ik51bWJlciBGb3Jtcy4ifSx7bmFtZToiVSsyMTkw4oCTMjFGRiIsZGVzY3JpcHRpb246IkFycm93cy4ifSx7bmFtZToiVSsyMjAw4oCTMjJGRiIsZGVzY3JpcHRpb246Ik1hdGhlbWF0aWNhbCBPcGVyYXRvcnMuIn0se25hbWU6IlUrMjMwMOKAkzIzRkYiLGRlc2NyaXB0aW9uOiJNaXNjZWxsYW5lb3VzIFRlY2huaWNhbC4ifSx7bmFtZToiVStFMDAwLUY4RkYiLGRlc2NyaXB0aW9uOiJQcml2YXRlIFVzZSBBcmVhLiJ9LHtuYW1lOiJVK0ZCMDDigJNGQjRGIixkZXNjcmlwdGlvbjoiQWxwaGFiZXRpYyBQcmVzZW50YXRpb24gRm9ybXMuIExpZ2F0dXJlcyBmb3IgbGF0aW4sIEFybWVuaWFuLCBhbmQgSGVicmV3LiJ9LHtuYW1lOiJVK0ZCNTDigJNGREZGIixkZXNjcmlwdGlvbjoiQXJhYmljIFByZXNlbnRhdGlvbiBGb3Jtcy1BLiBDb250ZXh0dWFsIGZvcm1zIC8gbGlnYXR1cmVzIGZvciBQZXJzaWFuLCBVcmR1LCBTaW5kaGksIENlbnRyYWwgQXNpYW4gbGFuZ3VhZ2VzLCBldGMsIEFyYWJpYyBwZWRhZ29naWNhbCBzeW1ib2xzLCB3b3JkIGxpZ2F0dXJlcy4ifSx7bmFtZToiVSsxRjYwMOKAkzFGNjRGIixkZXNjcmlwdGlvbjoiRW1vamk6IEVtb3RpY29ucy4ifSx7bmFtZToiVSsyNjAw4oCTMjZGRiIsZGVzY3JpcHRpb246IkVtb2ppOiBNaXNjZWxsYW5lb3VzIFN5bWJvbHMuIn0se25hbWU6IlUrMUYzMDDigJMxRjVGRiIsZGVzY3JpcHRpb246IkVtb2ppOiBNaXNjZWxsYW5lb3VzIFN5bWJvbHMgYW5kIFBpY3RvZ3JhcGhzLiJ9LHtuYW1lOiJVKzFGOTAw4oCTMUY5RkYiLGRlc2NyaXB0aW9uOiJFbW9qaTogU3VwcGxlbWVudGFsIFN5bWJvbHMgYW5kIFBpY3RvZ3JhcGhzLiJ9LHtuYW1lOiJVKzFGNjgw4oCTMUY2RkYiLGRlc2NyaXB0aW9uOiJFbW9qaTogVHJhbnNwb3J0IGFuZCBNYXAgU3ltYm9scy4ifV0sc3ludGF4OiI8dW5pY29kZS1yYW5nZT4jIixyZWxldmFuY2U6NzMsZGVzY3JpcHRpb246IkBmb250LWZhY2UgZGVzY3JpcHRvci4gRGVmaW5lcyB0aGUgc2V0IG9mIFVuaWNvZGUgY29kZXBvaW50cyB0aGF0IG1heSBiZSBzdXBwb3J0ZWQgYnkgdGhlIGZvbnQgZmFjZSBmb3Igd2hpY2ggaXQgaXMgZGVjbGFyZWQuIixyZXN0cmljdGlvbnM6WyJ1bmljb2RlLXJhbmdlIl19LHtuYW1lOiJ1c2VyLXNlbGVjdCIsdmFsdWVzOlt7bmFtZToiYWxsIixkZXNjcmlwdGlvbjoiVGhlIGNvbnRlbnQgb2YgdGhlIGVsZW1lbnQgbXVzdCBiZSBzZWxlY3RlZCBhdG9taWNhbGx5In0se25hbWU6ImF1dG8ifSx7bmFtZToiY29udGFpbiIsZGVzY3JpcHRpb246IlVBcyBtdXN0IG5vdCBhbGxvdyBhIHNlbGVjdGlvbiB3aGljaCBpcyBzdGFydGVkIGluIHRoaXMgZWxlbWVudCB0byBiZSBleHRlbmRlZCBvdXRzaWRlIG9mIHRoaXMgZWxlbWVudC4ifSx7bmFtZToibm9uZSIsZGVzY3JpcHRpb246IlRoZSBVQSBtdXN0IG5vdCBhbGxvdyBzZWxlY3Rpb25zIHRvIGJlIHN0YXJ0ZWQgaW4gdGhpcyBlbGVtZW50LiJ9LHtuYW1lOiJ0ZXh0IixkZXNjcmlwdGlvbjoiVGhlIGVsZW1lbnQgaW1wb3NlcyBubyBjb25zdHJhaW50IG9uIHRoZSBzZWxlY3Rpb24uIn1dLHN5bnRheDoiYXV0byB8IHRleHQgfCBub25lIHwgY29udGFpbiB8IGFsbCIscmVsZXZhbmNlOjc4LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy91c2VyLXNlbGVjdCJ9XSxkZXNjcmlwdGlvbjoiQ29udHJvbHMgdGhlIGFwcGVhcmFuY2Ugb2Ygc2VsZWN0aW9uLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToidmVydGljYWwtYWxpZ24iLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJBbGlnbiB0aGUgZG9taW5hbnQgYmFzZWxpbmUgb2YgdGhlIHBhcmVudCBib3ggd2l0aCB0aGUgZXF1aXZhbGVudCwgb3IgaGV1cmlzdGljYWxseSByZWNvbnN0cnVjdGVkLCBiYXNlbGluZSBvZiB0aGUgZWxlbWVudCBpbmxpbmUgYm94LiJ9LHtuYW1lOiJiYXNlbGluZSIsZGVzY3JpcHRpb246IkFsaWduIHRoZSAnYWxwaGFiZXRpYycgYmFzZWxpbmUgb2YgdGhlIGVsZW1lbnQgd2l0aCB0aGUgJ2FscGhhYmV0aWMnIGJhc2VsaW5lIG9mIHRoZSBwYXJlbnQgZWxlbWVudC4ifSx7bmFtZToiYm90dG9tIixkZXNjcmlwdGlvbjoiQWxpZ24gdGhlIGFmdGVyIGVkZ2Ugb2YgdGhlIGV4dGVuZGVkIGlubGluZSBib3ggd2l0aCB0aGUgYWZ0ZXItZWRnZSBvZiB0aGUgbGluZSBib3guIn0se25hbWU6Im1pZGRsZSIsZGVzY3JpcHRpb246IkFsaWduIHRoZSAnbWlkZGxlJyBiYXNlbGluZSBvZiB0aGUgaW5saW5lIGVsZW1lbnQgd2l0aCB0aGUgbWlkZGxlIGJhc2VsaW5lIG9mIHRoZSBwYXJlbnQuIn0se25hbWU6InN1YiIsZGVzY3JpcHRpb246Ikxvd2VyIHRoZSBiYXNlbGluZSBvZiB0aGUgYm94IHRvIHRoZSBwcm9wZXIgcG9zaXRpb24gZm9yIHN1YnNjcmlwdHMgb2YgdGhlIHBhcmVudCdzIGJveC4gKFRoaXMgdmFsdWUgaGFzIG5vIGVmZmVjdCBvbiB0aGUgZm9udCBzaXplIG9mIHRoZSBlbGVtZW50J3MgdGV4dC4pIn0se25hbWU6InN1cGVyIixkZXNjcmlwdGlvbjoiUmFpc2UgdGhlIGJhc2VsaW5lIG9mIHRoZSBib3ggdG8gdGhlIHByb3BlciBwb3NpdGlvbiBmb3Igc3VwZXJzY3JpcHRzIG9mIHRoZSBwYXJlbnQncyBib3guIChUaGlzIHZhbHVlIGhhcyBubyBlZmZlY3Qgb24gdGhlIGZvbnQgc2l6ZSBvZiB0aGUgZWxlbWVudCdzIHRleHQuKSJ9LHtuYW1lOiJ0ZXh0LWJvdHRvbSIsZGVzY3JpcHRpb246IkFsaWduIHRoZSBib3R0b20gb2YgdGhlIGJveCB3aXRoIHRoZSBhZnRlci1lZGdlIG9mIHRoZSBwYXJlbnQgZWxlbWVudCdzIGZvbnQuIn0se25hbWU6InRleHQtdG9wIixkZXNjcmlwdGlvbjoiQWxpZ24gdGhlIHRvcCBvZiB0aGUgYm94IHdpdGggdGhlIGJlZm9yZS1lZGdlIG9mIHRoZSBwYXJlbnQgZWxlbWVudCdzIGZvbnQuIn0se25hbWU6InRvcCIsZGVzY3JpcHRpb246IkFsaWduIHRoZSBiZWZvcmUgZWRnZSBvZiB0aGUgZXh0ZW5kZWQgaW5saW5lIGJveCB3aXRoIHRoZSBiZWZvcmUtZWRnZSBvZiB0aGUgbGluZSBib3guIn0se25hbWU6Ii13ZWJraXQtYmFzZWxpbmUtbWlkZGxlIn1dLHN5bnRheDoiYmFzZWxpbmUgfCBzdWIgfCBzdXBlciB8IHRleHQtdG9wIHwgdGV4dC1ib3R0b20gfCBtaWRkbGUgfCB0b3AgfCBib3R0b20gfCA8cGVyY2VudGFnZT4gfCA8bGVuZ3RoPiIscmVsZXZhbmNlOjkyLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy92ZXJ0aWNhbC1hbGlnbiJ9XSxkZXNjcmlwdGlvbjoiQWZmZWN0cyB0aGUgdmVydGljYWwgcG9zaXRpb25pbmcgb2YgdGhlIGlubGluZSBib3hlcyBnZW5lcmF0ZWQgYnkgYW4gaW5saW5lLWxldmVsIGVsZW1lbnQgaW5zaWRlIGEgbGluZSBib3guIixyZXN0cmljdGlvbnM6WyJwZXJjZW50YWdlIiwibGVuZ3RoIl19LHtuYW1lOiJ2aXNpYmlsaXR5Iix2YWx1ZXM6W3tuYW1lOiJjb2xsYXBzZSIsZGVzY3JpcHRpb246IlRhYmxlLXNwZWNpZmljLiBJZiB1c2VkIG9uIGVsZW1lbnRzIG90aGVyIHRoYW4gcm93cywgcm93IGdyb3VwcywgY29sdW1ucywgb3IgY29sdW1uIGdyb3VwcywgJ2NvbGxhcHNlJyBoYXMgdGhlIHNhbWUgbWVhbmluZyBhcyAnaGlkZGVuJy4ifSx7bmFtZToiaGlkZGVuIixkZXNjcmlwdGlvbjoiVGhlIGdlbmVyYXRlZCBib3ggaXMgaW52aXNpYmxlIChmdWxseSB0cmFuc3BhcmVudCwgbm90aGluZyBpcyBkcmF3biksIGJ1dCBzdGlsbCBhZmZlY3RzIGxheW91dC4ifSx7bmFtZToidmlzaWJsZSIsZGVzY3JpcHRpb246IlRoZSBnZW5lcmF0ZWQgYm94IGlzIHZpc2libGUuIn1dLHN5bnRheDoidmlzaWJsZSB8IGhpZGRlbiB8IGNvbGxhcHNlIixyZWxldmFuY2U6ODgscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3Zpc2liaWxpdHkifV0sZGVzY3JpcHRpb246IlNwZWNpZmllcyB3aGV0aGVyIHRoZSBib3hlcyBnZW5lcmF0ZWQgYnkgYW4gZWxlbWVudCBhcmUgcmVuZGVyZWQuIEludmlzaWJsZSBib3hlcyBzdGlsbCBhZmZlY3QgbGF5b3V0IChzZXQgdGhlIOKAmGRpc3BsYXnigJkgcHJvcGVydHkgdG8g4oCYbm9uZeKAmSB0byBzdXBwcmVzcyBib3ggZ2VuZXJhdGlvbiBhbHRvZ2V0aGVyKS4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii13ZWJraXQtYW5pbWF0aW9uIixicm93c2VyczpbIkMiLCJTNSJdLHZhbHVlczpbe25hbWU6ImFsdGVybmF0ZSIsZGVzY3JpcHRpb246IlRoZSBhbmltYXRpb24gY3ljbGUgaXRlcmF0aW9ucyB0aGF0IGFyZSBvZGQgY291bnRzIGFyZSBwbGF5ZWQgaW4gdGhlIG5vcm1hbCBkaXJlY3Rpb24sIGFuZCB0aGUgYW5pbWF0aW9uIGN5Y2xlIGl0ZXJhdGlvbnMgdGhhdCBhcmUgZXZlbiBjb3VudHMgYXJlIHBsYXllZCBpbiBhIHJldmVyc2UgZGlyZWN0aW9uLiJ9LHtuYW1lOiJhbHRlcm5hdGUtcmV2ZXJzZSIsZGVzY3JpcHRpb246IlRoZSBhbmltYXRpb24gY3ljbGUgaXRlcmF0aW9ucyB0aGF0IGFyZSBvZGQgY291bnRzIGFyZSBwbGF5ZWQgaW4gdGhlIHJldmVyc2UgZGlyZWN0aW9uLCBhbmQgdGhlIGFuaW1hdGlvbiBjeWNsZSBpdGVyYXRpb25zIHRoYXQgYXJlIGV2ZW4gY291bnRzIGFyZSBwbGF5ZWQgaW4gYSBub3JtYWwgZGlyZWN0aW9uLiJ9LHtuYW1lOiJiYWNrd2FyZHMiLGRlc2NyaXB0aW9uOiJUaGUgYmVnaW5uaW5nIHByb3BlcnR5IHZhbHVlIChhcyBkZWZpbmVkIGluIHRoZSBmaXJzdCBAa2V5ZnJhbWVzIGF0LXJ1bGUpIGlzIGFwcGxpZWQgYmVmb3JlIHRoZSBhbmltYXRpb24gaXMgZGlzcGxheWVkLCBkdXJpbmcgdGhlIHBlcmlvZCBkZWZpbmVkIGJ5ICdhbmltYXRpb24tZGVsYXknLiJ9LHtuYW1lOiJib3RoIixkZXNjcmlwdGlvbjoiQm90aCBmb3J3YXJkcyBhbmQgYmFja3dhcmRzIGZpbGwgbW9kZXMgYXJlIGFwcGxpZWQuIn0se25hbWU6ImZvcndhcmRzIixkZXNjcmlwdGlvbjoiVGhlIGZpbmFsIHByb3BlcnR5IHZhbHVlIChhcyBkZWZpbmVkIGluIHRoZSBsYXN0IEBrZXlmcmFtZXMgYXQtcnVsZSkgaXMgbWFpbnRhaW5lZCBhZnRlciB0aGUgYW5pbWF0aW9uIGNvbXBsZXRlcy4ifSx7bmFtZToiaW5maW5pdGUiLGRlc2NyaXB0aW9uOiJDYXVzZXMgdGhlIGFuaW1hdGlvbiB0byByZXBlYXQgZm9yZXZlci4ifSx7bmFtZToibm9uZSIsZGVzY3JpcHRpb246Ik5vIGFuaW1hdGlvbiBpcyBwZXJmb3JtZWQifSx7bmFtZToibm9ybWFsIixkZXNjcmlwdGlvbjoiTm9ybWFsIHBsYXliYWNrLiJ9LHtuYW1lOiJyZXZlcnNlIixkZXNjcmlwdGlvbjoiQWxsIGl0ZXJhdGlvbnMgb2YgdGhlIGFuaW1hdGlvbiBhcmUgcGxheWVkIGluIHRoZSByZXZlcnNlIGRpcmVjdGlvbiBmcm9tIHRoZSB3YXkgdGhleSB3ZXJlIHNwZWNpZmllZC4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJTaG9ydGhhbmQgcHJvcGVydHkgY29tYmluZXMgc2l4IG9mIHRoZSBhbmltYXRpb24gcHJvcGVydGllcyBpbnRvIGEgc2luZ2xlIHByb3BlcnR5LiIscmVzdHJpY3Rpb25zOlsidGltZSIsImVudW0iLCJ0aW1pbmctZnVuY3Rpb24iLCJpZGVudGlmaWVyIiwibnVtYmVyIl19LHtuYW1lOiItd2Via2l0LWFuaW1hdGlvbi1kZWxheSIsYnJvd3NlcnM6WyJDIiwiUzUiXSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkRlZmluZXMgd2hlbiB0aGUgYW5pbWF0aW9uIHdpbGwgc3RhcnQuIixyZXN0cmljdGlvbnM6WyJ0aW1lIl19LHtuYW1lOiItd2Via2l0LWFuaW1hdGlvbi1kaXJlY3Rpb24iLGJyb3dzZXJzOlsiQyIsIlM1Il0sdmFsdWVzOlt7bmFtZToiYWx0ZXJuYXRlIixkZXNjcmlwdGlvbjoiVGhlIGFuaW1hdGlvbiBjeWNsZSBpdGVyYXRpb25zIHRoYXQgYXJlIG9kZCBjb3VudHMgYXJlIHBsYXllZCBpbiB0aGUgbm9ybWFsIGRpcmVjdGlvbiwgYW5kIHRoZSBhbmltYXRpb24gY3ljbGUgaXRlcmF0aW9ucyB0aGF0IGFyZSBldmVuIGNvdW50cyBhcmUgcGxheWVkIGluIGEgcmV2ZXJzZSBkaXJlY3Rpb24uIn0se25hbWU6ImFsdGVybmF0ZS1yZXZlcnNlIixkZXNjcmlwdGlvbjoiVGhlIGFuaW1hdGlvbiBjeWNsZSBpdGVyYXRpb25zIHRoYXQgYXJlIG9kZCBjb3VudHMgYXJlIHBsYXllZCBpbiB0aGUgcmV2ZXJzZSBkaXJlY3Rpb24sIGFuZCB0aGUgYW5pbWF0aW9uIGN5Y2xlIGl0ZXJhdGlvbnMgdGhhdCBhcmUgZXZlbiBjb3VudHMgYXJlIHBsYXllZCBpbiBhIG5vcm1hbCBkaXJlY3Rpb24uIn0se25hbWU6Im5vcm1hbCIsZGVzY3JpcHRpb246Ik5vcm1hbCBwbGF5YmFjay4ifSx7bmFtZToicmV2ZXJzZSIsZGVzY3JpcHRpb246IkFsbCBpdGVyYXRpb25zIG9mIHRoZSBhbmltYXRpb24gYXJlIHBsYXllZCBpbiB0aGUgcmV2ZXJzZSBkaXJlY3Rpb24gZnJvbSB0aGUgd2F5IHRoZXkgd2VyZSBzcGVjaWZpZWQuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiRGVmaW5lcyB3aGV0aGVyIG9yIG5vdCB0aGUgYW5pbWF0aW9uIHNob3VsZCBwbGF5IGluIHJldmVyc2Ugb24gYWx0ZXJuYXRlIGN5Y2xlcy4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii13ZWJraXQtYW5pbWF0aW9uLWR1cmF0aW9uIixicm93c2VyczpbIkMiLCJTNSJdLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiRGVmaW5lcyB0aGUgbGVuZ3RoIG9mIHRpbWUgdGhhdCBhbiBhbmltYXRpb24gdGFrZXMgdG8gY29tcGxldGUgb25lIGN5Y2xlLiIscmVzdHJpY3Rpb25zOlsidGltZSJdfSx7bmFtZToiLXdlYmtpdC1hbmltYXRpb24tZmlsbC1tb2RlIixicm93c2VyczpbIkMiLCJTNSJdLHZhbHVlczpbe25hbWU6ImJhY2t3YXJkcyIsZGVzY3JpcHRpb246IlRoZSBiZWdpbm5pbmcgcHJvcGVydHkgdmFsdWUgKGFzIGRlZmluZWQgaW4gdGhlIGZpcnN0IEBrZXlmcmFtZXMgYXQtcnVsZSkgaXMgYXBwbGllZCBiZWZvcmUgdGhlIGFuaW1hdGlvbiBpcyBkaXNwbGF5ZWQsIGR1cmluZyB0aGUgcGVyaW9kIGRlZmluZWQgYnkgJ2FuaW1hdGlvbi1kZWxheScuIn0se25hbWU6ImJvdGgiLGRlc2NyaXB0aW9uOiJCb3RoIGZvcndhcmRzIGFuZCBiYWNrd2FyZHMgZmlsbCBtb2RlcyBhcmUgYXBwbGllZC4ifSx7bmFtZToiZm9yd2FyZHMiLGRlc2NyaXB0aW9uOiJUaGUgZmluYWwgcHJvcGVydHkgdmFsdWUgKGFzIGRlZmluZWQgaW4gdGhlIGxhc3QgQGtleWZyYW1lcyBhdC1ydWxlKSBpcyBtYWludGFpbmVkIGFmdGVyIHRoZSBhbmltYXRpb24gY29tcGxldGVzLiJ9LHtuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiVGhlcmUgaXMgbm8gY2hhbmdlIHRvIHRoZSBwcm9wZXJ0eSB2YWx1ZSBiZXR3ZWVuIHRoZSB0aW1lIHRoZSBhbmltYXRpb24gaXMgYXBwbGllZCBhbmQgdGhlIHRpbWUgdGhlIGFuaW1hdGlvbiBiZWdpbnMgcGxheWluZyBvciBhZnRlciB0aGUgYW5pbWF0aW9uIGNvbXBsZXRlcy4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJEZWZpbmVzIHdoYXQgdmFsdWVzIGFyZSBhcHBsaWVkIGJ5IHRoZSBhbmltYXRpb24gb3V0c2lkZSB0aGUgdGltZSBpdCBpcyBleGVjdXRpbmcuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiItd2Via2l0LWFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQiLGJyb3dzZXJzOlsiQyIsIlM1Il0sdmFsdWVzOlt7bmFtZToiaW5maW5pdGUiLGRlc2NyaXB0aW9uOiJDYXVzZXMgdGhlIGFuaW1hdGlvbiB0byByZXBlYXQgZm9yZXZlci4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJEZWZpbmVzIHRoZSBudW1iZXIgb2YgdGltZXMgYW4gYW5pbWF0aW9uIGN5Y2xlIGlzIHBsYXllZC4gVGhlIGRlZmF1bHQgdmFsdWUgaXMgb25lLCBtZWFuaW5nIHRoZSBhbmltYXRpb24gd2lsbCBwbGF5IGZyb20gYmVnaW5uaW5nIHRvIGVuZCBvbmNlLiIscmVzdHJpY3Rpb25zOlsibnVtYmVyIiwiZW51bSJdfSx7bmFtZToiLXdlYmtpdC1hbmltYXRpb24tbmFtZSIsYnJvd3NlcnM6WyJDIiwiUzUiXSx2YWx1ZXM6W3tuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiTm8gYW5pbWF0aW9uIGlzIHBlcmZvcm1lZCJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkRlZmluZXMgYSBsaXN0IG9mIGFuaW1hdGlvbnMgdGhhdCBhcHBseS4gRWFjaCBuYW1lIGlzIHVzZWQgdG8gc2VsZWN0IHRoZSBrZXlmcmFtZSBhdC1ydWxlIHRoYXQgcHJvdmlkZXMgdGhlIHByb3BlcnR5IHZhbHVlcyBmb3IgdGhlIGFuaW1hdGlvbi4iLHJlc3RyaWN0aW9uczpbImlkZW50aWZpZXIiLCJlbnVtIl19LHtuYW1lOiItd2Via2l0LWFuaW1hdGlvbi1wbGF5LXN0YXRlIixicm93c2VyczpbIkMiLCJTNSJdLHZhbHVlczpbe25hbWU6InBhdXNlZCIsZGVzY3JpcHRpb246IkEgcnVubmluZyBhbmltYXRpb24gd2lsbCBiZSBwYXVzZWQuIn0se25hbWU6InJ1bm5pbmciLGRlc2NyaXB0aW9uOiJSZXN1bWUgcGxheWJhY2sgb2YgYSBwYXVzZWQgYW5pbWF0aW9uLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkRlZmluZXMgd2hldGhlciB0aGUgYW5pbWF0aW9uIGlzIHJ1bm5pbmcgb3IgcGF1c2VkLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLXdlYmtpdC1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uIixicm93c2VyczpbIkMiLCJTNSJdLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiRGVzY3JpYmVzIGhvdyB0aGUgYW5pbWF0aW9uIHdpbGwgcHJvZ3Jlc3Mgb3ZlciBvbmUgY3ljbGUgb2YgaXRzIGR1cmF0aW9uLiBTZWUgdGhlICd0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbicuIixyZXN0cmljdGlvbnM6WyJ0aW1pbmctZnVuY3Rpb24iXX0se25hbWU6Ii13ZWJraXQtYXBwZWFyYW5jZSIsYnJvd3NlcnM6WyJDIiwiUzMiXSx2YWx1ZXM6W3tuYW1lOiJidXR0b24ifSx7bmFtZToiYnV0dG9uLWJldmVsIn0se25hbWU6ImNhcHMtbG9jay1pbmRpY2F0b3IifSx7bmFtZToiY2FyZXQifSx7bmFtZToiY2hlY2tib3gifSx7bmFtZToiZGVmYXVsdC1idXR0b24ifSx7bmFtZToibGlzdGJveCJ9LHtuYW1lOiJsaXN0aXRlbSJ9LHtuYW1lOiJtZWRpYS1mdWxsc2NyZWVuLWJ1dHRvbiJ9LHtuYW1lOiJtZWRpYS1tdXRlLWJ1dHRvbiJ9LHtuYW1lOiJtZWRpYS1wbGF5LWJ1dHRvbiJ9LHtuYW1lOiJtZWRpYS1zZWVrLWJhY2stYnV0dG9uIn0se25hbWU6Im1lZGlhLXNlZWstZm9yd2FyZC1idXR0b24ifSx7bmFtZToibWVkaWEtc2xpZGVyIn0se25hbWU6Im1lZGlhLXNsaWRlcnRodW1iIn0se25hbWU6Im1lbnVsaXN0In0se25hbWU6Im1lbnVsaXN0LWJ1dHRvbiJ9LHtuYW1lOiJtZW51bGlzdC10ZXh0In0se25hbWU6Im1lbnVsaXN0LXRleHRmaWVsZCJ9LHtuYW1lOiJub25lIn0se25hbWU6InB1c2gtYnV0dG9uIn0se25hbWU6InJhZGlvIn0se25hbWU6InNjcm9sbGJhcmJ1dHRvbi1kb3duIn0se25hbWU6InNjcm9sbGJhcmJ1dHRvbi1sZWZ0In0se25hbWU6InNjcm9sbGJhcmJ1dHRvbi1yaWdodCJ9LHtuYW1lOiJzY3JvbGxiYXJidXR0b24tdXAifSx7bmFtZToic2Nyb2xsYmFyZ3JpcHBlci1ob3Jpem9udGFsIn0se25hbWU6InNjcm9sbGJhcmdyaXBwZXItdmVydGljYWwifSx7bmFtZToic2Nyb2xsYmFydGh1bWItaG9yaXpvbnRhbCJ9LHtuYW1lOiJzY3JvbGxiYXJ0aHVtYi12ZXJ0aWNhbCJ9LHtuYW1lOiJzY3JvbGxiYXJ0cmFjay1ob3Jpem9udGFsIn0se25hbWU6InNjcm9sbGJhcnRyYWNrLXZlcnRpY2FsIn0se25hbWU6InNlYXJjaGZpZWxkIn0se25hbWU6InNlYXJjaGZpZWxkLWNhbmNlbC1idXR0b24ifSx7bmFtZToic2VhcmNoZmllbGQtZGVjb3JhdGlvbiJ9LHtuYW1lOiJzZWFyY2hmaWVsZC1yZXN1bHRzLWJ1dHRvbiJ9LHtuYW1lOiJzZWFyY2hmaWVsZC1yZXN1bHRzLWRlY29yYXRpb24ifSx7bmFtZToic2xpZGVyLWhvcml6b250YWwifSx7bmFtZToic2xpZGVydGh1bWItaG9yaXpvbnRhbCJ9LHtuYW1lOiJzbGlkZXJ0aHVtYi12ZXJ0aWNhbCJ9LHtuYW1lOiJzbGlkZXItdmVydGljYWwifSx7bmFtZToic3F1YXJlLWJ1dHRvbiJ9LHtuYW1lOiJ0ZXh0YXJlYSJ9LHtuYW1lOiJ0ZXh0ZmllbGQifV0sc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiJub25lIHwgYnV0dG9uIHwgYnV0dG9uLWJldmVsIHwgY2FyZXQgfCBjaGVja2JveCB8IGRlZmF1bHQtYnV0dG9uIHwgaW5uZXItc3Bpbi1idXR0b24gfCBsaXN0Ym94IHwgbGlzdGl0ZW0gfCBtZWRpYS1jb250cm9scy1iYWNrZ3JvdW5kIHwgbWVkaWEtY29udHJvbHMtZnVsbHNjcmVlbi1iYWNrZ3JvdW5kIHwgbWVkaWEtY3VycmVudC10aW1lLWRpc3BsYXkgfCBtZWRpYS1lbnRlci1mdWxsc2NyZWVuLWJ1dHRvbiB8IG1lZGlhLWV4aXQtZnVsbHNjcmVlbi1idXR0b24gfCBtZWRpYS1mdWxsc2NyZWVuLWJ1dHRvbiB8IG1lZGlhLW11dGUtYnV0dG9uIHwgbWVkaWEtb3ZlcmxheS1wbGF5LWJ1dHRvbiB8IG1lZGlhLXBsYXktYnV0dG9uIHwgbWVkaWEtc2Vlay1iYWNrLWJ1dHRvbiB8IG1lZGlhLXNlZWstZm9yd2FyZC1idXR0b24gfCBtZWRpYS1zbGlkZXIgfCBtZWRpYS1zbGlkZXJ0aHVtYiB8IG1lZGlhLXRpbWUtcmVtYWluaW5nLWRpc3BsYXkgfCBtZWRpYS10b2dnbGUtY2xvc2VkLWNhcHRpb25zLWJ1dHRvbiB8IG1lZGlhLXZvbHVtZS1zbGlkZXIgfCBtZWRpYS12b2x1bWUtc2xpZGVyLWNvbnRhaW5lciB8IG1lZGlhLXZvbHVtZS1zbGlkZXJ0aHVtYiB8IG1lbnVsaXN0IHwgbWVudWxpc3QtYnV0dG9uIHwgbWVudWxpc3QtdGV4dCB8IG1lbnVsaXN0LXRleHRmaWVsZCB8IG1ldGVyIHwgcHJvZ3Jlc3MtYmFyIHwgcHJvZ3Jlc3MtYmFyLXZhbHVlIHwgcHVzaC1idXR0b24gfCByYWRpbyB8IHNlYXJjaGZpZWxkIHwgc2VhcmNoZmllbGQtY2FuY2VsLWJ1dHRvbiB8IHNlYXJjaGZpZWxkLWRlY29yYXRpb24gfCBzZWFyY2hmaWVsZC1yZXN1bHRzLWJ1dHRvbiB8IHNlYXJjaGZpZWxkLXJlc3VsdHMtZGVjb3JhdGlvbiB8IHNsaWRlci1ob3Jpem9udGFsIHwgc2xpZGVyLXZlcnRpY2FsIHwgc2xpZGVydGh1bWItaG9yaXpvbnRhbCB8IHNsaWRlcnRodW1iLXZlcnRpY2FsIHwgc3F1YXJlLWJ1dHRvbiB8IHRleHRhcmVhIHwgdGV4dGZpZWxkIHwgLWFwcGxlLXBheS1idXR0b24iLHJlbGV2YW5jZTowLGRlc2NyaXB0aW9uOiJDaGFuZ2VzIHRoZSBhcHBlYXJhbmNlIG9mIGJ1dHRvbnMgYW5kIG90aGVyIGNvbnRyb2xzIHRvIHJlc2VtYmxlIG5hdGl2ZSBjb250cm9scy4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii13ZWJraXQtYmFja2Ryb3AtZmlsdGVyIixicm93c2VyczpbIlM5Il0sdmFsdWVzOlt7bmFtZToibm9uZSIsZGVzY3JpcHRpb246Ik5vIGZpbHRlciBlZmZlY3RzIGFyZSBhcHBsaWVkLiJ9LHtuYW1lOiJibHVyKCkiLGRlc2NyaXB0aW9uOiJBcHBsaWVzIGEgR2F1c3NpYW4gYmx1ciB0byB0aGUgaW5wdXQgaW1hZ2UuIn0se25hbWU6ImJyaWdodG5lc3MoKSIsZGVzY3JpcHRpb246IkFwcGxpZXMgYSBsaW5lYXIgbXVsdGlwbGllciB0byBpbnB1dCBpbWFnZSwgbWFraW5nIGl0IGFwcGVhciBtb3JlIG9yIGxlc3MgYnJpZ2h0LiJ9LHtuYW1lOiJjb250cmFzdCgpIixkZXNjcmlwdGlvbjoiQWRqdXN0cyB0aGUgY29udHJhc3Qgb2YgdGhlIGlucHV0LiJ9LHtuYW1lOiJkcm9wLXNoYWRvdygpIixkZXNjcmlwdGlvbjoiQXBwbGllcyBhIGRyb3Agc2hhZG93IGVmZmVjdCB0byB0aGUgaW5wdXQgaW1hZ2UuIn0se25hbWU6ImdyYXlzY2FsZSgpIixkZXNjcmlwdGlvbjoiQ29udmVydHMgdGhlIGlucHV0IGltYWdlIHRvIGdyYXlzY2FsZS4ifSx7bmFtZToiaHVlLXJvdGF0ZSgpIixkZXNjcmlwdGlvbjoiQXBwbGllcyBhIGh1ZSByb3RhdGlvbiBvbiB0aGUgaW5wdXQgaW1hZ2UuICJ9LHtuYW1lOiJpbnZlcnQoKSIsZGVzY3JpcHRpb246IkludmVydHMgdGhlIHNhbXBsZXMgaW4gdGhlIGlucHV0IGltYWdlLiJ9LHtuYW1lOiJvcGFjaXR5KCkiLGRlc2NyaXB0aW9uOiJBcHBsaWVzIHRyYW5zcGFyZW5jeSB0byB0aGUgc2FtcGxlcyBpbiB0aGUgaW5wdXQgaW1hZ2UuIn0se25hbWU6InNhdHVyYXRlKCkiLGRlc2NyaXB0aW9uOiJTYXR1cmF0ZXMgdGhlIGlucHV0IGltYWdlLiJ9LHtuYW1lOiJzZXBpYSgpIixkZXNjcmlwdGlvbjoiQ29udmVydHMgdGhlIGlucHV0IGltYWdlIHRvIHNlcGlhLiJ9LHtuYW1lOiJ1cmwoKSIsZGVzY3JpcHRpb246IkEgZmlsdGVyIHJlZmVyZW5jZSB0byBhIDxmaWx0ZXI+IGVsZW1lbnQuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiQXBwbGllcyBhIGZpbHRlciBlZmZlY3Qgd2hlcmUgdGhlIGZpcnN0IGZpbHRlciBpbiB0aGUgbGlzdCB0YWtlcyB0aGUgZWxlbWVudCdzIGJhY2tncm91bmQgaW1hZ2UgYXMgdGhlIGlucHV0IGltYWdlLiIscmVzdHJpY3Rpb25zOlsiZW51bSIsInVybCJdfSx7bmFtZToiLXdlYmtpdC1iYWNrZmFjZS12aXNpYmlsaXR5Iixicm93c2VyczpbIkMiLCJTNSJdLHZhbHVlczpbe25hbWU6ImhpZGRlbiJ9LHtuYW1lOiJ2aXNpYmxlIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiRGV0ZXJtaW5lcyB3aGV0aGVyIG9yIG5vdCB0aGUgJ2JhY2snIHNpZGUgb2YgYSB0cmFuc2Zvcm1lZCBlbGVtZW50IGlzIHZpc2libGUgd2hlbiBmYWNpbmcgdGhlIHZpZXdlci4gV2l0aCBhbiBpZGVudGl0eSB0cmFuc2Zvcm0sIHRoZSBmcm9udCBzaWRlIG9mIGFuIGVsZW1lbnQgZmFjZXMgdGhlIHZpZXdlci4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii13ZWJraXQtYmFja2dyb3VuZC1jbGlwIixicm93c2VyczpbIkMiLCJTMyJdLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiRGV0ZXJtaW5lcyB0aGUgYmFja2dyb3VuZCBwYWludGluZyBhcmVhLiIscmVzdHJpY3Rpb25zOlsiYm94Il19LHtuYW1lOiItd2Via2l0LWJhY2tncm91bmQtY29tcG9zaXRlIixicm93c2VyczpbIkMiLCJTMyJdLHZhbHVlczpbe25hbWU6ImJvcmRlciJ9LHtuYW1lOiJwYWRkaW5nIn1dLHJlbGV2YW5jZTo1MCxyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiItd2Via2l0LWJhY2tncm91bmQtb3JpZ2luIixicm93c2VyczpbIkMiLCJTMyJdLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiRm9yIGVsZW1lbnRzIHJlbmRlcmVkIGFzIGEgc2luZ2xlIGJveCwgc3BlY2lmaWVzIHRoZSBiYWNrZ3JvdW5kIHBvc2l0aW9uaW5nIGFyZWEuIEZvciBlbGVtZW50cyByZW5kZXJlZCBhcyBtdWx0aXBsZSBib3hlcyAoZS5nLiwgaW5saW5lIGJveGVzIG9uIHNldmVyYWwgbGluZXMsIGJveGVzIG9uIHNldmVyYWwgcGFnZXMpIHNwZWNpZmllcyB3aGljaCBib3hlcyAnYm94LWRlY29yYXRpb24tYnJlYWsnIG9wZXJhdGVzIG9uIHRvIGRldGVybWluZSB0aGUgYmFja2dyb3VuZCBwb3NpdGlvbmluZyBhcmVhKHMpLiIscmVzdHJpY3Rpb25zOlsiYm94Il19LHtuYW1lOiItd2Via2l0LWJvcmRlci1pbWFnZSIsYnJvd3NlcnM6WyJDIiwiUzUiXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiSWYgJ2F1dG8nIGlzIHNwZWNpZmllZCB0aGVuIHRoZSBib3JkZXIgaW1hZ2Ugd2lkdGggaXMgdGhlIGludHJpbnNpYyB3aWR0aCBvciBoZWlnaHQgKHdoaWNoZXZlciBpcyBhcHBsaWNhYmxlKSBvZiB0aGUgY29ycmVzcG9uZGluZyBpbWFnZSBzbGljZS4gSWYgdGhlIGltYWdlIGRvZXMgbm90IGhhdmUgdGhlIHJlcXVpcmVkIGludHJpbnNpYyBkaW1lbnNpb24gdGhlbiB0aGUgY29ycmVzcG9uZGluZyBib3JkZXItd2lkdGggaXMgdXNlZCBpbnN0ZWFkLiJ9LHtuYW1lOiJmaWxsIixkZXNjcmlwdGlvbjoiQ2F1c2VzIHRoZSBtaWRkbGUgcGFydCBvZiB0aGUgYm9yZGVyLWltYWdlIHRvIGJlIHByZXNlcnZlZC4ifSx7bmFtZToibm9uZSJ9LHtuYW1lOiJyZXBlYXQiLGRlc2NyaXB0aW9uOiJUaGUgaW1hZ2UgaXMgdGlsZWQgKHJlcGVhdGVkKSB0byBmaWxsIHRoZSBhcmVhLiJ9LHtuYW1lOiJyb3VuZCIsZGVzY3JpcHRpb246IlRoZSBpbWFnZSBpcyB0aWxlZCAocmVwZWF0ZWQpIHRvIGZpbGwgdGhlIGFyZWEuIElmIGl0IGRvZXMgbm90IGZpbGwgdGhlIGFyZWEgd2l0aCBhIHdob2xlIG51bWJlciBvZiB0aWxlcywgdGhlIGltYWdlIGlzIHJlc2NhbGVkIHNvIHRoYXQgaXQgZG9lcy4ifSx7bmFtZToic3BhY2UiLGRlc2NyaXB0aW9uOiJUaGUgaW1hZ2UgaXMgdGlsZWQgKHJlcGVhdGVkKSB0byBmaWxsIHRoZSBhcmVhLiBJZiBpdCBkb2VzIG5vdCBmaWxsIHRoZSBhcmVhIHdpdGggYSB3aG9sZSBudW1iZXIgb2YgdGlsZXMsIHRoZSBleHRyYSBzcGFjZSBpcyBkaXN0cmlidXRlZCBhcm91bmQgdGhlIHRpbGVzLiJ9LHtuYW1lOiJzdHJldGNoIixkZXNjcmlwdGlvbjoiVGhlIGltYWdlIGlzIHN0cmV0Y2hlZCB0byBmaWxsIHRoZSBhcmVhLiJ9LHtuYW1lOiJ1cmwoKSJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlNob3J0aGFuZCBwcm9wZXJ0eSBmb3Igc2V0dGluZyAnYm9yZGVyLWltYWdlLXNvdXJjZScsICdib3JkZXItaW1hZ2Utc2xpY2UnLCAnYm9yZGVyLWltYWdlLXdpZHRoJywgJ2JvcmRlci1pbWFnZS1vdXRzZXQnIGFuZCAnYm9yZGVyLWltYWdlLXJlcGVhdCcuIE9taXR0ZWQgdmFsdWVzIGFyZSBzZXQgdG8gdGhlaXIgaW5pdGlhbCB2YWx1ZXMuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJwZXJjZW50YWdlIiwibnVtYmVyIiwidXJsIiwiZW51bSJdfSx7bmFtZToiLXdlYmtpdC1ib3gtYWxpZ24iLGJyb3dzZXJzOlsiQyIsIlMzIl0sdmFsdWVzOlt7bmFtZToiYmFzZWxpbmUiLGRlc2NyaXB0aW9uOiJJZiB0aGlzIGJveCBvcmllbnRhdGlvbiBpcyBpbmxpbmUtYXhpcyBvciBob3Jpem9udGFsLCBhbGwgY2hpbGRyZW4gYXJlIHBsYWNlZCB3aXRoIHRoZWlyIGJhc2VsaW5lcyBhbGlnbmVkLCBhbmQgZXh0cmEgc3BhY2UgcGxhY2VkIGJlZm9yZSBvciBhZnRlciBhcyBuZWNlc3NhcnkuIEZvciBibG9jayBmbG93cywgdGhlIGJhc2VsaW5lIG9mIHRoZSBmaXJzdCBub24tZW1wdHkgbGluZSBib3ggbG9jYXRlZCB3aXRoaW4gdGhlIGVsZW1lbnQgaXMgdXNlZC4gRm9yIHRhYmxlcywgdGhlIGJhc2VsaW5lIG9mIHRoZSBmaXJzdCBjZWxsIGlzIHVzZWQuIn0se25hbWU6ImNlbnRlciIsZGVzY3JpcHRpb246IkFueSBleHRyYSBzcGFjZSBpcyBkaXZpZGVkIGV2ZW5seSwgd2l0aCBoYWxmIHBsYWNlZCBhYm92ZSB0aGUgY2hpbGQgYW5kIHRoZSBvdGhlciBoYWxmIHBsYWNlZCBhZnRlciB0aGUgY2hpbGQuIn0se25hbWU6ImVuZCIsZGVzY3JpcHRpb246IkZvciBub3JtYWwgZGlyZWN0aW9uIGJveGVzLCB0aGUgYm90dG9tIGVkZ2Ugb2YgZWFjaCBjaGlsZCBpcyBwbGFjZWQgYWxvbmcgdGhlIGJvdHRvbSBvZiB0aGUgYm94LiBFeHRyYSBzcGFjZSBpcyBwbGFjZWQgYWJvdmUgdGhlIGVsZW1lbnQuIEZvciByZXZlcnNlIGRpcmVjdGlvbiBib3hlcywgdGhlIHRvcCBlZGdlIG9mIGVhY2ggY2hpbGQgaXMgcGxhY2VkIGFsb25nIHRoZSB0b3Agb2YgdGhlIGJveC4gRXh0cmEgc3BhY2UgaXMgcGxhY2VkIGJlbG93IHRoZSBlbGVtZW50LiJ9LHtuYW1lOiJzdGFydCIsZGVzY3JpcHRpb246IkZvciBub3JtYWwgZGlyZWN0aW9uIGJveGVzLCB0aGUgdG9wIGVkZ2Ugb2YgZWFjaCBjaGlsZCBpcyBwbGFjZWQgYWxvbmcgdGhlIHRvcCBvZiB0aGUgYm94LiBFeHRyYSBzcGFjZSBpcyBwbGFjZWQgYmVsb3cgdGhlIGVsZW1lbnQuIEZvciByZXZlcnNlIGRpcmVjdGlvbiBib3hlcywgdGhlIGJvdHRvbSBlZGdlIG9mIGVhY2ggY2hpbGQgaXMgcGxhY2VkIGFsb25nIHRoZSBib3R0b20gb2YgdGhlIGJveC4gRXh0cmEgc3BhY2UgaXMgcGxhY2VkIGFib3ZlIHRoZSBlbGVtZW50LiJ9LHtuYW1lOiJzdHJldGNoIixkZXNjcmlwdGlvbjoiVGhlIGhlaWdodCBvZiBlYWNoIGNoaWxkIGlzIGFkanVzdGVkIHRvIHRoYXQgb2YgdGhlIGNvbnRhaW5pbmcgYmxvY2suIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHRoZSBhbGlnbm1lbnQgb2YgbmVzdGVkIGVsZW1lbnRzIHdpdGhpbiBhbiBvdXRlciBmbGV4aWJsZSBib3ggZWxlbWVudC4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii13ZWJraXQtYm94LWRpcmVjdGlvbiIsYnJvd3NlcnM6WyJDIiwiUzMiXSx2YWx1ZXM6W3tuYW1lOiJub3JtYWwiLGRlc2NyaXB0aW9uOiJBIGJveCB3aXRoIGEgY29tcHV0ZWQgdmFsdWUgb2YgaG9yaXpvbnRhbCBmb3IgYm94LW9yaWVudCBkaXNwbGF5cyBpdHMgY2hpbGRyZW4gZnJvbSBsZWZ0IHRvIHJpZ2h0LiBBIGJveCB3aXRoIGEgY29tcHV0ZWQgdmFsdWUgb2YgdmVydGljYWwgZGlzcGxheXMgaXRzIGNoaWxkcmVuIGZyb20gdG9wIHRvIGJvdHRvbS4ifSx7bmFtZToicmV2ZXJzZSIsZGVzY3JpcHRpb246IkEgYm94IHdpdGggYSBjb21wdXRlZCB2YWx1ZSBvZiBob3Jpem9udGFsIGZvciBib3gtb3JpZW50IGRpc3BsYXlzIGl0cyBjaGlsZHJlbiBmcm9tIHJpZ2h0IHRvIGxlZnQuIEEgYm94IHdpdGggYSBjb21wdXRlZCB2YWx1ZSBvZiB2ZXJ0aWNhbCBkaXNwbGF5cyBpdHMgY2hpbGRyZW4gZnJvbSBib3R0b20gdG8gdG9wLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkluIHdlYmtpdCBhcHBsaWNhdGlvbnMsIC13ZWJraXQtYm94LWRpcmVjdGlvbiBzcGVjaWZpZXMgd2hldGhlciBhIGJveCBsYXlzIG91dCBpdHMgY29udGVudHMgbm9ybWFsbHkgKGZyb20gdGhlIHRvcCBvciBsZWZ0IGVkZ2UpLCBvciBpbiByZXZlcnNlIChmcm9tIHRoZSBib3R0b20gb3IgcmlnaHQgZWRnZSkuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiItd2Via2l0LWJveC1mbGV4Iixicm93c2VyczpbIkMiLCJTMyJdLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGFuIGVsZW1lbnQncyBmbGV4aWJpbGl0eS4iLHJlc3RyaWN0aW9uczpbIm51bWJlciJdfSx7bmFtZToiLXdlYmtpdC1ib3gtZmxleC1ncm91cCIsYnJvd3NlcnM6WyJDIiwiUzMiXSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkZsZXhpYmxlIGVsZW1lbnRzIGNhbiBiZSBhc3NpZ25lZCB0byBmbGV4IGdyb3VwcyB1c2luZyB0aGUgJ2JveC1mbGV4LWdyb3VwJyBwcm9wZXJ0eS4iLHJlc3RyaWN0aW9uczpbImludGVnZXIiXX0se25hbWU6Ii13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXAiLGJyb3dzZXJzOlsiQyIsIlMzIl0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgdGhlIG9yZGluYWwgZ3JvdXAgdGhlIGVsZW1lbnQgYmVsb25ncyB0by4gRWxlbWVudHMgd2l0aCBhIGxvd2VyIG9yZGluYWwgZ3JvdXAgYXJlIGRpc3BsYXllZCBiZWZvcmUgdGhvc2Ugd2l0aCBhIGhpZ2hlciBvcmRpbmFsIGdyb3VwLiIscmVzdHJpY3Rpb25zOlsiaW50ZWdlciJdfSx7bmFtZToiLXdlYmtpdC1ib3gtb3JpZW50Iixicm93c2VyczpbIkMiLCJTMyJdLHZhbHVlczpbe25hbWU6ImJsb2NrLWF4aXMiLGRlc2NyaXB0aW9uOiJFbGVtZW50cyBhcmUgb3JpZW50ZWQgYWxvbmcgdGhlIGJveCdzIGF4aXMuIn0se25hbWU6Imhvcml6b250YWwiLGRlc2NyaXB0aW9uOiJUaGUgYm94IGRpc3BsYXlzIGl0cyBjaGlsZHJlbiBmcm9tIGxlZnQgdG8gcmlnaHQgaW4gYSBob3Jpem9udGFsIGxpbmUuIn0se25hbWU6ImlubGluZS1heGlzIixkZXNjcmlwdGlvbjoiRWxlbWVudHMgYXJlIG9yaWVudGVkIHZlcnRpY2FsbHkuIn0se25hbWU6InZlcnRpY2FsIixkZXNjcmlwdGlvbjoiVGhlIGJveCBkaXNwbGF5cyBpdHMgY2hpbGRyZW4gZnJvbSBzdGFja2VkIGZyb20gdG9wIHRvIGJvdHRvbSB2ZXJ0aWNhbGx5LiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkluIHdlYmtpdCBhcHBsaWNhdGlvbnMsIC13ZWJraXQtYm94LW9yaWVudCBzcGVjaWZpZXMgd2hldGhlciBhIGJveCBsYXlzIG91dCBpdHMgY29udGVudHMgaG9yaXpvbnRhbGx5IG9yIHZlcnRpY2FsbHkuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiItd2Via2l0LWJveC1wYWNrIixicm93c2VyczpbIkMiLCJTMyJdLHZhbHVlczpbe25hbWU6ImNlbnRlciIsZGVzY3JpcHRpb246IlRoZSBleHRyYSBzcGFjZSBpcyBkaXZpZGVkIGV2ZW5seSwgd2l0aCBoYWxmIHBsYWNlZCBiZWZvcmUgdGhlIGZpcnN0IGNoaWxkIGFuZCB0aGUgb3RoZXIgaGFsZiBwbGFjZWQgYWZ0ZXIgdGhlIGxhc3QgY2hpbGQuIn0se25hbWU6ImVuZCIsZGVzY3JpcHRpb246IkZvciBub3JtYWwgZGlyZWN0aW9uIGJveGVzLCB0aGUgcmlnaHQgZWRnZSBvZiB0aGUgbGFzdCBjaGlsZCBpcyBwbGFjZWQgYXQgdGhlIHJpZ2h0IHNpZGUsIHdpdGggYWxsIGV4dHJhIHNwYWNlIHBsYWNlZCBiZWZvcmUgdGhlIGZpcnN0IGNoaWxkLiBGb3IgcmV2ZXJzZSBkaXJlY3Rpb24gYm94ZXMsIHRoZSBsZWZ0IGVkZ2Ugb2YgdGhlIGZpcnN0IGNoaWxkIGlzIHBsYWNlZCBhdCB0aGUgbGVmdCBzaWRlLCB3aXRoIGFsbCBleHRyYSBzcGFjZSBwbGFjZWQgYWZ0ZXIgdGhlIGxhc3QgY2hpbGQuIn0se25hbWU6Imp1c3RpZnkiLGRlc2NyaXB0aW9uOiJUaGUgc3BhY2UgaXMgZGl2aWRlZCBldmVubHkgaW4tYmV0d2VlbiBlYWNoIGNoaWxkLCB3aXRoIG5vbmUgb2YgdGhlIGV4dHJhIHNwYWNlIHBsYWNlZCBiZWZvcmUgdGhlIGZpcnN0IGNoaWxkIG9yIGFmdGVyIHRoZSBsYXN0IGNoaWxkLiBJZiB0aGVyZSBpcyBvbmx5IG9uZSBjaGlsZCwgdHJlYXQgdGhlIHBhY2sgdmFsdWUgYXMgaWYgaXQgd2VyZSBzdGFydC4ifSx7bmFtZToic3RhcnQiLGRlc2NyaXB0aW9uOiJGb3Igbm9ybWFsIGRpcmVjdGlvbiBib3hlcywgdGhlIGxlZnQgZWRnZSBvZiB0aGUgZmlyc3QgY2hpbGQgaXMgcGxhY2VkIGF0IHRoZSBsZWZ0IHNpZGUsIHdpdGggYWxsIGV4dHJhIHNwYWNlIHBsYWNlZCBhZnRlciB0aGUgbGFzdCBjaGlsZC4gRm9yIHJldmVyc2UgZGlyZWN0aW9uIGJveGVzLCB0aGUgcmlnaHQgZWRnZSBvZiB0aGUgbGFzdCBjaGlsZCBpcyBwbGFjZWQgYXQgdGhlIHJpZ2h0IHNpZGUsIHdpdGggYWxsIGV4dHJhIHNwYWNlIHBsYWNlZCBiZWZvcmUgdGhlIGZpcnN0IGNoaWxkLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhbGlnbm1lbnQgb2YgY2hpbGQgZWxlbWVudHMgd2l0aGluIHRoZSBjdXJyZW50IGVsZW1lbnQgaW4gdGhlIGRpcmVjdGlvbiBvZiBvcmllbnRhdGlvbi4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii13ZWJraXQtYm94LXJlZmxlY3QiLGJyb3dzZXJzOlsiRTc5IiwiUzQiLCJDNCIsIk8xNSJdLHZhbHVlczpbe25hbWU6ImFib3ZlIixkZXNjcmlwdGlvbjoiVGhlIHJlZmxlY3Rpb24gYXBwZWFycyBhYm92ZSB0aGUgYm9yZGVyIGJveC4ifSx7bmFtZToiYmVsb3ciLGRlc2NyaXB0aW9uOiJUaGUgcmVmbGVjdGlvbiBhcHBlYXJzIGJlbG93IHRoZSBib3JkZXIgYm94LiJ9LHtuYW1lOiJsZWZ0IixkZXNjcmlwdGlvbjoiVGhlIHJlZmxlY3Rpb24gYXBwZWFycyB0byB0aGUgbGVmdCBvZiB0aGUgYm9yZGVyIGJveC4ifSx7bmFtZToicmlnaHQiLGRlc2NyaXB0aW9uOiJUaGUgcmVmbGVjdGlvbiBhcHBlYXJzIHRvIHRoZSByaWdodCBvZiB0aGUgYm9yZGVyIGJveC4ifV0sc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiJbIGFib3ZlIHwgYmVsb3cgfCByaWdodCB8IGxlZnQgXT8gPGxlbmd0aD4/IDxpbWFnZT4/IixyZWxldmFuY2U6MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvLXdlYmtpdC1ib3gtcmVmbGVjdCJ9XSxkZXNjcmlwdGlvbjoiRGVmaW5lcyBhIHJlZmxlY3Rpb24gb2YgYSBib3JkZXIgYm94LiJ9LHtuYW1lOiItd2Via2l0LWJveC1zaXppbmciLGJyb3dzZXJzOlsiQyIsIlMzIl0sdmFsdWVzOlt7bmFtZToiYm9yZGVyLWJveCIsZGVzY3JpcHRpb246IlRoZSBzcGVjaWZpZWQgd2lkdGggYW5kIGhlaWdodCAoYW5kIHJlc3BlY3RpdmUgbWluL21heCBwcm9wZXJ0aWVzKSBvbiB0aGlzIGVsZW1lbnQgZGV0ZXJtaW5lIHRoZSBib3JkZXIgYm94IG9mIHRoZSBlbGVtZW50LiJ9LHtuYW1lOiJjb250ZW50LWJveCIsZGVzY3JpcHRpb246IkJlaGF2aW9yIG9mIHdpZHRoIGFuZCBoZWlnaHQgYXMgc3BlY2lmaWVkIGJ5IENTUzIuMS4gVGhlIHNwZWNpZmllZCB3aWR0aCBhbmQgaGVpZ2h0IChhbmQgcmVzcGVjdGl2ZSBtaW4vbWF4IHByb3BlcnRpZXMpIGFwcGx5IHRvIHRoZSB3aWR0aCBhbmQgaGVpZ2h0IHJlc3BlY3RpdmVseSBvZiB0aGUgY29udGVudCBib3ggb2YgdGhlIGVsZW1lbnQuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiQm94IE1vZGVsIGFkZGl0aW9uIGluIENTUzMuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiItd2Via2l0LWJyZWFrLWFmdGVyIixicm93c2VyczpbIlM3Il0sdmFsdWVzOlt7bmFtZToiYWx3YXlzIixkZXNjcmlwdGlvbjoiQWx3YXlzIGZvcmNlIGEgcGFnZSBicmVhayBiZWZvcmUvYWZ0ZXIgdGhlIGdlbmVyYXRlZCBib3guIn0se25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJOZWl0aGVyIGZvcmNlIG5vciBmb3JiaWQgYSBwYWdlL2NvbHVtbiBicmVhayBiZWZvcmUvYWZ0ZXIgdGhlIGdlbmVyYXRlZCBib3guIn0se25hbWU6ImF2b2lkIixkZXNjcmlwdGlvbjoiQXZvaWQgYSBwYWdlL2NvbHVtbiBicmVhayBiZWZvcmUvYWZ0ZXIgdGhlIGdlbmVyYXRlZCBib3guIn0se25hbWU6ImF2b2lkLWNvbHVtbiIsZGVzY3JpcHRpb246IkF2b2lkIGEgY29sdW1uIGJyZWFrIGJlZm9yZS9hZnRlciB0aGUgZ2VuZXJhdGVkIGJveC4ifSx7bmFtZToiYXZvaWQtcGFnZSIsZGVzY3JpcHRpb246IkF2b2lkIGEgcGFnZSBicmVhayBiZWZvcmUvYWZ0ZXIgdGhlIGdlbmVyYXRlZCBib3guIn0se25hbWU6ImF2b2lkLXJlZ2lvbiJ9LHtuYW1lOiJjb2x1bW4iLGRlc2NyaXB0aW9uOiJBbHdheXMgZm9yY2UgYSBjb2x1bW4gYnJlYWsgYmVmb3JlL2FmdGVyIHRoZSBnZW5lcmF0ZWQgYm94LiJ9LHtuYW1lOiJsZWZ0IixkZXNjcmlwdGlvbjoiRm9yY2Ugb25lIG9yIHR3byBwYWdlIGJyZWFrcyBiZWZvcmUvYWZ0ZXIgdGhlIGdlbmVyYXRlZCBib3ggc28gdGhhdCB0aGUgbmV4dCBwYWdlIGlzIGZvcm1hdHRlZCBhcyBhIGxlZnQgcGFnZS4ifSx7bmFtZToicGFnZSIsZGVzY3JpcHRpb246IkFsd2F5cyBmb3JjZSBhIHBhZ2UgYnJlYWsgYmVmb3JlL2FmdGVyIHRoZSBnZW5lcmF0ZWQgYm94LiJ9LHtuYW1lOiJyZWdpb24ifSx7bmFtZToicmlnaHQiLGRlc2NyaXB0aW9uOiJGb3JjZSBvbmUgb3IgdHdvIHBhZ2UgYnJlYWtzIGJlZm9yZS9hZnRlciB0aGUgZ2VuZXJhdGVkIGJveCBzbyB0aGF0IHRoZSBuZXh0IHBhZ2UgaXMgZm9ybWF0dGVkIGFzIGEgcmlnaHQgcGFnZS4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJEZXNjcmliZXMgdGhlIHBhZ2UvY29sdW1uIGJyZWFrIGJlaGF2aW9yIGJlZm9yZSB0aGUgZ2VuZXJhdGVkIGJveC4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii13ZWJraXQtYnJlYWstYmVmb3JlIixicm93c2VyczpbIlM3Il0sdmFsdWVzOlt7bmFtZToiYWx3YXlzIixkZXNjcmlwdGlvbjoiQWx3YXlzIGZvcmNlIGEgcGFnZSBicmVhayBiZWZvcmUvYWZ0ZXIgdGhlIGdlbmVyYXRlZCBib3guIn0se25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJOZWl0aGVyIGZvcmNlIG5vciBmb3JiaWQgYSBwYWdlL2NvbHVtbiBicmVhayBiZWZvcmUvYWZ0ZXIgdGhlIGdlbmVyYXRlZCBib3guIn0se25hbWU6ImF2b2lkIixkZXNjcmlwdGlvbjoiQXZvaWQgYSBwYWdlL2NvbHVtbiBicmVhayBiZWZvcmUvYWZ0ZXIgdGhlIGdlbmVyYXRlZCBib3guIn0se25hbWU6ImF2b2lkLWNvbHVtbiIsZGVzY3JpcHRpb246IkF2b2lkIGEgY29sdW1uIGJyZWFrIGJlZm9yZS9hZnRlciB0aGUgZ2VuZXJhdGVkIGJveC4ifSx7bmFtZToiYXZvaWQtcGFnZSIsZGVzY3JpcHRpb246IkF2b2lkIGEgcGFnZSBicmVhayBiZWZvcmUvYWZ0ZXIgdGhlIGdlbmVyYXRlZCBib3guIn0se25hbWU6ImF2b2lkLXJlZ2lvbiJ9LHtuYW1lOiJjb2x1bW4iLGRlc2NyaXB0aW9uOiJBbHdheXMgZm9yY2UgYSBjb2x1bW4gYnJlYWsgYmVmb3JlL2FmdGVyIHRoZSBnZW5lcmF0ZWQgYm94LiJ9LHtuYW1lOiJsZWZ0IixkZXNjcmlwdGlvbjoiRm9yY2Ugb25lIG9yIHR3byBwYWdlIGJyZWFrcyBiZWZvcmUvYWZ0ZXIgdGhlIGdlbmVyYXRlZCBib3ggc28gdGhhdCB0aGUgbmV4dCBwYWdlIGlzIGZvcm1hdHRlZCBhcyBhIGxlZnQgcGFnZS4ifSx7bmFtZToicGFnZSIsZGVzY3JpcHRpb246IkFsd2F5cyBmb3JjZSBhIHBhZ2UgYnJlYWsgYmVmb3JlL2FmdGVyIHRoZSBnZW5lcmF0ZWQgYm94LiJ9LHtuYW1lOiJyZWdpb24ifSx7bmFtZToicmlnaHQiLGRlc2NyaXB0aW9uOiJGb3JjZSBvbmUgb3IgdHdvIHBhZ2UgYnJlYWtzIGJlZm9yZS9hZnRlciB0aGUgZ2VuZXJhdGVkIGJveCBzbyB0aGF0IHRoZSBuZXh0IHBhZ2UgaXMgZm9ybWF0dGVkIGFzIGEgcmlnaHQgcGFnZS4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJEZXNjcmliZXMgdGhlIHBhZ2UvY29sdW1uIGJyZWFrIGJlaGF2aW9yIGJlZm9yZSB0aGUgZ2VuZXJhdGVkIGJveC4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii13ZWJraXQtYnJlYWstaW5zaWRlIixicm93c2VyczpbIlM3Il0sdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246Ik5laXRoZXIgZm9yY2Ugbm9yIGZvcmJpZCBhIHBhZ2UvY29sdW1uIGJyZWFrIGluc2lkZSB0aGUgZ2VuZXJhdGVkIGJveC4ifSx7bmFtZToiYXZvaWQiLGRlc2NyaXB0aW9uOiJBdm9pZCBhIHBhZ2UvY29sdW1uIGJyZWFrIGluc2lkZSB0aGUgZ2VuZXJhdGVkIGJveC4ifSx7bmFtZToiYXZvaWQtY29sdW1uIixkZXNjcmlwdGlvbjoiQXZvaWQgYSBjb2x1bW4gYnJlYWsgaW5zaWRlIHRoZSBnZW5lcmF0ZWQgYm94LiJ9LHtuYW1lOiJhdm9pZC1wYWdlIixkZXNjcmlwdGlvbjoiQXZvaWQgYSBwYWdlIGJyZWFrIGluc2lkZSB0aGUgZ2VuZXJhdGVkIGJveC4ifSx7bmFtZToiYXZvaWQtcmVnaW9uIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiRGVzY3JpYmVzIHRoZSBwYWdlL2NvbHVtbiBicmVhayBiZWhhdmlvciBpbnNpZGUgdGhlIGdlbmVyYXRlZCBib3guIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiItd2Via2l0LWNvbHVtbi1icmVhay1hZnRlciIsYnJvd3NlcnM6WyJDIiwiUzMiXSx2YWx1ZXM6W3tuYW1lOiJhbHdheXMiLGRlc2NyaXB0aW9uOiJBbHdheXMgZm9yY2UgYSBwYWdlIGJyZWFrIGJlZm9yZS9hZnRlciB0aGUgZ2VuZXJhdGVkIGJveC4ifSx7bmFtZToiYXV0byIsZGVzY3JpcHRpb246Ik5laXRoZXIgZm9yY2Ugbm9yIGZvcmJpZCBhIHBhZ2UvY29sdW1uIGJyZWFrIGJlZm9yZS9hZnRlciB0aGUgZ2VuZXJhdGVkIGJveC4ifSx7bmFtZToiYXZvaWQiLGRlc2NyaXB0aW9uOiJBdm9pZCBhIHBhZ2UvY29sdW1uIGJyZWFrIGJlZm9yZS9hZnRlciB0aGUgZ2VuZXJhdGVkIGJveC4ifSx7bmFtZToiYXZvaWQtY29sdW1uIixkZXNjcmlwdGlvbjoiQXZvaWQgYSBjb2x1bW4gYnJlYWsgYmVmb3JlL2FmdGVyIHRoZSBnZW5lcmF0ZWQgYm94LiJ9LHtuYW1lOiJhdm9pZC1wYWdlIixkZXNjcmlwdGlvbjoiQXZvaWQgYSBwYWdlIGJyZWFrIGJlZm9yZS9hZnRlciB0aGUgZ2VuZXJhdGVkIGJveC4ifSx7bmFtZToiYXZvaWQtcmVnaW9uIn0se25hbWU6ImNvbHVtbiIsZGVzY3JpcHRpb246IkFsd2F5cyBmb3JjZSBhIGNvbHVtbiBicmVhayBiZWZvcmUvYWZ0ZXIgdGhlIGdlbmVyYXRlZCBib3guIn0se25hbWU6ImxlZnQiLGRlc2NyaXB0aW9uOiJGb3JjZSBvbmUgb3IgdHdvIHBhZ2UgYnJlYWtzIGJlZm9yZS9hZnRlciB0aGUgZ2VuZXJhdGVkIGJveCBzbyB0aGF0IHRoZSBuZXh0IHBhZ2UgaXMgZm9ybWF0dGVkIGFzIGEgbGVmdCBwYWdlLiJ9LHtuYW1lOiJwYWdlIixkZXNjcmlwdGlvbjoiQWx3YXlzIGZvcmNlIGEgcGFnZSBicmVhayBiZWZvcmUvYWZ0ZXIgdGhlIGdlbmVyYXRlZCBib3guIn0se25hbWU6InJlZ2lvbiJ9LHtuYW1lOiJyaWdodCIsZGVzY3JpcHRpb246IkZvcmNlIG9uZSBvciB0d28gcGFnZSBicmVha3MgYmVmb3JlL2FmdGVyIHRoZSBnZW5lcmF0ZWQgYm94IHNvIHRoYXQgdGhlIG5leHQgcGFnZSBpcyBmb3JtYXR0ZWQgYXMgYSByaWdodCBwYWdlLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkRlc2NyaWJlcyB0aGUgcGFnZS9jb2x1bW4gYnJlYWsgYmVoYXZpb3IgYmVmb3JlIHRoZSBnZW5lcmF0ZWQgYm94LiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLXdlYmtpdC1jb2x1bW4tYnJlYWstYmVmb3JlIixicm93c2VyczpbIkMiLCJTMyJdLHZhbHVlczpbe25hbWU6ImFsd2F5cyIsZGVzY3JpcHRpb246IkFsd2F5cyBmb3JjZSBhIHBhZ2UgYnJlYWsgYmVmb3JlL2FmdGVyIHRoZSBnZW5lcmF0ZWQgYm94LiJ9LHtuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiTmVpdGhlciBmb3JjZSBub3IgZm9yYmlkIGEgcGFnZS9jb2x1bW4gYnJlYWsgYmVmb3JlL2FmdGVyIHRoZSBnZW5lcmF0ZWQgYm94LiJ9LHtuYW1lOiJhdm9pZCIsZGVzY3JpcHRpb246IkF2b2lkIGEgcGFnZS9jb2x1bW4gYnJlYWsgYmVmb3JlL2FmdGVyIHRoZSBnZW5lcmF0ZWQgYm94LiJ9LHtuYW1lOiJhdm9pZC1jb2x1bW4iLGRlc2NyaXB0aW9uOiJBdm9pZCBhIGNvbHVtbiBicmVhayBiZWZvcmUvYWZ0ZXIgdGhlIGdlbmVyYXRlZCBib3guIn0se25hbWU6ImF2b2lkLXBhZ2UiLGRlc2NyaXB0aW9uOiJBdm9pZCBhIHBhZ2UgYnJlYWsgYmVmb3JlL2FmdGVyIHRoZSBnZW5lcmF0ZWQgYm94LiJ9LHtuYW1lOiJhdm9pZC1yZWdpb24ifSx7bmFtZToiY29sdW1uIixkZXNjcmlwdGlvbjoiQWx3YXlzIGZvcmNlIGEgY29sdW1uIGJyZWFrIGJlZm9yZS9hZnRlciB0aGUgZ2VuZXJhdGVkIGJveC4ifSx7bmFtZToibGVmdCIsZGVzY3JpcHRpb246IkZvcmNlIG9uZSBvciB0d28gcGFnZSBicmVha3MgYmVmb3JlL2FmdGVyIHRoZSBnZW5lcmF0ZWQgYm94IHNvIHRoYXQgdGhlIG5leHQgcGFnZSBpcyBmb3JtYXR0ZWQgYXMgYSBsZWZ0IHBhZ2UuIn0se25hbWU6InBhZ2UiLGRlc2NyaXB0aW9uOiJBbHdheXMgZm9yY2UgYSBwYWdlIGJyZWFrIGJlZm9yZS9hZnRlciB0aGUgZ2VuZXJhdGVkIGJveC4ifSx7bmFtZToicmVnaW9uIn0se25hbWU6InJpZ2h0IixkZXNjcmlwdGlvbjoiRm9yY2Ugb25lIG9yIHR3byBwYWdlIGJyZWFrcyBiZWZvcmUvYWZ0ZXIgdGhlIGdlbmVyYXRlZCBib3ggc28gdGhhdCB0aGUgbmV4dCBwYWdlIGlzIGZvcm1hdHRlZCBhcyBhIHJpZ2h0IHBhZ2UuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiRGVzY3JpYmVzIHRoZSBwYWdlL2NvbHVtbiBicmVhayBiZWhhdmlvciBiZWZvcmUgdGhlIGdlbmVyYXRlZCBib3guIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiItd2Via2l0LWNvbHVtbi1icmVhay1pbnNpZGUiLGJyb3dzZXJzOlsiQyIsIlMzIl0sdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246Ik5laXRoZXIgZm9yY2Ugbm9yIGZvcmJpZCBhIHBhZ2UvY29sdW1uIGJyZWFrIGluc2lkZSB0aGUgZ2VuZXJhdGVkIGJveC4ifSx7bmFtZToiYXZvaWQiLGRlc2NyaXB0aW9uOiJBdm9pZCBhIHBhZ2UvY29sdW1uIGJyZWFrIGluc2lkZSB0aGUgZ2VuZXJhdGVkIGJveC4ifSx7bmFtZToiYXZvaWQtY29sdW1uIixkZXNjcmlwdGlvbjoiQXZvaWQgYSBjb2x1bW4gYnJlYWsgaW5zaWRlIHRoZSBnZW5lcmF0ZWQgYm94LiJ9LHtuYW1lOiJhdm9pZC1wYWdlIixkZXNjcmlwdGlvbjoiQXZvaWQgYSBwYWdlIGJyZWFrIGluc2lkZSB0aGUgZ2VuZXJhdGVkIGJveC4ifSx7bmFtZToiYXZvaWQtcmVnaW9uIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiRGVzY3JpYmVzIHRoZSBwYWdlL2NvbHVtbiBicmVhayBiZWhhdmlvciBpbnNpZGUgdGhlIGdlbmVyYXRlZCBib3guIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiItd2Via2l0LWNvbHVtbi1jb3VudCIsYnJvd3NlcnM6WyJDIiwiUzMiXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiRGV0ZXJtaW5lcyB0aGUgbnVtYmVyIG9mIGNvbHVtbnMgYnkgdGhlICdjb2x1bW4td2lkdGgnIHByb3BlcnR5IGFuZCB0aGUgZWxlbWVudCB3aWR0aC4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJEZXNjcmliZXMgdGhlIG9wdGltYWwgbnVtYmVyIG9mIGNvbHVtbnMgaW50byB3aGljaCB0aGUgY29udGVudCBvZiB0aGUgZWxlbWVudCB3aWxsIGJlIGZsb3dlZC4iLHJlc3RyaWN0aW9uczpbImludGVnZXIiXX0se25hbWU6Ii13ZWJraXQtY29sdW1uLWdhcCIsYnJvd3NlcnM6WyJDIiwiUzMiXSx2YWx1ZXM6W3tuYW1lOiJub3JtYWwiLGRlc2NyaXB0aW9uOiJVc2VyIGFnZW50IHNwZWNpZmljIGFuZCB0eXBpY2FsbHkgZXF1aXZhbGVudCB0byAxZW0uIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiU2V0cyB0aGUgZ2FwIGJldHdlZW4gY29sdW1ucy4gSWYgdGhlcmUgaXMgYSBjb2x1bW4gcnVsZSBiZXR3ZWVuIGNvbHVtbnMsIGl0IHdpbGwgYXBwZWFyIGluIHRoZSBtaWRkbGUgb2YgdGhlIGdhcC4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCJdfSx7bmFtZToiLXdlYmtpdC1jb2x1bW4tcnVsZSIsYnJvd3NlcnM6WyJDIiwiUzMiXSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlRoaXMgcHJvcGVydHkgaXMgYSBzaG9ydGhhbmQgZm9yIHNldHRpbmcgJ2NvbHVtbi1ydWxlLXdpZHRoJywgJ2NvbHVtbi1ydWxlLXN0eWxlJywgYW5kICdjb2x1bW4tcnVsZS1jb2xvcicgYXQgdGhlIHNhbWUgcGxhY2UgaW4gdGhlIHN0eWxlIHNoZWV0LiBPbWl0dGVkIHZhbHVlcyBhcmUgc2V0IHRvIHRoZWlyIGluaXRpYWwgdmFsdWVzLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwibGluZS13aWR0aCIsImxpbmUtc3R5bGUiLCJjb2xvciJdfSx7bmFtZToiLXdlYmtpdC1jb2x1bW4tcnVsZS1jb2xvciIsYnJvd3NlcnM6WyJDIiwiUzMiXSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlNldHMgdGhlIGNvbG9yIG9mIHRoZSBjb2x1bW4gcnVsZSIscmVzdHJpY3Rpb25zOlsiY29sb3IiXX0se25hbWU6Ii13ZWJraXQtY29sdW1uLXJ1bGUtc3R5bGUiLGJyb3dzZXJzOlsiQyIsIlMzIl0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJTZXRzIHRoZSBzdHlsZSBvZiB0aGUgcnVsZSBiZXR3ZWVuIGNvbHVtbnMgb2YgYW4gZWxlbWVudC4iLHJlc3RyaWN0aW9uczpbImxpbmUtc3R5bGUiXX0se25hbWU6Ii13ZWJraXQtY29sdW1uLXJ1bGUtd2lkdGgiLGJyb3dzZXJzOlsiQyIsIlMzIl0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJTZXRzIHRoZSB3aWR0aCBvZiB0aGUgcnVsZSBiZXR3ZWVuIGNvbHVtbnMuIE5lZ2F0aXZlIHZhbHVlcyBhcmUgbm90IGFsbG93ZWQuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJsaW5lLXdpZHRoIl19LHtuYW1lOiItd2Via2l0LWNvbHVtbnMiLGJyb3dzZXJzOlsiQyIsIlMzIl0sdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IlRoZSB3aWR0aCBkZXBlbmRzIG9uIHRoZSB2YWx1ZXMgb2Ygb3RoZXIgcHJvcGVydGllcy4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJBIHNob3J0aGFuZCBwcm9wZXJ0eSB3aGljaCBzZXRzIGJvdGggJ2NvbHVtbi13aWR0aCcgYW5kICdjb2x1bW4tY291bnQnLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwiaW50ZWdlciJdfSx7bmFtZToiLXdlYmtpdC1jb2x1bW4tc3BhbiIsYnJvd3NlcnM6WyJDIiwiUzMiXSx2YWx1ZXM6W3tuYW1lOiJhbGwiLGRlc2NyaXB0aW9uOiJUaGUgZWxlbWVudCBzcGFucyBhY3Jvc3MgYWxsIGNvbHVtbnMuIENvbnRlbnQgaW4gdGhlIG5vcm1hbCBmbG93IHRoYXQgYXBwZWFycyBiZWZvcmUgdGhlIGVsZW1lbnQgaXMgYXV0b21hdGljYWxseSBiYWxhbmNlZCBhY3Jvc3MgYWxsIGNvbHVtbnMgYmVmb3JlIHRoZSBlbGVtZW50IGFwcGVhci4ifSx7bmFtZToibm9uZSIsZGVzY3JpcHRpb246IlRoZSBlbGVtZW50IGRvZXMgbm90IHNwYW4gbXVsdGlwbGUgY29sdW1ucy4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJEZXNjcmliZXMgdGhlIHBhZ2UvY29sdW1uIGJyZWFrIGJlaGF2aW9yIGFmdGVyIHRoZSBnZW5lcmF0ZWQgYm94LiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLXdlYmtpdC1jb2x1bW4td2lkdGgiLGJyb3dzZXJzOlsiQyIsIlMzIl0sdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IlRoZSB3aWR0aCBkZXBlbmRzIG9uIHRoZSB2YWx1ZXMgb2Ygb3RoZXIgcHJvcGVydGllcy4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJUaGlzIHByb3BlcnR5IGRlc2NyaWJlcyB0aGUgd2lkdGggb2YgY29sdW1ucyBpbiBtdWx0aWNvbCBlbGVtZW50cy4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCJdfSx7bmFtZToiLXdlYmtpdC1maWx0ZXIiLGJyb3dzZXJzOlsiQzE4IiwiTzE1IiwiUzYiXSx2YWx1ZXM6W3tuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiTm8gZmlsdGVyIGVmZmVjdHMgYXJlIGFwcGxpZWQuIn0se25hbWU6ImJsdXIoKSIsZGVzY3JpcHRpb246IkFwcGxpZXMgYSBHYXVzc2lhbiBibHVyIHRvIHRoZSBpbnB1dCBpbWFnZS4ifSx7bmFtZToiYnJpZ2h0bmVzcygpIixkZXNjcmlwdGlvbjoiQXBwbGllcyBhIGxpbmVhciBtdWx0aXBsaWVyIHRvIGlucHV0IGltYWdlLCBtYWtpbmcgaXQgYXBwZWFyIG1vcmUgb3IgbGVzcyBicmlnaHQuIn0se25hbWU6ImNvbnRyYXN0KCkiLGRlc2NyaXB0aW9uOiJBZGp1c3RzIHRoZSBjb250cmFzdCBvZiB0aGUgaW5wdXQuIn0se25hbWU6ImRyb3Atc2hhZG93KCkiLGRlc2NyaXB0aW9uOiJBcHBsaWVzIGEgZHJvcCBzaGFkb3cgZWZmZWN0IHRvIHRoZSBpbnB1dCBpbWFnZS4ifSx7bmFtZToiZ3JheXNjYWxlKCkiLGRlc2NyaXB0aW9uOiJDb252ZXJ0cyB0aGUgaW5wdXQgaW1hZ2UgdG8gZ3JheXNjYWxlLiJ9LHtuYW1lOiJodWUtcm90YXRlKCkiLGRlc2NyaXB0aW9uOiJBcHBsaWVzIGEgaHVlIHJvdGF0aW9uIG9uIHRoZSBpbnB1dCBpbWFnZS4gIn0se25hbWU6ImludmVydCgpIixkZXNjcmlwdGlvbjoiSW52ZXJ0cyB0aGUgc2FtcGxlcyBpbiB0aGUgaW5wdXQgaW1hZ2UuIn0se25hbWU6Im9wYWNpdHkoKSIsZGVzY3JpcHRpb246IkFwcGxpZXMgdHJhbnNwYXJlbmN5IHRvIHRoZSBzYW1wbGVzIGluIHRoZSBpbnB1dCBpbWFnZS4ifSx7bmFtZToic2F0dXJhdGUoKSIsZGVzY3JpcHRpb246IlNhdHVyYXRlcyB0aGUgaW5wdXQgaW1hZ2UuIn0se25hbWU6InNlcGlhKCkiLGRlc2NyaXB0aW9uOiJDb252ZXJ0cyB0aGUgaW5wdXQgaW1hZ2UgdG8gc2VwaWEuIn0se25hbWU6InVybCgpIixkZXNjcmlwdGlvbjoiQSBmaWx0ZXIgcmVmZXJlbmNlIHRvIGEgPGZpbHRlcj4gZWxlbWVudC4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJQcm9jZXNzZXMgYW4gZWxlbWVudOKAmXMgcmVuZGVyaW5nIGJlZm9yZSBpdCBpcyBkaXNwbGF5ZWQgaW4gdGhlIGRvY3VtZW50LCBieSBhcHBseWluZyBvbmUgb3IgbW9yZSBmaWx0ZXIgZWZmZWN0cy4iLHJlc3RyaWN0aW9uczpbImVudW0iLCJ1cmwiXX0se25hbWU6Ii13ZWJraXQtZmxvdy1mcm9tIixicm93c2VyczpbIlM2LjEiXSx2YWx1ZXM6W3tuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiVGhlIGJsb2NrIGNvbnRhaW5lciBpcyBub3QgYSBDU1MgUmVnaW9uLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246Ik1ha2VzIGEgYmxvY2sgY29udGFpbmVyIGEgcmVnaW9uIGFuZCBhc3NvY2lhdGVzIGl0IHdpdGggYSBuYW1lZCBmbG93LiIscmVzdHJpY3Rpb25zOlsiaWRlbnRpZmllciJdfSx7bmFtZToiLXdlYmtpdC1mbG93LWludG8iLGJyb3dzZXJzOlsiUzYuMSJdLHZhbHVlczpbe25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJUaGUgZWxlbWVudCBpcyBub3QgbW92ZWQgdG8gYSBuYW1lZCBmbG93IGFuZCBub3JtYWwgQ1NTIHByb2Nlc3NpbmcgdGFrZXMgcGxhY2UuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiUGxhY2VzIGFuIGVsZW1lbnQgb3IgaXRzIGNvbnRlbnRzIGludG8gYSBuYW1lZCBmbG93LiIscmVzdHJpY3Rpb25zOlsiaWRlbnRpZmllciJdfSx7bmFtZToiLXdlYmtpdC1mb250LWZlYXR1cmUtc2V0dGluZ3MiLGJyb3dzZXJzOlsiQzE2Il0sdmFsdWVzOlt7bmFtZTonImMyY3MiJ30se25hbWU6JyJkbGlnIid9LHtuYW1lOicia2VybiInfSx7bmFtZTonImxpZ2EiJ30se25hbWU6JyJsbnVtIid9LHtuYW1lOicib251bSInfSx7bmFtZTonInNtY3AiJ30se25hbWU6JyJzd3NoIid9LHtuYW1lOicidG51bSInfSx7bmFtZToibm9ybWFsIixkZXNjcmlwdGlvbjoiTm8gY2hhbmdlIGluIGdseXBoIHN1YnN0aXR1dGlvbiBvciBwb3NpdGlvbmluZyBvY2N1cnMuIn0se25hbWU6Im9mZiJ9LHtuYW1lOiJvbiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlRoaXMgcHJvcGVydHkgcHJvdmlkZXMgbG93LWxldmVsIGNvbnRyb2wgb3ZlciBPcGVuVHlwZSBmb250IGZlYXR1cmVzLiBJdCBpcyBpbnRlbmRlZCBhcyBhIHdheSBvZiBwcm92aWRpbmcgYWNjZXNzIHRvIGZvbnQgZmVhdHVyZXMgdGhhdCBhcmUgbm90IHdpZGVseSB1c2VkIGJ1dCBhcmUgbmVlZGVkIGZvciBhIHBhcnRpY3VsYXIgdXNlIGNhc2UuIixyZXN0cmljdGlvbnM6WyJzdHJpbmciLCJpbnRlZ2VyIl19LHtuYW1lOiItd2Via2l0LWh5cGhlbnMiLGJyb3dzZXJzOlsiUzUuMSJdLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJDb25kaXRpb25hbCBoeXBoZW5hdGlvbiBjaGFyYWN0ZXJzIGluc2lkZSBhIHdvcmQsIGlmIHByZXNlbnQsIHRha2UgcHJpb3JpdHkgb3ZlciBhdXRvbWF0aWMgcmVzb3VyY2VzIHdoZW4gZGV0ZXJtaW5pbmcgaHlwaGVuYXRpb24gcG9pbnRzIHdpdGhpbiB0aGUgd29yZC4ifSx7bmFtZToibWFudWFsIixkZXNjcmlwdGlvbjoiV29yZHMgYXJlIG9ubHkgYnJva2VuIGF0IGxpbmUgYnJlYWtzIHdoZXJlIHRoZXJlIGFyZSBjaGFyYWN0ZXJzIGluc2lkZSB0aGUgd29yZCB0aGF0IHN1Z2dlc3QgbGluZSBicmVhayBvcHBvcnR1bml0aWVzIn0se25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJXb3JkcyBhcmUgbm90IGJyb2tlbiBhdCBsaW5lIGJyZWFrcywgZXZlbiBpZiBjaGFyYWN0ZXJzIGluc2lkZSB0aGUgd29yZCBzdWdnZXN0IGxpbmUgYnJlYWsgcG9pbnRzLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkNvbnRyb2xzIHdoZXRoZXIgaHlwaGVuYXRpb24gaXMgYWxsb3dlZCB0byBjcmVhdGUgbW9yZSBicmVhayBvcHBvcnR1bml0aWVzIHdpdGhpbiBhIGxpbmUgb2YgdGV4dC4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii13ZWJraXQtbGluZS1icmVhayIsYnJvd3NlcnM6WyJDIiwiUzMiXSx2YWx1ZXM6W3tuYW1lOiJhZnRlci13aGl0ZS1zcGFjZSJ9LHtuYW1lOiJub3JtYWwifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgbGluZS1icmVha2luZyBydWxlcyBmb3IgQ0pLIChDaGluZXNlLCBKYXBhbmVzZSwgYW5kIEtvcmVhbikgdGV4dC4ifSx7bmFtZToiLXdlYmtpdC1tYXJnaW4tYm90dG9tLWNvbGxhcHNlIixicm93c2VyczpbIkMiLCJTMyJdLHZhbHVlczpbe25hbWU6ImNvbGxhcHNlIn0se25hbWU6ImRpc2NhcmQifSx7bmFtZToic2VwYXJhdGUifV0scmVsZXZhbmNlOjUwLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii13ZWJraXQtbWFyZ2luLWNvbGxhcHNlIixicm93c2VyczpbIkMiLCJTMyJdLHZhbHVlczpbe25hbWU6ImNvbGxhcHNlIn0se25hbWU6ImRpc2NhcmQifSx7bmFtZToic2VwYXJhdGUifV0scmVsZXZhbmNlOjUwLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii13ZWJraXQtbWFyZ2luLXN0YXJ0Iixicm93c2VyczpbIkMiLCJTMyJdLHZhbHVlczpbe25hbWU6ImF1dG8ifV0scmVsZXZhbmNlOjUwLHJlc3RyaWN0aW9uczpbInBlcmNlbnRhZ2UiLCJsZW5ndGgiXX0se25hbWU6Ii13ZWJraXQtbWFyZ2luLXRvcC1jb2xsYXBzZSIsYnJvd3NlcnM6WyJDIiwiUzMiXSx2YWx1ZXM6W3tuYW1lOiJjb2xsYXBzZSJ9LHtuYW1lOiJkaXNjYXJkIn0se25hbWU6InNlcGFyYXRlIn1dLHJlbGV2YW5jZTo1MCxyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiItd2Via2l0LW1hc2stY2xpcCIsYnJvd3NlcnM6WyJDIiwiTzE1IiwiUzQiXSxzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6IlsgPGJveD4gfCBib3JkZXIgfCBwYWRkaW5nIHwgY29udGVudCB8IHRleHQgXSMiLHJlbGV2YW5jZTowLGRlc2NyaXB0aW9uOiJEZXRlcm1pbmVzIHRoZSBtYXNrIHBhaW50aW5nIGFyZWEsIHdoaWNoIGRldGVybWluZXMgdGhlIGFyZWEgdGhhdCBpcyBhZmZlY3RlZCBieSB0aGUgbWFzay4iLHJlc3RyaWN0aW9uczpbImJveCJdfSx7bmFtZToiLXdlYmtpdC1tYXNrLWltYWdlIixicm93c2VyczpbIkMiLCJPMTUiLCJTNCJdLHZhbHVlczpbe25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJDb3VudHMgYXMgYSB0cmFuc3BhcmVudCBibGFjayBpbWFnZSBsYXllci4ifSx7bmFtZToidXJsKCkiLGRlc2NyaXB0aW9uOiJSZWZlcmVuY2UgdG8gYSA8bWFzayBlbGVtZW50IG9yIHRvIGEgQ1NTIGltYWdlLiJ9XSxzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6IjxtYXNrLXJlZmVyZW5jZT4jIixyZWxldmFuY2U6MCxkZXNjcmlwdGlvbjoiU2V0cyB0aGUgbWFzayBsYXllciBpbWFnZSBvZiBhbiBlbGVtZW50LiIscmVzdHJpY3Rpb25zOlsidXJsIiwiaW1hZ2UiLCJlbnVtIl19LHtuYW1lOiItd2Via2l0LW1hc2stb3JpZ2luIixicm93c2VyczpbIkMiLCJPMTUiLCJTNCJdLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoiWyA8Ym94PiB8IGJvcmRlciB8IHBhZGRpbmcgfCBjb250ZW50IF0jIixyZWxldmFuY2U6MCxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHRoZSBtYXNrIHBvc2l0aW9uaW5nIGFyZWEuIixyZXN0cmljdGlvbnM6WyJib3giXX0se25hbWU6Ii13ZWJraXQtbWFzay1yZXBlYXQiLGJyb3dzZXJzOlsiQyIsIk8xNSIsIlM0Il0sc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiI8cmVwZWF0LXN0eWxlPiMiLHJlbGV2YW5jZTowLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgaG93IG1hc2sgbGF5ZXIgaW1hZ2VzIGFyZSB0aWxlZCBhZnRlciB0aGV5IGhhdmUgYmVlbiBzaXplZCBhbmQgcG9zaXRpb25lZC4iLHJlc3RyaWN0aW9uczpbInJlcGVhdCJdfSx7bmFtZToiLXdlYmtpdC1tYXNrLXNpemUiLGJyb3dzZXJzOlsiQyIsIk8xNSIsIlM0Il0sdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IlJlc29sdmVkIGJ5IHVzaW5nIHRoZSBpbWFnZeKAmXMgaW50cmluc2ljIHJhdGlvIGFuZCB0aGUgc2l6ZSBvZiB0aGUgb3RoZXIgZGltZW5zaW9uLCBvciBmYWlsaW5nIHRoYXQsIHVzaW5nIHRoZSBpbWFnZeKAmXMgaW50cmluc2ljIHNpemUsIG9yIGZhaWxpbmcgdGhhdCwgdHJlYXRpbmcgaXQgYXMgMTAwJS4ifSx7bmFtZToiY29udGFpbiIsZGVzY3JpcHRpb246IlNjYWxlIHRoZSBpbWFnZSwgd2hpbGUgcHJlc2VydmluZyBpdHMgaW50cmluc2ljIGFzcGVjdCByYXRpbyAoaWYgYW55KSwgdG8gdGhlIGxhcmdlc3Qgc2l6ZSBzdWNoIHRoYXQgYm90aCBpdHMgd2lkdGggYW5kIGl0cyBoZWlnaHQgY2FuIGZpdCBpbnNpZGUgdGhlIGJhY2tncm91bmQgcG9zaXRpb25pbmcgYXJlYS4ifSx7bmFtZToiY292ZXIiLGRlc2NyaXB0aW9uOiJTY2FsZSB0aGUgaW1hZ2UsIHdoaWxlIHByZXNlcnZpbmcgaXRzIGludHJpbnNpYyBhc3BlY3QgcmF0aW8gKGlmIGFueSksIHRvIHRoZSBzbWFsbGVzdCBzaXplIHN1Y2ggdGhhdCBib3RoIGl0cyB3aWR0aCBhbmQgaXRzIGhlaWdodCBjYW4gY29tcGxldGVseSBjb3ZlciB0aGUgYmFja2dyb3VuZCBwb3NpdGlvbmluZyBhcmVhLiJ9XSxzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6IjxiZy1zaXplPiMiLHJlbGV2YW5jZTowLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgdGhlIHNpemUgb2YgdGhlIG1hc2sgbGF5ZXIgaW1hZ2VzLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwicGVyY2VudGFnZSIsImVudW0iXX0se25hbWU6Ii13ZWJraXQtbmJzcC1tb2RlIixicm93c2VyczpbIkMiLCJTMyJdLHZhbHVlczpbe25hbWU6Im5vcm1hbCJ9LHtuYW1lOiJzcGFjZSJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkRlZmluZXMgdGhlIGJlaGF2aW9yIG9mIG5vbmJyZWFraW5nIHNwYWNlcyB3aXRoaW4gdGV4dC4ifSx7bmFtZToiLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmciLGJyb3dzZXJzOlsiQyIsIlM1Il0sdmFsdWVzOlt7bmFtZToiYXV0byJ9LHtuYW1lOiJ0b3VjaCJ9XSxzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6ImF1dG8gfCB0b3VjaCIscmVsZXZhbmNlOjAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLy13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nIn1dLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgd2hldGhlciB0byB1c2UgbmF0aXZlLXN0eWxlIHNjcm9sbGluZyBpbiBhbiBvdmVyZmxvdzpzY3JvbGwgZWxlbWVudC4ifSx7bmFtZToiLXdlYmtpdC1wYWRkaW5nLXN0YXJ0Iixicm93c2VyczpbIkMiLCJTMyJdLHJlbGV2YW5jZTo1MCxyZXN0cmljdGlvbnM6WyJwZXJjZW50YWdlIiwibGVuZ3RoIl19LHtuYW1lOiItd2Via2l0LXBlcnNwZWN0aXZlIixicm93c2VyczpbIkMiLCJTNCJdLHZhbHVlczpbe25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJObyBwZXJzcGVjdGl2ZSB0cmFuc2Zvcm0gaXMgYXBwbGllZC4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJBcHBsaWVzIHRoZSBzYW1lIHRyYW5zZm9ybSBhcyB0aGUgcGVyc3BlY3RpdmUoPG51bWJlcj4pIHRyYW5zZm9ybSBmdW5jdGlvbiwgZXhjZXB0IHRoYXQgaXQgYXBwbGllcyBvbmx5IHRvIHRoZSBwb3NpdGlvbmVkIG9yIHRyYW5zZm9ybWVkIGNoaWxkcmVuIG9mIHRoZSBlbGVtZW50LCBub3QgdG8gdGhlIHRyYW5zZm9ybSBvbiB0aGUgZWxlbWVudCBpdHNlbGYuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiXX0se25hbWU6Ii13ZWJraXQtcGVyc3BlY3RpdmUtb3JpZ2luIixicm93c2VyczpbIkMiLCJTNCJdLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiRXN0YWJsaXNoZXMgdGhlIG9yaWdpbiBmb3IgdGhlIHBlcnNwZWN0aXZlIHByb3BlcnR5LiBJdCBlZmZlY3RpdmVseSBzZXRzIHRoZSBYIGFuZCBZIHBvc2l0aW9uIGF0IHdoaWNoIHRoZSB2aWV3ZXIgYXBwZWFycyB0byBiZSBsb29raW5nIGF0IHRoZSBjaGlsZHJlbiBvZiB0aGUgZWxlbWVudC4iLHJlc3RyaWN0aW9uczpbInBvc2l0aW9uIiwicGVyY2VudGFnZSIsImxlbmd0aCJdfSx7bmFtZToiLXdlYmtpdC1yZWdpb24tZnJhZ21lbnQiLGJyb3dzZXJzOlsiUzciXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiQ29udGVudCBmbG93cyBhcyBpdCB3b3VsZCBpbiBhIHJlZ3VsYXIgY29udGVudCBib3guIn0se25hbWU6ImJyZWFrIixkZXNjcmlwdGlvbjoiSWYgdGhlIGNvbnRlbnQgZml0cyB3aXRoaW4gdGhlIENTUyBSZWdpb24sIHRoZW4gdGhpcyBwcm9wZXJ0eSBoYXMgbm8gZWZmZWN0LiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlRoZSAncmVnaW9uLWZyYWdtZW50JyBwcm9wZXJ0eSBjb250cm9scyB0aGUgYmVoYXZpb3Igb2YgdGhlIGxhc3QgcmVnaW9uIGFzc29jaWF0ZWQgd2l0aCBhIG5hbWVkIGZsb3cuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiItd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3IiLGJyb3dzZXJzOlsiRTEyIiwiQzE2IiwiTzE1Il0sc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiI8Y29sb3I+IixyZWxldmFuY2U6MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yIn1dLHJlc3RyaWN0aW9uczpbImNvbG9yIl19LHtuYW1lOiItd2Via2l0LXRleHQtZmlsbC1jb2xvciIsYnJvd3NlcnM6WyJFMTIiLCJGRjQ5IiwiUzMiLCJDMSIsIk8xNSJdLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoiPGNvbG9yPiIscmVsZXZhbmNlOjAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLy13ZWJraXQtdGV4dC1maWxsLWNvbG9yIn1dLHJlc3RyaWN0aW9uczpbImNvbG9yIl19LHtuYW1lOiItd2Via2l0LXRleHQtc2l6ZS1hZGp1c3QiLGJyb3dzZXJzOlsiRSIsIkMiLCJTMyJdLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJSZW5kZXJlcnMgbXVzdCB1c2UgdGhlIGRlZmF1bHQgc2l6ZSBhZGp1c3RtZW50IHdoZW4gZGlzcGxheWluZyBvbiBhIHNtYWxsIGRldmljZS4ifSx7bmFtZToibm9uZSIsZGVzY3JpcHRpb246IlJlbmRlcmVycyBtdXN0IG5vdCBkbyBzaXplIGFkanVzdG1lbnQgd2hlbiBkaXNwbGF5aW5nIG9uIGEgc21hbGwgZGV2aWNlLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIHNpemUgYWRqdXN0bWVudCBmb3IgZGlzcGxheWluZyB0ZXh0IGNvbnRlbnQgaW4gbW9iaWxlIGJyb3dzZXJzLiIscmVzdHJpY3Rpb25zOlsicGVyY2VudGFnZSJdfSx7bmFtZToiLXdlYmtpdC10ZXh0LXN0cm9rZSIsYnJvd3NlcnM6WyJFMTUiLCJGRjQ5IiwiUzMiLCJDNCIsIk8xNSJdLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoiPGxlbmd0aD4gfHwgPGNvbG9yPiIscmVsZXZhbmNlOjAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLy13ZWJraXQtdGV4dC1zdHJva2UifV0scmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwibGluZS13aWR0aCIsImNvbG9yIiwicGVyY2VudGFnZSJdfSx7bmFtZToiLXdlYmtpdC10ZXh0LXN0cm9rZS1jb2xvciIsYnJvd3NlcnM6WyJFMTUiLCJGRjQ5IiwiUzMiLCJDMSIsIk8xNSJdLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoiPGNvbG9yPiIscmVsZXZhbmNlOjAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLy13ZWJraXQtdGV4dC1zdHJva2UtY29sb3IifV0scmVzdHJpY3Rpb25zOlsiY29sb3IiXX0se25hbWU6Ii13ZWJraXQtdGV4dC1zdHJva2Utd2lkdGgiLGJyb3dzZXJzOlsiRTE1IiwiRkY0OSIsIlMzIiwiQzEiLCJPMTUiXSxzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6IjxsZW5ndGg+IixyZWxldmFuY2U6MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvLXdlYmtpdC10ZXh0LXN0cm9rZS13aWR0aCJ9XSxyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJsaW5lLXdpZHRoIiwicGVyY2VudGFnZSJdfSx7bmFtZToiLXdlYmtpdC10b3VjaC1jYWxsb3V0Iixicm93c2VyczpbIlMzIl0sdmFsdWVzOlt7bmFtZToibm9uZSJ9XSxzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6ImRlZmF1bHQgfCBub25lIixyZWxldmFuY2U6MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvLXdlYmtpdC10b3VjaC1jYWxsb3V0In1dLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii13ZWJraXQtdHJhbnNmb3JtIixicm93c2VyczpbIkMiLCJPMTIiLCJTMy4xIl0sdmFsdWVzOlt7bmFtZToibWF0cml4KCkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSAyRCB0cmFuc2Zvcm1hdGlvbiBpbiB0aGUgZm9ybSBvZiBhIHRyYW5zZm9ybWF0aW9uIG1hdHJpeCBvZiBzaXggdmFsdWVzLiBtYXRyaXgoYSxiLGMsZCxlLGYpIGlzIGVxdWl2YWxlbnQgdG8gYXBwbHlpbmcgdGhlIHRyYW5zZm9ybWF0aW9uIG1hdHJpeCBbYSBiIGMgZCBlIGZdIn0se25hbWU6Im1hdHJpeDNkKCkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSAzRCB0cmFuc2Zvcm1hdGlvbiBhcyBhIDR4NCBob21vZ2VuZW91cyBtYXRyaXggb2YgMTYgdmFsdWVzIGluIGNvbHVtbi1tYWpvciBvcmRlci4ifSx7bmFtZToibm9uZSJ9LHtuYW1lOiJwZXJzcGVjdGl2ZSgpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgcGVyc3BlY3RpdmUgcHJvamVjdGlvbiBtYXRyaXguIn0se25hbWU6InJvdGF0ZSgpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgMkQgcm90YXRpb24gYnkgdGhlIGFuZ2xlIHNwZWNpZmllZCBpbiB0aGUgcGFyYW1ldGVyIGFib3V0IHRoZSBvcmlnaW4gb2YgdGhlIGVsZW1lbnQsIGFzIGRlZmluZWQgYnkgdGhlIHRyYW5zZm9ybS1vcmlnaW4gcHJvcGVydHkuIn0se25hbWU6InJvdGF0ZTNkKCkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSBjbG9ja3dpc2UgM0Qgcm90YXRpb24gYnkgdGhlIGFuZ2xlIHNwZWNpZmllZCBpbiBsYXN0IHBhcmFtZXRlciBhYm91dCB0aGUgW3gseSx6XSBkaXJlY3Rpb24gdmVjdG9yIGRlc2NyaWJlZCBieSB0aGUgZmlyc3QgMyBwYXJhbWV0ZXJzLiJ9LHtuYW1lOiJyb3RhdGVYKCdhbmdsZScpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgY2xvY2t3aXNlIHJvdGF0aW9uIGJ5IHRoZSBnaXZlbiBhbmdsZSBhYm91dCB0aGUgWCBheGlzLiJ9LHtuYW1lOiJyb3RhdGVZKCdhbmdsZScpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgY2xvY2t3aXNlIHJvdGF0aW9uIGJ5IHRoZSBnaXZlbiBhbmdsZSBhYm91dCB0aGUgWSBheGlzLiJ9LHtuYW1lOiJyb3RhdGVaKCdhbmdsZScpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgY2xvY2t3aXNlIHJvdGF0aW9uIGJ5IHRoZSBnaXZlbiBhbmdsZSBhYm91dCB0aGUgWiBheGlzLiJ9LHtuYW1lOiJzY2FsZSgpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgMkQgc2NhbGUgb3BlcmF0aW9uIGJ5IHRoZSBbc3gsc3ldIHNjYWxpbmcgdmVjdG9yIGRlc2NyaWJlZCBieSB0aGUgMiBwYXJhbWV0ZXJzLiBJZiB0aGUgc2Vjb25kIHBhcmFtZXRlciBpcyBub3QgcHJvdmlkZWQsIGl0IGlzIHRha2VzIGEgdmFsdWUgZXF1YWwgdG8gdGhlIGZpcnN0LiJ9LHtuYW1lOiJzY2FsZTNkKCkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSAzRCBzY2FsZSBvcGVyYXRpb24gYnkgdGhlIFtzeCxzeSxzel0gc2NhbGluZyB2ZWN0b3IgZGVzY3JpYmVkIGJ5IHRoZSAzIHBhcmFtZXRlcnMuIn0se25hbWU6InNjYWxlWCgpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgc2NhbGUgb3BlcmF0aW9uIHVzaW5nIHRoZSBbc3gsMV0gc2NhbGluZyB2ZWN0b3IsIHdoZXJlIHN4IGlzIGdpdmVuIGFzIHRoZSBwYXJhbWV0ZXIuIn0se25hbWU6InNjYWxlWSgpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgc2NhbGUgb3BlcmF0aW9uIHVzaW5nIHRoZSBbc3ksMV0gc2NhbGluZyB2ZWN0b3IsIHdoZXJlIHN5IGlzIGdpdmVuIGFzIHRoZSBwYXJhbWV0ZXIuIn0se25hbWU6InNjYWxlWigpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgc2NhbGUgb3BlcmF0aW9uIHVzaW5nIHRoZSBbMSwxLHN6XSBzY2FsaW5nIHZlY3Rvciwgd2hlcmUgc3ogaXMgZ2l2ZW4gYXMgdGhlIHBhcmFtZXRlci4ifSx7bmFtZToic2tldygpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgc2tldyB0cmFuc2Zvcm1hdGlvbiBhbG9uZyB0aGUgWCBhbmQgWSBheGVzLiBUaGUgZmlyc3QgYW5nbGUgcGFyYW1ldGVyIHNwZWNpZmllcyB0aGUgc2tldyBvbiB0aGUgWCBheGlzLiBUaGUgc2Vjb25kIGFuZ2xlIHBhcmFtZXRlciBzcGVjaWZpZXMgdGhlIHNrZXcgb24gdGhlIFkgYXhpcy4gSWYgdGhlIHNlY29uZCBwYXJhbWV0ZXIgaXMgbm90IGdpdmVuIHRoZW4gYSB2YWx1ZSBvZiAwIGlzIHVzZWQgZm9yIHRoZSBZIGFuZ2xlIChpZTogbm8gc2tldyBvbiB0aGUgWSBheGlzKS4ifSx7bmFtZToic2tld1goKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIHNrZXcgdHJhbnNmb3JtYXRpb24gYWxvbmcgdGhlIFggYXhpcyBieSB0aGUgZ2l2ZW4gYW5nbGUuIn0se25hbWU6InNrZXdZKCkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSBza2V3IHRyYW5zZm9ybWF0aW9uIGFsb25nIHRoZSBZIGF4aXMgYnkgdGhlIGdpdmVuIGFuZ2xlLiJ9LHtuYW1lOiJ0cmFuc2xhdGUoKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIDJEIHRyYW5zbGF0aW9uIGJ5IHRoZSB2ZWN0b3IgW3R4LCB0eV0sIHdoZXJlIHR4IGlzIHRoZSBmaXJzdCB0cmFuc2xhdGlvbi12YWx1ZSBwYXJhbWV0ZXIgYW5kIHR5IGlzIHRoZSBvcHRpb25hbCBzZWNvbmQgdHJhbnNsYXRpb24tdmFsdWUgcGFyYW1ldGVyLiJ9LHtuYW1lOiJ0cmFuc2xhdGUzZCgpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgM0QgdHJhbnNsYXRpb24gYnkgdGhlIHZlY3RvciBbdHgsdHksdHpdLCB3aXRoIHR4LCB0eSBhbmQgdHogYmVpbmcgdGhlIGZpcnN0LCBzZWNvbmQgYW5kIHRoaXJkIHRyYW5zbGF0aW9uLXZhbHVlIHBhcmFtZXRlcnMgcmVzcGVjdGl2ZWx5LiJ9LHtuYW1lOiJ0cmFuc2xhdGVYKCkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSB0cmFuc2xhdGlvbiBieSB0aGUgZ2l2ZW4gYW1vdW50IGluIHRoZSBYIGRpcmVjdGlvbi4ifSx7bmFtZToidHJhbnNsYXRlWSgpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgdHJhbnNsYXRpb24gYnkgdGhlIGdpdmVuIGFtb3VudCBpbiB0aGUgWSBkaXJlY3Rpb24uIn0se25hbWU6InRyYW5zbGF0ZVooKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIHRyYW5zbGF0aW9uIGJ5IHRoZSBnaXZlbiBhbW91bnQgaW4gdGhlIFogZGlyZWN0aW9uLiBOb3RlIHRoYXQgcGVyY2VudGFnZSB2YWx1ZXMgYXJlIG5vdCBhbGxvd2VkIGluIHRoZSB0cmFuc2xhdGVaIHRyYW5zbGF0aW9uLXZhbHVlLCBhbmQgaWYgcHJlc2VudCBhcmUgZXZhbHVhdGVkIGFzIDAuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiQSB0d28tZGltZW5zaW9uYWwgdHJhbnNmb3JtYXRpb24gaXMgYXBwbGllZCB0byBhbiBlbGVtZW50IHRocm91Z2ggdGhlICd0cmFuc2Zvcm0nIHByb3BlcnR5LiBUaGlzIHByb3BlcnR5IGNvbnRhaW5zIGEgbGlzdCBvZiB0cmFuc2Zvcm0gZnVuY3Rpb25zIHNpbWlsYXIgdG8gdGhvc2UgYWxsb3dlZCBieSBTVkcuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiItd2Via2l0LXRyYW5zZm9ybS1vcmlnaW4iLGJyb3dzZXJzOlsiQyIsIk8xNSIsIlMzLjEiXSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkVzdGFibGlzaGVzIHRoZSBvcmlnaW4gb2YgdHJhbnNmb3JtYXRpb24gZm9yIGFuIGVsZW1lbnQuIixyZXN0cmljdGlvbnM6WyJwb3NpdGlvbiIsImxlbmd0aCIsInBlcmNlbnRhZ2UiXX0se25hbWU6Ii13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbi14Iixicm93c2VyczpbIkMiLCJTMy4xIl0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJUaGUgeCBjb29yZGluYXRlIG9mIHRoZSBvcmlnaW4gZm9yIHRyYW5zZm9ybXMgYXBwbGllZCB0byBhbiBlbGVtZW50IHdpdGggcmVzcGVjdCB0byBpdHMgYm9yZGVyIGJveC4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsInBlcmNlbnRhZ2UiXX0se25hbWU6Ii13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbi15Iixicm93c2VyczpbIkMiLCJTMy4xIl0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJUaGUgeSBjb29yZGluYXRlIG9mIHRoZSBvcmlnaW4gZm9yIHRyYW5zZm9ybXMgYXBwbGllZCB0byBhbiBlbGVtZW50IHdpdGggcmVzcGVjdCB0byBpdHMgYm9yZGVyIGJveC4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsInBlcmNlbnRhZ2UiXX0se25hbWU6Ii13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbi16Iixicm93c2VyczpbIkMiLCJTNCJdLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiVGhlIHogY29vcmRpbmF0ZSBvZiB0aGUgb3JpZ2luIGZvciB0cmFuc2Zvcm1zIGFwcGxpZWQgdG8gYW4gZWxlbWVudCB3aXRoIHJlc3BlY3QgdG8gaXRzIGJvcmRlciBib3guIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJwZXJjZW50YWdlIl19LHtuYW1lOiItd2Via2l0LXRyYW5zZm9ybS1zdHlsZSIsYnJvd3NlcnM6WyJDIiwiUzQiXSx2YWx1ZXM6W3tuYW1lOiJmbGF0IixkZXNjcmlwdGlvbjoiQWxsIGNoaWxkcmVuIG9mIHRoaXMgZWxlbWVudCBhcmUgcmVuZGVyZWQgZmxhdHRlbmVkIGludG8gdGhlIDJEIHBsYW5lIG9mIHRoZSBlbGVtZW50LiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkRlZmluZXMgaG93IG5lc3RlZCBlbGVtZW50cyBhcmUgcmVuZGVyZWQgaW4gM0Qgc3BhY2UuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiItd2Via2l0LXRyYW5zaXRpb24iLGJyb3dzZXJzOlsiQyIsIk8xMiIsIlM1Il0sdmFsdWVzOlt7bmFtZToiYWxsIixkZXNjcmlwdGlvbjoiRXZlcnkgcHJvcGVydHkgdGhhdCBpcyBhYmxlIHRvIHVuZGVyZ28gYSB0cmFuc2l0aW9uIHdpbGwgZG8gc28uIn0se25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJObyBwcm9wZXJ0eSB3aWxsIHRyYW5zaXRpb24uIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiU2hvcnRoYW5kIHByb3BlcnR5IGNvbWJpbmVzIGZvdXIgb2YgdGhlIHRyYW5zaXRpb24gcHJvcGVydGllcyBpbnRvIGEgc2luZ2xlIHByb3BlcnR5LiIscmVzdHJpY3Rpb25zOlsidGltZSIsInByb3BlcnR5IiwidGltaW5nLWZ1bmN0aW9uIiwiZW51bSJdfSx7bmFtZToiLXdlYmtpdC10cmFuc2l0aW9uLWRlbGF5Iixicm93c2VyczpbIkMiLCJPMTIiLCJTNSJdLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiRGVmaW5lcyB3aGVuIHRoZSB0cmFuc2l0aW9uIHdpbGwgc3RhcnQuIEl0IGFsbG93cyBhIHRyYW5zaXRpb24gdG8gYmVnaW4gZXhlY3V0aW9uIHNvbWUgcGVyaW9kIG9mIHRpbWUgZnJvbSB3aGVuIGl0IGlzIGFwcGxpZWQuIixyZXN0cmljdGlvbnM6WyJ0aW1lIl19LHtuYW1lOiItd2Via2l0LXRyYW5zaXRpb24tZHVyYXRpb24iLGJyb3dzZXJzOlsiQyIsIk8xMiIsIlM1Il0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgaG93IGxvbmcgdGhlIHRyYW5zaXRpb24gZnJvbSB0aGUgb2xkIHZhbHVlIHRvIHRoZSBuZXcgdmFsdWUgc2hvdWxkIHRha2UuIixyZXN0cmljdGlvbnM6WyJ0aW1lIl19LHtuYW1lOiItd2Via2l0LXRyYW5zaXRpb24tcHJvcGVydHkiLGJyb3dzZXJzOlsiQyIsIk8xMiIsIlM1Il0sdmFsdWVzOlt7bmFtZToiYWxsIixkZXNjcmlwdGlvbjoiRXZlcnkgcHJvcGVydHkgdGhhdCBpcyBhYmxlIHRvIHVuZGVyZ28gYSB0cmFuc2l0aW9uIHdpbGwgZG8gc28uIn0se25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJObyBwcm9wZXJ0eSB3aWxsIHRyYW5zaXRpb24uIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHRoZSBuYW1lIG9mIHRoZSBDU1MgcHJvcGVydHkgdG8gd2hpY2ggdGhlIHRyYW5zaXRpb24gaXMgYXBwbGllZC4iLHJlc3RyaWN0aW9uczpbInByb3BlcnR5Il19LHtuYW1lOiItd2Via2l0LXRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uIixicm93c2VyczpbIkMiLCJPMTIiLCJTNSJdLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiRGVzY3JpYmVzIGhvdyB0aGUgaW50ZXJtZWRpYXRlIHZhbHVlcyB1c2VkIGR1cmluZyBhIHRyYW5zaXRpb24gd2lsbCBiZSBjYWxjdWxhdGVkLiIscmVzdHJpY3Rpb25zOlsidGltaW5nLWZ1bmN0aW9uIl19LHtuYW1lOiItd2Via2l0LXVzZXItZHJhZyIsYnJvd3NlcnM6WyJTMyJdLHZhbHVlczpbe25hbWU6ImF1dG8ifSx7bmFtZToiZWxlbWVudCJ9LHtuYW1lOiJub25lIn1dLHJlbGV2YW5jZTo1MCxyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiItd2Via2l0LXVzZXItbW9kaWZ5Iixicm93c2VyczpbIkMiLCJTMyJdLHZhbHVlczpbe25hbWU6InJlYWQtb25seSJ9LHtuYW1lOiJyZWFkLXdyaXRlIn0se25hbWU6InJlYWQtd3JpdGUtcGxhaW50ZXh0LW9ubHkifV0sc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiJyZWFkLW9ubHkgfCByZWFkLXdyaXRlIHwgcmVhZC13cml0ZS1wbGFpbnRleHQtb25seSIscmVsZXZhbmNlOjAsZGVzY3JpcHRpb246IkRldGVybWluZXMgd2hldGhlciBhIHVzZXIgY2FuIGVkaXQgdGhlIGNvbnRlbnQgb2YgYW4gZWxlbWVudC4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii13ZWJraXQtdXNlci1zZWxlY3QiLGJyb3dzZXJzOlsiQyIsIlMzIl0sdmFsdWVzOlt7bmFtZToiYXV0byJ9LHtuYW1lOiJub25lIn0se25hbWU6InRleHQifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJDb250cm9scyB0aGUgYXBwZWFyYW5jZSBvZiBzZWxlY3Rpb24uIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJ3aWRvd3MiLGJyb3dzZXJzOlsiRTEyIiwiUzEuMyIsIkMyNSIsIklFOCIsIk85LjIiXSxzeW50YXg6IjxpbnRlZ2VyPiIscmVsZXZhbmNlOjUxLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy93aWRvd3MifV0sZGVzY3JpcHRpb246IlNwZWNpZmllcyB0aGUgbWluaW11bSBudW1iZXIgb2YgbGluZSBib3hlcyBvZiBhIGJsb2NrIGNvbnRhaW5lciB0aGF0IG11c3QgYmUgbGVmdCBpbiBhIGZyYWdtZW50IGFmdGVyIGEgYnJlYWsuIixyZXN0cmljdGlvbnM6WyJpbnRlZ2VyIl19LHtuYW1lOiJ3aWR0aCIsdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IlRoZSB3aWR0aCBkZXBlbmRzIG9uIHRoZSB2YWx1ZXMgb2Ygb3RoZXIgcHJvcGVydGllcy4ifSx7bmFtZToiZml0LWNvbnRlbnQiLGRlc2NyaXB0aW9uOiJVc2UgdGhlIGZpdC1jb250ZW50IGlubGluZSBzaXplIG9yIGZpdC1jb250ZW50IGJsb2NrIHNpemUsIGFzIGFwcHJvcHJpYXRlIHRvIHRoZSB3cml0aW5nIG1vZGUuIn0se25hbWU6Im1heC1jb250ZW50IixkZXNjcmlwdGlvbjoiVXNlIHRoZSBtYXgtY29udGVudCBpbmxpbmUgc2l6ZSBvciBtYXgtY29udGVudCBibG9jayBzaXplLCBhcyBhcHByb3ByaWF0ZSB0byB0aGUgd3JpdGluZyBtb2RlLiJ9LHtuYW1lOiJtaW4tY29udGVudCIsZGVzY3JpcHRpb246IlVzZSB0aGUgbWluLWNvbnRlbnQgaW5saW5lIHNpemUgb3IgbWluLWNvbnRlbnQgYmxvY2sgc2l6ZSwgYXMgYXBwcm9wcmlhdGUgdG8gdGhlIHdyaXRpbmcgbW9kZS4ifV0sc3ludGF4OiI8dmlld3BvcnQtbGVuZ3RoPnsxLDJ9IixyZWxldmFuY2U6OTYscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3dpZHRoIn1dLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgdGhlIHdpZHRoIG9mIHRoZSBjb250ZW50IGFyZWEsIHBhZGRpbmcgYXJlYSBvciBib3JkZXIgYXJlYSAoZGVwZW5kaW5nIG9uICdib3gtc2l6aW5nJykgb2YgY2VydGFpbiBib3hlcy4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsInBlcmNlbnRhZ2UiXX0se25hbWU6IndpbGwtY2hhbmdlIixicm93c2VyczpbIkU3OSIsIkZGMzYiLCJTOS4xIiwiQzM2IiwiTzI0Il0sdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IkV4cHJlc3NlcyBubyBwYXJ0aWN1bGFyIGludGVudC4ifSx7bmFtZToiY29udGVudHMiLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgdGhhdCB0aGUgYXV0aG9yIGV4cGVjdHMgdG8gYW5pbWF0ZSBvciBjaGFuZ2Ugc29tZXRoaW5nIGFib3V0IHRoZSBlbGVtZW504oCZcyBjb250ZW50cyBpbiB0aGUgbmVhciBmdXR1cmUuIn0se25hbWU6InNjcm9sbC1wb3NpdGlvbiIsZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGF0IHRoZSBhdXRob3IgZXhwZWN0cyB0byBhbmltYXRlIG9yIGNoYW5nZSB0aGUgc2Nyb2xsIHBvc2l0aW9uIG9mIHRoZSBlbGVtZW50IGluIHRoZSBuZWFyIGZ1dHVyZS4ifV0sc3ludGF4OiJhdXRvIHwgPGFuaW1hdGVhYmxlLWZlYXR1cmU+IyIscmVsZXZhbmNlOjYzLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy93aWxsLWNoYW5nZSJ9XSxkZXNjcmlwdGlvbjoiUHJvdmlkZXMgYSByZW5kZXJpbmcgaGludCB0byB0aGUgdXNlciBhZ2VudCwgc3RhdGluZyB3aGF0IGtpbmRzIG9mIGNoYW5nZXMgdGhlIGF1dGhvciBleHBlY3RzIHRvIHBlcmZvcm0gb24gdGhlIGVsZW1lbnQuIixyZXN0cmljdGlvbnM6WyJlbnVtIiwiaWRlbnRpZmllciJdfSx7bmFtZToid29yZC1icmVhayIsdmFsdWVzOlt7bmFtZToiYnJlYWstYWxsIixkZXNjcmlwdGlvbjoiTGluZXMgbWF5IGJyZWFrIGJldHdlZW4gYW55IHR3byBncmFwaGVtZSBjbHVzdGVycyBmb3Igbm9uLUNKSyBzY3JpcHRzLiJ9LHtuYW1lOiJrZWVwLWFsbCIsZGVzY3JpcHRpb246IkJsb2NrIGNoYXJhY3RlcnMgY2FuIG5vIGxvbmdlciBjcmVhdGUgaW1wbGllZCBicmVhayBwb2ludHMuIn0se25hbWU6Im5vcm1hbCIsZGVzY3JpcHRpb246IkJyZWFrcyBub24tQ0pLIHNjcmlwdHMgYWNjb3JkaW5nIHRvIHRoZWlyIG93biBydWxlcy4ifV0sc3ludGF4OiJub3JtYWwgfCBicmVhay1hbGwgfCBrZWVwLWFsbCB8IGJyZWFrLXdvcmQiLHJlbGV2YW5jZTo3NSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1Mvd29yZC1icmVhayJ9XSxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGxpbmUgYnJlYWsgb3Bwb3J0dW5pdGllcyBmb3Igbm9uLUNKSyBzY3JpcHRzLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToid29yZC1zcGFjaW5nIix2YWx1ZXM6W3tuYW1lOiJub3JtYWwiLGRlc2NyaXB0aW9uOiJObyBhZGRpdGlvbmFsIHNwYWNpbmcgaXMgYXBwbGllZC4gQ29tcHV0ZXMgdG8gemVyby4ifV0sc3ludGF4OiJub3JtYWwgfCA8bGVuZ3RoPiIscmVsZXZhbmNlOjU3LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy93b3JkLXNwYWNpbmcifV0sZGVzY3JpcHRpb246IlNwZWNpZmllcyBhZGRpdGlvbmFsIHNwYWNpbmcgYmV0d2VlbiDigJx3b3Jkc+KAnS4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsInBlcmNlbnRhZ2UiXX0se25hbWU6IndvcmQtd3JhcCIsdmFsdWVzOlt7bmFtZToiYnJlYWstd29yZCIsZGVzY3JpcHRpb246IkFuIG90aGVyd2lzZSB1bmJyZWFrYWJsZSBzZXF1ZW5jZSBvZiBjaGFyYWN0ZXJzIG1heSBiZSBicm9rZW4gYXQgYW4gYXJiaXRyYXJ5IHBvaW50IGlmIHRoZXJlIGFyZSBubyBvdGhlcndpc2UtYWNjZXB0YWJsZSBicmVhayBwb2ludHMgaW4gdGhlIGxpbmUuIn0se25hbWU6Im5vcm1hbCIsZGVzY3JpcHRpb246IkxpbmVzIG1heSBicmVhayBvbmx5IGF0IGFsbG93ZWQgYnJlYWsgcG9pbnRzLiJ9XSxzeW50YXg6Im5vcm1hbCB8IGJyZWFrLXdvcmQiLHJlbGV2YW5jZTo3OCxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHdoZXRoZXIgdGhlIFVBIG1heSBicmVhayB3aXRoaW4gYSB3b3JkIHRvIHByZXZlbnQgb3ZlcmZsb3cgd2hlbiBhbiBvdGhlcndpc2UtdW5icmVha2FibGUgc3RyaW5nIGlzIHRvbyBsb25nIHRvIGZpdC4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6IndyaXRpbmctbW9kZSIsdmFsdWVzOlt7bmFtZToiaG9yaXpvbnRhbC10YiIsZGVzY3JpcHRpb246IlRvcC10by1ib3R0b20gYmxvY2sgZmxvdyBkaXJlY3Rpb24uIFRoZSB3cml0aW5nIG1vZGUgaXMgaG9yaXpvbnRhbC4ifSx7bmFtZToic2lkZXdheXMtbHIiLGRlc2NyaXB0aW9uOiJMZWZ0LXRvLXJpZ2h0IGJsb2NrIGZsb3cgZGlyZWN0aW9uLiBUaGUgd3JpdGluZyBtb2RlIGlzIHZlcnRpY2FsLCB3aGlsZSB0aGUgdHlwb2dyYXBoaWMgbW9kZSBpcyBob3Jpem9udGFsLiJ9LHtuYW1lOiJzaWRld2F5cy1ybCIsZGVzY3JpcHRpb246IlJpZ2h0LXRvLWxlZnQgYmxvY2sgZmxvdyBkaXJlY3Rpb24uIFRoZSB3cml0aW5nIG1vZGUgaXMgdmVydGljYWwsIHdoaWxlIHRoZSB0eXBvZ3JhcGhpYyBtb2RlIGlzIGhvcml6b250YWwuIn0se25hbWU6InZlcnRpY2FsLWxyIixkZXNjcmlwdGlvbjoiTGVmdC10by1yaWdodCBibG9jayBmbG93IGRpcmVjdGlvbi4gVGhlIHdyaXRpbmcgbW9kZSBpcyB2ZXJ0aWNhbC4ifSx7bmFtZToidmVydGljYWwtcmwiLGRlc2NyaXB0aW9uOiJSaWdodC10by1sZWZ0IGJsb2NrIGZsb3cgZGlyZWN0aW9uLiBUaGUgd3JpdGluZyBtb2RlIGlzIHZlcnRpY2FsLiJ9XSxzeW50YXg6Imhvcml6b250YWwtdGIgfCB2ZXJ0aWNhbC1ybCB8IHZlcnRpY2FsLWxyIHwgc2lkZXdheXMtcmwgfCBzaWRld2F5cy1sciIscmVsZXZhbmNlOjUwLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy93cml0aW5nLW1vZGUifV0sZGVzY3JpcHRpb246IlRoaXMgaXMgYSBzaG9ydGhhbmQgcHJvcGVydHkgZm9yIGJvdGggJ2RpcmVjdGlvbicgYW5kICdibG9jay1wcm9ncmVzc2lvbicuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJ6LWluZGV4Iix2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiVGhlIHN0YWNrIGxldmVsIG9mIHRoZSBnZW5lcmF0ZWQgYm94IGluIHRoZSBjdXJyZW50IHN0YWNraW5nIGNvbnRleHQgaXMgMC4gVGhlIGJveCBkb2VzIG5vdCBlc3RhYmxpc2ggYSBuZXcgc3RhY2tpbmcgY29udGV4dCB1bmxlc3MgaXQgaXMgdGhlIHJvb3QgZWxlbWVudC4ifV0sc3ludGF4OiJhdXRvIHwgPGludGVnZXI+IixyZWxldmFuY2U6OTIscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3otaW5kZXgifV0sZGVzY3JpcHRpb246IkZvciBhIHBvc2l0aW9uZWQgYm94LCB0aGUgJ3otaW5kZXgnIHByb3BlcnR5IHNwZWNpZmllcyB0aGUgc3RhY2sgbGV2ZWwgb2YgdGhlIGJveCBpbiB0aGUgY3VycmVudCBzdGFja2luZyBjb250ZXh0IGFuZCB3aGV0aGVyIHRoZSBib3ggZXN0YWJsaXNoZXMgYSBsb2NhbCBzdGFja2luZyBjb250ZXh0LiIscmVzdHJpY3Rpb25zOlsiaW50ZWdlciJdfSx7bmFtZToiem9vbSIsYnJvd3NlcnM6WyJFMTIiLCJTMy4xIiwiQzEiLCJJRTUuNSIsIk8xNSJdLHZhbHVlczpbe25hbWU6Im5vcm1hbCJ9XSxzeW50YXg6ImF1dG8gfCA8bnVtYmVyPiB8IDxwZXJjZW50YWdlPiIscmVsZXZhbmNlOjY3LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy96b29tIn1dLGRlc2NyaXB0aW9uOiJOb24tc3RhbmRhcmQuIFNwZWNpZmllcyB0aGUgbWFnbmlmaWNhdGlvbiBzY2FsZSBvZiB0aGUgb2JqZWN0LiBTZWUgJ3RyYW5zZm9ybTogc2NhbGUoKScgZm9yIGEgc3RhbmRhcmRzLWJhc2VkIGFsdGVybmF0aXZlLiIscmVzdHJpY3Rpb25zOlsiZW51bSIsImludGVnZXIiLCJudW1iZXIiLCJwZXJjZW50YWdlIl19LHtuYW1lOiItbXMtaW1lLWFsaWduIixzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6ImF1dG8gfCBhZnRlciIscmVsZXZhbmNlOjAsZGVzY3JpcHRpb246IkFsaWducyB0aGUgSW5wdXQgTWV0aG9kIEVkaXRvciAoSU1FKSBjYW5kaWRhdGUgd2luZG93IGJveCByZWxhdGl2ZSB0byB0aGUgZWxlbWVudCBvbiB3aGljaCB0aGUgSU1FIGNvbXBvc2l0aW9uIGlzIGFjdGl2ZS4ifSx7bmFtZToiLW1vei1iaW5kaW5nIixzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6Ijx1cmw+IHwgbm9uZSIscmVsZXZhbmNlOjAsYnJvd3NlcnM6WyJGRjEiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvLW1vei1iaW5kaW5nIn1dLGRlc2NyaXB0aW9uOiJUaGUgLW1vei1iaW5kaW5nIENTUyBwcm9wZXJ0eSBpcyB1c2VkIGJ5IE1vemlsbGEtYmFzZWQgYXBwbGljYXRpb25zIHRvIGF0dGFjaCBhbiBYQkwgYmluZGluZyB0byBhIERPTSBlbGVtZW50LiJ9LHtuYW1lOiItbW96LWNvbnRleHQtcHJvcGVydGllcyIsc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiJub25lIHwgWyBmaWxsIHwgZmlsbC1vcGFjaXR5IHwgc3Ryb2tlIHwgc3Ryb2tlLW9wYWNpdHkgXSMiLHJlbGV2YW5jZTowLGJyb3dzZXJzOlsiRkY1NSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy8tbW96LWNvbnRleHQtcHJvcGVydGllcyJ9XSxkZXNjcmlwdGlvbjoiSWYgeW91IHJlZmVyZW5jZSBhbiBTVkcgaW1hZ2UgaW4gYSB3ZWJwYWdlIChzdWNoIGFzIHdpdGggdGhlIDxpbWc+IGVsZW1lbnQgb3IgYXMgYSBiYWNrZ3JvdW5kIGltYWdlKSwgdGhlIFNWRyBpbWFnZSBjYW4gY29vcmRpbmF0ZSB3aXRoIHRoZSBlbWJlZGRpbmcgZWxlbWVudCAoaXRzIGNvbnRleHQpIHRvIGhhdmUgdGhlIGltYWdlIGFkb3B0IHByb3BlcnR5IHZhbHVlcyBzZXQgb24gdGhlIGVtYmVkZGluZyBlbGVtZW50LiBUbyBkbyB0aGlzIHRoZSBlbWJlZGRpbmcgZWxlbWVudCBuZWVkcyB0byBsaXN0IHRoZSBwcm9wZXJ0aWVzIHRoYXQgYXJlIHRvIGJlIG1hZGUgYXZhaWxhYmxlIHRvIHRoZSBpbWFnZSBieSBsaXN0aW5nIHRoZW0gYXMgdmFsdWVzIG9mIHRoZSAtbW96LWNvbnRleHQtcHJvcGVydGllcyBwcm9wZXJ0eSwgYW5kIHRoZSBpbWFnZSBuZWVkcyB0byBvcHQgaW4gdG8gdXNpbmcgdGhvc2UgcHJvcGVydGllcyBieSB1c2luZyB2YWx1ZXMgc3VjaCBhcyB0aGUgY29udGV4dC1maWxsIHZhbHVlLlxuXG5UaGlzIGZlYXR1cmUgaXMgYXZhaWxhYmxlIHNpbmNlIEZpcmVmb3ggNTUsIGJ1dCBpcyBvbmx5IGN1cnJlbnRseSBzdXBwb3J0ZWQgd2l0aCBTVkcgaW1hZ2VzIGxvYWRlZCB2aWEgY2hyb21lOi8vIG9yIHJlc291cmNlOi8vIFVSTHMuIFRvIGV4cGVyaW1lbnQgd2l0aCB0aGUgZmVhdHVyZSBpbiBTVkcgb24gdGhlIFdlYiBpdCBpcyBuZWNlc3NhcnkgdG8gc2V0IHRoZSBzdmcuY29udGV4dC1wcm9wZXJ0aWVzLmNvbnRlbnQuZW5hYmxlZCBwcmVmIHRvIHRydWUuIn0se25hbWU6Ii1tb3otZmxvYXQtZWRnZSIsc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiJib3JkZXItYm94IHwgY29udGVudC1ib3ggfCBtYXJnaW4tYm94IHwgcGFkZGluZy1ib3giLHJlbGV2YW5jZTowLGJyb3dzZXJzOlsiRkYxIl0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLy1tb3otZmxvYXQtZWRnZSJ9XSxkZXNjcmlwdGlvbjoiVGhlIG5vbi1zdGFuZGFyZCAtbW96LWZsb2F0LWVkZ2UgQ1NTIHByb3BlcnR5IHNwZWNpZmllcyB3aGV0aGVyIHRoZSBoZWlnaHQgYW5kIHdpZHRoIHByb3BlcnRpZXMgb2YgdGhlIGVsZW1lbnQgaW5jbHVkZSB0aGUgbWFyZ2luLCBib3JkZXIsIG9yIHBhZGRpbmcgdGhpY2tuZXNzLiJ9LHtuYW1lOiItbW96LWZvcmNlLWJyb2tlbi1pbWFnZS1pY29uIixzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6IjAgfCAxIixyZWxldmFuY2U6MCxicm93c2VyczpbIkZGMSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy8tbW96LWZvcmNlLWJyb2tlbi1pbWFnZS1pY29uIn1dLGRlc2NyaXB0aW9uOiJUaGUgLW1vei1mb3JjZS1icm9rZW4taW1hZ2UtaWNvbiBleHRlbmRlZCBDU1MgcHJvcGVydHkgY2FuIGJlIHVzZWQgdG8gZm9yY2UgdGhlIGJyb2tlbiBpbWFnZSBpY29uIHRvIGJlIHNob3duIGV2ZW4gd2hlbiBhIGJyb2tlbiBpbWFnZSBoYXMgYW4gYWx0IGF0dHJpYnV0ZS4ifSx7bmFtZToiLW1vei1pbWFnZS1yZWdpb24iLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoiPHNoYXBlPiB8IGF1dG8iLHJlbGV2YW5jZTowLGJyb3dzZXJzOlsiRkYxIl0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLy1tb3otaW1hZ2UtcmVnaW9uIn1dLGRlc2NyaXB0aW9uOiJGb3IgY2VydGFpbiBYVUwgZWxlbWVudHMgYW5kIHBzZXVkby1lbGVtZW50cyB0aGF0IHVzZSBhbiBpbWFnZSBmcm9tIHRoZSBsaXN0LXN0eWxlLWltYWdlIHByb3BlcnR5LCB0aGlzIHByb3BlcnR5IHNwZWNpZmllcyBhIHJlZ2lvbiBvZiB0aGUgaW1hZ2UgdGhhdCBpcyB1c2VkIGluIHBsYWNlIG9mIHRoZSB3aG9sZSBpbWFnZS4gVGhpcyBhbGxvd3MgZWxlbWVudHMgdG8gdXNlIGRpZmZlcmVudCBwaWVjZXMgb2YgdGhlIHNhbWUgaW1hZ2UgdG8gaW1wcm92ZSBwZXJmb3JtYW5jZS4ifSx7bmFtZToiLW1vei1vcmllbnQiLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoiaW5saW5lIHwgYmxvY2sgfCBob3Jpem9udGFsIHwgdmVydGljYWwiLHJlbGV2YW5jZTowLGJyb3dzZXJzOlsiRkY2Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLy1tb3otb3JpZW50In1dLGRlc2NyaXB0aW9uOiJUaGUgLW1vei1vcmllbnQgQ1NTIHByb3BlcnR5IHNwZWNpZmllcyB0aGUgb3JpZW50YXRpb24gb2YgdGhlIGVsZW1lbnQgdG8gd2hpY2ggaXQncyBhcHBsaWVkLiJ9LHtuYW1lOiItbW96LW91dGxpbmUtcmFkaXVzIixzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6IjxvdXRsaW5lLXJhZGl1cz57MSw0fSBbIC8gPG91dGxpbmUtcmFkaXVzPnsxLDR9IF0/IixyZWxldmFuY2U6MCxicm93c2VyczpbIkZGMSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy8tbW96LW91dGxpbmUtcmFkaXVzIn1dLGRlc2NyaXB0aW9uOiJJbiBNb3ppbGxhIGFwcGxpY2F0aW9ucyBsaWtlIEZpcmVmb3gsIHRoZSAtbW96LW91dGxpbmUtcmFkaXVzIENTUyBwcm9wZXJ0eSBjYW4gYmUgdXNlZCB0byBnaXZlIGFuIGVsZW1lbnQncyBvdXRsaW5lIHJvdW5kZWQgY29ybmVycy4ifSx7bmFtZToiLW1vei1vdXRsaW5lLXJhZGl1cy1ib3R0b21sZWZ0IixzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6IjxvdXRsaW5lLXJhZGl1cz4iLHJlbGV2YW5jZTowLGJyb3dzZXJzOlsiRkYxIl0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLy1tb3otb3V0bGluZS1yYWRpdXMtYm90dG9tbGVmdCJ9XSxkZXNjcmlwdGlvbjoiSW4gTW96aWxsYSBhcHBsaWNhdGlvbnMsIHRoZSAtbW96LW91dGxpbmUtcmFkaXVzLWJvdHRvbWxlZnQgQ1NTIHByb3BlcnR5IGNhbiBiZSB1c2VkIHRvIHJvdW5kIHRoZSBib3R0b20tbGVmdCBjb3JuZXIgb2YgYW4gZWxlbWVudCdzIG91dGxpbmUuIn0se25hbWU6Ii1tb3otb3V0bGluZS1yYWRpdXMtYm90dG9tcmlnaHQiLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoiPG91dGxpbmUtcmFkaXVzPiIscmVsZXZhbmNlOjAsYnJvd3NlcnM6WyJGRjEiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvLW1vei1vdXRsaW5lLXJhZGl1cy1ib3R0b21yaWdodCJ9XSxkZXNjcmlwdGlvbjoiSW4gTW96aWxsYSBhcHBsaWNhdGlvbnMsIHRoZSAtbW96LW91dGxpbmUtcmFkaXVzLWJvdHRvbXJpZ2h0IENTUyBwcm9wZXJ0eSBjYW4gYmUgdXNlZCB0byByb3VuZCB0aGUgYm90dG9tLXJpZ2h0IGNvcm5lciBvZiBhbiBlbGVtZW50J3Mgb3V0bGluZS4ifSx7bmFtZToiLW1vei1vdXRsaW5lLXJhZGl1cy10b3BsZWZ0IixzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6IjxvdXRsaW5lLXJhZGl1cz4iLHJlbGV2YW5jZTowLGJyb3dzZXJzOlsiRkYxIl0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLy1tb3otb3V0bGluZS1yYWRpdXMtdG9wbGVmdCJ9XSxkZXNjcmlwdGlvbjoiSW4gTW96aWxsYSBhcHBsaWNhdGlvbnMsIHRoZSAtbW96LW91dGxpbmUtcmFkaXVzLXRvcGxlZnQgQ1NTIHByb3BlcnR5IGNhbiBiZSB1c2VkIHRvIHJvdW5kIHRoZSB0b3AtbGVmdCBjb3JuZXIgb2YgYW4gZWxlbWVudCdzIG91dGxpbmUuIn0se25hbWU6Ii1tb3otb3V0bGluZS1yYWRpdXMtdG9wcmlnaHQiLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoiPG91dGxpbmUtcmFkaXVzPiIscmVsZXZhbmNlOjAsYnJvd3NlcnM6WyJGRjEiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvLW1vei1vdXRsaW5lLXJhZGl1cy10b3ByaWdodCJ9XSxkZXNjcmlwdGlvbjoiSW4gTW96aWxsYSBhcHBsaWNhdGlvbnMsIHRoZSAtbW96LW91dGxpbmUtcmFkaXVzLXRvcHJpZ2h0IENTUyBwcm9wZXJ0eSBjYW4gYmUgdXNlZCB0byByb3VuZCB0aGUgdG9wLXJpZ2h0IGNvcm5lciBvZiBhbiBlbGVtZW50J3Mgb3V0bGluZS4ifSx7bmFtZToiLW1vei1zdGFjay1zaXppbmciLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoiaWdub3JlIHwgc3RyZXRjaC10by1maXQiLHJlbGV2YW5jZTowLGRlc2NyaXB0aW9uOiItbW96LXN0YWNrLXNpemluZyBpcyBhbiBleHRlbmRlZCBDU1MgcHJvcGVydHkuIE5vcm1hbGx5LCBhIHN0YWNrIHdpbGwgY2hhbmdlIGl0cyBzaXplIHNvIHRoYXQgYWxsIG9mIGl0cyBjaGlsZCBlbGVtZW50cyBhcmUgY29tcGxldGVseSB2aXNpYmxlLiBGb3IgZXhhbXBsZSwgbW92aW5nIGEgY2hpbGQgb2YgdGhlIHN0YWNrIGZhciB0byB0aGUgcmlnaHQgd2lsbCB3aWRlbiB0aGUgc3RhY2sgc28gdGhlIGNoaWxkIHJlbWFpbnMgdmlzaWJsZS4ifSx7bmFtZToiLW1vei10ZXh0LWJsaW5rIixzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6Im5vbmUgfCBibGluayIscmVsZXZhbmNlOjAsZGVzY3JpcHRpb246IlRoZSAtbW96LXRleHQtYmxpbmsgbm9uLXN0YW5kYXJkIE1vemlsbGEgQ1NTIGV4dGVuc2lvbiBzcGVjaWZpZXMgdGhlIGJsaW5rIG1vZGUuIn0se25hbWU6Ii1tb3otdXNlci1pbnB1dCIsc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiJhdXRvIHwgbm9uZSB8IGVuYWJsZWQgfCBkaXNhYmxlZCIscmVsZXZhbmNlOjAsYnJvd3NlcnM6WyJGRjEiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvLW1vei11c2VyLWlucHV0In1dLGRlc2NyaXB0aW9uOiJJbiBNb3ppbGxhIGFwcGxpY2F0aW9ucywgLW1vei11c2VyLWlucHV0IGRldGVybWluZXMgaWYgYW4gZWxlbWVudCB3aWxsIGFjY2VwdCB1c2VyIGlucHV0LiJ9LHtuYW1lOiItbW96LXVzZXItbW9kaWZ5IixzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6InJlYWQtb25seSB8IHJlYWQtd3JpdGUgfCB3cml0ZS1vbmx5IixyZWxldmFuY2U6MCxkZXNjcmlwdGlvbjoiVGhlIC1tb3otdXNlci1tb2RpZnkgcHJvcGVydHkgaGFzIG5vIGVmZmVjdC4gSXQgd2FzIG9yaWdpbmFsbHkgcGxhbm5lZCB0byBkZXRlcm1pbmUgd2hldGhlciBvciBub3QgdGhlIGNvbnRlbnQgb2YgYW4gZWxlbWVudCBjYW4gYmUgZWRpdGVkIGJ5IGEgdXNlci4ifSx7bmFtZToiLW1vei13aW5kb3ctZHJhZ2dpbmciLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoiZHJhZyB8IG5vLWRyYWciLHJlbGV2YW5jZTowLGRlc2NyaXB0aW9uOiJUaGUgLW1vei13aW5kb3ctZHJhZ2dpbmcgQ1NTIHByb3BlcnR5IHNwZWNpZmllcyB3aGV0aGVyIGEgd2luZG93IGlzIGRyYWdnYWJsZSBvciBub3QuIEl0IG9ubHkgd29ya3MgaW4gQ2hyb21lIGNvZGUsIGFuZCBvbmx5IG9uIE1hYyBPUyBYLiJ9LHtuYW1lOiItbW96LXdpbmRvdy1zaGFkb3ciLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoiZGVmYXVsdCB8IG1lbnUgfCB0b29sdGlwIHwgc2hlZXQgfCBub25lIixyZWxldmFuY2U6MCxkZXNjcmlwdGlvbjoiVGhlIC1tb3otd2luZG93LXNoYWRvdyBDU1MgcHJvcGVydHkgc3BlY2lmaWVzIHdoZXRoZXIgYSB3aW5kb3cgd2lsbCBoYXZlIGEgc2hhZG93LiBJdCBvbmx5IHdvcmtzIG9uIE1hYyBPUyBYLiJ9LHtuYW1lOiItd2Via2l0LWJvcmRlci1iZWZvcmUiLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoiPCdib3JkZXItd2lkdGgnPiB8fCA8J2JvcmRlci1zdHlsZSc+IHx8IDxjb2xvcj4iLHJlbGV2YW5jZTowLGJyb3dzZXJzOlsiRTc5IiwiUzUuMSIsIkM4IiwiTzE1Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLy13ZWJraXQtYm9yZGVyLWJlZm9yZSJ9XSxkZXNjcmlwdGlvbjoiVGhlIC13ZWJraXQtYm9yZGVyLWJlZm9yZSBDU1MgcHJvcGVydHkgaXMgYSBzaG9ydGhhbmQgcHJvcGVydHkgZm9yIHNldHRpbmcgdGhlIGluZGl2aWR1YWwgbG9naWNhbCBibG9jayBzdGFydCBib3JkZXIgcHJvcGVydHkgdmFsdWVzIGluIGEgc2luZ2xlIHBsYWNlIGluIHRoZSBzdHlsZSBzaGVldC4ifSx7bmFtZToiLXdlYmtpdC1ib3JkZXItYmVmb3JlLWNvbG9yIixzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6Ijxjb2xvcj4iLHJlbGV2YW5jZTowLGRlc2NyaXB0aW9uOiJUaGUgLXdlYmtpdC1ib3JkZXItYmVmb3JlLWNvbG9yIENTUyBwcm9wZXJ0eSBzZXRzIHRoZSBjb2xvciBvZiB0aGUgaW5kaXZpZHVhbCBsb2dpY2FsIGJsb2NrIHN0YXJ0IGJvcmRlciBpbiBhIHNpbmdsZSBwbGFjZSBpbiB0aGUgc3R5bGUgc2hlZXQuIn0se25hbWU6Ii13ZWJraXQtYm9yZGVyLWJlZm9yZS1zdHlsZSIsc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiI8J2JvcmRlci1zdHlsZSc+IixyZWxldmFuY2U6MCxkZXNjcmlwdGlvbjoiVGhlIC13ZWJraXQtYm9yZGVyLWJlZm9yZS1zdHlsZSBDU1MgcHJvcGVydHkgc2V0cyB0aGUgc3R5bGUgb2YgdGhlIGluZGl2aWR1YWwgbG9naWNhbCBibG9jayBzdGFydCBib3JkZXIgaW4gYSBzaW5nbGUgcGxhY2UgaW4gdGhlIHN0eWxlIHNoZWV0LiJ9LHtuYW1lOiItd2Via2l0LWJvcmRlci1iZWZvcmUtd2lkdGgiLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoiPCdib3JkZXItd2lkdGgnPiIscmVsZXZhbmNlOjAsZGVzY3JpcHRpb246IlRoZSAtd2Via2l0LWJvcmRlci1iZWZvcmUtd2lkdGggQ1NTIHByb3BlcnR5IHNldHMgdGhlIHdpZHRoIG9mIHRoZSBpbmRpdmlkdWFsIGxvZ2ljYWwgYmxvY2sgc3RhcnQgYm9yZGVyIGluIGEgc2luZ2xlIHBsYWNlIGluIHRoZSBzdHlsZSBzaGVldC4ifSx7bmFtZToiLXdlYmtpdC1saW5lLWNsYW1wIixzeW50YXg6Im5vbmUgfCA8aW50ZWdlcj4iLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkUxNyIsIkZGNjgiLCJTNSIsIkM2IiwiTzE1Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLy13ZWJraXQtbGluZS1jbGFtcCJ9XSxkZXNjcmlwdGlvbjoiVGhlIC13ZWJraXQtbGluZS1jbGFtcCBDU1MgcHJvcGVydHkgYWxsb3dzIGxpbWl0aW5nIG9mIHRoZSBjb250ZW50cyBvZiBhIGJsb2NrIGNvbnRhaW5lciB0byB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBsaW5lcy4ifSx7bmFtZToiLXdlYmtpdC1tYXNrIixzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6IlsgPG1hc2stcmVmZXJlbmNlPiB8fCA8cG9zaXRpb24+IFsgLyA8Ymctc2l6ZT4gXT8gfHwgPHJlcGVhdC1zdHlsZT4gfHwgWyA8Ym94PiB8IGJvcmRlciB8IHBhZGRpbmcgfCBjb250ZW50IHwgdGV4dCBdIHx8IFsgPGJveD4gfCBib3JkZXIgfCBwYWRkaW5nIHwgY29udGVudCBdIF0jIixyZWxldmFuY2U6MCxkZXNjcmlwdGlvbjoiVGhlIG1hc2sgQ1NTIHByb3BlcnR5IGFsdGVycyB0aGUgdmlzaWJpbGl0eSBvZiBhbiBlbGVtZW50IGJ5IGVpdGhlciBwYXJ0aWFsbHkgb3IgZnVsbHkgaGlkaW5nIGl0LiBUaGlzIGlzIGFjY29tcGxpc2hlZCBieSBlaXRoZXIgbWFza2luZyBvciBjbGlwcGluZyB0aGUgaW1hZ2UgYXQgc3BlY2lmaWMgcG9pbnRzLiJ9LHtuYW1lOiItd2Via2l0LW1hc2stYXR0YWNobWVudCIsc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiI8YXR0YWNobWVudD4jIixyZWxldmFuY2U6MCxicm93c2VyczpbIlM0IiwiQzEiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvLXdlYmtpdC1tYXNrLWF0dGFjaG1lbnQifV0sZGVzY3JpcHRpb246IklmIGEgLXdlYmtpdC1tYXNrLWltYWdlIGlzIHNwZWNpZmllZCwgLXdlYmtpdC1tYXNrLWF0dGFjaG1lbnQgZGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBtYXNrIGltYWdlJ3MgcG9zaXRpb24gaXMgZml4ZWQgd2l0aGluIHRoZSB2aWV3cG9ydCwgb3Igc2Nyb2xscyBhbG9uZyB3aXRoIGl0cyBjb250YWluaW5nIGJsb2NrLiJ9LHtuYW1lOiItd2Via2l0LW1hc2stY29tcG9zaXRlIixzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6Ijxjb21wb3NpdGUtc3R5bGU+IyIscmVsZXZhbmNlOjAsYnJvd3NlcnM6WyJFMTgiLCJGRjUzIiwiUzMuMSIsIkMxIiwiTzE1Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLy13ZWJraXQtbWFzay1jb21wb3NpdGUifV0sZGVzY3JpcHRpb246IlRoZSAtd2Via2l0LW1hc2stY29tcG9zaXRlIHByb3BlcnR5IHNwZWNpZmllcyB0aGUgbWFubmVyIGluIHdoaWNoIG11bHRpcGxlIG1hc2sgaW1hZ2VzIGFwcGxpZWQgdG8gdGhlIHNhbWUgZWxlbWVudCBhcmUgY29tcG9zaXRlZCB3aXRoIG9uZSBhbm90aGVyLiBNYXNrIGltYWdlcyBhcmUgY29tcG9zaXRlZCBpbiB0aGUgb3Bwb3NpdGUgb3JkZXIgdGhhdCB0aGV5IGFyZSBkZWNsYXJlZCB3aXRoIHRoZSAtd2Via2l0LW1hc2staW1hZ2UgcHJvcGVydHkuIn0se25hbWU6Ii13ZWJraXQtbWFzay1wb3NpdGlvbiIsc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiI8cG9zaXRpb24+IyIscmVsZXZhbmNlOjAsZGVzY3JpcHRpb246IlRoZSBtYXNrLXBvc2l0aW9uIENTUyBwcm9wZXJ0eSBzZXRzIHRoZSBpbml0aWFsIHBvc2l0aW9uLCByZWxhdGl2ZSB0byB0aGUgbWFzayBwb3NpdGlvbiBsYXllciBkZWZpbmVkIGJ5IG1hc2stb3JpZ2luLCBmb3IgZWFjaCBkZWZpbmVkIG1hc2sgaW1hZ2UuIn0se25hbWU6Ii13ZWJraXQtbWFzay1wb3NpdGlvbi14IixzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6IlsgPGxlbmd0aC1wZXJjZW50YWdlPiB8IGxlZnQgfCBjZW50ZXIgfCByaWdodCBdIyIscmVsZXZhbmNlOjAsYnJvd3NlcnM6WyJFMTgiLCJGRjQ5IiwiUzMuMSIsIkMxIiwiTzE1Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLy13ZWJraXQtbWFzay1wb3NpdGlvbi14In1dLGRlc2NyaXB0aW9uOiJUaGUgLXdlYmtpdC1tYXNrLXBvc2l0aW9uLXggQ1NTIHByb3BlcnR5IHNldHMgdGhlIGluaXRpYWwgaG9yaXpvbnRhbCBwb3NpdGlvbiBvZiBhIG1hc2sgaW1hZ2UuIn0se25hbWU6Ii13ZWJraXQtbWFzay1wb3NpdGlvbi15IixzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6IlsgPGxlbmd0aC1wZXJjZW50YWdlPiB8IHRvcCB8IGNlbnRlciB8IGJvdHRvbSBdIyIscmVsZXZhbmNlOjAsYnJvd3NlcnM6WyJFMTgiLCJGRjQ5IiwiUzMuMSIsIkMxIiwiTzE1Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLy13ZWJraXQtbWFzay1wb3NpdGlvbi15In1dLGRlc2NyaXB0aW9uOiJUaGUgLXdlYmtpdC1tYXNrLXBvc2l0aW9uLXkgQ1NTIHByb3BlcnR5IHNldHMgdGhlIGluaXRpYWwgdmVydGljYWwgcG9zaXRpb24gb2YgYSBtYXNrIGltYWdlLiJ9LHtuYW1lOiItd2Via2l0LW1hc2stcmVwZWF0LXgiLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoicmVwZWF0IHwgbm8tcmVwZWF0IHwgc3BhY2UgfCByb3VuZCIscmVsZXZhbmNlOjAsYnJvd3NlcnM6WyJFMTgiLCJTNSIsIkMzIiwiTzE1Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLy13ZWJraXQtbWFzay1yZXBlYXQteCJ9XSxkZXNjcmlwdGlvbjoiVGhlIC13ZWJraXQtbWFzay1yZXBlYXQteCBwcm9wZXJ0eSBzcGVjaWZpZXMgd2hldGhlciBhbmQgaG93IGEgbWFzayBpbWFnZSBpcyByZXBlYXRlZCAodGlsZWQpIGhvcml6b250YWxseS4ifSx7bmFtZToiLXdlYmtpdC1tYXNrLXJlcGVhdC15IixzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6InJlcGVhdCB8IG5vLXJlcGVhdCB8IHNwYWNlIHwgcm91bmQiLHJlbGV2YW5jZTowLGJyb3dzZXJzOlsiRTE4IiwiUzUiLCJDMyIsIk8xNSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy8td2Via2l0LW1hc2stcmVwZWF0LXkifV0sZGVzY3JpcHRpb246IlRoZSAtd2Via2l0LW1hc2stcmVwZWF0LXkgcHJvcGVydHkgc3BlY2lmaWVzIHdoZXRoZXIgYW5kIGhvdyBhIG1hc2sgaW1hZ2UgaXMgcmVwZWF0ZWQgKHRpbGVkKSB2ZXJ0aWNhbGx5LiJ9LHtuYW1lOiJhY2NlbnQtY29sb3IiLHN5bnRheDoiYXV0byB8IDxjb2xvcj4iLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkU5MyIsIkZGOTIiLCJTMTUuNCIsIkM5MyIsIk83OSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9hY2NlbnQtY29sb3IifV0sZGVzY3JpcHRpb246IlNldHMgdGhlIGNvbG9yIG9mIHRoZSBlbGVtZW50cyBhY2NlbnQifSx7bmFtZToiYWxpZ24tdHJhY2tzIixzdGF0dXM6ImV4cGVyaW1lbnRhbCIsc3ludGF4OiJbIG5vcm1hbCB8IDxiYXNlbGluZS1wb3NpdGlvbj4gfCA8Y29udGVudC1kaXN0cmlidXRpb24+IHwgPG92ZXJmbG93LXBvc2l0aW9uPj8gPGNvbnRlbnQtcG9zaXRpb24+IF0jIixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJGRjc3Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2FsaWduLXRyYWNrcyJ9XSxkZXNjcmlwdGlvbjoiVGhlIGFsaWduLXRyYWNrcyBDU1MgcHJvcGVydHkgc2V0cyB0aGUgYWxpZ25tZW50IGluIHRoZSBtYXNvbnJ5IGF4aXMgZm9yIGdyaWQgY29udGFpbmVycyB0aGF0IGhhdmUgbWFzb25yeSBpbiB0aGVpciBibG9jayBheGlzLiJ9LHtuYW1lOiJhbmltYXRpb24tdGltZWxpbmUiLHN5bnRheDoiPHNpbmdsZS1hbmltYXRpb24tdGltZWxpbmU+IyIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRkY5NyJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9hbmltYXRpb24tdGltZWxpbmUifV0sZGVzY3JpcHRpb246IlNwZWNpZmllcyB0aGUgbmFtZXMgb2Ygb25lIG9yIG1vcmUgQHNjcm9sbC10aW1lbGluZSBhdC1ydWxlcyB0byBkZXNjcmliZSB0aGUgZWxlbWVudCdzIHNjcm9sbCBhbmltYXRpb25zLiJ9LHtuYW1lOiJhcHBlYXJhbmNlIixzdGF0dXM6ImV4cGVyaW1lbnRhbCIsc3ludGF4OiJub25lIHwgYXV0byB8IHRleHRmaWVsZCB8IG1lbnVsaXN0LWJ1dHRvbiB8IDxjb21wYXQtYXV0bz4iLHJlbGV2YW5jZTo2Mixicm93c2VyczpbIkU4NCIsIkZGODAiLCJTMTUuNCIsIkM4NCIsIk83MCJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9hcHBlYXJhbmNlIn1dLGRlc2NyaXB0aW9uOiJDaGFuZ2VzIHRoZSBhcHBlYXJhbmNlIG9mIGJ1dHRvbnMgYW5kIG90aGVyIGNvbnRyb2xzIHRvIHJlc2VtYmxlIG5hdGl2ZSBjb250cm9scy4ifSx7bmFtZToiYXNwZWN0LXJhdGlvIixzdGF0dXM6ImV4cGVyaW1lbnRhbCIsc3ludGF4OiJhdXRvIHwgPHJhdGlvPiIscmVsZXZhbmNlOjUyLGJyb3dzZXJzOlsiRTg4IiwiRkY4OSIsIlMxNSIsIkM4OCIsIk83NCJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9hc3BlY3QtcmF0aW8ifV0sZGVzY3JpcHRpb246IlRoZSBhc3BlY3QtcmF0aW8gICBDU1MgcHJvcGVydHkgc2V0cyBhIHByZWZlcnJlZCBhc3BlY3QgcmF0aW8gZm9yIHRoZSBib3gsIHdoaWNoIHdpbGwgYmUgdXNlZCBpbiB0aGUgY2FsY3VsYXRpb24gb2YgYXV0byBzaXplcyBhbmQgc29tZSBvdGhlciBsYXlvdXQgZnVuY3Rpb25zLiJ9LHtuYW1lOiJhemltdXRoIixzdGF0dXM6Im9ic29sZXRlIixzeW50YXg6IjxhbmdsZT4gfCBbIFsgbGVmdC1zaWRlIHwgZmFyLWxlZnQgfCBsZWZ0IHwgY2VudGVyLWxlZnQgfCBjZW50ZXIgfCBjZW50ZXItcmlnaHQgfCByaWdodCB8IGZhci1yaWdodCB8IHJpZ2h0LXNpZGUgXSB8fCBiZWhpbmQgXSB8IGxlZnR3YXJkcyB8IHJpZ2h0d2FyZHMiLHJlbGV2YW5jZTowLGRlc2NyaXB0aW9uOiJJbiBjb21iaW5hdGlvbiB3aXRoIGVsZXZhdGlvbiwgdGhlIGF6aW11dGggQ1NTIHByb3BlcnR5IGVuYWJsZXMgZGlmZmVyZW50IGF1ZGlvIHNvdXJjZXMgdG8gYmUgcG9zaXRpb25lZCBzcGF0aWFsbHkgZm9yIGF1cmFsIHByZXNlbnRhdGlvbi4gVGhpcyBpcyBpbXBvcnRhbnQgaW4gdGhhdCBpdCBwcm92aWRlcyBhIG5hdHVyYWwgd2F5IHRvIHRlbGwgc2V2ZXJhbCB2b2ljZXMgYXBhcnQsIGFzIGVhY2ggY2FuIGJlIHBvc2l0aW9uZWQgdG8gb3JpZ2luYXRlIGF0IGEgZGlmZmVyZW50IGxvY2F0aW9uIG9uIHRoZSBzb3VuZCBzdGFnZS4gU3RlcmVvIG91dHB1dCBwcm9kdWNlIGEgbGF0ZXJhbCBzb3VuZCBzdGFnZSwgd2hpbGUgYmluYXVyYWwgaGVhZHBob25lcyBhbmQgbXVsdGktc3BlYWtlciBzZXR1cHMgYWxsb3cgZm9yIGEgZnVsbHkgdGhyZWUtZGltZW5zaW9uYWwgc3RhZ2UuIn0se25hbWU6ImJhY2tkcm9wLWZpbHRlciIsc3ludGF4OiJub25lIHwgPGZpbHRlci1mdW5jdGlvbi1saXN0PiIscmVsZXZhbmNlOjUzLGJyb3dzZXJzOlsiRTE3IiwiRkY3MCIsIlM5IiwiQzc2IiwiTzYzIl0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JhY2tkcm9wLWZpbHRlciJ9XSxkZXNjcmlwdGlvbjoiVGhlIGJhY2tkcm9wLWZpbHRlciBDU1MgcHJvcGVydHkgbGV0cyB5b3UgYXBwbHkgZ3JhcGhpY2FsIGVmZmVjdHMgc3VjaCBhcyBibHVycmluZyBvciBjb2xvciBzaGlmdGluZyB0byB0aGUgYXJlYSBiZWhpbmQgYW4gZWxlbWVudC4gQmVjYXVzZSBpdCBhcHBsaWVzIHRvIGV2ZXJ5dGhpbmcgYmVoaW5kIHRoZSBlbGVtZW50LCB0byBzZWUgdGhlIGVmZmVjdCB5b3UgbXVzdCBtYWtlIHRoZSBlbGVtZW50IG9yIGl0cyBiYWNrZ3JvdW5kIGF0IGxlYXN0IHBhcnRpYWxseSB0cmFuc3BhcmVudC4ifSx7bmFtZToiYm9yZGVyLWJsb2NrIixzeW50YXg6IjwnYm9yZGVyLXRvcC13aWR0aCc+IHx8IDwnYm9yZGVyLXRvcC1zdHlsZSc+IHx8IDxjb2xvcj4iLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkU4NyIsIkZGNjYiLCJTMTQuMSIsIkM4NyIsIk83MyJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ib3JkZXItYmxvY2sifV0sZGVzY3JpcHRpb246IlRoZSBib3JkZXItYmxvY2sgQ1NTIHByb3BlcnR5IGlzIGEgc2hvcnRoYW5kIHByb3BlcnR5IGZvciBzZXR0aW5nIHRoZSBpbmRpdmlkdWFsIGxvZ2ljYWwgYmxvY2sgYm9yZGVyIHByb3BlcnR5IHZhbHVlcyBpbiBhIHNpbmdsZSBwbGFjZSBpbiB0aGUgc3R5bGUgc2hlZXQuIn0se25hbWU6ImJvcmRlci1ibG9jay1jb2xvciIsc3ludGF4OiI8J2JvcmRlci10b3AtY29sb3InPnsxLDJ9IixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFODciLCJGRjY2IiwiUzE0LjEiLCJDODciLCJPNzMiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYm9yZGVyLWJsb2NrLWNvbG9yIn1dLGRlc2NyaXB0aW9uOiJUaGUgYm9yZGVyLWJsb2NrLWNvbG9yIENTUyBwcm9wZXJ0eSBkZWZpbmVzIHRoZSBjb2xvciBvZiB0aGUgbG9naWNhbCBibG9jayBib3JkZXJzIG9mIGFuIGVsZW1lbnQsIHdoaWNoIG1hcHMgdG8gYSBwaHlzaWNhbCBib3JkZXIgY29sb3IgZGVwZW5kaW5nIG9uIHRoZSBlbGVtZW50J3Mgd3JpdGluZyBtb2RlLCBkaXJlY3Rpb25hbGl0eSwgYW5kIHRleHQgb3JpZW50YXRpb24uIEl0IGNvcnJlc3BvbmRzIHRvIHRoZSBib3JkZXItdG9wLWNvbG9yIGFuZCBib3JkZXItYm90dG9tLWNvbG9yLCBvciBib3JkZXItcmlnaHQtY29sb3IgYW5kIGJvcmRlci1sZWZ0LWNvbG9yIHByb3BlcnR5IGRlcGVuZGluZyBvbiB0aGUgdmFsdWVzIGRlZmluZWQgZm9yIHdyaXRpbmctbW9kZSwgZGlyZWN0aW9uLCBhbmQgdGV4dC1vcmllbnRhdGlvbi4ifSx7bmFtZToiYm9yZGVyLWJsb2NrLXN0eWxlIixzeW50YXg6IjwnYm9yZGVyLXRvcC1zdHlsZSc+IixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFODciLCJGRjY2IiwiUzE0LjEiLCJDODciLCJPNzMiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYm9yZGVyLWJsb2NrLXN0eWxlIn1dLGRlc2NyaXB0aW9uOiJUaGUgYm9yZGVyLWJsb2NrLXN0eWxlIENTUyBwcm9wZXJ0eSBkZWZpbmVzIHRoZSBzdHlsZSBvZiB0aGUgbG9naWNhbCBibG9jayBib3JkZXJzIG9mIGFuIGVsZW1lbnQsIHdoaWNoIG1hcHMgdG8gYSBwaHlzaWNhbCBib3JkZXIgc3R5bGUgZGVwZW5kaW5nIG9uIHRoZSBlbGVtZW50J3Mgd3JpdGluZyBtb2RlLCBkaXJlY3Rpb25hbGl0eSwgYW5kIHRleHQgb3JpZW50YXRpb24uIEl0IGNvcnJlc3BvbmRzIHRvIHRoZSBib3JkZXItdG9wLXN0eWxlIGFuZCBib3JkZXItYm90dG9tLXN0eWxlLCBvciBib3JkZXItbGVmdC1zdHlsZSBhbmQgYm9yZGVyLXJpZ2h0LXN0eWxlIHByb3BlcnRpZXMgZGVwZW5kaW5nIG9uIHRoZSB2YWx1ZXMgZGVmaW5lZCBmb3Igd3JpdGluZy1tb2RlLCBkaXJlY3Rpb24sIGFuZCB0ZXh0LW9yaWVudGF0aW9uLiJ9LHtuYW1lOiJib3JkZXItYmxvY2std2lkdGgiLHN5bnRheDoiPCdib3JkZXItdG9wLXdpZHRoJz4iLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkU4NyIsIkZGNjYiLCJTMTQuMSIsIkM4NyIsIk83MyJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ib3JkZXItYmxvY2std2lkdGgifV0sZGVzY3JpcHRpb246IlRoZSBib3JkZXItYmxvY2std2lkdGggQ1NTIHByb3BlcnR5IGRlZmluZXMgdGhlIHdpZHRoIG9mIHRoZSBsb2dpY2FsIGJsb2NrIGJvcmRlcnMgb2YgYW4gZWxlbWVudCwgd2hpY2ggbWFwcyB0byBhIHBoeXNpY2FsIGJvcmRlciB3aWR0aCBkZXBlbmRpbmcgb24gdGhlIGVsZW1lbnQncyB3cml0aW5nIG1vZGUsIGRpcmVjdGlvbmFsaXR5LCBhbmQgdGV4dCBvcmllbnRhdGlvbi4gSXQgY29ycmVzcG9uZHMgdG8gdGhlIGJvcmRlci10b3Atd2lkdGggYW5kIGJvcmRlci1ib3R0b20td2lkdGgsIG9yIGJvcmRlci1sZWZ0LXdpZHRoLCBhbmQgYm9yZGVyLXJpZ2h0LXdpZHRoIHByb3BlcnR5IGRlcGVuZGluZyBvbiB0aGUgdmFsdWVzIGRlZmluZWQgZm9yIHdyaXRpbmctbW9kZSwgZGlyZWN0aW9uLCBhbmQgdGV4dC1vcmllbnRhdGlvbi4ifSx7bmFtZToiYm9yZGVyLWVuZC1lbmQtcmFkaXVzIixzeW50YXg6IjxsZW5ndGgtcGVyY2VudGFnZT57MSwyfSIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTg5IiwiRkY2NiIsIlMxNSIsIkM4OSIsIk83NSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ib3JkZXItZW5kLWVuZC1yYWRpdXMifV0sZGVzY3JpcHRpb246IlRoZSBib3JkZXItZW5kLWVuZC1yYWRpdXMgQ1NTIHByb3BlcnR5IGRlZmluZXMgYSBsb2dpY2FsIGJvcmRlciByYWRpdXMgb24gYW4gZWxlbWVudCwgd2hpY2ggbWFwcyB0byBhIHBoeXNpY2FsIGJvcmRlciByYWRpdXMgdGhhdCBkZXBlbmRzIG9uIG9uIHRoZSBlbGVtZW50J3Mgd3JpdGluZy1tb2RlLCBkaXJlY3Rpb24sIGFuZCB0ZXh0LW9yaWVudGF0aW9uLiJ9LHtuYW1lOiJib3JkZXItZW5kLXN0YXJ0LXJhZGl1cyIsc3ludGF4OiI8bGVuZ3RoLXBlcmNlbnRhZ2U+ezEsMn0iLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkU4OSIsIkZGNjYiLCJTMTUiLCJDODkiLCJPNzUiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYm9yZGVyLWVuZC1zdGFydC1yYWRpdXMifV0sZGVzY3JpcHRpb246IlRoZSBib3JkZXItZW5kLXN0YXJ0LXJhZGl1cyBDU1MgcHJvcGVydHkgZGVmaW5lcyBhIGxvZ2ljYWwgYm9yZGVyIHJhZGl1cyBvbiBhbiBlbGVtZW50LCB3aGljaCBtYXBzIHRvIGEgcGh5c2ljYWwgYm9yZGVyIHJhZGl1cyBkZXBlbmRpbmcgb24gdGhlIGVsZW1lbnQncyB3cml0aW5nLW1vZGUsIGRpcmVjdGlvbiwgYW5kIHRleHQtb3JpZW50YXRpb24uIn0se25hbWU6ImJvcmRlci1pbmxpbmUiLHN5bnRheDoiPCdib3JkZXItdG9wLXdpZHRoJz4gfHwgPCdib3JkZXItdG9wLXN0eWxlJz4gfHwgPGNvbG9yPiIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTg3IiwiRkY2NiIsIlMxNC4xIiwiQzg3IiwiTzczIl0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JvcmRlci1pbmxpbmUifV0sZGVzY3JpcHRpb246IlRoZSBib3JkZXItaW5saW5lIENTUyBwcm9wZXJ0eSBpcyBhIHNob3J0aGFuZCBwcm9wZXJ0eSBmb3Igc2V0dGluZyB0aGUgaW5kaXZpZHVhbCBsb2dpY2FsIGlubGluZSBib3JkZXIgcHJvcGVydHkgdmFsdWVzIGluIGEgc2luZ2xlIHBsYWNlIGluIHRoZSBzdHlsZSBzaGVldC4ifSx7bmFtZToiYm9yZGVyLWlubGluZS1jb2xvciIsc3ludGF4OiI8J2JvcmRlci10b3AtY29sb3InPnsxLDJ9IixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFODciLCJGRjY2IiwiUzE0LjEiLCJDODciLCJPNzMiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYm9yZGVyLWlubGluZS1jb2xvciJ9XSxkZXNjcmlwdGlvbjoiVGhlIGJvcmRlci1pbmxpbmUtY29sb3IgQ1NTIHByb3BlcnR5IGRlZmluZXMgdGhlIGNvbG9yIG9mIHRoZSBsb2dpY2FsIGlubGluZSBib3JkZXJzIG9mIGFuIGVsZW1lbnQsIHdoaWNoIG1hcHMgdG8gYSBwaHlzaWNhbCBib3JkZXIgY29sb3IgZGVwZW5kaW5nIG9uIHRoZSBlbGVtZW50J3Mgd3JpdGluZyBtb2RlLCBkaXJlY3Rpb25hbGl0eSwgYW5kIHRleHQgb3JpZW50YXRpb24uIEl0IGNvcnJlc3BvbmRzIHRvIHRoZSBib3JkZXItdG9wLWNvbG9yIGFuZCBib3JkZXItYm90dG9tLWNvbG9yLCBvciBib3JkZXItcmlnaHQtY29sb3IgYW5kIGJvcmRlci1sZWZ0LWNvbG9yIHByb3BlcnR5IGRlcGVuZGluZyBvbiB0aGUgdmFsdWVzIGRlZmluZWQgZm9yIHdyaXRpbmctbW9kZSwgZGlyZWN0aW9uLCBhbmQgdGV4dC1vcmllbnRhdGlvbi4ifSx7bmFtZToiYm9yZGVyLWlubGluZS1zdHlsZSIsc3ludGF4OiI8J2JvcmRlci10b3Atc3R5bGUnPiIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTg3IiwiRkY2NiIsIlMxNC4xIiwiQzg3IiwiTzczIl0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JvcmRlci1pbmxpbmUtc3R5bGUifV0sZGVzY3JpcHRpb246IlRoZSBib3JkZXItaW5saW5lLXN0eWxlIENTUyBwcm9wZXJ0eSBkZWZpbmVzIHRoZSBzdHlsZSBvZiB0aGUgbG9naWNhbCBpbmxpbmUgYm9yZGVycyBvZiBhbiBlbGVtZW50LCB3aGljaCBtYXBzIHRvIGEgcGh5c2ljYWwgYm9yZGVyIHN0eWxlIGRlcGVuZGluZyBvbiB0aGUgZWxlbWVudCdzIHdyaXRpbmcgbW9kZSwgZGlyZWN0aW9uYWxpdHksIGFuZCB0ZXh0IG9yaWVudGF0aW9uLiBJdCBjb3JyZXNwb25kcyB0byB0aGUgYm9yZGVyLXRvcC1zdHlsZSBhbmQgYm9yZGVyLWJvdHRvbS1zdHlsZSwgb3IgYm9yZGVyLWxlZnQtc3R5bGUgYW5kIGJvcmRlci1yaWdodC1zdHlsZSBwcm9wZXJ0aWVzIGRlcGVuZGluZyBvbiB0aGUgdmFsdWVzIGRlZmluZWQgZm9yIHdyaXRpbmctbW9kZSwgZGlyZWN0aW9uLCBhbmQgdGV4dC1vcmllbnRhdGlvbi4ifSx7bmFtZToiYm9yZGVyLWlubGluZS13aWR0aCIsc3ludGF4OiI8J2JvcmRlci10b3Atd2lkdGgnPiIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTg3IiwiRkY2NiIsIlMxNC4xIiwiQzg3IiwiTzczIl0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JvcmRlci1pbmxpbmUtd2lkdGgifV0sZGVzY3JpcHRpb246IlRoZSBib3JkZXItaW5saW5lLXdpZHRoIENTUyBwcm9wZXJ0eSBkZWZpbmVzIHRoZSB3aWR0aCBvZiB0aGUgbG9naWNhbCBpbmxpbmUgYm9yZGVycyBvZiBhbiBlbGVtZW50LCB3aGljaCBtYXBzIHRvIGEgcGh5c2ljYWwgYm9yZGVyIHdpZHRoIGRlcGVuZGluZyBvbiB0aGUgZWxlbWVudCdzIHdyaXRpbmcgbW9kZSwgZGlyZWN0aW9uYWxpdHksIGFuZCB0ZXh0IG9yaWVudGF0aW9uLiBJdCBjb3JyZXNwb25kcyB0byB0aGUgYm9yZGVyLXRvcC13aWR0aCBhbmQgYm9yZGVyLWJvdHRvbS13aWR0aCwgb3IgYm9yZGVyLWxlZnQtd2lkdGgsIGFuZCBib3JkZXItcmlnaHQtd2lkdGggcHJvcGVydHkgZGVwZW5kaW5nIG9uIHRoZSB2YWx1ZXMgZGVmaW5lZCBmb3Igd3JpdGluZy1tb2RlLCBkaXJlY3Rpb24sIGFuZCB0ZXh0LW9yaWVudGF0aW9uLiJ9LHtuYW1lOiJib3JkZXItc3RhcnQtZW5kLXJhZGl1cyIsc3ludGF4OiI8bGVuZ3RoLXBlcmNlbnRhZ2U+ezEsMn0iLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkU4OSIsIkZGNjYiLCJTMTUiLCJDODkiLCJPNzUiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYm9yZGVyLXN0YXJ0LWVuZC1yYWRpdXMifV0sZGVzY3JpcHRpb246IlRoZSBib3JkZXItc3RhcnQtZW5kLXJhZGl1cyBDU1MgcHJvcGVydHkgZGVmaW5lcyBhIGxvZ2ljYWwgYm9yZGVyIHJhZGl1cyBvbiBhbiBlbGVtZW50LCB3aGljaCBtYXBzIHRvIGEgcGh5c2ljYWwgYm9yZGVyIHJhZGl1cyBkZXBlbmRpbmcgb24gdGhlIGVsZW1lbnQncyB3cml0aW5nLW1vZGUsIGRpcmVjdGlvbiwgYW5kIHRleHQtb3JpZW50YXRpb24uIn0se25hbWU6ImJvcmRlci1zdGFydC1zdGFydC1yYWRpdXMiLHN5bnRheDoiPGxlbmd0aC1wZXJjZW50YWdlPnsxLDJ9IixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFODkiLCJGRjY2IiwiUzE1IiwiQzg5IiwiTzc1Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JvcmRlci1zdGFydC1zdGFydC1yYWRpdXMifV0sZGVzY3JpcHRpb246IlRoZSBib3JkZXItc3RhcnQtc3RhcnQtcmFkaXVzIENTUyBwcm9wZXJ0eSBkZWZpbmVzIGEgbG9naWNhbCBib3JkZXIgcmFkaXVzIG9uIGFuIGVsZW1lbnQsIHdoaWNoIG1hcHMgdG8gYSBwaHlzaWNhbCBib3JkZXIgcmFkaXVzIHRoYXQgZGVwZW5kcyBvbiB0aGUgZWxlbWVudCdzIHdyaXRpbmctbW9kZSwgZGlyZWN0aW9uLCBhbmQgdGV4dC1vcmllbnRhdGlvbi4ifSx7bmFtZToiYm94LWFsaWduIixzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6InN0YXJ0IHwgY2VudGVyIHwgZW5kIHwgYmFzZWxpbmUgfCBzdHJldGNoIixyZWxldmFuY2U6MCxicm93c2VyczpbIkUxMiIsIkZGMSIsIlMzIiwiQzEiLCJPMTUiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYm94LWFsaWduIn1dLGRlc2NyaXB0aW9uOiJUaGUgYm94LWFsaWduIENTUyBwcm9wZXJ0eSBzcGVjaWZpZXMgaG93IGFuIGVsZW1lbnQgYWxpZ25zIGl0cyBjb250ZW50cyBhY3Jvc3MgaXRzIGxheW91dCBpbiBhIHBlcnBlbmRpY3VsYXIgZGlyZWN0aW9uLiBUaGUgZWZmZWN0IG9mIHRoZSBwcm9wZXJ0eSBpcyBvbmx5IHZpc2libGUgaWYgdGhlcmUgaXMgZXh0cmEgc3BhY2UgaW4gdGhlIGJveC4ifSx7bmFtZToiYm94LWRpcmVjdGlvbiIsc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiJub3JtYWwgfCByZXZlcnNlIHwgaW5oZXJpdCIscmVsZXZhbmNlOjAsYnJvd3NlcnM6WyJFMTIiLCJGRjEiLCJTMyIsIkMxIiwiTzE1Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JveC1kaXJlY3Rpb24ifV0sZGVzY3JpcHRpb246IlRoZSBib3gtZGlyZWN0aW9uIENTUyBwcm9wZXJ0eSBzcGVjaWZpZXMgd2hldGhlciBhIGJveCBsYXlzIG91dCBpdHMgY29udGVudHMgbm9ybWFsbHkgKGZyb20gdGhlIHRvcCBvciBsZWZ0IGVkZ2UpLCBvciBpbiByZXZlcnNlIChmcm9tIHRoZSBib3R0b20gb3IgcmlnaHQgZWRnZSkuIn0se25hbWU6ImJveC1mbGV4IixzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6IjxudW1iZXI+IixyZWxldmFuY2U6MCxicm93c2VyczpbIkUxMiIsIkZGMSIsIlMzIiwiQzEiLCJPMTUiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYm94LWZsZXgifV0sZGVzY3JpcHRpb246IlRoZSAtbW96LWJveC1mbGV4IGFuZCAtd2Via2l0LWJveC1mbGV4IENTUyBwcm9wZXJ0aWVzIHNwZWNpZnkgaG93IGEgLW1vei1ib3ggb3IgLXdlYmtpdC1ib3ggZ3Jvd3MgdG8gZmlsbCB0aGUgYm94IHRoYXQgY29udGFpbnMgaXQsIGluIHRoZSBkaXJlY3Rpb24gb2YgdGhlIGNvbnRhaW5pbmcgYm94J3MgbGF5b3V0LiJ9LHtuYW1lOiJib3gtZmxleC1ncm91cCIsc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiI8aW50ZWdlcj4iLHJlbGV2YW5jZTowLGJyb3dzZXJzOlsiUzMiLCJDMSIsIk8xNSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ib3gtZmxleC1ncm91cCJ9XSxkZXNjcmlwdGlvbjoiVGhlIGJveC1mbGV4LWdyb3VwIENTUyBwcm9wZXJ0eSBhc3NpZ25zIHRoZSBmbGV4Ym94J3MgY2hpbGQgZWxlbWVudHMgdG8gYSBmbGV4IGdyb3VwLiJ9LHtuYW1lOiJib3gtbGluZXMiLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoic2luZ2xlIHwgbXVsdGlwbGUiLHJlbGV2YW5jZTowLGJyb3dzZXJzOlsiUzMiLCJDMSIsIk8xNSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ib3gtbGluZXMifV0sZGVzY3JpcHRpb246IlRoZSBib3gtbGluZXMgQ1NTIHByb3BlcnR5IGRldGVybWluZXMgd2hldGhlciB0aGUgYm94IG1heSBoYXZlIGEgc2luZ2xlIG9yIG11bHRpcGxlIGxpbmVzIChyb3dzIGZvciBob3Jpem9udGFsbHkgb3JpZW50ZWQgYm94ZXMsIGNvbHVtbnMgZm9yIHZlcnRpY2FsbHkgb3JpZW50ZWQgYm94ZXMpLiJ9LHtuYW1lOiJib3gtb3JkaW5hbC1ncm91cCIsc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiI8aW50ZWdlcj4iLHJlbGV2YW5jZTowLGJyb3dzZXJzOlsiRTEyIiwiRkYxIiwiUzMiLCJDMSIsIk8xNSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ib3gtb3JkaW5hbC1ncm91cCJ9XSxkZXNjcmlwdGlvbjoiVGhlIGJveC1vcmRpbmFsLWdyb3VwIENTUyBwcm9wZXJ0eSBhc3NpZ25zIHRoZSBmbGV4Ym94J3MgY2hpbGQgZWxlbWVudHMgdG8gYW4gb3JkaW5hbCBncm91cC4ifSx7bmFtZToiYm94LW9yaWVudCIsc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiJob3Jpem9udGFsIHwgdmVydGljYWwgfCBpbmxpbmUtYXhpcyB8IGJsb2NrLWF4aXMgfCBpbmhlcml0IixyZWxldmFuY2U6MCxicm93c2VyczpbIkUxMiIsIkZGMSIsIlMzIiwiQzEiLCJPMTUiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYm94LW9yaWVudCJ9XSxkZXNjcmlwdGlvbjoiVGhlIGJveC1vcmllbnQgQ1NTIHByb3BlcnR5IHNwZWNpZmllcyB3aGV0aGVyIGFuIGVsZW1lbnQgbGF5cyBvdXQgaXRzIGNvbnRlbnRzIGhvcml6b250YWxseSBvciB2ZXJ0aWNhbGx5LiJ9LHtuYW1lOiJib3gtcGFjayIsc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiJzdGFydCB8IGNlbnRlciB8IGVuZCB8IGp1c3RpZnkiLHJlbGV2YW5jZTowLGJyb3dzZXJzOlsiRTEyIiwiRkYxIiwiUzMiLCJDMSIsIk8xNSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ib3gtcGFjayJ9XSxkZXNjcmlwdGlvbjoiVGhlIC1tb3otYm94LXBhY2sgYW5kIC13ZWJraXQtYm94LXBhY2sgQ1NTIHByb3BlcnRpZXMgc3BlY2lmeSBob3cgYSAtbW96LWJveCBvciAtd2Via2l0LWJveCBwYWNrcyBpdHMgY29udGVudHMgaW4gdGhlIGRpcmVjdGlvbiBvZiBpdHMgbGF5b3V0LiBUaGUgZWZmZWN0IG9mIHRoaXMgaXMgb25seSB2aXNpYmxlIGlmIHRoZXJlIGlzIGV4dHJhIHNwYWNlIGluIHRoZSBib3guIn0se25hbWU6InByaW50LWNvbG9yLWFkanVzdCIsc3ludGF4OiJlY29ub215IHwgZXhhY3QiLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkU3OSIsIkZGOTciLCJTMTUuNCIsIkMxNyIsIk8xNSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9wcmludC1jb2xvci1hZGp1c3QifV0sZGVzY3JpcHRpb246IkRlZmluZXMgd2hhdCBvcHRpbWl6YXRpb24gdGhlIHVzZXIgYWdlbnQgaXMgYWxsb3dlZCB0byBkbyB3aGVuIGFkanVzdGluZyB0aGUgYXBwZWFyYW5jZSBmb3IgYW4gb3V0cHV0IGRldmljZS4ifSx7bmFtZToiY29sb3Itc2NoZW1lIixzeW50YXg6Im5vcm1hbCB8IFsgbGlnaHQgfCBkYXJrIHwgPGN1c3RvbS1pZGVudD4gXSsgJiYgb25seT8iLHJlbGV2YW5jZTo1Mixicm93c2VyczpbIkU4MSIsIkZGOTYiLCJTMTMiLCJDODEiLCJPNjgiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvY29sb3Itc2NoZW1lIn1dLGRlc2NyaXB0aW9uOiJUaGUgY29sb3Itc2NoZW1lIENTUyBwcm9wZXJ0eSBhbGxvd3MgYW4gZWxlbWVudCB0byBpbmRpY2F0ZSB3aGljaCBjb2xvciBzY2hlbWVzIGl0IGNhbiBjb21mb3J0YWJseSBiZSByZW5kZXJlZCBpbi4ifSx7bmFtZToiY29udGVudC12aXNpYmlsaXR5IixzeW50YXg6InZpc2libGUgfCBhdXRvIHwgaGlkZGVuIixyZWxldmFuY2U6NTEsYnJvd3NlcnM6WyJFODUiLCJTMTUuNCIsIkM4NSIsIk83MSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9jb250ZW50LXZpc2liaWxpdHkifV0sZGVzY3JpcHRpb246IkNvbnRyb2xzIHdoZXRoZXIgb3Igbm90IGFuIGVsZW1lbnQgcmVuZGVycyBpdHMgY29udGVudHMgYXQgYWxsLCBhbG9uZyB3aXRoIGZvcmNpbmcgYSBzdHJvbmcgc2V0IG9mIGNvbnRhaW5tZW50cywgYWxsb3dpbmcgdXNlciBhZ2VudHMgdG8gcG90ZW50aWFsbHkgb21pdCBsYXJnZSBzd2F0aGVzIG9mIGxheW91dCBhbmQgcmVuZGVyaW5nIHdvcmsgdW50aWwgaXQgYmVjb21lcyBuZWVkZWQuIn0se25hbWU6ImNvdW50ZXItc2V0IixzeW50YXg6IlsgPGNvdW50ZXItbmFtZT4gPGludGVnZXI+PyBdKyB8IG5vbmUiLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkU4NSIsIkZGNjgiLCJDODUiLCJPNzEiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvY291bnRlci1zZXQifV0sZGVzY3JpcHRpb246IlRoZSBjb3VudGVyLXNldCBDU1MgcHJvcGVydHkgc2V0cyBhIENTUyBjb3VudGVyIHRvIGEgZ2l2ZW4gdmFsdWUuIEl0IG1hbmlwdWxhdGVzIHRoZSB2YWx1ZSBvZiBleGlzdGluZyBjb3VudGVycywgYW5kIHdpbGwgb25seSBjcmVhdGUgbmV3IGNvdW50ZXJzIGlmIHRoZXJlIGlzbid0IGFscmVhZHkgYSBjb3VudGVyIG9mIHRoZSBnaXZlbiBuYW1lIG9uIHRoZSBlbGVtZW50LiJ9LHtuYW1lOiJmb250LW9wdGljYWwtc2l6aW5nIixzeW50YXg6ImF1dG8gfCBub25lIixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFMTciLCJGRjYyIiwiUzExIiwiQzc5IiwiTzY2Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2ZvbnQtb3B0aWNhbC1zaXppbmcifV0sZGVzY3JpcHRpb246IlRoZSBmb250LW9wdGljYWwtc2l6aW5nIENTUyBwcm9wZXJ0eSBhbGxvd3MgZGV2ZWxvcGVycyB0byBjb250cm9sIHdoZXRoZXIgYnJvd3NlcnMgcmVuZGVyIHRleHQgd2l0aCBzbGlnaHRseSBkaWZmZXJpbmcgdmlzdWFsIHJlcHJlc2VudGF0aW9ucyB0byBvcHRpbWl6ZSB2aWV3aW5nIGF0IGRpZmZlcmVudCBzaXplcywgb3Igbm90LiBUaGlzIG9ubHkgd29ya3MgZm9yIGZvbnRzIHRoYXQgaGF2ZSBhbiBvcHRpY2FsIHNpemUgdmFyaWF0aW9uIGF4aXMuIn0se25hbWU6ImZvbnQtdmFyaWF0aW9uLXNldHRpbmdzIixzeW50YXg6Im5vcm1hbCB8IFsgPHN0cmluZz4gPG51bWJlcj4gXSMiLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkUxNyIsIkZGNjIiLCJTMTEiLCJDNjIiLCJPNDkiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvZm9udC12YXJpYXRpb24tc2V0dGluZ3MifV0sZGVzY3JpcHRpb246IlRoZSBmb250LXZhcmlhdGlvbi1zZXR0aW5ncyBDU1MgcHJvcGVydHkgcHJvdmlkZXMgbG93LWxldmVsIGNvbnRyb2wgb3ZlciBPcGVuVHlwZSBvciBUcnVlVHlwZSBmb250IHZhcmlhdGlvbnMsIGJ5IHNwZWNpZnlpbmcgdGhlIGZvdXIgbGV0dGVyIGF4aXMgbmFtZXMgb2YgdGhlIGZlYXR1cmVzIHlvdSB3YW50IHRvIHZhcnksIGFsb25nIHdpdGggdGhlaXIgdmFyaWF0aW9uIHZhbHVlcy4ifSx7bmFtZToiZm9udC1zbW9vdGgiLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoiYXV0byB8IG5ldmVyIHwgYWx3YXlzIHwgPGFic29sdXRlLXNpemU+IHwgPGxlbmd0aD4iLHJlbGV2YW5jZTowLGJyb3dzZXJzOlsiRTc5IiwiRkYyNSIsIlM0IiwiQzUiLCJPMTUiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvZm9udC1zbW9vdGgifV0sZGVzY3JpcHRpb246IlRoZSBmb250LXNtb290aCBDU1MgcHJvcGVydHkgY29udHJvbHMgdGhlIGFwcGxpY2F0aW9uIG9mIGFudGktYWxpYXNpbmcgd2hlbiBmb250cyBhcmUgcmVuZGVyZWQuIn0se25hbWU6ImZvcmNlZC1jb2xvci1hZGp1c3QiLHN0YXR1czoiZXhwZXJpbWVudGFsIixzeW50YXg6ImF1dG8gfCBub25lIixyZWxldmFuY2U6NTIsYnJvd3NlcnM6WyJFNzkiLCJDODkiLCJJRTEwIl0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2ZvcmNlZC1jb2xvci1hZGp1c3QifV0sZGVzY3JpcHRpb246IkFsbG93cyBhdXRob3JzIHRvIG9wdCBjZXJ0YWluIGVsZW1lbnRzIG91dCBvZiBmb3JjZWQgY29sb3JzIG1vZGUuIFRoaXMgdGhlbiByZXN0b3JlcyB0aGUgY29udHJvbCBvZiB0aG9zZSB2YWx1ZXMgdG8gQ1NTIn0se25hbWU6ImdhcCIsc3ludGF4OiI8J3Jvdy1nYXAnPiA8J2NvbHVtbi1nYXAnPj8iLHJlbGV2YW5jZTo1NSxicm93c2VyczpbIkU4NCIsIkZGNjMiLCJTMTQuMSIsIkM4NCIsIk83MCJdLGRlc2NyaXB0aW9uOiJUaGUgZ2FwIENTUyBwcm9wZXJ0eSBpcyBhIHNob3J0aGFuZCBwcm9wZXJ0eSBmb3Igcm93LWdhcCBhbmQgY29sdW1uLWdhcCBzcGVjaWZ5aW5nIHRoZSBndXR0ZXJzIGJldHdlZW4gZ3JpZCByb3dzIGFuZCBjb2x1bW5zLiJ9LHtuYW1lOiJoYW5naW5nLXB1bmN0dWF0aW9uIixzeW50YXg6Im5vbmUgfCBbIGZpcnN0IHx8IFsgZm9yY2UtZW5kIHwgYWxsb3ctZW5kIF0gfHwgbGFzdCBdIixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJTMTAiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvaGFuZ2luZy1wdW5jdHVhdGlvbiJ9XSxkZXNjcmlwdGlvbjoiVGhlIGhhbmdpbmctcHVuY3R1YXRpb24gQ1NTIHByb3BlcnR5IHNwZWNpZmllcyB3aGV0aGVyIGEgcHVuY3R1YXRpb24gbWFyayBzaG91bGQgaGFuZyBhdCB0aGUgc3RhcnQgb3IgZW5kIG9mIGEgbGluZSBvZiB0ZXh0LiBIYW5naW5nIHB1bmN0dWF0aW9uIG1heSBiZSBwbGFjZWQgb3V0c2lkZSB0aGUgbGluZSBib3guIn0se25hbWU6Imh5cGhlbmF0ZS1jaGFyYWN0ZXIiLHN5bnRheDoiYXV0byB8IDxzdHJpbmc+IixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFNzkiLCJGRjk4IiwiUzUuMSIsIkM2IiwiTzE1Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2h5cGhlbmF0ZS1jaGFyYWN0ZXIifV0sZGVzY3JpcHRpb246IkEgaHlwaGVuYXRlIGNoYXJhY3RlciB1c2VkIGF0IHRoZSBlbmQgb2YgYSBsaW5lLiJ9LHtuYW1lOiJpbWFnZS1yZXNvbHV0aW9uIixzdGF0dXM6ImV4cGVyaW1lbnRhbCIsc3ludGF4OiJbIGZyb20taW1hZ2UgfHwgPHJlc29sdXRpb24+IF0gJiYgc25hcD8iLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiVGhlIGltYWdlLXJlc29sdXRpb24gcHJvcGVydHkgc3BlY2lmaWVzIHRoZSBpbnRyaW5zaWMgcmVzb2x1dGlvbiBvZiBhbGwgcmFzdGVyIGltYWdlcyB1c2VkIGluIG9yIG9uIHRoZSBlbGVtZW50LiBJdCBhZmZlY3RzIGJvdGggY29udGVudCBpbWFnZXMgKGUuZy4gcmVwbGFjZWQgZWxlbWVudHMgYW5kIGdlbmVyYXRlZCBjb250ZW50KSBhbmQgZGVjb3JhdGl2ZSBpbWFnZXMgKHN1Y2ggYXMgYmFja2dyb3VuZC1pbWFnZSkuIFRoZSBpbnRyaW5zaWMgcmVzb2x1dGlvbiBvZiBhbiBpbWFnZSBpcyB1c2VkIHRvIGRldGVybWluZSB0aGUgaW1hZ2XigJlzIGludHJpbnNpYyBkaW1lbnNpb25zLiJ9LHtuYW1lOiJpbml0aWFsLWxldHRlciIsc3RhdHVzOiJleHBlcmltZW50YWwiLHN5bnRheDoibm9ybWFsIHwgWyA8bnVtYmVyPiA8aW50ZWdlcj4/IF0iLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIlM5Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2luaXRpYWwtbGV0dGVyIn1dLGRlc2NyaXB0aW9uOiJUaGUgaW5pdGlhbC1sZXR0ZXIgQ1NTIHByb3BlcnR5IHNwZWNpZmllcyBzdHlsaW5nIGZvciBkcm9wcGVkLCByYWlzZWQsIGFuZCBzdW5rZW4gaW5pdGlhbCBsZXR0ZXJzLiJ9LHtuYW1lOiJpbml0aWFsLWxldHRlci1hbGlnbiIsc3RhdHVzOiJleHBlcmltZW50YWwiLHN5bnRheDoiWyBhdXRvIHwgYWxwaGFiZXRpYyB8IGhhbmdpbmcgfCBpZGVvZ3JhcGhpYyBdIixyZWxldmFuY2U6NTAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2luaXRpYWwtbGV0dGVyLWFsaWduIn1dLGRlc2NyaXB0aW9uOiJUaGUgaW5pdGlhbC1sZXR0ZXItYWxpZ24gQ1NTIHByb3BlcnR5IHNwZWNpZmllcyB0aGUgYWxpZ25tZW50IG9mIGluaXRpYWwgbGV0dGVycyB3aXRoaW4gYSBwYXJhZ3JhcGguIn0se25hbWU6ImlucHV0LXNlY3VyaXR5IixzeW50YXg6ImF1dG8gfCBub25lIixyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkVuYWJsZXMgb3IgZGlzYWJsZXMgdGhlIG9ic2N1cmluZyBhIHNlbnNpdGl2ZSB0ZXN0IGlucHV0LiJ9LHtuYW1lOiJpbnNldCIsc3ludGF4OiI8J3RvcCc+ezEsNH0iLHJlbGV2YW5jZTo1MSxicm93c2VyczpbIkU4NyIsIkZGNjYiLCJTMTQuMSIsIkM4NyIsIk83MyJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9pbnNldCJ9XSxkZXNjcmlwdGlvbjoiVGhlIGluc2V0IENTUyBwcm9wZXJ0eSBkZWZpbmVzIHRoZSBsb2dpY2FsIGJsb2NrIGFuZCBpbmxpbmUgc3RhcnQgYW5kIGVuZCBvZmZzZXRzIG9mIGFuIGVsZW1lbnQsIHdoaWNoIG1hcCB0byBwaHlzaWNhbCBvZmZzZXRzIGRlcGVuZGluZyBvbiB0aGUgZWxlbWVudCdzIHdyaXRpbmcgbW9kZSwgZGlyZWN0aW9uYWxpdHksIGFuZCB0ZXh0IG9yaWVudGF0aW9uLiBJdCBjb3JyZXNwb25kcyB0byB0aGUgdG9wIGFuZCBib3R0b20sIG9yIHJpZ2h0IGFuZCBsZWZ0IHByb3BlcnRpZXMgZGVwZW5kaW5nIG9uIHRoZSB2YWx1ZXMgZGVmaW5lZCBmb3Igd3JpdGluZy1tb2RlLCBkaXJlY3Rpb24sIGFuZCB0ZXh0LW9yaWVudGF0aW9uLiJ9LHtuYW1lOiJpbnNldC1ibG9jayIsc3ludGF4OiI8J3RvcCc+ezEsMn0iLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkU4NyIsIkZGNjMiLCJTMTQuMSIsIkM4NyIsIk83MyJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9pbnNldC1ibG9jayJ9XSxkZXNjcmlwdGlvbjoiVGhlIGluc2V0LWJsb2NrIENTUyBwcm9wZXJ0eSBkZWZpbmVzIHRoZSBsb2dpY2FsIGJsb2NrIHN0YXJ0IGFuZCBlbmQgb2Zmc2V0cyBvZiBhbiBlbGVtZW50LCB3aGljaCBtYXBzIHRvIHBoeXNpY2FsIG9mZnNldHMgZGVwZW5kaW5nIG9uIHRoZSBlbGVtZW50J3Mgd3JpdGluZyBtb2RlLCBkaXJlY3Rpb25hbGl0eSwgYW5kIHRleHQgb3JpZW50YXRpb24uIEl0IGNvcnJlc3BvbmRzIHRvIHRoZSB0b3AgYW5kIGJvdHRvbSwgb3IgcmlnaHQgYW5kIGxlZnQgcHJvcGVydGllcyBkZXBlbmRpbmcgb24gdGhlIHZhbHVlcyBkZWZpbmVkIGZvciB3cml0aW5nLW1vZGUsIGRpcmVjdGlvbiwgYW5kIHRleHQtb3JpZW50YXRpb24uIn0se25hbWU6Imluc2V0LWJsb2NrLWVuZCIsc3ludGF4OiI8J3RvcCc+IixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFODciLCJGRjYzIiwiUzE0LjEiLCJDODciLCJPNzMiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvaW5zZXQtYmxvY2stZW5kIn1dLGRlc2NyaXB0aW9uOiJUaGUgaW5zZXQtYmxvY2stZW5kIENTUyBwcm9wZXJ0eSBkZWZpbmVzIHRoZSBsb2dpY2FsIGJsb2NrIGVuZCBvZmZzZXQgb2YgYW4gZWxlbWVudCwgd2hpY2ggbWFwcyB0byBhIHBoeXNpY2FsIG9mZnNldCBkZXBlbmRpbmcgb24gdGhlIGVsZW1lbnQncyB3cml0aW5nIG1vZGUsIGRpcmVjdGlvbmFsaXR5LCBhbmQgdGV4dCBvcmllbnRhdGlvbi4gSXQgY29ycmVzcG9uZHMgdG8gdGhlIHRvcCwgcmlnaHQsIGJvdHRvbSwgb3IgbGVmdCBwcm9wZXJ0eSBkZXBlbmRpbmcgb24gdGhlIHZhbHVlcyBkZWZpbmVkIGZvciB3cml0aW5nLW1vZGUsIGRpcmVjdGlvbiwgYW5kIHRleHQtb3JpZW50YXRpb24uIn0se25hbWU6Imluc2V0LWJsb2NrLXN0YXJ0IixzeW50YXg6IjwndG9wJz4iLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkU4NyIsIkZGNjMiLCJTMTQuMSIsIkM4NyIsIk83MyJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9pbnNldC1ibG9jay1zdGFydCJ9XSxkZXNjcmlwdGlvbjoiVGhlIGluc2V0LWJsb2NrLXN0YXJ0IENTUyBwcm9wZXJ0eSBkZWZpbmVzIHRoZSBsb2dpY2FsIGJsb2NrIHN0YXJ0IG9mZnNldCBvZiBhbiBlbGVtZW50LCB3aGljaCBtYXBzIHRvIGEgcGh5c2ljYWwgb2Zmc2V0IGRlcGVuZGluZyBvbiB0aGUgZWxlbWVudCdzIHdyaXRpbmcgbW9kZSwgZGlyZWN0aW9uYWxpdHksIGFuZCB0ZXh0IG9yaWVudGF0aW9uLiBJdCBjb3JyZXNwb25kcyB0byB0aGUgdG9wLCByaWdodCwgYm90dG9tLCBvciBsZWZ0IHByb3BlcnR5IGRlcGVuZGluZyBvbiB0aGUgdmFsdWVzIGRlZmluZWQgZm9yIHdyaXRpbmctbW9kZSwgZGlyZWN0aW9uLCBhbmQgdGV4dC1vcmllbnRhdGlvbi4ifSx7bmFtZToiaW5zZXQtaW5saW5lIixzeW50YXg6IjwndG9wJz57MSwyfSIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTg3IiwiRkY2MyIsIlMxNC4xIiwiQzg3IiwiTzczIl0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2luc2V0LWlubGluZSJ9XSxkZXNjcmlwdGlvbjoiVGhlIGluc2V0LWlubGluZSBDU1MgcHJvcGVydHkgZGVmaW5lcyB0aGUgbG9naWNhbCBibG9jayBzdGFydCBhbmQgZW5kIG9mZnNldHMgb2YgYW4gZWxlbWVudCwgd2hpY2ggbWFwcyB0byBwaHlzaWNhbCBvZmZzZXRzIGRlcGVuZGluZyBvbiB0aGUgZWxlbWVudCdzIHdyaXRpbmcgbW9kZSwgZGlyZWN0aW9uYWxpdHksIGFuZCB0ZXh0IG9yaWVudGF0aW9uLiBJdCBjb3JyZXNwb25kcyB0byB0aGUgdG9wIGFuZCBib3R0b20sIG9yIHJpZ2h0IGFuZCBsZWZ0IHByb3BlcnRpZXMgZGVwZW5kaW5nIG9uIHRoZSB2YWx1ZXMgZGVmaW5lZCBmb3Igd3JpdGluZy1tb2RlLCBkaXJlY3Rpb24sIGFuZCB0ZXh0LW9yaWVudGF0aW9uLiJ9LHtuYW1lOiJpbnNldC1pbmxpbmUtZW5kIixzeW50YXg6IjwndG9wJz4iLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkU4NyIsIkZGNjMiLCJTMTQuMSIsIkM4NyIsIk83MyJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9pbnNldC1pbmxpbmUtZW5kIn1dLGRlc2NyaXB0aW9uOiJUaGUgaW5zZXQtaW5saW5lLWVuZCBDU1MgcHJvcGVydHkgZGVmaW5lcyB0aGUgbG9naWNhbCBpbmxpbmUgZW5kIGluc2V0IG9mIGFuIGVsZW1lbnQsIHdoaWNoIG1hcHMgdG8gYSBwaHlzaWNhbCBpbnNldCBkZXBlbmRpbmcgb24gdGhlIGVsZW1lbnQncyB3cml0aW5nIG1vZGUsIGRpcmVjdGlvbmFsaXR5LCBhbmQgdGV4dCBvcmllbnRhdGlvbi4gSXQgY29ycmVzcG9uZHMgdG8gdGhlIHRvcCwgcmlnaHQsIGJvdHRvbSwgb3IgbGVmdCBwcm9wZXJ0eSBkZXBlbmRpbmcgb24gdGhlIHZhbHVlcyBkZWZpbmVkIGZvciB3cml0aW5nLW1vZGUsIGRpcmVjdGlvbiwgYW5kIHRleHQtb3JpZW50YXRpb24uIn0se25hbWU6Imluc2V0LWlubGluZS1zdGFydCIsc3ludGF4OiI8J3RvcCc+IixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFODciLCJGRjYzIiwiUzE0LjEiLCJDODciLCJPNzMiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvaW5zZXQtaW5saW5lLXN0YXJ0In1dLGRlc2NyaXB0aW9uOiJUaGUgaW5zZXQtaW5saW5lLXN0YXJ0IENTUyBwcm9wZXJ0eSBkZWZpbmVzIHRoZSBsb2dpY2FsIGlubGluZSBzdGFydCBpbnNldCBvZiBhbiBlbGVtZW50LCB3aGljaCBtYXBzIHRvIGEgcGh5c2ljYWwgb2Zmc2V0IGRlcGVuZGluZyBvbiB0aGUgZWxlbWVudCdzIHdyaXRpbmcgbW9kZSwgZGlyZWN0aW9uYWxpdHksIGFuZCB0ZXh0IG9yaWVudGF0aW9uLiBJdCBjb3JyZXNwb25kcyB0byB0aGUgdG9wLCByaWdodCwgYm90dG9tLCBvciBsZWZ0IHByb3BlcnR5IGRlcGVuZGluZyBvbiB0aGUgdmFsdWVzIGRlZmluZWQgZm9yIHdyaXRpbmctbW9kZSwgZGlyZWN0aW9uLCBhbmQgdGV4dC1vcmllbnRhdGlvbi4ifSx7bmFtZToianVzdGlmeS10cmFja3MiLHN0YXR1czoiZXhwZXJpbWVudGFsIixzeW50YXg6Ilsgbm9ybWFsIHwgPGNvbnRlbnQtZGlzdHJpYnV0aW9uPiB8IDxvdmVyZmxvdy1wb3NpdGlvbj4/IFsgPGNvbnRlbnQtcG9zaXRpb24+IHwgbGVmdCB8IHJpZ2h0IF0gXSMiLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkZGNzciXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvanVzdGlmeS10cmFja3MifV0sZGVzY3JpcHRpb246IlRoZSBqdXN0aWZ5LXRyYWNrcyBDU1MgcHJvcGVydHkgc2V0cyB0aGUgYWxpZ25tZW50IGluIHRoZSBtYXNvbnJ5IGF4aXMgZm9yIGdyaWQgY29udGFpbmVycyB0aGF0IGhhdmUgbWFzb25yeSBpbiB0aGVpciBpbmxpbmUgYXhpcyJ9LHtuYW1lOiJsaW5lLWNsYW1wIixzdGF0dXM6ImV4cGVyaW1lbnRhbCIsc3ludGF4OiJub25lIHwgPGludGVnZXI+IixyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlRoZSBsaW5lLWNsYW1wIHByb3BlcnR5IGFsbG93cyBsaW1pdGluZyB0aGUgY29udGVudHMgb2YgYSBibG9jayBjb250YWluZXIgdG8gdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgbGluZXM7IHJlbWFpbmluZyBjb250ZW50IGlzIGZyYWdtZW50ZWQgYXdheSBhbmQgbmVpdGhlciByZW5kZXJlZCBub3IgbWVhc3VyZWQuIE9wdGlvbmFsbHksIGl0IGFsc28gYWxsb3dzIGluc2VydGluZyBjb250ZW50IGludG8gdGhlIGxhc3QgbGluZSBib3ggdG8gaW5kaWNhdGUgdGhlIGNvbnRpbnVpdHkgb2YgdHJ1bmNhdGVkL2ludGVycnVwdGVkIGNvbnRlbnQuIn0se25hbWU6ImxpbmUtaGVpZ2h0LXN0ZXAiLHN0YXR1czoiZXhwZXJpbWVudGFsIixzeW50YXg6IjxsZW5ndGg+IixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFNzkiLCJDNjAiLCJPNDciXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvbGluZS1oZWlnaHQtc3RlcCJ9XSxkZXNjcmlwdGlvbjoiVGhlIGxpbmUtaGVpZ2h0LXN0ZXAgQ1NTIHByb3BlcnR5IGRlZmluZXMgdGhlIHN0ZXAgdW5pdHMgZm9yIGxpbmUgYm94IGhlaWdodHMuIFdoZW4gdGhlIHN0ZXAgdW5pdCBpcyBwb3NpdGl2ZSwgbGluZSBib3ggaGVpZ2h0cyBhcmUgcm91bmRlZCB1cCB0byB0aGUgY2xvc2VzdCBtdWx0aXBsZSBvZiB0aGUgdW5pdC4gTmVnYXRpdmUgdmFsdWVzIGFyZSBpbnZhbGlkLiJ9LHtuYW1lOiJtYXJnaW4tYmxvY2siLHN5bnRheDoiPCdtYXJnaW4tbGVmdCc+ezEsMn0iLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkU4NyIsIkZGNjYiLCJTMTQuMSIsIkM4NyIsIk83MyJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9tYXJnaW4tYmxvY2sifV0sZGVzY3JpcHRpb246IlRoZSBtYXJnaW4tYmxvY2sgQ1NTIHByb3BlcnR5IGRlZmluZXMgdGhlIGxvZ2ljYWwgYmxvY2sgc3RhcnQgYW5kIGVuZCBtYXJnaW5zIG9mIGFuIGVsZW1lbnQsIHdoaWNoIG1hcHMgdG8gcGh5c2ljYWwgbWFyZ2lucyBkZXBlbmRpbmcgb24gdGhlIGVsZW1lbnQncyB3cml0aW5nIG1vZGUsIGRpcmVjdGlvbmFsaXR5LCBhbmQgdGV4dCBvcmllbnRhdGlvbi4ifSx7bmFtZToibWFyZ2luLWlubGluZSIsc3ludGF4OiI8J21hcmdpbi1sZWZ0Jz57MSwyfSIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTg3IiwiRkY2NiIsIlMxNC4xIiwiQzg3IiwiTzczIl0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL21hcmdpbi1pbmxpbmUifV0sZGVzY3JpcHRpb246IlRoZSBtYXJnaW4taW5saW5lIENTUyBwcm9wZXJ0eSBkZWZpbmVzIHRoZSBsb2dpY2FsIGlubGluZSBzdGFydCBhbmQgZW5kIG1hcmdpbnMgb2YgYW4gZWxlbWVudCwgd2hpY2ggbWFwcyB0byBwaHlzaWNhbCBtYXJnaW5zIGRlcGVuZGluZyBvbiB0aGUgZWxlbWVudCdzIHdyaXRpbmcgbW9kZSwgZGlyZWN0aW9uYWxpdHksIGFuZCB0ZXh0IG9yaWVudGF0aW9uLiJ9LHtuYW1lOiJtYXJnaW4tdHJpbSIsc3RhdHVzOiJleHBlcmltZW50YWwiLHN5bnRheDoibm9uZSB8IGluLWZsb3cgfCBhbGwiLHJlbGV2YW5jZTo1MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvbWFyZ2luLXRyaW0ifV0sZGVzY3JpcHRpb246IlRoZSBtYXJnaW4tdHJpbSBwcm9wZXJ0eSBhbGxvd3MgdGhlIGNvbnRhaW5lciB0byB0cmltIHRoZSBtYXJnaW5zIG9mIGl0cyBjaGlsZHJlbiB3aGVyZSB0aGV5IGFkam9pbiB0aGUgY29udGFpbmVy4oCZcyBlZGdlcy4ifSx7bmFtZToibWFzayIsc3ludGF4OiI8bWFzay1sYXllcj4jIixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFNzkiLCJGRjIiLCJTMy4xIiwiQzEiLCJPMTUiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvbWFzayJ9XSxkZXNjcmlwdGlvbjoiVGhlIG1hc2sgQ1NTIHByb3BlcnR5IGFsdGVycyB0aGUgdmlzaWJpbGl0eSBvZiBhbiBlbGVtZW50IGJ5IGVpdGhlciBwYXJ0aWFsbHkgb3IgZnVsbHkgaGlkaW5nIGl0LiBUaGlzIGlzIGFjY29tcGxpc2hlZCBieSBlaXRoZXIgbWFza2luZyBvciBjbGlwcGluZyB0aGUgaW1hZ2UgYXQgc3BlY2lmaWMgcG9pbnRzLiJ9LHtuYW1lOiJtYXNrLWJvcmRlciIsc3ludGF4OiI8J21hc2stYm9yZGVyLXNvdXJjZSc+IHx8IDwnbWFzay1ib3JkZXItc2xpY2UnPiBbIC8gPCdtYXNrLWJvcmRlci13aWR0aCc+PyBbIC8gPCdtYXNrLWJvcmRlci1vdXRzZXQnPiBdPyBdPyB8fCA8J21hc2stYm9yZGVyLXJlcGVhdCc+IHx8IDwnbWFzay1ib3JkZXItbW9kZSc+IixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFNzkiLCJTMy4xIiwiQzEiLCJPMTUiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvbWFzay1ib3JkZXIifV0sZGVzY3JpcHRpb246IlRoZSBtYXNrLWJvcmRlciBDU1MgcHJvcGVydHkgbGV0cyB5b3UgY3JlYXRlIGEgbWFzayBhbG9uZyB0aGUgZWRnZSBvZiBhbiBlbGVtZW50J3MgYm9yZGVyLlxuXG5UaGlzIHByb3BlcnR5IGlzIGEgc2hvcnRoYW5kIGZvciBtYXNrLWJvcmRlci1zb3VyY2UsIG1hc2stYm9yZGVyLXNsaWNlLCBtYXNrLWJvcmRlci13aWR0aCwgbWFzay1ib3JkZXItb3V0c2V0LCBtYXNrLWJvcmRlci1yZXBlYXQsIGFuZCBtYXNrLWJvcmRlci1tb2RlLiBBcyB3aXRoIGFsbCBzaG9ydGhhbmQgcHJvcGVydGllcywgYW55IG9taXR0ZWQgc3ViLXZhbHVlcyB3aWxsIGJlIHNldCB0byB0aGVpciBpbml0aWFsIHZhbHVlLiJ9LHtuYW1lOiJtYXNrLWJvcmRlci1tb2RlIixzeW50YXg6Imx1bWluYW5jZSB8IGFscGhhIixyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlRoZSBtYXNrLWJvcmRlci1tb2RlIENTUyBwcm9wZXJ0eSBzcGVjaWZpZXMgdGhlIGJsZW5kaW5nIG1vZGUgdXNlZCBpbiBhIG1hc2sgYm9yZGVyLiJ9LHtuYW1lOiJtYXNrLWJvcmRlci1vdXRzZXQiLHN5bnRheDoiWyA8bGVuZ3RoPiB8IDxudW1iZXI+IF17MSw0fSIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTc5IiwiUzMuMSIsIkMxIiwiTzE1Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL21hc2stYm9yZGVyLW91dHNldCJ9XSxkZXNjcmlwdGlvbjoiVGhlIG1hc2stYm9yZGVyLW91dHNldCBDU1MgcHJvcGVydHkgc3BlY2lmaWVzIHRoZSBkaXN0YW5jZSBieSB3aGljaCBhbiBlbGVtZW50J3MgbWFzayBib3JkZXIgaXMgc2V0IG91dCBmcm9tIGl0cyBib3JkZXIgYm94LiJ9LHtuYW1lOiJtYXNrLWJvcmRlci1yZXBlYXQiLHN5bnRheDoiWyBzdHJldGNoIHwgcmVwZWF0IHwgcm91bmQgfCBzcGFjZSBdezEsMn0iLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkU3OSIsIlMzLjEiLCJDMSIsIk8xNSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9tYXNrLWJvcmRlci1yZXBlYXQifV0sZGVzY3JpcHRpb246IlRoZSBtYXNrLWJvcmRlci1yZXBlYXQgQ1NTIHByb3BlcnR5IGRlZmluZXMgaG93IHRoZSBlZGdlIHJlZ2lvbnMgb2YgYSBzb3VyY2UgaW1hZ2UgYXJlIGFkanVzdGVkIHRvIGZpdCB0aGUgZGltZW5zaW9ucyBvZiBhbiBlbGVtZW50J3MgbWFzayBib3JkZXIuIn0se25hbWU6Im1hc2stYm9yZGVyLXNsaWNlIixzeW50YXg6IjxudW1iZXItcGVyY2VudGFnZT57MSw0fSBmaWxsPyIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTc5IiwiUzMuMSIsIkMxIiwiTzE1Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL21hc2stYm9yZGVyLXNsaWNlIn1dLGRlc2NyaXB0aW9uOiJUaGUgbWFzay1ib3JkZXItc2xpY2UgQ1NTIHByb3BlcnR5IGRpdmlkZXMgdGhlIGltYWdlIHNwZWNpZmllZCBieSBtYXNrLWJvcmRlci1zb3VyY2UgaW50byByZWdpb25zLiBUaGVzZSByZWdpb25zIGFyZSB1c2VkIHRvIGZvcm0gdGhlIGNvbXBvbmVudHMgb2YgYW4gZWxlbWVudCdzIG1hc2sgYm9yZGVyLiJ9LHtuYW1lOiJtYXNrLWJvcmRlci1zb3VyY2UiLHN5bnRheDoibm9uZSB8IDxpbWFnZT4iLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkU3OSIsIlMzLjEiLCJDMSIsIk8xNSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9tYXNrLWJvcmRlci1zb3VyY2UifV0sZGVzY3JpcHRpb246IlRoZSBtYXNrLWJvcmRlci1zb3VyY2UgQ1NTIHByb3BlcnR5IHNwZWNpZmllcyB0aGUgc291cmNlIGltYWdlIHVzZWQgdG8gY3JlYXRlIGFuIGVsZW1lbnQncyBtYXNrIGJvcmRlci5cblxuVGhlIG1hc2stYm9yZGVyLXNsaWNlIHByb3BlcnR5IGlzIHVzZWQgdG8gZGl2aWRlIHRoZSBzb3VyY2UgaW1hZ2UgaW50byByZWdpb25zLCB3aGljaCBhcmUgdGhlbiBkeW5hbWljYWxseSBhcHBsaWVkIHRvIHRoZSBmaW5hbCBtYXNrIGJvcmRlci4ifSx7bmFtZToibWFzay1ib3JkZXItd2lkdGgiLHN5bnRheDoiWyA8bGVuZ3RoLXBlcmNlbnRhZ2U+IHwgPG51bWJlcj4gfCBhdXRvIF17MSw0fSIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTc5IiwiUzMuMSIsIkMxIiwiTzE1Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL21hc2stYm9yZGVyLXdpZHRoIn1dLGRlc2NyaXB0aW9uOiJUaGUgbWFzay1ib3JkZXItd2lkdGggQ1NTIHByb3BlcnR5IHNwZWNpZmllcyB0aGUgd2lkdGggb2YgYW4gZWxlbWVudCdzIG1hc2sgYm9yZGVyLiJ9LHtuYW1lOiJtYXNrLWNsaXAiLHN5bnRheDoiWyA8Z2VvbWV0cnktYm94PiB8IG5vLWNsaXAgXSMiLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkU3OSIsIkZGNTMiLCJTMTUuNCIsIkMxIiwiTzE1Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL21hc2stY2xpcCJ9XSxkZXNjcmlwdGlvbjoiVGhlIG1hc2stY2xpcCBDU1MgcHJvcGVydHkgZGV0ZXJtaW5lcyB0aGUgYXJlYSwgd2hpY2ggaXMgYWZmZWN0ZWQgYnkgYSBtYXNrLiBUaGUgcGFpbnRlZCBjb250ZW50IG9mIGFuIGVsZW1lbnQgbXVzdCBiZSByZXN0cmljdGVkIHRvIHRoaXMgYXJlYS4ifSx7bmFtZToibWFzay1jb21wb3NpdGUiLHN5bnRheDoiPGNvbXBvc2l0aW5nLW9wZXJhdG9yPiMiLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkUxOCIsIkZGNTMiLCJTMTUuNCJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9tYXNrLWNvbXBvc2l0ZSJ9XSxkZXNjcmlwdGlvbjoiVGhlIG1hc2stY29tcG9zaXRlIENTUyBwcm9wZXJ0eSByZXByZXNlbnRzIGEgY29tcG9zaXRpbmcgb3BlcmF0aW9uIHVzZWQgb24gdGhlIGN1cnJlbnQgbWFzayBsYXllciB3aXRoIHRoZSBtYXNrIGxheWVycyBiZWxvdyBpdC4ifSx7bmFtZToibWFzb25yeS1hdXRvLWZsb3ciLHN0YXR1czoiZXhwZXJpbWVudGFsIixzeW50YXg6IlsgcGFjayB8IG5leHQgXSB8fCBbIGRlZmluaXRlLWZpcnN0IHwgb3JkZXJlZCBdIixyZWxldmFuY2U6NTAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL21hc29ucnktYXV0by1mbG93In1dLGRlc2NyaXB0aW9uOiJUaGUgbWFzb25yeS1hdXRvLWZsb3cgQ1NTIHByb3BlcnR5IG1vZGlmaWVzIGhvdyBpdGVtcyBhcmUgcGxhY2VkIHdoZW4gdXNpbmcgbWFzb25yeSBpbiBDU1MgR3JpZCBMYXlvdXQuIn0se25hbWU6Im1hdGgtc3R5bGUiLHN5bnRheDoibm9ybWFsIHwgY29tcGFjdCIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRkY4MyIsIlMxNC4xIiwiQzgzIl0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL21hdGgtc3R5bGUifV0sZGVzY3JpcHRpb246IlRoZSBtYXRoLXN0eWxlIHByb3BlcnR5IGluZGljYXRlcyB3aGV0aGVyIE1hdGhNTCBlcXVhdGlvbnMgc2hvdWxkIHJlbmRlciB3aXRoIG5vcm1hbCBvciBjb21wYWN0IGhlaWdodC4ifSx7bmFtZToibWF4LWxpbmVzIixzdGF0dXM6ImV4cGVyaW1lbnRhbCIsc3ludGF4OiJub25lIHwgPGludGVnZXI+IixyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlRoZSBtYXgtbGllbnMgcHJvcGVydHkgZm9yY2VzIGEgYnJlYWsgYWZ0ZXIgYSBzZXQgbnVtYmVyIG9mIGxpbmVzIn0se25hbWU6Im9mZnNldCIsc3ludGF4OiJbIDwnb2Zmc2V0LXBvc2l0aW9uJz4/IFsgPCdvZmZzZXQtcGF0aCc+IFsgPCdvZmZzZXQtZGlzdGFuY2UnPiB8fCA8J29mZnNldC1yb3RhdGUnPiBdPyBdPyBdISBbIC8gPCdvZmZzZXQtYW5jaG9yJz4gXT8iLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkU3OSIsIkZGNzIiLCJDNTUiLCJPNDIiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1Mvb2Zmc2V0In1dLGRlc2NyaXB0aW9uOiJUaGUgb2Zmc2V0IENTUyBwcm9wZXJ0eSBpcyBhIHNob3J0aGFuZCBwcm9wZXJ0eSBmb3IgYW5pbWF0aW5nIGFuIGVsZW1lbnQgYWxvbmcgYSBkZWZpbmVkIHBhdGguIn0se25hbWU6Im9mZnNldC1hbmNob3IiLHN5bnRheDoiYXV0byB8IDxwb3NpdGlvbj4iLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkZGNzIiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1Mvb2Zmc2V0LWFuY2hvciJ9XSxkZXNjcmlwdGlvbjoiRGVmaW5lcyBhbiBhbmNob3IgcG9pbnQgb2YgdGhlIGJveCBwb3NpdGlvbmVkIGFsb25nIHRoZSBwYXRoLiBUaGUgYW5jaG9yIHBvaW50IHNwZWNpZmllcyB0aGUgcG9pbnQgb2YgdGhlIGJveCB3aGljaCBpcyB0byBiZSBjb25zaWRlcmVkIGFzIHRoZSBwb2ludCB0aGF0IGlzIG1vdmVkIGFsb25nIHRoZSBwYXRoLiJ9LHtuYW1lOiJvZmZzZXQtZGlzdGFuY2UiLHN5bnRheDoiPGxlbmd0aC1wZXJjZW50YWdlPiIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTc5IiwiRkY3MiIsIkM1NSIsIk80MiJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9vZmZzZXQtZGlzdGFuY2UifV0sZGVzY3JpcHRpb246IlRoZSBvZmZzZXQtZGlzdGFuY2UgQ1NTIHByb3BlcnR5IHNwZWNpZmllcyBhIHBvc2l0aW9uIGFsb25nIGFuIG9mZnNldC1wYXRoLiJ9LHtuYW1lOiJvZmZzZXQtcGF0aCIsc3ludGF4OiJub25lIHwgcmF5KCBbIDxhbmdsZT4gJiYgPHNpemU+ICYmIGNvbnRhaW4/IF0gKSB8IDxwYXRoKCk+IHwgPHVybD4gfCBbIDxiYXNpYy1zaGFwZT4gfHwgPGdlb21ldHJ5LWJveD4gXSIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTc5IiwiRkY3MiIsIkM1NSIsIk80NSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9vZmZzZXQtcGF0aCJ9XSxkZXNjcmlwdGlvbjonVGhlIG9mZnNldC1wYXRoIENTUyBwcm9wZXJ0eSBzcGVjaWZpZXMgdGhlIG9mZnNldCBwYXRoIHdoZXJlIHRoZSBlbGVtZW50IGdldHMgcG9zaXRpb25lZC4gVGhlIGV4YWN0IGVsZW1lbnTigJlzIHBvc2l0aW9uIG9uIHRoZSBvZmZzZXQgcGF0aCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBvZmZzZXQtZGlzdGFuY2UgcHJvcGVydHkuIEFuIG9mZnNldCBwYXRoIGlzIGVpdGhlciBhIHNwZWNpZmllZCBwYXRoIHdpdGggb25lIG9yIG11bHRpcGxlIHN1Yi1wYXRocyBvciB0aGUgZ2VvbWV0cnkgb2YgYSBub3Qtc3R5bGVkIGJhc2ljIHNoYXBlLiBFYWNoIHNoYXBlIG9yIHBhdGggbXVzdCBkZWZpbmUgYW4gaW5pdGlhbCBwb3NpdGlvbiBmb3IgdGhlIGNvbXB1dGVkIHZhbHVlIG9mICIwIiBmb3Igb2Zmc2V0LWRpc3RhbmNlIGFuZCBhbiBpbml0aWFsIGRpcmVjdGlvbiB3aGljaCBzcGVjaWZpZXMgdGhlIHJvdGF0aW9uIG9mIHRoZSBvYmplY3QgdG8gdGhlIGluaXRpYWwgcG9zaXRpb24uXG5cbkluIHRoaXMgc3BlY2lmaWNhdGlvbiwgYSBkaXJlY3Rpb24gKG9yIHJvdGF0aW9uKSBvZiAwIGRlZ3JlZXMgaXMgZXF1aXZhbGVudCB0byB0aGUgZGlyZWN0aW9uIG9mIHRoZSBwb3NpdGl2ZSB4LWF4aXMgaW4gdGhlIG9iamVjdOKAmXMgbG9jYWwgY29vcmRpbmF0ZSBzeXN0ZW0uIEluIG90aGVyIHdvcmRzLCBhIHJvdGF0aW9uIG9mIDAgZGVncmVlIHBvaW50cyB0byB0aGUgcmlnaHQgc2lkZSBvZiB0aGUgVUEgaWYgdGhlIG9iamVjdCBhbmQgaXRzIGFuY2VzdG9ycyBoYXZlIG5vIHRyYW5zZm9ybWF0aW9uIGFwcGxpZWQuJ30se25hbWU6Im9mZnNldC1wb3NpdGlvbiIsc3RhdHVzOiJleHBlcmltZW50YWwiLHN5bnRheDoiYXV0byB8IDxwb3NpdGlvbj4iLHJlbGV2YW5jZTo1MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1Mvb2Zmc2V0LXBvc2l0aW9uIn1dLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgdGhlIGluaXRpYWwgcG9zaXRpb24gb2YgdGhlIG9mZnNldCBwYXRoLiBJZiBwb3NpdGlvbiBpcyBzcGVjaWZpZWQgd2l0aCBzdGF0aWMsIG9mZnNldC1wb3NpdGlvbiB3b3VsZCBiZSBpZ25vcmVkLiJ9LHtuYW1lOiJvZmZzZXQtcm90YXRlIixzeW50YXg6IlsgYXV0byB8IHJldmVyc2UgXSB8fCA8YW5nbGU+IixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFNzkiLCJGRjcyIiwiQzU2IiwiTzQzIl0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL29mZnNldC1yb3RhdGUifV0sZGVzY3JpcHRpb246IlRoZSBvZmZzZXQtcm90YXRlIENTUyBwcm9wZXJ0eSBkZWZpbmVzIHRoZSBkaXJlY3Rpb24gb2YgdGhlIGVsZW1lbnQgd2hpbGUgcG9zaXRpb25pbmcgYWxvbmcgdGhlIG9mZnNldCBwYXRoLiJ9LHtuYW1lOiJvdmVyZmxvdy1hbmNob3IiLHN5bnRheDoiYXV0byB8IG5vbmUiLHJlbGV2YW5jZTo1Mixicm93c2VyczpbIkU3OSIsIkZGNjYiLCJDNTYiLCJPNDMiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1Mvb3ZlcmZsb3ctYW5jaG9yIn1dLGRlc2NyaXB0aW9uOiJUaGUgb3ZlcmZsb3ctYW5jaG9yIENTUyBwcm9wZXJ0eSBwcm92aWRlcyBhIHdheSB0byBvcHQgb3V0IGJyb3dzZXIgc2Nyb2xsIGFuY2hvcmluZyBiZWhhdmlvciB3aGljaCBhZGp1c3RzIHNjcm9sbCBwb3NpdGlvbiB0byBtaW5pbWl6ZSBjb250ZW50IHNoaWZ0cy4ifSx7bmFtZToib3ZlcmZsb3ctYmxvY2siLHN5bnRheDoidmlzaWJsZSB8IGhpZGRlbiB8IGNsaXAgfCBzY3JvbGwgfCBhdXRvIixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJGRjY5Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL292ZXJmbG93LWJsb2NrIn1dLGRlc2NyaXB0aW9uOiJUaGUgb3ZlcmZsb3ctYmxvY2sgQ1NTIG1lZGlhIGZlYXR1cmUgY2FuIGJlIHVzZWQgdG8gdGVzdCBob3cgdGhlIG91dHB1dCBkZXZpY2UgaGFuZGxlcyBjb250ZW50IHRoYXQgb3ZlcmZsb3dzIHRoZSBpbml0aWFsIGNvbnRhaW5pbmcgYmxvY2sgYWxvbmcgdGhlIGJsb2NrIGF4aXMuIn0se25hbWU6Im92ZXJmbG93LWNsaXAtYm94IixzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6InBhZGRpbmctYm94IHwgY29udGVudC1ib3giLHJlbGV2YW5jZTowLGJyb3dzZXJzOlsiRkYyOSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvTW96aWxsYS9HZWNrby9DaHJvbWUvQ1NTL292ZXJmbG93LWNsaXAtYm94In1dLGRlc2NyaXB0aW9uOiJUaGUgb3ZlcmZsb3ctY2xpcC1ib3ggQ1NTIHByb3BlcnR5IHNwZWNpZmllcyByZWxhdGl2ZSB0byB3aGljaCBib3ggdGhlIGNsaXBwaW5nIGhhcHBlbnMgd2hlbiB0aGVyZSBpcyBhbiBvdmVyZmxvdy4gSXQgaXMgc2hvcnQgaGFuZCBmb3IgdGhlIG92ZXJmbG93LWNsaXAtYm94LWlubGluZSBhbmQgb3ZlcmZsb3ctY2xpcC1ib3gtYmxvY2sgcHJvcGVydGllcy4ifSx7bmFtZToib3ZlcmZsb3ctY2xpcC1tYXJnaW4iLHN5bnRheDoiPHZpc3VhbC1ib3g+IHx8IDxsZW5ndGggWzAs4oieXT4iLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkU5MCIsIkM5MCIsIk83NiJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9vdmVyZmxvdy1jbGlwLW1hcmdpbiJ9XSxkZXNjcmlwdGlvbjoiVGhlIG92ZXJmbG93LWNsaXAtbWFyZ2luIENTUyBwcm9wZXJ0eSBkZXRlcm1pbmVzIGhvdyBmYXIgb3V0c2lkZSBpdHMgYm91bmRzIGFuIGVsZW1lbnQgd2l0aCBvdmVyZmxvdzogY2xpcCBtYXkgYmUgcGFpbnRlZCBiZWZvcmUgYmVpbmcgY2xpcHBlZC4ifSx7bmFtZToib3ZlcmZsb3ctaW5saW5lIixzeW50YXg6InZpc2libGUgfCBoaWRkZW4gfCBjbGlwIHwgc2Nyb2xsIHwgYXV0byIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRkY2OSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9vdmVyZmxvdy1pbmxpbmUifV0sZGVzY3JpcHRpb246IlRoZSBvdmVyZmxvdy1pbmxpbmUgQ1NTIG1lZGlhIGZlYXR1cmUgY2FuIGJlIHVzZWQgdG8gdGVzdCBob3cgdGhlIG91dHB1dCBkZXZpY2UgaGFuZGxlcyBjb250ZW50IHRoYXQgb3ZlcmZsb3dzIHRoZSBpbml0aWFsIGNvbnRhaW5pbmcgYmxvY2sgYWxvbmcgdGhlIGlubGluZSBheGlzLiJ9LHtuYW1lOiJvdmVyc2Nyb2xsLWJlaGF2aW9yIixzeW50YXg6IlsgY29udGFpbiB8IG5vbmUgfCBhdXRvIF17MSwyfSIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTE4IiwiRkY1OSIsIkM2MyIsIk81MCJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9vdmVyc2Nyb2xsLWJlaGF2aW9yIn1dLGRlc2NyaXB0aW9uOiJUaGUgb3ZlcnNjcm9sbC1iZWhhdmlvciBDU1MgcHJvcGVydHkgaXMgc2hvcnRoYW5kIGZvciB0aGUgb3ZlcnNjcm9sbC1iZWhhdmlvci14IGFuZCBvdmVyc2Nyb2xsLWJlaGF2aW9yLXkgcHJvcGVydGllcywgd2hpY2ggYWxsb3cgeW91IHRvIGNvbnRyb2wgdGhlIGJyb3dzZXIncyBzY3JvbGwgb3ZlcmZsb3cgYmVoYXZpb3Ig4oCUIHdoYXQgaGFwcGVucyB3aGVuIHRoZSBib3VuZGFyeSBvZiBhIHNjcm9sbGluZyBhcmVhIGlzIHJlYWNoZWQuIn0se25hbWU6Im92ZXJzY3JvbGwtYmVoYXZpb3ItYmxvY2siLHN5bnRheDoiY29udGFpbiB8IG5vbmUgfCBhdXRvIixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFNzkiLCJGRjczIiwiQzc3IiwiTzY0Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL292ZXJzY3JvbGwtYmVoYXZpb3ItYmxvY2sifV0sZGVzY3JpcHRpb246IlRoZSBvdmVyc2Nyb2xsLWJlaGF2aW9yLWJsb2NrIENTUyBwcm9wZXJ0eSBzZXRzIHRoZSBicm93c2VyJ3MgYmVoYXZpb3Igd2hlbiB0aGUgYmxvY2sgZGlyZWN0aW9uIGJvdW5kYXJ5IG9mIGEgc2Nyb2xsaW5nIGFyZWEgaXMgcmVhY2hlZC4ifSx7bmFtZToib3ZlcnNjcm9sbC1iZWhhdmlvci1pbmxpbmUiLHN5bnRheDoiY29udGFpbiB8IG5vbmUgfCBhdXRvIixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFNzkiLCJGRjczIiwiQzc3IiwiTzY0Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL292ZXJzY3JvbGwtYmVoYXZpb3ItaW5saW5lIn1dLGRlc2NyaXB0aW9uOiJUaGUgb3ZlcnNjcm9sbC1iZWhhdmlvci1pbmxpbmUgQ1NTIHByb3BlcnR5IHNldHMgdGhlIGJyb3dzZXIncyBiZWhhdmlvciB3aGVuIHRoZSBpbmxpbmUgZGlyZWN0aW9uIGJvdW5kYXJ5IG9mIGEgc2Nyb2xsaW5nIGFyZWEgaXMgcmVhY2hlZC4ifSx7bmFtZToib3ZlcnNjcm9sbC1iZWhhdmlvci14IixzeW50YXg6ImNvbnRhaW4gfCBub25lIHwgYXV0byIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTE4IiwiRkY1OSIsIkM2MyIsIk81MCJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9vdmVyc2Nyb2xsLWJlaGF2aW9yLXgifV0sZGVzY3JpcHRpb246IlRoZSBvdmVyc2Nyb2xsLWJlaGF2aW9yLXggQ1NTIHByb3BlcnR5IGlzIGFsbG93cyB5b3UgdG8gY29udHJvbCB0aGUgYnJvd3NlcidzIHNjcm9sbCBvdmVyZmxvdyBiZWhhdmlvciDigJQgd2hhdCBoYXBwZW5zIHdoZW4gdGhlIGJvdW5kYXJ5IG9mIGEgc2Nyb2xsaW5nIGFyZWEgaXMgcmVhY2hlZCDigJQgaW4gdGhlIHggYXhpcyBkaXJlY3Rpb24uIn0se25hbWU6Im92ZXJzY3JvbGwtYmVoYXZpb3IteSIsc3ludGF4OiJjb250YWluIHwgbm9uZSB8IGF1dG8iLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkUxOCIsIkZGNTkiLCJDNjMiLCJPNTAiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1Mvb3ZlcnNjcm9sbC1iZWhhdmlvci15In1dLGRlc2NyaXB0aW9uOiJUaGUgb3ZlcnNjcm9sbC1iZWhhdmlvci15IENTUyBwcm9wZXJ0eSBpcyBhbGxvd3MgeW91IHRvIGNvbnRyb2wgdGhlIGJyb3dzZXIncyBzY3JvbGwgb3ZlcmZsb3cgYmVoYXZpb3Ig4oCUIHdoYXQgaGFwcGVucyB3aGVuIHRoZSBib3VuZGFyeSBvZiBhIHNjcm9sbGluZyBhcmVhIGlzIHJlYWNoZWQg4oCUIGluIHRoZSB5IGF4aXMgZGlyZWN0aW9uLiJ9LHtuYW1lOiJwYWRkaW5nLWJsb2NrIixzeW50YXg6IjwncGFkZGluZy1sZWZ0Jz57MSwyfSIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTg3IiwiRkY2NiIsIlMxNC4xIiwiQzg3IiwiTzczIl0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3BhZGRpbmctYmxvY2sifV0sZGVzY3JpcHRpb246IlRoZSBwYWRkaW5nLWJsb2NrIENTUyBwcm9wZXJ0eSBkZWZpbmVzIHRoZSBsb2dpY2FsIGJsb2NrIHN0YXJ0IGFuZCBlbmQgcGFkZGluZyBvZiBhbiBlbGVtZW50LCB3aGljaCBtYXBzIHRvIHBoeXNpY2FsIHBhZGRpbmcgcHJvcGVydGllcyBkZXBlbmRpbmcgb24gdGhlIGVsZW1lbnQncyB3cml0aW5nIG1vZGUsIGRpcmVjdGlvbmFsaXR5LCBhbmQgdGV4dCBvcmllbnRhdGlvbi4ifSx7bmFtZToicGFkZGluZy1pbmxpbmUiLHN5bnRheDoiPCdwYWRkaW5nLWxlZnQnPnsxLDJ9IixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFODciLCJGRjY2IiwiUzE0LjEiLCJDODciLCJPNzMiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvcGFkZGluZy1pbmxpbmUifV0sZGVzY3JpcHRpb246IlRoZSBwYWRkaW5nLWlubGluZSBDU1MgcHJvcGVydHkgZGVmaW5lcyB0aGUgbG9naWNhbCBpbmxpbmUgc3RhcnQgYW5kIGVuZCBwYWRkaW5nIG9mIGFuIGVsZW1lbnQsIHdoaWNoIG1hcHMgdG8gcGh5c2ljYWwgcGFkZGluZyBwcm9wZXJ0aWVzIGRlcGVuZGluZyBvbiB0aGUgZWxlbWVudCdzIHdyaXRpbmcgbW9kZSwgZGlyZWN0aW9uYWxpdHksIGFuZCB0ZXh0IG9yaWVudGF0aW9uLiJ9LHtuYW1lOiJwbGFjZS1jb250ZW50IixzeW50YXg6IjwnYWxpZ24tY29udGVudCc+IDwnanVzdGlmeS1jb250ZW50Jz4/IixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFNzkiLCJGRjQ1IiwiUzkiLCJDNTkiLCJPNDYiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvcGxhY2UtY29udGVudCJ9XSxkZXNjcmlwdGlvbjoiVGhlIHBsYWNlLWNvbnRlbnQgQ1NTIHNob3J0aGFuZCBwcm9wZXJ0eSBzZXRzIGJvdGggdGhlIGFsaWduLWNvbnRlbnQgYW5kIGp1c3RpZnktY29udGVudCBwcm9wZXJ0aWVzLiJ9LHtuYW1lOiJwbGFjZS1pdGVtcyIsc3ludGF4OiI8J2FsaWduLWl0ZW1zJz4gPCdqdXN0aWZ5LWl0ZW1zJz4/IixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFNzkiLCJGRjQ1IiwiUzExIiwiQzU5IiwiTzQ2Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3BsYWNlLWl0ZW1zIn1dLGRlc2NyaXB0aW9uOiJUaGUgQ1NTIHBsYWNlLWl0ZW1zIHNob3J0aGFuZCBwcm9wZXJ0eSBzZXRzIGJvdGggdGhlIGFsaWduLWl0ZW1zIGFuZCBqdXN0aWZ5LWl0ZW1zIHByb3BlcnRpZXMuIFRoZSBmaXJzdCB2YWx1ZSBpcyB0aGUgYWxpZ24taXRlbXMgcHJvcGVydHkgdmFsdWUsIHRoZSBzZWNvbmQgdGhlIGp1c3RpZnktaXRlbXMgb25lLiBJZiB0aGUgc2Vjb25kIHZhbHVlIGlzIG5vdCBwcmVzZW50LCB0aGUgZmlyc3QgdmFsdWUgaXMgYWxzbyB1c2VkIGZvciBpdC4ifSx7bmFtZToicGxhY2Utc2VsZiIsc3ludGF4OiI8J2FsaWduLXNlbGYnPiA8J2p1c3RpZnktc2VsZic+PyIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTc5IiwiRkY0NSIsIlMxMSIsIkM1OSIsIk80NiJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9wbGFjZS1zZWxmIn1dLGRlc2NyaXB0aW9uOiJUaGUgcGxhY2Utc2VsZiBDU1MgcHJvcGVydHkgaXMgYSBzaG9ydGhhbmQgcHJvcGVydHkgc2V0cyBib3RoIHRoZSBhbGlnbi1zZWxmIGFuZCBqdXN0aWZ5LXNlbGYgcHJvcGVydGllcy4gVGhlIGZpcnN0IHZhbHVlIGlzIHRoZSBhbGlnbi1zZWxmIHByb3BlcnR5IHZhbHVlLCB0aGUgc2Vjb25kIHRoZSBqdXN0aWZ5LXNlbGYgb25lLiBJZiB0aGUgc2Vjb25kIHZhbHVlIGlzIG5vdCBwcmVzZW50LCB0aGUgZmlyc3QgdmFsdWUgaXMgYWxzbyB1c2VkIGZvciBpdC4ifSx7bmFtZToicm90YXRlIixzeW50YXg6Im5vbmUgfCA8YW5nbGU+IHwgWyB4IHwgeSB8IHogfCA8bnVtYmVyPnszfSBdICYmIDxhbmdsZT4iLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkZGNzIiLCJTMTQuMSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9yb3RhdGUifV0sZGVzY3JpcHRpb246IlRoZSByb3RhdGUgQ1NTIHByb3BlcnR5IGFsbG93cyB5b3UgdG8gc3BlY2lmeSByb3RhdGlvbiB0cmFuc2Zvcm1zIGluZGl2aWR1YWxseSBhbmQgaW5kZXBlbmRlbnRseSBvZiB0aGUgdHJhbnNmb3JtIHByb3BlcnR5LiBUaGlzIG1hcHMgYmV0dGVyIHRvIHR5cGljYWwgdXNlciBpbnRlcmZhY2UgdXNhZ2UsIGFuZCBzYXZlcyBoYXZpbmcgdG8gcmVtZW1iZXIgdGhlIGV4YWN0IG9yZGVyIG9mIHRyYW5zZm9ybSBmdW5jdGlvbnMgdG8gc3BlY2lmeSBpbiB0aGUgdHJhbnNmb3JtIHZhbHVlLiJ9LHtuYW1lOiJyb3ctZ2FwIixzeW50YXg6Im5vcm1hbCB8IDxsZW5ndGgtcGVyY2VudGFnZT4iLHJlbGV2YW5jZTo1MSxicm93c2VyczpbIkU4NCIsIkZGNjMiLCJTMTQuMSIsIkM4NCIsIk83MCJdLGRlc2NyaXB0aW9uOiJUaGUgcm93LWdhcCBDU1MgcHJvcGVydHkgc3BlY2lmaWVzIHRoZSBndXR0ZXIgYmV0d2VlbiBncmlkIHJvd3MuIn0se25hbWU6InJ1YnktbWVyZ2UiLHN0YXR1czoiZXhwZXJpbWVudGFsIixzeW50YXg6InNlcGFyYXRlIHwgY29sbGFwc2UgfCBhdXRvIixyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlRoaXMgcHJvcGVydHkgY29udHJvbHMgaG93IHJ1YnkgYW5ub3RhdGlvbiBib3hlcyBzaG91bGQgYmUgcmVuZGVyZWQgd2hlbiB0aGVyZSBhcmUgbW9yZSB0aGFuIG9uZSBpbiBhIHJ1YnkgY29udGFpbmVyIGJveDogd2hldGhlciBlYWNoIHBhaXIgc2hvdWxkIGJlIGtlcHQgc2VwYXJhdGUsIHRoZSBhbm5vdGF0aW9ucyBzaG91bGQgYmUgY29sbGFwc2VkIGFuZCByZW5kZXJlZCBhcyBhIGdyb3VwLCBvciB0aGUgc2VwYXJhdGlvbiBzaG91bGQgYmUgZGV0ZXJtaW5lZCBiYXNlZCBvbiB0aGUgc3BhY2UgYXZhaWxhYmxlLiJ9LHtuYW1lOiJzY2FsZSIsc3ludGF4OiJub25lIHwgPG51bWJlcj57MSwzfSIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRkY3MiIsIlMxNC4xIl0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3NjYWxlIn1dLGRlc2NyaXB0aW9uOiJUaGUgc2NhbGUgQ1NTIHByb3BlcnR5IGFsbG93cyB5b3UgdG8gc3BlY2lmeSBzY2FsZSB0cmFuc2Zvcm1zIGluZGl2aWR1YWxseSBhbmQgaW5kZXBlbmRlbnRseSBvZiB0aGUgdHJhbnNmb3JtIHByb3BlcnR5LiBUaGlzIG1hcHMgYmV0dGVyIHRvIHR5cGljYWwgdXNlciBpbnRlcmZhY2UgdXNhZ2UsIGFuZCBzYXZlcyBoYXZpbmcgdG8gcmVtZW1iZXIgdGhlIGV4YWN0IG9yZGVyIG9mIHRyYW5zZm9ybSBmdW5jdGlvbnMgdG8gc3BlY2lmeSBpbiB0aGUgdHJhbnNmb3JtIHZhbHVlLiJ9LHtuYW1lOiJzY3JvbGxiYXItY29sb3IiLHN5bnRheDoiYXV0byB8IDxjb2xvcj57Mn0iLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkZGNjQiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1Mvc2Nyb2xsYmFyLWNvbG9yIn1dLGRlc2NyaXB0aW9uOiJUaGUgc2Nyb2xsYmFyLWNvbG9yIENTUyBwcm9wZXJ0eSBzZXRzIHRoZSBjb2xvciBvZiB0aGUgc2Nyb2xsYmFyIHRyYWNrIGFuZCB0aHVtYi4ifSx7bmFtZToic2Nyb2xsYmFyLWd1dHRlciIsc3ludGF4OiJhdXRvIHwgc3RhYmxlICYmIGJvdGgtZWRnZXM/IixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFOTQiLCJGRjk3IiwiQzk0IiwiTzgwIl0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3Njcm9sbGJhci1ndXR0ZXIifV0sZGVzY3JpcHRpb246IlRoZSBzY3JvbGxiYXItZ3V0dGVyIENTUyBwcm9wZXJ0eSBhbGxvd3MgYXV0aG9ycyB0byByZXNlcnZlIHNwYWNlIGZvciB0aGUgc2Nyb2xsYmFyLCBwcmV2ZW50aW5nIHVud2FudGVkIGxheW91dCBjaGFuZ2VzIGFzIHRoZSBjb250ZW50IGdyb3dzIHdoaWxlIGFsc28gYXZvaWRpbmcgdW5uZWNlc3NhcnkgdmlzdWFscyB3aGVuIHNjcm9sbGluZyBpc24ndCBuZWVkZWQuIn0se25hbWU6InNjcm9sbGJhci13aWR0aCIsc3ludGF4OiJhdXRvIHwgdGhpbiB8IG5vbmUiLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkZGNjQiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1Mvc2Nyb2xsYmFyLXdpZHRoIn1dLGRlc2NyaXB0aW9uOiJUaGUgc2Nyb2xsYmFyLXdpZHRoIHByb3BlcnR5IGFsbG93cyB0aGUgYXV0aG9yIHRvIHNldCB0aGUgbWF4aW11bSB0aGlja25lc3Mgb2YgYW4gZWxlbWVudOKAmXMgc2Nyb2xsYmFycyB3aGVuIHRoZXkgYXJlIHNob3duLiAifSx7bmFtZToic2Nyb2xsLW1hcmdpbiIsc3ludGF4OiI8bGVuZ3RoPnsxLDR9IixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFNzkiLCJGRjkwIiwiUzE0LjEiLCJDNjkiLCJPNTYiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1Mvc2Nyb2xsLW1hcmdpbiJ9XSxkZXNjcmlwdGlvbjoiVGhlIHNjcm9sbC1tYXJnaW4gcHJvcGVydHkgaXMgYSBzaG9ydGhhbmQgcHJvcGVydHkgd2hpY2ggc2V0cyBhbGwgb2YgdGhlIHNjcm9sbC1tYXJnaW4gbG9uZ2hhbmRzLCBhc3NpZ25pbmcgdmFsdWVzIG11Y2ggbGlrZSB0aGUgbWFyZ2luIHByb3BlcnR5IGRvZXMgZm9yIHRoZSBtYXJnaW4tKiBsb25naGFuZHMuIn0se25hbWU6InNjcm9sbC1tYXJnaW4tYmxvY2siLHN5bnRheDoiPGxlbmd0aD57MSwyfSIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTc5IiwiRkY2OCIsIlMxNC4xIiwiQzY5IiwiTzU2Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3Njcm9sbC1tYXJnaW4tYmxvY2sifV0sZGVzY3JpcHRpb246IlRoZSBzY3JvbGwtbWFyZ2luLWJsb2NrIHByb3BlcnR5IGlzIGEgc2hvcnRoYW5kIHByb3BlcnR5IHdoaWNoIHNldHMgdGhlIHNjcm9sbC1tYXJnaW4gbG9uZ2hhbmRzIGluIHRoZSBibG9jayBkaW1lbnNpb24uIn0se25hbWU6InNjcm9sbC1tYXJnaW4tYmxvY2stc3RhcnQiLHN5bnRheDoiPGxlbmd0aD4iLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkU3OSIsIkZGNjgiLCJTMTQuMSIsIkM2OSIsIk81NiJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9zY3JvbGwtbWFyZ2luLWJsb2NrLXN0YXJ0In1dLGRlc2NyaXB0aW9uOiJUaGUgc2Nyb2xsLW1hcmdpbi1ibG9jay1zdGFydCBwcm9wZXJ0eSBkZWZpbmVzIHRoZSBtYXJnaW4gb2YgdGhlIHNjcm9sbCBzbmFwIGFyZWEgYXQgdGhlIHN0YXJ0IG9mIHRoZSBibG9jayBkaW1lbnNpb24gdGhhdCBpcyB1c2VkIGZvciBzbmFwcGluZyB0aGlzIGJveCB0byB0aGUgc25hcHBvcnQuIFRoZSBzY3JvbGwgc25hcCBhcmVhIGlzIGRldGVybWluZWQgYnkgdGFraW5nIHRoZSB0cmFuc2Zvcm1lZCBib3JkZXIgYm94LCBmaW5kaW5nIGl0cyByZWN0YW5ndWxhciBib3VuZGluZyBib3ggKGF4aXMtYWxpZ25lZCBpbiB0aGUgc2Nyb2xsIGNvbnRhaW5lcuKAmXMgY29vcmRpbmF0ZSBzcGFjZSksIHRoZW4gYWRkaW5nIHRoZSBzcGVjaWZpZWQgb3V0c2V0cy4ifSx7bmFtZToic2Nyb2xsLW1hcmdpbi1ibG9jay1lbmQiLHN5bnRheDoiPGxlbmd0aD4iLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkU3OSIsIkZGNjgiLCJTMTQuMSIsIkM2OSIsIk81NiJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9zY3JvbGwtbWFyZ2luLWJsb2NrLWVuZCJ9XSxkZXNjcmlwdGlvbjoiVGhlIHNjcm9sbC1tYXJnaW4tYmxvY2stZW5kIHByb3BlcnR5IGRlZmluZXMgdGhlIG1hcmdpbiBvZiB0aGUgc2Nyb2xsIHNuYXAgYXJlYSBhdCB0aGUgZW5kIG9mIHRoZSBibG9jayBkaW1lbnNpb24gdGhhdCBpcyB1c2VkIGZvciBzbmFwcGluZyB0aGlzIGJveCB0byB0aGUgc25hcHBvcnQuIFRoZSBzY3JvbGwgc25hcCBhcmVhIGlzIGRldGVybWluZWQgYnkgdGFraW5nIHRoZSB0cmFuc2Zvcm1lZCBib3JkZXIgYm94LCBmaW5kaW5nIGl0cyByZWN0YW5ndWxhciBib3VuZGluZyBib3ggKGF4aXMtYWxpZ25lZCBpbiB0aGUgc2Nyb2xsIGNvbnRhaW5lcuKAmXMgY29vcmRpbmF0ZSBzcGFjZSksIHRoZW4gYWRkaW5nIHRoZSBzcGVjaWZpZWQgb3V0c2V0cy4ifSx7bmFtZToic2Nyb2xsLW1hcmdpbi1ib3R0b20iLHN5bnRheDoiPGxlbmd0aD4iLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkU3OSIsIkZGNjgiLCJTMTQuMSIsIkM2OSIsIk81NiJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9zY3JvbGwtbWFyZ2luLWJvdHRvbSJ9XSxkZXNjcmlwdGlvbjoiVGhlIHNjcm9sbC1tYXJnaW4tYm90dG9tIHByb3BlcnR5IGRlZmluZXMgdGhlIGJvdHRvbSBtYXJnaW4gb2YgdGhlIHNjcm9sbCBzbmFwIGFyZWEgdGhhdCBpcyB1c2VkIGZvciBzbmFwcGluZyB0aGlzIGJveCB0byB0aGUgc25hcHBvcnQuIFRoZSBzY3JvbGwgc25hcCBhcmVhIGlzIGRldGVybWluZWQgYnkgdGFraW5nIHRoZSB0cmFuc2Zvcm1lZCBib3JkZXIgYm94LCBmaW5kaW5nIGl0cyByZWN0YW5ndWxhciBib3VuZGluZyBib3ggKGF4aXMtYWxpZ25lZCBpbiB0aGUgc2Nyb2xsIGNvbnRhaW5lcuKAmXMgY29vcmRpbmF0ZSBzcGFjZSksIHRoZW4gYWRkaW5nIHRoZSBzcGVjaWZpZWQgb3V0c2V0cy4ifSx7bmFtZToic2Nyb2xsLW1hcmdpbi1pbmxpbmUiLHN5bnRheDoiPGxlbmd0aD57MSwyfSIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTc5IiwiRkY2OCIsIlMxNC4xIiwiQzY5IiwiTzU2Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3Njcm9sbC1tYXJnaW4taW5saW5lIn1dLGRlc2NyaXB0aW9uOiJUaGUgc2Nyb2xsLW1hcmdpbi1pbmxpbmUgcHJvcGVydHkgaXMgYSBzaG9ydGhhbmQgcHJvcGVydHkgd2hpY2ggc2V0cyB0aGUgc2Nyb2xsLW1hcmdpbiBsb25naGFuZHMgaW4gdGhlIGlubGluZSBkaW1lbnNpb24uIn0se25hbWU6InNjcm9sbC1tYXJnaW4taW5saW5lLXN0YXJ0IixzeW50YXg6IjxsZW5ndGg+IixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFNzkiLCJGRjY4IiwiUzE0LjEiLCJDNjkiLCJPNTYiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1Mvc2Nyb2xsLW1hcmdpbi1pbmxpbmUtc3RhcnQifV0sZGVzY3JpcHRpb246IlRoZSBzY3JvbGwtbWFyZ2luLWlubGluZS1zdGFydCBwcm9wZXJ0eSBkZWZpbmVzIHRoZSBtYXJnaW4gb2YgdGhlIHNjcm9sbCBzbmFwIGFyZWEgYXQgdGhlIHN0YXJ0IG9mIHRoZSBpbmxpbmUgZGltZW5zaW9uIHRoYXQgaXMgdXNlZCBmb3Igc25hcHBpbmcgdGhpcyBib3ggdG8gdGhlIHNuYXBwb3J0LiBUaGUgc2Nyb2xsIHNuYXAgYXJlYSBpcyBkZXRlcm1pbmVkIGJ5IHRha2luZyB0aGUgdHJhbnNmb3JtZWQgYm9yZGVyIGJveCwgZmluZGluZyBpdHMgcmVjdGFuZ3VsYXIgYm91bmRpbmcgYm94IChheGlzLWFsaWduZWQgaW4gdGhlIHNjcm9sbCBjb250YWluZXLigJlzIGNvb3JkaW5hdGUgc3BhY2UpLCB0aGVuIGFkZGluZyB0aGUgc3BlY2lmaWVkIG91dHNldHMuIn0se25hbWU6InNjcm9sbC1tYXJnaW4taW5saW5lLWVuZCIsc3ludGF4OiI8bGVuZ3RoPiIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTc5IiwiRkY2OCIsIlMxNC4xIiwiQzY5IiwiTzU2Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3Njcm9sbC1tYXJnaW4taW5saW5lLWVuZCJ9XSxkZXNjcmlwdGlvbjoiVGhlIHNjcm9sbC1tYXJnaW4taW5saW5lLWVuZCBwcm9wZXJ0eSBkZWZpbmVzIHRoZSBtYXJnaW4gb2YgdGhlIHNjcm9sbCBzbmFwIGFyZWEgYXQgdGhlIGVuZCBvZiB0aGUgaW5saW5lIGRpbWVuc2lvbiB0aGF0IGlzIHVzZWQgZm9yIHNuYXBwaW5nIHRoaXMgYm94IHRvIHRoZSBzbmFwcG9ydC4gVGhlIHNjcm9sbCBzbmFwIGFyZWEgaXMgZGV0ZXJtaW5lZCBieSB0YWtpbmcgdGhlIHRyYW5zZm9ybWVkIGJvcmRlciBib3gsIGZpbmRpbmcgaXRzIHJlY3Rhbmd1bGFyIGJvdW5kaW5nIGJveCAoYXhpcy1hbGlnbmVkIGluIHRoZSBzY3JvbGwgY29udGFpbmVy4oCZcyBjb29yZGluYXRlIHNwYWNlKSwgdGhlbiBhZGRpbmcgdGhlIHNwZWNpZmllZCBvdXRzZXRzLiJ9LHtuYW1lOiJzY3JvbGwtbWFyZ2luLWxlZnQiLHN5bnRheDoiPGxlbmd0aD4iLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkU3OSIsIkZGNjgiLCJTMTQuMSIsIkM2OSIsIk81NiJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9zY3JvbGwtbWFyZ2luLWxlZnQifV0sZGVzY3JpcHRpb246IlRoZSBzY3JvbGwtbWFyZ2luLWxlZnQgcHJvcGVydHkgZGVmaW5lcyB0aGUgbGVmdCBtYXJnaW4gb2YgdGhlIHNjcm9sbCBzbmFwIGFyZWEgdGhhdCBpcyB1c2VkIGZvciBzbmFwcGluZyB0aGlzIGJveCB0byB0aGUgc25hcHBvcnQuIFRoZSBzY3JvbGwgc25hcCBhcmVhIGlzIGRldGVybWluZWQgYnkgdGFraW5nIHRoZSB0cmFuc2Zvcm1lZCBib3JkZXIgYm94LCBmaW5kaW5nIGl0cyByZWN0YW5ndWxhciBib3VuZGluZyBib3ggKGF4aXMtYWxpZ25lZCBpbiB0aGUgc2Nyb2xsIGNvbnRhaW5lcuKAmXMgY29vcmRpbmF0ZSBzcGFjZSksIHRoZW4gYWRkaW5nIHRoZSBzcGVjaWZpZWQgb3V0c2V0cy4ifSx7bmFtZToic2Nyb2xsLW1hcmdpbi1yaWdodCIsc3ludGF4OiI8bGVuZ3RoPiIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTc5IiwiRkY2OCIsIlMxNC4xIiwiQzY5IiwiTzU2Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3Njcm9sbC1tYXJnaW4tcmlnaHQifV0sZGVzY3JpcHRpb246IlRoZSBzY3JvbGwtbWFyZ2luLXJpZ2h0IHByb3BlcnR5IGRlZmluZXMgdGhlIHJpZ2h0IG1hcmdpbiBvZiB0aGUgc2Nyb2xsIHNuYXAgYXJlYSB0aGF0IGlzIHVzZWQgZm9yIHNuYXBwaW5nIHRoaXMgYm94IHRvIHRoZSBzbmFwcG9ydC4gVGhlIHNjcm9sbCBzbmFwIGFyZWEgaXMgZGV0ZXJtaW5lZCBieSB0YWtpbmcgdGhlIHRyYW5zZm9ybWVkIGJvcmRlciBib3gsIGZpbmRpbmcgaXRzIHJlY3Rhbmd1bGFyIGJvdW5kaW5nIGJveCAoYXhpcy1hbGlnbmVkIGluIHRoZSBzY3JvbGwgY29udGFpbmVy4oCZcyBjb29yZGluYXRlIHNwYWNlKSwgdGhlbiBhZGRpbmcgdGhlIHNwZWNpZmllZCBvdXRzZXRzLiJ9LHtuYW1lOiJzY3JvbGwtbWFyZ2luLXRvcCIsc3ludGF4OiI8bGVuZ3RoPiIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTc5IiwiRkY2OCIsIlMxNC4xIiwiQzY5IiwiTzU2Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3Njcm9sbC1tYXJnaW4tdG9wIn1dLGRlc2NyaXB0aW9uOiJUaGUgc2Nyb2xsLW1hcmdpbi10b3AgcHJvcGVydHkgZGVmaW5lcyB0aGUgdG9wIG1hcmdpbiBvZiB0aGUgc2Nyb2xsIHNuYXAgYXJlYSB0aGF0IGlzIHVzZWQgZm9yIHNuYXBwaW5nIHRoaXMgYm94IHRvIHRoZSBzbmFwcG9ydC4gVGhlIHNjcm9sbCBzbmFwIGFyZWEgaXMgZGV0ZXJtaW5lZCBieSB0YWtpbmcgdGhlIHRyYW5zZm9ybWVkIGJvcmRlciBib3gsIGZpbmRpbmcgaXRzIHJlY3Rhbmd1bGFyIGJvdW5kaW5nIGJveCAoYXhpcy1hbGlnbmVkIGluIHRoZSBzY3JvbGwgY29udGFpbmVy4oCZcyBjb29yZGluYXRlIHNwYWNlKSwgdGhlbiBhZGRpbmcgdGhlIHNwZWNpZmllZCBvdXRzZXRzLiJ9LHtuYW1lOiJzY3JvbGwtcGFkZGluZyIsc3ludGF4OiJbIGF1dG8gfCA8bGVuZ3RoLXBlcmNlbnRhZ2U+IF17MSw0fSIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTc5IiwiRkY2OCIsIlMxNC4xIiwiQzY5IiwiTzU2Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3Njcm9sbC1wYWRkaW5nIn1dLGRlc2NyaXB0aW9uOiJUaGUgc2Nyb2xsLXBhZGRpbmcgcHJvcGVydHkgaXMgYSBzaG9ydGhhbmQgcHJvcGVydHkgd2hpY2ggc2V0cyBhbGwgb2YgdGhlIHNjcm9sbC1wYWRkaW5nIGxvbmdoYW5kcywgYXNzaWduaW5nIHZhbHVlcyBtdWNoIGxpa2UgdGhlIHBhZGRpbmcgcHJvcGVydHkgZG9lcyBmb3IgdGhlIHBhZGRpbmctKiBsb25naGFuZHMuIn0se25hbWU6InNjcm9sbC1wYWRkaW5nLWJsb2NrIixzeW50YXg6IlsgYXV0byB8IDxsZW5ndGgtcGVyY2VudGFnZT4gXXsxLDJ9IixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFNzkiLCJGRjY4IiwiUzE1IiwiQzY5IiwiTzU2Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3Njcm9sbC1wYWRkaW5nLWJsb2NrIn1dLGRlc2NyaXB0aW9uOiJUaGUgc2Nyb2xsLXBhZGRpbmctYmxvY2sgcHJvcGVydHkgaXMgYSBzaG9ydGhhbmQgcHJvcGVydHkgd2hpY2ggc2V0cyB0aGUgc2Nyb2xsLXBhZGRpbmcgbG9uZ2hhbmRzIGZvciB0aGUgYmxvY2sgZGltZW5zaW9uLiJ9LHtuYW1lOiJzY3JvbGwtcGFkZGluZy1ibG9jay1zdGFydCIsc3ludGF4OiJhdXRvIHwgPGxlbmd0aC1wZXJjZW50YWdlPiIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTc5IiwiRkY2OCIsIlMxNSIsIkM2OSIsIk81NiJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9zY3JvbGwtcGFkZGluZy1ibG9jay1zdGFydCJ9XSxkZXNjcmlwdGlvbjoiVGhlIHNjcm9sbC1wYWRkaW5nLWJsb2NrLXN0YXJ0IHByb3BlcnR5IGRlZmluZXMgb2Zmc2V0cyBmb3IgdGhlIHN0YXJ0IGVkZ2UgaW4gdGhlIGJsb2NrIGRpbWVuc2lvbiBvZiB0aGUgb3B0aW1hbCB2aWV3aW5nIHJlZ2lvbiBvZiB0aGUgc2Nyb2xscG9ydDogdGhlIHJlZ2lvbiB1c2VkIGFzIHRoZSB0YXJnZXQgcmVnaW9uIGZvciBwbGFjaW5nIHRoaW5ncyBpbiB2aWV3IG9mIHRoZSB1c2VyLiBUaGlzIGFsbG93cyB0aGUgYXV0aG9yIHRvIGV4Y2x1ZGUgcmVnaW9ucyBvZiB0aGUgc2Nyb2xscG9ydCB0aGF0IGFyZSBvYnNjdXJlZCBieSBvdGhlciBjb250ZW50IChzdWNoIGFzIGZpeGVkLXBvc2l0aW9uZWQgdG9vbGJhcnMgb3Igc2lkZWJhcnMpIG9yIHNpbXBseSB0byBwdXQgbW9yZSBicmVhdGhpbmcgcm9vbSBiZXR3ZWVuIGEgdGFyZ2V0ZWQgZWxlbWVudCBhbmQgdGhlIGVkZ2VzIG9mIHRoZSBzY3JvbGxwb3J0LiJ9LHtuYW1lOiJzY3JvbGwtcGFkZGluZy1ibG9jay1lbmQiLHN5bnRheDoiYXV0byB8IDxsZW5ndGgtcGVyY2VudGFnZT4iLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkU3OSIsIkZGNjgiLCJTMTUiLCJDNjkiLCJPNTYiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1Mvc2Nyb2xsLXBhZGRpbmctYmxvY2stZW5kIn1dLGRlc2NyaXB0aW9uOiJUaGUgc2Nyb2xsLXBhZGRpbmctYmxvY2stZW5kIHByb3BlcnR5IGRlZmluZXMgb2Zmc2V0cyBmb3IgdGhlIGVuZCBlZGdlIGluIHRoZSBibG9jayBkaW1lbnNpb24gb2YgdGhlIG9wdGltYWwgdmlld2luZyByZWdpb24gb2YgdGhlIHNjcm9sbHBvcnQ6IHRoZSByZWdpb24gdXNlZCBhcyB0aGUgdGFyZ2V0IHJlZ2lvbiBmb3IgcGxhY2luZyB0aGluZ3MgaW4gdmlldyBvZiB0aGUgdXNlci4gVGhpcyBhbGxvd3MgdGhlIGF1dGhvciB0byBleGNsdWRlIHJlZ2lvbnMgb2YgdGhlIHNjcm9sbHBvcnQgdGhhdCBhcmUgb2JzY3VyZWQgYnkgb3RoZXIgY29udGVudCAoc3VjaCBhcyBmaXhlZC1wb3NpdGlvbmVkIHRvb2xiYXJzIG9yIHNpZGViYXJzKSBvciBzaW1wbHkgdG8gcHV0IG1vcmUgYnJlYXRoaW5nIHJvb20gYmV0d2VlbiBhIHRhcmdldGVkIGVsZW1lbnQgYW5kIHRoZSBlZGdlcyBvZiB0aGUgc2Nyb2xscG9ydC4ifSx7bmFtZToic2Nyb2xsLXBhZGRpbmctYm90dG9tIixzeW50YXg6ImF1dG8gfCA8bGVuZ3RoLXBlcmNlbnRhZ2U+IixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFNzkiLCJGRjY4IiwiUzE0LjEiLCJDNjkiLCJPNTYiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1Mvc2Nyb2xsLXBhZGRpbmctYm90dG9tIn1dLGRlc2NyaXB0aW9uOiJUaGUgc2Nyb2xsLXBhZGRpbmctYm90dG9tIHByb3BlcnR5IGRlZmluZXMgb2Zmc2V0cyBmb3IgdGhlIGJvdHRvbSBvZiB0aGUgb3B0aW1hbCB2aWV3aW5nIHJlZ2lvbiBvZiB0aGUgc2Nyb2xscG9ydDogdGhlIHJlZ2lvbiB1c2VkIGFzIHRoZSB0YXJnZXQgcmVnaW9uIGZvciBwbGFjaW5nIHRoaW5ncyBpbiB2aWV3IG9mIHRoZSB1c2VyLiBUaGlzIGFsbG93cyB0aGUgYXV0aG9yIHRvIGV4Y2x1ZGUgcmVnaW9ucyBvZiB0aGUgc2Nyb2xscG9ydCB0aGF0IGFyZSBvYnNjdXJlZCBieSBvdGhlciBjb250ZW50IChzdWNoIGFzIGZpeGVkLXBvc2l0aW9uZWQgdG9vbGJhcnMgb3Igc2lkZWJhcnMpIG9yIHNpbXBseSB0byBwdXQgbW9yZSBicmVhdGhpbmcgcm9vbSBiZXR3ZWVuIGEgdGFyZ2V0ZWQgZWxlbWVudCBhbmQgdGhlIGVkZ2VzIG9mIHRoZSBzY3JvbGxwb3J0LiJ9LHtuYW1lOiJzY3JvbGwtcGFkZGluZy1pbmxpbmUiLHN5bnRheDoiWyBhdXRvIHwgPGxlbmd0aC1wZXJjZW50YWdlPiBdezEsMn0iLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkU3OSIsIkZGNjgiLCJTMTUiLCJDNjkiLCJPNTYiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1Mvc2Nyb2xsLXBhZGRpbmctaW5saW5lIn1dLGRlc2NyaXB0aW9uOiJUaGUgc2Nyb2xsLXBhZGRpbmctaW5saW5lIHByb3BlcnR5IGlzIGEgc2hvcnRoYW5kIHByb3BlcnR5IHdoaWNoIHNldHMgdGhlIHNjcm9sbC1wYWRkaW5nIGxvbmdoYW5kcyBmb3IgdGhlIGlubGluZSBkaW1lbnNpb24uIn0se25hbWU6InNjcm9sbC1wYWRkaW5nLWlubGluZS1zdGFydCIsc3ludGF4OiJhdXRvIHwgPGxlbmd0aC1wZXJjZW50YWdlPiIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTc5IiwiRkY2OCIsIlMxNSIsIkM2OSIsIk81NiJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9zY3JvbGwtcGFkZGluZy1pbmxpbmUtc3RhcnQifV0sZGVzY3JpcHRpb246IlRoZSBzY3JvbGwtcGFkZGluZy1pbmxpbmUtc3RhcnQgcHJvcGVydHkgZGVmaW5lcyBvZmZzZXRzIGZvciB0aGUgc3RhcnQgZWRnZSBpbiB0aGUgaW5saW5lIGRpbWVuc2lvbiBvZiB0aGUgb3B0aW1hbCB2aWV3aW5nIHJlZ2lvbiBvZiB0aGUgc2Nyb2xscG9ydDogdGhlIHJlZ2lvbiB1c2VkIGFzIHRoZSB0YXJnZXQgcmVnaW9uIGZvciBwbGFjaW5nIHRoaW5ncyBpbiB2aWV3IG9mIHRoZSB1c2VyLiBUaGlzIGFsbG93cyB0aGUgYXV0aG9yIHRvIGV4Y2x1ZGUgcmVnaW9ucyBvZiB0aGUgc2Nyb2xscG9ydCB0aGF0IGFyZSBvYnNjdXJlZCBieSBvdGhlciBjb250ZW50IChzdWNoIGFzIGZpeGVkLXBvc2l0aW9uZWQgdG9vbGJhcnMgb3Igc2lkZWJhcnMpIG9yIHNpbXBseSB0byBwdXQgbW9yZSBicmVhdGhpbmcgcm9vbSBiZXR3ZWVuIGEgdGFyZ2V0ZWQgZWxlbWVudCBhbmQgdGhlIGVkZ2VzIG9mIHRoZSBzY3JvbGxwb3J0LiJ9LHtuYW1lOiJzY3JvbGwtcGFkZGluZy1pbmxpbmUtZW5kIixzeW50YXg6ImF1dG8gfCA8bGVuZ3RoLXBlcmNlbnRhZ2U+IixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFNzkiLCJGRjY4IiwiUzE1IiwiQzY5IiwiTzU2Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3Njcm9sbC1wYWRkaW5nLWlubGluZS1lbmQifV0sZGVzY3JpcHRpb246IlRoZSBzY3JvbGwtcGFkZGluZy1pbmxpbmUtZW5kIHByb3BlcnR5IGRlZmluZXMgb2Zmc2V0cyBmb3IgdGhlIGVuZCBlZGdlIGluIHRoZSBpbmxpbmUgZGltZW5zaW9uIG9mIHRoZSBvcHRpbWFsIHZpZXdpbmcgcmVnaW9uIG9mIHRoZSBzY3JvbGxwb3J0OiB0aGUgcmVnaW9uIHVzZWQgYXMgdGhlIHRhcmdldCByZWdpb24gZm9yIHBsYWNpbmcgdGhpbmdzIGluIHZpZXcgb2YgdGhlIHVzZXIuIFRoaXMgYWxsb3dzIHRoZSBhdXRob3IgdG8gZXhjbHVkZSByZWdpb25zIG9mIHRoZSBzY3JvbGxwb3J0IHRoYXQgYXJlIG9ic2N1cmVkIGJ5IG90aGVyIGNvbnRlbnQgKHN1Y2ggYXMgZml4ZWQtcG9zaXRpb25lZCB0b29sYmFycyBvciBzaWRlYmFycykgb3Igc2ltcGx5IHRvIHB1dCBtb3JlIGJyZWF0aGluZyByb29tIGJldHdlZW4gYSB0YXJnZXRlZCBlbGVtZW50IGFuZCB0aGUgZWRnZXMgb2YgdGhlIHNjcm9sbHBvcnQuIn0se25hbWU6InNjcm9sbC1wYWRkaW5nLWxlZnQiLHN5bnRheDoiYXV0byB8IDxsZW5ndGgtcGVyY2VudGFnZT4iLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkU3OSIsIkZGNjgiLCJTMTQuMSIsIkM2OSIsIk81NiJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9zY3JvbGwtcGFkZGluZy1sZWZ0In1dLGRlc2NyaXB0aW9uOiJUaGUgc2Nyb2xsLXBhZGRpbmctbGVmdCBwcm9wZXJ0eSBkZWZpbmVzIG9mZnNldHMgZm9yIHRoZSBsZWZ0IG9mIHRoZSBvcHRpbWFsIHZpZXdpbmcgcmVnaW9uIG9mIHRoZSBzY3JvbGxwb3J0OiB0aGUgcmVnaW9uIHVzZWQgYXMgdGhlIHRhcmdldCByZWdpb24gZm9yIHBsYWNpbmcgdGhpbmdzIGluIHZpZXcgb2YgdGhlIHVzZXIuIFRoaXMgYWxsb3dzIHRoZSBhdXRob3IgdG8gZXhjbHVkZSByZWdpb25zIG9mIHRoZSBzY3JvbGxwb3J0IHRoYXQgYXJlIG9ic2N1cmVkIGJ5IG90aGVyIGNvbnRlbnQgKHN1Y2ggYXMgZml4ZWQtcG9zaXRpb25lZCB0b29sYmFycyBvciBzaWRlYmFycykgb3Igc2ltcGx5IHRvIHB1dCBtb3JlIGJyZWF0aGluZyByb29tIGJldHdlZW4gYSB0YXJnZXRlZCBlbGVtZW50IGFuZCB0aGUgZWRnZXMgb2YgdGhlIHNjcm9sbHBvcnQuIn0se25hbWU6InNjcm9sbC1wYWRkaW5nLXJpZ2h0IixzeW50YXg6ImF1dG8gfCA8bGVuZ3RoLXBlcmNlbnRhZ2U+IixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFNzkiLCJGRjY4IiwiUzE0LjEiLCJDNjkiLCJPNTYiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1Mvc2Nyb2xsLXBhZGRpbmctcmlnaHQifV0sZGVzY3JpcHRpb246IlRoZSBzY3JvbGwtcGFkZGluZy1yaWdodCBwcm9wZXJ0eSBkZWZpbmVzIG9mZnNldHMgZm9yIHRoZSByaWdodCBvZiB0aGUgb3B0aW1hbCB2aWV3aW5nIHJlZ2lvbiBvZiB0aGUgc2Nyb2xscG9ydDogdGhlIHJlZ2lvbiB1c2VkIGFzIHRoZSB0YXJnZXQgcmVnaW9uIGZvciBwbGFjaW5nIHRoaW5ncyBpbiB2aWV3IG9mIHRoZSB1c2VyLiBUaGlzIGFsbG93cyB0aGUgYXV0aG9yIHRvIGV4Y2x1ZGUgcmVnaW9ucyBvZiB0aGUgc2Nyb2xscG9ydCB0aGF0IGFyZSBvYnNjdXJlZCBieSBvdGhlciBjb250ZW50IChzdWNoIGFzIGZpeGVkLXBvc2l0aW9uZWQgdG9vbGJhcnMgb3Igc2lkZWJhcnMpIG9yIHNpbXBseSB0byBwdXQgbW9yZSBicmVhdGhpbmcgcm9vbSBiZXR3ZWVuIGEgdGFyZ2V0ZWQgZWxlbWVudCBhbmQgdGhlIGVkZ2VzIG9mIHRoZSBzY3JvbGxwb3J0LiJ9LHtuYW1lOiJzY3JvbGwtcGFkZGluZy10b3AiLHN5bnRheDoiYXV0byB8IDxsZW5ndGgtcGVyY2VudGFnZT4iLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkU3OSIsIkZGNjgiLCJTMTQuMSIsIkM2OSIsIk81NiJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9zY3JvbGwtcGFkZGluZy10b3AifV0sZGVzY3JpcHRpb246IlRoZSBzY3JvbGwtcGFkZGluZy10b3AgcHJvcGVydHkgZGVmaW5lcyBvZmZzZXRzIGZvciB0aGUgdG9wIG9mIHRoZSBvcHRpbWFsIHZpZXdpbmcgcmVnaW9uIG9mIHRoZSBzY3JvbGxwb3J0OiB0aGUgcmVnaW9uIHVzZWQgYXMgdGhlIHRhcmdldCByZWdpb24gZm9yIHBsYWNpbmcgdGhpbmdzIGluIHZpZXcgb2YgdGhlIHVzZXIuIFRoaXMgYWxsb3dzIHRoZSBhdXRob3IgdG8gZXhjbHVkZSByZWdpb25zIG9mIHRoZSBzY3JvbGxwb3J0IHRoYXQgYXJlIG9ic2N1cmVkIGJ5IG90aGVyIGNvbnRlbnQgKHN1Y2ggYXMgZml4ZWQtcG9zaXRpb25lZCB0b29sYmFycyBvciBzaWRlYmFycykgb3Igc2ltcGx5IHRvIHB1dCBtb3JlIGJyZWF0aGluZyByb29tIGJldHdlZW4gYSB0YXJnZXRlZCBlbGVtZW50IGFuZCB0aGUgZWRnZXMgb2YgdGhlIHNjcm9sbHBvcnQuIn0se25hbWU6InNjcm9sbC1zbmFwLWFsaWduIixzeW50YXg6Ilsgbm9uZSB8IHN0YXJ0IHwgZW5kIHwgY2VudGVyIF17MSwyfSIscmVsZXZhbmNlOjUyLGJyb3dzZXJzOlsiRTc5IiwiRkY2OCIsIlMxMSIsIkM2OSIsIk81NiJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9zY3JvbGwtc25hcC1hbGlnbiJ9XSxkZXNjcmlwdGlvbjoiVGhlIHNjcm9sbC1zbmFwLWFsaWduIHByb3BlcnR5IHNwZWNpZmllcyB0aGUgYm944oCZcyBzbmFwIHBvc2l0aW9uIGFzIGFuIGFsaWdubWVudCBvZiBpdHMgc25hcCBhcmVhIChhcyB0aGUgYWxpZ25tZW50IHN1YmplY3QpIHdpdGhpbiBpdHMgc25hcCBjb250YWluZXLigJlzIHNuYXBwb3J0IChhcyB0aGUgYWxpZ25tZW50IGNvbnRhaW5lcikuIFRoZSB0d28gdmFsdWVzIHNwZWNpZnkgdGhlIHNuYXBwaW5nIGFsaWdubWVudCBpbiB0aGUgYmxvY2sgYXhpcyBhbmQgaW5saW5lIGF4aXMsIHJlc3BlY3RpdmVseS4gSWYgb25seSBvbmUgdmFsdWUgaXMgc3BlY2lmaWVkLCB0aGUgc2Vjb25kIHZhbHVlIGRlZmF1bHRzIHRvIHRoZSBzYW1lIHZhbHVlLiJ9LHtuYW1lOiJzY3JvbGwtc25hcC1zdG9wIixzeW50YXg6Im5vcm1hbCB8IGFsd2F5cyIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTc5IiwiUzE1IiwiQzc1IiwiTzYyIl0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3Njcm9sbC1zbmFwLXN0b3AifV0sZGVzY3JpcHRpb246J1RoZSBzY3JvbGwtc25hcC1zdG9wIENTUyBwcm9wZXJ0eSBkZWZpbmVzIHdoZXRoZXIgdGhlIHNjcm9sbCBjb250YWluZXIgaXMgYWxsb3dlZCB0byAicGFzcyBvdmVyIiBwb3NzaWJsZSBzbmFwIHBvc2l0aW9ucy4nfSx7bmFtZToic2Nyb2xsLXNuYXAtdHlwZS14IixzdGF0dXM6Im9ic29sZXRlIixzeW50YXg6Im5vbmUgfCBtYW5kYXRvcnkgfCBwcm94aW1pdHkiLHJlbGV2YW5jZTowLGJyb3dzZXJzOlsiRkYzOSIsIlM5Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3Njcm9sbC1zbmFwLXR5cGUteCJ9XSxkZXNjcmlwdGlvbjoiVGhlIHNjcm9sbC1zbmFwLXR5cGUteCBDU1MgcHJvcGVydHkgZGVmaW5lcyBob3cgc3RyaWN0bHkgc25hcCBwb2ludHMgYXJlIGVuZm9yY2VkIG9uIHRoZSBob3Jpem9udGFsIGF4aXMgb2YgdGhlIHNjcm9sbCBjb250YWluZXIgaW4gY2FzZSB0aGVyZSBpcyBvbmUuXG5cblNwZWNpZnlpbmcgYW55IHByZWNpc2UgYW5pbWF0aW9ucyBvciBwaHlzaWNzIHVzZWQgdG8gZW5mb3JjZSB0aG9zZSBzbmFwIHBvaW50cyBpcyBub3QgY292ZXJlZCBieSB0aGlzIHByb3BlcnR5IGJ1dCBpbnN0ZWFkIGxlZnQgdXAgdG8gdGhlIHVzZXIgYWdlbnQuIn0se25hbWU6InNjcm9sbC1zbmFwLXR5cGUteSIsc3RhdHVzOiJvYnNvbGV0ZSIsc3ludGF4OiJub25lIHwgbWFuZGF0b3J5IHwgcHJveGltaXR5IixyZWxldmFuY2U6MCxicm93c2VyczpbIkZGMzkiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1Mvc2Nyb2xsLXNuYXAtdHlwZS15In1dLGRlc2NyaXB0aW9uOiJUaGUgc2Nyb2xsLXNuYXAtdHlwZS15IENTUyBwcm9wZXJ0eSBkZWZpbmVzIGhvdyBzdHJpY3RseSBzbmFwIHBvaW50cyBhcmUgZW5mb3JjZWQgb24gdGhlIHZlcnRpY2FsIGF4aXMgb2YgdGhlIHNjcm9sbCBjb250YWluZXIgaW4gY2FzZSB0aGVyZSBpcyBvbmUuXG5cblNwZWNpZnlpbmcgYW55IHByZWNpc2UgYW5pbWF0aW9ucyBvciBwaHlzaWNzIHVzZWQgdG8gZW5mb3JjZSB0aG9zZSBzbmFwIHBvaW50cyBpcyBub3QgY292ZXJlZCBieSB0aGlzIHByb3BlcnR5IGJ1dCBpbnN0ZWFkIGxlZnQgdXAgdG8gdGhlIHVzZXIgYWdlbnQuIn0se25hbWU6InRleHQtY29tYmluZS11cHJpZ2h0IixzeW50YXg6Im5vbmUgfCBhbGwgfCBbIGRpZ2l0cyA8aW50ZWdlcj4/IF0iLHJlbGV2YW5jZTo1MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvdGV4dC1jb21iaW5lLXVwcmlnaHQifV0sZGVzY3JpcHRpb246IlRoZSB0ZXh0LWNvbWJpbmUtdXByaWdodCBDU1MgcHJvcGVydHkgc3BlY2lmaWVzIHRoZSBjb21iaW5hdGlvbiBvZiBtdWx0aXBsZSBjaGFyYWN0ZXJzIGludG8gdGhlIHNwYWNlIG9mIGEgc2luZ2xlIGNoYXJhY3Rlci4gSWYgdGhlIGNvbWJpbmVkIHRleHQgaXMgd2lkZXIgdGhhbiAxZW0sIHRoZSB1c2VyIGFnZW50IG11c3QgZml0IHRoZSBjb250ZW50cyB3aXRoaW4gMWVtLiBUaGUgcmVzdWx0aW5nIGNvbXBvc2l0aW9uIGlzIHRyZWF0ZWQgYXMgYSBzaW5nbGUgdXByaWdodCBnbHlwaCBmb3IgbGF5b3V0IGFuZCBkZWNvcmF0aW9uLiBUaGlzIHByb3BlcnR5IG9ubHkgaGFzIGFuIGVmZmVjdCBpbiB2ZXJ0aWNhbCB3cml0aW5nIG1vZGVzLlxuXG5UaGlzIGlzIHVzZWQgdG8gcHJvZHVjZSBhbiBlZmZlY3QgdGhhdCBpcyBrbm93biBhcyB0YXRlLWNoxasteW9rbyAo57im5Lit5qiqKSBpbiBKYXBhbmVzZSwgb3IgYXMg55u05pu45qmr5ZCRIGluIENoaW5lc2UuIn0se25hbWU6InRleHQtZGVjb3JhdGlvbi1za2lwIixzdGF0dXM6ImV4cGVyaW1lbnRhbCIsc3ludGF4OiJub25lIHwgWyBvYmplY3RzIHx8IFsgc3BhY2VzIHwgWyBsZWFkaW5nLXNwYWNlcyB8fCB0cmFpbGluZy1zcGFjZXMgXSBdIHx8IGVkZ2VzIHx8IGJveC1kZWNvcmF0aW9uIF0iLHJlbGV2YW5jZTo1Mixicm93c2VyczpbIlMxMi4xIiwiQzU3IiwiTzQ0Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3RleHQtZGVjb3JhdGlvbi1za2lwIn1dLGRlc2NyaXB0aW9uOiJUaGUgdGV4dC1kZWNvcmF0aW9uLXNraXAgQ1NTIHByb3BlcnR5IHNwZWNpZmllcyB3aGF0IHBhcnRzIG9mIHRoZSBlbGVtZW504oCZcyBjb250ZW50IGFueSB0ZXh0IGRlY29yYXRpb24gYWZmZWN0aW5nIHRoZSBlbGVtZW50IG11c3Qgc2tpcCBvdmVyLiBJdCBjb250cm9scyBhbGwgdGV4dCBkZWNvcmF0aW9uIGxpbmVzIGRyYXduIGJ5IHRoZSBlbGVtZW50IGFuZCBhbHNvIGFueSB0ZXh0IGRlY29yYXRpb24gbGluZXMgZHJhd24gYnkgaXRzIGFuY2VzdG9ycy4ifSx7bmFtZToidGV4dC1kZWNvcmF0aW9uLXNraXAtaW5rIixzeW50YXg6ImF1dG8gfCBhbGwgfCBub25lIixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFNzkiLCJGRjcwIiwiUzE1LjQiLCJDNjQiLCJPNTAiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvdGV4dC1kZWNvcmF0aW9uLXNraXAtaW5rIn1dLGRlc2NyaXB0aW9uOiJUaGUgdGV4dC1kZWNvcmF0aW9uLXNraXAtaW5rIENTUyBwcm9wZXJ0eSBzcGVjaWZpZXMgaG93IG92ZXJsaW5lcyBhbmQgdW5kZXJsaW5lcyBhcmUgZHJhd24gd2hlbiB0aGV5IHBhc3Mgb3ZlciBnbHlwaCBhc2NlbmRlcnMgYW5kIGRlc2NlbmRlcnMuIn0se25hbWU6InRleHQtZGVjb3JhdGlvbi10aGlja25lc3MiLHN5bnRheDoiYXV0byB8IGZyb20tZm9udCB8IDxsZW5ndGg+IHwgPHBlcmNlbnRhZ2U+ICIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTg5IiwiRkY3MCIsIlMxMi4xIiwiQzg5IiwiTzc1Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3RleHQtZGVjb3JhdGlvbi10aGlja25lc3MifV0sZGVzY3JpcHRpb246IlRoZSB0ZXh0LWRlY29yYXRpb24tdGhpY2tuZXNzIENTUyBwcm9wZXJ0eSBzZXRzIHRoZSB0aGlja25lc3MsIG9yIHdpZHRoLCBvZiB0aGUgZGVjb3JhdGlvbiBsaW5lIHRoYXQgaXMgdXNlZCBvbiB0ZXh0IGluIGFuIGVsZW1lbnQsIHN1Y2ggYXMgYSBsaW5lLXRocm91Z2gsIHVuZGVybGluZSwgb3Igb3ZlcmxpbmUuIn0se25hbWU6InRleHQtZW1waGFzaXMiLHN5bnRheDoiPCd0ZXh0LWVtcGhhc2lzLXN0eWxlJz4gfHwgPCd0ZXh0LWVtcGhhc2lzLWNvbG9yJz4iLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkU3OSIsIkZGNDYiLCJTNyIsIkMyNSIsIk8xNSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy90ZXh0LWVtcGhhc2lzIn1dLGRlc2NyaXB0aW9uOiJUaGUgdGV4dC1lbXBoYXNpcyBDU1MgcHJvcGVydHkgaXMgYSBzaG9ydGhhbmQgcHJvcGVydHkgZm9yIHNldHRpbmcgdGV4dC1lbXBoYXNpcy1zdHlsZSBhbmQgdGV4dC1lbXBoYXNpcy1jb2xvciBpbiBvbmUgZGVjbGFyYXRpb24uIFRoaXMgcHJvcGVydHkgd2lsbCBhcHBseSB0aGUgc3BlY2lmaWVkIGVtcGhhc2lzIG1hcmsgdG8gZWFjaCBjaGFyYWN0ZXIgb2YgdGhlIGVsZW1lbnQncyB0ZXh0LCBleGNlcHQgc2VwYXJhdG9yIGNoYXJhY3RlcnMsIGxpa2Ugc3BhY2VzLCAgYW5kIGNvbnRyb2wgY2hhcmFjdGVycy4ifSx7bmFtZToidGV4dC1lbXBoYXNpcy1jb2xvciIsc3ludGF4OiI8Y29sb3I+IixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFNzkiLCJGRjQ2IiwiUzciLCJDMjUiLCJPMTUiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvdGV4dC1lbXBoYXNpcy1jb2xvciJ9XSxkZXNjcmlwdGlvbjoiVGhlIHRleHQtZW1waGFzaXMtY29sb3IgQ1NTIHByb3BlcnR5IGRlZmluZXMgdGhlIGNvbG9yIHVzZWQgdG8gZHJhdyBlbXBoYXNpcyBtYXJrcyBvbiB0ZXh0IGJlaW5nIHJlbmRlcmVkIGluIHRoZSBIVE1MIGRvY3VtZW50LiBUaGlzIHZhbHVlIGNhbiBhbHNvIGJlIHNldCBhbmQgcmVzZXQgdXNpbmcgdGhlIHRleHQtZW1waGFzaXMgc2hvcnRoYW5kLiJ9LHtuYW1lOiJ0ZXh0LWVtcGhhc2lzLXBvc2l0aW9uIixzeW50YXg6Ilsgb3ZlciB8IHVuZGVyIF0gJiYgWyByaWdodCB8IGxlZnQgXSIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTc5IiwiRkY0NiIsIlM3IiwiQzI1IiwiTzE1Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3RleHQtZW1waGFzaXMtcG9zaXRpb24ifV0sZGVzY3JpcHRpb246IlRoZSB0ZXh0LWVtcGhhc2lzLXBvc2l0aW9uIENTUyBwcm9wZXJ0eSBkZXNjcmliZXMgd2hlcmUgZW1waGFzaXMgbWFya3MgYXJlIGRyYXduIGF0LiBUaGUgZWZmZWN0IG9mIGVtcGhhc2lzIG1hcmtzIG9uIHRoZSBsaW5lIGhlaWdodCBpcyB0aGUgc2FtZSBhcyBmb3IgcnVieSB0ZXh0OiBpZiB0aGVyZSBpc24ndCBlbm91Z2ggcGxhY2UsIHRoZSBsaW5lIGhlaWdodCBpcyBpbmNyZWFzZWQuIn0se25hbWU6InRleHQtZW1waGFzaXMtc3R5bGUiLHN5bnRheDoibm9uZSB8IFsgWyBmaWxsZWQgfCBvcGVuIF0gfHwgWyBkb3QgfCBjaXJjbGUgfCBkb3VibGUtY2lyY2xlIHwgdHJpYW5nbGUgfCBzZXNhbWUgXSBdIHwgPHN0cmluZz4iLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkU3OSIsIkZGNDYiLCJTNyIsIkMyNSIsIk8xNSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy90ZXh0LWVtcGhhc2lzLXN0eWxlIn1dLGRlc2NyaXB0aW9uOiJUaGUgdGV4dC1lbXBoYXNpcy1zdHlsZSBDU1MgcHJvcGVydHkgZGVmaW5lcyB0aGUgdHlwZSBvZiBlbXBoYXNpcyB1c2VkLiBJdCBjYW4gYWxzbyBiZSBzZXQsIGFuZCByZXNldCwgdXNpbmcgdGhlIHRleHQtZW1waGFzaXMgc2hvcnRoYW5kLiJ9LHtuYW1lOiJ0ZXh0LXNpemUtYWRqdXN0IixzdGF0dXM6ImV4cGVyaW1lbnRhbCIsc3ludGF4OiJub25lIHwgYXV0byB8IDxwZXJjZW50YWdlPiIscmVsZXZhbmNlOjU3LGJyb3dzZXJzOlsiRTc5IiwiQzU0IiwiTzQxIl0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3RleHQtc2l6ZS1hZGp1c3QifV0sZGVzY3JpcHRpb246IlRoZSB0ZXh0LXNpemUtYWRqdXN0IENTUyBwcm9wZXJ0eSBjb250cm9scyB0aGUgdGV4dCBpbmZsYXRpb24gYWxnb3JpdGhtIHVzZWQgb24gc29tZSBzbWFydHBob25lcyBhbmQgdGFibGV0cy4gT3RoZXIgYnJvd3NlcnMgd2lsbCBpZ25vcmUgdGhpcyBwcm9wZXJ0eS4ifSx7bmFtZToidGV4dC11bmRlcmxpbmUtb2Zmc2V0IixzeW50YXg6ImF1dG8gfCA8bGVuZ3RoPiB8IDxwZXJjZW50YWdlPiAiLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkU4NyIsIkZGNzAiLCJTMTIuMSIsIkM4NyIsIk83MyJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy90ZXh0LXVuZGVybGluZS1vZmZzZXQifV0sZGVzY3JpcHRpb246IlRoZSB0ZXh0LXVuZGVybGluZS1vZmZzZXQgQ1NTIHByb3BlcnR5IHNldHMgdGhlIG9mZnNldCBkaXN0YW5jZSBvZiBhbiB1bmRlcmxpbmUgdGV4dCBkZWNvcmF0aW9uIGxpbmUgKGFwcGxpZWQgdXNpbmcgdGV4dC1kZWNvcmF0aW9uKSBmcm9tIGl0cyBvcmlnaW5hbCBwb3NpdGlvbi4ifSx7bmFtZToidHJhbnNmb3JtLWJveCIsc3ludGF4OiJjb250ZW50LWJveCB8IGJvcmRlci1ib3ggfCBmaWxsLWJveCB8IHN0cm9rZS1ib3ggfCB2aWV3LWJveCIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTc5IiwiRkY1NSIsIlMxMSIsIkM2NCIsIk81MSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy90cmFuc2Zvcm0tYm94In1dLGRlc2NyaXB0aW9uOiJUaGUgdHJhbnNmb3JtLWJveCBDU1MgcHJvcGVydHkgZGVmaW5lcyB0aGUgbGF5b3V0IGJveCB0byB3aGljaCB0aGUgdHJhbnNmb3JtIGFuZCB0cmFuc2Zvcm0tb3JpZ2luIHByb3BlcnRpZXMgcmVsYXRlLiJ9LHtuYW1lOiJ0cmFuc2xhdGUiLHN5bnRheDoibm9uZSB8IDxsZW5ndGgtcGVyY2VudGFnZT4gWyA8bGVuZ3RoLXBlcmNlbnRhZ2U+IDxsZW5ndGg+PyBdPyIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRkY3MiIsIlMxNC4xIl0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3RyYW5zbGF0ZSJ9XSxkZXNjcmlwdGlvbjoiVGhlIHRyYW5zbGF0ZSBDU1MgcHJvcGVydHkgYWxsb3dzIHlvdSB0byBzcGVjaWZ5IHRyYW5zbGF0aW9uIHRyYW5zZm9ybXMgaW5kaXZpZHVhbGx5IGFuZCBpbmRlcGVuZGVudGx5IG9mIHRoZSB0cmFuc2Zvcm0gcHJvcGVydHkuIFRoaXMgbWFwcyBiZXR0ZXIgdG8gdHlwaWNhbCB1c2VyIGludGVyZmFjZSB1c2FnZSwgYW5kIHNhdmVzIGhhdmluZyB0byByZW1lbWJlciB0aGUgZXhhY3Qgb3JkZXIgb2YgdHJhbnNmb3JtIGZ1bmN0aW9ucyB0byBzcGVjaWZ5IGluIHRoZSB0cmFuc2Zvcm0gdmFsdWUuIn0se25hbWU6IndoaXRlLXNwYWNlIixzeW50YXg6Im5vcm1hbCB8IHByZSB8IG5vd3JhcCB8IHByZS13cmFwIHwgcHJlLWxpbmUgfCBicmVhay1zcGFjZXMiLHJlbGV2YW5jZTo5MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1Mvd2hpdGUtc3BhY2UifV0sZGVzY3JpcHRpb246IlNwZWNpZmllcyBob3cgd2hpdGVzcGFjZSBpcyBoYW5kbGVkIGluIGFuIGVsZW1lbnQuIn0se25hbWU6InNwZWFrLWFzIixzeW50YXg6ImF1dG8gfCBidWxsZXRzIHwgbnVtYmVycyB8IHdvcmRzIHwgc3BlbGwtb3V0IHwgPGNvdW50ZXItc3R5bGUtbmFtZT4iLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiVGhlIHNwZWFrLWFzIGRlc2NyaXB0b3Igc3BlY2lmaWVzIGhvdyBhIGNvdW50ZXIgc3ltYm9sIGNvbnN0cnVjdGVkIHdpdGggYSBnaXZlbiBAY291bnRlci1zdHlsZSB3aWxsIGJlIHJlcHJlc2VudGVkIGluIHRoZSBzcG9rZW4gZm9ybS4gRm9yIGV4YW1wbGUsIGFuIGF1dGhvciBjYW4gc3BlY2lmeSBhIGNvdW50ZXIgc3ltYm9sIHRvIGJlIGVpdGhlciBzcG9rZW4gYXMgaXRzIG51bWVyaWNhbCB2YWx1ZSBvciBqdXN0IHJlcHJlc2VudGVkIHdpdGggYW4gYXVkaW8gY3VlLiJ9LHtuYW1lOiJhc2NlbnQtb3ZlcnJpZGUiLHN0YXR1czoiZXhwZXJpbWVudGFsIixzeW50YXg6Im5vcm1hbCB8IDxwZXJjZW50YWdlPiIscmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJEZXNjcmliZXMgdGhlIGFzY2VudCBtZXRyaWMgb2YgYSBmb250LiJ9LHtuYW1lOiJkZXNjZW50LW92ZXJyaWRlIixzdGF0dXM6ImV4cGVyaW1lbnRhbCIsc3ludGF4OiJub3JtYWwgfCA8cGVyY2VudGFnZT4iLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiRGVzY3JpYmVzIHRoZSBkZXNjZW50IG1ldHJpYyBvZiBhIGZvbnQuIn0se25hbWU6ImZvbnQtZGlzcGxheSIsc3RhdHVzOiJleHBlcmltZW50YWwiLHN5bnRheDoiWyBhdXRvIHwgYmxvY2sgfCBzd2FwIHwgZmFsbGJhY2sgfCBvcHRpb25hbCBdIixyZWxldmFuY2U6NzAsZGVzY3JpcHRpb246IlRoZSBmb250LWRpc3BsYXkgZGVzY3JpcHRvciBkZXRlcm1pbmVzIGhvdyBhIGZvbnQgZmFjZSBpcyBkaXNwbGF5ZWQgYmFzZWQgb24gd2hldGhlciBhbmQgd2hlbiBpdCBpcyBkb3dubG9hZGVkIGFuZCByZWFkeSB0byB1c2UuIn0se25hbWU6ImxpbmUtZ2FwLW92ZXJyaWRlIixzdGF0dXM6ImV4cGVyaW1lbnRhbCIsc3ludGF4OiJub3JtYWwgfCA8cGVyY2VudGFnZT4iLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiRGVzY3JpYmVzIHRoZSBsaW5lLWdhcCBtZXRyaWMgb2YgYSBmb250LiJ9LHtuYW1lOiJzaXplLWFkanVzdCIsc3RhdHVzOiJleHBlcmltZW50YWwiLHN5bnRheDoiPHBlcmNlbnRhZ2U+IixyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkEgbXVsdGlwbGllciBmb3IgZ2x5cGggb3V0bGluZXMgYW5kIG1ldHJpY3Mgb2YgYSBmb250LiJ9LHtuYW1lOiJibGVlZCIsc3ludGF4OiJhdXRvIHwgPGxlbmd0aD4iLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiVGhlIGJsZWVkIENTUyBhdC1ydWxlIGRlc2NyaXB0b3IsIHVzZWQgd2l0aCB0aGUgQHBhZ2UgYXQtcnVsZSwgc3BlY2lmaWVzIHRoZSBleHRlbnQgb2YgdGhlIHBhZ2UgYmxlZWQgYXJlYSBvdXRzaWRlIHRoZSBwYWdlIGJveC4gVGhpcyBwcm9wZXJ0eSBvbmx5IGhhcyBlZmZlY3QgaWYgY3JvcCBtYXJrcyBhcmUgZW5hYmxlZCB1c2luZyB0aGUgbWFya3MgcHJvcGVydHkuIn0se25hbWU6Im1hcmtzIixzeW50YXg6Im5vbmUgfCBbIGNyb3AgfHwgY3Jvc3MgXSIscmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJUaGUgbWFya3MgQ1NTIGF0LXJ1bGUgZGVzY3JpcHRvciwgdXNlZCB3aXRoIHRoZSBAcGFnZSBhdC1ydWxlLCBhZGRzIGNyb3AgYW5kL29yIGNyb3NzIG1hcmtzIHRvIHRoZSBwcmVzZW50YXRpb24gb2YgdGhlIGRvY3VtZW50LiBDcm9wIG1hcmtzIGluZGljYXRlIHdoZXJlIHRoZSBwYWdlIHNob3VsZCBiZSBjdXQuIENyb3NzIG1hcmtzIGFyZSB1c2VkIHRvIGFsaWduIHNoZWV0cy4ifSx7bmFtZToic3ludGF4IixzdGF0dXM6ImV4cGVyaW1lbnRhbCIsc3ludGF4OiI8c3RyaW5nPiIscmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgdGhlIHN5bnRheCBvZiB0aGUgY3VzdG9tIHByb3BlcnR5IHJlZ2lzdHJhdGlvbiByZXByZXNlbnRlZCBieSB0aGUgQHByb3BlcnR5IHJ1bGUsIGNvbnRyb2xsaW5nIGhvdyB0aGUgcHJvcGVydHnigJlzIHZhbHVlIGlzIHBhcnNlZCBhdCBjb21wdXRlZCB2YWx1ZSB0aW1lLiJ9LHtuYW1lOiJpbmhlcml0cyIsc3RhdHVzOiJleHBlcmltZW50YWwiLHN5bnRheDoidHJ1ZSB8IGZhbHNlIixyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlNwZWNpZmllcyB0aGUgaW5oZXJpdCBmbGFnIG9mIHRoZSBjdXN0b20gcHJvcGVydHkgcmVnaXN0cmF0aW9uIHJlcHJlc2VudGVkIGJ5IHRoZSBAcHJvcGVydHkgcnVsZSwgY29udHJvbGxpbmcgd2hldGhlciBvciBub3QgdGhlIHByb3BlcnR5IGluaGVyaXRzIGJ5IGRlZmF1bHQuIn0se25hbWU6ImluaXRpYWwtdmFsdWUiLHN0YXR1czoiZXhwZXJpbWVudGFsIixzeW50YXg6IjxzdHJpbmc+IixyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlNwZWNpZmllcyB0aGUgaW5pdGlhbCB2YWx1ZSBvZiB0aGUgY3VzdG9tIHByb3BlcnR5IHJlZ2lzdHJhdGlvbiByZXByZXNlbnRlZCBieSB0aGUgQHByb3BlcnR5IHJ1bGUsIGNvbnRyb2xsaW5nIHRoZSBwcm9wZXJ0eeKAmXMgaW5pdGlhbCB2YWx1ZS4ifSx7bmFtZToibWF4LXpvb20iLHN5bnRheDoiYXV0byB8IDxudW1iZXI+IHwgPHBlcmNlbnRhZ2U+IixyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlRoZSBtYXgtem9vbSBDU1MgZGVzY3JpcHRvciBzZXRzIHRoZSBtYXhpbXVtIHpvb20gZmFjdG9yIG9mIGEgZG9jdW1lbnQgZGVmaW5lZCBieSB0aGUgQHZpZXdwb3J0IGF0LXJ1bGUuIFRoZSBicm93c2VyIHdpbGwgbm90IHpvb20gaW4gYW55IGZ1cnRoZXIgdGhhbiB0aGlzLCB3aGV0aGVyIGF1dG9tYXRpY2FsbHkgb3IgYXQgdGhlIHVzZXIncyByZXF1ZXN0LlxuXG5BIHpvb20gZmFjdG9yIG9mIDEuMCBvciAxMDAlIGNvcnJlc3BvbmRzIHRvIG5vIHpvb21pbmcuIExhcmdlciB2YWx1ZXMgYXJlIHpvb21lZCBpbi4gU21hbGxlciB2YWx1ZXMgYXJlIHpvb21lZCBvdXQuIn0se25hbWU6Im1pbi16b29tIixzeW50YXg6ImF1dG8gfCA8bnVtYmVyPiB8IDxwZXJjZW50YWdlPiIscmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJUaGUgbWluLXpvb20gQ1NTIGRlc2NyaXB0b3Igc2V0cyB0aGUgbWluaW11bSB6b29tIGZhY3RvciBvZiBhIGRvY3VtZW50IGRlZmluZWQgYnkgdGhlIEB2aWV3cG9ydCBhdC1ydWxlLiBUaGUgYnJvd3NlciB3aWxsIG5vdCB6b29tIG91dCBhbnkgZnVydGhlciB0aGFuIHRoaXMsIHdoZXRoZXIgYXV0b21hdGljYWxseSBvciBhdCB0aGUgdXNlcidzIHJlcXVlc3QuXG5cbkEgem9vbSBmYWN0b3Igb2YgMS4wIG9yIDEwMCUgY29ycmVzcG9uZHMgdG8gbm8gem9vbWluZy4gTGFyZ2VyIHZhbHVlcyBhcmUgem9vbWVkIGluLiBTbWFsbGVyIHZhbHVlcyBhcmUgem9vbWVkIG91dC4ifSx7bmFtZToib3JpZW50YXRpb24iLHN5bnRheDoiYXV0byB8IHBvcnRyYWl0IHwgbGFuZHNjYXBlIixyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlRoZSBvcmllbnRhdGlvbiBDU1MgQG1lZGlhIG1lZGlhIGZlYXR1cmUgY2FuIGJlIHVzZWQgdG8gYXBwbHkgc3R5bGVzIGJhc2VkIG9uIHRoZSBvcmllbnRhdGlvbiBvZiB0aGUgdmlld3BvcnQgKG9yIHRoZSBwYWdlIGJveCwgZm9yIHBhZ2VkIG1lZGlhKS4ifSx7bmFtZToidXNlci16b29tIixzeW50YXg6Inpvb20gfCBmaXhlZCIscmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJUaGUgdXNlci16b29tIENTUyBkZXNjcmlwdG9yIGNvbnRyb2xzIHdoZXRoZXIgb3Igbm90IHRoZSB1c2VyIGNhbiBjaGFuZ2UgdGhlIHpvb20gZmFjdG9yIG9mIGEgZG9jdW1lbnQgZGVmaW5lZCBieSBAdmlld3BvcnQuIn0se25hbWU6InZpZXdwb3J0LWZpdCIsc3ludGF4OiJhdXRvIHwgY29udGFpbiB8IGNvdmVyIixyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlRoZSBib3JkZXItYmxvY2stc3R5bGUgQ1NTIHByb3BlcnR5IGRlZmluZXMgdGhlIHN0eWxlIG9mIHRoZSBsb2dpY2FsIGJsb2NrIGJvcmRlcnMgb2YgYW4gZWxlbWVudCwgd2hpY2ggbWFwcyB0byBhIHBoeXNpY2FsIGJvcmRlciBzdHlsZSBkZXBlbmRpbmcgb24gdGhlIGVsZW1lbnQncyB3cml0aW5nIG1vZGUsIGRpcmVjdGlvbmFsaXR5LCBhbmQgdGV4dCBvcmllbnRhdGlvbi4ifV0sYXREaXJlY3RpdmVzOlt7bmFtZToiQGNoYXJzZXQiLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9AY2hhcnNldCJ9XSxkZXNjcmlwdGlvbjoiRGVmaW5lcyBjaGFyYWN0ZXIgc2V0IG9mIHRoZSBkb2N1bWVudC4ifSx7bmFtZToiQGNvdW50ZXItc3R5bGUiLGJyb3dzZXJzOlsiRTkxIiwiRkYzMyIsIkM5MSIsIk83NyJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9AY291bnRlci1zdHlsZSJ9XSxkZXNjcmlwdGlvbjoiRGVmaW5lcyBhIGN1c3RvbSBjb3VudGVyIHN0eWxlLiJ9LHtuYW1lOiJAZm9udC1mYWNlIixyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvQGZvbnQtZmFjZSJ9XSxkZXNjcmlwdGlvbjoiQWxsb3dzIGZvciBsaW5raW5nIHRvIGZvbnRzIHRoYXQgYXJlIGF1dG9tYXRpY2FsbHkgYWN0aXZhdGVkIHdoZW4gbmVlZGVkLiBUaGlzIHBlcm1pdHMgYXV0aG9ycyB0byB3b3JrIGFyb3VuZCB0aGUgbGltaXRhdGlvbiBvZiAnd2ViLXNhZmUnIGZvbnRzLCBhbGxvd2luZyBmb3IgY29uc2lzdGVudCByZW5kZXJpbmcgaW5kZXBlbmRlbnQgb2YgdGhlIGZvbnRzIGF2YWlsYWJsZSBpbiBhIGdpdmVuIHVzZXIncyBlbnZpcm9ubWVudC4ifSx7bmFtZToiQGZvbnQtZmVhdHVyZS12YWx1ZXMiLGJyb3dzZXJzOlsiRkYzNCIsIlM5LjEiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvQGZvbnQtZmVhdHVyZS12YWx1ZXMifV0sZGVzY3JpcHRpb246IkRlZmluZXMgbmFtZWQgdmFsdWVzIGZvciB0aGUgaW5kaWNlcyB1c2VkIHRvIHNlbGVjdCBhbHRlcm5hdGUgZ2x5cGhzIGZvciBhIGdpdmVuIGZvbnQgZmFtaWx5LiJ9LHtuYW1lOiJAaW1wb3J0IixyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvQGltcG9ydCJ9XSxkZXNjcmlwdGlvbjoiSW5jbHVkZXMgY29udGVudCBvZiBhbm90aGVyIGZpbGUuIn0se25hbWU6IkBrZXlmcmFtZXMiLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9Aa2V5ZnJhbWVzIn1dLGRlc2NyaXB0aW9uOiJEZWZpbmVzIHNldCBvZiBhbmltYXRpb24ga2V5IGZyYW1lcy4ifSx7bmFtZToiQG1lZGlhIixyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvQG1lZGlhIn1dLGRlc2NyaXB0aW9uOiJEZWZpbmVzIGEgc3R5bGVzaGVldCBmb3IgYSBwYXJ0aWN1bGFyIG1lZGlhIHR5cGUuIn0se25hbWU6IkAtbW96LWRvY3VtZW50Iixicm93c2VyczpbIkZGMS44Il0sZGVzY3JpcHRpb246IkdlY2tvLXNwZWNpZmljIGF0LXJ1bGUgdGhhdCByZXN0cmljdHMgdGhlIHN0eWxlIHJ1bGVzIGNvbnRhaW5lZCB3aXRoaW4gaXQgYmFzZWQgb24gdGhlIFVSTCBvZiB0aGUgZG9jdW1lbnQuIn0se25hbWU6IkAtbW96LWtleWZyYW1lcyIsYnJvd3NlcnM6WyJGRjUiXSxkZXNjcmlwdGlvbjoiRGVmaW5lcyBzZXQgb2YgYW5pbWF0aW9uIGtleSBmcmFtZXMuIn0se25hbWU6IkAtbXMtdmlld3BvcnQiLGJyb3dzZXJzOlsiRSIsIklFMTAiXSxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHRoZSBzaXplLCB6b29tIGZhY3RvciwgYW5kIG9yaWVudGF0aW9uIG9mIHRoZSB2aWV3cG9ydC4ifSx7bmFtZToiQG5hbWVzcGFjZSIscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL0BuYW1lc3BhY2UifV0sZGVzY3JpcHRpb246IkRlY2xhcmVzIGEgcHJlZml4IGFuZCBhc3NvY2lhdGVzIGl0IHdpdGggYSBuYW1lc3BhY2UgbmFtZS4ifSx7bmFtZToiQC1vLWtleWZyYW1lcyIsYnJvd3NlcnM6WyJPMTIiXSxkZXNjcmlwdGlvbjoiRGVmaW5lcyBzZXQgb2YgYW5pbWF0aW9uIGtleSBmcmFtZXMuIn0se25hbWU6IkAtby12aWV3cG9ydCIsYnJvd3NlcnM6WyJPMTEiXSxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHRoZSBzaXplLCB6b29tIGZhY3RvciwgYW5kIG9yaWVudGF0aW9uIG9mIHRoZSB2aWV3cG9ydC4ifSx7bmFtZToiQHBhZ2UiLGJyb3dzZXJzOlsiRTEyIiwiRkYxOSIsIkMyIiwiSUU4IiwiTzYiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvQHBhZ2UifV0sZGVzY3JpcHRpb246IkRpcmVjdGl2ZSBkZWZpbmVzIHZhcmlvdXMgcGFnZSBwYXJhbWV0ZXJzLiJ9LHtuYW1lOiJAc3VwcG9ydHMiLGJyb3dzZXJzOlsiRTEyIiwiRkYyMiIsIlM5IiwiQzI4IiwiTzEyLjEiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvQHN1cHBvcnRzIn1dLGRlc2NyaXB0aW9uOiJBIGNvbmRpdGlvbmFsIGdyb3VwIHJ1bGUgd2hvc2UgY29uZGl0aW9uIHRlc3RzIHdoZXRoZXIgdGhlIHVzZXIgYWdlbnQgc3VwcG9ydHMgQ1NTIHByb3BlcnR5OnZhbHVlIHBhaXJzLiJ9LHtuYW1lOiJALXdlYmtpdC1rZXlmcmFtZXMiLGJyb3dzZXJzOlsiQyIsIlM0Il0sZGVzY3JpcHRpb246IkRlZmluZXMgc2V0IG9mIGFuaW1hdGlvbiBrZXkgZnJhbWVzLiJ9XSxwc2V1ZG9DbGFzc2VzOlt7bmFtZToiOmFjdGl2ZSIscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzphY3RpdmUifV0sZGVzY3JpcHRpb246IkFwcGxpZXMgd2hpbGUgYW4gZWxlbWVudCBpcyBiZWluZyBhY3RpdmF0ZWQgYnkgdGhlIHVzZXIuIEZvciBleGFtcGxlLCBiZXR3ZWVuIHRoZSB0aW1lcyB0aGUgdXNlciBwcmVzc2VzIHRoZSBtb3VzZSBidXR0b24gYW5kIHJlbGVhc2VzIGl0LiJ9LHtuYW1lOiI6YW55LWxpbmsiLGJyb3dzZXJzOlsiRTc5IiwiRkY1MCIsIlM5IiwiQzY1IiwiTzUyIl0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzphbnktbGluayJ9XSxkZXNjcmlwdGlvbjoiUmVwcmVzZW50cyBhbiBlbGVtZW50IHRoYXQgYWN0cyBhcyB0aGUgc291cmNlIGFuY2hvciBvZiBhIGh5cGVybGluay4gQXBwbGllcyB0byBib3RoIHZpc2l0ZWQgYW5kIHVudmlzaXRlZCBsaW5rcy4ifSx7bmFtZToiOmNoZWNrZWQiLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy86Y2hlY2tlZCJ9XSxkZXNjcmlwdGlvbjoiUmFkaW8gYW5kIGNoZWNrYm94IGVsZW1lbnRzIGNhbiBiZSB0b2dnbGVkIGJ5IHRoZSB1c2VyLiBTb21lIG1lbnUgaXRlbXMgYXJlICdjaGVja2VkJyB3aGVuIHRoZSB1c2VyIHNlbGVjdHMgdGhlbS4gV2hlbiBzdWNoIGVsZW1lbnRzIGFyZSB0b2dnbGVkICdvbicgdGhlIDpjaGVja2VkIHBzZXVkby1jbGFzcyBhcHBsaWVzLiJ9LHtuYW1lOiI6Y29ybmVyLXByZXNlbnQiLGJyb3dzZXJzOlsiQyIsIlM1Il0sZGVzY3JpcHRpb246Ik5vbi1zdGFuZGFyZC4gSW5kaWNhdGVzIHdoZXRoZXIgb3Igbm90IGEgc2Nyb2xsYmFyIGNvcm5lciBpcyBwcmVzZW50LiJ9LHtuYW1lOiI6ZGVjcmVtZW50Iixicm93c2VyczpbIkMiLCJTNSJdLGRlc2NyaXB0aW9uOiJOb24tc3RhbmRhcmQuIEFwcGxpZXMgdG8gYnV0dG9ucyBhbmQgdHJhY2sgcGllY2VzLiBJbmRpY2F0ZXMgd2hldGhlciBvciBub3QgdGhlIGJ1dHRvbiBvciB0cmFjayBwaWVjZSB3aWxsIGRlY3JlbWVudCB0aGUgdmlld+KAmXMgcG9zaXRpb24gd2hlbiB1c2VkLiJ9LHtuYW1lOiI6ZGVmYXVsdCIsYnJvd3NlcnM6WyJFNzkiLCJGRjQiLCJTNSIsIkMxMCIsIk8xMCJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy86ZGVmYXVsdCJ9XSxkZXNjcmlwdGlvbjoiQXBwbGllcyB0byB0aGUgb25lIG9yIG1vcmUgVUkgZWxlbWVudHMgdGhhdCBhcmUgdGhlIGRlZmF1bHQgYW1vbmcgYSBzZXQgb2Ygc2ltaWxhciBlbGVtZW50cy4gVHlwaWNhbGx5IGFwcGxpZXMgdG8gY29udGV4dCBtZW51IGl0ZW1zLCBidXR0b25zLCBhbmQgc2VsZWN0IGxpc3RzL21lbnVzLiJ9LHtuYW1lOiI6ZGlzYWJsZWQiLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy86ZGlzYWJsZWQifV0sZGVzY3JpcHRpb246IlJlcHJlc2VudHMgdXNlciBpbnRlcmZhY2UgZWxlbWVudHMgdGhhdCBhcmUgaW4gYSBkaXNhYmxlZCBzdGF0ZTsgc3VjaCBlbGVtZW50cyBoYXZlIGEgY29ycmVzcG9uZGluZyBlbmFibGVkIHN0YXRlLiJ9LHtuYW1lOiI6ZG91YmxlLWJ1dHRvbiIsYnJvd3NlcnM6WyJDIiwiUzUiXSxkZXNjcmlwdGlvbjoiTm9uLXN0YW5kYXJkLiBBcHBsaWVzIHRvIGJ1dHRvbnMgYW5kIHRyYWNrIHBpZWNlcy4gQXBwbGllcyB3aGVuIGJvdGggYnV0dG9ucyBhcmUgZGlzcGxheWVkIHRvZ2V0aGVyIGF0IHRoZSBzYW1lIGVuZCBvZiB0aGUgc2Nyb2xsYmFyLiJ9LHtuYW1lOiI6ZW1wdHkiLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy86ZW1wdHkifV0sZGVzY3JpcHRpb246IlJlcHJlc2VudHMgYW4gZWxlbWVudCB0aGF0IGhhcyBubyBjaGlsZHJlbiBhdCBhbGwuIn0se25hbWU6IjplbmFibGVkIixyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOmVuYWJsZWQifV0sZGVzY3JpcHRpb246IlJlcHJlc2VudHMgdXNlciBpbnRlcmZhY2UgZWxlbWVudHMgdGhhdCBhcmUgaW4gYW4gZW5hYmxlZCBzdGF0ZTsgc3VjaCBlbGVtZW50cyBoYXZlIGEgY29ycmVzcG9uZGluZyBkaXNhYmxlZCBzdGF0ZS4ifSx7bmFtZToiOmVuZCIsYnJvd3NlcnM6WyJDIiwiUzUiXSxkZXNjcmlwdGlvbjoiTm9uLXN0YW5kYXJkLiBBcHBsaWVzIHRvIGJ1dHRvbnMgYW5kIHRyYWNrIHBpZWNlcy4gSW5kaWNhdGVzIHdoZXRoZXIgdGhlIG9iamVjdCBpcyBwbGFjZWQgYWZ0ZXIgdGhlIHRodW1iLiJ9LHtuYW1lOiI6Zmlyc3QiLGJyb3dzZXJzOlsiRTEyIiwiUzYiLCJDMTgiLCJJRTgiLCJPOS4yIl0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzpmaXJzdCJ9XSxkZXNjcmlwdGlvbjoiV2hlbiBwcmludGluZyBkb3VibGUtc2lkZWQgZG9jdW1lbnRzLCB0aGUgcGFnZSBib3hlcyBvbiBsZWZ0IGFuZCByaWdodCBwYWdlcyBtYXkgYmUgZGlmZmVyZW50LiBUaGlzIGNhbiBiZSBleHByZXNzZWQgdGhyb3VnaCBDU1MgcHNldWRvLWNsYXNzZXMgZGVmaW5lZCBpbiB0aGUgIHBhZ2UgY29udGV4dC4ifSx7bmFtZToiOmZpcnN0LWNoaWxkIixyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOmZpcnN0LWNoaWxkIn1dLGRlc2NyaXB0aW9uOiJTYW1lIGFzIDpudGgtY2hpbGQoMSkuIFJlcHJlc2VudHMgYW4gZWxlbWVudCB0aGF0IGlzIHRoZSBmaXJzdCBjaGlsZCBvZiBzb21lIG90aGVyIGVsZW1lbnQuIn0se25hbWU6IjpmaXJzdC1vZi10eXBlIixyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOmZpcnN0LW9mLXR5cGUifV0sZGVzY3JpcHRpb246IlNhbWUgYXMgOm50aC1vZi10eXBlKDEpLiBSZXByZXNlbnRzIGFuIGVsZW1lbnQgdGhhdCBpcyB0aGUgZmlyc3Qgc2libGluZyBvZiBpdHMgdHlwZSBpbiB0aGUgbGlzdCBvZiBjaGlsZHJlbiBvZiBpdHMgcGFyZW50IGVsZW1lbnQuIn0se25hbWU6Ijpmb2N1cyIscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzpmb2N1cyJ9XSxkZXNjcmlwdGlvbjoiQXBwbGllcyB3aGlsZSBhbiBlbGVtZW50IGhhcyB0aGUgZm9jdXMgKGFjY2VwdHMga2V5Ym9hcmQgb3IgbW91c2UgZXZlbnRzLCBvciBvdGhlciBmb3JtcyBvZiBpbnB1dCkuIn0se25hbWU6IjpmdWxsc2NyZWVuIixyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOmZ1bGxzY3JlZW4ifV0sZGVzY3JpcHRpb246Ik1hdGNoZXMgYW55IGVsZW1lbnQgdGhhdCBoYXMgaXRzIGZ1bGxzY3JlZW4gZmxhZyBzZXQuIn0se25hbWU6IjpmdXR1cmUiLGJyb3dzZXJzOlsiUzciXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOmZ1dHVyZSJ9XSxkZXNjcmlwdGlvbjoiUmVwcmVzZW50cyBhbnkgZWxlbWVudCB0aGF0IGlzIGRlZmluZWQgdG8gb2NjdXIgZW50aXJlbHkgYWZ0ZXIgYSA6Y3VycmVudCBlbGVtZW50LiJ9LHtuYW1lOiI6aG9yaXpvbnRhbCIsYnJvd3NlcnM6WyJDIiwiUzUiXSxkZXNjcmlwdGlvbjoiTm9uLXN0YW5kYXJkLiBBcHBsaWVzIHRvIGFueSBzY3JvbGxiYXIgcGllY2VzIHRoYXQgaGF2ZSBhIGhvcml6b250YWwgb3JpZW50YXRpb24uIn0se25hbWU6Ijpob3N0Iixicm93c2VyczpbIkU3OSIsIkZGNjMiLCJTMTAiLCJDNTQiLCJPNDEiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOmhvc3QifV0sZGVzY3JpcHRpb246IldoZW4gZXZhbHVhdGVkIGluIHRoZSBjb250ZXh0IG9mIGEgc2hhZG93IHRyZWUsIG1hdGNoZXMgdGhlIHNoYWRvdyB0cmVl4oCZcyBob3N0IGVsZW1lbnQuIn0se25hbWU6Ijpob3N0KCkiLGJyb3dzZXJzOlsiQzM1IiwiTzIyIl0sZGVzY3JpcHRpb246IldoZW4gZXZhbHVhdGVkIGluIHRoZSBjb250ZXh0IG9mIGEgc2hhZG93IHRyZWUsIGl0IG1hdGNoZXMgdGhlIHNoYWRvdyB0cmVl4oCZcyBob3N0IGVsZW1lbnQgaWYgdGhlIGhvc3QgZWxlbWVudCwgaW4gaXRzIG5vcm1hbCBjb250ZXh0LCBtYXRjaGVzIHRoZSBzZWxlY3RvciBhcmd1bWVudC4ifSx7bmFtZToiOmhvc3QtY29udGV4dCgpIixicm93c2VyczpbIkMzNSIsIk8yMiJdLGRlc2NyaXB0aW9uOiJUZXN0cyB3aGV0aGVyIHRoZXJlIGlzIGFuIGFuY2VzdG9yLCBvdXRzaWRlIHRoZSBzaGFkb3cgdHJlZSwgd2hpY2ggbWF0Y2hlcyBhIHBhcnRpY3VsYXIgc2VsZWN0b3IuIn0se25hbWU6Ijpob3ZlciIscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzpob3ZlciJ9XSxkZXNjcmlwdGlvbjoiQXBwbGllcyB3aGlsZSB0aGUgdXNlciBkZXNpZ25hdGVzIGFuIGVsZW1lbnQgd2l0aCBhIHBvaW50aW5nIGRldmljZSwgYnV0IGRvZXMgbm90IG5lY2Vzc2FyaWx5IGFjdGl2YXRlIGl0LiBGb3IgZXhhbXBsZSwgYSB2aXN1YWwgdXNlciBhZ2VudCBjb3VsZCBhcHBseSB0aGlzIHBzZXVkby1jbGFzcyB3aGVuIHRoZSBjdXJzb3IgKG1vdXNlIHBvaW50ZXIpIGhvdmVycyBvdmVyIGEgYm94IGdlbmVyYXRlZCBieSB0aGUgZWxlbWVudC4ifSx7bmFtZToiOmluY3JlbWVudCIsYnJvd3NlcnM6WyJDIiwiUzUiXSxkZXNjcmlwdGlvbjoiTm9uLXN0YW5kYXJkLiBBcHBsaWVzIHRvIGJ1dHRvbnMgYW5kIHRyYWNrIHBpZWNlcy4gSW5kaWNhdGVzIHdoZXRoZXIgb3Igbm90IHRoZSBidXR0b24gb3IgdHJhY2sgcGllY2Ugd2lsbCBpbmNyZW1lbnQgdGhlIHZpZXfigJlzIHBvc2l0aW9uIHdoZW4gdXNlZC4ifSx7bmFtZToiOmluZGV0ZXJtaW5hdGUiLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy86aW5kZXRlcm1pbmF0ZSJ9XSxkZXNjcmlwdGlvbjoiQXBwbGllcyB0byBVSSBlbGVtZW50cyB3aG9zZSB2YWx1ZSBpcyBpbiBhbiBpbmRldGVybWluYXRlIHN0YXRlLiJ9LHtuYW1lOiI6aW4tcmFuZ2UiLGJyb3dzZXJzOlsiRTEzIiwiRkYyOSIsIlM1LjEiLCJDMTAiLCJPMTEiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOmluLXJhbmdlIn1dLGRlc2NyaXB0aW9uOiJVc2VkIGluIGNvbmp1bmN0aW9uIHdpdGggdGhlIG1pbiBhbmQgbWF4IGF0dHJpYnV0ZXMsIHdoZXRoZXIgb24gYSByYW5nZSBpbnB1dCwgYSBudW1iZXIgZmllbGQsIG9yIGFueSBvdGhlciB0eXBlcyB0aGF0IGFjY2VwdCB0aG9zZSBhdHRyaWJ1dGVzLiJ9LHtuYW1lOiI6aW52YWxpZCIscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzppbnZhbGlkIn1dLGRlc2NyaXB0aW9uOiJBbiBlbGVtZW50IGlzIDp2YWxpZCBvciA6aW52YWxpZCB3aGVuIGl0IGlzLCByZXNwZWN0aXZlbHksIHZhbGlkIG9yIGludmFsaWQgd2l0aCByZXNwZWN0IHRvIGRhdGEgdmFsaWRpdHkgc2VtYW50aWNzIGRlZmluZWQgYnkgYSBkaWZmZXJlbnQgc3BlY2lmaWNhdGlvbi4ifSx7bmFtZToiOmxhbmcoKSIsYnJvd3NlcnM6WyJFIiwiQyIsIkZGMSIsIklFOCIsIk84IiwiUzMiXSxkZXNjcmlwdGlvbjoiUmVwcmVzZW50cyBhbiBlbGVtZW50IHRoYXQgaXMgaW4gbGFuZ3VhZ2Ugc3BlY2lmaWVkLiJ9LHtuYW1lOiI6bGFzdC1jaGlsZCIscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzpsYXN0LWNoaWxkIn1dLGRlc2NyaXB0aW9uOiJTYW1lIGFzIDpudGgtbGFzdC1jaGlsZCgxKS4gUmVwcmVzZW50cyBhbiBlbGVtZW50IHRoYXQgaXMgdGhlIGxhc3QgY2hpbGQgb2Ygc29tZSBvdGhlciBlbGVtZW50LiJ9LHtuYW1lOiI6bGFzdC1vZi10eXBlIixyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOmxhc3Qtb2YtdHlwZSJ9XSxkZXNjcmlwdGlvbjoiU2FtZSBhcyA6bnRoLWxhc3Qtb2YtdHlwZSgxKS4gUmVwcmVzZW50cyBhbiBlbGVtZW50IHRoYXQgaXMgdGhlIGxhc3Qgc2libGluZyBvZiBpdHMgdHlwZSBpbiB0aGUgbGlzdCBvZiBjaGlsZHJlbiBvZiBpdHMgcGFyZW50IGVsZW1lbnQuIn0se25hbWU6IjpsZWZ0Iixicm93c2VyczpbIkUxMiIsIlM1LjEiLCJDNiIsIklFOCIsIk85LjIiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOmxlZnQifV0sZGVzY3JpcHRpb246IldoZW4gcHJpbnRpbmcgZG91YmxlLXNpZGVkIGRvY3VtZW50cywgdGhlIHBhZ2UgYm94ZXMgb24gbGVmdCBhbmQgcmlnaHQgcGFnZXMgbWF5IGJlIGRpZmZlcmVudC4gVGhpcyBjYW4gYmUgZXhwcmVzc2VkIHRocm91Z2ggQ1NTIHBzZXVkby1jbGFzc2VzIGRlZmluZWQgaW4gdGhlICBwYWdlIGNvbnRleHQuIn0se25hbWU6IjpsaW5rIixyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOmxpbmsifV0sZGVzY3JpcHRpb246IkFwcGxpZXMgdG8gbGlua3MgdGhhdCBoYXZlIG5vdCB5ZXQgYmVlbiB2aXNpdGVkLiJ9LHtuYW1lOiI6bWF0Y2hlcygpIixicm93c2VyczpbIlM5Il0sZGVzY3JpcHRpb246IlRha2VzIGEgc2VsZWN0b3IgbGlzdCBhcyBpdHMgYXJndW1lbnQuIEl0IHJlcHJlc2VudHMgYW4gZWxlbWVudCB0aGF0IGlzIHJlcHJlc2VudGVkIGJ5IGl0cyBhcmd1bWVudC4ifSx7bmFtZToiOi1tb3otYW55KCkiLGJyb3dzZXJzOlsiRkY0Il0sZGVzY3JpcHRpb246IlJlcHJlc2VudHMgYW4gZWxlbWVudCB0aGF0IGlzIHJlcHJlc2VudGVkIGJ5IHRoZSBzZWxlY3RvciBsaXN0IHBhc3NlZCBhcyBpdHMgYXJndW1lbnQuIFN0YW5kYXJkaXplZCBhcyA6bWF0Y2hlcygpLiJ9LHtuYW1lOiI6LW1vei1hbnktbGluayIsYnJvd3NlcnM6WyJGRjEiXSxkZXNjcmlwdGlvbjoiUmVwcmVzZW50cyBhbiBlbGVtZW50IHRoYXQgYWN0cyBhcyB0aGUgc291cmNlIGFuY2hvciBvZiBhIGh5cGVybGluay4gQXBwbGllcyB0byBib3RoIHZpc2l0ZWQgYW5kIHVudmlzaXRlZCBsaW5rcy4ifSx7bmFtZToiOi1tb3otYnJva2VuIixicm93c2VyczpbIkZGMyJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy86LW1vei1icm9rZW4ifV0sZGVzY3JpcHRpb246Ik5vbi1zdGFuZGFyZC4gTWF0Y2hlcyBlbGVtZW50cyByZXByZXNlbnRpbmcgYnJva2VuIGltYWdlcy4ifSx7bmFtZToiOi1tb3otZHJhZy1vdmVyIixicm93c2VyczpbIkZGMSJdLGRlc2NyaXB0aW9uOiJOb24tc3RhbmRhcmQuIE1hdGNoZXMgZWxlbWVudHMgd2hlbiBhIGRyYWctb3ZlciBldmVudCBhcHBsaWVzIHRvIGl0LiJ9LHtuYW1lOiI6LW1vei1maXJzdC1ub2RlIixicm93c2VyczpbIkZGMSJdLGRlc2NyaXB0aW9uOiJOb24tc3RhbmRhcmQuIFJlcHJlc2VudHMgYW4gZWxlbWVudCB0aGF0IGlzIHRoZSBmaXJzdCBjaGlsZCBub2RlIG9mIHNvbWUgb3RoZXIgZWxlbWVudC4ifSx7bmFtZToiOi1tb3otZm9jdXNyaW5nIixicm93c2VyczpbIkZGNCJdLGRlc2NyaXB0aW9uOiJOb24tc3RhbmRhcmQuIE1hdGNoZXMgYW4gZWxlbWVudCB0aGF0IGhhcyBmb2N1cyBhbmQgZm9jdXMgcmluZyBkcmF3aW5nIGlzIGVuYWJsZWQgaW4gdGhlIGJyb3dzZXIuIn0se25hbWU6IjotbW96LWZ1bGwtc2NyZWVuIixicm93c2VyczpbIkZGOSJdLGRlc2NyaXB0aW9uOiJNYXRjaGVzIGFueSBlbGVtZW50IHRoYXQgaGFzIGl0cyBmdWxsc2NyZWVuIGZsYWcgc2V0LiBTdGFuZGFyZGl6ZWQgYXMgOmZ1bGxzY3JlZW4uIn0se25hbWU6IjotbW96LWxhc3Qtbm9kZSIsYnJvd3NlcnM6WyJGRjEiXSxkZXNjcmlwdGlvbjoiTm9uLXN0YW5kYXJkLiBSZXByZXNlbnRzIGFuIGVsZW1lbnQgdGhhdCBpcyB0aGUgbGFzdCBjaGlsZCBub2RlIG9mIHNvbWUgb3RoZXIgZWxlbWVudC4ifSx7bmFtZToiOi1tb3otbG9hZGluZyIsYnJvd3NlcnM6WyJGRjMiXSxkZXNjcmlwdGlvbjoiTm9uLXN0YW5kYXJkLiBNYXRjaGVzIGVsZW1lbnRzLCBzdWNoIGFzIGltYWdlcywgdGhhdCBoYXZlbuKAmXQgc3RhcnRlZCBsb2FkaW5nIHlldC4ifSx7bmFtZToiOi1tb3otb25seS13aGl0ZXNwYWNlIixicm93c2VyczpbIkZGMSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy86LW1vei1vbmx5LXdoaXRlc3BhY2UifV0sZGVzY3JpcHRpb246IlRoZSBzYW1lIGFzIDplbXB0eSwgZXhjZXB0IHRoYXQgaXQgYWRkaXRpb25hbGx5IG1hdGNoZXMgZWxlbWVudHMgdGhhdCBvbmx5IGNvbnRhaW4gY29kZSBwb2ludHMgYWZmZWN0ZWQgYnkgd2hpdGVzcGFjZSBwcm9jZXNzaW5nLiBTdGFuZGFyZGl6ZWQgYXMgOmJsYW5rLiJ9LHtuYW1lOiI6LW1vei1wbGFjZWhvbGRlciIsYnJvd3NlcnM6WyJGRjQiXSxkZXNjcmlwdGlvbjoiRGVwcmVjYXRlZC4gUmVwcmVzZW50cyBwbGFjZWhvbGRlciB0ZXh0IGluIGFuIGlucHV0IGZpZWxkLiBVc2UgOjotbW96LXBsYWNlaG9sZGVyIGZvciBGaXJlZm94IDE5Ky4ifSx7bmFtZToiOi1tb3otc3VibWl0LWludmFsaWQiLGJyb3dzZXJzOlsiRkY4OCJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy86LW1vei1zdWJtaXQtaW52YWxpZCJ9XSxkZXNjcmlwdGlvbjoiTm9uLXN0YW5kYXJkLiBSZXByZXNlbnRzIGFueSBzdWJtaXQgYnV0dG9uIHdoZW4gdGhlIGNvbnRlbnRzIG9mIHRoZSBhc3NvY2lhdGVkIGZvcm0gYXJlIG5vdCB2YWxpZC4ifSx7bmFtZToiOi1tb3otc3VwcHJlc3NlZCIsYnJvd3NlcnM6WyJGRjMiXSxkZXNjcmlwdGlvbjoiTm9uLXN0YW5kYXJkLiBNYXRjaGVzIGVsZW1lbnRzIHJlcHJlc2VudGluZyBpbWFnZXMgdGhhdCBoYXZlIGJlZW4gYmxvY2tlZCBmcm9tIGxvYWRpbmcuIn0se25hbWU6IjotbW96LXVpLWludmFsaWQiLGJyb3dzZXJzOlsiRkY0Il0sZGVzY3JpcHRpb246Ik5vbi1zdGFuZGFyZC4gUmVwcmVzZW50cyBhbnkgdmFsaWRhdGVkIGZvcm0gZWxlbWVudCB3aG9zZSB2YWx1ZSBpc24ndCB2YWxpZCAifSx7bmFtZToiOi1tb3otdWktdmFsaWQiLGJyb3dzZXJzOlsiRkY0Il0sZGVzY3JpcHRpb246Ik5vbi1zdGFuZGFyZC4gUmVwcmVzZW50cyBhbnkgdmFsaWRhdGVkIGZvcm0gZWxlbWVudCB3aG9zZSB2YWx1ZSBpcyB2YWxpZCAifSx7bmFtZToiOi1tb3otdXNlci1kaXNhYmxlZCIsYnJvd3NlcnM6WyJGRjMiXSxkZXNjcmlwdGlvbjoiTm9uLXN0YW5kYXJkLiBNYXRjaGVzIGVsZW1lbnRzIHJlcHJlc2VudGluZyBpbWFnZXMgdGhhdCBoYXZlIGJlZW4gZGlzYWJsZWQgZHVlIHRvIHRoZSB1c2Vy4oCZcyBwcmVmZXJlbmNlcy4ifSx7bmFtZToiOi1tb3otd2luZG93LWluYWN0aXZlIixicm93c2VyczpbIkZGNCJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy86LW1vei13aW5kb3ctaW5hY3RpdmUifV0sZGVzY3JpcHRpb246Ik5vbi1zdGFuZGFyZC4gTWF0Y2hlcyBlbGVtZW50cyBpbiBhbiBpbmFjdGl2ZSB3aW5kb3cuIn0se25hbWU6IjotbXMtZnVsbHNjcmVlbiIsYnJvd3NlcnM6WyJJRTExIl0sZGVzY3JpcHRpb246Ik1hdGNoZXMgYW55IGVsZW1lbnQgdGhhdCBoYXMgaXRzIGZ1bGxzY3JlZW4gZmxhZyBzZXQuIn0se25hbWU6IjotbXMtaW5wdXQtcGxhY2Vob2xkZXIiLGJyb3dzZXJzOlsiSUUxMCJdLGRlc2NyaXB0aW9uOiJSZXByZXNlbnRzIHBsYWNlaG9sZGVyIHRleHQgaW4gYW4gaW5wdXQgZmllbGQuIE5vdGU6IGZvciBFZGdlIHVzZSB0aGUgcHNldWRvLWVsZW1lbnQgOjotbXMtaW5wdXQtcGxhY2Vob2xkZXIuIFN0YW5kYXJkaXplZCBhcyA6OnBsYWNlaG9sZGVyLiJ9LHtuYW1lOiI6LW1zLWtleWJvYXJkLWFjdGl2ZSIsYnJvd3NlcnM6WyJJRTEwIl0sZGVzY3JpcHRpb246IldpbmRvd3MgU3RvcmUgYXBwcyBvbmx5LiBBcHBsaWVzIG9uZSBvciBtb3JlIHN0eWxlcyB0byBhbiBlbGVtZW50IHdoZW4gaXQgaGFzIGZvY3VzIGFuZCB0aGUgdXNlciBwcmVzc2VzIHRoZSBzcGFjZSBiYXIuIn0se25hbWU6IjotbXMtbGFuZygpIixicm93c2VyczpbIkUiLCJJRTEwIl0sZGVzY3JpcHRpb246IlJlcHJlc2VudHMgYW4gZWxlbWVudCB0aGF0IGlzIGluIHRoZSBsYW5ndWFnZSBzcGVjaWZpZWQuIEFjY2VwdHMgYSBjb21tYSBzZXBhcmF0ZWQgbGlzdCBvZiBsYW5ndWFnZSB0b2tlbnMuIn0se25hbWU6Ijpuby1idXR0b24iLGJyb3dzZXJzOlsiQyIsIlM1Il0sZGVzY3JpcHRpb246Ik5vbi1zdGFuZGFyZC4gQXBwbGllcyB0byB0cmFjayBwaWVjZXMuIEFwcGxpZXMgd2hlbiB0aGVyZSBpcyBubyBidXR0b24gYXQgdGhhdCBlbmQgb2YgdGhlIHRyYWNrLiJ9LHtuYW1lOiI6bm90KCkiLGJyb3dzZXJzOlsiRSIsIkMiLCJGRjEiLCJJRTkiLCJPOS41IiwiUzIiXSxkZXNjcmlwdGlvbjoiVGhlIG5lZ2F0aW9uIHBzZXVkby1jbGFzcywgOm5vdChYKSwgaXMgYSBmdW5jdGlvbmFsIG5vdGF0aW9uIHRha2luZyBhIHNpbXBsZSBzZWxlY3RvciAoZXhjbHVkaW5nIHRoZSBuZWdhdGlvbiBwc2V1ZG8tY2xhc3MgaXRzZWxmKSBhcyBhbiBhcmd1bWVudC4gSXQgcmVwcmVzZW50cyBhbiBlbGVtZW50IHRoYXQgaXMgbm90IHJlcHJlc2VudGVkIGJ5IGl0cyBhcmd1bWVudC4ifSx7bmFtZToiOm50aC1jaGlsZCgpIixicm93c2VyczpbIkUiLCJDIiwiRkYzLjUiLCJJRTkiLCJPOS41IiwiUzMuMSJdLGRlc2NyaXB0aW9uOiJSZXByZXNlbnRzIGFuIGVsZW1lbnQgdGhhdCBoYXMgYW4rYi0xIHNpYmxpbmdzIGJlZm9yZSBpdCBpbiB0aGUgZG9jdW1lbnQgdHJlZSwgZm9yIGFueSBwb3NpdGl2ZSBpbnRlZ2VyIG9yIHplcm8gdmFsdWUgb2YgbiwgYW5kIGhhcyBhIHBhcmVudCBlbGVtZW50LiJ9LHtuYW1lOiI6bnRoLWxhc3QtY2hpbGQoKSIsYnJvd3NlcnM6WyJFIiwiQyIsIkZGMy41IiwiSUU5IiwiTzkuNSIsIlMzLjEiXSxkZXNjcmlwdGlvbjoiUmVwcmVzZW50cyBhbiBlbGVtZW50IHRoYXQgaGFzIGFuK2ItMSBzaWJsaW5ncyBhZnRlciBpdCBpbiB0aGUgZG9jdW1lbnQgdHJlZSwgZm9yIGFueSBwb3NpdGl2ZSBpbnRlZ2VyIG9yIHplcm8gdmFsdWUgb2YgbiwgYW5kIGhhcyBhIHBhcmVudCBlbGVtZW50LiJ9LHtuYW1lOiI6bnRoLWxhc3Qtb2YtdHlwZSgpIixicm93c2VyczpbIkUiLCJDIiwiRkYzLjUiLCJJRTkiLCJPOS41IiwiUzMuMSJdLGRlc2NyaXB0aW9uOiJSZXByZXNlbnRzIGFuIGVsZW1lbnQgdGhhdCBoYXMgYW4rYi0xIHNpYmxpbmdzIHdpdGggdGhlIHNhbWUgZXhwYW5kZWQgZWxlbWVudCBuYW1lIGFmdGVyIGl0IGluIHRoZSBkb2N1bWVudCB0cmVlLCBmb3IgYW55IHplcm8gb3IgcG9zaXRpdmUgaW50ZWdlciB2YWx1ZSBvZiBuLCBhbmQgaGFzIGEgcGFyZW50IGVsZW1lbnQuIn0se25hbWU6IjpudGgtb2YtdHlwZSgpIixicm93c2VyczpbIkUiLCJDIiwiRkYzLjUiLCJJRTkiLCJPOS41IiwiUzMuMSJdLGRlc2NyaXB0aW9uOiJSZXByZXNlbnRzIGFuIGVsZW1lbnQgdGhhdCBoYXMgYW4rYi0xIHNpYmxpbmdzIHdpdGggdGhlIHNhbWUgZXhwYW5kZWQgZWxlbWVudCBuYW1lIGJlZm9yZSBpdCBpbiB0aGUgZG9jdW1lbnQgdHJlZSwgZm9yIGFueSB6ZXJvIG9yIHBvc2l0aXZlIGludGVnZXIgdmFsdWUgb2YgbiwgYW5kIGhhcyBhIHBhcmVudCBlbGVtZW50LiJ9LHtuYW1lOiI6b25seS1jaGlsZCIscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzpvbmx5LWNoaWxkIn1dLGRlc2NyaXB0aW9uOiJSZXByZXNlbnRzIGFuIGVsZW1lbnQgdGhhdCBoYXMgYSBwYXJlbnQgZWxlbWVudCBhbmQgd2hvc2UgcGFyZW50IGVsZW1lbnQgaGFzIG5vIG90aGVyIGVsZW1lbnQgY2hpbGRyZW4uIFNhbWUgYXMgOmZpcnN0LWNoaWxkOmxhc3QtY2hpbGQgb3IgOm50aC1jaGlsZCgxKTpudGgtbGFzdC1jaGlsZCgxKSwgYnV0IHdpdGggYSBsb3dlciBzcGVjaWZpY2l0eS4ifSx7bmFtZToiOm9ubHktb2YtdHlwZSIscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzpvbmx5LW9mLXR5cGUifV0sZGVzY3JpcHRpb246Ik1hdGNoZXMgZXZlcnkgZWxlbWVudCB0aGF0IGlzIHRoZSBvbmx5IGNoaWxkIG9mIGl0cyB0eXBlLCBvZiBpdHMgcGFyZW50LiBTYW1lIGFzIDpmaXJzdC1vZi10eXBlOmxhc3Qtb2YtdHlwZSBvciA6bnRoLW9mLXR5cGUoMSk6bnRoLWxhc3Qtb2YtdHlwZSgxKSwgYnV0IHdpdGggYSBsb3dlciBzcGVjaWZpY2l0eS4ifSx7bmFtZToiOm9wdGlvbmFsIixyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOm9wdGlvbmFsIn1dLGRlc2NyaXB0aW9uOiJBIGZvcm0gZWxlbWVudCBpcyA6cmVxdWlyZWQgb3IgOm9wdGlvbmFsIGlmIGEgdmFsdWUgZm9yIGl0IGlzLCByZXNwZWN0aXZlbHksIHJlcXVpcmVkIG9yIG9wdGlvbmFsIGJlZm9yZSB0aGUgZm9ybSBpdCBiZWxvbmdzIHRvIGlzIHN1Ym1pdHRlZC4gRWxlbWVudHMgdGhhdCBhcmUgbm90IGZvcm0gZWxlbWVudHMgYXJlIG5laXRoZXIgcmVxdWlyZWQgbm9yIG9wdGlvbmFsLiJ9LHtuYW1lOiI6b3V0LW9mLXJhbmdlIixicm93c2VyczpbIkUxMyIsIkZGMjkiLCJTNS4xIiwiQzEwIiwiTzExIl0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzpvdXQtb2YtcmFuZ2UifV0sZGVzY3JpcHRpb246IlVzZWQgaW4gY29uanVuY3Rpb24gd2l0aCB0aGUgbWluIGFuZCBtYXggYXR0cmlidXRlcywgd2hldGhlciBvbiBhIHJhbmdlIGlucHV0LCBhIG51bWJlciBmaWVsZCwgb3IgYW55IG90aGVyIHR5cGVzIHRoYXQgYWNjZXB0IHRob3NlIGF0dHJpYnV0ZXMuIn0se25hbWU6IjpwYXN0Iixicm93c2VyczpbIlM3Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzpwYXN0In1dLGRlc2NyaXB0aW9uOiJSZXByZXNlbnRzIGFueSBlbGVtZW50IHRoYXQgaXMgZGVmaW5lZCB0byBvY2N1ciBlbnRpcmVseSBwcmlvciB0byBhIDpjdXJyZW50IGVsZW1lbnQuIn0se25hbWU6IjpyZWFkLW9ubHkiLGJyb3dzZXJzOlsiRTEzIiwiRkY3OCIsIlM0IiwiQzEiLCJPOSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy86cmVhZC1vbmx5In1dLGRlc2NyaXB0aW9uOiJBbiBlbGVtZW50IHdob3NlIGNvbnRlbnRzIGFyZSBub3QgdXNlci1hbHRlcmFibGUgaXMgOnJlYWQtb25seS4gSG93ZXZlciwgZWxlbWVudHMgd2hvc2UgY29udGVudHMgYXJlIHVzZXItYWx0ZXJhYmxlIChzdWNoIGFzIHRleHQgaW5wdXQgZmllbGRzKSBhcmUgY29uc2lkZXJlZCB0byBiZSBpbiBhIDpyZWFkLXdyaXRlIHN0YXRlLiBJbiB0eXBpY2FsIGRvY3VtZW50cywgbW9zdCBlbGVtZW50cyBhcmUgOnJlYWQtb25seS4ifSx7bmFtZToiOnJlYWQtd3JpdGUiLGJyb3dzZXJzOlsiRTEzIiwiRkY3OCIsIlM0IiwiQzEiLCJPOSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy86cmVhZC13cml0ZSJ9XSxkZXNjcmlwdGlvbjoiQW4gZWxlbWVudCB3aG9zZSBjb250ZW50cyBhcmUgbm90IHVzZXItYWx0ZXJhYmxlIGlzIDpyZWFkLW9ubHkuIEhvd2V2ZXIsIGVsZW1lbnRzIHdob3NlIGNvbnRlbnRzIGFyZSB1c2VyLWFsdGVyYWJsZSAoc3VjaCBhcyB0ZXh0IGlucHV0IGZpZWxkcykgYXJlIGNvbnNpZGVyZWQgdG8gYmUgaW4gYSA6cmVhZC13cml0ZSBzdGF0ZS4gSW4gdHlwaWNhbCBkb2N1bWVudHMsIG1vc3QgZWxlbWVudHMgYXJlIDpyZWFkLW9ubHkuIn0se25hbWU6IjpyZXF1aXJlZCIscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzpyZXF1aXJlZCJ9XSxkZXNjcmlwdGlvbjoiQSBmb3JtIGVsZW1lbnQgaXMgOnJlcXVpcmVkIG9yIDpvcHRpb25hbCBpZiBhIHZhbHVlIGZvciBpdCBpcywgcmVzcGVjdGl2ZWx5LCByZXF1aXJlZCBvciBvcHRpb25hbCBiZWZvcmUgdGhlIGZvcm0gaXQgYmVsb25ncyB0byBpcyBzdWJtaXR0ZWQuIEVsZW1lbnRzIHRoYXQgYXJlIG5vdCBmb3JtIGVsZW1lbnRzIGFyZSBuZWl0aGVyIHJlcXVpcmVkIG5vciBvcHRpb25hbC4ifSx7bmFtZToiOnJpZ2h0Iixicm93c2VyczpbIkUxMiIsIlM1LjEiLCJDNiIsIklFOCIsIk85LjIiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOnJpZ2h0In1dLGRlc2NyaXB0aW9uOiJXaGVuIHByaW50aW5nIGRvdWJsZS1zaWRlZCBkb2N1bWVudHMsIHRoZSBwYWdlIGJveGVzIG9uIGxlZnQgYW5kIHJpZ2h0IHBhZ2VzIG1heSBiZSBkaWZmZXJlbnQuIFRoaXMgY2FuIGJlIGV4cHJlc3NlZCB0aHJvdWdoIENTUyBwc2V1ZG8tY2xhc3NlcyBkZWZpbmVkIGluIHRoZSAgcGFnZSBjb250ZXh0LiJ9LHtuYW1lOiI6cm9vdCIscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzpyb290In1dLGRlc2NyaXB0aW9uOiJSZXByZXNlbnRzIGFuIGVsZW1lbnQgdGhhdCBpcyB0aGUgcm9vdCBvZiB0aGUgZG9jdW1lbnQuIEluIEhUTUwgNCwgdGhpcyBpcyBhbHdheXMgdGhlIEhUTUwgZWxlbWVudC4ifSx7bmFtZToiOnNjb3BlIixicm93c2VyczpbIkU3OSIsIkZGMzIiLCJTNyIsIkMyNyIsIk8xNSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy86c2NvcGUifV0sZGVzY3JpcHRpb246IlJlcHJlc2VudHMgYW55IGVsZW1lbnQgdGhhdCBpcyBpbiB0aGUgY29udGV4dHVhbCByZWZlcmVuY2UgZWxlbWVudCBzZXQuIn0se25hbWU6IjpzaW5nbGUtYnV0dG9uIixicm93c2VyczpbIkMiLCJTNSJdLGRlc2NyaXB0aW9uOiJOb24tc3RhbmRhcmQuIEFwcGxpZXMgdG8gYnV0dG9ucyBhbmQgdHJhY2sgcGllY2VzLiBBcHBsaWVzIHdoZW4gYm90aCBidXR0b25zIGFyZSBkaXNwbGF5ZWQgc2VwYXJhdGVseSBhdCBlaXRoZXIgZW5kIG9mIHRoZSBzY3JvbGxiYXIuIn0se25hbWU6IjpzdGFydCIsYnJvd3NlcnM6WyJDIiwiUzUiXSxkZXNjcmlwdGlvbjoiTm9uLXN0YW5kYXJkLiBBcHBsaWVzIHRvIGJ1dHRvbnMgYW5kIHRyYWNrIHBpZWNlcy4gSW5kaWNhdGVzIHdoZXRoZXIgdGhlIG9iamVjdCBpcyBwbGFjZWQgYmVmb3JlIHRoZSB0aHVtYi4ifSx7bmFtZToiOnRhcmdldCIscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzp0YXJnZXQifV0sZGVzY3JpcHRpb246IlNvbWUgVVJJcyByZWZlciB0byBhIGxvY2F0aW9uIHdpdGhpbiBhIHJlc291cmNlLiBUaGlzIGtpbmQgb2YgVVJJIGVuZHMgd2l0aCBhICdudW1iZXIgc2lnbicgKCMpIGZvbGxvd2VkIGJ5IGFuIGFuY2hvciBpZGVudGlmaWVyIChjYWxsZWQgdGhlIGZyYWdtZW50IGlkZW50aWZpZXIpLiJ9LHtuYW1lOiI6dmFsaWQiLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy86dmFsaWQifV0sZGVzY3JpcHRpb246IkFuIGVsZW1lbnQgaXMgOnZhbGlkIG9yIDppbnZhbGlkIHdoZW4gaXQgaXMsIHJlc3BlY3RpdmVseSwgdmFsaWQgb3IgaW52YWxpZCB3aXRoIHJlc3BlY3QgdG8gZGF0YSB2YWxpZGl0eSBzZW1hbnRpY3MgZGVmaW5lZCBieSBhIGRpZmZlcmVudCBzcGVjaWZpY2F0aW9uLiJ9LHtuYW1lOiI6dmVydGljYWwiLGJyb3dzZXJzOlsiQyIsIlM1Il0sZGVzY3JpcHRpb246Ik5vbi1zdGFuZGFyZC4gQXBwbGllcyB0byBhbnkgc2Nyb2xsYmFyIHBpZWNlcyB0aGF0IGhhdmUgYSB2ZXJ0aWNhbCBvcmllbnRhdGlvbi4ifSx7bmFtZToiOnZpc2l0ZWQiLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy86dmlzaXRlZCJ9XSxkZXNjcmlwdGlvbjoiQXBwbGllcyBvbmNlIHRoZSBsaW5rIGhhcyBiZWVuIHZpc2l0ZWQgYnkgdGhlIHVzZXIuIn0se25hbWU6Ijotd2Via2l0LWFueSgpIixicm93c2VyczpbIkMiLCJTNSJdLGRlc2NyaXB0aW9uOiJSZXByZXNlbnRzIGFuIGVsZW1lbnQgdGhhdCBpcyByZXByZXNlbnRlZCBieSB0aGUgc2VsZWN0b3IgbGlzdCBwYXNzZWQgYXMgaXRzIGFyZ3VtZW50LiBTdGFuZGFyZGl6ZWQgYXMgOm1hdGNoZXMoKS4ifSx7bmFtZToiOi13ZWJraXQtZnVsbC1zY3JlZW4iLGJyb3dzZXJzOlsiQyIsIlM2Il0sZGVzY3JpcHRpb246Ik1hdGNoZXMgYW55IGVsZW1lbnQgdGhhdCBoYXMgaXRzIGZ1bGxzY3JlZW4gZmxhZyBzZXQuIFN0YW5kYXJkaXplZCBhcyA6ZnVsbHNjcmVlbi4ifSx7bmFtZToiOndpbmRvdy1pbmFjdGl2ZSIsYnJvd3NlcnM6WyJDIiwiUzMiXSxkZXNjcmlwdGlvbjoiTm9uLXN0YW5kYXJkLiBBcHBsaWVzIHRvIGFsbCBzY3JvbGxiYXIgcGllY2VzLiBJbmRpY2F0ZXMgd2hldGhlciBvciBub3QgdGhlIHdpbmRvdyBjb250YWluaW5nIHRoZSBzY3JvbGxiYXIgaXMgY3VycmVudGx5IGFjdGl2ZS4ifSx7bmFtZToiOmN1cnJlbnQiLHN0YXR1czoiZXhwZXJpbWVudGFsIixkZXNjcmlwdGlvbjoiVGhlIDpjdXJyZW50IENTUyBwc2V1ZG8tY2xhc3Mgc2VsZWN0b3IgaXMgYSB0aW1lLWRpbWVuc2lvbmFsIHBzZXVkby1jbGFzcyB0aGF0IHJlcHJlc2VudHMgdGhlIGVsZW1lbnQsIG9yIGFuIGFuY2VzdG9yIG9mIHRoZSBlbGVtZW50LCB0aGF0IGlzIGN1cnJlbnRseSBiZWluZyBkaXNwbGF5ZWQifSx7bmFtZToiOmJsYW5rIixzdGF0dXM6ImV4cGVyaW1lbnRhbCIscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzpibGFuayJ9XSxkZXNjcmlwdGlvbjoiVGhlIDpibGFuayBDU1MgcHNldWRvLWNsYXNzIHNlbGVjdHMgZW1wdHkgdXNlciBpbnB1dCBlbGVtZW50cyAoZWcuIDxpbnB1dD4gb3IgPHRleHRhcmVhPikuIn0se25hbWU6IjpkZWZpbmVkIixzdGF0dXM6ImV4cGVyaW1lbnRhbCIsYnJvd3NlcnM6WyJFNzkiLCJGRjYzIiwiUzEwIiwiQzU0IiwiTzQxIl0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzpkZWZpbmVkIn1dLGRlc2NyaXB0aW9uOiJUaGUgOmRlZmluZWQgQ1NTIHBzZXVkby1jbGFzcyByZXByZXNlbnRzIGFueSBlbGVtZW50IHRoYXQgaGFzIGJlZW4gZGVmaW5lZC4gVGhpcyBpbmNsdWRlcyBhbnkgc3RhbmRhcmQgZWxlbWVudCBidWlsdCBpbiB0byB0aGUgYnJvd3NlciwgYW5kIGN1c3RvbSBlbGVtZW50cyB0aGF0IGhhdmUgYmVlbiBzdWNjZXNzZnVsbHkgZGVmaW5lZCAoaS5lLiB3aXRoIHRoZSBDdXN0b21FbGVtZW50UmVnaXN0cnkuZGVmaW5lKCkgbWV0aG9kKS4ifSx7bmFtZToiOmRpciIsYnJvd3NlcnM6WyJGRjQ5Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzpkaXIifV0sZGVzY3JpcHRpb246IlRoZSA6ZGlyKCkgQ1NTIHBzZXVkby1jbGFzcyBtYXRjaGVzIGVsZW1lbnRzIGJhc2VkIG9uIHRoZSBkaXJlY3Rpb25hbGl0eSBvZiB0aGUgdGV4dCBjb250YWluZWQgaW4gdGhlbS4ifSx7bmFtZToiOmZvY3VzLXZpc2libGUiLGJyb3dzZXJzOlsiRTg2IiwiRkY4NSIsIlMxNS40IiwiQzg2IiwiTzcyIl0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzpmb2N1cy12aXNpYmxlIn1dLGRlc2NyaXB0aW9uOiJUaGUgOmZvY3VzLXZpc2libGUgcHNldWRvLWNsYXNzIGFwcGxpZXMgd2hpbGUgYW4gZWxlbWVudCBtYXRjaGVzIHRoZSA6Zm9jdXMgcHNldWRvLWNsYXNzIGFuZCB0aGUgVUEgZGV0ZXJtaW5lcyB2aWEgaGV1cmlzdGljcyB0aGF0IHRoZSBmb2N1cyBzaG91bGQgYmUgbWFkZSBldmlkZW50IG9uIHRoZSBlbGVtZW50LiJ9LHtuYW1lOiI6Zm9jdXMtd2l0aGluIixicm93c2VyczpbIkU3OSIsIkZGNTIiLCJTMTAuMSIsIkM2MCIsIk80NyJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy86Zm9jdXMtd2l0aGluIn1dLGRlc2NyaXB0aW9uOiJUaGUgOmZvY3VzLXdpdGhpbiBwc2V1ZG8tY2xhc3MgYXBwbGllcyB0byBhbnkgZWxlbWVudCBmb3Igd2hpY2ggdGhlIDpmb2N1cyBwc2V1ZG8gY2xhc3MgYXBwbGllcyBhcyB3ZWxsIGFzIHRvIGFuIGVsZW1lbnQgd2hvc2UgZGVzY2VuZGFudCBpbiB0aGUgZmxhdCB0cmVlIChpbmNsdWRpbmcgbm9uLWVsZW1lbnQgbm9kZXMsIHN1Y2ggYXMgdGV4dCBub2RlcykgbWF0Y2hlcyB0aGUgY29uZGl0aW9ucyBmb3IgbWF0Y2hpbmcgOmZvY3VzLiJ9LHtuYW1lOiI6aGFzIixzdGF0dXM6ImV4cGVyaW1lbnRhbCIsYnJvd3NlcnM6WyJTMTUuNCJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy86aGFzIn1dLGRlc2NyaXB0aW9uOiI6VGhlIDpoYXMoKSBDU1MgcHNldWRvLWNsYXNzIHJlcHJlc2VudHMgYW4gZWxlbWVudCBpZiBhbnkgb2YgdGhlIHNlbGVjdG9ycyBwYXNzZWQgYXMgcGFyYW1ldGVycyAocmVsYXRpdmUgdG8gdGhlIDpzY29wZSBvZiB0aGUgZ2l2ZW4gZWxlbWVudCksIG1hdGNoIGF0IGxlYXN0IG9uZSBlbGVtZW50LiJ9LHtuYW1lOiI6aXMiLHN0YXR1czoiZXhwZXJpbWVudGFsIixicm93c2VyczpbIkU4OCIsIkZGNzgiLCJTMTQiLCJDODgiLCJPNzQiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOmlzIn1dLGRlc2NyaXB0aW9uOiJUaGUgOmlzKCkgQ1NTIHBzZXVkby1jbGFzcyBmdW5jdGlvbiB0YWtlcyBhIHNlbGVjdG9yIGxpc3QgYXMgaXRzIGFyZ3VtZW50LCBhbmQgc2VsZWN0cyBhbnkgZWxlbWVudCB0aGF0IGNhbiBiZSBzZWxlY3RlZCBieSBvbmUgb2YgdGhlIHNlbGVjdG9ycyBpbiB0aGF0IGxpc3QuIFRoaXMgaXMgdXNlZnVsIGZvciB3cml0aW5nIGxhcmdlIHNlbGVjdG9ycyBpbiBhIG1vcmUgY29tcGFjdCBmb3JtLiJ9LHtuYW1lOiI6bG9jYWwtbGluayIsc3RhdHVzOiJleHBlcmltZW50YWwiLGRlc2NyaXB0aW9uOiJUaGUgOmxvY2FsLWxpbmsgQ1NTIHBzZXVkby1jbGFzcyByZXByZXNlbnRzIGFuIGxpbmsgdG8gdGhlIHNhbWUgZG9jdW1lbnQifSx7bmFtZToiOm50aC1jb2wiLHN0YXR1czoiZXhwZXJpbWVudGFsIixkZXNjcmlwdGlvbjoiVGhlIDpudGgtY29sKCkgQ1NTIHBzZXVkby1jbGFzcyBpcyBkZXNpZ25lZCBmb3IgdGFibGVzIGFuZCBncmlkcy4gSXQgYWNjZXB0cyB0aGUgQW4rQiBub3RhdGlvbiBzdWNoIGFzIHVzZWQgd2l0aCB0aGUgOm50aC1jaGlsZCBzZWxlY3RvciwgdXNpbmcgdGhpcyB0byB0YXJnZXQgZXZlcnkgbnRoIGNvbHVtbi4gIn0se25hbWU6IjpudGgtbGFzdC1jb2wiLHN0YXR1czoiZXhwZXJpbWVudGFsIixkZXNjcmlwdGlvbjoiVGhlIDpudGgtbGFzdC1jb2woKSBDU1MgcHNldWRvLWNsYXNzIGlzIGRlc2lnbmVkIGZvciB0YWJsZXMgYW5kIGdyaWRzLiBJdCBhY2NlcHRzIHRoZSBBbitCIG5vdGF0aW9uIHN1Y2ggYXMgdXNlZCB3aXRoIHRoZSA6bnRoLWNoaWxkIHNlbGVjdG9yLCB1c2luZyB0aGlzIHRvIHRhcmdldCBldmVyeSBudGggY29sdW1uIGJlZm9yZSBpdCwgdGhlcmVmb3JlIGNvdW50aW5nIGJhY2sgZnJvbSB0aGUgZW5kIG9mIHRoZSBzZXQgb2YgY29sdW1ucy4ifSx7bmFtZToiOnBhdXNlZCIsc3RhdHVzOiJleHBlcmltZW50YWwiLGRlc2NyaXB0aW9uOiJUaGUgOnBhdXNlZCBDU1MgcHNldWRvLWNsYXNzIHNlbGVjdG9yIGlzIGEgcmVzb3VyY2Ugc3RhdGUgcHNldWRvLWNsYXNzIHRoYXQgd2lsbCBtYXRjaCBhbiBhdWRpbywgdmlkZW8sIG9yIHNpbWlsYXIgcmVzb3VyY2UgdGhhdCBpcyBjYXBhYmxlIG9mIGJlaW5nIOKAnHBsYXllZOKAnSBvciDigJxwYXVzZWTigJ0sIHdoZW4gdGhhdCBlbGVtZW50IGlzIOKAnHBhdXNlZOKAnS4ifSx7bmFtZToiOnBsYWNlaG9sZGVyLXNob3duIixzdGF0dXM6ImV4cGVyaW1lbnRhbCIscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzpwbGFjZWhvbGRlci1zaG93biJ9XSxkZXNjcmlwdGlvbjoiVGhlIDpwbGFjZWhvbGRlci1zaG93biBDU1MgcHNldWRvLWNsYXNzIHJlcHJlc2VudHMgYW55IDxpbnB1dD4gb3IgPHRleHRhcmVhPiBlbGVtZW50IHRoYXQgaXMgY3VycmVudGx5IGRpc3BsYXlpbmcgcGxhY2Vob2xkZXIgdGV4dC4ifSx7bmFtZToiOnBsYXlpbmciLHN0YXR1czoiZXhwZXJpbWVudGFsIixkZXNjcmlwdGlvbjoiVGhlIDpwbGF5aW5nIENTUyBwc2V1ZG8tY2xhc3Mgc2VsZWN0b3IgaXMgYSByZXNvdXJjZSBzdGF0ZSBwc2V1ZG8tY2xhc3MgdGhhdCB3aWxsIG1hdGNoIGFuIGF1ZGlvLCB2aWRlbywgb3Igc2ltaWxhciByZXNvdXJjZSB0aGF0IGlzIGNhcGFibGUgb2YgYmVpbmcg4oCccGxheWVk4oCdIG9yIOKAnHBhdXNlZOKAnSwgd2hlbiB0aGF0IGVsZW1lbnQgaXMg4oCccGxheWluZ+KAnS4gIn0se25hbWU6Ijp0YXJnZXQtd2l0aGluIixzdGF0dXM6ImV4cGVyaW1lbnRhbCIscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzp0YXJnZXQtd2l0aGluIn1dLGRlc2NyaXB0aW9uOiJUaGUgOnRhcmdldC13aXRoaW4gQ1NTIHBzZXVkby1jbGFzcyByZXByZXNlbnRzIGFuIGVsZW1lbnQgdGhhdCBpcyBhIHRhcmdldCBlbGVtZW50IG9yIGNvbnRhaW5zIGFuIGVsZW1lbnQgdGhhdCBpcyBhIHRhcmdldC4gQSB0YXJnZXQgZWxlbWVudCBpcyBhIHVuaXF1ZSBlbGVtZW50IHdpdGggYW4gaWQgbWF0Y2hpbmcgdGhlIFVSTCdzIGZyYWdtZW50LiJ9LHtuYW1lOiI6dXNlci1pbnZhbGlkIixzdGF0dXM6ImV4cGVyaW1lbnRhbCIsYnJvd3NlcnM6WyJGRjg4Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzp1c2VyLWludmFsaWQifV0sZGVzY3JpcHRpb246IlRoZSA6dXNlci1pbnZhbGlkIENTUyBwc2V1ZG8tY2xhc3MgcmVwcmVzZW50cyBhbnkgdmFsaWRhdGVkIGZvcm0gZWxlbWVudCB3aG9zZSB2YWx1ZSBpc24ndCB2YWxpZCBiYXNlZCBvbiB0aGVpciB2YWxpZGF0aW9uIGNvbnN0cmFpbnRzLCBhZnRlciB0aGUgdXNlciBoYXMgaW50ZXJhY3RlZCB3aXRoIGl0LiJ9LHtuYW1lOiI6dXNlci12YWxpZCIsc3RhdHVzOiJleHBlcmltZW50YWwiLGJyb3dzZXJzOlsiRkY4OCJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy86dXNlci12YWxpZCJ9XSxkZXNjcmlwdGlvbjoiVGhlIDp1c2VyLXZhbGlkIENTUyBwc2V1ZG8tY2xhc3MgcmVwcmVzZW50cyBhbnkgdmFsaWRhdGVkIGZvcm0gZWxlbWVudCB3aG9zZSB2YWx1ZSB2YWxpZGF0ZXMgY29ycmVjdGx5IGJhc2VkIG9uIGl0cyB2YWxpZGF0aW9uIGNvbnN0cmFpbnRzLiBIb3dldmVyLCB1bmxpa2UgOnZhbGlkIGl0IG9ubHkgbWF0Y2hlcyBvbmNlIHRoZSB1c2VyIGhhcyBpbnRlcmFjdGVkIHdpdGggaXQuIn0se25hbWU6Ijp3aGVyZSIsc3RhdHVzOiJleHBlcmltZW50YWwiLGJyb3dzZXJzOlsiRTg4IiwiRkY3OCIsIlMxNCIsIkM4OCIsIk83NCJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy86d2hlcmUifV0sZGVzY3JpcHRpb246IlRoZSA6d2hlcmUoKSBDU1MgcHNldWRvLWNsYXNzIGZ1bmN0aW9uIHRha2VzIGEgc2VsZWN0b3IgbGlzdCBhcyBpdHMgYXJndW1lbnQsIGFuZCBzZWxlY3RzIGFueSBlbGVtZW50IHRoYXQgY2FuIGJlIHNlbGVjdGVkIGJ5IG9uZSBvZiB0aGUgc2VsZWN0b3JzIGluIHRoYXQgbGlzdC4ifSx7bmFtZToiOnBpY3R1cmUtaW4tcGljdHVyZSIsc3RhdHVzOiJleHBlcmltZW50YWwiLGRlc2NyaXB0aW9uOiJUaGUgOnBpY3R1cmUtaW4tcGljdHVyZSBDU1MgcHNldWRvLWNsYXNzIG1hdGNoZXMgdGhlIGVsZW1lbnQgd2hpY2ggaXMgY3VycmVudGx5IGluIHBpY3R1cmUtaW4tcGljdHVyZSBtb2RlLiJ9XSxwc2V1ZG9FbGVtZW50czpbe25hbWU6Ijo6YWZ0ZXIiLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy86OmFmdGVyIn1dLGRlc2NyaXB0aW9uOiJSZXByZXNlbnRzIGEgc3R5bGVhYmxlIGNoaWxkIHBzZXVkby1lbGVtZW50IGltbWVkaWF0ZWx5IGFmdGVyIHRoZSBvcmlnaW5hdGluZyBlbGVtZW504oCZcyBhY3R1YWwgY29udGVudC4ifSx7bmFtZToiOjpiYWNrZHJvcCIscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzo6YmFja2Ryb3AifV0sZGVzY3JpcHRpb246IlVzZWQgdG8gY3JlYXRlIGEgYmFja2Ryb3AgdGhhdCBoaWRlcyB0aGUgdW5kZXJseWluZyBkb2N1bWVudCBmb3IgYW4gZWxlbWVudCBpbiBhIHRvcCBsYXllciAoc3VjaCBhcyBhbiBlbGVtZW50IHRoYXQgaXMgZGlzcGxheWVkIGZ1bGxzY3JlZW4pLiJ9LHtuYW1lOiI6OmJlZm9yZSIscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzo6YmVmb3JlIn1dLGRlc2NyaXB0aW9uOiJSZXByZXNlbnRzIGEgc3R5bGVhYmxlIGNoaWxkIHBzZXVkby1lbGVtZW50IGltbWVkaWF0ZWx5IGJlZm9yZSB0aGUgb3JpZ2luYXRpbmcgZWxlbWVudOKAmXMgYWN0dWFsIGNvbnRlbnQuIn0se25hbWU6Ijo6Y29udGVudCIsYnJvd3NlcnM6WyJDMzUiLCJPMjIiXSxkZXNjcmlwdGlvbjoiRGVwcmVjYXRlZC4gTWF0Y2hlcyB0aGUgZGlzdHJpYnV0aW9uIGxpc3QgaXRzZWxmLCBvbiBlbGVtZW50cyB0aGF0IGhhdmUgb25lLiBVc2UgOjpzbG90dGVkIGZvciBmb3J3YXJkIGNvbXBhdGliaWxpdHkuIn0se25hbWU6Ijo6Y3VlIixicm93c2VyczpbIkU3OSIsIkZGNTUiLCJTNyIsIkMyNiIsIk8xNSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy86OmN1ZSJ9XX0se25hbWU6Ijo6Y3VlKCkiLGJyb3dzZXJzOlsiQyIsIk8xNiIsIlM2Il19LHtuYW1lOiI6OmN1ZS1yZWdpb24iLGJyb3dzZXJzOlsiQyIsIk8xNiIsIlM2Il19LHtuYW1lOiI6OmN1ZS1yZWdpb24oKSIsYnJvd3NlcnM6WyJDIiwiTzE2IiwiUzYiXX0se25hbWU6Ijo6Zmlyc3QtbGV0dGVyIixyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOjpmaXJzdC1sZXR0ZXIifV0sZGVzY3JpcHRpb246IlJlcHJlc2VudHMgdGhlIGZpcnN0IGxldHRlciBvZiBhbiBlbGVtZW50LCBpZiBpdCBpcyBub3QgcHJlY2VkZWQgYnkgYW55IG90aGVyIGNvbnRlbnQgKHN1Y2ggYXMgaW1hZ2VzIG9yIGlubGluZSB0YWJsZXMpIG9uIGl0cyBsaW5lLiJ9LHtuYW1lOiI6OmZpcnN0LWxpbmUiLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy86OmZpcnN0LWxpbmUifV0sZGVzY3JpcHRpb246IkRlc2NyaWJlcyB0aGUgY29udGVudHMgb2YgdGhlIGZpcnN0IGZvcm1hdHRlZCBsaW5lIG9mIGl0cyBvcmlnaW5hdGluZyBlbGVtZW50LiJ9LHtuYW1lOiI6Oi1tb3otZm9jdXMtaW5uZXIiLGJyb3dzZXJzOlsiRkY0Il19LHtuYW1lOiI6Oi1tb3otZm9jdXMtb3V0ZXIiLGJyb3dzZXJzOlsiRkY0Il19LHtuYW1lOiI6Oi1tb3otbGlzdC1idWxsZXQiLGJyb3dzZXJzOlsiRkYxIl0sZGVzY3JpcHRpb246IlVzZWQgdG8gc3R5bGUgdGhlIGJ1bGxldCBvZiBhIGxpc3QgZWxlbWVudC4gU2ltaWxhciB0byB0aGUgc3RhbmRhcmRpemVkIDo6bWFya2VyLiJ9LHtuYW1lOiI6Oi1tb3otbGlzdC1udW1iZXIiLGJyb3dzZXJzOlsiRkYxIl0sZGVzY3JpcHRpb246IlVzZWQgdG8gc3R5bGUgdGhlIG51bWJlcnMgb2YgYSBsaXN0IGVsZW1lbnQuIFNpbWlsYXIgdG8gdGhlIHN0YW5kYXJkaXplZCA6Om1hcmtlci4ifSx7bmFtZToiOjotbW96LXBsYWNlaG9sZGVyIixicm93c2VyczpbIkZGMTkiXSxkZXNjcmlwdGlvbjoiUmVwcmVzZW50cyBwbGFjZWhvbGRlciB0ZXh0IGluIGFuIGlucHV0IGZpZWxkIn0se25hbWU6Ijo6LW1vei1wcm9ncmVzcy1iYXIiLGJyb3dzZXJzOlsiRkY5Il0sZGVzY3JpcHRpb246IlJlcHJlc2VudHMgdGhlIGJhciBwb3J0aW9uIG9mIGEgcHJvZ3Jlc3MgYmFyLiJ9LHtuYW1lOiI6Oi1tb3otc2VsZWN0aW9uIixicm93c2VyczpbIkZGMSJdLGRlc2NyaXB0aW9uOiJSZXByZXNlbnRzIHRoZSBwb3J0aW9uIG9mIGEgZG9jdW1lbnQgdGhhdCBoYXMgYmVlbiBoaWdobGlnaHRlZCBieSB0aGUgdXNlci4ifSx7bmFtZToiOjotbXMtYmFja2Ryb3AiLGJyb3dzZXJzOlsiSUUxMSJdLGRlc2NyaXB0aW9uOiJVc2VkIHRvIGNyZWF0ZSBhIGJhY2tkcm9wIHRoYXQgaGlkZXMgdGhlIHVuZGVybHlpbmcgZG9jdW1lbnQgZm9yIGFuIGVsZW1lbnQgaW4gYSB0b3AgbGF5ZXIgKHN1Y2ggYXMgYW4gZWxlbWVudCB0aGF0IGlzIGRpc3BsYXllZCBmdWxsc2NyZWVuKS4ifSx7bmFtZToiOjotbXMtYnJvd3NlIixicm93c2VyczpbIkUiLCJJRTEwIl0sZGVzY3JpcHRpb246IlJlcHJlc2VudHMgdGhlIGJyb3dzZSBidXR0b24gb2YgYW4gaW5wdXQgdHlwZT1maWxlIGNvbnRyb2wuIn0se25hbWU6Ijo6LW1zLWNoZWNrIixicm93c2VyczpbIkUiLCJJRTEwIl0sZGVzY3JpcHRpb246IlJlcHJlc2VudHMgdGhlIGNoZWNrIG9mIGEgY2hlY2tib3ggb3IgcmFkaW8gYnV0dG9uIGlucHV0IGNvbnRyb2wuIn0se25hbWU6Ijo6LW1zLWNsZWFyIixicm93c2VyczpbIkUiLCJJRTEwIl0sZGVzY3JpcHRpb246IlJlcHJlc2VudHMgdGhlIGNsZWFyIGJ1dHRvbiBvZiBhIHRleHQgaW5wdXQgY29udHJvbCJ9LHtuYW1lOiI6Oi1tcy1leHBhbmQiLGJyb3dzZXJzOlsiRSIsIklFMTAiXSxkZXNjcmlwdGlvbjoiUmVwcmVzZW50cyB0aGUgZHJvcC1kb3duIGJ1dHRvbiBvZiBhIHNlbGVjdCBjb250cm9sLiJ9LHtuYW1lOiI6Oi1tcy1maWxsIixicm93c2VyczpbIkUiLCJJRTEwIl0sZGVzY3JpcHRpb246IlJlcHJlc2VudHMgdGhlIGJhciBwb3J0aW9uIG9mIGEgcHJvZ3Jlc3MgYmFyLiJ9LHtuYW1lOiI6Oi1tcy1maWxsLWxvd2VyIixicm93c2VyczpbIkUiLCJJRTEwIl0sZGVzY3JpcHRpb246IlJlcHJlc2VudHMgdGhlIHBvcnRpb24gb2YgdGhlIHNsaWRlciB0cmFjayBmcm9tIGl0cyBzbWFsbGVzdCB2YWx1ZSB1cCB0byB0aGUgdmFsdWUgY3VycmVudGx5IHNlbGVjdGVkIGJ5IHRoZSB0aHVtYi4gSW4gYSBsZWZ0LXRvLXJpZ2h0IGxheW91dCwgdGhpcyBpcyB0aGUgcG9ydGlvbiBvZiB0aGUgc2xpZGVyIHRyYWNrIHRvIHRoZSBsZWZ0IG9mIHRoZSB0aHVtYi4ifSx7bmFtZToiOjotbXMtZmlsbC11cHBlciIsYnJvd3NlcnM6WyJFIiwiSUUxMCJdLGRlc2NyaXB0aW9uOiJSZXByZXNlbnRzIHRoZSBwb3J0aW9uIG9mIHRoZSBzbGlkZXIgdHJhY2sgZnJvbSB0aGUgdmFsdWUgY3VycmVudGx5IHNlbGVjdGVkIGJ5IHRoZSB0aHVtYiB1cCB0byB0aGUgc2xpZGVyJ3MgbGFyZ2VzdCB2YWx1ZS4gSW4gYSBsZWZ0LXRvLXJpZ2h0IGxheW91dCwgdGhpcyBpcyB0aGUgcG9ydGlvbiBvZiB0aGUgc2xpZGVyIHRyYWNrIHRvIHRoZSByaWdodCBvZiB0aGUgdGh1bWIuIn0se25hbWU6Ijo6LW1zLXJldmVhbCIsYnJvd3NlcnM6WyJFIiwiSUUxMCJdLGRlc2NyaXB0aW9uOiJSZXByZXNlbnRzIHRoZSBwYXNzd29yZCByZXZlYWwgYnV0dG9uIG9mIGFuIGlucHV0IHR5cGU9cGFzc3dvcmQgY29udHJvbC4ifSx7bmFtZToiOjotbXMtdGh1bWIiLGJyb3dzZXJzOlsiRSIsIklFMTAiXSxkZXNjcmlwdGlvbjoiUmVwcmVzZW50cyB0aGUgcG9ydGlvbiBvZiByYW5nZSBpbnB1dCBjb250cm9sIChhbHNvIGtub3duIGFzIGEgc2xpZGVyIGNvbnRyb2wpIHRoYXQgdGhlIHVzZXIgZHJhZ3MuIn0se25hbWU6Ijo6LW1zLXRpY2tzLWFmdGVyIixicm93c2VyczpbIkUiLCJJRTEwIl0sZGVzY3JpcHRpb246IlJlcHJlc2VudHMgdGhlIHRpY2sgbWFya3Mgb2YgYSBzbGlkZXIgdGhhdCBiZWdpbiBqdXN0IGFmdGVyIHRoZSB0aHVtYiBhbmQgY29udGludWUgdXAgdG8gdGhlIHNsaWRlcidzIGxhcmdlc3QgdmFsdWUuIEluIGEgbGVmdC10by1yaWdodCBsYXlvdXQsIHRoZXNlIGFyZSB0aGUgdGlja3MgdG8gdGhlIHJpZ2h0IG9mIHRoZSB0aHVtYi4ifSx7bmFtZToiOjotbXMtdGlja3MtYmVmb3JlIixicm93c2VyczpbIkUiLCJJRTEwIl0sZGVzY3JpcHRpb246IlJlcHJlc2VudHMgdGhlIHRpY2sgbWFya3Mgb2YgYSBzbGlkZXIgdGhhdCByZXByZXNlbnQgaXRzIHNtYWxsZXN0IHZhbHVlcyB1cCB0byB0aGUgdmFsdWUgY3VycmVudGx5IHNlbGVjdGVkIGJ5IHRoZSB0aHVtYi4gSW4gYSBsZWZ0LXRvLXJpZ2h0IGxheW91dCwgdGhlc2UgYXJlIHRoZSB0aWNrcyB0byB0aGUgbGVmdCBvZiB0aGUgdGh1bWIuIn0se25hbWU6Ijo6LW1zLXRvb2x0aXAiLGJyb3dzZXJzOlsiRSIsIklFMTAiXSxkZXNjcmlwdGlvbjoiUmVwcmVzZW50cyB0aGUgdG9vbHRpcCBvZiBhIHNsaWRlciAoaW5wdXQgdHlwZT1yYW5nZSkuIn0se25hbWU6Ijo6LW1zLXRyYWNrIixicm93c2VyczpbIkUiLCJJRTEwIl0sZGVzY3JpcHRpb246IlJlcHJlc2VudHMgdGhlIHRyYWNrIG9mIGEgc2xpZGVyLiJ9LHtuYW1lOiI6Oi1tcy12YWx1ZSIsYnJvd3NlcnM6WyJFIiwiSUUxMCJdLGRlc2NyaXB0aW9uOiJSZXByZXNlbnRzIHRoZSBjb250ZW50IG9mIGEgdGV4dCBvciBwYXNzd29yZCBpbnB1dCBjb250cm9sLCBvciBhIHNlbGVjdCBjb250cm9sLiJ9LHtuYW1lOiI6OnNlbGVjdGlvbiIscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzo6c2VsZWN0aW9uIn1dLGRlc2NyaXB0aW9uOiJSZXByZXNlbnRzIHRoZSBwb3J0aW9uIG9mIGEgZG9jdW1lbnQgdGhhdCBoYXMgYmVlbiBoaWdobGlnaHRlZCBieSB0aGUgdXNlci4ifSx7bmFtZToiOjpzaGFkb3ciLGJyb3dzZXJzOlsiQzM1IiwiTzIyIl0sZGVzY3JpcHRpb246Ik1hdGNoZXMgdGhlIHNoYWRvdyByb290IGlmIGFuIGVsZW1lbnQgaGFzIGEgc2hhZG93IHRyZWUuIn0se25hbWU6Ijo6LXdlYmtpdC1maWxlLXVwbG9hZC1idXR0b24iLGJyb3dzZXJzOlsiQyIsIk8iLCJTNiJdfSx7bmFtZToiOjotd2Via2l0LWlubmVyLXNwaW4tYnV0dG9uIixicm93c2VyczpbIkU3OSIsIlM1IiwiQzYiLCJPMTUiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOjotd2Via2l0LWlubmVyLXNwaW4tYnV0dG9uIn1dfSx7bmFtZToiOjotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyIixicm93c2VyczpbIkMiLCJTNCJdfSx7bmFtZToiOjotd2Via2l0LWtleWdlbi1zZWxlY3QiLGJyb3dzZXJzOlsiQyIsIk8iLCJTNiJdfSx7bmFtZToiOjotd2Via2l0LW1ldGVyLWJhciIsYnJvd3NlcnM6WyJFNzkiLCJTNS4xIiwiQzEyIiwiTzE1Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzo6LXdlYmtpdC1tZXRlci1iYXIifV19LHtuYW1lOiI6Oi13ZWJraXQtbWV0ZXItZXZlbi1sZXNzLWdvb2QtdmFsdWUiLGJyb3dzZXJzOlsiRTc5IiwiUzUuMSIsIkMxMiIsIk8xNSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy86Oi13ZWJraXQtbWV0ZXItZXZlbi1sZXNzLWdvb2QtdmFsdWUifV19LHtuYW1lOiI6Oi13ZWJraXQtbWV0ZXItb3B0aW11bS12YWx1ZSIsYnJvd3NlcnM6WyJFNzkiLCJTNS4xIiwiQzEyIiwiTzE1Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzo6LXdlYmtpdC1tZXRlci1vcHRpbXVtLXZhbHVlIn1dfSx7bmFtZToiOjotd2Via2l0LW1ldGVyLXN1Ym9wdGltdW0tdmFsdWUiLGJyb3dzZXJzOlsiRTc5IiwiUzUuMSIsIkMxMiIsIk8xNSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy86Oi13ZWJraXQtbWV0ZXItc3Vib3B0aW11bS12YWx1ZSJ9XX0se25hbWU6Ijo6LXdlYmtpdC1vdXRlci1zcGluLWJ1dHRvbiIsYnJvd3NlcnM6WyJTNSIsIkM2Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzo6LXdlYmtpdC1vdXRlci1zcGluLWJ1dHRvbiJ9XX0se25hbWU6Ijo6LXdlYmtpdC1wcm9ncmVzcy1iYXIiLGJyb3dzZXJzOlsiRTc5IiwiUzciLCJDMjUiLCJPMTUiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOjotd2Via2l0LXByb2dyZXNzLWJhciJ9XX0se25hbWU6Ijo6LXdlYmtpdC1wcm9ncmVzcy1pbm5lci1lbGVtZW50Iixicm93c2VyczpbIkU3OSIsIlM3IiwiQzIzIiwiTzE1Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzo6LXdlYmtpdC1wcm9ncmVzcy1pbm5lci1lbGVtZW50In1dfSx7bmFtZToiOjotd2Via2l0LXByb2dyZXNzLXZhbHVlIixicm93c2VyczpbIkU3OSIsIlM3IiwiQzI1IiwiTzE1Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzo6LXdlYmtpdC1wcm9ncmVzcy12YWx1ZSJ9XX0se25hbWU6Ijo6LXdlYmtpdC1yZXNpemVyIixicm93c2VyczpbIkU3OSIsIlM0IiwiQzIiLCJPMTUiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOjotd2Via2l0LXNjcm9sbGJhciJ9XX0se25hbWU6Ijo6LXdlYmtpdC1zY3JvbGxiYXIiLGJyb3dzZXJzOlsiRTc5IiwiUzQiLCJDMiIsIk8xNSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy86Oi13ZWJraXQtc2Nyb2xsYmFyIn1dfSx7bmFtZToiOjotd2Via2l0LXNjcm9sbGJhci1idXR0b24iLGJyb3dzZXJzOlsiRTc5IiwiUzQiLCJDMiIsIk8xNSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy86Oi13ZWJraXQtc2Nyb2xsYmFyIn1dfSx7bmFtZToiOjotd2Via2l0LXNjcm9sbGJhci1jb3JuZXIiLGJyb3dzZXJzOlsiRTc5IiwiUzQiLCJDMiIsIk8xNSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy86Oi13ZWJraXQtc2Nyb2xsYmFyIn1dfSx7bmFtZToiOjotd2Via2l0LXNjcm9sbGJhci10aHVtYiIsYnJvd3NlcnM6WyJFNzkiLCJTNCIsIkMyIiwiTzE1Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzo6LXdlYmtpdC1zY3JvbGxiYXIifV19LHtuYW1lOiI6Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNrIixicm93c2VyczpbIkU3OSIsIlM0IiwiQzIiLCJPMTUiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOjotd2Via2l0LXNjcm9sbGJhciJ9XX0se25hbWU6Ijo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2stcGllY2UiLGJyb3dzZXJzOlsiRTc5IiwiUzQiLCJDMiIsIk8xNSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy86Oi13ZWJraXQtc2Nyb2xsYmFyIn1dfSx7bmFtZToiOjotd2Via2l0LXNlYXJjaC1jYW5jZWwtYnV0dG9uIixicm93c2VyczpbIkU3OSIsIlMzIiwiQzEiLCJPMTUiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOjotd2Via2l0LXNlYXJjaC1jYW5jZWwtYnV0dG9uIn1dfSx7bmFtZToiOjotd2Via2l0LXNlYXJjaC1kZWNvcmF0aW9uIixicm93c2VyczpbIkMiLCJTNCJdfSx7bmFtZToiOjotd2Via2l0LXNlYXJjaC1yZXN1bHRzLWJ1dHRvbiIsYnJvd3NlcnM6WyJFNzkiLCJTMyIsIkMxIiwiTzE1Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzo6LXdlYmtpdC1zZWFyY2gtcmVzdWx0cy1idXR0b24ifV19LHtuYW1lOiI6Oi13ZWJraXQtc2VhcmNoLXJlc3VsdHMtZGVjb3JhdGlvbiIsYnJvd3NlcnM6WyJDIiwiUzQiXX0se25hbWU6Ijo6LXdlYmtpdC1zbGlkZXItcnVubmFibGUtdHJhY2siLGJyb3dzZXJzOlsiQyIsIk8iLCJTNiJdfSx7bmFtZToiOjotd2Via2l0LXNsaWRlci10aHVtYiIsYnJvd3NlcnM6WyJDIiwiTyIsIlM2Il19LHtuYW1lOiI6Oi13ZWJraXQtdGV4dGZpZWxkLWRlY29yYXRpb24tY29udGFpbmVyIixicm93c2VyczpbIkMiLCJPIiwiUzYiXX0se25hbWU6Ijo6LXdlYmtpdC12YWxpZGF0aW9uLWJ1YmJsZSIsYnJvd3NlcnM6WyJDIiwiTyIsIlM2Il19LHtuYW1lOiI6Oi13ZWJraXQtdmFsaWRhdGlvbi1idWJibGUtYXJyb3ciLGJyb3dzZXJzOlsiQyIsIk8iLCJTNiJdfSx7bmFtZToiOjotd2Via2l0LXZhbGlkYXRpb24tYnViYmxlLWFycm93LWNsaXBwZXIiLGJyb3dzZXJzOlsiQyIsIk8iLCJTNiJdfSx7bmFtZToiOjotd2Via2l0LXZhbGlkYXRpb24tYnViYmxlLWhlYWRpbmciLGJyb3dzZXJzOlsiQyIsIk8iLCJTNiJdfSx7bmFtZToiOjotd2Via2l0LXZhbGlkYXRpb24tYnViYmxlLW1lc3NhZ2UiLGJyb3dzZXJzOlsiQyIsIk8iLCJTNiJdfSx7bmFtZToiOjotd2Via2l0LXZhbGlkYXRpb24tYnViYmxlLXRleHQtYmxvY2siLGJyb3dzZXJzOlsiQyIsIk8iLCJTNiJdfSx7bmFtZToiOjp0YXJnZXQtdGV4dCIsc3RhdHVzOiJleHBlcmltZW50YWwiLGJyb3dzZXJzOlsiRTg5IiwiQzg5IiwiTzc1Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzo6dGFyZ2V0LXRleHQifV0sZGVzY3JpcHRpb246IlRoZSA6OnRhcmdldC10ZXh0IENTUyBwc2V1ZG8tZWxlbWVudCByZXByZXNlbnRzIHRoZSB0ZXh0IHRoYXQgaGFzIGJlZW4gc2Nyb2xsZWQgdG8gaWYgdGhlIGJyb3dzZXIgc3VwcG9ydHMgc2Nyb2xsLXRvLXRleHQgZnJhZ21lbnRzLiBJdCBhbGxvd3MgYXV0aG9ycyB0byBjaG9vc2UgaG93IHRvIGhpZ2hsaWdodCB0aGF0IHNlY3Rpb24gb2YgdGV4dC4ifSx7bmFtZToiOjotbW96LXJhbmdlLXByb2dyZXNzIixzdGF0dXM6Im5vbnN0YW5kYXJkIixicm93c2VyczpbIkZGMjIiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOjotbW96LXJhbmdlLXByb2dyZXNzIn1dLGRlc2NyaXB0aW9uOidUaGUgOjotbW96LXJhbmdlLXByb2dyZXNzIENTUyBwc2V1ZG8tZWxlbWVudCBpcyBhIE1vemlsbGEgZXh0ZW5zaW9uIHRoYXQgcmVwcmVzZW50cyB0aGUgbG93ZXIgcG9ydGlvbiBvZiB0aGUgdHJhY2sgKGkuZS4sIGdyb292ZSkgaW4gd2hpY2ggdGhlIGluZGljYXRvciBzbGlkZXMgaW4gYW4gPGlucHV0PiBvZiB0eXBlPSJyYW5nZSIuIFRoaXMgcG9ydGlvbiBjb3JyZXNwb25kcyB0byB2YWx1ZXMgbG93ZXIgdGhhbiB0aGUgdmFsdWUgY3VycmVudGx5IHNlbGVjdGVkIGJ5IHRoZSB0aHVtYiAoaS5lLiwgdmlydHVhbCBrbm9iKS4nfSx7bmFtZToiOjotbW96LXJhbmdlLXRodW1iIixzdGF0dXM6Im5vbnN0YW5kYXJkIixicm93c2VyczpbIkZGMjEiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOjotbW96LXJhbmdlLXRodW1iIn1dLGRlc2NyaXB0aW9uOidUaGUgOjotbW96LXJhbmdlLXRodW1iIENTUyBwc2V1ZG8tZWxlbWVudCBpcyBhIE1vemlsbGEgZXh0ZW5zaW9uIHRoYXQgcmVwcmVzZW50cyB0aGUgdGh1bWIgKGkuZS4sIHZpcnR1YWwga25vYikgb2YgYW4gPGlucHV0PiBvZiB0eXBlPSJyYW5nZSIuIFRoZSB1c2VyIGNhbiBtb3ZlIHRoZSB0aHVtYiBhbG9uZyB0aGUgaW5wdXRcJ3MgdHJhY2sgdG8gYWx0ZXIgaXRzIG51bWVyaWNhbCB2YWx1ZS4nfSx7bmFtZToiOjotbW96LXJhbmdlLXRyYWNrIixzdGF0dXM6Im5vbnN0YW5kYXJkIixicm93c2VyczpbIkZGMjEiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOjotbW96LXJhbmdlLXRyYWNrIn1dLGRlc2NyaXB0aW9uOidUaGUgOjotbW96LXJhbmdlLXRyYWNrIENTUyBwc2V1ZG8tZWxlbWVudCBpcyBhIE1vemlsbGEgZXh0ZW5zaW9uIHRoYXQgcmVwcmVzZW50cyB0aGUgdHJhY2sgKGkuZS4sIGdyb292ZSkgaW4gd2hpY2ggdGhlIGluZGljYXRvciBzbGlkZXMgaW4gYW4gPGlucHV0PiBvZiB0eXBlPSJyYW5nZSIuJ30se25hbWU6Ijo6LXdlYmtpdC1wcm9ncmVzcy1pbm5lci12YWx1ZSIsc3RhdHVzOiJub25zdGFuZGFyZCIsZGVzY3JpcHRpb246IlRoZSA6Oi13ZWJraXQtcHJvZ3Jlc3MtdmFsdWUgQ1NTIHBzZXVkby1lbGVtZW50IHJlcHJlc2VudHMgdGhlIGZpbGxlZC1pbiBwb3J0aW9uIG9mIHRoZSBiYXIgb2YgYSA8cHJvZ3Jlc3M+IGVsZW1lbnQuIEl0IGlzIGEgY2hpbGQgb2YgdGhlIDo6LXdlYmtpdC1wcm9ncmVzcy1iYXIgcHNldWRvLWVsZW1lbnQuXG5cbkluIG9yZGVyIHRvIGxldCA6Oi13ZWJraXQtcHJvZ3Jlc3MtdmFsdWUgdGFrZSBlZmZlY3QsIC13ZWJraXQtYXBwZWFyYW5jZSBuZWVkcyB0byBiZSBzZXQgdG8gbm9uZSBvbiB0aGUgPHByb2dyZXNzPiBlbGVtZW50LiJ9LHtuYW1lOiI6OmdyYW1tYXItZXJyb3IiLHN0YXR1czoiZXhwZXJpbWVudGFsIixyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOjpncmFtbWFyLWVycm9yIn1dLGRlc2NyaXB0aW9uOiJUaGUgOjpncmFtbWFyLWVycm9yIENTUyBwc2V1ZG8tZWxlbWVudCByZXByZXNlbnRzIGEgdGV4dCBzZWdtZW50IHdoaWNoIHRoZSB1c2VyIGFnZW50IGhhcyBmbGFnZ2VkIGFzIGdyYW1tYXRpY2FsbHkgaW5jb3JyZWN0LiJ9LHtuYW1lOiI6Om1hcmtlciIsYnJvd3NlcnM6WyJFODYiLCJGRjY4IiwiUzExLjEiLCJDODYiLCJPNzIiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOjptYXJrZXIifV0sZGVzY3JpcHRpb246IlRoZSA6Om1hcmtlciBDU1MgcHNldWRvLWVsZW1lbnQgc2VsZWN0cyB0aGUgbWFya2VyIGJveCBvZiBhIGxpc3QgaXRlbSwgd2hpY2ggdHlwaWNhbGx5IGNvbnRhaW5zIGEgYnVsbGV0IG9yIG51bWJlci4gSXQgd29ya3Mgb24gYW55IGVsZW1lbnQgb3IgcHNldWRvLWVsZW1lbnQgc2V0IHRvIGRpc3BsYXk6IGxpc3QtaXRlbSwgc3VjaCBhcyB0aGUgPGxpPiBhbmQgPHN1bW1hcnk+IGVsZW1lbnRzLiJ9LHtuYW1lOiI6OnBhcnQiLHN0YXR1czoiZXhwZXJpbWVudGFsIixicm93c2VyczpbIkU3OSIsIkZGNzIiLCJTMTMuMSIsIkM3MyIsIk82MCJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy86OnBhcnQifV0sZGVzY3JpcHRpb246IlRoZSA6OnBhcnQgQ1NTIHBzZXVkby1lbGVtZW50IHJlcHJlc2VudHMgYW55IGVsZW1lbnQgd2l0aGluIGEgc2hhZG93IHRyZWUgdGhhdCBoYXMgYSBtYXRjaGluZyBwYXJ0IGF0dHJpYnV0ZS4ifSx7bmFtZToiOjpwbGFjZWhvbGRlciIsYnJvd3NlcnM6WyJFNzkiLCJGRjUxIiwiUzEwLjEiLCJDNTciLCJPNDQiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOjpwbGFjZWhvbGRlciJ9XSxkZXNjcmlwdGlvbjoiVGhlIDo6cGxhY2Vob2xkZXIgQ1NTIHBzZXVkby1lbGVtZW50IHJlcHJlc2VudHMgdGhlIHBsYWNlaG9sZGVyIHRleHQgb2YgYSBmb3JtIGVsZW1lbnQuIn0se25hbWU6Ijo6c2xvdHRlZCIsYnJvd3NlcnM6WyJFNzkiLCJGRjYzIiwiUzEwIiwiQzUwIiwiTzM3Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzo6c2xvdHRlZCJ9XSxkZXNjcmlwdGlvbjoiVGhlIDpzbG90dGVkKCkgQ1NTIHBzZXVkby1lbGVtZW50IHJlcHJlc2VudHMgYW55IGVsZW1lbnQgdGhhdCBoYXMgYmVlbiBwbGFjZWQgaW50byBhIHNsb3QgaW5zaWRlIGFuIEhUTUwgdGVtcGxhdGUuIn0se25hbWU6Ijo6c3BlbGxpbmctZXJyb3IiLHN0YXR1czoiZXhwZXJpbWVudGFsIixyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOjpzcGVsbGluZy1lcnJvciJ9XSxkZXNjcmlwdGlvbjoiVGhlIDo6c3BlbGxpbmctZXJyb3IgQ1NTIHBzZXVkby1lbGVtZW50IHJlcHJlc2VudHMgYSB0ZXh0IHNlZ21lbnQgd2hpY2ggdGhlIHVzZXIgYWdlbnQgaGFzIGZsYWdnZWQgYXMgaW5jb3JyZWN0bHkgc3BlbGxlZC4ifV19LFpkPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlKXt0aGlzLl9wcm9wZXJ0aWVzPVtdLHRoaXMuX2F0RGlyZWN0aXZlcz1bXSx0aGlzLl9wc2V1ZG9DbGFzc2VzPVtdLHRoaXMuX3BzZXVkb0VsZW1lbnRzPVtdLHRoaXMuYWRkRGF0YShlKX1yZXR1cm4gZS5wcm90b3R5cGUucHJvdmlkZVByb3BlcnRpZXM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcHJvcGVydGllc30sZS5wcm90b3R5cGUucHJvdmlkZUF0RGlyZWN0aXZlcz1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9hdERpcmVjdGl2ZXN9LGUucHJvdG90eXBlLnByb3ZpZGVQc2V1ZG9DbGFzc2VzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3BzZXVkb0NsYXNzZXN9LGUucHJvdG90eXBlLnByb3ZpZGVQc2V1ZG9FbGVtZW50cz1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9wc2V1ZG9FbGVtZW50c30sZS5wcm90b3R5cGUuYWRkRGF0YT1mdW5jdGlvbihlKXtpZihBcnJheS5pc0FycmF5KGUucHJvcGVydGllcykpZm9yKHZhciB0PTAsbj1lLnByb3BlcnRpZXM7dDxuLmxlbmd0aDt0Kyspe3ZhciByPW5bdF07InN0cmluZyI9PXR5cGVvZiByLm5hbWUmJnRoaXMuX3Byb3BlcnRpZXMucHVzaChyKX1pZihBcnJheS5pc0FycmF5KGUuYXREaXJlY3RpdmVzKSlmb3IodmFyIGk9MCxvPWUuYXREaXJlY3RpdmVzO2k8by5sZW5ndGg7aSsrKXtRZChyPW9baV0pJiZ0aGlzLl9hdERpcmVjdGl2ZXMucHVzaChyKX1pZihBcnJheS5pc0FycmF5KGUucHNldWRvQ2xhc3NlcykpZm9yKHZhciBzPTAsYT1lLnBzZXVkb0NsYXNzZXM7czxhLmxlbmd0aDtzKyspe2VwKHI9YVtzXSkmJnRoaXMuX3BzZXVkb0NsYXNzZXMucHVzaChyKX1pZihBcnJheS5pc0FycmF5KGUucHNldWRvRWxlbWVudHMpKWZvcih2YXIgbD0wLGM9ZS5wc2V1ZG9FbGVtZW50cztsPGMubGVuZ3RoO2wrKyl7dHAocj1jW2xdKSYmdGhpcy5fcHNldWRvRWxlbWVudHMucHVzaChyKX19LGV9KCk7ZnVuY3Rpb24gUWQoZSl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBlLm5hbWV9ZnVuY3Rpb24gZXAoZSl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBlLm5hbWV9ZnVuY3Rpb24gdHAoZSl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBlLm5hbWV9dmFyIG5wPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlKXt0aGlzLmRhdGFQcm92aWRlcnM9W10sdGhpcy5fcHJvcGVydHlTZXQ9e30sdGhpcy5fYXREaXJlY3RpdmVTZXQ9e30sdGhpcy5fcHNldWRvQ2xhc3NTZXQ9e30sdGhpcy5fcHNldWRvRWxlbWVudFNldD17fSx0aGlzLl9wcm9wZXJ0aWVzPVtdLHRoaXMuX2F0RGlyZWN0aXZlcz1bXSx0aGlzLl9wc2V1ZG9DbGFzc2VzPVtdLHRoaXMuX3BzZXVkb0VsZW1lbnRzPVtdLHRoaXMuc2V0RGF0YVByb3ZpZGVycyghMSE9PShudWxsPT1lP3ZvaWQgMDplLnVzZURlZmF1bHREYXRhUHJvdmlkZXIpLChudWxsPT1lP3ZvaWQgMDplLmN1c3RvbURhdGFQcm92aWRlcnMpfHxbXSl9cmV0dXJuIGUucHJvdG90eXBlLnNldERhdGFQcm92aWRlcnM9ZnVuY3Rpb24oZSx0KXt2YXIgbjt0aGlzLmRhdGFQcm92aWRlcnM9W10sZSYmdGhpcy5kYXRhUHJvdmlkZXJzLnB1c2gobmV3IFpkKFlkKSksKG49dGhpcy5kYXRhUHJvdmlkZXJzKS5wdXNoLmFwcGx5KG4sdCksdGhpcy5jb2xsZWN0RGF0YSgpfSxlLnByb3RvdHlwZS5jb2xsZWN0RGF0YT1mdW5jdGlvbigpe3ZhciBlPXRoaXM7dGhpcy5fcHJvcGVydHlTZXQ9e30sdGhpcy5fYXREaXJlY3RpdmVTZXQ9e30sdGhpcy5fcHNldWRvQ2xhc3NTZXQ9e30sdGhpcy5fcHNldWRvRWxlbWVudFNldD17fSx0aGlzLmRhdGFQcm92aWRlcnMuZm9yRWFjaCgoZnVuY3Rpb24odCl7dC5wcm92aWRlUHJvcGVydGllcygpLmZvckVhY2goKGZ1bmN0aW9uKHQpe2UuX3Byb3BlcnR5U2V0W3QubmFtZV18fChlLl9wcm9wZXJ0eVNldFt0Lm5hbWVdPXQpfSkpLHQucHJvdmlkZUF0RGlyZWN0aXZlcygpLmZvckVhY2goKGZ1bmN0aW9uKHQpe2UuX2F0RGlyZWN0aXZlU2V0W3QubmFtZV18fChlLl9hdERpcmVjdGl2ZVNldFt0Lm5hbWVdPXQpfSkpLHQucHJvdmlkZVBzZXVkb0NsYXNzZXMoKS5mb3JFYWNoKChmdW5jdGlvbih0KXtlLl9wc2V1ZG9DbGFzc1NldFt0Lm5hbWVdfHwoZS5fcHNldWRvQ2xhc3NTZXRbdC5uYW1lXT10KX0pKSx0LnByb3ZpZGVQc2V1ZG9FbGVtZW50cygpLmZvckVhY2goKGZ1bmN0aW9uKHQpe2UuX3BzZXVkb0VsZW1lbnRTZXRbdC5uYW1lXXx8KGUuX3BzZXVkb0VsZW1lbnRTZXRbdC5uYW1lXT10KX0pKX0pKSx0aGlzLl9wcm9wZXJ0aWVzPXVjKHRoaXMuX3Byb3BlcnR5U2V0KSx0aGlzLl9hdERpcmVjdGl2ZXM9dWModGhpcy5fYXREaXJlY3RpdmVTZXQpLHRoaXMuX3BzZXVkb0NsYXNzZXM9dWModGhpcy5fcHNldWRvQ2xhc3NTZXQpLHRoaXMuX3BzZXVkb0VsZW1lbnRzPXVjKHRoaXMuX3BzZXVkb0VsZW1lbnRTZXQpfSxlLnByb3RvdHlwZS5nZXRQcm9wZXJ0eT1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5fcHJvcGVydHlTZXRbZV19LGUucHJvdG90eXBlLmdldEF0RGlyZWN0aXZlPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl9hdERpcmVjdGl2ZVNldFtlXX0sZS5wcm90b3R5cGUuZ2V0UHNldWRvQ2xhc3M9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuX3BzZXVkb0NsYXNzU2V0W2VdfSxlLnByb3RvdHlwZS5nZXRQc2V1ZG9FbGVtZW50PWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl9wc2V1ZG9FbGVtZW50U2V0W2VdfSxlLnByb3RvdHlwZS5nZXRQcm9wZXJ0aWVzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3Byb3BlcnRpZXN9LGUucHJvdG90eXBlLmdldEF0RGlyZWN0aXZlcz1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9hdERpcmVjdGl2ZXN9LGUucHJvdG90eXBlLmdldFBzZXVkb0NsYXNzZXM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcHNldWRvQ2xhc3Nlc30sZS5wcm90b3R5cGUuZ2V0UHNldWRvRWxlbWVudHM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcHNldWRvRWxlbWVudHN9LGUucHJvdG90eXBlLmlzS25vd25Qcm9wZXJ0eT1mdW5jdGlvbihlKXtyZXR1cm4gZS50b0xvd2VyQ2FzZSgpaW4gdGhpcy5fcHJvcGVydHlTZXR9LGUucHJvdG90eXBlLmlzU3RhbmRhcmRQcm9wZXJ0eT1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5pc0tub3duUHJvcGVydHkoZSkmJighdGhpcy5fcHJvcGVydHlTZXRbZS50b0xvd2VyQ2FzZSgpXS5zdGF0dXN8fCJzdGFuZGFyZCI9PT10aGlzLl9wcm9wZXJ0eVNldFtlLnRvTG93ZXJDYXNlKCldLnN0YXR1cyl9LGV9KCk7ZnVuY3Rpb24gcnAoZSx0LG4pe3JldHVybiB0Lm1hcCgoZnVuY3Rpb24odCl7Zm9yKHZhciByPWZ1bmN0aW9uKHQpe3ZhciByPWUub2Zmc2V0QXQodCksaT1uLmZpbmRDaGlsZEF0T2Zmc2V0KHIsITApO2lmKCFpKXJldHVybltdO3ZhciBvPVtdO2Zvcig7aTspaS5wYXJlbnQmJmkub2Zmc2V0PT09aS5wYXJlbnQub2Zmc2V0JiZpLmVuZD09PWkucGFyZW50LmVuZHx8KGkudHlwZT09PWppLkRlY2xhcmF0aW9ucyYmcj5pLm9mZnNldCYmcjxpLmVuZCYmby5wdXNoKFtpLm9mZnNldCsxLGkuZW5kLTFdKSxvLnB1c2goW2kub2Zmc2V0LGkuZW5kXSkpLGk9aS5wYXJlbnQ7cmV0dXJuIG99KHQpLGk9dm9pZCAwLG89ci5sZW5ndGgtMTtvPj0wO28tLSlpPWhsLmNyZWF0ZShrcy5jcmVhdGUoZS5wb3NpdGlvbkF0KHJbb11bMF0pLGUucG9zaXRpb25BdChyW29dWzFdKSksaSk7cmV0dXJuIGl8fChpPWhsLmNyZWF0ZShrcy5jcmVhdGUodCx0KSkpLGl9KSl9dmFyIGlwPWZ1bmN0aW9uKCl7dmFyIGU9ZnVuY3Rpb24odCxuKXtyZXR1cm4oZT1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fHtfX3Byb3RvX186W119aW5zdGFuY2VvZiBBcnJheSYmZnVuY3Rpb24oZSx0KXtlLl9fcHJvdG9fXz10fXx8ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG4gaW4gdClPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxuKSYmKGVbbl09dFtuXSl9KSh0LG4pfTtyZXR1cm4gZnVuY3Rpb24odCxuKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgbiYmbnVsbCE9PW4pdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSAiK1N0cmluZyhuKSsiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIG51bGwiKTtmdW5jdGlvbiByKCl7dGhpcy5jb25zdHJ1Y3Rvcj10fWUodCxuKSx0LnByb3RvdHlwZT1udWxsPT09bj9PYmplY3QuY3JlYXRlKG4pOihyLnByb3RvdHlwZT1uLnByb3RvdHlwZSxuZXcgcil9fSgpLG9wPWZ1bmN0aW9uKGUsdCxuLHIpe3JldHVybiBuZXcobnx8KG49UHJvbWlzZSkpKChmdW5jdGlvbihpLG8pe2Z1bmN0aW9uIHMoZSl7dHJ5e2woci5uZXh0KGUpKX1jYXRjaChlKXtvKGUpfX1mdW5jdGlvbiBhKGUpe3RyeXtsKHIudGhyb3coZSkpfWNhdGNoKGUpe28oZSl9fWZ1bmN0aW9uIGwoZSl7dmFyIHQ7ZS5kb25lP2koZS52YWx1ZSk6KHQ9ZS52YWx1ZSx0IGluc3RhbmNlb2Ygbj90Om5ldyBuKChmdW5jdGlvbihlKXtlKHQpfSkpKS50aGVuKHMsYSl9bCgocj1yLmFwcGx5KGUsdHx8W10pKS5uZXh0KCkpfSkpfSxzcD1mdW5jdGlvbihlLHQpe3ZhciBuLHIsaSxvLHM9e2xhYmVsOjAsc2VudDpmdW5jdGlvbigpe2lmKDEmaVswXSl0aHJvdyBpWzFdO3JldHVybiBpWzFdfSx0cnlzOltdLG9wczpbXX07cmV0dXJuIG89e25leHQ6YSgwKSx0aHJvdzphKDEpLHJldHVybjphKDIpfSwiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYob1tTeW1ib2wuaXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSxvO2Z1bmN0aW9uIGEobyl7cmV0dXJuIGZ1bmN0aW9uKGEpe3JldHVybiBmdW5jdGlvbihvKXtpZihuKXRocm93IG5ldyBUeXBlRXJyb3IoIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy4iKTtmb3IoO3M7KXRyeXtpZihuPTEsciYmKGk9MiZvWzBdP3IucmV0dXJuOm9bMF0/ci50aHJvd3x8KChpPXIucmV0dXJuKSYmaS5jYWxsKHIpLDApOnIubmV4dCkmJiEoaT1pLmNhbGwocixvWzFdKSkuZG9uZSlyZXR1cm4gaTtzd2l0Y2gocj0wLGkmJihvPVsyJm9bMF0saS52YWx1ZV0pLG9bMF0pe2Nhc2UgMDpjYXNlIDE6aT1vO2JyZWFrO2Nhc2UgNDpyZXR1cm4gcy5sYWJlbCsrLHt2YWx1ZTpvWzFdLGRvbmU6ITF9O2Nhc2UgNTpzLmxhYmVsKysscj1vWzFdLG89WzBdO2NvbnRpbnVlO2Nhc2UgNzpvPXMub3BzLnBvcCgpLHMudHJ5cy5wb3AoKTtjb250aW51ZTtkZWZhdWx0OmlmKCEoaT1zLnRyeXMsKGk9aS5sZW5ndGg+MCYmaVtpLmxlbmd0aC0xXSl8fDYhPT1vWzBdJiYyIT09b1swXSkpe3M9MDtjb250aW51ZX1pZigzPT09b1swXSYmKCFpfHxvWzFdPmlbMF0mJm9bMV08aVszXSkpe3MubGFiZWw9b1sxXTticmVha31pZig2PT09b1swXSYmcy5sYWJlbDxpWzFdKXtzLmxhYmVsPWlbMV0saT1vO2JyZWFrfWlmKGkmJnMubGFiZWw8aVsyXSl7cy5sYWJlbD1pWzJdLHMub3BzLnB1c2gobyk7YnJlYWt9aVsyXSYmcy5vcHMucG9wKCkscy50cnlzLnBvcCgpO2NvbnRpbnVlfW89dC5jYWxsKGUscyl9Y2F0Y2goZSl7bz1bNixlXSxyPTB9ZmluYWxseXtuPWk9MH1pZig1Jm9bMF0pdGhyb3cgb1sxXTtyZXR1cm57dmFsdWU6b1swXT9vWzFdOnZvaWQgMCxkb25lOiEwfX0oW28sYV0pfX19LGFwPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQodCl7cmV0dXJuIGUuY2FsbCh0aGlzLHQsITApfHx0aGlzfXJldHVybiBpcCh0LGUpLHQucHJvdG90eXBlLmlzUmF3U3RyaW5nRG9jdW1lbnRMaW5rTm9kZT1mdW5jdGlvbih0KXtyZXR1cm4gZS5wcm90b3R5cGUuaXNSYXdTdHJpbmdEb2N1bWVudExpbmtOb2RlLmNhbGwodGhpcyx0KXx8dC50eXBlPT09amkuVXNlfHx0LnR5cGU9PT1qaS5Gb3J3YXJkfSx0LnByb3RvdHlwZS5yZXNvbHZlUmVsYXRpdmVSZWZlcmVuY2U9ZnVuY3Rpb24odCxuLHIsaSl7cmV0dXJuIG9wKHRoaXMsdm9pZCAwLHZvaWQgMCwoZnVuY3Rpb24oKXt2YXIgbyxzLGEsbDtyZXR1cm4gc3AodGhpcywoZnVuY3Rpb24oYyl7c3dpdGNoKGMubGFiZWwpe2Nhc2UgMDpyZXR1cm4gV2kodCwic2FzczoiKT9bMix2b2lkIDBdOls0LGUucHJvdG90eXBlLnJlc29sdmVSZWxhdGl2ZVJlZmVyZW5jZS5jYWxsKHRoaXMsdCxuLHIsaSldO2Nhc2UgMTppZihvPWMuc2VudCgpLCEodGhpcy5maWxlU3lzdGVtUHJvdmlkZXImJm8mJmkpKXJldHVyblszLDhdO3M9RWMucGFyc2UobyksYy5sYWJlbD0yO2Nhc2UgMjppZihjLnRyeXMucHVzaChbMiw3LCw4XSksIShhPWZ1bmN0aW9uKGUpe2lmKCIiIT09ZS5wYXRoJiYhZS5wYXRoLmVuZHNXaXRoKCIuc2NzcyIpJiYhZS5wYXRoLmVuZHNXaXRoKCIuY3NzIikpe2lmKGUucGF0aC5lbmRzV2l0aCgiLyIpKXJldHVybltlLndpdGgoe3BhdGg6ZS5wYXRoKyJpbmRleC5zY3NzIn0pLnRvU3RyaW5nKCksZS53aXRoKHtwYXRoOmUucGF0aCsiX2luZGV4LnNjc3MifSkudG9TdHJpbmcoKV07dmFyIHQ9ZS5wYXRoLnNwbGl0KCIvIiksbj10W3QubGVuZ3RoLTFdLHI9ZS5wYXRoLnNsaWNlKDAsLW4ubGVuZ3RoKTtpZihuLnN0YXJ0c1dpdGgoIl8iKSlyZXR1cm4gZS5wYXRoLmVuZHNXaXRoKCIuc2NzcyIpP3ZvaWQgMDpbZS53aXRoKHtwYXRoOmUucGF0aCsiLnNjc3MifSkudG9TdHJpbmcoKV07dmFyIGk9bisiLnNjc3MiLG89ZnVuY3Rpb24odCl7cmV0dXJuIGUud2l0aCh7cGF0aDpyK3R9KS50b1N0cmluZygpfTtyZXR1cm5bbyhpKSxvKCJfIitpKSxvKGkuc2xpY2UoMCwtNSkrIi9pbmRleC5zY3NzIiksbyhpLnNsaWNlKDAsLTUpKyIvX2luZGV4LnNjc3MiKSxvKGkuc2xpY2UoMCwtNSkrIi5jc3MiKV19fShzKSkpcmV0dXJuWzMsNl07bD0wLGMubGFiZWw9MztjYXNlIDM6cmV0dXJuIGw8YS5sZW5ndGg/WzQsdGhpcy5maWxlRXhpc3RzKGFbbF0pXTpbMyw2XTtjYXNlIDQ6aWYoYy5zZW50KCkpcmV0dXJuWzIsYVtsXV07Yy5sYWJlbD01O2Nhc2UgNTpyZXR1cm4gbCsrLFszLDNdO2Nhc2UgNjpyZXR1cm5bMyw4XTtjYXNlIDc6cmV0dXJuIGMuc2VudCgpLFszLDhdO2Nhc2UgODpyZXR1cm5bMixvXX19KSl9KSl9LHR9KGJoKTtmdW5jdGlvbiBscChlKXtyZXR1cm4gbmV3IFpkKGUpfWZ1bmN0aW9uIGNwKGUsdCxuLHIsaSxvLHMpe3JldHVybntjb25maWd1cmU6ZnVuY3Rpb24oZSl7by5jb25maWd1cmUoZSksdC5jb25maWd1cmUobnVsbD09ZT92b2lkIDA6ZS5jb21wbGV0aW9uKSxuLmNvbmZpZ3VyZShudWxsPT1lP3ZvaWQgMDplLmhvdmVyKX0sc2V0RGF0YVByb3ZpZGVyczpzLnNldERhdGFQcm92aWRlcnMuYmluZChzKSxkb1ZhbGlkYXRpb246by5kb1ZhbGlkYXRpb24uYmluZChvKSxwYXJzZVN0eWxlc2hlZXQ6ZS5wYXJzZVN0eWxlc2hlZXQuYmluZChlKSxkb0NvbXBsZXRlOnQuZG9Db21wbGV0ZS5iaW5kKHQpLGRvQ29tcGxldGUyOnQuZG9Db21wbGV0ZTIuYmluZCh0KSxzZXRDb21wbGV0aW9uUGFydGljaXBhbnRzOnQuc2V0Q29tcGxldGlvblBhcnRpY2lwYW50cy5iaW5kKHQpLGRvSG92ZXI6bi5kb0hvdmVyLmJpbmQobiksZm9ybWF0OmpkLGZpbmREZWZpbml0aW9uOnIuZmluZERlZmluaXRpb24uYmluZChyKSxmaW5kUmVmZXJlbmNlczpyLmZpbmRSZWZlcmVuY2VzLmJpbmQociksZmluZERvY3VtZW50SGlnaGxpZ2h0czpyLmZpbmREb2N1bWVudEhpZ2hsaWdodHMuYmluZChyKSxmaW5kRG9jdW1lbnRMaW5rczpyLmZpbmREb2N1bWVudExpbmtzLmJpbmQociksZmluZERvY3VtZW50TGlua3MyOnIuZmluZERvY3VtZW50TGlua3MyLmJpbmQociksZmluZERvY3VtZW50U3ltYm9sczpyLmZpbmREb2N1bWVudFN5bWJvbHMuYmluZChyKSxkb0NvZGVBY3Rpb25zOmkuZG9Db2RlQWN0aW9ucy5iaW5kKGkpLGRvQ29kZUFjdGlvbnMyOmkuZG9Db2RlQWN0aW9uczIuYmluZChpKSxmaW5kRG9jdW1lbnRDb2xvcnM6ci5maW5kRG9jdW1lbnRDb2xvcnMuYmluZChyKSxnZXRDb2xvclByZXNlbnRhdGlvbnM6ci5nZXRDb2xvclByZXNlbnRhdGlvbnMuYmluZChyKSxkb1JlbmFtZTpyLmRvUmVuYW1lLmJpbmQociksZ2V0Rm9sZGluZ1JhbmdlczpVZCxnZXRTZWxlY3Rpb25SYW5nZXM6cnB9fXZhciBocD17fTtzZWxmLm9ubWVzc2FnZT0oKT0+e0tyKCgoZSx0KT0+bmV3IGNsYXNze19jdHg7X2xhbmd1YWdlU2VydmljZTtfbGFuZ3VhZ2VTZXR0aW5ncztfbGFuZ3VhZ2VJZDtjb25zdHJ1Y3RvcihlLHQpe3RoaXMuX2N0eD1lLHRoaXMuX2xhbmd1YWdlU2V0dGluZ3M9dC5vcHRpb25zLHRoaXMuX2xhbmd1YWdlSWQ9dC5sYW5ndWFnZUlkO2NvbnN0IG49dC5vcHRpb25zLmRhdGEscj1uPy51c2VEZWZhdWx0RGF0YVByb3ZpZGVyLGk9W107aWYobj8uZGF0YVByb3ZpZGVycylmb3IoY29uc3QgZSBpbiBuLmRhdGFQcm92aWRlcnMpaS5wdXNoKGxwKG4uZGF0YVByb3ZpZGVyc1tlXSkpO2NvbnN0IG89e2N1c3RvbURhdGFQcm92aWRlcnM6aSx1c2VEZWZhdWx0RGF0YVByb3ZpZGVyOnJ9O3N3aXRjaCh0aGlzLl9sYW5ndWFnZUlkKXtjYXNlImNzcyI6dGhpcy5fbGFuZ3VhZ2VTZXJ2aWNlPWZ1bmN0aW9uKGUpe3ZvaWQgMD09PWUmJihlPWhwKTt2YXIgdD1uZXcgbnAoZSk7cmV0dXJuIGNwKG5ldyBnYyxuZXcgcWMobnVsbCxlLHQpLG5ldyBkaChlJiZlLmNsaWVudENhcGFiaWxpdGllcyx0KSxuZXcgYmgoZSYmZS5maWxlU3lzdGVtUHJvdmlkZXIsITEpLG5ldyBUaCh0KSxuZXcgcWgodCksdCl9KG8pO2JyZWFrO2Nhc2UibGVzcyI6dGhpcy5fbGFuZ3VhZ2VTZXJ2aWNlPWZ1bmN0aW9uKGUpe3ZvaWQgMD09PWUmJihlPWhwKTt2YXIgdD1uZXcgbnAoZSk7cmV0dXJuIGNwKG5ldyBMZCxuZXcgVmQoZSx0KSxuZXcgZGgoZSYmZS5jbGllbnRDYXBhYmlsaXRpZXMsdCksbmV3IGJoKGUmJmUuZmlsZVN5c3RlbVByb3ZpZGVyLCEwKSxuZXcgVGgodCksbmV3IHFoKHQpLHQpfShvKTticmVhaztjYXNlInNjc3MiOnRoaXMuX2xhbmd1YWdlU2VydmljZT1mdW5jdGlvbihlKXt2b2lkIDA9PT1lJiYoZT1ocCk7dmFyIHQ9bmV3IG5wKGUpO3JldHVybiBjcChuZXcgdmQsbmV3IHhkKGUsdCksbmV3IGRoKGUmJmUuY2xpZW50Q2FwYWJpbGl0aWVzLHQpLG5ldyBhcChlJiZlLmZpbGVTeXN0ZW1Qcm92aWRlciksbmV3IFRoKHQpLG5ldyBxaCh0KSx0KX0obyk7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgbGFuZ3VhZ2UgaWQ6ICIrdGhpcy5fbGFuZ3VhZ2VJZCl9dGhpcy5fbGFuZ3VhZ2VTZXJ2aWNlLmNvbmZpZ3VyZSh0aGlzLl9sYW5ndWFnZVNldHRpbmdzKX1hc3luYyBkb1ZhbGlkYXRpb24oZSl7Y29uc3QgdD10aGlzLl9nZXRUZXh0RG9jdW1lbnQoZSk7aWYodCl7Y29uc3QgZT10aGlzLl9sYW5ndWFnZVNlcnZpY2UucGFyc2VTdHlsZXNoZWV0KHQpLG49dGhpcy5fbGFuZ3VhZ2VTZXJ2aWNlLmRvVmFsaWRhdGlvbih0LGUpO3JldHVybiBQcm9taXNlLnJlc29sdmUobil9cmV0dXJuIFByb21pc2UucmVzb2x2ZShbXSl9YXN5bmMgZG9Db21wbGV0ZShlLHQpe2NvbnN0IG49dGhpcy5fZ2V0VGV4dERvY3VtZW50KGUpO2lmKCFuKXJldHVybiBudWxsO2NvbnN0IHI9dGhpcy5fbGFuZ3VhZ2VTZXJ2aWNlLnBhcnNlU3R5bGVzaGVldChuKSxpPXRoaXMuX2xhbmd1YWdlU2VydmljZS5kb0NvbXBsZXRlKG4sdCxyKTtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGkpfWFzeW5jIGRvSG92ZXIoZSx0KXtjb25zdCBuPXRoaXMuX2dldFRleHREb2N1bWVudChlKTtpZighbilyZXR1cm4gbnVsbDtjb25zdCByPXRoaXMuX2xhbmd1YWdlU2VydmljZS5wYXJzZVN0eWxlc2hlZXQobiksaT10aGlzLl9sYW5ndWFnZVNlcnZpY2UuZG9Ib3ZlcihuLHQscik7cmV0dXJuIFByb21pc2UucmVzb2x2ZShpKX1hc3luYyBmaW5kRGVmaW5pdGlvbihlLHQpe2NvbnN0IG49dGhpcy5fZ2V0VGV4dERvY3VtZW50KGUpO2lmKCFuKXJldHVybiBudWxsO2NvbnN0IHI9dGhpcy5fbGFuZ3VhZ2VTZXJ2aWNlLnBhcnNlU3R5bGVzaGVldChuKSxpPXRoaXMuX2xhbmd1YWdlU2VydmljZS5maW5kRGVmaW5pdGlvbihuLHQscik7cmV0dXJuIFByb21pc2UucmVzb2x2ZShpKX1hc3luYyBmaW5kUmVmZXJlbmNlcyhlLHQpe2NvbnN0IG49dGhpcy5fZ2V0VGV4dERvY3VtZW50KGUpO2lmKCFuKXJldHVybltdO2NvbnN0IHI9dGhpcy5fbGFuZ3VhZ2VTZXJ2aWNlLnBhcnNlU3R5bGVzaGVldChuKSxpPXRoaXMuX2xhbmd1YWdlU2VydmljZS5maW5kUmVmZXJlbmNlcyhuLHQscik7cmV0dXJuIFByb21pc2UucmVzb2x2ZShpKX1hc3luYyBmaW5kRG9jdW1lbnRIaWdobGlnaHRzKGUsdCl7Y29uc3Qgbj10aGlzLl9nZXRUZXh0RG9jdW1lbnQoZSk7aWYoIW4pcmV0dXJuW107Y29uc3Qgcj10aGlzLl9sYW5ndWFnZVNlcnZpY2UucGFyc2VTdHlsZXNoZWV0KG4pLGk9dGhpcy5fbGFuZ3VhZ2VTZXJ2aWNlLmZpbmREb2N1bWVudEhpZ2hsaWdodHMobix0LHIpO3JldHVybiBQcm9taXNlLnJlc29sdmUoaSl9YXN5bmMgZmluZERvY3VtZW50U3ltYm9scyhlKXtjb25zdCB0PXRoaXMuX2dldFRleHREb2N1bWVudChlKTtpZighdClyZXR1cm5bXTtjb25zdCBuPXRoaXMuX2xhbmd1YWdlU2VydmljZS5wYXJzZVN0eWxlc2hlZXQodCkscj10aGlzLl9sYW5ndWFnZVNlcnZpY2UuZmluZERvY3VtZW50U3ltYm9scyh0LG4pO3JldHVybiBQcm9taXNlLnJlc29sdmUocil9YXN5bmMgZG9Db2RlQWN0aW9ucyhlLHQsbil7Y29uc3Qgcj10aGlzLl9nZXRUZXh0RG9jdW1lbnQoZSk7aWYoIXIpcmV0dXJuW107Y29uc3QgaT10aGlzLl9sYW5ndWFnZVNlcnZpY2UucGFyc2VTdHlsZXNoZWV0KHIpLG89dGhpcy5fbGFuZ3VhZ2VTZXJ2aWNlLmRvQ29kZUFjdGlvbnMocix0LG4saSk7cmV0dXJuIFByb21pc2UucmVzb2x2ZShvKX1hc3luYyBmaW5kRG9jdW1lbnRDb2xvcnMoZSl7Y29uc3QgdD10aGlzLl9nZXRUZXh0RG9jdW1lbnQoZSk7aWYoIXQpcmV0dXJuW107Y29uc3Qgbj10aGlzLl9sYW5ndWFnZVNlcnZpY2UucGFyc2VTdHlsZXNoZWV0KHQpLHI9dGhpcy5fbGFuZ3VhZ2VTZXJ2aWNlLmZpbmREb2N1bWVudENvbG9ycyh0LG4pO3JldHVybiBQcm9taXNlLnJlc29sdmUocil9YXN5bmMgZ2V0Q29sb3JQcmVzZW50YXRpb25zKGUsdCxuKXtjb25zdCByPXRoaXMuX2dldFRleHREb2N1bWVudChlKTtpZighcilyZXR1cm5bXTtjb25zdCBpPXRoaXMuX2xhbmd1YWdlU2VydmljZS5wYXJzZVN0eWxlc2hlZXQociksbz10aGlzLl9sYW5ndWFnZVNlcnZpY2UuZ2V0Q29sb3JQcmVzZW50YXRpb25zKHIsaSx0LG4pO3JldHVybiBQcm9taXNlLnJlc29sdmUobyl9YXN5bmMgZ2V0Rm9sZGluZ1JhbmdlcyhlLHQpe2NvbnN0IG49dGhpcy5fZ2V0VGV4dERvY3VtZW50KGUpO2lmKCFuKXJldHVybltdO2NvbnN0IHI9dGhpcy5fbGFuZ3VhZ2VTZXJ2aWNlLmdldEZvbGRpbmdSYW5nZXMobix0KTtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHIpfWFzeW5jIGdldFNlbGVjdGlvblJhbmdlcyhlLHQpe2NvbnN0IG49dGhpcy5fZ2V0VGV4dERvY3VtZW50KGUpO2lmKCFuKXJldHVybltdO2NvbnN0IHI9dGhpcy5fbGFuZ3VhZ2VTZXJ2aWNlLnBhcnNlU3R5bGVzaGVldChuKSxpPXRoaXMuX2xhbmd1YWdlU2VydmljZS5nZXRTZWxlY3Rpb25SYW5nZXMobix0LHIpO3JldHVybiBQcm9taXNlLnJlc29sdmUoaSl9YXN5bmMgZG9SZW5hbWUoZSx0LG4pe2NvbnN0IHI9dGhpcy5fZ2V0VGV4dERvY3VtZW50KGUpO2lmKCFyKXJldHVybiBudWxsO2NvbnN0IGk9dGhpcy5fbGFuZ3VhZ2VTZXJ2aWNlLnBhcnNlU3R5bGVzaGVldChyKSxvPXRoaXMuX2xhbmd1YWdlU2VydmljZS5kb1JlbmFtZShyLHQsbixpKTtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKG8pfWFzeW5jIGZvcm1hdChlLHQsbil7Y29uc3Qgcj10aGlzLl9nZXRUZXh0RG9jdW1lbnQoZSk7aWYoIXIpcmV0dXJuW107Y29uc3QgaT17Li4udGhpcy5fbGFuZ3VhZ2VTZXR0aW5ncy5mb3JtYXQsLi4ubn0sbz10aGlzLl9sYW5ndWFnZVNlcnZpY2UuZm9ybWF0KHIsdCxpKTtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKG8pfV9nZXRUZXh0RG9jdW1lbnQoZSl7Y29uc3QgdD10aGlzLl9jdHguZ2V0TWlycm9yTW9kZWxzKCk7Zm9yKGNvbnN0IG4gb2YgdClpZihuLnVyaS50b1N0cmluZygpPT09ZSlyZXR1cm4geWwuY3JlYXRlKGUsdGhpcy5fbGFuZ3VhZ2VJZCxuLnZlcnNpb24sbi5nZXRWYWx1ZSgpKTtyZXR1cm4gbnVsbH19KGUsdCkpKX19KCk7Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPWNzcy53b3JrZXIuanMubWFwCgo=', null, false);
4
4
  /* eslint-enable */