@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
@@ -0,0 +1,6 @@
1
+ import { createBase64WorkerFactory } from './_rollup-plugin-web-worker-loader__helper__browser__createBase64WorkerFactory.js';
2
+
3
+ var WorkerFactory = createBase64WorkerFactory('Lyogcm9sbHVwLXBsdWdpbi13ZWItd29ya2VyLWxvYWRlciAqLwp2YXIgd29ya2VyX2NvZGU9ZnVuY3Rpb24oZSl7InVzZSBzdHJpY3QiO2NvbnN0IHQ9bmV3IGNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5saXN0ZW5lcnM9W10sdGhpcy51bmV4cGVjdGVkRXJyb3JIYW5kbGVyPWZ1bmN0aW9uKGUpe3NldFRpbWVvdXQoKCgpPT57aWYoZS5zdGFjayl7aWYoby5pc0Vycm9yTm9UZWxlbWV0cnkoZSkpdGhyb3cgbmV3IG8oZS5tZXNzYWdlKyJcblxuIitlLnN0YWNrKTt0aHJvdyBuZXcgRXJyb3IoZS5tZXNzYWdlKyJcblxuIitlLnN0YWNrKX10aHJvdyBlfSksMCl9fWVtaXQoZSl7dGhpcy5saXN0ZW5lcnMuZm9yRWFjaCgodD0+e3QoZSl9KSl9b25VbmV4cGVjdGVkRXJyb3IoZSl7dGhpcy51bmV4cGVjdGVkRXJyb3JIYW5kbGVyKGUpLHRoaXMuZW1pdChlKX1vblVuZXhwZWN0ZWRFeHRlcm5hbEVycm9yKGUpe3RoaXMudW5leHBlY3RlZEVycm9ySGFuZGxlcihlKX19O2Z1bmN0aW9uIG4oZSl7KGZ1bmN0aW9uKGUpe2lmKGUgaW5zdGFuY2VvZiBzKXJldHVybiEwO3JldHVybiBlIGluc3RhbmNlb2YgRXJyb3ImJmUubmFtZT09PWkmJmUubWVzc2FnZT09PWl9KShlKXx8dC5vblVuZXhwZWN0ZWRFcnJvcihlKX1mdW5jdGlvbiByKGUpe2lmKGUgaW5zdGFuY2VvZiBFcnJvcil7Y29uc3R7bmFtZTp0LG1lc3NhZ2U6bn09ZTtyZXR1cm57JGlzRXJyb3I6ITAsbmFtZTp0LG1lc3NhZ2U6bixzdGFjazplLnN0YWNrdHJhY2V8fGUuc3RhY2ssbm9UZWxlbWV0cnk6by5pc0Vycm9yTm9UZWxlbWV0cnkoZSl9fXJldHVybiBlfWNvbnN0IGk9IkNhbmNlbGVkIjtjbGFzcyBzIGV4dGVuZHMgRXJyb3J7Y29uc3RydWN0b3IoKXtzdXBlcihpKSx0aGlzLm5hbWU9dGhpcy5tZXNzYWdlfX1jbGFzcyBvIGV4dGVuZHMgRXJyb3J7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSksdGhpcy5uYW1lPSJDb2RlRXhwZWN0ZWRFcnJvciJ9c3RhdGljIGZyb21FcnJvcihlKXtpZihlIGluc3RhbmNlb2YgbylyZXR1cm4gZTtjb25zdCB0PW5ldyBvO3JldHVybiB0Lm1lc3NhZ2U9ZS5tZXNzYWdlLHQuc3RhY2s9ZS5zdGFjayx0fXN0YXRpYyBpc0Vycm9yTm9UZWxlbWV0cnkoZSl7cmV0dXJuIkNvZGVFeHBlY3RlZEVycm9yIj09PWUubmFtZX19Y2xhc3MgYSBleHRlbmRzIEVycm9ye2NvbnN0cnVjdG9yKGUpe3N1cGVyKGV8fCJBbiB1bmV4cGVjdGVkIGJ1ZyBvY2N1cnJlZC4iKSxPYmplY3Quc2V0UHJvdG90eXBlT2YodGhpcyxhLnByb3RvdHlwZSl9fWZ1bmN0aW9uIGwoZSl7Y29uc3QgdD10aGlzO2xldCBuLHI9ITE7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHJ8fChyPSEwLG49ZS5hcHBseSh0LGFyZ3VtZW50cykpLG59fXZhciB1O2Z1bmN0aW9uIGgoZSl7aWYodS5pcyhlKSl7Y29uc3QgdD1bXTtmb3IoY29uc3QgbiBvZiBlKWlmKG4pdHJ5e24uZGlzcG9zZSgpfWNhdGNoKGUpe3QucHVzaChlKX1pZigxPT09dC5sZW5ndGgpdGhyb3cgdFswXTtpZih0Lmxlbmd0aD4xKXRocm93IG5ldyBBZ2dyZWdhdGVFcnJvcih0LCJFbmNvdW50ZXJlZCBlcnJvcnMgd2hpbGUgZGlzcG9zaW5nIG9mIHN0b3JlIik7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSk/W106ZX1pZihlKXJldHVybiBlLmRpc3Bvc2UoKSxlfWZ1bmN0aW9uIGMoZSl7cmV0dXJue2Rpc3Bvc2U6bCgoKCk9PntlKCl9KSl9fSFmdW5jdGlvbihlKXtmdW5jdGlvbiB0KGUpe3JldHVybiBlJiYib2JqZWN0Ij09dHlwZW9mIGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBlW1N5bWJvbC5pdGVyYXRvcl19ZS5pcz10O2NvbnN0IG49T2JqZWN0LmZyZWV6ZShbXSk7ZnVuY3Rpb24qcihlKXt5aWVsZCBlfWUuZW1wdHk9ZnVuY3Rpb24oKXtyZXR1cm4gbn0sZS5zaW5nbGU9cixlLndyYXA9ZnVuY3Rpb24oZSl7cmV0dXJuIHQoZSk/ZTpyKGUpfSxlLmZyb209ZnVuY3Rpb24oZSl7cmV0dXJuIGV8fG59LGUuaXNFbXB0eT1mdW5jdGlvbihlKXtyZXR1cm4hZXx8ITA9PT1lW1N5bWJvbC5pdGVyYXRvcl0oKS5uZXh0KCkuZG9uZX0sZS5maXJzdD1mdW5jdGlvbihlKXtyZXR1cm4gZVtTeW1ib2wuaXRlcmF0b3JdKCkubmV4dCgpLnZhbHVlfSxlLnNvbWU9ZnVuY3Rpb24oZSx0KXtmb3IoY29uc3QgbiBvZiBlKWlmKHQobikpcmV0dXJuITA7cmV0dXJuITF9LGUuZmluZD1mdW5jdGlvbihlLHQpe2Zvcihjb25zdCBuIG9mIGUpaWYodChuKSlyZXR1cm4gbn0sZS5maWx0ZXI9ZnVuY3Rpb24qKGUsdCl7Zm9yKGNvbnN0IG4gb2YgZSl0KG4pJiYoeWllbGQgbil9LGUubWFwPWZ1bmN0aW9uKihlLHQpe2xldCBuPTA7Zm9yKGNvbnN0IHIgb2YgZSl5aWVsZCB0KHIsbisrKX0sZS5jb25jYXQ9ZnVuY3Rpb24qKC4uLmUpe2Zvcihjb25zdCB0IG9mIGUpZm9yKGNvbnN0IGUgb2YgdCl5aWVsZCBlfSxlLnJlZHVjZT1mdW5jdGlvbihlLHQsbil7bGV0IHI9bjtmb3IoY29uc3QgbiBvZiBlKXI9dChyLG4pO3JldHVybiByfSxlLnNsaWNlPWZ1bmN0aW9uKihlLHQsbj1lLmxlbmd0aCl7Zm9yKHQ8MCYmKHQrPWUubGVuZ3RoKSxuPDA/bis9ZS5sZW5ndGg6bj5lLmxlbmd0aCYmKG49ZS5sZW5ndGgpO3Q8bjt0KyspeWllbGQgZVt0XX0sZS5jb25zdW1lPWZ1bmN0aW9uKHQsbj1OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFkpe2NvbnN0IHI9W107aWYoMD09PW4pcmV0dXJuW3IsdF07Y29uc3QgaT10W1N5bWJvbC5pdGVyYXRvcl0oKTtmb3IobGV0IHQ9MDt0PG47dCsrKXtjb25zdCB0PWkubmV4dCgpO2lmKHQuZG9uZSlyZXR1cm5bcixlLmVtcHR5KCldO3IucHVzaCh0LnZhbHVlKX1yZXR1cm5bcix7W1N5bWJvbC5pdGVyYXRvcl06KCk9Pml9XX19KHV8fCh1PXt9KSk7Y2xhc3MgZHtjb25zdHJ1Y3Rvcigpe3RoaXMuX3RvRGlzcG9zZT1uZXcgU2V0LHRoaXMuX2lzRGlzcG9zZWQ9ITF9ZGlzcG9zZSgpe3RoaXMuX2lzRGlzcG9zZWR8fCh0aGlzLl9pc0Rpc3Bvc2VkPSEwLHRoaXMuY2xlYXIoKSl9Z2V0IGlzRGlzcG9zZWQoKXtyZXR1cm4gdGhpcy5faXNEaXNwb3NlZH1jbGVhcigpe2lmKDAhPT10aGlzLl90b0Rpc3Bvc2Uuc2l6ZSl0cnl7aCh0aGlzLl90b0Rpc3Bvc2UpfWZpbmFsbHl7dGhpcy5fdG9EaXNwb3NlLmNsZWFyKCl9fWFkZChlKXtpZighZSlyZXR1cm4gZTtpZihlPT09dGhpcyl0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCByZWdpc3RlciBhIGRpc3Bvc2FibGUgb24gaXRzZWxmISIpO3JldHVybiB0aGlzLl9pc0Rpc3Bvc2VkP2QuRElTQUJMRV9ESVNQT1NFRF9XQVJOSU5HfHxjb25zb2xlLndhcm4obmV3IEVycm9yKCJUcnlpbmcgdG8gYWRkIGEgZGlzcG9zYWJsZSB0byBhIERpc3Bvc2FibGVTdG9yZSB0aGF0IGhhcyBhbHJlYWR5IGJlZW4gZGlzcG9zZWQgb2YuIFRoZSBhZGRlZCBvYmplY3Qgd2lsbCBiZSBsZWFrZWQhIikuc3RhY2spOnRoaXMuX3RvRGlzcG9zZS5hZGQoZSksZX19ZC5ESVNBQkxFX0RJU1BPU0VEX1dBUk5JTkc9ITE7Y2xhc3MgbXtjb25zdHJ1Y3Rvcigpe3RoaXMuX3N0b3JlPW5ldyBkLHRoaXMuX3N0b3JlfWRpc3Bvc2UoKXt0aGlzLl9zdG9yZS5kaXNwb3NlKCl9X3JlZ2lzdGVyKGUpe2lmKGU9PT10aGlzKXRocm93IG5ldyBFcnJvcigiQ2Fubm90IHJlZ2lzdGVyIGEgZGlzcG9zYWJsZSBvbiBpdHNlbGYhIik7cmV0dXJuIHRoaXMuX3N0b3JlLmFkZChlKX19bS5Ob25lPU9iamVjdC5mcmVlemUoe2Rpc3Bvc2UoKXt9fSk7Y2xhc3MgZ3tjb25zdHJ1Y3Rvcigpe3RoaXMuZGlzcG9zZT0oKT0+e30sdGhpcy51bnNldD0oKT0+e30sdGhpcy5pc3NldD0oKT0+ITF9c2V0KGUpe2xldCB0PWU7cmV0dXJuIHRoaXMudW5zZXQ9KCk9PnQ9dm9pZCAwLHRoaXMuaXNzZXQ9KCk9PnZvaWQgMCE9PXQsdGhpcy5kaXNwb3NlPSgpPT57dCYmKHQoKSx0PXZvaWQgMCl9LHRoaXN9fWNsYXNzIGZ7Y29uc3RydWN0b3IoZSl7dGhpcy5lbGVtZW50PWUsdGhpcy5uZXh0PWYuVW5kZWZpbmVkLHRoaXMucHJldj1mLlVuZGVmaW5lZH19Zi5VbmRlZmluZWQ9bmV3IGYodm9pZCAwKTtjbGFzcyBwe2NvbnN0cnVjdG9yKCl7dGhpcy5fZmlyc3Q9Zi5VbmRlZmluZWQsdGhpcy5fbGFzdD1mLlVuZGVmaW5lZCx0aGlzLl9zaXplPTB9Z2V0IHNpemUoKXtyZXR1cm4gdGhpcy5fc2l6ZX1pc0VtcHR5KCl7cmV0dXJuIHRoaXMuX2ZpcnN0PT09Zi5VbmRlZmluZWR9Y2xlYXIoKXtsZXQgZT10aGlzLl9maXJzdDtmb3IoO2UhPT1mLlVuZGVmaW5lZDspe2NvbnN0IHQ9ZS5uZXh0O2UucHJldj1mLlVuZGVmaW5lZCxlLm5leHQ9Zi5VbmRlZmluZWQsZT10fXRoaXMuX2ZpcnN0PWYuVW5kZWZpbmVkLHRoaXMuX2xhc3Q9Zi5VbmRlZmluZWQsdGhpcy5fc2l6ZT0wfXVuc2hpZnQoZSl7cmV0dXJuIHRoaXMuX2luc2VydChlLCExKX1wdXNoKGUpe3JldHVybiB0aGlzLl9pbnNlcnQoZSwhMCl9X2luc2VydChlLHQpe2NvbnN0IG49bmV3IGYoZSk7aWYodGhpcy5fZmlyc3Q9PT1mLlVuZGVmaW5lZCl0aGlzLl9maXJzdD1uLHRoaXMuX2xhc3Q9bjtlbHNlIGlmKHQpe2NvbnN0IGU9dGhpcy5fbGFzdDt0aGlzLl9sYXN0PW4sbi5wcmV2PWUsZS5uZXh0PW59ZWxzZXtjb25zdCBlPXRoaXMuX2ZpcnN0O3RoaXMuX2ZpcnN0PW4sbi5uZXh0PWUsZS5wcmV2PW59dGhpcy5fc2l6ZSs9MTtsZXQgcj0hMTtyZXR1cm4oKT0+e3J8fChyPSEwLHRoaXMuX3JlbW92ZShuKSl9fXNoaWZ0KCl7aWYodGhpcy5fZmlyc3QhPT1mLlVuZGVmaW5lZCl7Y29uc3QgZT10aGlzLl9maXJzdC5lbGVtZW50O3JldHVybiB0aGlzLl9yZW1vdmUodGhpcy5fZmlyc3QpLGV9fXBvcCgpe2lmKHRoaXMuX2xhc3QhPT1mLlVuZGVmaW5lZCl7Y29uc3QgZT10aGlzLl9sYXN0LmVsZW1lbnQ7cmV0dXJuIHRoaXMuX3JlbW92ZSh0aGlzLl9sYXN0KSxlfX1fcmVtb3ZlKGUpe2lmKGUucHJldiE9PWYuVW5kZWZpbmVkJiZlLm5leHQhPT1mLlVuZGVmaW5lZCl7Y29uc3QgdD1lLnByZXY7dC5uZXh0PWUubmV4dCxlLm5leHQucHJldj10fWVsc2UgZS5wcmV2PT09Zi5VbmRlZmluZWQmJmUubmV4dD09PWYuVW5kZWZpbmVkPyh0aGlzLl9maXJzdD1mLlVuZGVmaW5lZCx0aGlzLl9sYXN0PWYuVW5kZWZpbmVkKTplLm5leHQ9PT1mLlVuZGVmaW5lZD8odGhpcy5fbGFzdD10aGlzLl9sYXN0LnByZXYsdGhpcy5fbGFzdC5uZXh0PWYuVW5kZWZpbmVkKTplLnByZXY9PT1mLlVuZGVmaW5lZCYmKHRoaXMuX2ZpcnN0PXRoaXMuX2ZpcnN0Lm5leHQsdGhpcy5fZmlyc3QucHJldj1mLlVuZGVmaW5lZCk7dGhpcy5fc2l6ZS09MX0qW1N5bWJvbC5pdGVyYXRvcl0oKXtsZXQgZT10aGlzLl9maXJzdDtmb3IoO2UhPT1mLlVuZGVmaW5lZDspeWllbGQgZS5lbGVtZW50LGU9ZS5uZXh0fX1sZXQgYj0idW5kZWZpbmVkIiE9dHlwZW9mIGRvY3VtZW50JiZkb2N1bWVudC5sb2NhdGlvbiYmZG9jdW1lbnQubG9jYXRpb24uaGFzaC5pbmRleE9mKCJwc2V1ZG89dHJ1ZSIpPj0wO3ZhciBfO2NvbnN0IEM9ImVuIjtsZXQgeSx2LEwsdz0hMSxTPSExLE49ITEsRT0hMSxBPUMsUj1DO2NvbnN0IHg9Im9iamVjdCI9PXR5cGVvZiBzZWxmP3NlbGY6Im9iamVjdCI9PXR5cGVvZiBnbG9iYWw/Z2xvYmFsOnt9O2xldCBNO3ZvaWQgMCE9PXgudnNjb2RlJiZ2b2lkIDAhPT14LnZzY29kZS5wcm9jZXNzP009eC52c2NvZGUucHJvY2VzczoidW5kZWZpbmVkIiE9dHlwZW9mIHByb2Nlc3MmJihNPXByb2Nlc3MpO2NvbnN0IGs9InN0cmluZyI9PXR5cGVvZihudWxsPT09KF89bnVsbD09TT92b2lkIDA6TS52ZXJzaW9ucyl8fHZvaWQgMD09PV8/dm9pZCAwOl8uZWxlY3Ryb24pJiYicmVuZGVyZXIiPT09KG51bGw9PU0/dm9pZCAwOk0udHlwZSk7aWYoIm9iamVjdCIhPXR5cGVvZiBuYXZpZ2F0b3J8fGspaWYoIm9iamVjdCI9PXR5cGVvZiBNKXt3PSJ3aW4zMiI9PT1NLnBsYXRmb3JtLFM9ImRhcndpbiI9PT1NLnBsYXRmb3JtLE49ImxpbnV4Ij09PU0ucGxhdGZvcm0sTiYmTS5lbnYuU05BUCYmTS5lbnYuU05BUF9SRVZJU0lPTixNLmVudi5DSXx8TS5lbnYuQlVJTERfQVJUSUZBQ1RTVEFHSU5HRElSRUNUT1JZLHk9QyxBPUM7Y29uc3QgZT1NLmVudi5WU0NPREVfTkxTX0NPTkZJRztpZihlKXRyeXtjb25zdCB0PUpTT04ucGFyc2UoZSksbj10LmF2YWlsYWJsZUxhbmd1YWdlc1siKiJdO3k9dC5sb2NhbGUsUj10Lm9zTG9jYWxlLEE9bnx8Qyx2PXQuX3RyYW5zbGF0aW9uc0NvbmZpZ0ZpbGV9Y2F0Y2goZSl7fX1lbHNlIGNvbnNvbGUuZXJyb3IoIlVuYWJsZSB0byByZXNvbHZlIHBsYXRmb3JtLiIpO2Vsc2UgTD1uYXZpZ2F0b3IudXNlckFnZW50LHc9TC5pbmRleE9mKCJXaW5kb3dzIik+PTAsUz1MLmluZGV4T2YoIk1hY2ludG9zaCIpPj0wLChMLmluZGV4T2YoIk1hY2ludG9zaCIpPj0wfHxMLmluZGV4T2YoImlQYWQiKT49MHx8TC5pbmRleE9mKCJpUGhvbmUiKT49MCkmJm5hdmlnYXRvci5tYXhUb3VjaFBvaW50cyYmbmF2aWdhdG9yLm1heFRvdWNoUG9pbnRzLE49TC5pbmRleE9mKCJMaW51eCIpPj0wLG51bGw9PUx8fEwuaW5kZXhPZigiTW9iaSIpLEU9ITAsZnVuY3Rpb24oZSx0LC4uLm4peyFmdW5jdGlvbihlLHQpe2xldCBuO249MD09PXQubGVuZ3RoP2U6ZS5yZXBsYWNlKC9ceyhcZCspXH0vZywoKGUsbik9Pntjb25zdCByPW5bMF0saT10W3JdO2xldCBzPWU7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBpP3M9aToibnVtYmVyIiE9dHlwZW9mIGkmJiJib29sZWFuIiE9dHlwZW9mIGkmJm51bGwhPWl8fChzPVN0cmluZyhpKSksc30pKSxiJiYobj0i77y7IituLnJlcGxhY2UoL1thb3VlaV0vZywiJCYkJiIpKyLvvL0iKX0odCxuKX0oMCwiXyIpLHk9QyxBPXksUj1uYXZpZ2F0b3IubGFuZ3VhZ2U7Y29uc3QgTz13LFQ9UztFJiZ4LmltcG9ydFNjcmlwdHM7Y29uc3QgST1MLFA9ImZ1bmN0aW9uIj09dHlwZW9mIHgucG9zdE1lc3NhZ2UmJiF4LmltcG9ydFNjcmlwdHM7KCgpPT57aWYoUCl7Y29uc3QgZT1bXTt4LmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCh0PT57aWYodC5kYXRhJiZ0LmRhdGEudnNjb2RlU2NoZWR1bGVBc3luY1dvcmspZm9yKGxldCBuPTAscj1lLmxlbmd0aDtuPHI7bisrKXtjb25zdCByPWVbbl07aWYoci5pZD09PXQuZGF0YS52c2NvZGVTY2hlZHVsZUFzeW5jV29yaylyZXR1cm4gZS5zcGxpY2UobiwxKSx2b2lkIHIuY2FsbGJhY2soKX19KSk7bGV0IHQ9MDtyZXR1cm4gbj0+e2NvbnN0IHI9Kyt0O2UucHVzaCh7aWQ6cixjYWxsYmFjazpufSkseC5wb3N0TWVzc2FnZSh7dnNjb2RlU2NoZWR1bGVBc3luY1dvcms6cn0sIioiKX19fSkoKTtjb25zdCBEPSEhKEkmJkkuaW5kZXhPZigiQ2hyb21lIik+PTApO0kmJkkuaW5kZXhPZigiRmlyZWZveCIpLCFEJiZJJiZJLmluZGV4T2YoIlNhZmFyaSIpLEkmJkkuaW5kZXhPZigiRWRnLyIpLEkmJkkuaW5kZXhPZigiQW5kcm9pZCIpO2NvbnN0IEY9eC5wZXJmb3JtYW5jZSYmImZ1bmN0aW9uIj09dHlwZW9mIHgucGVyZm9ybWFuY2Uubm93O2NsYXNzIEt7c3RhdGljIGNyZWF0ZShlPSEwKXtyZXR1cm4gbmV3IEsoZSl9Y29uc3RydWN0b3IoZSl7dGhpcy5faGlnaFJlc29sdXRpb249RiYmZSx0aGlzLl9zdGFydFRpbWU9dGhpcy5fbm93KCksdGhpcy5fc3RvcFRpbWU9LTF9c3RvcCgpe3RoaXMuX3N0b3BUaW1lPXRoaXMuX25vdygpfWVsYXBzZWQoKXtyZXR1cm4tMSE9PXRoaXMuX3N0b3BUaW1lP3RoaXMuX3N0b3BUaW1lLXRoaXMuX3N0YXJ0VGltZTp0aGlzLl9ub3coKS10aGlzLl9zdGFydFRpbWV9X25vdygpe3JldHVybiB0aGlzLl9oaWdoUmVzb2x1dGlvbj94LnBlcmZvcm1hbmNlLm5vdygpOkRhdGUubm93KCl9fXZhciBWOyFmdW5jdGlvbihlKXtmdW5jdGlvbiB0KGUpe3JldHVybih0LG49bnVsbCxyKT0+e2xldCBpLHM9ITE7cmV0dXJuIGk9ZSgoZT0+e2lmKCFzKXJldHVybiBpP2kuZGlzcG9zZSgpOnM9ITAsdC5jYWxsKG4sZSl9KSxudWxsLHIpLHMmJmkuZGlzcG9zZSgpLGl9fWZ1bmN0aW9uIG4oZSx0LG4pe3JldHVybiBvKCgobixyPW51bGwsaSk9PmUoKGU9Pm4uY2FsbChyLHQoZSkpKSxudWxsLGkpKSxuKX1mdW5jdGlvbiByKGUsdCxuKXtyZXR1cm4gbygoKG4scj1udWxsLGkpPT5lKChlPT57dChlKSxuLmNhbGwocixlKX0pLG51bGwsaSkpLG4pfWZ1bmN0aW9uIGkoZSx0LG4pe3JldHVybiBvKCgobixyPW51bGwsaSk9PmUoKGU9PnQoZSkmJm4uY2FsbChyLGUpKSxudWxsLGkpKSxuKX1mdW5jdGlvbiBzKGUsdCxyLGkpe2xldCBzPXI7cmV0dXJuIG4oZSwoZT0+KHM9dChzLGUpLHMpKSxpKX1mdW5jdGlvbiBvKGUsdCl7bGV0IG47Y29uc3Qgcj1uZXcgSCh7b25XaWxsQWRkRmlyc3RMaXN0ZW5lcigpe249ZShyLmZpcmUscil9LG9uRGlkUmVtb3ZlTGFzdExpc3RlbmVyKCl7bnVsbD09bnx8bi5kaXNwb3NlKCl9fSk7cmV0dXJuIG51bGw9PXR8fHQuYWRkKHIpLHIuZXZlbnR9ZnVuY3Rpb24gYShlLHQsbj0xMDAscj0hMSxpPSExLHMsbyl7bGV0IGEsbCx1LGgsYz0wO2NvbnN0IGQ9bmV3IEgoe2xlYWtXYXJuaW5nVGhyZXNob2xkOnMsb25XaWxsQWRkRmlyc3RMaXN0ZW5lcigpe2E9ZSgoZT0+e2MrKyxsPXQobCxlKSxyJiYhdSYmKGQuZmlyZShsKSxsPXZvaWQgMCksaD0oKT0+e2NvbnN0IGU9bDtsPXZvaWQgMCx1PXZvaWQgMCwoIXJ8fGM+MSkmJmQuZmlyZShlKSxjPTB9LCJudW1iZXIiPT10eXBlb2Ygbj8oY2xlYXJUaW1lb3V0KHUpLHU9c2V0VGltZW91dChoLG4pKTp2b2lkIDA9PT11JiYodT0wLHF1ZXVlTWljcm90YXNrKGgpKX0pKX0sb25XaWxsUmVtb3ZlTGlzdGVuZXIoKXtpJiZjPjAmJihudWxsPT1ofHxoKCkpfSxvbkRpZFJlbW92ZUxhc3RMaXN0ZW5lcigpe2g9dm9pZCAwLGEuZGlzcG9zZSgpfX0pO3JldHVybiBudWxsPT1vfHxvLmFkZChkKSxkLmV2ZW50fWZ1bmN0aW9uIGwoZSx0PSgoZSx0KT0+ZT09PXQpLG4pe2xldCByLHM9ITA7cmV0dXJuIGkoZSwoZT0+e2NvbnN0IG49c3x8IXQoZSxyKTtyZXR1cm4gcz0hMSxyPWUsbn0pLG4pfWUuTm9uZT0oKT0+bS5Ob25lLGUuZGVmZXI9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gYShlLCgoKT0+e30pLDAsdm9pZCAwLCEwLHZvaWQgMCx0KX0sZS5vbmNlPXQsZS5tYXA9bixlLmZvckVhY2g9cixlLmZpbHRlcj1pLGUuc2lnbmFsPWZ1bmN0aW9uKGUpe3JldHVybiBlfSxlLmFueT1mdW5jdGlvbiguLi5lKXtyZXR1cm4odCxuPW51bGwscik9PmZ1bmN0aW9uKC4uLmUpe3JldHVybiBjKCgoKT0+aChlKSkpfSguLi5lLm1hcCgoZT0+ZSgoZT0+dC5jYWxsKG4sZSkpLG51bGwscikpKSl9LGUucmVkdWNlPXMsZS5kZWJvdW5jZT1hLGUuYWNjdW11bGF0ZT1mdW5jdGlvbih0LG49MCxyKXtyZXR1cm4gZS5kZWJvdW5jZSh0LCgoZSx0KT0+ZT8oZS5wdXNoKHQpLGUpOlt0XSksbix2b2lkIDAsITAsdm9pZCAwLHIpfSxlLmxhdGNoPWwsZS5zcGxpdD1mdW5jdGlvbih0LG4scil7cmV0dXJuW2UuZmlsdGVyKHQsbixyKSxlLmZpbHRlcih0LChlPT4hbihlKSkscildfSxlLmJ1ZmZlcj1mdW5jdGlvbihlLHQ9ITEsbj1bXSl7bGV0IHI9bi5zbGljZSgpLGk9ZSgoZT0+e3I/ci5wdXNoKGUpOm8uZmlyZShlKX0pKTtjb25zdCBzPSgpPT57bnVsbD09cnx8ci5mb3JFYWNoKChlPT5vLmZpcmUoZSkpKSxyPW51bGx9LG89bmV3IEgoe29uV2lsbEFkZEZpcnN0TGlzdGVuZXIoKXtpfHwoaT1lKChlPT5vLmZpcmUoZSkpKSl9LG9uRGlkQWRkRmlyc3RMaXN0ZW5lcigpe3ImJih0P3NldFRpbWVvdXQocyk6cygpKX0sb25EaWRSZW1vdmVMYXN0TGlzdGVuZXIoKXtpJiZpLmRpc3Bvc2UoKSxpPW51bGx9fSk7cmV0dXJuIG8uZXZlbnR9O2NsYXNzIHV7Y29uc3RydWN0b3IoZSl7dGhpcy5ldmVudD1lLHRoaXMuZGlzcG9zYWJsZXM9bmV3IGR9bWFwKGUpe3JldHVybiBuZXcgdShuKHRoaXMuZXZlbnQsZSx0aGlzLmRpc3Bvc2FibGVzKSl9Zm9yRWFjaChlKXtyZXR1cm4gbmV3IHUocih0aGlzLmV2ZW50LGUsdGhpcy5kaXNwb3NhYmxlcykpfWZpbHRlcihlKXtyZXR1cm4gbmV3IHUoaSh0aGlzLmV2ZW50LGUsdGhpcy5kaXNwb3NhYmxlcykpfXJlZHVjZShlLHQpe3JldHVybiBuZXcgdShzKHRoaXMuZXZlbnQsZSx0LHRoaXMuZGlzcG9zYWJsZXMpKX1sYXRjaCgpe3JldHVybiBuZXcgdShsKHRoaXMuZXZlbnQsdm9pZCAwLHRoaXMuZGlzcG9zYWJsZXMpKX1kZWJvdW5jZShlLHQ9MTAwLG49ITEscj0hMSxpKXtyZXR1cm4gbmV3IHUoYSh0aGlzLmV2ZW50LGUsdCxuLHIsaSx0aGlzLmRpc3Bvc2FibGVzKSl9b24oZSx0LG4pe3JldHVybiB0aGlzLmV2ZW50KGUsdCxuKX1vbmNlKGUsbixyKXtyZXR1cm4gdCh0aGlzLmV2ZW50KShlLG4scil9ZGlzcG9zZSgpe3RoaXMuZGlzcG9zYWJsZXMuZGlzcG9zZSgpfX1lLmNoYWluPWZ1bmN0aW9uKGUpe3JldHVybiBuZXcgdShlKX0sZS5mcm9tTm9kZUV2ZW50RW1pdHRlcj1mdW5jdGlvbihlLHQsbj0oZT0+ZSkpe2NvbnN0IHI9KC4uLmUpPT5pLmZpcmUobiguLi5lKSksaT1uZXcgSCh7b25XaWxsQWRkRmlyc3RMaXN0ZW5lcjooKT0+ZS5vbih0LHIpLG9uRGlkUmVtb3ZlTGFzdExpc3RlbmVyOigpPT5lLnJlbW92ZUxpc3RlbmVyKHQscil9KTtyZXR1cm4gaS5ldmVudH0sZS5mcm9tRE9NRXZlbnRFbWl0dGVyPWZ1bmN0aW9uKGUsdCxuPShlPT5lKSl7Y29uc3Qgcj0oLi4uZSk9PmkuZmlyZShuKC4uLmUpKSxpPW5ldyBIKHtvbldpbGxBZGRGaXJzdExpc3RlbmVyOigpPT5lLmFkZEV2ZW50TGlzdGVuZXIodCxyKSxvbkRpZFJlbW92ZUxhc3RMaXN0ZW5lcjooKT0+ZS5yZW1vdmVFdmVudExpc3RlbmVyKHQscil9KTtyZXR1cm4gaS5ldmVudH0sZS50b1Byb21pc2U9ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBQcm9taXNlKChuPT50KGUpKG4pKSl9LGUucnVuQW5kU3Vic2NyaWJlPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQodm9pZCAwKSxlKChlPT50KGUpKSl9LGUucnVuQW5kU3Vic2NyaWJlV2l0aFN0b3JlPWZ1bmN0aW9uKGUsdCl7bGV0IG49bnVsbDtmdW5jdGlvbiByKGUpe251bGw9PW58fG4uZGlzcG9zZSgpLG49bmV3IGQsdChlLG4pfXIodm9pZCAwKTtjb25zdCBpPWUoKGU9PnIoZSkpKTtyZXR1cm4gYygoKCk9PntpLmRpc3Bvc2UoKSxudWxsPT1ufHxuLmRpc3Bvc2UoKX0pKX07Y2xhc3MgZ3tjb25zdHJ1Y3RvcihlLHQpe3RoaXMuX29ic2VydmFibGU9ZSx0aGlzLl9jb3VudGVyPTAsdGhpcy5faGFzQ2hhbmdlZD0hMTtjb25zdCBuPXtvbldpbGxBZGRGaXJzdExpc3RlbmVyOigpPT57ZS5hZGRPYnNlcnZlcih0aGlzKX0sb25EaWRSZW1vdmVMYXN0TGlzdGVuZXI6KCk9PntlLnJlbW92ZU9ic2VydmVyKHRoaXMpfX07dGhpcy5lbWl0dGVyPW5ldyBIKG4pLHQmJnQuYWRkKHRoaXMuZW1pdHRlcil9YmVnaW5VcGRhdGUoZSl7dGhpcy5fY291bnRlcisrfWhhbmRsZVBvc3NpYmxlQ2hhbmdlKGUpe31oYW5kbGVDaGFuZ2UoZSx0KXt0aGlzLl9oYXNDaGFuZ2VkPSEwfWVuZFVwZGF0ZShlKXt0aGlzLl9jb3VudGVyLS0sMD09PXRoaXMuX2NvdW50ZXImJih0aGlzLl9vYnNlcnZhYmxlLnJlcG9ydENoYW5nZXMoKSx0aGlzLl9oYXNDaGFuZ2VkJiYodGhpcy5faGFzQ2hhbmdlZD0hMSx0aGlzLmVtaXR0ZXIuZmlyZSh0aGlzLl9vYnNlcnZhYmxlLmdldCgpKSkpfX1lLmZyb21PYnNlcnZhYmxlPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIG5ldyBnKGUsdCkuZW1pdHRlci5ldmVudH0sZS5mcm9tT2JzZXJ2YWJsZUxpZ2h0PWZ1bmN0aW9uKGUpe3JldHVybiB0PT57bGV0IG49MCxyPSExO2NvbnN0IGk9e2JlZ2luVXBkYXRlKCl7bisrfSxlbmRVcGRhdGUoKXtuLS0sMD09PW4mJihlLnJlcG9ydENoYW5nZXMoKSxyJiYocj0hMSx0KCkpKX0saGFuZGxlUG9zc2libGVDaGFuZ2UoKXt9LGhhbmRsZUNoYW5nZSgpe3I9ITB9fTtyZXR1cm4gZS5hZGRPYnNlcnZlcihpKSx7ZGlzcG9zZSgpe2UucmVtb3ZlT2JzZXJ2ZXIoaSl9fX19fShWfHwoVj17fSkpO2NsYXNzIHF7Y29uc3RydWN0b3IoZSl7dGhpcy5saXN0ZW5lckNvdW50PTAsdGhpcy5pbnZvY2F0aW9uQ291bnQ9MCx0aGlzLmVsYXBzZWRPdmVyYWxsPTAsdGhpcy5kdXJhdGlvbnM9W10sdGhpcy5uYW1lPWAke2V9XyR7cS5faWRQb29sKyt9YCxxLmFsbC5hZGQodGhpcyl9c3RhcnQoZSl7dGhpcy5fc3RvcFdhdGNoPW5ldyBLKCEwKSx0aGlzLmxpc3RlbmVyQ291bnQ9ZX1zdG9wKCl7aWYodGhpcy5fc3RvcFdhdGNoKXtjb25zdCBlPXRoaXMuX3N0b3BXYXRjaC5lbGFwc2VkKCk7dGhpcy5kdXJhdGlvbnMucHVzaChlKSx0aGlzLmVsYXBzZWRPdmVyYWxsKz1lLHRoaXMuaW52b2NhdGlvbkNvdW50Kz0xLHRoaXMuX3N0b3BXYXRjaD12b2lkIDB9fX1xLmFsbD1uZXcgU2V0LHEuX2lkUG9vbD0wO2NsYXNzIEJ7Y29uc3RydWN0b3IoZSx0PU1hdGgucmFuZG9tKCkudG9TdHJpbmcoMTgpLnNsaWNlKDIsNSkpe3RoaXMudGhyZXNob2xkPWUsdGhpcy5uYW1lPXQsdGhpcy5fd2FybkNvdW50ZG93bj0wfWRpc3Bvc2UoKXt2YXIgZTtudWxsPT09KGU9dGhpcy5fc3RhY2tzKXx8dm9pZCAwPT09ZXx8ZS5jbGVhcigpfWNoZWNrKGUsdCl7Y29uc3Qgbj10aGlzLnRocmVzaG9sZDtpZihuPD0wfHx0PG4pcmV0dXJuO3RoaXMuX3N0YWNrc3x8KHRoaXMuX3N0YWNrcz1uZXcgTWFwKTtjb25zdCByPXRoaXMuX3N0YWNrcy5nZXQoZS52YWx1ZSl8fDA7aWYodGhpcy5fc3RhY2tzLnNldChlLnZhbHVlLHIrMSksdGhpcy5fd2FybkNvdW50ZG93bi09MSx0aGlzLl93YXJuQ291bnRkb3duPD0wKXtsZXQgZTt0aGlzLl93YXJuQ291bnRkb3duPS41Km47bGV0IHI9MDtmb3IoY29uc3RbdCxuXW9mIHRoaXMuX3N0YWNrcykoIWV8fHI8bikmJihlPXQscj1uKTtjb25zb2xlLndhcm4oYFske3RoaXMubmFtZX1dIHBvdGVudGlhbCBsaXN0ZW5lciBMRUFLIGRldGVjdGVkLCBoYXZpbmcgJHt0fSBsaXN0ZW5lcnMgYWxyZWFkeS4gTU9TVCBmcmVxdWVudCBsaXN0ZW5lciAoJHtyfSk6YCksY29uc29sZS53YXJuKGUpfXJldHVybigpPT57Y29uc3QgdD10aGlzLl9zdGFja3MuZ2V0KGUudmFsdWUpfHwwO3RoaXMuX3N0YWNrcy5zZXQoZS52YWx1ZSx0LTEpfX19Y2xhc3MgVXtzdGF0aWMgY3JlYXRlKCl7dmFyIGU7cmV0dXJuIG5ldyBVKG51bGwhPT0oZT0obmV3IEVycm9yKS5zdGFjaykmJnZvaWQgMCE9PWU/ZToiIil9Y29uc3RydWN0b3IoZSl7dGhpcy52YWx1ZT1lfXByaW50KCl7Y29uc29sZS53YXJuKHRoaXMudmFsdWUuc3BsaXQoIlxuIikuc2xpY2UoMikuam9pbigiXG4iKSl9fWNsYXNzIFd7Y29uc3RydWN0b3IoZSx0LG4pe3RoaXMuY2FsbGJhY2s9ZSx0aGlzLmNhbGxiYWNrVGhpcz10LHRoaXMuc3RhY2s9bix0aGlzLnN1YnNjcmlwdGlvbj1uZXcgZ31pbnZva2UoZSl7dGhpcy5jYWxsYmFjay5jYWxsKHRoaXMuY2FsbGJhY2tUaGlzLGUpfX1jbGFzcyBIe2NvbnN0cnVjdG9yKGUpe3ZhciB0LG4scixpLHM7dGhpcy5fZGlzcG9zZWQ9ITEsdGhpcy5fb3B0aW9ucz1lLHRoaXMuX2xlYWthZ2VNb249KG51bGw9PT0odD10aGlzLl9vcHRpb25zKXx8dm9pZCAwPT09dD92b2lkIDA6dC5sZWFrV2FybmluZ1RocmVzaG9sZCk/bmV3IEIobnVsbCE9PShyPW51bGw9PT0obj10aGlzLl9vcHRpb25zKXx8dm9pZCAwPT09bj92b2lkIDA6bi5sZWFrV2FybmluZ1RocmVzaG9sZCkmJnZvaWQgMCE9PXI/cjotMSk6dm9pZCAwLHRoaXMuX3BlcmZNb249KG51bGw9PT0oaT10aGlzLl9vcHRpb25zKXx8dm9pZCAwPT09aT92b2lkIDA6aS5fcHJvZk5hbWUpP25ldyBxKHRoaXMuX29wdGlvbnMuX3Byb2ZOYW1lKTp2b2lkIDAsdGhpcy5fZGVsaXZlcnlRdWV1ZT1udWxsPT09KHM9dGhpcy5fb3B0aW9ucyl8fHZvaWQgMD09PXM/dm9pZCAwOnMuZGVsaXZlcnlRdWV1ZX1kaXNwb3NlKCl7dmFyIGUsdCxuLHI7dGhpcy5fZGlzcG9zZWR8fCh0aGlzLl9kaXNwb3NlZD0hMCx0aGlzLl9saXN0ZW5lcnMmJnRoaXMuX2xpc3RlbmVycy5jbGVhcigpLG51bGw9PT0oZT10aGlzLl9kZWxpdmVyeVF1ZXVlKXx8dm9pZCAwPT09ZXx8ZS5jbGVhcih0aGlzKSxudWxsPT09KG49bnVsbD09PSh0PXRoaXMuX29wdGlvbnMpfHx2b2lkIDA9PT10P3ZvaWQgMDp0Lm9uRGlkUmVtb3ZlTGFzdExpc3RlbmVyKXx8dm9pZCAwPT09bnx8bi5jYWxsKHQpLG51bGw9PT0ocj10aGlzLl9sZWFrYWdlTW9uKXx8dm9pZCAwPT09cnx8ci5kaXNwb3NlKCkpfWdldCBldmVudCgpe3JldHVybiB0aGlzLl9ldmVudHx8KHRoaXMuX2V2ZW50PShlLHQsbik9Pnt2YXIgcixpLHM7aWYodGhpcy5fbGlzdGVuZXJzfHwodGhpcy5fbGlzdGVuZXJzPW5ldyBwKSx0aGlzLl9sZWFrYWdlTW9uJiZ0aGlzLl9saXN0ZW5lcnMuc2l6ZT4zKnRoaXMuX2xlYWthZ2VNb24udGhyZXNob2xkKXJldHVybiBjb25zb2xlLndhcm4oYFske3RoaXMuX2xlYWthZ2VNb24ubmFtZX1dIFJFRlVTRVMgdG8gYWNjZXB0IG5ldyBsaXN0ZW5lcnMgYmVjYXVzZSBpdCBleGNlZWRlZCBpdHMgdGhyZXNob2xkIGJ5IGZhcmApLG0uTm9uZTtjb25zdCBvPXRoaXMuX2xpc3RlbmVycy5pc0VtcHR5KCk7bGV0IGEsbDtvJiYobnVsbD09PShyPXRoaXMuX29wdGlvbnMpfHx2b2lkIDA9PT1yP3ZvaWQgMDpyLm9uV2lsbEFkZEZpcnN0TGlzdGVuZXIpJiZ0aGlzLl9vcHRpb25zLm9uV2lsbEFkZEZpcnN0TGlzdGVuZXIodGhpcyksdGhpcy5fbGVha2FnZU1vbiYmdGhpcy5fbGlzdGVuZXJzLnNpemU+PU1hdGguY2VpbCguMip0aGlzLl9sZWFrYWdlTW9uLnRocmVzaG9sZCkmJihsPVUuY3JlYXRlKCksYT10aGlzLl9sZWFrYWdlTW9uLmNoZWNrKGwsdGhpcy5fbGlzdGVuZXJzLnNpemUrMSkpO2NvbnN0IHU9bmV3IFcoZSx0LGwpLGg9dGhpcy5fbGlzdGVuZXJzLnB1c2godSk7byYmKG51bGw9PT0oaT10aGlzLl9vcHRpb25zKXx8dm9pZCAwPT09aT92b2lkIDA6aS5vbkRpZEFkZEZpcnN0TGlzdGVuZXIpJiZ0aGlzLl9vcHRpb25zLm9uRGlkQWRkRmlyc3RMaXN0ZW5lcih0aGlzKSwobnVsbD09PShzPXRoaXMuX29wdGlvbnMpfHx2b2lkIDA9PT1zP3ZvaWQgMDpzLm9uRGlkQWRkTGlzdGVuZXIpJiZ0aGlzLl9vcHRpb25zLm9uRGlkQWRkTGlzdGVuZXIodGhpcyxlLHQpO2NvbnN0IGM9dS5zdWJzY3JpcHRpb24uc2V0KCgoKT0+e3ZhciBlLHQ7aWYobnVsbD09YXx8YSgpLCF0aGlzLl9kaXNwb3NlZCYmKG51bGw9PT0odD1udWxsPT09KGU9dGhpcy5fb3B0aW9ucyl8fHZvaWQgMD09PWU/dm9pZCAwOmUub25XaWxsUmVtb3ZlTGlzdGVuZXIpfHx2b2lkIDA9PT10fHx0LmNhbGwoZSx0aGlzKSxoKCksdGhpcy5fb3B0aW9ucyYmdGhpcy5fb3B0aW9ucy5vbkRpZFJlbW92ZUxhc3RMaXN0ZW5lcikpe3RoaXMuX2xpc3RlbmVycyYmIXRoaXMuX2xpc3RlbmVycy5pc0VtcHR5KCl8fHRoaXMuX29wdGlvbnMub25EaWRSZW1vdmVMYXN0TGlzdGVuZXIodGhpcyl9fSkpO3JldHVybiBuIGluc3RhbmNlb2YgZD9uLmFkZChjKTpBcnJheS5pc0FycmF5KG4pJiZuLnB1c2goYyksY30pLHRoaXMuX2V2ZW50fWZpcmUoZSl7dmFyIHQsbixyO2lmKHRoaXMuX2xpc3RlbmVycyl7dGhpcy5fZGVsaXZlcnlRdWV1ZXx8KHRoaXMuX2RlbGl2ZXJ5UXVldWU9bmV3IHoobnVsbD09PSh0PXRoaXMuX29wdGlvbnMpfHx2b2lkIDA9PT10P3ZvaWQgMDp0Lm9uTGlzdGVuZXJFcnJvcikpO2Zvcihjb25zdCB0IG9mIHRoaXMuX2xpc3RlbmVycyl0aGlzLl9kZWxpdmVyeVF1ZXVlLnB1c2godGhpcyx0LGUpO251bGw9PT0obj10aGlzLl9wZXJmTW9uKXx8dm9pZCAwPT09bnx8bi5zdGFydCh0aGlzLl9kZWxpdmVyeVF1ZXVlLnNpemUpLHRoaXMuX2RlbGl2ZXJ5UXVldWUuZGVsaXZlcigpLG51bGw9PT0ocj10aGlzLl9wZXJmTW9uKXx8dm9pZCAwPT09cnx8ci5zdG9wKCl9fWhhc0xpc3RlbmVycygpe3JldHVybiEhdGhpcy5fbGlzdGVuZXJzJiYhdGhpcy5fbGlzdGVuZXJzLmlzRW1wdHkoKX19Y2xhc3MgJHtjb25zdHJ1Y3RvcihlPW4pe3RoaXMuX29uTGlzdGVuZXJFcnJvcj1lLHRoaXMuX3F1ZXVlPW5ldyBwfWdldCBzaXplKCl7cmV0dXJuIHRoaXMuX3F1ZXVlLnNpemV9cHVzaChlLHQsbil7dGhpcy5fcXVldWUucHVzaChuZXcgaihlLHQsbikpfWNsZWFyKGUpe2NvbnN0IHQ9bmV3IHA7Zm9yKGNvbnN0IG4gb2YgdGhpcy5fcXVldWUpbi5lbWl0dGVyIT09ZSYmdC5wdXNoKG4pO3RoaXMuX3F1ZXVlPXR9ZGVsaXZlcigpe2Zvcig7dGhpcy5fcXVldWUuc2l6ZT4wOyl7Y29uc3QgZT10aGlzLl9xdWV1ZS5zaGlmdCgpO3RyeXtlLmxpc3RlbmVyLmludm9rZShlLmV2ZW50KX1jYXRjaChlKXt0aGlzLl9vbkxpc3RlbmVyRXJyb3IoZSl9fX19Y2xhc3MgeiBleHRlbmRzICR7Y2xlYXIoZSl7dGhpcy5fcXVldWUuY2xlYXIoKX19Y2xhc3Mgantjb25zdHJ1Y3RvcihlLHQsbil7dGhpcy5lbWl0dGVyPWUsdGhpcy5saXN0ZW5lcj10LHRoaXMuZXZlbnQ9bn19ZnVuY3Rpb24gRyhlKXtjb25zdCB0PVtdO2Zvcihjb25zdCBuIG9mIGZ1bmN0aW9uKGUpe2xldCB0PVtdLG49T2JqZWN0LmdldFByb3RvdHlwZU9mKGUpO2Zvcig7T2JqZWN0LnByb3RvdHlwZSE9PW47KXQ9dC5jb25jYXQoT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMobikpLG49T2JqZWN0LmdldFByb3RvdHlwZU9mKG4pO3JldHVybiB0fShlKSkiZnVuY3Rpb24iPT10eXBlb2YgZVtuXSYmdC5wdXNoKG4pO3JldHVybiB0fWNsYXNzIFl7Y29uc3RydWN0b3IoZSl7dGhpcy5leGVjdXRvcj1lLHRoaXMuX2RpZFJ1bj0hMX1nZXQgdmFsdWUoKXtpZighdGhpcy5fZGlkUnVuKXRyeXt0aGlzLl92YWx1ZT10aGlzLmV4ZWN1dG9yKCl9Y2F0Y2goZSl7dGhpcy5fZXJyb3I9ZX1maW5hbGx5e3RoaXMuX2RpZFJ1bj0hMH1pZih0aGlzLl9lcnJvcil0aHJvdyB0aGlzLl9lcnJvcjtyZXR1cm4gdGhpcy5fdmFsdWV9Z2V0IHJhd1ZhbHVlKCl7cmV0dXJuIHRoaXMuX3ZhbHVlfX12YXIgUTtmdW5jdGlvbiBYKGUpe3JldHVybiBlPj02NSYmZTw9OTB9ZnVuY3Rpb24gSihlKXtyZXR1cm4gNTUyOTY8PWUmJmU8PTU2MzE5fWZ1bmN0aW9uIFooZSx0LG4pe2NvbnN0IHI9ZS5jaGFyQ29kZUF0KG4pO2lmKEoocikmJm4rMTx0KXtjb25zdCB0PWUuY2hhckNvZGVBdChuKzEpO2lmKGZ1bmN0aW9uKGUpe3JldHVybiA1NjMyMDw9ZSYmZTw9NTczNDN9KHQpKXJldHVybiB0LTU2MzIwKyhyLTU1Mjk2PDwxMCkrNjU1MzZ9cmV0dXJuIHJ9Y29uc3QgZWU9L15bXHRcblxyXHgyMC1ceDdFXSokLztjbGFzcyB0ZXtzdGF0aWMgZ2V0SW5zdGFuY2UoZSl7cmV0dXJuIHRlLmNhY2hlLmdldChBcnJheS5mcm9tKGUpKX1zdGF0aWMgZ2V0TG9jYWxlcygpe3JldHVybiB0ZS5fbG9jYWxlcy52YWx1ZX1jb25zdHJ1Y3RvcihlKXt0aGlzLmNvbmZ1c2FibGVEaWN0aW9uYXJ5PWV9aXNBbWJpZ3VvdXMoZSl7cmV0dXJuIHRoaXMuY29uZnVzYWJsZURpY3Rpb25hcnkuaGFzKGUpfWdldFByaW1hcnlDb25mdXNhYmxlKGUpe3JldHVybiB0aGlzLmNvbmZ1c2FibGVEaWN0aW9uYXJ5LmdldChlKX1nZXRDb25mdXNhYmxlQ29kZVBvaW50cygpe3JldHVybiBuZXcgU2V0KHRoaXMuY29uZnVzYWJsZURpY3Rpb25hcnkua2V5cygpKX19UT10ZSx0ZS5hbWJpZ3VvdXNDaGFyYWN0ZXJEYXRhPW5ldyBZKCgoKT0+SlNPTi5wYXJzZSgneyJfY29tbW9uIjpbODIzMiwzMiw4MjMzLDMyLDU3NjAsMzIsODE5MiwzMiw4MTkzLDMyLDgxOTQsMzIsODE5NSwzMiw4MTk2LDMyLDgxOTcsMzIsODE5OCwzMiw4MjAwLDMyLDgyMDEsMzIsODIwMiwzMiw4Mjg3LDMyLDgxOTksMzIsODIzOSwzMiwyMDQyLDk1LDY1MTAxLDk1LDY1MTAyLDk1LDY1MTAzLDk1LDgyMDgsNDUsODIwOSw0NSw4MjEwLDQ1LDY1MTEyLDQ1LDE3NDgsNDUsODI1OSw0NSw3MjcsNDUsODcyMiw0NSwxMDEzNCw0NSwxMTQ1MCw0NSwxNTQ5LDQ0LDE2NDMsNDQsODIxOCw0NCwxODQsNDQsNDIyMzMsNDQsODk0LDU5LDIzMDcsNTgsMjY5MSw1OCwxNDE3LDU4LDE3OTUsNTgsMTc5Niw1OCw1ODY4LDU4LDY1MDcyLDU4LDYxNDcsNTgsNjE1Myw1OCw4MjgyLDU4LDE0NzUsNTgsNzYwLDU4LDQyODg5LDU4LDg3NTgsNTgsNzIwLDU4LDQyMjM3LDU4LDQ1MSwzMywxMTYwMSwzMyw2NjAsNjMsNTc3LDYzLDI0MjksNjMsNTAzOCw2Myw0MjczMSw2MywxMTkxNDksNDYsODIyOCw0NiwxNzkzLDQ2LDE3OTQsNDYsNDI1MTAsNDYsNjgxNzYsNDYsMTYzMiw0NiwxNzc2LDQ2LDQyMjMyLDQ2LDEzNzMsOTYsNjUyODcsOTYsODIxOSw5Niw4MjQyLDk2LDEzNzAsOTYsMTUyMyw5Niw4MTc1LDk2LDY1MzQ0LDk2LDkwMCw5Niw4MTg5LDk2LDgxMjUsOTYsODEyNyw5Niw4MTkwLDk2LDY5Nyw5Niw4ODQsOTYsNzEyLDk2LDcxNCw5Niw3MTUsOTYsNzU2LDk2LDY5OSw5Niw3MDEsOTYsNzAwLDk2LDcwMiw5Niw0Mjg5Miw5NiwxNDk3LDk2LDIwMzYsOTYsMjAzNyw5Niw1MTk0LDk2LDU4MzYsOTYsOTQwMzMsOTYsOTQwMzQsOTYsNjUzMzksOTEsMTAwODgsNDAsMTAwOTgsNDAsMTIzMDgsNDAsNjQ4MzAsNDAsNjUzNDEsOTMsMTAwODksNDEsMTAwOTksNDEsMTIzMDksNDEsNjQ4MzEsNDEsMTAxMDAsMTIzLDExOTA2MCwxMjMsMTAxMDEsMTI1LDY1MzQyLDk0LDgyNzAsNDIsMTY0NSw0Miw4NzI3LDQyLDY2MzM1LDQyLDU5NDEsNDcsODI1Nyw0Nyw4NzI1LDQ3LDgyNjAsNDcsOTU4NSw0NywxMDE4Nyw0NywxMDc0NCw0NywxMTkzNTQsNDcsMTI3NTUsNDcsMTIzMzksNDcsMTE0NjIsNDcsMjAwMzEsNDcsMTIwMzUsNDcsNjUzNDAsOTIsNjUxMjgsOTIsODcyNiw5MiwxMDE4OSw5MiwxMDc0MSw5MiwxMDc0NSw5MiwxMTkzMTEsOTIsMTE5MzU1LDkyLDEyNzU2LDkyLDIwMDIyLDkyLDEyMDM0LDkyLDQyODcyLDM4LDcwOCw5NCw3MTAsOTQsNTg2OSw0MywxMDEzMyw0Myw2NjIwMyw0Myw4MjQ5LDYwLDEwMDk0LDYwLDcwNiw2MCwxMTkzNTAsNjAsNTE3Niw2MCw1ODEwLDYwLDUxMjAsNjEsMTE4NDAsNjEsMTI0NDgsNjEsNDIyMzksNjEsODI1MCw2MiwxMDA5NSw2Miw3MDcsNjIsMTE5MzUxLDYyLDUxNzEsNjIsOTQwMTUsNjIsODI3NSwxMjYsNzMyLDEyNiw4MTI4LDEyNiw4NzY0LDEyNiw2NTM3MiwxMjQsNjUyOTMsNDUsMTIwNzg0LDUwLDEyMDc5NCw1MCwxMjA4MDQsNTAsMTIwODE0LDUwLDEyMDgyNCw1MCwxMzAwMzQsNTAsNDI4NDIsNTAsNDIzLDUwLDEwMDAsNTAsNDI1NjQsNTAsNTMxMSw1MCw0MjczNSw1MCwxMTkzMDIsNTEsMTIwNzg1LDUxLDEyMDc5NSw1MSwxMjA4MDUsNTEsMTIwODE1LDUxLDEyMDgyNSw1MSwxMzAwMzUsNTEsNDI5MjMsNTEsNTQwLDUxLDQzOSw1MSw0Mjg1OCw1MSwxMTQ2OCw1MSwxMjQ4LDUxLDk0MDExLDUxLDcxODgyLDUxLDEyMDc4Niw1MiwxMjA3OTYsNTIsMTIwODA2LDUyLDEyMDgxNiw1MiwxMjA4MjYsNTIsMTMwMDM2LDUyLDUwNzAsNTIsNzE4NTUsNTIsMTIwNzg3LDUzLDEyMDc5Nyw1MywxMjA4MDcsNTMsMTIwODE3LDUzLDEyMDgyNyw1MywxMzAwMzcsNTMsNDQ0LDUzLDcxODY3LDUzLDEyMDc4OCw1NCwxMjA3OTgsNTQsMTIwODA4LDU0LDEyMDgxOCw1NCwxMjA4MjgsNTQsMTMwMDM4LDU0LDExNDc0LDU0LDUxMDIsNTQsNzE4OTMsNTQsMTE5MzE0LDU1LDEyMDc4OSw1NSwxMjA3OTksNTUsMTIwODA5LDU1LDEyMDgxOSw1NSwxMjA4MjksNTUsMTMwMDM5LDU1LDY2NzcwLDU1LDcxODc4LDU1LDI4MTksNTYsMjUzOCw1NiwyNjY2LDU2LDEyNTEzMSw1NiwxMjA3OTAsNTYsMTIwODAwLDU2LDEyMDgxMCw1NiwxMjA4MjAsNTYsMTIwODMwLDU2LDEzMDA0MCw1Niw1NDcsNTYsNTQ2LDU2LDY2MzMwLDU2LDI2NjMsNTcsMjkyMCw1NywyNTQxLDU3LDM0MzcsNTcsMTIwNzkxLDU3LDEyMDgwMSw1NywxMjA4MTEsNTcsMTIwODIxLDU3LDEyMDgzMSw1NywxMzAwNDEsNTcsNDI4NjIsNTcsMTE0NjYsNTcsNzE4ODQsNTcsNzE4NTIsNTcsNzE4OTQsNTcsOTA4Miw5Nyw2NTM0NSw5NywxMTk4MzQsOTcsMTE5ODg2LDk3LDExOTkzOCw5NywxMTk5OTAsOTcsMTIwMDQyLDk3LDEyMDA5NCw5NywxMjAxNDYsOTcsMTIwMTk4LDk3LDEyMDI1MCw5NywxMjAzMDIsOTcsMTIwMzU0LDk3LDEyMDQwNiw5NywxMjA0NTgsOTcsNTkzLDk3LDk0NSw5NywxMjA1MTQsOTcsMTIwNTcyLDk3LDEyMDYzMCw5NywxMjA2ODgsOTcsMTIwNzQ2LDk3LDY1MzEzLDY1LDExOTgwOCw2NSwxMTk4NjAsNjUsMTE5OTEyLDY1LDExOTk2NCw2NSwxMjAwMTYsNjUsMTIwMDY4LDY1LDEyMDEyMCw2NSwxMjAxNzIsNjUsMTIwMjI0LDY1LDEyMDI3Niw2NSwxMjAzMjgsNjUsMTIwMzgwLDY1LDEyMDQzMiw2NSw5MTMsNjUsMTIwNDg4LDY1LDEyMDU0Niw2NSwxMjA2MDQsNjUsMTIwNjYyLDY1LDEyMDcyMCw2NSw1MDM0LDY1LDU1NzMsNjUsNDIyMjIsNjUsOTQwMTYsNjUsNjYyMDgsNjUsMTE5ODM1LDk4LDExOTg4Nyw5OCwxMTk5MzksOTgsMTE5OTkxLDk4LDEyMDA0Myw5OCwxMjAwOTUsOTgsMTIwMTQ3LDk4LDEyMDE5OSw5OCwxMjAyNTEsOTgsMTIwMzAzLDk4LDEyMDM1NSw5OCwxMjA0MDcsOTgsMTIwNDU5LDk4LDM4OCw5OCw1MDcxLDk4LDUyMzQsOTgsNTU1MSw5OCw2NTMxNCw2Niw4NDkyLDY2LDExOTgwOSw2NiwxMTk4NjEsNjYsMTE5OTEzLDY2LDEyMDAxNyw2NiwxMjAwNjksNjYsMTIwMTIxLDY2LDEyMDE3Myw2NiwxMjAyMjUsNjYsMTIwMjc3LDY2LDEyMDMyOSw2NiwxMjAzODEsNjYsMTIwNDMzLDY2LDQyOTMyLDY2LDkxNCw2NiwxMjA0ODksNjYsMTIwNTQ3LDY2LDEyMDYwNSw2NiwxMjA2NjMsNjYsMTIwNzIxLDY2LDUxMDgsNjYsNTYyMyw2Niw0MjE5Miw2Niw2NjE3OCw2Niw2NjIwOSw2Niw2NjMwNSw2Niw2NTM0Nyw5OSw4NTczLDk5LDExOTgzNiw5OSwxMTk4ODgsOTksMTE5OTQwLDk5LDExOTk5Miw5OSwxMjAwNDQsOTksMTIwMDk2LDk5LDEyMDE0OCw5OSwxMjAyMDAsOTksMTIwMjUyLDk5LDEyMDMwNCw5OSwxMjAzNTYsOTksMTIwNDA4LDk5LDEyMDQ2MCw5OSw3NDI4LDk5LDEwMTAsOTksMTE0MjksOTksNDM5NTEsOTksNjY2MjEsOTksMTI4ODQ0LDY3LDcxOTIyLDY3LDcxOTEzLDY3LDY1MzE1LDY3LDg1NTcsNjcsODQ1MCw2Nyw4NDkzLDY3LDExOTgxMCw2NywxMTk4NjIsNjcsMTE5OTE0LDY3LDExOTk2Niw2NywxMjAwMTgsNjcsMTIwMTc0LDY3LDEyMDIyNiw2NywxMjAyNzgsNjcsMTIwMzMwLDY3LDEyMDM4Miw2NywxMjA0MzQsNjcsMTAxNyw2NywxMTQyOCw2Nyw1MDg3LDY3LDQyMjAyLDY3LDY2MjEwLDY3LDY2MzA2LDY3LDY2NTgxLDY3LDY2ODQ0LDY3LDg1NzQsMTAwLDg1MTgsMTAwLDExOTgzNywxMDAsMTE5ODg5LDEwMCwxMTk5NDEsMTAwLDExOTk5MywxMDAsMTIwMDQ1LDEwMCwxMjAwOTcsMTAwLDEyMDE0OSwxMDAsMTIwMjAxLDEwMCwxMjAyNTMsMTAwLDEyMDMwNSwxMDAsMTIwMzU3LDEwMCwxMjA0MDksMTAwLDEyMDQ2MSwxMDAsMTI4MSwxMDAsNTA5NSwxMDAsNTIzMSwxMDAsNDIxOTQsMTAwLDg1NTgsNjgsODUxNyw2OCwxMTk4MTEsNjgsMTE5ODYzLDY4LDExOTkxNSw2OCwxMTk5NjcsNjgsMTIwMDE5LDY4LDEyMDA3MSw2OCwxMjAxMjMsNjgsMTIwMTc1LDY4LDEyMDIyNyw2OCwxMjAyNzksNjgsMTIwMzMxLDY4LDEyMDM4Myw2OCwxMjA0MzUsNjgsNTAyNCw2OCw1NTk4LDY4LDU2MTAsNjgsNDIxOTUsNjgsODQ5NCwxMDEsNjUzNDksMTAxLDg0OTUsMTAxLDg1MTksMTAxLDExOTgzOCwxMDEsMTE5ODkwLDEwMSwxMTk5NDIsMTAxLDEyMDA0NiwxMDEsMTIwMDk4LDEwMSwxMjAxNTAsMTAxLDEyMDIwMiwxMDEsMTIwMjU0LDEwMSwxMjAzMDYsMTAxLDEyMDM1OCwxMDEsMTIwNDEwLDEwMSwxMjA0NjIsMTAxLDQzODI2LDEwMSwxMjEzLDEwMSw4OTU5LDY5LDY1MzE3LDY5LDg0OTYsNjksMTE5ODEyLDY5LDExOTg2NCw2OSwxMTk5MTYsNjksMTIwMDIwLDY5LDEyMDA3Miw2OSwxMjAxMjQsNjksMTIwMTc2LDY5LDEyMDIyOCw2OSwxMjAyODAsNjksMTIwMzMyLDY5LDEyMDM4NCw2OSwxMjA0MzYsNjksOTE3LDY5LDEyMDQ5Miw2OSwxMjA1NTAsNjksMTIwNjA4LDY5LDEyMDY2Niw2OSwxMjA3MjQsNjksMTE1NzcsNjksNTAzNiw2OSw0MjIyNCw2OSw3MTg0Niw2OSw3MTg1NCw2OSw2NjE4Miw2OSwxMTk4MzksMTAyLDExOTg5MSwxMDIsMTE5OTQzLDEwMiwxMTk5OTUsMTAyLDEyMDA0NywxMDIsMTIwMDk5LDEwMiwxMjAxNTEsMTAyLDEyMDIwMywxMDIsMTIwMjU1LDEwMiwxMjAzMDcsMTAyLDEyMDM1OSwxMDIsMTIwNDExLDEwMiwxMjA0NjMsMTAyLDQzODI5LDEwMiw0MjkwNSwxMDIsMzgzLDEwMiw3ODM3LDEwMiwxNDEyLDEwMiwxMTkzMTUsNzAsODQ5Nyw3MCwxMTk4MTMsNzAsMTE5ODY1LDcwLDExOTkxNyw3MCwxMjAwMjEsNzAsMTIwMDczLDcwLDEyMDEyNSw3MCwxMjAxNzcsNzAsMTIwMjI5LDcwLDEyMDI4MSw3MCwxMjAzMzMsNzAsMTIwMzg1LDcwLDEyMDQzNyw3MCw0MjkwNCw3MCw5ODgsNzAsMTIwNzc4LDcwLDU1NTYsNzAsNDIyMDUsNzAsNzE4NzQsNzAsNzE4NDIsNzAsNjYxODMsNzAsNjYyMTMsNzAsNjY4NTMsNzAsNjUzNTEsMTAzLDg0NTgsMTAzLDExOTg0MCwxMDMsMTE5ODkyLDEwMywxMTk5NDQsMTAzLDEyMDA0OCwxMDMsMTIwMTAwLDEwMywxMjAxNTIsMTAzLDEyMDIwNCwxMDMsMTIwMjU2LDEwMywxMjAzMDgsMTAzLDEyMDM2MCwxMDMsMTIwNDEyLDEwMywxMjA0NjQsMTAzLDYwOSwxMDMsNzU1NSwxMDMsMzk3LDEwMywxNDA5LDEwMywxMTk4MTQsNzEsMTE5ODY2LDcxLDExOTkxOCw3MSwxMTk5NzAsNzEsMTIwMDIyLDcxLDEyMDA3NCw3MSwxMjAxMjYsNzEsMTIwMTc4LDcxLDEyMDIzMCw3MSwxMjAyODIsNzEsMTIwMzM0LDcxLDEyMDM4Niw3MSwxMjA0MzgsNzEsMTI5Miw3MSw1MDU2LDcxLDUxMDcsNzEsNDIxOTgsNzEsNjUzNTIsMTA0LDg0NjIsMTA0LDExOTg0MSwxMDQsMTE5OTQ1LDEwNCwxMTk5OTcsMTA0LDEyMDA0OSwxMDQsMTIwMTAxLDEwNCwxMjAxNTMsMTA0LDEyMDIwNSwxMDQsMTIwMjU3LDEwNCwxMjAzMDksMTA0LDEyMDM2MSwxMDQsMTIwNDEzLDEwNCwxMjA0NjUsMTA0LDEyMTEsMTA0LDEzOTIsMTA0LDUwNTgsMTA0LDY1MzIwLDcyLDg0NTksNzIsODQ2MCw3Miw4NDYxLDcyLDExOTgxNSw3MiwxMTk4NjcsNzIsMTE5OTE5LDcyLDEyMDAyMyw3MiwxMjAxNzksNzIsMTIwMjMxLDcyLDEyMDI4Myw3MiwxMjAzMzUsNzIsMTIwMzg3LDcyLDEyMDQzOSw3Miw5MTksNzIsMTIwNDk0LDcyLDEyMDU1Miw3MiwxMjA2MTAsNzIsMTIwNjY4LDcyLDEyMDcyNiw3MiwxMTQwNiw3Miw1MDUxLDcyLDU1MDAsNzIsNDIyMTUsNzIsNjYyNTUsNzIsNzMxLDEwNSw5MDc1LDEwNSw2NTM1MywxMDUsODU2MCwxMDUsODUwNSwxMDUsODUyMCwxMDUsMTE5ODQyLDEwNSwxMTk4OTQsMTA1LDExOTk0NiwxMDUsMTE5OTk4LDEwNSwxMjAwNTAsMTA1LDEyMDEwMiwxMDUsMTIwMTU0LDEwNSwxMjAyMDYsMTA1LDEyMDI1OCwxMDUsMTIwMzEwLDEwNSwxMjAzNjIsMTA1LDEyMDQxNCwxMDUsMTIwNDY2LDEwNSwxMjA0ODQsMTA1LDYxOCwxMDUsNjE3LDEwNSw5NTMsMTA1LDgxMjYsMTA1LDg5MCwxMDUsMTIwNTIyLDEwNSwxMjA1ODAsMTA1LDEyMDYzOCwxMDUsMTIwNjk2LDEwNSwxMjA3NTQsMTA1LDExMTAsMTA1LDQyNTY3LDEwNSwxMjMxLDEwNSw0Mzg5MywxMDUsNTAyOSwxMDUsNzE4NzUsMTA1LDY1MzU0LDEwNiw4NTIxLDEwNiwxMTk4NDMsMTA2LDExOTg5NSwxMDYsMTE5OTQ3LDEwNiwxMTk5OTksMTA2LDEyMDA1MSwxMDYsMTIwMTAzLDEwNiwxMjAxNTUsMTA2LDEyMDIwNywxMDYsMTIwMjU5LDEwNiwxMjAzMTEsMTA2LDEyMDM2MywxMDYsMTIwNDE1LDEwNiwxMjA0NjcsMTA2LDEwMTEsMTA2LDExMTIsMTA2LDY1MzIyLDc0LDExOTgxNyw3NCwxMTk4NjksNzQsMTE5OTIxLDc0LDExOTk3Myw3NCwxMjAwMjUsNzQsMTIwMDc3LDc0LDEyMDEyOSw3NCwxMjAxODEsNzQsMTIwMjMzLDc0LDEyMDI4NSw3NCwxMjAzMzcsNzQsMTIwMzg5LDc0LDEyMDQ0MSw3NCw0MjkzMCw3NCw4OTUsNzQsMTAzMiw3NCw1MDM1LDc0LDUyNjEsNzQsNDIyMDEsNzQsMTE5ODQ0LDEwNywxMTk4OTYsMTA3LDExOTk0OCwxMDcsMTIwMDAwLDEwNywxMjAwNTIsMTA3LDEyMDEwNCwxMDcsMTIwMTU2LDEwNywxMjAyMDgsMTA3LDEyMDI2MCwxMDcsMTIwMzEyLDEwNywxMjAzNjQsMTA3LDEyMDQxNiwxMDcsMTIwNDY4LDEwNyw4NDkwLDc1LDY1MzIzLDc1LDExOTgxOCw3NSwxMTk4NzAsNzUsMTE5OTIyLDc1LDExOTk3NCw3NSwxMjAwMjYsNzUsMTIwMDc4LDc1LDEyMDEzMCw3NSwxMjAxODIsNzUsMTIwMjM0LDc1LDEyMDI4Niw3NSwxMjAzMzgsNzUsMTIwMzkwLDc1LDEyMDQ0Miw3NSw5MjIsNzUsMTIwNDk3LDc1LDEyMDU1NSw3NSwxMjA2MTMsNzUsMTIwNjcxLDc1LDEyMDcyOSw3NSwxMTQxMiw3NSw1MDk0LDc1LDU4NDUsNzUsNDIxOTksNzUsNjY4NDAsNzUsMTQ3MiwxMDgsODczOSw3Myw5MjEzLDczLDY1NTEyLDczLDE2MzMsMTA4LDE3NzcsNzMsNjYzMzYsMTA4LDEyNTEyNywxMDgsMTIwNzgzLDczLDEyMDc5Myw3MywxMjA4MDMsNzMsMTIwODEzLDczLDEyMDgyMyw3MywxMzAwMzMsNzMsNjUzMjEsNzMsODU0NCw3Myw4NDY0LDczLDg0NjUsNzMsMTE5ODE2LDczLDExOTg2OCw3MywxMTk5MjAsNzMsMTIwMDI0LDczLDEyMDEyOCw3MywxMjAxODAsNzMsMTIwMjMyLDczLDEyMDI4NCw3MywxMjAzMzYsNzMsMTIwMzg4LDczLDEyMDQ0MCw3Myw2NTM1NiwxMDgsODU3Miw3Myw4NDY3LDEwOCwxMTk4NDUsMTA4LDExOTg5NywxMDgsMTE5OTQ5LDEwOCwxMjAwMDEsMTA4LDEyMDA1MywxMDgsMTIwMTA1LDczLDEyMDE1Nyw3MywxMjAyMDksNzMsMTIwMjYxLDczLDEyMDMxMyw3MywxMjAzNjUsNzMsMTIwNDE3LDczLDEyMDQ2OSw3Myw0NDgsNzMsMTIwNDk2LDczLDEyMDU1NCw3MywxMjA2MTIsNzMsMTIwNjcwLDczLDEyMDcyOCw3MywxMTQxMCw3MywxMDMwLDczLDEyMTYsNzMsMTQ5MywxMDgsMTUwMywxMDgsMTU3NSwxMDgsMTI2NDY0LDEwOCwxMjY1OTIsMTA4LDY1MTY2LDEwOCw2NTE2NSwxMDgsMTk5NCwxMDgsMTE1OTksNzMsNTgyNSw3Myw0MjIyNiw3Myw5Mzk5Miw3Myw2NjE4NiwxMjQsNjYzMTMsMTI0LDExOTMzOCw3Niw4NTU2LDc2LDg0NjYsNzYsMTE5ODE5LDc2LDExOTg3MSw3NiwxMTk5MjMsNzYsMTIwMDI3LDc2LDEyMDA3OSw3NiwxMjAxMzEsNzYsMTIwMTgzLDc2LDEyMDIzNSw3NiwxMjAyODcsNzYsMTIwMzM5LDc2LDEyMDM5MSw3NiwxMjA0NDMsNzYsMTE0NzIsNzYsNTA4Niw3Niw1MjkwLDc2LDQyMjA5LDc2LDkzOTc0LDc2LDcxODQzLDc2LDcxODU4LDc2LDY2NTg3LDc2LDY2ODU0LDc2LDY1MzI1LDc3LDg1NTksNzcsODQ5OSw3NywxMTk4MjAsNzcsMTE5ODcyLDc3LDExOTkyNCw3NywxMjAwMjgsNzcsMTIwMDgwLDc3LDEyMDEzMiw3NywxMjAxODQsNzcsMTIwMjM2LDc3LDEyMDI4OCw3NywxMjAzNDAsNzcsMTIwMzkyLDc3LDEyMDQ0NCw3Nyw5MjQsNzcsMTIwNDk5LDc3LDEyMDU1Nyw3NywxMjA2MTUsNzcsMTIwNjczLDc3LDEyMDczMSw3NywxMDE4LDc3LDExNDE2LDc3LDUwNDcsNzcsNTYxNiw3Nyw1ODQ2LDc3LDQyMjA3LDc3LDY2MjI0LDc3LDY2MzIxLDc3LDExOTg0NywxMTAsMTE5ODk5LDExMCwxMTk5NTEsMTEwLDEyMDAwMywxMTAsMTIwMDU1LDExMCwxMjAxMDcsMTEwLDEyMDE1OSwxMTAsMTIwMjExLDExMCwxMjAyNjMsMTEwLDEyMDMxNSwxMTAsMTIwMzY3LDExMCwxMjA0MTksMTEwLDEyMDQ3MSwxMTAsMTQwMCwxMTAsMTQwNCwxMTAsNjUzMjYsNzgsODQ2OSw3OCwxMTk4MjEsNzgsMTE5ODczLDc4LDExOTkyNSw3OCwxMTk5NzcsNzgsMTIwMDI5LDc4LDEyMDA4MSw3OCwxMjAxODUsNzgsMTIwMjM3LDc4LDEyMDI4OSw3OCwxMjAzNDEsNzgsMTIwMzkzLDc4LDEyMDQ0NSw3OCw5MjUsNzgsMTIwNTAwLDc4LDEyMDU1OCw3OCwxMjA2MTYsNzgsMTIwNjc0LDc4LDEyMDczMiw3OCwxMTQxOCw3OCw0MjIwOCw3OCw2NjgzNSw3OCwzMDc0LDExMSwzMjAyLDExMSwzMzMwLDExMSwzNDU4LDExMSwyNDA2LDExMSwyNjYyLDExMSwyNzkwLDExMSwzMDQ2LDExMSwzMTc0LDExMSwzMzAyLDExMSwzNDMwLDExMSwzNjY0LDExMSwzNzkyLDExMSw0MTYwLDExMSwxNjM3LDExMSwxNzgxLDExMSw2NTM1OSwxMTEsODUwMCwxMTEsMTE5ODQ4LDExMSwxMTk5MDAsMTExLDExOTk1MiwxMTEsMTIwMDU2LDExMSwxMjAxMDgsMTExLDEyMDE2MCwxMTEsMTIwMjEyLDExMSwxMjAyNjQsMTExLDEyMDMxNiwxMTEsMTIwMzY4LDExMSwxMjA0MjAsMTExLDEyMDQ3MiwxMTEsNzQzOSwxMTEsNzQ0MSwxMTEsNDM4MzcsMTExLDk1OSwxMTEsMTIwNTI4LDExMSwxMjA1ODYsMTExLDEyMDY0NCwxMTEsMTIwNzAyLDExMSwxMjA3NjAsMTExLDk2MywxMTEsMTIwNTMyLDExMSwxMjA1OTAsMTExLDEyMDY0OCwxMTEsMTIwNzA2LDExMSwxMjA3NjQsMTExLDExNDIzLDExMSw0MzUxLDExMSwxNDEzLDExMSwxNTA1LDExMSwxNjA3LDExMSwxMjY1MDAsMTExLDEyNjU2NCwxMTEsMTI2NTk2LDExMSw2NTI1OSwxMTEsNjUyNjAsMTExLDY1MjU4LDExMSw2NTI1NywxMTEsMTcyNiwxMTEsNjQ0MjgsMTExLDY0NDI5LDExMSw2NDQyNywxMTEsNjQ0MjYsMTExLDE3MjksMTExLDY0NDI0LDExMSw2NDQyNSwxMTEsNjQ0MjMsMTExLDY0NDIyLDExMSwxNzQ5LDExMSwzMzYwLDExMSw0MTI1LDExMSw2Njc5NCwxMTEsNzE4ODAsMTExLDcxODk1LDExMSw2NjYwNCwxMTEsMTk4NCw3OSwyNTM0LDc5LDI5MTgsNzksMTIyOTUsNzksNzA4NjQsNzksNzE5MDQsNzksMTIwNzgyLDc5LDEyMDc5Miw3OSwxMjA4MDIsNzksMTIwODEyLDc5LDEyMDgyMiw3OSwxMzAwMzIsNzksNjUzMjcsNzksMTE5ODIyLDc5LDExOTg3NCw3OSwxMTk5MjYsNzksMTE5OTc4LDc5LDEyMDAzMCw3OSwxMjAwODIsNzksMTIwMTM0LDc5LDEyMDE4Niw3OSwxMjAyMzgsNzksMTIwMjkwLDc5LDEyMDM0Miw3OSwxMjAzOTQsNzksMTIwNDQ2LDc5LDkyNyw3OSwxMjA1MDIsNzksMTIwNTYwLDc5LDEyMDYxOCw3OSwxMjA2NzYsNzksMTIwNzM0LDc5LDExNDIyLDc5LDEzNjUsNzksMTE2MDQsNzksNDgxNiw3OSwyODQ4LDc5LDY2NzU0LDc5LDQyMjI3LDc5LDcxODYxLDc5LDY2MTk0LDc5LDY2MjE5LDc5LDY2NTY0LDc5LDY2ODM4LDc5LDkwNzYsMTEyLDY1MzYwLDExMiwxMTk4NDksMTEyLDExOTkwMSwxMTIsMTE5OTUzLDExMiwxMjAwMDUsMTEyLDEyMDA1NywxMTIsMTIwMTA5LDExMiwxMjAxNjEsMTEyLDEyMDIxMywxMTIsMTIwMjY1LDExMiwxMjAzMTcsMTEyLDEyMDM2OSwxMTIsMTIwNDIxLDExMiwxMjA0NzMsMTEyLDk2MSwxMTIsMTIwNTMwLDExMiwxMjA1NDQsMTEyLDEyMDU4OCwxMTIsMTIwNjAyLDExMiwxMjA2NDYsMTEyLDEyMDY2MCwxMTIsMTIwNzA0LDExMiwxMjA3MTgsMTEyLDEyMDc2MiwxMTIsMTIwNzc2LDExMiwxMTQyNywxMTIsNjUzMjgsODAsODQ3Myw4MCwxMTk4MjMsODAsMTE5ODc1LDgwLDExOTkyNyw4MCwxMTk5NzksODAsMTIwMDMxLDgwLDEyMDA4Myw4MCwxMjAxODcsODAsMTIwMjM5LDgwLDEyMDI5MSw4MCwxMjAzNDMsODAsMTIwMzk1LDgwLDEyMDQ0Nyw4MCw5MjksODAsMTIwNTA0LDgwLDEyMDU2Miw4MCwxMjA2MjAsODAsMTIwNjc4LDgwLDEyMDczNiw4MCwxMTQyNiw4MCw1MDkwLDgwLDUyMjksODAsNDIxOTMsODAsNjYxOTcsODAsMTE5ODUwLDExMywxMTk5MDIsMTEzLDExOTk1NCwxMTMsMTIwMDA2LDExMywxMjAwNTgsMTEzLDEyMDExMCwxMTMsMTIwMTYyLDExMywxMjAyMTQsMTEzLDEyMDI2NiwxMTMsMTIwMzE4LDExMywxMjAzNzAsMTEzLDEyMDQyMiwxMTMsMTIwNDc0LDExMywxMzA3LDExMywxMzc5LDExMywxMzgyLDExMyw4NDc0LDgxLDExOTgyNCw4MSwxMTk4NzYsODEsMTE5OTI4LDgxLDExOTk4MCw4MSwxMjAwMzIsODEsMTIwMDg0LDgxLDEyMDE4OCw4MSwxMjAyNDAsODEsMTIwMjkyLDgxLDEyMDM0NCw4MSwxMjAzOTYsODEsMTIwNDQ4LDgxLDExNjA1LDgxLDExOTg1MSwxMTQsMTE5OTAzLDExNCwxMTk5NTUsMTE0LDEyMDAwNywxMTQsMTIwMDU5LDExNCwxMjAxMTEsMTE0LDEyMDE2MywxMTQsMTIwMjE1LDExNCwxMjAyNjcsMTE0LDEyMDMxOSwxMTQsMTIwMzcxLDExNCwxMjA0MjMsMTE0LDEyMDQ3NSwxMTQsNDM4NDcsMTE0LDQzODQ4LDExNCw3NDYyLDExNCwxMTM5NywxMTQsNDM5MDUsMTE0LDExOTMxOCw4Miw4NDc1LDgyLDg0NzYsODIsODQ3Nyw4MiwxMTk4MjUsODIsMTE5ODc3LDgyLDExOTkyOSw4MiwxMjAwMzMsODIsMTIwMTg5LDgyLDEyMDI0MSw4MiwxMjAyOTMsODIsMTIwMzQ1LDgyLDEyMDM5Nyw4MiwxMjA0NDksODIsNDIyLDgyLDUwMjUsODIsNTA3NCw4Miw2Njc0MCw4Miw1NTExLDgyLDQyMjExLDgyLDk0MDA1LDgyLDY1MzYzLDExNSwxMTk4NTIsMTE1LDExOTkwNCwxMTUsMTE5OTU2LDExNSwxMjAwMDgsMTE1LDEyMDA2MCwxMTUsMTIwMTEyLDExNSwxMjAxNjQsMTE1LDEyMDIxNiwxMTUsMTIwMjY4LDExNSwxMjAzMjAsMTE1LDEyMDM3MiwxMTUsMTIwNDI0LDExNSwxMjA0NzYsMTE1LDQyODAxLDExNSw0NDUsMTE1LDExMDksMTE1LDQzOTQ2LDExNSw3MTg3MywxMTUsNjY2MzIsMTE1LDY1MzMxLDgzLDExOTgyNiw4MywxMTk4NzgsODMsMTE5OTMwLDgzLDExOTk4Miw4MywxMjAwMzQsODMsMTIwMDg2LDgzLDEyMDEzOCw4MywxMjAxOTAsODMsMTIwMjQyLDgzLDEyMDI5NCw4MywxMjAzNDYsODMsMTIwMzk4LDgzLDEyMDQ1MCw4MywxMDI5LDgzLDEzNTksODMsNTA3Nyw4Myw1MDgyLDgzLDQyMjEwLDgzLDk0MDEwLDgzLDY2MTk4LDgzLDY2NTkyLDgzLDExOTg1MywxMTYsMTE5OTA1LDExNiwxMTk5NTcsMTE2LDEyMDAwOSwxMTYsMTIwMDYxLDExNiwxMjAxMTMsMTE2LDEyMDE2NSwxMTYsMTIwMjE3LDExNiwxMjAyNjksMTE2LDEyMDMyMSwxMTYsMTIwMzczLDExNiwxMjA0MjUsMTE2LDEyMDQ3NywxMTYsODg2OCw4NCwxMDIwMSw4NCwxMjg4NzIsODQsNjUzMzIsODQsMTE5ODI3LDg0LDExOTg3OSw4NCwxMTk5MzEsODQsMTE5OTgzLDg0LDEyMDAzNSw4NCwxMjAwODcsODQsMTIwMTM5LDg0LDEyMDE5MSw4NCwxMjAyNDMsODQsMTIwMjk1LDg0LDEyMDM0Nyw4NCwxMjAzOTksODQsMTIwNDUxLDg0LDkzMiw4NCwxMjA1MDcsODQsMTIwNTY1LDg0LDEyMDYyMyw4NCwxMjA2ODEsODQsMTIwNzM5LDg0LDExNDMwLDg0LDUwMjYsODQsNDIxOTYsODQsOTM5NjIsODQsNzE4NjgsODQsNjYxOTksODQsNjYyMjUsODQsNjYzMjUsODQsMTE5ODU0LDExNywxMTk5MDYsMTE3LDExOTk1OCwxMTcsMTIwMDEwLDExNywxMjAwNjIsMTE3LDEyMDExNCwxMTcsMTIwMTY2LDExNywxMjAyMTgsMTE3LDEyMDI3MCwxMTcsMTIwMzIyLDExNywxMjAzNzQsMTE3LDEyMDQyNiwxMTcsMTIwNDc4LDExNyw0MjkxMSwxMTcsNzQ1MiwxMTcsNDM4NTQsMTE3LDQzODU4LDExNyw2NTEsMTE3LDk2NSwxMTcsMTIwNTM0LDExNywxMjA1OTIsMTE3LDEyMDY1MCwxMTcsMTIwNzA4LDExNywxMjA3NjYsMTE3LDE0MDUsMTE3LDY2ODA2LDExNyw3MTg5NiwxMTcsODc0Niw4NSw4ODk5LDg1LDExOTgyOCw4NSwxMTk4ODAsODUsMTE5OTMyLDg1LDExOTk4NCw4NSwxMjAwMzYsODUsMTIwMDg4LDg1LDEyMDE0MCw4NSwxMjAxOTIsODUsMTIwMjQ0LDg1LDEyMDI5Niw4NSwxMjAzNDgsODUsMTIwNDAwLDg1LDEyMDQ1Miw4NSwxMzU3LDg1LDQ2MDgsODUsNjY3NjYsODUsNTE5Niw4NSw0MjIyOCw4NSw5NDAxOCw4NSw3MTg2NCw4NSw4NzQ0LDExOCw4ODk3LDExOCw2NTM2NiwxMTgsODU2NCwxMTgsMTE5ODU1LDExOCwxMTk5MDcsMTE4LDExOTk1OSwxMTgsMTIwMDExLDExOCwxMjAwNjMsMTE4LDEyMDExNSwxMTgsMTIwMTY3LDExOCwxMjAyMTksMTE4LDEyMDI3MSwxMTgsMTIwMzIzLDExOCwxMjAzNzUsMTE4LDEyMDQyNywxMTgsMTIwNDc5LDExOCw3NDU2LDExOCw5NTcsMTE4LDEyMDUyNiwxMTgsMTIwNTg0LDExOCwxMjA2NDIsMTE4LDEyMDcwMCwxMTgsMTIwNzU4LDExOCwxMTQxLDExOCwxNDk2LDExOCw3MTQzMCwxMTgsNDM5NDUsMTE4LDcxODcyLDExOCwxMTkzMDksODYsMTYzOSw4NiwxNzgzLDg2LDg1NDgsODYsMTE5ODI5LDg2LDExOTg4MSw4NiwxMTk5MzMsODYsMTE5OTg1LDg2LDEyMDAzNyw4NiwxMjAwODksODYsMTIwMTQxLDg2LDEyMDE5Myw4NiwxMjAyNDUsODYsMTIwMjk3LDg2LDEyMDM0OSw4NiwxMjA0MDEsODYsMTIwNDUzLDg2LDExNDAsODYsMTE1NzYsODYsNTA4MSw4Niw1MTY3LDg2LDQyNzE5LDg2LDQyMjE0LDg2LDkzOTYwLDg2LDcxODQwLDg2LDY2ODQ1LDg2LDYyMywxMTksMTE5ODU2LDExOSwxMTk5MDgsMTE5LDExOTk2MCwxMTksMTIwMDEyLDExOSwxMjAwNjQsMTE5LDEyMDExNiwxMTksMTIwMTY4LDExOSwxMjAyMjAsMTE5LDEyMDI3MiwxMTksMTIwMzI0LDExOSwxMjAzNzYsMTE5LDEyMDQyOCwxMTksMTIwNDgwLDExOSw3NDU3LDExOSwxMTIxLDExOSwxMzA5LDExOSwxMzc3LDExOSw3MTQzNCwxMTksNzE0MzgsMTE5LDcxNDM5LDExOSw0MzkwNywxMTksNzE5MTksODcsNzE5MTAsODcsMTE5ODMwLDg3LDExOTg4Miw4NywxMTk5MzQsODcsMTE5OTg2LDg3LDEyMDAzOCw4NywxMjAwOTAsODcsMTIwMTQyLDg3LDEyMDE5NCw4NywxMjAyNDYsODcsMTIwMjk4LDg3LDEyMDM1MCw4NywxMjA0MDIsODcsMTIwNDU0LDg3LDEzMDgsODcsNTA0Myw4Nyw1MDc2LDg3LDQyMjE4LDg3LDU3NDIsMTIwLDEwNTM5LDEyMCwxMDU0MCwxMjAsMTA3OTksMTIwLDY1MzY4LDEyMCw4NTY5LDEyMCwxMTk4NTcsMTIwLDExOTkwOSwxMjAsMTE5OTYxLDEyMCwxMjAwMTMsMTIwLDEyMDA2NSwxMjAsMTIwMTE3LDEyMCwxMjAxNjksMTIwLDEyMDIyMSwxMjAsMTIwMjczLDEyMCwxMjAzMjUsMTIwLDEyMDM3NywxMjAsMTIwNDI5LDEyMCwxMjA0ODEsMTIwLDU0NDEsMTIwLDU1MDEsMTIwLDU3NDEsODgsOTU4Nyw4OCw2NjMzOCw4OCw3MTkxNiw4OCw2NTMzNiw4OCw4NTUzLDg4LDExOTgzMSw4OCwxMTk4ODMsODgsMTE5OTM1LDg4LDExOTk4Nyw4OCwxMjAwMzksODgsMTIwMDkxLDg4LDEyMDE0Myw4OCwxMjAxOTUsODgsMTIwMjQ3LDg4LDEyMDI5OSw4OCwxMjAzNTEsODgsMTIwNDAzLDg4LDEyMDQ1NSw4OCw0MjkzMSw4OCw5MzUsODgsMTIwNTEwLDg4LDEyMDU2OCw4OCwxMjA2MjYsODgsMTIwNjg0LDg4LDEyMDc0Miw4OCwxMTQzNiw4OCwxMTYxMyw4OCw1ODE1LDg4LDQyMjE5LDg4LDY2MTkyLDg4LDY2MjI4LDg4LDY2MzI3LDg4LDY2ODU1LDg4LDYxMSwxMjEsNzU2NCwxMjEsNjUzNjksMTIxLDExOTg1OCwxMjEsMTE5OTEwLDEyMSwxMTk5NjIsMTIxLDEyMDAxNCwxMjEsMTIwMDY2LDEyMSwxMjAxMTgsMTIxLDEyMDE3MCwxMjEsMTIwMjIyLDEyMSwxMjAyNzQsMTIxLDEyMDMyNiwxMjEsMTIwMzc4LDEyMSwxMjA0MzAsMTIxLDEyMDQ4MiwxMjEsNjU1LDEyMSw3OTM1LDEyMSw0Mzg2NiwxMjEsOTQ3LDEyMSw4NTA5LDEyMSwxMjA1MTYsMTIxLDEyMDU3NCwxMjEsMTIwNjMyLDEyMSwxMjA2OTAsMTIxLDEyMDc0OCwxMjEsMTE5OSwxMjEsNDMyNywxMjEsNzE5MDAsMTIxLDY1MzM3LDg5LDExOTgzMiw4OSwxMTk4ODQsODksMTE5OTM2LDg5LDExOTk4OCw4OSwxMjAwNDAsODksMTIwMDkyLDg5LDEyMDE0NCw4OSwxMjAxOTYsODksMTIwMjQ4LDg5LDEyMDMwMCw4OSwxMjAzNTIsODksMTIwNDA0LDg5LDEyMDQ1Niw4OSw5MzMsODksOTc4LDg5LDEyMDUwOCw4OSwxMjA1NjYsODksMTIwNjI0LDg5LDEyMDY4Miw4OSwxMjA3NDAsODksMTE0MzIsODksMTE5OCw4OSw1MDMzLDg5LDUwNTMsODksNDIyMjAsODksOTQwMTksODksNzE4NDQsODksNjYyMjYsODksMTE5ODU5LDEyMiwxMTk5MTEsMTIyLDExOTk2MywxMjIsMTIwMDE1LDEyMiwxMjAwNjcsMTIyLDEyMDExOSwxMjIsMTIwMTcxLDEyMiwxMjAyMjMsMTIyLDEyMDI3NSwxMjIsMTIwMzI3LDEyMiwxMjAzNzksMTIyLDEyMDQzMSwxMjIsMTIwNDgzLDEyMiw3NDU4LDEyMiw0MzkyMywxMjIsNzE4NzYsMTIyLDY2MjkzLDkwLDcxOTA5LDkwLDY1MzM4LDkwLDg0ODQsOTAsODQ4OCw5MCwxMTk4MzMsOTAsMTE5ODg1LDkwLDExOTkzNyw5MCwxMTk5ODksOTAsMTIwMDQxLDkwLDEyMDE5Nyw5MCwxMjAyNDksOTAsMTIwMzAxLDkwLDEyMDM1Myw5MCwxMjA0MDUsOTAsMTIwNDU3LDkwLDkxOCw5MCwxMjA0OTMsOTAsMTIwNTUxLDkwLDEyMDYwOSw5MCwxMjA2NjcsOTAsMTIwNzI1LDkwLDUwNTksOTAsNDIyMDQsOTAsNzE4NDksOTAsNjUyODIsMzQsNjUyODQsMzYsNjUyODUsMzcsNjUyODYsMzgsNjUyOTAsNDIsNjUyOTEsNDMsNjUyOTQsNDYsNjUyOTUsNDcsNjUyOTYsNDgsNjUyOTcsNDksNjUyOTgsNTAsNjUyOTksNTEsNjUzMDAsNTIsNjUzMDEsNTMsNjUzMDIsNTQsNjUzMDMsNTUsNjUzMDQsNTYsNjUzMDUsNTcsNjUzMDgsNjAsNjUzMDksNjEsNjUzMTAsNjIsNjUzMTIsNjQsNjUzMTYsNjgsNjUzMTgsNzAsNjUzMTksNzEsNjUzMjQsNzYsNjUzMjksODEsNjUzMzAsODIsNjUzMzMsODUsNjUzMzQsODYsNjUzMzUsODcsNjUzNDMsOTUsNjUzNDYsOTgsNjUzNDgsMTAwLDY1MzUwLDEwMiw2NTM1NSwxMDcsNjUzNTcsMTA5LDY1MzU4LDExMCw2NTM2MSwxMTMsNjUzNjIsMTE0LDY1MzY0LDExNiw2NTM2NSwxMTcsNjUzNjcsMTE5LDY1MzcwLDEyMiw2NTM3MSwxMjMsNjUzNzMsMTI1LDExOTg0NiwxMDldLCJfZGVmYXVsdCI6WzE2MCwzMiw4MjExLDQ1LDY1Mzc0LDEyNiw2NTMwNiw1OCw2NTI4MSwzMyw4MjE2LDk2LDgyMTcsOTYsODI0NSw5NiwxODAsOTYsMTI0OTQsNDcsMTA0Nyw1MSwxMDczLDU0LDEwNzIsOTcsMTA0MCw2NSwxMDY4LDk4LDEwNDIsNjYsMTA4OSw5OSwxMDU3LDY3LDEwNzcsMTAxLDEwNDUsNjksMTA1Myw3MiwzMDUsMTA1LDEwNTAsNzUsOTIxLDczLDEwNTIsNzcsMTA4NiwxMTEsMTA1NCw3OSwxMDA5LDExMiwxMDg4LDExMiwxMDU2LDgwLDEwNzUsMTE0LDEwNTgsODQsMjE1LDEyMCwxMDkzLDEyMCwxMDYxLDg4LDEwOTEsMTIxLDEwNTksODksNjUyODMsMzUsNjUyODgsNDAsNjUyODksNDEsNjUyOTIsNDQsNjUzMDcsNTksNjUzMTEsNjNdLCJjcyI6WzY1Mzc0LDEyNiw2NTMwNiw1OCw2NTI4MSwzMyw4MjE2LDk2LDgyMTcsOTYsODI0NSw5NiwxODAsOTYsMTI0OTQsNDcsMTA0Nyw1MSwxMDczLDU0LDEwNzIsOTcsMTA0MCw2NSwxMDY4LDk4LDEwNDIsNjYsMTA4OSw5OSwxMDU3LDY3LDEwNzcsMTAxLDEwNDUsNjksMTA1Myw3MiwzMDUsMTA1LDEwNTAsNzUsOTIxLDczLDEwNTIsNzcsMTA4NiwxMTEsMTA1NCw3OSwxMDA5LDExMiwxMDg4LDExMiwxMDU2LDgwLDEwNzUsMTE0LDEwNTgsODQsMTA5MywxMjAsMTA2MSw4OCwxMDkxLDEyMSwxMDU5LDg5LDY1MjgzLDM1LDY1Mjg4LDQwLDY1Mjg5LDQxLDY1MjkyLDQ0LDY1MzA3LDU5LDY1MzExLDYzXSwiZGUiOls2NTM3NCwxMjYsNjUzMDYsNTgsNjUyODEsMzMsODIxNiw5Niw4MjE3LDk2LDgyNDUsOTYsMTgwLDk2LDEyNDk0LDQ3LDEwNDcsNTEsMTA3Myw1NCwxMDcyLDk3LDEwNDAsNjUsMTA2OCw5OCwxMDQyLDY2LDEwODksOTksMTA1Nyw2NywxMDc3LDEwMSwxMDQ1LDY5LDEwNTMsNzIsMzA1LDEwNSwxMDUwLDc1LDkyMSw3MywxMDUyLDc3LDEwODYsMTExLDEwNTQsNzksMTAwOSwxMTIsMTA4OCwxMTIsMTA1Niw4MCwxMDc1LDExNCwxMDU4LDg0LDEwOTMsMTIwLDEwNjEsODgsMTA5MSwxMjEsMTA1OSw4OSw2NTI4MywzNSw2NTI4OCw0MCw2NTI4OSw0MSw2NTI5Miw0NCw2NTMwNyw1OSw2NTMxMSw2M10sImVzIjpbODIxMSw0NSw2NTM3NCwxMjYsNjUzMDYsNTgsNjUyODEsMzMsODI0NSw5NiwxODAsOTYsMTI0OTQsNDcsMTA0Nyw1MSwxMDczLDU0LDEwNzIsOTcsMTA0MCw2NSwxMDY4LDk4LDEwNDIsNjYsMTA4OSw5OSwxMDU3LDY3LDEwNzcsMTAxLDEwNDUsNjksMTA1Myw3MiwzMDUsMTA1LDEwNTAsNzUsMTA1Miw3NywxMDg2LDExMSwxMDU0LDc5LDEwMDksMTEyLDEwODgsMTEyLDEwNTYsODAsMTA3NSwxMTQsMTA1OCw4NCwyMTUsMTIwLDEwOTMsMTIwLDEwNjEsODgsMTA5MSwxMjEsMTA1OSw4OSw2NTI4MywzNSw2NTI4OCw0MCw2NTI4OSw0MSw2NTI5Miw0NCw2NTMwNyw1OSw2NTMxMSw2M10sImZyIjpbNjUzNzQsMTI2LDY1MzA2LDU4LDY1MjgxLDMzLDgyMTYsOTYsODI0NSw5NiwxMjQ5NCw0NywxMDQ3LDUxLDEwNzMsNTQsMTA3Miw5NywxMDQwLDY1LDEwNjgsOTgsMTA0Miw2NiwxMDg5LDk5LDEwNTcsNjcsMTA3NywxMDEsMTA0NSw2OSwxMDUzLDcyLDMwNSwxMDUsMTA1MCw3NSw5MjEsNzMsMTA1Miw3NywxMDg2LDExMSwxMDU0LDc5LDEwMDksMTEyLDEwODgsMTEyLDEwNTYsODAsMTA3NSwxMTQsMTA1OCw4NCwyMTUsMTIwLDEwOTMsMTIwLDEwNjEsODgsMTA5MSwxMjEsMTA1OSw4OSw2NTI4MywzNSw2NTI4OCw0MCw2NTI4OSw0MSw2NTI5Miw0NCw2NTMwNyw1OSw2NTMxMSw2M10sIml0IjpbMTYwLDMyLDgyMTEsNDUsNjUzNzQsMTI2LDY1MzA2LDU4LDY1MjgxLDMzLDgyMTYsOTYsODI0NSw5NiwxODAsOTYsMTI0OTQsNDcsMTA0Nyw1MSwxMDczLDU0LDEwNzIsOTcsMTA0MCw2NSwxMDY4LDk4LDEwNDIsNjYsMTA4OSw5OSwxMDU3LDY3LDEwNzcsMTAxLDEwNDUsNjksMTA1Myw3MiwzMDUsMTA1LDEwNTAsNzUsOTIxLDczLDEwNTIsNzcsMTA4NiwxMTEsMTA1NCw3OSwxMDA5LDExMiwxMDg4LDExMiwxMDU2LDgwLDEwNzUsMTE0LDEwNTgsODQsMjE1LDEyMCwxMDkzLDEyMCwxMDYxLDg4LDEwOTEsMTIxLDEwNTksODksNjUyODMsMzUsNjUyODgsNDAsNjUyODksNDEsNjUyOTIsNDQsNjUzMDcsNTksNjUzMTEsNjNdLCJqYSI6WzgyMTEsNDUsNjUzMDYsNTgsNjUyODEsMzMsODIxNiw5Niw4MjE3LDk2LDgyNDUsOTYsMTgwLDk2LDEwNDcsNTEsMTA3Myw1NCwxMDcyLDk3LDEwNDAsNjUsMTA2OCw5OCwxMDQyLDY2LDEwODksOTksMTA1Nyw2NywxMDc3LDEwMSwxMDQ1LDY5LDEwNTMsNzIsMzA1LDEwNSwxMDUwLDc1LDkyMSw3MywxMDUyLDc3LDEwODYsMTExLDEwNTQsNzksMTAwOSwxMTIsMTA4OCwxMTIsMTA1Niw4MCwxMDc1LDExNCwxMDU4LDg0LDIxNSwxMjAsMTA5MywxMjAsMTA2MSw4OCwxMDkxLDEyMSwxMDU5LDg5LDY1MjgzLDM1LDY1MjkyLDQ0LDY1MzA3LDU5XSwia28iOls4MjExLDQ1LDY1Mzc0LDEyNiw2NTMwNiw1OCw2NTI4MSwzMyw4MjQ1LDk2LDE4MCw5NiwxMjQ5NCw0NywxMDQ3LDUxLDEwNzMsNTQsMTA3Miw5NywxMDQwLDY1LDEwNjgsOTgsMTA0Miw2NiwxMDg5LDk5LDEwNTcsNjcsMTA3NywxMDEsMTA0NSw2OSwxMDUzLDcyLDMwNSwxMDUsMTA1MCw3NSw5MjEsNzMsMTA1Miw3NywxMDg2LDExMSwxMDU0LDc5LDEwMDksMTEyLDEwODgsMTEyLDEwNTYsODAsMTA3NSwxMTQsMTA1OCw4NCwyMTUsMTIwLDEwOTMsMTIwLDEwNjEsODgsMTA5MSwxMjEsMTA1OSw4OSw2NTI4MywzNSw2NTI4OCw0MCw2NTI4OSw0MSw2NTI5Miw0NCw2NTMwNyw1OSw2NTMxMSw2M10sInBsIjpbNjUzNzQsMTI2LDY1MzA2LDU4LDY1MjgxLDMzLDgyMTYsOTYsODIxNyw5Niw4MjQ1LDk2LDE4MCw5NiwxMjQ5NCw0NywxMDQ3LDUxLDEwNzMsNTQsMTA3Miw5NywxMDQwLDY1LDEwNjgsOTgsMTA0Miw2NiwxMDg5LDk5LDEwNTcsNjcsMTA3NywxMDEsMTA0NSw2OSwxMDUzLDcyLDMwNSwxMDUsMTA1MCw3NSw5MjEsNzMsMTA1Miw3NywxMDg2LDExMSwxMDU0LDc5LDEwMDksMTEyLDEwODgsMTEyLDEwNTYsODAsMTA3NSwxMTQsMTA1OCw4NCwyMTUsMTIwLDEwOTMsMTIwLDEwNjEsODgsMTA5MSwxMjEsMTA1OSw4OSw2NTI4MywzNSw2NTI4OCw0MCw2NTI4OSw0MSw2NTI5Miw0NCw2NTMwNyw1OSw2NTMxMSw2M10sInB0LUJSIjpbNjUzNzQsMTI2LDY1MzA2LDU4LDY1MjgxLDMzLDgyMTYsOTYsODIxNyw5Niw4MjQ1LDk2LDE4MCw5NiwxMjQ5NCw0NywxMDQ3LDUxLDEwNzMsNTQsMTA3Miw5NywxMDQwLDY1LDEwNjgsOTgsMTA0Miw2NiwxMDg5LDk5LDEwNTcsNjcsMTA3NywxMDEsMTA0NSw2OSwxMDUzLDcyLDMwNSwxMDUsMTA1MCw3NSw5MjEsNzMsMTA1Miw3NywxMDg2LDExMSwxMDU0LDc5LDEwMDksMTEyLDEwODgsMTEyLDEwNTYsODAsMTA3NSwxMTQsMTA1OCw4NCwyMTUsMTIwLDEwOTMsMTIwLDEwNjEsODgsMTA5MSwxMjEsMTA1OSw4OSw2NTI4MywzNSw2NTI4OCw0MCw2NTI4OSw0MSw2NTI5Miw0NCw2NTMwNyw1OSw2NTMxMSw2M10sInFwcy1wbG9jIjpbMTYwLDMyLDgyMTEsNDUsNjUzNzQsMTI2LDY1MzA2LDU4LDY1MjgxLDMzLDgyMTYsOTYsODIxNyw5Niw4MjQ1LDk2LDE4MCw5NiwxMjQ5NCw0NywxMDQ3LDUxLDEwNzMsNTQsMTA3Miw5NywxMDQwLDY1LDEwNjgsOTgsMTA0Miw2NiwxMDg5LDk5LDEwNTcsNjcsMTA3NywxMDEsMTA0NSw2OSwxMDUzLDcyLDMwNSwxMDUsMTA1MCw3NSw5MjEsNzMsMTA1Miw3NywxMDg2LDExMSwxMDU0LDc5LDEwODgsMTEyLDEwNTYsODAsMTA3NSwxMTQsMTA1OCw4NCwyMTUsMTIwLDEwOTMsMTIwLDEwNjEsODgsMTA5MSwxMjEsMTA1OSw4OSw2NTI4MywzNSw2NTI4OCw0MCw2NTI4OSw0MSw2NTI5Miw0NCw2NTMwNyw1OSw2NTMxMSw2M10sInJ1IjpbNjUzNzQsMTI2LDY1MzA2LDU4LDY1MjgxLDMzLDgyMTYsOTYsODIxNyw5Niw4MjQ1LDk2LDE4MCw5NiwxMjQ5NCw0NywzMDUsMTA1LDkyMSw3MywxMDA5LDExMiwyMTUsMTIwLDY1MjgzLDM1LDY1Mjg4LDQwLDY1Mjg5LDQxLDY1MjkyLDQ0LDY1MzA3LDU5LDY1MzExLDYzXSwidHIiOlsxNjAsMzIsODIxMSw0NSw2NTM3NCwxMjYsNjUzMDYsNTgsNjUyODEsMzMsODI0NSw5NiwxODAsOTYsMTI0OTQsNDcsMTA0Nyw1MSwxMDczLDU0LDEwNzIsOTcsMTA0MCw2NSwxMDY4LDk4LDEwNDIsNjYsMTA4OSw5OSwxMDU3LDY3LDEwNzcsMTAxLDEwNDUsNjksMTA1Myw3MiwxMDUwLDc1LDkyMSw3MywxMDUyLDc3LDEwODYsMTExLDEwNTQsNzksMTAwOSwxMTIsMTA4OCwxMTIsMTA1Niw4MCwxMDc1LDExNCwxMDU4LDg0LDIxNSwxMjAsMTA5MywxMjAsMTA2MSw4OCwxMDkxLDEyMSwxMDU5LDg5LDY1MjgzLDM1LDY1Mjg4LDQwLDY1Mjg5LDQxLDY1MjkyLDQ0LDY1MzA3LDU5LDY1MzExLDYzXSwiemgtaGFucyI6WzY1Mzc0LDEyNiw2NTMwNiw1OCw2NTI4MSwzMyw4MjQ1LDk2LDE4MCw5NiwxMjQ5NCw0NywxMDQ3LDUxLDEwNzMsNTQsMTA3Miw5NywxMDQwLDY1LDEwNjgsOTgsMTA0Miw2NiwxMDg5LDk5LDEwNTcsNjcsMTA3NywxMDEsMTA0NSw2OSwxMDUzLDcyLDMwNSwxMDUsMTA1MCw3NSw5MjEsNzMsMTA1Miw3NywxMDg2LDExMSwxMDU0LDc5LDEwMDksMTEyLDEwODgsMTEyLDEwNTYsODAsMTA3NSwxMTQsMTA1OCw4NCwyMTUsMTIwLDEwOTMsMTIwLDEwNjEsODgsMTA5MSwxMjEsMTA1OSw4OSw2NTI4OCw0MCw2NTI4OSw0MV0sInpoLWhhbnQiOls4MjExLDQ1LDY1Mzc0LDEyNiwxODAsOTYsMTI0OTQsNDcsMTA0Nyw1MSwxMDczLDU0LDEwNzIsOTcsMTA0MCw2NSwxMDY4LDk4LDEwNDIsNjYsMTA4OSw5OSwxMDU3LDY3LDEwNzcsMTAxLDEwNDUsNjksMTA1Myw3MiwzMDUsMTA1LDEwNTAsNzUsOTIxLDczLDEwNTIsNzcsMTA4NiwxMTEsMTA1NCw3OSwxMDA5LDExMiwxMDg4LDExMiwxMDU2LDgwLDEwNzUsMTE0LDEwNTgsODQsMjE1LDEyMCwxMDkzLDEyMCwxMDYxLDg4LDEwOTEsMTIxLDEwNTksODksNjUyODMsMzUsNjUzMDcsNTldfScpKSksdGUuY2FjaGU9bmV3IGNsYXNze2NvbnN0cnVjdG9yKGUpe3RoaXMuZm49ZSx0aGlzLmxhc3RDYWNoZT12b2lkIDAsdGhpcy5sYXN0QXJnS2V5PXZvaWQgMH1nZXQoZSl7Y29uc3QgdD1KU09OLnN0cmluZ2lmeShlKTtyZXR1cm4gdGhpcy5sYXN0QXJnS2V5IT09dCYmKHRoaXMubGFzdEFyZ0tleT10LHRoaXMubGFzdENhY2hlPXRoaXMuZm4oZSkpLHRoaXMubGFzdENhY2hlfX0oKGU9PntmdW5jdGlvbiB0KGUpe2NvbnN0IHQ9bmV3IE1hcDtmb3IobGV0IG49MDtuPGUubGVuZ3RoO24rPTIpdC5zZXQoZVtuXSxlW24rMV0pO3JldHVybiB0fWZ1bmN0aW9uIG4oZSx0KXtpZighZSlyZXR1cm4gdDtjb25zdCBuPW5ldyBNYXA7Zm9yKGNvbnN0W3IsaV1vZiBlKXQuaGFzKHIpJiZuLnNldChyLGkpO3JldHVybiBufWNvbnN0IHI9US5hbWJpZ3VvdXNDaGFyYWN0ZXJEYXRhLnZhbHVlO2xldCBpLHM9ZS5maWx0ZXIoKGU9PiFlLnN0YXJ0c1dpdGgoIl8iKSYmZSBpbiByKSk7MD09PXMubGVuZ3RoJiYocz1bIl9kZWZhdWx0Il0pO2Zvcihjb25zdCBlIG9mIHMpe2k9bihpLHQocltlXSkpfWNvbnN0IG89ZnVuY3Rpb24oZSx0KXtjb25zdCBuPW5ldyBNYXAoZSk7Zm9yKGNvbnN0W2Uscl1vZiB0KW4uc2V0KGUscik7cmV0dXJuIG59KHQoci5fY29tbW9uKSxpKTtyZXR1cm4gbmV3IHRlKG8pfSkpLHRlLl9sb2NhbGVzPW5ldyBZKCgoKT0+T2JqZWN0LmtleXModGUuYW1iaWd1b3VzQ2hhcmFjdGVyRGF0YS52YWx1ZSkuZmlsdGVyKChlPT4hZS5zdGFydHNXaXRoKCJfIikpKSkpO2NsYXNzIG5le3N0YXRpYyBnZXRSYXdEYXRhKCl7cmV0dXJuIEpTT04ucGFyc2UoIls5LDEwLDExLDEyLDEzLDMyLDEyNywxNjAsMTczLDg0NywxNTY0LDQ0NDcsNDQ0OCw2MDY4LDYwNjksNjE1NSw2MTU2LDYxNTcsNjE1OCw3MzU1LDczNTYsODE5Miw4MTkzLDgxOTQsODE5NSw4MTk2LDgxOTcsODE5OCw4MTk5LDgyMDAsODIwMSw4MjAyLDgyMDMsODIwNCw4MjA1LDgyMDYsODIwNyw4MjM0LDgyMzUsODIzNiw4MjM3LDgyMzgsODIzOSw4Mjg3LDgyODgsODI4OSw4MjkwLDgyOTEsODI5Miw4MjkzLDgyOTQsODI5NSw4Mjk2LDgyOTcsODI5OCw4Mjk5LDgzMDAsODMwMSw4MzAyLDgzMDMsMTAyNDAsMTIyODgsMTI2NDQsNjUwMjQsNjUwMjUsNjUwMjYsNjUwMjcsNjUwMjgsNjUwMjksNjUwMzAsNjUwMzEsNjUwMzIsNjUwMzMsNjUwMzQsNjUwMzUsNjUwMzYsNjUwMzcsNjUwMzgsNjUwMzksNjUyNzksNjU0NDAsNjU1MjAsNjU1MjEsNjU1MjIsNjU1MjMsNjU1MjQsNjU1MjUsNjU1MjYsNjU1MjcsNjU1MjgsNjU1MzIsNzg4NDQsMTE5MTU1LDExOTE1NiwxMTkxNTcsMTE5MTU4LDExOTE1OSwxMTkxNjAsMTE5MTYxLDExOTE2Miw5MTc1MDQsOTE3NTA1LDkxNzUwNiw5MTc1MDcsOTE3NTA4LDkxNzUwOSw5MTc1MTAsOTE3NTExLDkxNzUxMiw5MTc1MTMsOTE3NTE0LDkxNzUxNSw5MTc1MTYsOTE3NTE3LDkxNzUxOCw5MTc1MTksOTE3NTIwLDkxNzUyMSw5MTc1MjIsOTE3NTIzLDkxNzUyNCw5MTc1MjUsOTE3NTI2LDkxNzUyNyw5MTc1MjgsOTE3NTI5LDkxNzUzMCw5MTc1MzEsOTE3NTMyLDkxNzUzMyw5MTc1MzQsOTE3NTM1LDkxNzUzNiw5MTc1MzcsOTE3NTM4LDkxNzUzOSw5MTc1NDAsOTE3NTQxLDkxNzU0Miw5MTc1NDMsOTE3NTQ0LDkxNzU0NSw5MTc1NDYsOTE3NTQ3LDkxNzU0OCw5MTc1NDksOTE3NTUwLDkxNzU1MSw5MTc1NTIsOTE3NTUzLDkxNzU1NCw5MTc1NTUsOTE3NTU2LDkxNzU1Nyw5MTc1NTgsOTE3NTU5LDkxNzU2MCw5MTc1NjEsOTE3NTYyLDkxNzU2Myw5MTc1NjQsOTE3NTY1LDkxNzU2Niw5MTc1NjcsOTE3NTY4LDkxNzU2OSw5MTc1NzAsOTE3NTcxLDkxNzU3Miw5MTc1NzMsOTE3NTc0LDkxNzU3NSw5MTc1NzYsOTE3NTc3LDkxNzU3OCw5MTc1NzksOTE3NTgwLDkxNzU4MSw5MTc1ODIsOTE3NTgzLDkxNzU4NCw5MTc1ODUsOTE3NTg2LDkxNzU4Nyw5MTc1ODgsOTE3NTg5LDkxNzU5MCw5MTc1OTEsOTE3NTkyLDkxNzU5Myw5MTc1OTQsOTE3NTk1LDkxNzU5Niw5MTc1OTcsOTE3NTk4LDkxNzU5OSw5MTc2MDAsOTE3NjAxLDkxNzYwMiw5MTc2MDMsOTE3NjA0LDkxNzYwNSw5MTc2MDYsOTE3NjA3LDkxNzYwOCw5MTc2MDksOTE3NjEwLDkxNzYxMSw5MTc2MTIsOTE3NjEzLDkxNzYxNCw5MTc2MTUsOTE3NjE2LDkxNzYxNyw5MTc2MTgsOTE3NjE5LDkxNzYyMCw5MTc2MjEsOTE3NjIyLDkxNzYyMyw5MTc2MjQsOTE3NjI1LDkxNzYyNiw5MTc2MjcsOTE3NjI4LDkxNzYyOSw5MTc2MzAsOTE3NjMxLDkxNzc2MCw5MTc3NjEsOTE3NzYyLDkxNzc2Myw5MTc3NjQsOTE3NzY1LDkxNzc2Niw5MTc3NjcsOTE3NzY4LDkxNzc2OSw5MTc3NzAsOTE3NzcxLDkxNzc3Miw5MTc3NzMsOTE3Nzc0LDkxNzc3NSw5MTc3NzYsOTE3Nzc3LDkxNzc3OCw5MTc3NzksOTE3NzgwLDkxNzc4MSw5MTc3ODIsOTE3NzgzLDkxNzc4NCw5MTc3ODUsOTE3Nzg2LDkxNzc4Nyw5MTc3ODgsOTE3Nzg5LDkxNzc5MCw5MTc3OTEsOTE3NzkyLDkxNzc5Myw5MTc3OTQsOTE3Nzk1LDkxNzc5Niw5MTc3OTcsOTE3Nzk4LDkxNzc5OSw5MTc4MDAsOTE3ODAxLDkxNzgwMiw5MTc4MDMsOTE3ODA0LDkxNzgwNSw5MTc4MDYsOTE3ODA3LDkxNzgwOCw5MTc4MDksOTE3ODEwLDkxNzgxMSw5MTc4MTIsOTE3ODEzLDkxNzgxNCw5MTc4MTUsOTE3ODE2LDkxNzgxNyw5MTc4MTgsOTE3ODE5LDkxNzgyMCw5MTc4MjEsOTE3ODIyLDkxNzgyMyw5MTc4MjQsOTE3ODI1LDkxNzgyNiw5MTc4MjcsOTE3ODI4LDkxNzgyOSw5MTc4MzAsOTE3ODMxLDkxNzgzMiw5MTc4MzMsOTE3ODM0LDkxNzgzNSw5MTc4MzYsOTE3ODM3LDkxNzgzOCw5MTc4MzksOTE3ODQwLDkxNzg0MSw5MTc4NDIsOTE3ODQzLDkxNzg0NCw5MTc4NDUsOTE3ODQ2LDkxNzg0Nyw5MTc4NDgsOTE3ODQ5LDkxNzg1MCw5MTc4NTEsOTE3ODUyLDkxNzg1Myw5MTc4NTQsOTE3ODU1LDkxNzg1Niw5MTc4NTcsOTE3ODU4LDkxNzg1OSw5MTc4NjAsOTE3ODYxLDkxNzg2Miw5MTc4NjMsOTE3ODY0LDkxNzg2NSw5MTc4NjYsOTE3ODY3LDkxNzg2OCw5MTc4NjksOTE3ODcwLDkxNzg3MSw5MTc4NzIsOTE3ODczLDkxNzg3NCw5MTc4NzUsOTE3ODc2LDkxNzg3Nyw5MTc4NzgsOTE3ODc5LDkxNzg4MCw5MTc4ODEsOTE3ODgyLDkxNzg4Myw5MTc4ODQsOTE3ODg1LDkxNzg4Niw5MTc4ODcsOTE3ODg4LDkxNzg4OSw5MTc4OTAsOTE3ODkxLDkxNzg5Miw5MTc4OTMsOTE3ODk0LDkxNzg5NSw5MTc4OTYsOTE3ODk3LDkxNzg5OCw5MTc4OTksOTE3OTAwLDkxNzkwMSw5MTc5MDIsOTE3OTAzLDkxNzkwNCw5MTc5MDUsOTE3OTA2LDkxNzkwNyw5MTc5MDgsOTE3OTA5LDkxNzkxMCw5MTc5MTEsOTE3OTEyLDkxNzkxMyw5MTc5MTQsOTE3OTE1LDkxNzkxNiw5MTc5MTcsOTE3OTE4LDkxNzkxOSw5MTc5MjAsOTE3OTIxLDkxNzkyMiw5MTc5MjMsOTE3OTI0LDkxNzkyNSw5MTc5MjYsOTE3OTI3LDkxNzkyOCw5MTc5MjksOTE3OTMwLDkxNzkzMSw5MTc5MzIsOTE3OTMzLDkxNzkzNCw5MTc5MzUsOTE3OTM2LDkxNzkzNyw5MTc5MzgsOTE3OTM5LDkxNzk0MCw5MTc5NDEsOTE3OTQyLDkxNzk0Myw5MTc5NDQsOTE3OTQ1LDkxNzk0Niw5MTc5NDcsOTE3OTQ4LDkxNzk0OSw5MTc5NTAsOTE3OTUxLDkxNzk1Miw5MTc5NTMsOTE3OTU0LDkxNzk1NSw5MTc5NTYsOTE3OTU3LDkxNzk1OCw5MTc5NTksOTE3OTYwLDkxNzk2MSw5MTc5NjIsOTE3OTYzLDkxNzk2NCw5MTc5NjUsOTE3OTY2LDkxNzk2Nyw5MTc5NjgsOTE3OTY5LDkxNzk3MCw5MTc5NzEsOTE3OTcyLDkxNzk3Myw5MTc5NzQsOTE3OTc1LDkxNzk3Niw5MTc5NzcsOTE3OTc4LDkxNzk3OSw5MTc5ODAsOTE3OTgxLDkxNzk4Miw5MTc5ODMsOTE3OTg0LDkxNzk4NSw5MTc5ODYsOTE3OTg3LDkxNzk4OCw5MTc5ODksOTE3OTkwLDkxNzk5MSw5MTc5OTIsOTE3OTkzLDkxNzk5NCw5MTc5OTUsOTE3OTk2LDkxNzk5Nyw5MTc5OTgsOTE3OTk5XSIpfXN0YXRpYyBnZXREYXRhKCl7cmV0dXJuIHRoaXMuX2RhdGF8fCh0aGlzLl9kYXRhPW5ldyBTZXQobmUuZ2V0UmF3RGF0YSgpKSksdGhpcy5fZGF0YX1zdGF0aWMgaXNJbnZpc2libGVDaGFyYWN0ZXIoZSl7cmV0dXJuIG5lLmdldERhdGEoKS5oYXMoZSl9c3RhdGljIGdldCBjb2RlUG9pbnRzKCl7cmV0dXJuIG5lLmdldERhdGEoKX19bmUuX2RhdGE9dm9pZCAwO2NsYXNzIHJle2NvbnN0cnVjdG9yKGUsdCxuLHIpe3RoaXMudnNXb3JrZXI9ZSx0aGlzLnJlcT10LHRoaXMubWV0aG9kPW4sdGhpcy5hcmdzPXIsdGhpcy50eXBlPTB9fWNsYXNzIGlle2NvbnN0cnVjdG9yKGUsdCxuLHIpe3RoaXMudnNXb3JrZXI9ZSx0aGlzLnNlcT10LHRoaXMucmVzPW4sdGhpcy5lcnI9cix0aGlzLnR5cGU9MX19Y2xhc3Mgc2V7Y29uc3RydWN0b3IoZSx0LG4scil7dGhpcy52c1dvcmtlcj1lLHRoaXMucmVxPXQsdGhpcy5ldmVudE5hbWU9bix0aGlzLmFyZz1yLHRoaXMudHlwZT0yfX1jbGFzcyBvZXtjb25zdHJ1Y3RvcihlLHQsbil7dGhpcy52c1dvcmtlcj1lLHRoaXMucmVxPXQsdGhpcy5ldmVudD1uLHRoaXMudHlwZT0zfX1jbGFzcyBhZXtjb25zdHJ1Y3RvcihlLHQpe3RoaXMudnNXb3JrZXI9ZSx0aGlzLnJlcT10LHRoaXMudHlwZT00fX1jbGFzcyBsZXtjb25zdHJ1Y3RvcihlKXt0aGlzLl93b3JrZXJJZD0tMSx0aGlzLl9oYW5kbGVyPWUsdGhpcy5fbGFzdFNlbnRSZXE9MCx0aGlzLl9wZW5kaW5nUmVwbGllcz1PYmplY3QuY3JlYXRlKG51bGwpLHRoaXMuX3BlbmRpbmdFbWl0dGVycz1uZXcgTWFwLHRoaXMuX3BlbmRpbmdFdmVudHM9bmV3IE1hcH1zZXRXb3JrZXJJZChlKXt0aGlzLl93b3JrZXJJZD1lfXNlbmRNZXNzYWdlKGUsdCl7Y29uc3Qgbj1TdHJpbmcoKyt0aGlzLl9sYXN0U2VudFJlcSk7cmV0dXJuIG5ldyBQcm9taXNlKCgocixpKT0+e3RoaXMuX3BlbmRpbmdSZXBsaWVzW25dPXtyZXNvbHZlOnIscmVqZWN0Oml9LHRoaXMuX3NlbmQobmV3IHJlKHRoaXMuX3dvcmtlcklkLG4sZSx0KSl9KSl9bGlzdGVuKGUsdCl7bGV0IG49bnVsbDtjb25zdCByPW5ldyBIKHtvbldpbGxBZGRGaXJzdExpc3RlbmVyOigpPT57bj1TdHJpbmcoKyt0aGlzLl9sYXN0U2VudFJlcSksdGhpcy5fcGVuZGluZ0VtaXR0ZXJzLnNldChuLHIpLHRoaXMuX3NlbmQobmV3IHNlKHRoaXMuX3dvcmtlcklkLG4sZSx0KSl9LG9uRGlkUmVtb3ZlTGFzdExpc3RlbmVyOigpPT57dGhpcy5fcGVuZGluZ0VtaXR0ZXJzLmRlbGV0ZShuKSx0aGlzLl9zZW5kKG5ldyBhZSh0aGlzLl93b3JrZXJJZCxuKSksbj1udWxsfX0pO3JldHVybiByLmV2ZW50fWhhbmRsZU1lc3NhZ2UoZSl7ZSYmZS52c1dvcmtlciYmKC0xIT09dGhpcy5fd29ya2VySWQmJmUudnNXb3JrZXIhPT10aGlzLl93b3JrZXJJZHx8dGhpcy5faGFuZGxlTWVzc2FnZShlKSl9X2hhbmRsZU1lc3NhZ2UoZSl7c3dpdGNoKGUudHlwZSl7Y2FzZSAxOnJldHVybiB0aGlzLl9oYW5kbGVSZXBseU1lc3NhZ2UoZSk7Y2FzZSAwOnJldHVybiB0aGlzLl9oYW5kbGVSZXF1ZXN0TWVzc2FnZShlKTtjYXNlIDI6cmV0dXJuIHRoaXMuX2hhbmRsZVN1YnNjcmliZUV2ZW50TWVzc2FnZShlKTtjYXNlIDM6cmV0dXJuIHRoaXMuX2hhbmRsZUV2ZW50TWVzc2FnZShlKTtjYXNlIDQ6cmV0dXJuIHRoaXMuX2hhbmRsZVVuc3Vic2NyaWJlRXZlbnRNZXNzYWdlKGUpfX1faGFuZGxlUmVwbHlNZXNzYWdlKGUpe2lmKCF0aGlzLl9wZW5kaW5nUmVwbGllc1tlLnNlcV0pcmV0dXJuIHZvaWQgY29uc29sZS53YXJuKCJHb3QgcmVwbHkgdG8gdW5rbm93biBzZXEiKTtjb25zdCB0PXRoaXMuX3BlbmRpbmdSZXBsaWVzW2Uuc2VxXTtpZihkZWxldGUgdGhpcy5fcGVuZGluZ1JlcGxpZXNbZS5zZXFdLGUuZXJyKXtsZXQgbj1lLmVycjtyZXR1cm4gZS5lcnIuJGlzRXJyb3ImJihuPW5ldyBFcnJvcixuLm5hbWU9ZS5lcnIubmFtZSxuLm1lc3NhZ2U9ZS5lcnIubWVzc2FnZSxuLnN0YWNrPWUuZXJyLnN0YWNrKSx2b2lkIHQucmVqZWN0KG4pfXQucmVzb2x2ZShlLnJlcyl9X2hhbmRsZVJlcXVlc3RNZXNzYWdlKGUpe2NvbnN0IHQ9ZS5yZXE7dGhpcy5faGFuZGxlci5oYW5kbGVNZXNzYWdlKGUubWV0aG9kLGUuYXJncykudGhlbigoZT0+e3RoaXMuX3NlbmQobmV3IGllKHRoaXMuX3dvcmtlcklkLHQsZSx2b2lkIDApKX0pLChlPT57ZS5kZXRhaWwgaW5zdGFuY2VvZiBFcnJvciYmKGUuZGV0YWlsPXIoZS5kZXRhaWwpKSx0aGlzLl9zZW5kKG5ldyBpZSh0aGlzLl93b3JrZXJJZCx0LHZvaWQgMCxyKGUpKSl9KSl9X2hhbmRsZVN1YnNjcmliZUV2ZW50TWVzc2FnZShlKXtjb25zdCB0PWUucmVxLG49dGhpcy5faGFuZGxlci5oYW5kbGVFdmVudChlLmV2ZW50TmFtZSxlLmFyZykoKGU9Pnt0aGlzLl9zZW5kKG5ldyBvZSh0aGlzLl93b3JrZXJJZCx0LGUpKX0pKTt0aGlzLl9wZW5kaW5nRXZlbnRzLnNldCh0LG4pfV9oYW5kbGVFdmVudE1lc3NhZ2UoZSl7dGhpcy5fcGVuZGluZ0VtaXR0ZXJzLmhhcyhlLnJlcSk/dGhpcy5fcGVuZGluZ0VtaXR0ZXJzLmdldChlLnJlcSkuZmlyZShlLmV2ZW50KTpjb25zb2xlLndhcm4oIkdvdCBldmVudCBmb3IgdW5rbm93biByZXEiKX1faGFuZGxlVW5zdWJzY3JpYmVFdmVudE1lc3NhZ2UoZSl7dGhpcy5fcGVuZGluZ0V2ZW50cy5oYXMoZS5yZXEpPyh0aGlzLl9wZW5kaW5nRXZlbnRzLmdldChlLnJlcSkuZGlzcG9zZSgpLHRoaXMuX3BlbmRpbmdFdmVudHMuZGVsZXRlKGUucmVxKSk6Y29uc29sZS53YXJuKCJHb3QgdW5zdWJzY3JpYmUgZm9yIHVua25vd24gcmVxIil9X3NlbmQoZSl7Y29uc3QgdD1bXTtpZigwPT09ZS50eXBlKWZvcihsZXQgbj0wO248ZS5hcmdzLmxlbmd0aDtuKyspZS5hcmdzW25daW5zdGFuY2VvZiBBcnJheUJ1ZmZlciYmdC5wdXNoKGUuYXJnc1tuXSk7ZWxzZSAxPT09ZS50eXBlJiZlLnJlcyBpbnN0YW5jZW9mIEFycmF5QnVmZmVyJiZ0LnB1c2goZS5yZXMpO3RoaXMuX2hhbmRsZXIuc2VuZE1lc3NhZ2UoZSx0KX19ZnVuY3Rpb24gdWUoZSl7cmV0dXJuIm8iPT09ZVswXSYmIm4iPT09ZVsxXSYmWChlLmNoYXJDb2RlQXQoMikpfWZ1bmN0aW9uIGhlKGUpe3JldHVybi9eb25EeW5hbWljLy50ZXN0KGUpJiZYKGUuY2hhckNvZGVBdCg5KSl9Y2xhc3MgY2V7Y29uc3RydWN0b3IoZSx0KXt0aGlzLl9yZXF1ZXN0SGFuZGxlckZhY3Rvcnk9dCx0aGlzLl9yZXF1ZXN0SGFuZGxlcj1udWxsLHRoaXMuX3Byb3RvY29sPW5ldyBsZSh7c2VuZE1lc3NhZ2U6KHQsbik9PntlKHQsbil9LGhhbmRsZU1lc3NhZ2U6KGUsdCk9PnRoaXMuX2hhbmRsZU1lc3NhZ2UoZSx0KSxoYW5kbGVFdmVudDooZSx0KT0+dGhpcy5faGFuZGxlRXZlbnQoZSx0KX0pfW9ubWVzc2FnZShlKXt0aGlzLl9wcm90b2NvbC5oYW5kbGVNZXNzYWdlKGUpfV9oYW5kbGVNZXNzYWdlKGUsdCl7aWYoIiRpbml0aWFsaXplIj09PWUpcmV0dXJuIHRoaXMuaW5pdGlhbGl6ZSh0WzBdLHRbMV0sdFsyXSx0WzNdKTtpZighdGhpcy5fcmVxdWVzdEhhbmRsZXJ8fCJmdW5jdGlvbiIhPXR5cGVvZiB0aGlzLl9yZXF1ZXN0SGFuZGxlcltlXSlyZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKCJNaXNzaW5nIHJlcXVlc3RIYW5kbGVyIG9yIG1ldGhvZDogIitlKSk7dHJ5e3JldHVybiBQcm9taXNlLnJlc29sdmUodGhpcy5fcmVxdWVzdEhhbmRsZXJbZV0uYXBwbHkodGhpcy5fcmVxdWVzdEhhbmRsZXIsdCkpfWNhdGNoKGUpe3JldHVybiBQcm9taXNlLnJlamVjdChlKX19X2hhbmRsZUV2ZW50KGUsdCl7aWYoIXRoaXMuX3JlcXVlc3RIYW5kbGVyKXRocm93IG5ldyBFcnJvcigiTWlzc2luZyByZXF1ZXN0SGFuZGxlciIpO2lmKGhlKGUpKXtjb25zdCBuPXRoaXMuX3JlcXVlc3RIYW5kbGVyW2VdLmNhbGwodGhpcy5fcmVxdWVzdEhhbmRsZXIsdCk7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIG4pdGhyb3cgbmV3IEVycm9yKGBNaXNzaW5nIGR5bmFtaWMgZXZlbnQgJHtlfSBvbiByZXF1ZXN0IGhhbmRsZXIuYCk7cmV0dXJuIG59aWYodWUoZSkpe2NvbnN0IHQ9dGhpcy5fcmVxdWVzdEhhbmRsZXJbZV07aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQpdGhyb3cgbmV3IEVycm9yKGBNaXNzaW5nIGV2ZW50ICR7ZX0gb24gcmVxdWVzdCBoYW5kbGVyLmApO3JldHVybiB0fXRocm93IG5ldyBFcnJvcihgTWFsZm9ybWVkIGV2ZW50IG5hbWUgJHtlfWApfWluaXRpYWxpemUoZSx0LG4scil7dGhpcy5fcHJvdG9jb2wuc2V0V29ya2VySWQoZSk7Y29uc3QgaT1mdW5jdGlvbihlLHQsbil7Y29uc3Qgcj1lPT5mdW5jdGlvbigpe2NvbnN0IG49QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDApO3JldHVybiB0KGUsbil9LGk9ZT0+ZnVuY3Rpb24odCl7cmV0dXJuIG4oZSx0KX0scz17fTtmb3IoY29uc3QgdCBvZiBlKWhlKHQpP3NbdF09aSh0KTp1ZSh0KT9zW3RdPW4odCx2b2lkIDApOnNbdF09cih0KTtyZXR1cm4gc30ociwoKGUsdCk9PnRoaXMuX3Byb3RvY29sLnNlbmRNZXNzYWdlKGUsdCkpLCgoZSx0KT0+dGhpcy5fcHJvdG9jb2wubGlzdGVuKGUsdCkpKTtyZXR1cm4gdGhpcy5fcmVxdWVzdEhhbmRsZXJGYWN0b3J5Pyh0aGlzLl9yZXF1ZXN0SGFuZGxlcj10aGlzLl9yZXF1ZXN0SGFuZGxlckZhY3RvcnkoaSksUHJvbWlzZS5yZXNvbHZlKEcodGhpcy5fcmVxdWVzdEhhbmRsZXIpKSk6KHQmJih2b2lkIDAhPT10LmJhc2VVcmwmJmRlbGV0ZSB0LmJhc2VVcmwsdm9pZCAwIT09dC5wYXRocyYmdm9pZCAwIT09dC5wYXRocy52cyYmZGVsZXRlIHQucGF0aHMudnMsdm9pZCAwIT09dHlwZW9mIHQudHJ1c3RlZFR5cGVzUG9saWN5JiZkZWxldGUgdC50cnVzdGVkVHlwZXNQb2xpY3ksdC5jYXRjaEVycm9yPSEwLGdsb2JhbFRoaXMucmVxdWlyZS5jb25maWcodCkpLG5ldyBQcm9taXNlKCgoZSx0KT0+eygwLGdsb2JhbFRoaXMucmVxdWlyZSkoW25dLChuPT57dGhpcy5fcmVxdWVzdEhhbmRsZXI9bi5jcmVhdGUoaSksdGhpcy5fcmVxdWVzdEhhbmRsZXI/ZShHKHRoaXMuX3JlcXVlc3RIYW5kbGVyKSk6dChuZXcgRXJyb3IoIk5vIFJlcXVlc3RIYW5kbGVyISIpKX0pLHQpfSkpKX19Y2xhc3MgZGV7Y29uc3RydWN0b3IoZSx0LG4scil7dGhpcy5vcmlnaW5hbFN0YXJ0PWUsdGhpcy5vcmlnaW5hbExlbmd0aD10LHRoaXMubW9kaWZpZWRTdGFydD1uLHRoaXMubW9kaWZpZWRMZW5ndGg9cn1nZXRPcmlnaW5hbEVuZCgpe3JldHVybiB0aGlzLm9yaWdpbmFsU3RhcnQrdGhpcy5vcmlnaW5hbExlbmd0aH1nZXRNb2RpZmllZEVuZCgpe3JldHVybiB0aGlzLm1vZGlmaWVkU3RhcnQrdGhpcy5tb2RpZmllZExlbmd0aH19ZnVuY3Rpb24gbWUoZSx0KXtyZXR1cm4odDw8NSktdCtlfDB9ZnVuY3Rpb24gZ2UoZSx0KXt0PW1lKDE0OTQxNyx0KTtmb3IobGV0IG49MCxyPWUubGVuZ3RoO248cjtuKyspdD1tZShlLmNoYXJDb2RlQXQobiksdCk7cmV0dXJuIHR9Y2xhc3MgZmV7Y29uc3RydWN0b3IoZSl7dGhpcy5zb3VyY2U9ZX1nZXRFbGVtZW50cygpe2NvbnN0IGU9dGhpcy5zb3VyY2UsdD1uZXcgSW50MzJBcnJheShlLmxlbmd0aCk7Zm9yKGxldCBuPTAscj1lLmxlbmd0aDtuPHI7bisrKXRbbl09ZS5jaGFyQ29kZUF0KG4pO3JldHVybiB0fX1mdW5jdGlvbiBwZShlLHQsbil7cmV0dXJuIG5ldyB5ZShuZXcgZmUoZSksbmV3IGZlKHQpKS5Db21wdXRlRGlmZihuKS5jaGFuZ2VzfWNsYXNzIGJle3N0YXRpYyBBc3NlcnQoZSx0KXtpZighZSl0aHJvdyBuZXcgRXJyb3IodCl9fWNsYXNzIF9le3N0YXRpYyBDb3B5KGUsdCxuLHIsaSl7Zm9yKGxldCBzPTA7czxpO3MrKyluW3Irc109ZVt0K3NdfXN0YXRpYyBDb3B5MihlLHQsbixyLGkpe2ZvcihsZXQgcz0wO3M8aTtzKyspbltyK3NdPWVbdCtzXX19Y2xhc3MgQ2V7Y29uc3RydWN0b3IoKXt0aGlzLm1fY2hhbmdlcz1bXSx0aGlzLm1fb3JpZ2luYWxTdGFydD0xMDczNzQxODI0LHRoaXMubV9tb2RpZmllZFN0YXJ0PTEwNzM3NDE4MjQsdGhpcy5tX29yaWdpbmFsQ291bnQ9MCx0aGlzLm1fbW9kaWZpZWRDb3VudD0wfU1hcmtOZXh0Q2hhbmdlKCl7KHRoaXMubV9vcmlnaW5hbENvdW50PjB8fHRoaXMubV9tb2RpZmllZENvdW50PjApJiZ0aGlzLm1fY2hhbmdlcy5wdXNoKG5ldyBkZSh0aGlzLm1fb3JpZ2luYWxTdGFydCx0aGlzLm1fb3JpZ2luYWxDb3VudCx0aGlzLm1fbW9kaWZpZWRTdGFydCx0aGlzLm1fbW9kaWZpZWRDb3VudCkpLHRoaXMubV9vcmlnaW5hbENvdW50PTAsdGhpcy5tX21vZGlmaWVkQ291bnQ9MCx0aGlzLm1fb3JpZ2luYWxTdGFydD0xMDczNzQxODI0LHRoaXMubV9tb2RpZmllZFN0YXJ0PTEwNzM3NDE4MjR9QWRkT3JpZ2luYWxFbGVtZW50KGUsdCl7dGhpcy5tX29yaWdpbmFsU3RhcnQ9TWF0aC5taW4odGhpcy5tX29yaWdpbmFsU3RhcnQsZSksdGhpcy5tX21vZGlmaWVkU3RhcnQ9TWF0aC5taW4odGhpcy5tX21vZGlmaWVkU3RhcnQsdCksdGhpcy5tX29yaWdpbmFsQ291bnQrK31BZGRNb2RpZmllZEVsZW1lbnQoZSx0KXt0aGlzLm1fb3JpZ2luYWxTdGFydD1NYXRoLm1pbih0aGlzLm1fb3JpZ2luYWxTdGFydCxlKSx0aGlzLm1fbW9kaWZpZWRTdGFydD1NYXRoLm1pbih0aGlzLm1fbW9kaWZpZWRTdGFydCx0KSx0aGlzLm1fbW9kaWZpZWRDb3VudCsrfWdldENoYW5nZXMoKXtyZXR1cm4odGhpcy5tX29yaWdpbmFsQ291bnQ+MHx8dGhpcy5tX21vZGlmaWVkQ291bnQ+MCkmJnRoaXMuTWFya05leHRDaGFuZ2UoKSx0aGlzLm1fY2hhbmdlc31nZXRSZXZlcnNlQ2hhbmdlcygpe3JldHVybih0aGlzLm1fb3JpZ2luYWxDb3VudD4wfHx0aGlzLm1fbW9kaWZpZWRDb3VudD4wKSYmdGhpcy5NYXJrTmV4dENoYW5nZSgpLHRoaXMubV9jaGFuZ2VzLnJldmVyc2UoKSx0aGlzLm1fY2hhbmdlc319Y2xhc3MgeWV7Y29uc3RydWN0b3IoZSx0LG49bnVsbCl7dGhpcy5Db250aW51ZVByb2Nlc3NpbmdQcmVkaWNhdGU9bix0aGlzLl9vcmlnaW5hbFNlcXVlbmNlPWUsdGhpcy5fbW9kaWZpZWRTZXF1ZW5jZT10O2NvbnN0W3IsaSxzXT15ZS5fZ2V0RWxlbWVudHMoZSksW28sYSxsXT15ZS5fZ2V0RWxlbWVudHModCk7dGhpcy5faGFzU3RyaW5ncz1zJiZsLHRoaXMuX29yaWdpbmFsU3RyaW5nRWxlbWVudHM9cix0aGlzLl9vcmlnaW5hbEVsZW1lbnRzT3JIYXNoPWksdGhpcy5fbW9kaWZpZWRTdHJpbmdFbGVtZW50cz1vLHRoaXMuX21vZGlmaWVkRWxlbWVudHNPckhhc2g9YSx0aGlzLm1fZm9yd2FyZEhpc3Rvcnk9W10sdGhpcy5tX3JldmVyc2VIaXN0b3J5PVtdfXN0YXRpYyBfaXNTdHJpbmdBcnJheShlKXtyZXR1cm4gZS5sZW5ndGg+MCYmInN0cmluZyI9PXR5cGVvZiBlWzBdfXN0YXRpYyBfZ2V0RWxlbWVudHMoZSl7Y29uc3QgdD1lLmdldEVsZW1lbnRzKCk7aWYoeWUuX2lzU3RyaW5nQXJyYXkodCkpe2NvbnN0IGU9bmV3IEludDMyQXJyYXkodC5sZW5ndGgpO2ZvcihsZXQgbj0wLHI9dC5sZW5ndGg7bjxyO24rKyllW25dPWdlKHRbbl0sMCk7cmV0dXJuW3QsZSwhMF19cmV0dXJuIHQgaW5zdGFuY2VvZiBJbnQzMkFycmF5P1tbXSx0LCExXTpbW10sbmV3IEludDMyQXJyYXkodCksITFdfUVsZW1lbnRzQXJlRXF1YWwoZSx0KXtyZXR1cm4gdGhpcy5fb3JpZ2luYWxFbGVtZW50c09ySGFzaFtlXT09PXRoaXMuX21vZGlmaWVkRWxlbWVudHNPckhhc2hbdF0mJighdGhpcy5faGFzU3RyaW5nc3x8dGhpcy5fb3JpZ2luYWxTdHJpbmdFbGVtZW50c1tlXT09PXRoaXMuX21vZGlmaWVkU3RyaW5nRWxlbWVudHNbdF0pfUVsZW1lbnRzQXJlU3RyaWN0RXF1YWwoZSx0KXtpZighdGhpcy5FbGVtZW50c0FyZUVxdWFsKGUsdCkpcmV0dXJuITE7cmV0dXJuIHllLl9nZXRTdHJpY3RFbGVtZW50KHRoaXMuX29yaWdpbmFsU2VxdWVuY2UsZSk9PT15ZS5fZ2V0U3RyaWN0RWxlbWVudCh0aGlzLl9tb2RpZmllZFNlcXVlbmNlLHQpfXN0YXRpYyBfZ2V0U3RyaWN0RWxlbWVudChlLHQpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBlLmdldFN0cmljdEVsZW1lbnQ/ZS5nZXRTdHJpY3RFbGVtZW50KHQpOm51bGx9T3JpZ2luYWxFbGVtZW50c0FyZUVxdWFsKGUsdCl7cmV0dXJuIHRoaXMuX29yaWdpbmFsRWxlbWVudHNPckhhc2hbZV09PT10aGlzLl9vcmlnaW5hbEVsZW1lbnRzT3JIYXNoW3RdJiYoIXRoaXMuX2hhc1N0cmluZ3N8fHRoaXMuX29yaWdpbmFsU3RyaW5nRWxlbWVudHNbZV09PT10aGlzLl9vcmlnaW5hbFN0cmluZ0VsZW1lbnRzW3RdKX1Nb2RpZmllZEVsZW1lbnRzQXJlRXF1YWwoZSx0KXtyZXR1cm4gdGhpcy5fbW9kaWZpZWRFbGVtZW50c09ySGFzaFtlXT09PXRoaXMuX21vZGlmaWVkRWxlbWVudHNPckhhc2hbdF0mJighdGhpcy5faGFzU3RyaW5nc3x8dGhpcy5fbW9kaWZpZWRTdHJpbmdFbGVtZW50c1tlXT09PXRoaXMuX21vZGlmaWVkU3RyaW5nRWxlbWVudHNbdF0pfUNvbXB1dGVEaWZmKGUpe3JldHVybiB0aGlzLl9Db21wdXRlRGlmZigwLHRoaXMuX29yaWdpbmFsRWxlbWVudHNPckhhc2gubGVuZ3RoLTEsMCx0aGlzLl9tb2RpZmllZEVsZW1lbnRzT3JIYXNoLmxlbmd0aC0xLGUpfV9Db21wdXRlRGlmZihlLHQsbixyLGkpe2NvbnN0IHM9WyExXTtsZXQgbz10aGlzLkNvbXB1dGVEaWZmUmVjdXJzaXZlKGUsdCxuLHIscyk7cmV0dXJuIGkmJihvPXRoaXMuUHJldHRpZnlDaGFuZ2VzKG8pKSx7cXVpdEVhcmx5OnNbMF0sY2hhbmdlczpvfX1Db21wdXRlRGlmZlJlY3Vyc2l2ZShlLHQsbixyLGkpe2ZvcihpWzBdPSExO2U8PXQmJm48PXImJnRoaXMuRWxlbWVudHNBcmVFcXVhbChlLG4pOyllKyssbisrO2Zvcig7dD49ZSYmcj49biYmdGhpcy5FbGVtZW50c0FyZUVxdWFsKHQscik7KXQtLSxyLS07aWYoZT50fHxuPnIpe2xldCBpO3JldHVybiBuPD1yPyhiZS5Bc3NlcnQoZT09PXQrMSwib3JpZ2luYWxTdGFydCBzaG91bGQgb25seSBiZSBvbmUgbW9yZSB0aGFuIG9yaWdpbmFsRW5kIiksaT1bbmV3IGRlKGUsMCxuLHItbisxKV0pOmU8PXQ/KGJlLkFzc2VydChuPT09cisxLCJtb2RpZmllZFN0YXJ0IHNob3VsZCBvbmx5IGJlIG9uZSBtb3JlIHRoYW4gbW9kaWZpZWRFbmQiKSxpPVtuZXcgZGUoZSx0LWUrMSxuLDApXSk6KGJlLkFzc2VydChlPT09dCsxLCJvcmlnaW5hbFN0YXJ0IHNob3VsZCBvbmx5IGJlIG9uZSBtb3JlIHRoYW4gb3JpZ2luYWxFbmQiKSxiZS5Bc3NlcnQobj09PXIrMSwibW9kaWZpZWRTdGFydCBzaG91bGQgb25seSBiZSBvbmUgbW9yZSB0aGFuIG1vZGlmaWVkRW5kIiksaT1bXSksaX1jb25zdCBzPVswXSxvPVswXSxhPXRoaXMuQ29tcHV0ZVJlY3Vyc2lvblBvaW50KGUsdCxuLHIscyxvLGkpLGw9c1swXSx1PW9bMF07aWYobnVsbCE9PWEpcmV0dXJuIGE7aWYoIWlbMF0pe2NvbnN0IHM9dGhpcy5Db21wdXRlRGlmZlJlY3Vyc2l2ZShlLGwsbix1LGkpO2xldCBvPVtdO3JldHVybiBvPWlbMF0/W25ldyBkZShsKzEsdC0obCsxKSsxLHUrMSxyLSh1KzEpKzEpXTp0aGlzLkNvbXB1dGVEaWZmUmVjdXJzaXZlKGwrMSx0LHUrMSxyLGkpLHRoaXMuQ29uY2F0ZW5hdGVDaGFuZ2VzKHMsbyl9cmV0dXJuW25ldyBkZShlLHQtZSsxLG4sci1uKzEpXX1XQUxLVFJBQ0UoZSx0LG4scixpLHMsbyxhLGwsdSxoLGMsZCxtLGcsZixwLGIpe2xldCBfPW51bGwsQz1udWxsLHk9bmV3IENlLHY9dCxMPW4sdz1kWzBdLWZbMF0tcixTPS0xMDczNzQxODI0LE49dGhpcy5tX2ZvcndhcmRIaXN0b3J5Lmxlbmd0aC0xO2Rve2NvbnN0IHQ9dytlO3Q9PT12fHx0PEwmJmxbdC0xXTxsW3QrMV0/KG09KGg9bFt0KzFdKS13LXIsaDxTJiZ5Lk1hcmtOZXh0Q2hhbmdlKCksUz1oLHkuQWRkTW9kaWZpZWRFbGVtZW50KGgrMSxtKSx3PXQrMS1lKToobT0oaD1sW3QtMV0rMSktdy1yLGg8UyYmeS5NYXJrTmV4dENoYW5nZSgpLFM9aC0xLHkuQWRkT3JpZ2luYWxFbGVtZW50KGgsbSsxKSx3PXQtMS1lKSxOPj0wJiYoZT0obD10aGlzLm1fZm9yd2FyZEhpc3RvcnlbTl0pWzBdLHY9MSxMPWwubGVuZ3RoLTEpfXdoaWxlKC0tTj49LTEpO2lmKF89eS5nZXRSZXZlcnNlQ2hhbmdlcygpLGJbMF0pe2xldCBlPWRbMF0rMSx0PWZbMF0rMTtpZihudWxsIT09XyYmXy5sZW5ndGg+MCl7Y29uc3Qgbj1fW18ubGVuZ3RoLTFdO2U9TWF0aC5tYXgoZSxuLmdldE9yaWdpbmFsRW5kKCkpLHQ9TWF0aC5tYXgodCxuLmdldE1vZGlmaWVkRW5kKCkpfUM9W25ldyBkZShlLGMtZSsxLHQsZy10KzEpXX1lbHNle3k9bmV3IENlLHY9cyxMPW8sdz1kWzBdLWZbMF0tYSxTPTEwNzM3NDE4MjQsTj1wP3RoaXMubV9yZXZlcnNlSGlzdG9yeS5sZW5ndGgtMTp0aGlzLm1fcmV2ZXJzZUhpc3RvcnkubGVuZ3RoLTI7ZG97Y29uc3QgZT13K2k7ZT09PXZ8fGU8TCYmdVtlLTFdPj11W2UrMV0/KG09KGg9dVtlKzFdLTEpLXctYSxoPlMmJnkuTWFya05leHRDaGFuZ2UoKSxTPWgrMSx5LkFkZE9yaWdpbmFsRWxlbWVudChoKzEsbSsxKSx3PWUrMS1pKToobT0oaD11W2UtMV0pLXctYSxoPlMmJnkuTWFya05leHRDaGFuZ2UoKSxTPWgseS5BZGRNb2RpZmllZEVsZW1lbnQoaCsxLG0rMSksdz1lLTEtaSksTj49MCYmKGk9KHU9dGhpcy5tX3JldmVyc2VIaXN0b3J5W05dKVswXSx2PTEsTD11Lmxlbmd0aC0xKX13aGlsZSgtLU4+PS0xKTtDPXkuZ2V0Q2hhbmdlcygpfXJldHVybiB0aGlzLkNvbmNhdGVuYXRlQ2hhbmdlcyhfLEMpfUNvbXB1dGVSZWN1cnNpb25Qb2ludChlLHQsbixyLGkscyxvKXtsZXQgYT0wLGw9MCx1PTAsaD0wLGM9MCxkPTA7ZS0tLG4tLSxpWzBdPTAsc1swXT0wLHRoaXMubV9mb3J3YXJkSGlzdG9yeT1bXSx0aGlzLm1fcmV2ZXJzZUhpc3Rvcnk9W107Y29uc3QgbT10LWUrKHItbiksZz1tKzEsZj1uZXcgSW50MzJBcnJheShnKSxwPW5ldyBJbnQzMkFycmF5KGcpLGI9ci1uLF89dC1lLEM9ZS1uLHk9dC1yLHY9KF8tYiklMj09MDtmW2JdPWUscFtfXT10LG9bMF09ITE7Zm9yKGxldCBMPTE7TDw9bS8yKzE7TCsrKXtsZXQgbT0wLHc9MDt1PXRoaXMuQ2xpcERpYWdvbmFsQm91bmQoYi1MLEwsYixnKSxoPXRoaXMuQ2xpcERpYWdvbmFsQm91bmQoYitMLEwsYixnKTtmb3IobGV0IGU9dTtlPD1oO2UrPTIpe2E9ZT09PXV8fGU8aCYmZltlLTFdPGZbZSsxXT9mW2UrMV06ZltlLTFdKzEsbD1hLShlLWIpLUM7Y29uc3Qgbj1hO2Zvcig7YTx0JiZsPHImJnRoaXMuRWxlbWVudHNBcmVFcXVhbChhKzEsbCsxKTspYSsrLGwrKztpZihmW2VdPWEsYStsPm0rdyYmKG09YSx3PWwpLCF2JiZNYXRoLmFicyhlLV8pPD1MLTEmJmE+PXBbZV0pcmV0dXJuIGlbMF09YSxzWzBdPWwsbjw9cFtlXSYmTDw9MTQ0OD90aGlzLldBTEtUUkFDRShiLHUsaCxDLF8sYyxkLHksZixwLGEsdCxpLGwscixzLHYsbyk6bnVsbH1jb25zdCBTPShtLWUrKHctbiktTCkvMjtpZihudWxsIT09dGhpcy5Db250aW51ZVByb2Nlc3NpbmdQcmVkaWNhdGUmJiF0aGlzLkNvbnRpbnVlUHJvY2Vzc2luZ1ByZWRpY2F0ZShtLFMpKXJldHVybiBvWzBdPSEwLGlbMF09bSxzWzBdPXcsUz4wJiZMPD0xNDQ4P3RoaXMuV0FMS1RSQUNFKGIsdSxoLEMsXyxjLGQseSxmLHAsYSx0LGksbCxyLHMsdixvKTooZSsrLG4rKyxbbmV3IGRlKGUsdC1lKzEsbixyLW4rMSldKTtjPXRoaXMuQ2xpcERpYWdvbmFsQm91bmQoXy1MLEwsXyxnKSxkPXRoaXMuQ2xpcERpYWdvbmFsQm91bmQoXytMLEwsXyxnKTtmb3IobGV0IG09YzttPD1kO20rPTIpe2E9bT09PWN8fG08ZCYmcFttLTFdPj1wW20rMV0/cFttKzFdLTE6cFttLTFdLGw9YS0obS1fKS15O2NvbnN0IGc9YTtmb3IoO2E+ZSYmbD5uJiZ0aGlzLkVsZW1lbnRzQXJlRXF1YWwoYSxsKTspYS0tLGwtLTtpZihwW21dPWEsdiYmTWF0aC5hYnMobS1iKTw9TCYmYTw9ZlttXSlyZXR1cm4gaVswXT1hLHNbMF09bCxnPj1mW21dJiZMPD0xNDQ4P3RoaXMuV0FMS1RSQUNFKGIsdSxoLEMsXyxjLGQseSxmLHAsYSx0LGksbCxyLHMsdixvKTpudWxsfWlmKEw8PTE0NDcpe2xldCBlPW5ldyBJbnQzMkFycmF5KGgtdSsyKTtlWzBdPWItdSsxLF9lLkNvcHkyKGYsdSxlLDEsaC11KzEpLHRoaXMubV9mb3J3YXJkSGlzdG9yeS5wdXNoKGUpLGU9bmV3IEludDMyQXJyYXkoZC1jKzIpLGVbMF09Xy1jKzEsX2UuQ29weTIocCxjLGUsMSxkLWMrMSksdGhpcy5tX3JldmVyc2VIaXN0b3J5LnB1c2goZSl9fXJldHVybiB0aGlzLldBTEtUUkFDRShiLHUsaCxDLF8sYyxkLHksZixwLGEsdCxpLGwscixzLHYsbyl9UHJldHRpZnlDaGFuZ2VzKGUpe2ZvcihsZXQgdD0wO3Q8ZS5sZW5ndGg7dCsrKXtjb25zdCBuPWVbdF0scj10PGUubGVuZ3RoLTE/ZVt0KzFdLm9yaWdpbmFsU3RhcnQ6dGhpcy5fb3JpZ2luYWxFbGVtZW50c09ySGFzaC5sZW5ndGgsaT10PGUubGVuZ3RoLTE/ZVt0KzFdLm1vZGlmaWVkU3RhcnQ6dGhpcy5fbW9kaWZpZWRFbGVtZW50c09ySGFzaC5sZW5ndGgscz1uLm9yaWdpbmFsTGVuZ3RoPjAsbz1uLm1vZGlmaWVkTGVuZ3RoPjA7Zm9yKDtuLm9yaWdpbmFsU3RhcnQrbi5vcmlnaW5hbExlbmd0aDxyJiZuLm1vZGlmaWVkU3RhcnQrbi5tb2RpZmllZExlbmd0aDxpJiYoIXN8fHRoaXMuT3JpZ2luYWxFbGVtZW50c0FyZUVxdWFsKG4ub3JpZ2luYWxTdGFydCxuLm9yaWdpbmFsU3RhcnQrbi5vcmlnaW5hbExlbmd0aCkpJiYoIW98fHRoaXMuTW9kaWZpZWRFbGVtZW50c0FyZUVxdWFsKG4ubW9kaWZpZWRTdGFydCxuLm1vZGlmaWVkU3RhcnQrbi5tb2RpZmllZExlbmd0aCkpOyl7Y29uc3QgZT10aGlzLkVsZW1lbnRzQXJlU3RyaWN0RXF1YWwobi5vcmlnaW5hbFN0YXJ0LG4ubW9kaWZpZWRTdGFydCk7aWYodGhpcy5FbGVtZW50c0FyZVN0cmljdEVxdWFsKG4ub3JpZ2luYWxTdGFydCtuLm9yaWdpbmFsTGVuZ3RoLG4ubW9kaWZpZWRTdGFydCtuLm1vZGlmaWVkTGVuZ3RoKSYmIWUpYnJlYWs7bi5vcmlnaW5hbFN0YXJ0Kyssbi5tb2RpZmllZFN0YXJ0Kyt9Y29uc3QgYT1bbnVsbF07dDxlLmxlbmd0aC0xJiZ0aGlzLkNoYW5nZXNPdmVybGFwKGVbdF0sZVt0KzFdLGEpJiYoZVt0XT1hWzBdLGUuc3BsaWNlKHQrMSwxKSx0LS0pfWZvcihsZXQgdD1lLmxlbmd0aC0xO3Q+PTA7dC0tKXtjb25zdCBuPWVbdF07bGV0IHI9MCxpPTA7aWYodD4wKXtjb25zdCBuPWVbdC0xXTtyPW4ub3JpZ2luYWxTdGFydCtuLm9yaWdpbmFsTGVuZ3RoLGk9bi5tb2RpZmllZFN0YXJ0K24ubW9kaWZpZWRMZW5ndGh9Y29uc3Qgcz1uLm9yaWdpbmFsTGVuZ3RoPjAsbz1uLm1vZGlmaWVkTGVuZ3RoPjA7bGV0IGE9MCxsPXRoaXMuX2JvdW5kYXJ5U2NvcmUobi5vcmlnaW5hbFN0YXJ0LG4ub3JpZ2luYWxMZW5ndGgsbi5tb2RpZmllZFN0YXJ0LG4ubW9kaWZpZWRMZW5ndGgpO2ZvcihsZXQgZT0xOztlKyspe2NvbnN0IHQ9bi5vcmlnaW5hbFN0YXJ0LWUsdT1uLm1vZGlmaWVkU3RhcnQtZTtpZih0PHJ8fHU8aSlicmVhaztpZihzJiYhdGhpcy5PcmlnaW5hbEVsZW1lbnRzQXJlRXF1YWwodCx0K24ub3JpZ2luYWxMZW5ndGgpKWJyZWFrO2lmKG8mJiF0aGlzLk1vZGlmaWVkRWxlbWVudHNBcmVFcXVhbCh1LHUrbi5tb2RpZmllZExlbmd0aCkpYnJlYWs7Y29uc3QgaD0odD09PXImJnU9PT1pPzU6MCkrdGhpcy5fYm91bmRhcnlTY29yZSh0LG4ub3JpZ2luYWxMZW5ndGgsdSxuLm1vZGlmaWVkTGVuZ3RoKTtoPmwmJihsPWgsYT1lKX1uLm9yaWdpbmFsU3RhcnQtPWEsbi5tb2RpZmllZFN0YXJ0LT1hO2NvbnN0IHU9W251bGxdO3Q+MCYmdGhpcy5DaGFuZ2VzT3ZlcmxhcChlW3QtMV0sZVt0XSx1KSYmKGVbdC0xXT11WzBdLGUuc3BsaWNlKHQsMSksdCsrKX1pZih0aGlzLl9oYXNTdHJpbmdzKWZvcihsZXQgdD0xLG49ZS5sZW5ndGg7dDxuO3QrKyl7Y29uc3Qgbj1lW3QtMV0scj1lW3RdLGk9ci5vcmlnaW5hbFN0YXJ0LW4ub3JpZ2luYWxTdGFydC1uLm9yaWdpbmFsTGVuZ3RoLHM9bi5vcmlnaW5hbFN0YXJ0LG89ci5vcmlnaW5hbFN0YXJ0K3Iub3JpZ2luYWxMZW5ndGgsYT1vLXMsbD1uLm1vZGlmaWVkU3RhcnQsdT1yLm1vZGlmaWVkU3RhcnQrci5tb2RpZmllZExlbmd0aCxoPXUtbDtpZihpPDUmJmE8MjAmJmg8MjApe2NvbnN0IGU9dGhpcy5fZmluZEJldHRlckNvbnRpZ3VvdXNTZXF1ZW5jZShzLGEsbCxoLGkpO2lmKGUpe2NvbnN0W3Qsc109ZTt0PT09bi5vcmlnaW5hbFN0YXJ0K24ub3JpZ2luYWxMZW5ndGgmJnM9PT1uLm1vZGlmaWVkU3RhcnQrbi5tb2RpZmllZExlbmd0aHx8KG4ub3JpZ2luYWxMZW5ndGg9dC1uLm9yaWdpbmFsU3RhcnQsbi5tb2RpZmllZExlbmd0aD1zLW4ubW9kaWZpZWRTdGFydCxyLm9yaWdpbmFsU3RhcnQ9dCtpLHIubW9kaWZpZWRTdGFydD1zK2ksci5vcmlnaW5hbExlbmd0aD1vLXIub3JpZ2luYWxTdGFydCxyLm1vZGlmaWVkTGVuZ3RoPXUtci5tb2RpZmllZFN0YXJ0KX19fXJldHVybiBlfV9maW5kQmV0dGVyQ29udGlndW91c1NlcXVlbmNlKGUsdCxuLHIsaSl7aWYodDxpfHxyPGkpcmV0dXJuIG51bGw7Y29uc3Qgcz1lK3QtaSsxLG89bityLWkrMTtsZXQgYT0wLGw9MCx1PTA7Zm9yKGxldCB0PWU7dDxzO3QrKylmb3IobGV0IGU9bjtlPG87ZSsrKXtjb25zdCBuPXRoaXMuX2NvbnRpZ3VvdXNTZXF1ZW5jZVNjb3JlKHQsZSxpKTtuPjAmJm4+YSYmKGE9bixsPXQsdT1lKX1yZXR1cm4gYT4wP1tsLHVdOm51bGx9X2NvbnRpZ3VvdXNTZXF1ZW5jZVNjb3JlKGUsdCxuKXtsZXQgcj0wO2ZvcihsZXQgaT0wO2k8bjtpKyspe2lmKCF0aGlzLkVsZW1lbnRzQXJlRXF1YWwoZStpLHQraSkpcmV0dXJuIDA7cis9dGhpcy5fb3JpZ2luYWxTdHJpbmdFbGVtZW50c1tlK2ldLmxlbmd0aH1yZXR1cm4gcn1fT3JpZ2luYWxJc0JvdW5kYXJ5KGUpe3JldHVybiBlPD0wfHxlPj10aGlzLl9vcmlnaW5hbEVsZW1lbnRzT3JIYXNoLmxlbmd0aC0xfHx0aGlzLl9oYXNTdHJpbmdzJiYvXlxzKiQvLnRlc3QodGhpcy5fb3JpZ2luYWxTdHJpbmdFbGVtZW50c1tlXSl9X09yaWdpbmFsUmVnaW9uSXNCb3VuZGFyeShlLHQpe2lmKHRoaXMuX09yaWdpbmFsSXNCb3VuZGFyeShlKXx8dGhpcy5fT3JpZ2luYWxJc0JvdW5kYXJ5KGUtMSkpcmV0dXJuITA7aWYodD4wKXtjb25zdCBuPWUrdDtpZih0aGlzLl9PcmlnaW5hbElzQm91bmRhcnkobi0xKXx8dGhpcy5fT3JpZ2luYWxJc0JvdW5kYXJ5KG4pKXJldHVybiEwfXJldHVybiExfV9Nb2RpZmllZElzQm91bmRhcnkoZSl7cmV0dXJuIGU8PTB8fGU+PXRoaXMuX21vZGlmaWVkRWxlbWVudHNPckhhc2gubGVuZ3RoLTF8fHRoaXMuX2hhc1N0cmluZ3MmJi9eXHMqJC8udGVzdCh0aGlzLl9tb2RpZmllZFN0cmluZ0VsZW1lbnRzW2VdKX1fTW9kaWZpZWRSZWdpb25Jc0JvdW5kYXJ5KGUsdCl7aWYodGhpcy5fTW9kaWZpZWRJc0JvdW5kYXJ5KGUpfHx0aGlzLl9Nb2RpZmllZElzQm91bmRhcnkoZS0xKSlyZXR1cm4hMDtpZih0PjApe2NvbnN0IG49ZSt0O2lmKHRoaXMuX01vZGlmaWVkSXNCb3VuZGFyeShuLTEpfHx0aGlzLl9Nb2RpZmllZElzQm91bmRhcnkobikpcmV0dXJuITB9cmV0dXJuITF9X2JvdW5kYXJ5U2NvcmUoZSx0LG4scil7cmV0dXJuKHRoaXMuX09yaWdpbmFsUmVnaW9uSXNCb3VuZGFyeShlLHQpPzE6MCkrKHRoaXMuX01vZGlmaWVkUmVnaW9uSXNCb3VuZGFyeShuLHIpPzE6MCl9Q29uY2F0ZW5hdGVDaGFuZ2VzKGUsdCl7Y29uc3Qgbj1bXTtpZigwPT09ZS5sZW5ndGh8fDA9PT10Lmxlbmd0aClyZXR1cm4gdC5sZW5ndGg+MD90OmU7aWYodGhpcy5DaGFuZ2VzT3ZlcmxhcChlW2UubGVuZ3RoLTFdLHRbMF0sbikpe2NvbnN0IHI9bmV3IEFycmF5KGUubGVuZ3RoK3QubGVuZ3RoLTEpO3JldHVybiBfZS5Db3B5KGUsMCxyLDAsZS5sZW5ndGgtMSkscltlLmxlbmd0aC0xXT1uWzBdLF9lLkNvcHkodCwxLHIsZS5sZW5ndGgsdC5sZW5ndGgtMSkscn17Y29uc3Qgbj1uZXcgQXJyYXkoZS5sZW5ndGgrdC5sZW5ndGgpO3JldHVybiBfZS5Db3B5KGUsMCxuLDAsZS5sZW5ndGgpLF9lLkNvcHkodCwwLG4sZS5sZW5ndGgsdC5sZW5ndGgpLG59fUNoYW5nZXNPdmVybGFwKGUsdCxuKXtpZihiZS5Bc3NlcnQoZS5vcmlnaW5hbFN0YXJ0PD10Lm9yaWdpbmFsU3RhcnQsIkxlZnQgY2hhbmdlIGlzIG5vdCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gcmlnaHQgY2hhbmdlIiksYmUuQXNzZXJ0KGUubW9kaWZpZWRTdGFydDw9dC5tb2RpZmllZFN0YXJ0LCJMZWZ0IGNoYW5nZSBpcyBub3QgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHJpZ2h0IGNoYW5nZSIpLGUub3JpZ2luYWxTdGFydCtlLm9yaWdpbmFsTGVuZ3RoPj10Lm9yaWdpbmFsU3RhcnR8fGUubW9kaWZpZWRTdGFydCtlLm1vZGlmaWVkTGVuZ3RoPj10Lm1vZGlmaWVkU3RhcnQpe2NvbnN0IHI9ZS5vcmlnaW5hbFN0YXJ0O2xldCBpPWUub3JpZ2luYWxMZW5ndGg7Y29uc3Qgcz1lLm1vZGlmaWVkU3RhcnQ7bGV0IG89ZS5tb2RpZmllZExlbmd0aDtyZXR1cm4gZS5vcmlnaW5hbFN0YXJ0K2Uub3JpZ2luYWxMZW5ndGg+PXQub3JpZ2luYWxTdGFydCYmKGk9dC5vcmlnaW5hbFN0YXJ0K3Qub3JpZ2luYWxMZW5ndGgtZS5vcmlnaW5hbFN0YXJ0KSxlLm1vZGlmaWVkU3RhcnQrZS5tb2RpZmllZExlbmd0aD49dC5tb2RpZmllZFN0YXJ0JiYobz10Lm1vZGlmaWVkU3RhcnQrdC5tb2RpZmllZExlbmd0aC1lLm1vZGlmaWVkU3RhcnQpLG5bMF09bmV3IGRlKHIsaSxzLG8pLCEwfXJldHVybiBuWzBdPW51bGwsITF9Q2xpcERpYWdvbmFsQm91bmQoZSx0LG4scil7aWYoZT49MCYmZTxyKXJldHVybiBlO2NvbnN0IGk9dCUyPT0wO2lmKGU8MCl7cmV0dXJuIGk9PT0obiUyPT0wKT8wOjF9cmV0dXJuIGk9PT0oKHItbi0xKSUyPT0wKT9yLTE6ci0yfX1sZXQgdmU7aWYodm9pZCAwIT09eC52c2NvZGUmJnZvaWQgMCE9PXgudnNjb2RlLnByb2Nlc3Mpe2NvbnN0IGU9eC52c2NvZGUucHJvY2Vzczt2ZT17Z2V0IHBsYXRmb3JtKCl7cmV0dXJuIGUucGxhdGZvcm19LGdldCBhcmNoKCl7cmV0dXJuIGUuYXJjaH0sZ2V0IGVudigpe3JldHVybiBlLmVudn0sY3dkOigpPT5lLmN3ZCgpfX1lbHNlIHZlPSJ1bmRlZmluZWQiIT10eXBlb2YgcHJvY2Vzcz97Z2V0IHBsYXRmb3JtKCl7cmV0dXJuIHByb2Nlc3MucGxhdGZvcm19LGdldCBhcmNoKCl7cmV0dXJuIHByb2Nlc3MuYXJjaH0sZ2V0IGVudigpe3JldHVybiBwcm9jZXNzLmVudn0sY3dkOigpPT5wcm9jZXNzLmVudi5WU0NPREVfQ1dEfHxwcm9jZXNzLmN3ZCgpfTp7Z2V0IHBsYXRmb3JtKCl7cmV0dXJuIE8/IndpbjMyIjpUPyJkYXJ3aW4iOiJsaW51eCJ9LGdldCBhcmNoKCl7fSxnZXQgZW52KCl7cmV0dXJue319LGN3ZDooKT0+Ii8ifTtjb25zdCBMZT12ZS5jd2Qsd2U9dmUuZW52LFNlPXZlLnBsYXRmb3JtLE5lPTQ2LEVlPTQ3LEFlPTkyLFJlPTU4O2NsYXNzIHhlIGV4dGVuZHMgRXJyb3J7Y29uc3RydWN0b3IoZSx0LG4pe2xldCByOyJzdHJpbmciPT10eXBlb2YgdCYmMD09PXQuaW5kZXhPZigibm90ICIpPyhyPSJtdXN0IG5vdCBiZSIsdD10LnJlcGxhY2UoL15ub3QgLywiIikpOnI9Im11c3QgYmUiO2NvbnN0IGk9LTEhPT1lLmluZGV4T2YoIi4iKT8icHJvcGVydHkiOiJhcmd1bWVudCI7bGV0IHM9YFRoZSAiJHtlfSIgJHtpfSAke3J9IG9mIHR5cGUgJHt0fWA7cys9Ii4gUmVjZWl2ZWQgdHlwZSAiK3R5cGVvZiBuLHN1cGVyKHMpLHRoaXMuY29kZT0iRVJSX0lOVkFMSURfQVJHX1RZUEUifX1mdW5jdGlvbiBNZShlLHQpe2lmKCJzdHJpbmciIT10eXBlb2YgZSl0aHJvdyBuZXcgeGUodCwic3RyaW5nIixlKX1jb25zdCBrZT0id2luMzIiPT09U2U7ZnVuY3Rpb24gT2UoZSl7cmV0dXJuIGU9PT1FZXx8ZT09PUFlfWZ1bmN0aW9uIFRlKGUpe3JldHVybiBlPT09RWV9ZnVuY3Rpb24gSWUoZSl7cmV0dXJuIGU+PTY1JiZlPD05MHx8ZT49OTcmJmU8PTEyMn1mdW5jdGlvbiBQZShlLHQsbixyKXtsZXQgaT0iIixzPTAsbz0tMSxhPTAsbD0wO2ZvcihsZXQgdT0wO3U8PWUubGVuZ3RoOysrdSl7aWYodTxlLmxlbmd0aClsPWUuY2hhckNvZGVBdCh1KTtlbHNle2lmKHIobCkpYnJlYWs7bD1FZX1pZihyKGwpKXtpZihvPT09dS0xfHwxPT09YSk7ZWxzZSBpZigyPT09YSl7aWYoaS5sZW5ndGg8Mnx8MiE9PXN8fGkuY2hhckNvZGVBdChpLmxlbmd0aC0xKSE9PU5lfHxpLmNoYXJDb2RlQXQoaS5sZW5ndGgtMikhPT1OZSl7aWYoaS5sZW5ndGg+Mil7Y29uc3QgZT1pLmxhc3RJbmRleE9mKG4pOy0xPT09ZT8oaT0iIixzPTApOihpPWkuc2xpY2UoMCxlKSxzPWkubGVuZ3RoLTEtaS5sYXN0SW5kZXhPZihuKSksbz11LGE9MDtjb250aW51ZX1pZigwIT09aS5sZW5ndGgpe2k9IiIscz0wLG89dSxhPTA7Y29udGludWV9fXQmJihpKz1pLmxlbmd0aD4wP2Ake259Li5gOiIuLiIscz0yKX1lbHNlIGkubGVuZ3RoPjA/aSs9YCR7bn0ke2Uuc2xpY2UobysxLHUpfWA6aT1lLnNsaWNlKG8rMSx1KSxzPXUtby0xO289dSxhPTB9ZWxzZSBsPT09TmUmJi0xIT09YT8rK2E6YT0tMX1yZXR1cm4gaX1mdW5jdGlvbiBEZShlLHQpeyFmdW5jdGlvbihlLHQpe2lmKG51bGw9PT1lfHwib2JqZWN0IiE9dHlwZW9mIGUpdGhyb3cgbmV3IHhlKHQsIk9iamVjdCIsZSl9KHQsInBhdGhPYmplY3QiKTtjb25zdCBuPXQuZGlyfHx0LnJvb3Qscj10LmJhc2V8fGAke3QubmFtZXx8IiJ9JHt0LmV4dHx8IiJ9YDtyZXR1cm4gbj9uPT09dC5yb290P2Ake259JHtyfWA6YCR7bn0ke2V9JHtyfWA6cn1jb25zdCBGZT17cmVzb2x2ZSguLi5lKXtsZXQgdD0iIixuPSIiLHI9ITE7Zm9yKGxldCBpPWUubGVuZ3RoLTE7aT49LTE7aS0tKXtsZXQgcztpZihpPj0wKXtpZihzPWVbaV0sTWUocywicGF0aCIpLDA9PT1zLmxlbmd0aCljb250aW51ZX1lbHNlIDA9PT10Lmxlbmd0aD9zPUxlKCk6KHM9d2VbYD0ke3R9YF18fExlKCksKHZvaWQgMD09PXN8fHMuc2xpY2UoMCwyKS50b0xvd2VyQ2FzZSgpIT09dC50b0xvd2VyQ2FzZSgpJiZzLmNoYXJDb2RlQXQoMik9PT1BZSkmJihzPWAke3R9XFxgKSk7Y29uc3Qgbz1zLmxlbmd0aDtsZXQgYT0wLGw9IiIsdT0hMTtjb25zdCBoPXMuY2hhckNvZGVBdCgwKTtpZigxPT09bylPZShoKSYmKGE9MSx1PSEwKTtlbHNlIGlmKE9lKGgpKWlmKHU9ITAsT2Uocy5jaGFyQ29kZUF0KDEpKSl7bGV0IGU9Mix0PWU7Zm9yKDtlPG8mJiFPZShzLmNoYXJDb2RlQXQoZSkpOyllKys7aWYoZTxvJiZlIT09dCl7Y29uc3Qgbj1zLnNsaWNlKHQsZSk7Zm9yKHQ9ZTtlPG8mJk9lKHMuY2hhckNvZGVBdChlKSk7KWUrKztpZihlPG8mJmUhPT10KXtmb3IodD1lO2U8byYmIU9lKHMuY2hhckNvZGVBdChlKSk7KWUrKztlIT09byYmZT09PXR8fChsPWBcXFxcJHtufVxcJHtzLnNsaWNlKHQsZSl9YCxhPWUpfX19ZWxzZSBhPTE7ZWxzZSBJZShoKSYmcy5jaGFyQ29kZUF0KDEpPT09UmUmJihsPXMuc2xpY2UoMCwyKSxhPTIsbz4yJiZPZShzLmNoYXJDb2RlQXQoMikpJiYodT0hMCxhPTMpKTtpZihsLmxlbmd0aD4wKWlmKHQubGVuZ3RoPjApe2lmKGwudG9Mb3dlckNhc2UoKSE9PXQudG9Mb3dlckNhc2UoKSljb250aW51ZX1lbHNlIHQ9bDtpZihyKXtpZih0Lmxlbmd0aD4wKWJyZWFrfWVsc2UgaWYobj1gJHtzLnNsaWNlKGEpfVxcJHtufWAscj11LHUmJnQubGVuZ3RoPjApYnJlYWt9cmV0dXJuIG49UGUobiwhciwiXFwiLE9lKSxyP2Ake3R9XFwke259YDpgJHt0fSR7bn1gfHwiLiJ9LG5vcm1hbGl6ZShlKXtNZShlLCJwYXRoIik7Y29uc3QgdD1lLmxlbmd0aDtpZigwPT09dClyZXR1cm4iLiI7bGV0IG4scj0wLGk9ITE7Y29uc3Qgcz1lLmNoYXJDb2RlQXQoMCk7aWYoMT09PXQpcmV0dXJuIFRlKHMpPyJcXCI6ZTtpZihPZShzKSlpZihpPSEwLE9lKGUuY2hhckNvZGVBdCgxKSkpe2xldCBpPTIscz1pO2Zvcig7aTx0JiYhT2UoZS5jaGFyQ29kZUF0KGkpKTspaSsrO2lmKGk8dCYmaSE9PXMpe2NvbnN0IG89ZS5zbGljZShzLGkpO2ZvcihzPWk7aTx0JiZPZShlLmNoYXJDb2RlQXQoaSkpOylpKys7aWYoaTx0JiZpIT09cyl7Zm9yKHM9aTtpPHQmJiFPZShlLmNoYXJDb2RlQXQoaSkpOylpKys7aWYoaT09PXQpcmV0dXJuYFxcXFwke299XFwke2Uuc2xpY2Uocyl9XFxgO2khPT1zJiYobj1gXFxcXCR7b31cXCR7ZS5zbGljZShzLGkpfWAscj1pKX19fWVsc2Ugcj0xO2Vsc2UgSWUocykmJmUuY2hhckNvZGVBdCgxKT09PVJlJiYobj1lLnNsaWNlKDAsMikscj0yLHQ+MiYmT2UoZS5jaGFyQ29kZUF0KDIpKSYmKGk9ITAscj0zKSk7bGV0IG89cjx0P1BlKGUuc2xpY2UociksIWksIlxcIixPZSk6IiI7cmV0dXJuIDAhPT1vLmxlbmd0aHx8aXx8KG89Ii4iKSxvLmxlbmd0aD4wJiZPZShlLmNoYXJDb2RlQXQodC0xKSkmJihvKz0iXFwiKSx2b2lkIDA9PT1uP2k/YFxcJHtvfWA6bzppP2Ake259XFwke299YDpgJHtufSR7b31gfSxpc0Fic29sdXRlKGUpe01lKGUsInBhdGgiKTtjb25zdCB0PWUubGVuZ3RoO2lmKDA9PT10KXJldHVybiExO2NvbnN0IG49ZS5jaGFyQ29kZUF0KDApO3JldHVybiBPZShuKXx8dD4yJiZJZShuKSYmZS5jaGFyQ29kZUF0KDEpPT09UmUmJk9lKGUuY2hhckNvZGVBdCgyKSl9LGpvaW4oLi4uZSl7aWYoMD09PWUubGVuZ3RoKXJldHVybiIuIjtsZXQgdCxuO2ZvcihsZXQgcj0wO3I8ZS5sZW5ndGg7KytyKXtjb25zdCBpPWVbcl07TWUoaSwicGF0aCIpLGkubGVuZ3RoPjAmJih2b2lkIDA9PT10P3Q9bj1pOnQrPWBcXCR7aX1gKX1pZih2b2lkIDA9PT10KXJldHVybiIuIjtsZXQgcj0hMCxpPTA7aWYoInN0cmluZyI9PXR5cGVvZiBuJiZPZShuLmNoYXJDb2RlQXQoMCkpKXsrK2k7Y29uc3QgZT1uLmxlbmd0aDtlPjEmJk9lKG4uY2hhckNvZGVBdCgxKSkmJigrK2ksZT4yJiYoT2Uobi5jaGFyQ29kZUF0KDIpKT8rK2k6cj0hMSkpfWlmKHIpe2Zvcig7aTx0Lmxlbmd0aCYmT2UodC5jaGFyQ29kZUF0KGkpKTspaSsrO2k+PTImJih0PWBcXCR7dC5zbGljZShpKX1gKX1yZXR1cm4gRmUubm9ybWFsaXplKHQpfSxyZWxhdGl2ZShlLHQpe2lmKE1lKGUsImZyb20iKSxNZSh0LCJ0byIpLGU9PT10KXJldHVybiIiO2NvbnN0IG49RmUucmVzb2x2ZShlKSxyPUZlLnJlc29sdmUodCk7aWYobj09PXIpcmV0dXJuIiI7aWYoKGU9bi50b0xvd2VyQ2FzZSgpKT09PSh0PXIudG9Mb3dlckNhc2UoKSkpcmV0dXJuIiI7bGV0IGk9MDtmb3IoO2k8ZS5sZW5ndGgmJmUuY2hhckNvZGVBdChpKT09PUFlOylpKys7bGV0IHM9ZS5sZW5ndGg7Zm9yKDtzLTE+aSYmZS5jaGFyQ29kZUF0KHMtMSk9PT1BZTspcy0tO2NvbnN0IG89cy1pO2xldCBhPTA7Zm9yKDthPHQubGVuZ3RoJiZ0LmNoYXJDb2RlQXQoYSk9PT1BZTspYSsrO2xldCBsPXQubGVuZ3RoO2Zvcig7bC0xPmEmJnQuY2hhckNvZGVBdChsLTEpPT09QWU7KWwtLTtjb25zdCB1PWwtYSxoPW88dT9vOnU7bGV0IGM9LTEsZD0wO2Zvcig7ZDxoO2QrKyl7Y29uc3Qgbj1lLmNoYXJDb2RlQXQoaStkKTtpZihuIT09dC5jaGFyQ29kZUF0KGErZCkpYnJlYWs7bj09PUFlJiYoYz1kKX1pZihkIT09aCl7aWYoLTE9PT1jKXJldHVybiByfWVsc2V7aWYodT5oKXtpZih0LmNoYXJDb2RlQXQoYStkKT09PUFlKXJldHVybiByLnNsaWNlKGErZCsxKTtpZigyPT09ZClyZXR1cm4gci5zbGljZShhK2QpfW8+aCYmKGUuY2hhckNvZGVBdChpK2QpPT09QWU/Yz1kOjI9PT1kJiYoYz0zKSksLTE9PT1jJiYoYz0wKX1sZXQgbT0iIjtmb3IoZD1pK2MrMTtkPD1zOysrZClkIT09cyYmZS5jaGFyQ29kZUF0KGQpIT09QWV8fChtKz0wPT09bS5sZW5ndGg/Ii4uIjoiXFwuLiIpO3JldHVybiBhKz1jLG0ubGVuZ3RoPjA/YCR7bX0ke3Iuc2xpY2UoYSxsKX1gOihyLmNoYXJDb2RlQXQoYSk9PT1BZSYmKythLHIuc2xpY2UoYSxsKSl9LHRvTmFtZXNwYWNlZFBhdGgoZSl7aWYoInN0cmluZyIhPXR5cGVvZiBlfHwwPT09ZS5sZW5ndGgpcmV0dXJuIGU7Y29uc3QgdD1GZS5yZXNvbHZlKGUpO2lmKHQubGVuZ3RoPD0yKXJldHVybiBlO2lmKHQuY2hhckNvZGVBdCgwKT09PUFlKXtpZih0LmNoYXJDb2RlQXQoMSk9PT1BZSl7Y29uc3QgZT10LmNoYXJDb2RlQXQoMik7aWYoNjMhPT1lJiZlIT09TmUpcmV0dXJuYFxcXFw/XFxVTkNcXCR7dC5zbGljZSgyKX1gfX1lbHNlIGlmKEllKHQuY2hhckNvZGVBdCgwKSkmJnQuY2hhckNvZGVBdCgxKT09PVJlJiZ0LmNoYXJDb2RlQXQoMik9PT1BZSlyZXR1cm5gXFxcXD9cXCR7dH1gO3JldHVybiBlfSxkaXJuYW1lKGUpe01lKGUsInBhdGgiKTtjb25zdCB0PWUubGVuZ3RoO2lmKDA9PT10KXJldHVybiIuIjtsZXQgbj0tMSxyPTA7Y29uc3QgaT1lLmNoYXJDb2RlQXQoMCk7aWYoMT09PXQpcmV0dXJuIE9lKGkpP2U6Ii4iO2lmKE9lKGkpKXtpZihuPXI9MSxPZShlLmNoYXJDb2RlQXQoMSkpKXtsZXQgaT0yLHM9aTtmb3IoO2k8dCYmIU9lKGUuY2hhckNvZGVBdChpKSk7KWkrKztpZihpPHQmJmkhPT1zKXtmb3Iocz1pO2k8dCYmT2UoZS5jaGFyQ29kZUF0KGkpKTspaSsrO2lmKGk8dCYmaSE9PXMpe2ZvcihzPWk7aTx0JiYhT2UoZS5jaGFyQ29kZUF0KGkpKTspaSsrO2lmKGk9PT10KXJldHVybiBlO2khPT1zJiYobj1yPWkrMSl9fX19ZWxzZSBJZShpKSYmZS5jaGFyQ29kZUF0KDEpPT09UmUmJihuPXQ+MiYmT2UoZS5jaGFyQ29kZUF0KDIpKT8zOjIscj1uKTtsZXQgcz0tMSxvPSEwO2ZvcihsZXQgbj10LTE7bj49cjstLW4paWYoT2UoZS5jaGFyQ29kZUF0KG4pKSl7aWYoIW8pe3M9bjticmVha319ZWxzZSBvPSExO2lmKC0xPT09cyl7aWYoLTE9PT1uKXJldHVybiIuIjtzPW59cmV0dXJuIGUuc2xpY2UoMCxzKX0sYmFzZW5hbWUoZSx0KXt2b2lkIDAhPT10JiZNZSh0LCJleHQiKSxNZShlLCJwYXRoIik7bGV0IG4scj0wLGk9LTEscz0hMDtpZihlLmxlbmd0aD49MiYmSWUoZS5jaGFyQ29kZUF0KDApKSYmZS5jaGFyQ29kZUF0KDEpPT09UmUmJihyPTIpLHZvaWQgMCE9PXQmJnQubGVuZ3RoPjAmJnQubGVuZ3RoPD1lLmxlbmd0aCl7aWYodD09PWUpcmV0dXJuIiI7bGV0IG89dC5sZW5ndGgtMSxhPS0xO2ZvcihuPWUubGVuZ3RoLTE7bj49cjstLW4pe2NvbnN0IGw9ZS5jaGFyQ29kZUF0KG4pO2lmKE9lKGwpKXtpZighcyl7cj1uKzE7YnJlYWt9fWVsc2UtMT09PWEmJihzPSExLGE9bisxKSxvPj0wJiYobD09PXQuY2hhckNvZGVBdChvKT8tMT09LS1vJiYoaT1uKToobz0tMSxpPWEpKX1yZXR1cm4gcj09PWk/aT1hOi0xPT09aSYmKGk9ZS5sZW5ndGgpLGUuc2xpY2UocixpKX1mb3Iobj1lLmxlbmd0aC0xO24+PXI7LS1uKWlmKE9lKGUuY2hhckNvZGVBdChuKSkpe2lmKCFzKXtyPW4rMTticmVha319ZWxzZS0xPT09aSYmKHM9ITEsaT1uKzEpO3JldHVybi0xPT09aT8iIjplLnNsaWNlKHIsaSl9LGV4dG5hbWUoZSl7TWUoZSwicGF0aCIpO2xldCB0PTAsbj0tMSxyPTAsaT0tMSxzPSEwLG89MDtlLmxlbmd0aD49MiYmZS5jaGFyQ29kZUF0KDEpPT09UmUmJkllKGUuY2hhckNvZGVBdCgwKSkmJih0PXI9Mik7Zm9yKGxldCBhPWUubGVuZ3RoLTE7YT49dDstLWEpe2NvbnN0IHQ9ZS5jaGFyQ29kZUF0KGEpO2lmKE9lKHQpKXtpZighcyl7cj1hKzE7YnJlYWt9fWVsc2UtMT09PWkmJihzPSExLGk9YSsxKSx0PT09TmU/LTE9PT1uP249YToxIT09byYmKG89MSk6LTEhPT1uJiYobz0tMSl9cmV0dXJuLTE9PT1ufHwtMT09PWl8fDA9PT1vfHwxPT09byYmbj09PWktMSYmbj09PXIrMT8iIjplLnNsaWNlKG4saSl9LGZvcm1hdDpEZS5iaW5kKG51bGwsIlxcIikscGFyc2UoZSl7TWUoZSwicGF0aCIpO2NvbnN0IHQ9e3Jvb3Q6IiIsZGlyOiIiLGJhc2U6IiIsZXh0OiIiLG5hbWU6IiJ9O2lmKDA9PT1lLmxlbmd0aClyZXR1cm4gdDtjb25zdCBuPWUubGVuZ3RoO2xldCByPTAsaT1lLmNoYXJDb2RlQXQoMCk7aWYoMT09PW4pcmV0dXJuIE9lKGkpPyh0LnJvb3Q9dC5kaXI9ZSx0KToodC5iYXNlPXQubmFtZT1lLHQpO2lmKE9lKGkpKXtpZihyPTEsT2UoZS5jaGFyQ29kZUF0KDEpKSl7bGV0IHQ9MixpPXQ7Zm9yKDt0PG4mJiFPZShlLmNoYXJDb2RlQXQodCkpOyl0Kys7aWYodDxuJiZ0IT09aSl7Zm9yKGk9dDt0PG4mJk9lKGUuY2hhckNvZGVBdCh0KSk7KXQrKztpZih0PG4mJnQhPT1pKXtmb3IoaT10O3Q8biYmIU9lKGUuY2hhckNvZGVBdCh0KSk7KXQrKzt0PT09bj9yPXQ6dCE9PWkmJihyPXQrMSl9fX19ZWxzZSBpZihJZShpKSYmZS5jaGFyQ29kZUF0KDEpPT09UmUpe2lmKG48PTIpcmV0dXJuIHQucm9vdD10LmRpcj1lLHQ7aWYocj0yLE9lKGUuY2hhckNvZGVBdCgyKSkpe2lmKDM9PT1uKXJldHVybiB0LnJvb3Q9dC5kaXI9ZSx0O3I9M319cj4wJiYodC5yb290PWUuc2xpY2UoMCxyKSk7bGV0IHM9LTEsbz1yLGE9LTEsbD0hMCx1PWUubGVuZ3RoLTEsaD0wO2Zvcig7dT49cjstLXUpaWYoaT1lLmNoYXJDb2RlQXQodSksT2UoaSkpe2lmKCFsKXtvPXUrMTticmVha319ZWxzZS0xPT09YSYmKGw9ITEsYT11KzEpLGk9PT1OZT8tMT09PXM/cz11OjEhPT1oJiYoaD0xKTotMSE9PXMmJihoPS0xKTtyZXR1cm4tMSE9PWEmJigtMT09PXN8fDA9PT1ofHwxPT09aCYmcz09PWEtMSYmcz09PW8rMT90LmJhc2U9dC5uYW1lPWUuc2xpY2UobyxhKToodC5uYW1lPWUuc2xpY2UobyxzKSx0LmJhc2U9ZS5zbGljZShvLGEpLHQuZXh0PWUuc2xpY2UocyxhKSkpLHQuZGlyPW8+MCYmbyE9PXI/ZS5zbGljZSgwLG8tMSk6dC5yb290LHR9LHNlcDoiXFwiLGRlbGltaXRlcjoiOyIsd2luMzI6bnVsbCxwb3NpeDpudWxsfSxLZT0oKCk9PntpZihrZSl7Y29uc3QgZT0vXFwvZztyZXR1cm4oKT0+e2NvbnN0IHQ9TGUoKS5yZXBsYWNlKGUsIi8iKTtyZXR1cm4gdC5zbGljZSh0LmluZGV4T2YoIi8iKSl9fXJldHVybigpPT5MZSgpfSkoKSxWZT17cmVzb2x2ZSguLi5lKXtsZXQgdD0iIixuPSExO2ZvcihsZXQgcj1lLmxlbmd0aC0xO3I+PS0xJiYhbjtyLS0pe2NvbnN0IGk9cj49MD9lW3JdOktlKCk7TWUoaSwicGF0aCIpLDAhPT1pLmxlbmd0aCYmKHQ9YCR7aX0vJHt0fWAsbj1pLmNoYXJDb2RlQXQoMCk9PT1FZSl9cmV0dXJuIHQ9UGUodCwhbiwiLyIsVGUpLG4/YC8ke3R9YDp0Lmxlbmd0aD4wP3Q6Ii4ifSxub3JtYWxpemUoZSl7aWYoTWUoZSwicGF0aCIpLDA9PT1lLmxlbmd0aClyZXR1cm4iLiI7Y29uc3QgdD1lLmNoYXJDb2RlQXQoMCk9PT1FZSxuPWUuY2hhckNvZGVBdChlLmxlbmd0aC0xKT09PUVlO3JldHVybiAwPT09KGU9UGUoZSwhdCwiLyIsVGUpKS5sZW5ndGg/dD8iLyI6bj8iLi8iOiIuIjoobiYmKGUrPSIvIiksdD9gLyR7ZX1gOmUpfSxpc0Fic29sdXRlOmU9PihNZShlLCJwYXRoIiksZS5sZW5ndGg+MCYmZS5jaGFyQ29kZUF0KDApPT09RWUpLGpvaW4oLi4uZSl7aWYoMD09PWUubGVuZ3RoKXJldHVybiIuIjtsZXQgdDtmb3IobGV0IG49MDtuPGUubGVuZ3RoOysrbil7Y29uc3Qgcj1lW25dO01lKHIsInBhdGgiKSxyLmxlbmd0aD4wJiYodm9pZCAwPT09dD90PXI6dCs9YC8ke3J9YCl9cmV0dXJuIHZvaWQgMD09PXQ/Ii4iOlZlLm5vcm1hbGl6ZSh0KX0scmVsYXRpdmUoZSx0KXtpZihNZShlLCJmcm9tIiksTWUodCwidG8iKSxlPT09dClyZXR1cm4iIjtpZigoZT1WZS5yZXNvbHZlKGUpKT09PSh0PVZlLnJlc29sdmUodCkpKXJldHVybiIiO2NvbnN0IG49ZS5sZW5ndGgscj1uLTEsaT10Lmxlbmd0aC0xLHM9cjxpP3I6aTtsZXQgbz0tMSxhPTA7Zm9yKDthPHM7YSsrKXtjb25zdCBuPWUuY2hhckNvZGVBdCgxK2EpO2lmKG4hPT10LmNoYXJDb2RlQXQoMSthKSlicmVhaztuPT09RWUmJihvPWEpfWlmKGE9PT1zKWlmKGk+cyl7aWYodC5jaGFyQ29kZUF0KDErYSk9PT1FZSlyZXR1cm4gdC5zbGljZSgxK2ErMSk7aWYoMD09PWEpcmV0dXJuIHQuc2xpY2UoMSthKX1lbHNlIHI+cyYmKGUuY2hhckNvZGVBdCgxK2EpPT09RWU/bz1hOjA9PT1hJiYobz0wKSk7bGV0IGw9IiI7Zm9yKGE9MStvKzE7YTw9bjsrK2EpYSE9PW4mJmUuY2hhckNvZGVBdChhKSE9PUVlfHwobCs9MD09PWwubGVuZ3RoPyIuLiI6Ii8uLiIpO3JldHVybmAke2x9JHt0LnNsaWNlKDErbyl9YH0sdG9OYW1lc3BhY2VkUGF0aDplPT5lLGRpcm5hbWUoZSl7aWYoTWUoZSwicGF0aCIpLDA9PT1lLmxlbmd0aClyZXR1cm4iLiI7Y29uc3QgdD1lLmNoYXJDb2RlQXQoMCk9PT1FZTtsZXQgbj0tMSxyPSEwO2ZvcihsZXQgdD1lLmxlbmd0aC0xO3Q+PTE7LS10KWlmKGUuY2hhckNvZGVBdCh0KT09PUVlKXtpZighcil7bj10O2JyZWFrfX1lbHNlIHI9ITE7cmV0dXJuLTE9PT1uP3Q/Ii8iOiIuIjp0JiYxPT09bj8iLy8iOmUuc2xpY2UoMCxuKX0sYmFzZW5hbWUoZSx0KXt2b2lkIDAhPT10JiZNZSh0LCJleHQiKSxNZShlLCJwYXRoIik7bGV0IG4scj0wLGk9LTEscz0hMDtpZih2b2lkIDAhPT10JiZ0Lmxlbmd0aD4wJiZ0Lmxlbmd0aDw9ZS5sZW5ndGgpe2lmKHQ9PT1lKXJldHVybiIiO2xldCBvPXQubGVuZ3RoLTEsYT0tMTtmb3Iobj1lLmxlbmd0aC0xO24+PTA7LS1uKXtjb25zdCBsPWUuY2hhckNvZGVBdChuKTtpZihsPT09RWUpe2lmKCFzKXtyPW4rMTticmVha319ZWxzZS0xPT09YSYmKHM9ITEsYT1uKzEpLG8+PTAmJihsPT09dC5jaGFyQ29kZUF0KG8pPy0xPT0tLW8mJihpPW4pOihvPS0xLGk9YSkpfXJldHVybiByPT09aT9pPWE6LTE9PT1pJiYoaT1lLmxlbmd0aCksZS5zbGljZShyLGkpfWZvcihuPWUubGVuZ3RoLTE7bj49MDstLW4paWYoZS5jaGFyQ29kZUF0KG4pPT09RWUpe2lmKCFzKXtyPW4rMTticmVha319ZWxzZS0xPT09aSYmKHM9ITEsaT1uKzEpO3JldHVybi0xPT09aT8iIjplLnNsaWNlKHIsaSl9LGV4dG5hbWUoZSl7TWUoZSwicGF0aCIpO2xldCB0PS0xLG49MCxyPS0xLGk9ITAscz0wO2ZvcihsZXQgbz1lLmxlbmd0aC0xO28+PTA7LS1vKXtjb25zdCBhPWUuY2hhckNvZGVBdChvKTtpZihhIT09RWUpLTE9PT1yJiYoaT0hMSxyPW8rMSksYT09PU5lPy0xPT09dD90PW86MSE9PXMmJihzPTEpOi0xIT09dCYmKHM9LTEpO2Vsc2UgaWYoIWkpe249bysxO2JyZWFrfX1yZXR1cm4tMT09PXR8fC0xPT09cnx8MD09PXN8fDE9PT1zJiZ0PT09ci0xJiZ0PT09bisxPyIiOmUuc2xpY2UodCxyKX0sZm9ybWF0OkRlLmJpbmQobnVsbCwiLyIpLHBhcnNlKGUpe01lKGUsInBhdGgiKTtjb25zdCB0PXtyb290OiIiLGRpcjoiIixiYXNlOiIiLGV4dDoiIixuYW1lOiIifTtpZigwPT09ZS5sZW5ndGgpcmV0dXJuIHQ7Y29uc3Qgbj1lLmNoYXJDb2RlQXQoMCk9PT1FZTtsZXQgcjtuPyh0LnJvb3Q9Ii8iLHI9MSk6cj0wO2xldCBpPS0xLHM9MCxvPS0xLGE9ITAsbD1lLmxlbmd0aC0xLHU9MDtmb3IoO2w+PXI7LS1sKXtjb25zdCB0PWUuY2hhckNvZGVBdChsKTtpZih0IT09RWUpLTE9PT1vJiYoYT0hMSxvPWwrMSksdD09PU5lPy0xPT09aT9pPWw6MSE9PXUmJih1PTEpOi0xIT09aSYmKHU9LTEpO2Vsc2UgaWYoIWEpe3M9bCsxO2JyZWFrfX1pZigtMSE9PW8pe2NvbnN0IHI9MD09PXMmJm4/MTpzOy0xPT09aXx8MD09PXV8fDE9PT11JiZpPT09by0xJiZpPT09cysxP3QuYmFzZT10Lm5hbWU9ZS5zbGljZShyLG8pOih0Lm5hbWU9ZS5zbGljZShyLGkpLHQuYmFzZT1lLnNsaWNlKHIsbyksdC5leHQ9ZS5zbGljZShpLG8pKX1yZXR1cm4gcz4wP3QuZGlyPWUuc2xpY2UoMCxzLTEpOm4mJih0LmRpcj0iLyIpLHR9LHNlcDoiLyIsZGVsaW1pdGVyOiI6Iix3aW4zMjpudWxsLHBvc2l4Om51bGx9O1ZlLndpbjMyPUZlLndpbjMyPUZlLFZlLnBvc2l4PUZlLnBvc2l4PVZlLGtlP0ZlLm5vcm1hbGl6ZTpWZS5ub3JtYWxpemUsa2U/RmUucmVzb2x2ZTpWZS5yZXNvbHZlLGtlP0ZlLnJlbGF0aXZlOlZlLnJlbGF0aXZlLGtlP0ZlLmRpcm5hbWU6VmUuZGlybmFtZSxrZT9GZS5iYXNlbmFtZTpWZS5iYXNlbmFtZSxrZT9GZS5leHRuYW1lOlZlLmV4dG5hbWUsa2U/RmUuc2VwOlZlLnNlcDtjb25zdCBxZT0vXlx3W1x3XGQrLi1dKiQvLEJlPS9eXC8vLFVlPS9eXC9cLy87Y29uc3QgV2U9IiIsSGU9Ii8iLCRlPS9eKChbXjovPyNdKz8pOik/KFwvXC8oW14vPyNdKikpPyhbXj8jXSopKFw/KFteI10qKSk/KCMoLiopKT8vO2NsYXNzIHple3N0YXRpYyBpc1VyaShlKXtyZXR1cm4gZSBpbnN0YW5jZW9mIHplfHwhIWUmJigic3RyaW5nIj09dHlwZW9mIGUuYXV0aG9yaXR5JiYic3RyaW5nIj09dHlwZW9mIGUuZnJhZ21lbnQmJiJzdHJpbmciPT10eXBlb2YgZS5wYXRoJiYic3RyaW5nIj09dHlwZW9mIGUucXVlcnkmJiJzdHJpbmciPT10eXBlb2YgZS5zY2hlbWUmJiJzdHJpbmciPT10eXBlb2YgZS5mc1BhdGgmJiJmdW5jdGlvbiI9PXR5cGVvZiBlLndpdGgmJiJmdW5jdGlvbiI9PXR5cGVvZiBlLnRvU3RyaW5nKX1jb25zdHJ1Y3RvcihlLHQsbixyLGkscz0hMSl7Im9iamVjdCI9PXR5cGVvZiBlPyh0aGlzLnNjaGVtZT1lLnNjaGVtZXx8V2UsdGhpcy5hdXRob3JpdHk9ZS5hdXRob3JpdHl8fFdlLHRoaXMucGF0aD1lLnBhdGh8fFdlLHRoaXMucXVlcnk9ZS5xdWVyeXx8V2UsdGhpcy5mcmFnbWVudD1lLmZyYWdtZW50fHxXZSk6KHRoaXMuc2NoZW1lPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGV8fHQ/ZToiZmlsZSJ9KGUscyksdGhpcy5hdXRob3JpdHk9dHx8V2UsdGhpcy5wYXRoPWZ1bmN0aW9uKGUsdCl7c3dpdGNoKGUpe2Nhc2UiaHR0cHMiOmNhc2UiaHR0cCI6Y2FzZSJmaWxlIjp0P3RbMF0hPT1IZSYmKHQ9SGUrdCk6dD1IZX1yZXR1cm4gdH0odGhpcy5zY2hlbWUsbnx8V2UpLHRoaXMucXVlcnk9cnx8V2UsdGhpcy5mcmFnbWVudD1pfHxXZSxmdW5jdGlvbihlLHQpe2lmKCFlLnNjaGVtZSYmdCl0aHJvdyBuZXcgRXJyb3IoYFtVcmlFcnJvcl06IFNjaGVtZSBpcyBtaXNzaW5nOiB7c2NoZW1lOiAiIiwgYXV0aG9yaXR5OiAiJHtlLmF1dGhvcml0eX0iLCBwYXRoOiAiJHtlLnBhdGh9IiwgcXVlcnk6ICIke2UucXVlcnl9IiwgZnJhZ21lbnQ6ICIke2UuZnJhZ21lbnR9In1gKTtpZihlLnNjaGVtZSYmIXFlLnRlc3QoZS5zY2hlbWUpKXRocm93IG5ldyBFcnJvcigiW1VyaUVycm9yXTogU2NoZW1lIGNvbnRhaW5zIGlsbGVnYWwgY2hhcmFjdGVycy4iKTtpZihlLnBhdGgpaWYoZS5hdXRob3JpdHkpe2lmKCFCZS50ZXN0KGUucGF0aCkpdGhyb3cgbmV3IEVycm9yKCdbVXJpRXJyb3JdOiBJZiBhIFVSSSBjb250YWlucyBhbiBhdXRob3JpdHkgY29tcG9uZW50LCB0aGVuIHRoZSBwYXRoIGNvbXBvbmVudCBtdXN0IGVpdGhlciBiZSBlbXB0eSBvciBiZWdpbiB3aXRoIGEgc2xhc2ggKCIvIikgY2hhcmFjdGVyJyl9ZWxzZSBpZihVZS50ZXN0KGUucGF0aCkpdGhyb3cgbmV3IEVycm9yKCdbVXJpRXJyb3JdOiBJZiBhIFVSSSBkb2VzIG5vdCBjb250YWluIGFuIGF1dGhvcml0eSBjb21wb25lbnQsIHRoZW4gdGhlIHBhdGggY2Fubm90IGJlZ2luIHdpdGggdHdvIHNsYXNoIGNoYXJhY3RlcnMgKCIvLyIpJyl9KHRoaXMscykpfWdldCBmc1BhdGgoKXtyZXR1cm4gSmUodGhpcywhMSl9d2l0aChlKXtpZighZSlyZXR1cm4gdGhpcztsZXR7c2NoZW1lOnQsYXV0aG9yaXR5Om4scGF0aDpyLHF1ZXJ5OmksZnJhZ21lbnQ6c309ZTtyZXR1cm4gdm9pZCAwPT09dD90PXRoaXMuc2NoZW1lOm51bGw9PT10JiYodD1XZSksdm9pZCAwPT09bj9uPXRoaXMuYXV0aG9yaXR5Om51bGw9PT1uJiYobj1XZSksdm9pZCAwPT09cj9yPXRoaXMucGF0aDpudWxsPT09ciYmKHI9V2UpLHZvaWQgMD09PWk/aT10aGlzLnF1ZXJ5Om51bGw9PT1pJiYoaT1XZSksdm9pZCAwPT09cz9zPXRoaXMuZnJhZ21lbnQ6bnVsbD09PXMmJihzPVdlKSx0PT09dGhpcy5zY2hlbWUmJm49PT10aGlzLmF1dGhvcml0eSYmcj09PXRoaXMucGF0aCYmaT09PXRoaXMucXVlcnkmJnM9PT10aGlzLmZyYWdtZW50P3RoaXM6bmV3IEdlKHQsbixyLGkscyl9c3RhdGljIHBhcnNlKGUsdD0hMSl7Y29uc3Qgbj0kZS5leGVjKGUpO3JldHVybiBuP25ldyBHZShuWzJdfHxXZSxudChuWzRdfHxXZSksbnQobls1XXx8V2UpLG50KG5bN118fFdlKSxudChuWzldfHxXZSksdCk6bmV3IEdlKFdlLFdlLFdlLFdlLFdlKX1zdGF0aWMgZmlsZShlKXtsZXQgdD1XZTtpZihPJiYoZT1lLnJlcGxhY2UoL1xcL2csSGUpKSxlWzBdPT09SGUmJmVbMV09PT1IZSl7Y29uc3Qgbj1lLmluZGV4T2YoSGUsMik7LTE9PT1uPyh0PWUuc3Vic3RyaW5nKDIpLGU9SGUpOih0PWUuc3Vic3RyaW5nKDIsbiksZT1lLnN1YnN0cmluZyhuKXx8SGUpfXJldHVybiBuZXcgR2UoImZpbGUiLHQsZSxXZSxXZSl9c3RhdGljIGZyb20oZSx0KXtyZXR1cm4gbmV3IEdlKGUuc2NoZW1lLGUuYXV0aG9yaXR5LGUucGF0aCxlLnF1ZXJ5LGUuZnJhZ21lbnQsdCl9c3RhdGljIGpvaW5QYXRoKGUsLi4udCl7aWYoIWUucGF0aCl0aHJvdyBuZXcgRXJyb3IoIltVcmlFcnJvcl06IGNhbm5vdCBjYWxsIGpvaW5QYXRoIG9uIFVSSSB3aXRob3V0IHBhdGgiKTtsZXQgbjtyZXR1cm4gbj1PJiYiZmlsZSI9PT1lLnNjaGVtZT96ZS5maWxlKEZlLmpvaW4oSmUoZSwhMCksLi4udCkpLnBhdGg6VmUuam9pbihlLnBhdGgsLi4udCksZS53aXRoKHtwYXRoOm59KX10b1N0cmluZyhlPSExKXtyZXR1cm4gWmUodGhpcyxlKX10b0pTT04oKXtyZXR1cm4gdGhpc31zdGF0aWMgcmV2aXZlKGUpe3ZhciB0LG47aWYoZSl7aWYoZSBpbnN0YW5jZW9mIHplKXJldHVybiBlO3tjb25zdCByPW5ldyBHZShlKTtyZXR1cm4gci5fZm9ybWF0dGVkPW51bGwhPT0odD1lLmV4dGVybmFsKSYmdm9pZCAwIT09dD90Om51bGwsci5fZnNQYXRoPWUuX3NlcD09PWplJiZudWxsIT09KG49ZS5mc1BhdGgpJiZ2b2lkIDAhPT1uP246bnVsbCxyfX1yZXR1cm4gZX19Y29uc3QgamU9Tz8xOnZvaWQgMDtjbGFzcyBHZSBleHRlbmRzIHple2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLl9mb3JtYXR0ZWQ9bnVsbCx0aGlzLl9mc1BhdGg9bnVsbH1nZXQgZnNQYXRoKCl7cmV0dXJuIHRoaXMuX2ZzUGF0aHx8KHRoaXMuX2ZzUGF0aD1KZSh0aGlzLCExKSksdGhpcy5fZnNQYXRofXRvU3RyaW5nKGU9ITEpe3JldHVybiBlP1plKHRoaXMsITApOih0aGlzLl9mb3JtYXR0ZWR8fCh0aGlzLl9mb3JtYXR0ZWQ9WmUodGhpcywhMSkpLHRoaXMuX2Zvcm1hdHRlZCl9dG9KU09OKCl7Y29uc3QgZT17JG1pZDoxfTtyZXR1cm4gdGhpcy5fZnNQYXRoJiYoZS5mc1BhdGg9dGhpcy5fZnNQYXRoLGUuX3NlcD1qZSksdGhpcy5fZm9ybWF0dGVkJiYoZS5leHRlcm5hbD10aGlzLl9mb3JtYXR0ZWQpLHRoaXMucGF0aCYmKGUucGF0aD10aGlzLnBhdGgpLHRoaXMuc2NoZW1lJiYoZS5zY2hlbWU9dGhpcy5zY2hlbWUpLHRoaXMuYXV0aG9yaXR5JiYoZS5hdXRob3JpdHk9dGhpcy5hdXRob3JpdHkpLHRoaXMucXVlcnkmJihlLnF1ZXJ5PXRoaXMucXVlcnkpLHRoaXMuZnJhZ21lbnQmJihlLmZyYWdtZW50PXRoaXMuZnJhZ21lbnQpLGV9fWNvbnN0IFllPXs1ODoiJTNBIiw0NzoiJTJGIiw2MzoiJTNGIiwzNToiJTIzIiw5MToiJTVCIiw5MzoiJTVEIiw2NDoiJTQwIiwzMzoiJTIxIiwzNjoiJTI0IiwzODoiJTI2IiwzOToiJTI3Iiw0MDoiJTI4Iiw0MToiJTI5Iiw0MjoiJTJBIiw0MzoiJTJCIiw0NDoiJTJDIiw1OToiJTNCIiw2MToiJTNEIiwzMjoiJTIwIn07ZnVuY3Rpb24gUWUoZSx0LG4pe2xldCByLGk9LTE7Zm9yKGxldCBzPTA7czxlLmxlbmd0aDtzKyspe2NvbnN0IG89ZS5jaGFyQ29kZUF0KHMpO2lmKG8+PTk3JiZvPD0xMjJ8fG8+PTY1JiZvPD05MHx8bz49NDgmJm88PTU3fHw0NT09PW98fDQ2PT09b3x8OTU9PT1vfHwxMjY9PT1vfHx0JiY0Nz09PW98fG4mJjkxPT09b3x8biYmOTM9PT1vfHxuJiY1OD09PW8pLTEhPT1pJiYocis9ZW5jb2RlVVJJQ29tcG9uZW50KGUuc3Vic3RyaW5nKGkscykpLGk9LTEpLHZvaWQgMCE9PXImJihyKz1lLmNoYXJBdChzKSk7ZWxzZXt2b2lkIDA9PT1yJiYocj1lLnN1YnN0cigwLHMpKTtjb25zdCB0PVllW29dO3ZvaWQgMCE9PXQ/KC0xIT09aSYmKHIrPWVuY29kZVVSSUNvbXBvbmVudChlLnN1YnN0cmluZyhpLHMpKSxpPS0xKSxyKz10KTotMT09PWkmJihpPXMpfX1yZXR1cm4tMSE9PWkmJihyKz1lbmNvZGVVUklDb21wb25lbnQoZS5zdWJzdHJpbmcoaSkpKSx2b2lkIDAhPT1yP3I6ZX1mdW5jdGlvbiBYZShlKXtsZXQgdDtmb3IobGV0IG49MDtuPGUubGVuZ3RoO24rKyl7Y29uc3Qgcj1lLmNoYXJDb2RlQXQobik7MzU9PT1yfHw2Mz09PXI/KHZvaWQgMD09PXQmJih0PWUuc3Vic3RyKDAsbikpLHQrPVllW3JdKTp2b2lkIDAhPT10JiYodCs9ZVtuXSl9cmV0dXJuIHZvaWQgMCE9PXQ/dDplfWZ1bmN0aW9uIEplKGUsdCl7bGV0IG47cmV0dXJuIG49ZS5hdXRob3JpdHkmJmUucGF0aC5sZW5ndGg+MSYmImZpbGUiPT09ZS5zY2hlbWU/YC8vJHtlLmF1dGhvcml0eX0ke2UucGF0aH1gOjQ3PT09ZS5wYXRoLmNoYXJDb2RlQXQoMCkmJihlLnBhdGguY2hhckNvZGVBdCgxKT49NjUmJmUucGF0aC5jaGFyQ29kZUF0KDEpPD05MHx8ZS5wYXRoLmNoYXJDb2RlQXQoMSk+PTk3JiZlLnBhdGguY2hhckNvZGVBdCgxKTw9MTIyKSYmNTg9PT1lLnBhdGguY2hhckNvZGVBdCgyKT90P2UucGF0aC5zdWJzdHIoMSk6ZS5wYXRoWzFdLnRvTG93ZXJDYXNlKCkrZS5wYXRoLnN1YnN0cigyKTplLnBhdGgsTyYmKG49bi5yZXBsYWNlKC9cLy9nLCJcXCIpKSxufWZ1bmN0aW9uIFplKGUsdCl7Y29uc3Qgbj10P1hlOlFlO2xldCByPSIiLHtzY2hlbWU6aSxhdXRob3JpdHk6cyxwYXRoOm8scXVlcnk6YSxmcmFnbWVudDpsfT1lO2lmKGkmJihyKz1pLHIrPSI6IiksKHN8fCJmaWxlIj09PWkpJiYocis9SGUscis9SGUpLHMpe2xldCBlPXMuaW5kZXhPZigiQCIpO2lmKC0xIT09ZSl7Y29uc3QgdD1zLnN1YnN0cigwLGUpO3M9cy5zdWJzdHIoZSsxKSxlPXQubGFzdEluZGV4T2YoIjoiKSwtMT09PWU/cis9bih0LCExLCExKToocis9bih0LnN1YnN0cigwLGUpLCExLCExKSxyKz0iOiIscis9bih0LnN1YnN0cihlKzEpLCExLCEwKSkscis9IkAifXM9cy50b0xvd2VyQ2FzZSgpLGU9cy5sYXN0SW5kZXhPZigiOiIpLC0xPT09ZT9yKz1uKHMsITEsITApOihyKz1uKHMuc3Vic3RyKDAsZSksITEsITApLHIrPXMuc3Vic3RyKGUpKX1pZihvKXtpZihvLmxlbmd0aD49MyYmNDc9PT1vLmNoYXJDb2RlQXQoMCkmJjU4PT09by5jaGFyQ29kZUF0KDIpKXtjb25zdCBlPW8uY2hhckNvZGVBdCgxKTtlPj02NSYmZTw9OTAmJihvPWAvJHtTdHJpbmcuZnJvbUNoYXJDb2RlKGUrMzIpfToke28uc3Vic3RyKDMpfWApfWVsc2UgaWYoby5sZW5ndGg+PTImJjU4PT09by5jaGFyQ29kZUF0KDEpKXtjb25zdCBlPW8uY2hhckNvZGVBdCgwKTtlPj02NSYmZTw9OTAmJihvPWAke1N0cmluZy5mcm9tQ2hhckNvZGUoZSszMil9OiR7by5zdWJzdHIoMil9YCl9cis9bihvLCEwLCExKX1yZXR1cm4gYSYmKHIrPSI/IixyKz1uKGEsITEsITEpKSxsJiYocis9IiMiLHIrPXQ/bDpRZShsLCExLCExKSkscn1mdW5jdGlvbiBldChlKXt0cnl7cmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChlKX1jYXRjaCh0KXtyZXR1cm4gZS5sZW5ndGg+Mz9lLnN1YnN0cigwLDMpK2V0KGUuc3Vic3RyKDMpKTplfX1jb25zdCB0dD0vKCVbMC05QS1aYS16XVswLTlBLVphLXpdKSsvZztmdW5jdGlvbiBudChlKXtyZXR1cm4gZS5tYXRjaCh0dCk/ZS5yZXBsYWNlKHR0LChlPT5ldChlKSkpOmV9Y2xhc3MgcnR7Y29uc3RydWN0b3IoZSx0KXt0aGlzLmxpbmVOdW1iZXI9ZSx0aGlzLmNvbHVtbj10fXdpdGgoZT10aGlzLmxpbmVOdW1iZXIsdD10aGlzLmNvbHVtbil7cmV0dXJuIGU9PT10aGlzLmxpbmVOdW1iZXImJnQ9PT10aGlzLmNvbHVtbj90aGlzOm5ldyBydChlLHQpfWRlbHRhKGU9MCx0PTApe3JldHVybiB0aGlzLndpdGgodGhpcy5saW5lTnVtYmVyK2UsdGhpcy5jb2x1bW4rdCl9ZXF1YWxzKGUpe3JldHVybiBydC5lcXVhbHModGhpcyxlKX1zdGF0aWMgZXF1YWxzKGUsdCl7cmV0dXJuIWUmJiF0fHwhIWUmJiEhdCYmZS5saW5lTnVtYmVyPT09dC5saW5lTnVtYmVyJiZlLmNvbHVtbj09PXQuY29sdW1ufWlzQmVmb3JlKGUpe3JldHVybiBydC5pc0JlZm9yZSh0aGlzLGUpfXN0YXRpYyBpc0JlZm9yZShlLHQpe3JldHVybiBlLmxpbmVOdW1iZXI8dC5saW5lTnVtYmVyfHwhKHQubGluZU51bWJlcjxlLmxpbmVOdW1iZXIpJiZlLmNvbHVtbjx0LmNvbHVtbn1pc0JlZm9yZU9yRXF1YWwoZSl7cmV0dXJuIHJ0LmlzQmVmb3JlT3JFcXVhbCh0aGlzLGUpfXN0YXRpYyBpc0JlZm9yZU9yRXF1YWwoZSx0KXtyZXR1cm4gZS5saW5lTnVtYmVyPHQubGluZU51bWJlcnx8ISh0LmxpbmVOdW1iZXI8ZS5saW5lTnVtYmVyKSYmZS5jb2x1bW48PXQuY29sdW1ufXN0YXRpYyBjb21wYXJlKGUsdCl7Y29uc3Qgbj0wfGUubGluZU51bWJlcixyPTB8dC5saW5lTnVtYmVyO2lmKG49PT1yKXtyZXR1cm4oMHxlLmNvbHVtbiktKDB8dC5jb2x1bW4pfXJldHVybiBuLXJ9Y2xvbmUoKXtyZXR1cm4gbmV3IHJ0KHRoaXMubGluZU51bWJlcix0aGlzLmNvbHVtbil9dG9TdHJpbmcoKXtyZXR1cm4iKCIrdGhpcy5saW5lTnVtYmVyKyIsIit0aGlzLmNvbHVtbisiKSJ9c3RhdGljIGxpZnQoZSl7cmV0dXJuIG5ldyBydChlLmxpbmVOdW1iZXIsZS5jb2x1bW4pfXN0YXRpYyBpc0lQb3NpdGlvbihlKXtyZXR1cm4gZSYmIm51bWJlciI9PXR5cGVvZiBlLmxpbmVOdW1iZXImJiJudW1iZXIiPT10eXBlb2YgZS5jb2x1bW59fWNsYXNzIGl0e2NvbnN0cnVjdG9yKGUsdCxuLHIpe2U+bnx8ZT09PW4mJnQ+cj8odGhpcy5zdGFydExpbmVOdW1iZXI9bix0aGlzLnN0YXJ0Q29sdW1uPXIsdGhpcy5lbmRMaW5lTnVtYmVyPWUsdGhpcy5lbmRDb2x1bW49dCk6KHRoaXMuc3RhcnRMaW5lTnVtYmVyPWUsdGhpcy5zdGFydENvbHVtbj10LHRoaXMuZW5kTGluZU51bWJlcj1uLHRoaXMuZW5kQ29sdW1uPXIpfWlzRW1wdHkoKXtyZXR1cm4gaXQuaXNFbXB0eSh0aGlzKX1zdGF0aWMgaXNFbXB0eShlKXtyZXR1cm4gZS5zdGFydExpbmVOdW1iZXI9PT1lLmVuZExpbmVOdW1iZXImJmUuc3RhcnRDb2x1bW49PT1lLmVuZENvbHVtbn1jb250YWluc1Bvc2l0aW9uKGUpe3JldHVybiBpdC5jb250YWluc1Bvc2l0aW9uKHRoaXMsZSl9c3RhdGljIGNvbnRhaW5zUG9zaXRpb24oZSx0KXtyZXR1cm4hKHQubGluZU51bWJlcjxlLnN0YXJ0TGluZU51bWJlcnx8dC5saW5lTnVtYmVyPmUuZW5kTGluZU51bWJlcikmJighKHQubGluZU51bWJlcj09PWUuc3RhcnRMaW5lTnVtYmVyJiZ0LmNvbHVtbjxlLnN0YXJ0Q29sdW1uKSYmISh0LmxpbmVOdW1iZXI9PT1lLmVuZExpbmVOdW1iZXImJnQuY29sdW1uPmUuZW5kQ29sdW1uKSl9c3RhdGljIHN0cmljdENvbnRhaW5zUG9zaXRpb24oZSx0KXtyZXR1cm4hKHQubGluZU51bWJlcjxlLnN0YXJ0TGluZU51bWJlcnx8dC5saW5lTnVtYmVyPmUuZW5kTGluZU51bWJlcikmJighKHQubGluZU51bWJlcj09PWUuc3RhcnRMaW5lTnVtYmVyJiZ0LmNvbHVtbjw9ZS5zdGFydENvbHVtbikmJiEodC5saW5lTnVtYmVyPT09ZS5lbmRMaW5lTnVtYmVyJiZ0LmNvbHVtbj49ZS5lbmRDb2x1bW4pKX1jb250YWluc1JhbmdlKGUpe3JldHVybiBpdC5jb250YWluc1JhbmdlKHRoaXMsZSl9c3RhdGljIGNvbnRhaW5zUmFuZ2UoZSx0KXtyZXR1cm4hKHQuc3RhcnRMaW5lTnVtYmVyPGUuc3RhcnRMaW5lTnVtYmVyfHx0LmVuZExpbmVOdW1iZXI8ZS5zdGFydExpbmVOdW1iZXIpJiYoISh0LnN0YXJ0TGluZU51bWJlcj5lLmVuZExpbmVOdW1iZXJ8fHQuZW5kTGluZU51bWJlcj5lLmVuZExpbmVOdW1iZXIpJiYoISh0LnN0YXJ0TGluZU51bWJlcj09PWUuc3RhcnRMaW5lTnVtYmVyJiZ0LnN0YXJ0Q29sdW1uPGUuc3RhcnRDb2x1bW4pJiYhKHQuZW5kTGluZU51bWJlcj09PWUuZW5kTGluZU51bWJlciYmdC5lbmRDb2x1bW4+ZS5lbmRDb2x1bW4pKSl9c3RyaWN0Q29udGFpbnNSYW5nZShlKXtyZXR1cm4gaXQuc3RyaWN0Q29udGFpbnNSYW5nZSh0aGlzLGUpfXN0YXRpYyBzdHJpY3RDb250YWluc1JhbmdlKGUsdCl7cmV0dXJuISh0LnN0YXJ0TGluZU51bWJlcjxlLnN0YXJ0TGluZU51bWJlcnx8dC5lbmRMaW5lTnVtYmVyPGUuc3RhcnRMaW5lTnVtYmVyKSYmKCEodC5zdGFydExpbmVOdW1iZXI+ZS5lbmRMaW5lTnVtYmVyfHx0LmVuZExpbmVOdW1iZXI+ZS5lbmRMaW5lTnVtYmVyKSYmKCEodC5zdGFydExpbmVOdW1iZXI9PT1lLnN0YXJ0TGluZU51bWJlciYmdC5zdGFydENvbHVtbjw9ZS5zdGFydENvbHVtbikmJiEodC5lbmRMaW5lTnVtYmVyPT09ZS5lbmRMaW5lTnVtYmVyJiZ0LmVuZENvbHVtbj49ZS5lbmRDb2x1bW4pKSl9cGx1c1JhbmdlKGUpe3JldHVybiBpdC5wbHVzUmFuZ2UodGhpcyxlKX1zdGF0aWMgcGx1c1JhbmdlKGUsdCl7bGV0IG4scixpLHM7cmV0dXJuIHQuc3RhcnRMaW5lTnVtYmVyPGUuc3RhcnRMaW5lTnVtYmVyPyhuPXQuc3RhcnRMaW5lTnVtYmVyLHI9dC5zdGFydENvbHVtbik6dC5zdGFydExpbmVOdW1iZXI9PT1lLnN0YXJ0TGluZU51bWJlcj8obj10LnN0YXJ0TGluZU51bWJlcixyPU1hdGgubWluKHQuc3RhcnRDb2x1bW4sZS5zdGFydENvbHVtbikpOihuPWUuc3RhcnRMaW5lTnVtYmVyLHI9ZS5zdGFydENvbHVtbiksdC5lbmRMaW5lTnVtYmVyPmUuZW5kTGluZU51bWJlcj8oaT10LmVuZExpbmVOdW1iZXIscz10LmVuZENvbHVtbik6dC5lbmRMaW5lTnVtYmVyPT09ZS5lbmRMaW5lTnVtYmVyPyhpPXQuZW5kTGluZU51bWJlcixzPU1hdGgubWF4KHQuZW5kQ29sdW1uLGUuZW5kQ29sdW1uKSk6KGk9ZS5lbmRMaW5lTnVtYmVyLHM9ZS5lbmRDb2x1bW4pLG5ldyBpdChuLHIsaSxzKX1pbnRlcnNlY3RSYW5nZXMoZSl7cmV0dXJuIGl0LmludGVyc2VjdFJhbmdlcyh0aGlzLGUpfXN0YXRpYyBpbnRlcnNlY3RSYW5nZXMoZSx0KXtsZXQgbj1lLnN0YXJ0TGluZU51bWJlcixyPWUuc3RhcnRDb2x1bW4saT1lLmVuZExpbmVOdW1iZXIscz1lLmVuZENvbHVtbjtjb25zdCBvPXQuc3RhcnRMaW5lTnVtYmVyLGE9dC5zdGFydENvbHVtbixsPXQuZW5kTGluZU51bWJlcix1PXQuZW5kQ29sdW1uO3JldHVybiBuPG8/KG49byxyPWEpOm49PT1vJiYocj1NYXRoLm1heChyLGEpKSxpPmw/KGk9bCxzPXUpOmk9PT1sJiYocz1NYXRoLm1pbihzLHUpKSxuPml8fG49PT1pJiZyPnM/bnVsbDpuZXcgaXQobixyLGkscyl9ZXF1YWxzUmFuZ2UoZSl7cmV0dXJuIGl0LmVxdWFsc1JhbmdlKHRoaXMsZSl9c3RhdGljIGVxdWFsc1JhbmdlKGUsdCl7cmV0dXJuIWUmJiF0fHwhIWUmJiEhdCYmZS5zdGFydExpbmVOdW1iZXI9PT10LnN0YXJ0TGluZU51bWJlciYmZS5zdGFydENvbHVtbj09PXQuc3RhcnRDb2x1bW4mJmUuZW5kTGluZU51bWJlcj09PXQuZW5kTGluZU51bWJlciYmZS5lbmRDb2x1bW49PT10LmVuZENvbHVtbn1nZXRFbmRQb3NpdGlvbigpe3JldHVybiBpdC5nZXRFbmRQb3NpdGlvbih0aGlzKX1zdGF0aWMgZ2V0RW5kUG9zaXRpb24oZSl7cmV0dXJuIG5ldyBydChlLmVuZExpbmVOdW1iZXIsZS5lbmRDb2x1bW4pfWdldFN0YXJ0UG9zaXRpb24oKXtyZXR1cm4gaXQuZ2V0U3RhcnRQb3NpdGlvbih0aGlzKX1zdGF0aWMgZ2V0U3RhcnRQb3NpdGlvbihlKXtyZXR1cm4gbmV3IHJ0KGUuc3RhcnRMaW5lTnVtYmVyLGUuc3RhcnRDb2x1bW4pfXRvU3RyaW5nKCl7cmV0dXJuIlsiK3RoaXMuc3RhcnRMaW5lTnVtYmVyKyIsIit0aGlzLnN0YXJ0Q29sdW1uKyIgLT4gIit0aGlzLmVuZExpbmVOdW1iZXIrIiwiK3RoaXMuZW5kQ29sdW1uKyJdIn1zZXRFbmRQb3NpdGlvbihlLHQpe3JldHVybiBuZXcgaXQodGhpcy5zdGFydExpbmVOdW1iZXIsdGhpcy5zdGFydENvbHVtbixlLHQpfXNldFN0YXJ0UG9zaXRpb24oZSx0KXtyZXR1cm4gbmV3IGl0KGUsdCx0aGlzLmVuZExpbmVOdW1iZXIsdGhpcy5lbmRDb2x1bW4pfWNvbGxhcHNlVG9TdGFydCgpe3JldHVybiBpdC5jb2xsYXBzZVRvU3RhcnQodGhpcyl9c3RhdGljIGNvbGxhcHNlVG9TdGFydChlKXtyZXR1cm4gbmV3IGl0KGUuc3RhcnRMaW5lTnVtYmVyLGUuc3RhcnRDb2x1bW4sZS5zdGFydExpbmVOdW1iZXIsZS5zdGFydENvbHVtbil9Y29sbGFwc2VUb0VuZCgpe3JldHVybiBpdC5jb2xsYXBzZVRvRW5kKHRoaXMpfXN0YXRpYyBjb2xsYXBzZVRvRW5kKGUpe3JldHVybiBuZXcgaXQoZS5lbmRMaW5lTnVtYmVyLGUuZW5kQ29sdW1uLGUuZW5kTGluZU51bWJlcixlLmVuZENvbHVtbil9ZGVsdGEoZSl7cmV0dXJuIG5ldyBpdCh0aGlzLnN0YXJ0TGluZU51bWJlcitlLHRoaXMuc3RhcnRDb2x1bW4sdGhpcy5lbmRMaW5lTnVtYmVyK2UsdGhpcy5lbmRDb2x1bW4pfXN0YXRpYyBmcm9tUG9zaXRpb25zKGUsdD1lKXtyZXR1cm4gbmV3IGl0KGUubGluZU51bWJlcixlLmNvbHVtbix0LmxpbmVOdW1iZXIsdC5jb2x1bW4pfXN0YXRpYyBsaWZ0KGUpe3JldHVybiBlP25ldyBpdChlLnN0YXJ0TGluZU51bWJlcixlLnN0YXJ0Q29sdW1uLGUuZW5kTGluZU51bWJlcixlLmVuZENvbHVtbik6bnVsbH1zdGF0aWMgaXNJUmFuZ2UoZSl7cmV0dXJuIGUmJiJudW1iZXIiPT10eXBlb2YgZS5zdGFydExpbmVOdW1iZXImJiJudW1iZXIiPT10eXBlb2YgZS5zdGFydENvbHVtbiYmIm51bWJlciI9PXR5cGVvZiBlLmVuZExpbmVOdW1iZXImJiJudW1iZXIiPT10eXBlb2YgZS5lbmRDb2x1bW59c3RhdGljIGFyZUludGVyc2VjdGluZ09yVG91Y2hpbmcoZSx0KXtyZXR1cm4hKGUuZW5kTGluZU51bWJlcjx0LnN0YXJ0TGluZU51bWJlcnx8ZS5lbmRMaW5lTnVtYmVyPT09dC5zdGFydExpbmVOdW1iZXImJmUuZW5kQ29sdW1uPHQuc3RhcnRDb2x1bW4pJiYhKHQuZW5kTGluZU51bWJlcjxlLnN0YXJ0TGluZU51bWJlcnx8dC5lbmRMaW5lTnVtYmVyPT09ZS5zdGFydExpbmVOdW1iZXImJnQuZW5kQ29sdW1uPGUuc3RhcnRDb2x1bW4pfXN0YXRpYyBhcmVJbnRlcnNlY3RpbmcoZSx0KXtyZXR1cm4hKGUuZW5kTGluZU51bWJlcjx0LnN0YXJ0TGluZU51bWJlcnx8ZS5lbmRMaW5lTnVtYmVyPT09dC5zdGFydExpbmVOdW1iZXImJmUuZW5kQ29sdW1uPD10LnN0YXJ0Q29sdW1uKSYmISh0LmVuZExpbmVOdW1iZXI8ZS5zdGFydExpbmVOdW1iZXJ8fHQuZW5kTGluZU51bWJlcj09PWUuc3RhcnRMaW5lTnVtYmVyJiZ0LmVuZENvbHVtbjw9ZS5zdGFydENvbHVtbil9c3RhdGljIGNvbXBhcmVSYW5nZXNVc2luZ1N0YXJ0cyhlLHQpe2lmKGUmJnQpe2NvbnN0IG49MHxlLnN0YXJ0TGluZU51bWJlcixyPTB8dC5zdGFydExpbmVOdW1iZXI7aWYobj09PXIpe2NvbnN0IG49MHxlLnN0YXJ0Q29sdW1uLHI9MHx0LnN0YXJ0Q29sdW1uO2lmKG49PT1yKXtjb25zdCBuPTB8ZS5lbmRMaW5lTnVtYmVyLHI9MHx0LmVuZExpbmVOdW1iZXI7aWYobj09PXIpe3JldHVybigwfGUuZW5kQ29sdW1uKS0oMHx0LmVuZENvbHVtbil9cmV0dXJuIG4tcn1yZXR1cm4gbi1yfXJldHVybiBuLXJ9cmV0dXJuKGU/MTowKS0odD8xOjApfXN0YXRpYyBjb21wYXJlUmFuZ2VzVXNpbmdFbmRzKGUsdCl7cmV0dXJuIGUuZW5kTGluZU51bWJlcj09PXQuZW5kTGluZU51bWJlcj9lLmVuZENvbHVtbj09PXQuZW5kQ29sdW1uP2Uuc3RhcnRMaW5lTnVtYmVyPT09dC5zdGFydExpbmVOdW1iZXI/ZS5zdGFydENvbHVtbi10LnN0YXJ0Q29sdW1uOmUuc3RhcnRMaW5lTnVtYmVyLXQuc3RhcnRMaW5lTnVtYmVyOmUuZW5kQ29sdW1uLXQuZW5kQ29sdW1uOmUuZW5kTGluZU51bWJlci10LmVuZExpbmVOdW1iZXJ9c3RhdGljIHNwYW5zTXVsdGlwbGVMaW5lcyhlKXtyZXR1cm4gZS5lbmRMaW5lTnVtYmVyPmUuc3RhcnRMaW5lTnVtYmVyfXRvSlNPTigpe3JldHVybiB0aGlzfX12YXIgc3Q7ZnVuY3Rpb24gb3QoZSl7cmV0dXJuIGU8MD8wOmU+MjU1PzI1NTowfGV9ZnVuY3Rpb24gYXQoZSl7cmV0dXJuIGU8MD8wOmU+NDI5NDk2NzI5NT80Mjk0OTY3Mjk1OjB8ZX0hZnVuY3Rpb24oZSl7ZS5pc0xlc3NUaGFuPWZ1bmN0aW9uKGUpe3JldHVybiBlPDB9LGUuaXNHcmVhdGVyVGhhbj1mdW5jdGlvbihlKXtyZXR1cm4gZT4wfSxlLmlzTmVpdGhlckxlc3NPckdyZWF0ZXJUaGFuPWZ1bmN0aW9uKGUpe3JldHVybiAwPT09ZX0sZS5ncmVhdGVyVGhhbj0xLGUubGVzc1RoYW49LTEsZS5uZWl0aGVyTGVzc09yR3JlYXRlclRoYW49MH0oc3R8fChzdD17fSkpO2NsYXNzIGx0e2NvbnN0cnVjdG9yKGUpe3RoaXMudmFsdWVzPWUsdGhpcy5wcmVmaXhTdW09bmV3IFVpbnQzMkFycmF5KGUubGVuZ3RoKSx0aGlzLnByZWZpeFN1bVZhbGlkSW5kZXg9bmV3IEludDMyQXJyYXkoMSksdGhpcy5wcmVmaXhTdW1WYWxpZEluZGV4WzBdPS0xfWluc2VydFZhbHVlcyhlLHQpe2U9YXQoZSk7Y29uc3Qgbj10aGlzLnZhbHVlcyxyPXRoaXMucHJlZml4U3VtLGk9dC5sZW5ndGg7cmV0dXJuIDAhPT1pJiYodGhpcy52YWx1ZXM9bmV3IFVpbnQzMkFycmF5KG4ubGVuZ3RoK2kpLHRoaXMudmFsdWVzLnNldChuLnN1YmFycmF5KDAsZSksMCksdGhpcy52YWx1ZXMuc2V0KG4uc3ViYXJyYXkoZSksZStpKSx0aGlzLnZhbHVlcy5zZXQodCxlKSxlLTE8dGhpcy5wcmVmaXhTdW1WYWxpZEluZGV4WzBdJiYodGhpcy5wcmVmaXhTdW1WYWxpZEluZGV4WzBdPWUtMSksdGhpcy5wcmVmaXhTdW09bmV3IFVpbnQzMkFycmF5KHRoaXMudmFsdWVzLmxlbmd0aCksdGhpcy5wcmVmaXhTdW1WYWxpZEluZGV4WzBdPj0wJiZ0aGlzLnByZWZpeFN1bS5zZXQoci5zdWJhcnJheSgwLHRoaXMucHJlZml4U3VtVmFsaWRJbmRleFswXSsxKSksITApfXNldFZhbHVlKGUsdCl7cmV0dXJuIGU9YXQoZSksdD1hdCh0KSx0aGlzLnZhbHVlc1tlXSE9PXQmJih0aGlzLnZhbHVlc1tlXT10LGUtMTx0aGlzLnByZWZpeFN1bVZhbGlkSW5kZXhbMF0mJih0aGlzLnByZWZpeFN1bVZhbGlkSW5kZXhbMF09ZS0xKSwhMCl9cmVtb3ZlVmFsdWVzKGUsdCl7ZT1hdChlKSx0PWF0KHQpO2NvbnN0IG49dGhpcy52YWx1ZXMscj10aGlzLnByZWZpeFN1bTtpZihlPj1uLmxlbmd0aClyZXR1cm4hMTtjb25zdCBpPW4ubGVuZ3RoLWU7cmV0dXJuIHQ+PWkmJih0PWkpLDAhPT10JiYodGhpcy52YWx1ZXM9bmV3IFVpbnQzMkFycmF5KG4ubGVuZ3RoLXQpLHRoaXMudmFsdWVzLnNldChuLnN1YmFycmF5KDAsZSksMCksdGhpcy52YWx1ZXMuc2V0KG4uc3ViYXJyYXkoZSt0KSxlKSx0aGlzLnByZWZpeFN1bT1uZXcgVWludDMyQXJyYXkodGhpcy52YWx1ZXMubGVuZ3RoKSxlLTE8dGhpcy5wcmVmaXhTdW1WYWxpZEluZGV4WzBdJiYodGhpcy5wcmVmaXhTdW1WYWxpZEluZGV4WzBdPWUtMSksdGhpcy5wcmVmaXhTdW1WYWxpZEluZGV4WzBdPj0wJiZ0aGlzLnByZWZpeFN1bS5zZXQoci5zdWJhcnJheSgwLHRoaXMucHJlZml4U3VtVmFsaWRJbmRleFswXSsxKSksITApfWdldFRvdGFsU3VtKCl7cmV0dXJuIDA9PT10aGlzLnZhbHVlcy5sZW5ndGg/MDp0aGlzLl9nZXRQcmVmaXhTdW0odGhpcy52YWx1ZXMubGVuZ3RoLTEpfWdldFByZWZpeFN1bShlKXtyZXR1cm4gZTwwPzA6KGU9YXQoZSksdGhpcy5fZ2V0UHJlZml4U3VtKGUpKX1fZ2V0UHJlZml4U3VtKGUpe2lmKGU8PXRoaXMucHJlZml4U3VtVmFsaWRJbmRleFswXSlyZXR1cm4gdGhpcy5wcmVmaXhTdW1bZV07bGV0IHQ9dGhpcy5wcmVmaXhTdW1WYWxpZEluZGV4WzBdKzE7MD09PXQmJih0aGlzLnByZWZpeFN1bVswXT10aGlzLnZhbHVlc1swXSx0KyspLGU+PXRoaXMudmFsdWVzLmxlbmd0aCYmKGU9dGhpcy52YWx1ZXMubGVuZ3RoLTEpO2ZvcihsZXQgbj10O248PWU7bisrKXRoaXMucHJlZml4U3VtW25dPXRoaXMucHJlZml4U3VtW24tMV0rdGhpcy52YWx1ZXNbbl07cmV0dXJuIHRoaXMucHJlZml4U3VtVmFsaWRJbmRleFswXT1NYXRoLm1heCh0aGlzLnByZWZpeFN1bVZhbGlkSW5kZXhbMF0sZSksdGhpcy5wcmVmaXhTdW1bZV19Z2V0SW5kZXhPZihlKXtlPU1hdGguZmxvb3IoZSksdGhpcy5nZXRUb3RhbFN1bSgpO2xldCB0PTAsbj10aGlzLnZhbHVlcy5sZW5ndGgtMSxyPTAsaT0wLHM9MDtmb3IoO3Q8PW47KWlmKHI9dCsobi10KS8yfDAsaT10aGlzLnByZWZpeFN1bVtyXSxzPWktdGhpcy52YWx1ZXNbcl0sZTxzKW49ci0xO2Vsc2V7aWYoIShlPj1pKSlicmVhazt0PXIrMX1yZXR1cm4gbmV3IHV0KHIsZS1zKX19Y2xhc3MgdXR7Y29uc3RydWN0b3IoZSx0KXt0aGlzLmluZGV4PWUsdGhpcy5yZW1haW5kZXI9dCx0aGlzLl9wcmVmaXhTdW1JbmRleE9mUmVzdWx0QnJhbmQ9dm9pZCAwLHRoaXMuaW5kZXg9ZSx0aGlzLnJlbWFpbmRlcj10fX1jbGFzcyBodHtjb25zdHJ1Y3RvcihlLHQsbixyKXt0aGlzLl91cmk9ZSx0aGlzLl9saW5lcz10LHRoaXMuX2VvbD1uLHRoaXMuX3ZlcnNpb25JZD1yLHRoaXMuX2xpbmVTdGFydHM9bnVsbCx0aGlzLl9jYWNoZWRUZXh0VmFsdWU9bnVsbH1kaXNwb3NlKCl7dGhpcy5fbGluZXMubGVuZ3RoPTB9Z2V0IHZlcnNpb24oKXtyZXR1cm4gdGhpcy5fdmVyc2lvbklkfWdldFRleHQoKXtyZXR1cm4gbnVsbD09PXRoaXMuX2NhY2hlZFRleHRWYWx1ZSYmKHRoaXMuX2NhY2hlZFRleHRWYWx1ZT10aGlzLl9saW5lcy5qb2luKHRoaXMuX2VvbCkpLHRoaXMuX2NhY2hlZFRleHRWYWx1ZX1vbkV2ZW50cyhlKXtlLmVvbCYmZS5lb2whPT10aGlzLl9lb2wmJih0aGlzLl9lb2w9ZS5lb2wsdGhpcy5fbGluZVN0YXJ0cz1udWxsKTtjb25zdCB0PWUuY2hhbmdlcztmb3IoY29uc3QgZSBvZiB0KXRoaXMuX2FjY2VwdERlbGV0ZVJhbmdlKGUucmFuZ2UpLHRoaXMuX2FjY2VwdEluc2VydFRleHQobmV3IHJ0KGUucmFuZ2Uuc3RhcnRMaW5lTnVtYmVyLGUucmFuZ2Uuc3RhcnRDb2x1bW4pLGUudGV4dCk7dGhpcy5fdmVyc2lvbklkPWUudmVyc2lvbklkLHRoaXMuX2NhY2hlZFRleHRWYWx1ZT1udWxsfV9lbnN1cmVMaW5lU3RhcnRzKCl7aWYoIXRoaXMuX2xpbmVTdGFydHMpe2NvbnN0IGU9dGhpcy5fZW9sLmxlbmd0aCx0PXRoaXMuX2xpbmVzLmxlbmd0aCxuPW5ldyBVaW50MzJBcnJheSh0KTtmb3IobGV0IHI9MDtyPHQ7cisrKW5bcl09dGhpcy5fbGluZXNbcl0ubGVuZ3RoK2U7dGhpcy5fbGluZVN0YXJ0cz1uZXcgbHQobil9fV9zZXRMaW5lVGV4dChlLHQpe3RoaXMuX2xpbmVzW2VdPXQsdGhpcy5fbGluZVN0YXJ0cyYmdGhpcy5fbGluZVN0YXJ0cy5zZXRWYWx1ZShlLHRoaXMuX2xpbmVzW2VdLmxlbmd0aCt0aGlzLl9lb2wubGVuZ3RoKX1fYWNjZXB0RGVsZXRlUmFuZ2UoZSl7aWYoZS5zdGFydExpbmVOdW1iZXIhPT1lLmVuZExpbmVOdW1iZXIpdGhpcy5fc2V0TGluZVRleHQoZS5zdGFydExpbmVOdW1iZXItMSx0aGlzLl9saW5lc1tlLnN0YXJ0TGluZU51bWJlci0xXS5zdWJzdHJpbmcoMCxlLnN0YXJ0Q29sdW1uLTEpK3RoaXMuX2xpbmVzW2UuZW5kTGluZU51bWJlci0xXS5zdWJzdHJpbmcoZS5lbmRDb2x1bW4tMSkpLHRoaXMuX2xpbmVzLnNwbGljZShlLnN0YXJ0TGluZU51bWJlcixlLmVuZExpbmVOdW1iZXItZS5zdGFydExpbmVOdW1iZXIpLHRoaXMuX2xpbmVTdGFydHMmJnRoaXMuX2xpbmVTdGFydHMucmVtb3ZlVmFsdWVzKGUuc3RhcnRMaW5lTnVtYmVyLGUuZW5kTGluZU51bWJlci1lLnN0YXJ0TGluZU51bWJlcik7ZWxzZXtpZihlLnN0YXJ0Q29sdW1uPT09ZS5lbmRDb2x1bW4pcmV0dXJuO3RoaXMuX3NldExpbmVUZXh0KGUuc3RhcnRMaW5lTnVtYmVyLTEsdGhpcy5fbGluZXNbZS5zdGFydExpbmVOdW1iZXItMV0uc3Vic3RyaW5nKDAsZS5zdGFydENvbHVtbi0xKSt0aGlzLl9saW5lc1tlLnN0YXJ0TGluZU51bWJlci0xXS5zdWJzdHJpbmcoZS5lbmRDb2x1bW4tMSkpfX1fYWNjZXB0SW5zZXJ0VGV4dChlLHQpe2lmKDA9PT10Lmxlbmd0aClyZXR1cm47Y29uc3Qgbj10LnNwbGl0KC9cclxufFxyfFxuLyk7aWYoMT09PW4ubGVuZ3RoKXJldHVybiB2b2lkIHRoaXMuX3NldExpbmVUZXh0KGUubGluZU51bWJlci0xLHRoaXMuX2xpbmVzW2UubGluZU51bWJlci0xXS5zdWJzdHJpbmcoMCxlLmNvbHVtbi0xKStuWzBdK3RoaXMuX2xpbmVzW2UubGluZU51bWJlci0xXS5zdWJzdHJpbmcoZS5jb2x1bW4tMSkpO25bbi5sZW5ndGgtMV0rPXRoaXMuX2xpbmVzW2UubGluZU51bWJlci0xXS5zdWJzdHJpbmcoZS5jb2x1bW4tMSksdGhpcy5fc2V0TGluZVRleHQoZS5saW5lTnVtYmVyLTEsdGhpcy5fbGluZXNbZS5saW5lTnVtYmVyLTFdLnN1YnN0cmluZygwLGUuY29sdW1uLTEpK25bMF0pO2NvbnN0IHI9bmV3IFVpbnQzMkFycmF5KG4ubGVuZ3RoLTEpO2ZvcihsZXQgdD0xO3Q8bi5sZW5ndGg7dCsrKXRoaXMuX2xpbmVzLnNwbGljZShlLmxpbmVOdW1iZXIrdC0xLDAsblt0XSksclt0LTFdPW5bdF0ubGVuZ3RoK3RoaXMuX2VvbC5sZW5ndGg7dGhpcy5fbGluZVN0YXJ0cyYmdGhpcy5fbGluZVN0YXJ0cy5pbnNlcnRWYWx1ZXMoZS5saW5lTnVtYmVyLHIpfX1jb25zdCBjdD1mdW5jdGlvbihlPSIiKXtsZXQgdD0iKC0/XFxkKlxcLlxcZFxcdyopfChbXiI7Zm9yKGNvbnN0IG4gb2YiYH4hQCMkJV4mKigpLT0rW3tdfVxcfDs6J1wiLC48Pi8/IillLmluZGV4T2Yobik+PTB8fCh0Kz0iXFwiK24pO3JldHVybiB0Kz0iXFxzXSspIixuZXcgUmVnRXhwKHQsImciKX0oKTtjb25zdCBkdD1uZXcgcDtmdW5jdGlvbiBtdChlLHQsbixyLGkpe2lmKGl8fChpPXUuZmlyc3QoZHQpKSxuLmxlbmd0aD5pLm1heExlbil7bGV0IHM9ZS1pLm1heExlbi8yO3JldHVybiBzPDA/cz0wOnIrPXMsbXQoZSx0LG49bi5zdWJzdHJpbmcocyxlK2kubWF4TGVuLzIpLHIsaSl9Y29uc3Qgcz1EYXRlLm5vdygpLG89ZS0xLXI7bGV0IGE9LTEsbD1udWxsO2ZvcihsZXQgZT0xOyEoRGF0ZS5ub3coKS1zPj1pLnRpbWVCdWRnZXQpO2UrKyl7Y29uc3Qgcj1vLWkud2luZG93U2l6ZSplO3QubGFzdEluZGV4PU1hdGgubWF4KDAscik7Y29uc3Qgcz1ndCh0LG4sbyxhKTtpZighcyYmbClicmVhaztpZihsPXMscjw9MClicmVhazthPXJ9aWYobCl7Y29uc3QgZT17d29yZDpsWzBdLHN0YXJ0Q29sdW1uOnIrMStsLmluZGV4LGVuZENvbHVtbjpyKzErbC5pbmRleCtsWzBdLmxlbmd0aH07cmV0dXJuIHQubGFzdEluZGV4PTAsZX1yZXR1cm4gbnVsbH1mdW5jdGlvbiBndChlLHQsbixyKXtsZXQgaTtmb3IoO2k9ZS5leGVjKHQpOyl7Y29uc3QgdD1pLmluZGV4fHwwO2lmKHQ8PW4mJmUubGFzdEluZGV4Pj1uKXJldHVybiBpO2lmKHI+MCYmdD5yKXJldHVybiBudWxsfXJldHVybiBudWxsfWR0LnVuc2hpZnQoe21heExlbjoxZTMsd2luZG93U2l6ZToxNSx0aW1lQnVkZ2V0OjE1MH0pO2NsYXNzIGZ0e2NvbnN0cnVjdG9yKGUpe2NvbnN0IHQ9b3QoZSk7dGhpcy5fZGVmYXVsdFZhbHVlPXQsdGhpcy5fYXNjaWlNYXA9ZnQuX2NyZWF0ZUFzY2lpTWFwKHQpLHRoaXMuX21hcD1uZXcgTWFwfXN0YXRpYyBfY3JlYXRlQXNjaWlNYXAoZSl7Y29uc3QgdD1uZXcgVWludDhBcnJheSgyNTYpO3JldHVybiB0LmZpbGwoZSksdH1zZXQoZSx0KXtjb25zdCBuPW90KHQpO2U+PTAmJmU8MjU2P3RoaXMuX2FzY2lpTWFwW2VdPW46dGhpcy5fbWFwLnNldChlLG4pfWdldChlKXtyZXR1cm4gZT49MCYmZTwyNTY/dGhpcy5fYXNjaWlNYXBbZV06dGhpcy5fbWFwLmdldChlKXx8dGhpcy5fZGVmYXVsdFZhbHVlfWNsZWFyKCl7dGhpcy5fYXNjaWlNYXAuZmlsbCh0aGlzLl9kZWZhdWx0VmFsdWUpLHRoaXMuX21hcC5jbGVhcigpfX1jbGFzcyBwdHtjb25zdHJ1Y3RvcihlLHQsbil7Y29uc3Qgcj1uZXcgVWludDhBcnJheShlKnQpO2ZvcihsZXQgaT0wLHM9ZSp0O2k8cztpKyspcltpXT1uO3RoaXMuX2RhdGE9cix0aGlzLnJvd3M9ZSx0aGlzLmNvbHM9dH1nZXQoZSx0KXtyZXR1cm4gdGhpcy5fZGF0YVtlKnRoaXMuY29scyt0XX1zZXQoZSx0LG4pe3RoaXMuX2RhdGFbZSp0aGlzLmNvbHMrdF09bn19Y2xhc3MgYnR7Y29uc3RydWN0b3IoZSl7bGV0IHQ9MCxuPTA7Zm9yKGxldCByPTAsaT1lLmxlbmd0aDtyPGk7cisrKXtjb25zdFtpLHMsb109ZVtyXTtzPnQmJih0PXMpLGk+biYmKG49aSksbz5uJiYobj1vKX10KyssbisrO2NvbnN0IHI9bmV3IHB0KG4sdCwwKTtmb3IobGV0IHQ9MCxuPWUubGVuZ3RoO3Q8bjt0Kyspe2NvbnN0W24saSxzXT1lW3RdO3Iuc2V0KG4saSxzKX10aGlzLl9zdGF0ZXM9cix0aGlzLl9tYXhDaGFyQ29kZT10fW5leHRTdGF0ZShlLHQpe3JldHVybiB0PDB8fHQ+PXRoaXMuX21heENoYXJDb2RlPzA6dGhpcy5fc3RhdGVzLmdldChlLHQpfX1sZXQgX3Q9bnVsbDtsZXQgQ3Q9bnVsbDtjbGFzcyB5dHtzdGF0aWMgX2NyZWF0ZUxpbmsoZSx0LG4scixpKXtsZXQgcz1pLTE7ZG97Y29uc3Qgbj10LmNoYXJDb2RlQXQocyk7aWYoMiE9PWUuZ2V0KG4pKWJyZWFrO3MtLX13aGlsZShzPnIpO2lmKHI+MCl7Y29uc3QgZT10LmNoYXJDb2RlQXQoci0xKSxuPXQuY2hhckNvZGVBdChzKTsoNDA9PT1lJiY0MT09PW58fDkxPT09ZSYmOTM9PT1ufHwxMjM9PT1lJiYxMjU9PT1uKSYmcy0tfXJldHVybntyYW5nZTp7c3RhcnRMaW5lTnVtYmVyOm4sc3RhcnRDb2x1bW46cisxLGVuZExpbmVOdW1iZXI6bixlbmRDb2x1bW46cysyfSx1cmw6dC5zdWJzdHJpbmcocixzKzEpfX1zdGF0aWMgY29tcHV0ZUxpbmtzKGUsdD1mdW5jdGlvbigpe3JldHVybiBudWxsPT09X3QmJihfdD1uZXcgYnQoW1sxLDEwNCwyXSxbMSw3MiwyXSxbMSwxMDIsNl0sWzEsNzAsNl0sWzIsMTE2LDNdLFsyLDg0LDNdLFszLDExNiw0XSxbMyw4NCw0XSxbNCwxMTIsNV0sWzQsODAsNV0sWzUsMTE1LDldLFs1LDgzLDldLFs1LDU4LDEwXSxbNiwxMDUsN10sWzYsNzMsN10sWzcsMTA4LDhdLFs3LDc2LDhdLFs4LDEwMSw5XSxbOCw2OSw5XSxbOSw1OCwxMF0sWzEwLDQ3LDExXSxbMTEsNDcsMTJdXSkpLF90fSgpKXtjb25zdCBuPWZ1bmN0aW9uKCl7aWYobnVsbD09PUN0KXtDdD1uZXcgZnQoMCk7Y29uc3QgZT0iIFx0PD4nXCLjgIHjgILvvaHvvaTvvIzvvI7vvJrvvJvigJjjgIjjgIzjgI7jgJTvvIjvvLvvvZvvvaLvvaPvvZ3vvL3vvInjgJXjgI/jgI3jgInigJnvvYDvvZ7igKYiO2ZvcihsZXQgdD0wO3Q8ZS5sZW5ndGg7dCsrKUN0LnNldChlLmNoYXJDb2RlQXQodCksMSk7Y29uc3QgdD0iLiw7OiI7Zm9yKGxldCBlPTA7ZTx0Lmxlbmd0aDtlKyspQ3Quc2V0KHQuY2hhckNvZGVBdChlKSwyKX1yZXR1cm4gQ3R9KCkscj1bXTtmb3IobGV0IGk9MSxzPWUuZ2V0TGluZUNvdW50KCk7aTw9cztpKyspe2NvbnN0IHM9ZS5nZXRMaW5lQ29udGVudChpKSxvPXMubGVuZ3RoO2xldCBhPTAsbD0wLHU9MCxoPTEsYz0hMSxkPSExLG09ITEsZz0hMTtmb3IoO2E8bzspe2xldCBlPSExO2NvbnN0IG89cy5jaGFyQ29kZUF0KGEpO2lmKDEzPT09aCl7bGV0IHQ7c3dpdGNoKG8pe2Nhc2UgNDA6Yz0hMCx0PTA7YnJlYWs7Y2FzZSA0MTp0PWM/MDoxO2JyZWFrO2Nhc2UgOTE6bT0hMCxkPSEwLHQ9MDticmVhaztjYXNlIDkzOm09ITEsdD1kPzA6MTticmVhaztjYXNlIDEyMzpnPSEwLHQ9MDticmVhaztjYXNlIDEyNTp0PWc/MDoxO2JyZWFrO2Nhc2UgMzk6Y2FzZSAzNDpjYXNlIDk2OnQ9dT09PW8/MTozOT09PXV8fDM0PT09dXx8OTY9PT11PzA6MTticmVhaztjYXNlIDQyOnQ9NDI9PT11PzE6MDticmVhaztjYXNlIDEyNDp0PTEyND09PXU/MTowO2JyZWFrO2Nhc2UgMzI6dD1tPzA6MTticmVhaztkZWZhdWx0OnQ9bi5nZXQobyl9MT09PXQmJihyLnB1c2goeXQuX2NyZWF0ZUxpbmsobixzLGksbCxhKSksZT0hMCl9ZWxzZSBpZigxMj09PWgpe2xldCB0OzkxPT09bz8oZD0hMCx0PTApOnQ9bi5nZXQobyksMT09PXQ/ZT0hMDpoPTEzfWVsc2UgaD10Lm5leHRTdGF0ZShoLG8pLDA9PT1oJiYoZT0hMCk7ZSYmKGg9MSxjPSExLGQ9ITEsZz0hMSxsPWErMSx1PW8pLGErK30xMz09PWgmJnIucHVzaCh5dC5fY3JlYXRlTGluayhuLHMsaSxsLG8pKX1yZXR1cm4gcn19Y2xhc3MgdnR7Y29uc3RydWN0b3IoKXt0aGlzLl9kZWZhdWx0VmFsdWVTZXQ9W1sidHJ1ZSIsImZhbHNlIl0sWyJUcnVlIiwiRmFsc2UiXSxbIlByaXZhdGUiLCJQdWJsaWMiLCJGcmllbmQiLCJSZWFkT25seSIsIlBhcnRpYWwiLCJQcm90ZWN0ZWQiLCJXcml0ZU9ubHkiXSxbInB1YmxpYyIsInByb3RlY3RlZCIsInByaXZhdGUiXV19bmF2aWdhdGVWYWx1ZVNldChlLHQsbixyLGkpe2lmKGUmJnQpe2NvbnN0IG49dGhpcy5kb05hdmlnYXRlVmFsdWVTZXQodCxpKTtpZihuKXJldHVybntyYW5nZTplLHZhbHVlOm59fWlmKG4mJnIpe2NvbnN0IGU9dGhpcy5kb05hdmlnYXRlVmFsdWVTZXQocixpKTtpZihlKXJldHVybntyYW5nZTpuLHZhbHVlOmV9fXJldHVybiBudWxsfWRvTmF2aWdhdGVWYWx1ZVNldChlLHQpe2NvbnN0IG49dGhpcy5udW1iZXJSZXBsYWNlKGUsdCk7cmV0dXJuIG51bGwhPT1uP246dGhpcy50ZXh0UmVwbGFjZShlLHQpfW51bWJlclJlcGxhY2UoZSx0KXtjb25zdCBuPU1hdGgucG93KDEwLGUubGVuZ3RoLShlLmxhc3RJbmRleE9mKCIuIikrMSkpO2xldCByPU51bWJlcihlKTtjb25zdCBpPXBhcnNlRmxvYXQoZSk7cmV0dXJuIGlzTmFOKHIpfHxpc05hTihpKXx8ciE9PWk/bnVsbDowIT09cnx8dD8ocj1NYXRoLmZsb29yKHIqbikscis9dD9uOi1uLFN0cmluZyhyL24pKTpudWxsfXRleHRSZXBsYWNlKGUsdCl7cmV0dXJuIHRoaXMudmFsdWVTZXRzUmVwbGFjZSh0aGlzLl9kZWZhdWx0VmFsdWVTZXQsZSx0KX12YWx1ZVNldHNSZXBsYWNlKGUsdCxuKXtsZXQgcj1udWxsO2ZvcihsZXQgaT0wLHM9ZS5sZW5ndGg7bnVsbD09PXImJmk8cztpKyspcj10aGlzLnZhbHVlU2V0UmVwbGFjZShlW2ldLHQsbik7cmV0dXJuIHJ9dmFsdWVTZXRSZXBsYWNlKGUsdCxuKXtsZXQgcj1lLmluZGV4T2YodCk7cmV0dXJuIHI+PTA/KHIrPW4/MTotMSxyPDA/cj1lLmxlbmd0aC0xOnIlPWUubGVuZ3RoLGVbcl0pOm51bGx9fXZ0LklOU1RBTkNFPW5ldyB2dDtjb25zdCBMdD1PYmplY3QuZnJlZXplKChmdW5jdGlvbihlLHQpe2NvbnN0IG49c2V0VGltZW91dChlLmJpbmQodCksMCk7cmV0dXJue2Rpc3Bvc2UoKXtjbGVhclRpbWVvdXQobil9fX0pKTt2YXIgd3Q7IWZ1bmN0aW9uKGUpe2UuaXNDYW5jZWxsYXRpb25Ub2tlbj1mdW5jdGlvbih0KXtyZXR1cm4gdD09PWUuTm9uZXx8dD09PWUuQ2FuY2VsbGVkfHwodCBpbnN0YW5jZW9mIFN0fHwhKCF0fHwib2JqZWN0IiE9dHlwZW9mIHQpJiYoImJvb2xlYW4iPT10eXBlb2YgdC5pc0NhbmNlbGxhdGlvblJlcXVlc3RlZCYmImZ1bmN0aW9uIj09dHlwZW9mIHQub25DYW5jZWxsYXRpb25SZXF1ZXN0ZWQpKX0sZS5Ob25lPU9iamVjdC5mcmVlemUoe2lzQ2FuY2VsbGF0aW9uUmVxdWVzdGVkOiExLG9uQ2FuY2VsbGF0aW9uUmVxdWVzdGVkOlYuTm9uZX0pLGUuQ2FuY2VsbGVkPU9iamVjdC5mcmVlemUoe2lzQ2FuY2VsbGF0aW9uUmVxdWVzdGVkOiEwLG9uQ2FuY2VsbGF0aW9uUmVxdWVzdGVkOkx0fSl9KHd0fHwod3Q9e30pKTtjbGFzcyBTdHtjb25zdHJ1Y3Rvcigpe3RoaXMuX2lzQ2FuY2VsbGVkPSExLHRoaXMuX2VtaXR0ZXI9bnVsbH1jYW5jZWwoKXt0aGlzLl9pc0NhbmNlbGxlZHx8KHRoaXMuX2lzQ2FuY2VsbGVkPSEwLHRoaXMuX2VtaXR0ZXImJih0aGlzLl9lbWl0dGVyLmZpcmUodm9pZCAwKSx0aGlzLmRpc3Bvc2UoKSkpfWdldCBpc0NhbmNlbGxhdGlvblJlcXVlc3RlZCgpe3JldHVybiB0aGlzLl9pc0NhbmNlbGxlZH1nZXQgb25DYW5jZWxsYXRpb25SZXF1ZXN0ZWQoKXtyZXR1cm4gdGhpcy5faXNDYW5jZWxsZWQ/THQ6KHRoaXMuX2VtaXR0ZXJ8fCh0aGlzLl9lbWl0dGVyPW5ldyBIKSx0aGlzLl9lbWl0dGVyLmV2ZW50KX1kaXNwb3NlKCl7dGhpcy5fZW1pdHRlciYmKHRoaXMuX2VtaXR0ZXIuZGlzcG9zZSgpLHRoaXMuX2VtaXR0ZXI9bnVsbCl9fWNsYXNzIE50e2NvbnN0cnVjdG9yKGUpe3RoaXMuX3Rva2VuPXZvaWQgMCx0aGlzLl9wYXJlbnRMaXN0ZW5lcj12b2lkIDAsdGhpcy5fcGFyZW50TGlzdGVuZXI9ZSYmZS5vbkNhbmNlbGxhdGlvblJlcXVlc3RlZCh0aGlzLmNhbmNlbCx0aGlzKX1nZXQgdG9rZW4oKXtyZXR1cm4gdGhpcy5fdG9rZW58fCh0aGlzLl90b2tlbj1uZXcgU3QpLHRoaXMuX3Rva2VufWNhbmNlbCgpe3RoaXMuX3Rva2VuP3RoaXMuX3Rva2VuIGluc3RhbmNlb2YgU3QmJnRoaXMuX3Rva2VuLmNhbmNlbCgpOnRoaXMuX3Rva2VuPXd0LkNhbmNlbGxlZH1kaXNwb3NlKGU9ITEpe3ZhciB0O2UmJnRoaXMuY2FuY2VsKCksbnVsbD09PSh0PXRoaXMuX3BhcmVudExpc3RlbmVyKXx8dm9pZCAwPT09dHx8dC5kaXNwb3NlKCksdGhpcy5fdG9rZW4/dGhpcy5fdG9rZW4gaW5zdGFuY2VvZiBTdCYmdGhpcy5fdG9rZW4uZGlzcG9zZSgpOnRoaXMuX3Rva2VuPXd0Lk5vbmV9fWNsYXNzIEV0e2NvbnN0cnVjdG9yKCl7dGhpcy5fa2V5Q29kZVRvU3RyPVtdLHRoaXMuX3N0clRvS2V5Q29kZT1PYmplY3QuY3JlYXRlKG51bGwpfWRlZmluZShlLHQpe3RoaXMuX2tleUNvZGVUb1N0cltlXT10LHRoaXMuX3N0clRvS2V5Q29kZVt0LnRvTG93ZXJDYXNlKCldPWV9a2V5Q29kZVRvU3RyKGUpe3JldHVybiB0aGlzLl9rZXlDb2RlVG9TdHJbZV19c3RyVG9LZXlDb2RlKGUpe3JldHVybiB0aGlzLl9zdHJUb0tleUNvZGVbZS50b0xvd2VyQ2FzZSgpXXx8MH19Y29uc3QgQXQ9bmV3IEV0LFJ0PW5ldyBFdCx4dD1uZXcgRXQsTXQ9bmV3IEFycmF5KDIzMCksa3Q9T2JqZWN0LmNyZWF0ZShudWxsKSxPdD1PYmplY3QuY3JlYXRlKG51bGwpO3ZhciBUdDshZnVuY3Rpb24oKXtjb25zdCBlPSIiLHQ9W1sxLDAsIk5vbmUiLDAsInVua25vd24iLDAsIlZLX1VOS05PV04iLGUsZV0sWzEsMSwiSHlwZXIiLDAsZSwwLGUsZSxlXSxbMSwyLCJTdXBlciIsMCxlLDAsZSxlLGVdLFsxLDMsIkZuIiwwLGUsMCxlLGUsZV0sWzEsNCwiRm5Mb2NrIiwwLGUsMCxlLGUsZV0sWzEsNSwiU3VzcGVuZCIsMCxlLDAsZSxlLGVdLFsxLDYsIlJlc3VtZSIsMCxlLDAsZSxlLGVdLFsxLDcsIlR1cmJvIiwwLGUsMCxlLGUsZV0sWzEsOCwiU2xlZXAiLDAsZSwwLCJWS19TTEVFUCIsZSxlXSxbMSw5LCJXYWtlVXAiLDAsZSwwLGUsZSxlXSxbMCwxMCwiS2V5QSIsMzEsIkEiLDY1LCJWS19BIixlLGVdLFswLDExLCJLZXlCIiwzMiwiQiIsNjYsIlZLX0IiLGUsZV0sWzAsMTIsIktleUMiLDMzLCJDIiw2NywiVktfQyIsZSxlXSxbMCwxMywiS2V5RCIsMzQsIkQiLDY4LCJWS19EIixlLGVdLFswLDE0LCJLZXlFIiwzNSwiRSIsNjksIlZLX0UiLGUsZV0sWzAsMTUsIktleUYiLDM2LCJGIiw3MCwiVktfRiIsZSxlXSxbMCwxNiwiS2V5RyIsMzcsIkciLDcxLCJWS19HIixlLGVdLFswLDE3LCJLZXlIIiwzOCwiSCIsNzIsIlZLX0giLGUsZV0sWzAsMTgsIktleUkiLDM5LCJJIiw3MywiVktfSSIsZSxlXSxbMCwxOSwiS2V5SiIsNDAsIkoiLDc0LCJWS19KIixlLGVdLFswLDIwLCJLZXlLIiw0MSwiSyIsNzUsIlZLX0siLGUsZV0sWzAsMjEsIktleUwiLDQyLCJMIiw3NiwiVktfTCIsZSxlXSxbMCwyMiwiS2V5TSIsNDMsIk0iLDc3LCJWS19NIixlLGVdLFswLDIzLCJLZXlOIiw0NCwiTiIsNzgsIlZLX04iLGUsZV0sWzAsMjQsIktleU8iLDQ1LCJPIiw3OSwiVktfTyIsZSxlXSxbMCwyNSwiS2V5UCIsNDYsIlAiLDgwLCJWS19QIixlLGVdLFswLDI2LCJLZXlRIiw0NywiUSIsODEsIlZLX1EiLGUsZV0sWzAsMjcsIktleVIiLDQ4LCJSIiw4MiwiVktfUiIsZSxlXSxbMCwyOCwiS2V5UyIsNDksIlMiLDgzLCJWS19TIixlLGVdLFswLDI5LCJLZXlUIiw1MCwiVCIsODQsIlZLX1QiLGUsZV0sWzAsMzAsIktleVUiLDUxLCJVIiw4NSwiVktfVSIsZSxlXSxbMCwzMSwiS2V5ViIsNTIsIlYiLDg2LCJWS19WIixlLGVdLFswLDMyLCJLZXlXIiw1MywiVyIsODcsIlZLX1ciLGUsZV0sWzAsMzMsIktleVgiLDU0LCJYIiw4OCwiVktfWCIsZSxlXSxbMCwzNCwiS2V5WSIsNTUsIlkiLDg5LCJWS19ZIixlLGVdLFswLDM1LCJLZXlaIiw1NiwiWiIsOTAsIlZLX1oiLGUsZV0sWzAsMzYsIkRpZ2l0MSIsMjIsIjEiLDQ5LCJWS18xIixlLGVdLFswLDM3LCJEaWdpdDIiLDIzLCIyIiw1MCwiVktfMiIsZSxlXSxbMCwzOCwiRGlnaXQzIiwyNCwiMyIsNTEsIlZLXzMiLGUsZV0sWzAsMzksIkRpZ2l0NCIsMjUsIjQiLDUyLCJWS180IixlLGVdLFswLDQwLCJEaWdpdDUiLDI2LCI1Iiw1MywiVktfNSIsZSxlXSxbMCw0MSwiRGlnaXQ2IiwyNywiNiIsNTQsIlZLXzYiLGUsZV0sWzAsNDIsIkRpZ2l0NyIsMjgsIjciLDU1LCJWS183IixlLGVdLFswLDQzLCJEaWdpdDgiLDI5LCI4Iiw1NiwiVktfOCIsZSxlXSxbMCw0NCwiRGlnaXQ5IiwzMCwiOSIsNTcsIlZLXzkiLGUsZV0sWzAsNDUsIkRpZ2l0MCIsMjEsIjAiLDQ4LCJWS18wIixlLGVdLFsxLDQ2LCJFbnRlciIsMywiRW50ZXIiLDEzLCJWS19SRVRVUk4iLGUsZV0sWzEsNDcsIkVzY2FwZSIsOSwiRXNjYXBlIiwyNywiVktfRVNDQVBFIixlLGVdLFsxLDQ4LCJCYWNrc3BhY2UiLDEsIkJhY2tzcGFjZSIsOCwiVktfQkFDSyIsZSxlXSxbMSw0OSwiVGFiIiwyLCJUYWIiLDksIlZLX1RBQiIsZSxlXSxbMSw1MCwiU3BhY2UiLDEwLCJTcGFjZSIsMzIsIlZLX1NQQUNFIixlLGVdLFswLDUxLCJNaW51cyIsODgsIi0iLDE4OSwiVktfT0VNX01JTlVTIiwiLSIsIk9FTV9NSU5VUyJdLFswLDUyLCJFcXVhbCIsODYsIj0iLDE4NywiVktfT0VNX1BMVVMiLCI9IiwiT0VNX1BMVVMiXSxbMCw1MywiQnJhY2tldExlZnQiLDkyLCJbIiwyMTksIlZLX09FTV80IiwiWyIsIk9FTV80Il0sWzAsNTQsIkJyYWNrZXRSaWdodCIsOTQsIl0iLDIyMSwiVktfT0VNXzYiLCJdIiwiT0VNXzYiXSxbMCw1NSwiQmFja3NsYXNoIiw5MywiXFwiLDIyMCwiVktfT0VNXzUiLCJcXCIsIk9FTV81Il0sWzAsNTYsIkludGxIYXNoIiwwLGUsMCxlLGUsZV0sWzAsNTcsIlNlbWljb2xvbiIsODUsIjsiLDE4NiwiVktfT0VNXzEiLCI7IiwiT0VNXzEiXSxbMCw1OCwiUXVvdGUiLDk1LCInIiwyMjIsIlZLX09FTV83IiwiJyIsIk9FTV83Il0sWzAsNTksIkJhY2txdW90ZSIsOTEsImAiLDE5MiwiVktfT0VNXzMiLCJgIiwiT0VNXzMiXSxbMCw2MCwiQ29tbWEiLDg3LCIsIiwxODgsIlZLX09FTV9DT01NQSIsIiwiLCJPRU1fQ09NTUEiXSxbMCw2MSwiUGVyaW9kIiw4OSwiLiIsMTkwLCJWS19PRU1fUEVSSU9EIiwiLiIsIk9FTV9QRVJJT0QiXSxbMCw2MiwiU2xhc2giLDkwLCIvIiwxOTEsIlZLX09FTV8yIiwiLyIsIk9FTV8yIl0sWzEsNjMsIkNhcHNMb2NrIiw4LCJDYXBzTG9jayIsMjAsIlZLX0NBUElUQUwiLGUsZV0sWzEsNjQsIkYxIiw1OSwiRjEiLDExMiwiVktfRjEiLGUsZV0sWzEsNjUsIkYyIiw2MCwiRjIiLDExMywiVktfRjIiLGUsZV0sWzEsNjYsIkYzIiw2MSwiRjMiLDExNCwiVktfRjMiLGUsZV0sWzEsNjcsIkY0Iiw2MiwiRjQiLDExNSwiVktfRjQiLGUsZV0sWzEsNjgsIkY1Iiw2MywiRjUiLDExNiwiVktfRjUiLGUsZV0sWzEsNjksIkY2Iiw2NCwiRjYiLDExNywiVktfRjYiLGUsZV0sWzEsNzAsIkY3Iiw2NSwiRjciLDExOCwiVktfRjciLGUsZV0sWzEsNzEsIkY4Iiw2NiwiRjgiLDExOSwiVktfRjgiLGUsZV0sWzEsNzIsIkY5Iiw2NywiRjkiLDEyMCwiVktfRjkiLGUsZV0sWzEsNzMsIkYxMCIsNjgsIkYxMCIsMTIxLCJWS19GMTAiLGUsZV0sWzEsNzQsIkYxMSIsNjksIkYxMSIsMTIyLCJWS19GMTEiLGUsZV0sWzEsNzUsIkYxMiIsNzAsIkYxMiIsMTIzLCJWS19GMTIiLGUsZV0sWzEsNzYsIlByaW50U2NyZWVuIiwwLGUsMCxlLGUsZV0sWzEsNzcsIlNjcm9sbExvY2siLDg0LCJTY3JvbGxMb2NrIiwxNDUsIlZLX1NDUk9MTCIsZSxlXSxbMSw3OCwiUGF1c2UiLDcsIlBhdXNlQnJlYWsiLDE5LCJWS19QQVVTRSIsZSxlXSxbMSw3OSwiSW5zZXJ0IiwxOSwiSW5zZXJ0Iiw0NSwiVktfSU5TRVJUIixlLGVdLFsxLDgwLCJIb21lIiwxNCwiSG9tZSIsMzYsIlZLX0hPTUUiLGUsZV0sWzEsODEsIlBhZ2VVcCIsMTEsIlBhZ2VVcCIsMzMsIlZLX1BSSU9SIixlLGVdLFsxLDgyLCJEZWxldGUiLDIwLCJEZWxldGUiLDQ2LCJWS19ERUxFVEUiLGUsZV0sWzEsODMsIkVuZCIsMTMsIkVuZCIsMzUsIlZLX0VORCIsZSxlXSxbMSw4NCwiUGFnZURvd24iLDEyLCJQYWdlRG93biIsMzQsIlZLX05FWFQiLGUsZV0sWzEsODUsIkFycm93UmlnaHQiLDE3LCJSaWdodEFycm93IiwzOSwiVktfUklHSFQiLCJSaWdodCIsZV0sWzEsODYsIkFycm93TGVmdCIsMTUsIkxlZnRBcnJvdyIsMzcsIlZLX0xFRlQiLCJMZWZ0IixlXSxbMSw4NywiQXJyb3dEb3duIiwxOCwiRG93bkFycm93Iiw0MCwiVktfRE9XTiIsIkRvd24iLGVdLFsxLDg4LCJBcnJvd1VwIiwxNiwiVXBBcnJvdyIsMzgsIlZLX1VQIiwiVXAiLGVdLFsxLDg5LCJOdW1Mb2NrIiw4MywiTnVtTG9jayIsMTQ0LCJWS19OVU1MT0NLIixlLGVdLFsxLDkwLCJOdW1wYWREaXZpZGUiLDExMywiTnVtUGFkX0RpdmlkZSIsMTExLCJWS19ESVZJREUiLGUsZV0sWzEsOTEsIk51bXBhZE11bHRpcGx5IiwxMDgsIk51bVBhZF9NdWx0aXBseSIsMTA2LCJWS19NVUxUSVBMWSIsZSxlXSxbMSw5MiwiTnVtcGFkU3VidHJhY3QiLDExMSwiTnVtUGFkX1N1YnRyYWN0IiwxMDksIlZLX1NVQlRSQUNUIixlLGVdLFsxLDkzLCJOdW1wYWRBZGQiLDEwOSwiTnVtUGFkX0FkZCIsMTA3LCJWS19BREQiLGUsZV0sWzEsOTQsIk51bXBhZEVudGVyIiwzLGUsMCxlLGUsZV0sWzEsOTUsIk51bXBhZDEiLDk5LCJOdW1QYWQxIiw5NywiVktfTlVNUEFEMSIsZSxlXSxbMSw5NiwiTnVtcGFkMiIsMTAwLCJOdW1QYWQyIiw5OCwiVktfTlVNUEFEMiIsZSxlXSxbMSw5NywiTnVtcGFkMyIsMTAxLCJOdW1QYWQzIiw5OSwiVktfTlVNUEFEMyIsZSxlXSxbMSw5OCwiTnVtcGFkNCIsMTAyLCJOdW1QYWQ0IiwxMDAsIlZLX05VTVBBRDQiLGUsZV0sWzEsOTksIk51bXBhZDUiLDEwMywiTnVtUGFkNSIsMTAxLCJWS19OVU1QQUQ1IixlLGVdLFsxLDEwMCwiTnVtcGFkNiIsMTA0LCJOdW1QYWQ2IiwxMDIsIlZLX05VTVBBRDYiLGUsZV0sWzEsMTAxLCJOdW1wYWQ3IiwxMDUsIk51bVBhZDciLDEwMywiVktfTlVNUEFENyIsZSxlXSxbMSwxMDIsIk51bXBhZDgiLDEwNiwiTnVtUGFkOCIsMTA0LCJWS19OVU1QQUQ4IixlLGVdLFsxLDEwMywiTnVtcGFkOSIsMTA3LCJOdW1QYWQ5IiwxMDUsIlZLX05VTVBBRDkiLGUsZV0sWzEsMTA0LCJOdW1wYWQwIiw5OCwiTnVtUGFkMCIsOTYsIlZLX05VTVBBRDAiLGUsZV0sWzEsMTA1LCJOdW1wYWREZWNpbWFsIiwxMTIsIk51bVBhZF9EZWNpbWFsIiwxMTAsIlZLX0RFQ0lNQUwiLGUsZV0sWzAsMTA2LCJJbnRsQmFja3NsYXNoIiw5NywiT0VNXzEwMiIsMjI2LCJWS19PRU1fMTAyIixlLGVdLFsxLDEwNywiQ29udGV4dE1lbnUiLDU4LCJDb250ZXh0TWVudSIsOTMsZSxlLGVdLFsxLDEwOCwiUG93ZXIiLDAsZSwwLGUsZSxlXSxbMSwxMDksIk51bXBhZEVxdWFsIiwwLGUsMCxlLGUsZV0sWzEsMTEwLCJGMTMiLDcxLCJGMTMiLDEyNCwiVktfRjEzIixlLGVdLFsxLDExMSwiRjE0Iiw3MiwiRjE0IiwxMjUsIlZLX0YxNCIsZSxlXSxbMSwxMTIsIkYxNSIsNzMsIkYxNSIsMTI2LCJWS19GMTUiLGUsZV0sWzEsMTEzLCJGMTYiLDc0LCJGMTYiLDEyNywiVktfRjE2IixlLGVdLFsxLDExNCwiRjE3Iiw3NSwiRjE3IiwxMjgsIlZLX0YxNyIsZSxlXSxbMSwxMTUsIkYxOCIsNzYsIkYxOCIsMTI5LCJWS19GMTgiLGUsZV0sWzEsMTE2LCJGMTkiLDc3LCJGMTkiLDEzMCwiVktfRjE5IixlLGVdLFsxLDExNywiRjIwIiw3OCwiRjIwIiwxMzEsIlZLX0YyMCIsZSxlXSxbMSwxMTgsIkYyMSIsNzksIkYyMSIsMTMyLCJWS19GMjEiLGUsZV0sWzEsMTE5LCJGMjIiLDgwLCJGMjIiLDEzMywiVktfRjIyIixlLGVdLFsxLDEyMCwiRjIzIiw4MSwiRjIzIiwxMzQsIlZLX0YyMyIsZSxlXSxbMSwxMjEsIkYyNCIsODIsIkYyNCIsMTM1LCJWS19GMjQiLGUsZV0sWzEsMTIyLCJPcGVuIiwwLGUsMCxlLGUsZV0sWzEsMTIzLCJIZWxwIiwwLGUsMCxlLGUsZV0sWzEsMTI0LCJTZWxlY3QiLDAsZSwwLGUsZSxlXSxbMSwxMjUsIkFnYWluIiwwLGUsMCxlLGUsZV0sWzEsMTI2LCJVbmRvIiwwLGUsMCxlLGUsZV0sWzEsMTI3LCJDdXQiLDAsZSwwLGUsZSxlXSxbMSwxMjgsIkNvcHkiLDAsZSwwLGUsZSxlXSxbMSwxMjksIlBhc3RlIiwwLGUsMCxlLGUsZV0sWzEsMTMwLCJGaW5kIiwwLGUsMCxlLGUsZV0sWzEsMTMxLCJBdWRpb1ZvbHVtZU11dGUiLDExNywiQXVkaW9Wb2x1bWVNdXRlIiwxNzMsIlZLX1ZPTFVNRV9NVVRFIixlLGVdLFsxLDEzMiwiQXVkaW9Wb2x1bWVVcCIsMTE4LCJBdWRpb1ZvbHVtZVVwIiwxNzUsIlZLX1ZPTFVNRV9VUCIsZSxlXSxbMSwxMzMsIkF1ZGlvVm9sdW1lRG93biIsMTE5LCJBdWRpb1ZvbHVtZURvd24iLDE3NCwiVktfVk9MVU1FX0RPV04iLGUsZV0sWzEsMTM0LCJOdW1wYWRDb21tYSIsMTEwLCJOdW1QYWRfU2VwYXJhdG9yIiwxMDgsIlZLX1NFUEFSQVRPUiIsZSxlXSxbMCwxMzUsIkludGxSbyIsMTE1LCJBQk5UX0MxIiwxOTMsIlZLX0FCTlRfQzEiLGUsZV0sWzEsMTM2LCJLYW5hTW9kZSIsMCxlLDAsZSxlLGVdLFswLDEzNywiSW50bFllbiIsMCxlLDAsZSxlLGVdLFsxLDEzOCwiQ29udmVydCIsMCxlLDAsZSxlLGVdLFsxLDEzOSwiTm9uQ29udmVydCIsMCxlLDAsZSxlLGVdLFsxLDE0MCwiTGFuZzEiLDAsZSwwLGUsZSxlXSxbMSwxNDEsIkxhbmcyIiwwLGUsMCxlLGUsZV0sWzEsMTQyLCJMYW5nMyIsMCxlLDAsZSxlLGVdLFsxLDE0MywiTGFuZzQiLDAsZSwwLGUsZSxlXSxbMSwxNDQsIkxhbmc1IiwwLGUsMCxlLGUsZV0sWzEsMTQ1LCJBYm9ydCIsMCxlLDAsZSxlLGVdLFsxLDE0NiwiUHJvcHMiLDAsZSwwLGUsZSxlXSxbMSwxNDcsIk51bXBhZFBhcmVuTGVmdCIsMCxlLDAsZSxlLGVdLFsxLDE0OCwiTnVtcGFkUGFyZW5SaWdodCIsMCxlLDAsZSxlLGVdLFsxLDE0OSwiTnVtcGFkQmFja3NwYWNlIiwwLGUsMCxlLGUsZV0sWzEsMTUwLCJOdW1wYWRNZW1vcnlTdG9yZSIsMCxlLDAsZSxlLGVdLFsxLDE1MSwiTnVtcGFkTWVtb3J5UmVjYWxsIiwwLGUsMCxlLGUsZV0sWzEsMTUyLCJOdW1wYWRNZW1vcnlDbGVhciIsMCxlLDAsZSxlLGVdLFsxLDE1MywiTnVtcGFkTWVtb3J5QWRkIiwwLGUsMCxlLGUsZV0sWzEsMTU0LCJOdW1wYWRNZW1vcnlTdWJ0cmFjdCIsMCxlLDAsZSxlLGVdLFsxLDE1NSwiTnVtcGFkQ2xlYXIiLDEzMSwiQ2xlYXIiLDEyLCJWS19DTEVBUiIsZSxlXSxbMSwxNTYsIk51bXBhZENsZWFyRW50cnkiLDAsZSwwLGUsZSxlXSxbMSwwLGUsNSwiQ3RybCIsMTcsIlZLX0NPTlRST0wiLGUsZV0sWzEsMCxlLDQsIlNoaWZ0IiwxNiwiVktfU0hJRlQiLGUsZV0sWzEsMCxlLDYsIkFsdCIsMTgsIlZLX01FTlUiLGUsZV0sWzEsMCxlLDU3LCJNZXRhIiw5MSwiVktfQ09NTUFORCIsZSxlXSxbMSwxNTcsIkNvbnRyb2xMZWZ0Iiw1LGUsMCwiVktfTENPTlRST0wiLGUsZV0sWzEsMTU4LCJTaGlmdExlZnQiLDQsZSwwLCJWS19MU0hJRlQiLGUsZV0sWzEsMTU5LCJBbHRMZWZ0Iiw2LGUsMCwiVktfTE1FTlUiLGUsZV0sWzEsMTYwLCJNZXRhTGVmdCIsNTcsZSwwLCJWS19MV0lOIixlLGVdLFsxLDE2MSwiQ29udHJvbFJpZ2h0Iiw1LGUsMCwiVktfUkNPTlRST0wiLGUsZV0sWzEsMTYyLCJTaGlmdFJpZ2h0Iiw0LGUsMCwiVktfUlNISUZUIixlLGVdLFsxLDE2MywiQWx0UmlnaHQiLDYsZSwwLCJWS19STUVOVSIsZSxlXSxbMSwxNjQsIk1ldGFSaWdodCIsNTcsZSwwLCJWS19SV0lOIixlLGVdLFsxLDE2NSwiQnJpZ2h0bmVzc1VwIiwwLGUsMCxlLGUsZV0sWzEsMTY2LCJCcmlnaHRuZXNzRG93biIsMCxlLDAsZSxlLGVdLFsxLDE2NywiTWVkaWFQbGF5IiwwLGUsMCxlLGUsZV0sWzEsMTY4LCJNZWRpYVJlY29yZCIsMCxlLDAsZSxlLGVdLFsxLDE2OSwiTWVkaWFGYXN0Rm9yd2FyZCIsMCxlLDAsZSxlLGVdLFsxLDE3MCwiTWVkaWFSZXdpbmQiLDAsZSwwLGUsZSxlXSxbMSwxNzEsIk1lZGlhVHJhY2tOZXh0IiwxMjQsIk1lZGlhVHJhY2tOZXh0IiwxNzYsIlZLX01FRElBX05FWFRfVFJBQ0siLGUsZV0sWzEsMTcyLCJNZWRpYVRyYWNrUHJldmlvdXMiLDEyNSwiTWVkaWFUcmFja1ByZXZpb3VzIiwxNzcsIlZLX01FRElBX1BSRVZfVFJBQ0siLGUsZV0sWzEsMTczLCJNZWRpYVN0b3AiLDEyNiwiTWVkaWFTdG9wIiwxNzgsIlZLX01FRElBX1NUT1AiLGUsZV0sWzEsMTc0LCJFamVjdCIsMCxlLDAsZSxlLGVdLFsxLDE3NSwiTWVkaWFQbGF5UGF1c2UiLDEyNywiTWVkaWFQbGF5UGF1c2UiLDE3OSwiVktfTUVESUFfUExBWV9QQVVTRSIsZSxlXSxbMSwxNzYsIk1lZGlhU2VsZWN0IiwxMjgsIkxhdW5jaE1lZGlhUGxheWVyIiwxODEsIlZLX01FRElBX0xBVU5DSF9NRURJQV9TRUxFQ1QiLGUsZV0sWzEsMTc3LCJMYXVuY2hNYWlsIiwxMjksIkxhdW5jaE1haWwiLDE4MCwiVktfTUVESUFfTEFVTkNIX01BSUwiLGUsZV0sWzEsMTc4LCJMYXVuY2hBcHAyIiwxMzAsIkxhdW5jaEFwcDIiLDE4MywiVktfTUVESUFfTEFVTkNIX0FQUDIiLGUsZV0sWzEsMTc5LCJMYXVuY2hBcHAxIiwwLGUsMCwiVktfTUVESUFfTEFVTkNIX0FQUDEiLGUsZV0sWzEsMTgwLCJTZWxlY3RUYXNrIiwwLGUsMCxlLGUsZV0sWzEsMTgxLCJMYXVuY2hTY3JlZW5TYXZlciIsMCxlLDAsZSxlLGVdLFsxLDE4MiwiQnJvd3NlclNlYXJjaCIsMTIwLCJCcm93c2VyU2VhcmNoIiwxNzAsIlZLX0JST1dTRVJfU0VBUkNIIixlLGVdLFsxLDE4MywiQnJvd3NlckhvbWUiLDEyMSwiQnJvd3NlckhvbWUiLDE3MiwiVktfQlJPV1NFUl9IT01FIixlLGVdLFsxLDE4NCwiQnJvd3NlckJhY2siLDEyMiwiQnJvd3NlckJhY2siLDE2NiwiVktfQlJPV1NFUl9CQUNLIixlLGVdLFsxLDE4NSwiQnJvd3NlckZvcndhcmQiLDEyMywiQnJvd3NlckZvcndhcmQiLDE2NywiVktfQlJPV1NFUl9GT1JXQVJEIixlLGVdLFsxLDE4NiwiQnJvd3NlclN0b3AiLDAsZSwwLCJWS19CUk9XU0VSX1NUT1AiLGUsZV0sWzEsMTg3LCJCcm93c2VyUmVmcmVzaCIsMCxlLDAsIlZLX0JST1dTRVJfUkVGUkVTSCIsZSxlXSxbMSwxODgsIkJyb3dzZXJGYXZvcml0ZXMiLDAsZSwwLCJWS19CUk9XU0VSX0ZBVk9SSVRFUyIsZSxlXSxbMSwxODksIlpvb21Ub2dnbGUiLDAsZSwwLGUsZSxlXSxbMSwxOTAsIk1haWxSZXBseSIsMCxlLDAsZSxlLGVdLFsxLDE5MSwiTWFpbEZvcndhcmQiLDAsZSwwLGUsZSxlXSxbMSwxOTIsIk1haWxTZW5kIiwwLGUsMCxlLGUsZV0sWzEsMCxlLDExNCwiS2V5SW5Db21wb3NpdGlvbiIsMjI5LGUsZSxlXSxbMSwwLGUsMTE2LCJBQk5UX0MyIiwxOTQsIlZLX0FCTlRfQzIiLGUsZV0sWzEsMCxlLDk2LCJPRU1fOCIsMjIzLCJWS19PRU1fOCIsZSxlXSxbMSwwLGUsMCxlLDAsIlZLX0tBTkEiLGUsZV0sWzEsMCxlLDAsZSwwLCJWS19IQU5HVUwiLGUsZV0sWzEsMCxlLDAsZSwwLCJWS19KVU5KQSIsZSxlXSxbMSwwLGUsMCxlLDAsIlZLX0ZJTkFMIixlLGVdLFsxLDAsZSwwLGUsMCwiVktfSEFOSkEiLGUsZV0sWzEsMCxlLDAsZSwwLCJWS19LQU5KSSIsZSxlXSxbMSwwLGUsMCxlLDAsIlZLX0NPTlZFUlQiLGUsZV0sWzEsMCxlLDAsZSwwLCJWS19OT05DT05WRVJUIixlLGVdLFsxLDAsZSwwLGUsMCwiVktfQUNDRVBUIixlLGVdLFsxLDAsZSwwLGUsMCwiVktfTU9ERUNIQU5HRSIsZSxlXSxbMSwwLGUsMCxlLDAsIlZLX1NFTEVDVCIsZSxlXSxbMSwwLGUsMCxlLDAsIlZLX1BSSU5UIixlLGVdLFsxLDAsZSwwLGUsMCwiVktfRVhFQ1VURSIsZSxlXSxbMSwwLGUsMCxlLDAsIlZLX1NOQVBTSE9UIixlLGVdLFsxLDAsZSwwLGUsMCwiVktfSEVMUCIsZSxlXSxbMSwwLGUsMCxlLDAsIlZLX0FQUFMiLGUsZV0sWzEsMCxlLDAsZSwwLCJWS19QUk9DRVNTS0VZIixlLGVdLFsxLDAsZSwwLGUsMCwiVktfUEFDS0VUIixlLGVdLFsxLDAsZSwwLGUsMCwiVktfREJFX1NCQ1NDSEFSIixlLGVdLFsxLDAsZSwwLGUsMCwiVktfREJFX0RCQ1NDSEFSIixlLGVdLFsxLDAsZSwwLGUsMCwiVktfQVRUTiIsZSxlXSxbMSwwLGUsMCxlLDAsIlZLX0NSU0VMIixlLGVdLFsxLDAsZSwwLGUsMCwiVktfRVhTRUwiLGUsZV0sWzEsMCxlLDAsZSwwLCJWS19FUkVPRiIsZSxlXSxbMSwwLGUsMCxlLDAsIlZLX1BMQVkiLGUsZV0sWzEsMCxlLDAsZSwwLCJWS19aT09NIixlLGVdLFsxLDAsZSwwLGUsMCwiVktfTk9OQU1FIixlLGVdLFsxLDAsZSwwLGUsMCwiVktfUEExIixlLGVdLFsxLDAsZSwwLGUsMCwiVktfT0VNX0NMRUFSIixlLGVdXSxuPVtdLHI9W107Zm9yKGNvbnN0IGUgb2YgdCl7Y29uc3RbdCxpLHMsbyxhLGwsdSxoLGNdPWU7aWYocltpXXx8KHJbaV09ITAsa3Rbc109aSxPdFtzLnRvTG93ZXJDYXNlKCldPWkpLCFuW29dKXtpZihuW29dPSEwLCFhKXRocm93IG5ldyBFcnJvcihgU3RyaW5nIHJlcHJlc2VudGF0aW9uIG1pc3NpbmcgZm9yIGtleSBjb2RlICR7b30gYXJvdW5kIHNjYW4gY29kZSAke3N9YCk7QXQuZGVmaW5lKG8sYSksUnQuZGVmaW5lKG8saHx8YSkseHQuZGVmaW5lKG8sY3x8aHx8YSl9bCYmKE10W2xdPW8pfX0oKSxmdW5jdGlvbihlKXtlLnRvU3RyaW5nPWZ1bmN0aW9uKGUpe3JldHVybiBBdC5rZXlDb2RlVG9TdHIoZSl9LGUuZnJvbVN0cmluZz1mdW5jdGlvbihlKXtyZXR1cm4gQXQuc3RyVG9LZXlDb2RlKGUpfSxlLnRvVXNlclNldHRpbmdzVVM9ZnVuY3Rpb24oZSl7cmV0dXJuIFJ0LmtleUNvZGVUb1N0cihlKX0sZS50b1VzZXJTZXR0aW5nc0dlbmVyYWw9ZnVuY3Rpb24oZSl7cmV0dXJuIHh0LmtleUNvZGVUb1N0cihlKX0sZS5mcm9tVXNlclNldHRpbmdzPWZ1bmN0aW9uKGUpe3JldHVybiBSdC5zdHJUb0tleUNvZGUoZSl8fHh0LnN0clRvS2V5Q29kZShlKX0sZS50b0VsZWN0cm9uQWNjZWxlcmF0b3I9ZnVuY3Rpb24oZSl7aWYoZT49OTgmJmU8PTExMylyZXR1cm4gbnVsbDtzd2l0Y2goZSl7Y2FzZSAxNjpyZXR1cm4iVXAiO2Nhc2UgMTg6cmV0dXJuIkRvd24iO2Nhc2UgMTU6cmV0dXJuIkxlZnQiO2Nhc2UgMTc6cmV0dXJuIlJpZ2h0In1yZXR1cm4gQXQua2V5Q29kZVRvU3RyKGUpfX0oVHR8fChUdD17fSkpO2NsYXNzIEl0IGV4dGVuZHMgaXR7Y29uc3RydWN0b3IoZSx0LG4scil7c3VwZXIoZSx0LG4sciksdGhpcy5zZWxlY3Rpb25TdGFydExpbmVOdW1iZXI9ZSx0aGlzLnNlbGVjdGlvblN0YXJ0Q29sdW1uPXQsdGhpcy5wb3NpdGlvbkxpbmVOdW1iZXI9bix0aGlzLnBvc2l0aW9uQ29sdW1uPXJ9dG9TdHJpbmcoKXtyZXR1cm4iWyIrdGhpcy5zZWxlY3Rpb25TdGFydExpbmVOdW1iZXIrIiwiK3RoaXMuc2VsZWN0aW9uU3RhcnRDb2x1bW4rIiAtPiAiK3RoaXMucG9zaXRpb25MaW5lTnVtYmVyKyIsIit0aGlzLnBvc2l0aW9uQ29sdW1uKyJdIn1lcXVhbHNTZWxlY3Rpb24oZSl7cmV0dXJuIEl0LnNlbGVjdGlvbnNFcXVhbCh0aGlzLGUpfXN0YXRpYyBzZWxlY3Rpb25zRXF1YWwoZSx0KXtyZXR1cm4gZS5zZWxlY3Rpb25TdGFydExpbmVOdW1iZXI9PT10LnNlbGVjdGlvblN0YXJ0TGluZU51bWJlciYmZS5zZWxlY3Rpb25TdGFydENvbHVtbj09PXQuc2VsZWN0aW9uU3RhcnRDb2x1bW4mJmUucG9zaXRpb25MaW5lTnVtYmVyPT09dC5wb3NpdGlvbkxpbmVOdW1iZXImJmUucG9zaXRpb25Db2x1bW49PT10LnBvc2l0aW9uQ29sdW1ufWdldERpcmVjdGlvbigpe3JldHVybiB0aGlzLnNlbGVjdGlvblN0YXJ0TGluZU51bWJlcj09PXRoaXMuc3RhcnRMaW5lTnVtYmVyJiZ0aGlzLnNlbGVjdGlvblN0YXJ0Q29sdW1uPT09dGhpcy5zdGFydENvbHVtbj8wOjF9c2V0RW5kUG9zaXRpb24oZSx0KXtyZXR1cm4gMD09PXRoaXMuZ2V0RGlyZWN0aW9uKCk/bmV3IEl0KHRoaXMuc3RhcnRMaW5lTnVtYmVyLHRoaXMuc3RhcnRDb2x1bW4sZSx0KTpuZXcgSXQoZSx0LHRoaXMuc3RhcnRMaW5lTnVtYmVyLHRoaXMuc3RhcnRDb2x1bW4pfWdldFBvc2l0aW9uKCl7cmV0dXJuIG5ldyBydCh0aGlzLnBvc2l0aW9uTGluZU51bWJlcix0aGlzLnBvc2l0aW9uQ29sdW1uKX1nZXRTZWxlY3Rpb25TdGFydCgpe3JldHVybiBuZXcgcnQodGhpcy5zZWxlY3Rpb25TdGFydExpbmVOdW1iZXIsdGhpcy5zZWxlY3Rpb25TdGFydENvbHVtbil9c2V0U3RhcnRQb3NpdGlvbihlLHQpe3JldHVybiAwPT09dGhpcy5nZXREaXJlY3Rpb24oKT9uZXcgSXQoZSx0LHRoaXMuZW5kTGluZU51bWJlcix0aGlzLmVuZENvbHVtbik6bmV3IEl0KHRoaXMuZW5kTGluZU51bWJlcix0aGlzLmVuZENvbHVtbixlLHQpfXN0YXRpYyBmcm9tUG9zaXRpb25zKGUsdD1lKXtyZXR1cm4gbmV3IEl0KGUubGluZU51bWJlcixlLmNvbHVtbix0LmxpbmVOdW1iZXIsdC5jb2x1bW4pfXN0YXRpYyBmcm9tUmFuZ2UoZSx0KXtyZXR1cm4gMD09PXQ/bmV3IEl0KGUuc3RhcnRMaW5lTnVtYmVyLGUuc3RhcnRDb2x1bW4sZS5lbmRMaW5lTnVtYmVyLGUuZW5kQ29sdW1uKTpuZXcgSXQoZS5lbmRMaW5lTnVtYmVyLGUuZW5kQ29sdW1uLGUuc3RhcnRMaW5lTnVtYmVyLGUuc3RhcnRDb2x1bW4pfXN0YXRpYyBsaWZ0U2VsZWN0aW9uKGUpe3JldHVybiBuZXcgSXQoZS5zZWxlY3Rpb25TdGFydExpbmVOdW1iZXIsZS5zZWxlY3Rpb25TdGFydENvbHVtbixlLnBvc2l0aW9uTGluZU51bWJlcixlLnBvc2l0aW9uQ29sdW1uKX1zdGF0aWMgc2VsZWN0aW9uc0FyckVxdWFsKGUsdCl7aWYoZSYmIXR8fCFlJiZ0KXJldHVybiExO2lmKCFlJiYhdClyZXR1cm4hMDtpZihlLmxlbmd0aCE9PXQubGVuZ3RoKXJldHVybiExO2ZvcihsZXQgbj0wLHI9ZS5sZW5ndGg7bjxyO24rKylpZighdGhpcy5zZWxlY3Rpb25zRXF1YWwoZVtuXSx0W25dKSlyZXR1cm4hMTtyZXR1cm4hMH1zdGF0aWMgaXNJU2VsZWN0aW9uKGUpe3JldHVybiBlJiYibnVtYmVyIj09dHlwZW9mIGUuc2VsZWN0aW9uU3RhcnRMaW5lTnVtYmVyJiYibnVtYmVyIj09dHlwZW9mIGUuc2VsZWN0aW9uU3RhcnRDb2x1bW4mJiJudW1iZXIiPT10eXBlb2YgZS5wb3NpdGlvbkxpbmVOdW1iZXImJiJudW1iZXIiPT10eXBlb2YgZS5wb3NpdGlvbkNvbHVtbn1zdGF0aWMgY3JlYXRlV2l0aERpcmVjdGlvbihlLHQsbixyLGkpe3JldHVybiAwPT09aT9uZXcgSXQoZSx0LG4scik6bmV3IEl0KG4scixlLHQpfX1jb25zdCBQdD1PYmplY3QuY3JlYXRlKG51bGwpO2Z1bmN0aW9uIER0KGUsdCl7aWYoInN0cmluZyI9PXR5cGVvZiB0KXtjb25zdCBuPVB0W3RdO2lmKHZvaWQgMD09PW4pdGhyb3cgbmV3IEVycm9yKGAke2V9IHJlZmVyZW5jZXMgYW4gdW5rbm93biBjb2RpY29uOiAke3R9YCk7dD1ufXJldHVybiBQdFtlXT10LHtpZDplfX1jb25zdCBGdD17YWRkOkR0KCJhZGQiLDZlNCkscGx1czpEdCgicGx1cyIsNmU0KSxnaXN0TmV3OkR0KCJnaXN0LW5ldyIsNmU0KSxyZXBvQ3JlYXRlOkR0KCJyZXBvLWNyZWF0ZSIsNmU0KSxsaWdodGJ1bGI6RHQoImxpZ2h0YnVsYiIsNjAwMDEpLGxpZ2h0QnVsYjpEdCgibGlnaHQtYnVsYiIsNjAwMDEpLHJlcG86RHQoInJlcG8iLDYwMDAyKSxyZXBvRGVsZXRlOkR0KCJyZXBvLWRlbGV0ZSIsNjAwMDIpLGdpc3RGb3JrOkR0KCJnaXN0LWZvcmsiLDYwMDAzKSxyZXBvRm9ya2VkOkR0KCJyZXBvLWZvcmtlZCIsNjAwMDMpLGdpdFB1bGxSZXF1ZXN0OkR0KCJnaXQtcHVsbC1yZXF1ZXN0Iiw2MDAwNCksZ2l0UHVsbFJlcXVlc3RBYmFuZG9uZWQ6RHQoImdpdC1wdWxsLXJlcXVlc3QtYWJhbmRvbmVkIiw2MDAwNCkscmVjb3JkS2V5czpEdCgicmVjb3JkLWtleXMiLDYwMDA1KSxrZXlib2FyZDpEdCgia2V5Ym9hcmQiLDYwMDA1KSx0YWc6RHQoInRhZyIsNjAwMDYpLHRhZ0FkZDpEdCgidGFnLWFkZCIsNjAwMDYpLHRhZ1JlbW92ZTpEdCgidGFnLXJlbW92ZSIsNjAwMDYpLHBlcnNvbjpEdCgicGVyc29uIiw2MDAwNykscGVyc29uRm9sbG93OkR0KCJwZXJzb24tZm9sbG93Iiw2MDAwNykscGVyc29uT3V0bGluZTpEdCgicGVyc29uLW91dGxpbmUiLDYwMDA3KSxwZXJzb25GaWxsZWQ6RHQoInBlcnNvbi1maWxsZWQiLDYwMDA3KSxnaXRCcmFuY2g6RHQoImdpdC1icmFuY2giLDYwMDA4KSxnaXRCcmFuY2hDcmVhdGU6RHQoImdpdC1icmFuY2gtY3JlYXRlIiw2MDAwOCksZ2l0QnJhbmNoRGVsZXRlOkR0KCJnaXQtYnJhbmNoLWRlbGV0ZSIsNjAwMDgpLHNvdXJjZUNvbnRyb2w6RHQoInNvdXJjZS1jb250cm9sIiw2MDAwOCksbWlycm9yOkR0KCJtaXJyb3IiLDYwMDA5KSxtaXJyb3JQdWJsaWM6RHQoIm1pcnJvci1wdWJsaWMiLDYwMDA5KSxzdGFyOkR0KCJzdGFyIiw2MDAxMCksc3RhckFkZDpEdCgic3Rhci1hZGQiLDYwMDEwKSxzdGFyRGVsZXRlOkR0KCJzdGFyLWRlbGV0ZSIsNjAwMTApLHN0YXJFbXB0eTpEdCgic3Rhci1lbXB0eSIsNjAwMTApLGNvbW1lbnQ6RHQoImNvbW1lbnQiLDYwMDExKSxjb21tZW50QWRkOkR0KCJjb21tZW50LWFkZCIsNjAwMTEpLGFsZXJ0OkR0KCJhbGVydCIsNjAwMTIpLHdhcm5pbmc6RHQoIndhcm5pbmciLDYwMDEyKSxzZWFyY2g6RHQoInNlYXJjaCIsNjAwMTMpLHNlYXJjaFNhdmU6RHQoInNlYXJjaC1zYXZlIiw2MDAxMyksbG9nT3V0OkR0KCJsb2ctb3V0Iiw2MDAxNCksc2lnbk91dDpEdCgic2lnbi1vdXQiLDYwMDE0KSxsb2dJbjpEdCgibG9nLWluIiw2MDAxNSksc2lnbkluOkR0KCJzaWduLWluIiw2MDAxNSksZXllOkR0KCJleWUiLDYwMDE2KSxleWVVbndhdGNoOkR0KCJleWUtdW53YXRjaCIsNjAwMTYpLGV5ZVdhdGNoOkR0KCJleWUtd2F0Y2giLDYwMDE2KSxjaXJjbGVGaWxsZWQ6RHQoImNpcmNsZS1maWxsZWQiLDYwMDE3KSxwcmltaXRpdmVEb3Q6RHQoInByaW1pdGl2ZS1kb3QiLDYwMDE3KSxjbG9zZURpcnR5OkR0KCJjbG9zZS1kaXJ0eSIsNjAwMTcpLGRlYnVnQnJlYWtwb2ludDpEdCgiZGVidWctYnJlYWtwb2ludCIsNjAwMTcpLGRlYnVnQnJlYWtwb2ludERpc2FibGVkOkR0KCJkZWJ1Zy1icmVha3BvaW50LWRpc2FibGVkIiw2MDAxNyksZGVidWdIaW50OkR0KCJkZWJ1Zy1oaW50Iiw2MDAxNykscHJpbWl0aXZlU3F1YXJlOkR0KCJwcmltaXRpdmUtc3F1YXJlIiw2MDAxOCksZWRpdDpEdCgiZWRpdCIsNjAwMTkpLHBlbmNpbDpEdCgicGVuY2lsIiw2MDAxOSksaW5mbzpEdCgiaW5mbyIsNjAwMjApLGlzc3VlT3BlbmVkOkR0KCJpc3N1ZS1vcGVuZWQiLDYwMDIwKSxnaXN0UHJpdmF0ZTpEdCgiZ2lzdC1wcml2YXRlIiw2MDAyMSksZ2l0Rm9ya1ByaXZhdGU6RHQoImdpdC1mb3JrLXByaXZhdGUiLDYwMDIxKSxsb2NrOkR0KCJsb2NrIiw2MDAyMSksbWlycm9yUHJpdmF0ZTpEdCgibWlycm9yLXByaXZhdGUiLDYwMDIxKSxjbG9zZTpEdCgiY2xvc2UiLDYwMDIyKSxyZW1vdmVDbG9zZTpEdCgicmVtb3ZlLWNsb3NlIiw2MDAyMikseDpEdCgieCIsNjAwMjIpLHJlcG9TeW5jOkR0KCJyZXBvLXN5bmMiLDYwMDIzKSxzeW5jOkR0KCJzeW5jIiw2MDAyMyksY2xvbmU6RHQoImNsb25lIiw2MDAyNCksZGVza3RvcERvd25sb2FkOkR0KCJkZXNrdG9wLWRvd25sb2FkIiw2MDAyNCksYmVha2VyOkR0KCJiZWFrZXIiLDYwMDI1KSxtaWNyb3Njb3BlOkR0KCJtaWNyb3Njb3BlIiw2MDAyNSksdm06RHQoInZtIiw2MDAyNiksZGV2aWNlRGVza3RvcDpEdCgiZGV2aWNlLWRlc2t0b3AiLDYwMDI2KSxmaWxlOkR0KCJmaWxlIiw2MDAyNyksZmlsZVRleHQ6RHQoImZpbGUtdGV4dCIsNjAwMjcpLG1vcmU6RHQoIm1vcmUiLDYwMDI4KSxlbGxpcHNpczpEdCgiZWxsaXBzaXMiLDYwMDI4KSxrZWJhYkhvcml6b250YWw6RHQoImtlYmFiLWhvcml6b250YWwiLDYwMDI4KSxtYWlsUmVwbHk6RHQoIm1haWwtcmVwbHkiLDYwMDI5KSxyZXBseTpEdCgicmVwbHkiLDYwMDI5KSxvcmdhbml6YXRpb246RHQoIm9yZ2FuaXphdGlvbiIsNjAwMzApLG9yZ2FuaXphdGlvbkZpbGxlZDpEdCgib3JnYW5pemF0aW9uLWZpbGxlZCIsNjAwMzApLG9yZ2FuaXphdGlvbk91dGxpbmU6RHQoIm9yZ2FuaXphdGlvbi1vdXRsaW5lIiw2MDAzMCksbmV3RmlsZTpEdCgibmV3LWZpbGUiLDYwMDMxKSxmaWxlQWRkOkR0KCJmaWxlLWFkZCIsNjAwMzEpLG5ld0ZvbGRlcjpEdCgibmV3LWZvbGRlciIsNjAwMzIpLGZpbGVEaXJlY3RvcnlDcmVhdGU6RHQoImZpbGUtZGlyZWN0b3J5LWNyZWF0ZSIsNjAwMzIpLHRyYXNoOkR0KCJ0cmFzaCIsNjAwMzMpLHRyYXNoY2FuOkR0KCJ0cmFzaGNhbiIsNjAwMzMpLGhpc3Rvcnk6RHQoImhpc3RvcnkiLDYwMDM0KSxjbG9jazpEdCgiY2xvY2siLDYwMDM0KSxmb2xkZXI6RHQoImZvbGRlciIsNjAwMzUpLGZpbGVEaXJlY3Rvcnk6RHQoImZpbGUtZGlyZWN0b3J5Iiw2MDAzNSksc3ltYm9sRm9sZGVyOkR0KCJzeW1ib2wtZm9sZGVyIiw2MDAzNSksbG9nb0dpdGh1YjpEdCgibG9nby1naXRodWIiLDYwMDM2KSxtYXJrR2l0aHViOkR0KCJtYXJrLWdpdGh1YiIsNjAwMzYpLGdpdGh1YjpEdCgiZ2l0aHViIiw2MDAzNiksdGVybWluYWw6RHQoInRlcm1pbmFsIiw2MDAzNyksY29uc29sZTpEdCgiY29uc29sZSIsNjAwMzcpLHJlcGw6RHQoInJlcGwiLDYwMDM3KSx6YXA6RHQoInphcCIsNjAwMzgpLHN5bWJvbEV2ZW50OkR0KCJzeW1ib2wtZXZlbnQiLDYwMDM4KSxlcnJvcjpEdCgiZXJyb3IiLDYwMDM5KSxzdG9wOkR0KCJzdG9wIiw2MDAzOSksdmFyaWFibGU6RHQoInZhcmlhYmxlIiw2MDA0MCksc3ltYm9sVmFyaWFibGU6RHQoInN5bWJvbC12YXJpYWJsZSIsNjAwNDApLGFycmF5OkR0KCJhcnJheSIsNjAwNDIpLHN5bWJvbEFycmF5OkR0KCJzeW1ib2wtYXJyYXkiLDYwMDQyKSxzeW1ib2xNb2R1bGU6RHQoInN5bWJvbC1tb2R1bGUiLDYwMDQzKSxzeW1ib2xQYWNrYWdlOkR0KCJzeW1ib2wtcGFja2FnZSIsNjAwNDMpLHN5bWJvbE5hbWVzcGFjZTpEdCgic3ltYm9sLW5hbWVzcGFjZSIsNjAwNDMpLHN5bWJvbE9iamVjdDpEdCgic3ltYm9sLW9iamVjdCIsNjAwNDMpLHN5bWJvbE1ldGhvZDpEdCgic3ltYm9sLW1ldGhvZCIsNjAwNDQpLHN5bWJvbEZ1bmN0aW9uOkR0KCJzeW1ib2wtZnVuY3Rpb24iLDYwMDQ0KSxzeW1ib2xDb25zdHJ1Y3RvcjpEdCgic3ltYm9sLWNvbnN0cnVjdG9yIiw2MDA0NCksc3ltYm9sQm9vbGVhbjpEdCgic3ltYm9sLWJvb2xlYW4iLDYwMDQ3KSxzeW1ib2xOdWxsOkR0KCJzeW1ib2wtbnVsbCIsNjAwNDcpLHN5bWJvbE51bWVyaWM6RHQoInN5bWJvbC1udW1lcmljIiw2MDA0OCksc3ltYm9sTnVtYmVyOkR0KCJzeW1ib2wtbnVtYmVyIiw2MDA0OCksc3ltYm9sU3RydWN0dXJlOkR0KCJzeW1ib2wtc3RydWN0dXJlIiw2MDA0OSksc3ltYm9sU3RydWN0OkR0KCJzeW1ib2wtc3RydWN0Iiw2MDA0OSksc3ltYm9sUGFyYW1ldGVyOkR0KCJzeW1ib2wtcGFyYW1ldGVyIiw2MDA1MCksc3ltYm9sVHlwZVBhcmFtZXRlcjpEdCgic3ltYm9sLXR5cGUtcGFyYW1ldGVyIiw2MDA1MCksc3ltYm9sS2V5OkR0KCJzeW1ib2wta2V5Iiw2MDA1MSksc3ltYm9sVGV4dDpEdCgic3ltYm9sLXRleHQiLDYwMDUxKSxzeW1ib2xSZWZlcmVuY2U6RHQoInN5bWJvbC1yZWZlcmVuY2UiLDYwMDUyKSxnb1RvRmlsZTpEdCgiZ28tdG8tZmlsZSIsNjAwNTIpLHN5bWJvbEVudW06RHQoInN5bWJvbC1lbnVtIiw2MDA1Myksc3ltYm9sVmFsdWU6RHQoInN5bWJvbC12YWx1ZSIsNjAwNTMpLHN5bWJvbFJ1bGVyOkR0KCJzeW1ib2wtcnVsZXIiLDYwMDU0KSxzeW1ib2xVbml0OkR0KCJzeW1ib2wtdW5pdCIsNjAwNTQpLGFjdGl2YXRlQnJlYWtwb2ludHM6RHQoImFjdGl2YXRlLWJyZWFrcG9pbnRzIiw2MDA1NSksYXJjaGl2ZTpEdCgiYXJjaGl2ZSIsNjAwNTYpLGFycm93Qm90aDpEdCgiYXJyb3ctYm90aCIsNjAwNTcpLGFycm93RG93bjpEdCgiYXJyb3ctZG93biIsNjAwNTgpLGFycm93TGVmdDpEdCgiYXJyb3ctbGVmdCIsNjAwNTkpLGFycm93UmlnaHQ6RHQoImFycm93LXJpZ2h0Iiw2MDA2MCksYXJyb3dTbWFsbERvd246RHQoImFycm93LXNtYWxsLWRvd24iLDYwMDYxKSxhcnJvd1NtYWxsTGVmdDpEdCgiYXJyb3ctc21hbGwtbGVmdCIsNjAwNjIpLGFycm93U21hbGxSaWdodDpEdCgiYXJyb3ctc21hbGwtcmlnaHQiLDYwMDYzKSxhcnJvd1NtYWxsVXA6RHQoImFycm93LXNtYWxsLXVwIiw2MDA2NCksYXJyb3dVcDpEdCgiYXJyb3ctdXAiLDYwMDY1KSxiZWxsOkR0KCJiZWxsIiw2MDA2NiksYm9sZDpEdCgiYm9sZCIsNjAwNjcpLGJvb2s6RHQoImJvb2siLDYwMDY4KSxib29rbWFyazpEdCgiYm9va21hcmsiLDYwMDY5KSxkZWJ1Z0JyZWFrcG9pbnRDb25kaXRpb25hbFVudmVyaWZpZWQ6RHQoImRlYnVnLWJyZWFrcG9pbnQtY29uZGl0aW9uYWwtdW52ZXJpZmllZCIsNjAwNzApLGRlYnVnQnJlYWtwb2ludENvbmRpdGlvbmFsOkR0KCJkZWJ1Zy1icmVha3BvaW50LWNvbmRpdGlvbmFsIiw2MDA3MSksZGVidWdCcmVha3BvaW50Q29uZGl0aW9uYWxEaXNhYmxlZDpEdCgiZGVidWctYnJlYWtwb2ludC1jb25kaXRpb25hbC1kaXNhYmxlZCIsNjAwNzEpLGRlYnVnQnJlYWtwb2ludERhdGFVbnZlcmlmaWVkOkR0KCJkZWJ1Zy1icmVha3BvaW50LWRhdGEtdW52ZXJpZmllZCIsNjAwNzIpLGRlYnVnQnJlYWtwb2ludERhdGE6RHQoImRlYnVnLWJyZWFrcG9pbnQtZGF0YSIsNjAwNzMpLGRlYnVnQnJlYWtwb2ludERhdGFEaXNhYmxlZDpEdCgiZGVidWctYnJlYWtwb2ludC1kYXRhLWRpc2FibGVkIiw2MDA3MyksZGVidWdCcmVha3BvaW50TG9nVW52ZXJpZmllZDpEdCgiZGVidWctYnJlYWtwb2ludC1sb2ctdW52ZXJpZmllZCIsNjAwNzQpLGRlYnVnQnJlYWtwb2ludExvZzpEdCgiZGVidWctYnJlYWtwb2ludC1sb2ciLDYwMDc1KSxkZWJ1Z0JyZWFrcG9pbnRMb2dEaXNhYmxlZDpEdCgiZGVidWctYnJlYWtwb2ludC1sb2ctZGlzYWJsZWQiLDYwMDc1KSxicmllZmNhc2U6RHQoImJyaWVmY2FzZSIsNjAwNzYpLGJyb2FkY2FzdDpEdCgiYnJvYWRjYXN0Iiw2MDA3NyksYnJvd3NlcjpEdCgiYnJvd3NlciIsNjAwNzgpLGJ1ZzpEdCgiYnVnIiw2MDA3OSksY2FsZW5kYXI6RHQoImNhbGVuZGFyIiw2MDA4MCksY2FzZVNlbnNpdGl2ZTpEdCgiY2FzZS1zZW5zaXRpdmUiLDYwMDgxKSxjaGVjazpEdCgiY2hlY2siLDYwMDgyKSxjaGVja2xpc3Q6RHQoImNoZWNrbGlzdCIsNjAwODMpLGNoZXZyb25Eb3duOkR0KCJjaGV2cm9uLWRvd24iLDYwMDg0KSxkcm9wRG93bkJ1dHRvbjpEdCgiZHJvcC1kb3duLWJ1dHRvbiIsNjAwODQpLGNoZXZyb25MZWZ0OkR0KCJjaGV2cm9uLWxlZnQiLDYwMDg1KSxjaGV2cm9uUmlnaHQ6RHQoImNoZXZyb24tcmlnaHQiLDYwMDg2KSxjaGV2cm9uVXA6RHQoImNoZXZyb24tdXAiLDYwMDg3KSxjaHJvbWVDbG9zZTpEdCgiY2hyb21lLWNsb3NlIiw2MDA4OCksY2hyb21lTWF4aW1pemU6RHQoImNocm9tZS1tYXhpbWl6ZSIsNjAwODkpLGNocm9tZU1pbmltaXplOkR0KCJjaHJvbWUtbWluaW1pemUiLDYwMDkwKSxjaHJvbWVSZXN0b3JlOkR0KCJjaHJvbWUtcmVzdG9yZSIsNjAwOTEpLGNpcmNsZTpEdCgiY2lyY2xlIiw2MDA5MiksY2lyY2xlT3V0bGluZTpEdCgiY2lyY2xlLW91dGxpbmUiLDYwMDkyKSxkZWJ1Z0JyZWFrcG9pbnRVbnZlcmlmaWVkOkR0KCJkZWJ1Zy1icmVha3BvaW50LXVudmVyaWZpZWQiLDYwMDkyKSxjaXJjbGVTbGFzaDpEdCgiY2lyY2xlLXNsYXNoIiw2MDA5MyksY2lyY3VpdEJvYXJkOkR0KCJjaXJjdWl0LWJvYXJkIiw2MDA5NCksY2xlYXJBbGw6RHQoImNsZWFyLWFsbCIsNjAwOTUpLGNsaXBweTpEdCgiY2xpcHB5Iiw2MDA5NiksY2xvc2VBbGw6RHQoImNsb3NlLWFsbCIsNjAwOTcpLGNsb3VkRG93bmxvYWQ6RHQoImNsb3VkLWRvd25sb2FkIiw2MDA5OCksY2xvdWRVcGxvYWQ6RHQoImNsb3VkLXVwbG9hZCIsNjAwOTkpLGNvZGU6RHQoImNvZGUiLDYwMTAwKSxjb2xsYXBzZUFsbDpEdCgiY29sbGFwc2UtYWxsIiw2MDEwMSksY29sb3JNb2RlOkR0KCJjb2xvci1tb2RlIiw2MDEwMiksY29tbWVudERpc2N1c3Npb246RHQoImNvbW1lbnQtZGlzY3Vzc2lvbiIsNjAxMDMpLGNvbXBhcmVDaGFuZ2VzOkR0KCJjb21wYXJlLWNoYW5nZXMiLDYwMTU3KSxjcmVkaXRDYXJkOkR0KCJjcmVkaXQtY2FyZCIsNjAxMDUpLGRhc2g6RHQoImRhc2giLDYwMTA4KSxkYXNoYm9hcmQ6RHQoImRhc2hib2FyZCIsNjAxMDkpLGRhdGFiYXNlOkR0KCJkYXRhYmFzZSIsNjAxMTApLGRlYnVnQ29udGludWU6RHQoImRlYnVnLWNvbnRpbnVlIiw2MDExMSksZGVidWdEaXNjb25uZWN0OkR0KCJkZWJ1Zy1kaXNjb25uZWN0Iiw2MDExMiksZGVidWdQYXVzZTpEdCgiZGVidWctcGF1c2UiLDYwMTEzKSxkZWJ1Z1Jlc3RhcnQ6RHQoImRlYnVnLXJlc3RhcnQiLDYwMTE0KSxkZWJ1Z1N0YXJ0OkR0KCJkZWJ1Zy1zdGFydCIsNjAxMTUpLGRlYnVnU3RlcEludG86RHQoImRlYnVnLXN0ZXAtaW50byIsNjAxMTYpLGRlYnVnU3RlcE91dDpEdCgiZGVidWctc3RlcC1vdXQiLDYwMTE3KSxkZWJ1Z1N0ZXBPdmVyOkR0KCJkZWJ1Zy1zdGVwLW92ZXIiLDYwMTE4KSxkZWJ1Z1N0b3A6RHQoImRlYnVnLXN0b3AiLDYwMTE5KSxkZWJ1ZzpEdCgiZGVidWciLDYwMTIwKSxkZXZpY2VDYW1lcmFWaWRlbzpEdCgiZGV2aWNlLWNhbWVyYS12aWRlbyIsNjAxMjEpLGRldmljZUNhbWVyYTpEdCgiZGV2aWNlLWNhbWVyYSIsNjAxMjIpLGRldmljZU1vYmlsZTpEdCgiZGV2aWNlLW1vYmlsZSIsNjAxMjMpLGRpZmZBZGRlZDpEdCgiZGlmZi1hZGRlZCIsNjAxMjQpLGRpZmZJZ25vcmVkOkR0KCJkaWZmLWlnbm9yZWQiLDYwMTI1KSxkaWZmTW9kaWZpZWQ6RHQoImRpZmYtbW9kaWZpZWQiLDYwMTI2KSxkaWZmUmVtb3ZlZDpEdCgiZGlmZi1yZW1vdmVkIiw2MDEyNyksZGlmZlJlbmFtZWQ6RHQoImRpZmYtcmVuYW1lZCIsNjAxMjgpLGRpZmY6RHQoImRpZmYiLDYwMTI5KSxkaXNjYXJkOkR0KCJkaXNjYXJkIiw2MDEzMCksZWRpdG9yTGF5b3V0OkR0KCJlZGl0b3ItbGF5b3V0Iiw2MDEzMSksZW1wdHlXaW5kb3c6RHQoImVtcHR5LXdpbmRvdyIsNjAxMzIpLGV4Y2x1ZGU6RHQoImV4Y2x1ZGUiLDYwMTMzKSxleHRlbnNpb25zOkR0KCJleHRlbnNpb25zIiw2MDEzNCksZXllQ2xvc2VkOkR0KCJleWUtY2xvc2VkIiw2MDEzNSksZmlsZUJpbmFyeTpEdCgiZmlsZS1iaW5hcnkiLDYwMTM2KSxmaWxlQ29kZTpEdCgiZmlsZS1jb2RlIiw2MDEzNyksZmlsZU1lZGlhOkR0KCJmaWxlLW1lZGlhIiw2MDEzOCksZmlsZVBkZjpEdCgiZmlsZS1wZGYiLDYwMTM5KSxmaWxlU3VibW9kdWxlOkR0KCJmaWxlLXN1Ym1vZHVsZSIsNjAxNDApLGZpbGVTeW1saW5rRGlyZWN0b3J5OkR0KCJmaWxlLXN5bWxpbmstZGlyZWN0b3J5Iiw2MDE0MSksZmlsZVN5bWxpbmtGaWxlOkR0KCJmaWxlLXN5bWxpbmstZmlsZSIsNjAxNDIpLGZpbGVaaXA6RHQoImZpbGUtemlwIiw2MDE0MyksZmlsZXM6RHQoImZpbGVzIiw2MDE0NCksZmlsdGVyOkR0KCJmaWx0ZXIiLDYwMTQ1KSxmbGFtZTpEdCgiZmxhbWUiLDYwMTQ2KSxmb2xkRG93bjpEdCgiZm9sZC1kb3duIiw2MDE0NyksZm9sZFVwOkR0KCJmb2xkLXVwIiw2MDE0OCksZm9sZDpEdCgiZm9sZCIsNjAxNDkpLGZvbGRlckFjdGl2ZTpEdCgiZm9sZGVyLWFjdGl2ZSIsNjAxNTApLGZvbGRlck9wZW5lZDpEdCgiZm9sZGVyLW9wZW5lZCIsNjAxNTEpLGdlYXI6RHQoImdlYXIiLDYwMTUyKSxnaWZ0OkR0KCJnaWZ0Iiw2MDE1MyksZ2lzdFNlY3JldDpEdCgiZ2lzdC1zZWNyZXQiLDYwMTU0KSxnaXN0OkR0KCJnaXN0Iiw2MDE1NSksZ2l0Q29tbWl0OkR0KCJnaXQtY29tbWl0Iiw2MDE1NiksZ2l0Q29tcGFyZTpEdCgiZ2l0LWNvbXBhcmUiLDYwMTU3KSxnaXRNZXJnZTpEdCgiZ2l0LW1lcmdlIiw2MDE1OCksZ2l0aHViQWN0aW9uOkR0KCJnaXRodWItYWN0aW9uIiw2MDE1OSksZ2l0aHViQWx0OkR0KCJnaXRodWItYWx0Iiw2MDE2MCksZ2xvYmU6RHQoImdsb2JlIiw2MDE2MSksZ3JhYmJlcjpEdCgiZ3JhYmJlciIsNjAxNjIpLGdyYXBoOkR0KCJncmFwaCIsNjAxNjMpLGdyaXBwZXI6RHQoImdyaXBwZXIiLDYwMTY0KSxoZWFydDpEdCgiaGVhcnQiLDYwMTY1KSxob21lOkR0KCJob21lIiw2MDE2NiksaG9yaXpvbnRhbFJ1bGU6RHQoImhvcml6b250YWwtcnVsZSIsNjAxNjcpLGh1Ym90OkR0KCJodWJvdCIsNjAxNjgpLGluYm94OkR0KCJpbmJveCIsNjAxNjkpLGlzc3VlQ2xvc2VkOkR0KCJpc3N1ZS1jbG9zZWQiLDYwMzI0KSxpc3N1ZVJlb3BlbmVkOkR0KCJpc3N1ZS1yZW9wZW5lZCIsNjAxNzEpLGlzc3VlczpEdCgiaXNzdWVzIiw2MDE3MiksaXRhbGljOkR0KCJpdGFsaWMiLDYwMTczKSxqZXJzZXk6RHQoImplcnNleSIsNjAxNzQpLGpzb246RHQoImpzb24iLDYwMTc1KSxicmFja2V0OkR0KCJicmFja2V0Iiw2MDE3NSksa2ViYWJWZXJ0aWNhbDpEdCgia2ViYWItdmVydGljYWwiLDYwMTc2KSxrZXk6RHQoImtleSIsNjAxNzcpLGxhdzpEdCgibGF3Iiw2MDE3OCksbGlnaHRidWxiQXV0b2ZpeDpEdCgibGlnaHRidWxiLWF1dG9maXgiLDYwMTc5KSxsaW5rRXh0ZXJuYWw6RHQoImxpbmstZXh0ZXJuYWwiLDYwMTgwKSxsaW5rOkR0KCJsaW5rIiw2MDE4MSksbGlzdE9yZGVyZWQ6RHQoImxpc3Qtb3JkZXJlZCIsNjAxODIpLGxpc3RVbm9yZGVyZWQ6RHQoImxpc3QtdW5vcmRlcmVkIiw2MDE4MyksbGl2ZVNoYXJlOkR0KCJsaXZlLXNoYXJlIiw2MDE4NCksbG9hZGluZzpEdCgibG9hZGluZyIsNjAxODUpLGxvY2F0aW9uOkR0KCJsb2NhdGlvbiIsNjAxODYpLG1haWxSZWFkOkR0KCJtYWlsLXJlYWQiLDYwMTg3KSxtYWlsOkR0KCJtYWlsIiw2MDE4OCksbWFya2Rvd246RHQoIm1hcmtkb3duIiw2MDE4OSksbWVnYXBob25lOkR0KCJtZWdhcGhvbmUiLDYwMTkwKSxtZW50aW9uOkR0KCJtZW50aW9uIiw2MDE5MSksbWlsZXN0b25lOkR0KCJtaWxlc3RvbmUiLDYwMTkyKSxtb3J0YXJCb2FyZDpEdCgibW9ydGFyLWJvYXJkIiw2MDE5MyksbW92ZTpEdCgibW92ZSIsNjAxOTQpLG11bHRpcGxlV2luZG93czpEdCgibXVsdGlwbGUtd2luZG93cyIsNjAxOTUpLG11dGU6RHQoIm11dGUiLDYwMTk2KSxub05ld2xpbmU6RHQoIm5vLW5ld2xpbmUiLDYwMTk3KSxub3RlOkR0KCJub3RlIiw2MDE5OCksb2N0b2ZhY2U6RHQoIm9jdG9mYWNlIiw2MDE5OSksb3BlblByZXZpZXc6RHQoIm9wZW4tcHJldmlldyIsNjAyMDApLHBhY2thZ2VfOkR0KCJwYWNrYWdlIiw2MDIwMSkscGFpbnRjYW46RHQoInBhaW50Y2FuIiw2MDIwMikscGluOkR0KCJwaW4iLDYwMjAzKSxwbGF5OkR0KCJwbGF5Iiw2MDIwNCkscnVuOkR0KCJydW4iLDYwMjA0KSxwbHVnOkR0KCJwbHVnIiw2MDIwNSkscHJlc2VydmVDYXNlOkR0KCJwcmVzZXJ2ZS1jYXNlIiw2MDIwNikscHJldmlldzpEdCgicHJldmlldyIsNjAyMDcpLHByb2plY3Q6RHQoInByb2plY3QiLDYwMjA4KSxwdWxzZTpEdCgicHVsc2UiLDYwMjA5KSxxdWVzdGlvbjpEdCgicXVlc3Rpb24iLDYwMjEwKSxxdW90ZTpEdCgicXVvdGUiLDYwMjExKSxyYWRpb1Rvd2VyOkR0KCJyYWRpby10b3dlciIsNjAyMTIpLHJlYWN0aW9uczpEdCgicmVhY3Rpb25zIiw2MDIxMykscmVmZXJlbmNlczpEdCgicmVmZXJlbmNlcyIsNjAyMTQpLHJlZnJlc2g6RHQoInJlZnJlc2giLDYwMjE1KSxyZWdleDpEdCgicmVnZXgiLDYwMjE2KSxyZW1vdGVFeHBsb3JlcjpEdCgicmVtb3RlLWV4cGxvcmVyIiw2MDIxNykscmVtb3RlOkR0KCJyZW1vdGUiLDYwMjE4KSxyZW1vdmU6RHQoInJlbW92ZSIsNjAyMTkpLHJlcGxhY2VBbGw6RHQoInJlcGxhY2UtYWxsIiw2MDIyMCkscmVwbGFjZTpEdCgicmVwbGFjZSIsNjAyMjEpLHJlcG9DbG9uZTpEdCgicmVwby1jbG9uZSIsNjAyMjIpLHJlcG9Gb3JjZVB1c2g6RHQoInJlcG8tZm9yY2UtcHVzaCIsNjAyMjMpLHJlcG9QdWxsOkR0KCJyZXBvLXB1bGwiLDYwMjI0KSxyZXBvUHVzaDpEdCgicmVwby1wdXNoIiw2MDIyNSkscmVwb3J0OkR0KCJyZXBvcnQiLDYwMjI2KSxyZXF1ZXN0Q2hhbmdlczpEdCgicmVxdWVzdC1jaGFuZ2VzIiw2MDIyNykscm9ja2V0OkR0KCJyb2NrZXQiLDYwMjI4KSxyb290Rm9sZGVyT3BlbmVkOkR0KCJyb290LWZvbGRlci1vcGVuZWQiLDYwMjI5KSxyb290Rm9sZGVyOkR0KCJyb290LWZvbGRlciIsNjAyMzApLHJzczpEdCgicnNzIiw2MDIzMSkscnVieTpEdCgicnVieSIsNjAyMzIpLHNhdmVBbGw6RHQoInNhdmUtYWxsIiw2MDIzMyksc2F2ZUFzOkR0KCJzYXZlLWFzIiw2MDIzNCksc2F2ZTpEdCgic2F2ZSIsNjAyMzUpLHNjcmVlbkZ1bGw6RHQoInNjcmVlbi1mdWxsIiw2MDIzNiksc2NyZWVuTm9ybWFsOkR0KCJzY3JlZW4tbm9ybWFsIiw2MDIzNyksc2VhcmNoU3RvcDpEdCgic2VhcmNoLXN0b3AiLDYwMjM4KSxzZXJ2ZXI6RHQoInNlcnZlciIsNjAyNDApLHNldHRpbmdzR2VhcjpEdCgic2V0dGluZ3MtZ2VhciIsNjAyNDEpLHNldHRpbmdzOkR0KCJzZXR0aW5ncyIsNjAyNDIpLHNoaWVsZDpEdCgic2hpZWxkIiw2MDI0Myksc21pbGV5OkR0KCJzbWlsZXkiLDYwMjQ0KSxzb3J0UHJlY2VkZW5jZTpEdCgic29ydC1wcmVjZWRlbmNlIiw2MDI0NSksc3BsaXRIb3Jpem9udGFsOkR0KCJzcGxpdC1ob3Jpem9udGFsIiw2MDI0Niksc3BsaXRWZXJ0aWNhbDpEdCgic3BsaXQtdmVydGljYWwiLDYwMjQ3KSxzcXVpcnJlbDpEdCgic3F1aXJyZWwiLDYwMjQ4KSxzdGFyRnVsbDpEdCgic3Rhci1mdWxsIiw2MDI0OSksc3RhckhhbGY6RHQoInN0YXItaGFsZiIsNjAyNTApLHN5bWJvbENsYXNzOkR0KCJzeW1ib2wtY2xhc3MiLDYwMjUxKSxzeW1ib2xDb2xvcjpEdCgic3ltYm9sLWNvbG9yIiw2MDI1Miksc3ltYm9sQ3VzdG9tQ29sb3I6RHQoInN5bWJvbC1jdXN0b21jb2xvciIsNjAyNTIpLHN5bWJvbENvbnN0YW50OkR0KCJzeW1ib2wtY29uc3RhbnQiLDYwMjUzKSxzeW1ib2xFbnVtTWVtYmVyOkR0KCJzeW1ib2wtZW51bS1tZW1iZXIiLDYwMjU0KSxzeW1ib2xGaWVsZDpEdCgic3ltYm9sLWZpZWxkIiw2MDI1NSksc3ltYm9sRmlsZTpEdCgic3ltYm9sLWZpbGUiLDYwMjU2KSxzeW1ib2xJbnRlcmZhY2U6RHQoInN5bWJvbC1pbnRlcmZhY2UiLDYwMjU3KSxzeW1ib2xLZXl3b3JkOkR0KCJzeW1ib2wta2V5d29yZCIsNjAyNTgpLHN5bWJvbE1pc2M6RHQoInN5bWJvbC1taXNjIiw2MDI1OSksc3ltYm9sT3BlcmF0b3I6RHQoInN5bWJvbC1vcGVyYXRvciIsNjAyNjApLHN5bWJvbFByb3BlcnR5OkR0KCJzeW1ib2wtcHJvcGVydHkiLDYwMjYxKSx3cmVuY2g6RHQoIndyZW5jaCIsNjAyNjEpLHdyZW5jaFN1YmFjdGlvbjpEdCgid3JlbmNoLXN1YmFjdGlvbiIsNjAyNjEpLHN5bWJvbFNuaXBwZXQ6RHQoInN5bWJvbC1zbmlwcGV0Iiw2MDI2MiksdGFza2xpc3Q6RHQoInRhc2tsaXN0Iiw2MDI2MyksdGVsZXNjb3BlOkR0KCJ0ZWxlc2NvcGUiLDYwMjY0KSx0ZXh0U2l6ZTpEdCgidGV4dC1zaXplIiw2MDI2NSksdGhyZWVCYXJzOkR0KCJ0aHJlZS1iYXJzIiw2MDI2NiksdGh1bWJzZG93bjpEdCgidGh1bWJzZG93biIsNjAyNjcpLHRodW1ic3VwOkR0KCJ0aHVtYnN1cCIsNjAyNjgpLHRvb2xzOkR0KCJ0b29scyIsNjAyNjkpLHRyaWFuZ2xlRG93bjpEdCgidHJpYW5nbGUtZG93biIsNjAyNzApLHRyaWFuZ2xlTGVmdDpEdCgidHJpYW5nbGUtbGVmdCIsNjAyNzEpLHRyaWFuZ2xlUmlnaHQ6RHQoInRyaWFuZ2xlLXJpZ2h0Iiw2MDI3MiksdHJpYW5nbGVVcDpEdCgidHJpYW5nbGUtdXAiLDYwMjczKSx0d2l0dGVyOkR0KCJ0d2l0dGVyIiw2MDI3NCksdW5mb2xkOkR0KCJ1bmZvbGQiLDYwMjc1KSx1bmxvY2s6RHQoInVubG9jayIsNjAyNzYpLHVubXV0ZTpEdCgidW5tdXRlIiw2MDI3NyksdW52ZXJpZmllZDpEdCgidW52ZXJpZmllZCIsNjAyNzgpLHZlcmlmaWVkOkR0KCJ2ZXJpZmllZCIsNjAyNzkpLHZlcnNpb25zOkR0KCJ2ZXJzaW9ucyIsNjAyODApLHZtQWN0aXZlOkR0KCJ2bS1hY3RpdmUiLDYwMjgxKSx2bU91dGxpbmU6RHQoInZtLW91dGxpbmUiLDYwMjgyKSx2bVJ1bm5pbmc6RHQoInZtLXJ1bm5pbmciLDYwMjgzKSx3YXRjaDpEdCgid2F0Y2giLDYwMjg0KSx3aGl0ZXNwYWNlOkR0KCJ3aGl0ZXNwYWNlIiw2MDI4NSksd2hvbGVXb3JkOkR0KCJ3aG9sZS13b3JkIiw2MDI4Niksd2luZG93OkR0KCJ3aW5kb3ciLDYwMjg3KSx3b3JkV3JhcDpEdCgid29yZC13cmFwIiw2MDI4OCksem9vbUluOkR0KCJ6b29tLWluIiw2MDI4OSksem9vbU91dDpEdCgiem9vbS1vdXQiLDYwMjkwKSxsaXN0RmlsdGVyOkR0KCJsaXN0LWZpbHRlciIsNjAyOTEpLGxpc3RGbGF0OkR0KCJsaXN0LWZsYXQiLDYwMjkyKSxsaXN0U2VsZWN0aW9uOkR0KCJsaXN0LXNlbGVjdGlvbiIsNjAyOTMpLHNlbGVjdGlvbjpEdCgic2VsZWN0aW9uIiw2MDI5MyksbGlzdFRyZWU6RHQoImxpc3QtdHJlZSIsNjAyOTQpLGRlYnVnQnJlYWtwb2ludEZ1bmN0aW9uVW52ZXJpZmllZDpEdCgiZGVidWctYnJlYWtwb2ludC1mdW5jdGlvbi11bnZlcmlmaWVkIiw2MDI5NSksZGVidWdCcmVha3BvaW50RnVuY3Rpb246RHQoImRlYnVnLWJyZWFrcG9pbnQtZnVuY3Rpb24iLDYwMjk2KSxkZWJ1Z0JyZWFrcG9pbnRGdW5jdGlvbkRpc2FibGVkOkR0KCJkZWJ1Zy1icmVha3BvaW50LWZ1bmN0aW9uLWRpc2FibGVkIiw2MDI5NiksZGVidWdTdGFja2ZyYW1lQWN0aXZlOkR0KCJkZWJ1Zy1zdGFja2ZyYW1lLWFjdGl2ZSIsNjAyOTcpLGNpcmNsZVNtYWxsRmlsbGVkOkR0KCJjaXJjbGUtc21hbGwtZmlsbGVkIiw2MDI5OCksZGVidWdTdGFja2ZyYW1lRG90OkR0KCJkZWJ1Zy1zdGFja2ZyYW1lLWRvdCIsNjAyOTgpLGRlYnVnU3RhY2tmcmFtZTpEdCgiZGVidWctc3RhY2tmcmFtZSIsNjAyOTkpLGRlYnVnU3RhY2tmcmFtZUZvY3VzZWQ6RHQoImRlYnVnLXN0YWNrZnJhbWUtZm9jdXNlZCIsNjAyOTkpLGRlYnVnQnJlYWtwb2ludFVuc3VwcG9ydGVkOkR0KCJkZWJ1Zy1icmVha3BvaW50LXVuc3VwcG9ydGVkIiw2MDMwMCksc3ltYm9sU3RyaW5nOkR0KCJzeW1ib2wtc3RyaW5nIiw2MDMwMSksZGVidWdSZXZlcnNlQ29udGludWU6RHQoImRlYnVnLXJldmVyc2UtY29udGludWUiLDYwMzAyKSxkZWJ1Z1N0ZXBCYWNrOkR0KCJkZWJ1Zy1zdGVwLWJhY2siLDYwMzAzKSxkZWJ1Z1Jlc3RhcnRGcmFtZTpEdCgiZGVidWctcmVzdGFydC1mcmFtZSIsNjAzMDQpLGNhbGxJbmNvbWluZzpEdCgiY2FsbC1pbmNvbWluZyIsNjAzMDYpLGNhbGxPdXRnb2luZzpEdCgiY2FsbC1vdXRnb2luZyIsNjAzMDcpLG1lbnU6RHQoIm1lbnUiLDYwMzA4KSxleHBhbmRBbGw6RHQoImV4cGFuZC1hbGwiLDYwMzA5KSxmZWVkYmFjazpEdCgiZmVlZGJhY2siLDYwMzEwKSxncm91cEJ5UmVmVHlwZTpEdCgiZ3JvdXAtYnktcmVmLXR5cGUiLDYwMzExKSx1bmdyb3VwQnlSZWZUeXBlOkR0KCJ1bmdyb3VwLWJ5LXJlZi10eXBlIiw2MDMxMiksYWNjb3VudDpEdCgiYWNjb3VudCIsNjAzMTMpLGJlbGxEb3Q6RHQoImJlbGwtZG90Iiw2MDMxNCksZGVidWdDb25zb2xlOkR0KCJkZWJ1Zy1jb25zb2xlIiw2MDMxNSksbGlicmFyeTpEdCgibGlicmFyeSIsNjAzMTYpLG91dHB1dDpEdCgib3V0cHV0Iiw2MDMxNykscnVuQWxsOkR0KCJydW4tYWxsIiw2MDMxOCksc3luY0lnbm9yZWQ6RHQoInN5bmMtaWdub3JlZCIsNjAzMTkpLHBpbm5lZDpEdCgicGlubmVkIiw2MDMyMCksZ2l0aHViSW52ZXJ0ZWQ6RHQoImdpdGh1Yi1pbnZlcnRlZCIsNjAzMjEpLGRlYnVnQWx0OkR0KCJkZWJ1Zy1hbHQiLDYwMzA1KSxzZXJ2ZXJQcm9jZXNzOkR0KCJzZXJ2ZXItcHJvY2VzcyIsNjAzMjIpLHNlcnZlckVudmlyb25tZW50OkR0KCJzZXJ2ZXItZW52aXJvbm1lbnQiLDYwMzIzKSxwYXNzOkR0KCJwYXNzIiw2MDMyNCksc3RvcENpcmNsZTpEdCgic3RvcC1jaXJjbGUiLDYwMzI1KSxwbGF5Q2lyY2xlOkR0KCJwbGF5LWNpcmNsZSIsNjAzMjYpLHJlY29yZDpEdCgicmVjb3JkIiw2MDMyNyksZGVidWdBbHRTbWFsbDpEdCgiZGVidWctYWx0LXNtYWxsIiw2MDMyOCksdm1Db25uZWN0OkR0KCJ2bS1jb25uZWN0Iiw2MDMyOSksY2xvdWQ6RHQoImNsb3VkIiw2MDMzMCksbWVyZ2U6RHQoIm1lcmdlIiw2MDMzMSksZXhwb3J0SWNvbjpEdCgiZXhwb3J0Iiw2MDMzMiksZ3JhcGhMZWZ0OkR0KCJncmFwaC1sZWZ0Iiw2MDMzMyksbWFnbmV0OkR0KCJtYWduZXQiLDYwMzM0KSxub3RlYm9vazpEdCgibm90ZWJvb2siLDYwMzM1KSxyZWRvOkR0KCJyZWRvIiw2MDMzNiksY2hlY2tBbGw6RHQoImNoZWNrLWFsbCIsNjAzMzcpLHBpbm5lZERpcnR5OkR0KCJwaW5uZWQtZGlydHkiLDYwMzM4KSxwYXNzRmlsbGVkOkR0KCJwYXNzLWZpbGxlZCIsNjAzMzkpLGNpcmNsZUxhcmdlRmlsbGVkOkR0KCJjaXJjbGUtbGFyZ2UtZmlsbGVkIiw2MDM0MCksY2lyY2xlTGFyZ2U6RHQoImNpcmNsZS1sYXJnZSIsNjAzNDEpLGNpcmNsZUxhcmdlT3V0bGluZTpEdCgiY2lyY2xlLWxhcmdlLW91dGxpbmUiLDYwMzQxKSxjb21iaW5lOkR0KCJjb21iaW5lIiw2MDM0MiksZ2F0aGVyOkR0KCJnYXRoZXIiLDYwMzQyKSx0YWJsZTpEdCgidGFibGUiLDYwMzQzKSx2YXJpYWJsZUdyb3VwOkR0KCJ2YXJpYWJsZS1ncm91cCIsNjAzNDQpLHR5cGVIaWVyYXJjaHk6RHQoInR5cGUtaGllcmFyY2h5Iiw2MDM0NSksdHlwZUhpZXJhcmNoeVN1YjpEdCgidHlwZS1oaWVyYXJjaHktc3ViIiw2MDM0NiksdHlwZUhpZXJhcmNoeVN1cGVyOkR0KCJ0eXBlLWhpZXJhcmNoeS1zdXBlciIsNjAzNDcpLGdpdFB1bGxSZXF1ZXN0Q3JlYXRlOkR0KCJnaXQtcHVsbC1yZXF1ZXN0LWNyZWF0ZSIsNjAzNDgpLHJ1bkFib3ZlOkR0KCJydW4tYWJvdmUiLDYwMzQ5KSxydW5CZWxvdzpEdCgicnVuLWJlbG93Iiw2MDM1MCksbm90ZWJvb2tUZW1wbGF0ZTpEdCgibm90ZWJvb2stdGVtcGxhdGUiLDYwMzUxKSxkZWJ1Z1JlcnVuOkR0KCJkZWJ1Zy1yZXJ1biIsNjAzNTIpLHdvcmtzcGFjZVRydXN0ZWQ6RHQoIndvcmtzcGFjZS10cnVzdGVkIiw2MDM1Myksd29ya3NwYWNlVW50cnVzdGVkOkR0KCJ3b3Jrc3BhY2UtdW50cnVzdGVkIiw2MDM1NCksd29ya3NwYWNlVW5zcGVjaWZpZWQ6RHQoIndvcmtzcGFjZS11bnNwZWNpZmllZCIsNjAzNTUpLHRlcm1pbmFsQ21kOkR0KCJ0ZXJtaW5hbC1jbWQiLDYwMzU2KSx0ZXJtaW5hbERlYmlhbjpEdCgidGVybWluYWwtZGViaWFuIiw2MDM1NyksdGVybWluYWxMaW51eDpEdCgidGVybWluYWwtbGludXgiLDYwMzU4KSx0ZXJtaW5hbFBvd2Vyc2hlbGw6RHQoInRlcm1pbmFsLXBvd2Vyc2hlbGwiLDYwMzU5KSx0ZXJtaW5hbFRtdXg6RHQoInRlcm1pbmFsLXRtdXgiLDYwMzYwKSx0ZXJtaW5hbFVidW50dTpEdCgidGVybWluYWwtdWJ1bnR1Iiw2MDM2MSksdGVybWluYWxCYXNoOkR0KCJ0ZXJtaW5hbC1iYXNoIiw2MDM2MiksYXJyb3dTd2FwOkR0KCJhcnJvdy1zd2FwIiw2MDM2MyksY29weTpEdCgiY29weSIsNjAzNjQpLHBlcnNvbkFkZDpEdCgicGVyc29uLWFkZCIsNjAzNjUpLGZpbHRlckZpbGxlZDpEdCgiZmlsdGVyLWZpbGxlZCIsNjAzNjYpLHdhbmQ6RHQoIndhbmQiLDYwMzY3KSxkZWJ1Z0xpbmVCeUxpbmU6RHQoImRlYnVnLWxpbmUtYnktbGluZSIsNjAzNjgpLGluc3BlY3Q6RHQoImluc3BlY3QiLDYwMzY5KSxsYXllcnM6RHQoImxheWVycyIsNjAzNzApLGxheWVyc0RvdDpEdCgibGF5ZXJzLWRvdCIsNjAzNzEpLGxheWVyc0FjdGl2ZTpEdCgibGF5ZXJzLWFjdGl2ZSIsNjAzNzIpLGNvbXBhc3M6RHQoImNvbXBhc3MiLDYwMzczKSxjb21wYXNzRG90OkR0KCJjb21wYXNzLWRvdCIsNjAzNzQpLGNvbXBhc3NBY3RpdmU6RHQoImNvbXBhc3MtYWN0aXZlIiw2MDM3NSksYXp1cmU6RHQoImF6dXJlIiw2MDM3NiksaXNzdWVEcmFmdDpEdCgiaXNzdWUtZHJhZnQiLDYwMzc3KSxnaXRQdWxsUmVxdWVzdENsb3NlZDpEdCgiZ2l0LXB1bGwtcmVxdWVzdC1jbG9zZWQiLDYwMzc4KSxnaXRQdWxsUmVxdWVzdERyYWZ0OkR0KCJnaXQtcHVsbC1yZXF1ZXN0LWRyYWZ0Iiw2MDM3OSksZGVidWdBbGw6RHQoImRlYnVnLWFsbCIsNjAzODApLGRlYnVnQ292ZXJhZ2U6RHQoImRlYnVnLWNvdmVyYWdlIiw2MDM4MSkscnVuRXJyb3JzOkR0KCJydW4tZXJyb3JzIiw2MDM4MiksZm9sZGVyTGlicmFyeTpEdCgiZm9sZGVyLWxpYnJhcnkiLDYwMzgzKSxkZWJ1Z0NvbnRpbnVlU21hbGw6RHQoImRlYnVnLWNvbnRpbnVlLXNtYWxsIiw2MDM4NCksYmVha2VyU3RvcDpEdCgiYmVha2VyLXN0b3AiLDYwMzg1KSxncmFwaExpbmU6RHQoImdyYXBoLWxpbmUiLDYwMzg2KSxncmFwaFNjYXR0ZXI6RHQoImdyYXBoLXNjYXR0ZXIiLDYwMzg3KSxwaWVDaGFydDpEdCgicGllLWNoYXJ0Iiw2MDM4OCksYnJhY2tldERvdDpEdCgiYnJhY2tldC1kb3QiLDYwMzg5KSxicmFja2V0RXJyb3I6RHQoImJyYWNrZXQtZXJyb3IiLDYwMzkwKSxsb2NrU21hbGw6RHQoImxvY2stc21hbGwiLDYwMzkxKSxhenVyZURldm9wczpEdCgiYXp1cmUtZGV2b3BzIiw2MDM5MiksdmVyaWZpZWRGaWxsZWQ6RHQoInZlcmlmaWVkLWZpbGxlZCIsNjAzOTMpLG5ld0xpbmU6RHQoIm5ld2xpbmUiLDYwMzk0KSxsYXlvdXQ6RHQoImxheW91dCIsNjAzOTUpLGxheW91dEFjdGl2aXR5YmFyTGVmdDpEdCgibGF5b3V0LWFjdGl2aXR5YmFyLWxlZnQiLDYwMzk2KSxsYXlvdXRBY3Rpdml0eWJhclJpZ2h0OkR0KCJsYXlvdXQtYWN0aXZpdHliYXItcmlnaHQiLDYwMzk3KSxsYXlvdXRQYW5lbExlZnQ6RHQoImxheW91dC1wYW5lbC1sZWZ0Iiw2MDM5OCksbGF5b3V0UGFuZWxDZW50ZXI6RHQoImxheW91dC1wYW5lbC1jZW50ZXIiLDYwMzk5KSxsYXlvdXRQYW5lbEp1c3RpZnk6RHQoImxheW91dC1wYW5lbC1qdXN0aWZ5Iiw2MDQwMCksbGF5b3V0UGFuZWxSaWdodDpEdCgibGF5b3V0LXBhbmVsLXJpZ2h0Iiw2MDQwMSksbGF5b3V0UGFuZWw6RHQoImxheW91dC1wYW5lbCIsNjA0MDIpLGxheW91dFNpZGViYXJMZWZ0OkR0KCJsYXlvdXQtc2lkZWJhci1sZWZ0Iiw2MDQwMyksbGF5b3V0U2lkZWJhclJpZ2h0OkR0KCJsYXlvdXQtc2lkZWJhci1yaWdodCIsNjA0MDQpLGxheW91dFN0YXR1c2JhcjpEdCgibGF5b3V0LXN0YXR1c2JhciIsNjA0MDUpLGxheW91dE1lbnViYXI6RHQoImxheW91dC1tZW51YmFyIiw2MDQwNiksbGF5b3V0Q2VudGVyZWQ6RHQoImxheW91dC1jZW50ZXJlZCIsNjA0MDcpLGxheW91dFNpZGViYXJSaWdodE9mZjpEdCgibGF5b3V0LXNpZGViYXItcmlnaHQtb2ZmIiw2MDQxNiksbGF5b3V0UGFuZWxPZmY6RHQoImxheW91dC1wYW5lbC1vZmYiLDYwNDE3KSxsYXlvdXRTaWRlYmFyTGVmdE9mZjpEdCgibGF5b3V0LXNpZGViYXItbGVmdC1vZmYiLDYwNDE4KSx0YXJnZXQ6RHQoInRhcmdldCIsNjA0MDgpLGluZGVudDpEdCgiaW5kZW50Iiw2MDQwOSkscmVjb3JkU21hbGw6RHQoInJlY29yZC1zbWFsbCIsNjA0MTApLGVycm9yU21hbGw6RHQoImVycm9yLXNtYWxsIiw2MDQxMSksYXJyb3dDaXJjbGVEb3duOkR0KCJhcnJvdy1jaXJjbGUtZG93biIsNjA0MTIpLGFycm93Q2lyY2xlTGVmdDpEdCgiYXJyb3ctY2lyY2xlLWxlZnQiLDYwNDEzKSxhcnJvd0NpcmNsZVJpZ2h0OkR0KCJhcnJvdy1jaXJjbGUtcmlnaHQiLDYwNDE0KSxhcnJvd0NpcmNsZVVwOkR0KCJhcnJvdy1jaXJjbGUtdXAiLDYwNDE1KSxoZWFydEZpbGxlZDpEdCgiaGVhcnQtZmlsbGVkIiw2MDQyMCksbWFwOkR0KCJtYXAiLDYwNDIxKSxtYXBGaWxsZWQ6RHQoIm1hcC1maWxsZWQiLDYwNDIyKSxjaXJjbGVTbWFsbDpEdCgiY2lyY2xlLXNtYWxsIiw2MDQyMyksYmVsbFNsYXNoOkR0KCJiZWxsLXNsYXNoIiw2MDQyNCksYmVsbFNsYXNoRG90OkR0KCJiZWxsLXNsYXNoLWRvdCIsNjA0MjUpLGNvbW1lbnRVbnJlc29sdmVkOkR0KCJjb21tZW50LXVucmVzb2x2ZWQiLDYwNDI2KSxnaXRQdWxsUmVxdWVzdEdvVG9DaGFuZ2VzOkR0KCJnaXQtcHVsbC1yZXF1ZXN0LWdvLXRvLWNoYW5nZXMiLDYwNDI3KSxnaXRQdWxsUmVxdWVzdE5ld0NoYW5nZXM6RHQoImdpdC1wdWxsLXJlcXVlc3QtbmV3LWNoYW5nZXMiLDYwNDI4KSxzZWFyY2hGdXp6eTpEdCgic2VhcmNoLWZ1enp5Iiw2MDQyOSksY29tbWVudERyYWZ0OkR0KCJjb21tZW50LWRyYWZ0Iiw2MDQzMCksc2VuZDpEdCgic2VuZCIsNjA0MzEpLHNwYXJrbGU6RHQoInNwYXJrbGUiLDYwNDMyKSxpbnNlcnQ6RHQoImluc2VydCIsNjA0MzMpLGRpYWxvZ0Vycm9yOkR0KCJkaWFsb2ctZXJyb3IiLCJlcnJvciIpLGRpYWxvZ1dhcm5pbmc6RHQoImRpYWxvZy13YXJuaW5nIiwid2FybmluZyIpLGRpYWxvZ0luZm86RHQoImRpYWxvZy1pbmZvIiwiaW5mbyIpLGRpYWxvZ0Nsb3NlOkR0KCJkaWFsb2ctY2xvc2UiLCJjbG9zZSIpLHRyZWVJdGVtRXhwYW5kZWQ6RHQoInRyZWUtaXRlbS1leHBhbmRlZCIsImNoZXZyb24tZG93biIpLHRyZWVGaWx0ZXJPblR5cGVPbjpEdCgidHJlZS1maWx0ZXItb24tdHlwZS1vbiIsImxpc3QtZmlsdGVyIiksdHJlZUZpbHRlck9uVHlwZU9mZjpEdCgidHJlZS1maWx0ZXItb24tdHlwZS1vZmYiLCJsaXN0LXNlbGVjdGlvbiIpLHRyZWVGaWx0ZXJDbGVhcjpEdCgidHJlZS1maWx0ZXItY2xlYXIiLCJjbG9zZSIpLHRyZWVJdGVtTG9hZGluZzpEdCgidHJlZS1pdGVtLWxvYWRpbmciLCJsb2FkaW5nIiksbWVudVNlbGVjdGlvbjpEdCgibWVudS1zZWxlY3Rpb24iLCJjaGVjayIpLG1lbnVTdWJtZW51OkR0KCJtZW51LXN1Ym1lbnUiLCJjaGV2cm9uLXJpZ2h0IiksbWVudUJhck1vcmU6RHQoIm1lbnViYXItbW9yZSIsIm1vcmUiKSxzY3JvbGxiYXJCdXR0b25MZWZ0OkR0KCJzY3JvbGxiYXItYnV0dG9uLWxlZnQiLCJ0cmlhbmdsZS1sZWZ0Iiksc2Nyb2xsYmFyQnV0dG9uUmlnaHQ6RHQoInNjcm9sbGJhci1idXR0b24tcmlnaHQiLCJ0cmlhbmdsZS1yaWdodCIpLHNjcm9sbGJhckJ1dHRvblVwOkR0KCJzY3JvbGxiYXItYnV0dG9uLXVwIiwidHJpYW5nbGUtdXAiKSxzY3JvbGxiYXJCdXR0b25Eb3duOkR0KCJzY3JvbGxiYXItYnV0dG9uLWRvd24iLCJ0cmlhbmdsZS1kb3duIiksdG9vbEJhck1vcmU6RHQoInRvb2xiYXItbW9yZSIsIm1vcmUiKSxxdWlja0lucHV0QmFjazpEdCgicXVpY2staW5wdXQtYmFjayIsImFycm93LWxlZnQiKX07dmFyIEt0LFZ0LHF0LEJ0LFV0LFd0LEh0LCR0LHp0LGp0LEd0LFl0LFF0LFh0LEp0LFp0LGVuLHRuLG5uLHJuLHNuLG9uLGFuLGxuLHVuLGhuLGNuLGRuLG1uLGduLGZuLHBuLGJuLF9uLENuLHluLHZuLExuLHduLFNuLE5uLEVuLEFuLFJuLHhuLE1uLGtuLE9uLFRuLEluLFBuPWZ1bmN0aW9uKGUsdCxuLHIpe3JldHVybiBuZXcobnx8KG49UHJvbWlzZSkpKChmdW5jdGlvbihpLHMpe2Z1bmN0aW9uIG8oZSl7dHJ5e2woci5uZXh0KGUpKX1jYXRjaChlKXtzKGUpfX1mdW5jdGlvbiBhKGUpe3RyeXtsKHIudGhyb3coZSkpfWNhdGNoKGUpe3MoZSl9fWZ1bmN0aW9uIGwoZSl7dmFyIHQ7ZS5kb25lP2koZS52YWx1ZSk6KHQ9ZS52YWx1ZSx0IGluc3RhbmNlb2Ygbj90Om5ldyBuKChmdW5jdGlvbihlKXtlKHQpfSkpKS50aGVuKG8sYSl9bCgocj1yLmFwcGx5KGUsdHx8W10pKS5uZXh0KCkpfSkpfTtjbGFzcyBEbiBleHRlbmRzIG17Z2V0IGlzUmVzb2x2ZWQoKXtyZXR1cm4gdGhpcy5faXNSZXNvbHZlZH1jb25zdHJ1Y3RvcihlLHQsbil7c3VwZXIoKSx0aGlzLl9yZWdpc3RyeT1lLHRoaXMuX2xhbmd1YWdlSWQ9dCx0aGlzLl9mYWN0b3J5PW4sdGhpcy5faXNEaXNwb3NlZD0hMSx0aGlzLl9yZXNvbHZlUHJvbWlzZT1udWxsLHRoaXMuX2lzUmVzb2x2ZWQ9ITF9ZGlzcG9zZSgpe3RoaXMuX2lzRGlzcG9zZWQ9ITAsc3VwZXIuZGlzcG9zZSgpfXJlc29sdmUoKXtyZXR1cm4gUG4odGhpcyx2b2lkIDAsdm9pZCAwLChmdW5jdGlvbiooKXtyZXR1cm4gdGhpcy5fcmVzb2x2ZVByb21pc2V8fCh0aGlzLl9yZXNvbHZlUHJvbWlzZT10aGlzLl9jcmVhdGUoKSksdGhpcy5fcmVzb2x2ZVByb21pc2V9KSl9X2NyZWF0ZSgpe3JldHVybiBQbih0aGlzLHZvaWQgMCx2b2lkIDAsKGZ1bmN0aW9uKigpe2NvbnN0IGU9eWllbGQgdGhpcy5fZmFjdG9yeS50b2tlbml6YXRpb25TdXBwb3J0O3RoaXMuX2lzUmVzb2x2ZWQ9ITAsZSYmIXRoaXMuX2lzRGlzcG9zZWQmJnRoaXMuX3JlZ2lzdGVyKHRoaXMuX3JlZ2lzdHJ5LnJlZ2lzdGVyKHRoaXMuX2xhbmd1YWdlSWQsZSkpfSkpfX1jbGFzcyBGbntjb25zdHJ1Y3RvcihlLHQsbil7dGhpcy5vZmZzZXQ9ZSx0aGlzLnR5cGU9dCx0aGlzLmxhbmd1YWdlPW4sdGhpcy5fdG9rZW5CcmFuZD12b2lkIDB9dG9TdHJpbmcoKXtyZXR1cm4iKCIrdGhpcy5vZmZzZXQrIiwgIit0aGlzLnR5cGUrIikifX0hZnVuY3Rpb24oZSl7Y29uc3QgdD1uZXcgTWFwO3Quc2V0KDAsRnQuc3ltYm9sTWV0aG9kKSx0LnNldCgxLEZ0LnN5bWJvbEZ1bmN0aW9uKSx0LnNldCgyLEZ0LnN5bWJvbENvbnN0cnVjdG9yKSx0LnNldCgzLEZ0LnN5bWJvbEZpZWxkKSx0LnNldCg0LEZ0LnN5bWJvbFZhcmlhYmxlKSx0LnNldCg1LEZ0LnN5bWJvbENsYXNzKSx0LnNldCg2LEZ0LnN5bWJvbFN0cnVjdCksdC5zZXQoNyxGdC5zeW1ib2xJbnRlcmZhY2UpLHQuc2V0KDgsRnQuc3ltYm9sTW9kdWxlKSx0LnNldCg5LEZ0LnN5bWJvbFByb3BlcnR5KSx0LnNldCgxMCxGdC5zeW1ib2xFdmVudCksdC5zZXQoMTEsRnQuc3ltYm9sT3BlcmF0b3IpLHQuc2V0KDEyLEZ0LnN5bWJvbFVuaXQpLHQuc2V0KDEzLEZ0LnN5bWJvbFZhbHVlKSx0LnNldCgxNSxGdC5zeW1ib2xFbnVtKSx0LnNldCgxNCxGdC5zeW1ib2xDb25zdGFudCksdC5zZXQoMTUsRnQuc3ltYm9sRW51bSksdC5zZXQoMTYsRnQuc3ltYm9sRW51bU1lbWJlciksdC5zZXQoMTcsRnQuc3ltYm9sS2V5d29yZCksdC5zZXQoMjcsRnQuc3ltYm9sU25pcHBldCksdC5zZXQoMTgsRnQuc3ltYm9sVGV4dCksdC5zZXQoMTksRnQuc3ltYm9sQ29sb3IpLHQuc2V0KDIwLEZ0LnN5bWJvbEZpbGUpLHQuc2V0KDIxLEZ0LnN5bWJvbFJlZmVyZW5jZSksdC5zZXQoMjIsRnQuc3ltYm9sQ3VzdG9tQ29sb3IpLHQuc2V0KDIzLEZ0LnN5bWJvbEZvbGRlciksdC5zZXQoMjQsRnQuc3ltYm9sVHlwZVBhcmFtZXRlciksdC5zZXQoMjUsRnQuYWNjb3VudCksdC5zZXQoMjYsRnQuaXNzdWVzKSxlLnRvSWNvbj1mdW5jdGlvbihlKXtsZXQgbj10LmdldChlKTtyZXR1cm4gbnx8KGNvbnNvbGUuaW5mbygiTm8gY29kaWNvbiBmb3VuZCBmb3IgQ29tcGxldGlvbkl0ZW1LaW5kICIrZSksbj1GdC5zeW1ib2xQcm9wZXJ0eSksbn07Y29uc3Qgbj1uZXcgTWFwO24uc2V0KCJtZXRob2QiLDApLG4uc2V0KCJmdW5jdGlvbiIsMSksbi5zZXQoImNvbnN0cnVjdG9yIiwyKSxuLnNldCgiZmllbGQiLDMpLG4uc2V0KCJ2YXJpYWJsZSIsNCksbi5zZXQoImNsYXNzIiw1KSxuLnNldCgic3RydWN0Iiw2KSxuLnNldCgiaW50ZXJmYWNlIiw3KSxuLnNldCgibW9kdWxlIiw4KSxuLnNldCgicHJvcGVydHkiLDkpLG4uc2V0KCJldmVudCIsMTApLG4uc2V0KCJvcGVyYXRvciIsMTEpLG4uc2V0KCJ1bml0IiwxMiksbi5zZXQoInZhbHVlIiwxMyksbi5zZXQoImNvbnN0YW50IiwxNCksbi5zZXQoImVudW0iLDE1KSxuLnNldCgiZW51bS1tZW1iZXIiLDE2KSxuLnNldCgiZW51bU1lbWJlciIsMTYpLG4uc2V0KCJrZXl3b3JkIiwxNyksbi5zZXQoInNuaXBwZXQiLDI3KSxuLnNldCgidGV4dCIsMTgpLG4uc2V0KCJjb2xvciIsMTkpLG4uc2V0KCJmaWxlIiwyMCksbi5zZXQoInJlZmVyZW5jZSIsMjEpLG4uc2V0KCJjdXN0b21jb2xvciIsMjIpLG4uc2V0KCJmb2xkZXIiLDIzKSxuLnNldCgidHlwZS1wYXJhbWV0ZXIiLDI0KSxuLnNldCgidHlwZVBhcmFtZXRlciIsMjQpLG4uc2V0KCJhY2NvdW50IiwyNSksbi5zZXQoImlzc3VlIiwyNiksZS5mcm9tU3RyaW5nPWZ1bmN0aW9uKGUsdCl7bGV0IHI9bi5nZXQoZSk7cmV0dXJuIHZvaWQgMCE9PXJ8fHR8fChyPTkpLHJ9fShLdHx8KEt0PXt9KSksZnVuY3Rpb24oZSl7ZVtlLkF1dG9tYXRpYz0wXT0iQXV0b21hdGljIixlW2UuRXhwbGljaXQ9MV09IkV4cGxpY2l0In0oVnR8fChWdD17fSkpLGZ1bmN0aW9uKGUpe2VbZS5JbnZva2U9MV09Ikludm9rZSIsZVtlLlRyaWdnZXJDaGFyYWN0ZXI9Ml09IlRyaWdnZXJDaGFyYWN0ZXIiLGVbZS5Db250ZW50Q2hhbmdlPTNdPSJDb250ZW50Q2hhbmdlIn0ocXR8fChxdD17fSkpLGZ1bmN0aW9uKGUpe2VbZS5UZXh0PTBdPSJUZXh0IixlW2UuUmVhZD0xXT0iUmVhZCIsZVtlLldyaXRlPTJdPSJXcml0ZSJ9KEJ0fHwoQnQ9e30pKSxmdW5jdGlvbihlKXtjb25zdCB0PW5ldyBNYXA7dC5zZXQoMCxGdC5zeW1ib2xGaWxlKSx0LnNldCgxLEZ0LnN5bWJvbE1vZHVsZSksdC5zZXQoMixGdC5zeW1ib2xOYW1lc3BhY2UpLHQuc2V0KDMsRnQuc3ltYm9sUGFja2FnZSksdC5zZXQoNCxGdC5zeW1ib2xDbGFzcyksdC5zZXQoNSxGdC5zeW1ib2xNZXRob2QpLHQuc2V0KDYsRnQuc3ltYm9sUHJvcGVydHkpLHQuc2V0KDcsRnQuc3ltYm9sRmllbGQpLHQuc2V0KDgsRnQuc3ltYm9sQ29uc3RydWN0b3IpLHQuc2V0KDksRnQuc3ltYm9sRW51bSksdC5zZXQoMTAsRnQuc3ltYm9sSW50ZXJmYWNlKSx0LnNldCgxMSxGdC5zeW1ib2xGdW5jdGlvbiksdC5zZXQoMTIsRnQuc3ltYm9sVmFyaWFibGUpLHQuc2V0KDEzLEZ0LnN5bWJvbENvbnN0YW50KSx0LnNldCgxNCxGdC5zeW1ib2xTdHJpbmcpLHQuc2V0KDE1LEZ0LnN5bWJvbE51bWJlciksdC5zZXQoMTYsRnQuc3ltYm9sQm9vbGVhbiksdC5zZXQoMTcsRnQuc3ltYm9sQXJyYXkpLHQuc2V0KDE4LEZ0LnN5bWJvbE9iamVjdCksdC5zZXQoMTksRnQuc3ltYm9sS2V5KSx0LnNldCgyMCxGdC5zeW1ib2xOdWxsKSx0LnNldCgyMSxGdC5zeW1ib2xFbnVtTWVtYmVyKSx0LnNldCgyMixGdC5zeW1ib2xTdHJ1Y3QpLHQuc2V0KDIzLEZ0LnN5bWJvbEV2ZW50KSx0LnNldCgyNCxGdC5zeW1ib2xPcGVyYXRvciksdC5zZXQoMjUsRnQuc3ltYm9sVHlwZVBhcmFtZXRlciksZS50b0ljb249ZnVuY3Rpb24oZSl7bGV0IG49dC5nZXQoZSk7cmV0dXJuIG58fChjb25zb2xlLmluZm8oIk5vIGNvZGljb24gZm91bmQgZm9yIFN5bWJvbEtpbmQgIitlKSxuPUZ0LnN5bWJvbFByb3BlcnR5KSxufX0oVXR8fChVdD17fSkpLGZ1bmN0aW9uKGUpe2UuaXM9ZnVuY3Rpb24oZSl7cmV0dXJuISghZXx8Im9iamVjdCIhPXR5cGVvZiBlKSYmKCJzdHJpbmciPT10eXBlb2YgZS5pZCYmInN0cmluZyI9PXR5cGVvZiBlLnRpdGxlKX19KFd0fHwoV3Q9e30pKSxmdW5jdGlvbihlKXtlW2UuVHlwZT0xXT0iVHlwZSIsZVtlLlBhcmFtZXRlcj0yXT0iUGFyYW1ldGVyIn0oSHR8fChIdD17fSkpLG5ldyBjbGFzc3tjb25zdHJ1Y3Rvcigpe3RoaXMuX3Rva2VuaXphdGlvblN1cHBvcnRzPW5ldyBNYXAsdGhpcy5fZmFjdG9yaWVzPW5ldyBNYXAsdGhpcy5fb25EaWRDaGFuZ2U9bmV3IEgsdGhpcy5vbkRpZENoYW5nZT10aGlzLl9vbkRpZENoYW5nZS5ldmVudCx0aGlzLl9jb2xvck1hcD1udWxsfWhhbmRsZUNoYW5nZShlKXt0aGlzLl9vbkRpZENoYW5nZS5maXJlKHtjaGFuZ2VkTGFuZ3VhZ2VzOmUsY2hhbmdlZENvbG9yTWFwOiExfSl9cmVnaXN0ZXIoZSx0KXtyZXR1cm4gdGhpcy5fdG9rZW5pemF0aW9uU3VwcG9ydHMuc2V0KGUsdCksdGhpcy5oYW5kbGVDaGFuZ2UoW2VdKSxjKCgoKT0+e3RoaXMuX3Rva2VuaXphdGlvblN1cHBvcnRzLmdldChlKT09PXQmJih0aGlzLl90b2tlbml6YXRpb25TdXBwb3J0cy5kZWxldGUoZSksdGhpcy5oYW5kbGVDaGFuZ2UoW2VdKSl9KSl9Z2V0KGUpe3JldHVybiB0aGlzLl90b2tlbml6YXRpb25TdXBwb3J0cy5nZXQoZSl8fG51bGx9cmVnaXN0ZXJGYWN0b3J5KGUsdCl7dmFyIG47bnVsbD09PShuPXRoaXMuX2ZhY3Rvcmllcy5nZXQoZSkpfHx2b2lkIDA9PT1ufHxuLmRpc3Bvc2UoKTtjb25zdCByPW5ldyBEbih0aGlzLGUsdCk7cmV0dXJuIHRoaXMuX2ZhY3Rvcmllcy5zZXQoZSxyKSxjKCgoKT0+e2NvbnN0IHQ9dGhpcy5fZmFjdG9yaWVzLmdldChlKTt0JiZ0PT09ciYmKHRoaXMuX2ZhY3Rvcmllcy5kZWxldGUoZSksdC5kaXNwb3NlKCkpfSkpfWdldE9yQ3JlYXRlKGUpe3JldHVybiBQbih0aGlzLHZvaWQgMCx2b2lkIDAsKGZ1bmN0aW9uKigpe2NvbnN0IHQ9dGhpcy5nZXQoZSk7aWYodClyZXR1cm4gdDtjb25zdCBuPXRoaXMuX2ZhY3Rvcmllcy5nZXQoZSk7cmV0dXJuIW58fG4uaXNSZXNvbHZlZD9udWxsOih5aWVsZCBuLnJlc29sdmUoKSx0aGlzLmdldChlKSl9KSl9aXNSZXNvbHZlZChlKXtpZih0aGlzLmdldChlKSlyZXR1cm4hMDtjb25zdCB0PXRoaXMuX2ZhY3Rvcmllcy5nZXQoZSk7cmV0dXJuISh0JiYhdC5pc1Jlc29sdmVkKX1zZXRDb2xvck1hcChlKXt0aGlzLl9jb2xvck1hcD1lLHRoaXMuX29uRGlkQ2hhbmdlLmZpcmUoe2NoYW5nZWRMYW5ndWFnZXM6QXJyYXkuZnJvbSh0aGlzLl90b2tlbml6YXRpb25TdXBwb3J0cy5rZXlzKCkpLGNoYW5nZWRDb2xvck1hcDohMH0pfWdldENvbG9yTWFwKCl7cmV0dXJuIHRoaXMuX2NvbG9yTWFwfWdldERlZmF1bHRCYWNrZ3JvdW5kKCl7cmV0dXJuIHRoaXMuX2NvbG9yTWFwJiZ0aGlzLl9jb2xvck1hcC5sZW5ndGg+Mj90aGlzLl9jb2xvck1hcFsyXTpudWxsfX0sZnVuY3Rpb24oZSl7ZVtlLlVua25vd249MF09IlVua25vd24iLGVbZS5EaXNhYmxlZD0xXT0iRGlzYWJsZWQiLGVbZS5FbmFibGVkPTJdPSJFbmFibGVkIn0oJHR8fCgkdD17fSkpLGZ1bmN0aW9uKGUpe2VbZS5JbnZva2U9MV09Ikludm9rZSIsZVtlLkF1dG89Ml09IkF1dG8ifSh6dHx8KHp0PXt9KSksZnVuY3Rpb24oZSl7ZVtlLk5vbmU9MF09Ik5vbmUiLGVbZS5LZWVwV2hpdGVzcGFjZT0xXT0iS2VlcFdoaXRlc3BhY2UiLGVbZS5JbnNlcnRBc1NuaXBwZXQ9NF09Ikluc2VydEFzU25pcHBldCJ9KGp0fHwoanQ9e30pKSxmdW5jdGlvbihlKXtlW2UuTWV0aG9kPTBdPSJNZXRob2QiLGVbZS5GdW5jdGlvbj0xXT0iRnVuY3Rpb24iLGVbZS5Db25zdHJ1Y3Rvcj0yXT0iQ29uc3RydWN0b3IiLGVbZS5GaWVsZD0zXT0iRmllbGQiLGVbZS5WYXJpYWJsZT00XT0iVmFyaWFibGUiLGVbZS5DbGFzcz01XT0iQ2xhc3MiLGVbZS5TdHJ1Y3Q9Nl09IlN0cnVjdCIsZVtlLkludGVyZmFjZT03XT0iSW50ZXJmYWNlIixlW2UuTW9kdWxlPThdPSJNb2R1bGUiLGVbZS5Qcm9wZXJ0eT05XT0iUHJvcGVydHkiLGVbZS5FdmVudD0xMF09IkV2ZW50IixlW2UuT3BlcmF0b3I9MTFdPSJPcGVyYXRvciIsZVtlLlVuaXQ9MTJdPSJVbml0IixlW2UuVmFsdWU9MTNdPSJWYWx1ZSIsZVtlLkNvbnN0YW50PTE0XT0iQ29uc3RhbnQiLGVbZS5FbnVtPTE1XT0iRW51bSIsZVtlLkVudW1NZW1iZXI9MTZdPSJFbnVtTWVtYmVyIixlW2UuS2V5d29yZD0xN109IktleXdvcmQiLGVbZS5UZXh0PTE4XT0iVGV4dCIsZVtlLkNvbG9yPTE5XT0iQ29sb3IiLGVbZS5GaWxlPTIwXT0iRmlsZSIsZVtlLlJlZmVyZW5jZT0yMV09IlJlZmVyZW5jZSIsZVtlLkN1c3RvbWNvbG9yPTIyXT0iQ3VzdG9tY29sb3IiLGVbZS5Gb2xkZXI9MjNdPSJGb2xkZXIiLGVbZS5UeXBlUGFyYW1ldGVyPTI0XT0iVHlwZVBhcmFtZXRlciIsZVtlLlVzZXI9MjVdPSJVc2VyIixlW2UuSXNzdWU9MjZdPSJJc3N1ZSIsZVtlLlNuaXBwZXQ9MjddPSJTbmlwcGV0In0oR3R8fChHdD17fSkpLGZ1bmN0aW9uKGUpe2VbZS5EZXByZWNhdGVkPTFdPSJEZXByZWNhdGVkIn0oWXR8fChZdD17fSkpLGZ1bmN0aW9uKGUpe2VbZS5JbnZva2U9MF09Ikludm9rZSIsZVtlLlRyaWdnZXJDaGFyYWN0ZXI9MV09IlRyaWdnZXJDaGFyYWN0ZXIiLGVbZS5UcmlnZ2VyRm9ySW5jb21wbGV0ZUNvbXBsZXRpb25zPTJdPSJUcmlnZ2VyRm9ySW5jb21wbGV0ZUNvbXBsZXRpb25zIn0oUXR8fChRdD17fSkpLGZ1bmN0aW9uKGUpe2VbZS5FWEFDVD0wXT0iRVhBQ1QiLGVbZS5BQk9WRT0xXT0iQUJPVkUiLGVbZS5CRUxPVz0yXT0iQkVMT1cifShYdHx8KFh0PXt9KSksZnVuY3Rpb24oZSl7ZVtlLk5vdFNldD0wXT0iTm90U2V0IixlW2UuQ29udGVudEZsdXNoPTFdPSJDb250ZW50Rmx1c2giLGVbZS5SZWNvdmVyRnJvbU1hcmtlcnM9Ml09IlJlY292ZXJGcm9tTWFya2VycyIsZVtlLkV4cGxpY2l0PTNdPSJFeHBsaWNpdCIsZVtlLlBhc3RlPTRdPSJQYXN0ZSIsZVtlLlVuZG89NV09IlVuZG8iLGVbZS5SZWRvPTZdPSJSZWRvIn0oSnR8fChKdD17fSkpLGZ1bmN0aW9uKGUpe2VbZS5MRj0xXT0iTEYiLGVbZS5DUkxGPTJdPSJDUkxGIn0oWnR8fChadD17fSkpLGZ1bmN0aW9uKGUpe2VbZS5UZXh0PTBdPSJUZXh0IixlW2UuUmVhZD0xXT0iUmVhZCIsZVtlLldyaXRlPTJdPSJXcml0ZSJ9KGVufHwoZW49e30pKSxmdW5jdGlvbihlKXtlW2UuTm9uZT0wXT0iTm9uZSIsZVtlLktlZXA9MV09IktlZXAiLGVbZS5CcmFja2V0cz0yXT0iQnJhY2tldHMiLGVbZS5BZHZhbmNlZD0zXT0iQWR2YW5jZWQiLGVbZS5GdWxsPTRdPSJGdWxsIn0odG58fCh0bj17fSkpLGZ1bmN0aW9uKGUpe2VbZS5hY2NlcHRTdWdnZXN0aW9uT25Db21taXRDaGFyYWN0ZXI9MF09ImFjY2VwdFN1Z2dlc3Rpb25PbkNvbW1pdENoYXJhY3RlciIsZVtlLmFjY2VwdFN1Z2dlc3Rpb25PbkVudGVyPTFdPSJhY2NlcHRTdWdnZXN0aW9uT25FbnRlciIsZVtlLmFjY2Vzc2liaWxpdHlTdXBwb3J0PTJdPSJhY2Nlc3NpYmlsaXR5U3VwcG9ydCIsZVtlLmFjY2Vzc2liaWxpdHlQYWdlU2l6ZT0zXT0iYWNjZXNzaWJpbGl0eVBhZ2VTaXplIixlW2UuYXJpYUxhYmVsPTRdPSJhcmlhTGFiZWwiLGVbZS5hdXRvQ2xvc2luZ0JyYWNrZXRzPTVdPSJhdXRvQ2xvc2luZ0JyYWNrZXRzIixlW2Uuc2NyZWVuUmVhZGVyQW5ub3VuY2VJbmxpbmVTdWdnZXN0aW9uPTZdPSJzY3JlZW5SZWFkZXJBbm5vdW5jZUlubGluZVN1Z2dlc3Rpb24iLGVbZS5hdXRvQ2xvc2luZ0RlbGV0ZT03XT0iYXV0b0Nsb3NpbmdEZWxldGUiLGVbZS5hdXRvQ2xvc2luZ092ZXJ0eXBlPThdPSJhdXRvQ2xvc2luZ092ZXJ0eXBlIixlW2UuYXV0b0Nsb3NpbmdRdW90ZXM9OV09ImF1dG9DbG9zaW5nUXVvdGVzIixlW2UuYXV0b0luZGVudD0xMF09ImF1dG9JbmRlbnQiLGVbZS5hdXRvbWF0aWNMYXlvdXQ9MTFdPSJhdXRvbWF0aWNMYXlvdXQiLGVbZS5hdXRvU3Vycm91bmQ9MTJdPSJhdXRvU3Vycm91bmQiLGVbZS5icmFja2V0UGFpckNvbG9yaXphdGlvbj0xM109ImJyYWNrZXRQYWlyQ29sb3JpemF0aW9uIixlW2UuZ3VpZGVzPTE0XT0iZ3VpZGVzIixlW2UuY29kZUxlbnM9MTVdPSJjb2RlTGVucyIsZVtlLmNvZGVMZW5zRm9udEZhbWlseT0xNl09ImNvZGVMZW5zRm9udEZhbWlseSIsZVtlLmNvZGVMZW5zRm9udFNpemU9MTddPSJjb2RlTGVuc0ZvbnRTaXplIixlW2UuY29sb3JEZWNvcmF0b3JzPTE4XT0iY29sb3JEZWNvcmF0b3JzIixlW2UuY29sb3JEZWNvcmF0b3JzTGltaXQ9MTldPSJjb2xvckRlY29yYXRvcnNMaW1pdCIsZVtlLmNvbHVtblNlbGVjdGlvbj0yMF09ImNvbHVtblNlbGVjdGlvbiIsZVtlLmNvbW1lbnRzPTIxXT0iY29tbWVudHMiLGVbZS5jb250ZXh0bWVudT0yMl09ImNvbnRleHRtZW51IixlW2UuY29weVdpdGhTeW50YXhIaWdobGlnaHRpbmc9MjNdPSJjb3B5V2l0aFN5bnRheEhpZ2hsaWdodGluZyIsZVtlLmN1cnNvckJsaW5raW5nPTI0XT0iY3Vyc29yQmxpbmtpbmciLGVbZS5jdXJzb3JTbW9vdGhDYXJldEFuaW1hdGlvbj0yNV09ImN1cnNvclNtb290aENhcmV0QW5pbWF0aW9uIixlW2UuY3Vyc29yU3R5bGU9MjZdPSJjdXJzb3JTdHlsZSIsZVtlLmN1cnNvclN1cnJvdW5kaW5nTGluZXM9MjddPSJjdXJzb3JTdXJyb3VuZGluZ0xpbmVzIixlW2UuY3Vyc29yU3Vycm91bmRpbmdMaW5lc1N0eWxlPTI4XT0iY3Vyc29yU3Vycm91bmRpbmdMaW5lc1N0eWxlIixlW2UuY3Vyc29yV2lkdGg9MjldPSJjdXJzb3JXaWR0aCIsZVtlLmRpc2FibGVMYXllckhpbnRpbmc9MzBdPSJkaXNhYmxlTGF5ZXJIaW50aW5nIixlW2UuZGlzYWJsZU1vbm9zcGFjZU9wdGltaXphdGlvbnM9MzFdPSJkaXNhYmxlTW9ub3NwYWNlT3B0aW1pemF0aW9ucyIsZVtlLmRvbVJlYWRPbmx5PTMyXT0iZG9tUmVhZE9ubHkiLGVbZS5kcmFnQW5kRHJvcD0zM109ImRyYWdBbmREcm9wIixlW2UuZHJvcEludG9FZGl0b3I9MzRdPSJkcm9wSW50b0VkaXRvciIsZVtlLmVtcHR5U2VsZWN0aW9uQ2xpcGJvYXJkPTM1XT0iZW1wdHlTZWxlY3Rpb25DbGlwYm9hcmQiLGVbZS5leHBlcmltZW50YWxXaGl0ZXNwYWNlUmVuZGVyaW5nPTM2XT0iZXhwZXJpbWVudGFsV2hpdGVzcGFjZVJlbmRlcmluZyIsZVtlLmV4dHJhRWRpdG9yQ2xhc3NOYW1lPTM3XT0iZXh0cmFFZGl0b3JDbGFzc05hbWUiLGVbZS5mYXN0U2Nyb2xsU2Vuc2l0aXZpdHk9MzhdPSJmYXN0U2Nyb2xsU2Vuc2l0aXZpdHkiLGVbZS5maW5kPTM5XT0iZmluZCIsZVtlLmZpeGVkT3ZlcmZsb3dXaWRnZXRzPTQwXT0iZml4ZWRPdmVyZmxvd1dpZGdldHMiLGVbZS5mb2xkaW5nPTQxXT0iZm9sZGluZyIsZVtlLmZvbGRpbmdTdHJhdGVneT00Ml09ImZvbGRpbmdTdHJhdGVneSIsZVtlLmZvbGRpbmdIaWdobGlnaHQ9NDNdPSJmb2xkaW5nSGlnaGxpZ2h0IixlW2UuZm9sZGluZ0ltcG9ydHNCeURlZmF1bHQ9NDRdPSJmb2xkaW5nSW1wb3J0c0J5RGVmYXVsdCIsZVtlLmZvbGRpbmdNYXhpbXVtUmVnaW9ucz00NV09ImZvbGRpbmdNYXhpbXVtUmVnaW9ucyIsZVtlLnVuZm9sZE9uQ2xpY2tBZnRlckVuZE9mTGluZT00Nl09InVuZm9sZE9uQ2xpY2tBZnRlckVuZE9mTGluZSIsZVtlLmZvbnRGYW1pbHk9NDddPSJmb250RmFtaWx5IixlW2UuZm9udEluZm89NDhdPSJmb250SW5mbyIsZVtlLmZvbnRMaWdhdHVyZXM9NDldPSJmb250TGlnYXR1cmVzIixlW2UuZm9udFNpemU9NTBdPSJmb250U2l6ZSIsZVtlLmZvbnRXZWlnaHQ9NTFdPSJmb250V2VpZ2h0IixlW2UuZm9udFZhcmlhdGlvbnM9NTJdPSJmb250VmFyaWF0aW9ucyIsZVtlLmZvcm1hdE9uUGFzdGU9NTNdPSJmb3JtYXRPblBhc3RlIixlW2UuZm9ybWF0T25UeXBlPTU0XT0iZm9ybWF0T25UeXBlIixlW2UuZ2x5cGhNYXJnaW49NTVdPSJnbHlwaE1hcmdpbiIsZVtlLmdvdG9Mb2NhdGlvbj01Nl09ImdvdG9Mb2NhdGlvbiIsZVtlLmhpZGVDdXJzb3JJbk92ZXJ2aWV3UnVsZXI9NTddPSJoaWRlQ3Vyc29ySW5PdmVydmlld1J1bGVyIixlW2UuaG92ZXI9NThdPSJob3ZlciIsZVtlLmluRGlmZkVkaXRvcj01OV09ImluRGlmZkVkaXRvciIsZVtlLmlubGluZVN1Z2dlc3Q9NjBdPSJpbmxpbmVTdWdnZXN0IixlW2UubGV0dGVyU3BhY2luZz02MV09ImxldHRlclNwYWNpbmciLGVbZS5saWdodGJ1bGI9NjJdPSJsaWdodGJ1bGIiLGVbZS5saW5lRGVjb3JhdGlvbnNXaWR0aD02M109ImxpbmVEZWNvcmF0aW9uc1dpZHRoIixlW2UubGluZUhlaWdodD02NF09ImxpbmVIZWlnaHQiLGVbZS5saW5lTnVtYmVycz02NV09ImxpbmVOdW1iZXJzIixlW2UubGluZU51bWJlcnNNaW5DaGFycz02Nl09ImxpbmVOdW1iZXJzTWluQ2hhcnMiLGVbZS5saW5rZWRFZGl0aW5nPTY3XT0ibGlua2VkRWRpdGluZyIsZVtlLmxpbmtzPTY4XT0ibGlua3MiLGVbZS5tYXRjaEJyYWNrZXRzPTY5XT0ibWF0Y2hCcmFja2V0cyIsZVtlLm1pbmltYXA9NzBdPSJtaW5pbWFwIixlW2UubW91c2VTdHlsZT03MV09Im1vdXNlU3R5bGUiLGVbZS5tb3VzZVdoZWVsU2Nyb2xsU2Vuc2l0aXZpdHk9NzJdPSJtb3VzZVdoZWVsU2Nyb2xsU2Vuc2l0aXZpdHkiLGVbZS5tb3VzZVdoZWVsWm9vbT03M109Im1vdXNlV2hlZWxab29tIixlW2UubXVsdGlDdXJzb3JNZXJnZU92ZXJsYXBwaW5nPTc0XT0ibXVsdGlDdXJzb3JNZXJnZU92ZXJsYXBwaW5nIixlW2UubXVsdGlDdXJzb3JNb2RpZmllcj03NV09Im11bHRpQ3Vyc29yTW9kaWZpZXIiLGVbZS5tdWx0aUN1cnNvclBhc3RlPTc2XT0ibXVsdGlDdXJzb3JQYXN0ZSIsZVtlLm11bHRpQ3Vyc29yTGltaXQ9NzddPSJtdWx0aUN1cnNvckxpbWl0IixlW2Uub2NjdXJyZW5jZXNIaWdobGlnaHQ9NzhdPSJvY2N1cnJlbmNlc0hpZ2hsaWdodCIsZVtlLm92ZXJ2aWV3UnVsZXJCb3JkZXI9NzldPSJvdmVydmlld1J1bGVyQm9yZGVyIixlW2Uub3ZlcnZpZXdSdWxlckxhbmVzPTgwXT0ib3ZlcnZpZXdSdWxlckxhbmVzIixlW2UucGFkZGluZz04MV09InBhZGRpbmciLGVbZS5wYXN0ZUFzPTgyXT0icGFzdGVBcyIsZVtlLnBhcmFtZXRlckhpbnRzPTgzXT0icGFyYW1ldGVySGludHMiLGVbZS5wZWVrV2lkZ2V0RGVmYXVsdEZvY3VzPTg0XT0icGVla1dpZGdldERlZmF1bHRGb2N1cyIsZVtlLmRlZmluaXRpb25MaW5rT3BlbnNJblBlZWs9ODVdPSJkZWZpbml0aW9uTGlua09wZW5zSW5QZWVrIixlW2UucXVpY2tTdWdnZXN0aW9ucz04Nl09InF1aWNrU3VnZ2VzdGlvbnMiLGVbZS5xdWlja1N1Z2dlc3Rpb25zRGVsYXk9ODddPSJxdWlja1N1Z2dlc3Rpb25zRGVsYXkiLGVbZS5yZWFkT25seT04OF09InJlYWRPbmx5IixlW2UucmVuYW1lT25UeXBlPTg5XT0icmVuYW1lT25UeXBlIixlW2UucmVuZGVyQ29udHJvbENoYXJhY3RlcnM9OTBdPSJyZW5kZXJDb250cm9sQ2hhcmFjdGVycyIsZVtlLnJlbmRlckZpbmFsTmV3bGluZT05MV09InJlbmRlckZpbmFsTmV3bGluZSIsZVtlLnJlbmRlckxpbmVIaWdobGlnaHQ9OTJdPSJyZW5kZXJMaW5lSGlnaGxpZ2h0IixlW2UucmVuZGVyTGluZUhpZ2hsaWdodE9ubHlXaGVuRm9jdXM9OTNdPSJyZW5kZXJMaW5lSGlnaGxpZ2h0T25seVdoZW5Gb2N1cyIsZVtlLnJlbmRlclZhbGlkYXRpb25EZWNvcmF0aW9ucz05NF09InJlbmRlclZhbGlkYXRpb25EZWNvcmF0aW9ucyIsZVtlLnJlbmRlcldoaXRlc3BhY2U9OTVdPSJyZW5kZXJXaGl0ZXNwYWNlIixlW2UucmV2ZWFsSG9yaXpvbnRhbFJpZ2h0UGFkZGluZz05Nl09InJldmVhbEhvcml6b250YWxSaWdodFBhZGRpbmciLGVbZS5yb3VuZGVkU2VsZWN0aW9uPTk3XT0icm91bmRlZFNlbGVjdGlvbiIsZVtlLnJ1bGVycz05OF09InJ1bGVycyIsZVtlLnNjcm9sbGJhcj05OV09InNjcm9sbGJhciIsZVtlLnNjcm9sbEJleW9uZExhc3RDb2x1bW49MTAwXT0ic2Nyb2xsQmV5b25kTGFzdENvbHVtbiIsZVtlLnNjcm9sbEJleW9uZExhc3RMaW5lPTEwMV09InNjcm9sbEJleW9uZExhc3RMaW5lIixlW2Uuc2Nyb2xsUHJlZG9taW5hbnRBeGlzPTEwMl09InNjcm9sbFByZWRvbWluYW50QXhpcyIsZVtlLnNlbGVjdGlvbkNsaXBib2FyZD0xMDNdPSJzZWxlY3Rpb25DbGlwYm9hcmQiLGVbZS5zZWxlY3Rpb25IaWdobGlnaHQ9MTA0XT0ic2VsZWN0aW9uSGlnaGxpZ2h0IixlW2Uuc2VsZWN0T25MaW5lTnVtYmVycz0xMDVdPSJzZWxlY3RPbkxpbmVOdW1iZXJzIixlW2Uuc2hvd0ZvbGRpbmdDb250cm9scz0xMDZdPSJzaG93Rm9sZGluZ0NvbnRyb2xzIixlW2Uuc2hvd1VudXNlZD0xMDddPSJzaG93VW51c2VkIixlW2Uuc25pcHBldFN1Z2dlc3Rpb25zPTEwOF09InNuaXBwZXRTdWdnZXN0aW9ucyIsZVtlLnNtYXJ0U2VsZWN0PTEwOV09InNtYXJ0U2VsZWN0IixlW2Uuc21vb3RoU2Nyb2xsaW5nPTExMF09InNtb290aFNjcm9sbGluZyIsZVtlLnN0aWNreVNjcm9sbD0xMTFdPSJzdGlja3lTY3JvbGwiLGVbZS5zdGlja3lUYWJTdG9wcz0xMTJdPSJzdGlja3lUYWJTdG9wcyIsZVtlLnN0b3BSZW5kZXJpbmdMaW5lQWZ0ZXI9MTEzXT0ic3RvcFJlbmRlcmluZ0xpbmVBZnRlciIsZVtlLnN1Z2dlc3Q9MTE0XT0ic3VnZ2VzdCIsZVtlLnN1Z2dlc3RGb250U2l6ZT0xMTVdPSJzdWdnZXN0Rm9udFNpemUiLGVbZS5zdWdnZXN0TGluZUhlaWdodD0xMTZdPSJzdWdnZXN0TGluZUhlaWdodCIsZVtlLnN1Z2dlc3RPblRyaWdnZXJDaGFyYWN0ZXJzPTExN109InN1Z2dlc3RPblRyaWdnZXJDaGFyYWN0ZXJzIixlW2Uuc3VnZ2VzdFNlbGVjdGlvbj0xMThdPSJzdWdnZXN0U2VsZWN0aW9uIixlW2UudGFiQ29tcGxldGlvbj0xMTldPSJ0YWJDb21wbGV0aW9uIixlW2UudGFiSW5kZXg9MTIwXT0idGFiSW5kZXgiLGVbZS51bmljb2RlSGlnaGxpZ2h0aW5nPTEyMV09InVuaWNvZGVIaWdobGlnaHRpbmciLGVbZS51bnVzdWFsTGluZVRlcm1pbmF0b3JzPTEyMl09InVudXN1YWxMaW5lVGVybWluYXRvcnMiLGVbZS51c2VTaGFkb3dET009MTIzXT0idXNlU2hhZG93RE9NIixlW2UudXNlVGFiU3RvcHM9MTI0XT0idXNlVGFiU3RvcHMiLGVbZS53b3JkQnJlYWs9MTI1XT0id29yZEJyZWFrIixlW2Uud29yZFNlcGFyYXRvcnM9MTI2XT0id29yZFNlcGFyYXRvcnMiLGVbZS53b3JkV3JhcD0xMjddPSJ3b3JkV3JhcCIsZVtlLndvcmRXcmFwQnJlYWtBZnRlckNoYXJhY3RlcnM9MTI4XT0id29yZFdyYXBCcmVha0FmdGVyQ2hhcmFjdGVycyIsZVtlLndvcmRXcmFwQnJlYWtCZWZvcmVDaGFyYWN0ZXJzPTEyOV09IndvcmRXcmFwQnJlYWtCZWZvcmVDaGFyYWN0ZXJzIixlW2Uud29yZFdyYXBDb2x1bW49MTMwXT0id29yZFdyYXBDb2x1bW4iLGVbZS53b3JkV3JhcE92ZXJyaWRlMT0xMzFdPSJ3b3JkV3JhcE92ZXJyaWRlMSIsZVtlLndvcmRXcmFwT3ZlcnJpZGUyPTEzMl09IndvcmRXcmFwT3ZlcnJpZGUyIixlW2Uud3JhcHBpbmdJbmRlbnQ9MTMzXT0id3JhcHBpbmdJbmRlbnQiLGVbZS53cmFwcGluZ1N0cmF0ZWd5PTEzNF09IndyYXBwaW5nU3RyYXRlZ3kiLGVbZS5zaG93RGVwcmVjYXRlZD0xMzVdPSJzaG93RGVwcmVjYXRlZCIsZVtlLmlubGF5SGludHM9MTM2XT0iaW5sYXlIaW50cyIsZVtlLmVkaXRvckNsYXNzTmFtZT0xMzddPSJlZGl0b3JDbGFzc05hbWUiLGVbZS5waXhlbFJhdGlvPTEzOF09InBpeGVsUmF0aW8iLGVbZS50YWJGb2N1c01vZGU9MTM5XT0idGFiRm9jdXNNb2RlIixlW2UubGF5b3V0SW5mbz0xNDBdPSJsYXlvdXRJbmZvIixlW2Uud3JhcHBpbmdJbmZvPTE0MV09IndyYXBwaW5nSW5mbyIsZVtlLmRlZmF1bHRDb2xvckRlY29yYXRvcnM9MTQyXT0iZGVmYXVsdENvbG9yRGVjb3JhdG9ycyJ9KG5ufHwobm49e30pKSxmdW5jdGlvbihlKXtlW2UuVGV4dERlZmluZWQ9MF09IlRleHREZWZpbmVkIixlW2UuTEY9MV09IkxGIixlW2UuQ1JMRj0yXT0iQ1JMRiJ9KHJufHwocm49e30pKSxmdW5jdGlvbihlKXtlW2UuTEY9MF09IkxGIixlW2UuQ1JMRj0xXT0iQ1JMRiJ9KHNufHwoc249e30pKSxmdW5jdGlvbihlKXtlW2UuTGVmdD0xXT0iTGVmdCIsZVtlLlJpZ2h0PTJdPSJSaWdodCJ9KG9ufHwob249e30pKSxmdW5jdGlvbihlKXtlW2UuTm9uZT0wXT0iTm9uZSIsZVtlLkluZGVudD0xXT0iSW5kZW50IixlW2UuSW5kZW50T3V0ZGVudD0yXT0iSW5kZW50T3V0ZGVudCIsZVtlLk91dGRlbnQ9M109Ik91dGRlbnQifShhbnx8KGFuPXt9KSksZnVuY3Rpb24oZSl7ZVtlLkJvdGg9MF09IkJvdGgiLGVbZS5SaWdodD0xXT0iUmlnaHQiLGVbZS5MZWZ0PTJdPSJMZWZ0IixlW2UuTm9uZT0zXT0iTm9uZSJ9KGxufHwobG49e30pKSxmdW5jdGlvbihlKXtlW2UuVHlwZT0xXT0iVHlwZSIsZVtlLlBhcmFtZXRlcj0yXT0iUGFyYW1ldGVyIn0odW58fCh1bj17fSkpLGZ1bmN0aW9uKGUpe2VbZS5BdXRvbWF0aWM9MF09IkF1dG9tYXRpYyIsZVtlLkV4cGxpY2l0PTFdPSJFeHBsaWNpdCJ9KGhufHwoaG49e30pKSxmdW5jdGlvbihlKXtlW2UuRGVwZW5kc09uS2JMYXlvdXQ9LTFdPSJEZXBlbmRzT25LYkxheW91dCIsZVtlLlVua25vd249MF09IlVua25vd24iLGVbZS5CYWNrc3BhY2U9MV09IkJhY2tzcGFjZSIsZVtlLlRhYj0yXT0iVGFiIixlW2UuRW50ZXI9M109IkVudGVyIixlW2UuU2hpZnQ9NF09IlNoaWZ0IixlW2UuQ3RybD01XT0iQ3RybCIsZVtlLkFsdD02XT0iQWx0IixlW2UuUGF1c2VCcmVhaz03XT0iUGF1c2VCcmVhayIsZVtlLkNhcHNMb2NrPThdPSJDYXBzTG9jayIsZVtlLkVzY2FwZT05XT0iRXNjYXBlIixlW2UuU3BhY2U9MTBdPSJTcGFjZSIsZVtlLlBhZ2VVcD0xMV09IlBhZ2VVcCIsZVtlLlBhZ2VEb3duPTEyXT0iUGFnZURvd24iLGVbZS5FbmQ9MTNdPSJFbmQiLGVbZS5Ib21lPTE0XT0iSG9tZSIsZVtlLkxlZnRBcnJvdz0xNV09IkxlZnRBcnJvdyIsZVtlLlVwQXJyb3c9MTZdPSJVcEFycm93IixlW2UuUmlnaHRBcnJvdz0xN109IlJpZ2h0QXJyb3ciLGVbZS5Eb3duQXJyb3c9MThdPSJEb3duQXJyb3ciLGVbZS5JbnNlcnQ9MTldPSJJbnNlcnQiLGVbZS5EZWxldGU9MjBdPSJEZWxldGUiLGVbZS5EaWdpdDA9MjFdPSJEaWdpdDAiLGVbZS5EaWdpdDE9MjJdPSJEaWdpdDEiLGVbZS5EaWdpdDI9MjNdPSJEaWdpdDIiLGVbZS5EaWdpdDM9MjRdPSJEaWdpdDMiLGVbZS5EaWdpdDQ9MjVdPSJEaWdpdDQiLGVbZS5EaWdpdDU9MjZdPSJEaWdpdDUiLGVbZS5EaWdpdDY9MjddPSJEaWdpdDYiLGVbZS5EaWdpdDc9MjhdPSJEaWdpdDciLGVbZS5EaWdpdDg9MjldPSJEaWdpdDgiLGVbZS5EaWdpdDk9MzBdPSJEaWdpdDkiLGVbZS5LZXlBPTMxXT0iS2V5QSIsZVtlLktleUI9MzJdPSJLZXlCIixlW2UuS2V5Qz0zM109IktleUMiLGVbZS5LZXlEPTM0XT0iS2V5RCIsZVtlLktleUU9MzVdPSJLZXlFIixlW2UuS2V5Rj0zNl09IktleUYiLGVbZS5LZXlHPTM3XT0iS2V5RyIsZVtlLktleUg9MzhdPSJLZXlIIixlW2UuS2V5ST0zOV09IktleUkiLGVbZS5LZXlKPTQwXT0iS2V5SiIsZVtlLktleUs9NDFdPSJLZXlLIixlW2UuS2V5TD00Ml09IktleUwiLGVbZS5LZXlNPTQzXT0iS2V5TSIsZVtlLktleU49NDRdPSJLZXlOIixlW2UuS2V5Tz00NV09IktleU8iLGVbZS5LZXlQPTQ2XT0iS2V5UCIsZVtlLktleVE9NDddPSJLZXlRIixlW2UuS2V5Uj00OF09IktleVIiLGVbZS5LZXlTPTQ5XT0iS2V5UyIsZVtlLktleVQ9NTBdPSJLZXlUIixlW2UuS2V5VT01MV09IktleVUiLGVbZS5LZXlWPTUyXT0iS2V5ViIsZVtlLktleVc9NTNdPSJLZXlXIixlW2UuS2V5WD01NF09IktleVgiLGVbZS5LZXlZPTU1XT0iS2V5WSIsZVtlLktleVo9NTZdPSJLZXlaIixlW2UuTWV0YT01N109Ik1ldGEiLGVbZS5Db250ZXh0TWVudT01OF09IkNvbnRleHRNZW51IixlW2UuRjE9NTldPSJGMSIsZVtlLkYyPTYwXT0iRjIiLGVbZS5GMz02MV09IkYzIixlW2UuRjQ9NjJdPSJGNCIsZVtlLkY1PTYzXT0iRjUiLGVbZS5GNj02NF09IkY2IixlW2UuRjc9NjVdPSJGNyIsZVtlLkY4PTY2XT0iRjgiLGVbZS5GOT02N109IkY5IixlW2UuRjEwPTY4XT0iRjEwIixlW2UuRjExPTY5XT0iRjExIixlW2UuRjEyPTcwXT0iRjEyIixlW2UuRjEzPTcxXT0iRjEzIixlW2UuRjE0PTcyXT0iRjE0IixlW2UuRjE1PTczXT0iRjE1IixlW2UuRjE2PTc0XT0iRjE2IixlW2UuRjE3PTc1XT0iRjE3IixlW2UuRjE4PTc2XT0iRjE4IixlW2UuRjE5PTc3XT0iRjE5IixlW2UuRjIwPTc4XT0iRjIwIixlW2UuRjIxPTc5XT0iRjIxIixlW2UuRjIyPTgwXT0iRjIyIixlW2UuRjIzPTgxXT0iRjIzIixlW2UuRjI0PTgyXT0iRjI0IixlW2UuTnVtTG9jaz04M109Ik51bUxvY2siLGVbZS5TY3JvbGxMb2NrPTg0XT0iU2Nyb2xsTG9jayIsZVtlLlNlbWljb2xvbj04NV09IlNlbWljb2xvbiIsZVtlLkVxdWFsPTg2XT0iRXF1YWwiLGVbZS5Db21tYT04N109IkNvbW1hIixlW2UuTWludXM9ODhdPSJNaW51cyIsZVtlLlBlcmlvZD04OV09IlBlcmlvZCIsZVtlLlNsYXNoPTkwXT0iU2xhc2giLGVbZS5CYWNrcXVvdGU9OTFdPSJCYWNrcXVvdGUiLGVbZS5CcmFja2V0TGVmdD05Ml09IkJyYWNrZXRMZWZ0IixlW2UuQmFja3NsYXNoPTkzXT0iQmFja3NsYXNoIixlW2UuQnJhY2tldFJpZ2h0PTk0XT0iQnJhY2tldFJpZ2h0IixlW2UuUXVvdGU9OTVdPSJRdW90ZSIsZVtlLk9FTV84PTk2XT0iT0VNXzgiLGVbZS5JbnRsQmFja3NsYXNoPTk3XT0iSW50bEJhY2tzbGFzaCIsZVtlLk51bXBhZDA9OThdPSJOdW1wYWQwIixlW2UuTnVtcGFkMT05OV09Ik51bXBhZDEiLGVbZS5OdW1wYWQyPTEwMF09Ik51bXBhZDIiLGVbZS5OdW1wYWQzPTEwMV09Ik51bXBhZDMiLGVbZS5OdW1wYWQ0PTEwMl09Ik51bXBhZDQiLGVbZS5OdW1wYWQ1PTEwM109Ik51bXBhZDUiLGVbZS5OdW1wYWQ2PTEwNF09Ik51bXBhZDYiLGVbZS5OdW1wYWQ3PTEwNV09Ik51bXBhZDciLGVbZS5OdW1wYWQ4PTEwNl09Ik51bXBhZDgiLGVbZS5OdW1wYWQ5PTEwN109Ik51bXBhZDkiLGVbZS5OdW1wYWRNdWx0aXBseT0xMDhdPSJOdW1wYWRNdWx0aXBseSIsZVtlLk51bXBhZEFkZD0xMDldPSJOdW1wYWRBZGQiLGVbZS5OVU1QQURfU0VQQVJBVE9SPTExMF09Ik5VTVBBRF9TRVBBUkFUT1IiLGVbZS5OdW1wYWRTdWJ0cmFjdD0xMTFdPSJOdW1wYWRTdWJ0cmFjdCIsZVtlLk51bXBhZERlY2ltYWw9MTEyXT0iTnVtcGFkRGVjaW1hbCIsZVtlLk51bXBhZERpdmlkZT0xMTNdPSJOdW1wYWREaXZpZGUiLGVbZS5LRVlfSU5fQ09NUE9TSVRJT049MTE0XT0iS0VZX0lOX0NPTVBPU0lUSU9OIixlW2UuQUJOVF9DMT0xMTVdPSJBQk5UX0MxIixlW2UuQUJOVF9DMj0xMTZdPSJBQk5UX0MyIixlW2UuQXVkaW9Wb2x1bWVNdXRlPTExN109IkF1ZGlvVm9sdW1lTXV0ZSIsZVtlLkF1ZGlvVm9sdW1lVXA9MTE4XT0iQXVkaW9Wb2x1bWVVcCIsZVtlLkF1ZGlvVm9sdW1lRG93bj0xMTldPSJBdWRpb1ZvbHVtZURvd24iLGVbZS5Ccm93c2VyU2VhcmNoPTEyMF09IkJyb3dzZXJTZWFyY2giLGVbZS5Ccm93c2VySG9tZT0xMjFdPSJCcm93c2VySG9tZSIsZVtlLkJyb3dzZXJCYWNrPTEyMl09IkJyb3dzZXJCYWNrIixlW2UuQnJvd3NlckZvcndhcmQ9MTIzXT0iQnJvd3NlckZvcndhcmQiLGVbZS5NZWRpYVRyYWNrTmV4dD0xMjRdPSJNZWRpYVRyYWNrTmV4dCIsZVtlLk1lZGlhVHJhY2tQcmV2aW91cz0xMjVdPSJNZWRpYVRyYWNrUHJldmlvdXMiLGVbZS5NZWRpYVN0b3A9MTI2XT0iTWVkaWFTdG9wIixlW2UuTWVkaWFQbGF5UGF1c2U9MTI3XT0iTWVkaWFQbGF5UGF1c2UiLGVbZS5MYXVuY2hNZWRpYVBsYXllcj0xMjhdPSJMYXVuY2hNZWRpYVBsYXllciIsZVtlLkxhdW5jaE1haWw9MTI5XT0iTGF1bmNoTWFpbCIsZVtlLkxhdW5jaEFwcDI9MTMwXT0iTGF1bmNoQXBwMiIsZVtlLkNsZWFyPTEzMV09IkNsZWFyIixlW2UuTUFYX1ZBTFVFPTEzMl09Ik1BWF9WQUxVRSJ9KGNufHwoY249e30pKSxmdW5jdGlvbihlKXtlW2UuSGludD0xXT0iSGludCIsZVtlLkluZm89Ml09IkluZm8iLGVbZS5XYXJuaW5nPTRdPSJXYXJuaW5nIixlW2UuRXJyb3I9OF09IkVycm9yIn0oZG58fChkbj17fSkpLGZ1bmN0aW9uKGUpe2VbZS5Vbm5lY2Vzc2FyeT0xXT0iVW5uZWNlc3NhcnkiLGVbZS5EZXByZWNhdGVkPTJdPSJEZXByZWNhdGVkIn0obW58fChtbj17fSkpLGZ1bmN0aW9uKGUpe2VbZS5JbmxpbmU9MV09IklubGluZSIsZVtlLkd1dHRlcj0yXT0iR3V0dGVyIn0oZ258fChnbj17fSkpLGZ1bmN0aW9uKGUpe2VbZS5VTktOT1dOPTBdPSJVTktOT1dOIixlW2UuVEVYVEFSRUE9MV09IlRFWFRBUkVBIixlW2UuR1VUVEVSX0dMWVBIX01BUkdJTj0yXT0iR1VUVEVSX0dMWVBIX01BUkdJTiIsZVtlLkdVVFRFUl9MSU5FX05VTUJFUlM9M109IkdVVFRFUl9MSU5FX05VTUJFUlMiLGVbZS5HVVRURVJfTElORV9ERUNPUkFUSU9OUz00XT0iR1VUVEVSX0xJTkVfREVDT1JBVElPTlMiLGVbZS5HVVRURVJfVklFV19aT05FPTVdPSJHVVRURVJfVklFV19aT05FIixlW2UuQ09OVEVOVF9URVhUPTZdPSJDT05URU5UX1RFWFQiLGVbZS5DT05URU5UX0VNUFRZPTddPSJDT05URU5UX0VNUFRZIixlW2UuQ09OVEVOVF9WSUVXX1pPTkU9OF09IkNPTlRFTlRfVklFV19aT05FIixlW2UuQ09OVEVOVF9XSURHRVQ9OV09IkNPTlRFTlRfV0lER0VUIixlW2UuT1ZFUlZJRVdfUlVMRVI9MTBdPSJPVkVSVklFV19SVUxFUiIsZVtlLlNDUk9MTEJBUj0xMV09IlNDUk9MTEJBUiIsZVtlLk9WRVJMQVlfV0lER0VUPTEyXT0iT1ZFUkxBWV9XSURHRVQiLGVbZS5PVVRTSURFX0VESVRPUj0xM109Ik9VVFNJREVfRURJVE9SIn0oZm58fChmbj17fSkpLGZ1bmN0aW9uKGUpe2VbZS5UT1BfUklHSFRfQ09STkVSPTBdPSJUT1BfUklHSFRfQ09STkVSIixlW2UuQk9UVE9NX1JJR0hUX0NPUk5FUj0xXT0iQk9UVE9NX1JJR0hUX0NPUk5FUiIsZVtlLlRPUF9DRU5URVI9Ml09IlRPUF9DRU5URVIifShwbnx8KHBuPXt9KSksZnVuY3Rpb24oZSl7ZVtlLkxlZnQ9MV09IkxlZnQiLGVbZS5DZW50ZXI9Ml09IkNlbnRlciIsZVtlLlJpZ2h0PTRdPSJSaWdodCIsZVtlLkZ1bGw9N109IkZ1bGwifShibnx8KGJuPXt9KSksZnVuY3Rpb24oZSl7ZVtlLkxlZnQ9MF09IkxlZnQiLGVbZS5SaWdodD0xXT0iUmlnaHQiLGVbZS5Ob25lPTJdPSJOb25lIixlW2UuTGVmdE9mSW5qZWN0ZWRUZXh0PTNdPSJMZWZ0T2ZJbmplY3RlZFRleHQiLGVbZS5SaWdodE9mSW5qZWN0ZWRUZXh0PTRdPSJSaWdodE9mSW5qZWN0ZWRUZXh0In0oX258fChfbj17fSkpLGZ1bmN0aW9uKGUpe2VbZS5PZmY9MF09Ik9mZiIsZVtlLk9uPTFdPSJPbiIsZVtlLlJlbGF0aXZlPTJdPSJSZWxhdGl2ZSIsZVtlLkludGVydmFsPTNdPSJJbnRlcnZhbCIsZVtlLkN1c3RvbT00XT0iQ3VzdG9tIn0oQ258fChDbj17fSkpLGZ1bmN0aW9uKGUpe2VbZS5Ob25lPTBdPSJOb25lIixlW2UuVGV4dD0xXT0iVGV4dCIsZVtlLkJsb2Nrcz0yXT0iQmxvY2tzIn0oeW58fCh5bj17fSkpLGZ1bmN0aW9uKGUpe2VbZS5TbW9vdGg9MF09IlNtb290aCIsZVtlLkltbWVkaWF0ZT0xXT0iSW1tZWRpYXRlIn0odm58fCh2bj17fSkpLGZ1bmN0aW9uKGUpe2VbZS5BdXRvPTFdPSJBdXRvIixlW2UuSGlkZGVuPTJdPSJIaWRkZW4iLGVbZS5WaXNpYmxlPTNdPSJWaXNpYmxlIn0oTG58fChMbj17fSkpLGZ1bmN0aW9uKGUpe2VbZS5MVFI9MF09IkxUUiIsZVtlLlJUTD0xXT0iUlRMIn0od258fCh3bj17fSkpLGZ1bmN0aW9uKGUpe2VbZS5JbnZva2U9MV09Ikludm9rZSIsZVtlLlRyaWdnZXJDaGFyYWN0ZXI9Ml09IlRyaWdnZXJDaGFyYWN0ZXIiLGVbZS5Db250ZW50Q2hhbmdlPTNdPSJDb250ZW50Q2hhbmdlIn0oU258fChTbj17fSkpLGZ1bmN0aW9uKGUpe2VbZS5GaWxlPTBdPSJGaWxlIixlW2UuTW9kdWxlPTFdPSJNb2R1bGUiLGVbZS5OYW1lc3BhY2U9Ml09Ik5hbWVzcGFjZSIsZVtlLlBhY2thZ2U9M109IlBhY2thZ2UiLGVbZS5DbGFzcz00XT0iQ2xhc3MiLGVbZS5NZXRob2Q9NV09Ik1ldGhvZCIsZVtlLlByb3BlcnR5PTZdPSJQcm9wZXJ0eSIsZVtlLkZpZWxkPTddPSJGaWVsZCIsZVtlLkNvbnN0cnVjdG9yPThdPSJDb25zdHJ1Y3RvciIsZVtlLkVudW09OV09IkVudW0iLGVbZS5JbnRlcmZhY2U9MTBdPSJJbnRlcmZhY2UiLGVbZS5GdW5jdGlvbj0xMV09IkZ1bmN0aW9uIixlW2UuVmFyaWFibGU9MTJdPSJWYXJpYWJsZSIsZVtlLkNvbnN0YW50PTEzXT0iQ29uc3RhbnQiLGVbZS5TdHJpbmc9MTRdPSJTdHJpbmciLGVbZS5OdW1iZXI9MTVdPSJOdW1iZXIiLGVbZS5Cb29sZWFuPTE2XT0iQm9vbGVhbiIsZVtlLkFycmF5PTE3XT0iQXJyYXkiLGVbZS5PYmplY3Q9MThdPSJPYmplY3QiLGVbZS5LZXk9MTldPSJLZXkiLGVbZS5OdWxsPTIwXT0iTnVsbCIsZVtlLkVudW1NZW1iZXI9MjFdPSJFbnVtTWVtYmVyIixlW2UuU3RydWN0PTIyXT0iU3RydWN0IixlW2UuRXZlbnQ9MjNdPSJFdmVudCIsZVtlLk9wZXJhdG9yPTI0XT0iT3BlcmF0b3IiLGVbZS5UeXBlUGFyYW1ldGVyPTI1XT0iVHlwZVBhcmFtZXRlciJ9KE5ufHwoTm49e30pKSxmdW5jdGlvbihlKXtlW2UuRGVwcmVjYXRlZD0xXT0iRGVwcmVjYXRlZCJ9KEVufHwoRW49e30pKSxmdW5jdGlvbihlKXtlW2UuSGlkZGVuPTBdPSJIaWRkZW4iLGVbZS5CbGluaz0xXT0iQmxpbmsiLGVbZS5TbW9vdGg9Ml09IlNtb290aCIsZVtlLlBoYXNlPTNdPSJQaGFzZSIsZVtlLkV4cGFuZD00XT0iRXhwYW5kIixlW2UuU29saWQ9NV09IlNvbGlkIn0oQW58fChBbj17fSkpLGZ1bmN0aW9uKGUpe2VbZS5MaW5lPTFdPSJMaW5lIixlW2UuQmxvY2s9Ml09IkJsb2NrIixlW2UuVW5kZXJsaW5lPTNdPSJVbmRlcmxpbmUiLGVbZS5MaW5lVGhpbj00XT0iTGluZVRoaW4iLGVbZS5CbG9ja091dGxpbmU9NV09IkJsb2NrT3V0bGluZSIsZVtlLlVuZGVybGluZVRoaW49Nl09IlVuZGVybGluZVRoaW4ifShSbnx8KFJuPXt9KSksZnVuY3Rpb24oZSl7ZVtlLkFsd2F5c0dyb3dzV2hlblR5cGluZ0F0RWRnZXM9MF09IkFsd2F5c0dyb3dzV2hlblR5cGluZ0F0RWRnZXMiLGVbZS5OZXZlckdyb3dzV2hlblR5cGluZ0F0RWRnZXM9MV09Ik5ldmVyR3Jvd3NXaGVuVHlwaW5nQXRFZGdlcyIsZVtlLkdyb3dzT25seVdoZW5UeXBpbmdCZWZvcmU9Ml09Ikdyb3dzT25seVdoZW5UeXBpbmdCZWZvcmUiLGVbZS5Hcm93c09ubHlXaGVuVHlwaW5nQWZ0ZXI9M109Ikdyb3dzT25seVdoZW5UeXBpbmdBZnRlciJ9KHhufHwoeG49e30pKSxmdW5jdGlvbihlKXtlW2UuTm9uZT0wXT0iTm9uZSIsZVtlLlNhbWU9MV09IlNhbWUiLGVbZS5JbmRlbnQ9Ml09IkluZGVudCIsZVtlLkRlZXBJbmRlbnQ9M109IkRlZXBJbmRlbnQifShNbnx8KE1uPXt9KSk7Y2xhc3MgS257c3RhdGljIGNob3JkKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKGUsdCl7cmV0dXJuKGV8KDY1NTM1JnQpPDwxNj4+PjApPj4+MH0oZSx0KX19ZnVuY3Rpb24gVm4oZSx0LG4scixpKXtyZXR1cm4gZnVuY3Rpb24oZSx0LG4scixpKXtpZigwPT09cilyZXR1cm4hMDtjb25zdCBzPXQuY2hhckNvZGVBdChyLTEpO2lmKDAhPT1lLmdldChzKSlyZXR1cm4hMDtpZigxMz09PXN8fDEwPT09cylyZXR1cm4hMDtpZihpPjApe2NvbnN0IG49dC5jaGFyQ29kZUF0KHIpO2lmKDAhPT1lLmdldChuKSlyZXR1cm4hMH1yZXR1cm4hMX0oZSx0LDAscixpKSYmZnVuY3Rpb24oZSx0LG4scixpKXtpZihyK2k9PT1uKXJldHVybiEwO2NvbnN0IHM9dC5jaGFyQ29kZUF0KHIraSk7aWYoMCE9PWUuZ2V0KHMpKXJldHVybiEwO2lmKDEzPT09c3x8MTA9PT1zKXJldHVybiEwO2lmKGk+MCl7Y29uc3Qgbj10LmNoYXJDb2RlQXQocitpLTEpO2lmKDAhPT1lLmdldChuKSlyZXR1cm4hMH1yZXR1cm4hMX0oZSx0LG4scixpKX1Lbi5DdHJsQ21kPTIwNDgsS24uU2hpZnQ9MTAyNCxLbi5BbHQ9NTEyLEtuLldpbkN0cmw9MjU2LGZ1bmN0aW9uKGUpe2VbZS5MZWZ0PTFdPSJMZWZ0IixlW2UuQ2VudGVyPTJdPSJDZW50ZXIiLGVbZS5SaWdodD00XT0iUmlnaHQiLGVbZS5GdWxsPTddPSJGdWxsIn0oa258fChrbj17fSkpLGZ1bmN0aW9uKGUpe2VbZS5MZWZ0PTFdPSJMZWZ0IixlW2UuUmlnaHQ9Ml09IlJpZ2h0In0oT258fChPbj17fSkpLGZ1bmN0aW9uKGUpe2VbZS5JbmxpbmU9MV09IklubGluZSIsZVtlLkd1dHRlcj0yXT0iR3V0dGVyIn0oVG58fChUbj17fSkpLGZ1bmN0aW9uKGUpe2VbZS5Cb3RoPTBdPSJCb3RoIixlW2UuUmlnaHQ9MV09IlJpZ2h0IixlW2UuTGVmdD0yXT0iTGVmdCIsZVtlLk5vbmU9M109Ik5vbmUifShJbnx8KEluPXt9KSk7Y2xhc3MgcW57Y29uc3RydWN0b3IoZSx0KXt0aGlzLl93b3JkU2VwYXJhdG9ycz1lLHRoaXMuX3NlYXJjaFJlZ2V4PXQsdGhpcy5fcHJldk1hdGNoU3RhcnRJbmRleD0tMSx0aGlzLl9wcmV2TWF0Y2hMZW5ndGg9MH1yZXNldChlKXt0aGlzLl9zZWFyY2hSZWdleC5sYXN0SW5kZXg9ZSx0aGlzLl9wcmV2TWF0Y2hTdGFydEluZGV4PS0xLHRoaXMuX3ByZXZNYXRjaExlbmd0aD0wfW5leHQoZSl7Y29uc3QgdD1lLmxlbmd0aDtsZXQgbjtkb3tpZih0aGlzLl9wcmV2TWF0Y2hTdGFydEluZGV4K3RoaXMuX3ByZXZNYXRjaExlbmd0aD09PXQpcmV0dXJuIG51bGw7aWYobj10aGlzLl9zZWFyY2hSZWdleC5leGVjKGUpLCFuKXJldHVybiBudWxsO2NvbnN0IHI9bi5pbmRleCxpPW5bMF0ubGVuZ3RoO2lmKHI9PT10aGlzLl9wcmV2TWF0Y2hTdGFydEluZGV4JiZpPT09dGhpcy5fcHJldk1hdGNoTGVuZ3RoKXtpZigwPT09aSl7WihlLHQsdGhpcy5fc2VhcmNoUmVnZXgubGFzdEluZGV4KT42NTUzNT90aGlzLl9zZWFyY2hSZWdleC5sYXN0SW5kZXgrPTI6dGhpcy5fc2VhcmNoUmVnZXgubGFzdEluZGV4Kz0xO2NvbnRpbnVlfXJldHVybiBudWxsfWlmKHRoaXMuX3ByZXZNYXRjaFN0YXJ0SW5kZXg9cix0aGlzLl9wcmV2TWF0Y2hMZW5ndGg9aSwhdGhpcy5fd29yZFNlcGFyYXRvcnN8fFZuKHRoaXMuX3dvcmRTZXBhcmF0b3JzLGUsdCxyLGkpKXJldHVybiBufXdoaWxlKG4pO3JldHVybiBudWxsfX1mdW5jdGlvbiBCbihlLHQ9IlVucmVhY2hhYmxlIil7dGhyb3cgbmV3IEVycm9yKHQpfWZ1bmN0aW9uIFVuKGUpe2UoKXx8KGUoKSxuKG5ldyBhKCJBc3NlcnRpb24gRmFpbGVkIikpKX1mdW5jdGlvbiBXbihlLHQpe2xldCBuPTA7Zm9yKDtuPGUubGVuZ3RoLTE7KXtpZighdChlW25dLGVbbisxXSkpcmV0dXJuITE7bisrfXJldHVybiEwfWNsYXNzIEhue3N0YXRpYyBjb21wdXRlVW5pY29kZUhpZ2hsaWdodHMoZSx0LG4pe2NvbnN0IHI9bj9uLnN0YXJ0TGluZU51bWJlcjoxLGk9bj9uLmVuZExpbmVOdW1iZXI6ZS5nZXRMaW5lQ291bnQoKSxzPW5ldyAkbih0KSxvPXMuZ2V0Q2FuZGlkYXRlQ29kZVBvaW50cygpO2xldCBhO3ZhciBsLHU7YT0iYWxsTm9uQmFzaWNBc2NpaSI9PT1vP25ldyBSZWdFeHAoIlteXFx0XFxuXFxyXFx4MjAtXFx4N0VdIiwiZyIpOm5ldyBSZWdFeHAoIiIrKGw9QXJyYXkuZnJvbShvKSxgWyR7dT1sLm1hcCgoZT0+U3RyaW5nLmZyb21Db2RlUG9pbnQoZSkpKS5qb2luKCIiKSx1LnJlcGxhY2UoL1tcXFx7XH1cKlwrXD9cfFxeXCRcLlxbXF1cKFwpXS9nLCJcXCQmIil9XWApLCJnIik7Y29uc3QgaD1uZXcgcW4obnVsbCxhKSxjPVtdO2xldCBkLG09ITEsZz0wLGY9MCxwPTA7ZTpmb3IobGV0IHQ9cixuPWk7dDw9bjt0Kyspe2NvbnN0IG49ZS5nZXRMaW5lQ29udGVudCh0KSxyPW4ubGVuZ3RoO2gucmVzZXQoMCk7ZG97aWYoZD1oLm5leHQobiksZCl7bGV0IGU9ZC5pbmRleCxpPWQuaW5kZXgrZFswXS5sZW5ndGg7aWYoZT4wKXtKKG4uY2hhckNvZGVBdChlLTEpKSYmZS0tfWlmKGkrMTxyKXtKKG4uY2hhckNvZGVBdChpLTEpKSYmaSsrfWNvbnN0IG89bi5zdWJzdHJpbmcoZSxpKTtsZXQgYT1tdChlKzEsY3QsbiwwKTthJiZhLmVuZENvbHVtbjw9ZSsxJiYoYT1udWxsKTtjb25zdCBsPXMuc2hvdWxkSGlnaGxpZ2h0Tm9uQmFzaWNBU0NJSShvLGE/YS53b3JkOm51bGwpO2lmKDAhPT1sKXszPT09bD9nKys6Mj09PWw/ZisrOjE9PT1sP3ArKzpCbigpO2NvbnN0IG49MWUzO2lmKGMubGVuZ3RoPj1uKXttPSEwO2JyZWFrIGV9Yy5wdXNoKG5ldyBpdCh0LGUrMSx0LGkrMSkpfX19d2hpbGUoZCl9cmV0dXJue3JhbmdlczpjLGhhc01vcmU6bSxhbWJpZ3VvdXNDaGFyYWN0ZXJDb3VudDpnLGludmlzaWJsZUNoYXJhY3RlckNvdW50OmYsbm9uQmFzaWNBc2NpaUNoYXJhY3RlckNvdW50OnB9fXN0YXRpYyBjb21wdXRlVW5pY29kZUhpZ2hsaWdodFJlYXNvbihlLHQpe2NvbnN0IG49bmV3ICRuKHQpO3N3aXRjaChuLnNob3VsZEhpZ2hsaWdodE5vbkJhc2ljQVNDSUkoZSxudWxsKSl7Y2FzZSAwOnJldHVybiBudWxsO2Nhc2UgMjpyZXR1cm57a2luZDoxfTtjYXNlIDM6e2NvbnN0IHI9ZS5jb2RlUG9pbnRBdCgwKSxpPW4uYW1iaWd1b3VzQ2hhcmFjdGVycy5nZXRQcmltYXJ5Q29uZnVzYWJsZShyKSxzPXRlLmdldExvY2FsZXMoKS5maWx0ZXIoKGU9PiF0ZS5nZXRJbnN0YW5jZShuZXcgU2V0KFsuLi50LmFsbG93ZWRMb2NhbGVzLGVdKSkuaXNBbWJpZ3VvdXMocikpKTtyZXR1cm57a2luZDowLGNvbmZ1c2FibGVXaXRoOlN0cmluZy5mcm9tQ29kZVBvaW50KGkpLG5vdEFtYmlndW91c0luTG9jYWxlczpzfX1jYXNlIDE6cmV0dXJue2tpbmQ6Mn19fX1jbGFzcyAkbntjb25zdHJ1Y3RvcihlKXt0aGlzLm9wdGlvbnM9ZSx0aGlzLmFsbG93ZWRDb2RlUG9pbnRzPW5ldyBTZXQoZS5hbGxvd2VkQ29kZVBvaW50cyksdGhpcy5hbWJpZ3VvdXNDaGFyYWN0ZXJzPXRlLmdldEluc3RhbmNlKG5ldyBTZXQoZS5hbGxvd2VkTG9jYWxlcykpfWdldENhbmRpZGF0ZUNvZGVQb2ludHMoKXtpZih0aGlzLm9wdGlvbnMubm9uQmFzaWNBU0NJSSlyZXR1cm4iYWxsTm9uQmFzaWNBc2NpaSI7Y29uc3QgZT1uZXcgU2V0O2lmKHRoaXMub3B0aW9ucy5pbnZpc2libGVDaGFyYWN0ZXJzKWZvcihjb25zdCB0IG9mIG5lLmNvZGVQb2ludHMpem4oU3RyaW5nLmZyb21Db2RlUG9pbnQodCkpfHxlLmFkZCh0KTtpZih0aGlzLm9wdGlvbnMuYW1iaWd1b3VzQ2hhcmFjdGVycylmb3IoY29uc3QgdCBvZiB0aGlzLmFtYmlndW91c0NoYXJhY3RlcnMuZ2V0Q29uZnVzYWJsZUNvZGVQb2ludHMoKSllLmFkZCh0KTtmb3IoY29uc3QgdCBvZiB0aGlzLmFsbG93ZWRDb2RlUG9pbnRzKWUuZGVsZXRlKHQpO3JldHVybiBlfXNob3VsZEhpZ2hsaWdodE5vbkJhc2ljQVNDSUkoZSx0KXtjb25zdCBuPWUuY29kZVBvaW50QXQoMCk7aWYodGhpcy5hbGxvd2VkQ29kZVBvaW50cy5oYXMobikpcmV0dXJuIDA7aWYodGhpcy5vcHRpb25zLm5vbkJhc2ljQVNDSUkpcmV0dXJuIDE7bGV0IHI9ITEsaT0hMTtpZih0KWZvcihjb25zdCBlIG9mIHQpe2NvbnN0IHQ9ZS5jb2RlUG9pbnRBdCgwKSxuPShzPWUsZWUudGVzdChzKSk7cj1yfHxuLG58fHRoaXMuYW1iaWd1b3VzQ2hhcmFjdGVycy5pc0FtYmlndW91cyh0KXx8bmUuaXNJbnZpc2libGVDaGFyYWN0ZXIodCl8fChpPSEwKX12YXIgcztyZXR1cm4hciYmaT8wOnRoaXMub3B0aW9ucy5pbnZpc2libGVDaGFyYWN0ZXJzJiYhem4oZSkmJm5lLmlzSW52aXNpYmxlQ2hhcmFjdGVyKG4pPzI6dGhpcy5vcHRpb25zLmFtYmlndW91c0NoYXJhY3RlcnMmJnRoaXMuYW1iaWd1b3VzQ2hhcmFjdGVycy5pc0FtYmlndW91cyhuKT8zOjB9fWZ1bmN0aW9uIHpuKGUpe3JldHVybiIgIj09PWV8fCJcbiI9PT1lfHwiXHQiPT09ZX1jbGFzcyBqbntzdGF0aWMgZnJvbVJhbmdlKGUpe3JldHVybiBuZXcgam4oZS5zdGFydExpbmVOdW1iZXIsZS5lbmRMaW5lTnVtYmVyKX1zdGF0aWMgam9pbk1hbnkoZSl7aWYoMD09PWUubGVuZ3RoKXJldHVybltdO2xldCB0PWVbMF07Zm9yKGxldCBuPTE7bjxlLmxlbmd0aDtuKyspdD10aGlzLmpvaW4odCxlW25dKTtyZXR1cm4gdH1zdGF0aWMgam9pbihlLHQpe2lmKDA9PT1lLmxlbmd0aClyZXR1cm4gdDtpZigwPT09dC5sZW5ndGgpcmV0dXJuIGU7Y29uc3Qgbj1bXTtsZXQgcj0wLGk9MCxzPW51bGw7Zm9yKDtyPGUubGVuZ3RofHxpPHQubGVuZ3RoOyl7bGV0IG89bnVsbDtpZihyPGUubGVuZ3RoJiZpPHQubGVuZ3RoKXtjb25zdCBuPWVbcl0scz10W2ldO24uc3RhcnRMaW5lTnVtYmVyPHMuc3RhcnRMaW5lTnVtYmVyPyhvPW4scisrKToobz1zLGkrKyl9ZWxzZSByPGUubGVuZ3RoPyhvPWVbcl0scisrKToobz10W2ldLGkrKyk7bnVsbD09PXM/cz1vOnMuZW5kTGluZU51bWJlckV4Y2x1c2l2ZT49by5zdGFydExpbmVOdW1iZXI/cz1uZXcgam4ocy5zdGFydExpbmVOdW1iZXIsTWF0aC5tYXgocy5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlLG8uZW5kTGluZU51bWJlckV4Y2x1c2l2ZSkpOihuLnB1c2gocykscz1vKX1yZXR1cm4gbnVsbCE9PXMmJm4ucHVzaChzKSxufXN0YXRpYyBvZkxlbmd0aChlLHQpe3JldHVybiBuZXcgam4oZSxlK3QpfWNvbnN0cnVjdG9yKGUsdCl7aWYoZT50KXRocm93IG5ldyBhKGBzdGFydExpbmVOdW1iZXIgJHtlfSBjYW5ub3QgYmUgYWZ0ZXIgZW5kTGluZU51bWJlckV4Y2x1c2l2ZSAke3R9YCk7dGhpcy5zdGFydExpbmVOdW1iZXI9ZSx0aGlzLmVuZExpbmVOdW1iZXJFeGNsdXNpdmU9dH1jb250YWlucyhlKXtyZXR1cm4gdGhpcy5zdGFydExpbmVOdW1iZXI8PWUmJmU8dGhpcy5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlfWdldCBpc0VtcHR5KCl7cmV0dXJuIHRoaXMuc3RhcnRMaW5lTnVtYmVyPT09dGhpcy5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlfWRlbHRhKGUpe3JldHVybiBuZXcgam4odGhpcy5zdGFydExpbmVOdW1iZXIrZSx0aGlzLmVuZExpbmVOdW1iZXJFeGNsdXNpdmUrZSl9Z2V0IGxlbmd0aCgpe3JldHVybiB0aGlzLmVuZExpbmVOdW1iZXJFeGNsdXNpdmUtdGhpcy5zdGFydExpbmVOdW1iZXJ9am9pbihlKXtyZXR1cm4gbmV3IGpuKE1hdGgubWluKHRoaXMuc3RhcnRMaW5lTnVtYmVyLGUuc3RhcnRMaW5lTnVtYmVyKSxNYXRoLm1heCh0aGlzLmVuZExpbmVOdW1iZXJFeGNsdXNpdmUsZS5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlKSl9dG9TdHJpbmcoKXtyZXR1cm5gWyR7dGhpcy5zdGFydExpbmVOdW1iZXJ9LCR7dGhpcy5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlfSlgfWludGVyc2VjdChlKXtjb25zdCB0PU1hdGgubWF4KHRoaXMuc3RhcnRMaW5lTnVtYmVyLGUuc3RhcnRMaW5lTnVtYmVyKSxuPU1hdGgubWluKHRoaXMuZW5kTGluZU51bWJlckV4Y2x1c2l2ZSxlLmVuZExpbmVOdW1iZXJFeGNsdXNpdmUpO2lmKHQ8PW4pcmV0dXJuIG5ldyBqbih0LG4pfWludGVyc2VjdHNTdHJpY3QoZSl7cmV0dXJuIHRoaXMuc3RhcnRMaW5lTnVtYmVyPGUuZW5kTGluZU51bWJlckV4Y2x1c2l2ZSYmZS5zdGFydExpbmVOdW1iZXI8dGhpcy5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlfW92ZXJsYXBPclRvdWNoKGUpe3JldHVybiB0aGlzLnN0YXJ0TGluZU51bWJlcjw9ZS5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlJiZlLnN0YXJ0TGluZU51bWJlcjw9dGhpcy5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlfWVxdWFscyhlKXtyZXR1cm4gdGhpcy5zdGFydExpbmVOdW1iZXI9PT1lLnN0YXJ0TGluZU51bWJlciYmdGhpcy5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlPT09ZS5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlfXRvSW5jbHVzaXZlUmFuZ2UoKXtyZXR1cm4gdGhpcy5pc0VtcHR5P251bGw6bmV3IGl0KHRoaXMuc3RhcnRMaW5lTnVtYmVyLDEsdGhpcy5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlLTEsTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVIpfXRvRXhjbHVzaXZlUmFuZ2UoKXtyZXR1cm4gbmV3IGl0KHRoaXMuc3RhcnRMaW5lTnVtYmVyLDEsdGhpcy5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlLDEpfX1jbGFzcyBHbntjb25zdHJ1Y3RvcihlLHQpe3RoaXMuY2hhbmdlcz1lLHRoaXMuaGl0VGltZW91dD10fX1jbGFzcyBZbntzdGF0aWMgaW52ZXJzZShlLHQsbil7Y29uc3Qgcj1bXTtsZXQgaT0xLHM9MTtmb3IoY29uc3QgdCBvZiBlKXtjb25zdCBlPW5ldyBZbihuZXcgam4oaSx0Lm9yaWdpbmFsUmFuZ2Uuc3RhcnRMaW5lTnVtYmVyKSxuZXcgam4ocyx0Lm1vZGlmaWVkUmFuZ2Uuc3RhcnRMaW5lTnVtYmVyKSx2b2lkIDApO2UubW9kaWZpZWRSYW5nZS5pc0VtcHR5fHxyLnB1c2goZSksaT10Lm9yaWdpbmFsUmFuZ2UuZW5kTGluZU51bWJlckV4Y2x1c2l2ZSxzPXQubW9kaWZpZWRSYW5nZS5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlfWNvbnN0IG89bmV3IFluKG5ldyBqbihpLHQrMSksbmV3IGpuKHMsbisxKSx2b2lkIDApO3JldHVybiBvLm1vZGlmaWVkUmFuZ2UuaXNFbXB0eXx8ci5wdXNoKG8pLHJ9Y29uc3RydWN0b3IoZSx0LG4pe3RoaXMub3JpZ2luYWxSYW5nZT1lLHRoaXMubW9kaWZpZWRSYW5nZT10LHRoaXMuaW5uZXJDaGFuZ2VzPW59dG9TdHJpbmcoKXtyZXR1cm5geyR7dGhpcy5vcmlnaW5hbFJhbmdlLnRvU3RyaW5nKCl9LT4ke3RoaXMubW9kaWZpZWRSYW5nZS50b1N0cmluZygpfX1gfWdldCBjaGFuZ2VkTGluZUNvdW50KCl7cmV0dXJuIE1hdGgubWF4KHRoaXMub3JpZ2luYWxSYW5nZS5sZW5ndGgsdGhpcy5tb2RpZmllZFJhbmdlLmxlbmd0aCl9fWNsYXNzIFFue2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5vcmlnaW5hbFJhbmdlPWUsdGhpcy5tb2RpZmllZFJhbmdlPXR9dG9TdHJpbmcoKXtyZXR1cm5geyR7dGhpcy5vcmlnaW5hbFJhbmdlLnRvU3RyaW5nKCl9LT4ke3RoaXMubW9kaWZpZWRSYW5nZS50b1N0cmluZygpfX1gfX1mdW5jdGlvbiBYbihlLHQsbixyKXtyZXR1cm4gbmV3IHllKGUsdCxuKS5Db21wdXRlRGlmZihyKX1sZXQgSm49Y2xhc3N7Y29uc3RydWN0b3IoZSl7Y29uc3QgdD1bXSxuPVtdO2ZvcihsZXQgcj0wLGk9ZS5sZW5ndGg7cjxpO3IrKyl0W3JdPXJyKGVbcl0sMSksbltyXT1pcihlW3JdLDEpO3RoaXMubGluZXM9ZSx0aGlzLl9zdGFydENvbHVtbnM9dCx0aGlzLl9lbmRDb2x1bW5zPW59Z2V0RWxlbWVudHMoKXtjb25zdCBlPVtdO2ZvcihsZXQgdD0wLG49dGhpcy5saW5lcy5sZW5ndGg7dDxuO3QrKyllW3RdPXRoaXMubGluZXNbdF0uc3Vic3RyaW5nKHRoaXMuX3N0YXJ0Q29sdW1uc1t0XS0xLHRoaXMuX2VuZENvbHVtbnNbdF0tMSk7cmV0dXJuIGV9Z2V0U3RyaWN0RWxlbWVudChlKXtyZXR1cm4gdGhpcy5saW5lc1tlXX1nZXRTdGFydExpbmVOdW1iZXIoZSl7cmV0dXJuIGUrMX1nZXRFbmRMaW5lTnVtYmVyKGUpe3JldHVybiBlKzF9Y3JlYXRlQ2hhclNlcXVlbmNlKGUsdCxuKXtjb25zdCByPVtdLGk9W10scz1bXTtsZXQgbz0wO2ZvcihsZXQgYT10O2E8PW47YSsrKXtjb25zdCB0PXRoaXMubGluZXNbYV0sbD1lP3RoaXMuX3N0YXJ0Q29sdW1uc1thXToxLHU9ZT90aGlzLl9lbmRDb2x1bW5zW2FdOnQubGVuZ3RoKzE7Zm9yKGxldCBlPWw7ZTx1O2UrKylyW29dPXQuY2hhckNvZGVBdChlLTEpLGlbb109YSsxLHNbb109ZSxvKys7IWUmJmE8biYmKHJbb109MTAsaVtvXT1hKzEsc1tvXT10Lmxlbmd0aCsxLG8rKyl9cmV0dXJuIG5ldyBabihyLGkscyl9fTtjbGFzcyBabntjb25zdHJ1Y3RvcihlLHQsbil7dGhpcy5fY2hhckNvZGVzPWUsdGhpcy5fbGluZU51bWJlcnM9dCx0aGlzLl9jb2x1bW5zPW59dG9TdHJpbmcoKXtyZXR1cm4iWyIrdGhpcy5fY2hhckNvZGVzLm1hcCgoKGUsdCk9PigxMD09PWU/IlxcbiI6U3RyaW5nLmZyb21DaGFyQ29kZShlKSkrYC0oJHt0aGlzLl9saW5lTnVtYmVyc1t0XX0sJHt0aGlzLl9jb2x1bW5zW3RdfSlgKSkuam9pbigiLCAiKSsiXSJ9X2Fzc2VydEluZGV4KGUsdCl7aWYoZTwwfHxlPj10Lmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoIklsbGVnYWwgaW5kZXgiKX1nZXRFbGVtZW50cygpe3JldHVybiB0aGlzLl9jaGFyQ29kZXN9Z2V0U3RhcnRMaW5lTnVtYmVyKGUpe3JldHVybiBlPjAmJmU9PT10aGlzLl9saW5lTnVtYmVycy5sZW5ndGg/dGhpcy5nZXRFbmRMaW5lTnVtYmVyKGUtMSk6KHRoaXMuX2Fzc2VydEluZGV4KGUsdGhpcy5fbGluZU51bWJlcnMpLHRoaXMuX2xpbmVOdW1iZXJzW2VdKX1nZXRFbmRMaW5lTnVtYmVyKGUpe3JldHVybi0xPT09ZT90aGlzLmdldFN0YXJ0TGluZU51bWJlcihlKzEpOih0aGlzLl9hc3NlcnRJbmRleChlLHRoaXMuX2xpbmVOdW1iZXJzKSwxMD09PXRoaXMuX2NoYXJDb2Rlc1tlXT90aGlzLl9saW5lTnVtYmVyc1tlXSsxOnRoaXMuX2xpbmVOdW1iZXJzW2VdKX1nZXRTdGFydENvbHVtbihlKXtyZXR1cm4gZT4wJiZlPT09dGhpcy5fY29sdW1ucy5sZW5ndGg/dGhpcy5nZXRFbmRDb2x1bW4oZS0xKToodGhpcy5fYXNzZXJ0SW5kZXgoZSx0aGlzLl9jb2x1bW5zKSx0aGlzLl9jb2x1bW5zW2VdKX1nZXRFbmRDb2x1bW4oZSl7cmV0dXJuLTE9PT1lP3RoaXMuZ2V0U3RhcnRDb2x1bW4oZSsxKToodGhpcy5fYXNzZXJ0SW5kZXgoZSx0aGlzLl9jb2x1bW5zKSwxMD09PXRoaXMuX2NoYXJDb2Rlc1tlXT8xOnRoaXMuX2NvbHVtbnNbZV0rMSl9fWNsYXNzIGVye2NvbnN0cnVjdG9yKGUsdCxuLHIsaSxzLG8sYSl7dGhpcy5vcmlnaW5hbFN0YXJ0TGluZU51bWJlcj1lLHRoaXMub3JpZ2luYWxTdGFydENvbHVtbj10LHRoaXMub3JpZ2luYWxFbmRMaW5lTnVtYmVyPW4sdGhpcy5vcmlnaW5hbEVuZENvbHVtbj1yLHRoaXMubW9kaWZpZWRTdGFydExpbmVOdW1iZXI9aSx0aGlzLm1vZGlmaWVkU3RhcnRDb2x1bW49cyx0aGlzLm1vZGlmaWVkRW5kTGluZU51bWJlcj1vLHRoaXMubW9kaWZpZWRFbmRDb2x1bW49YX1zdGF0aWMgY3JlYXRlRnJvbURpZmZDaGFuZ2UoZSx0LG4pe2NvbnN0IHI9dC5nZXRTdGFydExpbmVOdW1iZXIoZS5vcmlnaW5hbFN0YXJ0KSxpPXQuZ2V0U3RhcnRDb2x1bW4oZS5vcmlnaW5hbFN0YXJ0KSxzPXQuZ2V0RW5kTGluZU51bWJlcihlLm9yaWdpbmFsU3RhcnQrZS5vcmlnaW5hbExlbmd0aC0xKSxvPXQuZ2V0RW5kQ29sdW1uKGUub3JpZ2luYWxTdGFydCtlLm9yaWdpbmFsTGVuZ3RoLTEpLGE9bi5nZXRTdGFydExpbmVOdW1iZXIoZS5tb2RpZmllZFN0YXJ0KSxsPW4uZ2V0U3RhcnRDb2x1bW4oZS5tb2RpZmllZFN0YXJ0KSx1PW4uZ2V0RW5kTGluZU51bWJlcihlLm1vZGlmaWVkU3RhcnQrZS5tb2RpZmllZExlbmd0aC0xKSxoPW4uZ2V0RW5kQ29sdW1uKGUubW9kaWZpZWRTdGFydCtlLm1vZGlmaWVkTGVuZ3RoLTEpO3JldHVybiBuZXcgZXIocixpLHMsbyxhLGwsdSxoKX19Y2xhc3MgdHJ7Y29uc3RydWN0b3IoZSx0LG4scixpKXt0aGlzLm9yaWdpbmFsU3RhcnRMaW5lTnVtYmVyPWUsdGhpcy5vcmlnaW5hbEVuZExpbmVOdW1iZXI9dCx0aGlzLm1vZGlmaWVkU3RhcnRMaW5lTnVtYmVyPW4sdGhpcy5tb2RpZmllZEVuZExpbmVOdW1iZXI9cix0aGlzLmNoYXJDaGFuZ2VzPWl9c3RhdGljIGNyZWF0ZUZyb21EaWZmUmVzdWx0KGUsdCxuLHIsaSxzLG8pe2xldCBhLGwsdSxoLGM7aWYoMD09PXQub3JpZ2luYWxMZW5ndGg/KGE9bi5nZXRTdGFydExpbmVOdW1iZXIodC5vcmlnaW5hbFN0YXJ0KS0xLGw9MCk6KGE9bi5nZXRTdGFydExpbmVOdW1iZXIodC5vcmlnaW5hbFN0YXJ0KSxsPW4uZ2V0RW5kTGluZU51bWJlcih0Lm9yaWdpbmFsU3RhcnQrdC5vcmlnaW5hbExlbmd0aC0xKSksMD09PXQubW9kaWZpZWRMZW5ndGg/KHU9ci5nZXRTdGFydExpbmVOdW1iZXIodC5tb2RpZmllZFN0YXJ0KS0xLGg9MCk6KHU9ci5nZXRTdGFydExpbmVOdW1iZXIodC5tb2RpZmllZFN0YXJ0KSxoPXIuZ2V0RW5kTGluZU51bWJlcih0Lm1vZGlmaWVkU3RhcnQrdC5tb2RpZmllZExlbmd0aC0xKSkscyYmdC5vcmlnaW5hbExlbmd0aD4wJiZ0Lm9yaWdpbmFsTGVuZ3RoPDIwJiZ0Lm1vZGlmaWVkTGVuZ3RoPjAmJnQubW9kaWZpZWRMZW5ndGg8MjAmJmkoKSl7Y29uc3Qgcz1uLmNyZWF0ZUNoYXJTZXF1ZW5jZShlLHQub3JpZ2luYWxTdGFydCx0Lm9yaWdpbmFsU3RhcnQrdC5vcmlnaW5hbExlbmd0aC0xKSxhPXIuY3JlYXRlQ2hhclNlcXVlbmNlKGUsdC5tb2RpZmllZFN0YXJ0LHQubW9kaWZpZWRTdGFydCt0Lm1vZGlmaWVkTGVuZ3RoLTEpO2lmKHMuZ2V0RWxlbWVudHMoKS5sZW5ndGg+MCYmYS5nZXRFbGVtZW50cygpLmxlbmd0aD4wKXtsZXQgZT1YbihzLGEsaSwhMCkuY2hhbmdlcztvJiYoZT1mdW5jdGlvbihlKXtpZihlLmxlbmd0aDw9MSlyZXR1cm4gZTtjb25zdCB0PVtlWzBdXTtsZXQgbj10WzBdO2ZvcihsZXQgcj0xLGk9ZS5sZW5ndGg7cjxpO3IrKyl7Y29uc3QgaT1lW3JdLHM9aS5vcmlnaW5hbFN0YXJ0LShuLm9yaWdpbmFsU3RhcnQrbi5vcmlnaW5hbExlbmd0aCksbz1pLm1vZGlmaWVkU3RhcnQtKG4ubW9kaWZpZWRTdGFydCtuLm1vZGlmaWVkTGVuZ3RoKTtNYXRoLm1pbihzLG8pPDM/KG4ub3JpZ2luYWxMZW5ndGg9aS5vcmlnaW5hbFN0YXJ0K2kub3JpZ2luYWxMZW5ndGgtbi5vcmlnaW5hbFN0YXJ0LG4ubW9kaWZpZWRMZW5ndGg9aS5tb2RpZmllZFN0YXJ0K2kubW9kaWZpZWRMZW5ndGgtbi5tb2RpZmllZFN0YXJ0KToodC5wdXNoKGkpLG49aSl9cmV0dXJuIHR9KGUpKSxjPVtdO2ZvcihsZXQgdD0wLG49ZS5sZW5ndGg7dDxuO3QrKyljLnB1c2goZXIuY3JlYXRlRnJvbURpZmZDaGFuZ2UoZVt0XSxzLGEpKX19cmV0dXJuIG5ldyB0cihhLGwsdSxoLGMpfX1jbGFzcyBucntjb25zdHJ1Y3RvcihlLHQsbil7dGhpcy5zaG91bGRDb21wdXRlQ2hhckNoYW5nZXM9bi5zaG91bGRDb21wdXRlQ2hhckNoYW5nZXMsdGhpcy5zaG91bGRQb3N0UHJvY2Vzc0NoYXJDaGFuZ2VzPW4uc2hvdWxkUG9zdFByb2Nlc3NDaGFyQ2hhbmdlcyx0aGlzLnNob3VsZElnbm9yZVRyaW1XaGl0ZXNwYWNlPW4uc2hvdWxkSWdub3JlVHJpbVdoaXRlc3BhY2UsdGhpcy5zaG91bGRNYWtlUHJldHR5RGlmZj1uLnNob3VsZE1ha2VQcmV0dHlEaWZmLHRoaXMub3JpZ2luYWxMaW5lcz1lLHRoaXMubW9kaWZpZWRMaW5lcz10LHRoaXMub3JpZ2luYWw9bmV3IEpuKGUpLHRoaXMubW9kaWZpZWQ9bmV3IEpuKHQpLHRoaXMuY29udGludWVMaW5lRGlmZj1zcihuLm1heENvbXB1dGF0aW9uVGltZSksdGhpcy5jb250aW51ZUNoYXJEaWZmPXNyKDA9PT1uLm1heENvbXB1dGF0aW9uVGltZT8wOk1hdGgubWluKG4ubWF4Q29tcHV0YXRpb25UaW1lLDVlMykpfWNvbXB1dGVEaWZmKCl7aWYoMT09PXRoaXMub3JpZ2luYWwubGluZXMubGVuZ3RoJiYwPT09dGhpcy5vcmlnaW5hbC5saW5lc1swXS5sZW5ndGgpcmV0dXJuIDE9PT10aGlzLm1vZGlmaWVkLmxpbmVzLmxlbmd0aCYmMD09PXRoaXMubW9kaWZpZWQubGluZXNbMF0ubGVuZ3RoP3txdWl0RWFybHk6ITEsY2hhbmdlczpbXX06e3F1aXRFYXJseTohMSxjaGFuZ2VzOlt7b3JpZ2luYWxTdGFydExpbmVOdW1iZXI6MSxvcmlnaW5hbEVuZExpbmVOdW1iZXI6MSxtb2RpZmllZFN0YXJ0TGluZU51bWJlcjoxLG1vZGlmaWVkRW5kTGluZU51bWJlcjp0aGlzLm1vZGlmaWVkLmxpbmVzLmxlbmd0aCxjaGFyQ2hhbmdlczp2b2lkIDB9XX07aWYoMT09PXRoaXMubW9kaWZpZWQubGluZXMubGVuZ3RoJiYwPT09dGhpcy5tb2RpZmllZC5saW5lc1swXS5sZW5ndGgpcmV0dXJue3F1aXRFYXJseTohMSxjaGFuZ2VzOlt7b3JpZ2luYWxTdGFydExpbmVOdW1iZXI6MSxvcmlnaW5hbEVuZExpbmVOdW1iZXI6dGhpcy5vcmlnaW5hbC5saW5lcy5sZW5ndGgsbW9kaWZpZWRTdGFydExpbmVOdW1iZXI6MSxtb2RpZmllZEVuZExpbmVOdW1iZXI6MSxjaGFyQ2hhbmdlczp2b2lkIDB9XX07Y29uc3QgZT1Ybih0aGlzLm9yaWdpbmFsLHRoaXMubW9kaWZpZWQsdGhpcy5jb250aW51ZUxpbmVEaWZmLHRoaXMuc2hvdWxkTWFrZVByZXR0eURpZmYpLHQ9ZS5jaGFuZ2VzLG49ZS5xdWl0RWFybHk7aWYodGhpcy5zaG91bGRJZ25vcmVUcmltV2hpdGVzcGFjZSl7Y29uc3QgZT1bXTtmb3IobGV0IG49MCxyPXQubGVuZ3RoO248cjtuKyspZS5wdXNoKHRyLmNyZWF0ZUZyb21EaWZmUmVzdWx0KHRoaXMuc2hvdWxkSWdub3JlVHJpbVdoaXRlc3BhY2UsdFtuXSx0aGlzLm9yaWdpbmFsLHRoaXMubW9kaWZpZWQsdGhpcy5jb250aW51ZUNoYXJEaWZmLHRoaXMuc2hvdWxkQ29tcHV0ZUNoYXJDaGFuZ2VzLHRoaXMuc2hvdWxkUG9zdFByb2Nlc3NDaGFyQ2hhbmdlcykpO3JldHVybntxdWl0RWFybHk6bixjaGFuZ2VzOmV9fWNvbnN0IHI9W107bGV0IGk9MCxzPTA7Zm9yKGxldCBlPS0xLG49dC5sZW5ndGg7ZTxuO2UrKyl7Y29uc3Qgbz1lKzE8bj90W2UrMV06bnVsbCxhPW8/by5vcmlnaW5hbFN0YXJ0OnRoaXMub3JpZ2luYWxMaW5lcy5sZW5ndGgsbD1vP28ubW9kaWZpZWRTdGFydDp0aGlzLm1vZGlmaWVkTGluZXMubGVuZ3RoO2Zvcig7aTxhJiZzPGw7KXtjb25zdCBlPXRoaXMub3JpZ2luYWxMaW5lc1tpXSx0PXRoaXMubW9kaWZpZWRMaW5lc1tzXTtpZihlIT09dCl7e2xldCBuPXJyKGUsMSksbz1ycih0LDEpO2Zvcig7bj4xJiZvPjE7KXtpZihlLmNoYXJDb2RlQXQobi0yKSE9PXQuY2hhckNvZGVBdChvLTIpKWJyZWFrO24tLSxvLS19KG4+MXx8bz4xKSYmdGhpcy5fcHVzaFRyaW1XaGl0ZXNwYWNlQ2hhckNoYW5nZShyLGkrMSwxLG4scysxLDEsbyl9e2xldCBuPWlyKGUsMSksbz1pcih0LDEpO2NvbnN0IGE9ZS5sZW5ndGgrMSxsPXQubGVuZ3RoKzE7Zm9yKDtuPGEmJm88bDspe2lmKGUuY2hhckNvZGVBdChuLTEpIT09ZS5jaGFyQ29kZUF0KG8tMSkpYnJlYWs7bisrLG8rK30objxhfHxvPGwpJiZ0aGlzLl9wdXNoVHJpbVdoaXRlc3BhY2VDaGFyQ2hhbmdlKHIsaSsxLG4sYSxzKzEsbyxsKX19aSsrLHMrK31vJiYoci5wdXNoKHRyLmNyZWF0ZUZyb21EaWZmUmVzdWx0KHRoaXMuc2hvdWxkSWdub3JlVHJpbVdoaXRlc3BhY2Usbyx0aGlzLm9yaWdpbmFsLHRoaXMubW9kaWZpZWQsdGhpcy5jb250aW51ZUNoYXJEaWZmLHRoaXMuc2hvdWxkQ29tcHV0ZUNoYXJDaGFuZ2VzLHRoaXMuc2hvdWxkUG9zdFByb2Nlc3NDaGFyQ2hhbmdlcykpLGkrPW8ub3JpZ2luYWxMZW5ndGgscys9by5tb2RpZmllZExlbmd0aCl9cmV0dXJue3F1aXRFYXJseTpuLGNoYW5nZXM6cn19X3B1c2hUcmltV2hpdGVzcGFjZUNoYXJDaGFuZ2UoZSx0LG4scixpLHMsbyl7aWYodGhpcy5fbWVyZ2VUcmltV2hpdGVzcGFjZUNoYXJDaGFuZ2UoZSx0LG4scixpLHMsbykpcmV0dXJuO2xldCBhO3RoaXMuc2hvdWxkQ29tcHV0ZUNoYXJDaGFuZ2VzJiYoYT1bbmV3IGVyKHQsbix0LHIsaSxzLGksbyldKSxlLnB1c2gobmV3IHRyKHQsdCxpLGksYSkpfV9tZXJnZVRyaW1XaGl0ZXNwYWNlQ2hhckNoYW5nZShlLHQsbixyLGkscyxvKXtjb25zdCBhPWUubGVuZ3RoO2lmKDA9PT1hKXJldHVybiExO2NvbnN0IGw9ZVthLTFdO3JldHVybiAwIT09bC5vcmlnaW5hbEVuZExpbmVOdW1iZXImJjAhPT1sLm1vZGlmaWVkRW5kTGluZU51bWJlciYmKGwub3JpZ2luYWxFbmRMaW5lTnVtYmVyPT09dCYmbC5tb2RpZmllZEVuZExpbmVOdW1iZXI9PT1pPyh0aGlzLnNob3VsZENvbXB1dGVDaGFyQ2hhbmdlcyYmbC5jaGFyQ2hhbmdlcyYmbC5jaGFyQ2hhbmdlcy5wdXNoKG5ldyBlcih0LG4sdCxyLGkscyxpLG8pKSwhMCk6bC5vcmlnaW5hbEVuZExpbmVOdW1iZXIrMT09PXQmJmwubW9kaWZpZWRFbmRMaW5lTnVtYmVyKzE9PT1pJiYobC5vcmlnaW5hbEVuZExpbmVOdW1iZXI9dCxsLm1vZGlmaWVkRW5kTGluZU51bWJlcj1pLHRoaXMuc2hvdWxkQ29tcHV0ZUNoYXJDaGFuZ2VzJiZsLmNoYXJDaGFuZ2VzJiZsLmNoYXJDaGFuZ2VzLnB1c2gobmV3IGVyKHQsbix0LHIsaSxzLGksbykpLCEwKSl9fWZ1bmN0aW9uIHJyKGUsdCl7Y29uc3Qgbj1mdW5jdGlvbihlKXtmb3IobGV0IHQ9MCxuPWUubGVuZ3RoO3Q8bjt0Kyspe2NvbnN0IG49ZS5jaGFyQ29kZUF0KHQpO2lmKDMyIT09biYmOSE9PW4pcmV0dXJuIHR9cmV0dXJuLTF9KGUpO3JldHVybi0xPT09bj90Om4rMX1mdW5jdGlvbiBpcihlLHQpe2NvbnN0IG49ZnVuY3Rpb24oZSx0PWUubGVuZ3RoLTEpe2ZvcihsZXQgbj10O24+PTA7bi0tKXtjb25zdCB0PWUuY2hhckNvZGVBdChuKTtpZigzMiE9PXQmJjkhPT10KXJldHVybiBufXJldHVybi0xfShlKTtyZXR1cm4tMT09PW4/dDpuKzJ9ZnVuY3Rpb24gc3IoZSl7aWYoMD09PWUpcmV0dXJuKCk9PiEwO2NvbnN0IHQ9RGF0ZS5ub3coKTtyZXR1cm4oKT0+RGF0ZS5ub3coKS10PGV9Y2xhc3Mgb3J7c3RhdGljIGFkZFJhbmdlKGUsdCl7bGV0IG49MDtmb3IoO248dC5sZW5ndGgmJnRbbl0uZW5kRXhjbHVzaXZlPGUuc3RhcnQ7KW4rKztsZXQgcj1uO2Zvcig7cjx0Lmxlbmd0aCYmdFtyXS5zdGFydDw9ZS5lbmRFeGNsdXNpdmU7KXIrKztpZihuPT09cil0LnNwbGljZShuLDAsZSk7ZWxzZXtjb25zdCBpPU1hdGgubWluKGUuc3RhcnQsdFtuXS5zdGFydCkscz1NYXRoLm1heChlLmVuZEV4Y2x1c2l2ZSx0W3ItMV0uZW5kRXhjbHVzaXZlKTt0LnNwbGljZShuLHItbixuZXcgb3IoaSxzKSl9fXN0YXRpYyB0cnlDcmVhdGUoZSx0KXtpZighKGU+dCkpcmV0dXJuIG5ldyBvcihlLHQpfWNvbnN0cnVjdG9yKGUsdCl7aWYodGhpcy5zdGFydD1lLHRoaXMuZW5kRXhjbHVzaXZlPXQsZT50KXRocm93IG5ldyBhKGBJbnZhbGlkIHJhbmdlOiAke3RoaXMudG9TdHJpbmcoKX1gKX1nZXQgaXNFbXB0eSgpe3JldHVybiB0aGlzLnN0YXJ0PT09dGhpcy5lbmRFeGNsdXNpdmV9ZGVsdGEoZSl7cmV0dXJuIG5ldyBvcih0aGlzLnN0YXJ0K2UsdGhpcy5lbmRFeGNsdXNpdmUrZSl9Z2V0IGxlbmd0aCgpe3JldHVybiB0aGlzLmVuZEV4Y2x1c2l2ZS10aGlzLnN0YXJ0fXRvU3RyaW5nKCl7cmV0dXJuYFske3RoaXMuc3RhcnR9LCAke3RoaXMuZW5kRXhjbHVzaXZlfSlgfWVxdWFscyhlKXtyZXR1cm4gdGhpcy5zdGFydD09PWUuc3RhcnQmJnRoaXMuZW5kRXhjbHVzaXZlPT09ZS5lbmRFeGNsdXNpdmV9Y29udGFpbnNSYW5nZShlKXtyZXR1cm4gdGhpcy5zdGFydDw9ZS5zdGFydCYmZS5lbmRFeGNsdXNpdmU8PXRoaXMuZW5kRXhjbHVzaXZlfWpvaW4oZSl7cmV0dXJuIG5ldyBvcihNYXRoLm1pbih0aGlzLnN0YXJ0LGUuc3RhcnQpLE1hdGgubWF4KHRoaXMuZW5kRXhjbHVzaXZlLGUuZW5kRXhjbHVzaXZlKSl9aW50ZXJzZWN0KGUpe2NvbnN0IHQ9TWF0aC5tYXgodGhpcy5zdGFydCxlLnN0YXJ0KSxuPU1hdGgubWluKHRoaXMuZW5kRXhjbHVzaXZlLGUuZW5kRXhjbHVzaXZlKTtpZih0PD1uKXJldHVybiBuZXcgb3IodCxuKX19Y2xhc3MgYXJ7c3RhdGljIHRyaXZpYWwoZSx0KXtyZXR1cm4gbmV3IGFyKFtuZXcgbHIobmV3IG9yKDAsZS5sZW5ndGgpLG5ldyBvcigwLHQubGVuZ3RoKSldLCExKX1zdGF0aWMgdHJpdmlhbFRpbWVkT3V0KGUsdCl7cmV0dXJuIG5ldyBhcihbbmV3IGxyKG5ldyBvcigwLGUubGVuZ3RoKSxuZXcgb3IoMCx0Lmxlbmd0aCkpXSwhMCl9Y29uc3RydWN0b3IoZSx0KXt0aGlzLmRpZmZzPWUsdGhpcy5oaXRUaW1lb3V0PXR9fWNsYXNzIGxye2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5zZXExUmFuZ2U9ZSx0aGlzLnNlcTJSYW5nZT10fXJldmVyc2UoKXtyZXR1cm4gbmV3IGxyKHRoaXMuc2VxMlJhbmdlLHRoaXMuc2VxMVJhbmdlKX10b1N0cmluZygpe3JldHVybmAke3RoaXMuc2VxMVJhbmdlfSA8LT4gJHt0aGlzLnNlcTJSYW5nZX1gfWpvaW4oZSl7cmV0dXJuIG5ldyBscih0aGlzLnNlcTFSYW5nZS5qb2luKGUuc2VxMVJhbmdlKSx0aGlzLnNlcTJSYW5nZS5qb2luKGUuc2VxMlJhbmdlKSl9fWNsYXNzIHVye2lzVmFsaWQoKXtyZXR1cm4hMH19dXIuaW5zdGFuY2U9bmV3IHVyO2NsYXNzIGhye2NvbnN0cnVjdG9yKGUpe2lmKHRoaXMudGltZW91dD1lLHRoaXMuc3RhcnRUaW1lPURhdGUubm93KCksdGhpcy52YWxpZD0hMCxlPD0wKXRocm93IG5ldyBhKCJ0aW1lb3V0IG11c3QgYmUgcG9zaXRpdmUiKX1pc1ZhbGlkKCl7cmV0dXJuIShEYXRlLm5vdygpLXRoaXMuc3RhcnRUaW1lPHRoaXMudGltZW91dCkmJnRoaXMudmFsaWQmJih0aGlzLnZhbGlkPSExKSx0aGlzLnZhbGlkfX1jbGFzcyBjcntjb25zdHJ1Y3RvcihlLHQpe3RoaXMud2lkdGg9ZSx0aGlzLmhlaWdodD10LHRoaXMuYXJyYXk9W10sdGhpcy5hcnJheT1uZXcgQXJyYXkoZSp0KX1nZXQoZSx0KXtyZXR1cm4gdGhpcy5hcnJheVtlK3QqdGhpcy53aWR0aF19c2V0KGUsdCxuKXt0aGlzLmFycmF5W2UrdCp0aGlzLndpZHRoXT1ufX1jbGFzcyBkcntjb21wdXRlKGUsdCxuPXVyLmluc3RhbmNlLHIpe2lmKDA9PT1lLmxlbmd0aHx8MD09PXQubGVuZ3RoKXJldHVybiBhci50cml2aWFsKGUsdCk7Y29uc3QgaT1uZXcgY3IoZS5sZW5ndGgsdC5sZW5ndGgpLHM9bmV3IGNyKGUubGVuZ3RoLHQubGVuZ3RoKSxvPW5ldyBjcihlLmxlbmd0aCx0Lmxlbmd0aCk7Zm9yKGxldCBhPTA7YTxlLmxlbmd0aDthKyspZm9yKGxldCBsPTA7bDx0Lmxlbmd0aDtsKyspe2lmKCFuLmlzVmFsaWQoKSlyZXR1cm4gYXIudHJpdmlhbFRpbWVkT3V0KGUsdCk7Y29uc3QgdT0wPT09YT8wOmkuZ2V0KGEtMSxsKSxoPTA9PT1sPzA6aS5nZXQoYSxsLTEpO2xldCBjO2UuZ2V0RWxlbWVudChhKT09PXQuZ2V0RWxlbWVudChsKT8oYz0wPT09YXx8MD09PWw/MDppLmdldChhLTEsbC0xKSxhPjAmJmw+MCYmMz09PXMuZ2V0KGEtMSxsLTEpJiYoYys9by5nZXQoYS0xLGwtMSkpLGMrPXI/cihhLGwpOjEpOmM9LTE7Y29uc3QgZD1NYXRoLm1heCh1LGgsYyk7aWYoZD09PWMpe2NvbnN0IGU9YT4wJiZsPjA/by5nZXQoYS0xLGwtMSk6MDtvLnNldChhLGwsZSsxKSxzLnNldChhLGwsMyl9ZWxzZSBkPT09dT8oby5zZXQoYSxsLDApLHMuc2V0KGEsbCwxKSk6ZD09PWgmJihvLnNldChhLGwsMCkscy5zZXQoYSxsLDIpKTtpLnNldChhLGwsZCl9Y29uc3QgYT1bXTtsZXQgbD1lLmxlbmd0aCx1PXQubGVuZ3RoO2Z1bmN0aW9uIGgoZSx0KXtlKzE9PT1sJiZ0KzE9PT11fHxhLnB1c2gobmV3IGxyKG5ldyBvcihlKzEsbCksbmV3IG9yKHQrMSx1KSkpLGw9ZSx1PXR9bGV0IGM9ZS5sZW5ndGgtMSxkPXQubGVuZ3RoLTE7Zm9yKDtjPj0wJiZkPj0wOykzPT09cy5nZXQoYyxkKT8oaChjLGQpLGMtLSxkLS0pOjE9PT1zLmdldChjLGQpP2MtLTpkLS07cmV0dXJuIGgoLTEsLTEpLGEucmV2ZXJzZSgpLG5ldyBhcihhLCExKX19ZnVuY3Rpb24gbXIoZSx0LG4pe2xldCByPW47cmV0dXJuIHI9ZnVuY3Rpb24oZSx0LG4pe2NvbnN0IHI9W107bi5sZW5ndGg+MCYmci5wdXNoKG5bMF0pO2ZvcihsZXQgZT0xO2U8bi5sZW5ndGg7ZSsrKXtjb25zdCBpPXJbci5sZW5ndGgtMV0scz1uW2VdO2lmKHMuc2VxMVJhbmdlLmlzRW1wdHkpe2xldCBlPSEwO2NvbnN0IG49cy5zZXExUmFuZ2Uuc3RhcnQtaS5zZXExUmFuZ2UuZW5kRXhjbHVzaXZlO2ZvcihsZXQgcj0xO3I8PW47cisrKWlmKHQuZ2V0RWxlbWVudChzLnNlcTJSYW5nZS5zdGFydC1yKSE9PXQuZ2V0RWxlbWVudChzLnNlcTJSYW5nZS5lbmRFeGNsdXNpdmUtcikpe2U9ITE7YnJlYWt9aWYoZSl7cltyLmxlbmd0aC0xXT1uZXcgbHIoaS5zZXExUmFuZ2UsbmV3IG9yKGkuc2VxMlJhbmdlLnN0YXJ0LHMuc2VxMlJhbmdlLmVuZEV4Y2x1c2l2ZS1uKSk7Y29udGludWV9fXIucHVzaChzKX1yZXR1cm4gcn0oMCx0LHIpLHI9ZnVuY3Rpb24oZSx0LG4pe2lmKCFlLmdldEJvdW5kYXJ5U2NvcmV8fCF0LmdldEJvdW5kYXJ5U2NvcmUpcmV0dXJuIG47Zm9yKGxldCByPTA7cjxuLmxlbmd0aDtyKyspe2NvbnN0IGk9bltyXTtpZihpLnNlcTFSYW5nZS5pc0VtcHR5KXtjb25zdCBzPXI+MD9uW3ItMV0uc2VxMlJhbmdlLmVuZEV4Y2x1c2l2ZTotMSxvPXIrMTxuLmxlbmd0aD9uW3IrMV0uc2VxMlJhbmdlLnN0YXJ0OnQubGVuZ3RoO25bcl09Z3IoaSxlLHQsbyxzKX1lbHNlIGlmKGkuc2VxMlJhbmdlLmlzRW1wdHkpe2NvbnN0IHM9cj4wP25bci0xXS5zZXExUmFuZ2UuZW5kRXhjbHVzaXZlOi0xLG89cisxPG4ubGVuZ3RoP25bcisxXS5zZXExUmFuZ2Uuc3RhcnQ6ZS5sZW5ndGg7bltyXT1ncihpLnJldmVyc2UoKSx0LGUsbyxzKS5yZXZlcnNlKCl9fXJldHVybiBufShlLHQscikscn1mdW5jdGlvbiBncihlLHQsbixyLGkpe2xldCBzPTE7Zm9yKDtlLnNlcTJSYW5nZS5zdGFydC1zPmkmJm4uZ2V0RWxlbWVudChlLnNlcTJSYW5nZS5zdGFydC1zKT09PW4uZ2V0RWxlbWVudChlLnNlcTJSYW5nZS5lbmRFeGNsdXNpdmUtcykmJnM8MjA7KXMrKztzLS07bGV0IG89MDtmb3IoO2Uuc2VxMlJhbmdlLnN0YXJ0K288ciYmbi5nZXRFbGVtZW50KGUuc2VxMlJhbmdlLnN0YXJ0K28pPT09bi5nZXRFbGVtZW50KGUuc2VxMlJhbmdlLmVuZEV4Y2x1c2l2ZStvKSYmbzwyMDspbysrO2lmKDA9PT1zJiYwPT09bylyZXR1cm4gZTtsZXQgYT0wLGw9LTE7Zm9yKGxldCByPS1zO3I8PW87cisrKXtjb25zdCBpPWUuc2VxMlJhbmdlLnN0YXJ0K3Iscz1lLnNlcTJSYW5nZS5lbmRFeGNsdXNpdmUrcixvPWUuc2VxMVJhbmdlLnN0YXJ0K3IsdT10LmdldEJvdW5kYXJ5U2NvcmUobykrbi5nZXRCb3VuZGFyeVNjb3JlKGkpK24uZ2V0Qm91bmRhcnlTY29yZShzKTt1PmwmJihsPXUsYT1yKX1yZXR1cm4gMCE9PWE/bmV3IGxyKGUuc2VxMVJhbmdlLmRlbHRhKGEpLGUuc2VxMlJhbmdlLmRlbHRhKGEpKTplfWNsYXNzIGZye2NvbXB1dGUoZSx0LG49dXIuaW5zdGFuY2Upe2lmKDA9PT1lLmxlbmd0aHx8MD09PXQubGVuZ3RoKXJldHVybiBhci50cml2aWFsKGUsdCk7ZnVuY3Rpb24gcihuLHIpe2Zvcig7bjxlLmxlbmd0aCYmcjx0Lmxlbmd0aCYmZS5nZXRFbGVtZW50KG4pPT09dC5nZXRFbGVtZW50KHIpOyluKysscisrO3JldHVybiBufWxldCBpPTA7Y29uc3Qgcz1uZXcgYnI7cy5zZXQoMCxyKDAsMCkpO2NvbnN0IG89bmV3IF9yO28uc2V0KDAsMD09PXMuZ2V0KDApP251bGw6bmV3IHByKG51bGwsMCwwLHMuZ2V0KDApKSk7bGV0IGE9MDtlOmZvcig7Oylmb3IoaSsrLGE9LWk7YTw9aTthKz0yKXtpZighbi5pc1ZhbGlkKCkpcmV0dXJuIGFyLnRyaXZpYWxUaW1lZE91dChlLHQpO2NvbnN0IGw9YT09PWk/LTE6cy5nZXQoYSsxKSx1PWE9PT0taT8tMTpzLmdldChhLTEpKzEsaD1NYXRoLm1pbihNYXRoLm1heChsLHUpLGUubGVuZ3RoKSxjPWgtYSxkPXIoaCxjKTtzLnNldChhLGQpO2NvbnN0IG09aD09PWw/by5nZXQoYSsxKTpvLmdldChhLTEpO2lmKG8uc2V0KGEsZCE9PWg/bmV3IHByKG0saCxjLGQtaCk6bSkscy5nZXQoYSk9PT1lLmxlbmd0aCYmcy5nZXQoYSktYT09PXQubGVuZ3RoKWJyZWFrIGV9bGV0IGw9by5nZXQoYSk7Y29uc3QgdT1bXTtsZXQgaD1lLmxlbmd0aCxjPXQubGVuZ3RoO2Zvcig7Oyl7Y29uc3QgZT1sP2wueCtsLmxlbmd0aDowLHQ9bD9sLnkrbC5sZW5ndGg6MDtpZihlPT09aCYmdD09PWN8fHUucHVzaChuZXcgbHIobmV3IG9yKGUsaCksbmV3IG9yKHQsYykpKSwhbClicmVhaztoPWwueCxjPWwueSxsPWwucHJldn1yZXR1cm4gdS5yZXZlcnNlKCksbmV3IGFyKHUsITEpfX1jbGFzcyBwcntjb25zdHJ1Y3RvcihlLHQsbixyKXt0aGlzLnByZXY9ZSx0aGlzLng9dCx0aGlzLnk9bix0aGlzLmxlbmd0aD1yfX1jbGFzcyBicntjb25zdHJ1Y3Rvcigpe3RoaXMucG9zaXRpdmVBcnI9bmV3IEludDMyQXJyYXkoMTApLHRoaXMubmVnYXRpdmVBcnI9bmV3IEludDMyQXJyYXkoMTApfWdldChlKXtyZXR1cm4gZTwwPyhlPS1lLTEsdGhpcy5uZWdhdGl2ZUFycltlXSk6dGhpcy5wb3NpdGl2ZUFycltlXX1zZXQoZSx0KXtpZihlPDApe2lmKChlPS1lLTEpPj10aGlzLm5lZ2F0aXZlQXJyLmxlbmd0aCl7Y29uc3QgZT10aGlzLm5lZ2F0aXZlQXJyO3RoaXMubmVnYXRpdmVBcnI9bmV3IEludDMyQXJyYXkoMiplLmxlbmd0aCksdGhpcy5uZWdhdGl2ZUFyci5zZXQoZSl9dGhpcy5uZWdhdGl2ZUFycltlXT10fWVsc2V7aWYoZT49dGhpcy5wb3NpdGl2ZUFyci5sZW5ndGgpe2NvbnN0IGU9dGhpcy5wb3NpdGl2ZUFycjt0aGlzLnBvc2l0aXZlQXJyPW5ldyBJbnQzMkFycmF5KDIqZS5sZW5ndGgpLHRoaXMucG9zaXRpdmVBcnIuc2V0KGUpfXRoaXMucG9zaXRpdmVBcnJbZV09dH19fWNsYXNzIF9ye2NvbnN0cnVjdG9yKCl7dGhpcy5wb3NpdGl2ZUFycj1bXSx0aGlzLm5lZ2F0aXZlQXJyPVtdfWdldChlKXtyZXR1cm4gZTwwPyhlPS1lLTEsdGhpcy5uZWdhdGl2ZUFycltlXSk6dGhpcy5wb3NpdGl2ZUFycltlXX1zZXQoZSx0KXtlPDA/KGU9LWUtMSx0aGlzLm5lZ2F0aXZlQXJyW2VdPXQpOnRoaXMucG9zaXRpdmVBcnJbZV09dH19Y2xhc3MgQ3J7Y29uc3RydWN0b3IoZSx0KXt0aGlzLnRyaW1tZWRIYXNoPWUsdGhpcy5saW5lcz10fWdldEVsZW1lbnQoZSl7cmV0dXJuIHRoaXMudHJpbW1lZEhhc2hbZV19Z2V0IGxlbmd0aCgpe3JldHVybiB0aGlzLnRyaW1tZWRIYXNoLmxlbmd0aH1nZXRCb3VuZGFyeVNjb3JlKGUpe3JldHVybiAxZTMtKCgwPT09ZT8wOnlyKHRoaXMubGluZXNbZS0xXSkpKyhlPT09dGhpcy5saW5lcy5sZW5ndGg/MDp5cih0aGlzLmxpbmVzW2VdKSkpfX1mdW5jdGlvbiB5cihlKXtsZXQgdD0wO2Zvcig7dDxlLmxlbmd0aCYmKDMyPT09ZS5jaGFyQ29kZUF0KHQpfHw5PT09ZS5jaGFyQ29kZUF0KHQpKTspdCsrO3JldHVybiB0fWNsYXNzIHZye2NvbnN0cnVjdG9yKGUsdCxuKXt0aGlzLmxpbmVzPWUsdGhpcy5jb25zaWRlcldoaXRlc3BhY2VDaGFuZ2VzPW4sdGhpcy5lbGVtZW50cz1bXSx0aGlzLmZpcnN0Q2hhck9mZnNldEJ5TGluZU1pbnVzT25lPVtdLHRoaXMub2Zmc2V0QnlMaW5lPVtdO2xldCByPSExO3Quc3RhcnQ+MCYmdC5lbmRFeGNsdXNpdmU+PWUubGVuZ3RoJiYodD1uZXcgb3IodC5zdGFydC0xLHQuZW5kRXhjbHVzaXZlKSxyPSEwKSx0aGlzLmxpbmVSYW5nZT10O2ZvcihsZXQgdD10aGlzLmxpbmVSYW5nZS5zdGFydDt0PHRoaXMubGluZVJhbmdlLmVuZEV4Y2x1c2l2ZTt0Kyspe2xldCBpPWVbdF0scz0wO2lmKHIpcz1pLmxlbmd0aCxpPSIiLHI9ITE7ZWxzZSBpZighbil7Y29uc3QgZT1pLnRyaW1TdGFydCgpO3M9aS5sZW5ndGgtZS5sZW5ndGgsaT1lLnRyaW1FbmQoKX10aGlzLm9mZnNldEJ5TGluZS5wdXNoKHMpO2ZvcihsZXQgZT0wO2U8aS5sZW5ndGg7ZSsrKXRoaXMuZWxlbWVudHMucHVzaChpLmNoYXJDb2RlQXQoZSkpO3Q8ZS5sZW5ndGgtMSYmKHRoaXMuZWxlbWVudHMucHVzaCgiXG4iLmNoYXJDb2RlQXQoMCkpLHRoaXMuZmlyc3RDaGFyT2Zmc2V0QnlMaW5lTWludXNPbmVbdC10aGlzLmxpbmVSYW5nZS5zdGFydF09dGhpcy5lbGVtZW50cy5sZW5ndGgpfXRoaXMub2Zmc2V0QnlMaW5lLnB1c2goMCl9dG9TdHJpbmcoKXtyZXR1cm5gU2xpY2U6ICIke3RoaXMudGV4dH0iYH1nZXQgdGV4dCgpe3JldHVyblsuLi50aGlzLmVsZW1lbnRzXS5tYXAoKGU9PlN0cmluZy5mcm9tQ2hhckNvZGUoZSkpKS5qb2luKCIiKX1nZXRFbGVtZW50KGUpe3JldHVybiB0aGlzLmVsZW1lbnRzW2VdfWdldCBsZW5ndGgoKXtyZXR1cm4gdGhpcy5lbGVtZW50cy5sZW5ndGh9Z2V0Qm91bmRhcnlTY29yZShlKXtjb25zdCB0PU5yKGU+MD90aGlzLmVsZW1lbnRzW2UtMV06LTEpLG49TnIoZTx0aGlzLmVsZW1lbnRzLmxlbmd0aD90aGlzLmVsZW1lbnRzW2VdOi0xKTtpZig2PT09dCYmNz09PW4pcmV0dXJuIDA7bGV0IHI9MDtyZXR1cm4gdCE9PW4mJihyKz0xMCwxPT09biYmKHIrPTEpKSxyKz1Tcih0KSxyKz1TcihuKSxyfXRyYW5zbGF0ZU9mZnNldChlKXtpZih0aGlzLmxpbmVSYW5nZS5pc0VtcHR5KXJldHVybiBuZXcgcnQodGhpcy5saW5lUmFuZ2Uuc3RhcnQrMSwxKTtsZXQgdD0wLG49dGhpcy5maXJzdENoYXJPZmZzZXRCeUxpbmVNaW51c09uZS5sZW5ndGg7Zm9yKDt0PG47KXtjb25zdCByPU1hdGguZmxvb3IoKHQrbikvMik7dGhpcy5maXJzdENoYXJPZmZzZXRCeUxpbmVNaW51c09uZVtyXT5lP249cjp0PXIrMX1jb25zdCByPTA9PT10PzA6dGhpcy5maXJzdENoYXJPZmZzZXRCeUxpbmVNaW51c09uZVt0LTFdO3JldHVybiBuZXcgcnQodGhpcy5saW5lUmFuZ2Uuc3RhcnQrdCsxLGUtcisxK3RoaXMub2Zmc2V0QnlMaW5lW3RdKX10cmFuc2xhdGVSYW5nZShlKXtyZXR1cm4gaXQuZnJvbVBvc2l0aW9ucyh0aGlzLnRyYW5zbGF0ZU9mZnNldChlLnN0YXJ0KSx0aGlzLnRyYW5zbGF0ZU9mZnNldChlLmVuZEV4Y2x1c2l2ZSkpfWZpbmRXb3JkQ29udGFpbmluZyhlKXtpZihlPDB8fGU+PXRoaXMuZWxlbWVudHMubGVuZ3RoKXJldHVybjtpZighTHIodGhpcy5lbGVtZW50c1tlXSkpcmV0dXJuO2xldCB0PWU7Zm9yKDt0PjAmJkxyKHRoaXMuZWxlbWVudHNbdC0xXSk7KXQtLTtsZXQgbj1lO2Zvcig7bjx0aGlzLmVsZW1lbnRzLmxlbmd0aCYmTHIodGhpcy5lbGVtZW50c1tuXSk7KW4rKztyZXR1cm4gbmV3IG9yKHQsbil9fWZ1bmN0aW9uIExyKGUpe3JldHVybiBlPj05NyYmZTw9MTIyfHxlPj02NSYmZTw9OTB8fGU+PTQ4JiZlPD01N31jb25zdCB3cj17MDowLDE6MCwyOjAsMzoxMCw0OjIsNTozLDY6MTAsNzoxMH07ZnVuY3Rpb24gU3IoZSl7cmV0dXJuIHdyW2VdfWZ1bmN0aW9uIE5yKGUpe3JldHVybiAxMD09PWU/NzoxMz09PWU/NjpmdW5jdGlvbihlKXtyZXR1cm4gMzI9PT1lfHw5PT09ZX0oZSk/NTplPj05NyYmZTw9MTIyPzA6ZT49NjUmJmU8PTkwPzE6ZT49NDgmJmU8PTU3PzI6LTE9PT1lPzM6NH1jb25zdCBFcj17bGVnYWN5Om5ldyBjbGFzc3tjb21wdXRlRGlmZihlLHQsbil7dmFyIHI7Y29uc3QgaT1uZXcgbnIoZSx0LHttYXhDb21wdXRhdGlvblRpbWU6bi5tYXhDb21wdXRhdGlvblRpbWVNcyxzaG91bGRJZ25vcmVUcmltV2hpdGVzcGFjZTpuLmlnbm9yZVRyaW1XaGl0ZXNwYWNlLHNob3VsZENvbXB1dGVDaGFyQ2hhbmdlczohMCxzaG91bGRNYWtlUHJldHR5RGlmZjohMCxzaG91bGRQb3N0UHJvY2Vzc0NoYXJDaGFuZ2VzOiEwfSkuY29tcHV0ZURpZmYoKSxzPVtdO2xldCBvPW51bGw7Zm9yKGNvbnN0IGUgb2YgaS5jaGFuZ2VzKXtsZXQgdCxuO3Q9MD09PWUub3JpZ2luYWxFbmRMaW5lTnVtYmVyP25ldyBqbihlLm9yaWdpbmFsU3RhcnRMaW5lTnVtYmVyKzEsZS5vcmlnaW5hbFN0YXJ0TGluZU51bWJlcisxKTpuZXcgam4oZS5vcmlnaW5hbFN0YXJ0TGluZU51bWJlcixlLm9yaWdpbmFsRW5kTGluZU51bWJlcisxKSxuPTA9PT1lLm1vZGlmaWVkRW5kTGluZU51bWJlcj9uZXcgam4oZS5tb2RpZmllZFN0YXJ0TGluZU51bWJlcisxLGUubW9kaWZpZWRTdGFydExpbmVOdW1iZXIrMSk6bmV3IGpuKGUubW9kaWZpZWRTdGFydExpbmVOdW1iZXIsZS5tb2RpZmllZEVuZExpbmVOdW1iZXIrMSk7bGV0IGk9bmV3IFluKHQsbixudWxsPT09KHI9ZS5jaGFyQ2hhbmdlcyl8fHZvaWQgMD09PXI/dm9pZCAwOnIubWFwKChlPT5uZXcgUW4obmV3IGl0KGUub3JpZ2luYWxTdGFydExpbmVOdW1iZXIsZS5vcmlnaW5hbFN0YXJ0Q29sdW1uLGUub3JpZ2luYWxFbmRMaW5lTnVtYmVyLGUub3JpZ2luYWxFbmRDb2x1bW4pLG5ldyBpdChlLm1vZGlmaWVkU3RhcnRMaW5lTnVtYmVyLGUubW9kaWZpZWRTdGFydENvbHVtbixlLm1vZGlmaWVkRW5kTGluZU51bWJlcixlLm1vZGlmaWVkRW5kQ29sdW1uKSkpKSk7byYmKG8ubW9kaWZpZWRSYW5nZS5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlIT09aS5tb2RpZmllZFJhbmdlLnN0YXJ0TGluZU51bWJlciYmby5vcmlnaW5hbFJhbmdlLmVuZExpbmVOdW1iZXJFeGNsdXNpdmUhPT1pLm9yaWdpbmFsUmFuZ2Uuc3RhcnRMaW5lTnVtYmVyfHwoaT1uZXcgWW4oby5vcmlnaW5hbFJhbmdlLmpvaW4oaS5vcmlnaW5hbFJhbmdlKSxvLm1vZGlmaWVkUmFuZ2Uuam9pbihpLm1vZGlmaWVkUmFuZ2UpLG8uaW5uZXJDaGFuZ2VzJiZpLmlubmVyQ2hhbmdlcz9vLmlubmVyQ2hhbmdlcy5jb25jYXQoaS5pbm5lckNoYW5nZXMpOnZvaWQgMCkscy5wb3AoKSkpLHMucHVzaChpKSxvPWl9cmV0dXJuIFVuKCgoKT0+V24ocywoKGUsdCk9PnQub3JpZ2luYWxSYW5nZS5zdGFydExpbmVOdW1iZXItZS5vcmlnaW5hbFJhbmdlLmVuZExpbmVOdW1iZXJFeGNsdXNpdmU9PXQubW9kaWZpZWRSYW5nZS5zdGFydExpbmVOdW1iZXItZS5tb2RpZmllZFJhbmdlLmVuZExpbmVOdW1iZXJFeGNsdXNpdmUmJmUub3JpZ2luYWxSYW5nZS5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlPHQub3JpZ2luYWxSYW5nZS5zdGFydExpbmVOdW1iZXImJmUubW9kaWZpZWRSYW5nZS5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlPHQubW9kaWZpZWRSYW5nZS5zdGFydExpbmVOdW1iZXIpKSkpLG5ldyBHbihzLGkucXVpdEVhcmx5KX19LGFkdmFuY2VkOm5ldyBjbGFzc3tjb25zdHJ1Y3Rvcigpe3RoaXMuZHluYW1pY1Byb2dyYW1taW5nRGlmZmluZz1uZXcgZHIsdGhpcy5teWVyc0RpZmZpbmdBbGdvcml0aG09bmV3IGZyfWNvbXB1dGVEaWZmKGUsdCxuKXtjb25zdCByPTA9PT1uLm1heENvbXB1dGF0aW9uVGltZU1zP3VyLmluc3RhbmNlOm5ldyBocihuLm1heENvbXB1dGF0aW9uVGltZU1zKSxpPSFuLmlnbm9yZVRyaW1XaGl0ZXNwYWNlLHM9bmV3IE1hcDtmdW5jdGlvbiBvKGUpe2xldCB0PXMuZ2V0KGUpO3JldHVybiB2b2lkIDA9PT10JiYodD1zLnNpemUscy5zZXQoZSx0KSksdH1jb25zdCBhPWUubWFwKChlPT5vKGUudHJpbSgpKSkpLGw9dC5tYXAoKGU9Pm8oZS50cmltKCkpKSksdT1uZXcgQ3IoYSxlKSxoPW5ldyBDcihsLHQpLGM9KCgpPT51Lmxlbmd0aCtoLmxlbmd0aDwxNTAwP3RoaXMuZHluYW1pY1Byb2dyYW1taW5nRGlmZmluZy5jb21wdXRlKHUsaCxyLCgobixyKT0+ZVtuXT09PXRbcl0/MD09PXRbcl0ubGVuZ3RoPy4xOjErTWF0aC5sb2coMSt0W3JdLmxlbmd0aCk6Ljk5KSk6dGhpcy5teWVyc0RpZmZpbmdBbGdvcml0aG0uY29tcHV0ZSh1LGgpKSgpO2xldCBkPWMuZGlmZnMsbT1jLmhpdFRpbWVvdXQ7ZD1tcih1LGgsZCk7Y29uc3QgZz1bXSxmPW49PntpZihpKWZvcihsZXQgcz0wO3M8bjtzKyspe2NvbnN0IG49cCtzLG89YitzO2lmKGVbbl0hPT10W29dKXtjb25zdCBzPXRoaXMucmVmaW5lRGlmZihlLHQsbmV3IGxyKG5ldyBvcihuLG4rMSksbmV3IG9yKG8sbysxKSkscixpKTtmb3IoY29uc3QgZSBvZiBzLm1hcHBpbmdzKWcucHVzaChlKTtzLmhpdFRpbWVvdXQmJihtPSEwKX19fTtsZXQgcD0wLGI9MDtmb3IoY29uc3QgbiBvZiBkKXtVbigoKCk9Pm4uc2VxMVJhbmdlLnN0YXJ0LXA9PW4uc2VxMlJhbmdlLnN0YXJ0LWIpKTtmKG4uc2VxMVJhbmdlLnN0YXJ0LXApLHA9bi5zZXExUmFuZ2UuZW5kRXhjbHVzaXZlLGI9bi5zZXEyUmFuZ2UuZW5kRXhjbHVzaXZlO2NvbnN0IHM9dGhpcy5yZWZpbmVEaWZmKGUsdCxuLHIsaSk7cy5oaXRUaW1lb3V0JiYobT0hMCk7Zm9yKGNvbnN0IGUgb2Ygcy5tYXBwaW5ncylnLnB1c2goZSl9ZihlLmxlbmd0aC1wKTtjb25zdCBfPWZ1bmN0aW9uKGUsdCxuKXtjb25zdCByPVtdO2Zvcihjb25zdCBpIG9mIGZ1bmN0aW9uKihlLHQpe2xldCBuLHI7Zm9yKGNvbnN0IGkgb2YgZSl2b2lkIDAhPT1yJiZ0KHIsaSk/bi5wdXNoKGkpOihuJiYoeWllbGQgbiksbj1baV0pLHI9aTtuJiYoeWllbGQgbil9KGUubWFwKChlPT5mdW5jdGlvbihlLHQsbil7bGV0IHI9MCxpPTA7ZS5tb2RpZmllZFJhbmdlLnN0YXJ0Q29sdW1uLTE+PW5bZS5tb2RpZmllZFJhbmdlLnN0YXJ0TGluZU51bWJlci0xXS5sZW5ndGgmJmUub3JpZ2luYWxSYW5nZS5zdGFydENvbHVtbi0xPj10W2Uub3JpZ2luYWxSYW5nZS5zdGFydExpbmVOdW1iZXItMV0ubGVuZ3RoJiYocj0xKTsxPT09ZS5tb2RpZmllZFJhbmdlLmVuZENvbHVtbiYmMT09PWUub3JpZ2luYWxSYW5nZS5lbmRDb2x1bW4mJmUub3JpZ2luYWxSYW5nZS5zdGFydExpbmVOdW1iZXIrcjw9ZS5vcmlnaW5hbFJhbmdlLmVuZExpbmVOdW1iZXImJmUubW9kaWZpZWRSYW5nZS5zdGFydExpbmVOdW1iZXIrcjw9ZS5tb2RpZmllZFJhbmdlLmVuZExpbmVOdW1iZXImJihpPS0xKTtjb25zdCBzPW5ldyBqbihlLm9yaWdpbmFsUmFuZ2Uuc3RhcnRMaW5lTnVtYmVyK3IsZS5vcmlnaW5hbFJhbmdlLmVuZExpbmVOdW1iZXIrMStpKSxvPW5ldyBqbihlLm1vZGlmaWVkUmFuZ2Uuc3RhcnRMaW5lTnVtYmVyK3IsZS5tb2RpZmllZFJhbmdlLmVuZExpbmVOdW1iZXIrMStpKTtyZXR1cm4gbmV3IFluKHMsbyxbZV0pfShlLHQsbikpKSwoKGUsdCk9PmUub3JpZ2luYWxSYW5nZS5vdmVybGFwT3JUb3VjaCh0Lm9yaWdpbmFsUmFuZ2UpfHxlLm1vZGlmaWVkUmFuZ2Uub3ZlcmxhcE9yVG91Y2godC5tb2RpZmllZFJhbmdlKSkpKXtjb25zdCBlPWlbMF0sdD1pW2kubGVuZ3RoLTFdO3IucHVzaChuZXcgWW4oZS5vcmlnaW5hbFJhbmdlLmpvaW4odC5vcmlnaW5hbFJhbmdlKSxlLm1vZGlmaWVkUmFuZ2Uuam9pbih0Lm1vZGlmaWVkUmFuZ2UpLGkubWFwKChlPT5lLmlubmVyQ2hhbmdlc1swXSkpKSl9cmV0dXJuIFVuKCgoKT0+V24ociwoKGUsdCk9PnQub3JpZ2luYWxSYW5nZS5zdGFydExpbmVOdW1iZXItZS5vcmlnaW5hbFJhbmdlLmVuZExpbmVOdW1iZXJFeGNsdXNpdmU9PXQubW9kaWZpZWRSYW5nZS5zdGFydExpbmVOdW1iZXItZS5tb2RpZmllZFJhbmdlLmVuZExpbmVOdW1iZXJFeGNsdXNpdmUmJmUub3JpZ2luYWxSYW5nZS5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlPHQub3JpZ2luYWxSYW5nZS5zdGFydExpbmVOdW1iZXImJmUubW9kaWZpZWRSYW5nZS5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlPHQubW9kaWZpZWRSYW5nZS5zdGFydExpbmVOdW1iZXIpKSkpLHJ9KGcsZSx0KTtyZXR1cm4gbmV3IEduKF8sbSl9cmVmaW5lRGlmZihlLHQsbixyLGkpe2NvbnN0IHM9bmV3IHZyKGUsbi5zZXExUmFuZ2UsaSksbz1uZXcgdnIodCxuLnNlcTJSYW5nZSxpKSxhPXMubGVuZ3RoK28ubGVuZ3RoPDUwMD90aGlzLmR5bmFtaWNQcm9ncmFtbWluZ0RpZmZpbmcuY29tcHV0ZShzLG8scik6dGhpcy5teWVyc0RpZmZpbmdBbGdvcml0aG0uY29tcHV0ZShzLG8scik7bGV0IGw9YS5kaWZmcztsPW1yKHMsbyxsKSxsPWZ1bmN0aW9uKGUsdCxuKXtjb25zdCByPVtdO2xldCBpO2Z1bmN0aW9uIHMoKXtpZighaSlyZXR1cm47Y29uc3QgZT1pLnMxUmFuZ2UubGVuZ3RoLWkuZGVsZXRlZDtpLnMyUmFuZ2UubGVuZ3RoLGkuYWRkZWQsTWF0aC5tYXgoaS5kZWxldGVkLGkuYWRkZWQpKyhpLmNvdW50LTEpPmUmJnIucHVzaChuZXcgbHIoaS5zMVJhbmdlLGkuczJSYW5nZSkpLGk9dm9pZCAwfWZvcihjb25zdCBvIG9mIG4pe2Z1bmN0aW9uIGEoZSx0KXt2YXIgbixyLGEsbDtpZighaXx8IWkuczFSYW5nZS5jb250YWluc1JhbmdlKGUpfHwhaS5zMlJhbmdlLmNvbnRhaW5zUmFuZ2UodCkpaWYoIWl8fGkuczFSYW5nZS5lbmRFeGNsdXNpdmU8ZS5zdGFydCYmaS5zMlJhbmdlLmVuZEV4Y2x1c2l2ZTx0LnN0YXJ0KXMoKSxpPXthZGRlZDowLGRlbGV0ZWQ6MCxjb3VudDowLHMxUmFuZ2U6ZSxzMlJhbmdlOnR9O2Vsc2V7Y29uc3Qgcz1vci50cnlDcmVhdGUoaS5zMVJhbmdlLmVuZEV4Y2x1c2l2ZSxlLnN0YXJ0KSxvPW9yLnRyeUNyZWF0ZShpLnMyUmFuZ2UuZW5kRXhjbHVzaXZlLHQuc3RhcnQpO2kuZGVsZXRlZCs9bnVsbCE9PShuPW51bGw9PXM/dm9pZCAwOnMubGVuZ3RoKSYmdm9pZCAwIT09bj9uOjAsaS5hZGRlZCs9bnVsbCE9PShyPW51bGw9PW8/dm9pZCAwOm8ubGVuZ3RoKSYmdm9pZCAwIT09cj9yOjAsaS5zMVJhbmdlPWkuczFSYW5nZS5qb2luKGUpLGkuczJSYW5nZT1pLnMyUmFuZ2Uuam9pbih0KX1jb25zdCB1PWUuaW50ZXJzZWN0KG8uc2VxMVJhbmdlKSxoPXQuaW50ZXJzZWN0KG8uc2VxMlJhbmdlKTtpLmNvdW50KyssaS5kZWxldGVkKz1udWxsIT09KGE9bnVsbD09dT92b2lkIDA6dS5sZW5ndGgpJiZ2b2lkIDAhPT1hP2E6MCxpLmFkZGVkKz1udWxsIT09KGw9bnVsbD09aD92b2lkIDA6aC5sZW5ndGgpJiZ2b2lkIDAhPT1sP2w6MH1jb25zdCBsPWUuZmluZFdvcmRDb250YWluaW5nKG8uc2VxMVJhbmdlLnN0YXJ0LTEpLHU9dC5maW5kV29yZENvbnRhaW5pbmcoby5zZXEyUmFuZ2Uuc3RhcnQtMSksaD1lLmZpbmRXb3JkQ29udGFpbmluZyhvLnNlcTFSYW5nZS5lbmRFeGNsdXNpdmUpLGM9dC5maW5kV29yZENvbnRhaW5pbmcoby5zZXEyUmFuZ2UuZW5kRXhjbHVzaXZlKTtsJiZoJiZ1JiZjJiZsLmVxdWFscyhoKSYmdS5lcXVhbHMoYyk/YShsLHUpOihsJiZ1JiZhKGwsdSksaCYmYyYmYShoLGMpKX1zKCk7cmV0dXJuIGZ1bmN0aW9uKGUsdCl7Y29uc3Qgbj1bXTtmb3IoO2UubGVuZ3RoPjB8fHQubGVuZ3RoPjA7KXtjb25zdCByPWVbMF0saT10WzBdO2xldCBzO3M9ciYmKCFpfHxyLnNlcTFSYW5nZS5zdGFydDxpLnNlcTFSYW5nZS5zdGFydCk/ZS5zaGlmdCgpOnQuc2hpZnQoKSxuLmxlbmd0aD4wJiZuW24ubGVuZ3RoLTFdLnNlcTFSYW5nZS5lbmRFeGNsdXNpdmU+PXMuc2VxMVJhbmdlLnN0YXJ0P25bbi5sZW5ndGgtMV09bltuLmxlbmd0aC0xXS5qb2luKHMpOm4ucHVzaChzKX1yZXR1cm4gbn0obixyKX0ocyxvLGwpLGw9ZnVuY3Rpb24oZSx0LG4pe2NvbnN0IHI9W107Zm9yKGNvbnN0IGUgb2Ygbil7Y29uc3QgdD1yW3IubGVuZ3RoLTFdO3QmJihlLnNlcTFSYW5nZS5zdGFydC10LnNlcTFSYW5nZS5lbmRFeGNsdXNpdmU8PTJ8fGUuc2VxMlJhbmdlLnN0YXJ0LXQuc2VxMlJhbmdlLmVuZEV4Y2x1c2l2ZTw9Mik/cltyLmxlbmd0aC0xXT1uZXcgbHIodC5zZXExUmFuZ2Uuam9pbihlLnNlcTFSYW5nZSksdC5zZXEyUmFuZ2Uuam9pbihlLnNlcTJSYW5nZSkpOnIucHVzaChlKX1yZXR1cm4gcn0oMCwwLGwpO3JldHVybnttYXBwaW5nczpsLm1hcCgoZT0+bmV3IFFuKHMudHJhbnNsYXRlUmFuZ2UoZS5zZXExUmFuZ2UpLG8udHJhbnNsYXRlUmFuZ2UoZS5zZXEyUmFuZ2UpKSkpLGhpdFRpbWVvdXQ6YS5oaXRUaW1lb3V0fX19fTtmdW5jdGlvbiBBcihlLHQpe2NvbnN0IG49TWF0aC5wb3coMTAsdCk7cmV0dXJuIE1hdGgucm91bmQoZSpuKS9ufWNsYXNzIFJye2NvbnN0cnVjdG9yKGUsdCxuLHI9MSl7dGhpcy5fcmdiYUJyYW5kPXZvaWQgMCx0aGlzLnI9MHxNYXRoLm1pbigyNTUsTWF0aC5tYXgoMCxlKSksdGhpcy5nPTB8TWF0aC5taW4oMjU1LE1hdGgubWF4KDAsdCkpLHRoaXMuYj0wfE1hdGgubWluKDI1NSxNYXRoLm1heCgwLG4pKSx0aGlzLmE9QXIoTWF0aC5tYXgoTWF0aC5taW4oMSxyKSwwKSwzKX1zdGF0aWMgZXF1YWxzKGUsdCl7cmV0dXJuIGUucj09PXQuciYmZS5nPT09dC5nJiZlLmI9PT10LmImJmUuYT09PXQuYX19Y2xhc3MgeHJ7Y29uc3RydWN0b3IoZSx0LG4scil7dGhpcy5faHNsYUJyYW5kPXZvaWQgMCx0aGlzLmg9MHxNYXRoLm1heChNYXRoLm1pbigzNjAsZSksMCksdGhpcy5zPUFyKE1hdGgubWF4KE1hdGgubWluKDEsdCksMCksMyksdGhpcy5sPUFyKE1hdGgubWF4KE1hdGgubWluKDEsbiksMCksMyksdGhpcy5hPUFyKE1hdGgubWF4KE1hdGgubWluKDEsciksMCksMyl9c3RhdGljIGVxdWFscyhlLHQpe3JldHVybiBlLmg9PT10LmgmJmUucz09PXQucyYmZS5sPT09dC5sJiZlLmE9PT10LmF9c3RhdGljIGZyb21SR0JBKGUpe2NvbnN0IHQ9ZS5yLzI1NSxuPWUuZy8yNTUscj1lLmIvMjU1LGk9ZS5hLHM9TWF0aC5tYXgodCxuLHIpLG89TWF0aC5taW4odCxuLHIpO2xldCBhPTAsbD0wO2NvbnN0IHU9KG8rcykvMixoPXMtbztpZihoPjApe3N3aXRjaChsPU1hdGgubWluKHU8PS41P2gvKDIqdSk6aC8oMi0yKnUpLDEpLHMpe2Nhc2UgdDphPShuLXIpL2grKG48cj82OjApO2JyZWFrO2Nhc2UgbjphPShyLXQpL2grMjticmVhaztjYXNlIHI6YT0odC1uKS9oKzR9YSo9NjAsYT1NYXRoLnJvdW5kKGEpfXJldHVybiBuZXcgeHIoYSxsLHUsaSl9c3RhdGljIF9odWUycmdiKGUsdCxuKXtyZXR1cm4gbjwwJiYobis9MSksbj4xJiYobi09MSksbjwxLzY/ZSs2Kih0LWUpKm46bjwuNT90Om48Mi8zP2UrKHQtZSkqKDIvMy1uKSo2OmV9c3RhdGljIHRvUkdCQShlKXtjb25zdCB0PWUuaC8zNjAse3M6bixsOnIsYTppfT1lO2xldCBzLG8sYTtpZigwPT09bilzPW89YT1yO2Vsc2V7Y29uc3QgZT1yPC41P3IqKDErbik6cituLXIqbixpPTIqci1lO3M9eHIuX2h1ZTJyZ2IoaSxlLHQrMS8zKSxvPXhyLl9odWUycmdiKGksZSx0KSxhPXhyLl9odWUycmdiKGksZSx0LTEvMyl9cmV0dXJuIG5ldyBScihNYXRoLnJvdW5kKDI1NSpzKSxNYXRoLnJvdW5kKDI1NSpvKSxNYXRoLnJvdW5kKDI1NSphKSxpKX19Y2xhc3MgTXJ7Y29uc3RydWN0b3IoZSx0LG4scil7dGhpcy5faHN2YUJyYW5kPXZvaWQgMCx0aGlzLmg9MHxNYXRoLm1heChNYXRoLm1pbigzNjAsZSksMCksdGhpcy5zPUFyKE1hdGgubWF4KE1hdGgubWluKDEsdCksMCksMyksdGhpcy52PUFyKE1hdGgubWF4KE1hdGgubWluKDEsbiksMCksMyksdGhpcy5hPUFyKE1hdGgubWF4KE1hdGgubWluKDEsciksMCksMyl9c3RhdGljIGVxdWFscyhlLHQpe3JldHVybiBlLmg9PT10LmgmJmUucz09PXQucyYmZS52PT09dC52JiZlLmE9PT10LmF9c3RhdGljIGZyb21SR0JBKGUpe2NvbnN0IHQ9ZS5yLzI1NSxuPWUuZy8yNTUscj1lLmIvMjU1LGk9TWF0aC5tYXgodCxuLHIpLHM9aS1NYXRoLm1pbih0LG4sciksbz0wPT09aT8wOnMvaTtsZXQgYTtyZXR1cm4gYT0wPT09cz8wOmk9PT10Pygobi1yKS9zJTYrNiklNjppPT09bj8oci10KS9zKzI6KHQtbikvcys0LG5ldyBNcihNYXRoLnJvdW5kKDYwKmEpLG8saSxlLmEpfXN0YXRpYyB0b1JHQkEoZSl7Y29uc3R7aDp0LHM6bix2OnIsYTppfT1lLHM9cipuLG89cyooMS1NYXRoLmFicyh0LzYwJTItMSkpLGE9ci1zO2xldFtsLHUsaF09WzAsMCwwXTtyZXR1cm4gdDw2MD8obD1zLHU9byk6dDwxMjA/KGw9byx1PXMpOnQ8MTgwPyh1PXMsaD1vKTp0PDI0MD8odT1vLGg9cyk6dDwzMDA/KGw9byxoPXMpOnQ8PTM2MCYmKGw9cyxoPW8pLGw9TWF0aC5yb3VuZCgyNTUqKGwrYSkpLHU9TWF0aC5yb3VuZCgyNTUqKHUrYSkpLGg9TWF0aC5yb3VuZCgyNTUqKGgrYSkpLG5ldyBScihsLHUsaCxpKX19Y2xhc3Mga3J7c3RhdGljIGZyb21IZXgoZSl7cmV0dXJuIGtyLkZvcm1hdC5DU1MucGFyc2VIZXgoZSl8fGtyLnJlZH1zdGF0aWMgZXF1YWxzKGUsdCl7cmV0dXJuIWUmJiF0fHwhKCFlfHwhdCkmJmUuZXF1YWxzKHQpfWdldCBoc2xhKCl7cmV0dXJuIHRoaXMuX2hzbGE/dGhpcy5faHNsYTp4ci5mcm9tUkdCQSh0aGlzLnJnYmEpfWdldCBoc3ZhKCl7cmV0dXJuIHRoaXMuX2hzdmE/dGhpcy5faHN2YTpNci5mcm9tUkdCQSh0aGlzLnJnYmEpfWNvbnN0cnVjdG9yKGUpe2lmKCFlKXRocm93IG5ldyBFcnJvcigiQ29sb3IgbmVlZHMgYSB2YWx1ZSIpO2lmKGUgaW5zdGFuY2VvZiBScil0aGlzLnJnYmE9ZTtlbHNlIGlmKGUgaW5zdGFuY2VvZiB4cil0aGlzLl9oc2xhPWUsdGhpcy5yZ2JhPXhyLnRvUkdCQShlKTtlbHNle2lmKCEoZSBpbnN0YW5jZW9mIE1yKSl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgY29sb3IgY3RvciBhcmd1bWVudCIpO3RoaXMuX2hzdmE9ZSx0aGlzLnJnYmE9TXIudG9SR0JBKGUpfX1lcXVhbHMoZSl7cmV0dXJuISFlJiZSci5lcXVhbHModGhpcy5yZ2JhLGUucmdiYSkmJnhyLmVxdWFscyh0aGlzLmhzbGEsZS5oc2xhKSYmTXIuZXF1YWxzKHRoaXMuaHN2YSxlLmhzdmEpfWdldFJlbGF0aXZlTHVtaW5hbmNlKCl7cmV0dXJuIEFyKC4yMTI2KmtyLl9yZWxhdGl2ZUx1bWluYW5jZUZvckNvbXBvbmVudCh0aGlzLnJnYmEucikrLjcxNTIqa3IuX3JlbGF0aXZlTHVtaW5hbmNlRm9yQ29tcG9uZW50KHRoaXMucmdiYS5nKSsuMDcyMiprci5fcmVsYXRpdmVMdW1pbmFuY2VGb3JDb21wb25lbnQodGhpcy5yZ2JhLmIpLDQpfXN0YXRpYyBfcmVsYXRpdmVMdW1pbmFuY2VGb3JDb21wb25lbnQoZSl7Y29uc3QgdD1lLzI1NTtyZXR1cm4gdDw9LjAzOTI4P3QvMTIuOTI6TWF0aC5wb3coKHQrLjA1NSkvMS4wNTUsMi40KX1pc0xpZ2h0ZXIoKXtyZXR1cm4oMjk5KnRoaXMucmdiYS5yKzU4Nyp0aGlzLnJnYmEuZysxMTQqdGhpcy5yZ2JhLmIpLzFlMz49MTI4fWlzTGlnaHRlclRoYW4oZSl7cmV0dXJuIHRoaXMuZ2V0UmVsYXRpdmVMdW1pbmFuY2UoKT5lLmdldFJlbGF0aXZlTHVtaW5hbmNlKCl9aXNEYXJrZXJUaGFuKGUpe3JldHVybiB0aGlzLmdldFJlbGF0aXZlTHVtaW5hbmNlKCk8ZS5nZXRSZWxhdGl2ZUx1bWluYW5jZSgpfWxpZ2h0ZW4oZSl7cmV0dXJuIG5ldyBrcihuZXcgeHIodGhpcy5oc2xhLmgsdGhpcy5oc2xhLnMsdGhpcy5oc2xhLmwrdGhpcy5oc2xhLmwqZSx0aGlzLmhzbGEuYSkpfWRhcmtlbihlKXtyZXR1cm4gbmV3IGtyKG5ldyB4cih0aGlzLmhzbGEuaCx0aGlzLmhzbGEucyx0aGlzLmhzbGEubC10aGlzLmhzbGEubCplLHRoaXMuaHNsYS5hKSl9dHJhbnNwYXJlbnQoZSl7Y29uc3R7cjp0LGc6bixiOnIsYTppfT10aGlzLnJnYmE7cmV0dXJuIG5ldyBrcihuZXcgUnIodCxuLHIsaSplKSl9aXNUcmFuc3BhcmVudCgpe3JldHVybiAwPT09dGhpcy5yZ2JhLmF9aXNPcGFxdWUoKXtyZXR1cm4gMT09PXRoaXMucmdiYS5hfW9wcG9zaXRlKCl7cmV0dXJuIG5ldyBrcihuZXcgUnIoMjU1LXRoaXMucmdiYS5yLDI1NS10aGlzLnJnYmEuZywyNTUtdGhpcy5yZ2JhLmIsdGhpcy5yZ2JhLmEpKX1tYWtlT3BhcXVlKGUpe2lmKHRoaXMuaXNPcGFxdWUoKXx8MSE9PWUucmdiYS5hKXJldHVybiB0aGlzO2NvbnN0e3I6dCxnOm4sYjpyLGE6aX09dGhpcy5yZ2JhO3JldHVybiBuZXcga3IobmV3IFJyKGUucmdiYS5yLWkqKGUucmdiYS5yLXQpLGUucmdiYS5nLWkqKGUucmdiYS5nLW4pLGUucmdiYS5iLWkqKGUucmdiYS5iLXIpLDEpKX10b1N0cmluZygpe3JldHVybiB0aGlzLl90b1N0cmluZ3x8KHRoaXMuX3RvU3RyaW5nPWtyLkZvcm1hdC5DU1MuZm9ybWF0KHRoaXMpKSx0aGlzLl90b1N0cmluZ31zdGF0aWMgZ2V0TGlnaHRlckNvbG9yKGUsdCxuKXtpZihlLmlzTGlnaHRlclRoYW4odCkpcmV0dXJuIGU7bj1ufHwuNTtjb25zdCByPWUuZ2V0UmVsYXRpdmVMdW1pbmFuY2UoKSxpPXQuZ2V0UmVsYXRpdmVMdW1pbmFuY2UoKTtyZXR1cm4gbj1uKihpLXIpL2ksZS5saWdodGVuKG4pfXN0YXRpYyBnZXREYXJrZXJDb2xvcihlLHQsbil7aWYoZS5pc0RhcmtlclRoYW4odCkpcmV0dXJuIGU7bj1ufHwuNTtjb25zdCByPWUuZ2V0UmVsYXRpdmVMdW1pbmFuY2UoKTtyZXR1cm4gbj1uKihyLXQuZ2V0UmVsYXRpdmVMdW1pbmFuY2UoKSkvcixlLmRhcmtlbihuKX19ZnVuY3Rpb24gT3IoZSl7Y29uc3QgdD1bXTtmb3IoY29uc3QgbiBvZiBlKXtjb25zdCBlPU51bWJlcihuKTsoZXx8MD09PWUmJiIiIT09bi5yZXBsYWNlKC9ccy9nLCIiKSkmJnQucHVzaChlKX1yZXR1cm4gdH1mdW5jdGlvbiBUcihlLHQsbixyKXtyZXR1cm57cmVkOmUvMjU1LGJsdWU6bi8yNTUsZ3JlZW46dC8yNTUsYWxwaGE6cn19ZnVuY3Rpb24gSXIoZSx0KXtjb25zdCBuPXQuaW5kZXgscj10WzBdLmxlbmd0aDtpZighbilyZXR1cm47Y29uc3QgaT1lLnBvc2l0aW9uQXQobik7cmV0dXJue3N0YXJ0TGluZU51bWJlcjppLmxpbmVOdW1iZXIsc3RhcnRDb2x1bW46aS5jb2x1bW4sZW5kTGluZU51bWJlcjppLmxpbmVOdW1iZXIsZW5kQ29sdW1uOmkuY29sdW1uK3J9fWZ1bmN0aW9uIFByKGUsdCl7aWYoIWUpcmV0dXJuO2NvbnN0IG49a3IuRm9ybWF0LkNTUy5wYXJzZUhleCh0KTtyZXR1cm4gbj97cmFuZ2U6ZSxjb2xvcjpUcihuLnJnYmEucixuLnJnYmEuZyxuLnJnYmEuYixuLnJnYmEuYSl9OnZvaWQgMH1mdW5jdGlvbiBEcihlLHQsbil7aWYoIWV8fDEhPT10Lmxlbmd0aClyZXR1cm47Y29uc3Qgcj1Pcih0WzBdLnZhbHVlcygpKTtyZXR1cm57cmFuZ2U6ZSxjb2xvcjpUcihyWzBdLHJbMV0sclsyXSxuP3JbM106MSl9fWZ1bmN0aW9uIEZyKGUsdCxuKXtpZighZXx8MSE9PXQubGVuZ3RoKXJldHVybjtjb25zdCByPU9yKHRbMF0udmFsdWVzKCkpLGk9bmV3IGtyKG5ldyB4cihyWzBdLHJbMV0vMTAwLHJbMl0vMTAwLG4/clszXToxKSk7cmV0dXJue3JhbmdlOmUsY29sb3I6VHIoaS5yZ2JhLnIsaS5yZ2JhLmcsaS5yZ2JhLmIsaS5yZ2JhLmEpfX1mdW5jdGlvbiBLcihlLHQpe3JldHVybiJzdHJpbmciPT10eXBlb2YgZT9bLi4uZS5tYXRjaEFsbCh0KV06ZS5maW5kTWF0Y2hlcyh0KX1mdW5jdGlvbiBWcihlKXtyZXR1cm4gZSYmImZ1bmN0aW9uIj09dHlwZW9mIGUuZ2V0VmFsdWUmJiJmdW5jdGlvbiI9PXR5cGVvZiBlLnBvc2l0aW9uQXQ/ZnVuY3Rpb24oZSl7Y29uc3QgdD1bXSxuPUtyKGUsL1xiKHJnYnxyZ2JhfGhzbHxoc2xhKShcKFswLTlccywuXCVdKlwpKXwoIykoW0EtRmEtZjAtOV17Nn0pXGJ8KCMpKFtBLUZhLWYwLTldezh9KVxiL2dtKTtpZihuLmxlbmd0aD4wKWZvcihjb25zdCByIG9mIG4pe2NvbnN0IG49ci5maWx0ZXIoKGU9PnZvaWQgMCE9PWUpKSxpPW5bMV0scz1uWzJdO2lmKCFzKWNvbnRpbnVlO2xldCBvO2lmKCJyZ2IiPT09aSl7Y29uc3QgdD0vXlwoXHMqKDI1WzAtNV18MlswLTRdWzAtOV18MVswLTldezJ9fFsxLTldWzAtOV18WzAtOV0pXHMqLFxzKigyNVswLTVdfDJbMC00XVswLTldfDFbMC05XXsyfXxbMS05XVswLTldfFswLTldKVxzKixccyooMjVbMC01XXwyWzAtNF1bMC05XXwxWzAtOV17Mn18WzEtOV1bMC05XXxbMC05XSlccypcKSQvZ207bz1EcihJcihlLHIpLEtyKHMsdCksITEpfWVsc2UgaWYoInJnYmEiPT09aSl7Y29uc3QgdD0vXlwoXHMqKDI1WzAtNV18MlswLTRdWzAtOV18MVswLTldezJ9fFsxLTldWzAtOV18WzAtOV0pXHMqLFxzKigyNVswLTVdfDJbMC00XVswLTldfDFbMC05XXsyfXxbMS05XVswLTldfFswLTldKVxzKixccyooMjVbMC01XXwyWzAtNF1bMC05XXwxWzAtOV17Mn18WzEtOV1bMC05XXxbMC05XSlccyosXHMqKDBbLl1bMC05XSt8Wy5dWzAtOV0rfFswMV1bLl18WzAxXSlccypcKSQvZ207bz1EcihJcihlLHIpLEtyKHMsdCksITApfWVsc2UgaWYoImhzbCI9PT1pKXtjb25zdCB0PS9eXChccyooMzZbMF18M1swLTVdWzAtOV18WzEyXVswLTldWzAtOV18WzEtOV0/WzAtOV0pXHMqLFxzKigxMDB8XGR7MSwyfVsuXVxkKnxcZHsxLDJ9KSVccyosXHMqKDEwMHxcZHsxLDJ9Wy5dXGQqfFxkezEsMn0pJVxzKlwpJC9nbTtvPUZyKElyKGUsciksS3Iocyx0KSwhMSl9ZWxzZSBpZigiaHNsYSI9PT1pKXtjb25zdCB0PS9eXChccyooMzZbMF18M1swLTVdWzAtOV18WzEyXVswLTldWzAtOV18WzEtOV0/WzAtOV0pXHMqLFxzKigxMDB8XGR7MSwyfVsuXVxkKnxcZHsxLDJ9KSVccyosXHMqKDEwMHxcZHsxLDJ9Wy5dXGQqfFxkezEsMn0pJVxzKixccyooMFsuXVswLTldK3xbLl1bMC05XSt8WzAxXVsuXXxbMDFdKVxzKlwpJC9nbTtvPUZyKElyKGUsciksS3Iocyx0KSwhMCl9ZWxzZSIjIj09PWkmJihvPVByKElyKGUsciksaStzKSk7byYmdC5wdXNoKG8pfXJldHVybiB0fShlKTpbXX1rci53aGl0ZT1uZXcga3IobmV3IFJyKDI1NSwyNTUsMjU1LDEpKSxrci5ibGFjaz1uZXcga3IobmV3IFJyKDAsMCwwLDEpKSxrci5yZWQ9bmV3IGtyKG5ldyBScigyNTUsMCwwLDEpKSxrci5ibHVlPW5ldyBrcihuZXcgUnIoMCwwLDI1NSwxKSksa3IuZ3JlZW49bmV3IGtyKG5ldyBScigwLDI1NSwwLDEpKSxrci5jeWFuPW5ldyBrcihuZXcgUnIoMCwyNTUsMjU1LDEpKSxrci5saWdodGdyZXk9bmV3IGtyKG5ldyBScigyMTEsMjExLDIxMSwxKSksa3IudHJhbnNwYXJlbnQ9bmV3IGtyKG5ldyBScigwLDAsMCwwKSksZnVuY3Rpb24oZSl7dmFyIHQ7KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIG4oZSl7Y29uc3QgdD1lLnRvU3RyaW5nKDE2KTtyZXR1cm4gMiE9PXQubGVuZ3RoPyIwIit0OnR9ZnVuY3Rpb24gcihlKXtzd2l0Y2goZSl7Y2FzZSA0ODpyZXR1cm4gMDtjYXNlIDQ5OnJldHVybiAxO2Nhc2UgNTA6cmV0dXJuIDI7Y2FzZSA1MTpyZXR1cm4gMztjYXNlIDUyOnJldHVybiA0O2Nhc2UgNTM6cmV0dXJuIDU7Y2FzZSA1NDpyZXR1cm4gNjtjYXNlIDU1OnJldHVybiA3O2Nhc2UgNTY6cmV0dXJuIDg7Y2FzZSA1NzpyZXR1cm4gOTtjYXNlIDk3OmNhc2UgNjU6cmV0dXJuIDEwO2Nhc2UgOTg6Y2FzZSA2NjpyZXR1cm4gMTE7Y2FzZSA5OTpjYXNlIDY3OnJldHVybiAxMjtjYXNlIDEwMDpjYXNlIDY4OnJldHVybiAxMztjYXNlIDEwMTpjYXNlIDY5OnJldHVybiAxNDtjYXNlIDEwMjpjYXNlIDcwOnJldHVybiAxNX1yZXR1cm4gMH10LmZvcm1hdFJHQj1mdW5jdGlvbih0KXtyZXR1cm4gMT09PXQucmdiYS5hP2ByZ2IoJHt0LnJnYmEucn0sICR7dC5yZ2JhLmd9LCAke3QucmdiYS5ifSlgOmUuRm9ybWF0LkNTUy5mb3JtYXRSR0JBKHQpfSx0LmZvcm1hdFJHQkE9ZnVuY3Rpb24oZSl7cmV0dXJuYHJnYmEoJHtlLnJnYmEucn0sICR7ZS5yZ2JhLmd9LCAke2UucmdiYS5ifSwgJHsrZS5yZ2JhLmEudG9GaXhlZCgyKX0pYH0sdC5mb3JtYXRIU0w9ZnVuY3Rpb24odCl7cmV0dXJuIDE9PT10LmhzbGEuYT9gaHNsKCR7dC5oc2xhLmh9LCAkeygxMDAqdC5oc2xhLnMpLnRvRml4ZWQoMil9JSwgJHsoMTAwKnQuaHNsYS5sKS50b0ZpeGVkKDIpfSUpYDplLkZvcm1hdC5DU1MuZm9ybWF0SFNMQSh0KX0sdC5mb3JtYXRIU0xBPWZ1bmN0aW9uKGUpe3JldHVybmBoc2xhKCR7ZS5oc2xhLmh9LCAkeygxMDAqZS5oc2xhLnMpLnRvRml4ZWQoMil9JSwgJHsoMTAwKmUuaHNsYS5sKS50b0ZpeGVkKDIpfSUsICR7ZS5oc2xhLmEudG9GaXhlZCgyKX0pYH0sdC5mb3JtYXRIZXg9ZnVuY3Rpb24oZSl7cmV0dXJuYCMke24oZS5yZ2JhLnIpfSR7bihlLnJnYmEuZyl9JHtuKGUucmdiYS5iKX1gfSx0LmZvcm1hdEhleEE9ZnVuY3Rpb24odCxyPSExKXtyZXR1cm4gciYmMT09PXQucmdiYS5hP2UuRm9ybWF0LkNTUy5mb3JtYXRIZXgodCk6YCMke24odC5yZ2JhLnIpfSR7bih0LnJnYmEuZyl9JHtuKHQucmdiYS5iKX0ke24oTWF0aC5yb3VuZCgyNTUqdC5yZ2JhLmEpKX1gfSx0LmZvcm1hdD1mdW5jdGlvbih0KXtyZXR1cm4gdC5pc09wYXF1ZSgpP2UuRm9ybWF0LkNTUy5mb3JtYXRIZXgodCk6ZS5Gb3JtYXQuQ1NTLmZvcm1hdFJHQkEodCl9LHQucGFyc2VIZXg9ZnVuY3Rpb24odCl7Y29uc3Qgbj10Lmxlbmd0aDtpZigwPT09bilyZXR1cm4gbnVsbDtpZigzNSE9PXQuY2hhckNvZGVBdCgwKSlyZXR1cm4gbnVsbDtpZig3PT09bil7Y29uc3Qgbj0xNipyKHQuY2hhckNvZGVBdCgxKSkrcih0LmNoYXJDb2RlQXQoMikpLGk9MTYqcih0LmNoYXJDb2RlQXQoMykpK3IodC5jaGFyQ29kZUF0KDQpKSxzPTE2KnIodC5jaGFyQ29kZUF0KDUpKStyKHQuY2hhckNvZGVBdCg2KSk7cmV0dXJuIG5ldyBlKG5ldyBScihuLGkscywxKSl9aWYoOT09PW4pe2NvbnN0IG49MTYqcih0LmNoYXJDb2RlQXQoMSkpK3IodC5jaGFyQ29kZUF0KDIpKSxpPTE2KnIodC5jaGFyQ29kZUF0KDMpKStyKHQuY2hhckNvZGVBdCg0KSkscz0xNipyKHQuY2hhckNvZGVBdCg1KSkrcih0LmNoYXJDb2RlQXQoNikpLG89MTYqcih0LmNoYXJDb2RlQXQoNykpK3IodC5jaGFyQ29kZUF0KDgpKTtyZXR1cm4gbmV3IGUobmV3IFJyKG4saSxzLG8vMjU1KSl9aWYoND09PW4pe2NvbnN0IG49cih0LmNoYXJDb2RlQXQoMSkpLGk9cih0LmNoYXJDb2RlQXQoMikpLHM9cih0LmNoYXJDb2RlQXQoMykpO3JldHVybiBuZXcgZShuZXcgUnIoMTYqbituLDE2KmkraSwxNipzK3MpKX1pZig1PT09bil7Y29uc3Qgbj1yKHQuY2hhckNvZGVBdCgxKSksaT1yKHQuY2hhckNvZGVBdCgyKSkscz1yKHQuY2hhckNvZGVBdCgzKSksbz1yKHQuY2hhckNvZGVBdCg0KSk7cmV0dXJuIG5ldyBlKG5ldyBScigxNipuK24sMTYqaStpLDE2KnMrcywoMTYqbytvKS8yNTUpKX1yZXR1cm4gbnVsbH19KSgodD1lLkZvcm1hdHx8KGUuRm9ybWF0PXt9KSkuQ1NTfHwodC5DU1M9e30pKX0oa3J8fChrcj17fSkpO3ZhciBxcj1mdW5jdGlvbihlLHQsbixyKXtyZXR1cm4gbmV3KG58fChuPVByb21pc2UpKSgoZnVuY3Rpb24oaSxzKXtmdW5jdGlvbiBvKGUpe3RyeXtsKHIubmV4dChlKSl9Y2F0Y2goZSl7cyhlKX19ZnVuY3Rpb24gYShlKXt0cnl7bChyLnRocm93KGUpKX1jYXRjaChlKXtzKGUpfX1mdW5jdGlvbiBsKGUpe3ZhciB0O2UuZG9uZT9pKGUudmFsdWUpOih0PWUudmFsdWUsdCBpbnN0YW5jZW9mIG4/dDpuZXcgbigoZnVuY3Rpb24oZSl7ZSh0KX0pKSkudGhlbihvLGEpfWwoKHI9ci5hcHBseShlLHR8fFtdKSkubmV4dCgpKX0pKX07Y2xhc3MgQnIgZXh0ZW5kcyBodHtnZXQgdXJpKCl7cmV0dXJuIHRoaXMuX3VyaX1nZXQgZW9sKCl7cmV0dXJuIHRoaXMuX2VvbH1nZXRWYWx1ZSgpe3JldHVybiB0aGlzLmdldFRleHQoKX1maW5kTWF0Y2hlcyhlKXtjb25zdCB0PVtdO2ZvcihsZXQgbj0wO248dGhpcy5fbGluZXMubGVuZ3RoO24rKyl7Y29uc3Qgcj10aGlzLl9saW5lc1tuXSxpPXRoaXMub2Zmc2V0QXQobmV3IHJ0KG4rMSwxKSkscz1yLm1hdGNoQWxsKGUpO2Zvcihjb25zdCBlIG9mIHMpKGUuaW5kZXh8fDA9PT1lLmluZGV4KSYmKGUuaW5kZXg9ZS5pbmRleCtpKSx0LnB1c2goZSl9cmV0dXJuIHR9Z2V0TGluZXNDb250ZW50KCl7cmV0dXJuIHRoaXMuX2xpbmVzLnNsaWNlKDApfWdldExpbmVDb3VudCgpe3JldHVybiB0aGlzLl9saW5lcy5sZW5ndGh9Z2V0TGluZUNvbnRlbnQoZSl7cmV0dXJuIHRoaXMuX2xpbmVzW2UtMV19Z2V0V29yZEF0UG9zaXRpb24oZSx0KXtjb25zdCBuPW10KGUuY29sdW1uLGZ1bmN0aW9uKGUpe2xldCB0PWN0O2lmKGUmJmUgaW5zdGFuY2VvZiBSZWdFeHApaWYoZS5nbG9iYWwpdD1lO2Vsc2V7bGV0IG49ImciO2UuaWdub3JlQ2FzZSYmKG4rPSJpIiksZS5tdWx0aWxpbmUmJihuKz0ibSIpLGUudW5pY29kZSYmKG4rPSJ1IiksdD1uZXcgUmVnRXhwKGUuc291cmNlLG4pfXJldHVybiB0Lmxhc3RJbmRleD0wLHR9KHQpLHRoaXMuX2xpbmVzW2UubGluZU51bWJlci0xXSwwKTtyZXR1cm4gbj9uZXcgaXQoZS5saW5lTnVtYmVyLG4uc3RhcnRDb2x1bW4sZS5saW5lTnVtYmVyLG4uZW5kQ29sdW1uKTpudWxsfXdvcmRzKGUpe2NvbnN0IHQ9dGhpcy5fbGluZXMsbj10aGlzLl93b3JkZW5pemUuYmluZCh0aGlzKTtsZXQgcj0wLGk9IiIscz0wLG89W107cmV0dXJueypbU3ltYm9sLml0ZXJhdG9yXSgpe2Zvcig7OylpZihzPG8ubGVuZ3RoKXtjb25zdCBlPWkuc3Vic3RyaW5nKG9bc10uc3RhcnQsb1tzXS5lbmQpO3MrPTEseWllbGQgZX1lbHNle2lmKCEocjx0Lmxlbmd0aCkpYnJlYWs7aT10W3JdLG89bihpLGUpLHM9MCxyKz0xfX19fWdldExpbmVXb3JkcyhlLHQpe2NvbnN0IG49dGhpcy5fbGluZXNbZS0xXSxyPXRoaXMuX3dvcmRlbml6ZShuLHQpLGk9W107Zm9yKGNvbnN0IGUgb2YgcilpLnB1c2goe3dvcmQ6bi5zdWJzdHJpbmcoZS5zdGFydCxlLmVuZCksc3RhcnRDb2x1bW46ZS5zdGFydCsxLGVuZENvbHVtbjplLmVuZCsxfSk7cmV0dXJuIGl9X3dvcmRlbml6ZShlLHQpe2NvbnN0IG49W107bGV0IHI7Zm9yKHQubGFzdEluZGV4PTA7KHI9dC5leGVjKGUpKSYmMCE9PXJbMF0ubGVuZ3RoOyluLnB1c2goe3N0YXJ0OnIuaW5kZXgsZW5kOnIuaW5kZXgrclswXS5sZW5ndGh9KTtyZXR1cm4gbn1nZXRWYWx1ZUluUmFuZ2UoZSl7aWYoKGU9dGhpcy5fdmFsaWRhdGVSYW5nZShlKSkuc3RhcnRMaW5lTnVtYmVyPT09ZS5lbmRMaW5lTnVtYmVyKXJldHVybiB0aGlzLl9saW5lc1tlLnN0YXJ0TGluZU51bWJlci0xXS5zdWJzdHJpbmcoZS5zdGFydENvbHVtbi0xLGUuZW5kQ29sdW1uLTEpO2NvbnN0IHQ9dGhpcy5fZW9sLG49ZS5zdGFydExpbmVOdW1iZXItMSxyPWUuZW5kTGluZU51bWJlci0xLGk9W107aS5wdXNoKHRoaXMuX2xpbmVzW25dLnN1YnN0cmluZyhlLnN0YXJ0Q29sdW1uLTEpKTtmb3IobGV0IGU9bisxO2U8cjtlKyspaS5wdXNoKHRoaXMuX2xpbmVzW2VdKTtyZXR1cm4gaS5wdXNoKHRoaXMuX2xpbmVzW3JdLnN1YnN0cmluZygwLGUuZW5kQ29sdW1uLTEpKSxpLmpvaW4odCl9b2Zmc2V0QXQoZSl7cmV0dXJuIGU9dGhpcy5fdmFsaWRhdGVQb3NpdGlvbihlKSx0aGlzLl9lbnN1cmVMaW5lU3RhcnRzKCksdGhpcy5fbGluZVN0YXJ0cy5nZXRQcmVmaXhTdW0oZS5saW5lTnVtYmVyLTIpKyhlLmNvbHVtbi0xKX1wb3NpdGlvbkF0KGUpe2U9TWF0aC5mbG9vcihlKSxlPU1hdGgubWF4KDAsZSksdGhpcy5fZW5zdXJlTGluZVN0YXJ0cygpO2NvbnN0IHQ9dGhpcy5fbGluZVN0YXJ0cy5nZXRJbmRleE9mKGUpLG49dGhpcy5fbGluZXNbdC5pbmRleF0ubGVuZ3RoO3JldHVybntsaW5lTnVtYmVyOjErdC5pbmRleCxjb2x1bW46MStNYXRoLm1pbih0LnJlbWFpbmRlcixuKX19X3ZhbGlkYXRlUmFuZ2UoZSl7Y29uc3QgdD10aGlzLl92YWxpZGF0ZVBvc2l0aW9uKHtsaW5lTnVtYmVyOmUuc3RhcnRMaW5lTnVtYmVyLGNvbHVtbjplLnN0YXJ0Q29sdW1ufSksbj10aGlzLl92YWxpZGF0ZVBvc2l0aW9uKHtsaW5lTnVtYmVyOmUuZW5kTGluZU51bWJlcixjb2x1bW46ZS5lbmRDb2x1bW59KTtyZXR1cm4gdC5saW5lTnVtYmVyIT09ZS5zdGFydExpbmVOdW1iZXJ8fHQuY29sdW1uIT09ZS5zdGFydENvbHVtbnx8bi5saW5lTnVtYmVyIT09ZS5lbmRMaW5lTnVtYmVyfHxuLmNvbHVtbiE9PWUuZW5kQ29sdW1uP3tzdGFydExpbmVOdW1iZXI6dC5saW5lTnVtYmVyLHN0YXJ0Q29sdW1uOnQuY29sdW1uLGVuZExpbmVOdW1iZXI6bi5saW5lTnVtYmVyLGVuZENvbHVtbjpuLmNvbHVtbn06ZX1fdmFsaWRhdGVQb3NpdGlvbihlKXtpZighcnQuaXNJUG9zaXRpb24oZSkpdGhyb3cgbmV3IEVycm9yKCJiYWQgcG9zaXRpb24iKTtsZXR7bGluZU51bWJlcjp0LGNvbHVtbjpufT1lLHI9ITE7aWYodDwxKXQ9MSxuPTEscj0hMDtlbHNlIGlmKHQ+dGhpcy5fbGluZXMubGVuZ3RoKXQ9dGhpcy5fbGluZXMubGVuZ3RoLG49dGhpcy5fbGluZXNbdC0xXS5sZW5ndGgrMSxyPSEwO2Vsc2V7Y29uc3QgZT10aGlzLl9saW5lc1t0LTFdLmxlbmd0aCsxO248MT8obj0xLHI9ITApOm4+ZSYmKG49ZSxyPSEwKX1yZXR1cm4gcj97bGluZU51bWJlcjp0LGNvbHVtbjpufTplfX1jbGFzcyBVcntjb25zdHJ1Y3RvcihlLHQpe3RoaXMuX2hvc3Q9ZSx0aGlzLl9tb2RlbHM9T2JqZWN0LmNyZWF0ZShudWxsKSx0aGlzLl9mb3JlaWduTW9kdWxlRmFjdG9yeT10LHRoaXMuX2ZvcmVpZ25Nb2R1bGU9bnVsbH1kaXNwb3NlKCl7dGhpcy5fbW9kZWxzPU9iamVjdC5jcmVhdGUobnVsbCl9X2dldE1vZGVsKGUpe3JldHVybiB0aGlzLl9tb2RlbHNbZV19X2dldE1vZGVscygpe2NvbnN0IGU9W107cmV0dXJuIE9iamVjdC5rZXlzKHRoaXMuX21vZGVscykuZm9yRWFjaCgodD0+ZS5wdXNoKHRoaXMuX21vZGVsc1t0XSkpKSxlfWFjY2VwdE5ld01vZGVsKGUpe3RoaXMuX21vZGVsc1tlLnVybF09bmV3IEJyKHplLnBhcnNlKGUudXJsKSxlLmxpbmVzLGUuRU9MLGUudmVyc2lvbklkKX1hY2NlcHRNb2RlbENoYW5nZWQoZSx0KXtpZighdGhpcy5fbW9kZWxzW2VdKXJldHVybjt0aGlzLl9tb2RlbHNbZV0ub25FdmVudHModCl9YWNjZXB0UmVtb3ZlZE1vZGVsKGUpe3RoaXMuX21vZGVsc1tlXSYmZGVsZXRlIHRoaXMuX21vZGVsc1tlXX1jb21wdXRlVW5pY29kZUhpZ2hsaWdodHMoZSx0LG4pe3JldHVybiBxcih0aGlzLHZvaWQgMCx2b2lkIDAsKGZ1bmN0aW9uKigpe2NvbnN0IHI9dGhpcy5fZ2V0TW9kZWwoZSk7cmV0dXJuIHI/SG4uY29tcHV0ZVVuaWNvZGVIaWdobGlnaHRzKHIsdCxuKTp7cmFuZ2VzOltdLGhhc01vcmU6ITEsYW1iaWd1b3VzQ2hhcmFjdGVyQ291bnQ6MCxpbnZpc2libGVDaGFyYWN0ZXJDb3VudDowLG5vbkJhc2ljQXNjaWlDaGFyYWN0ZXJDb3VudDowfX0pKX1jb21wdXRlRGlmZihlLHQsbixyKXtyZXR1cm4gcXIodGhpcyx2b2lkIDAsdm9pZCAwLChmdW5jdGlvbiooKXtjb25zdCBpPXRoaXMuX2dldE1vZGVsKGUpLHM9dGhpcy5fZ2V0TW9kZWwodCk7cmV0dXJuIGkmJnM/VXIuY29tcHV0ZURpZmYoaSxzLG4scik6bnVsbH0pKX1zdGF0aWMgY29tcHV0ZURpZmYoZSx0LG4scil7Y29uc3QgaT0iYWR2YW5jZWQiPT09cj9Fci5hZHZhbmNlZDpFci5sZWdhY3kscz1lLmdldExpbmVzQ29udGVudCgpLG89dC5nZXRMaW5lc0NvbnRlbnQoKSxhPWkuY29tcHV0ZURpZmYocyxvLG4pO3JldHVybntpZGVudGljYWw6IShhLmNoYW5nZXMubGVuZ3RoPjApJiZ0aGlzLl9tb2RlbHNBcmVJZGVudGljYWwoZSx0KSxxdWl0RWFybHk6YS5oaXRUaW1lb3V0LGNoYW5nZXM6YS5jaGFuZ2VzLm1hcCgoZT0+e3ZhciB0O3JldHVybltlLm9yaWdpbmFsUmFuZ2Uuc3RhcnRMaW5lTnVtYmVyLGUub3JpZ2luYWxSYW5nZS5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlLGUubW9kaWZpZWRSYW5nZS5zdGFydExpbmVOdW1iZXIsZS5tb2RpZmllZFJhbmdlLmVuZExpbmVOdW1iZXJFeGNsdXNpdmUsbnVsbD09PSh0PWUuaW5uZXJDaGFuZ2VzKXx8dm9pZCAwPT09dD92b2lkIDA6dC5tYXAoKGU9PltlLm9yaWdpbmFsUmFuZ2Uuc3RhcnRMaW5lTnVtYmVyLGUub3JpZ2luYWxSYW5nZS5zdGFydENvbHVtbixlLm9yaWdpbmFsUmFuZ2UuZW5kTGluZU51bWJlcixlLm9yaWdpbmFsUmFuZ2UuZW5kQ29sdW1uLGUubW9kaWZpZWRSYW5nZS5zdGFydExpbmVOdW1iZXIsZS5tb2RpZmllZFJhbmdlLnN0YXJ0Q29sdW1uLGUubW9kaWZpZWRSYW5nZS5lbmRMaW5lTnVtYmVyLGUubW9kaWZpZWRSYW5nZS5lbmRDb2x1bW5dKSldfSkpfX1zdGF0aWMgX21vZGVsc0FyZUlkZW50aWNhbChlLHQpe2NvbnN0IG49ZS5nZXRMaW5lQ291bnQoKTtpZihuIT09dC5nZXRMaW5lQ291bnQoKSlyZXR1cm4hMTtmb3IobGV0IHI9MTtyPD1uO3IrKyl7aWYoZS5nZXRMaW5lQ29udGVudChyKSE9PXQuZ2V0TGluZUNvbnRlbnQocikpcmV0dXJuITF9cmV0dXJuITB9Y29tcHV0ZU1vcmVNaW5pbWFsRWRpdHMoZSx0LG4pe3JldHVybiBxcih0aGlzLHZvaWQgMCx2b2lkIDAsKGZ1bmN0aW9uKigpe2NvbnN0IHI9dGhpcy5fZ2V0TW9kZWwoZSk7aWYoIXIpcmV0dXJuIHQ7Y29uc3QgaT1bXTtsZXQgczt0PXQuc2xpY2UoMCkuc29ydCgoKGUsdCk9PntpZihlLnJhbmdlJiZ0LnJhbmdlKXJldHVybiBpdC5jb21wYXJlUmFuZ2VzVXNpbmdTdGFydHMoZS5yYW5nZSx0LnJhbmdlKTtyZXR1cm4oZS5yYW5nZT8wOjEpLSh0LnJhbmdlPzA6MSl9KSk7Zm9yKGxldHtyYW5nZTplLHRleHQ6byxlb2w6YX1vZiB0KXtpZigibnVtYmVyIj09dHlwZW9mIGEmJihzPWEpLGl0LmlzRW1wdHkoZSkmJiFvKWNvbnRpbnVlO2NvbnN0IHQ9ci5nZXRWYWx1ZUluUmFuZ2UoZSk7aWYobz1vLnJlcGxhY2UoL1xyXG58XG58XHIvZyxyLmVvbCksdD09PW8pY29udGludWU7aWYoTWF0aC5tYXgoby5sZW5ndGgsdC5sZW5ndGgpPlVyLl9kaWZmTGltaXQpe2kucHVzaCh7cmFuZ2U6ZSx0ZXh0Om99KTtjb250aW51ZX1jb25zdCBsPXBlKHQsbyxuKSx1PXIub2Zmc2V0QXQoaXQubGlmdChlKS5nZXRTdGFydFBvc2l0aW9uKCkpO2Zvcihjb25zdCBlIG9mIGwpe2NvbnN0IHQ9ci5wb3NpdGlvbkF0KHUrZS5vcmlnaW5hbFN0YXJ0KSxuPXIucG9zaXRpb25BdCh1K2Uub3JpZ2luYWxTdGFydCtlLm9yaWdpbmFsTGVuZ3RoKSxzPXt0ZXh0Om8uc3Vic3RyKGUubW9kaWZpZWRTdGFydCxlLm1vZGlmaWVkTGVuZ3RoKSxyYW5nZTp7c3RhcnRMaW5lTnVtYmVyOnQubGluZU51bWJlcixzdGFydENvbHVtbjp0LmNvbHVtbixlbmRMaW5lTnVtYmVyOm4ubGluZU51bWJlcixlbmRDb2x1bW46bi5jb2x1bW59fTtyLmdldFZhbHVlSW5SYW5nZShzLnJhbmdlKSE9PXMudGV4dCYmaS5wdXNoKHMpfX1yZXR1cm4ibnVtYmVyIj09dHlwZW9mIHMmJmkucHVzaCh7ZW9sOnMsdGV4dDoiIixyYW5nZTp7c3RhcnRMaW5lTnVtYmVyOjAsc3RhcnRDb2x1bW46MCxlbmRMaW5lTnVtYmVyOjAsZW5kQ29sdW1uOjB9fSksaX0pKX1jb21wdXRlTGlua3MoZSl7cmV0dXJuIHFyKHRoaXMsdm9pZCAwLHZvaWQgMCwoZnVuY3Rpb24qKCl7Y29uc3QgdD10aGlzLl9nZXRNb2RlbChlKTtyZXR1cm4gdD9mdW5jdGlvbihlKXtyZXR1cm4gZSYmImZ1bmN0aW9uIj09dHlwZW9mIGUuZ2V0TGluZUNvdW50JiYiZnVuY3Rpb24iPT10eXBlb2YgZS5nZXRMaW5lQ29udGVudD95dC5jb21wdXRlTGlua3MoZSk6W119KHQpOm51bGx9KSl9Y29tcHV0ZURlZmF1bHREb2N1bWVudENvbG9ycyhlKXtyZXR1cm4gcXIodGhpcyx2b2lkIDAsdm9pZCAwLChmdW5jdGlvbiooKXtjb25zdCB0PXRoaXMuX2dldE1vZGVsKGUpO3JldHVybiB0P1ZyKHQpOm51bGx9KSl9dGV4dHVhbFN1Z2dlc3QoZSx0LG4scil7cmV0dXJuIHFyKHRoaXMsdm9pZCAwLHZvaWQgMCwoZnVuY3Rpb24qKCl7Y29uc3QgaT1uZXcgSyghMCkscz1uZXcgUmVnRXhwKG4sciksbz1uZXcgU2V0O2U6Zm9yKGNvbnN0IG4gb2YgZSl7Y29uc3QgZT10aGlzLl9nZXRNb2RlbChuKTtpZihlKWZvcihjb25zdCBuIG9mIGUud29yZHMocykpaWYobiE9PXQmJmlzTmFOKE51bWJlcihuKSkmJihvLmFkZChuKSxvLnNpemU+VXIuX3N1Z2dlc3Rpb25zTGltaXQpKWJyZWFrIGV9cmV0dXJue3dvcmRzOkFycmF5LmZyb20obyksZHVyYXRpb246aS5lbGFwc2VkKCl9fSkpfWNvbXB1dGVXb3JkUmFuZ2VzKGUsdCxuLHIpe3JldHVybiBxcih0aGlzLHZvaWQgMCx2b2lkIDAsKGZ1bmN0aW9uKigpe2NvbnN0IGk9dGhpcy5fZ2V0TW9kZWwoZSk7aWYoIWkpcmV0dXJuIE9iamVjdC5jcmVhdGUobnVsbCk7Y29uc3Qgcz1uZXcgUmVnRXhwKG4sciksbz1PYmplY3QuY3JlYXRlKG51bGwpO2ZvcihsZXQgZT10LnN0YXJ0TGluZU51bWJlcjtlPHQuZW5kTGluZU51bWJlcjtlKyspe2NvbnN0IHQ9aS5nZXRMaW5lV29yZHMoZSxzKTtmb3IoY29uc3QgbiBvZiB0KXtpZighaXNOYU4oTnVtYmVyKG4ud29yZCkpKWNvbnRpbnVlO2xldCB0PW9bbi53b3JkXTt0fHwodD1bXSxvW24ud29yZF09dCksdC5wdXNoKHtzdGFydExpbmVOdW1iZXI6ZSxzdGFydENvbHVtbjpuLnN0YXJ0Q29sdW1uLGVuZExpbmVOdW1iZXI6ZSxlbmRDb2x1bW46bi5lbmRDb2x1bW59KX19cmV0dXJuIG99KSl9bmF2aWdhdGVWYWx1ZVNldChlLHQsbixyLGkpe3JldHVybiBxcih0aGlzLHZvaWQgMCx2b2lkIDAsKGZ1bmN0aW9uKigpe2NvbnN0IHM9dGhpcy5fZ2V0TW9kZWwoZSk7aWYoIXMpcmV0dXJuIG51bGw7Y29uc3Qgbz1uZXcgUmVnRXhwKHIsaSk7dC5zdGFydENvbHVtbj09PXQuZW5kQ29sdW1uJiYodD17c3RhcnRMaW5lTnVtYmVyOnQuc3RhcnRMaW5lTnVtYmVyLHN0YXJ0Q29sdW1uOnQuc3RhcnRDb2x1bW4sZW5kTGluZU51bWJlcjp0LmVuZExpbmVOdW1iZXIsZW5kQ29sdW1uOnQuZW5kQ29sdW1uKzF9KTtjb25zdCBhPXMuZ2V0VmFsdWVJblJhbmdlKHQpLGw9cy5nZXRXb3JkQXRQb3NpdGlvbih7bGluZU51bWJlcjp0LnN0YXJ0TGluZU51bWJlcixjb2x1bW46dC5zdGFydENvbHVtbn0sbyk7aWYoIWwpcmV0dXJuIG51bGw7Y29uc3QgdT1zLmdldFZhbHVlSW5SYW5nZShsKTtyZXR1cm4gdnQuSU5TVEFOQ0UubmF2aWdhdGVWYWx1ZVNldCh0LGEsbCx1LG4pfSkpfWxvYWRGb3JlaWduTW9kdWxlKGUsdCxuKXtjb25zdCByPWZ1bmN0aW9uKGUsdCl7Y29uc3Qgbj1lPT5mdW5jdGlvbigpe2NvbnN0IG49QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDApO3JldHVybiB0KGUsbil9LHI9e307Zm9yKGNvbnN0IHQgb2YgZSlyW3RdPW4odCk7cmV0dXJuIHJ9KG4sKChlLHQpPT50aGlzLl9ob3N0LmZocihlLHQpKSksaT17aG9zdDpyLGdldE1pcnJvck1vZGVsczooKT0+dGhpcy5fZ2V0TW9kZWxzKCl9O3JldHVybiB0aGlzLl9mb3JlaWduTW9kdWxlRmFjdG9yeT8odGhpcy5fZm9yZWlnbk1vZHVsZT10aGlzLl9mb3JlaWduTW9kdWxlRmFjdG9yeShpLHQpLFByb21pc2UucmVzb2x2ZShHKHRoaXMuX2ZvcmVpZ25Nb2R1bGUpKSk6UHJvbWlzZS5yZWplY3QobmV3IEVycm9yKCJVbmV4cGVjdGVkIHVzYWdlIikpfWZtcihlLHQpe2lmKCF0aGlzLl9mb3JlaWduTW9kdWxlfHwiZnVuY3Rpb24iIT10eXBlb2YgdGhpcy5fZm9yZWlnbk1vZHVsZVtlXSlyZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKCJNaXNzaW5nIHJlcXVlc3RIYW5kbGVyIG9yIG1ldGhvZDogIitlKSk7dHJ5e3JldHVybiBQcm9taXNlLnJlc29sdmUodGhpcy5fZm9yZWlnbk1vZHVsZVtlXS5hcHBseSh0aGlzLl9mb3JlaWduTW9kdWxlLHQpKX1jYXRjaChlKXtyZXR1cm4gUHJvbWlzZS5yZWplY3QoZSl9fX1Vci5fZGlmZkxpbWl0PTFlNSxVci5fc3VnZ2VzdGlvbnNMaW1pdD0xZTQsImZ1bmN0aW9uIj09dHlwZW9mIGltcG9ydFNjcmlwdHMmJihnbG9iYWxUaGlzLm1vbmFjbz17ZWRpdG9yOnZvaWQgMCxsYW5ndWFnZXM6dm9pZCAwLENhbmNlbGxhdGlvblRva2VuU291cmNlOk50LEVtaXR0ZXI6SCxLZXlDb2RlOmNuLEtleU1vZDpLbixQb3NpdGlvbjpydCxSYW5nZTppdCxTZWxlY3Rpb246SXQsU2VsZWN0aW9uRGlyZWN0aW9uOnduLE1hcmtlclNldmVyaXR5OmRuLE1hcmtlclRhZzptbixVcmk6emUsVG9rZW46Rm59KTtsZXQgV3I9ITE7ZnVuY3Rpb24gSHIoZSl7aWYoV3IpcmV0dXJuO1dyPSEwO2NvbnN0IHQ9bmV3IGNlKChlPT57Z2xvYmFsVGhpcy5wb3N0TWVzc2FnZShlKX0pLCh0PT5uZXcgVXIodCxlKSkpO2dsb2JhbFRoaXMub25tZXNzYWdlPWU9Pnt0Lm9ubWVzc2FnZShlLmRhdGEpfX1yZXR1cm4gZ2xvYmFsVGhpcy5vbm1lc3NhZ2U9ZT0+e1dyfHxIcihudWxsKX0sZS5pbml0aWFsaXplPUhyLGV9KHt9KTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZWRpdG9yLndvcmtlci5qcy5tYXAKCg==', null, false);
4
+ /* eslint-enable */
5
+
6
+ export { WorkerFactory as default };
@@ -0,0 +1,3 @@
1
+ var resource_1 = "{\"comments\":{\"blockComment\":[[\"<%!--\",\"--%>\"],[\"<%#\",\"%>\"]]},\"brackets\":[[\"<\",\">\"],[\"{\",\"}\"],[\"(\",\")\"],[\"[\",\"]\"]],\"colorizedBracketPairs\":[[\"{\",\"}\"],[\"[\",\"]\"],[\"(\",\")\"]],\"autoClosingPairs\":[[\"{\",\"}\"],[\"[\",\"]\"],[\"(\",\")\"],[\"<%\",\" %>\"],[\"'\",\"'\"],[\"\\\"\",\"\\\"\"]],\"surroundingPairs\":[[\"'\",\"'\"],[\"{\",\"}\"],[\"[\",\"]\"],[\"(\",\")\"],[\"<\",\">\"],[\"%\",\"%\"],[\"\\\"\",\"\\\"\"]],\"onEnterRules\":[{\"beforeText\":{\"pattern\":\"<(?!(?:area|base|br|col|embed|hr|img|input|keygen|link|menuitem|meta|param|source|track|wbr))([_:\\\\w][_:\\\\w-.\\\\d]*)(?:(?:[^'\\\"/>]|\\\"[^\\\"]*\\\"|'[^']*')*?(?!\\\\/)>)[^<]*$\",\"flags\":\"i\"},\"afterText\":{\"pattern\":\"^<\\\\/([_:\\\\w][_:\\\\w-.\\\\d]*)\\\\s*>\",\"flags\":\"i\"},\"action\":{\"indent\":\"indentOutdent\"}},{\"beforeText\":\"<%#\\\\s*$\",\"action\":{\"indent\":\"indentOutdent\"},\"afterText\":\"%>\\\\s*$\"}]}";
2
+
3
+ export { resource_1 as default };