@codingame/monaco-editor-wrapper 3.9.3 → 4.0.0-next.0

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 (537) hide show
  1. package/dist/C2Hs-configuration.json.js +3 -0
  2. package/dist/C2Hs.json.js +3 -0
  3. package/dist/COBOL.tmLanguage.json.js +3 -0
  4. package/dist/Erlang.plist.js +2 -1751
  5. package/dist/Hsc2Hs-configuration.json.js +3 -0
  6. package/dist/Hsc2Hs.json.js +3 -0
  7. package/dist/JavaProperties.tmLanguage.json.js +3 -0
  8. package/dist/Kotlin.tmLanguage.js +2 -723
  9. package/dist/META.json.js +3 -0
  10. package/dist/META.json2.js +3 -0
  11. package/dist/Markdown Redcarpet.json.js +3 -0
  12. package/dist/RMarkdown.json.js +3 -0
  13. package/dist/Rcpp.json.js +3 -0
  14. package/dist/Rd (R Documentation).json.js +3 -0
  15. package/dist/Scala.tmLanguage.json.js +3 -0
  16. package/dist/_commonjsHelpers.js +35 -0
  17. package/dist/_rollupPluginBabelHelpers.js +1 -1
  18. package/dist/add.svg.js +3 -0
  19. package/dist/add.svg2.js +3 -0
  20. package/dist/adddep-dark.svg.js +3 -0
  21. package/dist/adddep-light.svg.js +3 -0
  22. package/dist/alex.json.js +3 -0
  23. package/dist/angular-directives.json.js +3 -0
  24. package/dist/angular-interpolations.json.js +3 -0
  25. package/dist/angular-template-language-configuration.json.js +3 -0
  26. package/dist/arrow-circle-up-dark.svg.js +3 -0
  27. package/dist/arrow-circle-up-light.svg.js +3 -0
  28. package/dist/aspnetcorerazor.tmLanguage.json.js +3 -0
  29. package/dist/atd.json.js +3 -0
  30. package/dist/book-dark.svg.js +3 -0
  31. package/dist/book-light.svg.js +3 -0
  32. package/dist/book-open-dark.svg.js +3 -0
  33. package/dist/book-open-light.svg.js +3 -0
  34. package/dist/buildtarget.json.js +3 -0
  35. package/dist/cabal-configuration.json.js +3 -0
  36. package/dist/cabal.json.js +3 -0
  37. package/dist/codeblock-cabal.json.js +3 -0
  38. package/dist/codeblock-haskell.json.js +3 -0
  39. package/dist/codeblock-literate-haskell.json.js +3 -0
  40. package/dist/codeblock.json.js +3 -0
  41. package/dist/codeblock.json2.js +3 -0
  42. package/dist/configuration/index.d.ts +0 -1
  43. package/dist/cram.json.js +3 -0
  44. package/dist/csharp.json.js +3 -0
  45. package/dist/css.worker.js +1 -1
  46. package/dist/d.json.js +3 -0
  47. package/dist/d.json2.js +3 -0
  48. package/dist/dart-language-configuration.json.js +3 -0
  49. package/dist/dart.json.js +3 -0
  50. package/dist/dcf-configuration.json.js +3 -0
  51. package/dist/dcf.json.js +3 -0
  52. package/dist/diet.json.js +3 -0
  53. package/dist/diet.json2.js +3 -0
  54. package/dist/diet.json3.js +3 -0
  55. package/dist/django-html.tmLanguage.json.js +3 -0
  56. package/dist/django-txt.tmLanguage.json.js +3 -0
  57. package/dist/dml.json.js +3 -0
  58. package/dist/document-search-dark.svg.js +3 -0
  59. package/dist/document-search-light.svg.js +3 -0
  60. package/dist/documentation-inverse.svg.js +3 -0
  61. package/dist/documentation.svg.js +3 -0
  62. package/dist/dub-convert-inverse.svg.js +3 -0
  63. package/dist/dub-convert.svg.js +3 -0
  64. package/dist/dune-project.json.js +3 -0
  65. package/dist/dune-project.json2.js +3 -0
  66. package/dist/dune-workspace.json.js +3 -0
  67. package/dist/dune.json.js +3 -0
  68. package/dist/dune.json2.js +3 -0
  69. package/dist/dune.json3.js +3 -0
  70. package/dist/edit-dub-inverse.svg.js +3 -0
  71. package/dist/edit-dub.svg.js +3 -0
  72. package/dist/edit-source-inverse.svg.js +3 -0
  73. package/dist/edit-source.svg.js +3 -0
  74. package/dist/eex-language-configuration.json.js +3 -0
  75. package/dist/eex.json.js +3 -0
  76. package/dist/elixir-language-configuration.json.js +3 -0
  77. package/dist/elixir.json.js +3 -0
  78. package/dist/erlang.configuration.json.js +3 -0
  79. package/dist/erlang.json.js +3 -0
  80. package/dist/expression.json.js +3 -0
  81. package/dist/extension-web.js.js +3 -0
  82. package/dist/extension-web.js2.js +3 -0
  83. package/dist/extension.browser.js.js +3 -0
  84. package/dist/extensions.d.ts +35 -0
  85. package/dist/features/htmlContribution.js +0 -1
  86. package/dist/features/jsonContribution.d.ts +2 -4
  87. package/dist/features/jsonContribution.js +10 -29
  88. package/dist/features/typescriptContribution.js +2 -2
  89. package/dist/file_type_java.svg.js +3 -0
  90. package/dist/file_type_scala.svg.js +3 -0
  91. package/dist/filters.json.js +3 -0
  92. package/dist/focus-dark.svg.js +3 -0
  93. package/dist/focus-light.svg.js +3 -0
  94. package/dist/general.json.js +3 -0
  95. package/dist/get-inverse.svg.js +3 -0
  96. package/dist/get.svg.js +3 -0
  97. package/dist/go.json.js +3 -0
  98. package/dist/go.mod.language-configuration.json.js +3 -0
  99. package/dist/go.mod.tmGrammar.json.js +3 -0
  100. package/dist/go.sum.tmGrammar.json.js +3 -0
  101. package/dist/govulncheck.tmGrammar.json.js +3 -0
  102. package/dist/happy.json.js +3 -0
  103. package/dist/haskell-configuration.json.js +3 -0
  104. package/dist/haskell.json.js +3 -0
  105. package/dist/hot-reload-tb.png.js +3 -0
  106. package/dist/hot-reload.svg.js +3 -0
  107. package/dist/html-eex.json.js +3 -0
  108. package/dist/html.worker.js +1 -1
  109. package/dist/index.d.ts +2 -3
  110. package/dist/index.js +9 -6
  111. package/dist/index2.js +2 -1351
  112. package/dist/inline-styles.json.js +3 -0
  113. package/dist/inline-template.json.js +3 -0
  114. package/dist/inspector.svg.js +3 -0
  115. package/dist/java-properties-configuration.json.js +3 -0
  116. package/dist/java.json.js +3 -0
  117. package/dist/javascript.json.js +3 -0
  118. package/dist/json.worker.js +1 -1
  119. package/dist/jvm-bytecode-verbose.json.js +3 -0
  120. package/dist/jvm-bytecode.json.js +3 -0
  121. package/dist/kotlin.configuration.json.js +3 -0
  122. package/dist/kotlin.json.js +3 -0
  123. package/dist/lang-config.json.js +3 -0
  124. package/dist/language-configuration.json.js +3 -0
  125. package/dist/language-configuration.json2.js +3 -0
  126. package/dist/language-configuration.json3.js +3 -0
  127. package/dist/language-configuration.json4.js +3 -0
  128. package/dist/language-configuration.json5.js +3 -0
  129. package/dist/language-configuration.json6.js +3 -0
  130. package/dist/language-configuration.json7.js +3 -0
  131. package/dist/language-configuration.json8.js +3 -0
  132. package/dist/languages/index.d.ts +0 -2
  133. package/dist/literate-haskell-configuration.json.js +3 -0
  134. package/dist/literateHaskell.json.js +3 -0
  135. package/dist/main.js +839 -3115
  136. package/dist/markdown-svelte-css.json.js +3 -0
  137. package/dist/markdown-svelte-js.json.js +3 -0
  138. package/dist/markdown-svelte.json.js +3 -0
  139. package/dist/menhir-action.json.js +3 -0
  140. package/dist/menhir.json.js +3 -0
  141. package/dist/menhir.json2.js +3 -0
  142. package/dist/merlin.json.js +3 -0
  143. package/dist/monaco.d.ts +6 -9
  144. package/dist/oasis.json.js +3 -0
  145. package/dist/oasis.json2.js +3 -0
  146. package/dist/ocaml-markdown-codeblock.json.js +3 -0
  147. package/dist/ocaml.interface.json.js +3 -0
  148. package/dist/ocaml.json.js +3 -0
  149. package/dist/ocaml.json2.js +3 -0
  150. package/dist/ocaml.json3.js +3 -0
  151. package/dist/ocamlbuild.json.js +3 -0
  152. package/dist/ocamlbuild.json2.js +3 -0
  153. package/dist/ocamldoc.json.js +3 -0
  154. package/dist/ocamlformat.json.js +3 -0
  155. package/dist/ocamlformat.json2.js +3 -0
  156. package/dist/ocamllex.json.js +3 -0
  157. package/dist/ocamllex.json2.js +3 -0
  158. package/dist/ocamllex.json3.js +3 -0
  159. package/dist/opam-install.json.js +3 -0
  160. package/dist/opam-install.json2.js +3 -0
  161. package/dist/opam.json.js +3 -0
  162. package/dist/opam.json2.js +3 -0
  163. package/dist/outdated-inverse.svg.js +3 -0
  164. package/dist/outdated.svg.js +3 -0
  165. package/dist/pascal.configuration.json.js +3 -0
  166. package/dist/pascal.json.js +3 -0
  167. package/dist/pascal.tmLanguage.js +2 -168
  168. package/dist/performance.svg.js +3 -0
  169. package/dist/pgsql.tmLanguage.js +2 -283
  170. package/dist/pip-requirements.json.js +3 -0
  171. package/dist/pip-requirements.tmLanguage.json.js +3 -0
  172. package/dist/plus-dark.svg.js +3 -0
  173. package/dist/plus-light.svg.js +3 -0
  174. package/dist/postcss.json.js +3 -0
  175. package/dist/preview-right-dark.svg.js +3 -0
  176. package/dist/preview-right-light.svg.js +3 -0
  177. package/dist/pug-svelte-dotblock.json.js +3 -0
  178. package/dist/pug-svelte-tags.json.js +3 -0
  179. package/dist/pug-svelte.json.js +3 -0
  180. package/dist/r-configuration.json.js +3 -0
  181. package/dist/r-snippets.json.js +3 -0
  182. package/dist/r.json.js +3 -0
  183. package/dist/rbuildignore-configuration.json.js +3 -0
  184. package/dist/rbuildignore.json.js +3 -0
  185. package/dist/rd-configuration.json.js +3 -0
  186. package/dist/reason-markdown-codeblock.json.js +3 -0
  187. package/dist/reason.json.js +3 -0
  188. package/dist/reason.json2.js +3 -0
  189. package/dist/ref-group-by-type-dark.svg.js +3 -0
  190. package/dist/ref-group-by-type-light.svg.js +3 -0
  191. package/dist/ref-ungroup-by-type-dark.svg.js +3 -0
  192. package/dist/ref-ungroup-by-type-light.svg.js +3 -0
  193. package/dist/refresh-dark.svg.js +3 -0
  194. package/dist/refresh-dark.svg2.js +3 -0
  195. package/dist/refresh-light.svg.js +3 -0
  196. package/dist/refresh-light.svg2.js +3 -0
  197. package/dist/repl.svg.js +3 -0
  198. package/dist/repl.svg2.js +3 -0
  199. package/dist/rmarkdown.json2.js +3 -0
  200. package/dist/rmd-configuration.json.js +3 -0
  201. package/dist/rnamespace-configuration.json.js +3 -0
  202. package/dist/rnamespace.json.js +3 -0
  203. package/dist/save.svg.js +3 -0
  204. package/dist/save.svg2.js +3 -0
  205. package/dist/scalameta-logo.png.js +3 -0
  206. package/dist/sdl.json.js +3 -0
  207. package/dist/semanticdb.json.js +3 -0
  208. package/dist/services.d.ts +4 -0
  209. package/dist/solidity.configuration.json.js +3 -0
  210. package/dist/solidity.json.js +3 -0
  211. package/dist/solidity.json2.js +3 -0
  212. package/dist/svelte.json.js +3 -0
  213. package/dist/svelte.tmLanguage.json.js +3 -0
  214. package/dist/switch-impl-intf.dark.svg.js +3 -0
  215. package/dist/switch-impl-intf.light.svg.js +3 -0
  216. package/dist/systemverilog.json.js +3 -0
  217. package/dist/systemverilog.tmLanguage.json.js +3 -0
  218. package/dist/tags.json.js +3 -0
  219. package/dist/tasty.json.js +3 -0
  220. package/dist/tcl.json.js +3 -0
  221. package/dist/tcl.json2.js +3 -0
  222. package/dist/template.json.js +3 -0
  223. package/dist/theme/index.d.ts +1 -4
  224. package/dist/tools/EditorOpenHandlerRegistry.d.ts +3 -2
  225. package/dist/ts.worker.js +1 -1
  226. package/dist/typescript.json.js +3 -0
  227. package/dist/upgrade-inverse.svg.js +3 -0
  228. package/dist/upgrade.svg.js +3 -0
  229. package/dist/vim.js +37 -36
  230. package/dist/vs2019_dark.json.js +3 -0
  231. package/dist/vs2019_light.json.js +3 -0
  232. package/dist/worker.js +14 -2
  233. package/dist/x-dark.svg.js +3 -0
  234. package/dist/x-light.svg.js +3 -0
  235. package/package.json +40 -42
  236. package/stats.html +90 -1429
  237. package/dist/COBOL.tmLanguage.js +0 -172
  238. package/dist/HTML (Eex)2.js +0 -100
  239. package/dist/JSON.tmLanguage.js +0 -221
  240. package/dist/JSONC.tmLanguage.js +0 -221
  241. package/dist/JavaProperties.tmLanguage.js +0 -116
  242. package/dist/JavaScript.tmLanguage.js +0 -5929
  243. package/dist/JavaScriptReact.tmLanguage.js +0 -5929
  244. package/dist/META.js +0 -100
  245. package/dist/MagicPython.tmLanguage.js +0 -4221
  246. package/dist/MagicRegExp.tmLanguage.js +0 -505
  247. package/dist/Markdown Redcarpet.js +0 -221
  248. package/dist/RMarkdown.js +0 -25
  249. package/dist/Rcpp.js +0 -50
  250. package/dist/Rd (R Documentation).js +0 -131
  251. package/dist/Regular Expressions (JavaScript).tmLanguage.js +0 -166
  252. package/dist/Scala.tmLanguage.js +0 -1324
  253. package/dist/TypeScript.tmLanguage.js +0 -5680
  254. package/dist/TypeScriptReact.tmLanguage.js +0 -5929
  255. package/dist/angular.js +0 -62
  256. package/dist/asp-vb-net.tmlanguage.js +0 -247
  257. package/dist/aspnetcorerazor.js +0 -72
  258. package/dist/aspnetcorerazor.tmLanguage.js +0 -1825
  259. package/dist/atd.js +0 -110
  260. package/dist/atd2.js +0 -114
  261. package/dist/buildignore.r.js +0 -5
  262. package/dist/buildtarget.js +0 -53
  263. package/dist/c.js +0 -101
  264. package/dist/c.tmLanguage.js +0 -3565
  265. package/dist/cabal.js +0 -10
  266. package/dist/cabal.tmLanguage.js +0 -66
  267. package/dist/clojure.js +0 -68
  268. package/dist/clojure.tmLanguage.js +0 -439
  269. package/dist/cobol.js +0 -6
  270. package/dist/cobol2.js +0 -341
  271. package/dist/codeblock-cabal.js +0 -42
  272. package/dist/codeblock-haskell.js +0 -42
  273. package/dist/codeblock-literate-haskell.js +0 -42
  274. package/dist/codeblock.js +0 -59
  275. package/dist/codeblock2.js +0 -36
  276. package/dist/codeblock3.js +0 -95
  277. package/dist/coffeescript-coffeescript.code-snippets.js +0 -18
  278. package/dist/coffeescript.js +0 -91
  279. package/dist/coffeescript.tmLanguage.js +0 -1324
  280. package/dist/configuration/files.d.ts +0 -6
  281. package/dist/cpp-c.code-snippets.js +0 -18
  282. package/dist/cpp-cpp.code-snippets.js +0 -18
  283. package/dist/cpp.js +0 -101
  284. package/dist/cpp.tmLanguage.js +0 -16648
  285. package/dist/cpptools.js +0 -2631
  286. package/dist/cram.js +0 -257
  287. package/dist/csharp.js +0 -92
  288. package/dist/csharp.tmLanguage.js +0 -4992
  289. package/dist/css.js +0 -106
  290. package/dist/css.tmLanguage.js +0 -1873
  291. package/dist/cuda-cpp.js +0 -101
  292. package/dist/cuda-cpp.tmLanguage.js +0 -19993
  293. package/dist/d-diet.js +0 -92
  294. package/dist/d.js +0 -3212
  295. package/dist/d2.js +0 -97
  296. package/dist/d3.js +0 -609
  297. package/dist/dart.js +0 -543
  298. package/dist/dart2.js +0 -103
  299. package/dist/dart3.js +0 -1130
  300. package/dist/dcf.js +0 -93
  301. package/dist/debian-control.r.js +0 -69
  302. package/dist/diet.js +0 -758
  303. package/dist/diet2.js +0 -100
  304. package/dist/django-html.js +0 -155
  305. package/dist/django-html.tmLanguage.js +0 -715
  306. package/dist/django-txt.js +0 -155
  307. package/dist/django-txt.tmLanguage.js +0 -269
  308. package/dist/dml.js +0 -169
  309. package/dist/dml2.js +0 -90
  310. package/dist/dockercompose.js +0 -82
  311. package/dist/dpp.js +0 -97
  312. package/dist/dscript.js +0 -90
  313. package/dist/dune-project.js +0 -481
  314. package/dist/dune-project2.js +0 -65
  315. package/dist/dune-workspace.js +0 -298
  316. package/dist/dune-workspace2.js +0 -65
  317. package/dist/dune.js +0 -2962
  318. package/dist/dune2.js +0 -65
  319. package/dist/eex.js +0 -55
  320. package/dist/elixir-snippets.js +0 -184
  321. package/dist/elixir.js +0 -2341
  322. package/dist/elixir2.js +0 -69
  323. package/dist/elixir3.js +0 -40
  324. package/dist/erlang-erlang.js +0 -195
  325. package/dist/erlang.js +0 -81
  326. package/dist/erlang2.js +0 -86
  327. package/dist/expression.js +0 -846
  328. package/dist/features/extensionConfigurations.d.ts +0 -1
  329. package/dist/features/extensionConfigurations.js +0 -44
  330. package/dist/fsharp-fsharp.code-snippets.js +0 -18
  331. package/dist/fsharp.js +0 -80
  332. package/dist/fsharp.tmLanguage.js +0 -1844
  333. package/dist/go.js +0 -103
  334. package/dist/go.mod.js +0 -8
  335. package/dist/go.mod.tmGrammar.js +0 -182
  336. package/dist/go.sum.tmGrammar.js +0 -55
  337. package/dist/go.tmLanguage.js +0 -1025
  338. package/dist/go.work.js +0 -8
  339. package/dist/govulncheck.tmGrammar.js +0 -138
  340. package/dist/groovy-groovy.code-snippets.js +0 -229
  341. package/dist/groovy.js +0 -79
  342. package/dist/groovy.tmLanguage.js +0 -1391
  343. package/dist/haskell.js +0 -88
  344. package/dist/haskell.tmLanguage.js +0 -629
  345. package/dist/haskell2.js +0 -16
  346. package/dist/html (eex).js +0 -31
  347. package/dist/html-derivative.tmLanguage.js +0 -57
  348. package/dist/html-html.code-snippets.js +0 -20
  349. package/dist/html.js +0 -11
  350. package/dist/html.tmLanguage.js +0 -2652
  351. package/dist/html.tmLanguage2.js +0 -107
  352. package/dist/inline-styles.js +0 -104
  353. package/dist/inline-template.js +0 -88
  354. package/dist/jade.js +0 -11
  355. package/dist/java-java.js +0 -125
  356. package/dist/java-properties.js +0 -73
  357. package/dist/java.js +0 -98
  358. package/dist/java.tmLanguage.js +0 -1863
  359. package/dist/java2.js +0 -917
  360. package/dist/javascript-javascript.code-snippets.js +0 -205
  361. package/dist/javascript.js +0 -197
  362. package/dist/javascriptreact.js +0 -197
  363. package/dist/jsdoc.js.injection.tmLanguage.js +0 -32
  364. package/dist/jsdoc.ts.injection.tmLanguage.js +0 -32
  365. package/dist/json.js +0 -75
  366. package/dist/jsonc.js +0 -75
  367. package/dist/jsx-tags.js +0 -158
  368. package/dist/julia.js +0 -89
  369. package/dist/julia.tmLanguage.js +0 -954
  370. package/dist/jvm-bytecode-verbose.js +0 -1231
  371. package/dist/jvm-bytecode.js +0 -565
  372. package/dist/kotlin-kotlin.js +0 -117
  373. package/dist/kotlin.js +0 -103
  374. package/dist/kotlinscript.js +0 -103
  375. package/dist/languages/extensions/extensionConfigurationLoader.d.ts +0 -3
  376. package/dist/languages/extensions/grammarLoader.d.ts +0 -2
  377. package/dist/languages/extensions/languageConfigurationLoader.d.ts +0 -2
  378. package/dist/languages/extensions/snippetLoader.d.ts +0 -2
  379. package/dist/languages/extensions/themeLoader.d.ts +0 -2
  380. package/dist/languages/snippets/index.d.ts +0 -1
  381. package/dist/languages/textMate/index.d.ts +0 -1
  382. package/dist/languages/textMate/semanticTokens.d.ts +0 -1
  383. package/dist/literate haskell.js +0 -88
  384. package/dist/literateHaskell.tmLanguage.js +0 -70
  385. package/dist/lua.js +0 -84
  386. package/dist/lua.tmLanguage.js +0 -914
  387. package/dist/lua2.js +0 -2853
  388. package/dist/markdown-basics-markdown.code-snippets.js +0 -121
  389. package/dist/markdown-svelte-css.js +0 -37
  390. package/dist/markdown-svelte-js.js +0 -37
  391. package/dist/markdown-svelte.js +0 -59
  392. package/dist/markdown-vue.js +0 -54
  393. package/dist/markdown.js +0 -49
  394. package/dist/markdown.tmLanguage.js +0 -3042
  395. package/dist/menhir-action.js +0 -51
  396. package/dist/menhir.js +0 -597
  397. package/dist/merlin.js +0 -111
  398. package/dist/namespace.r.js +0 -88
  399. package/dist/oasis.js +0 -99
  400. package/dist/objective-c.js +0 -79
  401. package/dist/objective-c.tmLanguage.js +0 -3763
  402. package/dist/objective-cpp.js +0 -79
  403. package/dist/ocaml-dune-project.js +0 -38
  404. package/dist/ocaml-dune.js +0 -53
  405. package/dist/ocaml-markdown-codeblock.js +0 -42
  406. package/dist/ocaml-ocaml.js +0 -88
  407. package/dist/ocaml-ocamllex.js +0 -12
  408. package/dist/ocaml.META.js +0 -29
  409. package/dist/ocaml.interface.js +0 -292
  410. package/dist/ocaml.interface2.js +0 -114
  411. package/dist/ocaml.js +0 -903
  412. package/dist/ocaml.menhir.js +0 -81
  413. package/dist/ocaml.oasis.js +0 -18
  414. package/dist/ocaml.ocamlbuild.js +0 -45
  415. package/dist/ocaml.ocamlformat.js +0 -8
  416. package/dist/ocaml.ocamllex.js +0 -60
  417. package/dist/ocaml.opam-install.js +0 -49
  418. package/dist/ocaml.opam.js +0 -69
  419. package/dist/ocaml2.js +0 -114
  420. package/dist/ocaml3.js +0 -136
  421. package/dist/ocamlbuild.js +0 -189
  422. package/dist/ocamldoc.js +0 -54
  423. package/dist/ocamlformat.js +0 -206
  424. package/dist/ocamllex.js +0 -133
  425. package/dist/omnisharp-csharp.js +0 -508
  426. package/dist/omnisharp.js +0 -594
  427. package/dist/opam-install.js +0 -40
  428. package/dist/opam.js +0 -140
  429. package/dist/pascal-pascal.js +0 -382
  430. package/dist/pascal.js +0 -80
  431. package/dist/pascal2.js +0 -26
  432. package/dist/perl.js +0 -93
  433. package/dist/perl.tmLanguage.js +0 -2986
  434. package/dist/perl6.js +0 -86
  435. package/dist/perl6.tmLanguage.js +0 -323
  436. package/dist/php-php.code-snippets.js +0 -267
  437. package/dist/php.js +0 -154
  438. package/dist/php.tmLanguage.js +0 -4036
  439. package/dist/pip-requirements.js +0 -8
  440. package/dist/pip-requirements.tmLanguage.js +0 -89
  441. package/dist/plaintext.js +0 -11
  442. package/dist/platform.tmLanguage.js +0 -1135
  443. package/dist/postcss.src.yaml.js +0 -393
  444. package/dist/postgres.js +0 -80
  445. package/dist/postgresql.js +0 -75
  446. package/dist/powershell.js +0 -107
  447. package/dist/powershell.tmLanguage.js +0 -1037
  448. package/dist/pug-svelte-dotblock.js +0 -69
  449. package/dist/pug-svelte-tags.js +0 -215
  450. package/dist/pug-svelte.js +0 -307
  451. package/dist/python.js +0 -236
  452. package/dist/r.js +0 -664
  453. package/dist/r2.js +0 -88
  454. package/dist/rbuildignore.js +0 -39
  455. package/dist/rd.js +0 -81
  456. package/dist/reason-markdown-codeblock.js +0 -42
  457. package/dist/reason.js +0 -79
  458. package/dist/rmd.js +0 -84
  459. package/dist/rnamespace.js +0 -283
  460. package/dist/ruby.js +0 -95
  461. package/dist/ruby.tmLanguage.js +0 -2784
  462. package/dist/rust.js +0 -84
  463. package/dist/rust.tmLanguage.js +0 -1178
  464. package/dist/sassdoc.tmLanguage.js +0 -362
  465. package/dist/scala.js +0 -85
  466. package/dist/scalameta.js +0 -224
  467. package/dist/scss.js +0 -117
  468. package/dist/scss.tmLanguage.js +0 -1887
  469. package/dist/sdl.js +0 -162
  470. package/dist/sdl2.js +0 -90
  471. package/dist/semanticdb.js +0 -62
  472. package/dist/shell-unix-bash.tmLanguage.js +0 -2038
  473. package/dist/shellscript.js +0 -93
  474. package/dist/solargraph.js +0 -192
  475. package/dist/solidity-solidity.js +0 -213
  476. package/dist/solidity.js +0 -1224
  477. package/dist/solidity2.js +0 -71
  478. package/dist/solidity3.js +0 -143
  479. package/dist/sql.js +0 -99
  480. package/dist/sql.tmLanguage.js +0 -636
  481. package/dist/svelte.js +0 -120
  482. package/dist/svelte.svelte-vscode-javascript.js +0 -45
  483. package/dist/svelte.svelte-vscode-svelte.js +0 -46
  484. package/dist/svelte.svelte-vscode-typescript.js +0 -43
  485. package/dist/svelte.svelte-vscode.js +0 -383
  486. package/dist/svelte.tmLanguage.src.yaml.js +0 -1099
  487. package/dist/svlangserver-systemverilog.js +0 -395
  488. package/dist/svlangserver.js +0 -85
  489. package/dist/swift-swift.code-snippets.js +0 -183
  490. package/dist/swift.js +0 -90
  491. package/dist/swift.tmLanguage.js +0 -3312
  492. package/dist/systemverilog.js +0 -187
  493. package/dist/systemverilog.tmLanguage.js +0 -1259
  494. package/dist/tasty.js +0 -72
  495. package/dist/tcl-tcl.js +0 -151
  496. package/dist/tcl.js +0 -78
  497. package/dist/tcl.tmlanguage.yaml.js +0 -5490
  498. package/dist/template.js +0 -207
  499. package/dist/theme-defaults~dark_plus.js +0 -210
  500. package/dist/theme-defaults~dark_plus_experimental.js +0 -145
  501. package/dist/theme-defaults~dark_vs.js +0 -412
  502. package/dist/theme-defaults~hc_black.js +0 -471
  503. package/dist/theme-defaults~hc_light.js +0 -595
  504. package/dist/theme-defaults~light_plus.js +0 -212
  505. package/dist/theme-defaults~light_plus_experimental.js +0 -158
  506. package/dist/theme-defaults~light_vs.js +0 -441
  507. package/dist/typescript-basics-typescript.code-snippets.js +0 -313
  508. package/dist/typescript-language-features.js +0 -1103
  509. package/dist/typescript.js +0 -216
  510. package/dist/typescriptreact.js +0 -216
  511. package/dist/vb-vb.code-snippets.js +0 -88
  512. package/dist/vb.js +0 -79
  513. package/dist/verilog.js +0 -187
  514. package/dist/volar-vue.js +0 -289
  515. package/dist/vscode-R-r-snippets.js +0 -534
  516. package/dist/vscode-R-rmarkdown.js +0 -461
  517. package/dist/vscode-R.js +0 -660
  518. package/dist/vscode-django-filters.js +0 -340
  519. package/dist/vscode-django.js +0 -37
  520. package/dist/vscode-go-go.js +0 -276
  521. package/dist/vscode-go.js +0 -1610
  522. package/dist/vscode-groovy.js +0 -28
  523. package/dist/vscode-python.js +0 -706
  524. package/dist/vue-directives.js +0 -25
  525. package/dist/vue-interpolations.js +0 -25
  526. package/dist/vue-sfc-style-variable-injection.js +0 -63
  527. package/dist/vue.js +0 -151
  528. package/dist/vue.tmLanguage.js +0 -1218
  529. package/dist/xml.js +0 -116
  530. package/dist/xml.tmLanguage.js +0 -395
  531. package/dist/xsl.js +0 -39
  532. package/dist/xsl.tmLanguage.js +0 -102
  533. package/dist/yaml.js +0 -82
  534. package/dist/yaml.tmLanguage.js +0 -629
  535. /package/dist/{extensions → editor}/autofold.d.ts +0 -0
  536. /package/dist/{extensions → editor}/cobol.d.ts +0 -0
  537. /package/dist/{extensions → editor}/index.d.ts +0 -0
package/dist/worker.js CHANGED
@@ -28,11 +28,20 @@ function createBase64WorkerFactory(base64, sourcemapArg, enableUnicodeArg) {
28
28
  };
29
29
  }
30
30
 
31
- var WorkerFactory = createBase64WorkerFactory('Lyogcm9sbHVwLXBsdWdpbi13ZWItd29ya2VyLWxvYWRlciAqLwp2YXIgd29ya2VyX2NvZGU9ZnVuY3Rpb24oZSl7InVzZSBzdHJpY3QiO2NvbnN0IHQ9bmV3IGNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5saXN0ZW5lcnM9W10sdGhpcy51bmV4cGVjdGVkRXJyb3JIYW5kbGVyPWZ1bmN0aW9uKGUpe3NldFRpbWVvdXQoKCgpPT57aWYoZS5zdGFjayl7aWYoYS5pc0Vycm9yTm9UZWxlbWV0cnkoZSkpdGhyb3cgbmV3IGEoZS5tZXNzYWdlKyJcblxuIitlLnN0YWNrKTt0aHJvdyBuZXcgRXJyb3IoZS5tZXNzYWdlKyJcblxuIitlLnN0YWNrKX10aHJvdyBlfSksMCl9fWVtaXQoZSl7dGhpcy5saXN0ZW5lcnMuZm9yRWFjaCgodD0+e3QoZSl9KSl9b25VbmV4cGVjdGVkRXJyb3IoZSl7dGhpcy51bmV4cGVjdGVkRXJyb3JIYW5kbGVyKGUpLHRoaXMuZW1pdChlKX1vblVuZXhwZWN0ZWRFeHRlcm5hbEVycm9yKGUpe3RoaXMudW5leHBlY3RlZEVycm9ySGFuZGxlcihlKX19O2Z1bmN0aW9uIG4oZSl7KGZ1bmN0aW9uKGUpe2lmKGUgaW5zdGFuY2VvZiBvKXJldHVybiEwO3JldHVybiBlIGluc3RhbmNlb2YgRXJyb3ImJmUubmFtZT09PWkmJmUubWVzc2FnZT09PWl9KShlKXx8dC5vblVuZXhwZWN0ZWRFcnJvcihlKX1mdW5jdGlvbiByKGUpe2lmKGUgaW5zdGFuY2VvZiBFcnJvcil7Y29uc3R7bmFtZTp0LG1lc3NhZ2U6bn09ZTtyZXR1cm57JGlzRXJyb3I6ITAsbmFtZTp0LG1lc3NhZ2U6bixzdGFjazplLnN0YWNrdHJhY2V8fGUuc3RhY2ssbm9UZWxlbWV0cnk6YS5pc0Vycm9yTm9UZWxlbWV0cnkoZSl9fXJldHVybiBlfWNvbnN0IGk9IkNhbmNlbGVkIjtjbGFzcyBvIGV4dGVuZHMgRXJyb3J7Y29uc3RydWN0b3IoKXtzdXBlcihpKSx0aGlzLm5hbWU9dGhpcy5tZXNzYWdlfX1jbGFzcyBhIGV4dGVuZHMgRXJyb3J7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSksdGhpcy5uYW1lPSJFcnJvck5vVGVsZW1ldHJ5In1zdGF0aWMgZnJvbUVycm9yKGUpe2lmKGUgaW5zdGFuY2VvZiBhKXJldHVybiBlO2NvbnN0IHQ9bmV3IGE7cmV0dXJuIHQubWVzc2FnZT1lLm1lc3NhZ2UsdC5zdGFjaz1lLnN0YWNrLHR9c3RhdGljIGlzRXJyb3JOb1RlbGVtZXRyeShlKXtyZXR1cm4iRXJyb3JOb1RlbGVtZXRyeSI9PT1lLm5hbWV9fWZ1bmN0aW9uIHMoZSl7Y29uc3QgdD10aGlzO2xldCBuLHI9ITE7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHJ8fChyPSEwLG49ZS5hcHBseSh0LGFyZ3VtZW50cykpLG59fXZhciBsOyFmdW5jdGlvbihlKXtlLmlzPWZ1bmN0aW9uKGUpe3JldHVybiBlJiYib2JqZWN0Ij09dHlwZW9mIGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBlW1N5bWJvbC5pdGVyYXRvcl19O2NvbnN0IHQ9T2JqZWN0LmZyZWV6ZShbXSk7ZnVuY3Rpb24gbih0LG49TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZKXtjb25zdCByPVtdO2lmKDA9PT1uKXJldHVybltyLHRdO2NvbnN0IGk9dFtTeW1ib2wuaXRlcmF0b3JdKCk7Zm9yKGxldCB0PTA7dDxuO3QrKyl7Y29uc3QgdD1pLm5leHQoKTtpZih0LmRvbmUpcmV0dXJuW3IsZS5lbXB0eSgpXTtyLnB1c2godC52YWx1ZSl9cmV0dXJuW3Ise1tTeW1ib2wuaXRlcmF0b3JdOigpPT5pfV19ZS5lbXB0eT1mdW5jdGlvbigpe3JldHVybiB0fSxlLnNpbmdsZT1mdW5jdGlvbiooZSl7eWllbGQgZX0sZS5mcm9tPWZ1bmN0aW9uKGUpe3JldHVybiBlfHx0fSxlLmlzRW1wdHk9ZnVuY3Rpb24oZSl7cmV0dXJuIWV8fCEwPT09ZVtTeW1ib2wuaXRlcmF0b3JdKCkubmV4dCgpLmRvbmV9LGUuZmlyc3Q9ZnVuY3Rpb24oZSl7cmV0dXJuIGVbU3ltYm9sLml0ZXJhdG9yXSgpLm5leHQoKS52YWx1ZX0sZS5zb21lPWZ1bmN0aW9uKGUsdCl7Zm9yKGNvbnN0IG4gb2YgZSlpZih0KG4pKXJldHVybiEwO3JldHVybiExfSxlLmZpbmQ9ZnVuY3Rpb24oZSx0KXtmb3IoY29uc3QgbiBvZiBlKWlmKHQobikpcmV0dXJuIG59LGUuZmlsdGVyPWZ1bmN0aW9uKihlLHQpe2Zvcihjb25zdCBuIG9mIGUpdChuKSYmKHlpZWxkIG4pfSxlLm1hcD1mdW5jdGlvbiooZSx0KXtsZXQgbj0wO2Zvcihjb25zdCByIG9mIGUpeWllbGQgdChyLG4rKyl9LGUuY29uY2F0PWZ1bmN0aW9uKiguLi5lKXtmb3IoY29uc3QgdCBvZiBlKWZvcihjb25zdCBlIG9mIHQpeWllbGQgZX0sZS5jb25jYXROZXN0ZWQ9ZnVuY3Rpb24qKGUpe2Zvcihjb25zdCB0IG9mIGUpZm9yKGNvbnN0IGUgb2YgdCl5aWVsZCBlfSxlLnJlZHVjZT1mdW5jdGlvbihlLHQsbil7bGV0IHI9bjtmb3IoY29uc3QgbiBvZiBlKXI9dChyLG4pO3JldHVybiByfSxlLmZvckVhY2g9ZnVuY3Rpb24oZSx0KXtsZXQgbj0wO2Zvcihjb25zdCByIG9mIGUpdChyLG4rKyl9LGUuc2xpY2U9ZnVuY3Rpb24qKGUsdCxuPWUubGVuZ3RoKXtmb3IodDwwJiYodCs9ZS5sZW5ndGgpLG48MD9uKz1lLmxlbmd0aDpuPmUubGVuZ3RoJiYobj1lLmxlbmd0aCk7dDxuO3QrKyl5aWVsZCBlW3RdfSxlLmNvbnN1bWU9bixlLmNvbGxlY3Q9ZnVuY3Rpb24oZSl7cmV0dXJuIG4oZSlbMF19LGUuZXF1YWxzPWZ1bmN0aW9uKGUsdCxuPSgoZSx0KT0+ZT09PXQpKXtjb25zdCByPWVbU3ltYm9sLml0ZXJhdG9yXSgpLGk9dFtTeW1ib2wuaXRlcmF0b3JdKCk7Zm9yKDs7KXtjb25zdCBlPXIubmV4dCgpLHQ9aS5uZXh0KCk7aWYoZS5kb25lIT09dC5kb25lKXJldHVybiExO2lmKGUuZG9uZSlyZXR1cm4hMDtpZighbihlLnZhbHVlLHQudmFsdWUpKXJldHVybiExfX19KGx8fChsPXt9KSk7Y2xhc3MgYyBleHRlbmRzIEVycm9ye2NvbnN0cnVjdG9yKGUpe3N1cGVyKGBFbmNvdW50ZXJlZCBlcnJvcnMgd2hpbGUgZGlzcG9zaW5nIG9mIHN0b3JlLiBFcnJvcnM6IFske2Uuam9pbigiLCAiKX1dYCksdGhpcy5lcnJvcnM9ZX19ZnVuY3Rpb24gdShlKXtpZihsLmlzKGUpKXtjb25zdCB0PVtdO2Zvcihjb25zdCBuIG9mIGUpaWYobil0cnl7bi5kaXNwb3NlKCl9Y2F0Y2goZSl7dC5wdXNoKGUpfWlmKDE9PT10Lmxlbmd0aCl0aHJvdyB0WzBdO2lmKHQubGVuZ3RoPjEpdGhyb3cgbmV3IGModCk7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSk/W106ZX1pZihlKXJldHVybiBlLmRpc3Bvc2UoKSxlfWZ1bmN0aW9uIGgoZSl7cmV0dXJue2Rpc3Bvc2U6cygoKCk9PntlKCl9KSl9fWNsYXNzIGR7Y29uc3RydWN0b3IoKXt0aGlzLl90b0Rpc3Bvc2U9bmV3IFNldCx0aGlzLl9pc0Rpc3Bvc2VkPSExfWRpc3Bvc2UoKXt0aGlzLl9pc0Rpc3Bvc2VkfHwodGhpcy5faXNEaXNwb3NlZD0hMCx0aGlzLmNsZWFyKCkpfWdldCBpc0Rpc3Bvc2VkKCl7cmV0dXJuIHRoaXMuX2lzRGlzcG9zZWR9Y2xlYXIoKXt0cnl7dSh0aGlzLl90b0Rpc3Bvc2UudmFsdWVzKCkpfWZpbmFsbHl7dGhpcy5fdG9EaXNwb3NlLmNsZWFyKCl9fWFkZChlKXtpZighZSlyZXR1cm4gZTtpZihlPT09dGhpcyl0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCByZWdpc3RlciBhIGRpc3Bvc2FibGUgb24gaXRzZWxmISIpO3JldHVybiB0aGlzLl9pc0Rpc3Bvc2VkP2QuRElTQUJMRV9ESVNQT1NFRF9XQVJOSU5HfHxjb25zb2xlLndhcm4obmV3IEVycm9yKCJUcnlpbmcgdG8gYWRkIGEgZGlzcG9zYWJsZSB0byBhIERpc3Bvc2FibGVTdG9yZSB0aGF0IGhhcyBhbHJlYWR5IGJlZW4gZGlzcG9zZWQgb2YuIFRoZSBhZGRlZCBvYmplY3Qgd2lsbCBiZSBsZWFrZWQhIikuc3RhY2spOnRoaXMuX3RvRGlzcG9zZS5hZGQoZSksZX19ZC5ESVNBQkxFX0RJU1BPU0VEX1dBUk5JTkc9ITE7Y2xhc3MgZntjb25zdHJ1Y3Rvcigpe3RoaXMuX3N0b3JlPW5ldyBkLHRoaXMuX3N0b3JlfWRpc3Bvc2UoKXt0aGlzLl9zdG9yZS5kaXNwb3NlKCl9X3JlZ2lzdGVyKGUpe2lmKGU9PT10aGlzKXRocm93IG5ldyBFcnJvcigiQ2Fubm90IHJlZ2lzdGVyIGEgZGlzcG9zYWJsZSBvbiBpdHNlbGYhIik7cmV0dXJuIHRoaXMuX3N0b3JlLmFkZChlKX19Zi5Ob25lPU9iamVjdC5mcmVlemUoe2Rpc3Bvc2UoKXt9fSk7Y2xhc3MgbXtjb25zdHJ1Y3Rvcigpe3RoaXMuZGlzcG9zZT0oKT0+e30sdGhpcy51bnNldD0oKT0+e30sdGhpcy5pc3NldD0oKT0+ITF9c2V0KGUpe2xldCB0PWU7cmV0dXJuIHRoaXMudW5zZXQ9KCk9PnQ9dm9pZCAwLHRoaXMuaXNzZXQ9KCk9PnZvaWQgMCE9PXQsdGhpcy5kaXNwb3NlPSgpPT57dCYmKHQoKSx0PXZvaWQgMCl9LHRoaXN9fWNsYXNzIGd7Y29uc3RydWN0b3IoZSl7dGhpcy5lbGVtZW50PWUsdGhpcy5uZXh0PWcuVW5kZWZpbmVkLHRoaXMucHJldj1nLlVuZGVmaW5lZH19Zy5VbmRlZmluZWQ9bmV3IGcodm9pZCAwKTtjbGFzcyBie2NvbnN0cnVjdG9yKCl7dGhpcy5fZmlyc3Q9Zy5VbmRlZmluZWQsdGhpcy5fbGFzdD1nLlVuZGVmaW5lZCx0aGlzLl9zaXplPTB9Z2V0IHNpemUoKXtyZXR1cm4gdGhpcy5fc2l6ZX1pc0VtcHR5KCl7cmV0dXJuIHRoaXMuX2ZpcnN0PT09Zy5VbmRlZmluZWR9Y2xlYXIoKXtsZXQgZT10aGlzLl9maXJzdDtmb3IoO2UhPT1nLlVuZGVmaW5lZDspe2NvbnN0IHQ9ZS5uZXh0O2UucHJldj1nLlVuZGVmaW5lZCxlLm5leHQ9Zy5VbmRlZmluZWQsZT10fXRoaXMuX2ZpcnN0PWcuVW5kZWZpbmVkLHRoaXMuX2xhc3Q9Zy5VbmRlZmluZWQsdGhpcy5fc2l6ZT0wfXVuc2hpZnQoZSl7cmV0dXJuIHRoaXMuX2luc2VydChlLCExKX1wdXNoKGUpe3JldHVybiB0aGlzLl9pbnNlcnQoZSwhMCl9X2luc2VydChlLHQpe2NvbnN0IG49bmV3IGcoZSk7aWYodGhpcy5fZmlyc3Q9PT1nLlVuZGVmaW5lZCl0aGlzLl9maXJzdD1uLHRoaXMuX2xhc3Q9bjtlbHNlIGlmKHQpe2NvbnN0IGU9dGhpcy5fbGFzdDt0aGlzLl9sYXN0PW4sbi5wcmV2PWUsZS5uZXh0PW59ZWxzZXtjb25zdCBlPXRoaXMuX2ZpcnN0O3RoaXMuX2ZpcnN0PW4sbi5uZXh0PWUsZS5wcmV2PW59dGhpcy5fc2l6ZSs9MTtsZXQgcj0hMTtyZXR1cm4oKT0+e3J8fChyPSEwLHRoaXMuX3JlbW92ZShuKSl9fXNoaWZ0KCl7aWYodGhpcy5fZmlyc3QhPT1nLlVuZGVmaW5lZCl7Y29uc3QgZT10aGlzLl9maXJzdC5lbGVtZW50O3JldHVybiB0aGlzLl9yZW1vdmUodGhpcy5fZmlyc3QpLGV9fXBvcCgpe2lmKHRoaXMuX2xhc3QhPT1nLlVuZGVmaW5lZCl7Y29uc3QgZT10aGlzLl9sYXN0LmVsZW1lbnQ7cmV0dXJuIHRoaXMuX3JlbW92ZSh0aGlzLl9sYXN0KSxlfX1fcmVtb3ZlKGUpe2lmKGUucHJldiE9PWcuVW5kZWZpbmVkJiZlLm5leHQhPT1nLlVuZGVmaW5lZCl7Y29uc3QgdD1lLnByZXY7dC5uZXh0PWUubmV4dCxlLm5leHQucHJldj10fWVsc2UgZS5wcmV2PT09Zy5VbmRlZmluZWQmJmUubmV4dD09PWcuVW5kZWZpbmVkPyh0aGlzLl9maXJzdD1nLlVuZGVmaW5lZCx0aGlzLl9sYXN0PWcuVW5kZWZpbmVkKTplLm5leHQ9PT1nLlVuZGVmaW5lZD8odGhpcy5fbGFzdD10aGlzLl9sYXN0LnByZXYsdGhpcy5fbGFzdC5uZXh0PWcuVW5kZWZpbmVkKTplLnByZXY9PT1nLlVuZGVmaW5lZCYmKHRoaXMuX2ZpcnN0PXRoaXMuX2ZpcnN0Lm5leHQsdGhpcy5fZmlyc3QucHJldj1nLlVuZGVmaW5lZCk7dGhpcy5fc2l6ZS09MX0qW1N5bWJvbC5pdGVyYXRvcl0oKXtsZXQgZT10aGlzLl9maXJzdDtmb3IoO2UhPT1nLlVuZGVmaW5lZDspeWllbGQgZS5lbGVtZW50LGU9ZS5uZXh0fX1sZXQgQz0idW5kZWZpbmVkIiE9dHlwZW9mIGRvY3VtZW50JiZkb2N1bWVudC5sb2NhdGlvbiYmZG9jdW1lbnQubG9jYXRpb24uaGFzaC5pbmRleE9mKCJwc2V1ZG89dHJ1ZSIpPj0wO3ZhciBwO2NvbnN0IHc9ImVuIjtsZXQgXyx5LFMsTD0hMSxOPSExLHY9ITEsRT0hMSxBPXc7Y29uc3Qgaz0ib2JqZWN0Ij09dHlwZW9mIHNlbGY/c2VsZjoib2JqZWN0Ij09dHlwZW9mIGdsb2JhbD9nbG9iYWw6e307bGV0IE07dm9pZCAwIT09ay52c2NvZGUmJnZvaWQgMCE9PWsudnNjb2RlLnByb2Nlc3M/TT1rLnZzY29kZS5wcm9jZXNzOiJ1bmRlZmluZWQiIT10eXBlb2YgcHJvY2VzcyYmKE09cHJvY2Vzcyk7Y29uc3QgUj0ic3RyaW5nIj09dHlwZW9mKG51bGw9PT0ocD1udWxsPT1NP3ZvaWQgMDpNLnZlcnNpb25zKXx8dm9pZCAwPT09cD92b2lkIDA6cC5lbGVjdHJvbikmJiJyZW5kZXJlciI9PT0obnVsbD09TT92b2lkIDA6TS50eXBlKTtpZigib2JqZWN0IiE9dHlwZW9mIG5hdmlnYXRvcnx8UilpZigib2JqZWN0Ij09dHlwZW9mIE0pe0w9IndpbjMyIj09PU0ucGxhdGZvcm0sTj0iZGFyd2luIj09PU0ucGxhdGZvcm0sdj0ibGludXgiPT09TS5wbGF0Zm9ybSx2JiZNLmVudi5TTkFQJiZNLmVudi5TTkFQX1JFVklTSU9OLE0uZW52LkNJfHxNLmVudi5CVUlMRF9BUlRJRkFDVFNUQUdJTkdESVJFQ1RPUlksXz13LEE9dztjb25zdCBlPU0uZW52LlZTQ09ERV9OTFNfQ09ORklHO2lmKGUpdHJ5e2NvbnN0IHQ9SlNPTi5wYXJzZShlKSxuPXQuYXZhaWxhYmxlTGFuZ3VhZ2VzWyIqIl07Xz10LmxvY2FsZSxBPW58fHcseT10Ll90cmFuc2xhdGlvbnNDb25maWdGaWxlfWNhdGNoKGUpe319ZWxzZSBjb25zb2xlLmVycm9yKCJVbmFibGUgdG8gcmVzb2x2ZSBwbGF0Zm9ybS4iKTtlbHNlIFM9bmF2aWdhdG9yLnVzZXJBZ2VudCxMPVMuaW5kZXhPZigiV2luZG93cyIpPj0wLE49Uy5pbmRleE9mKCJNYWNpbnRvc2giKT49MCwoUy5pbmRleE9mKCJNYWNpbnRvc2giKT49MHx8Uy5pbmRleE9mKCJpUGFkIik+PTB8fFMuaW5kZXhPZigiaVBob25lIik+PTApJiZuYXZpZ2F0b3IubWF4VG91Y2hQb2ludHMmJm5hdmlnYXRvci5tYXhUb3VjaFBvaW50cyx2PVMuaW5kZXhPZigiTGludXgiKT49MCxFPSEwLGZ1bmN0aW9uKGUsdCwuLi5uKXshZnVuY3Rpb24oZSx0KXtsZXQgbjtuPTA9PT10Lmxlbmd0aD9lOmUucmVwbGFjZSgvXHsoXGQrKVx9L2csKChlLG4pPT57Y29uc3Qgcj1uWzBdLGk9dFtyXTtsZXQgbz1lO3JldHVybiJzdHJpbmciPT10eXBlb2YgaT9vPWk6Im51bWJlciIhPXR5cGVvZiBpJiYiYm9vbGVhbiIhPXR5cGVvZiBpJiZudWxsIT1pfHwobz1TdHJpbmcoaSkpLG99KSksQyYmKG49Iu+8uyIrbi5yZXBsYWNlKC9bYW91ZWldL2csIiQmJCYiKSsi77y9Iil9KHQsbil9KDAsIl8iKSxfPXcsQT1fO2NvbnN0IE89TCx4PU47RSYmay5pbXBvcnRTY3JpcHRzO2NvbnN0IFA9UyxUPSJmdW5jdGlvbiI9PXR5cGVvZiBrLnBvc3RNZXNzYWdlJiYhay5pbXBvcnRTY3JpcHRzOygoKT0+e2lmKFQpe2NvbnN0IGU9W107ay5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwodD0+e2lmKHQuZGF0YSYmdC5kYXRhLnZzY29kZVNjaGVkdWxlQXN5bmNXb3JrKWZvcihsZXQgbj0wLHI9ZS5sZW5ndGg7bjxyO24rKyl7Y29uc3Qgcj1lW25dO2lmKHIuaWQ9PT10LmRhdGEudnNjb2RlU2NoZWR1bGVBc3luY1dvcmspcmV0dXJuIGUuc3BsaWNlKG4sMSksdm9pZCByLmNhbGxiYWNrKCl9fSkpO2xldCB0PTA7cmV0dXJuIG49Pntjb25zdCByPSsrdDtlLnB1c2goe2lkOnIsY2FsbGJhY2s6bn0pLGsucG9zdE1lc3NhZ2Uoe3ZzY29kZVNjaGVkdWxlQXN5bmNXb3JrOnJ9LCIqIil9fX0pKCk7Y29uc3QgST0hIShQJiZQLmluZGV4T2YoIkNocm9tZSIpPj0wKTtQJiZQLmluZGV4T2YoIkZpcmVmb3giKSwhSSYmUCYmUC5pbmRleE9mKCJTYWZhcmkiKSxQJiZQLmluZGV4T2YoIkVkZy8iKSxQJiZQLmluZGV4T2YoIkFuZHJvaWQiKTtjb25zdCBLPWsucGVyZm9ybWFuY2UmJiJmdW5jdGlvbiI9PXR5cGVvZiBrLnBlcmZvcm1hbmNlLm5vdztjbGFzcyBEe2NvbnN0cnVjdG9yKGUpe3RoaXMuX2hpZ2hSZXNvbHV0aW9uPUsmJmUsdGhpcy5fc3RhcnRUaW1lPXRoaXMuX25vdygpLHRoaXMuX3N0b3BUaW1lPS0xfXN0YXRpYyBjcmVhdGUoZT0hMCl7cmV0dXJuIG5ldyBEKGUpfXN0b3AoKXt0aGlzLl9zdG9wVGltZT10aGlzLl9ub3coKX1lbGFwc2VkKCl7cmV0dXJuLTEhPT10aGlzLl9zdG9wVGltZT90aGlzLl9zdG9wVGltZS10aGlzLl9zdGFydFRpbWU6dGhpcy5fbm93KCktdGhpcy5fc3RhcnRUaW1lfV9ub3coKXtyZXR1cm4gdGhpcy5faGlnaFJlc29sdXRpb24/ay5wZXJmb3JtYW5jZS5ub3coKTpEYXRlLm5vdygpfX12YXIgVixGOyFmdW5jdGlvbihlKXtmdW5jdGlvbiB0KGUpe3JldHVybih0LG49bnVsbCxyKT0+e2xldCBpLG89ITE7cmV0dXJuIGk9ZSgoZT0+e2lmKCFvKXJldHVybiBpP2kuZGlzcG9zZSgpOm89ITAsdC5jYWxsKG4sZSl9KSxudWxsLHIpLG8mJmkuZGlzcG9zZSgpLGl9fWZ1bmN0aW9uIG4oZSx0LG4pe3JldHVybiBhKCgobixyPW51bGwsaSk9PmUoKGU9Pm4uY2FsbChyLHQoZSkpKSxudWxsLGkpKSxuKX1mdW5jdGlvbiByKGUsdCxuKXtyZXR1cm4gYSgoKG4scj1udWxsLGkpPT5lKChlPT57dChlKSxuLmNhbGwocixlKX0pLG51bGwsaSkpLG4pfWZ1bmN0aW9uIGkoZSx0LG4pe3JldHVybiBhKCgobixyPW51bGwsaSk9PmUoKGU9PnQoZSkmJm4uY2FsbChyLGUpKSxudWxsLGkpKSxuKX1mdW5jdGlvbiBvKGUsdCxyLGkpe2xldCBvPXI7cmV0dXJuIG4oZSwoZT0+KG89dChvLGUpLG8pKSxpKX1mdW5jdGlvbiBhKGUsdCl7bGV0IG47Y29uc3Qgcj1uZXcgSCh7b25GaXJzdExpc3RlbmVyQWRkKCl7bj1lKHIuZmlyZSxyKX0sb25MYXN0TGlzdGVuZXJSZW1vdmUoKXtudWxsPT1ufHxuLmRpc3Bvc2UoKX19KTtyZXR1cm4gbnVsbD09dHx8dC5hZGQociksci5ldmVudH1mdW5jdGlvbiBzKGUsdCxuPTEwMCxyPSExLGksbyl7bGV0IGEscyxsLGM9MDtjb25zdCB1PW5ldyBIKHtsZWFrV2FybmluZ1RocmVzaG9sZDppLG9uRmlyc3RMaXN0ZW5lckFkZCgpe2E9ZSgoZT0+e2MrKyxzPXQocyxlKSxyJiYhbCYmKHUuZmlyZShzKSxzPXZvaWQgMCksY2xlYXJUaW1lb3V0KGwpLGw9c2V0VGltZW91dCgoKCk9Pntjb25zdCBlPXM7cz12b2lkIDAsbD12b2lkIDAsKCFyfHxjPjEpJiZ1LmZpcmUoZSksYz0wfSksbil9KSl9LG9uTGFzdExpc3RlbmVyUmVtb3ZlKCl7YS5kaXNwb3NlKCl9fSk7cmV0dXJuIG51bGw9PW98fG8uYWRkKHUpLHUuZXZlbnR9ZnVuY3Rpb24gbChlLHQ9KChlLHQpPT5lPT09dCksbil7bGV0IHIsbz0hMDtyZXR1cm4gaShlLChlPT57Y29uc3Qgbj1vfHwhdChlLHIpO3JldHVybiBvPSExLHI9ZSxufSksbil9ZS5Ob25lPSgpPT5mLk5vbmUsZS5vbmNlPXQsZS5tYXA9bixlLmZvckVhY2g9cixlLmZpbHRlcj1pLGUuc2lnbmFsPWZ1bmN0aW9uKGUpe3JldHVybiBlfSxlLmFueT1mdW5jdGlvbiguLi5lKXtyZXR1cm4odCxuPW51bGwscik9PmZ1bmN0aW9uKC4uLmUpe3JldHVybiBoKCgoKT0+dShlKSkpfSguLi5lLm1hcCgoZT0+ZSgoZT0+dC5jYWxsKG4sZSkpLG51bGwscikpKSl9LGUucmVkdWNlPW8sZS5kZWJvdW5jZT1zLGUubGF0Y2g9bCxlLnNwbGl0PWZ1bmN0aW9uKHQsbixyKXtyZXR1cm5bZS5maWx0ZXIodCxuLHIpLGUuZmlsdGVyKHQsKGU9PiFuKGUpKSxyKV19LGUuYnVmZmVyPWZ1bmN0aW9uKGUsdD0hMSxuPVtdKXtsZXQgcj1uLnNsaWNlKCksaT1lKChlPT57cj9yLnB1c2goZSk6YS5maXJlKGUpfSkpO2NvbnN0IG89KCk9PntudWxsPT1yfHxyLmZvckVhY2goKGU9PmEuZmlyZShlKSkpLHI9bnVsbH0sYT1uZXcgSCh7b25GaXJzdExpc3RlbmVyQWRkKCl7aXx8KGk9ZSgoZT0+YS5maXJlKGUpKSkpfSxvbkZpcnN0TGlzdGVuZXJEaWRBZGQoKXtyJiYodD9zZXRUaW1lb3V0KG8pOm8oKSl9LG9uTGFzdExpc3RlbmVyUmVtb3ZlKCl7aSYmaS5kaXNwb3NlKCksaT1udWxsfX0pO3JldHVybiBhLmV2ZW50fTtjbGFzcyBje2NvbnN0cnVjdG9yKGUpe3RoaXMuZXZlbnQ9ZSx0aGlzLmRpc3Bvc2FibGVzPW5ldyBkfW1hcChlKXtyZXR1cm4gbmV3IGMobih0aGlzLmV2ZW50LGUsdGhpcy5kaXNwb3NhYmxlcykpfWZvckVhY2goZSl7cmV0dXJuIG5ldyBjKHIodGhpcy5ldmVudCxlLHRoaXMuZGlzcG9zYWJsZXMpKX1maWx0ZXIoZSl7cmV0dXJuIG5ldyBjKGkodGhpcy5ldmVudCxlLHRoaXMuZGlzcG9zYWJsZXMpKX1yZWR1Y2UoZSx0KXtyZXR1cm4gbmV3IGMobyh0aGlzLmV2ZW50LGUsdCx0aGlzLmRpc3Bvc2FibGVzKSl9bGF0Y2goKXtyZXR1cm4gbmV3IGMobCh0aGlzLmV2ZW50LHZvaWQgMCx0aGlzLmRpc3Bvc2FibGVzKSl9ZGVib3VuY2UoZSx0PTEwMCxuPSExLHIpe3JldHVybiBuZXcgYyhzKHRoaXMuZXZlbnQsZSx0LG4scix0aGlzLmRpc3Bvc2FibGVzKSl9b24oZSx0LG4pe3JldHVybiB0aGlzLmV2ZW50KGUsdCxuKX1vbmNlKGUsbixyKXtyZXR1cm4gdCh0aGlzLmV2ZW50KShlLG4scil9ZGlzcG9zZSgpe3RoaXMuZGlzcG9zYWJsZXMuZGlzcG9zZSgpfX1lLmNoYWluPWZ1bmN0aW9uKGUpe3JldHVybiBuZXcgYyhlKX0sZS5mcm9tTm9kZUV2ZW50RW1pdHRlcj1mdW5jdGlvbihlLHQsbj0oZT0+ZSkpe2NvbnN0IHI9KC4uLmUpPT5pLmZpcmUobiguLi5lKSksaT1uZXcgSCh7b25GaXJzdExpc3RlbmVyQWRkOigpPT5lLm9uKHQsciksb25MYXN0TGlzdGVuZXJSZW1vdmU6KCk9PmUucmVtb3ZlTGlzdGVuZXIodCxyKX0pO3JldHVybiBpLmV2ZW50fSxlLmZyb21ET01FdmVudEVtaXR0ZXI9ZnVuY3Rpb24oZSx0LG49KGU9PmUpKXtjb25zdCByPSguLi5lKT0+aS5maXJlKG4oLi4uZSkpLGk9bmV3IEgoe29uRmlyc3RMaXN0ZW5lckFkZDooKT0+ZS5hZGRFdmVudExpc3RlbmVyKHQsciksb25MYXN0TGlzdGVuZXJSZW1vdmU6KCk9PmUucmVtb3ZlRXZlbnRMaXN0ZW5lcih0LHIpfSk7cmV0dXJuIGkuZXZlbnR9LGUudG9Qcm9taXNlPWZ1bmN0aW9uKGUpe3JldHVybiBuZXcgUHJvbWlzZSgobj0+dChlKShuKSkpfSxlLnJ1bkFuZFN1YnNjcmliZT1mdW5jdGlvbihlLHQpe3JldHVybiB0KHZvaWQgMCksZSgoZT0+dChlKSkpfSxlLnJ1bkFuZFN1YnNjcmliZVdpdGhTdG9yZT1mdW5jdGlvbihlLHQpe2xldCBuPW51bGw7ZnVuY3Rpb24gcihlKXtudWxsPT1ufHxuLmRpc3Bvc2UoKSxuPW5ldyBkLHQoZSxuKX1yKHZvaWQgMCk7Y29uc3QgaT1lKChlPT5yKGUpKSk7cmV0dXJuIGgoKCgpPT57aS5kaXNwb3NlKCksbnVsbD09bnx8bi5kaXNwb3NlKCl9KSl9O2NsYXNzIG17Y29uc3RydWN0b3IoZSx0KXt0aGlzLm9icz1lLHRoaXMuX2NvdW50ZXI9MCx0aGlzLl9oYXNDaGFuZ2VkPSExO2NvbnN0IG49e29uRmlyc3RMaXN0ZW5lckFkZDooKT0+e2UuYWRkT2JzZXJ2ZXIodGhpcyl9LG9uTGFzdExpc3RlbmVyUmVtb3ZlOigpPT57ZS5yZW1vdmVPYnNlcnZlcih0aGlzKX19O3RoaXMuZW1pdHRlcj1uZXcgSChuKSx0JiZ0LmFkZCh0aGlzLmVtaXR0ZXIpfWJlZ2luVXBkYXRlKGUpe3RoaXMuX2NvdW50ZXIrK31oYW5kbGVDaGFuZ2UoZSx0KXt0aGlzLl9oYXNDaGFuZ2VkPSEwfWVuZFVwZGF0ZShlKXswPT0tLXRoaXMuX2NvdW50ZXImJnRoaXMuX2hhc0NoYW5nZWQmJih0aGlzLl9oYXNDaGFuZ2VkPSExLHRoaXMuZW1pdHRlci5maXJlKHRoaXMub2JzLmdldCgpKSl9fWUuZnJvbU9ic2VydmFibGU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbmV3IG0oZSx0KS5lbWl0dGVyLmV2ZW50fX0oVnx8KFY9e30pKTtjbGFzcyBCe2NvbnN0cnVjdG9yKGUpe3RoaXMuX2xpc3RlbmVyQ291bnQ9MCx0aGlzLl9pbnZvY2F0aW9uQ291bnQ9MCx0aGlzLl9lbGFwc2VkT3ZlcmFsbD0wLHRoaXMuX25hbWU9YCR7ZX1fJHtCLl9pZFBvb2wrK31gfXN0YXJ0KGUpe3RoaXMuX3N0b3BXYXRjaD1uZXcgRCghMCksdGhpcy5fbGlzdGVuZXJDb3VudD1lfXN0b3AoKXtpZih0aGlzLl9zdG9wV2F0Y2gpe2NvbnN0IGU9dGhpcy5fc3RvcFdhdGNoLmVsYXBzZWQoKTt0aGlzLl9lbGFwc2VkT3ZlcmFsbCs9ZSx0aGlzLl9pbnZvY2F0aW9uQ291bnQrPTEsY29uc29sZS5pbmZvKGBkaWQgRklSRSAke3RoaXMuX25hbWV9OiBlbGFwc2VkX21zOiAke2UudG9GaXhlZCg1KX0sIGxpc3RlbmVyOiAke3RoaXMuX2xpc3RlbmVyQ291bnR9IChlbGFwc2VkX292ZXJhbGw6ICR7dGhpcy5fZWxhcHNlZE92ZXJhbGwudG9GaXhlZCgyKX0sIGludm9jYXRpb25zOiAke3RoaXMuX2ludm9jYXRpb25Db3VudH0pYCksdGhpcy5fc3RvcFdhdGNoPXZvaWQgMH19fUIuX2lkUG9vbD0wO2NsYXNzIFV7Y29uc3RydWN0b3IoZSl7dGhpcy52YWx1ZT1lfXN0YXRpYyBjcmVhdGUoKXt2YXIgZTtyZXR1cm4gbmV3IFUobnVsbCE9PShlPShuZXcgRXJyb3IpLnN0YWNrKSYmdm9pZCAwIT09ZT9lOiIiKX1wcmludCgpe2NvbnNvbGUud2Fybih0aGlzLnZhbHVlLnNwbGl0KCJcbiIpLnNsaWNlKDIpLmpvaW4oIlxuIikpfX1jbGFzcyBxe2NvbnN0cnVjdG9yKGUsdCxuKXt0aGlzLmNhbGxiYWNrPWUsdGhpcy5jYWxsYmFja1RoaXM9dCx0aGlzLnN0YWNrPW4sdGhpcy5zdWJzY3JpcHRpb249bmV3IG19aW52b2tlKGUpe3RoaXMuY2FsbGJhY2suY2FsbCh0aGlzLmNhbGxiYWNrVGhpcyxlKX19Y2xhc3MgSHtjb25zdHJ1Y3RvcihlKXt2YXIgdCxuO3RoaXMuX2Rpc3Bvc2VkPSExLHRoaXMuX29wdGlvbnM9ZSx0aGlzLl9sZWFrYWdlTW9uPXZvaWQgMCx0aGlzLl9wZXJmTW9uPShudWxsPT09KHQ9dGhpcy5fb3B0aW9ucyl8fHZvaWQgMD09PXQ/dm9pZCAwOnQuX3Byb2ZOYW1lKT9uZXcgQih0aGlzLl9vcHRpb25zLl9wcm9mTmFtZSk6dm9pZCAwLHRoaXMuX2RlbGl2ZXJ5UXVldWU9bnVsbD09PShuPXRoaXMuX29wdGlvbnMpfHx2b2lkIDA9PT1uP3ZvaWQgMDpuLmRlbGl2ZXJ5UXVldWV9ZGlzcG9zZSgpe3ZhciBlLHQsbixyO3RoaXMuX2Rpc3Bvc2VkfHwodGhpcy5fZGlzcG9zZWQ9ITAsdGhpcy5fbGlzdGVuZXJzJiZ0aGlzLl9saXN0ZW5lcnMuY2xlYXIoKSxudWxsPT09KGU9dGhpcy5fZGVsaXZlcnlRdWV1ZSl8fHZvaWQgMD09PWV8fGUuY2xlYXIodGhpcyksbnVsbD09PShuPW51bGw9PT0odD10aGlzLl9vcHRpb25zKXx8dm9pZCAwPT09dD92b2lkIDA6dC5vbkxhc3RMaXN0ZW5lclJlbW92ZSl8fHZvaWQgMD09PW58fG4uY2FsbCh0KSxudWxsPT09KHI9dGhpcy5fbGVha2FnZU1vbil8fHZvaWQgMD09PXJ8fHIuZGlzcG9zZSgpKX1nZXQgZXZlbnQoKXtyZXR1cm4gdGhpcy5fZXZlbnR8fCh0aGlzLl9ldmVudD0oZSx0LG4pPT57dmFyIHIsaSxvO3RoaXMuX2xpc3RlbmVyc3x8KHRoaXMuX2xpc3RlbmVycz1uZXcgYik7Y29uc3QgYT10aGlzLl9saXN0ZW5lcnMuaXNFbXB0eSgpO2xldCBzLGw7YSYmKG51bGw9PT0ocj10aGlzLl9vcHRpb25zKXx8dm9pZCAwPT09cj92b2lkIDA6ci5vbkZpcnN0TGlzdGVuZXJBZGQpJiZ0aGlzLl9vcHRpb25zLm9uRmlyc3RMaXN0ZW5lckFkZCh0aGlzKSx0aGlzLl9sZWFrYWdlTW9uJiZ0aGlzLl9saXN0ZW5lcnMuc2l6ZT49MzAmJihsPVUuY3JlYXRlKCkscz10aGlzLl9sZWFrYWdlTW9uLmNoZWNrKGwsdGhpcy5fbGlzdGVuZXJzLnNpemUrMSkpO2NvbnN0IGM9bmV3IHEoZSx0LGwpLHU9dGhpcy5fbGlzdGVuZXJzLnB1c2goYyk7YSYmKG51bGw9PT0oaT10aGlzLl9vcHRpb25zKXx8dm9pZCAwPT09aT92b2lkIDA6aS5vbkZpcnN0TGlzdGVuZXJEaWRBZGQpJiZ0aGlzLl9vcHRpb25zLm9uRmlyc3RMaXN0ZW5lckRpZEFkZCh0aGlzKSwobnVsbD09PShvPXRoaXMuX29wdGlvbnMpfHx2b2lkIDA9PT1vP3ZvaWQgMDpvLm9uTGlzdGVuZXJEaWRBZGQpJiZ0aGlzLl9vcHRpb25zLm9uTGlzdGVuZXJEaWRBZGQodGhpcyxlLHQpO2NvbnN0IGg9Yy5zdWJzY3JpcHRpb24uc2V0KCgoKT0+e2lmKG51bGw9PXN8fHMoKSwhdGhpcy5fZGlzcG9zZWQmJih1KCksdGhpcy5fb3B0aW9ucyYmdGhpcy5fb3B0aW9ucy5vbkxhc3RMaXN0ZW5lclJlbW92ZSkpe3RoaXMuX2xpc3RlbmVycyYmIXRoaXMuX2xpc3RlbmVycy5pc0VtcHR5KCl8fHRoaXMuX29wdGlvbnMub25MYXN0TGlzdGVuZXJSZW1vdmUodGhpcyl9fSkpO3JldHVybiBuIGluc3RhbmNlb2YgZD9uLmFkZChoKTpBcnJheS5pc0FycmF5KG4pJiZuLnB1c2goaCksaH0pLHRoaXMuX2V2ZW50fWZpcmUoZSl7dmFyIHQsbjtpZih0aGlzLl9saXN0ZW5lcnMpe3RoaXMuX2RlbGl2ZXJ5UXVldWV8fCh0aGlzLl9kZWxpdmVyeVF1ZXVlPW5ldyAkKTtmb3IoY29uc3QgdCBvZiB0aGlzLl9saXN0ZW5lcnMpdGhpcy5fZGVsaXZlcnlRdWV1ZS5wdXNoKHRoaXMsdCxlKTtudWxsPT09KHQ9dGhpcy5fcGVyZk1vbil8fHZvaWQgMD09PXR8fHQuc3RhcnQodGhpcy5fZGVsaXZlcnlRdWV1ZS5zaXplKSx0aGlzLl9kZWxpdmVyeVF1ZXVlLmRlbGl2ZXIoKSxudWxsPT09KG49dGhpcy5fcGVyZk1vbil8fHZvaWQgMD09PW58fG4uc3RvcCgpfX19Y2xhc3MgV3tjb25zdHJ1Y3Rvcigpe3RoaXMuX3F1ZXVlPW5ldyBifWdldCBzaXplKCl7cmV0dXJuIHRoaXMuX3F1ZXVlLnNpemV9cHVzaChlLHQsbil7dGhpcy5fcXVldWUucHVzaChuZXcgeihlLHQsbikpfWNsZWFyKGUpe2NvbnN0IHQ9bmV3IGI7Zm9yKGNvbnN0IG4gb2YgdGhpcy5fcXVldWUpbi5lbWl0dGVyIT09ZSYmdC5wdXNoKG4pO3RoaXMuX3F1ZXVlPXR9ZGVsaXZlcigpe2Zvcig7dGhpcy5fcXVldWUuc2l6ZT4wOyl7Y29uc3QgZT10aGlzLl9xdWV1ZS5zaGlmdCgpO3RyeXtlLmxpc3RlbmVyLmludm9rZShlLmV2ZW50KX1jYXRjaChlKXtuKGUpfX19fWNsYXNzICQgZXh0ZW5kcyBXe2NsZWFyKGUpe3RoaXMuX3F1ZXVlLmNsZWFyKCl9fWNsYXNzIHp7Y29uc3RydWN0b3IoZSx0LG4pe3RoaXMuZW1pdHRlcj1lLHRoaXMubGlzdGVuZXI9dCx0aGlzLmV2ZW50PW59fWZ1bmN0aW9uIGooZSl7Y29uc3QgdD1bXTtmb3IoY29uc3QgbiBvZiBmdW5jdGlvbihlKXtsZXQgdD1bXSxuPU9iamVjdC5nZXRQcm90b3R5cGVPZihlKTtmb3IoO09iamVjdC5wcm90b3R5cGUhPT1uOyl0PXQuY29uY2F0KE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKG4pKSxuPU9iamVjdC5nZXRQcm90b3R5cGVPZihuKTtyZXR1cm4gdH0oZSkpImZ1bmN0aW9uIj09dHlwZW9mIGVbbl0mJnQucHVzaChuKTtyZXR1cm4gdH1mdW5jdGlvbiBHKGUsdD0iVW5yZWFjaGFibGUiKXt0aHJvdyBuZXcgRXJyb3IodCl9Y2xhc3MgWXtjb25zdHJ1Y3RvcihlKXt0aGlzLmV4ZWN1dG9yPWUsdGhpcy5fZGlkUnVuPSExfWhhc1ZhbHVlKCl7cmV0dXJuIHRoaXMuX2RpZFJ1bn1nZXRWYWx1ZSgpe2lmKCF0aGlzLl9kaWRSdW4pdHJ5e3RoaXMuX3ZhbHVlPXRoaXMuZXhlY3V0b3IoKX1jYXRjaChlKXt0aGlzLl9lcnJvcj1lfWZpbmFsbHl7dGhpcy5fZGlkUnVuPSEwfWlmKHRoaXMuX2Vycm9yKXRocm93IHRoaXMuX2Vycm9yO3JldHVybiB0aGlzLl92YWx1ZX1nZXQgcmF3VmFsdWUoKXtyZXR1cm4gdGhpcy5fdmFsdWV9fWZ1bmN0aW9uIFooZSl7cmV0dXJuIGU+PTY1JiZlPD05MH1mdW5jdGlvbiBRKGUpe3JldHVybiA1NTI5Njw9ZSYmZTw9NTYzMTl9ZnVuY3Rpb24gSihlLHQsbil7Y29uc3Qgcj1lLmNoYXJDb2RlQXQobik7aWYoUShyKSYmbisxPHQpe2NvbnN0IHQ9ZS5jaGFyQ29kZUF0KG4rMSk7aWYoZnVuY3Rpb24oZSl7cmV0dXJuIDU2MzIwPD1lJiZlPD01NzM0M30odCkpcmV0dXJuIHQtNTYzMjArKHItNTUyOTY8PDEwKSs2NTUzNn1yZXR1cm4gcn1jb25zdCBYPS9eW1x0XG5cclx4MjAtXHg3RV0qJC87Y2xhc3MgZWV7Y29uc3RydWN0b3IoZSl7dGhpcy5jb25mdXNhYmxlRGljdGlvbmFyeT1lfXN0YXRpYyBnZXRJbnN0YW5jZShlKXtyZXR1cm4gZWUuY2FjaGUuZ2V0KEFycmF5LmZyb20oZSkpfXN0YXRpYyBnZXRMb2NhbGVzKCl7cmV0dXJuIGVlLl9sb2NhbGVzLmdldFZhbHVlKCl9aXNBbWJpZ3VvdXMoZSl7cmV0dXJuIHRoaXMuY29uZnVzYWJsZURpY3Rpb25hcnkuaGFzKGUpfWdldFByaW1hcnlDb25mdXNhYmxlKGUpe3JldHVybiB0aGlzLmNvbmZ1c2FibGVEaWN0aW9uYXJ5LmdldChlKX1nZXRDb25mdXNhYmxlQ29kZVBvaW50cygpe3JldHVybiBuZXcgU2V0KHRoaXMuY29uZnVzYWJsZURpY3Rpb25hcnkua2V5cygpKX19Rj1lZSxlZS5hbWJpZ3VvdXNDaGFyYWN0ZXJEYXRhPW5ldyBZKCgoKT0+SlNPTi5wYXJzZSgneyJfY29tbW9uIjpbODIzMiwzMiw4MjMzLDMyLDU3NjAsMzIsODE5MiwzMiw4MTkzLDMyLDgxOTQsMzIsODE5NSwzMiw4MTk2LDMyLDgxOTcsMzIsODE5OCwzMiw4MjAwLDMyLDgyMDEsMzIsODIwMiwzMiw4Mjg3LDMyLDgxOTksMzIsODIzOSwzMiwyMDQyLDk1LDY1MTAxLDk1LDY1MTAyLDk1LDY1MTAzLDk1LDgyMDgsNDUsODIwOSw0NSw4MjEwLDQ1LDY1MTEyLDQ1LDE3NDgsNDUsODI1OSw0NSw3MjcsNDUsODcyMiw0NSwxMDEzNCw0NSwxMTQ1MCw0NSwxNTQ5LDQ0LDE2NDMsNDQsODIxOCw0NCwxODQsNDQsNDIyMzMsNDQsODk0LDU5LDIzMDcsNTgsMjY5MSw1OCwxNDE3LDU4LDE3OTUsNTgsMTc5Niw1OCw1ODY4LDU4LDY1MDcyLDU4LDYxNDcsNTgsNjE1Myw1OCw4MjgyLDU4LDE0NzUsNTgsNzYwLDU4LDQyODg5LDU4LDg3NTgsNTgsNzIwLDU4LDQyMjM3LDU4LDQ1MSwzMywxMTYwMSwzMyw2NjAsNjMsNTc3LDYzLDI0MjksNjMsNTAzOCw2Myw0MjczMSw2MywxMTkxNDksNDYsODIyOCw0NiwxNzkzLDQ2LDE3OTQsNDYsNDI1MTAsNDYsNjgxNzYsNDYsMTYzMiw0NiwxNzc2LDQ2LDQyMjMyLDQ2LDEzNzMsOTYsNjUyODcsOTYsODIxOSw5Niw4MjQyLDk2LDEzNzAsOTYsMTUyMyw5Niw4MTc1LDk2LDY1MzQ0LDk2LDkwMCw5Niw4MTg5LDk2LDgxMjUsOTYsODEyNyw5Niw4MTkwLDk2LDY5Nyw5Niw4ODQsOTYsNzEyLDk2LDcxNCw5Niw3MTUsOTYsNzU2LDk2LDY5OSw5Niw3MDEsOTYsNzAwLDk2LDcwMiw5Niw0Mjg5Miw5NiwxNDk3LDk2LDIwMzYsOTYsMjAzNyw5Niw1MTk0LDk2LDU4MzYsOTYsOTQwMzMsOTYsOTQwMzQsOTYsNjUzMzksOTEsMTAwODgsNDAsMTAwOTgsNDAsMTIzMDgsNDAsNjQ4MzAsNDAsNjUzNDEsOTMsMTAwODksNDEsMTAwOTksNDEsMTIzMDksNDEsNjQ4MzEsNDEsMTAxMDAsMTIzLDExOTA2MCwxMjMsMTAxMDEsMTI1LDY1MzQyLDk0LDgyNzAsNDIsMTY0NSw0Miw4NzI3LDQyLDY2MzM1LDQyLDU5NDEsNDcsODI1Nyw0Nyw4NzI1LDQ3LDgyNjAsNDcsOTU4NSw0NywxMDE4Nyw0NywxMDc0NCw0NywxMTkzNTQsNDcsMTI3NTUsNDcsMTIzMzksNDcsMTE0NjIsNDcsMjAwMzEsNDcsMTIwMzUsNDcsNjUzNDAsOTIsNjUxMjgsOTIsODcyNiw5MiwxMDE4OSw5MiwxMDc0MSw5MiwxMDc0NSw5MiwxMTkzMTEsOTIsMTE5MzU1LDkyLDEyNzU2LDkyLDIwMDIyLDkyLDEyMDM0LDkyLDQyODcyLDM4LDcwOCw5NCw3MTAsOTQsNTg2OSw0MywxMDEzMyw0Myw2NjIwMyw0Myw4MjQ5LDYwLDEwMDk0LDYwLDcwNiw2MCwxMTkzNTAsNjAsNTE3Niw2MCw1ODEwLDYwLDUxMjAsNjEsMTE4NDAsNjEsMTI0NDgsNjEsNDIyMzksNjEsODI1MCw2MiwxMDA5NSw2Miw3MDcsNjIsMTE5MzUxLDYyLDUxNzEsNjIsOTQwMTUsNjIsODI3NSwxMjYsNzMyLDEyNiw4MTI4LDEyNiw4NzY0LDEyNiw2NTM3MiwxMjQsNjUyOTMsNDUsMTIwNzg0LDUwLDEyMDc5NCw1MCwxMjA4MDQsNTAsMTIwODE0LDUwLDEyMDgyNCw1MCwxMzAwMzQsNTAsNDI4NDIsNTAsNDIzLDUwLDEwMDAsNTAsNDI1NjQsNTAsNTMxMSw1MCw0MjczNSw1MCwxMTkzMDIsNTEsMTIwNzg1LDUxLDEyMDc5NSw1MSwxMjA4MDUsNTEsMTIwODE1LDUxLDEyMDgyNSw1MSwxMzAwMzUsNTEsNDI5MjMsNTEsNTQwLDUxLDQzOSw1MSw0Mjg1OCw1MSwxMTQ2OCw1MSwxMjQ4LDUxLDk0MDExLDUxLDcxODgyLDUxLDEyMDc4Niw1MiwxMjA3OTYsNTIsMTIwODA2LDUyLDEyMDgxNiw1MiwxMjA4MjYsNTIsMTMwMDM2LDUyLDUwNzAsNTIsNzE4NTUsNTIsMTIwNzg3LDUzLDEyMDc5Nyw1MywxMjA4MDcsNTMsMTIwODE3LDUzLDEyMDgyNyw1MywxMzAwMzcsNTMsNDQ0LDUzLDcxODY3LDUzLDEyMDc4OCw1NCwxMjA3OTgsNTQsMTIwODA4LDU0LDEyMDgxOCw1NCwxMjA4MjgsNTQsMTMwMDM4LDU0LDExNDc0LDU0LDUxMDIsNTQsNzE4OTMsNTQsMTE5MzE0LDU1LDEyMDc4OSw1NSwxMjA3OTksNTUsMTIwODA5LDU1LDEyMDgxOSw1NSwxMjA4MjksNTUsMTMwMDM5LDU1LDY2NzcwLDU1LDcxODc4LDU1LDI4MTksNTYsMjUzOCw1NiwyNjY2LDU2LDEyNTEzMSw1NiwxMjA3OTAsNTYsMTIwODAwLDU2LDEyMDgxMCw1NiwxMjA4MjAsNTYsMTIwODMwLDU2LDEzMDA0MCw1Niw1NDcsNTYsNTQ2LDU2LDY2MzMwLDU2LDI2NjMsNTcsMjkyMCw1NywyNTQxLDU3LDM0MzcsNTcsMTIwNzkxLDU3LDEyMDgwMSw1NywxMjA4MTEsNTcsMTIwODIxLDU3LDEyMDgzMSw1NywxMzAwNDEsNTcsNDI4NjIsNTcsMTE0NjYsNTcsNzE4ODQsNTcsNzE4NTIsNTcsNzE4OTQsNTcsOTA4Miw5Nyw2NTM0NSw5NywxMTk4MzQsOTcsMTE5ODg2LDk3LDExOTkzOCw5NywxMTk5OTAsOTcsMTIwMDQyLDk3LDEyMDA5NCw5NywxMjAxNDYsOTcsMTIwMTk4LDk3LDEyMDI1MCw5NywxMjAzMDIsOTcsMTIwMzU0LDk3LDEyMDQwNiw5NywxMjA0NTgsOTcsNTkzLDk3LDk0NSw5NywxMjA1MTQsOTcsMTIwNTcyLDk3LDEyMDYzMCw5NywxMjA2ODgsOTcsMTIwNzQ2LDk3LDY1MzEzLDY1LDExOTgwOCw2NSwxMTk4NjAsNjUsMTE5OTEyLDY1LDExOTk2NCw2NSwxMjAwMTYsNjUsMTIwMDY4LDY1LDEyMDEyMCw2NSwxMjAxNzIsNjUsMTIwMjI0LDY1LDEyMDI3Niw2NSwxMjAzMjgsNjUsMTIwMzgwLDY1LDEyMDQzMiw2NSw5MTMsNjUsMTIwNDg4LDY1LDEyMDU0Niw2NSwxMjA2MDQsNjUsMTIwNjYyLDY1LDEyMDcyMCw2NSw1MDM0LDY1LDU1NzMsNjUsNDIyMjIsNjUsOTQwMTYsNjUsNjYyMDgsNjUsMTE5ODM1LDk4LDExOTg4Nyw5OCwxMTk5MzksOTgsMTE5OTkxLDk4LDEyMDA0Myw5OCwxMjAwOTUsOTgsMTIwMTQ3LDk4LDEyMDE5OSw5OCwxMjAyNTEsOTgsMTIwMzAzLDk4LDEyMDM1NSw5OCwxMjA0MDcsOTgsMTIwNDU5LDk4LDM4OCw5OCw1MDcxLDk4LDUyMzQsOTgsNTU1MSw5OCw2NTMxNCw2Niw4NDkyLDY2LDExOTgwOSw2NiwxMTk4NjEsNjYsMTE5OTEzLDY2LDEyMDAxNyw2NiwxMjAwNjksNjYsMTIwMTIxLDY2LDEyMDE3Myw2NiwxMjAyMjUsNjYsMTIwMjc3LDY2LDEyMDMyOSw2NiwxMjAzODEsNjYsMTIwNDMzLDY2LDQyOTMyLDY2LDkxNCw2NiwxMjA0ODksNjYsMTIwNTQ3LDY2LDEyMDYwNSw2NiwxMjA2NjMsNjYsMTIwNzIxLDY2LDUxMDgsNjYsNTYyMyw2Niw0MjE5Miw2Niw2NjE3OCw2Niw2NjIwOSw2Niw2NjMwNSw2Niw2NTM0Nyw5OSw4NTczLDk5LDExOTgzNiw5OSwxMTk4ODgsOTksMTE5OTQwLDk5LDExOTk5Miw5OSwxMjAwNDQsOTksMTIwMDk2LDk5LDEyMDE0OCw5OSwxMjAyMDAsOTksMTIwMjUyLDk5LDEyMDMwNCw5OSwxMjAzNTYsOTksMTIwNDA4LDk5LDEyMDQ2MCw5OSw3NDI4LDk5LDEwMTAsOTksMTE0MjksOTksNDM5NTEsOTksNjY2MjEsOTksMTI4ODQ0LDY3LDcxOTIyLDY3LDcxOTEzLDY3LDY1MzE1LDY3LDg1NTcsNjcsODQ1MCw2Nyw4NDkzLDY3LDExOTgxMCw2NywxMTk4NjIsNjcsMTE5OTE0LDY3LDExOTk2Niw2NywxMjAwMTgsNjcsMTIwMTc0LDY3LDEyMDIyNiw2NywxMjAyNzgsNjcsMTIwMzMwLDY3LDEyMDM4Miw2NywxMjA0MzQsNjcsMTAxNyw2NywxMTQyOCw2Nyw1MDg3LDY3LDQyMjAyLDY3LDY2MjEwLDY3LDY2MzA2LDY3LDY2NTgxLDY3LDY2ODQ0LDY3LDg1NzQsMTAwLDg1MTgsMTAwLDExOTgzNywxMDAsMTE5ODg5LDEwMCwxMTk5NDEsMTAwLDExOTk5MywxMDAsMTIwMDQ1LDEwMCwxMjAwOTcsMTAwLDEyMDE0OSwxMDAsMTIwMjAxLDEwMCwxMjAyNTMsMTAwLDEyMDMwNSwxMDAsMTIwMzU3LDEwMCwxMjA0MDksMTAwLDEyMDQ2MSwxMDAsMTI4MSwxMDAsNTA5NSwxMDAsNTIzMSwxMDAsNDIxOTQsMTAwLDg1NTgsNjgsODUxNyw2OCwxMTk4MTEsNjgsMTE5ODYzLDY4LDExOTkxNSw2OCwxMTk5NjcsNjgsMTIwMDE5LDY4LDEyMDA3MSw2OCwxMjAxMjMsNjgsMTIwMTc1LDY4LDEyMDIyNyw2OCwxMjAyNzksNjgsMTIwMzMxLDY4LDEyMDM4Myw2OCwxMjA0MzUsNjgsNTAyNCw2OCw1NTk4LDY4LDU2MTAsNjgsNDIxOTUsNjgsODQ5NCwxMDEsNjUzNDksMTAxLDg0OTUsMTAxLDg1MTksMTAxLDExOTgzOCwxMDEsMTE5ODkwLDEwMSwxMTk5NDIsMTAxLDEyMDA0NiwxMDEsMTIwMDk4LDEwMSwxMjAxNTAsMTAxLDEyMDIwMiwxMDEsMTIwMjU0LDEwMSwxMjAzMDYsMTAxLDEyMDM1OCwxMDEsMTIwNDEwLDEwMSwxMjA0NjIsMTAxLDQzODI2LDEwMSwxMjEzLDEwMSw4OTU5LDY5LDY1MzE3LDY5LDg0OTYsNjksMTE5ODEyLDY5LDExOTg2NCw2OSwxMTk5MTYsNjksMTIwMDIwLDY5LDEyMDA3Miw2OSwxMjAxMjQsNjksMTIwMTc2LDY5LDEyMDIyOCw2OSwxMjAyODAsNjksMTIwMzMyLDY5LDEyMDM4NCw2OSwxMjA0MzYsNjksOTE3LDY5LDEyMDQ5Miw2OSwxMjA1NTAsNjksMTIwNjA4LDY5LDEyMDY2Niw2OSwxMjA3MjQsNjksMTE1NzcsNjksNTAzNiw2OSw0MjIyNCw2OSw3MTg0Niw2OSw3MTg1NCw2OSw2NjE4Miw2OSwxMTk4MzksMTAyLDExOTg5MSwxMDIsMTE5OTQzLDEwMiwxMTk5OTUsMTAyLDEyMDA0NywxMDIsMTIwMDk5LDEwMiwxMjAxNTEsMTAyLDEyMDIwMywxMDIsMTIwMjU1LDEwMiwxMjAzMDcsMTAyLDEyMDM1OSwxMDIsMTIwNDExLDEwMiwxMjA0NjMsMTAyLDQzODI5LDEwMiw0MjkwNSwxMDIsMzgzLDEwMiw3ODM3LDEwMiwxNDEyLDEwMiwxMTkzMTUsNzAsODQ5Nyw3MCwxMTk4MTMsNzAsMTE5ODY1LDcwLDExOTkxNyw3MCwxMjAwMjEsNzAsMTIwMDczLDcwLDEyMDEyNSw3MCwxMjAxNzcsNzAsMTIwMjI5LDcwLDEyMDI4MSw3MCwxMjAzMzMsNzAsMTIwMzg1LDcwLDEyMDQzNyw3MCw0MjkwNCw3MCw5ODgsNzAsMTIwNzc4LDcwLDU1NTYsNzAsNDIyMDUsNzAsNzE4NzQsNzAsNzE4NDIsNzAsNjYxODMsNzAsNjYyMTMsNzAsNjY4NTMsNzAsNjUzNTEsMTAzLDg0NTgsMTAzLDExOTg0MCwxMDMsMTE5ODkyLDEwMywxMTk5NDQsMTAzLDEyMDA0OCwxMDMsMTIwMTAwLDEwMywxMjAxNTIsMTAzLDEyMDIwNCwxMDMsMTIwMjU2LDEwMywxMjAzMDgsMTAzLDEyMDM2MCwxMDMsMTIwNDEyLDEwMywxMjA0NjQsMTAzLDYwOSwxMDMsNzU1NSwxMDMsMzk3LDEwMywxNDA5LDEwMywxMTk4MTQsNzEsMTE5ODY2LDcxLDExOTkxOCw3MSwxMTk5NzAsNzEsMTIwMDIyLDcxLDEyMDA3NCw3MSwxMjAxMjYsNzEsMTIwMTc4LDcxLDEyMDIzMCw3MSwxMjAyODIsNzEsMTIwMzM0LDcxLDEyMDM4Niw3MSwxMjA0MzgsNzEsMTI5Miw3MSw1MDU2LDcxLDUxMDcsNzEsNDIxOTgsNzEsNjUzNTIsMTA0LDg0NjIsMTA0LDExOTg0MSwxMDQsMTE5OTQ1LDEwNCwxMTk5OTcsMTA0LDEyMDA0OSwxMDQsMTIwMTAxLDEwNCwxMjAxNTMsMTA0LDEyMDIwNSwxMDQsMTIwMjU3LDEwNCwxMjAzMDksMTA0LDEyMDM2MSwxMDQsMTIwNDEzLDEwNCwxMjA0NjUsMTA0LDEyMTEsMTA0LDEzOTIsMTA0LDUwNTgsMTA0LDY1MzIwLDcyLDg0NTksNzIsODQ2MCw3Miw4NDYxLDcyLDExOTgxNSw3MiwxMTk4NjcsNzIsMTE5OTE5LDcyLDEyMDAyMyw3MiwxMjAxNzksNzIsMTIwMjMxLDcyLDEyMDI4Myw3MiwxMjAzMzUsNzIsMTIwMzg3LDcyLDEyMDQzOSw3Miw5MTksNzIsMTIwNDk0LDcyLDEyMDU1Miw3MiwxMjA2MTAsNzIsMTIwNjY4LDcyLDEyMDcyNiw3MiwxMTQwNiw3Miw1MDUxLDcyLDU1MDAsNzIsNDIyMTUsNzIsNjYyNTUsNzIsNzMxLDEwNSw5MDc1LDEwNSw2NTM1MywxMDUsODU2MCwxMDUsODUwNSwxMDUsODUyMCwxMDUsMTE5ODQyLDEwNSwxMTk4OTQsMTA1LDExOTk0NiwxMDUsMTE5OTk4LDEwNSwxMjAwNTAsMTA1LDEyMDEwMiwxMDUsMTIwMTU0LDEwNSwxMjAyMDYsMTA1LDEyMDI1OCwxMDUsMTIwMzEwLDEwNSwxMjAzNjIsMTA1LDEyMDQxNCwxMDUsMTIwNDY2LDEwNSwxMjA0ODQsMTA1LDYxOCwxMDUsNjE3LDEwNSw5NTMsMTA1LDgxMjYsMTA1LDg5MCwxMDUsMTIwNTIyLDEwNSwxMjA1ODAsMTA1LDEyMDYzOCwxMDUsMTIwNjk2LDEwNSwxMjA3NTQsMTA1LDExMTAsMTA1LDQyNTY3LDEwNSwxMjMxLDEwNSw0Mzg5MywxMDUsNTAyOSwxMDUsNzE4NzUsMTA1LDY1MzU0LDEwNiw4NTIxLDEwNiwxMTk4NDMsMTA2LDExOTg5NSwxMDYsMTE5OTQ3LDEwNiwxMTk5OTksMTA2LDEyMDA1MSwxMDYsMTIwMTAzLDEwNiwxMjAxNTUsMTA2LDEyMDIwNywxMDYsMTIwMjU5LDEwNiwxMjAzMTEsMTA2LDEyMDM2MywxMDYsMTIwNDE1LDEwNiwxMjA0NjcsMTA2LDEwMTEsMTA2LDExMTIsMTA2LDY1MzIyLDc0LDExOTgxNyw3NCwxMTk4NjksNzQsMTE5OTIxLDc0LDExOTk3Myw3NCwxMjAwMjUsNzQsMTIwMDc3LDc0LDEyMDEyOSw3NCwxMjAxODEsNzQsMTIwMjMzLDc0LDEyMDI4NSw3NCwxMjAzMzcsNzQsMTIwMzg5LDc0LDEyMDQ0MSw3NCw0MjkzMCw3NCw4OTUsNzQsMTAzMiw3NCw1MDM1LDc0LDUyNjEsNzQsNDIyMDEsNzQsMTE5ODQ0LDEwNywxMTk4OTYsMTA3LDExOTk0OCwxMDcsMTIwMDAwLDEwNywxMjAwNTIsMTA3LDEyMDEwNCwxMDcsMTIwMTU2LDEwNywxMjAyMDgsMTA3LDEyMDI2MCwxMDcsMTIwMzEyLDEwNywxMjAzNjQsMTA3LDEyMDQxNiwxMDcsMTIwNDY4LDEwNyw4NDkwLDc1LDY1MzIzLDc1LDExOTgxOCw3NSwxMTk4NzAsNzUsMTE5OTIyLDc1LDExOTk3NCw3NSwxMjAwMjYsNzUsMTIwMDc4LDc1LDEyMDEzMCw3NSwxMjAxODIsNzUsMTIwMjM0LDc1LDEyMDI4Niw3NSwxMjAzMzgsNzUsMTIwMzkwLDc1LDEyMDQ0Miw3NSw5MjIsNzUsMTIwNDk3LDc1LDEyMDU1NSw3NSwxMjA2MTMsNzUsMTIwNjcxLDc1LDEyMDcyOSw3NSwxMTQxMiw3NSw1MDk0LDc1LDU4NDUsNzUsNDIxOTksNzUsNjY4NDAsNzUsMTQ3MiwxMDgsODczOSw3Myw5MjEzLDczLDY1NTEyLDczLDE2MzMsMTA4LDE3NzcsNzMsNjYzMzYsMTA4LDEyNTEyNywxMDgsMTIwNzgzLDczLDEyMDc5Myw3MywxMjA4MDMsNzMsMTIwODEzLDczLDEyMDgyMyw3MywxMzAwMzMsNzMsNjUzMjEsNzMsODU0NCw3Myw4NDY0LDczLDg0NjUsNzMsMTE5ODE2LDczLDExOTg2OCw3MywxMTk5MjAsNzMsMTIwMDI0LDczLDEyMDEyOCw3MywxMjAxODAsNzMsMTIwMjMyLDczLDEyMDI4NCw3MywxMjAzMzYsNzMsMTIwMzg4LDczLDEyMDQ0MCw3Myw2NTM1NiwxMDgsODU3Miw3Myw4NDY3LDEwOCwxMTk4NDUsMTA4LDExOTg5NywxMDgsMTE5OTQ5LDEwOCwxMjAwMDEsMTA4LDEyMDA1MywxMDgsMTIwMTA1LDczLDEyMDE1Nyw3MywxMjAyMDksNzMsMTIwMjYxLDczLDEyMDMxMyw3MywxMjAzNjUsNzMsMTIwNDE3LDczLDEyMDQ2OSw3Myw0NDgsNzMsMTIwNDk2LDczLDEyMDU1NCw3MywxMjA2MTIsNzMsMTIwNjcwLDczLDEyMDcyOCw3MywxMTQxMCw3MywxMDMwLDczLDEyMTYsNzMsMTQ5MywxMDgsMTUwMywxMDgsMTU3NSwxMDgsMTI2NDY0LDEwOCwxMjY1OTIsMTA4LDY1MTY2LDEwOCw2NTE2NSwxMDgsMTk5NCwxMDgsMTE1OTksNzMsNTgyNSw3Myw0MjIyNiw3Myw5Mzk5Miw3Myw2NjE4NiwxMjQsNjYzMTMsMTI0LDExOTMzOCw3Niw4NTU2LDc2LDg0NjYsNzYsMTE5ODE5LDc2LDExOTg3MSw3NiwxMTk5MjMsNzYsMTIwMDI3LDc2LDEyMDA3OSw3NiwxMjAxMzEsNzYsMTIwMTgzLDc2LDEyMDIzNSw3NiwxMjAyODcsNzYsMTIwMzM5LDc2LDEyMDM5MSw3NiwxMjA0NDMsNzYsMTE0NzIsNzYsNTA4Niw3Niw1MjkwLDc2LDQyMjA5LDc2LDkzOTc0LDc2LDcxODQzLDc2LDcxODU4LDc2LDY2NTg3LDc2LDY2ODU0LDc2LDY1MzI1LDc3LDg1NTksNzcsODQ5OSw3NywxMTk4MjAsNzcsMTE5ODcyLDc3LDExOTkyNCw3NywxMjAwMjgsNzcsMTIwMDgwLDc3LDEyMDEzMiw3NywxMjAxODQsNzcsMTIwMjM2LDc3LDEyMDI4OCw3NywxMjAzNDAsNzcsMTIwMzkyLDc3LDEyMDQ0NCw3Nyw5MjQsNzcsMTIwNDk5LDc3LDEyMDU1Nyw3NywxMjA2MTUsNzcsMTIwNjczLDc3LDEyMDczMSw3NywxMDE4LDc3LDExNDE2LDc3LDUwNDcsNzcsNTYxNiw3Nyw1ODQ2LDc3LDQyMjA3LDc3LDY2MjI0LDc3LDY2MzIxLDc3LDExOTg0NywxMTAsMTE5ODk5LDExMCwxMTk5NTEsMTEwLDEyMDAwMywxMTAsMTIwMDU1LDExMCwxMjAxMDcsMTEwLDEyMDE1OSwxMTAsMTIwMjExLDExMCwxMjAyNjMsMTEwLDEyMDMxNSwxMTAsMTIwMzY3LDExMCwxMjA0MTksMTEwLDEyMDQ3MSwxMTAsMTQwMCwxMTAsMTQwNCwxMTAsNjUzMjYsNzgsODQ2OSw3OCwxMTk4MjEsNzgsMTE5ODczLDc4LDExOTkyNSw3OCwxMTk5NzcsNzgsMTIwMDI5LDc4LDEyMDA4MSw3OCwxMjAxODUsNzgsMTIwMjM3LDc4LDEyMDI4OSw3OCwxMjAzNDEsNzgsMTIwMzkzLDc4LDEyMDQ0NSw3OCw5MjUsNzgsMTIwNTAwLDc4LDEyMDU1OCw3OCwxMjA2MTYsNzgsMTIwNjc0LDc4LDEyMDczMiw3OCwxMTQxOCw3OCw0MjIwOCw3OCw2NjgzNSw3OCwzMDc0LDExMSwzMjAyLDExMSwzMzMwLDExMSwzNDU4LDExMSwyNDA2LDExMSwyNjYyLDExMSwyNzkwLDExMSwzMDQ2LDExMSwzMTc0LDExMSwzMzAyLDExMSwzNDMwLDExMSwzNjY0LDExMSwzNzkyLDExMSw0MTYwLDExMSwxNjM3LDExMSwxNzgxLDExMSw2NTM1OSwxMTEsODUwMCwxMTEsMTE5ODQ4LDExMSwxMTk5MDAsMTExLDExOTk1MiwxMTEsMTIwMDU2LDExMSwxMjAxMDgsMTExLDEyMDE2MCwxMTEsMTIwMjEyLDExMSwxMjAyNjQsMTExLDEyMDMxNiwxMTEsMTIwMzY4LDExMSwxMjA0MjAsMTExLDEyMDQ3MiwxMTEsNzQzOSwxMTEsNzQ0MSwxMTEsNDM4MzcsMTExLDk1OSwxMTEsMTIwNTI4LDExMSwxMjA1ODYsMTExLDEyMDY0NCwxMTEsMTIwNzAyLDExMSwxMjA3NjAsMTExLDk2MywxMTEsMTIwNTMyLDExMSwxMjA1OTAsMTExLDEyMDY0OCwxMTEsMTIwNzA2LDExMSwxMjA3NjQsMTExLDExNDIzLDExMSw0MzUxLDExMSwxNDEzLDExMSwxNTA1LDExMSwxNjA3LDExMSwxMjY1MDAsMTExLDEyNjU2NCwxMTEsMTI2NTk2LDExMSw2NTI1OSwxMTEsNjUyNjAsMTExLDY1MjU4LDExMSw2NTI1NywxMTEsMTcyNiwxMTEsNjQ0MjgsMTExLDY0NDI5LDExMSw2NDQyNywxMTEsNjQ0MjYsMTExLDE3MjksMTExLDY0NDI0LDExMSw2NDQyNSwxMTEsNjQ0MjMsMTExLDY0NDIyLDExMSwxNzQ5LDExMSwzMzYwLDExMSw0MTI1LDExMSw2Njc5NCwxMTEsNzE4ODAsMTExLDcxODk1LDExMSw2NjYwNCwxMTEsMTk4NCw3OSwyNTM0LDc5LDI5MTgsNzksMTIyOTUsNzksNzA4NjQsNzksNzE5MDQsNzksMTIwNzgyLDc5LDEyMDc5Miw3OSwxMjA4MDIsNzksMTIwODEyLDc5LDEyMDgyMiw3OSwxMzAwMzIsNzksNjUzMjcsNzksMTE5ODIyLDc5LDExOTg3NCw3OSwxMTk5MjYsNzksMTE5OTc4LDc5LDEyMDAzMCw3OSwxMjAwODIsNzksMTIwMTM0LDc5LDEyMDE4Niw3OSwxMjAyMzgsNzksMTIwMjkwLDc5LDEyMDM0Miw3OSwxMjAzOTQsNzksMTIwNDQ2LDc5LDkyNyw3OSwxMjA1MDIsNzksMTIwNTYwLDc5LDEyMDYxOCw3OSwxMjA2NzYsNzksMTIwNzM0LDc5LDExNDIyLDc5LDEzNjUsNzksMTE2MDQsNzksNDgxNiw3OSwyODQ4LDc5LDY2NzU0LDc5LDQyMjI3LDc5LDcxODYxLDc5LDY2MTk0LDc5LDY2MjE5LDc5LDY2NTY0LDc5LDY2ODM4LDc5LDkwNzYsMTEyLDY1MzYwLDExMiwxMTk4NDksMTEyLDExOTkwMSwxMTIsMTE5OTUzLDExMiwxMjAwMDUsMTEyLDEyMDA1NywxMTIsMTIwMTA5LDExMiwxMjAxNjEsMTEyLDEyMDIxMywxMTIsMTIwMjY1LDExMiwxMjAzMTcsMTEyLDEyMDM2OSwxMTIsMTIwNDIxLDExMiwxMjA0NzMsMTEyLDk2MSwxMTIsMTIwNTMwLDExMiwxMjA1NDQsMTEyLDEyMDU4OCwxMTIsMTIwNjAyLDExMiwxMjA2NDYsMTEyLDEyMDY2MCwxMTIsMTIwNzA0LDExMiwxMjA3MTgsMTEyLDEyMDc2MiwxMTIsMTIwNzc2LDExMiwxMTQyNywxMTIsNjUzMjgsODAsODQ3Myw4MCwxMTk4MjMsODAsMTE5ODc1LDgwLDExOTkyNyw4MCwxMTk5NzksODAsMTIwMDMxLDgwLDEyMDA4Myw4MCwxMjAxODcsODAsMTIwMjM5LDgwLDEyMDI5MSw4MCwxMjAzNDMsODAsMTIwMzk1LDgwLDEyMDQ0Nyw4MCw5MjksODAsMTIwNTA0LDgwLDEyMDU2Miw4MCwxMjA2MjAsODAsMTIwNjc4LDgwLDEyMDczNiw4MCwxMTQyNiw4MCw1MDkwLDgwLDUyMjksODAsNDIxOTMsODAsNjYxOTcsODAsMTE5ODUwLDExMywxMTk5MDIsMTEzLDExOTk1NCwxMTMsMTIwMDA2LDExMywxMjAwNTgsMTEzLDEyMDExMCwxMTMsMTIwMTYyLDExMywxMjAyMTQsMTEzLDEyMDI2NiwxMTMsMTIwMzE4LDExMywxMjAzNzAsMTEzLDEyMDQyMiwxMTMsMTIwNDc0LDExMywxMzA3LDExMywxMzc5LDExMywxMzgyLDExMyw4NDc0LDgxLDExOTgyNCw4MSwxMTk4NzYsODEsMTE5OTI4LDgxLDExOTk4MCw4MSwxMjAwMzIsODEsMTIwMDg0LDgxLDEyMDE4OCw4MSwxMjAyNDAsODEsMTIwMjkyLDgxLDEyMDM0NCw4MSwxMjAzOTYsODEsMTIwNDQ4LDgxLDExNjA1LDgxLDExOTg1MSwxMTQsMTE5OTAzLDExNCwxMTk5NTUsMTE0LDEyMDAwNywxMTQsMTIwMDU5LDExNCwxMjAxMTEsMTE0LDEyMDE2MywxMTQsMTIwMjE1LDExNCwxMjAyNjcsMTE0LDEyMDMxOSwxMTQsMTIwMzcxLDExNCwxMjA0MjMsMTE0LDEyMDQ3NSwxMTQsNDM4NDcsMTE0LDQzODQ4LDExNCw3NDYyLDExNCwxMTM5NywxMTQsNDM5MDUsMTE0LDExOTMxOCw4Miw4NDc1LDgyLDg0NzYsODIsODQ3Nyw4MiwxMTk4MjUsODIsMTE5ODc3LDgyLDExOTkyOSw4MiwxMjAwMzMsODIsMTIwMTg5LDgyLDEyMDI0MSw4MiwxMjAyOTMsODIsMTIwMzQ1LDgyLDEyMDM5Nyw4MiwxMjA0NDksODIsNDIyLDgyLDUwMjUsODIsNTA3NCw4Miw2Njc0MCw4Miw1NTExLDgyLDQyMjExLDgyLDk0MDA1LDgyLDY1MzYzLDExNSwxMTk4NTIsMTE1LDExOTkwNCwxMTUsMTE5OTU2LDExNSwxMjAwMDgsMTE1LDEyMDA2MCwxMTUsMTIwMTEyLDExNSwxMjAxNjQsMTE1LDEyMDIxNiwxMTUsMTIwMjY4LDExNSwxMjAzMjAsMTE1LDEyMDM3MiwxMTUsMTIwNDI0LDExNSwxMjA0NzYsMTE1LDQyODAxLDExNSw0NDUsMTE1LDExMDksMTE1LDQzOTQ2LDExNSw3MTg3MywxMTUsNjY2MzIsMTE1LDY1MzMxLDgzLDExOTgyNiw4MywxMTk4NzgsODMsMTE5OTMwLDgzLDExOTk4Miw4MywxMjAwMzQsODMsMTIwMDg2LDgzLDEyMDEzOCw4MywxMjAxOTAsODMsMTIwMjQyLDgzLDEyMDI5NCw4MywxMjAzNDYsODMsMTIwMzk4LDgzLDEyMDQ1MCw4MywxMDI5LDgzLDEzNTksODMsNTA3Nyw4Myw1MDgyLDgzLDQyMjEwLDgzLDk0MDEwLDgzLDY2MTk4LDgzLDY2NTkyLDgzLDExOTg1MywxMTYsMTE5OTA1LDExNiwxMTk5NTcsMTE2LDEyMDAwOSwxMTYsMTIwMDYxLDExNiwxMjAxMTMsMTE2LDEyMDE2NSwxMTYsMTIwMjE3LDExNiwxMjAyNjksMTE2LDEyMDMyMSwxMTYsMTIwMzczLDExNiwxMjA0MjUsMTE2LDEyMDQ3NywxMTYsODg2OCw4NCwxMDIwMSw4NCwxMjg4NzIsODQsNjUzMzIsODQsMTE5ODI3LDg0LDExOTg3OSw4NCwxMTk5MzEsODQsMTE5OTgzLDg0LDEyMDAzNSw4NCwxMjAwODcsODQsMTIwMTM5LDg0LDEyMDE5MSw4NCwxMjAyNDMsODQsMTIwMjk1LDg0LDEyMDM0Nyw4NCwxMjAzOTksODQsMTIwNDUxLDg0LDkzMiw4NCwxMjA1MDcsODQsMTIwNTY1LDg0LDEyMDYyMyw4NCwxMjA2ODEsODQsMTIwNzM5LDg0LDExNDMwLDg0LDUwMjYsODQsNDIxOTYsODQsOTM5NjIsODQsNzE4NjgsODQsNjYxOTksODQsNjYyMjUsODQsNjYzMjUsODQsMTE5ODU0LDExNywxMTk5MDYsMTE3LDExOTk1OCwxMTcsMTIwMDEwLDExNywxMjAwNjIsMTE3LDEyMDExNCwxMTcsMTIwMTY2LDExNywxMjAyMTgsMTE3LDEyMDI3MCwxMTcsMTIwMzIyLDExNywxMjAzNzQsMTE3LDEyMDQyNiwxMTcsMTIwNDc4LDExNyw0MjkxMSwxMTcsNzQ1MiwxMTcsNDM4NTQsMTE3LDQzODU4LDExNyw2NTEsMTE3LDk2NSwxMTcsMTIwNTM0LDExNywxMjA1OTIsMTE3LDEyMDY1MCwxMTcsMTIwNzA4LDExNywxMjA3NjYsMTE3LDE0MDUsMTE3LDY2ODA2LDExNyw3MTg5NiwxMTcsODc0Niw4NSw4ODk5LDg1LDExOTgyOCw4NSwxMTk4ODAsODUsMTE5OTMyLDg1LDExOTk4NCw4NSwxMjAwMzYsODUsMTIwMDg4LDg1LDEyMDE0MCw4NSwxMjAxOTIsODUsMTIwMjQ0LDg1LDEyMDI5Niw4NSwxMjAzNDgsODUsMTIwNDAwLDg1LDEyMDQ1Miw4NSwxMzU3LDg1LDQ2MDgsODUsNjY3NjYsODUsNTE5Niw4NSw0MjIyOCw4NSw5NDAxOCw4NSw3MTg2NCw4NSw4NzQ0LDExOCw4ODk3LDExOCw2NTM2NiwxMTgsODU2NCwxMTgsMTE5ODU1LDExOCwxMTk5MDcsMTE4LDExOTk1OSwxMTgsMTIwMDExLDExOCwxMjAwNjMsMTE4LDEyMDExNSwxMTgsMTIwMTY3LDExOCwxMjAyMTksMTE4LDEyMDI3MSwxMTgsMTIwMzIzLDExOCwxMjAzNzUsMTE4LDEyMDQyNywxMTgsMTIwNDc5LDExOCw3NDU2LDExOCw5NTcsMTE4LDEyMDUyNiwxMTgsMTIwNTg0LDExOCwxMjA2NDIsMTE4LDEyMDcwMCwxMTgsMTIwNzU4LDExOCwxMTQxLDExOCwxNDk2LDExOCw3MTQzMCwxMTgsNDM5NDUsMTE4LDcxODcyLDExOCwxMTkzMDksODYsMTYzOSw4NiwxNzgzLDg2LDg1NDgsODYsMTE5ODI5LDg2LDExOTg4MSw4NiwxMTk5MzMsODYsMTE5OTg1LDg2LDEyMDAzNyw4NiwxMjAwODksODYsMTIwMTQxLDg2LDEyMDE5Myw4NiwxMjAyNDUsODYsMTIwMjk3LDg2LDEyMDM0OSw4NiwxMjA0MDEsODYsMTIwNDUzLDg2LDExNDAsODYsMTE1NzYsODYsNTA4MSw4Niw1MTY3LDg2LDQyNzE5LDg2LDQyMjE0LDg2LDkzOTYwLDg2LDcxODQwLDg2LDY2ODQ1LDg2LDYyMywxMTksMTE5ODU2LDExOSwxMTk5MDgsMTE5LDExOTk2MCwxMTksMTIwMDEyLDExOSwxMjAwNjQsMTE5LDEyMDExNiwxMTksMTIwMTY4LDExOSwxMjAyMjAsMTE5LDEyMDI3MiwxMTksMTIwMzI0LDExOSwxMjAzNzYsMTE5LDEyMDQyOCwxMTksMTIwNDgwLDExOSw3NDU3LDExOSwxMTIxLDExOSwxMzA5LDExOSwxMzc3LDExOSw3MTQzNCwxMTksNzE0MzgsMTE5LDcxNDM5LDExOSw0MzkwNywxMTksNzE5MTksODcsNzE5MTAsODcsMTE5ODMwLDg3LDExOTg4Miw4NywxMTk5MzQsODcsMTE5OTg2LDg3LDEyMDAzOCw4NywxMjAwOTAsODcsMTIwMTQyLDg3LDEyMDE5NCw4NywxMjAyNDYsODcsMTIwMjk4LDg3LDEyMDM1MCw4NywxMjA0MDIsODcsMTIwNDU0LDg3LDEzMDgsODcsNTA0Myw4Nyw1MDc2LDg3LDQyMjE4LDg3LDU3NDIsMTIwLDEwNTM5LDEyMCwxMDU0MCwxMjAsMTA3OTksMTIwLDY1MzY4LDEyMCw4NTY5LDEyMCwxMTk4NTcsMTIwLDExOTkwOSwxMjAsMTE5OTYxLDEyMCwxMjAwMTMsMTIwLDEyMDA2NSwxMjAsMTIwMTE3LDEyMCwxMjAxNjksMTIwLDEyMDIyMSwxMjAsMTIwMjczLDEyMCwxMjAzMjUsMTIwLDEyMDM3NywxMjAsMTIwNDI5LDEyMCwxMjA0ODEsMTIwLDU0NDEsMTIwLDU1MDEsMTIwLDU3NDEsODgsOTU4Nyw4OCw2NjMzOCw4OCw3MTkxNiw4OCw2NTMzNiw4OCw4NTUzLDg4LDExOTgzMSw4OCwxMTk4ODMsODgsMTE5OTM1LDg4LDExOTk4Nyw4OCwxMjAwMzksODgsMTIwMDkxLDg4LDEyMDE0Myw4OCwxMjAxOTUsODgsMTIwMjQ3LDg4LDEyMDI5OSw4OCwxMjAzNTEsODgsMTIwNDAzLDg4LDEyMDQ1NSw4OCw0MjkzMSw4OCw5MzUsODgsMTIwNTEwLDg4LDEyMDU2OCw4OCwxMjA2MjYsODgsMTIwNjg0LDg4LDEyMDc0Miw4OCwxMTQzNiw4OCwxMTYxMyw4OCw1ODE1LDg4LDQyMjE5LDg4LDY2MTkyLDg4LDY2MjI4LDg4LDY2MzI3LDg4LDY2ODU1LDg4LDYxMSwxMjEsNzU2NCwxMjEsNjUzNjksMTIxLDExOTg1OCwxMjEsMTE5OTEwLDEyMSwxMTk5NjIsMTIxLDEyMDAxNCwxMjEsMTIwMDY2LDEyMSwxMjAxMTgsMTIxLDEyMDE3MCwxMjEsMTIwMjIyLDEyMSwxMjAyNzQsMTIxLDEyMDMyNiwxMjEsMTIwMzc4LDEyMSwxMjA0MzAsMTIxLDEyMDQ4MiwxMjEsNjU1LDEyMSw3OTM1LDEyMSw0Mzg2NiwxMjEsOTQ3LDEyMSw4NTA5LDEyMSwxMjA1MTYsMTIxLDEyMDU3NCwxMjEsMTIwNjMyLDEyMSwxMjA2OTAsMTIxLDEyMDc0OCwxMjEsMTE5OSwxMjEsNDMyNywxMjEsNzE5MDAsMTIxLDY1MzM3LDg5LDExOTgzMiw4OSwxMTk4ODQsODksMTE5OTM2LDg5LDExOTk4OCw4OSwxMjAwNDAsODksMTIwMDkyLDg5LDEyMDE0NCw4OSwxMjAxOTYsODksMTIwMjQ4LDg5LDEyMDMwMCw4OSwxMjAzNTIsODksMTIwNDA0LDg5LDEyMDQ1Niw4OSw5MzMsODksOTc4LDg5LDEyMDUwOCw4OSwxMjA1NjYsODksMTIwNjI0LDg5LDEyMDY4Miw4OSwxMjA3NDAsODksMTE0MzIsODksMTE5OCw4OSw1MDMzLDg5LDUwNTMsODksNDIyMjAsODksOTQwMTksODksNzE4NDQsODksNjYyMjYsODksMTE5ODU5LDEyMiwxMTk5MTEsMTIyLDExOTk2MywxMjIsMTIwMDE1LDEyMiwxMjAwNjcsMTIyLDEyMDExOSwxMjIsMTIwMTcxLDEyMiwxMjAyMjMsMTIyLDEyMDI3NSwxMjIsMTIwMzI3LDEyMiwxMjAzNzksMTIyLDEyMDQzMSwxMjIsMTIwNDgzLDEyMiw3NDU4LDEyMiw0MzkyMywxMjIsNzE4NzYsMTIyLDY2MjkzLDkwLDcxOTA5LDkwLDY1MzM4LDkwLDg0ODQsOTAsODQ4OCw5MCwxMTk4MzMsOTAsMTE5ODg1LDkwLDExOTkzNyw5MCwxMTk5ODksOTAsMTIwMDQxLDkwLDEyMDE5Nyw5MCwxMjAyNDksOTAsMTIwMzAxLDkwLDEyMDM1Myw5MCwxMjA0MDUsOTAsMTIwNDU3LDkwLDkxOCw5MCwxMjA0OTMsOTAsMTIwNTUxLDkwLDEyMDYwOSw5MCwxMjA2NjcsOTAsMTIwNzI1LDkwLDUwNTksOTAsNDIyMDQsOTAsNzE4NDksOTAsNjUyODIsMzQsNjUyODQsMzYsNjUyODUsMzcsNjUyODYsMzgsNjUyOTAsNDIsNjUyOTEsNDMsNjUyOTQsNDYsNjUyOTUsNDcsNjUyOTYsNDgsNjUyOTcsNDksNjUyOTgsNTAsNjUyOTksNTEsNjUzMDAsNTIsNjUzMDEsNTMsNjUzMDIsNTQsNjUzMDMsNTUsNjUzMDQsNTYsNjUzMDUsNTcsNjUzMDgsNjAsNjUzMDksNjEsNjUzMTAsNjIsNjUzMTIsNjQsNjUzMTYsNjgsNjUzMTgsNzAsNjUzMTksNzEsNjUzMjQsNzYsNjUzMjksODEsNjUzMzAsODIsNjUzMzMsODUsNjUzMzQsODYsNjUzMzUsODcsNjUzNDMsOTUsNjUzNDYsOTgsNjUzNDgsMTAwLDY1MzUwLDEwMiw2NTM1NSwxMDcsNjUzNTcsMTA5LDY1MzU4LDExMCw2NTM2MSwxMTMsNjUzNjIsMTE0LDY1MzY0LDExNiw2NTM2NSwxMTcsNjUzNjcsMTE5LDY1MzcwLDEyMiw2NTM3MSwxMjMsNjUzNzMsMTI1XSwiX2RlZmF1bHQiOlsxNjAsMzIsODIxMSw0NSw2NTM3NCwxMjYsNjUzMDYsNTgsNjUyODEsMzMsODIxNiw5Niw4MjE3LDk2LDgyNDUsOTYsMTgwLDk2LDEyNDk0LDQ3LDEwNDcsNTEsMTA3Myw1NCwxMDcyLDk3LDEwNDAsNjUsMTA2OCw5OCwxMDQyLDY2LDEwODksOTksMTA1Nyw2NywxMDc3LDEwMSwxMDQ1LDY5LDEwNTMsNzIsMzA1LDEwNSwxMDUwLDc1LDkyMSw3MywxMDUyLDc3LDEwODYsMTExLDEwNTQsNzksMTAwOSwxMTIsMTA4OCwxMTIsMTA1Niw4MCwxMDc1LDExNCwxMDU4LDg0LDIxNSwxMjAsMTA5MywxMjAsMTA2MSw4OCwxMDkxLDEyMSwxMDU5LDg5LDY1MjgzLDM1LDY1Mjg4LDQwLDY1Mjg5LDQxLDY1MjkyLDQ0LDY1MzA3LDU5LDY1MzExLDYzXSwiY3MiOls2NTM3NCwxMjYsNjUzMDYsNTgsNjUyODEsMzMsODIxNiw5Niw4MjE3LDk2LDgyNDUsOTYsMTgwLDk2LDEyNDk0LDQ3LDEwNDcsNTEsMTA3Myw1NCwxMDcyLDk3LDEwNDAsNjUsMTA2OCw5OCwxMDQyLDY2LDEwODksOTksMTA1Nyw2NywxMDc3LDEwMSwxMDQ1LDY5LDEwNTMsNzIsMzA1LDEwNSwxMDUwLDc1LDkyMSw3MywxMDUyLDc3LDEwODYsMTExLDEwNTQsNzksMTAwOSwxMTIsMTA4OCwxMTIsMTA1Niw4MCwxMDc1LDExNCwxMDU4LDg0LDEwOTMsMTIwLDEwNjEsODgsMTA5MSwxMjEsMTA1OSw4OSw2NTI4MywzNSw2NTI4OCw0MCw2NTI4OSw0MSw2NTI5Miw0NCw2NTMwNyw1OSw2NTMxMSw2M10sImRlIjpbNjUzNzQsMTI2LDY1MzA2LDU4LDY1MjgxLDMzLDgyMTYsOTYsODIxNyw5Niw4MjQ1LDk2LDE4MCw5NiwxMjQ5NCw0NywxMDQ3LDUxLDEwNzMsNTQsMTA3Miw5NywxMDQwLDY1LDEwNjgsOTgsMTA0Miw2NiwxMDg5LDk5LDEwNTcsNjcsMTA3NywxMDEsMTA0NSw2OSwxMDUzLDcyLDMwNSwxMDUsMTA1MCw3NSw5MjEsNzMsMTA1Miw3NywxMDg2LDExMSwxMDU0LDc5LDEwMDksMTEyLDEwODgsMTEyLDEwNTYsODAsMTA3NSwxMTQsMTA1OCw4NCwxMDkzLDEyMCwxMDYxLDg4LDEwOTEsMTIxLDEwNTksODksNjUyODMsMzUsNjUyODgsNDAsNjUyODksNDEsNjUyOTIsNDQsNjUzMDcsNTksNjUzMTEsNjNdLCJlcyI6WzgyMTEsNDUsNjUzNzQsMTI2LDY1MzA2LDU4LDY1MjgxLDMzLDgyNDUsOTYsMTgwLDk2LDEyNDk0LDQ3LDEwNDcsNTEsMTA3Myw1NCwxMDcyLDk3LDEwNDAsNjUsMTA2OCw5OCwxMDQyLDY2LDEwODksOTksMTA1Nyw2NywxMDc3LDEwMSwxMDQ1LDY5LDEwNTMsNzIsMzA1LDEwNSwxMDUwLDc1LDEwNTIsNzcsMTA4NiwxMTEsMTA1NCw3OSwxMDA5LDExMiwxMDg4LDExMiwxMDU2LDgwLDEwNzUsMTE0LDEwNTgsODQsMjE1LDEyMCwxMDkzLDEyMCwxMDYxLDg4LDEwOTEsMTIxLDEwNTksODksNjUyODMsMzUsNjUyODgsNDAsNjUyODksNDEsNjUyOTIsNDQsNjUzMDcsNTksNjUzMTEsNjNdLCJmciI6WzY1Mzc0LDEyNiw2NTMwNiw1OCw2NTI4MSwzMyw4MjE2LDk2LDgyNDUsOTYsMTI0OTQsNDcsMTA0Nyw1MSwxMDczLDU0LDEwNzIsOTcsMTA0MCw2NSwxMDY4LDk4LDEwNDIsNjYsMTA4OSw5OSwxMDU3LDY3LDEwNzcsMTAxLDEwNDUsNjksMTA1Myw3MiwzMDUsMTA1LDEwNTAsNzUsOTIxLDczLDEwNTIsNzcsMTA4NiwxMTEsMTA1NCw3OSwxMDA5LDExMiwxMDg4LDExMiwxMDU2LDgwLDEwNzUsMTE0LDEwNTgsODQsMjE1LDEyMCwxMDkzLDEyMCwxMDYxLDg4LDEwOTEsMTIxLDEwNTksODksNjUyODMsMzUsNjUyODgsNDAsNjUyODksNDEsNjUyOTIsNDQsNjUzMDcsNTksNjUzMTEsNjNdLCJpdCI6WzE2MCwzMiw4MjExLDQ1LDY1Mzc0LDEyNiw2NTMwNiw1OCw2NTI4MSwzMyw4MjE2LDk2LDgyNDUsOTYsMTgwLDk2LDEyNDk0LDQ3LDEwNDcsNTEsMTA3Myw1NCwxMDcyLDk3LDEwNDAsNjUsMTA2OCw5OCwxMDQyLDY2LDEwODksOTksMTA1Nyw2NywxMDc3LDEwMSwxMDQ1LDY5LDEwNTMsNzIsMzA1LDEwNSwxMDUwLDc1LDkyMSw3MywxMDUyLDc3LDEwODYsMTExLDEwNTQsNzksMTAwOSwxMTIsMTA4OCwxMTIsMTA1Niw4MCwxMDc1LDExNCwxMDU4LDg0LDIxNSwxMjAsMTA5MywxMjAsMTA2MSw4OCwxMDkxLDEyMSwxMDU5LDg5LDY1MjgzLDM1LDY1Mjg4LDQwLDY1Mjg5LDQxLDY1MjkyLDQ0LDY1MzA3LDU5LDY1MzExLDYzXSwiamEiOls4MjExLDQ1LDY1MzA2LDU4LDY1MjgxLDMzLDgyMTYsOTYsODIxNyw5Niw4MjQ1LDk2LDE4MCw5NiwxMDQ3LDUxLDEwNzMsNTQsMTA3Miw5NywxMDQwLDY1LDEwNjgsOTgsMTA0Miw2NiwxMDg5LDk5LDEwNTcsNjcsMTA3NywxMDEsMTA0NSw2OSwxMDUzLDcyLDMwNSwxMDUsMTA1MCw3NSw5MjEsNzMsMTA1Miw3NywxMDg2LDExMSwxMDU0LDc5LDEwMDksMTEyLDEwODgsMTEyLDEwNTYsODAsMTA3NSwxMTQsMTA1OCw4NCwyMTUsMTIwLDEwOTMsMTIwLDEwNjEsODgsMTA5MSwxMjEsMTA1OSw4OSw2NTI4MywzNSw2NTI5Miw0NCw2NTMwNyw1OV0sImtvIjpbODIxMSw0NSw2NTM3NCwxMjYsNjUzMDYsNTgsNjUyODEsMzMsODI0NSw5NiwxODAsOTYsMTI0OTQsNDcsMTA0Nyw1MSwxMDczLDU0LDEwNzIsOTcsMTA0MCw2NSwxMDY4LDk4LDEwNDIsNjYsMTA4OSw5OSwxMDU3LDY3LDEwNzcsMTAxLDEwNDUsNjksMTA1Myw3MiwzMDUsMTA1LDEwNTAsNzUsOTIxLDczLDEwNTIsNzcsMTA4NiwxMTEsMTA1NCw3OSwxMDA5LDExMiwxMDg4LDExMiwxMDU2LDgwLDEwNzUsMTE0LDEwNTgsODQsMjE1LDEyMCwxMDkzLDEyMCwxMDYxLDg4LDEwOTEsMTIxLDEwNTksODksNjUyODMsMzUsNjUyODgsNDAsNjUyODksNDEsNjUyOTIsNDQsNjUzMDcsNTksNjUzMTEsNjNdLCJwbCI6WzY1Mzc0LDEyNiw2NTMwNiw1OCw2NTI4MSwzMyw4MjE2LDk2LDgyMTcsOTYsODI0NSw5NiwxODAsOTYsMTI0OTQsNDcsMTA0Nyw1MSwxMDczLDU0LDEwNzIsOTcsMTA0MCw2NSwxMDY4LDk4LDEwNDIsNjYsMTA4OSw5OSwxMDU3LDY3LDEwNzcsMTAxLDEwNDUsNjksMTA1Myw3MiwzMDUsMTA1LDEwNTAsNzUsOTIxLDczLDEwNTIsNzcsMTA4NiwxMTEsMTA1NCw3OSwxMDA5LDExMiwxMDg4LDExMiwxMDU2LDgwLDEwNzUsMTE0LDEwNTgsODQsMjE1LDEyMCwxMDkzLDEyMCwxMDYxLDg4LDEwOTEsMTIxLDEwNTksODksNjUyODMsMzUsNjUyODgsNDAsNjUyODksNDEsNjUyOTIsNDQsNjUzMDcsNTksNjUzMTEsNjNdLCJwdC1CUiI6WzY1Mzc0LDEyNiw2NTMwNiw1OCw2NTI4MSwzMyw4MjE2LDk2LDgyMTcsOTYsODI0NSw5NiwxODAsOTYsMTI0OTQsNDcsMTA0Nyw1MSwxMDczLDU0LDEwNzIsOTcsMTA0MCw2NSwxMDY4LDk4LDEwNDIsNjYsMTA4OSw5OSwxMDU3LDY3LDEwNzcsMTAxLDEwNDUsNjksMTA1Myw3MiwzMDUsMTA1LDEwNTAsNzUsOTIxLDczLDEwNTIsNzcsMTA4NiwxMTEsMTA1NCw3OSwxMDA5LDExMiwxMDg4LDExMiwxMDU2LDgwLDEwNzUsMTE0LDEwNTgsODQsMjE1LDEyMCwxMDkzLDEyMCwxMDYxLDg4LDEwOTEsMTIxLDEwNTksODksNjUyODMsMzUsNjUyODgsNDAsNjUyODksNDEsNjUyOTIsNDQsNjUzMDcsNTksNjUzMTEsNjNdLCJxcHMtcGxvYyI6WzE2MCwzMiw4MjExLDQ1LDY1Mzc0LDEyNiw2NTMwNiw1OCw2NTI4MSwzMyw4MjE2LDk2LDgyMTcsOTYsODI0NSw5NiwxODAsOTYsMTI0OTQsNDcsMTA0Nyw1MSwxMDczLDU0LDEwNzIsOTcsMTA0MCw2NSwxMDY4LDk4LDEwNDIsNjYsMTA4OSw5OSwxMDU3LDY3LDEwNzcsMTAxLDEwNDUsNjksMTA1Myw3MiwzMDUsMTA1LDEwNTAsNzUsOTIxLDczLDEwNTIsNzcsMTA4NiwxMTEsMTA1NCw3OSwxMDg4LDExMiwxMDU2LDgwLDEwNzUsMTE0LDEwNTgsODQsMjE1LDEyMCwxMDkzLDEyMCwxMDYxLDg4LDEwOTEsMTIxLDEwNTksODksNjUyODMsMzUsNjUyODgsNDAsNjUyODksNDEsNjUyOTIsNDQsNjUzMDcsNTksNjUzMTEsNjNdLCJydSI6WzY1Mzc0LDEyNiw2NTMwNiw1OCw2NTI4MSwzMyw4MjE2LDk2LDgyMTcsOTYsODI0NSw5NiwxODAsOTYsMTI0OTQsNDcsMzA1LDEwNSw5MjEsNzMsMTAwOSwxMTIsMjE1LDEyMCw2NTI4MywzNSw2NTI4OCw0MCw2NTI4OSw0MSw2NTI5Miw0NCw2NTMwNyw1OSw2NTMxMSw2M10sInRyIjpbMTYwLDMyLDgyMTEsNDUsNjUzNzQsMTI2LDY1MzA2LDU4LDY1MjgxLDMzLDgyNDUsOTYsMTgwLDk2LDEyNDk0LDQ3LDEwNDcsNTEsMTA3Myw1NCwxMDcyLDk3LDEwNDAsNjUsMTA2OCw5OCwxMDQyLDY2LDEwODksOTksMTA1Nyw2NywxMDc3LDEwMSwxMDQ1LDY5LDEwNTMsNzIsMTA1MCw3NSw5MjEsNzMsMTA1Miw3NywxMDg2LDExMSwxMDU0LDc5LDEwMDksMTEyLDEwODgsMTEyLDEwNTYsODAsMTA3NSwxMTQsMTA1OCw4NCwyMTUsMTIwLDEwOTMsMTIwLDEwNjEsODgsMTA5MSwxMjEsMTA1OSw4OSw2NTI4MywzNSw2NTI4OCw0MCw2NTI4OSw0MSw2NTI5Miw0NCw2NTMwNyw1OSw2NTMxMSw2M10sInpoLWhhbnMiOls2NTM3NCwxMjYsNjUzMDYsNTgsNjUyODEsMzMsODI0NSw5NiwxODAsOTYsMTI0OTQsNDcsMTA0Nyw1MSwxMDczLDU0LDEwNzIsOTcsMTA0MCw2NSwxMDY4LDk4LDEwNDIsNjYsMTA4OSw5OSwxMDU3LDY3LDEwNzcsMTAxLDEwNDUsNjksMTA1Myw3MiwzMDUsMTA1LDEwNTAsNzUsOTIxLDczLDEwNTIsNzcsMTA4NiwxMTEsMTA1NCw3OSwxMDA5LDExMiwxMDg4LDExMiwxMDU2LDgwLDEwNzUsMTE0LDEwNTgsODQsMjE1LDEyMCwxMDkzLDEyMCwxMDYxLDg4LDEwOTEsMTIxLDEwNTksODksNjUyODgsNDAsNjUyODksNDFdLCJ6aC1oYW50IjpbODIxMSw0NSw2NTM3NCwxMjYsMTgwLDk2LDEyNDk0LDQ3LDEwNDcsNTEsMTA3Myw1NCwxMDcyLDk3LDEwNDAsNjUsMTA2OCw5OCwxMDQyLDY2LDEwODksOTksMTA1Nyw2NywxMDc3LDEwMSwxMDQ1LDY5LDEwNTMsNzIsMzA1LDEwNSwxMDUwLDc1LDkyMSw3MywxMDUyLDc3LDEwODYsMTExLDEwNTQsNzksMTAwOSwxMTIsMTA4OCwxMTIsMTA1Niw4MCwxMDc1LDExNCwxMDU4LDg0LDIxNSwxMjAsMTA5MywxMjAsMTA2MSw4OCwxMDkxLDEyMSwxMDU5LDg5LDY1MjgzLDM1LDY1MzA3LDU5XX0nKSkpLGVlLmNhY2hlPW5ldyBjbGFzc3tjb25zdHJ1Y3RvcihlKXt0aGlzLmZuPWUsdGhpcy5sYXN0Q2FjaGU9dm9pZCAwLHRoaXMubGFzdEFyZ0tleT12b2lkIDB9Z2V0KGUpe2NvbnN0IHQ9SlNPTi5zdHJpbmdpZnkoZSk7cmV0dXJuIHRoaXMubGFzdEFyZ0tleSE9PXQmJih0aGlzLmxhc3RBcmdLZXk9dCx0aGlzLmxhc3RDYWNoZT10aGlzLmZuKGUpKSx0aGlzLmxhc3RDYWNoZX19KChlPT57ZnVuY3Rpb24gdChlKXtjb25zdCB0PW5ldyBNYXA7Zm9yKGxldCBuPTA7bjxlLmxlbmd0aDtuKz0yKXQuc2V0KGVbbl0sZVtuKzFdKTtyZXR1cm4gdH1mdW5jdGlvbiBuKGUsdCl7aWYoIWUpcmV0dXJuIHQ7Y29uc3Qgbj1uZXcgTWFwO2Zvcihjb25zdFtyLGldb2YgZSl0LmhhcyhyKSYmbi5zZXQocixpKTtyZXR1cm4gbn1jb25zdCByPUYuYW1iaWd1b3VzQ2hhcmFjdGVyRGF0YS5nZXRWYWx1ZSgpO2xldCBpLG89ZS5maWx0ZXIoKGU9PiFlLnN0YXJ0c1dpdGgoIl8iKSYmZSBpbiByKSk7MD09PW8ubGVuZ3RoJiYobz1bIl9kZWZhdWx0Il0pO2Zvcihjb25zdCBlIG9mIG8pe2k9bihpLHQocltlXSkpfWNvbnN0IGE9ZnVuY3Rpb24oZSx0KXtjb25zdCBuPW5ldyBNYXAoZSk7Zm9yKGNvbnN0W2Uscl1vZiB0KW4uc2V0KGUscik7cmV0dXJuIG59KHQoci5fY29tbW9uKSxpKTtyZXR1cm4gbmV3IGVlKGEpfSkpLGVlLl9sb2NhbGVzPW5ldyBZKCgoKT0+T2JqZWN0LmtleXMoZWUuYW1iaWd1b3VzQ2hhcmFjdGVyRGF0YS5nZXRWYWx1ZSgpKS5maWx0ZXIoKGU9PiFlLnN0YXJ0c1dpdGgoIl8iKSkpKSk7Y2xhc3MgdGV7c3RhdGljIGdldFJhd0RhdGEoKXtyZXR1cm4gSlNPTi5wYXJzZSgiWzksMTAsMTEsMTIsMTMsMzIsMTI3LDE2MCwxNzMsODQ3LDE1NjQsNDQ0Nyw0NDQ4LDYwNjgsNjA2OSw2MTU1LDYxNTYsNjE1Nyw2MTU4LDczNTUsNzM1Niw4MTkyLDgxOTMsODE5NCw4MTk1LDgxOTYsODE5Nyw4MTk4LDgxOTksODIwMCw4MjAxLDgyMDIsODIwMyw4MjA0LDgyMDUsODIwNiw4MjA3LDgyMzQsODIzNSw4MjM2LDgyMzcsODIzOCw4MjM5LDgyODcsODI4OCw4Mjg5LDgyOTAsODI5MSw4MjkyLDgyOTMsODI5NCw4Mjk1LDgyOTYsODI5Nyw4Mjk4LDgyOTksODMwMCw4MzAxLDgzMDIsODMwMywxMDI0MCwxMjI4OCwxMjY0NCw2NTAyNCw2NTAyNSw2NTAyNiw2NTAyNyw2NTAyOCw2NTAyOSw2NTAzMCw2NTAzMSw2NTAzMiw2NTAzMyw2NTAzNCw2NTAzNSw2NTAzNiw2NTAzNyw2NTAzOCw2NTAzOSw2NTI3OSw2NTQ0MCw2NTUyMCw2NTUyMSw2NTUyMiw2NTUyMyw2NTUyNCw2NTUyNSw2NTUyNiw2NTUyNyw2NTUyOCw2NTUzMiw3ODg0NCwxMTkxNTUsMTE5MTU2LDExOTE1NywxMTkxNTgsMTE5MTU5LDExOTE2MCwxMTkxNjEsMTE5MTYyLDkxNzUwNCw5MTc1MDUsOTE3NTA2LDkxNzUwNyw5MTc1MDgsOTE3NTA5LDkxNzUxMCw5MTc1MTEsOTE3NTEyLDkxNzUxMyw5MTc1MTQsOTE3NTE1LDkxNzUxNiw5MTc1MTcsOTE3NTE4LDkxNzUxOSw5MTc1MjAsOTE3NTIxLDkxNzUyMiw5MTc1MjMsOTE3NTI0LDkxNzUyNSw5MTc1MjYsOTE3NTI3LDkxNzUyOCw5MTc1MjksOTE3NTMwLDkxNzUzMSw5MTc1MzIsOTE3NTMzLDkxNzUzNCw5MTc1MzUsOTE3NTM2LDkxNzUzNyw5MTc1MzgsOTE3NTM5LDkxNzU0MCw5MTc1NDEsOTE3NTQyLDkxNzU0Myw5MTc1NDQsOTE3NTQ1LDkxNzU0Niw5MTc1NDcsOTE3NTQ4LDkxNzU0OSw5MTc1NTAsOTE3NTUxLDkxNzU1Miw5MTc1NTMsOTE3NTU0LDkxNzU1NSw5MTc1NTYsOTE3NTU3LDkxNzU1OCw5MTc1NTksOTE3NTYwLDkxNzU2MSw5MTc1NjIsOTE3NTYzLDkxNzU2NCw5MTc1NjUsOTE3NTY2LDkxNzU2Nyw5MTc1NjgsOTE3NTY5LDkxNzU3MCw5MTc1NzEsOTE3NTcyLDkxNzU3Myw5MTc1NzQsOTE3NTc1LDkxNzU3Niw5MTc1NzcsOTE3NTc4LDkxNzU3OSw5MTc1ODAsOTE3NTgxLDkxNzU4Miw5MTc1ODMsOTE3NTg0LDkxNzU4NSw5MTc1ODYsOTE3NTg3LDkxNzU4OCw5MTc1ODksOTE3NTkwLDkxNzU5MSw5MTc1OTIsOTE3NTkzLDkxNzU5NCw5MTc1OTUsOTE3NTk2LDkxNzU5Nyw5MTc1OTgsOTE3NTk5LDkxNzYwMCw5MTc2MDEsOTE3NjAyLDkxNzYwMyw5MTc2MDQsOTE3NjA1LDkxNzYwNiw5MTc2MDcsOTE3NjA4LDkxNzYwOSw5MTc2MTAsOTE3NjExLDkxNzYxMiw5MTc2MTMsOTE3NjE0LDkxNzYxNSw5MTc2MTYsOTE3NjE3LDkxNzYxOCw5MTc2MTksOTE3NjIwLDkxNzYyMSw5MTc2MjIsOTE3NjIzLDkxNzYyNCw5MTc2MjUsOTE3NjI2LDkxNzYyNyw5MTc2MjgsOTE3NjI5LDkxNzYzMCw5MTc2MzEsOTE3NzYwLDkxNzc2MSw5MTc3NjIsOTE3NzYzLDkxNzc2NCw5MTc3NjUsOTE3NzY2LDkxNzc2Nyw5MTc3NjgsOTE3NzY5LDkxNzc3MCw5MTc3NzEsOTE3NzcyLDkxNzc3Myw5MTc3NzQsOTE3Nzc1LDkxNzc3Niw5MTc3NzcsOTE3Nzc4LDkxNzc3OSw5MTc3ODAsOTE3NzgxLDkxNzc4Miw5MTc3ODMsOTE3Nzg0LDkxNzc4NSw5MTc3ODYsOTE3Nzg3LDkxNzc4OCw5MTc3ODksOTE3NzkwLDkxNzc5MSw5MTc3OTIsOTE3NzkzLDkxNzc5NCw5MTc3OTUsOTE3Nzk2LDkxNzc5Nyw5MTc3OTgsOTE3Nzk5LDkxNzgwMCw5MTc4MDEsOTE3ODAyLDkxNzgwMyw5MTc4MDQsOTE3ODA1LDkxNzgwNiw5MTc4MDcsOTE3ODA4LDkxNzgwOSw5MTc4MTAsOTE3ODExLDkxNzgxMiw5MTc4MTMsOTE3ODE0LDkxNzgxNSw5MTc4MTYsOTE3ODE3LDkxNzgxOCw5MTc4MTksOTE3ODIwLDkxNzgyMSw5MTc4MjIsOTE3ODIzLDkxNzgyNCw5MTc4MjUsOTE3ODI2LDkxNzgyNyw5MTc4MjgsOTE3ODI5LDkxNzgzMCw5MTc4MzEsOTE3ODMyLDkxNzgzMyw5MTc4MzQsOTE3ODM1LDkxNzgzNiw5MTc4MzcsOTE3ODM4LDkxNzgzOSw5MTc4NDAsOTE3ODQxLDkxNzg0Miw5MTc4NDMsOTE3ODQ0LDkxNzg0NSw5MTc4NDYsOTE3ODQ3LDkxNzg0OCw5MTc4NDksOTE3ODUwLDkxNzg1MSw5MTc4NTIsOTE3ODUzLDkxNzg1NCw5MTc4NTUsOTE3ODU2LDkxNzg1Nyw5MTc4NTgsOTE3ODU5LDkxNzg2MCw5MTc4NjEsOTE3ODYyLDkxNzg2Myw5MTc4NjQsOTE3ODY1LDkxNzg2Niw5MTc4NjcsOTE3ODY4LDkxNzg2OSw5MTc4NzAsOTE3ODcxLDkxNzg3Miw5MTc4NzMsOTE3ODc0LDkxNzg3NSw5MTc4NzYsOTE3ODc3LDkxNzg3OCw5MTc4NzksOTE3ODgwLDkxNzg4MSw5MTc4ODIsOTE3ODgzLDkxNzg4NCw5MTc4ODUsOTE3ODg2LDkxNzg4Nyw5MTc4ODgsOTE3ODg5LDkxNzg5MCw5MTc4OTEsOTE3ODkyLDkxNzg5Myw5MTc4OTQsOTE3ODk1LDkxNzg5Niw5MTc4OTcsOTE3ODk4LDkxNzg5OSw5MTc5MDAsOTE3OTAxLDkxNzkwMiw5MTc5MDMsOTE3OTA0LDkxNzkwNSw5MTc5MDYsOTE3OTA3LDkxNzkwOCw5MTc5MDksOTE3OTEwLDkxNzkxMSw5MTc5MTIsOTE3OTEzLDkxNzkxNCw5MTc5MTUsOTE3OTE2LDkxNzkxNyw5MTc5MTgsOTE3OTE5LDkxNzkyMCw5MTc5MjEsOTE3OTIyLDkxNzkyMyw5MTc5MjQsOTE3OTI1LDkxNzkyNiw5MTc5MjcsOTE3OTI4LDkxNzkyOSw5MTc5MzAsOTE3OTMxLDkxNzkzMiw5MTc5MzMsOTE3OTM0LDkxNzkzNSw5MTc5MzYsOTE3OTM3LDkxNzkzOCw5MTc5MzksOTE3OTQwLDkxNzk0MSw5MTc5NDIsOTE3OTQzLDkxNzk0NCw5MTc5NDUsOTE3OTQ2LDkxNzk0Nyw5MTc5NDgsOTE3OTQ5LDkxNzk1MCw5MTc5NTEsOTE3OTUyLDkxNzk1Myw5MTc5NTQsOTE3OTU1LDkxNzk1Niw5MTc5NTcsOTE3OTU4LDkxNzk1OSw5MTc5NjAsOTE3OTYxLDkxNzk2Miw5MTc5NjMsOTE3OTY0LDkxNzk2NSw5MTc5NjYsOTE3OTY3LDkxNzk2OCw5MTc5NjksOTE3OTcwLDkxNzk3MSw5MTc5NzIsOTE3OTczLDkxNzk3NCw5MTc5NzUsOTE3OTc2LDkxNzk3Nyw5MTc5NzgsOTE3OTc5LDkxNzk4MCw5MTc5ODEsOTE3OTgyLDkxNzk4Myw5MTc5ODQsOTE3OTg1LDkxNzk4Niw5MTc5ODcsOTE3OTg4LDkxNzk4OSw5MTc5OTAsOTE3OTkxLDkxNzk5Miw5MTc5OTMsOTE3OTk0LDkxNzk5NSw5MTc5OTYsOTE3OTk3LDkxNzk5OCw5MTc5OTldIil9c3RhdGljIGdldERhdGEoKXtyZXR1cm4gdGhpcy5fZGF0YXx8KHRoaXMuX2RhdGE9bmV3IFNldCh0ZS5nZXRSYXdEYXRhKCkpKSx0aGlzLl9kYXRhfXN0YXRpYyBpc0ludmlzaWJsZUNoYXJhY3RlcihlKXtyZXR1cm4gdGUuZ2V0RGF0YSgpLmhhcyhlKX1zdGF0aWMgZ2V0IGNvZGVQb2ludHMoKXtyZXR1cm4gdGUuZ2V0RGF0YSgpfX10ZS5fZGF0YT12b2lkIDA7Y2xhc3MgbmV7Y29uc3RydWN0b3IoZSx0LG4scil7dGhpcy52c1dvcmtlcj1lLHRoaXMucmVxPXQsdGhpcy5tZXRob2Q9bix0aGlzLmFyZ3M9cix0aGlzLnR5cGU9MH19Y2xhc3MgcmV7Y29uc3RydWN0b3IoZSx0LG4scil7dGhpcy52c1dvcmtlcj1lLHRoaXMuc2VxPXQsdGhpcy5yZXM9bix0aGlzLmVycj1yLHRoaXMudHlwZT0xfX1jbGFzcyBpZXtjb25zdHJ1Y3RvcihlLHQsbixyKXt0aGlzLnZzV29ya2VyPWUsdGhpcy5yZXE9dCx0aGlzLmV2ZW50TmFtZT1uLHRoaXMuYXJnPXIsdGhpcy50eXBlPTJ9fWNsYXNzIG9le2NvbnN0cnVjdG9yKGUsdCxuKXt0aGlzLnZzV29ya2VyPWUsdGhpcy5yZXE9dCx0aGlzLmV2ZW50PW4sdGhpcy50eXBlPTN9fWNsYXNzIGFle2NvbnN0cnVjdG9yKGUsdCl7dGhpcy52c1dvcmtlcj1lLHRoaXMucmVxPXQsdGhpcy50eXBlPTR9fWNsYXNzIHNle2NvbnN0cnVjdG9yKGUpe3RoaXMuX3dvcmtlcklkPS0xLHRoaXMuX2hhbmRsZXI9ZSx0aGlzLl9sYXN0U2VudFJlcT0wLHRoaXMuX3BlbmRpbmdSZXBsaWVzPU9iamVjdC5jcmVhdGUobnVsbCksdGhpcy5fcGVuZGluZ0VtaXR0ZXJzPW5ldyBNYXAsdGhpcy5fcGVuZGluZ0V2ZW50cz1uZXcgTWFwfXNldFdvcmtlcklkKGUpe3RoaXMuX3dvcmtlcklkPWV9c2VuZE1lc3NhZ2UoZSx0KXtjb25zdCBuPVN0cmluZygrK3RoaXMuX2xhc3RTZW50UmVxKTtyZXR1cm4gbmV3IFByb21pc2UoKChyLGkpPT57dGhpcy5fcGVuZGluZ1JlcGxpZXNbbl09e3Jlc29sdmU6cixyZWplY3Q6aX0sdGhpcy5fc2VuZChuZXcgbmUodGhpcy5fd29ya2VySWQsbixlLHQpKX0pKX1saXN0ZW4oZSx0KXtsZXQgbj1udWxsO2NvbnN0IHI9bmV3IEgoe29uRmlyc3RMaXN0ZW5lckFkZDooKT0+e249U3RyaW5nKCsrdGhpcy5fbGFzdFNlbnRSZXEpLHRoaXMuX3BlbmRpbmdFbWl0dGVycy5zZXQobixyKSx0aGlzLl9zZW5kKG5ldyBpZSh0aGlzLl93b3JrZXJJZCxuLGUsdCkpfSxvbkxhc3RMaXN0ZW5lclJlbW92ZTooKT0+e3RoaXMuX3BlbmRpbmdFbWl0dGVycy5kZWxldGUobiksdGhpcy5fc2VuZChuZXcgYWUodGhpcy5fd29ya2VySWQsbikpLG49bnVsbH19KTtyZXR1cm4gci5ldmVudH1oYW5kbGVNZXNzYWdlKGUpe2UmJmUudnNXb3JrZXImJigtMSE9PXRoaXMuX3dvcmtlcklkJiZlLnZzV29ya2VyIT09dGhpcy5fd29ya2VySWR8fHRoaXMuX2hhbmRsZU1lc3NhZ2UoZSkpfV9oYW5kbGVNZXNzYWdlKGUpe3N3aXRjaChlLnR5cGUpe2Nhc2UgMTpyZXR1cm4gdGhpcy5faGFuZGxlUmVwbHlNZXNzYWdlKGUpO2Nhc2UgMDpyZXR1cm4gdGhpcy5faGFuZGxlUmVxdWVzdE1lc3NhZ2UoZSk7Y2FzZSAyOnJldHVybiB0aGlzLl9oYW5kbGVTdWJzY3JpYmVFdmVudE1lc3NhZ2UoZSk7Y2FzZSAzOnJldHVybiB0aGlzLl9oYW5kbGVFdmVudE1lc3NhZ2UoZSk7Y2FzZSA0OnJldHVybiB0aGlzLl9oYW5kbGVVbnN1YnNjcmliZUV2ZW50TWVzc2FnZShlKX19X2hhbmRsZVJlcGx5TWVzc2FnZShlKXtpZighdGhpcy5fcGVuZGluZ1JlcGxpZXNbZS5zZXFdKXJldHVybiB2b2lkIGNvbnNvbGUud2FybigiR290IHJlcGx5IHRvIHVua25vd24gc2VxIik7Y29uc3QgdD10aGlzLl9wZW5kaW5nUmVwbGllc1tlLnNlcV07aWYoZGVsZXRlIHRoaXMuX3BlbmRpbmdSZXBsaWVzW2Uuc2VxXSxlLmVycil7bGV0IG49ZS5lcnI7cmV0dXJuIGUuZXJyLiRpc0Vycm9yJiYobj1uZXcgRXJyb3Isbi5uYW1lPWUuZXJyLm5hbWUsbi5tZXNzYWdlPWUuZXJyLm1lc3NhZ2Usbi5zdGFjaz1lLmVyci5zdGFjayksdm9pZCB0LnJlamVjdChuKX10LnJlc29sdmUoZS5yZXMpfV9oYW5kbGVSZXF1ZXN0TWVzc2FnZShlKXtjb25zdCB0PWUucmVxO3RoaXMuX2hhbmRsZXIuaGFuZGxlTWVzc2FnZShlLm1ldGhvZCxlLmFyZ3MpLnRoZW4oKGU9Pnt0aGlzLl9zZW5kKG5ldyByZSh0aGlzLl93b3JrZXJJZCx0LGUsdm9pZCAwKSl9KSwoZT0+e2UuZGV0YWlsIGluc3RhbmNlb2YgRXJyb3ImJihlLmRldGFpbD1yKGUuZGV0YWlsKSksdGhpcy5fc2VuZChuZXcgcmUodGhpcy5fd29ya2VySWQsdCx2b2lkIDAscihlKSkpfSkpfV9oYW5kbGVTdWJzY3JpYmVFdmVudE1lc3NhZ2UoZSl7Y29uc3QgdD1lLnJlcSxuPXRoaXMuX2hhbmRsZXIuaGFuZGxlRXZlbnQoZS5ldmVudE5hbWUsZS5hcmcpKChlPT57dGhpcy5fc2VuZChuZXcgb2UodGhpcy5fd29ya2VySWQsdCxlKSl9KSk7dGhpcy5fcGVuZGluZ0V2ZW50cy5zZXQodCxuKX1faGFuZGxlRXZlbnRNZXNzYWdlKGUpe3RoaXMuX3BlbmRpbmdFbWl0dGVycy5oYXMoZS5yZXEpP3RoaXMuX3BlbmRpbmdFbWl0dGVycy5nZXQoZS5yZXEpLmZpcmUoZS5ldmVudCk6Y29uc29sZS53YXJuKCJHb3QgZXZlbnQgZm9yIHVua25vd24gcmVxIil9X2hhbmRsZVVuc3Vic2NyaWJlRXZlbnRNZXNzYWdlKGUpe3RoaXMuX3BlbmRpbmdFdmVudHMuaGFzKGUucmVxKT8odGhpcy5fcGVuZGluZ0V2ZW50cy5nZXQoZS5yZXEpLmRpc3Bvc2UoKSx0aGlzLl9wZW5kaW5nRXZlbnRzLmRlbGV0ZShlLnJlcSkpOmNvbnNvbGUud2FybigiR290IHVuc3Vic2NyaWJlIGZvciB1bmtub3duIHJlcSIpfV9zZW5kKGUpe2NvbnN0IHQ9W107aWYoMD09PWUudHlwZSlmb3IobGV0IG49MDtuPGUuYXJncy5sZW5ndGg7bisrKWUuYXJnc1tuXWluc3RhbmNlb2YgQXJyYXlCdWZmZXImJnQucHVzaChlLmFyZ3Nbbl0pO2Vsc2UgMT09PWUudHlwZSYmZS5yZXMgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlciYmdC5wdXNoKGUucmVzKTt0aGlzLl9oYW5kbGVyLnNlbmRNZXNzYWdlKGUsdCl9fWZ1bmN0aW9uIGxlKGUpe3JldHVybiJvIj09PWVbMF0mJiJuIj09PWVbMV0mJlooZS5jaGFyQ29kZUF0KDIpKX1mdW5jdGlvbiBjZShlKXtyZXR1cm4vXm9uRHluYW1pYy8udGVzdChlKSYmWihlLmNoYXJDb2RlQXQoOSkpfWNsYXNzIHVle2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5fcmVxdWVzdEhhbmRsZXJGYWN0b3J5PXQsdGhpcy5fcmVxdWVzdEhhbmRsZXI9bnVsbCx0aGlzLl9wcm90b2NvbD1uZXcgc2Uoe3NlbmRNZXNzYWdlOih0LG4pPT57ZSh0LG4pfSxoYW5kbGVNZXNzYWdlOihlLHQpPT50aGlzLl9oYW5kbGVNZXNzYWdlKGUsdCksaGFuZGxlRXZlbnQ6KGUsdCk9PnRoaXMuX2hhbmRsZUV2ZW50KGUsdCl9KX1vbm1lc3NhZ2UoZSl7dGhpcy5fcHJvdG9jb2wuaGFuZGxlTWVzc2FnZShlKX1faGFuZGxlTWVzc2FnZShlLHQpe2lmKCIkaW5pdGlhbGl6ZSI9PT1lKXJldHVybiB0aGlzLmluaXRpYWxpemUodFswXSx0WzFdLHRbMl0sdFszXSk7aWYoIXRoaXMuX3JlcXVlc3RIYW5kbGVyfHwiZnVuY3Rpb24iIT10eXBlb2YgdGhpcy5fcmVxdWVzdEhhbmRsZXJbZV0pcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBFcnJvcigiTWlzc2luZyByZXF1ZXN0SGFuZGxlciBvciBtZXRob2Q6ICIrZSkpO3RyeXtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRoaXMuX3JlcXVlc3RIYW5kbGVyW2VdLmFwcGx5KHRoaXMuX3JlcXVlc3RIYW5kbGVyLHQpKX1jYXRjaChlKXtyZXR1cm4gUHJvbWlzZS5yZWplY3QoZSl9fV9oYW5kbGVFdmVudChlLHQpe2lmKCF0aGlzLl9yZXF1ZXN0SGFuZGxlcil0aHJvdyBuZXcgRXJyb3IoIk1pc3NpbmcgcmVxdWVzdEhhbmRsZXIiKTtpZihjZShlKSl7Y29uc3Qgbj10aGlzLl9yZXF1ZXN0SGFuZGxlcltlXS5jYWxsKHRoaXMuX3JlcXVlc3RIYW5kbGVyLHQpO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBuKXRocm93IG5ldyBFcnJvcihgTWlzc2luZyBkeW5hbWljIGV2ZW50ICR7ZX0gb24gcmVxdWVzdCBoYW5kbGVyLmApO3JldHVybiBufWlmKGxlKGUpKXtjb25zdCB0PXRoaXMuX3JlcXVlc3RIYW5kbGVyW2VdO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0KXRocm93IG5ldyBFcnJvcihgTWlzc2luZyBldmVudCAke2V9IG9uIHJlcXVlc3QgaGFuZGxlci5gKTtyZXR1cm4gdH10aHJvdyBuZXcgRXJyb3IoYE1hbGZvcm1lZCBldmVudCBuYW1lICR7ZX1gKX1pbml0aWFsaXplKGUsdCxuLHIpe3RoaXMuX3Byb3RvY29sLnNldFdvcmtlcklkKGUpO2NvbnN0IGk9ZnVuY3Rpb24oZSx0LG4pe2NvbnN0IHI9ZT0+ZnVuY3Rpb24oKXtjb25zdCBuPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywwKTtyZXR1cm4gdChlLG4pfSxpPWU9PmZ1bmN0aW9uKHQpe3JldHVybiBuKGUsdCl9LG89e307Zm9yKGNvbnN0IHQgb2YgZSljZSh0KT9vW3RdPWkodCk6bGUodCk/b1t0XT1uKHQsdm9pZCAwKTpvW3RdPXIodCk7cmV0dXJuIG99KHIsKChlLHQpPT50aGlzLl9wcm90b2NvbC5zZW5kTWVzc2FnZShlLHQpKSwoKGUsdCk9PnRoaXMuX3Byb3RvY29sLmxpc3RlbihlLHQpKSk7cmV0dXJuIHRoaXMuX3JlcXVlc3RIYW5kbGVyRmFjdG9yeT8odGhpcy5fcmVxdWVzdEhhbmRsZXI9dGhpcy5fcmVxdWVzdEhhbmRsZXJGYWN0b3J5KGkpLFByb21pc2UucmVzb2x2ZShqKHRoaXMuX3JlcXVlc3RIYW5kbGVyKSkpOih0JiYodm9pZCAwIT09dC5iYXNlVXJsJiZkZWxldGUgdC5iYXNlVXJsLHZvaWQgMCE9PXQucGF0aHMmJnZvaWQgMCE9PXQucGF0aHMudnMmJmRlbGV0ZSB0LnBhdGhzLnZzLHZvaWQgMCE9PXR5cGVvZiB0LnRydXN0ZWRUeXBlc1BvbGljeSYmZGVsZXRlIHQudHJ1c3RlZFR5cGVzUG9saWN5LHQuY2F0Y2hFcnJvcj0hMCxrLnJlcXVpcmUuY29uZmlnKHQpKSxuZXcgUHJvbWlzZSgoKGUsdCk9PnsoMCxrLnJlcXVpcmUpKFtuXSwobj0+e3RoaXMuX3JlcXVlc3RIYW5kbGVyPW4uY3JlYXRlKGkpLHRoaXMuX3JlcXVlc3RIYW5kbGVyP2Uoaih0aGlzLl9yZXF1ZXN0SGFuZGxlcikpOnQobmV3IEVycm9yKCJObyBSZXF1ZXN0SGFuZGxlciEiKSl9KSx0KX0pKSl9fWNsYXNzIGhle2NvbnN0cnVjdG9yKGUsdCxuLHIpe3RoaXMub3JpZ2luYWxTdGFydD1lLHRoaXMub3JpZ2luYWxMZW5ndGg9dCx0aGlzLm1vZGlmaWVkU3RhcnQ9bix0aGlzLm1vZGlmaWVkTGVuZ3RoPXJ9Z2V0T3JpZ2luYWxFbmQoKXtyZXR1cm4gdGhpcy5vcmlnaW5hbFN0YXJ0K3RoaXMub3JpZ2luYWxMZW5ndGh9Z2V0TW9kaWZpZWRFbmQoKXtyZXR1cm4gdGhpcy5tb2RpZmllZFN0YXJ0K3RoaXMubW9kaWZpZWRMZW5ndGh9fWZ1bmN0aW9uIGRlKGUsdCl7cmV0dXJuKHQ8PDUpLXQrZXwwfWZ1bmN0aW9uIGZlKGUsdCl7dD1kZSgxNDk0MTcsdCk7Zm9yKGxldCBuPTAscj1lLmxlbmd0aDtuPHI7bisrKXQ9ZGUoZS5jaGFyQ29kZUF0KG4pLHQpO3JldHVybiB0fWNsYXNzIG1le2NvbnN0cnVjdG9yKGUpe3RoaXMuc291cmNlPWV9Z2V0RWxlbWVudHMoKXtjb25zdCBlPXRoaXMuc291cmNlLHQ9bmV3IEludDMyQXJyYXkoZS5sZW5ndGgpO2ZvcihsZXQgbj0wLHI9ZS5sZW5ndGg7bjxyO24rKyl0W25dPWUuY2hhckNvZGVBdChuKTtyZXR1cm4gdH19ZnVuY3Rpb24gZ2UoZSx0LG4pe3JldHVybiBuZXcgd2UobmV3IG1lKGUpLG5ldyBtZSh0KSkuQ29tcHV0ZURpZmYobikuY2hhbmdlc31jbGFzcyBiZXtzdGF0aWMgQXNzZXJ0KGUsdCl7aWYoIWUpdGhyb3cgbmV3IEVycm9yKHQpfX1jbGFzcyBDZXtzdGF0aWMgQ29weShlLHQsbixyLGkpe2ZvcihsZXQgbz0wO288aTtvKyspbltyK29dPWVbdCtvXX1zdGF0aWMgQ29weTIoZSx0LG4scixpKXtmb3IobGV0IG89MDtvPGk7bysrKW5bcitvXT1lW3Qrb119fWNsYXNzIHBle2NvbnN0cnVjdG9yKCl7dGhpcy5tX2NoYW5nZXM9W10sdGhpcy5tX29yaWdpbmFsU3RhcnQ9MTA3Mzc0MTgyNCx0aGlzLm1fbW9kaWZpZWRTdGFydD0xMDczNzQxODI0LHRoaXMubV9vcmlnaW5hbENvdW50PTAsdGhpcy5tX21vZGlmaWVkQ291bnQ9MH1NYXJrTmV4dENoYW5nZSgpeyh0aGlzLm1fb3JpZ2luYWxDb3VudD4wfHx0aGlzLm1fbW9kaWZpZWRDb3VudD4wKSYmdGhpcy5tX2NoYW5nZXMucHVzaChuZXcgaGUodGhpcy5tX29yaWdpbmFsU3RhcnQsdGhpcy5tX29yaWdpbmFsQ291bnQsdGhpcy5tX21vZGlmaWVkU3RhcnQsdGhpcy5tX21vZGlmaWVkQ291bnQpKSx0aGlzLm1fb3JpZ2luYWxDb3VudD0wLHRoaXMubV9tb2RpZmllZENvdW50PTAsdGhpcy5tX29yaWdpbmFsU3RhcnQ9MTA3Mzc0MTgyNCx0aGlzLm1fbW9kaWZpZWRTdGFydD0xMDczNzQxODI0fUFkZE9yaWdpbmFsRWxlbWVudChlLHQpe3RoaXMubV9vcmlnaW5hbFN0YXJ0PU1hdGgubWluKHRoaXMubV9vcmlnaW5hbFN0YXJ0LGUpLHRoaXMubV9tb2RpZmllZFN0YXJ0PU1hdGgubWluKHRoaXMubV9tb2RpZmllZFN0YXJ0LHQpLHRoaXMubV9vcmlnaW5hbENvdW50Kyt9QWRkTW9kaWZpZWRFbGVtZW50KGUsdCl7dGhpcy5tX29yaWdpbmFsU3RhcnQ9TWF0aC5taW4odGhpcy5tX29yaWdpbmFsU3RhcnQsZSksdGhpcy5tX21vZGlmaWVkU3RhcnQ9TWF0aC5taW4odGhpcy5tX21vZGlmaWVkU3RhcnQsdCksdGhpcy5tX21vZGlmaWVkQ291bnQrK31nZXRDaGFuZ2VzKCl7cmV0dXJuKHRoaXMubV9vcmlnaW5hbENvdW50PjB8fHRoaXMubV9tb2RpZmllZENvdW50PjApJiZ0aGlzLk1hcmtOZXh0Q2hhbmdlKCksdGhpcy5tX2NoYW5nZXN9Z2V0UmV2ZXJzZUNoYW5nZXMoKXtyZXR1cm4odGhpcy5tX29yaWdpbmFsQ291bnQ+MHx8dGhpcy5tX21vZGlmaWVkQ291bnQ+MCkmJnRoaXMuTWFya05leHRDaGFuZ2UoKSx0aGlzLm1fY2hhbmdlcy5yZXZlcnNlKCksdGhpcy5tX2NoYW5nZXN9fWNsYXNzIHdle2NvbnN0cnVjdG9yKGUsdCxuPW51bGwpe3RoaXMuQ29udGludWVQcm9jZXNzaW5nUHJlZGljYXRlPW4sdGhpcy5fb3JpZ2luYWxTZXF1ZW5jZT1lLHRoaXMuX21vZGlmaWVkU2VxdWVuY2U9dDtjb25zdFtyLGksb109d2UuX2dldEVsZW1lbnRzKGUpLFthLHMsbF09d2UuX2dldEVsZW1lbnRzKHQpO3RoaXMuX2hhc1N0cmluZ3M9byYmbCx0aGlzLl9vcmlnaW5hbFN0cmluZ0VsZW1lbnRzPXIsdGhpcy5fb3JpZ2luYWxFbGVtZW50c09ySGFzaD1pLHRoaXMuX21vZGlmaWVkU3RyaW5nRWxlbWVudHM9YSx0aGlzLl9tb2RpZmllZEVsZW1lbnRzT3JIYXNoPXMsdGhpcy5tX2ZvcndhcmRIaXN0b3J5PVtdLHRoaXMubV9yZXZlcnNlSGlzdG9yeT1bXX1zdGF0aWMgX2lzU3RyaW5nQXJyYXkoZSl7cmV0dXJuIGUubGVuZ3RoPjAmJiJzdHJpbmciPT10eXBlb2YgZVswXX1zdGF0aWMgX2dldEVsZW1lbnRzKGUpe2NvbnN0IHQ9ZS5nZXRFbGVtZW50cygpO2lmKHdlLl9pc1N0cmluZ0FycmF5KHQpKXtjb25zdCBlPW5ldyBJbnQzMkFycmF5KHQubGVuZ3RoKTtmb3IobGV0IG49MCxyPXQubGVuZ3RoO248cjtuKyspZVtuXT1mZSh0W25dLDApO3JldHVyblt0LGUsITBdfXJldHVybiB0IGluc3RhbmNlb2YgSW50MzJBcnJheT9bW10sdCwhMV06W1tdLG5ldyBJbnQzMkFycmF5KHQpLCExXX1FbGVtZW50c0FyZUVxdWFsKGUsdCl7cmV0dXJuIHRoaXMuX29yaWdpbmFsRWxlbWVudHNPckhhc2hbZV09PT10aGlzLl9tb2RpZmllZEVsZW1lbnRzT3JIYXNoW3RdJiYoIXRoaXMuX2hhc1N0cmluZ3N8fHRoaXMuX29yaWdpbmFsU3RyaW5nRWxlbWVudHNbZV09PT10aGlzLl9tb2RpZmllZFN0cmluZ0VsZW1lbnRzW3RdKX1FbGVtZW50c0FyZVN0cmljdEVxdWFsKGUsdCl7aWYoIXRoaXMuRWxlbWVudHNBcmVFcXVhbChlLHQpKXJldHVybiExO3JldHVybiB3ZS5fZ2V0U3RyaWN0RWxlbWVudCh0aGlzLl9vcmlnaW5hbFNlcXVlbmNlLGUpPT09d2UuX2dldFN0cmljdEVsZW1lbnQodGhpcy5fbW9kaWZpZWRTZXF1ZW5jZSx0KX1zdGF0aWMgX2dldFN0cmljdEVsZW1lbnQoZSx0KXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgZS5nZXRTdHJpY3RFbGVtZW50P2UuZ2V0U3RyaWN0RWxlbWVudCh0KTpudWxsfU9yaWdpbmFsRWxlbWVudHNBcmVFcXVhbChlLHQpe3JldHVybiB0aGlzLl9vcmlnaW5hbEVsZW1lbnRzT3JIYXNoW2VdPT09dGhpcy5fb3JpZ2luYWxFbGVtZW50c09ySGFzaFt0XSYmKCF0aGlzLl9oYXNTdHJpbmdzfHx0aGlzLl9vcmlnaW5hbFN0cmluZ0VsZW1lbnRzW2VdPT09dGhpcy5fb3JpZ2luYWxTdHJpbmdFbGVtZW50c1t0XSl9TW9kaWZpZWRFbGVtZW50c0FyZUVxdWFsKGUsdCl7cmV0dXJuIHRoaXMuX21vZGlmaWVkRWxlbWVudHNPckhhc2hbZV09PT10aGlzLl9tb2RpZmllZEVsZW1lbnRzT3JIYXNoW3RdJiYoIXRoaXMuX2hhc1N0cmluZ3N8fHRoaXMuX21vZGlmaWVkU3RyaW5nRWxlbWVudHNbZV09PT10aGlzLl9tb2RpZmllZFN0cmluZ0VsZW1lbnRzW3RdKX1Db21wdXRlRGlmZihlKXtyZXR1cm4gdGhpcy5fQ29tcHV0ZURpZmYoMCx0aGlzLl9vcmlnaW5hbEVsZW1lbnRzT3JIYXNoLmxlbmd0aC0xLDAsdGhpcy5fbW9kaWZpZWRFbGVtZW50c09ySGFzaC5sZW5ndGgtMSxlKX1fQ29tcHV0ZURpZmYoZSx0LG4scixpKXtjb25zdCBvPVshMV07bGV0IGE9dGhpcy5Db21wdXRlRGlmZlJlY3Vyc2l2ZShlLHQsbixyLG8pO3JldHVybiBpJiYoYT10aGlzLlByZXR0aWZ5Q2hhbmdlcyhhKSkse3F1aXRFYXJseTpvWzBdLGNoYW5nZXM6YX19Q29tcHV0ZURpZmZSZWN1cnNpdmUoZSx0LG4scixpKXtmb3IoaVswXT0hMTtlPD10JiZuPD1yJiZ0aGlzLkVsZW1lbnRzQXJlRXF1YWwoZSxuKTspZSsrLG4rKztmb3IoO3Q+PWUmJnI+PW4mJnRoaXMuRWxlbWVudHNBcmVFcXVhbCh0LHIpOyl0LS0sci0tO2lmKGU+dHx8bj5yKXtsZXQgaTtyZXR1cm4gbjw9cj8oYmUuQXNzZXJ0KGU9PT10KzEsIm9yaWdpbmFsU3RhcnQgc2hvdWxkIG9ubHkgYmUgb25lIG1vcmUgdGhhbiBvcmlnaW5hbEVuZCIpLGk9W25ldyBoZShlLDAsbixyLW4rMSldKTplPD10PyhiZS5Bc3NlcnQobj09PXIrMSwibW9kaWZpZWRTdGFydCBzaG91bGQgb25seSBiZSBvbmUgbW9yZSB0aGFuIG1vZGlmaWVkRW5kIiksaT1bbmV3IGhlKGUsdC1lKzEsbiwwKV0pOihiZS5Bc3NlcnQoZT09PXQrMSwib3JpZ2luYWxTdGFydCBzaG91bGQgb25seSBiZSBvbmUgbW9yZSB0aGFuIG9yaWdpbmFsRW5kIiksYmUuQXNzZXJ0KG49PT1yKzEsIm1vZGlmaWVkU3RhcnQgc2hvdWxkIG9ubHkgYmUgb25lIG1vcmUgdGhhbiBtb2RpZmllZEVuZCIpLGk9W10pLGl9Y29uc3Qgbz1bMF0sYT1bMF0scz10aGlzLkNvbXB1dGVSZWN1cnNpb25Qb2ludChlLHQsbixyLG8sYSxpKSxsPW9bMF0sYz1hWzBdO2lmKG51bGwhPT1zKXJldHVybiBzO2lmKCFpWzBdKXtjb25zdCBvPXRoaXMuQ29tcHV0ZURpZmZSZWN1cnNpdmUoZSxsLG4sYyxpKTtsZXQgYT1bXTtyZXR1cm4gYT1pWzBdP1tuZXcgaGUobCsxLHQtKGwrMSkrMSxjKzEsci0oYysxKSsxKV06dGhpcy5Db21wdXRlRGlmZlJlY3Vyc2l2ZShsKzEsdCxjKzEscixpKSx0aGlzLkNvbmNhdGVuYXRlQ2hhbmdlcyhvLGEpfXJldHVybltuZXcgaGUoZSx0LWUrMSxuLHItbisxKV19V0FMS1RSQUNFKGUsdCxuLHIsaSxvLGEscyxsLGMsdSxoLGQsZixtLGcsYixDKXtsZXQgcD1udWxsLHc9bnVsbCxfPW5ldyBwZSx5PXQsUz1uLEw9ZFswXS1nWzBdLXIsTj0tMTA3Mzc0MTgyNCx2PXRoaXMubV9mb3J3YXJkSGlzdG9yeS5sZW5ndGgtMTtkb3tjb25zdCB0PUwrZTt0PT09eXx8dDxTJiZsW3QtMV08bFt0KzFdPyhmPSh1PWxbdCsxXSktTC1yLHU8TiYmXy5NYXJrTmV4dENoYW5nZSgpLE49dSxfLkFkZE1vZGlmaWVkRWxlbWVudCh1KzEsZiksTD10KzEtZSk6KGY9KHU9bFt0LTFdKzEpLUwtcix1PE4mJl8uTWFya05leHRDaGFuZ2UoKSxOPXUtMSxfLkFkZE9yaWdpbmFsRWxlbWVudCh1LGYrMSksTD10LTEtZSksdj49MCYmKGU9KGw9dGhpcy5tX2ZvcndhcmRIaXN0b3J5W3ZdKVswXSx5PTEsUz1sLmxlbmd0aC0xKX13aGlsZSgtLXY+PS0xKTtpZihwPV8uZ2V0UmV2ZXJzZUNoYW5nZXMoKSxDWzBdKXtsZXQgZT1kWzBdKzEsdD1nWzBdKzE7aWYobnVsbCE9PXAmJnAubGVuZ3RoPjApe2NvbnN0IG49cFtwLmxlbmd0aC0xXTtlPU1hdGgubWF4KGUsbi5nZXRPcmlnaW5hbEVuZCgpKSx0PU1hdGgubWF4KHQsbi5nZXRNb2RpZmllZEVuZCgpKX13PVtuZXcgaGUoZSxoLWUrMSx0LG0tdCsxKV19ZWxzZXtfPW5ldyBwZSx5PW8sUz1hLEw9ZFswXS1nWzBdLXMsTj0xMDczNzQxODI0LHY9Yj90aGlzLm1fcmV2ZXJzZUhpc3RvcnkubGVuZ3RoLTE6dGhpcy5tX3JldmVyc2VIaXN0b3J5Lmxlbmd0aC0yO2Rve2NvbnN0IGU9TCtpO2U9PT15fHxlPFMmJmNbZS0xXT49Y1tlKzFdPyhmPSh1PWNbZSsxXS0xKS1MLXMsdT5OJiZfLk1hcmtOZXh0Q2hhbmdlKCksTj11KzEsXy5BZGRPcmlnaW5hbEVsZW1lbnQodSsxLGYrMSksTD1lKzEtaSk6KGY9KHU9Y1tlLTFdKS1MLXMsdT5OJiZfLk1hcmtOZXh0Q2hhbmdlKCksTj11LF8uQWRkTW9kaWZpZWRFbGVtZW50KHUrMSxmKzEpLEw9ZS0xLWkpLHY+PTAmJihpPShjPXRoaXMubV9yZXZlcnNlSGlzdG9yeVt2XSlbMF0seT0xLFM9Yy5sZW5ndGgtMSl9d2hpbGUoLS12Pj0tMSk7dz1fLmdldENoYW5nZXMoKX1yZXR1cm4gdGhpcy5Db25jYXRlbmF0ZUNoYW5nZXMocCx3KX1Db21wdXRlUmVjdXJzaW9uUG9pbnQoZSx0LG4scixpLG8sYSl7bGV0IHM9MCxsPTAsYz0wLHU9MCxoPTAsZD0wO2UtLSxuLS0saVswXT0wLG9bMF09MCx0aGlzLm1fZm9yd2FyZEhpc3Rvcnk9W10sdGhpcy5tX3JldmVyc2VIaXN0b3J5PVtdO2NvbnN0IGY9dC1lKyhyLW4pLG09ZisxLGc9bmV3IEludDMyQXJyYXkobSksYj1uZXcgSW50MzJBcnJheShtKSxDPXItbixwPXQtZSx3PWUtbixfPXQtcix5PShwLUMpJTI9PTA7Z1tDXT1lLGJbcF09dCxhWzBdPSExO2ZvcihsZXQgUz0xO1M8PWYvMisxO1MrKyl7bGV0IGY9MCxMPTA7Yz10aGlzLkNsaXBEaWFnb25hbEJvdW5kKEMtUyxTLEMsbSksdT10aGlzLkNsaXBEaWFnb25hbEJvdW5kKEMrUyxTLEMsbSk7Zm9yKGxldCBlPWM7ZTw9dTtlKz0yKXtzPWU9PT1jfHxlPHUmJmdbZS0xXTxnW2UrMV0/Z1tlKzFdOmdbZS0xXSsxLGw9cy0oZS1DKS13O2NvbnN0IG49cztmb3IoO3M8dCYmbDxyJiZ0aGlzLkVsZW1lbnRzQXJlRXF1YWwocysxLGwrMSk7KXMrKyxsKys7aWYoZ1tlXT1zLHMrbD5mK0wmJihmPXMsTD1sKSwheSYmTWF0aC5hYnMoZS1wKTw9Uy0xJiZzPj1iW2VdKXJldHVybiBpWzBdPXMsb1swXT1sLG48PWJbZV0mJlM8PTE0NDg/dGhpcy5XQUxLVFJBQ0UoQyxjLHUsdyxwLGgsZCxfLGcsYixzLHQsaSxsLHIsbyx5LGEpOm51bGx9Y29uc3QgTj0oZi1lKyhMLW4pLVMpLzI7aWYobnVsbCE9PXRoaXMuQ29udGludWVQcm9jZXNzaW5nUHJlZGljYXRlJiYhdGhpcy5Db250aW51ZVByb2Nlc3NpbmdQcmVkaWNhdGUoZixOKSlyZXR1cm4gYVswXT0hMCxpWzBdPWYsb1swXT1MLE4+MCYmUzw9MTQ0OD90aGlzLldBTEtUUkFDRShDLGMsdSx3LHAsaCxkLF8sZyxiLHMsdCxpLGwscixvLHksYSk6KGUrKyxuKyssW25ldyBoZShlLHQtZSsxLG4sci1uKzEpXSk7aD10aGlzLkNsaXBEaWFnb25hbEJvdW5kKHAtUyxTLHAsbSksZD10aGlzLkNsaXBEaWFnb25hbEJvdW5kKHArUyxTLHAsbSk7Zm9yKGxldCBmPWg7Zjw9ZDtmKz0yKXtzPWY9PT1ofHxmPGQmJmJbZi0xXT49YltmKzFdP2JbZisxXS0xOmJbZi0xXSxsPXMtKGYtcCktXztjb25zdCBtPXM7Zm9yKDtzPmUmJmw+biYmdGhpcy5FbGVtZW50c0FyZUVxdWFsKHMsbCk7KXMtLSxsLS07aWYoYltmXT1zLHkmJk1hdGguYWJzKGYtQyk8PVMmJnM8PWdbZl0pcmV0dXJuIGlbMF09cyxvWzBdPWwsbT49Z1tmXSYmUzw9MTQ0OD90aGlzLldBTEtUUkFDRShDLGMsdSx3LHAsaCxkLF8sZyxiLHMsdCxpLGwscixvLHksYSk6bnVsbH1pZihTPD0xNDQ3KXtsZXQgZT1uZXcgSW50MzJBcnJheSh1LWMrMik7ZVswXT1DLWMrMSxDZS5Db3B5MihnLGMsZSwxLHUtYysxKSx0aGlzLm1fZm9yd2FyZEhpc3RvcnkucHVzaChlKSxlPW5ldyBJbnQzMkFycmF5KGQtaCsyKSxlWzBdPXAtaCsxLENlLkNvcHkyKGIsaCxlLDEsZC1oKzEpLHRoaXMubV9yZXZlcnNlSGlzdG9yeS5wdXNoKGUpfX1yZXR1cm4gdGhpcy5XQUxLVFJBQ0UoQyxjLHUsdyxwLGgsZCxfLGcsYixzLHQsaSxsLHIsbyx5LGEpfVByZXR0aWZ5Q2hhbmdlcyhlKXtmb3IobGV0IHQ9MDt0PGUubGVuZ3RoO3QrKyl7Y29uc3Qgbj1lW3RdLHI9dDxlLmxlbmd0aC0xP2VbdCsxXS5vcmlnaW5hbFN0YXJ0OnRoaXMuX29yaWdpbmFsRWxlbWVudHNPckhhc2gubGVuZ3RoLGk9dDxlLmxlbmd0aC0xP2VbdCsxXS5tb2RpZmllZFN0YXJ0OnRoaXMuX21vZGlmaWVkRWxlbWVudHNPckhhc2gubGVuZ3RoLG89bi5vcmlnaW5hbExlbmd0aD4wLGE9bi5tb2RpZmllZExlbmd0aD4wO2Zvcig7bi5vcmlnaW5hbFN0YXJ0K24ub3JpZ2luYWxMZW5ndGg8ciYmbi5tb2RpZmllZFN0YXJ0K24ubW9kaWZpZWRMZW5ndGg8aSYmKCFvfHx0aGlzLk9yaWdpbmFsRWxlbWVudHNBcmVFcXVhbChuLm9yaWdpbmFsU3RhcnQsbi5vcmlnaW5hbFN0YXJ0K24ub3JpZ2luYWxMZW5ndGgpKSYmKCFhfHx0aGlzLk1vZGlmaWVkRWxlbWVudHNBcmVFcXVhbChuLm1vZGlmaWVkU3RhcnQsbi5tb2RpZmllZFN0YXJ0K24ubW9kaWZpZWRMZW5ndGgpKTspe2NvbnN0IGU9dGhpcy5FbGVtZW50c0FyZVN0cmljdEVxdWFsKG4ub3JpZ2luYWxTdGFydCxuLm1vZGlmaWVkU3RhcnQpO2lmKHRoaXMuRWxlbWVudHNBcmVTdHJpY3RFcXVhbChuLm9yaWdpbmFsU3RhcnQrbi5vcmlnaW5hbExlbmd0aCxuLm1vZGlmaWVkU3RhcnQrbi5tb2RpZmllZExlbmd0aCkmJiFlKWJyZWFrO24ub3JpZ2luYWxTdGFydCsrLG4ubW9kaWZpZWRTdGFydCsrfWNvbnN0IHM9W251bGxdO3Q8ZS5sZW5ndGgtMSYmdGhpcy5DaGFuZ2VzT3ZlcmxhcChlW3RdLGVbdCsxXSxzKSYmKGVbdF09c1swXSxlLnNwbGljZSh0KzEsMSksdC0tKX1mb3IobGV0IHQ9ZS5sZW5ndGgtMTt0Pj0wO3QtLSl7Y29uc3Qgbj1lW3RdO2xldCByPTAsaT0wO2lmKHQ+MCl7Y29uc3Qgbj1lW3QtMV07cj1uLm9yaWdpbmFsU3RhcnQrbi5vcmlnaW5hbExlbmd0aCxpPW4ubW9kaWZpZWRTdGFydCtuLm1vZGlmaWVkTGVuZ3RofWNvbnN0IG89bi5vcmlnaW5hbExlbmd0aD4wLGE9bi5tb2RpZmllZExlbmd0aD4wO2xldCBzPTAsbD10aGlzLl9ib3VuZGFyeVNjb3JlKG4ub3JpZ2luYWxTdGFydCxuLm9yaWdpbmFsTGVuZ3RoLG4ubW9kaWZpZWRTdGFydCxuLm1vZGlmaWVkTGVuZ3RoKTtmb3IobGV0IGU9MTs7ZSsrKXtjb25zdCB0PW4ub3JpZ2luYWxTdGFydC1lLGM9bi5tb2RpZmllZFN0YXJ0LWU7aWYodDxyfHxjPGkpYnJlYWs7aWYobyYmIXRoaXMuT3JpZ2luYWxFbGVtZW50c0FyZUVxdWFsKHQsdCtuLm9yaWdpbmFsTGVuZ3RoKSlicmVhaztpZihhJiYhdGhpcy5Nb2RpZmllZEVsZW1lbnRzQXJlRXF1YWwoYyxjK24ubW9kaWZpZWRMZW5ndGgpKWJyZWFrO2NvbnN0IHU9KHQ9PT1yJiZjPT09aT81OjApK3RoaXMuX2JvdW5kYXJ5U2NvcmUodCxuLm9yaWdpbmFsTGVuZ3RoLGMsbi5tb2RpZmllZExlbmd0aCk7dT5sJiYobD11LHM9ZSl9bi5vcmlnaW5hbFN0YXJ0LT1zLG4ubW9kaWZpZWRTdGFydC09cztjb25zdCBjPVtudWxsXTt0PjAmJnRoaXMuQ2hhbmdlc092ZXJsYXAoZVt0LTFdLGVbdF0sYykmJihlW3QtMV09Y1swXSxlLnNwbGljZSh0LDEpLHQrKyl9aWYodGhpcy5faGFzU3RyaW5ncylmb3IobGV0IHQ9MSxuPWUubGVuZ3RoO3Q8bjt0Kyspe2NvbnN0IG49ZVt0LTFdLHI9ZVt0XSxpPXIub3JpZ2luYWxTdGFydC1uLm9yaWdpbmFsU3RhcnQtbi5vcmlnaW5hbExlbmd0aCxvPW4ub3JpZ2luYWxTdGFydCxhPXIub3JpZ2luYWxTdGFydCtyLm9yaWdpbmFsTGVuZ3RoLHM9YS1vLGw9bi5tb2RpZmllZFN0YXJ0LGM9ci5tb2RpZmllZFN0YXJ0K3IubW9kaWZpZWRMZW5ndGgsdT1jLWw7aWYoaTw1JiZzPDIwJiZ1PDIwKXtjb25zdCBlPXRoaXMuX2ZpbmRCZXR0ZXJDb250aWd1b3VzU2VxdWVuY2UobyxzLGwsdSxpKTtpZihlKXtjb25zdFt0LG9dPWU7dD09PW4ub3JpZ2luYWxTdGFydCtuLm9yaWdpbmFsTGVuZ3RoJiZvPT09bi5tb2RpZmllZFN0YXJ0K24ubW9kaWZpZWRMZW5ndGh8fChuLm9yaWdpbmFsTGVuZ3RoPXQtbi5vcmlnaW5hbFN0YXJ0LG4ubW9kaWZpZWRMZW5ndGg9by1uLm1vZGlmaWVkU3RhcnQsci5vcmlnaW5hbFN0YXJ0PXQraSxyLm1vZGlmaWVkU3RhcnQ9bytpLHIub3JpZ2luYWxMZW5ndGg9YS1yLm9yaWdpbmFsU3RhcnQsci5tb2RpZmllZExlbmd0aD1jLXIubW9kaWZpZWRTdGFydCl9fX1yZXR1cm4gZX1fZmluZEJldHRlckNvbnRpZ3VvdXNTZXF1ZW5jZShlLHQsbixyLGkpe2lmKHQ8aXx8cjxpKXJldHVybiBudWxsO2NvbnN0IG89ZSt0LWkrMSxhPW4rci1pKzE7bGV0IHM9MCxsPTAsYz0wO2ZvcihsZXQgdD1lO3Q8bzt0KyspZm9yKGxldCBlPW47ZTxhO2UrKyl7Y29uc3Qgbj10aGlzLl9jb250aWd1b3VzU2VxdWVuY2VTY29yZSh0LGUsaSk7bj4wJiZuPnMmJihzPW4sbD10LGM9ZSl9cmV0dXJuIHM+MD9bbCxjXTpudWxsfV9jb250aWd1b3VzU2VxdWVuY2VTY29yZShlLHQsbil7bGV0IHI9MDtmb3IobGV0IGk9MDtpPG47aSsrKXtpZighdGhpcy5FbGVtZW50c0FyZUVxdWFsKGUraSx0K2kpKXJldHVybiAwO3IrPXRoaXMuX29yaWdpbmFsU3RyaW5nRWxlbWVudHNbZStpXS5sZW5ndGh9cmV0dXJuIHJ9X09yaWdpbmFsSXNCb3VuZGFyeShlKXtyZXR1cm4gZTw9MHx8ZT49dGhpcy5fb3JpZ2luYWxFbGVtZW50c09ySGFzaC5sZW5ndGgtMXx8dGhpcy5faGFzU3RyaW5ncyYmL15ccyokLy50ZXN0KHRoaXMuX29yaWdpbmFsU3RyaW5nRWxlbWVudHNbZV0pfV9PcmlnaW5hbFJlZ2lvbklzQm91bmRhcnkoZSx0KXtpZih0aGlzLl9PcmlnaW5hbElzQm91bmRhcnkoZSl8fHRoaXMuX09yaWdpbmFsSXNCb3VuZGFyeShlLTEpKXJldHVybiEwO2lmKHQ+MCl7Y29uc3Qgbj1lK3Q7aWYodGhpcy5fT3JpZ2luYWxJc0JvdW5kYXJ5KG4tMSl8fHRoaXMuX09yaWdpbmFsSXNCb3VuZGFyeShuKSlyZXR1cm4hMH1yZXR1cm4hMX1fTW9kaWZpZWRJc0JvdW5kYXJ5KGUpe3JldHVybiBlPD0wfHxlPj10aGlzLl9tb2RpZmllZEVsZW1lbnRzT3JIYXNoLmxlbmd0aC0xfHx0aGlzLl9oYXNTdHJpbmdzJiYvXlxzKiQvLnRlc3QodGhpcy5fbW9kaWZpZWRTdHJpbmdFbGVtZW50c1tlXSl9X01vZGlmaWVkUmVnaW9uSXNCb3VuZGFyeShlLHQpe2lmKHRoaXMuX01vZGlmaWVkSXNCb3VuZGFyeShlKXx8dGhpcy5fTW9kaWZpZWRJc0JvdW5kYXJ5KGUtMSkpcmV0dXJuITA7aWYodD4wKXtjb25zdCBuPWUrdDtpZih0aGlzLl9Nb2RpZmllZElzQm91bmRhcnkobi0xKXx8dGhpcy5fTW9kaWZpZWRJc0JvdW5kYXJ5KG4pKXJldHVybiEwfXJldHVybiExfV9ib3VuZGFyeVNjb3JlKGUsdCxuLHIpe3JldHVybih0aGlzLl9PcmlnaW5hbFJlZ2lvbklzQm91bmRhcnkoZSx0KT8xOjApKyh0aGlzLl9Nb2RpZmllZFJlZ2lvbklzQm91bmRhcnkobixyKT8xOjApfUNvbmNhdGVuYXRlQ2hhbmdlcyhlLHQpe2NvbnN0IG49W107aWYoMD09PWUubGVuZ3RofHwwPT09dC5sZW5ndGgpcmV0dXJuIHQubGVuZ3RoPjA/dDplO2lmKHRoaXMuQ2hhbmdlc092ZXJsYXAoZVtlLmxlbmd0aC0xXSx0WzBdLG4pKXtjb25zdCByPW5ldyBBcnJheShlLmxlbmd0aCt0Lmxlbmd0aC0xKTtyZXR1cm4gQ2UuQ29weShlLDAsciwwLGUubGVuZ3RoLTEpLHJbZS5sZW5ndGgtMV09blswXSxDZS5Db3B5KHQsMSxyLGUubGVuZ3RoLHQubGVuZ3RoLTEpLHJ9e2NvbnN0IG49bmV3IEFycmF5KGUubGVuZ3RoK3QubGVuZ3RoKTtyZXR1cm4gQ2UuQ29weShlLDAsbiwwLGUubGVuZ3RoKSxDZS5Db3B5KHQsMCxuLGUubGVuZ3RoLHQubGVuZ3RoKSxufX1DaGFuZ2VzT3ZlcmxhcChlLHQsbil7aWYoYmUuQXNzZXJ0KGUub3JpZ2luYWxTdGFydDw9dC5vcmlnaW5hbFN0YXJ0LCJMZWZ0IGNoYW5nZSBpcyBub3QgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHJpZ2h0IGNoYW5nZSIpLGJlLkFzc2VydChlLm1vZGlmaWVkU3RhcnQ8PXQubW9kaWZpZWRTdGFydCwiTGVmdCBjaGFuZ2UgaXMgbm90IGxlc3MgdGhhbiBvciBlcXVhbCB0byByaWdodCBjaGFuZ2UiKSxlLm9yaWdpbmFsU3RhcnQrZS5vcmlnaW5hbExlbmd0aD49dC5vcmlnaW5hbFN0YXJ0fHxlLm1vZGlmaWVkU3RhcnQrZS5tb2RpZmllZExlbmd0aD49dC5tb2RpZmllZFN0YXJ0KXtjb25zdCByPWUub3JpZ2luYWxTdGFydDtsZXQgaT1lLm9yaWdpbmFsTGVuZ3RoO2NvbnN0IG89ZS5tb2RpZmllZFN0YXJ0O2xldCBhPWUubW9kaWZpZWRMZW5ndGg7cmV0dXJuIGUub3JpZ2luYWxTdGFydCtlLm9yaWdpbmFsTGVuZ3RoPj10Lm9yaWdpbmFsU3RhcnQmJihpPXQub3JpZ2luYWxTdGFydCt0Lm9yaWdpbmFsTGVuZ3RoLWUub3JpZ2luYWxTdGFydCksZS5tb2RpZmllZFN0YXJ0K2UubW9kaWZpZWRMZW5ndGg+PXQubW9kaWZpZWRTdGFydCYmKGE9dC5tb2RpZmllZFN0YXJ0K3QubW9kaWZpZWRMZW5ndGgtZS5tb2RpZmllZFN0YXJ0KSxuWzBdPW5ldyBoZShyLGksbyxhKSwhMH1yZXR1cm4gblswXT1udWxsLCExfUNsaXBEaWFnb25hbEJvdW5kKGUsdCxuLHIpe2lmKGU+PTAmJmU8cilyZXR1cm4gZTtjb25zdCBpPXQlMj09MDtpZihlPDApe3JldHVybiBpPT09KG4lMj09MCk/MDoxfXJldHVybiBpPT09KChyLW4tMSklMj09MCk/ci0xOnItMn19bGV0IF9lO2lmKHZvaWQgMCE9PWsudnNjb2RlJiZ2b2lkIDAhPT1rLnZzY29kZS5wcm9jZXNzKXtjb25zdCBlPWsudnNjb2RlLnByb2Nlc3M7X2U9e2dldCBwbGF0Zm9ybSgpe3JldHVybiBlLnBsYXRmb3JtfSxnZXQgYXJjaCgpe3JldHVybiBlLmFyY2h9LGdldCBlbnYoKXtyZXR1cm4gZS5lbnZ9LGN3ZDooKT0+ZS5jd2QoKX19ZWxzZSBfZT0idW5kZWZpbmVkIiE9dHlwZW9mIHByb2Nlc3M/e2dldCBwbGF0Zm9ybSgpe3JldHVybiBwcm9jZXNzLnBsYXRmb3JtfSxnZXQgYXJjaCgpe3JldHVybiBwcm9jZXNzLmFyY2h9LGdldCBlbnYoKXtyZXR1cm4gcHJvY2Vzcy5lbnZ9LGN3ZDooKT0+cHJvY2Vzcy5lbnYuVlNDT0RFX0NXRHx8cHJvY2Vzcy5jd2QoKX06e2dldCBwbGF0Zm9ybSgpe3JldHVybiBPPyJ3aW4zMiI6eD8iZGFyd2luIjoibGludXgifSxnZXQgYXJjaCgpe30sZ2V0IGVudigpe3JldHVybnt9fSxjd2Q6KCk9PiIvIn07Y29uc3QgeWU9X2UuY3dkLFNlPV9lLmVudixMZT1fZS5wbGF0Zm9ybSxOZT00Nix2ZT00NyxFZT05MixBZT01ODtjbGFzcyBrZSBleHRlbmRzIEVycm9ye2NvbnN0cnVjdG9yKGUsdCxuKXtsZXQgcjsic3RyaW5nIj09dHlwZW9mIHQmJjA9PT10LmluZGV4T2YoIm5vdCAiKT8ocj0ibXVzdCBub3QgYmUiLHQ9dC5yZXBsYWNlKC9ebm90IC8sIiIpKTpyPSJtdXN0IGJlIjtjb25zdCBpPS0xIT09ZS5pbmRleE9mKCIuIik/InByb3BlcnR5IjoiYXJndW1lbnQiO2xldCBvPWBUaGUgIiR7ZX0iICR7aX0gJHtyfSBvZiB0eXBlICR7dH1gO28rPSIuIFJlY2VpdmVkIHR5cGUgIit0eXBlb2YgbixzdXBlcihvKSx0aGlzLmNvZGU9IkVSUl9JTlZBTElEX0FSR19UWVBFIn19ZnVuY3Rpb24gTWUoZSx0KXtpZigic3RyaW5nIiE9dHlwZW9mIGUpdGhyb3cgbmV3IGtlKHQsInN0cmluZyIsZSl9ZnVuY3Rpb24gUmUoZSl7cmV0dXJuIGU9PT12ZXx8ZT09PUVlfWZ1bmN0aW9uIE9lKGUpe3JldHVybiBlPT09dmV9ZnVuY3Rpb24geGUoZSl7cmV0dXJuIGU+PTY1JiZlPD05MHx8ZT49OTcmJmU8PTEyMn1mdW5jdGlvbiBQZShlLHQsbixyKXtsZXQgaT0iIixvPTAsYT0tMSxzPTAsbD0wO2ZvcihsZXQgYz0wO2M8PWUubGVuZ3RoOysrYyl7aWYoYzxlLmxlbmd0aClsPWUuY2hhckNvZGVBdChjKTtlbHNle2lmKHIobCkpYnJlYWs7bD12ZX1pZihyKGwpKXtpZihhPT09Yy0xfHwxPT09cyk7ZWxzZSBpZigyPT09cyl7aWYoaS5sZW5ndGg8Mnx8MiE9PW98fGkuY2hhckNvZGVBdChpLmxlbmd0aC0xKSE9PU5lfHxpLmNoYXJDb2RlQXQoaS5sZW5ndGgtMikhPT1OZSl7aWYoaS5sZW5ndGg+Mil7Y29uc3QgZT1pLmxhc3RJbmRleE9mKG4pOy0xPT09ZT8oaT0iIixvPTApOihpPWkuc2xpY2UoMCxlKSxvPWkubGVuZ3RoLTEtaS5sYXN0SW5kZXhPZihuKSksYT1jLHM9MDtjb250aW51ZX1pZigwIT09aS5sZW5ndGgpe2k9IiIsbz0wLGE9YyxzPTA7Y29udGludWV9fXQmJihpKz1pLmxlbmd0aD4wP2Ake259Li5gOiIuLiIsbz0yKX1lbHNlIGkubGVuZ3RoPjA/aSs9YCR7bn0ke2Uuc2xpY2UoYSsxLGMpfWA6aT1lLnNsaWNlKGErMSxjKSxvPWMtYS0xO2E9YyxzPTB9ZWxzZSBsPT09TmUmJi0xIT09cz8rK3M6cz0tMX1yZXR1cm4gaX1mdW5jdGlvbiBUZShlLHQpe2lmKG51bGw9PT10fHwib2JqZWN0IiE9dHlwZW9mIHQpdGhyb3cgbmV3IGtlKCJwYXRoT2JqZWN0IiwiT2JqZWN0Iix0KTtjb25zdCBuPXQuZGlyfHx0LnJvb3Qscj10LmJhc2V8fGAke3QubmFtZXx8IiJ9JHt0LmV4dHx8IiJ9YDtyZXR1cm4gbj9uPT09dC5yb290P2Ake259JHtyfWA6YCR7bn0ke2V9JHtyfWA6cn1jb25zdCBJZT17cmVzb2x2ZSguLi5lKXtsZXQgdD0iIixuPSIiLHI9ITE7Zm9yKGxldCBpPWUubGVuZ3RoLTE7aT49LTE7aS0tKXtsZXQgbztpZihpPj0wKXtpZihvPWVbaV0sTWUobywicGF0aCIpLDA9PT1vLmxlbmd0aCljb250aW51ZX1lbHNlIDA9PT10Lmxlbmd0aD9vPXllKCk6KG89U2VbYD0ke3R9YF18fHllKCksKHZvaWQgMD09PW98fG8uc2xpY2UoMCwyKS50b0xvd2VyQ2FzZSgpIT09dC50b0xvd2VyQ2FzZSgpJiZvLmNoYXJDb2RlQXQoMik9PT1FZSkmJihvPWAke3R9XFxgKSk7Y29uc3QgYT1vLmxlbmd0aDtsZXQgcz0wLGw9IiIsYz0hMTtjb25zdCB1PW8uY2hhckNvZGVBdCgwKTtpZigxPT09YSlSZSh1KSYmKHM9MSxjPSEwKTtlbHNlIGlmKFJlKHUpKWlmKGM9ITAsUmUoby5jaGFyQ29kZUF0KDEpKSl7bGV0IGU9Mix0PWU7Zm9yKDtlPGEmJiFSZShvLmNoYXJDb2RlQXQoZSkpOyllKys7aWYoZTxhJiZlIT09dCl7Y29uc3Qgbj1vLnNsaWNlKHQsZSk7Zm9yKHQ9ZTtlPGEmJlJlKG8uY2hhckNvZGVBdChlKSk7KWUrKztpZihlPGEmJmUhPT10KXtmb3IodD1lO2U8YSYmIVJlKG8uY2hhckNvZGVBdChlKSk7KWUrKztlIT09YSYmZT09PXR8fChsPWBcXFxcJHtufVxcJHtvLnNsaWNlKHQsZSl9YCxzPWUpfX19ZWxzZSBzPTE7ZWxzZSB4ZSh1KSYmby5jaGFyQ29kZUF0KDEpPT09QWUmJihsPW8uc2xpY2UoMCwyKSxzPTIsYT4yJiZSZShvLmNoYXJDb2RlQXQoMikpJiYoYz0hMCxzPTMpKTtpZihsLmxlbmd0aD4wKWlmKHQubGVuZ3RoPjApe2lmKGwudG9Mb3dlckNhc2UoKSE9PXQudG9Mb3dlckNhc2UoKSljb250aW51ZX1lbHNlIHQ9bDtpZihyKXtpZih0Lmxlbmd0aD4wKWJyZWFrfWVsc2UgaWYobj1gJHtvLnNsaWNlKHMpfVxcJHtufWAscj1jLGMmJnQubGVuZ3RoPjApYnJlYWt9cmV0dXJuIG49UGUobiwhciwiXFwiLFJlKSxyP2Ake3R9XFwke259YDpgJHt0fSR7bn1gfHwiLiJ9LG5vcm1hbGl6ZShlKXtNZShlLCJwYXRoIik7Y29uc3QgdD1lLmxlbmd0aDtpZigwPT09dClyZXR1cm4iLiI7bGV0IG4scj0wLGk9ITE7Y29uc3Qgbz1lLmNoYXJDb2RlQXQoMCk7aWYoMT09PXQpcmV0dXJuIE9lKG8pPyJcXCI6ZTtpZihSZShvKSlpZihpPSEwLFJlKGUuY2hhckNvZGVBdCgxKSkpe2xldCBpPTIsbz1pO2Zvcig7aTx0JiYhUmUoZS5jaGFyQ29kZUF0KGkpKTspaSsrO2lmKGk8dCYmaSE9PW8pe2NvbnN0IGE9ZS5zbGljZShvLGkpO2ZvcihvPWk7aTx0JiZSZShlLmNoYXJDb2RlQXQoaSkpOylpKys7aWYoaTx0JiZpIT09byl7Zm9yKG89aTtpPHQmJiFSZShlLmNoYXJDb2RlQXQoaSkpOylpKys7aWYoaT09PXQpcmV0dXJuYFxcXFwke2F9XFwke2Uuc2xpY2Uobyl9XFxgO2khPT1vJiYobj1gXFxcXCR7YX1cXCR7ZS5zbGljZShvLGkpfWAscj1pKX19fWVsc2Ugcj0xO2Vsc2UgeGUobykmJmUuY2hhckNvZGVBdCgxKT09PUFlJiYobj1lLnNsaWNlKDAsMikscj0yLHQ+MiYmUmUoZS5jaGFyQ29kZUF0KDIpKSYmKGk9ITAscj0zKSk7bGV0IGE9cjx0P1BlKGUuc2xpY2UociksIWksIlxcIixSZSk6IiI7cmV0dXJuIDAhPT1hLmxlbmd0aHx8aXx8KGE9Ii4iKSxhLmxlbmd0aD4wJiZSZShlLmNoYXJDb2RlQXQodC0xKSkmJihhKz0iXFwiKSx2b2lkIDA9PT1uP2k/YFxcJHthfWA6YTppP2Ake259XFwke2F9YDpgJHtufSR7YX1gfSxpc0Fic29sdXRlKGUpe01lKGUsInBhdGgiKTtjb25zdCB0PWUubGVuZ3RoO2lmKDA9PT10KXJldHVybiExO2NvbnN0IG49ZS5jaGFyQ29kZUF0KDApO3JldHVybiBSZShuKXx8dD4yJiZ4ZShuKSYmZS5jaGFyQ29kZUF0KDEpPT09QWUmJlJlKGUuY2hhckNvZGVBdCgyKSl9LGpvaW4oLi4uZSl7aWYoMD09PWUubGVuZ3RoKXJldHVybiIuIjtsZXQgdCxuO2ZvcihsZXQgcj0wO3I8ZS5sZW5ndGg7KytyKXtjb25zdCBpPWVbcl07TWUoaSwicGF0aCIpLGkubGVuZ3RoPjAmJih2b2lkIDA9PT10P3Q9bj1pOnQrPWBcXCR7aX1gKX1pZih2b2lkIDA9PT10KXJldHVybiIuIjtsZXQgcj0hMCxpPTA7aWYoInN0cmluZyI9PXR5cGVvZiBuJiZSZShuLmNoYXJDb2RlQXQoMCkpKXsrK2k7Y29uc3QgZT1uLmxlbmd0aDtlPjEmJlJlKG4uY2hhckNvZGVBdCgxKSkmJigrK2ksZT4yJiYoUmUobi5jaGFyQ29kZUF0KDIpKT8rK2k6cj0hMSkpfWlmKHIpe2Zvcig7aTx0Lmxlbmd0aCYmUmUodC5jaGFyQ29kZUF0KGkpKTspaSsrO2k+PTImJih0PWBcXCR7dC5zbGljZShpKX1gKX1yZXR1cm4gSWUubm9ybWFsaXplKHQpfSxyZWxhdGl2ZShlLHQpe2lmKE1lKGUsImZyb20iKSxNZSh0LCJ0byIpLGU9PT10KXJldHVybiIiO2NvbnN0IG49SWUucmVzb2x2ZShlKSxyPUllLnJlc29sdmUodCk7aWYobj09PXIpcmV0dXJuIiI7aWYoKGU9bi50b0xvd2VyQ2FzZSgpKT09PSh0PXIudG9Mb3dlckNhc2UoKSkpcmV0dXJuIiI7bGV0IGk9MDtmb3IoO2k8ZS5sZW5ndGgmJmUuY2hhckNvZGVBdChpKT09PUVlOylpKys7bGV0IG89ZS5sZW5ndGg7Zm9yKDtvLTE+aSYmZS5jaGFyQ29kZUF0KG8tMSk9PT1FZTspby0tO2NvbnN0IGE9by1pO2xldCBzPTA7Zm9yKDtzPHQubGVuZ3RoJiZ0LmNoYXJDb2RlQXQocyk9PT1FZTspcysrO2xldCBsPXQubGVuZ3RoO2Zvcig7bC0xPnMmJnQuY2hhckNvZGVBdChsLTEpPT09RWU7KWwtLTtjb25zdCBjPWwtcyx1PWE8Yz9hOmM7bGV0IGg9LTEsZD0wO2Zvcig7ZDx1O2QrKyl7Y29uc3Qgbj1lLmNoYXJDb2RlQXQoaStkKTtpZihuIT09dC5jaGFyQ29kZUF0KHMrZCkpYnJlYWs7bj09PUVlJiYoaD1kKX1pZihkIT09dSl7aWYoLTE9PT1oKXJldHVybiByfWVsc2V7aWYoYz51KXtpZih0LmNoYXJDb2RlQXQocytkKT09PUVlKXJldHVybiByLnNsaWNlKHMrZCsxKTtpZigyPT09ZClyZXR1cm4gci5zbGljZShzK2QpfWE+dSYmKGUuY2hhckNvZGVBdChpK2QpPT09RWU/aD1kOjI9PT1kJiYoaD0zKSksLTE9PT1oJiYoaD0wKX1sZXQgZj0iIjtmb3IoZD1pK2grMTtkPD1vOysrZClkIT09byYmZS5jaGFyQ29kZUF0KGQpIT09RWV8fChmKz0wPT09Zi5sZW5ndGg/Ii4uIjoiXFwuLiIpO3JldHVybiBzKz1oLGYubGVuZ3RoPjA/YCR7Zn0ke3Iuc2xpY2UocyxsKX1gOihyLmNoYXJDb2RlQXQocyk9PT1FZSYmKytzLHIuc2xpY2UocyxsKSl9LHRvTmFtZXNwYWNlZFBhdGgoZSl7aWYoInN0cmluZyIhPXR5cGVvZiBlKXJldHVybiBlO2lmKDA9PT1lLmxlbmd0aClyZXR1cm4iIjtjb25zdCB0PUllLnJlc29sdmUoZSk7aWYodC5sZW5ndGg8PTIpcmV0dXJuIGU7aWYodC5jaGFyQ29kZUF0KDApPT09RWUpe2lmKHQuY2hhckNvZGVBdCgxKT09PUVlKXtjb25zdCBlPXQuY2hhckNvZGVBdCgyKTtpZig2MyE9PWUmJmUhPT1OZSlyZXR1cm5gXFxcXD9cXFVOQ1xcJHt0LnNsaWNlKDIpfWB9fWVsc2UgaWYoeGUodC5jaGFyQ29kZUF0KDApKSYmdC5jaGFyQ29kZUF0KDEpPT09QWUmJnQuY2hhckNvZGVBdCgyKT09PUVlKXJldHVybmBcXFxcP1xcJHt0fWA7cmV0dXJuIGV9LGRpcm5hbWUoZSl7TWUoZSwicGF0aCIpO2NvbnN0IHQ9ZS5sZW5ndGg7aWYoMD09PXQpcmV0dXJuIi4iO2xldCBuPS0xLHI9MDtjb25zdCBpPWUuY2hhckNvZGVBdCgwKTtpZigxPT09dClyZXR1cm4gUmUoaSk/ZToiLiI7aWYoUmUoaSkpe2lmKG49cj0xLFJlKGUuY2hhckNvZGVBdCgxKSkpe2xldCBpPTIsbz1pO2Zvcig7aTx0JiYhUmUoZS5jaGFyQ29kZUF0KGkpKTspaSsrO2lmKGk8dCYmaSE9PW8pe2ZvcihvPWk7aTx0JiZSZShlLmNoYXJDb2RlQXQoaSkpOylpKys7aWYoaTx0JiZpIT09byl7Zm9yKG89aTtpPHQmJiFSZShlLmNoYXJDb2RlQXQoaSkpOylpKys7aWYoaT09PXQpcmV0dXJuIGU7aSE9PW8mJihuPXI9aSsxKX19fX1lbHNlIHhlKGkpJiZlLmNoYXJDb2RlQXQoMSk9PT1BZSYmKG49dD4yJiZSZShlLmNoYXJDb2RlQXQoMikpPzM6MixyPW4pO2xldCBvPS0xLGE9ITA7Zm9yKGxldCBuPXQtMTtuPj1yOy0tbilpZihSZShlLmNoYXJDb2RlQXQobikpKXtpZighYSl7bz1uO2JyZWFrfX1lbHNlIGE9ITE7aWYoLTE9PT1vKXtpZigtMT09PW4pcmV0dXJuIi4iO289bn1yZXR1cm4gZS5zbGljZSgwLG8pfSxiYXNlbmFtZShlLHQpe3ZvaWQgMCE9PXQmJk1lKHQsImV4dCIpLE1lKGUsInBhdGgiKTtsZXQgbixyPTAsaT0tMSxvPSEwO2lmKGUubGVuZ3RoPj0yJiZ4ZShlLmNoYXJDb2RlQXQoMCkpJiZlLmNoYXJDb2RlQXQoMSk9PT1BZSYmKHI9Miksdm9pZCAwIT09dCYmdC5sZW5ndGg+MCYmdC5sZW5ndGg8PWUubGVuZ3RoKXtpZih0PT09ZSlyZXR1cm4iIjtsZXQgYT10Lmxlbmd0aC0xLHM9LTE7Zm9yKG49ZS5sZW5ndGgtMTtuPj1yOy0tbil7Y29uc3QgbD1lLmNoYXJDb2RlQXQobik7aWYoUmUobCkpe2lmKCFvKXtyPW4rMTticmVha319ZWxzZS0xPT09cyYmKG89ITEscz1uKzEpLGE+PTAmJihsPT09dC5jaGFyQ29kZUF0KGEpPy0xPT0tLWEmJihpPW4pOihhPS0xLGk9cykpfXJldHVybiByPT09aT9pPXM6LTE9PT1pJiYoaT1lLmxlbmd0aCksZS5zbGljZShyLGkpfWZvcihuPWUubGVuZ3RoLTE7bj49cjstLW4paWYoUmUoZS5jaGFyQ29kZUF0KG4pKSl7aWYoIW8pe3I9bisxO2JyZWFrfX1lbHNlLTE9PT1pJiYobz0hMSxpPW4rMSk7cmV0dXJuLTE9PT1pPyIiOmUuc2xpY2UocixpKX0sZXh0bmFtZShlKXtNZShlLCJwYXRoIik7bGV0IHQ9MCxuPS0xLHI9MCxpPS0xLG89ITAsYT0wO2UubGVuZ3RoPj0yJiZlLmNoYXJDb2RlQXQoMSk9PT1BZSYmeGUoZS5jaGFyQ29kZUF0KDApKSYmKHQ9cj0yKTtmb3IobGV0IHM9ZS5sZW5ndGgtMTtzPj10Oy0tcyl7Y29uc3QgdD1lLmNoYXJDb2RlQXQocyk7aWYoUmUodCkpe2lmKCFvKXtyPXMrMTticmVha319ZWxzZS0xPT09aSYmKG89ITEsaT1zKzEpLHQ9PT1OZT8tMT09PW4/bj1zOjEhPT1hJiYoYT0xKTotMSE9PW4mJihhPS0xKX1yZXR1cm4tMT09PW58fC0xPT09aXx8MD09PWF8fDE9PT1hJiZuPT09aS0xJiZuPT09cisxPyIiOmUuc2xpY2UobixpKX0sZm9ybWF0OlRlLmJpbmQobnVsbCwiXFwiKSxwYXJzZShlKXtNZShlLCJwYXRoIik7Y29uc3QgdD17cm9vdDoiIixkaXI6IiIsYmFzZToiIixleHQ6IiIsbmFtZToiIn07aWYoMD09PWUubGVuZ3RoKXJldHVybiB0O2NvbnN0IG49ZS5sZW5ndGg7bGV0IHI9MCxpPWUuY2hhckNvZGVBdCgwKTtpZigxPT09bilyZXR1cm4gUmUoaSk/KHQucm9vdD10LmRpcj1lLHQpOih0LmJhc2U9dC5uYW1lPWUsdCk7aWYoUmUoaSkpe2lmKHI9MSxSZShlLmNoYXJDb2RlQXQoMSkpKXtsZXQgdD0yLGk9dDtmb3IoO3Q8biYmIVJlKGUuY2hhckNvZGVBdCh0KSk7KXQrKztpZih0PG4mJnQhPT1pKXtmb3IoaT10O3Q8biYmUmUoZS5jaGFyQ29kZUF0KHQpKTspdCsrO2lmKHQ8biYmdCE9PWkpe2ZvcihpPXQ7dDxuJiYhUmUoZS5jaGFyQ29kZUF0KHQpKTspdCsrO3Q9PT1uP3I9dDp0IT09aSYmKHI9dCsxKX19fX1lbHNlIGlmKHhlKGkpJiZlLmNoYXJDb2RlQXQoMSk9PT1BZSl7aWYobjw9MilyZXR1cm4gdC5yb290PXQuZGlyPWUsdDtpZihyPTIsUmUoZS5jaGFyQ29kZUF0KDIpKSl7aWYoMz09PW4pcmV0dXJuIHQucm9vdD10LmRpcj1lLHQ7cj0zfX1yPjAmJih0LnJvb3Q9ZS5zbGljZSgwLHIpKTtsZXQgbz0tMSxhPXIscz0tMSxsPSEwLGM9ZS5sZW5ndGgtMSx1PTA7Zm9yKDtjPj1yOy0tYylpZihpPWUuY2hhckNvZGVBdChjKSxSZShpKSl7aWYoIWwpe2E9YysxO2JyZWFrfX1lbHNlLTE9PT1zJiYobD0hMSxzPWMrMSksaT09PU5lPy0xPT09bz9vPWM6MSE9PXUmJih1PTEpOi0xIT09byYmKHU9LTEpO3JldHVybi0xIT09cyYmKC0xPT09b3x8MD09PXV8fDE9PT11JiZvPT09cy0xJiZvPT09YSsxP3QuYmFzZT10Lm5hbWU9ZS5zbGljZShhLHMpOih0Lm5hbWU9ZS5zbGljZShhLG8pLHQuYmFzZT1lLnNsaWNlKGEscyksdC5leHQ9ZS5zbGljZShvLHMpKSksdC5kaXI9YT4wJiZhIT09cj9lLnNsaWNlKDAsYS0xKTp0LnJvb3QsdH0sc2VwOiJcXCIsZGVsaW1pdGVyOiI7Iix3aW4zMjpudWxsLHBvc2l4Om51bGx9LEtlPXtyZXNvbHZlKC4uLmUpe2xldCB0PSIiLG49ITE7Zm9yKGxldCByPWUubGVuZ3RoLTE7cj49LTEmJiFuO3ItLSl7Y29uc3QgaT1yPj0wP2Vbcl06eWUoKTtNZShpLCJwYXRoIiksMCE9PWkubGVuZ3RoJiYodD1gJHtpfS8ke3R9YCxuPWkuY2hhckNvZGVBdCgwKT09PXZlKX1yZXR1cm4gdD1QZSh0LCFuLCIvIixPZSksbj9gLyR7dH1gOnQubGVuZ3RoPjA/dDoiLiJ9LG5vcm1hbGl6ZShlKXtpZihNZShlLCJwYXRoIiksMD09PWUubGVuZ3RoKXJldHVybiIuIjtjb25zdCB0PWUuY2hhckNvZGVBdCgwKT09PXZlLG49ZS5jaGFyQ29kZUF0KGUubGVuZ3RoLTEpPT09dmU7cmV0dXJuIDA9PT0oZT1QZShlLCF0LCIvIixPZSkpLmxlbmd0aD90PyIvIjpuPyIuLyI6Ii4iOihuJiYoZSs9Ii8iKSx0P2AvJHtlfWA6ZSl9LGlzQWJzb2x1dGU6ZT0+KE1lKGUsInBhdGgiKSxlLmxlbmd0aD4wJiZlLmNoYXJDb2RlQXQoMCk9PT12ZSksam9pbiguLi5lKXtpZigwPT09ZS5sZW5ndGgpcmV0dXJuIi4iO2xldCB0O2ZvcihsZXQgbj0wO248ZS5sZW5ndGg7KytuKXtjb25zdCByPWVbbl07TWUociwicGF0aCIpLHIubGVuZ3RoPjAmJih2b2lkIDA9PT10P3Q9cjp0Kz1gLyR7cn1gKX1yZXR1cm4gdm9pZCAwPT09dD8iLiI6S2Uubm9ybWFsaXplKHQpfSxyZWxhdGl2ZShlLHQpe2lmKE1lKGUsImZyb20iKSxNZSh0LCJ0byIpLGU9PT10KXJldHVybiIiO2lmKChlPUtlLnJlc29sdmUoZSkpPT09KHQ9S2UucmVzb2x2ZSh0KSkpcmV0dXJuIiI7Y29uc3Qgbj1lLmxlbmd0aCxyPW4tMSxpPXQubGVuZ3RoLTEsbz1yPGk/cjppO2xldCBhPS0xLHM9MDtmb3IoO3M8bztzKyspe2NvbnN0IG49ZS5jaGFyQ29kZUF0KDErcyk7aWYobiE9PXQuY2hhckNvZGVBdCgxK3MpKWJyZWFrO249PT12ZSYmKGE9cyl9aWYocz09PW8paWYoaT5vKXtpZih0LmNoYXJDb2RlQXQoMStzKT09PXZlKXJldHVybiB0LnNsaWNlKDErcysxKTtpZigwPT09cylyZXR1cm4gdC5zbGljZSgxK3MpfWVsc2Ugcj5vJiYoZS5jaGFyQ29kZUF0KDErcyk9PT12ZT9hPXM6MD09PXMmJihhPTApKTtsZXQgbD0iIjtmb3Iocz0xK2ErMTtzPD1uOysrcylzIT09biYmZS5jaGFyQ29kZUF0KHMpIT09dmV8fChsKz0wPT09bC5sZW5ndGg/Ii4uIjoiLy4uIik7cmV0dXJuYCR7bH0ke3Quc2xpY2UoMSthKX1gfSx0b05hbWVzcGFjZWRQYXRoOmU9PmUsZGlybmFtZShlKXtpZihNZShlLCJwYXRoIiksMD09PWUubGVuZ3RoKXJldHVybiIuIjtjb25zdCB0PWUuY2hhckNvZGVBdCgwKT09PXZlO2xldCBuPS0xLHI9ITA7Zm9yKGxldCB0PWUubGVuZ3RoLTE7dD49MTstLXQpaWYoZS5jaGFyQ29kZUF0KHQpPT09dmUpe2lmKCFyKXtuPXQ7YnJlYWt9fWVsc2Ugcj0hMTtyZXR1cm4tMT09PW4/dD8iLyI6Ii4iOnQmJjE9PT1uPyIvLyI6ZS5zbGljZSgwLG4pfSxiYXNlbmFtZShlLHQpe3ZvaWQgMCE9PXQmJk1lKHQsImV4dCIpLE1lKGUsInBhdGgiKTtsZXQgbixyPTAsaT0tMSxvPSEwO2lmKHZvaWQgMCE9PXQmJnQubGVuZ3RoPjAmJnQubGVuZ3RoPD1lLmxlbmd0aCl7aWYodD09PWUpcmV0dXJuIiI7bGV0IGE9dC5sZW5ndGgtMSxzPS0xO2ZvcihuPWUubGVuZ3RoLTE7bj49MDstLW4pe2NvbnN0IGw9ZS5jaGFyQ29kZUF0KG4pO2lmKGw9PT12ZSl7aWYoIW8pe3I9bisxO2JyZWFrfX1lbHNlLTE9PT1zJiYobz0hMSxzPW4rMSksYT49MCYmKGw9PT10LmNoYXJDb2RlQXQoYSk/LTE9PS0tYSYmKGk9bik6KGE9LTEsaT1zKSl9cmV0dXJuIHI9PT1pP2k9czotMT09PWkmJihpPWUubGVuZ3RoKSxlLnNsaWNlKHIsaSl9Zm9yKG49ZS5sZW5ndGgtMTtuPj0wOy0tbilpZihlLmNoYXJDb2RlQXQobik9PT12ZSl7aWYoIW8pe3I9bisxO2JyZWFrfX1lbHNlLTE9PT1pJiYobz0hMSxpPW4rMSk7cmV0dXJuLTE9PT1pPyIiOmUuc2xpY2UocixpKX0sZXh0bmFtZShlKXtNZShlLCJwYXRoIik7bGV0IHQ9LTEsbj0wLHI9LTEsaT0hMCxvPTA7Zm9yKGxldCBhPWUubGVuZ3RoLTE7YT49MDstLWEpe2NvbnN0IHM9ZS5jaGFyQ29kZUF0KGEpO2lmKHMhPT12ZSktMT09PXImJihpPSExLHI9YSsxKSxzPT09TmU/LTE9PT10P3Q9YToxIT09byYmKG89MSk6LTEhPT10JiYobz0tMSk7ZWxzZSBpZighaSl7bj1hKzE7YnJlYWt9fXJldHVybi0xPT09dHx8LTE9PT1yfHwwPT09b3x8MT09PW8mJnQ9PT1yLTEmJnQ9PT1uKzE/IiI6ZS5zbGljZSh0LHIpfSxmb3JtYXQ6VGUuYmluZChudWxsLCIvIikscGFyc2UoZSl7TWUoZSwicGF0aCIpO2NvbnN0IHQ9e3Jvb3Q6IiIsZGlyOiIiLGJhc2U6IiIsZXh0OiIiLG5hbWU6IiJ9O2lmKDA9PT1lLmxlbmd0aClyZXR1cm4gdDtjb25zdCBuPWUuY2hhckNvZGVBdCgwKT09PXZlO2xldCByO24/KHQucm9vdD0iLyIscj0xKTpyPTA7bGV0IGk9LTEsbz0wLGE9LTEscz0hMCxsPWUubGVuZ3RoLTEsYz0wO2Zvcig7bD49cjstLWwpe2NvbnN0IHQ9ZS5jaGFyQ29kZUF0KGwpO2lmKHQhPT12ZSktMT09PWEmJihzPSExLGE9bCsxKSx0PT09TmU/LTE9PT1pP2k9bDoxIT09YyYmKGM9MSk6LTEhPT1pJiYoYz0tMSk7ZWxzZSBpZighcyl7bz1sKzE7YnJlYWt9fWlmKC0xIT09YSl7Y29uc3Qgcj0wPT09byYmbj8xOm87LTE9PT1pfHwwPT09Y3x8MT09PWMmJmk9PT1hLTEmJmk9PT1vKzE/dC5iYXNlPXQubmFtZT1lLnNsaWNlKHIsYSk6KHQubmFtZT1lLnNsaWNlKHIsaSksdC5iYXNlPWUuc2xpY2UocixhKSx0LmV4dD1lLnNsaWNlKGksYSkpfXJldHVybiBvPjA/dC5kaXI9ZS5zbGljZSgwLG8tMSk6biYmKHQuZGlyPSIvIiksdH0sc2VwOiIvIixkZWxpbWl0ZXI6IjoiLHdpbjMyOm51bGwscG9zaXg6bnVsbH07S2Uud2luMzI9SWUud2luMzI9SWUsS2UucG9zaXg9SWUucG9zaXg9S2UsIndpbjMyIj09PUxlP0llLm5vcm1hbGl6ZTpLZS5ub3JtYWxpemUsIndpbjMyIj09PUxlP0llLnJlc29sdmU6S2UucmVzb2x2ZSwid2luMzIiPT09TGU/SWUucmVsYXRpdmU6S2UucmVsYXRpdmUsIndpbjMyIj09PUxlP0llLmRpcm5hbWU6S2UuZGlybmFtZSwid2luMzIiPT09TGU/SWUuYmFzZW5hbWU6S2UuYmFzZW5hbWUsIndpbjMyIj09PUxlP0llLmV4dG5hbWU6S2UuZXh0bmFtZSwid2luMzIiPT09TGU/SWUuc2VwOktlLnNlcDtjb25zdCBEZT0vXlx3W1x3XGQrLi1dKiQvLFZlPS9eXC8vLEZlPS9eXC9cLy87ZnVuY3Rpb24gQmUoZSx0KXtpZighZS5zY2hlbWUmJnQpdGhyb3cgbmV3IEVycm9yKGBbVXJpRXJyb3JdOiBTY2hlbWUgaXMgbWlzc2luZzoge3NjaGVtZTogIiIsIGF1dGhvcml0eTogIiR7ZS5hdXRob3JpdHl9IiwgcGF0aDogIiR7ZS5wYXRofSIsIHF1ZXJ5OiAiJHtlLnF1ZXJ5fSIsIGZyYWdtZW50OiAiJHtlLmZyYWdtZW50fSJ9YCk7aWYoZS5zY2hlbWUmJiFEZS50ZXN0KGUuc2NoZW1lKSl0aHJvdyBuZXcgRXJyb3IoIltVcmlFcnJvcl06IFNjaGVtZSBjb250YWlucyBpbGxlZ2FsIGNoYXJhY3RlcnMuIik7aWYoZS5wYXRoKWlmKGUuYXV0aG9yaXR5KXtpZighVmUudGVzdChlLnBhdGgpKXRocm93IG5ldyBFcnJvcignW1VyaUVycm9yXTogSWYgYSBVUkkgY29udGFpbnMgYW4gYXV0aG9yaXR5IGNvbXBvbmVudCwgdGhlbiB0aGUgcGF0aCBjb21wb25lbnQgbXVzdCBlaXRoZXIgYmUgZW1wdHkgb3IgYmVnaW4gd2l0aCBhIHNsYXNoICgiLyIpIGNoYXJhY3RlcicpfWVsc2UgaWYoRmUudGVzdChlLnBhdGgpKXRocm93IG5ldyBFcnJvcignW1VyaUVycm9yXTogSWYgYSBVUkkgZG9lcyBub3QgY29udGFpbiBhbiBhdXRob3JpdHkgY29tcG9uZW50LCB0aGVuIHRoZSBwYXRoIGNhbm5vdCBiZWdpbiB3aXRoIHR3byBzbGFzaCBjaGFyYWN0ZXJzICgiLy8iKScpfWNvbnN0IFVlPSIiLHFlPSIvIixIZT0vXigoW146Lz8jXSs/KTopPyhcL1wvKFteLz8jXSopKT8oW14/I10qKShcPyhbXiNdKikpPygjKC4qKSk/LztjbGFzcyBXZXtjb25zdHJ1Y3RvcihlLHQsbixyLGksbz0hMSl7Im9iamVjdCI9PXR5cGVvZiBlPyh0aGlzLnNjaGVtZT1lLnNjaGVtZXx8VWUsdGhpcy5hdXRob3JpdHk9ZS5hdXRob3JpdHl8fFVlLHRoaXMucGF0aD1lLnBhdGh8fFVlLHRoaXMucXVlcnk9ZS5xdWVyeXx8VWUsdGhpcy5mcmFnbWVudD1lLmZyYWdtZW50fHxVZSk6KHRoaXMuc2NoZW1lPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGV8fHQ/ZToiZmlsZSJ9KGUsbyksdGhpcy5hdXRob3JpdHk9dHx8VWUsdGhpcy5wYXRoPWZ1bmN0aW9uKGUsdCl7c3dpdGNoKGUpe2Nhc2UiaHR0cHMiOmNhc2UiaHR0cCI6Y2FzZSJmaWxlIjp0P3RbMF0hPT1xZSYmKHQ9cWUrdCk6dD1xZX1yZXR1cm4gdH0odGhpcy5zY2hlbWUsbnx8VWUpLHRoaXMucXVlcnk9cnx8VWUsdGhpcy5mcmFnbWVudD1pfHxVZSxCZSh0aGlzLG8pKX1zdGF0aWMgaXNVcmkoZSl7cmV0dXJuIGUgaW5zdGFuY2VvZiBXZXx8ISFlJiYoInN0cmluZyI9PXR5cGVvZiBlLmF1dGhvcml0eSYmInN0cmluZyI9PXR5cGVvZiBlLmZyYWdtZW50JiYic3RyaW5nIj09dHlwZW9mIGUucGF0aCYmInN0cmluZyI9PXR5cGVvZiBlLnF1ZXJ5JiYic3RyaW5nIj09dHlwZW9mIGUuc2NoZW1lJiYic3RyaW5nIj09dHlwZW9mIGUuZnNQYXRoJiYiZnVuY3Rpb24iPT10eXBlb2YgZS53aXRoJiYiZnVuY3Rpb24iPT10eXBlb2YgZS50b1N0cmluZyl9Z2V0IGZzUGF0aCgpe3JldHVybiBaZSh0aGlzLCExKX13aXRoKGUpe2lmKCFlKXJldHVybiB0aGlzO2xldHtzY2hlbWU6dCxhdXRob3JpdHk6bixwYXRoOnIscXVlcnk6aSxmcmFnbWVudDpvfT1lO3JldHVybiB2b2lkIDA9PT10P3Q9dGhpcy5zY2hlbWU6bnVsbD09PXQmJih0PVVlKSx2b2lkIDA9PT1uP249dGhpcy5hdXRob3JpdHk6bnVsbD09PW4mJihuPVVlKSx2b2lkIDA9PT1yP3I9dGhpcy5wYXRoOm51bGw9PT1yJiYocj1VZSksdm9pZCAwPT09aT9pPXRoaXMucXVlcnk6bnVsbD09PWkmJihpPVVlKSx2b2lkIDA9PT1vP289dGhpcy5mcmFnbWVudDpudWxsPT09byYmKG89VWUpLHQ9PT10aGlzLnNjaGVtZSYmbj09PXRoaXMuYXV0aG9yaXR5JiZyPT09dGhpcy5wYXRoJiZpPT09dGhpcy5xdWVyeSYmbz09PXRoaXMuZnJhZ21lbnQ/dGhpczpuZXcgemUodCxuLHIsaSxvKX1zdGF0aWMgcGFyc2UoZSx0PSExKXtjb25zdCBuPUhlLmV4ZWMoZSk7cmV0dXJuIG4/bmV3IHplKG5bMl18fFVlLGV0KG5bNF18fFVlKSxldChuWzVdfHxVZSksZXQobls3XXx8VWUpLGV0KG5bOV18fFVlKSx0KTpuZXcgemUoVWUsVWUsVWUsVWUsVWUpfXN0YXRpYyBmaWxlKGUpe2xldCB0PVVlO2lmKE8mJihlPWUucmVwbGFjZSgvXFwvZyxxZSkpLGVbMF09PT1xZSYmZVsxXT09PXFlKXtjb25zdCBuPWUuaW5kZXhPZihxZSwyKTstMT09PW4/KHQ9ZS5zdWJzdHJpbmcoMiksZT1xZSk6KHQ9ZS5zdWJzdHJpbmcoMixuKSxlPWUuc3Vic3RyaW5nKG4pfHxxZSl9cmV0dXJuIG5ldyB6ZSgiZmlsZSIsdCxlLFVlLFVlKX1zdGF0aWMgZnJvbShlKXtjb25zdCB0PW5ldyB6ZShlLnNjaGVtZSxlLmF1dGhvcml0eSxlLnBhdGgsZS5xdWVyeSxlLmZyYWdtZW50KTtyZXR1cm4gQmUodCwhMCksdH1zdGF0aWMgam9pblBhdGgoZSwuLi50KXtpZighZS5wYXRoKXRocm93IG5ldyBFcnJvcigiW1VyaUVycm9yXTogY2Fubm90IGNhbGwgam9pblBhdGggb24gVVJJIHdpdGhvdXQgcGF0aCIpO2xldCBuO3JldHVybiBuPU8mJiJmaWxlIj09PWUuc2NoZW1lP1dlLmZpbGUoSWUuam9pbihaZShlLCEwKSwuLi50KSkucGF0aDpLZS5qb2luKGUucGF0aCwuLi50KSxlLndpdGgoe3BhdGg6bn0pfXRvU3RyaW5nKGU9ITEpe3JldHVybiBRZSh0aGlzLGUpfXRvSlNPTigpe3JldHVybiB0aGlzfXN0YXRpYyByZXZpdmUoZSl7aWYoZSl7aWYoZSBpbnN0YW5jZW9mIFdlKXJldHVybiBlO3tjb25zdCB0PW5ldyB6ZShlKTtyZXR1cm4gdC5fZm9ybWF0dGVkPWUuZXh0ZXJuYWwsdC5fZnNQYXRoPWUuX3NlcD09PSRlP2UuZnNQYXRoOm51bGwsdH19cmV0dXJuIGV9fWNvbnN0ICRlPU8/MTp2b2lkIDA7Y2xhc3MgemUgZXh0ZW5kcyBXZXtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5fZm9ybWF0dGVkPW51bGwsdGhpcy5fZnNQYXRoPW51bGx9Z2V0IGZzUGF0aCgpe3JldHVybiB0aGlzLl9mc1BhdGh8fCh0aGlzLl9mc1BhdGg9WmUodGhpcywhMSkpLHRoaXMuX2ZzUGF0aH10b1N0cmluZyhlPSExKXtyZXR1cm4gZT9RZSh0aGlzLCEwKToodGhpcy5fZm9ybWF0dGVkfHwodGhpcy5fZm9ybWF0dGVkPVFlKHRoaXMsITEpKSx0aGlzLl9mb3JtYXR0ZWQpfXRvSlNPTigpe2NvbnN0IGU9eyRtaWQ6MX07cmV0dXJuIHRoaXMuX2ZzUGF0aCYmKGUuZnNQYXRoPXRoaXMuX2ZzUGF0aCxlLl9zZXA9JGUpLHRoaXMuX2Zvcm1hdHRlZCYmKGUuZXh0ZXJuYWw9dGhpcy5fZm9ybWF0dGVkKSx0aGlzLnBhdGgmJihlLnBhdGg9dGhpcy5wYXRoKSx0aGlzLnNjaGVtZSYmKGUuc2NoZW1lPXRoaXMuc2NoZW1lKSx0aGlzLmF1dGhvcml0eSYmKGUuYXV0aG9yaXR5PXRoaXMuYXV0aG9yaXR5KSx0aGlzLnF1ZXJ5JiYoZS5xdWVyeT10aGlzLnF1ZXJ5KSx0aGlzLmZyYWdtZW50JiYoZS5mcmFnbWVudD10aGlzLmZyYWdtZW50KSxlfX1jb25zdCBqZT17NTg6IiUzQSIsNDc6IiUyRiIsNjM6IiUzRiIsMzU6IiUyMyIsOTE6IiU1QiIsOTM6IiU1RCIsNjQ6IiU0MCIsMzM6IiUyMSIsMzY6IiUyNCIsMzg6IiUyNiIsMzk6IiUyNyIsNDA6IiUyOCIsNDE6IiUyOSIsNDI6IiUyQSIsNDM6IiUyQiIsNDQ6IiUyQyIsNTk6IiUzQiIsNjE6IiUzRCIsMzI6IiUyMCJ9O2Z1bmN0aW9uIEdlKGUsdCl7bGV0IG4scj0tMTtmb3IobGV0IGk9MDtpPGUubGVuZ3RoO2krKyl7Y29uc3Qgbz1lLmNoYXJDb2RlQXQoaSk7aWYobz49OTcmJm88PTEyMnx8bz49NjUmJm88PTkwfHxvPj00OCYmbzw9NTd8fDQ1PT09b3x8NDY9PT1vfHw5NT09PW98fDEyNj09PW98fHQmJjQ3PT09byktMSE9PXImJihuKz1lbmNvZGVVUklDb21wb25lbnQoZS5zdWJzdHJpbmcocixpKSkscj0tMSksdm9pZCAwIT09biYmKG4rPWUuY2hhckF0KGkpKTtlbHNle3ZvaWQgMD09PW4mJihuPWUuc3Vic3RyKDAsaSkpO2NvbnN0IHQ9amVbb107dm9pZCAwIT09dD8oLTEhPT1yJiYobis9ZW5jb2RlVVJJQ29tcG9uZW50KGUuc3Vic3RyaW5nKHIsaSkpLHI9LTEpLG4rPXQpOi0xPT09ciYmKHI9aSl9fXJldHVybi0xIT09ciYmKG4rPWVuY29kZVVSSUNvbXBvbmVudChlLnN1YnN0cmluZyhyKSkpLHZvaWQgMCE9PW4/bjplfWZ1bmN0aW9uIFllKGUpe2xldCB0O2ZvcihsZXQgbj0wO248ZS5sZW5ndGg7bisrKXtjb25zdCByPWUuY2hhckNvZGVBdChuKTszNT09PXJ8fDYzPT09cj8odm9pZCAwPT09dCYmKHQ9ZS5zdWJzdHIoMCxuKSksdCs9amVbcl0pOnZvaWQgMCE9PXQmJih0Kz1lW25dKX1yZXR1cm4gdm9pZCAwIT09dD90OmV9ZnVuY3Rpb24gWmUoZSx0KXtsZXQgbjtyZXR1cm4gbj1lLmF1dGhvcml0eSYmZS5wYXRoLmxlbmd0aD4xJiYiZmlsZSI9PT1lLnNjaGVtZT9gLy8ke2UuYXV0aG9yaXR5fSR7ZS5wYXRofWA6NDc9PT1lLnBhdGguY2hhckNvZGVBdCgwKSYmKGUucGF0aC5jaGFyQ29kZUF0KDEpPj02NSYmZS5wYXRoLmNoYXJDb2RlQXQoMSk8PTkwfHxlLnBhdGguY2hhckNvZGVBdCgxKT49OTcmJmUucGF0aC5jaGFyQ29kZUF0KDEpPD0xMjIpJiY1OD09PWUucGF0aC5jaGFyQ29kZUF0KDIpP3Q/ZS5wYXRoLnN1YnN0cigxKTplLnBhdGhbMV0udG9Mb3dlckNhc2UoKStlLnBhdGguc3Vic3RyKDIpOmUucGF0aCxPJiYobj1uLnJlcGxhY2UoL1wvL2csIlxcIikpLG59ZnVuY3Rpb24gUWUoZSx0KXtjb25zdCBuPXQ/WWU6R2U7bGV0IHI9IiIse3NjaGVtZTppLGF1dGhvcml0eTpvLHBhdGg6YSxxdWVyeTpzLGZyYWdtZW50Omx9PWU7aWYoaSYmKHIrPWkscis9IjoiKSwob3x8ImZpbGUiPT09aSkmJihyKz1xZSxyKz1xZSksbyl7bGV0IGU9by5pbmRleE9mKCJAIik7aWYoLTEhPT1lKXtjb25zdCB0PW8uc3Vic3RyKDAsZSk7bz1vLnN1YnN0cihlKzEpLGU9dC5pbmRleE9mKCI6IiksLTE9PT1lP3IrPW4odCwhMSk6KHIrPW4odC5zdWJzdHIoMCxlKSwhMSkscis9IjoiLHIrPW4odC5zdWJzdHIoZSsxKSwhMSkpLHIrPSJAIn1vPW8udG9Mb3dlckNhc2UoKSxlPW8uaW5kZXhPZigiOiIpLC0xPT09ZT9yKz1uKG8sITEpOihyKz1uKG8uc3Vic3RyKDAsZSksITEpLHIrPW8uc3Vic3RyKGUpKX1pZihhKXtpZihhLmxlbmd0aD49MyYmNDc9PT1hLmNoYXJDb2RlQXQoMCkmJjU4PT09YS5jaGFyQ29kZUF0KDIpKXtjb25zdCBlPWEuY2hhckNvZGVBdCgxKTtlPj02NSYmZTw9OTAmJihhPWAvJHtTdHJpbmcuZnJvbUNoYXJDb2RlKGUrMzIpfToke2Euc3Vic3RyKDMpfWApfWVsc2UgaWYoYS5sZW5ndGg+PTImJjU4PT09YS5jaGFyQ29kZUF0KDEpKXtjb25zdCBlPWEuY2hhckNvZGVBdCgwKTtlPj02NSYmZTw9OTAmJihhPWAke1N0cmluZy5mcm9tQ2hhckNvZGUoZSszMil9OiR7YS5zdWJzdHIoMil9YCl9cis9bihhLCEwKX1yZXR1cm4gcyYmKHIrPSI/IixyKz1uKHMsITEpKSxsJiYocis9IiMiLHIrPXQ/bDpHZShsLCExKSkscn1mdW5jdGlvbiBKZShlKXt0cnl7cmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChlKX1jYXRjaCh0KXtyZXR1cm4gZS5sZW5ndGg+Mz9lLnN1YnN0cigwLDMpK0plKGUuc3Vic3RyKDMpKTplfX1jb25zdCBYZT0vKCVbMC05QS1aYS16XVswLTlBLVphLXpdKSsvZztmdW5jdGlvbiBldChlKXtyZXR1cm4gZS5tYXRjaChYZSk/ZS5yZXBsYWNlKFhlLChlPT5KZShlKSkpOmV9Y2xhc3MgdHR7Y29uc3RydWN0b3IoZSx0KXt0aGlzLmxpbmVOdW1iZXI9ZSx0aGlzLmNvbHVtbj10fXdpdGgoZT10aGlzLmxpbmVOdW1iZXIsdD10aGlzLmNvbHVtbil7cmV0dXJuIGU9PT10aGlzLmxpbmVOdW1iZXImJnQ9PT10aGlzLmNvbHVtbj90aGlzOm5ldyB0dChlLHQpfWRlbHRhKGU9MCx0PTApe3JldHVybiB0aGlzLndpdGgodGhpcy5saW5lTnVtYmVyK2UsdGhpcy5jb2x1bW4rdCl9ZXF1YWxzKGUpe3JldHVybiB0dC5lcXVhbHModGhpcyxlKX1zdGF0aWMgZXF1YWxzKGUsdCl7cmV0dXJuIWUmJiF0fHwhIWUmJiEhdCYmZS5saW5lTnVtYmVyPT09dC5saW5lTnVtYmVyJiZlLmNvbHVtbj09PXQuY29sdW1ufWlzQmVmb3JlKGUpe3JldHVybiB0dC5pc0JlZm9yZSh0aGlzLGUpfXN0YXRpYyBpc0JlZm9yZShlLHQpe3JldHVybiBlLmxpbmVOdW1iZXI8dC5saW5lTnVtYmVyfHwhKHQubGluZU51bWJlcjxlLmxpbmVOdW1iZXIpJiZlLmNvbHVtbjx0LmNvbHVtbn1pc0JlZm9yZU9yRXF1YWwoZSl7cmV0dXJuIHR0LmlzQmVmb3JlT3JFcXVhbCh0aGlzLGUpfXN0YXRpYyBpc0JlZm9yZU9yRXF1YWwoZSx0KXtyZXR1cm4gZS5saW5lTnVtYmVyPHQubGluZU51bWJlcnx8ISh0LmxpbmVOdW1iZXI8ZS5saW5lTnVtYmVyKSYmZS5jb2x1bW48PXQuY29sdW1ufXN0YXRpYyBjb21wYXJlKGUsdCl7Y29uc3Qgbj0wfGUubGluZU51bWJlcixyPTB8dC5saW5lTnVtYmVyO2lmKG49PT1yKXtyZXR1cm4oMHxlLmNvbHVtbiktKDB8dC5jb2x1bW4pfXJldHVybiBuLXJ9Y2xvbmUoKXtyZXR1cm4gbmV3IHR0KHRoaXMubGluZU51bWJlcix0aGlzLmNvbHVtbil9dG9TdHJpbmcoKXtyZXR1cm4iKCIrdGhpcy5saW5lTnVtYmVyKyIsIit0aGlzLmNvbHVtbisiKSJ9c3RhdGljIGxpZnQoZSl7cmV0dXJuIG5ldyB0dChlLmxpbmVOdW1iZXIsZS5jb2x1bW4pfXN0YXRpYyBpc0lQb3NpdGlvbihlKXtyZXR1cm4gZSYmIm51bWJlciI9PXR5cGVvZiBlLmxpbmVOdW1iZXImJiJudW1iZXIiPT10eXBlb2YgZS5jb2x1bW59fWNsYXNzIG50e2NvbnN0cnVjdG9yKGUsdCxuLHIpe2U+bnx8ZT09PW4mJnQ+cj8odGhpcy5zdGFydExpbmVOdW1iZXI9bix0aGlzLnN0YXJ0Q29sdW1uPXIsdGhpcy5lbmRMaW5lTnVtYmVyPWUsdGhpcy5lbmRDb2x1bW49dCk6KHRoaXMuc3RhcnRMaW5lTnVtYmVyPWUsdGhpcy5zdGFydENvbHVtbj10LHRoaXMuZW5kTGluZU51bWJlcj1uLHRoaXMuZW5kQ29sdW1uPXIpfWlzRW1wdHkoKXtyZXR1cm4gbnQuaXNFbXB0eSh0aGlzKX1zdGF0aWMgaXNFbXB0eShlKXtyZXR1cm4gZS5zdGFydExpbmVOdW1iZXI9PT1lLmVuZExpbmVOdW1iZXImJmUuc3RhcnRDb2x1bW49PT1lLmVuZENvbHVtbn1jb250YWluc1Bvc2l0aW9uKGUpe3JldHVybiBudC5jb250YWluc1Bvc2l0aW9uKHRoaXMsZSl9c3RhdGljIGNvbnRhaW5zUG9zaXRpb24oZSx0KXtyZXR1cm4hKHQubGluZU51bWJlcjxlLnN0YXJ0TGluZU51bWJlcnx8dC5saW5lTnVtYmVyPmUuZW5kTGluZU51bWJlcikmJighKHQubGluZU51bWJlcj09PWUuc3RhcnRMaW5lTnVtYmVyJiZ0LmNvbHVtbjxlLnN0YXJ0Q29sdW1uKSYmISh0LmxpbmVOdW1iZXI9PT1lLmVuZExpbmVOdW1iZXImJnQuY29sdW1uPmUuZW5kQ29sdW1uKSl9c3RhdGljIHN0cmljdENvbnRhaW5zUG9zaXRpb24oZSx0KXtyZXR1cm4hKHQubGluZU51bWJlcjxlLnN0YXJ0TGluZU51bWJlcnx8dC5saW5lTnVtYmVyPmUuZW5kTGluZU51bWJlcikmJighKHQubGluZU51bWJlcj09PWUuc3RhcnRMaW5lTnVtYmVyJiZ0LmNvbHVtbjw9ZS5zdGFydENvbHVtbikmJiEodC5saW5lTnVtYmVyPT09ZS5lbmRMaW5lTnVtYmVyJiZ0LmNvbHVtbj49ZS5lbmRDb2x1bW4pKX1jb250YWluc1JhbmdlKGUpe3JldHVybiBudC5jb250YWluc1JhbmdlKHRoaXMsZSl9c3RhdGljIGNvbnRhaW5zUmFuZ2UoZSx0KXtyZXR1cm4hKHQuc3RhcnRMaW5lTnVtYmVyPGUuc3RhcnRMaW5lTnVtYmVyfHx0LmVuZExpbmVOdW1iZXI8ZS5zdGFydExpbmVOdW1iZXIpJiYoISh0LnN0YXJ0TGluZU51bWJlcj5lLmVuZExpbmVOdW1iZXJ8fHQuZW5kTGluZU51bWJlcj5lLmVuZExpbmVOdW1iZXIpJiYoISh0LnN0YXJ0TGluZU51bWJlcj09PWUuc3RhcnRMaW5lTnVtYmVyJiZ0LnN0YXJ0Q29sdW1uPGUuc3RhcnRDb2x1bW4pJiYhKHQuZW5kTGluZU51bWJlcj09PWUuZW5kTGluZU51bWJlciYmdC5lbmRDb2x1bW4+ZS5lbmRDb2x1bW4pKSl9c3RyaWN0Q29udGFpbnNSYW5nZShlKXtyZXR1cm4gbnQuc3RyaWN0Q29udGFpbnNSYW5nZSh0aGlzLGUpfXN0YXRpYyBzdHJpY3RDb250YWluc1JhbmdlKGUsdCl7cmV0dXJuISh0LnN0YXJ0TGluZU51bWJlcjxlLnN0YXJ0TGluZU51bWJlcnx8dC5lbmRMaW5lTnVtYmVyPGUuc3RhcnRMaW5lTnVtYmVyKSYmKCEodC5zdGFydExpbmVOdW1iZXI+ZS5lbmRMaW5lTnVtYmVyfHx0LmVuZExpbmVOdW1iZXI+ZS5lbmRMaW5lTnVtYmVyKSYmKCEodC5zdGFydExpbmVOdW1iZXI9PT1lLnN0YXJ0TGluZU51bWJlciYmdC5zdGFydENvbHVtbjw9ZS5zdGFydENvbHVtbikmJiEodC5lbmRMaW5lTnVtYmVyPT09ZS5lbmRMaW5lTnVtYmVyJiZ0LmVuZENvbHVtbj49ZS5lbmRDb2x1bW4pKSl9cGx1c1JhbmdlKGUpe3JldHVybiBudC5wbHVzUmFuZ2UodGhpcyxlKX1zdGF0aWMgcGx1c1JhbmdlKGUsdCl7bGV0IG4scixpLG87cmV0dXJuIHQuc3RhcnRMaW5lTnVtYmVyPGUuc3RhcnRMaW5lTnVtYmVyPyhuPXQuc3RhcnRMaW5lTnVtYmVyLHI9dC5zdGFydENvbHVtbik6dC5zdGFydExpbmVOdW1iZXI9PT1lLnN0YXJ0TGluZU51bWJlcj8obj10LnN0YXJ0TGluZU51bWJlcixyPU1hdGgubWluKHQuc3RhcnRDb2x1bW4sZS5zdGFydENvbHVtbikpOihuPWUuc3RhcnRMaW5lTnVtYmVyLHI9ZS5zdGFydENvbHVtbiksdC5lbmRMaW5lTnVtYmVyPmUuZW5kTGluZU51bWJlcj8oaT10LmVuZExpbmVOdW1iZXIsbz10LmVuZENvbHVtbik6dC5lbmRMaW5lTnVtYmVyPT09ZS5lbmRMaW5lTnVtYmVyPyhpPXQuZW5kTGluZU51bWJlcixvPU1hdGgubWF4KHQuZW5kQ29sdW1uLGUuZW5kQ29sdW1uKSk6KGk9ZS5lbmRMaW5lTnVtYmVyLG89ZS5lbmRDb2x1bW4pLG5ldyBudChuLHIsaSxvKX1pbnRlcnNlY3RSYW5nZXMoZSl7cmV0dXJuIG50LmludGVyc2VjdFJhbmdlcyh0aGlzLGUpfXN0YXRpYyBpbnRlcnNlY3RSYW5nZXMoZSx0KXtsZXQgbj1lLnN0YXJ0TGluZU51bWJlcixyPWUuc3RhcnRDb2x1bW4saT1lLmVuZExpbmVOdW1iZXIsbz1lLmVuZENvbHVtbjtjb25zdCBhPXQuc3RhcnRMaW5lTnVtYmVyLHM9dC5zdGFydENvbHVtbixsPXQuZW5kTGluZU51bWJlcixjPXQuZW5kQ29sdW1uO3JldHVybiBuPGE/KG49YSxyPXMpOm49PT1hJiYocj1NYXRoLm1heChyLHMpKSxpPmw/KGk9bCxvPWMpOmk9PT1sJiYobz1NYXRoLm1pbihvLGMpKSxuPml8fG49PT1pJiZyPm8/bnVsbDpuZXcgbnQobixyLGksbyl9ZXF1YWxzUmFuZ2UoZSl7cmV0dXJuIG50LmVxdWFsc1JhbmdlKHRoaXMsZSl9c3RhdGljIGVxdWFsc1JhbmdlKGUsdCl7cmV0dXJuISFlJiYhIXQmJmUuc3RhcnRMaW5lTnVtYmVyPT09dC5zdGFydExpbmVOdW1iZXImJmUuc3RhcnRDb2x1bW49PT10LnN0YXJ0Q29sdW1uJiZlLmVuZExpbmVOdW1iZXI9PT10LmVuZExpbmVOdW1iZXImJmUuZW5kQ29sdW1uPT09dC5lbmRDb2x1bW59Z2V0RW5kUG9zaXRpb24oKXtyZXR1cm4gbnQuZ2V0RW5kUG9zaXRpb24odGhpcyl9c3RhdGljIGdldEVuZFBvc2l0aW9uKGUpe3JldHVybiBuZXcgdHQoZS5lbmRMaW5lTnVtYmVyLGUuZW5kQ29sdW1uKX1nZXRTdGFydFBvc2l0aW9uKCl7cmV0dXJuIG50LmdldFN0YXJ0UG9zaXRpb24odGhpcyl9c3RhdGljIGdldFN0YXJ0UG9zaXRpb24oZSl7cmV0dXJuIG5ldyB0dChlLnN0YXJ0TGluZU51bWJlcixlLnN0YXJ0Q29sdW1uKX10b1N0cmluZygpe3JldHVybiJbIit0aGlzLnN0YXJ0TGluZU51bWJlcisiLCIrdGhpcy5zdGFydENvbHVtbisiIC0+ICIrdGhpcy5lbmRMaW5lTnVtYmVyKyIsIit0aGlzLmVuZENvbHVtbisiXSJ9c2V0RW5kUG9zaXRpb24oZSx0KXtyZXR1cm4gbmV3IG50KHRoaXMuc3RhcnRMaW5lTnVtYmVyLHRoaXMuc3RhcnRDb2x1bW4sZSx0KX1zZXRTdGFydFBvc2l0aW9uKGUsdCl7cmV0dXJuIG5ldyBudChlLHQsdGhpcy5lbmRMaW5lTnVtYmVyLHRoaXMuZW5kQ29sdW1uKX1jb2xsYXBzZVRvU3RhcnQoKXtyZXR1cm4gbnQuY29sbGFwc2VUb1N0YXJ0KHRoaXMpfXN0YXRpYyBjb2xsYXBzZVRvU3RhcnQoZSl7cmV0dXJuIG5ldyBudChlLnN0YXJ0TGluZU51bWJlcixlLnN0YXJ0Q29sdW1uLGUuc3RhcnRMaW5lTnVtYmVyLGUuc3RhcnRDb2x1bW4pfXN0YXRpYyBmcm9tUG9zaXRpb25zKGUsdD1lKXtyZXR1cm4gbmV3IG50KGUubGluZU51bWJlcixlLmNvbHVtbix0LmxpbmVOdW1iZXIsdC5jb2x1bW4pfXN0YXRpYyBsaWZ0KGUpe3JldHVybiBlP25ldyBudChlLnN0YXJ0TGluZU51bWJlcixlLnN0YXJ0Q29sdW1uLGUuZW5kTGluZU51bWJlcixlLmVuZENvbHVtbik6bnVsbH1zdGF0aWMgaXNJUmFuZ2UoZSl7cmV0dXJuIGUmJiJudW1iZXIiPT10eXBlb2YgZS5zdGFydExpbmVOdW1iZXImJiJudW1iZXIiPT10eXBlb2YgZS5zdGFydENvbHVtbiYmIm51bWJlciI9PXR5cGVvZiBlLmVuZExpbmVOdW1iZXImJiJudW1iZXIiPT10eXBlb2YgZS5lbmRDb2x1bW59c3RhdGljIGFyZUludGVyc2VjdGluZ09yVG91Y2hpbmcoZSx0KXtyZXR1cm4hKGUuZW5kTGluZU51bWJlcjx0LnN0YXJ0TGluZU51bWJlcnx8ZS5lbmRMaW5lTnVtYmVyPT09dC5zdGFydExpbmVOdW1iZXImJmUuZW5kQ29sdW1uPHQuc3RhcnRDb2x1bW4pJiYhKHQuZW5kTGluZU51bWJlcjxlLnN0YXJ0TGluZU51bWJlcnx8dC5lbmRMaW5lTnVtYmVyPT09ZS5zdGFydExpbmVOdW1iZXImJnQuZW5kQ29sdW1uPGUuc3RhcnRDb2x1bW4pfXN0YXRpYyBhcmVJbnRlcnNlY3RpbmcoZSx0KXtyZXR1cm4hKGUuZW5kTGluZU51bWJlcjx0LnN0YXJ0TGluZU51bWJlcnx8ZS5lbmRMaW5lTnVtYmVyPT09dC5zdGFydExpbmVOdW1iZXImJmUuZW5kQ29sdW1uPD10LnN0YXJ0Q29sdW1uKSYmISh0LmVuZExpbmVOdW1iZXI8ZS5zdGFydExpbmVOdW1iZXJ8fHQuZW5kTGluZU51bWJlcj09PWUuc3RhcnRMaW5lTnVtYmVyJiZ0LmVuZENvbHVtbjw9ZS5zdGFydENvbHVtbil9c3RhdGljIGNvbXBhcmVSYW5nZXNVc2luZ1N0YXJ0cyhlLHQpe2lmKGUmJnQpe2NvbnN0IG49MHxlLnN0YXJ0TGluZU51bWJlcixyPTB8dC5zdGFydExpbmVOdW1iZXI7aWYobj09PXIpe2NvbnN0IG49MHxlLnN0YXJ0Q29sdW1uLHI9MHx0LnN0YXJ0Q29sdW1uO2lmKG49PT1yKXtjb25zdCBuPTB8ZS5lbmRMaW5lTnVtYmVyLHI9MHx0LmVuZExpbmVOdW1iZXI7aWYobj09PXIpe3JldHVybigwfGUuZW5kQ29sdW1uKS0oMHx0LmVuZENvbHVtbil9cmV0dXJuIG4tcn1yZXR1cm4gbi1yfXJldHVybiBuLXJ9cmV0dXJuKGU/MTowKS0odD8xOjApfXN0YXRpYyBjb21wYXJlUmFuZ2VzVXNpbmdFbmRzKGUsdCl7cmV0dXJuIGUuZW5kTGluZU51bWJlcj09PXQuZW5kTGluZU51bWJlcj9lLmVuZENvbHVtbj09PXQuZW5kQ29sdW1uP2Uuc3RhcnRMaW5lTnVtYmVyPT09dC5zdGFydExpbmVOdW1iZXI/ZS5zdGFydENvbHVtbi10LnN0YXJ0Q29sdW1uOmUuc3RhcnRMaW5lTnVtYmVyLXQuc3RhcnRMaW5lTnVtYmVyOmUuZW5kQ29sdW1uLXQuZW5kQ29sdW1uOmUuZW5kTGluZU51bWJlci10LmVuZExpbmVOdW1iZXJ9c3RhdGljIHNwYW5zTXVsdGlwbGVMaW5lcyhlKXtyZXR1cm4gZS5lbmRMaW5lTnVtYmVyPmUuc3RhcnRMaW5lTnVtYmVyfXRvSlNPTigpe3JldHVybiB0aGlzfX1mdW5jdGlvbiBydChlLHQsbixyKXtyZXR1cm4gbmV3IHdlKGUsdCxuKS5Db21wdXRlRGlmZihyKX1jbGFzcyBpdHtjb25zdHJ1Y3RvcihlKXtjb25zdCB0PVtdLG49W107Zm9yKGxldCByPTAsaT1lLmxlbmd0aDtyPGk7cisrKXRbcl09Y3QoZVtyXSwxKSxuW3JdPXV0KGVbcl0sMSk7dGhpcy5saW5lcz1lLHRoaXMuX3N0YXJ0Q29sdW1ucz10LHRoaXMuX2VuZENvbHVtbnM9bn1nZXRFbGVtZW50cygpe2NvbnN0IGU9W107Zm9yKGxldCB0PTAsbj10aGlzLmxpbmVzLmxlbmd0aDt0PG47dCsrKWVbdF09dGhpcy5saW5lc1t0XS5zdWJzdHJpbmcodGhpcy5fc3RhcnRDb2x1bW5zW3RdLTEsdGhpcy5fZW5kQ29sdW1uc1t0XS0xKTtyZXR1cm4gZX1nZXRTdHJpY3RFbGVtZW50KGUpe3JldHVybiB0aGlzLmxpbmVzW2VdfWdldFN0YXJ0TGluZU51bWJlcihlKXtyZXR1cm4gZSsxfWdldEVuZExpbmVOdW1iZXIoZSl7cmV0dXJuIGUrMX1jcmVhdGVDaGFyU2VxdWVuY2UoZSx0LG4pe2NvbnN0IHI9W10saT1bXSxvPVtdO2xldCBhPTA7Zm9yKGxldCBzPXQ7czw9bjtzKyspe2NvbnN0IHQ9dGhpcy5saW5lc1tzXSxsPWU/dGhpcy5fc3RhcnRDb2x1bW5zW3NdOjEsYz1lP3RoaXMuX2VuZENvbHVtbnNbc106dC5sZW5ndGgrMTtmb3IobGV0IGU9bDtlPGM7ZSsrKXJbYV09dC5jaGFyQ29kZUF0KGUtMSksaVthXT1zKzEsb1thXT1lLGErKzshZSYmczxuJiYoclthXT0xMCxpW2FdPXMrMSxvW2FdPXQubGVuZ3RoKzEsYSsrKX1yZXR1cm4gbmV3IG90KHIsaSxvKX19Y2xhc3Mgb3R7Y29uc3RydWN0b3IoZSx0LG4pe3RoaXMuX2NoYXJDb2Rlcz1lLHRoaXMuX2xpbmVOdW1iZXJzPXQsdGhpcy5fY29sdW1ucz1ufXRvU3RyaW5nKCl7cmV0dXJuIlsiK3RoaXMuX2NoYXJDb2Rlcy5tYXAoKChlLHQpPT4oMTA9PT1lPyJcXG4iOlN0cmluZy5mcm9tQ2hhckNvZGUoZSkpK2AtKCR7dGhpcy5fbGluZU51bWJlcnNbdF19LCR7dGhpcy5fY29sdW1uc1t0XX0pYCkpLmpvaW4oIiwgIikrIl0ifV9hc3NlcnRJbmRleChlLHQpe2lmKGU8MHx8ZT49dC5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJJbGxlZ2FsIGluZGV4Iil9Z2V0RWxlbWVudHMoKXtyZXR1cm4gdGhpcy5fY2hhckNvZGVzfWdldFN0YXJ0TGluZU51bWJlcihlKXtyZXR1cm4gZT4wJiZlPT09dGhpcy5fbGluZU51bWJlcnMubGVuZ3RoP3RoaXMuZ2V0RW5kTGluZU51bWJlcihlLTEpOih0aGlzLl9hc3NlcnRJbmRleChlLHRoaXMuX2xpbmVOdW1iZXJzKSx0aGlzLl9saW5lTnVtYmVyc1tlXSl9Z2V0RW5kTGluZU51bWJlcihlKXtyZXR1cm4tMT09PWU/dGhpcy5nZXRTdGFydExpbmVOdW1iZXIoZSsxKToodGhpcy5fYXNzZXJ0SW5kZXgoZSx0aGlzLl9saW5lTnVtYmVycyksMTA9PT10aGlzLl9jaGFyQ29kZXNbZV0/dGhpcy5fbGluZU51bWJlcnNbZV0rMTp0aGlzLl9saW5lTnVtYmVyc1tlXSl9Z2V0U3RhcnRDb2x1bW4oZSl7cmV0dXJuIGU+MCYmZT09PXRoaXMuX2NvbHVtbnMubGVuZ3RoP3RoaXMuZ2V0RW5kQ29sdW1uKGUtMSk6KHRoaXMuX2Fzc2VydEluZGV4KGUsdGhpcy5fY29sdW1ucyksdGhpcy5fY29sdW1uc1tlXSl9Z2V0RW5kQ29sdW1uKGUpe3JldHVybi0xPT09ZT90aGlzLmdldFN0YXJ0Q29sdW1uKGUrMSk6KHRoaXMuX2Fzc2VydEluZGV4KGUsdGhpcy5fY29sdW1ucyksMTA9PT10aGlzLl9jaGFyQ29kZXNbZV0/MTp0aGlzLl9jb2x1bW5zW2VdKzEpfX1jbGFzcyBhdHtjb25zdHJ1Y3RvcihlLHQsbixyLGksbyxhLHMpe3RoaXMub3JpZ2luYWxTdGFydExpbmVOdW1iZXI9ZSx0aGlzLm9yaWdpbmFsU3RhcnRDb2x1bW49dCx0aGlzLm9yaWdpbmFsRW5kTGluZU51bWJlcj1uLHRoaXMub3JpZ2luYWxFbmRDb2x1bW49cix0aGlzLm1vZGlmaWVkU3RhcnRMaW5lTnVtYmVyPWksdGhpcy5tb2RpZmllZFN0YXJ0Q29sdW1uPW8sdGhpcy5tb2RpZmllZEVuZExpbmVOdW1iZXI9YSx0aGlzLm1vZGlmaWVkRW5kQ29sdW1uPXN9c3RhdGljIGNyZWF0ZUZyb21EaWZmQ2hhbmdlKGUsdCxuKXtjb25zdCByPXQuZ2V0U3RhcnRMaW5lTnVtYmVyKGUub3JpZ2luYWxTdGFydCksaT10LmdldFN0YXJ0Q29sdW1uKGUub3JpZ2luYWxTdGFydCksbz10LmdldEVuZExpbmVOdW1iZXIoZS5vcmlnaW5hbFN0YXJ0K2Uub3JpZ2luYWxMZW5ndGgtMSksYT10LmdldEVuZENvbHVtbihlLm9yaWdpbmFsU3RhcnQrZS5vcmlnaW5hbExlbmd0aC0xKSxzPW4uZ2V0U3RhcnRMaW5lTnVtYmVyKGUubW9kaWZpZWRTdGFydCksbD1uLmdldFN0YXJ0Q29sdW1uKGUubW9kaWZpZWRTdGFydCksYz1uLmdldEVuZExpbmVOdW1iZXIoZS5tb2RpZmllZFN0YXJ0K2UubW9kaWZpZWRMZW5ndGgtMSksdT1uLmdldEVuZENvbHVtbihlLm1vZGlmaWVkU3RhcnQrZS5tb2RpZmllZExlbmd0aC0xKTtyZXR1cm4gbmV3IGF0KHIsaSxvLGEscyxsLGMsdSl9fWNsYXNzIHN0e2NvbnN0cnVjdG9yKGUsdCxuLHIsaSl7dGhpcy5vcmlnaW5hbFN0YXJ0TGluZU51bWJlcj1lLHRoaXMub3JpZ2luYWxFbmRMaW5lTnVtYmVyPXQsdGhpcy5tb2RpZmllZFN0YXJ0TGluZU51bWJlcj1uLHRoaXMubW9kaWZpZWRFbmRMaW5lTnVtYmVyPXIsdGhpcy5jaGFyQ2hhbmdlcz1pfXN0YXRpYyBjcmVhdGVGcm9tRGlmZlJlc3VsdChlLHQsbixyLGksbyxhKXtsZXQgcyxsLGMsdSxoO2lmKDA9PT10Lm9yaWdpbmFsTGVuZ3RoPyhzPW4uZ2V0U3RhcnRMaW5lTnVtYmVyKHQub3JpZ2luYWxTdGFydCktMSxsPTApOihzPW4uZ2V0U3RhcnRMaW5lTnVtYmVyKHQub3JpZ2luYWxTdGFydCksbD1uLmdldEVuZExpbmVOdW1iZXIodC5vcmlnaW5hbFN0YXJ0K3Qub3JpZ2luYWxMZW5ndGgtMSkpLDA9PT10Lm1vZGlmaWVkTGVuZ3RoPyhjPXIuZ2V0U3RhcnRMaW5lTnVtYmVyKHQubW9kaWZpZWRTdGFydCktMSx1PTApOihjPXIuZ2V0U3RhcnRMaW5lTnVtYmVyKHQubW9kaWZpZWRTdGFydCksdT1yLmdldEVuZExpbmVOdW1iZXIodC5tb2RpZmllZFN0YXJ0K3QubW9kaWZpZWRMZW5ndGgtMSkpLG8mJnQub3JpZ2luYWxMZW5ndGg+MCYmdC5vcmlnaW5hbExlbmd0aDwyMCYmdC5tb2RpZmllZExlbmd0aD4wJiZ0Lm1vZGlmaWVkTGVuZ3RoPDIwJiZpKCkpe2NvbnN0IG89bi5jcmVhdGVDaGFyU2VxdWVuY2UoZSx0Lm9yaWdpbmFsU3RhcnQsdC5vcmlnaW5hbFN0YXJ0K3Qub3JpZ2luYWxMZW5ndGgtMSkscz1yLmNyZWF0ZUNoYXJTZXF1ZW5jZShlLHQubW9kaWZpZWRTdGFydCx0Lm1vZGlmaWVkU3RhcnQrdC5tb2RpZmllZExlbmd0aC0xKTtpZihvLmdldEVsZW1lbnRzKCkubGVuZ3RoPjAmJnMuZ2V0RWxlbWVudHMoKS5sZW5ndGg+MCl7bGV0IGU9cnQobyxzLGksITApLmNoYW5nZXM7YSYmKGU9ZnVuY3Rpb24oZSl7aWYoZS5sZW5ndGg8PTEpcmV0dXJuIGU7Y29uc3QgdD1bZVswXV07bGV0IG49dFswXTtmb3IobGV0IHI9MSxpPWUubGVuZ3RoO3I8aTtyKyspe2NvbnN0IGk9ZVtyXSxvPWkub3JpZ2luYWxTdGFydC0obi5vcmlnaW5hbFN0YXJ0K24ub3JpZ2luYWxMZW5ndGgpLGE9aS5tb2RpZmllZFN0YXJ0LShuLm1vZGlmaWVkU3RhcnQrbi5tb2RpZmllZExlbmd0aCk7TWF0aC5taW4obyxhKTwzPyhuLm9yaWdpbmFsTGVuZ3RoPWkub3JpZ2luYWxTdGFydCtpLm9yaWdpbmFsTGVuZ3RoLW4ub3JpZ2luYWxTdGFydCxuLm1vZGlmaWVkTGVuZ3RoPWkubW9kaWZpZWRTdGFydCtpLm1vZGlmaWVkTGVuZ3RoLW4ubW9kaWZpZWRTdGFydCk6KHQucHVzaChpKSxuPWkpfXJldHVybiB0fShlKSksaD1bXTtmb3IobGV0IHQ9MCxuPWUubGVuZ3RoO3Q8bjt0KyspaC5wdXNoKGF0LmNyZWF0ZUZyb21EaWZmQ2hhbmdlKGVbdF0sbyxzKSl9fXJldHVybiBuZXcgc3QocyxsLGMsdSxoKX19Y2xhc3MgbHR7Y29uc3RydWN0b3IoZSx0LG4pe3RoaXMuc2hvdWxkQ29tcHV0ZUNoYXJDaGFuZ2VzPW4uc2hvdWxkQ29tcHV0ZUNoYXJDaGFuZ2VzLHRoaXMuc2hvdWxkUG9zdFByb2Nlc3NDaGFyQ2hhbmdlcz1uLnNob3VsZFBvc3RQcm9jZXNzQ2hhckNoYW5nZXMsdGhpcy5zaG91bGRJZ25vcmVUcmltV2hpdGVzcGFjZT1uLnNob3VsZElnbm9yZVRyaW1XaGl0ZXNwYWNlLHRoaXMuc2hvdWxkTWFrZVByZXR0eURpZmY9bi5zaG91bGRNYWtlUHJldHR5RGlmZix0aGlzLm9yaWdpbmFsTGluZXM9ZSx0aGlzLm1vZGlmaWVkTGluZXM9dCx0aGlzLm9yaWdpbmFsPW5ldyBpdChlKSx0aGlzLm1vZGlmaWVkPW5ldyBpdCh0KSx0aGlzLmNvbnRpbnVlTGluZURpZmY9aHQobi5tYXhDb21wdXRhdGlvblRpbWUpLHRoaXMuY29udGludWVDaGFyRGlmZj1odCgwPT09bi5tYXhDb21wdXRhdGlvblRpbWU/MDpNYXRoLm1pbihuLm1heENvbXB1dGF0aW9uVGltZSw1ZTMpKX1jb21wdXRlRGlmZigpe2lmKDE9PT10aGlzLm9yaWdpbmFsLmxpbmVzLmxlbmd0aCYmMD09PXRoaXMub3JpZ2luYWwubGluZXNbMF0ubGVuZ3RoKXJldHVybiAxPT09dGhpcy5tb2RpZmllZC5saW5lcy5sZW5ndGgmJjA9PT10aGlzLm1vZGlmaWVkLmxpbmVzWzBdLmxlbmd0aD97cXVpdEVhcmx5OiExLGNoYW5nZXM6W119OntxdWl0RWFybHk6ITEsY2hhbmdlczpbe29yaWdpbmFsU3RhcnRMaW5lTnVtYmVyOjEsb3JpZ2luYWxFbmRMaW5lTnVtYmVyOjEsbW9kaWZpZWRTdGFydExpbmVOdW1iZXI6MSxtb2RpZmllZEVuZExpbmVOdW1iZXI6dGhpcy5tb2RpZmllZC5saW5lcy5sZW5ndGgsY2hhckNoYW5nZXM6W3ttb2RpZmllZEVuZENvbHVtbjowLG1vZGlmaWVkRW5kTGluZU51bWJlcjowLG1vZGlmaWVkU3RhcnRDb2x1bW46MCxtb2RpZmllZFN0YXJ0TGluZU51bWJlcjowLG9yaWdpbmFsRW5kQ29sdW1uOjAsb3JpZ2luYWxFbmRMaW5lTnVtYmVyOjAsb3JpZ2luYWxTdGFydENvbHVtbjowLG9yaWdpbmFsU3RhcnRMaW5lTnVtYmVyOjB9XX1dfTtpZigxPT09dGhpcy5tb2RpZmllZC5saW5lcy5sZW5ndGgmJjA9PT10aGlzLm1vZGlmaWVkLmxpbmVzWzBdLmxlbmd0aClyZXR1cm57cXVpdEVhcmx5OiExLGNoYW5nZXM6W3tvcmlnaW5hbFN0YXJ0TGluZU51bWJlcjoxLG9yaWdpbmFsRW5kTGluZU51bWJlcjp0aGlzLm9yaWdpbmFsLmxpbmVzLmxlbmd0aCxtb2RpZmllZFN0YXJ0TGluZU51bWJlcjoxLG1vZGlmaWVkRW5kTGluZU51bWJlcjoxLGNoYXJDaGFuZ2VzOlt7bW9kaWZpZWRFbmRDb2x1bW46MCxtb2RpZmllZEVuZExpbmVOdW1iZXI6MCxtb2RpZmllZFN0YXJ0Q29sdW1uOjAsbW9kaWZpZWRTdGFydExpbmVOdW1iZXI6MCxvcmlnaW5hbEVuZENvbHVtbjowLG9yaWdpbmFsRW5kTGluZU51bWJlcjowLG9yaWdpbmFsU3RhcnRDb2x1bW46MCxvcmlnaW5hbFN0YXJ0TGluZU51bWJlcjowfV19XX07Y29uc3QgZT1ydCh0aGlzLm9yaWdpbmFsLHRoaXMubW9kaWZpZWQsdGhpcy5jb250aW51ZUxpbmVEaWZmLHRoaXMuc2hvdWxkTWFrZVByZXR0eURpZmYpLHQ9ZS5jaGFuZ2VzLG49ZS5xdWl0RWFybHk7aWYodGhpcy5zaG91bGRJZ25vcmVUcmltV2hpdGVzcGFjZSl7Y29uc3QgZT1bXTtmb3IobGV0IG49MCxyPXQubGVuZ3RoO248cjtuKyspZS5wdXNoKHN0LmNyZWF0ZUZyb21EaWZmUmVzdWx0KHRoaXMuc2hvdWxkSWdub3JlVHJpbVdoaXRlc3BhY2UsdFtuXSx0aGlzLm9yaWdpbmFsLHRoaXMubW9kaWZpZWQsdGhpcy5jb250aW51ZUNoYXJEaWZmLHRoaXMuc2hvdWxkQ29tcHV0ZUNoYXJDaGFuZ2VzLHRoaXMuc2hvdWxkUG9zdFByb2Nlc3NDaGFyQ2hhbmdlcykpO3JldHVybntxdWl0RWFybHk6bixjaGFuZ2VzOmV9fWNvbnN0IHI9W107bGV0IGk9MCxvPTA7Zm9yKGxldCBlPS0xLG49dC5sZW5ndGg7ZTxuO2UrKyl7Y29uc3QgYT1lKzE8bj90W2UrMV06bnVsbCxzPWE/YS5vcmlnaW5hbFN0YXJ0OnRoaXMub3JpZ2luYWxMaW5lcy5sZW5ndGgsbD1hP2EubW9kaWZpZWRTdGFydDp0aGlzLm1vZGlmaWVkTGluZXMubGVuZ3RoO2Zvcig7aTxzJiZvPGw7KXtjb25zdCBlPXRoaXMub3JpZ2luYWxMaW5lc1tpXSx0PXRoaXMubW9kaWZpZWRMaW5lc1tvXTtpZihlIT09dCl7e2xldCBuPWN0KGUsMSksYT1jdCh0LDEpO2Zvcig7bj4xJiZhPjE7KXtpZihlLmNoYXJDb2RlQXQobi0yKSE9PXQuY2hhckNvZGVBdChhLTIpKWJyZWFrO24tLSxhLS19KG4+MXx8YT4xKSYmdGhpcy5fcHVzaFRyaW1XaGl0ZXNwYWNlQ2hhckNoYW5nZShyLGkrMSwxLG4sbysxLDEsYSl9e2xldCBuPXV0KGUsMSksYT11dCh0LDEpO2NvbnN0IHM9ZS5sZW5ndGgrMSxsPXQubGVuZ3RoKzE7Zm9yKDtuPHMmJmE8bDspe2lmKGUuY2hhckNvZGVBdChuLTEpIT09ZS5jaGFyQ29kZUF0KGEtMSkpYnJlYWs7bisrLGErK30objxzfHxhPGwpJiZ0aGlzLl9wdXNoVHJpbVdoaXRlc3BhY2VDaGFyQ2hhbmdlKHIsaSsxLG4scyxvKzEsYSxsKX19aSsrLG8rK31hJiYoci5wdXNoKHN0LmNyZWF0ZUZyb21EaWZmUmVzdWx0KHRoaXMuc2hvdWxkSWdub3JlVHJpbVdoaXRlc3BhY2UsYSx0aGlzLm9yaWdpbmFsLHRoaXMubW9kaWZpZWQsdGhpcy5jb250aW51ZUNoYXJEaWZmLHRoaXMuc2hvdWxkQ29tcHV0ZUNoYXJDaGFuZ2VzLHRoaXMuc2hvdWxkUG9zdFByb2Nlc3NDaGFyQ2hhbmdlcykpLGkrPWEub3JpZ2luYWxMZW5ndGgsbys9YS5tb2RpZmllZExlbmd0aCl9cmV0dXJue3F1aXRFYXJseTpuLGNoYW5nZXM6cn19X3B1c2hUcmltV2hpdGVzcGFjZUNoYXJDaGFuZ2UoZSx0LG4scixpLG8sYSl7aWYodGhpcy5fbWVyZ2VUcmltV2hpdGVzcGFjZUNoYXJDaGFuZ2UoZSx0LG4scixpLG8sYSkpcmV0dXJuO2xldCBzO3RoaXMuc2hvdWxkQ29tcHV0ZUNoYXJDaGFuZ2VzJiYocz1bbmV3IGF0KHQsbix0LHIsaSxvLGksYSldKSxlLnB1c2gobmV3IHN0KHQsdCxpLGkscykpfV9tZXJnZVRyaW1XaGl0ZXNwYWNlQ2hhckNoYW5nZShlLHQsbixyLGksbyxhKXtjb25zdCBzPWUubGVuZ3RoO2lmKDA9PT1zKXJldHVybiExO2NvbnN0IGw9ZVtzLTFdO3JldHVybiAwIT09bC5vcmlnaW5hbEVuZExpbmVOdW1iZXImJjAhPT1sLm1vZGlmaWVkRW5kTGluZU51bWJlciYmKGwub3JpZ2luYWxFbmRMaW5lTnVtYmVyKzE9PT10JiZsLm1vZGlmaWVkRW5kTGluZU51bWJlcisxPT09aSYmKGwub3JpZ2luYWxFbmRMaW5lTnVtYmVyPXQsbC5tb2RpZmllZEVuZExpbmVOdW1iZXI9aSx0aGlzLnNob3VsZENvbXB1dGVDaGFyQ2hhbmdlcyYmbC5jaGFyQ2hhbmdlcyYmbC5jaGFyQ2hhbmdlcy5wdXNoKG5ldyBhdCh0LG4sdCxyLGksbyxpLGEpKSwhMCkpfX1mdW5jdGlvbiBjdChlLHQpe2NvbnN0IG49ZnVuY3Rpb24oZSl7Zm9yKGxldCB0PTAsbj1lLmxlbmd0aDt0PG47dCsrKXtjb25zdCBuPWUuY2hhckNvZGVBdCh0KTtpZigzMiE9PW4mJjkhPT1uKXJldHVybiB0fXJldHVybi0xfShlKTtyZXR1cm4tMT09PW4/dDpuKzF9ZnVuY3Rpb24gdXQoZSx0KXtjb25zdCBuPWZ1bmN0aW9uKGUsdD1lLmxlbmd0aC0xKXtmb3IobGV0IG49dDtuPj0wO24tLSl7Y29uc3QgdD1lLmNoYXJDb2RlQXQobik7aWYoMzIhPT10JiY5IT09dClyZXR1cm4gbn1yZXR1cm4tMX0oZSk7cmV0dXJuLTE9PT1uP3Q6bisyfWZ1bmN0aW9uIGh0KGUpe2lmKDA9PT1lKXJldHVybigpPT4hMDtjb25zdCB0PURhdGUubm93KCk7cmV0dXJuKCk9PkRhdGUubm93KCktdDxlfXZhciBkdDtmdW5jdGlvbiBmdChlKXtyZXR1cm4gZTwwPzA6ZT4yNTU/MjU1OjB8ZX1mdW5jdGlvbiBtdChlKXtyZXR1cm4gZTwwPzA6ZT40Mjk0OTY3Mjk1PzQyOTQ5NjcyOTU6MHxlfSFmdW5jdGlvbihlKXtlLmlzTGVzc1RoYW49ZnVuY3Rpb24oZSl7cmV0dXJuIGU8MH0sZS5pc0dyZWF0ZXJUaGFuPWZ1bmN0aW9uKGUpe3JldHVybiBlPjB9LGUuaXNOZWl0aGVyTGVzc09yR3JlYXRlclRoYW49ZnVuY3Rpb24oZSl7cmV0dXJuIDA9PT1lfSxlLmdyZWF0ZXJUaGFuPTEsZS5sZXNzVGhhbj0tMSxlLm5laXRoZXJMZXNzT3JHcmVhdGVyVGhhbj0wfShkdHx8KGR0PXt9KSk7Y2xhc3MgZ3R7Y29uc3RydWN0b3IoZSl7dGhpcy52YWx1ZXM9ZSx0aGlzLnByZWZpeFN1bT1uZXcgVWludDMyQXJyYXkoZS5sZW5ndGgpLHRoaXMucHJlZml4U3VtVmFsaWRJbmRleD1uZXcgSW50MzJBcnJheSgxKSx0aGlzLnByZWZpeFN1bVZhbGlkSW5kZXhbMF09LTF9aW5zZXJ0VmFsdWVzKGUsdCl7ZT1tdChlKTtjb25zdCBuPXRoaXMudmFsdWVzLHI9dGhpcy5wcmVmaXhTdW0saT10Lmxlbmd0aDtyZXR1cm4gMCE9PWkmJih0aGlzLnZhbHVlcz1uZXcgVWludDMyQXJyYXkobi5sZW5ndGgraSksdGhpcy52YWx1ZXMuc2V0KG4uc3ViYXJyYXkoMCxlKSwwKSx0aGlzLnZhbHVlcy5zZXQobi5zdWJhcnJheShlKSxlK2kpLHRoaXMudmFsdWVzLnNldCh0LGUpLGUtMTx0aGlzLnByZWZpeFN1bVZhbGlkSW5kZXhbMF0mJih0aGlzLnByZWZpeFN1bVZhbGlkSW5kZXhbMF09ZS0xKSx0aGlzLnByZWZpeFN1bT1uZXcgVWludDMyQXJyYXkodGhpcy52YWx1ZXMubGVuZ3RoKSx0aGlzLnByZWZpeFN1bVZhbGlkSW5kZXhbMF0+PTAmJnRoaXMucHJlZml4U3VtLnNldChyLnN1YmFycmF5KDAsdGhpcy5wcmVmaXhTdW1WYWxpZEluZGV4WzBdKzEpKSwhMCl9c2V0VmFsdWUoZSx0KXtyZXR1cm4gZT1tdChlKSx0PW10KHQpLHRoaXMudmFsdWVzW2VdIT09dCYmKHRoaXMudmFsdWVzW2VdPXQsZS0xPHRoaXMucHJlZml4U3VtVmFsaWRJbmRleFswXSYmKHRoaXMucHJlZml4U3VtVmFsaWRJbmRleFswXT1lLTEpLCEwKX1yZW1vdmVWYWx1ZXMoZSx0KXtlPW10KGUpLHQ9bXQodCk7Y29uc3Qgbj10aGlzLnZhbHVlcyxyPXRoaXMucHJlZml4U3VtO2lmKGU+PW4ubGVuZ3RoKXJldHVybiExO2NvbnN0IGk9bi5sZW5ndGgtZTtyZXR1cm4gdD49aSYmKHQ9aSksMCE9PXQmJih0aGlzLnZhbHVlcz1uZXcgVWludDMyQXJyYXkobi5sZW5ndGgtdCksdGhpcy52YWx1ZXMuc2V0KG4uc3ViYXJyYXkoMCxlKSwwKSx0aGlzLnZhbHVlcy5zZXQobi5zdWJhcnJheShlK3QpLGUpLHRoaXMucHJlZml4U3VtPW5ldyBVaW50MzJBcnJheSh0aGlzLnZhbHVlcy5sZW5ndGgpLGUtMTx0aGlzLnByZWZpeFN1bVZhbGlkSW5kZXhbMF0mJih0aGlzLnByZWZpeFN1bVZhbGlkSW5kZXhbMF09ZS0xKSx0aGlzLnByZWZpeFN1bVZhbGlkSW5kZXhbMF0+PTAmJnRoaXMucHJlZml4U3VtLnNldChyLnN1YmFycmF5KDAsdGhpcy5wcmVmaXhTdW1WYWxpZEluZGV4WzBdKzEpKSwhMCl9Z2V0VG90YWxTdW0oKXtyZXR1cm4gMD09PXRoaXMudmFsdWVzLmxlbmd0aD8wOnRoaXMuX2dldFByZWZpeFN1bSh0aGlzLnZhbHVlcy5sZW5ndGgtMSl9Z2V0UHJlZml4U3VtKGUpe3JldHVybiBlPDA/MDooZT1tdChlKSx0aGlzLl9nZXRQcmVmaXhTdW0oZSkpfV9nZXRQcmVmaXhTdW0oZSl7aWYoZTw9dGhpcy5wcmVmaXhTdW1WYWxpZEluZGV4WzBdKXJldHVybiB0aGlzLnByZWZpeFN1bVtlXTtsZXQgdD10aGlzLnByZWZpeFN1bVZhbGlkSW5kZXhbMF0rMTswPT09dCYmKHRoaXMucHJlZml4U3VtWzBdPXRoaXMudmFsdWVzWzBdLHQrKyksZT49dGhpcy52YWx1ZXMubGVuZ3RoJiYoZT10aGlzLnZhbHVlcy5sZW5ndGgtMSk7Zm9yKGxldCBuPXQ7bjw9ZTtuKyspdGhpcy5wcmVmaXhTdW1bbl09dGhpcy5wcmVmaXhTdW1bbi0xXSt0aGlzLnZhbHVlc1tuXTtyZXR1cm4gdGhpcy5wcmVmaXhTdW1WYWxpZEluZGV4WzBdPU1hdGgubWF4KHRoaXMucHJlZml4U3VtVmFsaWRJbmRleFswXSxlKSx0aGlzLnByZWZpeFN1bVtlXX1nZXRJbmRleE9mKGUpe2U9TWF0aC5mbG9vcihlKSx0aGlzLmdldFRvdGFsU3VtKCk7bGV0IHQ9MCxuPXRoaXMudmFsdWVzLmxlbmd0aC0xLHI9MCxpPTAsbz0wO2Zvcig7dDw9bjspaWYocj10KyhuLXQpLzJ8MCxpPXRoaXMucHJlZml4U3VtW3JdLG89aS10aGlzLnZhbHVlc1tyXSxlPG8pbj1yLTE7ZWxzZXtpZighKGU+PWkpKWJyZWFrO3Q9cisxfXJldHVybiBuZXcgYnQocixlLW8pfX1jbGFzcyBidHtjb25zdHJ1Y3RvcihlLHQpe3RoaXMuaW5kZXg9ZSx0aGlzLnJlbWFpbmRlcj10LHRoaXMuX3ByZWZpeFN1bUluZGV4T2ZSZXN1bHRCcmFuZD12b2lkIDAsdGhpcy5pbmRleD1lLHRoaXMucmVtYWluZGVyPXR9fWNsYXNzIEN0e2NvbnN0cnVjdG9yKGUsdCxuLHIpe3RoaXMuX3VyaT1lLHRoaXMuX2xpbmVzPXQsdGhpcy5fZW9sPW4sdGhpcy5fdmVyc2lvbklkPXIsdGhpcy5fbGluZVN0YXJ0cz1udWxsLHRoaXMuX2NhY2hlZFRleHRWYWx1ZT1udWxsfWRpc3Bvc2UoKXt0aGlzLl9saW5lcy5sZW5ndGg9MH1nZXQgdmVyc2lvbigpe3JldHVybiB0aGlzLl92ZXJzaW9uSWR9Z2V0VGV4dCgpe3JldHVybiBudWxsPT09dGhpcy5fY2FjaGVkVGV4dFZhbHVlJiYodGhpcy5fY2FjaGVkVGV4dFZhbHVlPXRoaXMuX2xpbmVzLmpvaW4odGhpcy5fZW9sKSksdGhpcy5fY2FjaGVkVGV4dFZhbHVlfW9uRXZlbnRzKGUpe2UuZW9sJiZlLmVvbCE9PXRoaXMuX2VvbCYmKHRoaXMuX2VvbD1lLmVvbCx0aGlzLl9saW5lU3RhcnRzPW51bGwpO2NvbnN0IHQ9ZS5jaGFuZ2VzO2Zvcihjb25zdCBlIG9mIHQpdGhpcy5fYWNjZXB0RGVsZXRlUmFuZ2UoZS5yYW5nZSksdGhpcy5fYWNjZXB0SW5zZXJ0VGV4dChuZXcgdHQoZS5yYW5nZS5zdGFydExpbmVOdW1iZXIsZS5yYW5nZS5zdGFydENvbHVtbiksZS50ZXh0KTt0aGlzLl92ZXJzaW9uSWQ9ZS52ZXJzaW9uSWQsdGhpcy5fY2FjaGVkVGV4dFZhbHVlPW51bGx9X2Vuc3VyZUxpbmVTdGFydHMoKXtpZighdGhpcy5fbGluZVN0YXJ0cyl7Y29uc3QgZT10aGlzLl9lb2wubGVuZ3RoLHQ9dGhpcy5fbGluZXMubGVuZ3RoLG49bmV3IFVpbnQzMkFycmF5KHQpO2ZvcihsZXQgcj0wO3I8dDtyKyspbltyXT10aGlzLl9saW5lc1tyXS5sZW5ndGgrZTt0aGlzLl9saW5lU3RhcnRzPW5ldyBndChuKX19X3NldExpbmVUZXh0KGUsdCl7dGhpcy5fbGluZXNbZV09dCx0aGlzLl9saW5lU3RhcnRzJiZ0aGlzLl9saW5lU3RhcnRzLnNldFZhbHVlKGUsdGhpcy5fbGluZXNbZV0ubGVuZ3RoK3RoaXMuX2VvbC5sZW5ndGgpfV9hY2NlcHREZWxldGVSYW5nZShlKXtpZihlLnN0YXJ0TGluZU51bWJlciE9PWUuZW5kTGluZU51bWJlcil0aGlzLl9zZXRMaW5lVGV4dChlLnN0YXJ0TGluZU51bWJlci0xLHRoaXMuX2xpbmVzW2Uuc3RhcnRMaW5lTnVtYmVyLTFdLnN1YnN0cmluZygwLGUuc3RhcnRDb2x1bW4tMSkrdGhpcy5fbGluZXNbZS5lbmRMaW5lTnVtYmVyLTFdLnN1YnN0cmluZyhlLmVuZENvbHVtbi0xKSksdGhpcy5fbGluZXMuc3BsaWNlKGUuc3RhcnRMaW5lTnVtYmVyLGUuZW5kTGluZU51bWJlci1lLnN0YXJ0TGluZU51bWJlciksdGhpcy5fbGluZVN0YXJ0cyYmdGhpcy5fbGluZVN0YXJ0cy5yZW1vdmVWYWx1ZXMoZS5zdGFydExpbmVOdW1iZXIsZS5lbmRMaW5lTnVtYmVyLWUuc3RhcnRMaW5lTnVtYmVyKTtlbHNle2lmKGUuc3RhcnRDb2x1bW49PT1lLmVuZENvbHVtbilyZXR1cm47dGhpcy5fc2V0TGluZVRleHQoZS5zdGFydExpbmVOdW1iZXItMSx0aGlzLl9saW5lc1tlLnN0YXJ0TGluZU51bWJlci0xXS5zdWJzdHJpbmcoMCxlLnN0YXJ0Q29sdW1uLTEpK3RoaXMuX2xpbmVzW2Uuc3RhcnRMaW5lTnVtYmVyLTFdLnN1YnN0cmluZyhlLmVuZENvbHVtbi0xKSl9fV9hY2NlcHRJbnNlcnRUZXh0KGUsdCl7aWYoMD09PXQubGVuZ3RoKXJldHVybjtjb25zdCBuPXQuc3BsaXQoL1xyXG58XHJ8XG4vKTtpZigxPT09bi5sZW5ndGgpcmV0dXJuIHZvaWQgdGhpcy5fc2V0TGluZVRleHQoZS5saW5lTnVtYmVyLTEsdGhpcy5fbGluZXNbZS5saW5lTnVtYmVyLTFdLnN1YnN0cmluZygwLGUuY29sdW1uLTEpK25bMF0rdGhpcy5fbGluZXNbZS5saW5lTnVtYmVyLTFdLnN1YnN0cmluZyhlLmNvbHVtbi0xKSk7bltuLmxlbmd0aC0xXSs9dGhpcy5fbGluZXNbZS5saW5lTnVtYmVyLTFdLnN1YnN0cmluZyhlLmNvbHVtbi0xKSx0aGlzLl9zZXRMaW5lVGV4dChlLmxpbmVOdW1iZXItMSx0aGlzLl9saW5lc1tlLmxpbmVOdW1iZXItMV0uc3Vic3RyaW5nKDAsZS5jb2x1bW4tMSkrblswXSk7Y29uc3Qgcj1uZXcgVWludDMyQXJyYXkobi5sZW5ndGgtMSk7Zm9yKGxldCB0PTE7dDxuLmxlbmd0aDt0KyspdGhpcy5fbGluZXMuc3BsaWNlKGUubGluZU51bWJlcit0LTEsMCxuW3RdKSxyW3QtMV09blt0XS5sZW5ndGgrdGhpcy5fZW9sLmxlbmd0aDt0aGlzLl9saW5lU3RhcnRzJiZ0aGlzLl9saW5lU3RhcnRzLmluc2VydFZhbHVlcyhlLmxpbmVOdW1iZXIscil9fWNvbnN0IHB0PWZ1bmN0aW9uKGU9IiIpe2xldCB0PSIoLT9cXGQqXFwuXFxkXFx3Kil8KFteIjtmb3IoY29uc3QgbiBvZiJgfiFAIyQlXiYqKCktPStbe119XFx8OzonXCIsLjw+Lz8iKWUuaW5kZXhPZihuKT49MHx8KHQrPSJcXCIrbik7cmV0dXJuIHQrPSJcXHNdKykiLG5ldyBSZWdFeHAodCwiZyIpfSgpO2NvbnN0IHd0PW5ldyBiO2Z1bmN0aW9uIF90KGUsdCxuLHIsaSl7aWYoaXx8KGk9bC5maXJzdCh3dCkpLG4ubGVuZ3RoPmkubWF4TGVuKXtsZXQgbz1lLWkubWF4TGVuLzI7cmV0dXJuIG88MD9vPTA6cis9byxfdChlLHQsbj1uLnN1YnN0cmluZyhvLGUraS5tYXhMZW4vMikscixpKX1jb25zdCBvPURhdGUubm93KCksYT1lLTEtcjtsZXQgcz0tMSxjPW51bGw7Zm9yKGxldCBlPTE7IShEYXRlLm5vdygpLW8+PWkudGltZUJ1ZGdldCk7ZSsrKXtjb25zdCByPWEtaS53aW5kb3dTaXplKmU7dC5sYXN0SW5kZXg9TWF0aC5tYXgoMCxyKTtjb25zdCBvPXl0KHQsbixhLHMpO2lmKCFvJiZjKWJyZWFrO2lmKGM9byxyPD0wKWJyZWFrO3M9cn1pZihjKXtjb25zdCBlPXt3b3JkOmNbMF0sc3RhcnRDb2x1bW46cisxK2MuaW5kZXgsZW5kQ29sdW1uOnIrMStjLmluZGV4K2NbMF0ubGVuZ3RofTtyZXR1cm4gdC5sYXN0SW5kZXg9MCxlfXJldHVybiBudWxsfWZ1bmN0aW9uIHl0KGUsdCxuLHIpe2xldCBpO2Zvcig7aT1lLmV4ZWModCk7KXtjb25zdCB0PWkuaW5kZXh8fDA7aWYodDw9biYmZS5sYXN0SW5kZXg+PW4pcmV0dXJuIGk7aWYocj4wJiZ0PnIpcmV0dXJuIG51bGx9cmV0dXJuIG51bGx9d3QudW5zaGlmdCh7bWF4TGVuOjFlMyx3aW5kb3dTaXplOjE1LHRpbWVCdWRnZXQ6MTUwfSk7Y2xhc3MgU3R7Y29uc3RydWN0b3IoZSl7Y29uc3QgdD1mdChlKTt0aGlzLl9kZWZhdWx0VmFsdWU9dCx0aGlzLl9hc2NpaU1hcD1TdC5fY3JlYXRlQXNjaWlNYXAodCksdGhpcy5fbWFwPW5ldyBNYXB9c3RhdGljIF9jcmVhdGVBc2NpaU1hcChlKXtjb25zdCB0PW5ldyBVaW50OEFycmF5KDI1Nik7Zm9yKGxldCBuPTA7bjwyNTY7bisrKXRbbl09ZTtyZXR1cm4gdH1zZXQoZSx0KXtjb25zdCBuPWZ0KHQpO2U+PTAmJmU8MjU2P3RoaXMuX2FzY2lpTWFwW2VdPW46dGhpcy5fbWFwLnNldChlLG4pfWdldChlKXtyZXR1cm4gZT49MCYmZTwyNTY/dGhpcy5fYXNjaWlNYXBbZV06dGhpcy5fbWFwLmdldChlKXx8dGhpcy5fZGVmYXVsdFZhbHVlfX1jbGFzcyBMdHtjb25zdHJ1Y3RvcihlLHQsbil7Y29uc3Qgcj1uZXcgVWludDhBcnJheShlKnQpO2ZvcihsZXQgaT0wLG89ZSp0O2k8bztpKyspcltpXT1uO3RoaXMuX2RhdGE9cix0aGlzLnJvd3M9ZSx0aGlzLmNvbHM9dH1nZXQoZSx0KXtyZXR1cm4gdGhpcy5fZGF0YVtlKnRoaXMuY29scyt0XX1zZXQoZSx0LG4pe3RoaXMuX2RhdGFbZSp0aGlzLmNvbHMrdF09bn19Y2xhc3MgTnR7Y29uc3RydWN0b3IoZSl7bGV0IHQ9MCxuPTA7Zm9yKGxldCByPTAsaT1lLmxlbmd0aDtyPGk7cisrKXtjb25zdFtpLG8sYV09ZVtyXTtvPnQmJih0PW8pLGk+biYmKG49aSksYT5uJiYobj1hKX10KyssbisrO2NvbnN0IHI9bmV3IEx0KG4sdCwwKTtmb3IobGV0IHQ9MCxuPWUubGVuZ3RoO3Q8bjt0Kyspe2NvbnN0W24saSxvXT1lW3RdO3Iuc2V0KG4saSxvKX10aGlzLl9zdGF0ZXM9cix0aGlzLl9tYXhDaGFyQ29kZT10fW5leHRTdGF0ZShlLHQpe3JldHVybiB0PDB8fHQ+PXRoaXMuX21heENoYXJDb2RlPzA6dGhpcy5fc3RhdGVzLmdldChlLHQpfX1sZXQgdnQ9bnVsbDtsZXQgRXQ9bnVsbDtjbGFzcyBBdHtzdGF0aWMgX2NyZWF0ZUxpbmsoZSx0LG4scixpKXtsZXQgbz1pLTE7ZG97Y29uc3Qgbj10LmNoYXJDb2RlQXQobyk7aWYoMiE9PWUuZ2V0KG4pKWJyZWFrO28tLX13aGlsZShvPnIpO2lmKHI+MCl7Y29uc3QgZT10LmNoYXJDb2RlQXQoci0xKSxuPXQuY2hhckNvZGVBdChvKTsoNDA9PT1lJiY0MT09PW58fDkxPT09ZSYmOTM9PT1ufHwxMjM9PT1lJiYxMjU9PT1uKSYmby0tfXJldHVybntyYW5nZTp7c3RhcnRMaW5lTnVtYmVyOm4sc3RhcnRDb2x1bW46cisxLGVuZExpbmVOdW1iZXI6bixlbmRDb2x1bW46bysyfSx1cmw6dC5zdWJzdHJpbmcocixvKzEpfX1zdGF0aWMgY29tcHV0ZUxpbmtzKGUsdD1mdW5jdGlvbigpe3JldHVybiBudWxsPT09dnQmJih2dD1uZXcgTnQoW1sxLDEwNCwyXSxbMSw3MiwyXSxbMSwxMDIsNl0sWzEsNzAsNl0sWzIsMTE2LDNdLFsyLDg0LDNdLFszLDExNiw0XSxbMyw4NCw0XSxbNCwxMTIsNV0sWzQsODAsNV0sWzUsMTE1LDldLFs1LDgzLDldLFs1LDU4LDEwXSxbNiwxMDUsN10sWzYsNzMsN10sWzcsMTA4LDhdLFs3LDc2LDhdLFs4LDEwMSw5XSxbOCw2OSw5XSxbOSw1OCwxMF0sWzEwLDQ3LDExXSxbMTEsNDcsMTJdXSkpLHZ0fSgpKXtjb25zdCBuPWZ1bmN0aW9uKCl7aWYobnVsbD09PUV0KXtFdD1uZXcgU3QoMCk7Y29uc3QgZT0iIFx0PD4nXCLjgIHjgILvvaHvvaTvvIzvvI7vvJrvvJvigJjjgIjjgIzjgI7jgJTvvIjvvLvvvZvvvaLvvaPvvZ3vvL3vvInjgJXjgI/jgI3jgInigJnvvYDvvZ7igKYiO2ZvcihsZXQgdD0wO3Q8ZS5sZW5ndGg7dCsrKUV0LnNldChlLmNoYXJDb2RlQXQodCksMSk7Y29uc3QgdD0iLiw7OiI7Zm9yKGxldCBlPTA7ZTx0Lmxlbmd0aDtlKyspRXQuc2V0KHQuY2hhckNvZGVBdChlKSwyKX1yZXR1cm4gRXR9KCkscj1bXTtmb3IobGV0IGk9MSxvPWUuZ2V0TGluZUNvdW50KCk7aTw9bztpKyspe2NvbnN0IG89ZS5nZXRMaW5lQ29udGVudChpKSxhPW8ubGVuZ3RoO2xldCBzPTAsbD0wLGM9MCx1PTEsaD0hMSxkPSExLGY9ITEsbT0hMTtmb3IoO3M8YTspe2xldCBlPSExO2NvbnN0IGE9by5jaGFyQ29kZUF0KHMpO2lmKDEzPT09dSl7bGV0IHQ7c3dpdGNoKGEpe2Nhc2UgNDA6aD0hMCx0PTA7YnJlYWs7Y2FzZSA0MTp0PWg/MDoxO2JyZWFrO2Nhc2UgOTE6Zj0hMCxkPSEwLHQ9MDticmVhaztjYXNlIDkzOmY9ITEsdD1kPzA6MTticmVhaztjYXNlIDEyMzptPSEwLHQ9MDticmVhaztjYXNlIDEyNTp0PW0/MDoxO2JyZWFrO2Nhc2UgMzk6dD0zOT09PWM/MTowO2JyZWFrO2Nhc2UgMzQ6dD0zND09PWM/MTowO2JyZWFrO2Nhc2UgOTY6dD05Nj09PWM/MTowO2JyZWFrO2Nhc2UgNDI6dD00Mj09PWM/MTowO2JyZWFrO2Nhc2UgMTI0OnQ9MTI0PT09Yz8xOjA7YnJlYWs7Y2FzZSAzMjp0PWY/MDoxO2JyZWFrO2RlZmF1bHQ6dD1uLmdldChhKX0xPT09dCYmKHIucHVzaChBdC5fY3JlYXRlTGluayhuLG8saSxsLHMpKSxlPSEwKX1lbHNlIGlmKDEyPT09dSl7bGV0IHQ7OTE9PT1hPyhkPSEwLHQ9MCk6dD1uLmdldChhKSwxPT09dD9lPSEwOnU9MTN9ZWxzZSB1PXQubmV4dFN0YXRlKHUsYSksMD09PXUmJihlPSEwKTtlJiYodT0xLGg9ITEsZD0hMSxtPSExLGw9cysxLGM9YSkscysrfTEzPT09dSYmci5wdXNoKEF0Ll9jcmVhdGVMaW5rKG4sbyxpLGwsYSkpfXJldHVybiByfX1jbGFzcyBrdHtjb25zdHJ1Y3Rvcigpe3RoaXMuX2RlZmF1bHRWYWx1ZVNldD1bWyJ0cnVlIiwiZmFsc2UiXSxbIlRydWUiLCJGYWxzZSJdLFsiUHJpdmF0ZSIsIlB1YmxpYyIsIkZyaWVuZCIsIlJlYWRPbmx5IiwiUGFydGlhbCIsIlByb3RlY3RlZCIsIldyaXRlT25seSJdLFsicHVibGljIiwicHJvdGVjdGVkIiwicHJpdmF0ZSJdXX1uYXZpZ2F0ZVZhbHVlU2V0KGUsdCxuLHIsaSl7aWYoZSYmdCl7Y29uc3Qgbj10aGlzLmRvTmF2aWdhdGVWYWx1ZVNldCh0LGkpO2lmKG4pcmV0dXJue3JhbmdlOmUsdmFsdWU6bn19aWYobiYmcil7Y29uc3QgZT10aGlzLmRvTmF2aWdhdGVWYWx1ZVNldChyLGkpO2lmKGUpcmV0dXJue3JhbmdlOm4sdmFsdWU6ZX19cmV0dXJuIG51bGx9ZG9OYXZpZ2F0ZVZhbHVlU2V0KGUsdCl7Y29uc3Qgbj10aGlzLm51bWJlclJlcGxhY2UoZSx0KTtyZXR1cm4gbnVsbCE9PW4/bjp0aGlzLnRleHRSZXBsYWNlKGUsdCl9bnVtYmVyUmVwbGFjZShlLHQpe2NvbnN0IG49TWF0aC5wb3coMTAsZS5sZW5ndGgtKGUubGFzdEluZGV4T2YoIi4iKSsxKSk7bGV0IHI9TnVtYmVyKGUpO2NvbnN0IGk9cGFyc2VGbG9hdChlKTtyZXR1cm4gaXNOYU4ocil8fGlzTmFOKGkpfHxyIT09aT9udWxsOjAhPT1yfHx0PyhyPU1hdGguZmxvb3IocipuKSxyKz10P246LW4sU3RyaW5nKHIvbikpOm51bGx9dGV4dFJlcGxhY2UoZSx0KXtyZXR1cm4gdGhpcy52YWx1ZVNldHNSZXBsYWNlKHRoaXMuX2RlZmF1bHRWYWx1ZVNldCxlLHQpfXZhbHVlU2V0c1JlcGxhY2UoZSx0LG4pe2xldCByPW51bGw7Zm9yKGxldCBpPTAsbz1lLmxlbmd0aDtudWxsPT09ciYmaTxvO2krKylyPXRoaXMudmFsdWVTZXRSZXBsYWNlKGVbaV0sdCxuKTtyZXR1cm4gcn12YWx1ZVNldFJlcGxhY2UoZSx0LG4pe2xldCByPWUuaW5kZXhPZih0KTtyZXR1cm4gcj49MD8ocis9bj8xOi0xLHI8MD9yPWUubGVuZ3RoLTE6ciU9ZS5sZW5ndGgsZVtyXSk6bnVsbH19a3QuSU5TVEFOQ0U9bmV3IGt0O2NvbnN0IE10PU9iamVjdC5mcmVlemUoKGZ1bmN0aW9uKGUsdCl7Y29uc3Qgbj1zZXRUaW1lb3V0KGUuYmluZCh0KSwwKTtyZXR1cm57ZGlzcG9zZSgpe2NsZWFyVGltZW91dChuKX19fSkpO3ZhciBSdDshZnVuY3Rpb24oZSl7ZS5pc0NhbmNlbGxhdGlvblRva2VuPWZ1bmN0aW9uKHQpe3JldHVybiB0PT09ZS5Ob25lfHx0PT09ZS5DYW5jZWxsZWR8fCh0IGluc3RhbmNlb2YgT3R8fCEoIXR8fCJvYmplY3QiIT10eXBlb2YgdCkmJigiYm9vbGVhbiI9PXR5cGVvZiB0LmlzQ2FuY2VsbGF0aW9uUmVxdWVzdGVkJiYiZnVuY3Rpb24iPT10eXBlb2YgdC5vbkNhbmNlbGxhdGlvblJlcXVlc3RlZCkpfSxlLk5vbmU9T2JqZWN0LmZyZWV6ZSh7aXNDYW5jZWxsYXRpb25SZXF1ZXN0ZWQ6ITEsb25DYW5jZWxsYXRpb25SZXF1ZXN0ZWQ6Vi5Ob25lfSksZS5DYW5jZWxsZWQ9T2JqZWN0LmZyZWV6ZSh7aXNDYW5jZWxsYXRpb25SZXF1ZXN0ZWQ6ITAsb25DYW5jZWxsYXRpb25SZXF1ZXN0ZWQ6TXR9KX0oUnR8fChSdD17fSkpO2NsYXNzIE90e2NvbnN0cnVjdG9yKCl7dGhpcy5faXNDYW5jZWxsZWQ9ITEsdGhpcy5fZW1pdHRlcj1udWxsfWNhbmNlbCgpe3RoaXMuX2lzQ2FuY2VsbGVkfHwodGhpcy5faXNDYW5jZWxsZWQ9ITAsdGhpcy5fZW1pdHRlciYmKHRoaXMuX2VtaXR0ZXIuZmlyZSh2b2lkIDApLHRoaXMuZGlzcG9zZSgpKSl9Z2V0IGlzQ2FuY2VsbGF0aW9uUmVxdWVzdGVkKCl7cmV0dXJuIHRoaXMuX2lzQ2FuY2VsbGVkfWdldCBvbkNhbmNlbGxhdGlvblJlcXVlc3RlZCgpe3JldHVybiB0aGlzLl9pc0NhbmNlbGxlZD9NdDoodGhpcy5fZW1pdHRlcnx8KHRoaXMuX2VtaXR0ZXI9bmV3IEgpLHRoaXMuX2VtaXR0ZXIuZXZlbnQpfWRpc3Bvc2UoKXt0aGlzLl9lbWl0dGVyJiYodGhpcy5fZW1pdHRlci5kaXNwb3NlKCksdGhpcy5fZW1pdHRlcj1udWxsKX19Y2xhc3MgeHR7Y29uc3RydWN0b3IoZSl7dGhpcy5fdG9rZW49dm9pZCAwLHRoaXMuX3BhcmVudExpc3RlbmVyPXZvaWQgMCx0aGlzLl9wYXJlbnRMaXN0ZW5lcj1lJiZlLm9uQ2FuY2VsbGF0aW9uUmVxdWVzdGVkKHRoaXMuY2FuY2VsLHRoaXMpfWdldCB0b2tlbigpe3JldHVybiB0aGlzLl90b2tlbnx8KHRoaXMuX3Rva2VuPW5ldyBPdCksdGhpcy5fdG9rZW59Y2FuY2VsKCl7dGhpcy5fdG9rZW4/dGhpcy5fdG9rZW4gaW5zdGFuY2VvZiBPdCYmdGhpcy5fdG9rZW4uY2FuY2VsKCk6dGhpcy5fdG9rZW49UnQuQ2FuY2VsbGVkfWRpc3Bvc2UoZT0hMSl7ZSYmdGhpcy5jYW5jZWwoKSx0aGlzLl9wYXJlbnRMaXN0ZW5lciYmdGhpcy5fcGFyZW50TGlzdGVuZXIuZGlzcG9zZSgpLHRoaXMuX3Rva2VuP3RoaXMuX3Rva2VuIGluc3RhbmNlb2YgT3QmJnRoaXMuX3Rva2VuLmRpc3Bvc2UoKTp0aGlzLl90b2tlbj1SdC5Ob25lfX1jbGFzcyBQdHtjb25zdHJ1Y3Rvcigpe3RoaXMuX2tleUNvZGVUb1N0cj1bXSx0aGlzLl9zdHJUb0tleUNvZGU9T2JqZWN0LmNyZWF0ZShudWxsKX1kZWZpbmUoZSx0KXt0aGlzLl9rZXlDb2RlVG9TdHJbZV09dCx0aGlzLl9zdHJUb0tleUNvZGVbdC50b0xvd2VyQ2FzZSgpXT1lfWtleUNvZGVUb1N0cihlKXtyZXR1cm4gdGhpcy5fa2V5Q29kZVRvU3RyW2VdfXN0clRvS2V5Q29kZShlKXtyZXR1cm4gdGhpcy5fc3RyVG9LZXlDb2RlW2UudG9Mb3dlckNhc2UoKV18fDB9fWNvbnN0IFR0PW5ldyBQdCxJdD1uZXcgUHQsS3Q9bmV3IFB0LER0PW5ldyBBcnJheSgyMzApLFZ0PU9iamVjdC5jcmVhdGUobnVsbCksRnQ9T2JqZWN0LmNyZWF0ZShudWxsKTt2YXIgQnQsVXQ7IWZ1bmN0aW9uKCl7Y29uc3QgZT0iIix0PVtbMCwxLDAsIk5vbmUiLDAsInVua25vd24iLDAsIlZLX1VOS05PV04iLGUsZV0sWzAsMSwxLCJIeXBlciIsMCxlLDAsZSxlLGVdLFswLDEsMiwiU3VwZXIiLDAsZSwwLGUsZSxlXSxbMCwxLDMsIkZuIiwwLGUsMCxlLGUsZV0sWzAsMSw0LCJGbkxvY2siLDAsZSwwLGUsZSxlXSxbMCwxLDUsIlN1c3BlbmQiLDAsZSwwLGUsZSxlXSxbMCwxLDYsIlJlc3VtZSIsMCxlLDAsZSxlLGVdLFswLDEsNywiVHVyYm8iLDAsZSwwLGUsZSxlXSxbMCwxLDgsIlNsZWVwIiwwLGUsMCwiVktfU0xFRVAiLGUsZV0sWzAsMSw5LCJXYWtlVXAiLDAsZSwwLGUsZSxlXSxbMzEsMCwxMCwiS2V5QSIsMzEsIkEiLDY1LCJWS19BIixlLGVdLFszMiwwLDExLCJLZXlCIiwzMiwiQiIsNjYsIlZLX0IiLGUsZV0sWzMzLDAsMTIsIktleUMiLDMzLCJDIiw2NywiVktfQyIsZSxlXSxbMzQsMCwxMywiS2V5RCIsMzQsIkQiLDY4LCJWS19EIixlLGVdLFszNSwwLDE0LCJLZXlFIiwzNSwiRSIsNjksIlZLX0UiLGUsZV0sWzM2LDAsMTUsIktleUYiLDM2LCJGIiw3MCwiVktfRiIsZSxlXSxbMzcsMCwxNiwiS2V5RyIsMzcsIkciLDcxLCJWS19HIixlLGVdLFszOCwwLDE3LCJLZXlIIiwzOCwiSCIsNzIsIlZLX0giLGUsZV0sWzM5LDAsMTgsIktleUkiLDM5LCJJIiw3MywiVktfSSIsZSxlXSxbNDAsMCwxOSwiS2V5SiIsNDAsIkoiLDc0LCJWS19KIixlLGVdLFs0MSwwLDIwLCJLZXlLIiw0MSwiSyIsNzUsIlZLX0siLGUsZV0sWzQyLDAsMjEsIktleUwiLDQyLCJMIiw3NiwiVktfTCIsZSxlXSxbNDMsMCwyMiwiS2V5TSIsNDMsIk0iLDc3LCJWS19NIixlLGVdLFs0NCwwLDIzLCJLZXlOIiw0NCwiTiIsNzgsIlZLX04iLGUsZV0sWzQ1LDAsMjQsIktleU8iLDQ1LCJPIiw3OSwiVktfTyIsZSxlXSxbNDYsMCwyNSwiS2V5UCIsNDYsIlAiLDgwLCJWS19QIixlLGVdLFs0NywwLDI2LCJLZXlRIiw0NywiUSIsODEsIlZLX1EiLGUsZV0sWzQ4LDAsMjcsIktleVIiLDQ4LCJSIiw4MiwiVktfUiIsZSxlXSxbNDksMCwyOCwiS2V5UyIsNDksIlMiLDgzLCJWS19TIixlLGVdLFs1MCwwLDI5LCJLZXlUIiw1MCwiVCIsODQsIlZLX1QiLGUsZV0sWzUxLDAsMzAsIktleVUiLDUxLCJVIiw4NSwiVktfVSIsZSxlXSxbNTIsMCwzMSwiS2V5ViIsNTIsIlYiLDg2LCJWS19WIixlLGVdLFs1MywwLDMyLCJLZXlXIiw1MywiVyIsODcsIlZLX1ciLGUsZV0sWzU0LDAsMzMsIktleVgiLDU0LCJYIiw4OCwiVktfWCIsZSxlXSxbNTUsMCwzNCwiS2V5WSIsNTUsIlkiLDg5LCJWS19ZIixlLGVdLFs1NiwwLDM1LCJLZXlaIiw1NiwiWiIsOTAsIlZLX1oiLGUsZV0sWzIyLDAsMzYsIkRpZ2l0MSIsMjIsIjEiLDQ5LCJWS18xIixlLGVdLFsyMywwLDM3LCJEaWdpdDIiLDIzLCIyIiw1MCwiVktfMiIsZSxlXSxbMjQsMCwzOCwiRGlnaXQzIiwyNCwiMyIsNTEsIlZLXzMiLGUsZV0sWzI1LDAsMzksIkRpZ2l0NCIsMjUsIjQiLDUyLCJWS180IixlLGVdLFsyNiwwLDQwLCJEaWdpdDUiLDI2LCI1Iiw1MywiVktfNSIsZSxlXSxbMjcsMCw0MSwiRGlnaXQ2IiwyNywiNiIsNTQsIlZLXzYiLGUsZV0sWzI4LDAsNDIsIkRpZ2l0NyIsMjgsIjciLDU1LCJWS183IixlLGVdLFsyOSwwLDQzLCJEaWdpdDgiLDI5LCI4Iiw1NiwiVktfOCIsZSxlXSxbMzAsMCw0NCwiRGlnaXQ5IiwzMCwiOSIsNTcsIlZLXzkiLGUsZV0sWzIxLDAsNDUsIkRpZ2l0MCIsMjEsIjAiLDQ4LCJWS18wIixlLGVdLFszLDEsNDYsIkVudGVyIiwzLCJFbnRlciIsMTMsIlZLX1JFVFVSTiIsZSxlXSxbOSwxLDQ3LCJFc2NhcGUiLDksIkVzY2FwZSIsMjcsIlZLX0VTQ0FQRSIsZSxlXSxbMSwxLDQ4LCJCYWNrc3BhY2UiLDEsIkJhY2tzcGFjZSIsOCwiVktfQkFDSyIsZSxlXSxbMiwxLDQ5LCJUYWIiLDIsIlRhYiIsOSwiVktfVEFCIixlLGVdLFsxMCwxLDUwLCJTcGFjZSIsMTAsIlNwYWNlIiwzMiwiVktfU1BBQ0UiLGUsZV0sWzgzLDAsNTEsIk1pbnVzIiw4MywiLSIsMTg5LCJWS19PRU1fTUlOVVMiLCItIiwiT0VNX01JTlVTIl0sWzgxLDAsNTIsIkVxdWFsIiw4MSwiPSIsMTg3LCJWS19PRU1fUExVUyIsIj0iLCJPRU1fUExVUyJdLFs4NywwLDUzLCJCcmFja2V0TGVmdCIsODcsIlsiLDIxOSwiVktfT0VNXzQiLCJbIiwiT0VNXzQiXSxbODksMCw1NCwiQnJhY2tldFJpZ2h0Iiw4OSwiXSIsMjIxLCJWS19PRU1fNiIsIl0iLCJPRU1fNiJdLFs4OCwwLDU1LCJCYWNrc2xhc2giLDg4LCJcXCIsMjIwLCJWS19PRU1fNSIsIlxcIiwiT0VNXzUiXSxbMCwwLDU2LCJJbnRsSGFzaCIsMCxlLDAsZSxlLGVdLFs4MCwwLDU3LCJTZW1pY29sb24iLDgwLCI7IiwxODYsIlZLX09FTV8xIiwiOyIsIk9FTV8xIl0sWzkwLDAsNTgsIlF1b3RlIiw5MCwiJyIsMjIyLCJWS19PRU1fNyIsIiciLCJPRU1fNyJdLFs4NiwwLDU5LCJCYWNrcXVvdGUiLDg2LCJgIiwxOTIsIlZLX09FTV8zIiwiYCIsIk9FTV8zIl0sWzgyLDAsNjAsIkNvbW1hIiw4MiwiLCIsMTg4LCJWS19PRU1fQ09NTUEiLCIsIiwiT0VNX0NPTU1BIl0sWzg0LDAsNjEsIlBlcmlvZCIsODQsIi4iLDE5MCwiVktfT0VNX1BFUklPRCIsIi4iLCJPRU1fUEVSSU9EIl0sWzg1LDAsNjIsIlNsYXNoIiw4NSwiLyIsMTkxLCJWS19PRU1fMiIsIi8iLCJPRU1fMiJdLFs4LDEsNjMsIkNhcHNMb2NrIiw4LCJDYXBzTG9jayIsMjAsIlZLX0NBUElUQUwiLGUsZV0sWzU5LDEsNjQsIkYxIiw1OSwiRjEiLDExMiwiVktfRjEiLGUsZV0sWzYwLDEsNjUsIkYyIiw2MCwiRjIiLDExMywiVktfRjIiLGUsZV0sWzYxLDEsNjYsIkYzIiw2MSwiRjMiLDExNCwiVktfRjMiLGUsZV0sWzYyLDEsNjcsIkY0Iiw2MiwiRjQiLDExNSwiVktfRjQiLGUsZV0sWzYzLDEsNjgsIkY1Iiw2MywiRjUiLDExNiwiVktfRjUiLGUsZV0sWzY0LDEsNjksIkY2Iiw2NCwiRjYiLDExNywiVktfRjYiLGUsZV0sWzY1LDEsNzAsIkY3Iiw2NSwiRjciLDExOCwiVktfRjciLGUsZV0sWzY2LDEsNzEsIkY4Iiw2NiwiRjgiLDExOSwiVktfRjgiLGUsZV0sWzY3LDEsNzIsIkY5Iiw2NywiRjkiLDEyMCwiVktfRjkiLGUsZV0sWzY4LDEsNzMsIkYxMCIsNjgsIkYxMCIsMTIxLCJWS19GMTAiLGUsZV0sWzY5LDEsNzQsIkYxMSIsNjksIkYxMSIsMTIyLCJWS19GMTEiLGUsZV0sWzcwLDEsNzUsIkYxMiIsNzAsIkYxMiIsMTIzLCJWS19GMTIiLGUsZV0sWzAsMSw3NiwiUHJpbnRTY3JlZW4iLDAsZSwwLGUsZSxlXSxbNzksMSw3NywiU2Nyb2xsTG9jayIsNzksIlNjcm9sbExvY2siLDE0NSwiVktfU0NST0xMIixlLGVdLFs3LDEsNzgsIlBhdXNlIiw3LCJQYXVzZUJyZWFrIiwxOSwiVktfUEFVU0UiLGUsZV0sWzE5LDEsNzksIkluc2VydCIsMTksIkluc2VydCIsNDUsIlZLX0lOU0VSVCIsZSxlXSxbMTQsMSw4MCwiSG9tZSIsMTQsIkhvbWUiLDM2LCJWS19IT01FIixlLGVdLFsxMSwxLDgxLCJQYWdlVXAiLDExLCJQYWdlVXAiLDMzLCJWS19QUklPUiIsZSxlXSxbMjAsMSw4MiwiRGVsZXRlIiwyMCwiRGVsZXRlIiw0NiwiVktfREVMRVRFIixlLGVdLFsxMywxLDgzLCJFbmQiLDEzLCJFbmQiLDM1LCJWS19FTkQiLGUsZV0sWzEyLDEsODQsIlBhZ2VEb3duIiwxMiwiUGFnZURvd24iLDM0LCJWS19ORVhUIixlLGVdLFsxNywxLDg1LCJBcnJvd1JpZ2h0IiwxNywiUmlnaHRBcnJvdyIsMzksIlZLX1JJR0hUIiwiUmlnaHQiLGVdLFsxNSwxLDg2LCJBcnJvd0xlZnQiLDE1LCJMZWZ0QXJyb3ciLDM3LCJWS19MRUZUIiwiTGVmdCIsZV0sWzE4LDEsODcsIkFycm93RG93biIsMTgsIkRvd25BcnJvdyIsNDAsIlZLX0RPV04iLCJEb3duIixlXSxbMTYsMSw4OCwiQXJyb3dVcCIsMTYsIlVwQXJyb3ciLDM4LCJWS19VUCIsIlVwIixlXSxbNzgsMSw4OSwiTnVtTG9jayIsNzgsIk51bUxvY2siLDE0NCwiVktfTlVNTE9DSyIsZSxlXSxbMTA4LDEsOTAsIk51bXBhZERpdmlkZSIsMTA4LCJOdW1QYWRfRGl2aWRlIiwxMTEsIlZLX0RJVklERSIsZSxlXSxbMTAzLDEsOTEsIk51bXBhZE11bHRpcGx5IiwxMDMsIk51bVBhZF9NdWx0aXBseSIsMTA2LCJWS19NVUxUSVBMWSIsZSxlXSxbMTA2LDEsOTIsIk51bXBhZFN1YnRyYWN0IiwxMDYsIk51bVBhZF9TdWJ0cmFjdCIsMTA5LCJWS19TVUJUUkFDVCIsZSxlXSxbMTA0LDEsOTMsIk51bXBhZEFkZCIsMTA0LCJOdW1QYWRfQWRkIiwxMDcsIlZLX0FERCIsZSxlXSxbMywxLDk0LCJOdW1wYWRFbnRlciIsMyxlLDAsZSxlLGVdLFs5NCwxLDk1LCJOdW1wYWQxIiw5NCwiTnVtUGFkMSIsOTcsIlZLX05VTVBBRDEiLGUsZV0sWzk1LDEsOTYsIk51bXBhZDIiLDk1LCJOdW1QYWQyIiw5OCwiVktfTlVNUEFEMiIsZSxlXSxbOTYsMSw5NywiTnVtcGFkMyIsOTYsIk51bVBhZDMiLDk5LCJWS19OVU1QQUQzIixlLGVdLFs5NywxLDk4LCJOdW1wYWQ0Iiw5NywiTnVtUGFkNCIsMTAwLCJWS19OVU1QQUQ0IixlLGVdLFs5OCwxLDk5LCJOdW1wYWQ1Iiw5OCwiTnVtUGFkNSIsMTAxLCJWS19OVU1QQUQ1IixlLGVdLFs5OSwxLDEwMCwiTnVtcGFkNiIsOTksIk51bVBhZDYiLDEwMiwiVktfTlVNUEFENiIsZSxlXSxbMTAwLDEsMTAxLCJOdW1wYWQ3IiwxMDAsIk51bVBhZDciLDEwMywiVktfTlVNUEFENyIsZSxlXSxbMTAxLDEsMTAyLCJOdW1wYWQ4IiwxMDEsIk51bVBhZDgiLDEwNCwiVktfTlVNUEFEOCIsZSxlXSxbMTAyLDEsMTAzLCJOdW1wYWQ5IiwxMDIsIk51bVBhZDkiLDEwNSwiVktfTlVNUEFEOSIsZSxlXSxbOTMsMSwxMDQsIk51bXBhZDAiLDkzLCJOdW1QYWQwIiw5NiwiVktfTlVNUEFEMCIsZSxlXSxbMTA3LDEsMTA1LCJOdW1wYWREZWNpbWFsIiwxMDcsIk51bVBhZF9EZWNpbWFsIiwxMTAsIlZLX0RFQ0lNQUwiLGUsZV0sWzkyLDAsMTA2LCJJbnRsQmFja3NsYXNoIiw5MiwiT0VNXzEwMiIsMjI2LCJWS19PRU1fMTAyIixlLGVdLFs1OCwxLDEwNywiQ29udGV4dE1lbnUiLDU4LCJDb250ZXh0TWVudSIsOTMsZSxlLGVdLFswLDEsMTA4LCJQb3dlciIsMCxlLDAsZSxlLGVdLFswLDEsMTA5LCJOdW1wYWRFcXVhbCIsMCxlLDAsZSxlLGVdLFs3MSwxLDExMCwiRjEzIiw3MSwiRjEzIiwxMjQsIlZLX0YxMyIsZSxlXSxbNzIsMSwxMTEsIkYxNCIsNzIsIkYxNCIsMTI1LCJWS19GMTQiLGUsZV0sWzczLDEsMTEyLCJGMTUiLDczLCJGMTUiLDEyNiwiVktfRjE1IixlLGVdLFs3NCwxLDExMywiRjE2Iiw3NCwiRjE2IiwxMjcsIlZLX0YxNiIsZSxlXSxbNzUsMSwxMTQsIkYxNyIsNzUsIkYxNyIsMTI4LCJWS19GMTciLGUsZV0sWzc2LDEsMTE1LCJGMTgiLDc2LCJGMTgiLDEyOSwiVktfRjE4IixlLGVdLFs3NywxLDExNiwiRjE5Iiw3NywiRjE5IiwxMzAsIlZLX0YxOSIsZSxlXSxbMCwxLDExNywiRjIwIiwwLGUsMCwiVktfRjIwIixlLGVdLFswLDEsMTE4LCJGMjEiLDAsZSwwLCJWS19GMjEiLGUsZV0sWzAsMSwxMTksIkYyMiIsMCxlLDAsIlZLX0YyMiIsZSxlXSxbMCwxLDEyMCwiRjIzIiwwLGUsMCwiVktfRjIzIixlLGVdLFswLDEsMTIxLCJGMjQiLDAsZSwwLCJWS19GMjQiLGUsZV0sWzAsMSwxMjIsIk9wZW4iLDAsZSwwLGUsZSxlXSxbMCwxLDEyMywiSGVscCIsMCxlLDAsZSxlLGVdLFswLDEsMTI0LCJTZWxlY3QiLDAsZSwwLGUsZSxlXSxbMCwxLDEyNSwiQWdhaW4iLDAsZSwwLGUsZSxlXSxbMCwxLDEyNiwiVW5kbyIsMCxlLDAsZSxlLGVdLFswLDEsMTI3LCJDdXQiLDAsZSwwLGUsZSxlXSxbMCwxLDEyOCwiQ29weSIsMCxlLDAsZSxlLGVdLFswLDEsMTI5LCJQYXN0ZSIsMCxlLDAsZSxlLGVdLFswLDEsMTMwLCJGaW5kIiwwLGUsMCxlLGUsZV0sWzAsMSwxMzEsIkF1ZGlvVm9sdW1lTXV0ZSIsMTEyLCJBdWRpb1ZvbHVtZU11dGUiLDE3MywiVktfVk9MVU1FX01VVEUiLGUsZV0sWzAsMSwxMzIsIkF1ZGlvVm9sdW1lVXAiLDExMywiQXVkaW9Wb2x1bWVVcCIsMTc1LCJWS19WT0xVTUVfVVAiLGUsZV0sWzAsMSwxMzMsIkF1ZGlvVm9sdW1lRG93biIsMTE0LCJBdWRpb1ZvbHVtZURvd24iLDE3NCwiVktfVk9MVU1FX0RPV04iLGUsZV0sWzEwNSwxLDEzNCwiTnVtcGFkQ29tbWEiLDEwNSwiTnVtUGFkX1NlcGFyYXRvciIsMTA4LCJWS19TRVBBUkFUT1IiLGUsZV0sWzExMCwwLDEzNSwiSW50bFJvIiwxMTAsIkFCTlRfQzEiLDE5MywiVktfQUJOVF9DMSIsZSxlXSxbMCwxLDEzNiwiS2FuYU1vZGUiLDAsZSwwLGUsZSxlXSxbMCwwLDEzNywiSW50bFllbiIsMCxlLDAsZSxlLGVdLFswLDEsMTM4LCJDb252ZXJ0IiwwLGUsMCxlLGUsZV0sWzAsMSwxMzksIk5vbkNvbnZlcnQiLDAsZSwwLGUsZSxlXSxbMCwxLDE0MCwiTGFuZzEiLDAsZSwwLGUsZSxlXSxbMCwxLDE0MSwiTGFuZzIiLDAsZSwwLGUsZSxlXSxbMCwxLDE0MiwiTGFuZzMiLDAsZSwwLGUsZSxlXSxbMCwxLDE0MywiTGFuZzQiLDAsZSwwLGUsZSxlXSxbMCwxLDE0NCwiTGFuZzUiLDAsZSwwLGUsZSxlXSxbMCwxLDE0NSwiQWJvcnQiLDAsZSwwLGUsZSxlXSxbMCwxLDE0NiwiUHJvcHMiLDAsZSwwLGUsZSxlXSxbMCwxLDE0NywiTnVtcGFkUGFyZW5MZWZ0IiwwLGUsMCxlLGUsZV0sWzAsMSwxNDgsIk51bXBhZFBhcmVuUmlnaHQiLDAsZSwwLGUsZSxlXSxbMCwxLDE0OSwiTnVtcGFkQmFja3NwYWNlIiwwLGUsMCxlLGUsZV0sWzAsMSwxNTAsIk51bXBhZE1lbW9yeVN0b3JlIiwwLGUsMCxlLGUsZV0sWzAsMSwxNTEsIk51bXBhZE1lbW9yeVJlY2FsbCIsMCxlLDAsZSxlLGVdLFswLDEsMTUyLCJOdW1wYWRNZW1vcnlDbGVhciIsMCxlLDAsZSxlLGVdLFswLDEsMTUzLCJOdW1wYWRNZW1vcnlBZGQiLDAsZSwwLGUsZSxlXSxbMCwxLDE1NCwiTnVtcGFkTWVtb3J5U3VidHJhY3QiLDAsZSwwLGUsZSxlXSxbMCwxLDE1NSwiTnVtcGFkQ2xlYXIiLDEyNiwiQ2xlYXIiLDEyLCJWS19DTEVBUiIsZSxlXSxbMCwxLDE1NiwiTnVtcGFkQ2xlYXJFbnRyeSIsMCxlLDAsZSxlLGVdLFs1LDEsMCxlLDUsIkN0cmwiLDE3LCJWS19DT05UUk9MIixlLGVdLFs0LDEsMCxlLDQsIlNoaWZ0IiwxNiwiVktfU0hJRlQiLGUsZV0sWzYsMSwwLGUsNiwiQWx0IiwxOCwiVktfTUVOVSIsZSxlXSxbNTcsMSwwLGUsNTcsIk1ldGEiLDAsIlZLX0NPTU1BTkQiLGUsZV0sWzUsMSwxNTcsIkNvbnRyb2xMZWZ0Iiw1LGUsMCwiVktfTENPTlRST0wiLGUsZV0sWzQsMSwxNTgsIlNoaWZ0TGVmdCIsNCxlLDAsIlZLX0xTSElGVCIsZSxlXSxbNiwxLDE1OSwiQWx0TGVmdCIsNixlLDAsIlZLX0xNRU5VIixlLGVdLFs1NywxLDE2MCwiTWV0YUxlZnQiLDU3LGUsMCwiVktfTFdJTiIsZSxlXSxbNSwxLDE2MSwiQ29udHJvbFJpZ2h0Iiw1LGUsMCwiVktfUkNPTlRST0wiLGUsZV0sWzQsMSwxNjIsIlNoaWZ0UmlnaHQiLDQsZSwwLCJWS19SU0hJRlQiLGUsZV0sWzYsMSwxNjMsIkFsdFJpZ2h0Iiw2LGUsMCwiVktfUk1FTlUiLGUsZV0sWzU3LDEsMTY0LCJNZXRhUmlnaHQiLDU3LGUsMCwiVktfUldJTiIsZSxlXSxbMCwxLDE2NSwiQnJpZ2h0bmVzc1VwIiwwLGUsMCxlLGUsZV0sWzAsMSwxNjYsIkJyaWdodG5lc3NEb3duIiwwLGUsMCxlLGUsZV0sWzAsMSwxNjcsIk1lZGlhUGxheSIsMCxlLDAsZSxlLGVdLFswLDEsMTY4LCJNZWRpYVJlY29yZCIsMCxlLDAsZSxlLGVdLFswLDEsMTY5LCJNZWRpYUZhc3RGb3J3YXJkIiwwLGUsMCxlLGUsZV0sWzAsMSwxNzAsIk1lZGlhUmV3aW5kIiwwLGUsMCxlLGUsZV0sWzExNCwxLDE3MSwiTWVkaWFUcmFja05leHQiLDExOSwiTWVkaWFUcmFja05leHQiLDE3NiwiVktfTUVESUFfTkVYVF9UUkFDSyIsZSxlXSxbMTE1LDEsMTcyLCJNZWRpYVRyYWNrUHJldmlvdXMiLDEyMCwiTWVkaWFUcmFja1ByZXZpb3VzIiwxNzcsIlZLX01FRElBX1BSRVZfVFJBQ0siLGUsZV0sWzExNiwxLDE3MywiTWVkaWFTdG9wIiwxMjEsIk1lZGlhU3RvcCIsMTc4LCJWS19NRURJQV9TVE9QIixlLGVdLFswLDEsMTc0LCJFamVjdCIsMCxlLDAsZSxlLGVdLFsxMTcsMSwxNzUsIk1lZGlhUGxheVBhdXNlIiwxMjIsIk1lZGlhUGxheVBhdXNlIiwxNzksIlZLX01FRElBX1BMQVlfUEFVU0UiLGUsZV0sWzAsMSwxNzYsIk1lZGlhU2VsZWN0IiwxMjMsIkxhdW5jaE1lZGlhUGxheWVyIiwxODEsIlZLX01FRElBX0xBVU5DSF9NRURJQV9TRUxFQ1QiLGUsZV0sWzAsMSwxNzcsIkxhdW5jaE1haWwiLDEyNCwiTGF1bmNoTWFpbCIsMTgwLCJWS19NRURJQV9MQVVOQ0hfTUFJTCIsZSxlXSxbMCwxLDE3OCwiTGF1bmNoQXBwMiIsMTI1LCJMYXVuY2hBcHAyIiwxODMsIlZLX01FRElBX0xBVU5DSF9BUFAyIixlLGVdLFswLDEsMTc5LCJMYXVuY2hBcHAxIiwwLGUsMCwiVktfTUVESUFfTEFVTkNIX0FQUDEiLGUsZV0sWzAsMSwxODAsIlNlbGVjdFRhc2siLDAsZSwwLGUsZSxlXSxbMCwxLDE4MSwiTGF1bmNoU2NyZWVuU2F2ZXIiLDAsZSwwLGUsZSxlXSxbMCwxLDE4MiwiQnJvd3NlclNlYXJjaCIsMTE1LCJCcm93c2VyU2VhcmNoIiwxNzAsIlZLX0JST1dTRVJfU0VBUkNIIixlLGVdLFswLDEsMTgzLCJCcm93c2VySG9tZSIsMTE2LCJCcm93c2VySG9tZSIsMTcyLCJWS19CUk9XU0VSX0hPTUUiLGUsZV0sWzExMiwxLDE4NCwiQnJvd3NlckJhY2siLDExNywiQnJvd3NlckJhY2siLDE2NiwiVktfQlJPV1NFUl9CQUNLIixlLGVdLFsxMTMsMSwxODUsIkJyb3dzZXJGb3J3YXJkIiwxMTgsIkJyb3dzZXJGb3J3YXJkIiwxNjcsIlZLX0JST1dTRVJfRk9SV0FSRCIsZSxlXSxbMCwxLDE4NiwiQnJvd3NlclN0b3AiLDAsZSwwLCJWS19CUk9XU0VSX1NUT1AiLGUsZV0sWzAsMSwxODcsIkJyb3dzZXJSZWZyZXNoIiwwLGUsMCwiVktfQlJPV1NFUl9SRUZSRVNIIixlLGVdLFswLDEsMTg4LCJCcm93c2VyRmF2b3JpdGVzIiwwLGUsMCwiVktfQlJPV1NFUl9GQVZPUklURVMiLGUsZV0sWzAsMSwxODksIlpvb21Ub2dnbGUiLDAsZSwwLGUsZSxlXSxbMCwxLDE5MCwiTWFpbFJlcGx5IiwwLGUsMCxlLGUsZV0sWzAsMSwxOTEsIk1haWxGb3J3YXJkIiwwLGUsMCxlLGUsZV0sWzAsMSwxOTIsIk1haWxTZW5kIiwwLGUsMCxlLGUsZV0sWzEwOSwxLDAsZSwxMDksIktleUluQ29tcG9zaXRpb24iLDIyOSxlLGUsZV0sWzExMSwxLDAsZSwxMTEsIkFCTlRfQzIiLDE5NCwiVktfQUJOVF9DMiIsZSxlXSxbOTEsMSwwLGUsOTEsIk9FTV84IiwyMjMsIlZLX09FTV84IixlLGVdLFswLDEsMCxlLDAsZSwwLCJWS19LQU5BIixlLGVdLFswLDEsMCxlLDAsZSwwLCJWS19IQU5HVUwiLGUsZV0sWzAsMSwwLGUsMCxlLDAsIlZLX0pVTkpBIixlLGVdLFswLDEsMCxlLDAsZSwwLCJWS19GSU5BTCIsZSxlXSxbMCwxLDAsZSwwLGUsMCwiVktfSEFOSkEiLGUsZV0sWzAsMSwwLGUsMCxlLDAsIlZLX0tBTkpJIixlLGVdLFswLDEsMCxlLDAsZSwwLCJWS19DT05WRVJUIixlLGVdLFswLDEsMCxlLDAsZSwwLCJWS19OT05DT05WRVJUIixlLGVdLFswLDEsMCxlLDAsZSwwLCJWS19BQ0NFUFQiLGUsZV0sWzAsMSwwLGUsMCxlLDAsIlZLX01PREVDSEFOR0UiLGUsZV0sWzAsMSwwLGUsMCxlLDAsIlZLX1NFTEVDVCIsZSxlXSxbMCwxLDAsZSwwLGUsMCwiVktfUFJJTlQiLGUsZV0sWzAsMSwwLGUsMCxlLDAsIlZLX0VYRUNVVEUiLGUsZV0sWzAsMSwwLGUsMCxlLDAsIlZLX1NOQVBTSE9UIixlLGVdLFswLDEsMCxlLDAsZSwwLCJWS19IRUxQIixlLGVdLFswLDEsMCxlLDAsZSwwLCJWS19BUFBTIixlLGVdLFswLDEsMCxlLDAsZSwwLCJWS19QUk9DRVNTS0VZIixlLGVdLFswLDEsMCxlLDAsZSwwLCJWS19QQUNLRVQiLGUsZV0sWzAsMSwwLGUsMCxlLDAsIlZLX0RCRV9TQkNTQ0hBUiIsZSxlXSxbMCwxLDAsZSwwLGUsMCwiVktfREJFX0RCQ1NDSEFSIixlLGVdLFswLDEsMCxlLDAsZSwwLCJWS19BVFROIixlLGVdLFswLDEsMCxlLDAsZSwwLCJWS19DUlNFTCIsZSxlXSxbMCwxLDAsZSwwLGUsMCwiVktfRVhTRUwiLGUsZV0sWzAsMSwwLGUsMCxlLDAsIlZLX0VSRU9GIixlLGVdLFswLDEsMCxlLDAsZSwwLCJWS19QTEFZIixlLGVdLFswLDEsMCxlLDAsZSwwLCJWS19aT09NIixlLGVdLFswLDEsMCxlLDAsZSwwLCJWS19OT05BTUUiLGUsZV0sWzAsMSwwLGUsMCxlLDAsIlZLX1BBMSIsZSxlXSxbMCwxLDAsZSwwLGUsMCwiVktfT0VNX0NMRUFSIixlLGVdXSxuPVtdLHI9W107Zm9yKGNvbnN0IGUgb2YgdCl7Y29uc3RbdCxpLG8sYSxzLGwsYyx1LGgsZF09ZTtpZihyW29dfHwocltvXT0hMCxWdFthXT1vLEZ0W2EudG9Mb3dlckNhc2UoKV09byksIW5bc10pe2lmKG5bc109ITAsIWwpdGhyb3cgbmV3IEVycm9yKGBTdHJpbmcgcmVwcmVzZW50YXRpb24gbWlzc2luZyBmb3Iga2V5IGNvZGUgJHtzfSBhcm91bmQgc2NhbiBjb2RlICR7YX1gKTtUdC5kZWZpbmUocyxsKSxJdC5kZWZpbmUocyxofHxsKSxLdC5kZWZpbmUocyxkfHxofHxsKX1jJiYoRHRbY109cyl9fSgpLGZ1bmN0aW9uKGUpe2UudG9TdHJpbmc9ZnVuY3Rpb24oZSl7cmV0dXJuIFR0LmtleUNvZGVUb1N0cihlKX0sZS5mcm9tU3RyaW5nPWZ1bmN0aW9uKGUpe3JldHVybiBUdC5zdHJUb0tleUNvZGUoZSl9LGUudG9Vc2VyU2V0dGluZ3NVUz1mdW5jdGlvbihlKXtyZXR1cm4gSXQua2V5Q29kZVRvU3RyKGUpfSxlLnRvVXNlclNldHRpbmdzR2VuZXJhbD1mdW5jdGlvbihlKXtyZXR1cm4gS3Qua2V5Q29kZVRvU3RyKGUpfSxlLmZyb21Vc2VyU2V0dGluZ3M9ZnVuY3Rpb24oZSl7cmV0dXJuIEl0LnN0clRvS2V5Q29kZShlKXx8S3Quc3RyVG9LZXlDb2RlKGUpfSxlLnRvRWxlY3Ryb25BY2NlbGVyYXRvcj1mdW5jdGlvbihlKXtpZihlPj05MyYmZTw9MTA4KXJldHVybiBudWxsO3N3aXRjaChlKXtjYXNlIDE2OnJldHVybiJVcCI7Y2FzZSAxODpyZXR1cm4iRG93biI7Y2FzZSAxNTpyZXR1cm4iTGVmdCI7Y2FzZSAxNzpyZXR1cm4iUmlnaHQifXJldHVybiBUdC5rZXlDb2RlVG9TdHIoZSl9fShCdHx8KEJ0PXt9KSk7Y2xhc3MgcXQgZXh0ZW5kcyBudHtjb25zdHJ1Y3RvcihlLHQsbixyKXtzdXBlcihlLHQsbixyKSx0aGlzLnNlbGVjdGlvblN0YXJ0TGluZU51bWJlcj1lLHRoaXMuc2VsZWN0aW9uU3RhcnRDb2x1bW49dCx0aGlzLnBvc2l0aW9uTGluZU51bWJlcj1uLHRoaXMucG9zaXRpb25Db2x1bW49cn10b1N0cmluZygpe3JldHVybiJbIit0aGlzLnNlbGVjdGlvblN0YXJ0TGluZU51bWJlcisiLCIrdGhpcy5zZWxlY3Rpb25TdGFydENvbHVtbisiIC0+ICIrdGhpcy5wb3NpdGlvbkxpbmVOdW1iZXIrIiwiK3RoaXMucG9zaXRpb25Db2x1bW4rIl0ifWVxdWFsc1NlbGVjdGlvbihlKXtyZXR1cm4gcXQuc2VsZWN0aW9uc0VxdWFsKHRoaXMsZSl9c3RhdGljIHNlbGVjdGlvbnNFcXVhbChlLHQpe3JldHVybiBlLnNlbGVjdGlvblN0YXJ0TGluZU51bWJlcj09PXQuc2VsZWN0aW9uU3RhcnRMaW5lTnVtYmVyJiZlLnNlbGVjdGlvblN0YXJ0Q29sdW1uPT09dC5zZWxlY3Rpb25TdGFydENvbHVtbiYmZS5wb3NpdGlvbkxpbmVOdW1iZXI9PT10LnBvc2l0aW9uTGluZU51bWJlciYmZS5wb3NpdGlvbkNvbHVtbj09PXQucG9zaXRpb25Db2x1bW59Z2V0RGlyZWN0aW9uKCl7cmV0dXJuIHRoaXMuc2VsZWN0aW9uU3RhcnRMaW5lTnVtYmVyPT09dGhpcy5zdGFydExpbmVOdW1iZXImJnRoaXMuc2VsZWN0aW9uU3RhcnRDb2x1bW49PT10aGlzLnN0YXJ0Q29sdW1uPzA6MX1zZXRFbmRQb3NpdGlvbihlLHQpe3JldHVybiAwPT09dGhpcy5nZXREaXJlY3Rpb24oKT9uZXcgcXQodGhpcy5zdGFydExpbmVOdW1iZXIsdGhpcy5zdGFydENvbHVtbixlLHQpOm5ldyBxdChlLHQsdGhpcy5zdGFydExpbmVOdW1iZXIsdGhpcy5zdGFydENvbHVtbil9Z2V0UG9zaXRpb24oKXtyZXR1cm4gbmV3IHR0KHRoaXMucG9zaXRpb25MaW5lTnVtYmVyLHRoaXMucG9zaXRpb25Db2x1bW4pfWdldFNlbGVjdGlvblN0YXJ0KCl7cmV0dXJuIG5ldyB0dCh0aGlzLnNlbGVjdGlvblN0YXJ0TGluZU51bWJlcix0aGlzLnNlbGVjdGlvblN0YXJ0Q29sdW1uKX1zZXRTdGFydFBvc2l0aW9uKGUsdCl7cmV0dXJuIDA9PT10aGlzLmdldERpcmVjdGlvbigpP25ldyBxdChlLHQsdGhpcy5lbmRMaW5lTnVtYmVyLHRoaXMuZW5kQ29sdW1uKTpuZXcgcXQodGhpcy5lbmRMaW5lTnVtYmVyLHRoaXMuZW5kQ29sdW1uLGUsdCl9c3RhdGljIGZyb21Qb3NpdGlvbnMoZSx0PWUpe3JldHVybiBuZXcgcXQoZS5saW5lTnVtYmVyLGUuY29sdW1uLHQubGluZU51bWJlcix0LmNvbHVtbil9c3RhdGljIGZyb21SYW5nZShlLHQpe3JldHVybiAwPT09dD9uZXcgcXQoZS5zdGFydExpbmVOdW1iZXIsZS5zdGFydENvbHVtbixlLmVuZExpbmVOdW1iZXIsZS5lbmRDb2x1bW4pOm5ldyBxdChlLmVuZExpbmVOdW1iZXIsZS5lbmRDb2x1bW4sZS5zdGFydExpbmVOdW1iZXIsZS5zdGFydENvbHVtbil9c3RhdGljIGxpZnRTZWxlY3Rpb24oZSl7cmV0dXJuIG5ldyBxdChlLnNlbGVjdGlvblN0YXJ0TGluZU51bWJlcixlLnNlbGVjdGlvblN0YXJ0Q29sdW1uLGUucG9zaXRpb25MaW5lTnVtYmVyLGUucG9zaXRpb25Db2x1bW4pfXN0YXRpYyBzZWxlY3Rpb25zQXJyRXF1YWwoZSx0KXtpZihlJiYhdHx8IWUmJnQpcmV0dXJuITE7aWYoIWUmJiF0KXJldHVybiEwO2lmKGUubGVuZ3RoIT09dC5sZW5ndGgpcmV0dXJuITE7Zm9yKGxldCBuPTAscj1lLmxlbmd0aDtuPHI7bisrKWlmKCF0aGlzLnNlbGVjdGlvbnNFcXVhbChlW25dLHRbbl0pKXJldHVybiExO3JldHVybiEwfXN0YXRpYyBpc0lTZWxlY3Rpb24oZSl7cmV0dXJuIGUmJiJudW1iZXIiPT10eXBlb2YgZS5zZWxlY3Rpb25TdGFydExpbmVOdW1iZXImJiJudW1iZXIiPT10eXBlb2YgZS5zZWxlY3Rpb25TdGFydENvbHVtbiYmIm51bWJlciI9PXR5cGVvZiBlLnBvc2l0aW9uTGluZU51bWJlciYmIm51bWJlciI9PXR5cGVvZiBlLnBvc2l0aW9uQ29sdW1ufXN0YXRpYyBjcmVhdGVXaXRoRGlyZWN0aW9uKGUsdCxuLHIsaSl7cmV0dXJuIDA9PT1pP25ldyBxdChlLHQsbixyKTpuZXcgcXQobixyLGUsdCl9fWNsYXNzIEh0e2NvbnN0cnVjdG9yKGUsdCxuKXt0aGlzLmlkPWUsdGhpcy5kZWZpbml0aW9uPXQsdGhpcy5kZXNjcmlwdGlvbj1uLEh0Ll9hbGxDb2RpY29ucy5wdXNoKHRoaXMpfWdldCBjbGFzc05hbWVzKCl7cmV0dXJuImNvZGljb24gY29kaWNvbi0iK3RoaXMuaWR9Z2V0IGNsYXNzTmFtZXNBcnJheSgpe3JldHVyblsiY29kaWNvbiIsImNvZGljb24tIit0aGlzLmlkXX1nZXQgY3NzU2VsZWN0b3IoKXtyZXR1cm4iLmNvZGljb24uY29kaWNvbi0iK3RoaXMuaWR9c3RhdGljIGdldEFsbCgpe3JldHVybiBIdC5fYWxsQ29kaWNvbnN9fUh0Ll9hbGxDb2RpY29ucz1bXSxIdC5hZGQ9bmV3IEh0KCJhZGQiLHtmb250Q2hhcmFjdGVyOiJcXGVhNjAifSksSHQucGx1cz1uZXcgSHQoInBsdXMiLEh0LmFkZC5kZWZpbml0aW9uKSxIdC5naXN0TmV3PW5ldyBIdCgiZ2lzdC1uZXciLEh0LmFkZC5kZWZpbml0aW9uKSxIdC5yZXBvQ3JlYXRlPW5ldyBIdCgicmVwby1jcmVhdGUiLEh0LmFkZC5kZWZpbml0aW9uKSxIdC5saWdodGJ1bGI9bmV3IEh0KCJsaWdodGJ1bGIiLHtmb250Q2hhcmFjdGVyOiJcXGVhNjEifSksSHQubGlnaHRCdWxiPW5ldyBIdCgibGlnaHQtYnVsYiIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2MSJ9KSxIdC5yZXBvPW5ldyBIdCgicmVwbyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2MiJ9KSxIdC5yZXBvRGVsZXRlPW5ldyBIdCgicmVwby1kZWxldGUiLHtmb250Q2hhcmFjdGVyOiJcXGVhNjIifSksSHQuZ2lzdEZvcms9bmV3IEh0KCJnaXN0LWZvcmsiLHtmb250Q2hhcmFjdGVyOiJcXGVhNjMifSksSHQucmVwb0ZvcmtlZD1uZXcgSHQoInJlcG8tZm9ya2VkIix7Zm9udENoYXJhY3RlcjoiXFxlYTYzIn0pLEh0LmdpdFB1bGxSZXF1ZXN0PW5ldyBIdCgiZ2l0LXB1bGwtcmVxdWVzdCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2NCJ9KSxIdC5naXRQdWxsUmVxdWVzdEFiYW5kb25lZD1uZXcgSHQoImdpdC1wdWxsLXJlcXVlc3QtYWJhbmRvbmVkIix7Zm9udENoYXJhY3RlcjoiXFxlYTY0In0pLEh0LnJlY29yZEtleXM9bmV3IEh0KCJyZWNvcmQta2V5cyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2NSJ9KSxIdC5rZXlib2FyZD1uZXcgSHQoImtleWJvYXJkIix7Zm9udENoYXJhY3RlcjoiXFxlYTY1In0pLEh0LnRhZz1uZXcgSHQoInRhZyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2NiJ9KSxIdC50YWdBZGQ9bmV3IEh0KCJ0YWctYWRkIix7Zm9udENoYXJhY3RlcjoiXFxlYTY2In0pLEh0LnRhZ1JlbW92ZT1uZXcgSHQoInRhZy1yZW1vdmUiLHtmb250Q2hhcmFjdGVyOiJcXGVhNjYifSksSHQucGVyc29uPW5ldyBIdCgicGVyc29uIix7Zm9udENoYXJhY3RlcjoiXFxlYTY3In0pLEh0LnBlcnNvbkZvbGxvdz1uZXcgSHQoInBlcnNvbi1mb2xsb3ciLHtmb250Q2hhcmFjdGVyOiJcXGVhNjcifSksSHQucGVyc29uT3V0bGluZT1uZXcgSHQoInBlcnNvbi1vdXRsaW5lIix7Zm9udENoYXJhY3RlcjoiXFxlYTY3In0pLEh0LnBlcnNvbkZpbGxlZD1uZXcgSHQoInBlcnNvbi1maWxsZWQiLHtmb250Q2hhcmFjdGVyOiJcXGVhNjcifSksSHQuZ2l0QnJhbmNoPW5ldyBIdCgiZ2l0LWJyYW5jaCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2OCJ9KSxIdC5naXRCcmFuY2hDcmVhdGU9bmV3IEh0KCJnaXQtYnJhbmNoLWNyZWF0ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2OCJ9KSxIdC5naXRCcmFuY2hEZWxldGU9bmV3IEh0KCJnaXQtYnJhbmNoLWRlbGV0ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2OCJ9KSxIdC5zb3VyY2VDb250cm9sPW5ldyBIdCgic291cmNlLWNvbnRyb2wiLHtmb250Q2hhcmFjdGVyOiJcXGVhNjgifSksSHQubWlycm9yPW5ldyBIdCgibWlycm9yIix7Zm9udENoYXJhY3RlcjoiXFxlYTY5In0pLEh0Lm1pcnJvclB1YmxpYz1uZXcgSHQoIm1pcnJvci1wdWJsaWMiLHtmb250Q2hhcmFjdGVyOiJcXGVhNjkifSksSHQuc3Rhcj1uZXcgSHQoInN0YXIiLHtmb250Q2hhcmFjdGVyOiJcXGVhNmEifSksSHQuc3RhckFkZD1uZXcgSHQoInN0YXItYWRkIix7Zm9udENoYXJhY3RlcjoiXFxlYTZhIn0pLEh0LnN0YXJEZWxldGU9bmV3IEh0KCJzdGFyLWRlbGV0ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2YSJ9KSxIdC5zdGFyRW1wdHk9bmV3IEh0KCJzdGFyLWVtcHR5Iix7Zm9udENoYXJhY3RlcjoiXFxlYTZhIn0pLEh0LmNvbW1lbnQ9bmV3IEh0KCJjb21tZW50Iix7Zm9udENoYXJhY3RlcjoiXFxlYTZiIn0pLEh0LmNvbW1lbnRBZGQ9bmV3IEh0KCJjb21tZW50LWFkZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2YiJ9KSxIdC5hbGVydD1uZXcgSHQoImFsZXJ0Iix7Zm9udENoYXJhY3RlcjoiXFxlYTZjIn0pLEh0Lndhcm5pbmc9bmV3IEh0KCJ3YXJuaW5nIix7Zm9udENoYXJhY3RlcjoiXFxlYTZjIn0pLEh0LnNlYXJjaD1uZXcgSHQoInNlYXJjaCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2ZCJ9KSxIdC5zZWFyY2hTYXZlPW5ldyBIdCgic2VhcmNoLXNhdmUiLHtmb250Q2hhcmFjdGVyOiJcXGVhNmQifSksSHQubG9nT3V0PW5ldyBIdCgibG9nLW91dCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2ZSJ9KSxIdC5zaWduT3V0PW5ldyBIdCgic2lnbi1vdXQiLHtmb250Q2hhcmFjdGVyOiJcXGVhNmUifSksSHQubG9nSW49bmV3IEh0KCJsb2ctaW4iLHtmb250Q2hhcmFjdGVyOiJcXGVhNmYifSksSHQuc2lnbkluPW5ldyBIdCgic2lnbi1pbiIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2ZiJ9KSxIdC5leWU9bmV3IEh0KCJleWUiLHtmb250Q2hhcmFjdGVyOiJcXGVhNzAifSksSHQuZXllVW53YXRjaD1uZXcgSHQoImV5ZS11bndhdGNoIix7Zm9udENoYXJhY3RlcjoiXFxlYTcwIn0pLEh0LmV5ZVdhdGNoPW5ldyBIdCgiZXllLXdhdGNoIix7Zm9udENoYXJhY3RlcjoiXFxlYTcwIn0pLEh0LmNpcmNsZUZpbGxlZD1uZXcgSHQoImNpcmNsZS1maWxsZWQiLHtmb250Q2hhcmFjdGVyOiJcXGVhNzEifSksSHQucHJpbWl0aXZlRG90PW5ldyBIdCgicHJpbWl0aXZlLWRvdCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3MSJ9KSxIdC5jbG9zZURpcnR5PW5ldyBIdCgiY2xvc2UtZGlydHkiLHtmb250Q2hhcmFjdGVyOiJcXGVhNzEifSksSHQuZGVidWdCcmVha3BvaW50PW5ldyBIdCgiZGVidWctYnJlYWtwb2ludCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3MSJ9KSxIdC5kZWJ1Z0JyZWFrcG9pbnREaXNhYmxlZD1uZXcgSHQoImRlYnVnLWJyZWFrcG9pbnQtZGlzYWJsZWQiLHtmb250Q2hhcmFjdGVyOiJcXGVhNzEifSksSHQuZGVidWdIaW50PW5ldyBIdCgiZGVidWctaGludCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3MSJ9KSxIdC5wcmltaXRpdmVTcXVhcmU9bmV3IEh0KCJwcmltaXRpdmUtc3F1YXJlIix7Zm9udENoYXJhY3RlcjoiXFxlYTcyIn0pLEh0LmVkaXQ9bmV3IEh0KCJlZGl0Iix7Zm9udENoYXJhY3RlcjoiXFxlYTczIn0pLEh0LnBlbmNpbD1uZXcgSHQoInBlbmNpbCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3MyJ9KSxIdC5pbmZvPW5ldyBIdCgiaW5mbyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3NCJ9KSxIdC5pc3N1ZU9wZW5lZD1uZXcgSHQoImlzc3VlLW9wZW5lZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3NCJ9KSxIdC5naXN0UHJpdmF0ZT1uZXcgSHQoImdpc3QtcHJpdmF0ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3NSJ9KSxIdC5naXRGb3JrUHJpdmF0ZT1uZXcgSHQoImdpdC1mb3JrLXByaXZhdGUiLHtmb250Q2hhcmFjdGVyOiJcXGVhNzUifSksSHQubG9jaz1uZXcgSHQoImxvY2siLHtmb250Q2hhcmFjdGVyOiJcXGVhNzUifSksSHQubWlycm9yUHJpdmF0ZT1uZXcgSHQoIm1pcnJvci1wcml2YXRlIix7Zm9udENoYXJhY3RlcjoiXFxlYTc1In0pLEh0LmNsb3NlPW5ldyBIdCgiY2xvc2UiLHtmb250Q2hhcmFjdGVyOiJcXGVhNzYifSksSHQucmVtb3ZlQ2xvc2U9bmV3IEh0KCJyZW1vdmUtY2xvc2UiLHtmb250Q2hhcmFjdGVyOiJcXGVhNzYifSksSHQueD1uZXcgSHQoIngiLHtmb250Q2hhcmFjdGVyOiJcXGVhNzYifSksSHQucmVwb1N5bmM9bmV3IEh0KCJyZXBvLXN5bmMiLHtmb250Q2hhcmFjdGVyOiJcXGVhNzcifSksSHQuc3luYz1uZXcgSHQoInN5bmMiLHtmb250Q2hhcmFjdGVyOiJcXGVhNzcifSksSHQuY2xvbmU9bmV3IEh0KCJjbG9uZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3OCJ9KSxIdC5kZXNrdG9wRG93bmxvYWQ9bmV3IEh0KCJkZXNrdG9wLWRvd25sb2FkIix7Zm9udENoYXJhY3RlcjoiXFxlYTc4In0pLEh0LmJlYWtlcj1uZXcgSHQoImJlYWtlciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3OSJ9KSxIdC5taWNyb3Njb3BlPW5ldyBIdCgibWljcm9zY29wZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3OSJ9KSxIdC52bT1uZXcgSHQoInZtIix7Zm9udENoYXJhY3RlcjoiXFxlYTdhIn0pLEh0LmRldmljZURlc2t0b3A9bmV3IEh0KCJkZXZpY2UtZGVza3RvcCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3YSJ9KSxIdC5maWxlPW5ldyBIdCgiZmlsZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3YiJ9KSxIdC5maWxlVGV4dD1uZXcgSHQoImZpbGUtdGV4dCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3YiJ9KSxIdC5tb3JlPW5ldyBIdCgibW9yZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3YyJ9KSxIdC5lbGxpcHNpcz1uZXcgSHQoImVsbGlwc2lzIix7Zm9udENoYXJhY3RlcjoiXFxlYTdjIn0pLEh0LmtlYmFiSG9yaXpvbnRhbD1uZXcgSHQoImtlYmFiLWhvcml6b250YWwiLHtmb250Q2hhcmFjdGVyOiJcXGVhN2MifSksSHQubWFpbFJlcGx5PW5ldyBIdCgibWFpbC1yZXBseSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3ZCJ9KSxIdC5yZXBseT1uZXcgSHQoInJlcGx5Iix7Zm9udENoYXJhY3RlcjoiXFxlYTdkIn0pLEh0Lm9yZ2FuaXphdGlvbj1uZXcgSHQoIm9yZ2FuaXphdGlvbiIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3ZSJ9KSxIdC5vcmdhbml6YXRpb25GaWxsZWQ9bmV3IEh0KCJvcmdhbml6YXRpb24tZmlsbGVkIix7Zm9udENoYXJhY3RlcjoiXFxlYTdlIn0pLEh0Lm9yZ2FuaXphdGlvbk91dGxpbmU9bmV3IEh0KCJvcmdhbml6YXRpb24tb3V0bGluZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3ZSJ9KSxIdC5uZXdGaWxlPW5ldyBIdCgibmV3LWZpbGUiLHtmb250Q2hhcmFjdGVyOiJcXGVhN2YifSksSHQuZmlsZUFkZD1uZXcgSHQoImZpbGUtYWRkIix7Zm9udENoYXJhY3RlcjoiXFxlYTdmIn0pLEh0Lm5ld0ZvbGRlcj1uZXcgSHQoIm5ldy1mb2xkZXIiLHtmb250Q2hhcmFjdGVyOiJcXGVhODAifSksSHQuZmlsZURpcmVjdG9yeUNyZWF0ZT1uZXcgSHQoImZpbGUtZGlyZWN0b3J5LWNyZWF0ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE4MCJ9KSxIdC50cmFzaD1uZXcgSHQoInRyYXNoIix7Zm9udENoYXJhY3RlcjoiXFxlYTgxIn0pLEh0LnRyYXNoY2FuPW5ldyBIdCgidHJhc2hjYW4iLHtmb250Q2hhcmFjdGVyOiJcXGVhODEifSksSHQuaGlzdG9yeT1uZXcgSHQoImhpc3RvcnkiLHtmb250Q2hhcmFjdGVyOiJcXGVhODIifSksSHQuY2xvY2s9bmV3IEh0KCJjbG9jayIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE4MiJ9KSxIdC5mb2xkZXI9bmV3IEh0KCJmb2xkZXIiLHtmb250Q2hhcmFjdGVyOiJcXGVhODMifSksSHQuZmlsZURpcmVjdG9yeT1uZXcgSHQoImZpbGUtZGlyZWN0b3J5Iix7Zm9udENoYXJhY3RlcjoiXFxlYTgzIn0pLEh0LnN5bWJvbEZvbGRlcj1uZXcgSHQoInN5bWJvbC1mb2xkZXIiLHtmb250Q2hhcmFjdGVyOiJcXGVhODMifSksSHQubG9nb0dpdGh1Yj1uZXcgSHQoImxvZ28tZ2l0aHViIix7Zm9udENoYXJhY3RlcjoiXFxlYTg0In0pLEh0Lm1hcmtHaXRodWI9bmV3IEh0KCJtYXJrLWdpdGh1YiIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE4NCJ9KSxIdC5naXRodWI9bmV3IEh0KCJnaXRodWIiLHtmb250Q2hhcmFjdGVyOiJcXGVhODQifSksSHQudGVybWluYWw9bmV3IEh0KCJ0ZXJtaW5hbCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE4NSJ9KSxIdC5jb25zb2xlPW5ldyBIdCgiY29uc29sZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE4NSJ9KSxIdC5yZXBsPW5ldyBIdCgicmVwbCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE4NSJ9KSxIdC56YXA9bmV3IEh0KCJ6YXAiLHtmb250Q2hhcmFjdGVyOiJcXGVhODYifSksSHQuc3ltYm9sRXZlbnQ9bmV3IEh0KCJzeW1ib2wtZXZlbnQiLHtmb250Q2hhcmFjdGVyOiJcXGVhODYifSksSHQuZXJyb3I9bmV3IEh0KCJlcnJvciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE4NyJ9KSxIdC5zdG9wPW5ldyBIdCgic3RvcCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE4NyJ9KSxIdC52YXJpYWJsZT1uZXcgSHQoInZhcmlhYmxlIix7Zm9udENoYXJhY3RlcjoiXFxlYTg4In0pLEh0LnN5bWJvbFZhcmlhYmxlPW5ldyBIdCgic3ltYm9sLXZhcmlhYmxlIix7Zm9udENoYXJhY3RlcjoiXFxlYTg4In0pLEh0LmFycmF5PW5ldyBIdCgiYXJyYXkiLHtmb250Q2hhcmFjdGVyOiJcXGVhOGEifSksSHQuc3ltYm9sQXJyYXk9bmV3IEh0KCJzeW1ib2wtYXJyYXkiLHtmb250Q2hhcmFjdGVyOiJcXGVhOGEifSksSHQuc3ltYm9sTW9kdWxlPW5ldyBIdCgic3ltYm9sLW1vZHVsZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE4YiJ9KSxIdC5zeW1ib2xQYWNrYWdlPW5ldyBIdCgic3ltYm9sLXBhY2thZ2UiLHtmb250Q2hhcmFjdGVyOiJcXGVhOGIifSksSHQuc3ltYm9sTmFtZXNwYWNlPW5ldyBIdCgic3ltYm9sLW5hbWVzcGFjZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE4YiJ9KSxIdC5zeW1ib2xPYmplY3Q9bmV3IEh0KCJzeW1ib2wtb2JqZWN0Iix7Zm9udENoYXJhY3RlcjoiXFxlYThiIn0pLEh0LnN5bWJvbE1ldGhvZD1uZXcgSHQoInN5bWJvbC1tZXRob2QiLHtmb250Q2hhcmFjdGVyOiJcXGVhOGMifSksSHQuc3ltYm9sRnVuY3Rpb249bmV3IEh0KCJzeW1ib2wtZnVuY3Rpb24iLHtmb250Q2hhcmFjdGVyOiJcXGVhOGMifSksSHQuc3ltYm9sQ29uc3RydWN0b3I9bmV3IEh0KCJzeW1ib2wtY29uc3RydWN0b3IiLHtmb250Q2hhcmFjdGVyOiJcXGVhOGMifSksSHQuc3ltYm9sQm9vbGVhbj1uZXcgSHQoInN5bWJvbC1ib29sZWFuIix7Zm9udENoYXJhY3RlcjoiXFxlYThmIn0pLEh0LnN5bWJvbE51bGw9bmV3IEh0KCJzeW1ib2wtbnVsbCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE4ZiJ9KSxIdC5zeW1ib2xOdW1lcmljPW5ldyBIdCgic3ltYm9sLW51bWVyaWMiLHtmb250Q2hhcmFjdGVyOiJcXGVhOTAifSksSHQuc3ltYm9sTnVtYmVyPW5ldyBIdCgic3ltYm9sLW51bWJlciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE5MCJ9KSxIdC5zeW1ib2xTdHJ1Y3R1cmU9bmV3IEh0KCJzeW1ib2wtc3RydWN0dXJlIix7Zm9udENoYXJhY3RlcjoiXFxlYTkxIn0pLEh0LnN5bWJvbFN0cnVjdD1uZXcgSHQoInN5bWJvbC1zdHJ1Y3QiLHtmb250Q2hhcmFjdGVyOiJcXGVhOTEifSksSHQuc3ltYm9sUGFyYW1ldGVyPW5ldyBIdCgic3ltYm9sLXBhcmFtZXRlciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE5MiJ9KSxIdC5zeW1ib2xUeXBlUGFyYW1ldGVyPW5ldyBIdCgic3ltYm9sLXR5cGUtcGFyYW1ldGVyIix7Zm9udENoYXJhY3RlcjoiXFxlYTkyIn0pLEh0LnN5bWJvbEtleT1uZXcgSHQoInN5bWJvbC1rZXkiLHtmb250Q2hhcmFjdGVyOiJcXGVhOTMifSksSHQuc3ltYm9sVGV4dD1uZXcgSHQoInN5bWJvbC10ZXh0Iix7Zm9udENoYXJhY3RlcjoiXFxlYTkzIn0pLEh0LnN5bWJvbFJlZmVyZW5jZT1uZXcgSHQoInN5bWJvbC1yZWZlcmVuY2UiLHtmb250Q2hhcmFjdGVyOiJcXGVhOTQifSksSHQuZ29Ub0ZpbGU9bmV3IEh0KCJnby10by1maWxlIix7Zm9udENoYXJhY3RlcjoiXFxlYTk0In0pLEh0LnN5bWJvbEVudW09bmV3IEh0KCJzeW1ib2wtZW51bSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE5NSJ9KSxIdC5zeW1ib2xWYWx1ZT1uZXcgSHQoInN5bWJvbC12YWx1ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE5NSJ9KSxIdC5zeW1ib2xSdWxlcj1uZXcgSHQoInN5bWJvbC1ydWxlciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE5NiJ9KSxIdC5zeW1ib2xVbml0PW5ldyBIdCgic3ltYm9sLXVuaXQiLHtmb250Q2hhcmFjdGVyOiJcXGVhOTYifSksSHQuYWN0aXZhdGVCcmVha3BvaW50cz1uZXcgSHQoImFjdGl2YXRlLWJyZWFrcG9pbnRzIix7Zm9udENoYXJhY3RlcjoiXFxlYTk3In0pLEh0LmFyY2hpdmU9bmV3IEh0KCJhcmNoaXZlIix7Zm9udENoYXJhY3RlcjoiXFxlYTk4In0pLEh0LmFycm93Qm90aD1uZXcgSHQoImFycm93LWJvdGgiLHtmb250Q2hhcmFjdGVyOiJcXGVhOTkifSksSHQuYXJyb3dEb3duPW5ldyBIdCgiYXJyb3ctZG93biIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE5YSJ9KSxIdC5hcnJvd0xlZnQ9bmV3IEh0KCJhcnJvdy1sZWZ0Iix7Zm9udENoYXJhY3RlcjoiXFxlYTliIn0pLEh0LmFycm93UmlnaHQ9bmV3IEh0KCJhcnJvdy1yaWdodCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE5YyJ9KSxIdC5hcnJvd1NtYWxsRG93bj1uZXcgSHQoImFycm93LXNtYWxsLWRvd24iLHtmb250Q2hhcmFjdGVyOiJcXGVhOWQifSksSHQuYXJyb3dTbWFsbExlZnQ9bmV3IEh0KCJhcnJvdy1zbWFsbC1sZWZ0Iix7Zm9udENoYXJhY3RlcjoiXFxlYTllIn0pLEh0LmFycm93U21hbGxSaWdodD1uZXcgSHQoImFycm93LXNtYWxsLXJpZ2h0Iix7Zm9udENoYXJhY3RlcjoiXFxlYTlmIn0pLEh0LmFycm93U21hbGxVcD1uZXcgSHQoImFycm93LXNtYWxsLXVwIix7Zm9udENoYXJhY3RlcjoiXFxlYWEwIn0pLEh0LmFycm93VXA9bmV3IEh0KCJhcnJvdy11cCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFhMSJ9KSxIdC5iZWxsPW5ldyBIdCgiYmVsbCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFhMiJ9KSxIdC5ib2xkPW5ldyBIdCgiYm9sZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFhMyJ9KSxIdC5ib29rPW5ldyBIdCgiYm9vayIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFhNCJ9KSxIdC5ib29rbWFyaz1uZXcgSHQoImJvb2ttYXJrIix7Zm9udENoYXJhY3RlcjoiXFxlYWE1In0pLEh0LmRlYnVnQnJlYWtwb2ludENvbmRpdGlvbmFsVW52ZXJpZmllZD1uZXcgSHQoImRlYnVnLWJyZWFrcG9pbnQtY29uZGl0aW9uYWwtdW52ZXJpZmllZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFhNiJ9KSxIdC5kZWJ1Z0JyZWFrcG9pbnRDb25kaXRpb25hbD1uZXcgSHQoImRlYnVnLWJyZWFrcG9pbnQtY29uZGl0aW9uYWwiLHtmb250Q2hhcmFjdGVyOiJcXGVhYTcifSksSHQuZGVidWdCcmVha3BvaW50Q29uZGl0aW9uYWxEaXNhYmxlZD1uZXcgSHQoImRlYnVnLWJyZWFrcG9pbnQtY29uZGl0aW9uYWwtZGlzYWJsZWQiLHtmb250Q2hhcmFjdGVyOiJcXGVhYTcifSksSHQuZGVidWdCcmVha3BvaW50RGF0YVVudmVyaWZpZWQ9bmV3IEh0KCJkZWJ1Zy1icmVha3BvaW50LWRhdGEtdW52ZXJpZmllZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFhOCJ9KSxIdC5kZWJ1Z0JyZWFrcG9pbnREYXRhPW5ldyBIdCgiZGVidWctYnJlYWtwb2ludC1kYXRhIix7Zm9udENoYXJhY3RlcjoiXFxlYWE5In0pLEh0LmRlYnVnQnJlYWtwb2ludERhdGFEaXNhYmxlZD1uZXcgSHQoImRlYnVnLWJyZWFrcG9pbnQtZGF0YS1kaXNhYmxlZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFhOSJ9KSxIdC5kZWJ1Z0JyZWFrcG9pbnRMb2dVbnZlcmlmaWVkPW5ldyBIdCgiZGVidWctYnJlYWtwb2ludC1sb2ctdW52ZXJpZmllZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFhYSJ9KSxIdC5kZWJ1Z0JyZWFrcG9pbnRMb2c9bmV3IEh0KCJkZWJ1Zy1icmVha3BvaW50LWxvZyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFhYiJ9KSxIdC5kZWJ1Z0JyZWFrcG9pbnRMb2dEaXNhYmxlZD1uZXcgSHQoImRlYnVnLWJyZWFrcG9pbnQtbG9nLWRpc2FibGVkIix7Zm9udENoYXJhY3RlcjoiXFxlYWFiIn0pLEh0LmJyaWVmY2FzZT1uZXcgSHQoImJyaWVmY2FzZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFhYyJ9KSxIdC5icm9hZGNhc3Q9bmV3IEh0KCJicm9hZGNhc3QiLHtmb250Q2hhcmFjdGVyOiJcXGVhYWQifSksSHQuYnJvd3Nlcj1uZXcgSHQoImJyb3dzZXIiLHtmb250Q2hhcmFjdGVyOiJcXGVhYWUifSksSHQuYnVnPW5ldyBIdCgiYnVnIix7Zm9udENoYXJhY3RlcjoiXFxlYWFmIn0pLEh0LmNhbGVuZGFyPW5ldyBIdCgiY2FsZW5kYXIiLHtmb250Q2hhcmFjdGVyOiJcXGVhYjAifSksSHQuY2FzZVNlbnNpdGl2ZT1uZXcgSHQoImNhc2Utc2Vuc2l0aXZlIix7Zm9udENoYXJhY3RlcjoiXFxlYWIxIn0pLEh0LmNoZWNrPW5ldyBIdCgiY2hlY2siLHtmb250Q2hhcmFjdGVyOiJcXGVhYjIifSksSHQuY2hlY2tsaXN0PW5ldyBIdCgiY2hlY2tsaXN0Iix7Zm9udENoYXJhY3RlcjoiXFxlYWIzIn0pLEh0LmNoZXZyb25Eb3duPW5ldyBIdCgiY2hldnJvbi1kb3duIix7Zm9udENoYXJhY3RlcjoiXFxlYWI0In0pLEh0LmRyb3BEb3duQnV0dG9uPW5ldyBIdCgiZHJvcC1kb3duLWJ1dHRvbiIsSHQuY2hldnJvbkRvd24uZGVmaW5pdGlvbiksSHQuY2hldnJvbkxlZnQ9bmV3IEh0KCJjaGV2cm9uLWxlZnQiLHtmb250Q2hhcmFjdGVyOiJcXGVhYjUifSksSHQuY2hldnJvblJpZ2h0PW5ldyBIdCgiY2hldnJvbi1yaWdodCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFiNiJ9KSxIdC5jaGV2cm9uVXA9bmV3IEh0KCJjaGV2cm9uLXVwIix7Zm9udENoYXJhY3RlcjoiXFxlYWI3In0pLEh0LmNocm9tZUNsb3NlPW5ldyBIdCgiY2hyb21lLWNsb3NlIix7Zm9udENoYXJhY3RlcjoiXFxlYWI4In0pLEh0LmNocm9tZU1heGltaXplPW5ldyBIdCgiY2hyb21lLW1heGltaXplIix7Zm9udENoYXJhY3RlcjoiXFxlYWI5In0pLEh0LmNocm9tZU1pbmltaXplPW5ldyBIdCgiY2hyb21lLW1pbmltaXplIix7Zm9udENoYXJhY3RlcjoiXFxlYWJhIn0pLEh0LmNocm9tZVJlc3RvcmU9bmV3IEh0KCJjaHJvbWUtcmVzdG9yZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFiYiJ9KSxIdC5jaXJjbGVPdXRsaW5lPW5ldyBIdCgiY2lyY2xlLW91dGxpbmUiLHtmb250Q2hhcmFjdGVyOiJcXGVhYmMifSksSHQuZGVidWdCcmVha3BvaW50VW52ZXJpZmllZD1uZXcgSHQoImRlYnVnLWJyZWFrcG9pbnQtdW52ZXJpZmllZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFiYyJ9KSxIdC5jaXJjbGVTbGFzaD1uZXcgSHQoImNpcmNsZS1zbGFzaCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFiZCJ9KSxIdC5jaXJjdWl0Qm9hcmQ9bmV3IEh0KCJjaXJjdWl0LWJvYXJkIix7Zm9udENoYXJhY3RlcjoiXFxlYWJlIn0pLEh0LmNsZWFyQWxsPW5ldyBIdCgiY2xlYXItYWxsIix7Zm9udENoYXJhY3RlcjoiXFxlYWJmIn0pLEh0LmNsaXBweT1uZXcgSHQoImNsaXBweSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFjMCJ9KSxIdC5jbG9zZUFsbD1uZXcgSHQoImNsb3NlLWFsbCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFjMSJ9KSxIdC5jbG91ZERvd25sb2FkPW5ldyBIdCgiY2xvdWQtZG93bmxvYWQiLHtmb250Q2hhcmFjdGVyOiJcXGVhYzIifSksSHQuY2xvdWRVcGxvYWQ9bmV3IEh0KCJjbG91ZC11cGxvYWQiLHtmb250Q2hhcmFjdGVyOiJcXGVhYzMifSksSHQuY29kZT1uZXcgSHQoImNvZGUiLHtmb250Q2hhcmFjdGVyOiJcXGVhYzQifSksSHQuY29sbGFwc2VBbGw9bmV3IEh0KCJjb2xsYXBzZS1hbGwiLHtmb250Q2hhcmFjdGVyOiJcXGVhYzUifSksSHQuY29sb3JNb2RlPW5ldyBIdCgiY29sb3ItbW9kZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFjNiJ9KSxIdC5jb21tZW50RGlzY3Vzc2lvbj1uZXcgSHQoImNvbW1lbnQtZGlzY3Vzc2lvbiIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFjNyJ9KSxIdC5jb21wYXJlQ2hhbmdlcz1uZXcgSHQoImNvbXBhcmUtY2hhbmdlcyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFmZCJ9KSxIdC5jcmVkaXRDYXJkPW5ldyBIdCgiY3JlZGl0LWNhcmQiLHtmb250Q2hhcmFjdGVyOiJcXGVhYzkifSksSHQuZGFzaD1uZXcgSHQoImRhc2giLHtmb250Q2hhcmFjdGVyOiJcXGVhY2MifSksSHQuZGFzaGJvYXJkPW5ldyBIdCgiZGFzaGJvYXJkIix7Zm9udENoYXJhY3RlcjoiXFxlYWNkIn0pLEh0LmRhdGFiYXNlPW5ldyBIdCgiZGF0YWJhc2UiLHtmb250Q2hhcmFjdGVyOiJcXGVhY2UifSksSHQuZGVidWdDb250aW51ZT1uZXcgSHQoImRlYnVnLWNvbnRpbnVlIix7Zm9udENoYXJhY3RlcjoiXFxlYWNmIn0pLEh0LmRlYnVnRGlzY29ubmVjdD1uZXcgSHQoImRlYnVnLWRpc2Nvbm5lY3QiLHtmb250Q2hhcmFjdGVyOiJcXGVhZDAifSksSHQuZGVidWdQYXVzZT1uZXcgSHQoImRlYnVnLXBhdXNlIix7Zm9udENoYXJhY3RlcjoiXFxlYWQxIn0pLEh0LmRlYnVnUmVzdGFydD1uZXcgSHQoImRlYnVnLXJlc3RhcnQiLHtmb250Q2hhcmFjdGVyOiJcXGVhZDIifSksSHQuZGVidWdTdGFydD1uZXcgSHQoImRlYnVnLXN0YXJ0Iix7Zm9udENoYXJhY3RlcjoiXFxlYWQzIn0pLEh0LmRlYnVnU3RlcEludG89bmV3IEh0KCJkZWJ1Zy1zdGVwLWludG8iLHtmb250Q2hhcmFjdGVyOiJcXGVhZDQifSksSHQuZGVidWdTdGVwT3V0PW5ldyBIdCgiZGVidWctc3RlcC1vdXQiLHtmb250Q2hhcmFjdGVyOiJcXGVhZDUifSksSHQuZGVidWdTdGVwT3Zlcj1uZXcgSHQoImRlYnVnLXN0ZXAtb3ZlciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFkNiJ9KSxIdC5kZWJ1Z1N0b3A9bmV3IEh0KCJkZWJ1Zy1zdG9wIix7Zm9udENoYXJhY3RlcjoiXFxlYWQ3In0pLEh0LmRlYnVnPW5ldyBIdCgiZGVidWciLHtmb250Q2hhcmFjdGVyOiJcXGVhZDgifSksSHQuZGV2aWNlQ2FtZXJhVmlkZW89bmV3IEh0KCJkZXZpY2UtY2FtZXJhLXZpZGVvIix7Zm9udENoYXJhY3RlcjoiXFxlYWQ5In0pLEh0LmRldmljZUNhbWVyYT1uZXcgSHQoImRldmljZS1jYW1lcmEiLHtmb250Q2hhcmFjdGVyOiJcXGVhZGEifSksSHQuZGV2aWNlTW9iaWxlPW5ldyBIdCgiZGV2aWNlLW1vYmlsZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFkYiJ9KSxIdC5kaWZmQWRkZWQ9bmV3IEh0KCJkaWZmLWFkZGVkIix7Zm9udENoYXJhY3RlcjoiXFxlYWRjIn0pLEh0LmRpZmZJZ25vcmVkPW5ldyBIdCgiZGlmZi1pZ25vcmVkIix7Zm9udENoYXJhY3RlcjoiXFxlYWRkIn0pLEh0LmRpZmZNb2RpZmllZD1uZXcgSHQoImRpZmYtbW9kaWZpZWQiLHtmb250Q2hhcmFjdGVyOiJcXGVhZGUifSksSHQuZGlmZlJlbW92ZWQ9bmV3IEh0KCJkaWZmLXJlbW92ZWQiLHtmb250Q2hhcmFjdGVyOiJcXGVhZGYifSksSHQuZGlmZlJlbmFtZWQ9bmV3IEh0KCJkaWZmLXJlbmFtZWQiLHtmb250Q2hhcmFjdGVyOiJcXGVhZTAifSksSHQuZGlmZj1uZXcgSHQoImRpZmYiLHtmb250Q2hhcmFjdGVyOiJcXGVhZTEifSksSHQuZGlzY2FyZD1uZXcgSHQoImRpc2NhcmQiLHtmb250Q2hhcmFjdGVyOiJcXGVhZTIifSksSHQuZWRpdG9yTGF5b3V0PW5ldyBIdCgiZWRpdG9yLWxheW91dCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFlMyJ9KSxIdC5lbXB0eVdpbmRvdz1uZXcgSHQoImVtcHR5LXdpbmRvdyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFlNCJ9KSxIdC5leGNsdWRlPW5ldyBIdCgiZXhjbHVkZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFlNSJ9KSxIdC5leHRlbnNpb25zPW5ldyBIdCgiZXh0ZW5zaW9ucyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFlNiJ9KSxIdC5leWVDbG9zZWQ9bmV3IEh0KCJleWUtY2xvc2VkIix7Zm9udENoYXJhY3RlcjoiXFxlYWU3In0pLEh0LmZpbGVCaW5hcnk9bmV3IEh0KCJmaWxlLWJpbmFyeSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFlOCJ9KSxIdC5maWxlQ29kZT1uZXcgSHQoImZpbGUtY29kZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFlOSJ9KSxIdC5maWxlTWVkaWE9bmV3IEh0KCJmaWxlLW1lZGlhIix7Zm9udENoYXJhY3RlcjoiXFxlYWVhIn0pLEh0LmZpbGVQZGY9bmV3IEh0KCJmaWxlLXBkZiIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFlYiJ9KSxIdC5maWxlU3VibW9kdWxlPW5ldyBIdCgiZmlsZS1zdWJtb2R1bGUiLHtmb250Q2hhcmFjdGVyOiJcXGVhZWMifSksSHQuZmlsZVN5bWxpbmtEaXJlY3Rvcnk9bmV3IEh0KCJmaWxlLXN5bWxpbmstZGlyZWN0b3J5Iix7Zm9udENoYXJhY3RlcjoiXFxlYWVkIn0pLEh0LmZpbGVTeW1saW5rRmlsZT1uZXcgSHQoImZpbGUtc3ltbGluay1maWxlIix7Zm9udENoYXJhY3RlcjoiXFxlYWVlIn0pLEh0LmZpbGVaaXA9bmV3IEh0KCJmaWxlLXppcCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFlZiJ9KSxIdC5maWxlcz1uZXcgSHQoImZpbGVzIix7Zm9udENoYXJhY3RlcjoiXFxlYWYwIn0pLEh0LmZpbHRlcj1uZXcgSHQoImZpbHRlciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFmMSJ9KSxIdC5mbGFtZT1uZXcgSHQoImZsYW1lIix7Zm9udENoYXJhY3RlcjoiXFxlYWYyIn0pLEh0LmZvbGREb3duPW5ldyBIdCgiZm9sZC1kb3duIix7Zm9udENoYXJhY3RlcjoiXFxlYWYzIn0pLEh0LmZvbGRVcD1uZXcgSHQoImZvbGQtdXAiLHtmb250Q2hhcmFjdGVyOiJcXGVhZjQifSksSHQuZm9sZD1uZXcgSHQoImZvbGQiLHtmb250Q2hhcmFjdGVyOiJcXGVhZjUifSksSHQuZm9sZGVyQWN0aXZlPW5ldyBIdCgiZm9sZGVyLWFjdGl2ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFmNiJ9KSxIdC5mb2xkZXJPcGVuZWQ9bmV3IEh0KCJmb2xkZXItb3BlbmVkIix7Zm9udENoYXJhY3RlcjoiXFxlYWY3In0pLEh0LmdlYXI9bmV3IEh0KCJnZWFyIix7Zm9udENoYXJhY3RlcjoiXFxlYWY4In0pLEh0LmdpZnQ9bmV3IEh0KCJnaWZ0Iix7Zm9udENoYXJhY3RlcjoiXFxlYWY5In0pLEh0Lmdpc3RTZWNyZXQ9bmV3IEh0KCJnaXN0LXNlY3JldCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFmYSJ9KSxIdC5naXN0PW5ldyBIdCgiZ2lzdCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFmYiJ9KSxIdC5naXRDb21taXQ9bmV3IEh0KCJnaXQtY29tbWl0Iix7Zm9udENoYXJhY3RlcjoiXFxlYWZjIn0pLEh0LmdpdENvbXBhcmU9bmV3IEh0KCJnaXQtY29tcGFyZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFmZCJ9KSxIdC5naXRNZXJnZT1uZXcgSHQoImdpdC1tZXJnZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFmZSJ9KSxIdC5naXRodWJBY3Rpb249bmV3IEh0KCJnaXRodWItYWN0aW9uIix7Zm9udENoYXJhY3RlcjoiXFxlYWZmIn0pLEh0LmdpdGh1YkFsdD1uZXcgSHQoImdpdGh1Yi1hbHQiLHtmb250Q2hhcmFjdGVyOiJcXGViMDAifSksSHQuZ2xvYmU9bmV3IEh0KCJnbG9iZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIwMSJ9KSxIdC5ncmFiYmVyPW5ldyBIdCgiZ3JhYmJlciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIwMiJ9KSxIdC5ncmFwaD1uZXcgSHQoImdyYXBoIix7Zm9udENoYXJhY3RlcjoiXFxlYjAzIn0pLEh0LmdyaXBwZXI9bmV3IEh0KCJncmlwcGVyIix7Zm9udENoYXJhY3RlcjoiXFxlYjA0In0pLEh0LmhlYXJ0PW5ldyBIdCgiaGVhcnQiLHtmb250Q2hhcmFjdGVyOiJcXGViMDUifSksSHQuaG9tZT1uZXcgSHQoImhvbWUiLHtmb250Q2hhcmFjdGVyOiJcXGViMDYifSksSHQuaG9yaXpvbnRhbFJ1bGU9bmV3IEh0KCJob3Jpem9udGFsLXJ1bGUiLHtmb250Q2hhcmFjdGVyOiJcXGViMDcifSksSHQuaHVib3Q9bmV3IEh0KCJodWJvdCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIwOCJ9KSxIdC5pbmJveD1uZXcgSHQoImluYm94Iix7Zm9udENoYXJhY3RlcjoiXFxlYjA5In0pLEh0Lmlzc3VlQ2xvc2VkPW5ldyBIdCgiaXNzdWUtY2xvc2VkIix7Zm9udENoYXJhY3RlcjoiXFxlYmE0In0pLEh0Lmlzc3VlUmVvcGVuZWQ9bmV3IEh0KCJpc3N1ZS1yZW9wZW5lZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIwYiJ9KSxIdC5pc3N1ZXM9bmV3IEh0KCJpc3N1ZXMiLHtmb250Q2hhcmFjdGVyOiJcXGViMGMifSksSHQuaXRhbGljPW5ldyBIdCgiaXRhbGljIix7Zm9udENoYXJhY3RlcjoiXFxlYjBkIn0pLEh0LmplcnNleT1uZXcgSHQoImplcnNleSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIwZSJ9KSxIdC5qc29uPW5ldyBIdCgianNvbiIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIwZiJ9KSxIdC5rZWJhYlZlcnRpY2FsPW5ldyBIdCgia2ViYWItdmVydGljYWwiLHtmb250Q2hhcmFjdGVyOiJcXGViMTAifSksSHQua2V5PW5ldyBIdCgia2V5Iix7Zm9udENoYXJhY3RlcjoiXFxlYjExIn0pLEh0Lmxhdz1uZXcgSHQoImxhdyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIxMiJ9KSxIdC5saWdodGJ1bGJBdXRvZml4PW5ldyBIdCgibGlnaHRidWxiLWF1dG9maXgiLHtmb250Q2hhcmFjdGVyOiJcXGViMTMifSksSHQubGlua0V4dGVybmFsPW5ldyBIdCgibGluay1leHRlcm5hbCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIxNCJ9KSxIdC5saW5rPW5ldyBIdCgibGluayIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIxNSJ9KSxIdC5saXN0T3JkZXJlZD1uZXcgSHQoImxpc3Qtb3JkZXJlZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIxNiJ9KSxIdC5saXN0VW5vcmRlcmVkPW5ldyBIdCgibGlzdC11bm9yZGVyZWQiLHtmb250Q2hhcmFjdGVyOiJcXGViMTcifSksSHQubGl2ZVNoYXJlPW5ldyBIdCgibGl2ZS1zaGFyZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIxOCJ9KSxIdC5sb2FkaW5nPW5ldyBIdCgibG9hZGluZyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIxOSJ9KSxIdC5sb2NhdGlvbj1uZXcgSHQoImxvY2F0aW9uIix7Zm9udENoYXJhY3RlcjoiXFxlYjFhIn0pLEh0Lm1haWxSZWFkPW5ldyBIdCgibWFpbC1yZWFkIix7Zm9udENoYXJhY3RlcjoiXFxlYjFiIn0pLEh0Lm1haWw9bmV3IEh0KCJtYWlsIix7Zm9udENoYXJhY3RlcjoiXFxlYjFjIn0pLEh0Lm1hcmtkb3duPW5ldyBIdCgibWFya2Rvd24iLHtmb250Q2hhcmFjdGVyOiJcXGViMWQifSksSHQubWVnYXBob25lPW5ldyBIdCgibWVnYXBob25lIix7Zm9udENoYXJhY3RlcjoiXFxlYjFlIn0pLEh0Lm1lbnRpb249bmV3IEh0KCJtZW50aW9uIix7Zm9udENoYXJhY3RlcjoiXFxlYjFmIn0pLEh0Lm1pbGVzdG9uZT1uZXcgSHQoIm1pbGVzdG9uZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIyMCJ9KSxIdC5tb3J0YXJCb2FyZD1uZXcgSHQoIm1vcnRhci1ib2FyZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIyMSJ9KSxIdC5tb3ZlPW5ldyBIdCgibW92ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIyMiJ9KSxIdC5tdWx0aXBsZVdpbmRvd3M9bmV3IEh0KCJtdWx0aXBsZS13aW5kb3dzIix7Zm9udENoYXJhY3RlcjoiXFxlYjIzIn0pLEh0Lm11dGU9bmV3IEh0KCJtdXRlIix7Zm9udENoYXJhY3RlcjoiXFxlYjI0In0pLEh0Lm5vTmV3bGluZT1uZXcgSHQoIm5vLW5ld2xpbmUiLHtmb250Q2hhcmFjdGVyOiJcXGViMjUifSksSHQubm90ZT1uZXcgSHQoIm5vdGUiLHtmb250Q2hhcmFjdGVyOiJcXGViMjYifSksSHQub2N0b2ZhY2U9bmV3IEh0KCJvY3RvZmFjZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIyNyJ9KSxIdC5vcGVuUHJldmlldz1uZXcgSHQoIm9wZW4tcHJldmlldyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIyOCJ9KSxIdC5wYWNrYWdlXz1uZXcgSHQoInBhY2thZ2UiLHtmb250Q2hhcmFjdGVyOiJcXGViMjkifSksSHQucGFpbnRjYW49bmV3IEh0KCJwYWludGNhbiIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIyYSJ9KSxIdC5waW49bmV3IEh0KCJwaW4iLHtmb250Q2hhcmFjdGVyOiJcXGViMmIifSksSHQucGxheT1uZXcgSHQoInBsYXkiLHtmb250Q2hhcmFjdGVyOiJcXGViMmMifSksSHQucnVuPW5ldyBIdCgicnVuIix7Zm9udENoYXJhY3RlcjoiXFxlYjJjIn0pLEh0LnBsdWc9bmV3IEh0KCJwbHVnIix7Zm9udENoYXJhY3RlcjoiXFxlYjJkIn0pLEh0LnByZXNlcnZlQ2FzZT1uZXcgSHQoInByZXNlcnZlLWNhc2UiLHtmb250Q2hhcmFjdGVyOiJcXGViMmUifSksSHQucHJldmlldz1uZXcgSHQoInByZXZpZXciLHtmb250Q2hhcmFjdGVyOiJcXGViMmYifSksSHQucHJvamVjdD1uZXcgSHQoInByb2plY3QiLHtmb250Q2hhcmFjdGVyOiJcXGViMzAifSksSHQucHVsc2U9bmV3IEh0KCJwdWxzZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIzMSJ9KSxIdC5xdWVzdGlvbj1uZXcgSHQoInF1ZXN0aW9uIix7Zm9udENoYXJhY3RlcjoiXFxlYjMyIn0pLEh0LnF1b3RlPW5ldyBIdCgicXVvdGUiLHtmb250Q2hhcmFjdGVyOiJcXGViMzMifSksSHQucmFkaW9Ub3dlcj1uZXcgSHQoInJhZGlvLXRvd2VyIix7Zm9udENoYXJhY3RlcjoiXFxlYjM0In0pLEh0LnJlYWN0aW9ucz1uZXcgSHQoInJlYWN0aW9ucyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIzNSJ9KSxIdC5yZWZlcmVuY2VzPW5ldyBIdCgicmVmZXJlbmNlcyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIzNiJ9KSxIdC5yZWZyZXNoPW5ldyBIdCgicmVmcmVzaCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIzNyJ9KSxIdC5yZWdleD1uZXcgSHQoInJlZ2V4Iix7Zm9udENoYXJhY3RlcjoiXFxlYjM4In0pLEh0LnJlbW90ZUV4cGxvcmVyPW5ldyBIdCgicmVtb3RlLWV4cGxvcmVyIix7Zm9udENoYXJhY3RlcjoiXFxlYjM5In0pLEh0LnJlbW90ZT1uZXcgSHQoInJlbW90ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIzYSJ9KSxIdC5yZW1vdmU9bmV3IEh0KCJyZW1vdmUiLHtmb250Q2hhcmFjdGVyOiJcXGViM2IifSksSHQucmVwbGFjZUFsbD1uZXcgSHQoInJlcGxhY2UtYWxsIix7Zm9udENoYXJhY3RlcjoiXFxlYjNjIn0pLEh0LnJlcGxhY2U9bmV3IEh0KCJyZXBsYWNlIix7Zm9udENoYXJhY3RlcjoiXFxlYjNkIn0pLEh0LnJlcG9DbG9uZT1uZXcgSHQoInJlcG8tY2xvbmUiLHtmb250Q2hhcmFjdGVyOiJcXGViM2UifSksSHQucmVwb0ZvcmNlUHVzaD1uZXcgSHQoInJlcG8tZm9yY2UtcHVzaCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIzZiJ9KSxIdC5yZXBvUHVsbD1uZXcgSHQoInJlcG8tcHVsbCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI0MCJ9KSxIdC5yZXBvUHVzaD1uZXcgSHQoInJlcG8tcHVzaCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI0MSJ9KSxIdC5yZXBvcnQ9bmV3IEh0KCJyZXBvcnQiLHtmb250Q2hhcmFjdGVyOiJcXGViNDIifSksSHQucmVxdWVzdENoYW5nZXM9bmV3IEh0KCJyZXF1ZXN0LWNoYW5nZXMiLHtmb250Q2hhcmFjdGVyOiJcXGViNDMifSksSHQucm9ja2V0PW5ldyBIdCgicm9ja2V0Iix7Zm9udENoYXJhY3RlcjoiXFxlYjQ0In0pLEh0LnJvb3RGb2xkZXJPcGVuZWQ9bmV3IEh0KCJyb290LWZvbGRlci1vcGVuZWQiLHtmb250Q2hhcmFjdGVyOiJcXGViNDUifSksSHQucm9vdEZvbGRlcj1uZXcgSHQoInJvb3QtZm9sZGVyIix7Zm9udENoYXJhY3RlcjoiXFxlYjQ2In0pLEh0LnJzcz1uZXcgSHQoInJzcyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI0NyJ9KSxIdC5ydWJ5PW5ldyBIdCgicnVieSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI0OCJ9KSxIdC5zYXZlQWxsPW5ldyBIdCgic2F2ZS1hbGwiLHtmb250Q2hhcmFjdGVyOiJcXGViNDkifSksSHQuc2F2ZUFzPW5ldyBIdCgic2F2ZS1hcyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI0YSJ9KSxIdC5zYXZlPW5ldyBIdCgic2F2ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI0YiJ9KSxIdC5zY3JlZW5GdWxsPW5ldyBIdCgic2NyZWVuLWZ1bGwiLHtmb250Q2hhcmFjdGVyOiJcXGViNGMifSksSHQuc2NyZWVuTm9ybWFsPW5ldyBIdCgic2NyZWVuLW5vcm1hbCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI0ZCJ9KSxIdC5zZWFyY2hTdG9wPW5ldyBIdCgic2VhcmNoLXN0b3AiLHtmb250Q2hhcmFjdGVyOiJcXGViNGUifSksSHQuc2VydmVyPW5ldyBIdCgic2VydmVyIix7Zm9udENoYXJhY3RlcjoiXFxlYjUwIn0pLEh0LnNldHRpbmdzR2Vhcj1uZXcgSHQoInNldHRpbmdzLWdlYXIiLHtmb250Q2hhcmFjdGVyOiJcXGViNTEifSksSHQuc2V0dGluZ3M9bmV3IEh0KCJzZXR0aW5ncyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI1MiJ9KSxIdC5zaGllbGQ9bmV3IEh0KCJzaGllbGQiLHtmb250Q2hhcmFjdGVyOiJcXGViNTMifSksSHQuc21pbGV5PW5ldyBIdCgic21pbGV5Iix7Zm9udENoYXJhY3RlcjoiXFxlYjU0In0pLEh0LnNvcnRQcmVjZWRlbmNlPW5ldyBIdCgic29ydC1wcmVjZWRlbmNlIix7Zm9udENoYXJhY3RlcjoiXFxlYjU1In0pLEh0LnNwbGl0SG9yaXpvbnRhbD1uZXcgSHQoInNwbGl0LWhvcml6b250YWwiLHtmb250Q2hhcmFjdGVyOiJcXGViNTYifSksSHQuc3BsaXRWZXJ0aWNhbD1uZXcgSHQoInNwbGl0LXZlcnRpY2FsIix7Zm9udENoYXJhY3RlcjoiXFxlYjU3In0pLEh0LnNxdWlycmVsPW5ldyBIdCgic3F1aXJyZWwiLHtmb250Q2hhcmFjdGVyOiJcXGViNTgifSksSHQuc3RhckZ1bGw9bmV3IEh0KCJzdGFyLWZ1bGwiLHtmb250Q2hhcmFjdGVyOiJcXGViNTkifSksSHQuc3RhckhhbGY9bmV3IEh0KCJzdGFyLWhhbGYiLHtmb250Q2hhcmFjdGVyOiJcXGViNWEifSksSHQuc3ltYm9sQ2xhc3M9bmV3IEh0KCJzeW1ib2wtY2xhc3MiLHtmb250Q2hhcmFjdGVyOiJcXGViNWIifSksSHQuc3ltYm9sQ29sb3I9bmV3IEh0KCJzeW1ib2wtY29sb3IiLHtmb250Q2hhcmFjdGVyOiJcXGViNWMifSksSHQuc3ltYm9sQ3VzdG9tQ29sb3I9bmV3IEh0KCJzeW1ib2wtY3VzdG9tY29sb3IiLHtmb250Q2hhcmFjdGVyOiJcXGViNWMifSksSHQuc3ltYm9sQ29uc3RhbnQ9bmV3IEh0KCJzeW1ib2wtY29uc3RhbnQiLHtmb250Q2hhcmFjdGVyOiJcXGViNWQifSksSHQuc3ltYm9sRW51bU1lbWJlcj1uZXcgSHQoInN5bWJvbC1lbnVtLW1lbWJlciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI1ZSJ9KSxIdC5zeW1ib2xGaWVsZD1uZXcgSHQoInN5bWJvbC1maWVsZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI1ZiJ9KSxIdC5zeW1ib2xGaWxlPW5ldyBIdCgic3ltYm9sLWZpbGUiLHtmb250Q2hhcmFjdGVyOiJcXGViNjAifSksSHQuc3ltYm9sSW50ZXJmYWNlPW5ldyBIdCgic3ltYm9sLWludGVyZmFjZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI2MSJ9KSxIdC5zeW1ib2xLZXl3b3JkPW5ldyBIdCgic3ltYm9sLWtleXdvcmQiLHtmb250Q2hhcmFjdGVyOiJcXGViNjIifSksSHQuc3ltYm9sTWlzYz1uZXcgSHQoInN5bWJvbC1taXNjIix7Zm9udENoYXJhY3RlcjoiXFxlYjYzIn0pLEh0LnN5bWJvbE9wZXJhdG9yPW5ldyBIdCgic3ltYm9sLW9wZXJhdG9yIix7Zm9udENoYXJhY3RlcjoiXFxlYjY0In0pLEh0LnN5bWJvbFByb3BlcnR5PW5ldyBIdCgic3ltYm9sLXByb3BlcnR5Iix7Zm9udENoYXJhY3RlcjoiXFxlYjY1In0pLEh0LndyZW5jaD1uZXcgSHQoIndyZW5jaCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI2NSJ9KSxIdC53cmVuY2hTdWJhY3Rpb249bmV3IEh0KCJ3cmVuY2gtc3ViYWN0aW9uIix7Zm9udENoYXJhY3RlcjoiXFxlYjY1In0pLEh0LnN5bWJvbFNuaXBwZXQ9bmV3IEh0KCJzeW1ib2wtc25pcHBldCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI2NiJ9KSxIdC50YXNrbGlzdD1uZXcgSHQoInRhc2tsaXN0Iix7Zm9udENoYXJhY3RlcjoiXFxlYjY3In0pLEh0LnRlbGVzY29wZT1uZXcgSHQoInRlbGVzY29wZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI2OCJ9KSxIdC50ZXh0U2l6ZT1uZXcgSHQoInRleHQtc2l6ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI2OSJ9KSxIdC50aHJlZUJhcnM9bmV3IEh0KCJ0aHJlZS1iYXJzIix7Zm9udENoYXJhY3RlcjoiXFxlYjZhIn0pLEh0LnRodW1ic2Rvd249bmV3IEh0KCJ0aHVtYnNkb3duIix7Zm9udENoYXJhY3RlcjoiXFxlYjZiIn0pLEh0LnRodW1ic3VwPW5ldyBIdCgidGh1bWJzdXAiLHtmb250Q2hhcmFjdGVyOiJcXGViNmMifSksSHQudG9vbHM9bmV3IEh0KCJ0b29scyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI2ZCJ9KSxIdC50cmlhbmdsZURvd249bmV3IEh0KCJ0cmlhbmdsZS1kb3duIix7Zm9udENoYXJhY3RlcjoiXFxlYjZlIn0pLEh0LnRyaWFuZ2xlTGVmdD1uZXcgSHQoInRyaWFuZ2xlLWxlZnQiLHtmb250Q2hhcmFjdGVyOiJcXGViNmYifSksSHQudHJpYW5nbGVSaWdodD1uZXcgSHQoInRyaWFuZ2xlLXJpZ2h0Iix7Zm9udENoYXJhY3RlcjoiXFxlYjcwIn0pLEh0LnRyaWFuZ2xlVXA9bmV3IEh0KCJ0cmlhbmdsZS11cCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI3MSJ9KSxIdC50d2l0dGVyPW5ldyBIdCgidHdpdHRlciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI3MiJ9KSxIdC51bmZvbGQ9bmV3IEh0KCJ1bmZvbGQiLHtmb250Q2hhcmFjdGVyOiJcXGViNzMifSksSHQudW5sb2NrPW5ldyBIdCgidW5sb2NrIix7Zm9udENoYXJhY3RlcjoiXFxlYjc0In0pLEh0LnVubXV0ZT1uZXcgSHQoInVubXV0ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI3NSJ9KSxIdC51bnZlcmlmaWVkPW5ldyBIdCgidW52ZXJpZmllZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI3NiJ9KSxIdC52ZXJpZmllZD1uZXcgSHQoInZlcmlmaWVkIix7Zm9udENoYXJhY3RlcjoiXFxlYjc3In0pLEh0LnZlcnNpb25zPW5ldyBIdCgidmVyc2lvbnMiLHtmb250Q2hhcmFjdGVyOiJcXGViNzgifSksSHQudm1BY3RpdmU9bmV3IEh0KCJ2bS1hY3RpdmUiLHtmb250Q2hhcmFjdGVyOiJcXGViNzkifSksSHQudm1PdXRsaW5lPW5ldyBIdCgidm0tb3V0bGluZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI3YSJ9KSxIdC52bVJ1bm5pbmc9bmV3IEh0KCJ2bS1ydW5uaW5nIix7Zm9udENoYXJhY3RlcjoiXFxlYjdiIn0pLEh0LndhdGNoPW5ldyBIdCgid2F0Y2giLHtmb250Q2hhcmFjdGVyOiJcXGViN2MifSksSHQud2hpdGVzcGFjZT1uZXcgSHQoIndoaXRlc3BhY2UiLHtmb250Q2hhcmFjdGVyOiJcXGViN2QifSksSHQud2hvbGVXb3JkPW5ldyBIdCgid2hvbGUtd29yZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI3ZSJ9KSxIdC53aW5kb3c9bmV3IEh0KCJ3aW5kb3ciLHtmb250Q2hhcmFjdGVyOiJcXGViN2YifSksSHQud29yZFdyYXA9bmV3IEh0KCJ3b3JkLXdyYXAiLHtmb250Q2hhcmFjdGVyOiJcXGViODAifSksSHQuem9vbUluPW5ldyBIdCgiem9vbS1pbiIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI4MSJ9KSxIdC56b29tT3V0PW5ldyBIdCgiem9vbS1vdXQiLHtmb250Q2hhcmFjdGVyOiJcXGViODIifSksSHQubGlzdEZpbHRlcj1uZXcgSHQoImxpc3QtZmlsdGVyIix7Zm9udENoYXJhY3RlcjoiXFxlYjgzIn0pLEh0Lmxpc3RGbGF0PW5ldyBIdCgibGlzdC1mbGF0Iix7Zm9udENoYXJhY3RlcjoiXFxlYjg0In0pLEh0Lmxpc3RTZWxlY3Rpb249bmV3IEh0KCJsaXN0LXNlbGVjdGlvbiIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI4NSJ9KSxIdC5zZWxlY3Rpb249bmV3IEh0KCJzZWxlY3Rpb24iLHtmb250Q2hhcmFjdGVyOiJcXGViODUifSksSHQubGlzdFRyZWU9bmV3IEh0KCJsaXN0LXRyZWUiLHtmb250Q2hhcmFjdGVyOiJcXGViODYifSksSHQuZGVidWdCcmVha3BvaW50RnVuY3Rpb25VbnZlcmlmaWVkPW5ldyBIdCgiZGVidWctYnJlYWtwb2ludC1mdW5jdGlvbi11bnZlcmlmaWVkIix7Zm9udENoYXJhY3RlcjoiXFxlYjg3In0pLEh0LmRlYnVnQnJlYWtwb2ludEZ1bmN0aW9uPW5ldyBIdCgiZGVidWctYnJlYWtwb2ludC1mdW5jdGlvbiIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI4OCJ9KSxIdC5kZWJ1Z0JyZWFrcG9pbnRGdW5jdGlvbkRpc2FibGVkPW5ldyBIdCgiZGVidWctYnJlYWtwb2ludC1mdW5jdGlvbi1kaXNhYmxlZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI4OCJ9KSxIdC5kZWJ1Z1N0YWNrZnJhbWVBY3RpdmU9bmV3IEh0KCJkZWJ1Zy1zdGFja2ZyYW1lLWFjdGl2ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI4OSJ9KSxIdC5jaXJjbGVTbWFsbEZpbGxlZD1uZXcgSHQoImNpcmNsZS1zbWFsbC1maWxsZWQiLHtmb250Q2hhcmFjdGVyOiJcXGViOGEifSksSHQuZGVidWdTdGFja2ZyYW1lRG90PW5ldyBIdCgiZGVidWctc3RhY2tmcmFtZS1kb3QiLEh0LmNpcmNsZVNtYWxsRmlsbGVkLmRlZmluaXRpb24pLEh0LmRlYnVnU3RhY2tmcmFtZT1uZXcgSHQoImRlYnVnLXN0YWNrZnJhbWUiLHtmb250Q2hhcmFjdGVyOiJcXGViOGIifSksSHQuZGVidWdTdGFja2ZyYW1lRm9jdXNlZD1uZXcgSHQoImRlYnVnLXN0YWNrZnJhbWUtZm9jdXNlZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI4YiJ9KSxIdC5kZWJ1Z0JyZWFrcG9pbnRVbnN1cHBvcnRlZD1uZXcgSHQoImRlYnVnLWJyZWFrcG9pbnQtdW5zdXBwb3J0ZWQiLHtmb250Q2hhcmFjdGVyOiJcXGViOGMifSksSHQuc3ltYm9sU3RyaW5nPW5ldyBIdCgic3ltYm9sLXN0cmluZyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI4ZCJ9KSxIdC5kZWJ1Z1JldmVyc2VDb250aW51ZT1uZXcgSHQoImRlYnVnLXJldmVyc2UtY29udGludWUiLHtmb250Q2hhcmFjdGVyOiJcXGViOGUifSksSHQuZGVidWdTdGVwQmFjaz1uZXcgSHQoImRlYnVnLXN0ZXAtYmFjayIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI4ZiJ9KSxIdC5kZWJ1Z1Jlc3RhcnRGcmFtZT1uZXcgSHQoImRlYnVnLXJlc3RhcnQtZnJhbWUiLHtmb250Q2hhcmFjdGVyOiJcXGViOTAifSksSHQuY2FsbEluY29taW5nPW5ldyBIdCgiY2FsbC1pbmNvbWluZyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI5MiJ9KSxIdC5jYWxsT3V0Z29pbmc9bmV3IEh0KCJjYWxsLW91dGdvaW5nIix7Zm9udENoYXJhY3RlcjoiXFxlYjkzIn0pLEh0Lm1lbnU9bmV3IEh0KCJtZW51Iix7Zm9udENoYXJhY3RlcjoiXFxlYjk0In0pLEh0LmV4cGFuZEFsbD1uZXcgSHQoImV4cGFuZC1hbGwiLHtmb250Q2hhcmFjdGVyOiJcXGViOTUifSksSHQuZmVlZGJhY2s9bmV3IEh0KCJmZWVkYmFjayIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI5NiJ9KSxIdC5ncm91cEJ5UmVmVHlwZT1uZXcgSHQoImdyb3VwLWJ5LXJlZi10eXBlIix7Zm9udENoYXJhY3RlcjoiXFxlYjk3In0pLEh0LnVuZ3JvdXBCeVJlZlR5cGU9bmV3IEh0KCJ1bmdyb3VwLWJ5LXJlZi10eXBlIix7Zm9udENoYXJhY3RlcjoiXFxlYjk4In0pLEh0LmFjY291bnQ9bmV3IEh0KCJhY2NvdW50Iix7Zm9udENoYXJhY3RlcjoiXFxlYjk5In0pLEh0LmJlbGxEb3Q9bmV3IEh0KCJiZWxsLWRvdCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI5YSJ9KSxIdC5kZWJ1Z0NvbnNvbGU9bmV3IEh0KCJkZWJ1Zy1jb25zb2xlIix7Zm9udENoYXJhY3RlcjoiXFxlYjliIn0pLEh0LmxpYnJhcnk9bmV3IEh0KCJsaWJyYXJ5Iix7Zm9udENoYXJhY3RlcjoiXFxlYjljIn0pLEh0Lm91dHB1dD1uZXcgSHQoIm91dHB1dCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI5ZCJ9KSxIdC5ydW5BbGw9bmV3IEh0KCJydW4tYWxsIix7Zm9udENoYXJhY3RlcjoiXFxlYjllIn0pLEh0LnN5bmNJZ25vcmVkPW5ldyBIdCgic3luYy1pZ25vcmVkIix7Zm9udENoYXJhY3RlcjoiXFxlYjlmIn0pLEh0LnBpbm5lZD1uZXcgSHQoInBpbm5lZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJhMCJ9KSxIdC5naXRodWJJbnZlcnRlZD1uZXcgSHQoImdpdGh1Yi1pbnZlcnRlZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJhMSJ9KSxIdC5kZWJ1Z0FsdD1uZXcgSHQoImRlYnVnLWFsdCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI5MSJ9KSxIdC5zZXJ2ZXJQcm9jZXNzPW5ldyBIdCgic2VydmVyLXByb2Nlc3MiLHtmb250Q2hhcmFjdGVyOiJcXGViYTIifSksSHQuc2VydmVyRW52aXJvbm1lbnQ9bmV3IEh0KCJzZXJ2ZXItZW52aXJvbm1lbnQiLHtmb250Q2hhcmFjdGVyOiJcXGViYTMifSksSHQucGFzcz1uZXcgSHQoInBhc3MiLHtmb250Q2hhcmFjdGVyOiJcXGViYTQifSksSHQuc3RvcENpcmNsZT1uZXcgSHQoInN0b3AtY2lyY2xlIix7Zm9udENoYXJhY3RlcjoiXFxlYmE1In0pLEh0LnBsYXlDaXJjbGU9bmV3IEh0KCJwbGF5LWNpcmNsZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJhNiJ9KSxIdC5yZWNvcmQ9bmV3IEh0KCJyZWNvcmQiLHtmb250Q2hhcmFjdGVyOiJcXGViYTcifSksSHQuZGVidWdBbHRTbWFsbD1uZXcgSHQoImRlYnVnLWFsdC1zbWFsbCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJhOCJ9KSxIdC52bUNvbm5lY3Q9bmV3IEh0KCJ2bS1jb25uZWN0Iix7Zm9udENoYXJhY3RlcjoiXFxlYmE5In0pLEh0LmNsb3VkPW5ldyBIdCgiY2xvdWQiLHtmb250Q2hhcmFjdGVyOiJcXGViYWEifSksSHQubWVyZ2U9bmV3IEh0KCJtZXJnZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJhYiJ9KSxIdC5leHBvcnRJY29uPW5ldyBIdCgiZXhwb3J0Iix7Zm9udENoYXJhY3RlcjoiXFxlYmFjIn0pLEh0LmdyYXBoTGVmdD1uZXcgSHQoImdyYXBoLWxlZnQiLHtmb250Q2hhcmFjdGVyOiJcXGViYWQifSksSHQubWFnbmV0PW5ldyBIdCgibWFnbmV0Iix7Zm9udENoYXJhY3RlcjoiXFxlYmFlIn0pLEh0Lm5vdGVib29rPW5ldyBIdCgibm90ZWJvb2siLHtmb250Q2hhcmFjdGVyOiJcXGViYWYifSksSHQucmVkbz1uZXcgSHQoInJlZG8iLHtmb250Q2hhcmFjdGVyOiJcXGViYjAifSksSHQuY2hlY2tBbGw9bmV3IEh0KCJjaGVjay1hbGwiLHtmb250Q2hhcmFjdGVyOiJcXGViYjEifSksSHQucGlubmVkRGlydHk9bmV3IEh0KCJwaW5uZWQtZGlydHkiLHtmb250Q2hhcmFjdGVyOiJcXGViYjIifSksSHQucGFzc0ZpbGxlZD1uZXcgSHQoInBhc3MtZmlsbGVkIix7Zm9udENoYXJhY3RlcjoiXFxlYmIzIn0pLEh0LmNpcmNsZUxhcmdlRmlsbGVkPW5ldyBIdCgiY2lyY2xlLWxhcmdlLWZpbGxlZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJiNCJ9KSxIdC5jaXJjbGVMYXJnZU91dGxpbmU9bmV3IEh0KCJjaXJjbGUtbGFyZ2Utb3V0bGluZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJiNSJ9KSxIdC5jb21iaW5lPW5ldyBIdCgiY29tYmluZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJiNiJ9KSxIdC5nYXRoZXI9bmV3IEh0KCJnYXRoZXIiLHtmb250Q2hhcmFjdGVyOiJcXGViYjYifSksSHQudGFibGU9bmV3IEh0KCJ0YWJsZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJiNyJ9KSxIdC52YXJpYWJsZUdyb3VwPW5ldyBIdCgidmFyaWFibGUtZ3JvdXAiLHtmb250Q2hhcmFjdGVyOiJcXGViYjgifSksSHQudHlwZUhpZXJhcmNoeT1uZXcgSHQoInR5cGUtaGllcmFyY2h5Iix7Zm9udENoYXJhY3RlcjoiXFxlYmI5In0pLEh0LnR5cGVIaWVyYXJjaHlTdWI9bmV3IEh0KCJ0eXBlLWhpZXJhcmNoeS1zdWIiLHtmb250Q2hhcmFjdGVyOiJcXGViYmEifSksSHQudHlwZUhpZXJhcmNoeVN1cGVyPW5ldyBIdCgidHlwZS1oaWVyYXJjaHktc3VwZXIiLHtmb250Q2hhcmFjdGVyOiJcXGViYmIifSksSHQuZ2l0UHVsbFJlcXVlc3RDcmVhdGU9bmV3IEh0KCJnaXQtcHVsbC1yZXF1ZXN0LWNyZWF0ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJiYyJ9KSxIdC5ydW5BYm92ZT1uZXcgSHQoInJ1bi1hYm92ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJiZCJ9KSxIdC5ydW5CZWxvdz1uZXcgSHQoInJ1bi1iZWxvdyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJiZSJ9KSxIdC5ub3RlYm9va1RlbXBsYXRlPW5ldyBIdCgibm90ZWJvb2stdGVtcGxhdGUiLHtmb250Q2hhcmFjdGVyOiJcXGViYmYifSksSHQuZGVidWdSZXJ1bj1uZXcgSHQoImRlYnVnLXJlcnVuIix7Zm9udENoYXJhY3RlcjoiXFxlYmMwIn0pLEh0LndvcmtzcGFjZVRydXN0ZWQ9bmV3IEh0KCJ3b3Jrc3BhY2UtdHJ1c3RlZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJjMSJ9KSxIdC53b3Jrc3BhY2VVbnRydXN0ZWQ9bmV3IEh0KCJ3b3Jrc3BhY2UtdW50cnVzdGVkIix7Zm9udENoYXJhY3RlcjoiXFxlYmMyIn0pLEh0LndvcmtzcGFjZVVuc3BlY2lmaWVkPW5ldyBIdCgid29ya3NwYWNlLXVuc3BlY2lmaWVkIix7Zm9udENoYXJhY3RlcjoiXFxlYmMzIn0pLEh0LnRlcm1pbmFsQ21kPW5ldyBIdCgidGVybWluYWwtY21kIix7Zm9udENoYXJhY3RlcjoiXFxlYmM0In0pLEh0LnRlcm1pbmFsRGViaWFuPW5ldyBIdCgidGVybWluYWwtZGViaWFuIix7Zm9udENoYXJhY3RlcjoiXFxlYmM1In0pLEh0LnRlcm1pbmFsTGludXg9bmV3IEh0KCJ0ZXJtaW5hbC1saW51eCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJjNiJ9KSxIdC50ZXJtaW5hbFBvd2Vyc2hlbGw9bmV3IEh0KCJ0ZXJtaW5hbC1wb3dlcnNoZWxsIix7Zm9udENoYXJhY3RlcjoiXFxlYmM3In0pLEh0LnRlcm1pbmFsVG11eD1uZXcgSHQoInRlcm1pbmFsLXRtdXgiLHtmb250Q2hhcmFjdGVyOiJcXGViYzgifSksSHQudGVybWluYWxVYnVudHU9bmV3IEh0KCJ0ZXJtaW5hbC11YnVudHUiLHtmb250Q2hhcmFjdGVyOiJcXGViYzkifSksSHQudGVybWluYWxCYXNoPW5ldyBIdCgidGVybWluYWwtYmFzaCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJjYSJ9KSxIdC5hcnJvd1N3YXA9bmV3IEh0KCJhcnJvdy1zd2FwIix7Zm9udENoYXJhY3RlcjoiXFxlYmNiIn0pLEh0LmNvcHk9bmV3IEh0KCJjb3B5Iix7Zm9udENoYXJhY3RlcjoiXFxlYmNjIn0pLEh0LnBlcnNvbkFkZD1uZXcgSHQoInBlcnNvbi1hZGQiLHtmb250Q2hhcmFjdGVyOiJcXGViY2QifSksSHQuZmlsdGVyRmlsbGVkPW5ldyBIdCgiZmlsdGVyLWZpbGxlZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJjZSJ9KSxIdC53YW5kPW5ldyBIdCgid2FuZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJjZiJ9KSxIdC5kZWJ1Z0xpbmVCeUxpbmU9bmV3IEh0KCJkZWJ1Zy1saW5lLWJ5LWxpbmUiLHtmb250Q2hhcmFjdGVyOiJcXGViZDAifSksSHQuaW5zcGVjdD1uZXcgSHQoImluc3BlY3QiLHtmb250Q2hhcmFjdGVyOiJcXGViZDEifSksSHQubGF5ZXJzPW5ldyBIdCgibGF5ZXJzIix7Zm9udENoYXJhY3RlcjoiXFxlYmQyIn0pLEh0LmxheWVyc0RvdD1uZXcgSHQoImxheWVycy1kb3QiLHtmb250Q2hhcmFjdGVyOiJcXGViZDMifSksSHQubGF5ZXJzQWN0aXZlPW5ldyBIdCgibGF5ZXJzLWFjdGl2ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJkNCJ9KSxIdC5jb21wYXNzPW5ldyBIdCgiY29tcGFzcyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJkNSJ9KSxIdC5jb21wYXNzRG90PW5ldyBIdCgiY29tcGFzcy1kb3QiLHtmb250Q2hhcmFjdGVyOiJcXGViZDYifSksSHQuY29tcGFzc0FjdGl2ZT1uZXcgSHQoImNvbXBhc3MtYWN0aXZlIix7Zm9udENoYXJhY3RlcjoiXFxlYmQ3In0pLEh0LmF6dXJlPW5ldyBIdCgiYXp1cmUiLHtmb250Q2hhcmFjdGVyOiJcXGViZDgifSksSHQuaXNzdWVEcmFmdD1uZXcgSHQoImlzc3VlLWRyYWZ0Iix7Zm9udENoYXJhY3RlcjoiXFxlYmQ5In0pLEh0LmdpdFB1bGxSZXF1ZXN0Q2xvc2VkPW5ldyBIdCgiZ2l0LXB1bGwtcmVxdWVzdC1jbG9zZWQiLHtmb250Q2hhcmFjdGVyOiJcXGViZGEifSksSHQuZ2l0UHVsbFJlcXVlc3REcmFmdD1uZXcgSHQoImdpdC1wdWxsLXJlcXVlc3QtZHJhZnQiLHtmb250Q2hhcmFjdGVyOiJcXGViZGIifSksSHQuZGVidWdBbGw9bmV3IEh0KCJkZWJ1Zy1hbGwiLHtmb250Q2hhcmFjdGVyOiJcXGViZGMifSksSHQuZGVidWdDb3ZlcmFnZT1uZXcgSHQoImRlYnVnLWNvdmVyYWdlIix7Zm9udENoYXJhY3RlcjoiXFxlYmRkIn0pLEh0LnJ1bkVycm9ycz1uZXcgSHQoInJ1bi1lcnJvcnMiLHtmb250Q2hhcmFjdGVyOiJcXGViZGUifSksSHQuZm9sZGVyTGlicmFyeT1uZXcgSHQoImZvbGRlci1saWJyYXJ5Iix7Zm9udENoYXJhY3RlcjoiXFxlYmRmIn0pLEh0LmRlYnVnQ29udGludWVTbWFsbD1uZXcgSHQoImRlYnVnLWNvbnRpbnVlLXNtYWxsIix7Zm9udENoYXJhY3RlcjoiXFxlYmUwIn0pLEh0LmJlYWtlclN0b3A9bmV3IEh0KCJiZWFrZXItc3RvcCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJlMSJ9KSxIdC5ncmFwaExpbmU9bmV3IEh0KCJncmFwaC1saW5lIix7Zm9udENoYXJhY3RlcjoiXFxlYmUyIn0pLEh0LmdyYXBoU2NhdHRlcj1uZXcgSHQoImdyYXBoLXNjYXR0ZXIiLHtmb250Q2hhcmFjdGVyOiJcXGViZTMifSksSHQucGllQ2hhcnQ9bmV3IEh0KCJwaWUtY2hhcnQiLHtmb250Q2hhcmFjdGVyOiJcXGViZTQifSksSHQuYnJhY2tldD1uZXcgSHQoImJyYWNrZXQiLEh0Lmpzb24uZGVmaW5pdGlvbiksSHQuYnJhY2tldERvdD1uZXcgSHQoImJyYWNrZXQtZG90Iix7Zm9udENoYXJhY3RlcjoiXFxlYmU1In0pLEh0LmJyYWNrZXRFcnJvcj1uZXcgSHQoImJyYWNrZXQtZXJyb3IiLHtmb250Q2hhcmFjdGVyOiJcXGViZTYifSksSHQubG9ja1NtYWxsPW5ldyBIdCgibG9jay1zbWFsbCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJlNyJ9KSxIdC5henVyZURldm9wcz1uZXcgSHQoImF6dXJlLWRldm9wcyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJlOCJ9KSxIdC52ZXJpZmllZEZpbGxlZD1uZXcgSHQoInZlcmlmaWVkLWZpbGxlZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJlOSJ9KSxIdC5uZXdMaW5lPW5ldyBIdCgibmV3bGluZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJlYSJ9KSxIdC5sYXlvdXQ9bmV3IEh0KCJsYXlvdXQiLHtmb250Q2hhcmFjdGVyOiJcXGViZWIifSksSHQubGF5b3V0QWN0aXZpdHliYXJMZWZ0PW5ldyBIdCgibGF5b3V0LWFjdGl2aXR5YmFyLWxlZnQiLHtmb250Q2hhcmFjdGVyOiJcXGViZWMifSksSHQubGF5b3V0QWN0aXZpdHliYXJSaWdodD1uZXcgSHQoImxheW91dC1hY3Rpdml0eWJhci1yaWdodCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJlZCJ9KSxIdC5sYXlvdXRQYW5lbExlZnQ9bmV3IEh0KCJsYXlvdXQtcGFuZWwtbGVmdCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJlZSJ9KSxIdC5sYXlvdXRQYW5lbENlbnRlcj1uZXcgSHQoImxheW91dC1wYW5lbC1jZW50ZXIiLHtmb250Q2hhcmFjdGVyOiJcXGViZWYifSksSHQubGF5b3V0UGFuZWxKdXN0aWZ5PW5ldyBIdCgibGF5b3V0LXBhbmVsLWp1c3RpZnkiLHtmb250Q2hhcmFjdGVyOiJcXGViZjAifSksSHQubGF5b3V0UGFuZWxSaWdodD1uZXcgSHQoImxheW91dC1wYW5lbC1yaWdodCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJmMSJ9KSxIdC5sYXlvdXRQYW5lbD1uZXcgSHQoImxheW91dC1wYW5lbCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJmMiJ9KSxIdC5sYXlvdXRTaWRlYmFyTGVmdD1uZXcgSHQoImxheW91dC1zaWRlYmFyLWxlZnQiLHtmb250Q2hhcmFjdGVyOiJcXGViZjMifSksSHQubGF5b3V0U2lkZWJhclJpZ2h0PW5ldyBIdCgibGF5b3V0LXNpZGViYXItcmlnaHQiLHtmb250Q2hhcmFjdGVyOiJcXGViZjQifSksSHQubGF5b3V0U3RhdHVzYmFyPW5ldyBIdCgibGF5b3V0LXN0YXR1c2JhciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJmNSJ9KSxIdC5sYXlvdXRNZW51YmFyPW5ldyBIdCgibGF5b3V0LW1lbnViYXIiLHtmb250Q2hhcmFjdGVyOiJcXGViZjYifSksSHQubGF5b3V0Q2VudGVyZWQ9bmV3IEh0KCJsYXlvdXQtY2VudGVyZWQiLHtmb250Q2hhcmFjdGVyOiJcXGViZjcifSksSHQubGF5b3V0U2lkZWJhclJpZ2h0T2ZmPW5ldyBIdCgibGF5b3V0LXNpZGViYXItcmlnaHQtb2ZmIix7Zm9udENoYXJhY3RlcjoiXFxlYzAwIn0pLEh0LmxheW91dFBhbmVsT2ZmPW5ldyBIdCgibGF5b3V0LXBhbmVsLW9mZiIse2ZvbnRDaGFyYWN0ZXI6IlxcZWMwMSJ9KSxIdC5sYXlvdXRTaWRlYmFyTGVmdE9mZj1uZXcgSHQoImxheW91dC1zaWRlYmFyLWxlZnQtb2ZmIix7Zm9udENoYXJhY3RlcjoiXFxlYzAyIn0pLEh0LnRhcmdldD1uZXcgSHQoInRhcmdldCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJmOCJ9KSxIdC5pbmRlbnQ9bmV3IEh0KCJpbmRlbnQiLHtmb250Q2hhcmFjdGVyOiJcXGViZjkifSksSHQucmVjb3JkU21hbGw9bmV3IEh0KCJyZWNvcmQtc21hbGwiLHtmb250Q2hhcmFjdGVyOiJcXGViZmEifSksSHQuZXJyb3JTbWFsbD1uZXcgSHQoImVycm9yLXNtYWxsIix7Zm9udENoYXJhY3RlcjoiXFxlYmZiIn0pLEh0LmFycm93Q2lyY2xlRG93bj1uZXcgSHQoImFycm93LWNpcmNsZS1kb3duIix7Zm9udENoYXJhY3RlcjoiXFxlYmZjIn0pLEh0LmFycm93Q2lyY2xlTGVmdD1uZXcgSHQoImFycm93LWNpcmNsZS1sZWZ0Iix7Zm9udENoYXJhY3RlcjoiXFxlYmZkIn0pLEh0LmFycm93Q2lyY2xlUmlnaHQ9bmV3IEh0KCJhcnJvdy1jaXJjbGUtcmlnaHQiLHtmb250Q2hhcmFjdGVyOiJcXGViZmUifSksSHQuYXJyb3dDaXJjbGVVcD1uZXcgSHQoImFycm93LWNpcmNsZS11cCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJmZiJ9KSxIdC5oZWFydEZpbGxlZD1uZXcgSHQoImhlYXJ0LWZpbGxlZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWMwNCJ9KSxIdC5tYXA9bmV3IEh0KCJtYXAiLHtmb250Q2hhcmFjdGVyOiJcXGVjMDUifSksSHQubWFwRmlsbGVkPW5ldyBIdCgibWFwLWZpbGxlZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWMwNiJ9KSxIdC5jaXJjbGVTbWFsbD1uZXcgSHQoImNpcmNsZS1zbWFsbCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWMwNyJ9KSxIdC5iZWxsU2xhc2g9bmV3IEh0KCJiZWxsLXNsYXNoIix7Zm9udENoYXJhY3RlcjoiXFxlYzA4In0pLEh0LmJlbGxTbGFzaERvdD1uZXcgSHQoImJlbGwtc2xhc2gtZG90Iix7Zm9udENoYXJhY3RlcjoiXFxlYzA5In0pLEh0LmNvbW1lbnRVbnJlc29sdmVkPW5ldyBIdCgiY29tbWVudC11bnJlc29sdmVkIix7Zm9udENoYXJhY3RlcjoiXFxlYzBhIn0pLEh0LmdpdFB1bGxSZXF1ZXN0R29Ub0NoYW5nZXM9bmV3IEh0KCJnaXQtcHVsbC1yZXF1ZXN0LWdvLXRvLWNoYW5nZXMiLHtmb250Q2hhcmFjdGVyOiJcXGVjMGIifSksSHQuZ2l0UHVsbFJlcXVlc3ROZXdDaGFuZ2VzPW5ldyBIdCgiZ2l0LXB1bGwtcmVxdWVzdC1uZXctY2hhbmdlcyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWMwYyJ9KSxIdC5kaWFsb2dFcnJvcj1uZXcgSHQoImRpYWxvZy1lcnJvciIsSHQuZXJyb3IuZGVmaW5pdGlvbiksSHQuZGlhbG9nV2FybmluZz1uZXcgSHQoImRpYWxvZy13YXJuaW5nIixIdC53YXJuaW5nLmRlZmluaXRpb24pLEh0LmRpYWxvZ0luZm89bmV3IEh0KCJkaWFsb2ctaW5mbyIsSHQuaW5mby5kZWZpbml0aW9uKSxIdC5kaWFsb2dDbG9zZT1uZXcgSHQoImRpYWxvZy1jbG9zZSIsSHQuY2xvc2UuZGVmaW5pdGlvbiksSHQudHJlZUl0ZW1FeHBhbmRlZD1uZXcgSHQoInRyZWUtaXRlbS1leHBhbmRlZCIsSHQuY2hldnJvbkRvd24uZGVmaW5pdGlvbiksSHQudHJlZUZpbHRlck9uVHlwZU9uPW5ldyBIdCgidHJlZS1maWx0ZXItb24tdHlwZS1vbiIsSHQubGlzdEZpbHRlci5kZWZpbml0aW9uKSxIdC50cmVlRmlsdGVyT25UeXBlT2ZmPW5ldyBIdCgidHJlZS1maWx0ZXItb24tdHlwZS1vZmYiLEh0Lmxpc3RTZWxlY3Rpb24uZGVmaW5pdGlvbiksSHQudHJlZUZpbHRlckNsZWFyPW5ldyBIdCgidHJlZS1maWx0ZXItY2xlYXIiLEh0LmNsb3NlLmRlZmluaXRpb24pLEh0LnRyZWVJdGVtTG9hZGluZz1uZXcgSHQoInRyZWUtaXRlbS1sb2FkaW5nIixIdC5sb2FkaW5nLmRlZmluaXRpb24pLEh0Lm1lbnVTZWxlY3Rpb249bmV3IEh0KCJtZW51LXNlbGVjdGlvbiIsSHQuY2hlY2suZGVmaW5pdGlvbiksSHQubWVudVN1Ym1lbnU9bmV3IEh0KCJtZW51LXN1Ym1lbnUiLEh0LmNoZXZyb25SaWdodC5kZWZpbml0aW9uKSxIdC5tZW51QmFyTW9yZT1uZXcgSHQoIm1lbnViYXItbW9yZSIsSHQubW9yZS5kZWZpbml0aW9uKSxIdC5zY3JvbGxiYXJCdXR0b25MZWZ0PW5ldyBIdCgic2Nyb2xsYmFyLWJ1dHRvbi1sZWZ0IixIdC50cmlhbmdsZUxlZnQuZGVmaW5pdGlvbiksSHQuc2Nyb2xsYmFyQnV0dG9uUmlnaHQ9bmV3IEh0KCJzY3JvbGxiYXItYnV0dG9uLXJpZ2h0IixIdC50cmlhbmdsZVJpZ2h0LmRlZmluaXRpb24pLEh0LnNjcm9sbGJhckJ1dHRvblVwPW5ldyBIdCgic2Nyb2xsYmFyLWJ1dHRvbi11cCIsSHQudHJpYW5nbGVVcC5kZWZpbml0aW9uKSxIdC5zY3JvbGxiYXJCdXR0b25Eb3duPW5ldyBIdCgic2Nyb2xsYmFyLWJ1dHRvbi1kb3duIixIdC50cmlhbmdsZURvd24uZGVmaW5pdGlvbiksSHQudG9vbEJhck1vcmU9bmV3IEh0KCJ0b29sYmFyLW1vcmUiLEh0Lm1vcmUuZGVmaW5pdGlvbiksSHQucXVpY2tJbnB1dEJhY2s9bmV3IEh0KCJxdWljay1pbnB1dC1iYWNrIixIdC5hcnJvd0xlZnQuZGVmaW5pdGlvbiksZnVuY3Rpb24oZSl7ZS5pY29uTmFtZVNlZ21lbnQ9IltBLVphLXowLTldKyIsZS5pY29uTmFtZUV4cHJlc3Npb249IltBLVphLXowLTktXSsiLGUuaWNvbk1vZGlmaWVyRXhwcmVzc2lvbj0ifltBLVphLXpdKyIsZS5pY29uTmFtZUNoYXJhY3Rlcj0iW0EtWmEtejAtOX4tXSI7Y29uc3QgdD1uZXcgUmVnRXhwKGBeKCR7ZS5pY29uTmFtZUV4cHJlc3Npb259KSgke2UuaWNvbk1vZGlmaWVyRXhwcmVzc2lvbn0pPyRgKTtmdW5jdGlvbiBuKGUpe2lmKGUgaW5zdGFuY2VvZiBIdClyZXR1cm5bImNvZGljb24iLCJjb2RpY29uLSIrZS5pZF07Y29uc3Qgcj10LmV4ZWMoZS5pZCk7aWYoIXIpcmV0dXJuIG4oSHQuZXJyb3IpO2NvbnN0WyxpLG9dPXIsYT1bImNvZGljb24iLCJjb2RpY29uLSIraV07cmV0dXJuIG8mJmEucHVzaCgiY29kaWNvbi1tb2RpZmllci0iK28uc3Vic3RyKDEpKSxhfWUuYXNDbGFzc05hbWVBcnJheT1uLGUuYXNDbGFzc05hbWU9ZnVuY3Rpb24oZSl7cmV0dXJuIG4oZSkuam9pbigiICIpfSxlLmFzQ1NTU2VsZWN0b3I9ZnVuY3Rpb24oZSl7cmV0dXJuIi4iK24oZSkuam9pbigiLiIpfX0oVXR8fChVdD17fSkpO3ZhciBXdCwkdCx6dCxqdCxHdCxZdCxadCxRdCxKdCxYdCxlbix0bixubixybixvbixhbixzbixsbixjbix1bixobixkbixmbixtbixnbixibixDbixwbix3bixfbix5bixTbixMbixObix2bixFbixBbixrbixNbixSbixPbix4bixQbixUbixJbixLbixEbixWbixGbj1mdW5jdGlvbihlLHQsbixyKXtyZXR1cm4gbmV3KG58fChuPVByb21pc2UpKSgoZnVuY3Rpb24oaSxvKXtmdW5jdGlvbiBhKGUpe3RyeXtsKHIubmV4dChlKSl9Y2F0Y2goZSl7byhlKX19ZnVuY3Rpb24gcyhlKXt0cnl7bChyLnRocm93KGUpKX1jYXRjaChlKXtvKGUpfX1mdW5jdGlvbiBsKGUpe3ZhciB0O2UuZG9uZT9pKGUudmFsdWUpOih0PWUudmFsdWUsdCBpbnN0YW5jZW9mIG4/dDpuZXcgbigoZnVuY3Rpb24oZSl7ZSh0KX0pKSkudGhlbihhLHMpfWwoKHI9ci5hcHBseShlLHR8fFtdKSkubmV4dCgpKX0pKX07Y2xhc3MgQm4gZXh0ZW5kcyBme2NvbnN0cnVjdG9yKGUsdCxuKXtzdXBlcigpLHRoaXMuX3JlZ2lzdHJ5PWUsdGhpcy5fbGFuZ3VhZ2VJZD10LHRoaXMuX2ZhY3Rvcnk9bix0aGlzLl9pc0Rpc3Bvc2VkPSExLHRoaXMuX3Jlc29sdmVQcm9taXNlPW51bGwsdGhpcy5faXNSZXNvbHZlZD0hMX1nZXQgaXNSZXNvbHZlZCgpe3JldHVybiB0aGlzLl9pc1Jlc29sdmVkfWRpc3Bvc2UoKXt0aGlzLl9pc0Rpc3Bvc2VkPSEwLHN1cGVyLmRpc3Bvc2UoKX1yZXNvbHZlKCl7cmV0dXJuIEZuKHRoaXMsdm9pZCAwLHZvaWQgMCwoZnVuY3Rpb24qKCl7cmV0dXJuIHRoaXMuX3Jlc29sdmVQcm9taXNlfHwodGhpcy5fcmVzb2x2ZVByb21pc2U9dGhpcy5fY3JlYXRlKCkpLHRoaXMuX3Jlc29sdmVQcm9taXNlfSkpfV9jcmVhdGUoKXtyZXR1cm4gRm4odGhpcyx2b2lkIDAsdm9pZCAwLChmdW5jdGlvbiooKXtjb25zdCBlPXlpZWxkIFByb21pc2UucmVzb2x2ZSh0aGlzLl9mYWN0b3J5LmNyZWF0ZVRva2VuaXphdGlvblN1cHBvcnQoKSk7dGhpcy5faXNSZXNvbHZlZD0hMCxlJiYhdGhpcy5faXNEaXNwb3NlZCYmdGhpcy5fcmVnaXN0ZXIodGhpcy5fcmVnaXN0cnkucmVnaXN0ZXIodGhpcy5fbGFuZ3VhZ2VJZCxlKSl9KSl9fWNsYXNzIFVue2NvbnN0cnVjdG9yKGUsdCxuKXt0aGlzLl90b2tlbkJyYW5kPXZvaWQgMCx0aGlzLm9mZnNldD1lLHRoaXMudHlwZT10LHRoaXMubGFuZ3VhZ2U9bn10b1N0cmluZygpe3JldHVybiIoIit0aGlzLm9mZnNldCsiLCAiK3RoaXMudHlwZSsiKSJ9fSFmdW5jdGlvbihlKXtjb25zdCB0PW5ldyBNYXA7dC5zZXQoMCxIdC5zeW1ib2xNZXRob2QpLHQuc2V0KDEsSHQuc3ltYm9sRnVuY3Rpb24pLHQuc2V0KDIsSHQuc3ltYm9sQ29uc3RydWN0b3IpLHQuc2V0KDMsSHQuc3ltYm9sRmllbGQpLHQuc2V0KDQsSHQuc3ltYm9sVmFyaWFibGUpLHQuc2V0KDUsSHQuc3ltYm9sQ2xhc3MpLHQuc2V0KDYsSHQuc3ltYm9sU3RydWN0KSx0LnNldCg3LEh0LnN5bWJvbEludGVyZmFjZSksdC5zZXQoOCxIdC5zeW1ib2xNb2R1bGUpLHQuc2V0KDksSHQuc3ltYm9sUHJvcGVydHkpLHQuc2V0KDEwLEh0LnN5bWJvbEV2ZW50KSx0LnNldCgxMSxIdC5zeW1ib2xPcGVyYXRvciksdC5zZXQoMTIsSHQuc3ltYm9sVW5pdCksdC5zZXQoMTMsSHQuc3ltYm9sVmFsdWUpLHQuc2V0KDE1LEh0LnN5bWJvbEVudW0pLHQuc2V0KDE0LEh0LnN5bWJvbENvbnN0YW50KSx0LnNldCgxNSxIdC5zeW1ib2xFbnVtKSx0LnNldCgxNixIdC5zeW1ib2xFbnVtTWVtYmVyKSx0LnNldCgxNyxIdC5zeW1ib2xLZXl3b3JkKSx0LnNldCgyNyxIdC5zeW1ib2xTbmlwcGV0KSx0LnNldCgxOCxIdC5zeW1ib2xUZXh0KSx0LnNldCgxOSxIdC5zeW1ib2xDb2xvciksdC5zZXQoMjAsSHQuc3ltYm9sRmlsZSksdC5zZXQoMjEsSHQuc3ltYm9sUmVmZXJlbmNlKSx0LnNldCgyMixIdC5zeW1ib2xDdXN0b21Db2xvciksdC5zZXQoMjMsSHQuc3ltYm9sRm9sZGVyKSx0LnNldCgyNCxIdC5zeW1ib2xUeXBlUGFyYW1ldGVyKSx0LnNldCgyNSxIdC5hY2NvdW50KSx0LnNldCgyNixIdC5pc3N1ZXMpLGUudG9JY29uPWZ1bmN0aW9uKGUpe2xldCBuPXQuZ2V0KGUpO3JldHVybiBufHwoY29uc29sZS5pbmZvKCJObyBjb2RpY29uIGZvdW5kIGZvciBDb21wbGV0aW9uSXRlbUtpbmQgIitlKSxuPUh0LnN5bWJvbFByb3BlcnR5KSxufTtjb25zdCBuPW5ldyBNYXA7bi5zZXQoIm1ldGhvZCIsMCksbi5zZXQoImZ1bmN0aW9uIiwxKSxuLnNldCgiY29uc3RydWN0b3IiLDIpLG4uc2V0KCJmaWVsZCIsMyksbi5zZXQoInZhcmlhYmxlIiw0KSxuLnNldCgiY2xhc3MiLDUpLG4uc2V0KCJzdHJ1Y3QiLDYpLG4uc2V0KCJpbnRlcmZhY2UiLDcpLG4uc2V0KCJtb2R1bGUiLDgpLG4uc2V0KCJwcm9wZXJ0eSIsOSksbi5zZXQoImV2ZW50IiwxMCksbi5zZXQoIm9wZXJhdG9yIiwxMSksbi5zZXQoInVuaXQiLDEyKSxuLnNldCgidmFsdWUiLDEzKSxuLnNldCgiY29uc3RhbnQiLDE0KSxuLnNldCgiZW51bSIsMTUpLG4uc2V0KCJlbnVtLW1lbWJlciIsMTYpLG4uc2V0KCJlbnVtTWVtYmVyIiwxNiksbi5zZXQoImtleXdvcmQiLDE3KSxuLnNldCgic25pcHBldCIsMjcpLG4uc2V0KCJ0ZXh0IiwxOCksbi5zZXQoImNvbG9yIiwxOSksbi5zZXQoImZpbGUiLDIwKSxuLnNldCgicmVmZXJlbmNlIiwyMSksbi5zZXQoImN1c3RvbWNvbG9yIiwyMiksbi5zZXQoImZvbGRlciIsMjMpLG4uc2V0KCJ0eXBlLXBhcmFtZXRlciIsMjQpLG4uc2V0KCJ0eXBlUGFyYW1ldGVyIiwyNCksbi5zZXQoImFjY291bnQiLDI1KSxuLnNldCgiaXNzdWUiLDI2KSxlLmZyb21TdHJpbmc9ZnVuY3Rpb24oZSx0KXtsZXQgcj1uLmdldChlKTtyZXR1cm4gdm9pZCAwIT09cnx8dHx8KHI9OSkscn19KFd0fHwoV3Q9e30pKSxmdW5jdGlvbihlKXtlW2UuQXV0b21hdGljPTBdPSJBdXRvbWF0aWMiLGVbZS5FeHBsaWNpdD0xXT0iRXhwbGljaXQifSgkdHx8KCR0PXt9KSksZnVuY3Rpb24oZSl7ZVtlLkludm9rZT0xXT0iSW52b2tlIixlW2UuVHJpZ2dlckNoYXJhY3Rlcj0yXT0iVHJpZ2dlckNoYXJhY3RlciIsZVtlLkNvbnRlbnRDaGFuZ2U9M109IkNvbnRlbnRDaGFuZ2UifSh6dHx8KHp0PXt9KSksZnVuY3Rpb24oZSl7ZVtlLlRleHQ9MF09IlRleHQiLGVbZS5SZWFkPTFdPSJSZWFkIixlW2UuV3JpdGU9Ml09IldyaXRlIn0oanR8fChqdD17fSkpLGZ1bmN0aW9uKGUpe2NvbnN0IHQ9bmV3IE1hcDt0LnNldCgwLEh0LnN5bWJvbEZpbGUpLHQuc2V0KDEsSHQuc3ltYm9sTW9kdWxlKSx0LnNldCgyLEh0LnN5bWJvbE5hbWVzcGFjZSksdC5zZXQoMyxIdC5zeW1ib2xQYWNrYWdlKSx0LnNldCg0LEh0LnN5bWJvbENsYXNzKSx0LnNldCg1LEh0LnN5bWJvbE1ldGhvZCksdC5zZXQoNixIdC5zeW1ib2xQcm9wZXJ0eSksdC5zZXQoNyxIdC5zeW1ib2xGaWVsZCksdC5zZXQoOCxIdC5zeW1ib2xDb25zdHJ1Y3RvciksdC5zZXQoOSxIdC5zeW1ib2xFbnVtKSx0LnNldCgxMCxIdC5zeW1ib2xJbnRlcmZhY2UpLHQuc2V0KDExLEh0LnN5bWJvbEZ1bmN0aW9uKSx0LnNldCgxMixIdC5zeW1ib2xWYXJpYWJsZSksdC5zZXQoMTMsSHQuc3ltYm9sQ29uc3RhbnQpLHQuc2V0KDE0LEh0LnN5bWJvbFN0cmluZyksdC5zZXQoMTUsSHQuc3ltYm9sTnVtYmVyKSx0LnNldCgxNixIdC5zeW1ib2xCb29sZWFuKSx0LnNldCgxNyxIdC5zeW1ib2xBcnJheSksdC5zZXQoMTgsSHQuc3ltYm9sT2JqZWN0KSx0LnNldCgxOSxIdC5zeW1ib2xLZXkpLHQuc2V0KDIwLEh0LnN5bWJvbE51bGwpLHQuc2V0KDIxLEh0LnN5bWJvbEVudW1NZW1iZXIpLHQuc2V0KDIyLEh0LnN5bWJvbFN0cnVjdCksdC5zZXQoMjMsSHQuc3ltYm9sRXZlbnQpLHQuc2V0KDI0LEh0LnN5bWJvbE9wZXJhdG9yKSx0LnNldCgyNSxIdC5zeW1ib2xUeXBlUGFyYW1ldGVyKSxlLnRvSWNvbj1mdW5jdGlvbihlKXtsZXQgbj10LmdldChlKTtyZXR1cm4gbnx8KGNvbnNvbGUuaW5mbygiTm8gY29kaWNvbiBmb3VuZCBmb3IgU3ltYm9sS2luZCAiK2UpLG49SHQuc3ltYm9sUHJvcGVydHkpLG59fShHdHx8KEd0PXt9KSksZnVuY3Rpb24oZSl7ZS5pcz1mdW5jdGlvbihlKXtyZXR1cm4hKCFlfHwib2JqZWN0IiE9dHlwZW9mIGUpJiYoInN0cmluZyI9PXR5cGVvZiBlLmlkJiYic3RyaW5nIj09dHlwZW9mIGUudGl0bGUpfX0oWXR8fChZdD17fSkpLGZ1bmN0aW9uKGUpe2VbZS5UeXBlPTFdPSJUeXBlIixlW2UuUGFyYW1ldGVyPTJdPSJQYXJhbWV0ZXIifShadHx8KFp0PXt9KSksbmV3IGNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5fbWFwPW5ldyBNYXAsdGhpcy5fZmFjdG9yaWVzPW5ldyBNYXAsdGhpcy5fb25EaWRDaGFuZ2U9bmV3IEgsdGhpcy5vbkRpZENoYW5nZT10aGlzLl9vbkRpZENoYW5nZS5ldmVudCx0aGlzLl9jb2xvck1hcD1udWxsfWZpcmUoZSl7dGhpcy5fb25EaWRDaGFuZ2UuZmlyZSh7Y2hhbmdlZExhbmd1YWdlczplLGNoYW5nZWRDb2xvck1hcDohMX0pfXJlZ2lzdGVyKGUsdCl7cmV0dXJuIHRoaXMuX21hcC5zZXQoZSx0KSx0aGlzLmZpcmUoW2VdKSxoKCgoKT0+e3RoaXMuX21hcC5nZXQoZSk9PT10JiYodGhpcy5fbWFwLmRlbGV0ZShlKSx0aGlzLmZpcmUoW2VdKSl9KSl9cmVnaXN0ZXJGYWN0b3J5KGUsdCl7dmFyIG47bnVsbD09PShuPXRoaXMuX2ZhY3Rvcmllcy5nZXQoZSkpfHx2b2lkIDA9PT1ufHxuLmRpc3Bvc2UoKTtjb25zdCByPW5ldyBCbih0aGlzLGUsdCk7cmV0dXJuIHRoaXMuX2ZhY3Rvcmllcy5zZXQoZSxyKSxoKCgoKT0+e2NvbnN0IHQ9dGhpcy5fZmFjdG9yaWVzLmdldChlKTt0JiZ0PT09ciYmKHRoaXMuX2ZhY3Rvcmllcy5kZWxldGUoZSksdC5kaXNwb3NlKCkpfSkpfWdldE9yQ3JlYXRlKGUpe3JldHVybiBGbih0aGlzLHZvaWQgMCx2b2lkIDAsKGZ1bmN0aW9uKigpe2NvbnN0IHQ9dGhpcy5nZXQoZSk7aWYodClyZXR1cm4gdDtjb25zdCBuPXRoaXMuX2ZhY3Rvcmllcy5nZXQoZSk7cmV0dXJuIW58fG4uaXNSZXNvbHZlZD9udWxsOih5aWVsZCBuLnJlc29sdmUoKSx0aGlzLmdldChlKSl9KSl9Z2V0KGUpe3JldHVybiB0aGlzLl9tYXAuZ2V0KGUpfHxudWxsfWlzUmVzb2x2ZWQoZSl7aWYodGhpcy5nZXQoZSkpcmV0dXJuITA7Y29uc3QgdD10aGlzLl9mYWN0b3JpZXMuZ2V0KGUpO3JldHVybiEodCYmIXQuaXNSZXNvbHZlZCl9c2V0Q29sb3JNYXAoZSl7dGhpcy5fY29sb3JNYXA9ZSx0aGlzLl9vbkRpZENoYW5nZS5maXJlKHtjaGFuZ2VkTGFuZ3VhZ2VzOkFycmF5LmZyb20odGhpcy5fbWFwLmtleXMoKSksY2hhbmdlZENvbG9yTWFwOiEwfSl9Z2V0Q29sb3JNYXAoKXtyZXR1cm4gdGhpcy5fY29sb3JNYXB9Z2V0RGVmYXVsdEJhY2tncm91bmQoKXtyZXR1cm4gdGhpcy5fY29sb3JNYXAmJnRoaXMuX2NvbG9yTWFwLmxlbmd0aD4yP3RoaXMuX2NvbG9yTWFwWzJdOm51bGx9fSxmdW5jdGlvbihlKXtlW2UuVW5rbm93bj0wXT0iVW5rbm93biIsZVtlLkRpc2FibGVkPTFdPSJEaXNhYmxlZCIsZVtlLkVuYWJsZWQ9Ml09IkVuYWJsZWQifShRdHx8KFF0PXt9KSksZnVuY3Rpb24oZSl7ZVtlLkludm9rZT0xXT0iSW52b2tlIixlW2UuQXV0bz0yXT0iQXV0byJ9KEp0fHwoSnQ9e30pKSxmdW5jdGlvbihlKXtlW2UuS2VlcFdoaXRlc3BhY2U9MV09IktlZXBXaGl0ZXNwYWNlIixlW2UuSW5zZXJ0QXNTbmlwcGV0PTRdPSJJbnNlcnRBc1NuaXBwZXQifShYdHx8KFh0PXt9KSksZnVuY3Rpb24oZSl7ZVtlLk1ldGhvZD0wXT0iTWV0aG9kIixlW2UuRnVuY3Rpb249MV09IkZ1bmN0aW9uIixlW2UuQ29uc3RydWN0b3I9Ml09IkNvbnN0cnVjdG9yIixlW2UuRmllbGQ9M109IkZpZWxkIixlW2UuVmFyaWFibGU9NF09IlZhcmlhYmxlIixlW2UuQ2xhc3M9NV09IkNsYXNzIixlW2UuU3RydWN0PTZdPSJTdHJ1Y3QiLGVbZS5JbnRlcmZhY2U9N109IkludGVyZmFjZSIsZVtlLk1vZHVsZT04XT0iTW9kdWxlIixlW2UuUHJvcGVydHk9OV09IlByb3BlcnR5IixlW2UuRXZlbnQ9MTBdPSJFdmVudCIsZVtlLk9wZXJhdG9yPTExXT0iT3BlcmF0b3IiLGVbZS5Vbml0PTEyXT0iVW5pdCIsZVtlLlZhbHVlPTEzXT0iVmFsdWUiLGVbZS5Db25zdGFudD0xNF09IkNvbnN0YW50IixlW2UuRW51bT0xNV09IkVudW0iLGVbZS5FbnVtTWVtYmVyPTE2XT0iRW51bU1lbWJlciIsZVtlLktleXdvcmQ9MTddPSJLZXl3b3JkIixlW2UuVGV4dD0xOF09IlRleHQiLGVbZS5Db2xvcj0xOV09IkNvbG9yIixlW2UuRmlsZT0yMF09IkZpbGUiLGVbZS5SZWZlcmVuY2U9MjFdPSJSZWZlcmVuY2UiLGVbZS5DdXN0b21jb2xvcj0yMl09IkN1c3RvbWNvbG9yIixlW2UuRm9sZGVyPTIzXT0iRm9sZGVyIixlW2UuVHlwZVBhcmFtZXRlcj0yNF09IlR5cGVQYXJhbWV0ZXIiLGVbZS5Vc2VyPTI1XT0iVXNlciIsZVtlLklzc3VlPTI2XT0iSXNzdWUiLGVbZS5TbmlwcGV0PTI3XT0iU25pcHBldCJ9KGVufHwoZW49e30pKSxmdW5jdGlvbihlKXtlW2UuRGVwcmVjYXRlZD0xXT0iRGVwcmVjYXRlZCJ9KHRufHwodG49e30pKSxmdW5jdGlvbihlKXtlW2UuSW52b2tlPTBdPSJJbnZva2UiLGVbZS5UcmlnZ2VyQ2hhcmFjdGVyPTFdPSJUcmlnZ2VyQ2hhcmFjdGVyIixlW2UuVHJpZ2dlckZvckluY29tcGxldGVDb21wbGV0aW9ucz0yXT0iVHJpZ2dlckZvckluY29tcGxldGVDb21wbGV0aW9ucyJ9KG5ufHwobm49e30pKSxmdW5jdGlvbihlKXtlW2UuRVhBQ1Q9MF09IkVYQUNUIixlW2UuQUJPVkU9MV09IkFCT1ZFIixlW2UuQkVMT1c9Ml09IkJFTE9XIn0ocm58fChybj17fSkpLGZ1bmN0aW9uKGUpe2VbZS5Ob3RTZXQ9MF09Ik5vdFNldCIsZVtlLkNvbnRlbnRGbHVzaD0xXT0iQ29udGVudEZsdXNoIixlW2UuUmVjb3ZlckZyb21NYXJrZXJzPTJdPSJSZWNvdmVyRnJvbU1hcmtlcnMiLGVbZS5FeHBsaWNpdD0zXT0iRXhwbGljaXQiLGVbZS5QYXN0ZT00XT0iUGFzdGUiLGVbZS5VbmRvPTVdPSJVbmRvIixlW2UuUmVkbz02XT0iUmVkbyJ9KG9ufHwob249e30pKSxmdW5jdGlvbihlKXtlW2UuTEY9MV09IkxGIixlW2UuQ1JMRj0yXT0iQ1JMRiJ9KGFufHwoYW49e30pKSxmdW5jdGlvbihlKXtlW2UuVGV4dD0wXT0iVGV4dCIsZVtlLlJlYWQ9MV09IlJlYWQiLGVbZS5Xcml0ZT0yXT0iV3JpdGUifShzbnx8KHNuPXt9KSksZnVuY3Rpb24oZSl7ZVtlLk5vbmU9MF09Ik5vbmUiLGVbZS5LZWVwPTFdPSJLZWVwIixlW2UuQnJhY2tldHM9Ml09IkJyYWNrZXRzIixlW2UuQWR2YW5jZWQ9M109IkFkdmFuY2VkIixlW2UuRnVsbD00XT0iRnVsbCJ9KGxufHwobG49e30pKSxmdW5jdGlvbihlKXtlW2UuYWNjZXB0U3VnZ2VzdGlvbk9uQ29tbWl0Q2hhcmFjdGVyPTBdPSJhY2NlcHRTdWdnZXN0aW9uT25Db21taXRDaGFyYWN0ZXIiLGVbZS5hY2NlcHRTdWdnZXN0aW9uT25FbnRlcj0xXT0iYWNjZXB0U3VnZ2VzdGlvbk9uRW50ZXIiLGVbZS5hY2Nlc3NpYmlsaXR5U3VwcG9ydD0yXT0iYWNjZXNzaWJpbGl0eVN1cHBvcnQiLGVbZS5hY2Nlc3NpYmlsaXR5UGFnZVNpemU9M109ImFjY2Vzc2liaWxpdHlQYWdlU2l6ZSIsZVtlLmFyaWFMYWJlbD00XT0iYXJpYUxhYmVsIixlW2UuYXV0b0Nsb3NpbmdCcmFja2V0cz01XT0iYXV0b0Nsb3NpbmdCcmFja2V0cyIsZVtlLmF1dG9DbG9zaW5nRGVsZXRlPTZdPSJhdXRvQ2xvc2luZ0RlbGV0ZSIsZVtlLmF1dG9DbG9zaW5nT3ZlcnR5cGU9N109ImF1dG9DbG9zaW5nT3ZlcnR5cGUiLGVbZS5hdXRvQ2xvc2luZ1F1b3Rlcz04XT0iYXV0b0Nsb3NpbmdRdW90ZXMiLGVbZS5hdXRvSW5kZW50PTldPSJhdXRvSW5kZW50IixlW2UuYXV0b21hdGljTGF5b3V0PTEwXT0iYXV0b21hdGljTGF5b3V0IixlW2UuYXV0b1N1cnJvdW5kPTExXT0iYXV0b1N1cnJvdW5kIixlW2UuYnJhY2tldFBhaXJDb2xvcml6YXRpb249MTJdPSJicmFja2V0UGFpckNvbG9yaXphdGlvbiIsZVtlLmd1aWRlcz0xM109Imd1aWRlcyIsZVtlLmNvZGVMZW5zPTE0XT0iY29kZUxlbnMiLGVbZS5jb2RlTGVuc0ZvbnRGYW1pbHk9MTVdPSJjb2RlTGVuc0ZvbnRGYW1pbHkiLGVbZS5jb2RlTGVuc0ZvbnRTaXplPTE2XT0iY29kZUxlbnNGb250U2l6ZSIsZVtlLmNvbG9yRGVjb3JhdG9ycz0xN109ImNvbG9yRGVjb3JhdG9ycyIsZVtlLmNvbHVtblNlbGVjdGlvbj0xOF09ImNvbHVtblNlbGVjdGlvbiIsZVtlLmNvbW1lbnRzPTE5XT0iY29tbWVudHMiLGVbZS5jb250ZXh0bWVudT0yMF09ImNvbnRleHRtZW51IixlW2UuY29weVdpdGhTeW50YXhIaWdobGlnaHRpbmc9MjFdPSJjb3B5V2l0aFN5bnRheEhpZ2hsaWdodGluZyIsZVtlLmN1cnNvckJsaW5raW5nPTIyXT0iY3Vyc29yQmxpbmtpbmciLGVbZS5jdXJzb3JTbW9vdGhDYXJldEFuaW1hdGlvbj0yM109ImN1cnNvclNtb290aENhcmV0QW5pbWF0aW9uIixlW2UuY3Vyc29yU3R5bGU9MjRdPSJjdXJzb3JTdHlsZSIsZVtlLmN1cnNvclN1cnJvdW5kaW5nTGluZXM9MjVdPSJjdXJzb3JTdXJyb3VuZGluZ0xpbmVzIixlW2UuY3Vyc29yU3Vycm91bmRpbmdMaW5lc1N0eWxlPTI2XT0iY3Vyc29yU3Vycm91bmRpbmdMaW5lc1N0eWxlIixlW2UuY3Vyc29yV2lkdGg9MjddPSJjdXJzb3JXaWR0aCIsZVtlLmRpc2FibGVMYXllckhpbnRpbmc9MjhdPSJkaXNhYmxlTGF5ZXJIaW50aW5nIixlW2UuZGlzYWJsZU1vbm9zcGFjZU9wdGltaXphdGlvbnM9MjldPSJkaXNhYmxlTW9ub3NwYWNlT3B0aW1pemF0aW9ucyIsZVtlLmRvbVJlYWRPbmx5PTMwXT0iZG9tUmVhZE9ubHkiLGVbZS5kcmFnQW5kRHJvcD0zMV09ImRyYWdBbmREcm9wIixlW2UuZHJvcEludG9FZGl0b3I9MzJdPSJkcm9wSW50b0VkaXRvciIsZVtlLmVtcHR5U2VsZWN0aW9uQ2xpcGJvYXJkPTMzXT0iZW1wdHlTZWxlY3Rpb25DbGlwYm9hcmQiLGVbZS5leHBlcmltZW50YWw9MzRdPSJleHBlcmltZW50YWwiLGVbZS5leHRyYUVkaXRvckNsYXNzTmFtZT0zNV09ImV4dHJhRWRpdG9yQ2xhc3NOYW1lIixlW2UuZmFzdFNjcm9sbFNlbnNpdGl2aXR5PTM2XT0iZmFzdFNjcm9sbFNlbnNpdGl2aXR5IixlW2UuZmluZD0zN109ImZpbmQiLGVbZS5maXhlZE92ZXJmbG93V2lkZ2V0cz0zOF09ImZpeGVkT3ZlcmZsb3dXaWRnZXRzIixlW2UuZm9sZGluZz0zOV09ImZvbGRpbmciLGVbZS5mb2xkaW5nU3RyYXRlZ3k9NDBdPSJmb2xkaW5nU3RyYXRlZ3kiLGVbZS5mb2xkaW5nSGlnaGxpZ2h0PTQxXT0iZm9sZGluZ0hpZ2hsaWdodCIsZVtlLmZvbGRpbmdJbXBvcnRzQnlEZWZhdWx0PTQyXT0iZm9sZGluZ0ltcG9ydHNCeURlZmF1bHQiLGVbZS5mb2xkaW5nTWF4aW11bVJlZ2lvbnM9NDNdPSJmb2xkaW5nTWF4aW11bVJlZ2lvbnMiLGVbZS51bmZvbGRPbkNsaWNrQWZ0ZXJFbmRPZkxpbmU9NDRdPSJ1bmZvbGRPbkNsaWNrQWZ0ZXJFbmRPZkxpbmUiLGVbZS5mb250RmFtaWx5PTQ1XT0iZm9udEZhbWlseSIsZVtlLmZvbnRJbmZvPTQ2XT0iZm9udEluZm8iLGVbZS5mb250TGlnYXR1cmVzPTQ3XT0iZm9udExpZ2F0dXJlcyIsZVtlLmZvbnRTaXplPTQ4XT0iZm9udFNpemUiLGVbZS5mb250V2VpZ2h0PTQ5XT0iZm9udFdlaWdodCIsZVtlLmZvcm1hdE9uUGFzdGU9NTBdPSJmb3JtYXRPblBhc3RlIixlW2UuZm9ybWF0T25UeXBlPTUxXT0iZm9ybWF0T25UeXBlIixlW2UuZ2x5cGhNYXJnaW49NTJdPSJnbHlwaE1hcmdpbiIsZVtlLmdvdG9Mb2NhdGlvbj01M109ImdvdG9Mb2NhdGlvbiIsZVtlLmhpZGVDdXJzb3JJbk92ZXJ2aWV3UnVsZXI9NTRdPSJoaWRlQ3Vyc29ySW5PdmVydmlld1J1bGVyIixlW2UuaG92ZXI9NTVdPSJob3ZlciIsZVtlLmluRGlmZkVkaXRvcj01Nl09ImluRGlmZkVkaXRvciIsZVtlLmlubGluZVN1Z2dlc3Q9NTddPSJpbmxpbmVTdWdnZXN0IixlW2UubGV0dGVyU3BhY2luZz01OF09ImxldHRlclNwYWNpbmciLGVbZS5saWdodGJ1bGI9NTldPSJsaWdodGJ1bGIiLGVbZS5saW5lRGVjb3JhdGlvbnNXaWR0aD02MF09ImxpbmVEZWNvcmF0aW9uc1dpZHRoIixlW2UubGluZUhlaWdodD02MV09ImxpbmVIZWlnaHQiLGVbZS5saW5lTnVtYmVycz02Ml09ImxpbmVOdW1iZXJzIixlW2UubGluZU51bWJlcnNNaW5DaGFycz02M109ImxpbmVOdW1iZXJzTWluQ2hhcnMiLGVbZS5saW5rZWRFZGl0aW5nPTY0XT0ibGlua2VkRWRpdGluZyIsZVtlLmxpbmtzPTY1XT0ibGlua3MiLGVbZS5tYXRjaEJyYWNrZXRzPTY2XT0ibWF0Y2hCcmFja2V0cyIsZVtlLm1pbmltYXA9NjddPSJtaW5pbWFwIixlW2UubW91c2VTdHlsZT02OF09Im1vdXNlU3R5bGUiLGVbZS5tb3VzZVdoZWVsU2Nyb2xsU2Vuc2l0aXZpdHk9NjldPSJtb3VzZVdoZWVsU2Nyb2xsU2Vuc2l0aXZpdHkiLGVbZS5tb3VzZVdoZWVsWm9vbT03MF09Im1vdXNlV2hlZWxab29tIixlW2UubXVsdGlDdXJzb3JNZXJnZU92ZXJsYXBwaW5nPTcxXT0ibXVsdGlDdXJzb3JNZXJnZU92ZXJsYXBwaW5nIixlW2UubXVsdGlDdXJzb3JNb2RpZmllcj03Ml09Im11bHRpQ3Vyc29yTW9kaWZpZXIiLGVbZS5tdWx0aUN1cnNvclBhc3RlPTczXT0ibXVsdGlDdXJzb3JQYXN0ZSIsZVtlLm9jY3VycmVuY2VzSGlnaGxpZ2h0PTc0XT0ib2NjdXJyZW5jZXNIaWdobGlnaHQiLGVbZS5vdmVydmlld1J1bGVyQm9yZGVyPTc1XT0ib3ZlcnZpZXdSdWxlckJvcmRlciIsZVtlLm92ZXJ2aWV3UnVsZXJMYW5lcz03Nl09Im92ZXJ2aWV3UnVsZXJMYW5lcyIsZVtlLnBhZGRpbmc9NzddPSJwYWRkaW5nIixlW2UucGFyYW1ldGVySGludHM9NzhdPSJwYXJhbWV0ZXJIaW50cyIsZVtlLnBlZWtXaWRnZXREZWZhdWx0Rm9jdXM9NzldPSJwZWVrV2lkZ2V0RGVmYXVsdEZvY3VzIixlW2UuZGVmaW5pdGlvbkxpbmtPcGVuc0luUGVlaz04MF09ImRlZmluaXRpb25MaW5rT3BlbnNJblBlZWsiLGVbZS5xdWlja1N1Z2dlc3Rpb25zPTgxXT0icXVpY2tTdWdnZXN0aW9ucyIsZVtlLnF1aWNrU3VnZ2VzdGlvbnNEZWxheT04Ml09InF1aWNrU3VnZ2VzdGlvbnNEZWxheSIsZVtlLnJlYWRPbmx5PTgzXT0icmVhZE9ubHkiLGVbZS5yZW5hbWVPblR5cGU9ODRdPSJyZW5hbWVPblR5cGUiLGVbZS5yZW5kZXJDb250cm9sQ2hhcmFjdGVycz04NV09InJlbmRlckNvbnRyb2xDaGFyYWN0ZXJzIixlW2UucmVuZGVyRmluYWxOZXdsaW5lPTg2XT0icmVuZGVyRmluYWxOZXdsaW5lIixlW2UucmVuZGVyTGluZUhpZ2hsaWdodD04N109InJlbmRlckxpbmVIaWdobGlnaHQiLGVbZS5yZW5kZXJMaW5lSGlnaGxpZ2h0T25seVdoZW5Gb2N1cz04OF09InJlbmRlckxpbmVIaWdobGlnaHRPbmx5V2hlbkZvY3VzIixlW2UucmVuZGVyVmFsaWRhdGlvbkRlY29yYXRpb25zPTg5XT0icmVuZGVyVmFsaWRhdGlvbkRlY29yYXRpb25zIixlW2UucmVuZGVyV2hpdGVzcGFjZT05MF09InJlbmRlcldoaXRlc3BhY2UiLGVbZS5yZXZlYWxIb3Jpem9udGFsUmlnaHRQYWRkaW5nPTkxXT0icmV2ZWFsSG9yaXpvbnRhbFJpZ2h0UGFkZGluZyIsZVtlLnJvdW5kZWRTZWxlY3Rpb249OTJdPSJyb3VuZGVkU2VsZWN0aW9uIixlW2UucnVsZXJzPTkzXT0icnVsZXJzIixlW2Uuc2Nyb2xsYmFyPTk0XT0ic2Nyb2xsYmFyIixlW2Uuc2Nyb2xsQmV5b25kTGFzdENvbHVtbj05NV09InNjcm9sbEJleW9uZExhc3RDb2x1bW4iLGVbZS5zY3JvbGxCZXlvbmRMYXN0TGluZT05Nl09InNjcm9sbEJleW9uZExhc3RMaW5lIixlW2Uuc2Nyb2xsUHJlZG9taW5hbnRBeGlzPTk3XT0ic2Nyb2xsUHJlZG9taW5hbnRBeGlzIixlW2Uuc2VsZWN0aW9uQ2xpcGJvYXJkPTk4XT0ic2VsZWN0aW9uQ2xpcGJvYXJkIixlW2Uuc2VsZWN0aW9uSGlnaGxpZ2h0PTk5XT0ic2VsZWN0aW9uSGlnaGxpZ2h0IixlW2Uuc2VsZWN0T25MaW5lTnVtYmVycz0xMDBdPSJzZWxlY3RPbkxpbmVOdW1iZXJzIixlW2Uuc2hvd0ZvbGRpbmdDb250cm9scz0xMDFdPSJzaG93Rm9sZGluZ0NvbnRyb2xzIixlW2Uuc2hvd1VudXNlZD0xMDJdPSJzaG93VW51c2VkIixlW2Uuc25pcHBldFN1Z2dlc3Rpb25zPTEwM109InNuaXBwZXRTdWdnZXN0aW9ucyIsZVtlLnNtYXJ0U2VsZWN0PTEwNF09InNtYXJ0U2VsZWN0IixlW2Uuc21vb3RoU2Nyb2xsaW5nPTEwNV09InNtb290aFNjcm9sbGluZyIsZVtlLnN0aWNreVRhYlN0b3BzPTEwNl09InN0aWNreVRhYlN0b3BzIixlW2Uuc3RvcFJlbmRlcmluZ0xpbmVBZnRlcj0xMDddPSJzdG9wUmVuZGVyaW5nTGluZUFmdGVyIixlW2Uuc3VnZ2VzdD0xMDhdPSJzdWdnZXN0IixlW2Uuc3VnZ2VzdEZvbnRTaXplPTEwOV09InN1Z2dlc3RGb250U2l6ZSIsZVtlLnN1Z2dlc3RMaW5lSGVpZ2h0PTExMF09InN1Z2dlc3RMaW5lSGVpZ2h0IixlW2Uuc3VnZ2VzdE9uVHJpZ2dlckNoYXJhY3RlcnM9MTExXT0ic3VnZ2VzdE9uVHJpZ2dlckNoYXJhY3RlcnMiLGVbZS5zdWdnZXN0U2VsZWN0aW9uPTExMl09InN1Z2dlc3RTZWxlY3Rpb24iLGVbZS50YWJDb21wbGV0aW9uPTExM109InRhYkNvbXBsZXRpb24iLGVbZS50YWJJbmRleD0xMTRdPSJ0YWJJbmRleCIsZVtlLnVuaWNvZGVIaWdobGlnaHRpbmc9MTE1XT0idW5pY29kZUhpZ2hsaWdodGluZyIsZVtlLnVudXN1YWxMaW5lVGVybWluYXRvcnM9MTE2XT0idW51c3VhbExpbmVUZXJtaW5hdG9ycyIsZVtlLnVzZVNoYWRvd0RPTT0xMTddPSJ1c2VTaGFkb3dET00iLGVbZS51c2VUYWJTdG9wcz0xMThdPSJ1c2VUYWJTdG9wcyIsZVtlLndvcmRTZXBhcmF0b3JzPTExOV09IndvcmRTZXBhcmF0b3JzIixlW2Uud29yZFdyYXA9MTIwXT0id29yZFdyYXAiLGVbZS53b3JkV3JhcEJyZWFrQWZ0ZXJDaGFyYWN0ZXJzPTEyMV09IndvcmRXcmFwQnJlYWtBZnRlckNoYXJhY3RlcnMiLGVbZS53b3JkV3JhcEJyZWFrQmVmb3JlQ2hhcmFjdGVycz0xMjJdPSJ3b3JkV3JhcEJyZWFrQmVmb3JlQ2hhcmFjdGVycyIsZVtlLndvcmRXcmFwQ29sdW1uPTEyM109IndvcmRXcmFwQ29sdW1uIixlW2Uud29yZFdyYXBPdmVycmlkZTE9MTI0XT0id29yZFdyYXBPdmVycmlkZTEiLGVbZS53b3JkV3JhcE92ZXJyaWRlMj0xMjVdPSJ3b3JkV3JhcE92ZXJyaWRlMiIsZVtlLndyYXBwaW5nSW5kZW50PTEyNl09IndyYXBwaW5nSW5kZW50IixlW2Uud3JhcHBpbmdTdHJhdGVneT0xMjddPSJ3cmFwcGluZ1N0cmF0ZWd5IixlW2Uuc2hvd0RlcHJlY2F0ZWQ9MTI4XT0ic2hvd0RlcHJlY2F0ZWQiLGVbZS5pbmxheUhpbnRzPTEyOV09ImlubGF5SGludHMiLGVbZS5lZGl0b3JDbGFzc05hbWU9MTMwXT0iZWRpdG9yQ2xhc3NOYW1lIixlW2UucGl4ZWxSYXRpbz0xMzFdPSJwaXhlbFJhdGlvIixlW2UudGFiRm9jdXNNb2RlPTEzMl09InRhYkZvY3VzTW9kZSIsZVtlLmxheW91dEluZm89MTMzXT0ibGF5b3V0SW5mbyIsZVtlLndyYXBwaW5nSW5mbz0xMzRdPSJ3cmFwcGluZ0luZm8ifShjbnx8KGNuPXt9KSksZnVuY3Rpb24oZSl7ZVtlLlRleHREZWZpbmVkPTBdPSJUZXh0RGVmaW5lZCIsZVtlLkxGPTFdPSJMRiIsZVtlLkNSTEY9Ml09IkNSTEYifSh1bnx8KHVuPXt9KSksZnVuY3Rpb24oZSl7ZVtlLkxGPTBdPSJMRiIsZVtlLkNSTEY9MV09IkNSTEYifShobnx8KGhuPXt9KSksZnVuY3Rpb24oZSl7ZVtlLk5vbmU9MF09Ik5vbmUiLGVbZS5JbmRlbnQ9MV09IkluZGVudCIsZVtlLkluZGVudE91dGRlbnQ9Ml09IkluZGVudE91dGRlbnQiLGVbZS5PdXRkZW50PTNdPSJPdXRkZW50In0oZG58fChkbj17fSkpLGZ1bmN0aW9uKGUpe2VbZS5Cb3RoPTBdPSJCb3RoIixlW2UuUmlnaHQ9MV09IlJpZ2h0IixlW2UuTGVmdD0yXT0iTGVmdCIsZVtlLk5vbmU9M109Ik5vbmUifShmbnx8KGZuPXt9KSksZnVuY3Rpb24oZSl7ZVtlLlR5cGU9MV09IlR5cGUiLGVbZS5QYXJhbWV0ZXI9Ml09IlBhcmFtZXRlciJ9KG1ufHwobW49e30pKSxmdW5jdGlvbihlKXtlW2UuQXV0b21hdGljPTBdPSJBdXRvbWF0aWMiLGVbZS5FeHBsaWNpdD0xXT0iRXhwbGljaXQifShnbnx8KGduPXt9KSksZnVuY3Rpb24oZSl7ZVtlLkRlcGVuZHNPbktiTGF5b3V0PS0xXT0iRGVwZW5kc09uS2JMYXlvdXQiLGVbZS5Vbmtub3duPTBdPSJVbmtub3duIixlW2UuQmFja3NwYWNlPTFdPSJCYWNrc3BhY2UiLGVbZS5UYWI9Ml09IlRhYiIsZVtlLkVudGVyPTNdPSJFbnRlciIsZVtlLlNoaWZ0PTRdPSJTaGlmdCIsZVtlLkN0cmw9NV09IkN0cmwiLGVbZS5BbHQ9Nl09IkFsdCIsZVtlLlBhdXNlQnJlYWs9N109IlBhdXNlQnJlYWsiLGVbZS5DYXBzTG9jaz04XT0iQ2Fwc0xvY2siLGVbZS5Fc2NhcGU9OV09IkVzY2FwZSIsZVtlLlNwYWNlPTEwXT0iU3BhY2UiLGVbZS5QYWdlVXA9MTFdPSJQYWdlVXAiLGVbZS5QYWdlRG93bj0xMl09IlBhZ2VEb3duIixlW2UuRW5kPTEzXT0iRW5kIixlW2UuSG9tZT0xNF09IkhvbWUiLGVbZS5MZWZ0QXJyb3c9MTVdPSJMZWZ0QXJyb3ciLGVbZS5VcEFycm93PTE2XT0iVXBBcnJvdyIsZVtlLlJpZ2h0QXJyb3c9MTddPSJSaWdodEFycm93IixlW2UuRG93bkFycm93PTE4XT0iRG93bkFycm93IixlW2UuSW5zZXJ0PTE5XT0iSW5zZXJ0IixlW2UuRGVsZXRlPTIwXT0iRGVsZXRlIixlW2UuRGlnaXQwPTIxXT0iRGlnaXQwIixlW2UuRGlnaXQxPTIyXT0iRGlnaXQxIixlW2UuRGlnaXQyPTIzXT0iRGlnaXQyIixlW2UuRGlnaXQzPTI0XT0iRGlnaXQzIixlW2UuRGlnaXQ0PTI1XT0iRGlnaXQ0IixlW2UuRGlnaXQ1PTI2XT0iRGlnaXQ1IixlW2UuRGlnaXQ2PTI3XT0iRGlnaXQ2IixlW2UuRGlnaXQ3PTI4XT0iRGlnaXQ3IixlW2UuRGlnaXQ4PTI5XT0iRGlnaXQ4IixlW2UuRGlnaXQ5PTMwXT0iRGlnaXQ5IixlW2UuS2V5QT0zMV09IktleUEiLGVbZS5LZXlCPTMyXT0iS2V5QiIsZVtlLktleUM9MzNdPSJLZXlDIixlW2UuS2V5RD0zNF09IktleUQiLGVbZS5LZXlFPTM1XT0iS2V5RSIsZVtlLktleUY9MzZdPSJLZXlGIixlW2UuS2V5Rz0zN109IktleUciLGVbZS5LZXlIPTM4XT0iS2V5SCIsZVtlLktleUk9MzldPSJLZXlJIixlW2UuS2V5Sj00MF09IktleUoiLGVbZS5LZXlLPTQxXT0iS2V5SyIsZVtlLktleUw9NDJdPSJLZXlMIixlW2UuS2V5TT00M109IktleU0iLGVbZS5LZXlOPTQ0XT0iS2V5TiIsZVtlLktleU89NDVdPSJLZXlPIixlW2UuS2V5UD00Nl09IktleVAiLGVbZS5LZXlRPTQ3XT0iS2V5USIsZVtlLktleVI9NDhdPSJLZXlSIixlW2UuS2V5Uz00OV09IktleVMiLGVbZS5LZXlUPTUwXT0iS2V5VCIsZVtlLktleVU9NTFdPSJLZXlVIixlW2UuS2V5Vj01Ml09IktleVYiLGVbZS5LZXlXPTUzXT0iS2V5VyIsZVtlLktleVg9NTRdPSJLZXlYIixlW2UuS2V5WT01NV09IktleVkiLGVbZS5LZXlaPTU2XT0iS2V5WiIsZVtlLk1ldGE9NTddPSJNZXRhIixlW2UuQ29udGV4dE1lbnU9NThdPSJDb250ZXh0TWVudSIsZVtlLkYxPTU5XT0iRjEiLGVbZS5GMj02MF09IkYyIixlW2UuRjM9NjFdPSJGMyIsZVtlLkY0PTYyXT0iRjQiLGVbZS5GNT02M109IkY1IixlW2UuRjY9NjRdPSJGNiIsZVtlLkY3PTY1XT0iRjciLGVbZS5GOD02Nl09IkY4IixlW2UuRjk9NjddPSJGOSIsZVtlLkYxMD02OF09IkYxMCIsZVtlLkYxMT02OV09IkYxMSIsZVtlLkYxMj03MF09IkYxMiIsZVtlLkYxMz03MV09IkYxMyIsZVtlLkYxND03Ml09IkYxNCIsZVtlLkYxNT03M109IkYxNSIsZVtlLkYxNj03NF09IkYxNiIsZVtlLkYxNz03NV09IkYxNyIsZVtlLkYxOD03Nl09IkYxOCIsZVtlLkYxOT03N109IkYxOSIsZVtlLk51bUxvY2s9NzhdPSJOdW1Mb2NrIixlW2UuU2Nyb2xsTG9jaz03OV09IlNjcm9sbExvY2siLGVbZS5TZW1pY29sb249ODBdPSJTZW1pY29sb24iLGVbZS5FcXVhbD04MV09IkVxdWFsIixlW2UuQ29tbWE9ODJdPSJDb21tYSIsZVtlLk1pbnVzPTgzXT0iTWludXMiLGVbZS5QZXJpb2Q9ODRdPSJQZXJpb2QiLGVbZS5TbGFzaD04NV09IlNsYXNoIixlW2UuQmFja3F1b3RlPTg2XT0iQmFja3F1b3RlIixlW2UuQnJhY2tldExlZnQ9ODddPSJCcmFja2V0TGVmdCIsZVtlLkJhY2tzbGFzaD04OF09IkJhY2tzbGFzaCIsZVtlLkJyYWNrZXRSaWdodD04OV09IkJyYWNrZXRSaWdodCIsZVtlLlF1b3RlPTkwXT0iUXVvdGUiLGVbZS5PRU1fOD05MV09Ik9FTV84IixlW2UuSW50bEJhY2tzbGFzaD05Ml09IkludGxCYWNrc2xhc2giLGVbZS5OdW1wYWQwPTkzXT0iTnVtcGFkMCIsZVtlLk51bXBhZDE9OTRdPSJOdW1wYWQxIixlW2UuTnVtcGFkMj05NV09Ik51bXBhZDIiLGVbZS5OdW1wYWQzPTk2XT0iTnVtcGFkMyIsZVtlLk51bXBhZDQ9OTddPSJOdW1wYWQ0IixlW2UuTnVtcGFkNT05OF09Ik51bXBhZDUiLGVbZS5OdW1wYWQ2PTk5XT0iTnVtcGFkNiIsZVtlLk51bXBhZDc9MTAwXT0iTnVtcGFkNyIsZVtlLk51bXBhZDg9MTAxXT0iTnVtcGFkOCIsZVtlLk51bXBhZDk9MTAyXT0iTnVtcGFkOSIsZVtlLk51bXBhZE11bHRpcGx5PTEwM109Ik51bXBhZE11bHRpcGx5IixlW2UuTnVtcGFkQWRkPTEwNF09Ik51bXBhZEFkZCIsZVtlLk5VTVBBRF9TRVBBUkFUT1I9MTA1XT0iTlVNUEFEX1NFUEFSQVRPUiIsZVtlLk51bXBhZFN1YnRyYWN0PTEwNl09Ik51bXBhZFN1YnRyYWN0IixlW2UuTnVtcGFkRGVjaW1hbD0xMDddPSJOdW1wYWREZWNpbWFsIixlW2UuTnVtcGFkRGl2aWRlPTEwOF09Ik51bXBhZERpdmlkZSIsZVtlLktFWV9JTl9DT01QT1NJVElPTj0xMDldPSJLRVlfSU5fQ09NUE9TSVRJT04iLGVbZS5BQk5UX0MxPTExMF09IkFCTlRfQzEiLGVbZS5BQk5UX0MyPTExMV09IkFCTlRfQzIiLGVbZS5BdWRpb1ZvbHVtZU11dGU9MTEyXT0iQXVkaW9Wb2x1bWVNdXRlIixlW2UuQXVkaW9Wb2x1bWVVcD0xMTNdPSJBdWRpb1ZvbHVtZVVwIixlW2UuQXVkaW9Wb2x1bWVEb3duPTExNF09IkF1ZGlvVm9sdW1lRG93biIsZVtlLkJyb3dzZXJTZWFyY2g9MTE1XT0iQnJvd3NlclNlYXJjaCIsZVtlLkJyb3dzZXJIb21lPTExNl09IkJyb3dzZXJIb21lIixlW2UuQnJvd3NlckJhY2s9MTE3XT0iQnJvd3NlckJhY2siLGVbZS5Ccm93c2VyRm9yd2FyZD0xMThdPSJCcm93c2VyRm9yd2FyZCIsZVtlLk1lZGlhVHJhY2tOZXh0PTExOV09Ik1lZGlhVHJhY2tOZXh0IixlW2UuTWVkaWFUcmFja1ByZXZpb3VzPTEyMF09Ik1lZGlhVHJhY2tQcmV2aW91cyIsZVtlLk1lZGlhU3RvcD0xMjFdPSJNZWRpYVN0b3AiLGVbZS5NZWRpYVBsYXlQYXVzZT0xMjJdPSJNZWRpYVBsYXlQYXVzZSIsZVtlLkxhdW5jaE1lZGlhUGxheWVyPTEyM109IkxhdW5jaE1lZGlhUGxheWVyIixlW2UuTGF1bmNoTWFpbD0xMjRdPSJMYXVuY2hNYWlsIixlW2UuTGF1bmNoQXBwMj0xMjVdPSJMYXVuY2hBcHAyIixlW2UuQ2xlYXI9MTI2XT0iQ2xlYXIiLGVbZS5NQVhfVkFMVUU9MTI3XT0iTUFYX1ZBTFVFIn0oYm58fChibj17fSkpLGZ1bmN0aW9uKGUpe2VbZS5IaW50PTFdPSJIaW50IixlW2UuSW5mbz0yXT0iSW5mbyIsZVtlLldhcm5pbmc9NF09Ildhcm5pbmciLGVbZS5FcnJvcj04XT0iRXJyb3IifShDbnx8KENuPXt9KSksZnVuY3Rpb24oZSl7ZVtlLlVubmVjZXNzYXJ5PTFdPSJVbm5lY2Vzc2FyeSIsZVtlLkRlcHJlY2F0ZWQ9Ml09IkRlcHJlY2F0ZWQifShwbnx8KHBuPXt9KSksZnVuY3Rpb24oZSl7ZVtlLklubGluZT0xXT0iSW5saW5lIixlW2UuR3V0dGVyPTJdPSJHdXR0ZXIifSh3bnx8KHduPXt9KSksZnVuY3Rpb24oZSl7ZVtlLlVOS05PV049MF09IlVOS05PV04iLGVbZS5URVhUQVJFQT0xXT0iVEVYVEFSRUEiLGVbZS5HVVRURVJfR0xZUEhfTUFSR0lOPTJdPSJHVVRURVJfR0xZUEhfTUFSR0lOIixlW2UuR1VUVEVSX0xJTkVfTlVNQkVSUz0zXT0iR1VUVEVSX0xJTkVfTlVNQkVSUyIsZVtlLkdVVFRFUl9MSU5FX0RFQ09SQVRJT05TPTRdPSJHVVRURVJfTElORV9ERUNPUkFUSU9OUyIsZVtlLkdVVFRFUl9WSUVXX1pPTkU9NV09IkdVVFRFUl9WSUVXX1pPTkUiLGVbZS5DT05URU5UX1RFWFQ9Nl09IkNPTlRFTlRfVEVYVCIsZVtlLkNPTlRFTlRfRU1QVFk9N109IkNPTlRFTlRfRU1QVFkiLGVbZS5DT05URU5UX1ZJRVdfWk9ORT04XT0iQ09OVEVOVF9WSUVXX1pPTkUiLGVbZS5DT05URU5UX1dJREdFVD05XT0iQ09OVEVOVF9XSURHRVQiLGVbZS5PVkVSVklFV19SVUxFUj0xMF09Ik9WRVJWSUVXX1JVTEVSIixlW2UuU0NST0xMQkFSPTExXT0iU0NST0xMQkFSIixlW2UuT1ZFUkxBWV9XSURHRVQ9MTJdPSJPVkVSTEFZX1dJREdFVCIsZVtlLk9VVFNJREVfRURJVE9SPTEzXT0iT1VUU0lERV9FRElUT1IifShfbnx8KF9uPXt9KSksZnVuY3Rpb24oZSl7ZVtlLlRPUF9SSUdIVF9DT1JORVI9MF09IlRPUF9SSUdIVF9DT1JORVIiLGVbZS5CT1RUT01fUklHSFRfQ09STkVSPTFdPSJCT1RUT01fUklHSFRfQ09STkVSIixlW2UuVE9QX0NFTlRFUj0yXT0iVE9QX0NFTlRFUiJ9KHlufHwoeW49e30pKSxmdW5jdGlvbihlKXtlW2UuTGVmdD0xXT0iTGVmdCIsZVtlLkNlbnRlcj0yXT0iQ2VudGVyIixlW2UuUmlnaHQ9NF09IlJpZ2h0IixlW2UuRnVsbD03XT0iRnVsbCJ9KFNufHwoU249e30pKSxmdW5jdGlvbihlKXtlW2UuTGVmdD0wXT0iTGVmdCIsZVtlLlJpZ2h0PTFdPSJSaWdodCIsZVtlLk5vbmU9Ml09Ik5vbmUiLGVbZS5MZWZ0T2ZJbmplY3RlZFRleHQ9M109IkxlZnRPZkluamVjdGVkVGV4dCIsZVtlLlJpZ2h0T2ZJbmplY3RlZFRleHQ9NF09IlJpZ2h0T2ZJbmplY3RlZFRleHQifShMbnx8KExuPXt9KSksZnVuY3Rpb24oZSl7ZVtlLk9mZj0wXT0iT2ZmIixlW2UuT249MV09Ik9uIixlW2UuUmVsYXRpdmU9Ml09IlJlbGF0aXZlIixlW2UuSW50ZXJ2YWw9M109IkludGVydmFsIixlW2UuQ3VzdG9tPTRdPSJDdXN0b20ifShObnx8KE5uPXt9KSksZnVuY3Rpb24oZSl7ZVtlLk5vbmU9MF09Ik5vbmUiLGVbZS5UZXh0PTFdPSJUZXh0IixlW2UuQmxvY2tzPTJdPSJCbG9ja3MifSh2bnx8KHZuPXt9KSksZnVuY3Rpb24oZSl7ZVtlLlNtb290aD0wXT0iU21vb3RoIixlW2UuSW1tZWRpYXRlPTFdPSJJbW1lZGlhdGUifShFbnx8KEVuPXt9KSksZnVuY3Rpb24oZSl7ZVtlLkF1dG89MV09IkF1dG8iLGVbZS5IaWRkZW49Ml09IkhpZGRlbiIsZVtlLlZpc2libGU9M109IlZpc2libGUifShBbnx8KEFuPXt9KSksZnVuY3Rpb24oZSl7ZVtlLkxUUj0wXT0iTFRSIixlW2UuUlRMPTFdPSJSVEwifShrbnx8KGtuPXt9KSksZnVuY3Rpb24oZSl7ZVtlLkludm9rZT0xXT0iSW52b2tlIixlW2UuVHJpZ2dlckNoYXJhY3Rlcj0yXT0iVHJpZ2dlckNoYXJhY3RlciIsZVtlLkNvbnRlbnRDaGFuZ2U9M109IkNvbnRlbnRDaGFuZ2UifShNbnx8KE1uPXt9KSksZnVuY3Rpb24oZSl7ZVtlLkZpbGU9MF09IkZpbGUiLGVbZS5Nb2R1bGU9MV09Ik1vZHVsZSIsZVtlLk5hbWVzcGFjZT0yXT0iTmFtZXNwYWNlIixlW2UuUGFja2FnZT0zXT0iUGFja2FnZSIsZVtlLkNsYXNzPTRdPSJDbGFzcyIsZVtlLk1ldGhvZD01XT0iTWV0aG9kIixlW2UuUHJvcGVydHk9Nl09IlByb3BlcnR5IixlW2UuRmllbGQ9N109IkZpZWxkIixlW2UuQ29uc3RydWN0b3I9OF09IkNvbnN0cnVjdG9yIixlW2UuRW51bT05XT0iRW51bSIsZVtlLkludGVyZmFjZT0xMF09IkludGVyZmFjZSIsZVtlLkZ1bmN0aW9uPTExXT0iRnVuY3Rpb24iLGVbZS5WYXJpYWJsZT0xMl09IlZhcmlhYmxlIixlW2UuQ29uc3RhbnQ9MTNdPSJDb25zdGFudCIsZVtlLlN0cmluZz0xNF09IlN0cmluZyIsZVtlLk51bWJlcj0xNV09Ik51bWJlciIsZVtlLkJvb2xlYW49MTZdPSJCb29sZWFuIixlW2UuQXJyYXk9MTddPSJBcnJheSIsZVtlLk9iamVjdD0xOF09Ik9iamVjdCIsZVtlLktleT0xOV09IktleSIsZVtlLk51bGw9MjBdPSJOdWxsIixlW2UuRW51bU1lbWJlcj0yMV09IkVudW1NZW1iZXIiLGVbZS5TdHJ1Y3Q9MjJdPSJTdHJ1Y3QiLGVbZS5FdmVudD0yM109IkV2ZW50IixlW2UuT3BlcmF0b3I9MjRdPSJPcGVyYXRvciIsZVtlLlR5cGVQYXJhbWV0ZXI9MjVdPSJUeXBlUGFyYW1ldGVyIn0oUm58fChSbj17fSkpLGZ1bmN0aW9uKGUpe2VbZS5EZXByZWNhdGVkPTFdPSJEZXByZWNhdGVkIn0oT258fChPbj17fSkpLGZ1bmN0aW9uKGUpe2VbZS5IaWRkZW49MF09IkhpZGRlbiIsZVtlLkJsaW5rPTFdPSJCbGluayIsZVtlLlNtb290aD0yXT0iU21vb3RoIixlW2UuUGhhc2U9M109IlBoYXNlIixlW2UuRXhwYW5kPTRdPSJFeHBhbmQiLGVbZS5Tb2xpZD01XT0iU29saWQifSh4bnx8KHhuPXt9KSksZnVuY3Rpb24oZSl7ZVtlLkxpbmU9MV09IkxpbmUiLGVbZS5CbG9jaz0yXT0iQmxvY2siLGVbZS5VbmRlcmxpbmU9M109IlVuZGVybGluZSIsZVtlLkxpbmVUaGluPTRdPSJMaW5lVGhpbiIsZVtlLkJsb2NrT3V0bGluZT01XT0iQmxvY2tPdXRsaW5lIixlW2UuVW5kZXJsaW5lVGhpbj02XT0iVW5kZXJsaW5lVGhpbiJ9KFBufHwoUG49e30pKSxmdW5jdGlvbihlKXtlW2UuQWx3YXlzR3Jvd3NXaGVuVHlwaW5nQXRFZGdlcz0wXT0iQWx3YXlzR3Jvd3NXaGVuVHlwaW5nQXRFZGdlcyIsZVtlLk5ldmVyR3Jvd3NXaGVuVHlwaW5nQXRFZGdlcz0xXT0iTmV2ZXJHcm93c1doZW5UeXBpbmdBdEVkZ2VzIixlW2UuR3Jvd3NPbmx5V2hlblR5cGluZ0JlZm9yZT0yXT0iR3Jvd3NPbmx5V2hlblR5cGluZ0JlZm9yZSIsZVtlLkdyb3dzT25seVdoZW5UeXBpbmdBZnRlcj0zXT0iR3Jvd3NPbmx5V2hlblR5cGluZ0FmdGVyIn0oVG58fChUbj17fSkpLGZ1bmN0aW9uKGUpe2VbZS5Ob25lPTBdPSJOb25lIixlW2UuU2FtZT0xXT0iU2FtZSIsZVtlLkluZGVudD0yXT0iSW5kZW50IixlW2UuRGVlcEluZGVudD0zXT0iRGVlcEluZGVudCJ9KElufHwoSW49e30pKTtjbGFzcyBxbntzdGF0aWMgY2hvcmQoZSx0KXtyZXR1cm4gZnVuY3Rpb24oZSx0KXtyZXR1cm4oZXwoNjU1MzUmdCk8PDE2Pj4+MCk+Pj4wfShlLHQpfX1mdW5jdGlvbiBIbihlLHQsbixyLGkpe3JldHVybiBmdW5jdGlvbihlLHQsbixyLGkpe2lmKDA9PT1yKXJldHVybiEwO2NvbnN0IG89dC5jaGFyQ29kZUF0KHItMSk7aWYoMCE9PWUuZ2V0KG8pKXJldHVybiEwO2lmKDEzPT09b3x8MTA9PT1vKXJldHVybiEwO2lmKGk+MCl7Y29uc3Qgbj10LmNoYXJDb2RlQXQocik7aWYoMCE9PWUuZ2V0KG4pKXJldHVybiEwfXJldHVybiExfShlLHQsMCxyLGkpJiZmdW5jdGlvbihlLHQsbixyLGkpe2lmKHIraT09PW4pcmV0dXJuITA7Y29uc3Qgbz10LmNoYXJDb2RlQXQocitpKTtpZigwIT09ZS5nZXQobykpcmV0dXJuITA7aWYoMTM9PT1vfHwxMD09PW8pcmV0dXJuITA7aWYoaT4wKXtjb25zdCBuPXQuY2hhckNvZGVBdChyK2ktMSk7aWYoMCE9PWUuZ2V0KG4pKXJldHVybiEwfXJldHVybiExfShlLHQsbixyLGkpfXFuLkN0cmxDbWQ9MjA0OCxxbi5TaGlmdD0xMDI0LHFuLkFsdD01MTIscW4uV2luQ3RybD0yNTYsZnVuY3Rpb24oZSl7ZVtlLkxlZnQ9MV09IkxlZnQiLGVbZS5DZW50ZXI9Ml09IkNlbnRlciIsZVtlLlJpZ2h0PTRdPSJSaWdodCIsZVtlLkZ1bGw9N109IkZ1bGwifShLbnx8KEtuPXt9KSksZnVuY3Rpb24oZSl7ZVtlLklubGluZT0xXT0iSW5saW5lIixlW2UuR3V0dGVyPTJdPSJHdXR0ZXIifShEbnx8KERuPXt9KSksZnVuY3Rpb24oZSl7ZVtlLkJvdGg9MF09IkJvdGgiLGVbZS5SaWdodD0xXT0iUmlnaHQiLGVbZS5MZWZ0PTJdPSJMZWZ0IixlW2UuTm9uZT0zXT0iTm9uZSJ9KFZufHwoVm49e30pKTtjbGFzcyBXbntjb25zdHJ1Y3RvcihlLHQpe3RoaXMuX3dvcmRTZXBhcmF0b3JzPWUsdGhpcy5fc2VhcmNoUmVnZXg9dCx0aGlzLl9wcmV2TWF0Y2hTdGFydEluZGV4PS0xLHRoaXMuX3ByZXZNYXRjaExlbmd0aD0wfXJlc2V0KGUpe3RoaXMuX3NlYXJjaFJlZ2V4Lmxhc3RJbmRleD1lLHRoaXMuX3ByZXZNYXRjaFN0YXJ0SW5kZXg9LTEsdGhpcy5fcHJldk1hdGNoTGVuZ3RoPTB9bmV4dChlKXtjb25zdCB0PWUubGVuZ3RoO2xldCBuO2Rve2lmKHRoaXMuX3ByZXZNYXRjaFN0YXJ0SW5kZXgrdGhpcy5fcHJldk1hdGNoTGVuZ3RoPT09dClyZXR1cm4gbnVsbDtpZihuPXRoaXMuX3NlYXJjaFJlZ2V4LmV4ZWMoZSksIW4pcmV0dXJuIG51bGw7Y29uc3Qgcj1uLmluZGV4LGk9blswXS5sZW5ndGg7aWYocj09PXRoaXMuX3ByZXZNYXRjaFN0YXJ0SW5kZXgmJmk9PT10aGlzLl9wcmV2TWF0Y2hMZW5ndGgpe2lmKDA9PT1pKXtKKGUsdCx0aGlzLl9zZWFyY2hSZWdleC5sYXN0SW5kZXgpPjY1NTM1P3RoaXMuX3NlYXJjaFJlZ2V4Lmxhc3RJbmRleCs9Mjp0aGlzLl9zZWFyY2hSZWdleC5sYXN0SW5kZXgrPTE7Y29udGludWV9cmV0dXJuIG51bGx9aWYodGhpcy5fcHJldk1hdGNoU3RhcnRJbmRleD1yLHRoaXMuX3ByZXZNYXRjaExlbmd0aD1pLCF0aGlzLl93b3JkU2VwYXJhdG9yc3x8SG4odGhpcy5fd29yZFNlcGFyYXRvcnMsZSx0LHIsaSkpcmV0dXJuIG59d2hpbGUobik7cmV0dXJuIG51bGx9fWNsYXNzICRue3N0YXRpYyBjb21wdXRlVW5pY29kZUhpZ2hsaWdodHMoZSx0LG4pe2NvbnN0IHI9bj9uLnN0YXJ0TGluZU51bWJlcjoxLGk9bj9uLmVuZExpbmVOdW1iZXI6ZS5nZXRMaW5lQ291bnQoKSxvPW5ldyB6bih0KSxhPW8uZ2V0Q2FuZGlkYXRlQ29kZVBvaW50cygpO2xldCBzO3ZhciBsLGM7cz0iYWxsTm9uQmFzaWNBc2NpaSI9PT1hP25ldyBSZWdFeHAoIlteXFx0XFxuXFxyXFx4MjAtXFx4N0VdIiwiZyIpOm5ldyBSZWdFeHAoIiIrKGw9QXJyYXkuZnJvbShhKSxgWyR7Yz1sLm1hcCgoZT0+U3RyaW5nLmZyb21Db2RlUG9pbnQoZSkpKS5qb2luKCIiKSxjLnJlcGxhY2UoL1tcXFx7XH1cKlwrXD9cfFxeXCRcLlxbXF1cKFwpXS9nLCJcXCQmIil9XWApLCJnIik7Y29uc3QgdT1uZXcgV24obnVsbCxzKSxoPVtdO2xldCBkLGY9ITEsbT0wLGc9MCxiPTA7ZTpmb3IobGV0IHQ9cixuPWk7dDw9bjt0Kyspe2NvbnN0IG49ZS5nZXRMaW5lQ29udGVudCh0KSxyPW4ubGVuZ3RoO3UucmVzZXQoMCk7ZG97aWYoZD11Lm5leHQobiksZCl7bGV0IGU9ZC5pbmRleCxpPWQuaW5kZXgrZFswXS5sZW5ndGg7aWYoZT4wKXtRKG4uY2hhckNvZGVBdChlLTEpKSYmZS0tfWlmKGkrMTxyKXtRKG4uY2hhckNvZGVBdChpLTEpKSYmaSsrfWNvbnN0IGE9bi5zdWJzdHJpbmcoZSxpKSxzPV90KGUrMSxwdCxuLDApLGw9by5zaG91bGRIaWdobGlnaHROb25CYXNpY0FTQ0lJKGEscz9zLndvcmQ6bnVsbCk7aWYoMCE9PWwpezM9PT1sP20rKzoyPT09bD9nKys6MT09PWw/YisrOkcoKTtjb25zdCBuPTFlMztpZihoLmxlbmd0aD49bil7Zj0hMDticmVhayBlfWgucHVzaChuZXcgbnQodCxlKzEsdCxpKzEpKX19fXdoaWxlKGQpfXJldHVybntyYW5nZXM6aCxoYXNNb3JlOmYsYW1iaWd1b3VzQ2hhcmFjdGVyQ291bnQ6bSxpbnZpc2libGVDaGFyYWN0ZXJDb3VudDpnLG5vbkJhc2ljQXNjaWlDaGFyYWN0ZXJDb3VudDpifX1zdGF0aWMgY29tcHV0ZVVuaWNvZGVIaWdobGlnaHRSZWFzb24oZSx0KXtjb25zdCBuPW5ldyB6bih0KTtzd2l0Y2gobi5zaG91bGRIaWdobGlnaHROb25CYXNpY0FTQ0lJKGUsbnVsbCkpe2Nhc2UgMDpyZXR1cm4gbnVsbDtjYXNlIDI6cmV0dXJue2tpbmQ6MX07Y2FzZSAzOntjb25zdCByPWUuY29kZVBvaW50QXQoMCksaT1uLmFtYmlndW91c0NoYXJhY3RlcnMuZ2V0UHJpbWFyeUNvbmZ1c2FibGUociksbz1lZS5nZXRMb2NhbGVzKCkuZmlsdGVyKChlPT4hZWUuZ2V0SW5zdGFuY2UobmV3IFNldChbLi4udC5hbGxvd2VkTG9jYWxlcyxlXSkpLmlzQW1iaWd1b3VzKHIpKSk7cmV0dXJue2tpbmQ6MCxjb25mdXNhYmxlV2l0aDpTdHJpbmcuZnJvbUNvZGVQb2ludChpKSxub3RBbWJpZ3VvdXNJbkxvY2FsZXM6b319Y2FzZSAxOnJldHVybntraW5kOjJ9fX19Y2xhc3Mgem57Y29uc3RydWN0b3IoZSl7dGhpcy5vcHRpb25zPWUsdGhpcy5hbGxvd2VkQ29kZVBvaW50cz1uZXcgU2V0KGUuYWxsb3dlZENvZGVQb2ludHMpLHRoaXMuYW1iaWd1b3VzQ2hhcmFjdGVycz1lZS5nZXRJbnN0YW5jZShuZXcgU2V0KGUuYWxsb3dlZExvY2FsZXMpKX1nZXRDYW5kaWRhdGVDb2RlUG9pbnRzKCl7aWYodGhpcy5vcHRpb25zLm5vbkJhc2ljQVNDSUkpcmV0dXJuImFsbE5vbkJhc2ljQXNjaWkiO2NvbnN0IGU9bmV3IFNldDtpZih0aGlzLm9wdGlvbnMuaW52aXNpYmxlQ2hhcmFjdGVycylmb3IoY29uc3QgdCBvZiB0ZS5jb2RlUG9pbnRzKWpuKFN0cmluZy5mcm9tQ29kZVBvaW50KHQpKXx8ZS5hZGQodCk7aWYodGhpcy5vcHRpb25zLmFtYmlndW91c0NoYXJhY3RlcnMpZm9yKGNvbnN0IHQgb2YgdGhpcy5hbWJpZ3VvdXNDaGFyYWN0ZXJzLmdldENvbmZ1c2FibGVDb2RlUG9pbnRzKCkpZS5hZGQodCk7Zm9yKGNvbnN0IHQgb2YgdGhpcy5hbGxvd2VkQ29kZVBvaW50cyllLmRlbGV0ZSh0KTtyZXR1cm4gZX1zaG91bGRIaWdobGlnaHROb25CYXNpY0FTQ0lJKGUsdCl7Y29uc3Qgbj1lLmNvZGVQb2ludEF0KDApO2lmKHRoaXMuYWxsb3dlZENvZGVQb2ludHMuaGFzKG4pKXJldHVybiAwO2lmKHRoaXMub3B0aW9ucy5ub25CYXNpY0FTQ0lJKXJldHVybiAxO2xldCByPSExLGk9ITE7aWYodClmb3IoY29uc3QgZSBvZiB0KXtjb25zdCB0PWUuY29kZVBvaW50QXQoMCksbj0obz1lLFgudGVzdChvKSk7cj1yfHxuLG58fHRoaXMuYW1iaWd1b3VzQ2hhcmFjdGVycy5pc0FtYmlndW91cyh0KXx8dGUuaXNJbnZpc2libGVDaGFyYWN0ZXIodCl8fChpPSEwKX12YXIgbztyZXR1cm4hciYmaT8wOnRoaXMub3B0aW9ucy5pbnZpc2libGVDaGFyYWN0ZXJzJiYham4oZSkmJnRlLmlzSW52aXNpYmxlQ2hhcmFjdGVyKG4pPzI6dGhpcy5vcHRpb25zLmFtYmlndW91c0NoYXJhY3RlcnMmJnRoaXMuYW1iaWd1b3VzQ2hhcmFjdGVycy5pc0FtYmlndW91cyhuKT8zOjB9fWZ1bmN0aW9uIGpuKGUpe3JldHVybiIgIj09PWV8fCJcbiI9PT1lfHwiXHQiPT09ZX12YXIgR249ZnVuY3Rpb24oZSx0LG4scil7cmV0dXJuIG5ldyhufHwobj1Qcm9taXNlKSkoKGZ1bmN0aW9uKGksbyl7ZnVuY3Rpb24gYShlKXt0cnl7bChyLm5leHQoZSkpfWNhdGNoKGUpe28oZSl9fWZ1bmN0aW9uIHMoZSl7dHJ5e2woci50aHJvdyhlKSl9Y2F0Y2goZSl7byhlKX19ZnVuY3Rpb24gbChlKXt2YXIgdDtlLmRvbmU/aShlLnZhbHVlKToodD1lLnZhbHVlLHQgaW5zdGFuY2VvZiBuP3Q6bmV3IG4oKGZ1bmN0aW9uKGUpe2UodCl9KSkpLnRoZW4oYSxzKX1sKChyPXIuYXBwbHkoZSx0fHxbXSkpLm5leHQoKSl9KSl9O2NsYXNzIFluIGV4dGVuZHMgQ3R7Z2V0IHVyaSgpe3JldHVybiB0aGlzLl91cml9Z2V0IGVvbCgpe3JldHVybiB0aGlzLl9lb2x9Z2V0VmFsdWUoKXtyZXR1cm4gdGhpcy5nZXRUZXh0KCl9Z2V0TGluZXNDb250ZW50KCl7cmV0dXJuIHRoaXMuX2xpbmVzLnNsaWNlKDApfWdldExpbmVDb3VudCgpe3JldHVybiB0aGlzLl9saW5lcy5sZW5ndGh9Z2V0TGluZUNvbnRlbnQoZSl7cmV0dXJuIHRoaXMuX2xpbmVzW2UtMV19Z2V0V29yZEF0UG9zaXRpb24oZSx0KXtjb25zdCBuPV90KGUuY29sdW1uLGZ1bmN0aW9uKGUpe2xldCB0PXB0O2lmKGUmJmUgaW5zdGFuY2VvZiBSZWdFeHApaWYoZS5nbG9iYWwpdD1lO2Vsc2V7bGV0IG49ImciO2UuaWdub3JlQ2FzZSYmKG4rPSJpIiksZS5tdWx0aWxpbmUmJihuKz0ibSIpLGUudW5pY29kZSYmKG4rPSJ1IiksdD1uZXcgUmVnRXhwKGUuc291cmNlLG4pfXJldHVybiB0Lmxhc3RJbmRleD0wLHR9KHQpLHRoaXMuX2xpbmVzW2UubGluZU51bWJlci0xXSwwKTtyZXR1cm4gbj9uZXcgbnQoZS5saW5lTnVtYmVyLG4uc3RhcnRDb2x1bW4sZS5saW5lTnVtYmVyLG4uZW5kQ29sdW1uKTpudWxsfXdvcmRzKGUpe2NvbnN0IHQ9dGhpcy5fbGluZXMsbj10aGlzLl93b3JkZW5pemUuYmluZCh0aGlzKTtsZXQgcj0wLGk9IiIsbz0wLGE9W107cmV0dXJueypbU3ltYm9sLml0ZXJhdG9yXSgpe2Zvcig7OylpZihvPGEubGVuZ3RoKXtjb25zdCBlPWkuc3Vic3RyaW5nKGFbb10uc3RhcnQsYVtvXS5lbmQpO28rPTEseWllbGQgZX1lbHNle2lmKCEocjx0Lmxlbmd0aCkpYnJlYWs7aT10W3JdLGE9bihpLGUpLG89MCxyKz0xfX19fWdldExpbmVXb3JkcyhlLHQpe2NvbnN0IG49dGhpcy5fbGluZXNbZS0xXSxyPXRoaXMuX3dvcmRlbml6ZShuLHQpLGk9W107Zm9yKGNvbnN0IGUgb2YgcilpLnB1c2goe3dvcmQ6bi5zdWJzdHJpbmcoZS5zdGFydCxlLmVuZCksc3RhcnRDb2x1bW46ZS5zdGFydCsxLGVuZENvbHVtbjplLmVuZCsxfSk7cmV0dXJuIGl9X3dvcmRlbml6ZShlLHQpe2NvbnN0IG49W107bGV0IHI7Zm9yKHQubGFzdEluZGV4PTA7KHI9dC5leGVjKGUpKSYmMCE9PXJbMF0ubGVuZ3RoOyluLnB1c2goe3N0YXJ0OnIuaW5kZXgsZW5kOnIuaW5kZXgrclswXS5sZW5ndGh9KTtyZXR1cm4gbn1nZXRWYWx1ZUluUmFuZ2UoZSl7aWYoKGU9dGhpcy5fdmFsaWRhdGVSYW5nZShlKSkuc3RhcnRMaW5lTnVtYmVyPT09ZS5lbmRMaW5lTnVtYmVyKXJldHVybiB0aGlzLl9saW5lc1tlLnN0YXJ0TGluZU51bWJlci0xXS5zdWJzdHJpbmcoZS5zdGFydENvbHVtbi0xLGUuZW5kQ29sdW1uLTEpO2NvbnN0IHQ9dGhpcy5fZW9sLG49ZS5zdGFydExpbmVOdW1iZXItMSxyPWUuZW5kTGluZU51bWJlci0xLGk9W107aS5wdXNoKHRoaXMuX2xpbmVzW25dLnN1YnN0cmluZyhlLnN0YXJ0Q29sdW1uLTEpKTtmb3IobGV0IGU9bisxO2U8cjtlKyspaS5wdXNoKHRoaXMuX2xpbmVzW2VdKTtyZXR1cm4gaS5wdXNoKHRoaXMuX2xpbmVzW3JdLnN1YnN0cmluZygwLGUuZW5kQ29sdW1uLTEpKSxpLmpvaW4odCl9b2Zmc2V0QXQoZSl7cmV0dXJuIGU9dGhpcy5fdmFsaWRhdGVQb3NpdGlvbihlKSx0aGlzLl9lbnN1cmVMaW5lU3RhcnRzKCksdGhpcy5fbGluZVN0YXJ0cy5nZXRQcmVmaXhTdW0oZS5saW5lTnVtYmVyLTIpKyhlLmNvbHVtbi0xKX1wb3NpdGlvbkF0KGUpe2U9TWF0aC5mbG9vcihlKSxlPU1hdGgubWF4KDAsZSksdGhpcy5fZW5zdXJlTGluZVN0YXJ0cygpO2NvbnN0IHQ9dGhpcy5fbGluZVN0YXJ0cy5nZXRJbmRleE9mKGUpLG49dGhpcy5fbGluZXNbdC5pbmRleF0ubGVuZ3RoO3JldHVybntsaW5lTnVtYmVyOjErdC5pbmRleCxjb2x1bW46MStNYXRoLm1pbih0LnJlbWFpbmRlcixuKX19X3ZhbGlkYXRlUmFuZ2UoZSl7Y29uc3QgdD10aGlzLl92YWxpZGF0ZVBvc2l0aW9uKHtsaW5lTnVtYmVyOmUuc3RhcnRMaW5lTnVtYmVyLGNvbHVtbjplLnN0YXJ0Q29sdW1ufSksbj10aGlzLl92YWxpZGF0ZVBvc2l0aW9uKHtsaW5lTnVtYmVyOmUuZW5kTGluZU51bWJlcixjb2x1bW46ZS5lbmRDb2x1bW59KTtyZXR1cm4gdC5saW5lTnVtYmVyIT09ZS5zdGFydExpbmVOdW1iZXJ8fHQuY29sdW1uIT09ZS5zdGFydENvbHVtbnx8bi5saW5lTnVtYmVyIT09ZS5lbmRMaW5lTnVtYmVyfHxuLmNvbHVtbiE9PWUuZW5kQ29sdW1uP3tzdGFydExpbmVOdW1iZXI6dC5saW5lTnVtYmVyLHN0YXJ0Q29sdW1uOnQuY29sdW1uLGVuZExpbmVOdW1iZXI6bi5saW5lTnVtYmVyLGVuZENvbHVtbjpuLmNvbHVtbn06ZX1fdmFsaWRhdGVQb3NpdGlvbihlKXtpZighdHQuaXNJUG9zaXRpb24oZSkpdGhyb3cgbmV3IEVycm9yKCJiYWQgcG9zaXRpb24iKTtsZXR7bGluZU51bWJlcjp0LGNvbHVtbjpufT1lLHI9ITE7aWYodDwxKXQ9MSxuPTEscj0hMDtlbHNlIGlmKHQ+dGhpcy5fbGluZXMubGVuZ3RoKXQ9dGhpcy5fbGluZXMubGVuZ3RoLG49dGhpcy5fbGluZXNbdC0xXS5sZW5ndGgrMSxyPSEwO2Vsc2V7Y29uc3QgZT10aGlzLl9saW5lc1t0LTFdLmxlbmd0aCsxO248MT8obj0xLHI9ITApOm4+ZSYmKG49ZSxyPSEwKX1yZXR1cm4gcj97bGluZU51bWJlcjp0LGNvbHVtbjpufTplfX1jbGFzcyBabntjb25zdHJ1Y3RvcihlLHQpe3RoaXMuX2hvc3Q9ZSx0aGlzLl9tb2RlbHM9T2JqZWN0LmNyZWF0ZShudWxsKSx0aGlzLl9mb3JlaWduTW9kdWxlRmFjdG9yeT10LHRoaXMuX2ZvcmVpZ25Nb2R1bGU9bnVsbH1kaXNwb3NlKCl7dGhpcy5fbW9kZWxzPU9iamVjdC5jcmVhdGUobnVsbCl9X2dldE1vZGVsKGUpe3JldHVybiB0aGlzLl9tb2RlbHNbZV19X2dldE1vZGVscygpe2NvbnN0IGU9W107cmV0dXJuIE9iamVjdC5rZXlzKHRoaXMuX21vZGVscykuZm9yRWFjaCgodD0+ZS5wdXNoKHRoaXMuX21vZGVsc1t0XSkpKSxlfWFjY2VwdE5ld01vZGVsKGUpe3RoaXMuX21vZGVsc1tlLnVybF09bmV3IFluKFdlLnBhcnNlKGUudXJsKSxlLmxpbmVzLGUuRU9MLGUudmVyc2lvbklkKX1hY2NlcHRNb2RlbENoYW5nZWQoZSx0KXtpZighdGhpcy5fbW9kZWxzW2VdKXJldHVybjt0aGlzLl9tb2RlbHNbZV0ub25FdmVudHModCl9YWNjZXB0UmVtb3ZlZE1vZGVsKGUpe3RoaXMuX21vZGVsc1tlXSYmZGVsZXRlIHRoaXMuX21vZGVsc1tlXX1jb21wdXRlVW5pY29kZUhpZ2hsaWdodHMoZSx0LG4pe3JldHVybiBHbih0aGlzLHZvaWQgMCx2b2lkIDAsKGZ1bmN0aW9uKigpe2NvbnN0IHI9dGhpcy5fZ2V0TW9kZWwoZSk7cmV0dXJuIHI/JG4uY29tcHV0ZVVuaWNvZGVIaWdobGlnaHRzKHIsdCxuKTp7cmFuZ2VzOltdLGhhc01vcmU6ITEsYW1iaWd1b3VzQ2hhcmFjdGVyQ291bnQ6MCxpbnZpc2libGVDaGFyYWN0ZXJDb3VudDowLG5vbkJhc2ljQXNjaWlDaGFyYWN0ZXJDb3VudDowfX0pKX1jb21wdXRlRGlmZihlLHQsbixyKXtyZXR1cm4gR24odGhpcyx2b2lkIDAsdm9pZCAwLChmdW5jdGlvbiooKXtjb25zdCBpPXRoaXMuX2dldE1vZGVsKGUpLG89dGhpcy5fZ2V0TW9kZWwodCk7cmV0dXJuIGkmJm8/Wm4uY29tcHV0ZURpZmYoaSxvLG4scik6bnVsbH0pKX1zdGF0aWMgY29tcHV0ZURpZmYoZSx0LG4scil7Y29uc3QgaT1lLmdldExpbmVzQ29udGVudCgpLG89dC5nZXRMaW5lc0NvbnRlbnQoKSxhPW5ldyBsdChpLG8se3Nob3VsZENvbXB1dGVDaGFyQ2hhbmdlczohMCxzaG91bGRQb3N0UHJvY2Vzc0NoYXJDaGFuZ2VzOiEwLHNob3VsZElnbm9yZVRyaW1XaGl0ZXNwYWNlOm4sc2hvdWxkTWFrZVByZXR0eURpZmY6ITAsbWF4Q29tcHV0YXRpb25UaW1lOnJ9KS5jb21wdXRlRGlmZigpLHM9IShhLmNoYW5nZXMubGVuZ3RoPjApJiZ0aGlzLl9tb2RlbHNBcmVJZGVudGljYWwoZSx0KTtyZXR1cm57cXVpdEVhcmx5OmEucXVpdEVhcmx5LGlkZW50aWNhbDpzLGNoYW5nZXM6YS5jaGFuZ2VzfX1zdGF0aWMgX21vZGVsc0FyZUlkZW50aWNhbChlLHQpe2NvbnN0IG49ZS5nZXRMaW5lQ291bnQoKTtpZihuIT09dC5nZXRMaW5lQ291bnQoKSlyZXR1cm4hMTtmb3IobGV0IHI9MTtyPD1uO3IrKyl7aWYoZS5nZXRMaW5lQ29udGVudChyKSE9PXQuZ2V0TGluZUNvbnRlbnQocikpcmV0dXJuITF9cmV0dXJuITB9Y29tcHV0ZU1vcmVNaW5pbWFsRWRpdHMoZSx0KXtyZXR1cm4gR24odGhpcyx2b2lkIDAsdm9pZCAwLChmdW5jdGlvbiooKXtjb25zdCBuPXRoaXMuX2dldE1vZGVsKGUpO2lmKCFuKXJldHVybiB0O2NvbnN0IHI9W107bGV0IGk7dD10LnNsaWNlKDApLnNvcnQoKChlLHQpPT57aWYoZS5yYW5nZSYmdC5yYW5nZSlyZXR1cm4gbnQuY29tcGFyZVJhbmdlc1VzaW5nU3RhcnRzKGUucmFuZ2UsdC5yYW5nZSk7cmV0dXJuKGUucmFuZ2U/MDoxKS0odC5yYW5nZT8wOjEpfSkpO2ZvcihsZXR7cmFuZ2U6ZSx0ZXh0Om8sZW9sOmF9b2YgdCl7aWYoIm51bWJlciI9PXR5cGVvZiBhJiYoaT1hKSxudC5pc0VtcHR5KGUpJiYhbyljb250aW51ZTtjb25zdCB0PW4uZ2V0VmFsdWVJblJhbmdlKGUpO2lmKG89by5yZXBsYWNlKC9cclxufFxufFxyL2csbi5lb2wpLHQ9PT1vKWNvbnRpbnVlO2lmKE1hdGgubWF4KG8ubGVuZ3RoLHQubGVuZ3RoKT5abi5fZGlmZkxpbWl0KXtyLnB1c2goe3JhbmdlOmUsdGV4dDpvfSk7Y29udGludWV9Y29uc3Qgcz1nZSh0LG8sITEpLGw9bi5vZmZzZXRBdChudC5saWZ0KGUpLmdldFN0YXJ0UG9zaXRpb24oKSk7Zm9yKGNvbnN0IGUgb2Ygcyl7Y29uc3QgdD1uLnBvc2l0aW9uQXQobCtlLm9yaWdpbmFsU3RhcnQpLGk9bi5wb3NpdGlvbkF0KGwrZS5vcmlnaW5hbFN0YXJ0K2Uub3JpZ2luYWxMZW5ndGgpLGE9e3RleHQ6by5zdWJzdHIoZS5tb2RpZmllZFN0YXJ0LGUubW9kaWZpZWRMZW5ndGgpLHJhbmdlOntzdGFydExpbmVOdW1iZXI6dC5saW5lTnVtYmVyLHN0YXJ0Q29sdW1uOnQuY29sdW1uLGVuZExpbmVOdW1iZXI6aS5saW5lTnVtYmVyLGVuZENvbHVtbjppLmNvbHVtbn19O24uZ2V0VmFsdWVJblJhbmdlKGEucmFuZ2UpIT09YS50ZXh0JiZyLnB1c2goYSl9fXJldHVybiJudW1iZXIiPT10eXBlb2YgaSYmci5wdXNoKHtlb2w6aSx0ZXh0OiIiLHJhbmdlOntzdGFydExpbmVOdW1iZXI6MCxzdGFydENvbHVtbjowLGVuZExpbmVOdW1iZXI6MCxlbmRDb2x1bW46MH19KSxyfSkpfWNvbXB1dGVMaW5rcyhlKXtyZXR1cm4gR24odGhpcyx2b2lkIDAsdm9pZCAwLChmdW5jdGlvbiooKXtjb25zdCB0PXRoaXMuX2dldE1vZGVsKGUpO3JldHVybiB0P2Z1bmN0aW9uKGUpe3JldHVybiBlJiYiZnVuY3Rpb24iPT10eXBlb2YgZS5nZXRMaW5lQ291bnQmJiJmdW5jdGlvbiI9PXR5cGVvZiBlLmdldExpbmVDb250ZW50P0F0LmNvbXB1dGVMaW5rcyhlKTpbXX0odCk6bnVsbH0pKX10ZXh0dWFsU3VnZ2VzdChlLHQsbixyKXtyZXR1cm4gR24odGhpcyx2b2lkIDAsdm9pZCAwLChmdW5jdGlvbiooKXtjb25zdCBpPW5ldyBEKCEwKSxvPW5ldyBSZWdFeHAobixyKSxhPW5ldyBTZXQ7ZTpmb3IoY29uc3QgbiBvZiBlKXtjb25zdCBlPXRoaXMuX2dldE1vZGVsKG4pO2lmKGUpZm9yKGNvbnN0IG4gb2YgZS53b3JkcyhvKSlpZihuIT09dCYmaXNOYU4oTnVtYmVyKG4pKSYmKGEuYWRkKG4pLGEuc2l6ZT5abi5fc3VnZ2VzdGlvbnNMaW1pdCkpYnJlYWsgZX1yZXR1cm57d29yZHM6QXJyYXkuZnJvbShhKSxkdXJhdGlvbjppLmVsYXBzZWQoKX19KSl9Y29tcHV0ZVdvcmRSYW5nZXMoZSx0LG4scil7cmV0dXJuIEduKHRoaXMsdm9pZCAwLHZvaWQgMCwoZnVuY3Rpb24qKCl7Y29uc3QgaT10aGlzLl9nZXRNb2RlbChlKTtpZighaSlyZXR1cm4gT2JqZWN0LmNyZWF0ZShudWxsKTtjb25zdCBvPW5ldyBSZWdFeHAobixyKSxhPU9iamVjdC5jcmVhdGUobnVsbCk7Zm9yKGxldCBlPXQuc3RhcnRMaW5lTnVtYmVyO2U8dC5lbmRMaW5lTnVtYmVyO2UrKyl7Y29uc3QgdD1pLmdldExpbmVXb3JkcyhlLG8pO2Zvcihjb25zdCBuIG9mIHQpe2lmKCFpc05hTihOdW1iZXIobi53b3JkKSkpY29udGludWU7bGV0IHQ9YVtuLndvcmRdO3R8fCh0PVtdLGFbbi53b3JkXT10KSx0LnB1c2goe3N0YXJ0TGluZU51bWJlcjplLHN0YXJ0Q29sdW1uOm4uc3RhcnRDb2x1bW4sZW5kTGluZU51bWJlcjplLGVuZENvbHVtbjpuLmVuZENvbHVtbn0pfX1yZXR1cm4gYX0pKX1uYXZpZ2F0ZVZhbHVlU2V0KGUsdCxuLHIsaSl7cmV0dXJuIEduKHRoaXMsdm9pZCAwLHZvaWQgMCwoZnVuY3Rpb24qKCl7Y29uc3Qgbz10aGlzLl9nZXRNb2RlbChlKTtpZighbylyZXR1cm4gbnVsbDtjb25zdCBhPW5ldyBSZWdFeHAocixpKTt0LnN0YXJ0Q29sdW1uPT09dC5lbmRDb2x1bW4mJih0PXtzdGFydExpbmVOdW1iZXI6dC5zdGFydExpbmVOdW1iZXIsc3RhcnRDb2x1bW46dC5zdGFydENvbHVtbixlbmRMaW5lTnVtYmVyOnQuZW5kTGluZU51bWJlcixlbmRDb2x1bW46dC5lbmRDb2x1bW4rMX0pO2NvbnN0IHM9by5nZXRWYWx1ZUluUmFuZ2UodCksbD1vLmdldFdvcmRBdFBvc2l0aW9uKHtsaW5lTnVtYmVyOnQuc3RhcnRMaW5lTnVtYmVyLGNvbHVtbjp0LnN0YXJ0Q29sdW1ufSxhKTtpZighbClyZXR1cm4gbnVsbDtjb25zdCBjPW8uZ2V0VmFsdWVJblJhbmdlKGwpO3JldHVybiBrdC5JTlNUQU5DRS5uYXZpZ2F0ZVZhbHVlU2V0KHQscyxsLGMsbil9KSl9bG9hZEZvcmVpZ25Nb2R1bGUoZSx0LG4pe2NvbnN0IHI9ZnVuY3Rpb24oZSx0KXtjb25zdCBuPWU9PmZ1bmN0aW9uKCl7Y29uc3Qgbj1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMCk7cmV0dXJuIHQoZSxuKX0scj17fTtmb3IoY29uc3QgdCBvZiBlKXJbdF09bih0KTtyZXR1cm4gcn0obiwoKGUsdCk9PnRoaXMuX2hvc3QuZmhyKGUsdCkpKSxpPXtob3N0OnIsZ2V0TWlycm9yTW9kZWxzOigpPT50aGlzLl9nZXRNb2RlbHMoKX07cmV0dXJuIHRoaXMuX2ZvcmVpZ25Nb2R1bGVGYWN0b3J5Pyh0aGlzLl9mb3JlaWduTW9kdWxlPXRoaXMuX2ZvcmVpZ25Nb2R1bGVGYWN0b3J5KGksdCksUHJvbWlzZS5yZXNvbHZlKGoodGhpcy5fZm9yZWlnbk1vZHVsZSkpKTpQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoIlVuZXhwZWN0ZWQgdXNhZ2UiKSl9Zm1yKGUsdCl7aWYoIXRoaXMuX2ZvcmVpZ25Nb2R1bGV8fCJmdW5jdGlvbiIhPXR5cGVvZiB0aGlzLl9mb3JlaWduTW9kdWxlW2VdKXJldHVybiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoIk1pc3NpbmcgcmVxdWVzdEhhbmRsZXIgb3IgbWV0aG9kOiAiK2UpKTt0cnl7cmV0dXJuIFByb21pc2UucmVzb2x2ZSh0aGlzLl9mb3JlaWduTW9kdWxlW2VdLmFwcGx5KHRoaXMuX2ZvcmVpZ25Nb2R1bGUsdCkpfWNhdGNoKGUpe3JldHVybiBQcm9taXNlLnJlamVjdChlKX19fVpuLl9kaWZmTGltaXQ9MWU1LFpuLl9zdWdnZXN0aW9uc0xpbWl0PTFlNCwiZnVuY3Rpb24iPT10eXBlb2YgaW1wb3J0U2NyaXB0cyYmKGsubW9uYWNvPXtlZGl0b3I6dm9pZCAwLGxhbmd1YWdlczp2b2lkIDAsQ2FuY2VsbGF0aW9uVG9rZW5Tb3VyY2U6eHQsRW1pdHRlcjpILEtleUNvZGU6Ym4sS2V5TW9kOnFuLFBvc2l0aW9uOnR0LFJhbmdlOm50LFNlbGVjdGlvbjpxdCxTZWxlY3Rpb25EaXJlY3Rpb246a24sTWFya2VyU2V2ZXJpdHk6Q24sTWFya2VyVGFnOnBuLFVyaTpXZSxUb2tlbjpVbn0pO2xldCBRbj0hMTtmdW5jdGlvbiBKbihlKXtpZihRbilyZXR1cm47UW49ITA7Y29uc3QgdD1uZXcgdWUoKGU9PntzZWxmLnBvc3RNZXNzYWdlKGUpfSksKHQ9Pm5ldyBabih0LGUpKSk7c2VsZi5vbm1lc3NhZ2U9ZT0+e3Qub25tZXNzYWdlKGUuZGF0YSl9fXJldHVybiBzZWxmLm9ubWVzc2FnZT1lPT57UW58fEpuKG51bGwpfSxlLmluaXRpYWxpemU9Sm4sZX0oe30pOwovLyMgc291cmNlTWFwcGluZ1VSTD1lZGl0b3Iud29ya2VyLmpzLm1hcAoK', null, false);
31
+ var WorkerFactory$2 = 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);
32
32
  /* eslint-enable */
33
33
 
34
+ var WorkerFactory$1 = createBase64WorkerFactory('Lyogcm9sbHVwLXBsdWdpbi13ZWItd29ya2VyLWxvYWRlciAqLwohZnVuY3Rpb24oZSx0LG4sYSxpLHMsbyxyLGMsZyxoLGwsZCx1LF8sbSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGsoZSl7dmFyIHQ9T2JqZWN0LmNyZWF0ZShudWxsKTtyZXR1cm4gZSYmT2JqZWN0LmtleXMoZSkuZm9yRWFjaCgoZnVuY3Rpb24obil7aWYoImRlZmF1bHQiIT09bil7dmFyIGE9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLG4pO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LG4sYS5nZXQ/YTp7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZVtuXX19KX19KSksdC5kZWZhdWx0PWUsT2JqZWN0LmZyZWV6ZSh0KX12YXIgUz1rKG4pO2NsYXNzIHB7Y29uc3RydWN0b3IoKXt0aGlzLl9zY29wZU5hbWVUb0xhbmd1YWdlUmVnaXN0cmF0aW9uPU9iamVjdC5jcmVhdGUobnVsbCl9cmVzZXQoKXt0aGlzLl9zY29wZU5hbWVUb0xhbmd1YWdlUmVnaXN0cmF0aW9uPU9iamVjdC5jcmVhdGUobnVsbCl9cmVnaXN0ZXIoZSl7aWYodGhpcy5fc2NvcGVOYW1lVG9MYW5ndWFnZVJlZ2lzdHJhdGlvbltlLnNjb3BlTmFtZV0pe2NvbnN0IHQ9dGhpcy5fc2NvcGVOYW1lVG9MYW5ndWFnZVJlZ2lzdHJhdGlvbltlLnNjb3BlTmFtZV07Uy5pc0VxdWFsKHQubG9jYXRpb24sZS5sb2NhdGlvbil8fGNvbnNvbGUud2FybihgT3ZlcndyaXRpbmcgZ3JhbW1hciBzY29wZSBuYW1lIHRvIGZpbGUgbWFwcGluZyBmb3Igc2NvcGUgJHtlLnNjb3BlTmFtZX0uXG5PbGQgZ3JhbW1hciBmaWxlOiAke3QubG9jYXRpb24udG9TdHJpbmcoKX0uXG5OZXcgZ3JhbW1hciBmaWxlOiAke2UubG9jYXRpb24udG9TdHJpbmcoKX1gKX10aGlzLl9zY29wZU5hbWVUb0xhbmd1YWdlUmVnaXN0cmF0aW9uW2Uuc2NvcGVOYW1lXT1lfWdldEdyYW1tYXJEZWZpbml0aW9uKGUpe3JldHVybiB0aGlzLl9zY29wZU5hbWVUb0xhbmd1YWdlUmVnaXN0cmF0aW9uW2VdfHxudWxsfX1jb25zdCBUPSJObyBUTSBHcmFtbWFyIHJlZ2lzdGVyZWQgZm9yIHRoaXMgbGFuZ3VhZ2UuIjtjbGFzcyBmIGV4dGVuZHMgdC5EaXNwb3NhYmxle2NvbnN0cnVjdG9yKGUsdCxuLGEpe3N1cGVyKCksdGhpcy5faG9zdD1lLHRoaXMuX2luaXRpYWxTdGF0ZT1uLklOSVRJQUwsdGhpcy5fc2NvcGVSZWdpc3RyeT1uZXcgcCx0aGlzLl9pbmplY3Rpb25zPXt9LHRoaXMuX2luamVjdGVkRW1iZWRkZWRMYW5ndWFnZXM9e30sdGhpcy5fbGFuZ3VhZ2VUb1Njb3BlPW5ldyBNYXAsdGhpcy5fZ3JhbW1hclJlZ2lzdHJ5PXRoaXMuX3JlZ2lzdGVyKG5ldyBuLlJlZ2lzdHJ5KHtvbmlnTGliOmEsbG9hZEdyYW1tYXI6YXN5bmMgZT0+e2NvbnN0IHQ9dGhpcy5fc2NvcGVSZWdpc3RyeS5nZXRHcmFtbWFyRGVmaW5pdGlvbihlKTtpZighdClyZXR1cm4gdGhpcy5faG9zdC5sb2dUcmFjZShgTm8gZ3JhbW1hciBmb3VuZCBmb3Igc2NvcGUgJHtlfWApLG51bGw7Y29uc3QgYT10LmxvY2F0aW9uO3RyeXtjb25zdCBlPWF3YWl0IHRoaXMuX2hvc3QucmVhZEZpbGUoYSk7cmV0dXJuIG4ucGFyc2VSYXdHcmFtbWFyKGUsYS5wYXRoKX1jYXRjaCh0KXtyZXR1cm4gdGhpcy5faG9zdC5sb2dFcnJvcihgVW5hYmxlIHRvIGxvYWQgYW5kIHBhcnNlIGdyYW1tYXIgZm9yIHNjb3BlICR7ZX0gZnJvbSAke2F9YCx0KSxudWxsfX0sZ2V0SW5qZWN0aW9uczplPT57Y29uc3QgdD1lLnNwbGl0KCIuIik7bGV0IG49W107Zm9yKGxldCBlPTE7ZTw9dC5sZW5ndGg7ZSsrKXtjb25zdCBhPXQuc2xpY2UoMCxlKS5qb2luKCIuIik7bj1bLi4ubiwuLi50aGlzLl9pbmplY3Rpb25zW2FdfHxbXV19cmV0dXJuIG59fSkpO2Zvcihjb25zdCBlIG9mIHQpe2lmKHRoaXMuX3Njb3BlUmVnaXN0cnkucmVnaXN0ZXIoZSksZS5pbmplY3RUbyl7Zm9yKGNvbnN0IHQgb2YgZS5pbmplY3RUbyl7bGV0IG49dGhpcy5faW5qZWN0aW9uc1t0XTtufHwodGhpcy5faW5qZWN0aW9uc1t0XT1uPVtdKSxuLnB1c2goZS5zY29wZU5hbWUpfWlmKGUuZW1iZWRkZWRMYW5ndWFnZXMpZm9yKGNvbnN0IHQgb2YgZS5pbmplY3RUbyl7bGV0IG49dGhpcy5faW5qZWN0ZWRFbWJlZGRlZExhbmd1YWdlc1t0XTtufHwodGhpcy5faW5qZWN0ZWRFbWJlZGRlZExhbmd1YWdlc1t0XT1uPVtdKSxuLnB1c2goZS5lbWJlZGRlZExhbmd1YWdlcyl9fWUubGFuZ3VhZ2UmJnRoaXMuX2xhbmd1YWdlVG9TY29wZS5zZXQoZS5sYW5ndWFnZSxlLnNjb3BlTmFtZSl9fWhhcyhlKXtyZXR1cm4gdGhpcy5fbGFuZ3VhZ2VUb1Njb3BlLmhhcyhlKX1zZXRUaGVtZShlLHQpe3RoaXMuX2dyYW1tYXJSZWdpc3RyeS5zZXRUaGVtZShlLHQpfWdldENvbG9yTWFwKCl7cmV0dXJuIHRoaXMuX2dyYW1tYXJSZWdpc3RyeS5nZXRDb2xvck1hcCgpfWFzeW5jIGNyZWF0ZUdyYW1tYXIoZSx0KXtjb25zdCBuPXRoaXMuX2xhbmd1YWdlVG9TY29wZS5nZXQoZSk7aWYoInN0cmluZyIhPXR5cGVvZiBuKXRocm93IG5ldyBFcnJvcihUKTtjb25zdCBhPXRoaXMuX3Njb3BlUmVnaXN0cnkuZ2V0R3JhbW1hckRlZmluaXRpb24obik7aWYoIWEpdGhyb3cgbmV3IEVycm9yKFQpO2NvbnN0IGk9YS5lbWJlZGRlZExhbmd1YWdlcztpZih0aGlzLl9pbmplY3RlZEVtYmVkZGVkTGFuZ3VhZ2VzW25dKXtjb25zdCBlPXRoaXMuX2luamVjdGVkRW1iZWRkZWRMYW5ndWFnZXNbbl07Zm9yKGNvbnN0IHQgb2YgZSlmb3IoY29uc3QgZSBvZiBPYmplY3Qua2V5cyh0KSlpW2VdPXRbZV19Y29uc3Qgcz1PYmplY3Qua2V5cyhpKS5sZW5ndGg+MDtsZXQgbzt0cnl7bz1hd2FpdCB0aGlzLl9ncmFtbWFyUmVnaXN0cnkubG9hZEdyYW1tYXJXaXRoQ29uZmlndXJhdGlvbihuLHQse2VtYmVkZGVkTGFuZ3VhZ2VzOmksdG9rZW5UeXBlczphLnRva2VuVHlwZXMsYmFsYW5jZWRCcmFja2V0U2VsZWN0b3JzOmEuYmFsYW5jZWRCcmFja2V0U2VsZWN0b3JzLHVuYmFsYW5jZWRCcmFja2V0U2VsZWN0b3JzOmEudW5iYWxhbmNlZEJyYWNrZXRTZWxlY3RvcnN9KX1jYXRjaChlKXtpZihlLm1lc3NhZ2UmJmUubWVzc2FnZS5zdGFydHNXaXRoKCJObyBncmFtbWFyIHByb3ZpZGVkIGZvciIpKXRocm93IG5ldyBFcnJvcihUKTt0aHJvdyBlfXJldHVybntsYW5ndWFnZUlkOmUsZ3JhbW1hcjpvLGluaXRpYWxTdGF0ZTp0aGlzLl9pbml0aWFsU3RhdGUsY29udGFpbnNFbWJlZGRlZExhbmd1YWdlczpzfX19Y2xhc3MgTCBleHRlbmRzIHQuRGlzcG9zYWJsZXtjb25zdHJ1Y3RvcihlLHQsbixhLGk9KCgpPT4hMSkpe3N1cGVyKCksdGhpcy5fZ3JhbW1hcj1lLHRoaXMuX2luaXRpYWxTdGF0ZT10LHRoaXMuX2NvbnRhaW5zRW1iZWRkZWRMYW5ndWFnZXM9bix0aGlzLl9jcmVhdGVCYWNrZ3JvdW5kVG9rZW5pemVyPWEsdGhpcy5fYmFja2dyb3VuZFRva2VuaXplclNob3VsZE9ubHlWZXJpZnlUb2tlbnM9aSx0aGlzLl9zZWVuTGFuZ3VhZ2VzPVtdLHRoaXMuX29uRGlkRW5jb3VudGVyTGFuZ3VhZ2U9dGhpcy5fcmVnaXN0ZXIobmV3IGMuRW1pdHRlciksdGhpcy5vbkRpZEVuY291bnRlckxhbmd1YWdlPXRoaXMuX29uRGlkRW5jb3VudGVyTGFuZ3VhZ2UuZXZlbnR9Z2V0IGJhY2tncm91bmRUb2tlbml6ZXJTaG91bGRPbmx5VmVyaWZ5VG9rZW5zKCl7cmV0dXJuIHRoaXMuX2JhY2tncm91bmRUb2tlbml6ZXJTaG91bGRPbmx5VmVyaWZ5VG9rZW5zKCl9Z2V0SW5pdGlhbFN0YXRlKCl7cmV0dXJuIHRoaXMuX2luaXRpYWxTdGF0ZX10b2tlbml6ZShlLHQsbil7dGhyb3cgbmV3IEVycm9yKCJOb3Qgc3VwcG9ydGVkISIpfWNyZWF0ZUJhY2tncm91bmRUb2tlbml6ZXIoZSx0KXtpZih0aGlzLl9jcmVhdGVCYWNrZ3JvdW5kVG9rZW5pemVyKXJldHVybiB0aGlzLl9jcmVhdGVCYWNrZ3JvdW5kVG9rZW5pemVyKGUsdCl9dG9rZW5pemVFbmNvZGVkKGUsdCxuKXtjb25zdCBhPXRoaXMuX2dyYW1tYXIudG9rZW5pemVMaW5lMihlLG4sNTAwKTtpZihhLnN0b3BwZWRFYXJseSlyZXR1cm4gY29uc29sZS53YXJuKGBUaW1lIGxpbWl0IHJlYWNoZWQgd2hlbiB0b2tlbml6aW5nIGxpbmU6ICR7ZS5zdWJzdHJpbmcoMCwxMDApfWApLG5ldyBoLkVuY29kZWRUb2tlbml6YXRpb25SZXN1bHQoYS50b2tlbnMsbik7aWYodGhpcy5fY29udGFpbnNFbWJlZGRlZExhbmd1YWdlcyl7Y29uc3QgZT10aGlzLl9zZWVuTGFuZ3VhZ2VzLHQ9YS50b2tlbnM7Zm9yKGxldCBuPTAsYT10Lmxlbmd0aD4+PjE7bjxhO24rKyl7Y29uc3QgYT10WzErKG48PDEpXSxpPWcuVG9rZW5NZXRhZGF0YS5nZXRMYW5ndWFnZUlkKGEpO2VbaV18fChlW2ldPSEwLHRoaXMuX29uRGlkRW5jb3VudGVyTGFuZ3VhZ2UuZmlyZShpKSl9fWxldCBpO3JldHVybiBpPW4uZXF1YWxzKGEucnVsZVN0YWNrKT9uOmEucnVsZVN0YWNrLG5ldyBoLkVuY29kZWRUb2tlbml6YXRpb25SZXN1bHQoYS50b2tlbnMsaSl9fWNsYXNzIHogZXh0ZW5kcyB0LkRpc3Bvc2FibGV7Z2V0IGJhY2tncm91bmRUb2tlbml6ZXJTaG91bGRPbmx5VmVyaWZ5VG9rZW5zKCl7cmV0dXJuIHRoaXMuX2FjdHVhbC5iYWNrZ3JvdW5kVG9rZW5pemVyU2hvdWxkT25seVZlcmlmeVRva2Vuc31jb25zdHJ1Y3RvcihlLHQsbil7c3VwZXIoKSx0aGlzLl9lbmNvZGVkTGFuZ3VhZ2VJZD1lLHRoaXMuX2FjdHVhbD10LHRoaXMuX21heFRva2VuaXphdGlvbkxpbmVMZW5ndGg9bix0aGlzLl9yZWdpc3RlcihkLmtlZXBBbGl2ZSh0aGlzLl9tYXhUb2tlbml6YXRpb25MaW5lTGVuZ3RoKSl9Z2V0SW5pdGlhbFN0YXRlKCl7cmV0dXJuIHRoaXMuX2FjdHVhbC5nZXRJbml0aWFsU3RhdGUoKX10b2tlbml6ZShlLHQsbil7dGhyb3cgbmV3IEVycm9yKCJOb3Qgc3VwcG9ydGVkISIpfXRva2VuaXplRW5jb2RlZChlLHQsbil7cmV0dXJuIGUubGVuZ3RoPj10aGlzLl9tYXhUb2tlbml6YXRpb25MaW5lTGVuZ3RoLmdldCgpP3UubnVsbFRva2VuaXplRW5jb2RlZCh0aGlzLl9lbmNvZGVkTGFuZ3VhZ2VJZCxuKTp0aGlzLl9hY3R1YWwudG9rZW5pemVFbmNvZGVkKGUsdCxuKX1jcmVhdGVCYWNrZ3JvdW5kVG9rZW5pemVyKGUsdCl7cmV0dXJuIHRoaXMuX2FjdHVhbC5jcmVhdGVCYWNrZ3JvdW5kVG9rZW5pemVyP3RoaXMuX2FjdHVhbC5jcmVhdGVCYWNrZ3JvdW5kVG9rZW5pemVyKGUsdCk6dm9pZCAwfX1jbGFzcyBiIGV4dGVuZHMgYS5NaXJyb3JUZXh0TW9kZWx7Y29uc3RydWN0b3IoZSx0LG4sYSxpLHMsbyxyKXtzdXBlcihlLHQsbixhKSx0aGlzLl93b3JrZXI9aSx0aGlzLl9sYW5ndWFnZUlkPXMsdGhpcy5fZW5jb2RlZExhbmd1YWdlSWQ9byx0aGlzLl90b2tlbml6YXRpb25TdGF0ZVN0b3JlPW51bGwsdGhpcy5faXNEaXNwb3NlZD0hMSx0aGlzLl9tYXhUb2tlbml6YXRpb25MaW5lTGVuZ3RoPWQub2JzZXJ2YWJsZVZhbHVlKCJfbWF4VG9rZW5pemF0aW9uTGluZUxlbmd0aCIsLTEpLHRoaXMudG9rZW5pemVEZWJvdW5jZXI9bmV3IGwuUnVuT25jZVNjaGVkdWxlcigoKCk9PnRoaXMuX3Rva2VuaXplKCkpLDEwKSx0aGlzLl9tYXhUb2tlbml6YXRpb25MaW5lTGVuZ3RoLnNldChyLHZvaWQgMCksdGhpcy5fcmVzZXRUb2tlbml6YXRpb24oKX1kaXNwb3NlKCl7dGhpcy5faXNEaXNwb3NlZD0hMCxzdXBlci5kaXNwb3NlKCl9b25MYW5ndWFnZUlkKGUsdCl7dGhpcy5fbGFuZ3VhZ2VJZD1lLHRoaXMuX2VuY29kZWRMYW5ndWFnZUlkPXQsdGhpcy5fcmVzZXRUb2tlbml6YXRpb24oKX1vbkV2ZW50cyhlKXtzdXBlci5vbkV2ZW50cyhlKSx0aGlzLl90b2tlbml6YXRpb25TdGF0ZVN0b3JlJiZ0aGlzLl90b2tlbml6YXRpb25TdGF0ZVN0b3JlLnN0b3JlLmFjY2VwdENoYW5nZXMoZS5jaGFuZ2VzKSx0aGlzLnRva2VuaXplRGVib3VuY2VyLnNjaGVkdWxlKCl9YWNjZXB0TWF4VG9rZW5pemF0aW9uTGluZUxlbmd0aChlKXt0aGlzLl9tYXhUb2tlbml6YXRpb25MaW5lTGVuZ3RoLnNldChlLHZvaWQgMCl9cmV0b2tlbml6ZShlLHQpe3RoaXMuX3Rva2VuaXphdGlvblN0YXRlU3RvcmUmJih0aGlzLl90b2tlbml6YXRpb25TdGF0ZVN0b3JlLnN0b3JlLmludmFsaWRhdGVFbmRTdGF0ZVJhbmdlKG5ldyBfLkxpbmVSYW5nZShlLHQpKSx0aGlzLnRva2VuaXplRGVib3VuY2VyLnNjaGVkdWxlKCkpfV9yZXNldFRva2VuaXphdGlvbigpe3RoaXMuX3Rva2VuaXphdGlvblN0YXRlU3RvcmU9bnVsbDtjb25zdCBlPXRoaXMuX2xhbmd1YWdlSWQsdD10aGlzLl9lbmNvZGVkTGFuZ3VhZ2VJZDt0aGlzLl93b3JrZXIuZ2V0T3JDcmVhdGVHcmFtbWFyKGUsdCkudGhlbigobj0+e2lmKCF0aGlzLl9pc0Rpc3Bvc2VkJiZlPT09dGhpcy5fbGFuZ3VhZ2VJZCYmdD09PXRoaXMuX2VuY29kZWRMYW5ndWFnZUlkJiZuKXtpZihuLmdyYW1tYXIpe2NvbnN0IGU9bmV3IHoodGhpcy5fZW5jb2RlZExhbmd1YWdlSWQsbmV3IEwobi5ncmFtbWFyLG4uaW5pdGlhbFN0YXRlLCExKSx0aGlzLl9tYXhUb2tlbml6YXRpb25MaW5lTGVuZ3RoKTt0aGlzLl90b2tlbml6YXRpb25TdGF0ZVN0b3JlPW5ldyBpLlRva2VuaXplcldpdGhTdGF0ZVN0b3JlKHRoaXMuX2xpbmVzLmxlbmd0aCxlKX1lbHNlIHRoaXMuX3Rva2VuaXphdGlvblN0YXRlU3RvcmU9bnVsbDt0aGlzLl90b2tlbml6ZSgpfX0pKX1fdG9rZW5pemUoKXtpZih0aGlzLl9pc0Rpc3Bvc2VkfHwhdGhpcy5fdG9rZW5pemF0aW9uU3RhdGVTdG9yZSlyZXR1cm47Y29uc3QgZT0obmV3IERhdGUpLmdldFRpbWUoKTtmb3IoOzspe2xldCB0PTA7Y29uc3Qgbj1uZXcgby5Db250aWd1b3VzTXVsdGlsaW5lVG9rZW5zQnVpbGRlcixhPW5ldyB3O2Zvcig7Oyl7Y29uc3QgaT10aGlzLl90b2tlbml6YXRpb25TdGF0ZVN0b3JlLnN0b3JlLmdldEZpcnN0SW52YWxpZEVuZFN0YXRlTGluZU51bWJlcigpO2lmKG51bGw9PT1pfHx0PjIwMClicmVhazt0Kys7Y29uc3Qgbz10aGlzLl9saW5lc1tpLTFdLGM9dGhpcy5fdG9rZW5pemF0aW9uU3RhdGVTdG9yZS5nZXRTdGFydFN0YXRlKGkpLGc9dGhpcy5fdG9rZW5pemF0aW9uU3RhdGVTdG9yZS50b2tlbml6YXRpb25TdXBwb3J0LnRva2VuaXplRW5jb2RlZChvLCEwLGMpO2lmKHRoaXMuX3Rva2VuaXphdGlvblN0YXRlU3RvcmUuc3RvcmUuc2V0RW5kU3RhdGUoaSxnLmVuZFN0YXRlKSl7Y29uc3QgZT1zLmRpZmZTdGF0ZVN0YWNrc1JlZkVxKGMsZy5lbmRTdGF0ZSk7YS5zZXRTdGF0ZShpLGUpfWVsc2UgYS5zZXRTdGF0ZShpLG51bGwpO3IuTGluZVRva2Vucy5jb252ZXJ0VG9FbmRPZmZzZXQoZy50b2tlbnMsby5sZW5ndGgpLG4uYWRkKGksZy50b2tlbnMpO2lmKChuZXcgRGF0ZSkuZ2V0VGltZSgpLWU+MjApYnJlYWt9aWYoMD09PXQpYnJlYWs7Y29uc3QgaT1hLmdldFN0YXRlRGVsdGFzKCk7dGhpcy5fd29ya2VyLnNldFRva2Vuc0FuZFN0YXRlcyh0aGlzLl91cmksdGhpcy5fdmVyc2lvbklkLG4uc2VyaWFsaXplKCksaSk7aWYoKG5ldyBEYXRlKS5nZXRUaW1lKCktZT4yMClyZXR1cm4gdm9pZCBzZXRUaW1lb3V0KCgoKT0+dGhpcy5fdG9rZW5pemUoKSksMyl9fX1jbGFzcyB3e2NvbnN0cnVjdG9yKCl7dGhpcy5fbGFzdFN0YXJ0TGluZU51bWJlcj0tMSx0aGlzLl9zdGF0ZURlbHRhcz1bXX1zZXRTdGF0ZShlLHQpe2U9PT10aGlzLl9sYXN0U3RhcnRMaW5lTnVtYmVyKzE/dGhpcy5fc3RhdGVEZWx0YXNbdGhpcy5fc3RhdGVEZWx0YXMubGVuZ3RoLTFdLnN0YXRlRGVsdGFzLnB1c2godCk6dGhpcy5fc3RhdGVEZWx0YXMucHVzaCh7c3RhcnRMaW5lTnVtYmVyOmUsc3RhdGVEZWx0YXM6W3RdfSksdGhpcy5fbGFzdFN0YXJ0TGluZU51bWJlcj1lfWdldFN0YXRlRGVsdGFzKCl7cmV0dXJuIHRoaXMuX3N0YXRlRGVsdGFzfX1jbGFzcyB5e2NvbnN0cnVjdG9yKHQsbil7dGhpcy5jcmVhdGVEYXRhPW4sdGhpcy5fbW9kZWxzPU9iamVjdC5jcmVhdGUobnVsbCksdGhpcy5fZ3JhbW1hckNhY2hlPVtdLHRoaXMuX2hvc3Q9dC5ob3N0O2NvbnN0IGE9bi5ncmFtbWFyRGVmaW5pdGlvbnMubWFwKCh0PT4oe2xvY2F0aW9uOmUuVVJJLnJldml2ZSh0LmxvY2F0aW9uKSxsYW5ndWFnZTp0Lmxhbmd1YWdlLHNjb3BlTmFtZTp0LnNjb3BlTmFtZSxlbWJlZGRlZExhbmd1YWdlczp0LmVtYmVkZGVkTGFuZ3VhZ2VzLHRva2VuVHlwZXM6dC50b2tlblR5cGVzLGluamVjdFRvOnQuaW5qZWN0VG8sYmFsYW5jZWRCcmFja2V0U2VsZWN0b3JzOnQuYmFsYW5jZWRCcmFja2V0U2VsZWN0b3JzLHVuYmFsYW5jZWRCcmFja2V0U2VsZWN0b3JzOnQudW5iYWxhbmNlZEJyYWNrZXRTZWxlY3RvcnN9KSkpO3RoaXMuX2dyYW1tYXJGYWN0b3J5PXRoaXMuX2xvYWRUTUdyYW1tYXJGYWN0b3J5KGEpfWFzeW5jIF9sb2FkVE1HcmFtbWFyRmFjdG9yeShlKXtjb25zdCB0PWF3YWl0IGltcG9ydCgidnNjb2RlLXRleHRtYXRlIikudGhlbigoZT0+ZSkpLnRoZW4oKGU9PmUuZGVmYXVsdD8/ZSkpLG49YXdhaXQgaW1wb3J0KCJ2c2NvZGUtb25pZ3VydW1hIikudGhlbigoZT0+ZSkpLnRoZW4oKGU9PmUuZGVmYXVsdD8/ZSkpLGE9YXdhaXQgZmV0Y2godGhpcy5jcmVhdGVEYXRhLm9uaWd1cnVtYVdBU01VcmkpLGk9YXdhaXQgYS5hcnJheUJ1ZmZlcigpO2F3YWl0IG4ubG9hZFdBU00oaSk7Y29uc3Qgcz1Qcm9taXNlLnJlc29sdmUoe2NyZWF0ZU9uaWdTY2FubmVyOmU9Pm4uY3JlYXRlT25pZ1NjYW5uZXIoZSksY3JlYXRlT25pZ1N0cmluZzplPT5uLmNyZWF0ZU9uaWdTdHJpbmcoZSl9KTtyZXR1cm4gbmV3IGYoe2xvZ1RyYWNlOmU9Pnt9LGxvZ0Vycm9yOihlLHQpPT5jb25zb2xlLmVycm9yKGUsdCkscmVhZEZpbGU6ZT0+dGhpcy5faG9zdC5yZWFkRmlsZShlKX0sZSx0LHMpfWFjY2VwdE5ld01vZGVsKHQpe2NvbnN0IG49ZS5VUkkucmV2aXZlKHQudXJpKSxhPW4udG9TdHJpbmcoKTt0aGlzLl9tb2RlbHNbYV09bmV3IGIobix0LmxpbmVzLHQuRU9MLHQudmVyc2lvbklkLHRoaXMsdC5sYW5ndWFnZUlkLHQuZW5jb2RlZExhbmd1YWdlSWQsdC5tYXhUb2tlbml6YXRpb25MaW5lTGVuZ3RoKX1hY2NlcHRNb2RlbENoYW5nZWQoZSx0KXt0aGlzLl9tb2RlbHNbZV0ub25FdmVudHModCl9cmV0b2tlbml6ZShlLHQsbil7dGhpcy5fbW9kZWxzW2VdLnJldG9rZW5pemUodCxuKX1hY2NlcHRNb2RlbExhbmd1YWdlQ2hhbmdlZChlLHQsbil7dGhpcy5fbW9kZWxzW2VdLm9uTGFuZ3VhZ2VJZCh0LG4pfWFjY2VwdFJlbW92ZWRNb2RlbChlKXt0aGlzLl9tb2RlbHNbZV0mJih0aGlzLl9tb2RlbHNbZV0uZGlzcG9zZSgpLGRlbGV0ZSB0aGlzLl9tb2RlbHNbZV0pfWFzeW5jIGFjY2VwdFRoZW1lKGUsdCl7Y29uc3Qgbj1hd2FpdCB0aGlzLl9ncmFtbWFyRmFjdG9yeTtuPy5zZXRUaGVtZShlLHQpfWFjY2VwdE1heFRva2VuaXphdGlvbkxpbmVMZW5ndGgoZSx0KXt0aGlzLl9tb2RlbHNbZV0uYWNjZXB0TWF4VG9rZW5pemF0aW9uTGluZUxlbmd0aCh0KX1hc3luYyBnZXRPckNyZWF0ZUdyYW1tYXIoZSx0KXtjb25zdCBuPWF3YWl0IHRoaXMuX2dyYW1tYXJGYWN0b3J5O3JldHVybiBuPyh0aGlzLl9ncmFtbWFyQ2FjaGVbdF18fCh0aGlzLl9ncmFtbWFyQ2FjaGVbdF09bi5jcmVhdGVHcmFtbWFyKGUsdCkpLHRoaXMuX2dyYW1tYXJDYWNoZVt0XSk6UHJvbWlzZS5yZXNvbHZlKG51bGwpfXNldFRva2Vuc0FuZFN0YXRlcyhlLHQsbixhKXt0aGlzLl9ob3N0LnNldFRva2Vuc0FuZFN0YXRlcyhlLHQsbixhKX19bS5pbml0aWFsaXplKCgoZSx0KT0+bmV3IHkoZSx0KSkpfSh1cmlfanMsbGlmZWN5Y2xlX2pzLHJlc291cmNlcyxtaXJyb3JUZXh0TW9kZWxfanMsdGV4dE1vZGVsVG9rZW5zX2pzLHZzY29kZVRleHRtYXRlLGNvbnRpZ3VvdXNNdWx0aWxpbmVUb2tlbnNCdWlsZGVyX2pzLGxpbmVUb2tlbnNfanMsZXZlbnRfanMsZW5jb2RlZFRva2VuQXR0cmlidXRlc19qcyxsYW5ndWFnZXNfanMsYXN5bmNfanMsb2JzZXJ2YWJsZV9qcyxudWxsVG9rZW5pemVfanMsbGluZVJhbmdlX2pzLGVkaXRvcl93b3JrZXJfanMpOwovLyMgc291cmNlTWFwcGluZ1VSTD10ZXh0TWF0ZS53b3JrZXIuanMubWFwCgo=', null, false);
35
+ /* eslint-enable */
36
+
37
+ var WorkerFactory = createBase64WorkerFactory('Lyogcm9sbHVwLXBsdWdpbi13ZWItd29ya2VyLWxvYWRlciAqLwohZnVuY3Rpb24oZSx0LHIscyxuLG8sYyxhKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gaShlKXt2YXIgdD1PYmplY3QuY3JlYXRlKG51bGwpO3JldHVybiBlJiZPYmplY3Qua2V5cyhlKS5mb3JFYWNoKChmdW5jdGlvbihyKXtpZigiZGVmYXVsdCIhPT1yKXt2YXIgcz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUscik7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQscixzLmdldD9zOntlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBlW3JdfX0pfX0pKSx0LmRlZmF1bHQ9ZSxPYmplY3QuZnJlZXplKHQpfXZhciB1PWkociksbD1pKHMpLHA9aShuKTtjbGFzcyBoe2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5jdHg9ZSx0aGlzLnBhdHRlcm5zPW5ldyBNYXAsdGhpcy5jb21wdXRlUGF0dGVybnModCl9Y29tcHV0ZVBhdHRlcm5zKGUpe2NvbnN0IHI9ZS53b3Jrc3BhY2VGb2xkZXJzLnNvcnQoKChlLHQpPT50Lmxlbmd0aC1lLmxlbmd0aCkpLm1hcCgoZT0+dC5VUkkucGFyc2UoZSkpKTtmb3IoY29uc3QgZSBvZiByKXtjb25zdCB0PWguY3JlYXRlUGF0dGVybnMoZSk7dGhpcy5wYXR0ZXJucy5zZXQoZSx0KX19Z2V0TW9kZWwoZSl7cmV0dXJuIHRoaXMuY3R4LmdldE1pcnJvck1vZGVscygpLmZpbmQoKHQ9PnQudXJpLnRvU3RyaW5nKCk9PT1lKSl9Y29tcHV0ZUxpbmtzKGUpe2NvbnN0IHQ9dGhpcy5nZXRNb2RlbChlKTtpZighdClyZXR1cm5bXTtjb25zdCByPVtdLHM9cC5zcGxpdExpbmVzKHQuZ2V0VmFsdWUoKSk7Zm9yKGNvbnN0W2UsdF1vZiB0aGlzLnBhdHRlcm5zKXtjb25zdCBuPXt0b1Jlc291cmNlOnQ9PiJzdHJpbmciPT10eXBlb2YgdD9sLmpvaW5QYXRoKGUsdCk6bnVsbH07Zm9yKGxldCBlPTAsbz1zLmxlbmd0aDtlPG87ZSsrKXIucHVzaCguLi5oLmRldGVjdExpbmtzKHNbZV0sZSsxLHQsbikpfXJldHVybiByfXN0YXRpYyBjcmVhdGVQYXR0ZXJucyhlKXtjb25zdCB0PVtdLHI9ZS5zY2hlbWU9PT1hLlNjaGVtYXMuZmlsZT9lLmZzUGF0aDplLnBhdGgscz1bcl07Yy5pc1dpbmRvd3MmJmUuc2NoZW1lPT09YS5TY2hlbWFzLmZpbGUmJnMucHVzaCh1LnRvU2xhc2hlcyhyKSk7Zm9yKGNvbnN0IGUgb2Ygcyl7Y29uc3Qgcj0nW15cXHNcXChcXCk6PD4iXScscz1gJHtgKD86JHtyfXwgJHtyfSlgfStcXC4ke3J9K2Asbj1gJHtyfStgO3QucHVzaChuZXcgUmVnRXhwKHAuZXNjYXBlUmVnRXhwQ2hhcmFjdGVycyhlKStgKCR7c30pIG9uIGxpbmUgKChcXGQrKSgsIGNvbHVtbiAoXFxkKykpPylgLCJnaSIpKSx0LnB1c2gobmV3IFJlZ0V4cChwLmVzY2FwZVJlZ0V4cENoYXJhY3RlcnMoZSkrYCgke3N9KTpsaW5lICgoXFxkKykoLCBjb2x1bW4gKFxcZCspKT8pYCwiZ2kiKSksdC5wdXNoKG5ldyBSZWdFeHAocC5lc2NhcGVSZWdFeHBDaGFyYWN0ZXJzKGUpK2AoJHtzfSkoXFxzP1xcKChcXGQrKSgsKFxcZCspKT8pXFwpYCwiZ2kiKSksdC5wdXNoKG5ldyBSZWdFeHAocC5lc2NhcGVSZWdFeHBDaGFyYWN0ZXJzKGUpK2AoJHtufSkoOihcXGQrKSk/KDooXFxkKykpP2AsImdpIikpfXJldHVybiB0fXN0YXRpYyBkZXRlY3RMaW5rcyhlLHQscixzKXtjb25zdCBuPVtdO3JldHVybiByLmZvckVhY2goKHI9PntsZXQgYztyLmxhc3RJbmRleD0wO2xldCBhPTA7Zm9yKDtudWxsIT09KGM9ci5leGVjKGUpKTspe2NvbnN0IHI9cC5ydHJpbShjWzFdLCIuIikucmVwbGFjZSgvXFwvZywiLyIpO2xldCBpO3RyeXtjb25zdCBlPXMudG9SZXNvdXJjZShyKTtlJiYoaT1lLnRvU3RyaW5nKCkpfWNhdGNoKGUpe2NvbnRpbnVlfWlmKGNbM10pe2NvbnN0IGU9Y1szXTtpZihjWzVdKXtjb25zdCB0PWNbNV07aT1wLmZvcm1hdCgiezB9I3sxfSx7Mn0iLGksZSx0KX1lbHNlIGk9cC5mb3JtYXQoInswfSN7MX0iLGksZSl9Y29uc3QgdT1wLnJ0cmltKGNbMF0sIi4iKSxsPWUuaW5kZXhPZih1LGEpO2E9bCt1Lmxlbmd0aDtjb25zdCBoPXtzdGFydENvbHVtbjpsKzEsc3RhcnRMaW5lTnVtYmVyOnQsZW5kQ29sdW1uOmwrMSt1Lmxlbmd0aCxlbmRMaW5lTnVtYmVyOnR9O2lmKG4uc29tZSgoZT0+by5SYW5nZS5hcmVJbnRlcnNlY3RpbmdPclRvdWNoaW5nKGUucmFuZ2UsaCkpKSlyZXR1cm47bi5wdXNoKHtyYW5nZTpoLHVybDppfSl9fSkpLG59fWUuaW5pdGlhbGl6ZSgoKGUsdCk9Pm5ldyBoKGUsdCkpKX0oZWRpdG9yX3dvcmtlcl9qcyx1cmlfanMsZXh0cGF0aCxyZXNvdXJjZXMsc3RyaW5ncyxyYW5nZV9qcyxwbGF0Zm9ybV9qcyxuZXR3b3JrX2pzKTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9b3V0cHV0TGlua0NvbXB1dGVyLndvcmtlci5qcy5tYXAKCg==', null, false);
38
+ /* eslint-enable */
39
+
40
+ // TODO improve do not base64
34
41
  const workerLoaders = {
35
- editorWorkerService: () => WorkerFactory
42
+ editorWorkerService: () => WorkerFactory$2,
43
+ textMateWorker: () => WorkerFactory$1,
44
+ outputLinkComputer: () => WorkerFactory
36
45
  };
37
46
  function registerWorkerLoader(label, workerLoader) {
38
47
  workerLoaders[label] = workerLoader;
@@ -46,6 +55,9 @@ window.MonacoEnvironment = {
46
55
  return new Worker();
47
56
  }
48
57
  throw new Error("Unimplemented worker ".concat(label, " (").concat(moduleId, ")"));
58
+ },
59
+ createTrustedTypesPolicy() {
60
+ return undefined;
49
61
  }
50
62
  };
51
63