@codingame/monaco-editor-wrapper 3.9.2 → 3.10.0-monaco-update.1

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 (636) hide show
  1. package/README.md +0 -15
  2. package/dist/{_monaco-editor_commonjs-external.js → _virtual/_commonjsHelpers.js} +2 -9
  3. package/dist/_virtual/_monaco-editor.js +6 -0
  4. package/dist/_virtual/actions.js +3 -0
  5. package/dist/_virtual/basicInput.js +3 -0
  6. package/dist/_virtual/cm_adapter.js +3 -0
  7. package/dist/_virtual/commands.js +3 -0
  8. package/dist/_virtual/editor.api.js +6 -0
  9. package/dist/_virtual/index.js +3 -0
  10. package/dist/_virtual/index2.js +3 -0
  11. package/dist/_virtual/index3.js +3 -0
  12. package/dist/_virtual/keymap_vim.js +3 -0
  13. package/dist/_virtual/shiftCommand.js +6 -0
  14. package/dist/_virtual/state.js +3 -0
  15. package/dist/_virtual/statusbar.js +3 -0
  16. package/dist/_virtual/util.js +3 -0
  17. package/dist/assets/Angular.ng-template-16.1.8.vsix/expression-c051cd51.json +834 -0
  18. package/dist/assets/Angular.ng-template-16.1.8.vsix/inline-styles-59ea31e9.json +92 -0
  19. package/dist/assets/Angular.ng-template-16.1.8.vsix/inline-template-f0c3f556.json +76 -0
  20. package/dist/assets/Angular.ng-template-16.1.8.vsix/template-e24e3ba1.json +195 -0
  21. package/dist/assets/Dart-Code.dart-code-3.75.20231009.vsix/dart-bea1db40.json +534 -0
  22. package/dist/assets/Dart-Code.dart-code-3.75.20231009.vsix/dart-language-configuration-c4b1f694.json +29 -0
  23. package/dist/assets/Dart-Code.dart-code-3.75.20231009.vsix/flutter_activity_bar-17811551.svg +14 -0
  24. package/dist/assets/IMCTradingBV.svlangserver-0.4.1.vsix/codeblock-67e70f41.json +81 -0
  25. package/dist/assets/IMCTradingBV.svlangserver-0.4.1.vsix/language-configuration-3467c3a6.json +57 -0
  26. package/dist/assets/IMCTradingBV.svlangserver-0.4.1.vsix/systemverilog-ff001e9f.json +349 -0
  27. package/dist/assets/IMCTradingBV.svlangserver-0.4.1.vsix/systemverilog.tmLanguage-31a99a46.json +1246 -0
  28. package/dist/assets/IMCTradingBV.svlangserver-0.4.1.vsix/tasks.schema-832643df.json +30 -0
  29. package/dist/assets/JakeBecker.elixir-ls-0.17.1.vsix/eex-e9a5e762.json +41 -0
  30. package/dist/assets/JakeBecker.elixir-ls-0.17.1.vsix/eex-language-configuration-6fb789e3.json +58 -0
  31. package/dist/assets/JakeBecker.elixir-ls-0.17.1.vsix/elixir-7cb5db44.json +2580 -0
  32. package/dist/assets/JakeBecker.elixir-ls-0.17.1.vsix/elixir-language-configuration-4bd217f4.json +74 -0
  33. package/dist/assets/JakeBecker.elixir-ls-0.17.1.vsix/html-eex-3079072a.json +25 -0
  34. package/dist/assets/JuanBlanco.solidity-0.0.165.vsix/solidity-1f693465.json +213 -0
  35. package/dist/assets/JuanBlanco.solidity-0.0.165.vsix/solidity-642a30e7.json +1215 -0
  36. package/dist/assets/JuanBlanco.solidity-0.0.165.vsix/solidity.configuration-d0229207.json +32 -0
  37. package/dist/assets/REditorSupport.r-2.8.2.vsix/Markdown Redcarpet-12881a56.json +146 -0
  38. package/dist/assets/REditorSupport.r-2.8.2.vsix/RMarkdown-0bbb72c0.json +13 -0
  39. package/dist/assets/REditorSupport.r-2.8.2.vsix/Rcpp-cea57c6d.json +34 -0
  40. package/dist/assets/REditorSupport.r-2.8.2.vsix/Rd (R Documentation)-555f4e62.json +117 -0
  41. package/dist/assets/REditorSupport.r-2.8.2.vsix/Rlogo-6d3318a6.svg +14 -0
  42. package/dist/assets/REditorSupport.r-2.8.2.vsix/dcf-3d561f42.json +82 -0
  43. package/dist/assets/REditorSupport.r-2.8.2.vsix/dcf-configuration-d58bba2d.json +24 -0
  44. package/dist/assets/REditorSupport.r-2.8.2.vsix/r-configuration-78e137e5.json +33 -0
  45. package/dist/assets/REditorSupport.r-2.8.2.vsix/r-fe2a45c3.json +647 -0
  46. package/dist/assets/REditorSupport.r-2.8.2.vsix/r-snippets-9e46c45c.json +475 -0
  47. package/dist/assets/REditorSupport.r-2.8.2.vsix/rbuildignore-9cfe22f1.json +27 -0
  48. package/dist/assets/REditorSupport.r-2.8.2.vsix/rbuildignore-configuration-8eb95bcb.json +2 -0
  49. package/dist/assets/REditorSupport.r-2.8.2.vsix/rd-configuration-194dd9d9.json +27 -0
  50. package/dist/assets/REditorSupport.r-2.8.2.vsix/rmarkdown-dea1e283.json +459 -0
  51. package/dist/assets/REditorSupport.r-2.8.2.vsix/rmd-configuration-b4c6dc23.json +27 -0
  52. package/dist/assets/REditorSupport.r-2.8.2.vsix/rnamespace-290042cd.json +222 -0
  53. package/dist/assets/alefragnani.pascal-9.6.0.vsix/package.nls-8c1cec26.json +24 -0
  54. package/dist/assets/alefragnani.pascal-9.6.0.vsix/package.nls.pt-br-50a237c2.json +24 -0
  55. package/dist/assets/alefragnani.pascal-9.6.0.vsix/pascal-365151a8.json +414 -0
  56. package/dist/assets/alefragnani.pascal-9.6.0.vsix/pascal-93ca5af8.tmLanguage +243 -0
  57. package/dist/assets/alefragnani.pascal-9.6.0.vsix/pascal.configuration-650e481b.json +32 -0
  58. package/dist/assets/batisteo.vscode-django-1.14.0.vsix/django-html.tmLanguage-a755b992.json +701 -0
  59. package/dist/assets/batisteo.vscode-django-1.14.0.vsix/django-txt.tmLanguage-856346a9.json +255 -0
  60. package/dist/assets/batisteo.vscode-django-1.14.0.vsix/filters-f60b575d.json +339 -0
  61. package/dist/assets/batisteo.vscode-django-1.14.0.vsix/language-configuration-f8af0b2f.json +63 -0
  62. package/dist/assets/batisteo.vscode-django-1.14.0.vsix/tags-43e8b685.json +496 -0
  63. package/dist/assets/bitwisecook.tcl-0.4.3.vsix/language-configuration-e9539ff0.json +75 -0
  64. package/dist/assets/bitwisecook.tcl-0.4.3.vsix/tcl-10fb1e40.json +142 -0
  65. package/dist/assets/bitwisecook.tcl-0.4.3.vsix/tcl-d73ae460.json +5474 -0
  66. package/dist/assets/broadcomMFD.cobol-language-support-2.0.3.vsix/COBOL.tmLanguage-67e1eefb.json +216 -0
  67. package/dist/assets/broadcomMFD.cobol-language-support-2.0.3.vsix/lang-config-a301d1b9.json +27 -0
  68. package/dist/assets/broadcomMFD.cobol-language-support-2.0.3.vsix/pgm_conf.schema-f8558717.json +24 -0
  69. package/dist/assets/broadcomMFD.cobol-language-support-2.0.3.vsix/proc_grps.schema-428d2a80.json +55 -0
  70. package/dist/assets/ckolkman.vscode-postgres-1.4.3.vsix/language-configuration-b3cf7aac.json +25 -0
  71. package/dist/assets/ckolkman.vscode-postgres-1.4.3.vsix/pgsql-a84fddae.tmLanguage +413 -0
  72. package/dist/assets/ckolkman.vscode-postgres-1.4.3.vsix/postgres-explorer-ce4bf408.svg +100 -0
  73. package/dist/assets/golang.Go-0.39.1.vsix/go-71588b74.json +274 -0
  74. package/dist/assets/golang.Go-0.39.1.vsix/go.mod.language-configuration-0301a994.json +5 -0
  75. package/dist/assets/golang.Go-0.39.1.vsix/go.mod.tmGrammar-6cbef28b.json +171 -0
  76. package/dist/assets/golang.Go-0.39.1.vsix/go.sum.tmGrammar-36d4acfd.json +44 -0
  77. package/dist/assets/golang.Go-0.39.1.vsix/govulncheck.tmGrammar-3741e2c9.json +123 -0
  78. package/dist/assets/johnsoncodehk.vscode-angular-1.0.22.vsix/angular-directives-77c45bf9.json +123 -0
  79. package/dist/assets/johnsoncodehk.vscode-angular-1.0.22.vsix/angular-interpolations-b1f89745.json +44 -0
  80. package/dist/assets/johnsoncodehk.vscode-angular-1.0.22.vsix/angular-template-language-configuration-4cd1b761.json +8 -0
  81. package/dist/assets/justusadam.language-haskell-3.6.0.vsix/C2Hs-c12145c8.json +23 -0
  82. package/dist/assets/justusadam.language-haskell-3.6.0.vsix/C2Hs-configuration-dc72a3f0.json +29 -0
  83. package/dist/assets/justusadam.language-haskell-3.6.0.vsix/Hsc2Hs-685ef114.json +23 -0
  84. package/dist/assets/justusadam.language-haskell-3.6.0.vsix/Hsc2Hs-configuration-15e5e5c3.json +30 -0
  85. package/dist/assets/justusadam.language-haskell-3.6.0.vsix/alex-07217e37.json +236 -0
  86. package/dist/assets/justusadam.language-haskell-3.6.0.vsix/cabal-8f2b8b9f.json +53 -0
  87. package/dist/assets/justusadam.language-haskell-3.6.0.vsix/cabal-configuration-64e517a3.json +6 -0
  88. package/dist/assets/justusadam.language-haskell-3.6.0.vsix/codeblock-cabal-34484e34.json +28 -0
  89. package/dist/assets/justusadam.language-haskell-3.6.0.vsix/codeblock-haskell-138d661e.json +28 -0
  90. package/dist/assets/justusadam.language-haskell-3.6.0.vsix/codeblock-literate-haskell-90d8db8f.json +28 -0
  91. package/dist/assets/justusadam.language-haskell-3.6.0.vsix/happy-3cd8fa35.json +196 -0
  92. package/dist/assets/justusadam.language-haskell-3.6.0.vsix/haskell-192ef944.json +2525 -0
  93. package/dist/assets/justusadam.language-haskell-3.6.0.vsix/haskell-configuration-54079281.json +29 -0
  94. package/dist/assets/justusadam.language-haskell-3.6.0.vsix/literate-haskell-configuration-23cbb80e.json +29 -0
  95. package/dist/assets/justusadam.language-haskell-3.6.0.vsix/literateHaskell-0a08d9f7.json +56 -0
  96. package/dist/assets/mathiasfrohlich.Kotlin-1.7.1.vsix/Kotlin-5d2aa580.tmLanguage +1067 -0
  97. package/dist/assets/mathiasfrohlich.Kotlin-1.7.1.vsix/codeblock-8be87145.json +22 -0
  98. package/dist/assets/mathiasfrohlich.Kotlin-1.7.1.vsix/kotlin-9f43cb02.json +107 -0
  99. package/dist/assets/mathiasfrohlich.Kotlin-1.7.1.vsix/kotlin.configuration-1d328649.json +35 -0
  100. package/dist/assets/ms-dotnettools.csharp-2.6.24.vsix/aspnetcorerazor.tmLanguage-7002af3f.json +1812 -0
  101. package/dist/assets/ms-dotnettools.csharp-2.6.24.vsix/csharp-a17ace76.json +493 -0
  102. package/dist/assets/ms-dotnettools.csharp-2.6.24.vsix/language-configuration-f8b16509.json +24 -0
  103. package/dist/assets/ms-dotnettools.csharp-2.6.24.vsix/package.nls-b9937871.json +419 -0
  104. package/dist/assets/ms-dotnettools.csharp-2.6.24.vsix/package.nls.cs-80b9e0b3.json +201 -0
  105. package/dist/assets/ms-dotnettools.csharp-2.6.24.vsix/package.nls.de-2f7710c0.json +201 -0
  106. package/dist/assets/ms-dotnettools.csharp-2.6.24.vsix/package.nls.es-d1bd829b.json +201 -0
  107. package/dist/assets/ms-dotnettools.csharp-2.6.24.vsix/package.nls.fr-e0bc41f9.json +201 -0
  108. package/dist/assets/ms-dotnettools.csharp-2.6.24.vsix/package.nls.it-0e21bedf.json +201 -0
  109. package/dist/assets/ms-dotnettools.csharp-2.6.24.vsix/package.nls.ja-2384013f.json +201 -0
  110. package/dist/assets/ms-dotnettools.csharp-2.6.24.vsix/package.nls.ko-621d3dfe.json +201 -0
  111. package/dist/assets/ms-dotnettools.csharp-2.6.24.vsix/package.nls.pl-bd72e09e.json +201 -0
  112. package/dist/assets/ms-dotnettools.csharp-2.6.24.vsix/package.nls.pt-br-a446b36f.json +201 -0
  113. package/dist/assets/ms-dotnettools.csharp-2.6.24.vsix/package.nls.ru-923ade42.json +201 -0
  114. package/dist/assets/ms-dotnettools.csharp-2.6.24.vsix/package.nls.tr-10253fa3.json +201 -0
  115. package/dist/assets/ms-dotnettools.csharp-2.6.24.vsix/package.nls.zh-cn-00cb169d.json +201 -0
  116. package/dist/assets/ms-dotnettools.csharp-2.6.24.vsix/package.nls.zh-tw-1c34b33a.json +201 -0
  117. package/dist/assets/ms-dotnettools.csharp-2.6.24.vsix/vs2019_dark-a56f6e51.json +783 -0
  118. package/dist/assets/ms-dotnettools.csharp-2.6.24.vsix/vs2019_light-fd29b4ae.json +807 -0
  119. package/dist/assets/ms-python.python-2023.19.12861011.vsix/conda-environment-3aa03e16.json +1 -0
  120. package/dist/assets/ms-python.python-2023.19.12861011.vsix/conda-meta-e7f42ee0.json +1 -0
  121. package/dist/assets/ms-python.python-2023.19.12861011.vsix/condarc-8ad258e5.json +1 -0
  122. package/dist/assets/ms-python.python-2023.19.12861011.vsix/package.nls-c97ce436.json +1 -0
  123. package/dist/assets/ms-python.python-2023.19.12861011.vsix/package.nls.cs-5dee4ffc.json +1 -0
  124. package/dist/assets/ms-python.python-2023.19.12861011.vsix/package.nls.de-b852e3ec.json +1 -0
  125. package/dist/assets/ms-python.python-2023.19.12861011.vsix/package.nls.es-66adbb9e.json +1 -0
  126. package/dist/assets/ms-python.python-2023.19.12861011.vsix/package.nls.fr-6abf0276.json +1 -0
  127. package/dist/assets/ms-python.python-2023.19.12861011.vsix/package.nls.it-12650beb.json +1 -0
  128. package/dist/assets/ms-python.python-2023.19.12861011.vsix/package.nls.ja-de4ee3bd.json +1 -0
  129. package/dist/assets/ms-python.python-2023.19.12861011.vsix/package.nls.ko-254d6467.json +1 -0
  130. package/dist/assets/ms-python.python-2023.19.12861011.vsix/package.nls.pl-f957d6c6.json +1 -0
  131. package/dist/assets/ms-python.python-2023.19.12861011.vsix/package.nls.pt-br-d02ca4d9.json +1 -0
  132. package/dist/assets/ms-python.python-2023.19.12861011.vsix/package.nls.qps-ploc-f24b5e76.json +1 -0
  133. package/dist/assets/ms-python.python-2023.19.12861011.vsix/package.nls.ru-e6ba5e62.json +1 -0
  134. package/dist/assets/ms-python.python-2023.19.12861011.vsix/package.nls.tr-05d98040.json +1 -0
  135. package/dist/assets/ms-python.python-2023.19.12861011.vsix/package.nls.zh-cn-f41941e0.json +1 -0
  136. package/dist/assets/ms-python.python-2023.19.12861011.vsix/package.nls.zh-tw-02c30e90.json +1 -0
  137. package/dist/assets/ms-python.python-2023.19.12861011.vsix/pip-requirements-85cd5b06.json +1 -0
  138. package/dist/assets/ms-python.python-2023.19.12861011.vsix/pip-requirements.tmLanguage-5dcdde1f.json +1 -0
  139. package/dist/assets/ms-vscode.cpptools-1.18.0.vsix/package.nls-faad5326.json +1006 -0
  140. package/dist/assets/ms-vscode.cpptools-1.18.0.vsix/package.nls.cs-1c63e64b.json +441 -0
  141. package/dist/assets/ms-vscode.cpptools-1.18.0.vsix/package.nls.de-a80f3548.json +441 -0
  142. package/dist/assets/ms-vscode.cpptools-1.18.0.vsix/package.nls.es-ed5f9669.json +441 -0
  143. package/dist/assets/ms-vscode.cpptools-1.18.0.vsix/package.nls.fr-0a6f6680.json +441 -0
  144. package/dist/assets/ms-vscode.cpptools-1.18.0.vsix/package.nls.it-690d744e.json +441 -0
  145. package/dist/assets/ms-vscode.cpptools-1.18.0.vsix/package.nls.ja-9e548ee8.json +441 -0
  146. package/dist/assets/ms-vscode.cpptools-1.18.0.vsix/package.nls.ko-b7c6d97d.json +441 -0
  147. package/dist/assets/ms-vscode.cpptools-1.18.0.vsix/package.nls.pl-fac1f880.json +441 -0
  148. package/dist/assets/ms-vscode.cpptools-1.18.0.vsix/package.nls.pt-br-618e6fff.json +441 -0
  149. package/dist/assets/ms-vscode.cpptools-1.18.0.vsix/package.nls.ru-b8aa8e97.json +441 -0
  150. package/dist/assets/ms-vscode.cpptools-1.18.0.vsix/package.nls.tr-61b293ea.json +441 -0
  151. package/dist/assets/ms-vscode.cpptools-1.18.0.vsix/package.nls.zh-cn-2fb473f1.json +441 -0
  152. package/dist/assets/ms-vscode.cpptools-1.18.0.vsix/package.nls.zh-tw-bd960e98.json +441 -0
  153. package/dist/assets/ocamllabs.ocaml-platform-1.13.1.vsix/META-a4e7fa6f.json +56 -0
  154. package/dist/assets/ocamllabs.ocaml-platform-1.13.1.vsix/META-e71a284d.json +10 -0
  155. package/dist/assets/ocamllabs.ocaml-platform-1.13.1.vsix/atd-03beef93.json +57 -0
  156. package/dist/assets/ocamllabs.ocaml-platform-1.13.1.vsix/cram-947e10d8.json +167 -0
  157. package/dist/assets/ocamllabs.ocaml-platform-1.13.1.vsix/dune-3f9df928.json +24 -0
  158. package/dist/assets/ocamllabs.ocaml-platform-1.13.1.vsix/dune-ac59c79b.json +2949 -0
  159. package/dist/assets/ocamllabs.ocaml-platform-1.13.1.vsix/dune-b84b8558.json +30 -0
  160. package/dist/assets/ocamllabs.ocaml-platform-1.13.1.vsix/dune-project-1f8165b1.json +26 -0
  161. package/dist/assets/ocamllabs.ocaml-platform-1.13.1.vsix/dune-project-c3d6414c.json +326 -0
  162. package/dist/assets/ocamllabs.ocaml-platform-1.13.1.vsix/dune-workspace-714d48f4.json +191 -0
  163. package/dist/assets/ocamllabs.ocaml-platform-1.13.1.vsix/logo-1ec58c70.svg +3 -0
  164. package/dist/assets/ocamllabs.ocaml-platform-1.13.1.vsix/menhir-318b208e.json +349 -0
  165. package/dist/assets/ocamllabs.ocaml-platform-1.13.1.vsix/menhir-action-1de9ecfe.json +29 -0
  166. package/dist/assets/ocamllabs.ocaml-platform-1.13.1.vsix/menhir-ba3ffd84.json +27 -0
  167. package/dist/assets/ocamllabs.ocaml-platform-1.13.1.vsix/merlin-68658127.json +73 -0
  168. package/dist/assets/ocamllabs.ocaml-platform-1.13.1.vsix/oasis-6cb9104d.json +6 -0
  169. package/dist/assets/ocamllabs.ocaml-platform-1.13.1.vsix/oasis-b3731651.json +69 -0
  170. package/dist/assets/ocamllabs.ocaml-platform-1.13.1.vsix/ocaml-2b852e88.json +54 -0
  171. package/dist/assets/ocamllabs.ocaml-platform-1.13.1.vsix/ocaml-721ae493.json +654 -0
  172. package/dist/assets/ocamllabs.ocaml-platform-1.13.1.vsix/ocaml-8263d04c.json +49 -0
  173. package/dist/assets/ocamllabs.ocaml-platform-1.13.1.vsix/ocaml-markdown-codeblock-d59b1879.json +24 -0
  174. package/dist/assets/ocamllabs.ocaml-platform-1.13.1.vsix/ocaml.interface-82c9d397.json +161 -0
  175. package/dist/assets/ocamllabs.ocaml-platform-1.13.1.vsix/ocamlbuild-28c2016d.json +110 -0
  176. package/dist/assets/ocamllabs.ocaml-platform-1.13.1.vsix/ocamlbuild-68c3ee9d.json +16 -0
  177. package/dist/assets/ocamllabs.ocaml-platform-1.13.1.vsix/ocamldoc-68623cf8.json +31 -0
  178. package/dist/assets/ocamllabs.ocaml-platform-1.13.1.vsix/ocamlformat-12d00ff4.json +5 -0
  179. package/dist/assets/ocamllabs.ocaml-platform-1.13.1.vsix/ocamlformat-566f44ca.json +191 -0
  180. package/dist/assets/ocamllabs.ocaml-platform-1.13.1.vsix/ocamllex-16f56b53.json +6 -0
  181. package/dist/assets/ocamllabs.ocaml-platform-1.13.1.vsix/ocamllex-2f54f6a7.json +21 -0
  182. package/dist/assets/ocamllabs.ocaml-platform-1.13.1.vsix/ocamllex-9eea3c0f.json +108 -0
  183. package/dist/assets/ocamllabs.ocaml-platform-1.13.1.vsix/opam-051cc018.json +24 -0
  184. package/dist/assets/ocamllabs.ocaml-platform-1.13.1.vsix/opam-a3126c97.json +111 -0
  185. package/dist/assets/ocamllabs.ocaml-platform-1.13.1.vsix/opam-install-24f044a3.json +23 -0
  186. package/dist/assets/ocamllabs.ocaml-platform-1.13.1.vsix/opam-install-5c433c27.json +19 -0
  187. package/dist/assets/ocamllabs.ocaml-platform-1.13.1.vsix/reason-46868a8a.json +2357 -0
  188. package/dist/assets/ocamllabs.ocaml-platform-1.13.1.vsix/reason-e5da4a73.json +25 -0
  189. package/dist/assets/ocamllabs.ocaml-platform-1.13.1.vsix/reason-markdown-codeblock-80e4eeb5.json +24 -0
  190. package/dist/assets/pgourlain.erlang-0.9.7.vsix/Erlang-dc87abbd.plist +2719 -0
  191. package/dist/assets/pgourlain.erlang-0.9.7.vsix/erlang-ceac2319.json +197 -0
  192. package/dist/assets/pgourlain.erlang-0.9.7.vsix/erlang.configuration-52d0fdab.json +25 -0
  193. package/dist/assets/redhat.java-1.24.2023101604.vsix/JavaProperties.tmLanguage-0a8c48eb.json +103 -0
  194. package/dist/assets/redhat.java-1.24.2023101604.vsix/java-properties-configuration-97f1db18.json +67 -0
  195. package/dist/assets/redhat.java-1.24.2023101604.vsix/java.tmLanguage-7cffeca4.json +1892 -0
  196. package/dist/assets/redhat.java-1.24.2023101604.vsix/language-configuration-054e92b8.json +92 -0
  197. package/dist/assets/redhat.java-1.24.2023101604.vsix/package.nls-2147d73e.json +29 -0
  198. package/dist/assets/redhat.java-1.24.2023101604.vsix/package.nls.ko-a7811004.json +26 -0
  199. package/dist/assets/redhat.java-1.24.2023101604.vsix/package.nls.zh-cn-5b3edff8.json +27 -0
  200. package/dist/assets/redhat.java-1.24.2023101604.vsix/package.nls.zh-tw-236ee4a0.json +26 -0
  201. package/dist/assets/redhat.java-1.24.2023101604.vsix/package.schema-58232c4f.json +28 -0
  202. package/dist/assets/scala-lang.scala-0.5.7.vsix/Scala.tmLanguage-e9b79520.json +1 -0
  203. package/dist/assets/scala-lang.scala-0.5.7.vsix/language-configuration-acc80ed1.json +33 -0
  204. package/dist/assets/scalameta.metals-1.25.2.vsix/book-dark-6f0d6908.svg +5 -0
  205. package/dist/assets/scalameta.metals-1.25.2.vsix/book-light-ba883494.svg +1 -0
  206. package/dist/assets/scalameta.metals-1.25.2.vsix/buildtarget-73bbface.json +37 -0
  207. package/dist/assets/scalameta.metals-1.25.2.vsix/file_type_java-36bb31ca.svg +1 -0
  208. package/dist/assets/scalameta.metals-1.25.2.vsix/file_type_scala-b6c14b23.svg +1 -0
  209. package/dist/assets/scalameta.metals-1.25.2.vsix/jvm-bytecode-cab4d04e.json +395 -0
  210. package/dist/assets/scalameta.metals-1.25.2.vsix/jvm-bytecode-verbose-3611fa8e.json +745 -0
  211. package/dist/assets/scalameta.metals-1.25.2.vsix/scalameta-5e510695.svg +11 -0
  212. package/dist/assets/scalameta.metals-1.25.2.vsix/scalameta-logo-f3b7b0bf.png +0 -0
  213. package/dist/assets/scalameta.metals-1.25.2.vsix/semanticdb-44c14f33.json +37 -0
  214. package/dist/assets/scalameta.metals-1.25.2.vsix/tasty-c2b151f2.json +56 -0
  215. package/dist/assets/sumneko.lua-3.7.0.vsix/package.nls-f1576108.json +231 -0
  216. package/dist/assets/sumneko.lua-3.7.0.vsix/package.nls.pt-br-44d0849d.json +231 -0
  217. package/dist/assets/sumneko.lua-3.7.0.vsix/package.nls.zh-cn-3f634909.json +231 -0
  218. package/dist/assets/sumneko.lua-3.7.0.vsix/package.nls.zh-tw-144dc848.json +231 -0
  219. package/dist/assets/sumneko.lua-3.7.0.vsix/schema-dedfd658.json +3421 -0
  220. package/dist/assets/svelte.svelte-vscode-107.12.0.vsix/javascript-7aebc91a.json +43 -0
  221. package/dist/assets/svelte.svelte-vscode-107.12.0.vsix/language-configuration-3cb1f78d.json +38 -0
  222. package/dist/assets/svelte.svelte-vscode-107.12.0.vsix/markdown-svelte-4cd58a41.json +45 -0
  223. package/dist/assets/svelte.svelte-vscode-107.12.0.vsix/markdown-svelte-css-0fdc510e.json +23 -0
  224. package/dist/assets/svelte.svelte-vscode-107.12.0.vsix/markdown-svelte-js-cd568059.json +23 -0
  225. package/dist/assets/svelte.svelte-vscode-107.12.0.vsix/package-json-schema-ec2f7bd4.json +9 -0
  226. package/dist/assets/svelte.svelte-vscode-107.12.0.vsix/postcss-05883dcd.json +377 -0
  227. package/dist/assets/svelte.svelte-vscode-107.12.0.vsix/prettier-options-schema-9e36a684.json +112 -0
  228. package/dist/assets/svelte.svelte-vscode-107.12.0.vsix/pug-svelte-04246371.json +293 -0
  229. package/dist/assets/svelte.svelte-vscode-107.12.0.vsix/pug-svelte-dotblock-b92db507.json +55 -0
  230. package/dist/assets/svelte.svelte-vscode-107.12.0.vsix/pug-svelte-tags-65124af1.json +201 -0
  231. package/dist/assets/svelte.svelte-vscode-107.12.0.vsix/svelte-a1bb47f3.json +22 -0
  232. package/dist/assets/svelte.svelte-vscode-107.12.0.vsix/svelte.tmLanguage-aec82be9.json +1163 -0
  233. package/dist/assets/svelte.svelte-vscode-107.12.0.vsix/typescript-bd1c0ff1.json +37 -0
  234. package/dist/assets/webfreak.code-d-0.23.2.vsix/d-2da26fd0.json +3163 -0
  235. package/dist/assets/webfreak.code-d-0.23.2.vsix/d-316cb838.json +90 -0
  236. package/dist/assets/webfreak.code-d-0.23.2.vsix/diet-0b761e76.json +87 -0
  237. package/dist/assets/webfreak.code-d-0.23.2.vsix/diet-7fe4fdb7.json +92 -0
  238. package/dist/assets/webfreak.code-d-0.23.2.vsix/diet-83c1bebc.json +742 -0
  239. package/dist/assets/webfreak.code-d-0.23.2.vsix/dml-ef6957d3.json +157 -0
  240. package/dist/assets/webfreak.code-d-0.23.2.vsix/dub.schema-77c2f417.json +377 -0
  241. package/dist/assets/webfreak.code-d-0.23.2.vsix/general-7b927912.json +84 -0
  242. package/dist/assets/webfreak.code-d-0.23.2.vsix/sdl-b6c61596.json +149 -0
  243. package/dist/configuration/index.d.ts +1 -2
  244. package/dist/configuration/index.js +45 -0
  245. package/dist/editor/autofold.js +24 -0
  246. package/dist/editor/cobol.js +67 -0
  247. package/dist/editor/index.js +9 -0
  248. package/dist/extensions/Angular.ng-template-16.1.8.vsix.js +16 -0
  249. package/dist/extensions/Dart-Code.dart-code-3.75.20231009.vsix.js +14 -0
  250. package/dist/extensions/IMCTradingBV.svlangserver-0.4.1.vsix.js +18 -0
  251. package/dist/extensions/JakeBecker.elixir-ls-0.17.1.vsix.js +18 -0
  252. package/dist/extensions/JuanBlanco.solidity-0.0.165.vsix.js +14 -0
  253. package/dist/extensions/REditorSupport.r-2.8.2.vsix.js +42 -0
  254. package/dist/extensions/alefragnani.pascal-9.6.0.vsix.js +18 -0
  255. package/dist/extensions/batisteo.vscode-django-1.14.0.vsix.js +18 -0
  256. package/dist/extensions/bitwisecook.tcl-0.4.3.vsix.js +14 -0
  257. package/dist/extensions/broadcomMFD.cobol-language-support-2.0.3.vsix.js +16 -0
  258. package/dist/extensions/castwide.solargraph-0.24.0.vsix.js +5 -0
  259. package/dist/extensions/ckolkman.vscode-postgres-1.4.3.vsix.js +14 -0
  260. package/dist/extensions/golang.Go-0.39.1.vsix.js +18 -0
  261. package/dist/extensions/johnsoncodehk.vscode-angular-1.0.22.vsix.js +14 -0
  262. package/dist/extensions/justusadam.language-haskell-3.6.0.vsix.js +38 -0
  263. package/dist/extensions/mathiasfrohlich.Kotlin-1.7.1.vsix.js +16 -0
  264. package/dist/extensions/ms-dotnettools.csharp-2.6.24.vsix.js +46 -0
  265. package/dist/extensions/ms-python.python-2023.19.12861011.vsix.js +48 -0
  266. package/dist/extensions/ms-vscode.cpptools-1.18.0.vsix.js +36 -0
  267. package/dist/extensions/ocamllabs.ocaml-platform-1.13.1.vsix.js +82 -0
  268. package/dist/extensions/pgourlain.erlang-0.9.7.vsix.js +14 -0
  269. package/dist/extensions/redhat.java-1.24.2023101604.vsix.js +26 -0
  270. package/dist/extensions/scala-lang.scala-0.5.7.vsix.js +12 -0
  271. package/dist/extensions/scalameta.metals-1.25.2.vsix.js +30 -0
  272. package/dist/extensions/sumneko.lua-3.7.0.vsix.js +18 -0
  273. package/dist/extensions/svelte.svelte-vscode-107.12.0.vsix.js +36 -0
  274. package/dist/extensions/webfreak.code-d-0.23.2.vsix.js +26 -0
  275. package/dist/extensions.d.ts +36 -0
  276. package/dist/features/debug.js +6 -0
  277. package/dist/features/extensionHostWorker.js +11 -0
  278. package/dist/features/search.d.ts +1 -0
  279. package/dist/features/search.js +7 -0
  280. package/dist/features/viewPanels.d.ts +1 -0
  281. package/dist/features/viewPanels.js +11 -0
  282. package/dist/features/views.d.ts +4 -0
  283. package/dist/features/views.js +27 -0
  284. package/dist/index.d.ts +3 -3
  285. package/dist/keybindings/index.js +36 -0
  286. package/dist/keybindings/vim.js +82 -0
  287. package/dist/languages/index.d.ts +0 -2
  288. package/dist/languages/index.js +40 -0
  289. package/dist/main.js +9 -3519
  290. package/dist/monaco.d.ts +6 -10
  291. package/dist/monaco.js +93 -0
  292. package/dist/node_modules/lodash.kebabcase/index.js +439 -0
  293. package/dist/node_modules/lodash.throttle/index.js +443 -0
  294. package/dist/node_modules/monaco-emacs/lib/emacs/actions.js +596 -0
  295. package/dist/node_modules/monaco-emacs/lib/emacs/basicInput.js +113 -0
  296. package/dist/node_modules/monaco-emacs/lib/emacs/commands.js +184 -0
  297. package/dist/node_modules/monaco-emacs/lib/emacs/index.js +186 -0
  298. package/dist/node_modules/monaco-emacs/lib/emacs/state.js +116 -0
  299. package/dist/node_modules/monaco-emacs/lib/emacs/util.js +112 -0
  300. package/dist/node_modules/monaco-emacs/lib/index.js +31 -0
  301. package/dist/{vim.js → node_modules/monaco-vim/lib/cm/keymap_vim.js} +4 -1790
  302. package/dist/node_modules/monaco-vim/lib/cm_adapter.js +1393 -0
  303. package/dist/node_modules/monaco-vim/lib/index.js +71 -0
  304. package/dist/node_modules/monaco-vim/lib/statusbar.js +239 -0
  305. package/dist/services.d.ts +8 -0
  306. package/dist/services.js +73 -0
  307. package/dist/style.js +12 -0
  308. package/dist/theme/index.d.ts +1 -4
  309. package/dist/theme/index.js +21 -0
  310. package/dist/tools/EditorOpenHandlerRegistry.d.ts +3 -2
  311. package/dist/tools/EditorOpenHandlerRegistry.js +108 -0
  312. package/dist/tools/FakeWorker.d.ts +5 -0
  313. package/dist/tools/FakeWorker.js +8 -0
  314. package/dist/tools.js +235 -0
  315. package/dist/worker.d.ts +1 -10
  316. package/dist/worker.js +11 -43
  317. package/package.json +127 -67
  318. package/stats.html +90 -1429
  319. package/dist/COBOL.tmLanguage.js +0 -172
  320. package/dist/Erlang.plist.js +0 -1752
  321. package/dist/HTML (Eex)2.js +0 -100
  322. package/dist/JSON.tmLanguage.js +0 -221
  323. package/dist/JSONC.tmLanguage.js +0 -221
  324. package/dist/JavaProperties.tmLanguage.js +0 -116
  325. package/dist/JavaScript.tmLanguage.js +0 -5922
  326. package/dist/JavaScriptReact.tmLanguage.js +0 -5922
  327. package/dist/Kotlin.tmLanguage.js +0 -724
  328. package/dist/META.js +0 -100
  329. package/dist/MagicPython.tmLanguage.js +0 -4221
  330. package/dist/MagicRegExp.tmLanguage.js +0 -505
  331. package/dist/Markdown Redcarpet.js +0 -221
  332. package/dist/RMarkdown.js +0 -25
  333. package/dist/Rcpp.js +0 -50
  334. package/dist/Rd (R Documentation).js +0 -131
  335. package/dist/Regular Expressions (JavaScript).tmLanguage.js +0 -166
  336. package/dist/Scala.tmLanguage.js +0 -1291
  337. package/dist/TypeScript.tmLanguage.js +0 -5673
  338. package/dist/TypeScriptReact.tmLanguage.js +0 -5922
  339. package/dist/_rollupPluginBabelHelpers.js +0 -51
  340. package/dist/angular.js +0 -74
  341. package/dist/asp-vb-net.tmlanguage.js +0 -247
  342. package/dist/aspnetcorerazor.js +0 -72
  343. package/dist/aspnetcorerazor.tmLanguage.js +0 -1522
  344. package/dist/atd.js +0 -110
  345. package/dist/atd2.js +0 -114
  346. package/dist/buildignore.r.js +0 -5
  347. package/dist/buildtarget.js +0 -53
  348. package/dist/c.js +0 -101
  349. package/dist/c.tmLanguage.js +0 -3565
  350. package/dist/cabal.js +0 -10
  351. package/dist/cabal.tmLanguage.js +0 -66
  352. package/dist/clojure.js +0 -68
  353. package/dist/clojure.tmLanguage.js +0 -439
  354. package/dist/cobol.js +0 -6
  355. package/dist/cobol2.js +0 -337
  356. package/dist/codeblock-cabal.js +0 -42
  357. package/dist/codeblock-haskell.js +0 -42
  358. package/dist/codeblock-literate-haskell.js +0 -42
  359. package/dist/codeblock.js +0 -59
  360. package/dist/codeblock2.js +0 -36
  361. package/dist/codeblock3.js +0 -95
  362. package/dist/coffeescript-coffeescript.code-snippets.js +0 -18
  363. package/dist/coffeescript.js +0 -91
  364. package/dist/coffeescript.tmLanguage.js +0 -1324
  365. package/dist/configuration/files.d.ts +0 -6
  366. package/dist/cpp-c.code-snippets.js +0 -18
  367. package/dist/cpp-cpp.code-snippets.js +0 -18
  368. package/dist/cpp.js +0 -101
  369. package/dist/cpp.tmLanguage.js +0 -16485
  370. package/dist/cpptools.js +0 -2608
  371. package/dist/cram.js +0 -257
  372. package/dist/csharp.js +0 -92
  373. package/dist/csharp.tmLanguage.js +0 -4992
  374. package/dist/css.js +0 -106
  375. package/dist/css.tmLanguage.js +0 -1873
  376. package/dist/css.worker.js +0 -6
  377. package/dist/cuda-cpp.js +0 -101
  378. package/dist/cuda-cpp.tmLanguage.js +0 -19993
  379. package/dist/d-diet.js +0 -92
  380. package/dist/d.js +0 -3173
  381. package/dist/d2.js +0 -97
  382. package/dist/d3.js +0 -609
  383. package/dist/dart.js +0 -543
  384. package/dist/dart2.js +0 -103
  385. package/dist/dart3.js +0 -1124
  386. package/dist/dcf.js +0 -93
  387. package/dist/debian-control.r.js +0 -69
  388. package/dist/diet.js +0 -758
  389. package/dist/diet2.js +0 -100
  390. package/dist/django-html.js +0 -155
  391. package/dist/django-html.tmLanguage.js +0 -715
  392. package/dist/django-txt.js +0 -155
  393. package/dist/django-txt.tmLanguage.js +0 -269
  394. package/dist/dml.js +0 -169
  395. package/dist/dml2.js +0 -90
  396. package/dist/dockercompose.js +0 -82
  397. package/dist/dpp.js +0 -97
  398. package/dist/dscript.js +0 -90
  399. package/dist/dune-project.js +0 -481
  400. package/dist/dune-project2.js +0 -65
  401. package/dist/dune-workspace.js +0 -298
  402. package/dist/dune-workspace2.js +0 -65
  403. package/dist/dune.js +0 -2962
  404. package/dist/dune2.js +0 -65
  405. package/dist/eex.js +0 -55
  406. package/dist/elixir-snippets.js +0 -184
  407. package/dist/elixir.js +0 -2341
  408. package/dist/elixir2.js +0 -69
  409. package/dist/elixir3.js +0 -40
  410. package/dist/erlang-erlang.js +0 -195
  411. package/dist/erlang.js +0 -81
  412. package/dist/erlang2.js +0 -92
  413. package/dist/expression.js +0 -846
  414. package/dist/features/cssContribution.d.ts +0 -1
  415. package/dist/features/cssContribution.js +0 -7
  416. package/dist/features/extensionConfigurations.d.ts +0 -1
  417. package/dist/features/extensionConfigurations.js +0 -44
  418. package/dist/features/htmlContribution.d.ts +0 -4
  419. package/dist/features/htmlContribution.js +0 -112
  420. package/dist/features/jsonContribution.d.ts +0 -6
  421. package/dist/features/jsonContribution.js +0 -43
  422. package/dist/features/typescriptContribution.d.ts +0 -1
  423. package/dist/features/typescriptContribution.js +0 -32
  424. package/dist/fsharp-fsharp.code-snippets.js +0 -18
  425. package/dist/fsharp.js +0 -80
  426. package/dist/fsharp.tmLanguage.js +0 -1844
  427. package/dist/go.js +0 -103
  428. package/dist/go.mod.js +0 -8
  429. package/dist/go.mod.tmGrammar.js +0 -182
  430. package/dist/go.sum.tmGrammar.js +0 -55
  431. package/dist/go.tmLanguage.js +0 -1025
  432. package/dist/go.work.js +0 -8
  433. package/dist/govulncheck.tmGrammar.js +0 -138
  434. package/dist/groovy-groovy.code-snippets.js +0 -229
  435. package/dist/groovy.js +0 -79
  436. package/dist/groovy.tmLanguage.js +0 -1391
  437. package/dist/haskell.js +0 -88
  438. package/dist/haskell.tmLanguage.js +0 -629
  439. package/dist/haskell2.js +0 -16
  440. package/dist/html (eex).js +0 -31
  441. package/dist/html-derivative.tmLanguage.js +0 -57
  442. package/dist/html-html.code-snippets.js +0 -20
  443. package/dist/html.js +0 -11
  444. package/dist/html.tmLanguage.js +0 -2652
  445. package/dist/html.tmLanguage2.js +0 -107
  446. package/dist/html.worker.js +0 -6
  447. package/dist/index.js +0 -2207
  448. package/dist/index2.js +0 -1398
  449. package/dist/inline-styles.js +0 -104
  450. package/dist/inline-template.js +0 -88
  451. package/dist/jade.js +0 -11
  452. package/dist/java-java.js +0 -125
  453. package/dist/java-properties.js +0 -73
  454. package/dist/java.js +0 -95
  455. package/dist/java.tmLanguage.js +0 -1863
  456. package/dist/java2.js +0 -888
  457. package/dist/javascript-javascript.code-snippets.js +0 -205
  458. package/dist/javascript.js +0 -197
  459. package/dist/javascriptreact.js +0 -197
  460. package/dist/jsdoc.js.injection.tmLanguage.js +0 -32
  461. package/dist/jsdoc.ts.injection.tmLanguage.js +0 -32
  462. package/dist/json.js +0 -75
  463. package/dist/json.worker.js +0 -6
  464. package/dist/jsonc.js +0 -75
  465. package/dist/jsx-tags.js +0 -158
  466. package/dist/jvm-bytecode-verbose.js +0 -1231
  467. package/dist/jvm-bytecode.js +0 -565
  468. package/dist/kotlin-kotlin.js +0 -117
  469. package/dist/kotlin.js +0 -103
  470. package/dist/kotlinscript.js +0 -103
  471. package/dist/languages/extensions/extensionConfigurationLoader.d.ts +0 -3
  472. package/dist/languages/extensions/grammarLoader.d.ts +0 -2
  473. package/dist/languages/extensions/languageConfigurationLoader.d.ts +0 -2
  474. package/dist/languages/extensions/snippetLoader.d.ts +0 -2
  475. package/dist/languages/extensions/themeLoader.d.ts +0 -2
  476. package/dist/languages/textMate/index.d.ts +0 -1
  477. package/dist/literate haskell.js +0 -88
  478. package/dist/literateHaskell.tmLanguage.js +0 -70
  479. package/dist/lua.js +0 -84
  480. package/dist/lua.tmLanguage.js +0 -906
  481. package/dist/lua2.js +0 -2859
  482. package/dist/markdown-basics-markdown.code-snippets.js +0 -121
  483. package/dist/markdown-svelte-css.js +0 -37
  484. package/dist/markdown-svelte-js.js +0 -37
  485. package/dist/markdown-svelte.js +0 -59
  486. package/dist/markdown-vue.js +0 -54
  487. package/dist/markdown.js +0 -49
  488. package/dist/markdown.tmLanguage.js +0 -3006
  489. package/dist/menhir-action.js +0 -51
  490. package/dist/menhir.js +0 -597
  491. package/dist/merlin.js +0 -111
  492. package/dist/namespace.r.js +0 -88
  493. package/dist/oasis.js +0 -99
  494. package/dist/objective-c.js +0 -79
  495. package/dist/objective-c.tmLanguage.js +0 -3763
  496. package/dist/objective-cpp.js +0 -79
  497. package/dist/ocaml-dune-project.js +0 -38
  498. package/dist/ocaml-dune.js +0 -53
  499. package/dist/ocaml-markdown-codeblock.js +0 -42
  500. package/dist/ocaml-ocaml.js +0 -88
  501. package/dist/ocaml-ocamllex.js +0 -12
  502. package/dist/ocaml.META.js +0 -29
  503. package/dist/ocaml.interface.js +0 -292
  504. package/dist/ocaml.interface2.js +0 -114
  505. package/dist/ocaml.js +0 -903
  506. package/dist/ocaml.menhir.js +0 -81
  507. package/dist/ocaml.oasis.js +0 -18
  508. package/dist/ocaml.ocamlbuild.js +0 -45
  509. package/dist/ocaml.ocamlformat.js +0 -8
  510. package/dist/ocaml.ocamllex.js +0 -60
  511. package/dist/ocaml.opam-install.js +0 -49
  512. package/dist/ocaml.opam.js +0 -69
  513. package/dist/ocaml2.js +0 -114
  514. package/dist/ocaml3.js +0 -136
  515. package/dist/ocamlbuild.js +0 -189
  516. package/dist/ocamldoc.js +0 -54
  517. package/dist/ocamlformat.js +0 -206
  518. package/dist/ocamllex.js +0 -133
  519. package/dist/omnisharp-csharp.js +0 -508
  520. package/dist/omnisharp.js +0 -590
  521. package/dist/opam-install.js +0 -40
  522. package/dist/opam.js +0 -140
  523. package/dist/pascal-pascal.js +0 -382
  524. package/dist/pascal.js +0 -80
  525. package/dist/pascal.tmLanguage.js +0 -169
  526. package/dist/pascal2.js +0 -26
  527. package/dist/perl.js +0 -93
  528. package/dist/perl.tmLanguage.js +0 -2986
  529. package/dist/perl6.js +0 -86
  530. package/dist/perl6.tmLanguage.js +0 -323
  531. package/dist/pgsql.tmLanguage.js +0 -284
  532. package/dist/php-php.code-snippets.js +0 -267
  533. package/dist/php.js +0 -154
  534. package/dist/php.tmLanguage.js +0 -4008
  535. package/dist/pip-requirements.js +0 -8
  536. package/dist/pip-requirements.tmLanguage.js +0 -89
  537. package/dist/plaintext.js +0 -11
  538. package/dist/platform.tmLanguage.js +0 -1135
  539. package/dist/postcss.src.yaml.js +0 -393
  540. package/dist/postgres.js +0 -80
  541. package/dist/postgresql.js +0 -75
  542. package/dist/powershell.js +0 -107
  543. package/dist/powershell.tmLanguage.js +0 -1037
  544. package/dist/pug-svelte-dotblock.js +0 -69
  545. package/dist/pug-svelte-tags.js +0 -215
  546. package/dist/pug-svelte.js +0 -307
  547. package/dist/python.js +0 -236
  548. package/dist/r.js +0 -664
  549. package/dist/r2.js +0 -88
  550. package/dist/rbuildignore.js +0 -39
  551. package/dist/rd.js +0 -81
  552. package/dist/reason-markdown-codeblock.js +0 -42
  553. package/dist/reason.js +0 -79
  554. package/dist/rmd.js +0 -84
  555. package/dist/rnamespace.js +0 -283
  556. package/dist/ruby.js +0 -95
  557. package/dist/ruby.tmLanguage.js +0 -2784
  558. package/dist/rust.js +0 -84
  559. package/dist/rust.tmLanguage.js +0 -1178
  560. package/dist/sassdoc.tmLanguage.js +0 -362
  561. package/dist/scala.js +0 -85
  562. package/dist/scalameta.js +0 -223
  563. package/dist/scss.js +0 -117
  564. package/dist/scss.tmLanguage.js +0 -1887
  565. package/dist/sdl.js +0 -162
  566. package/dist/sdl2.js +0 -90
  567. package/dist/semanticdb.js +0 -62
  568. package/dist/shell-unix-bash.tmLanguage.js +0 -2016
  569. package/dist/shellscript.js +0 -93
  570. package/dist/solargraph.js +0 -192
  571. package/dist/solidity-solidity.js +0 -213
  572. package/dist/solidity.js +0 -1187
  573. package/dist/solidity2.js +0 -71
  574. package/dist/solidity3.js +0 -137
  575. package/dist/sql.js +0 -99
  576. package/dist/sql.tmLanguage.js +0 -636
  577. package/dist/svelte.js +0 -120
  578. package/dist/svelte.svelte-vscode-javascript.js +0 -45
  579. package/dist/svelte.svelte-vscode-svelte.js +0 -46
  580. package/dist/svelte.svelte-vscode-typescript.js +0 -43
  581. package/dist/svelte.svelte-vscode.js +0 -383
  582. package/dist/svelte.tmLanguage.src.yaml.js +0 -1099
  583. package/dist/svlangserver-systemverilog.js +0 -395
  584. package/dist/svlangserver.js +0 -85
  585. package/dist/swift-swift.code-snippets.js +0 -183
  586. package/dist/swift.js +0 -90
  587. package/dist/swift.tmLanguage.js +0 -3312
  588. package/dist/systemverilog.js +0 -187
  589. package/dist/systemverilog.tmLanguage.js +0 -1259
  590. package/dist/tasty.js +0 -72
  591. package/dist/tcl-tcl.js +0 -151
  592. package/dist/tcl.js +0 -78
  593. package/dist/tcl.tmlanguage.yaml.js +0 -5484
  594. package/dist/template.js +0 -207
  595. package/dist/theme-defaults~dark_plus.js +0 -207
  596. package/dist/theme-defaults~dark_plus_experimental.js +0 -146
  597. package/dist/theme-defaults~dark_vs.js +0 -412
  598. package/dist/theme-defaults~hc_black.js +0 -471
  599. package/dist/theme-defaults~hc_light.js +0 -595
  600. package/dist/theme-defaults~light_plus.js +0 -209
  601. package/dist/theme-defaults~light_plus_experimental.js +0 -159
  602. package/dist/theme-defaults~light_vs.js +0 -441
  603. package/dist/ts.worker.js +0 -6
  604. package/dist/typescript-basics-typescript.code-snippets.js +0 -313
  605. package/dist/typescript-language-features.js +0 -1090
  606. package/dist/typescript.js +0 -216
  607. package/dist/typescriptreact.js +0 -216
  608. package/dist/vb-vb.code-snippets.js +0 -88
  609. package/dist/vb.js +0 -79
  610. package/dist/verilog.js +0 -187
  611. package/dist/volar-vue.js +0 -343
  612. package/dist/vscode-R-r-snippets.js +0 -534
  613. package/dist/vscode-R-rmarkdown.js +0 -461
  614. package/dist/vscode-R.js +0 -648
  615. package/dist/vscode-django-filters.js +0 -340
  616. package/dist/vscode-django.js +0 -37
  617. package/dist/vscode-go-go.js +0 -276
  618. package/dist/vscode-go.js +0 -1604
  619. package/dist/vscode-groovy.js +0 -28
  620. package/dist/vscode-python.js +0 -686
  621. package/dist/vue-directives.js +0 -25
  622. package/dist/vue-interpolations.js +0 -25
  623. package/dist/vue-sfc-style-variable-injection.js +0 -63
  624. package/dist/vue.js +0 -151
  625. package/dist/vue.tmLanguage.js +0 -1218
  626. package/dist/xml.js +0 -116
  627. package/dist/xml.tmLanguage.js +0 -395
  628. package/dist/xsl.js +0 -39
  629. package/dist/xsl.tmLanguage.js +0 -102
  630. package/dist/yaml.js +0 -82
  631. package/dist/yaml.tmLanguage.js +0 -629
  632. /package/dist/{extensions → editor}/autofold.d.ts +0 -0
  633. /package/dist/{extensions → editor}/cobol.d.ts +0 -0
  634. /package/dist/{extensions → editor}/index.d.ts +0 -0
  635. /package/dist/{languages/snippets/index.d.ts → features/debug.d.ts} +0 -0
  636. /package/dist/{languages/textMate/semanticTokens.d.ts → features/extensionHostWorker.d.ts} +0 -0
package/dist/worker.js CHANGED
@@ -1,52 +1,20 @@
1
- function decodeBase64(base64, enableUnicode) {
2
- var binaryString = atob(base64);
3
- if (enableUnicode) {
4
- var binaryView = new Uint8Array(binaryString.length);
5
- for (var i = 0, n = binaryString.length; i < n; ++i) {
6
- binaryView[i] = binaryString.charCodeAt(i);
7
- }
8
- return String.fromCharCode.apply(null, new Uint16Array(binaryView.buffer));
9
- }
10
- return binaryString;
11
- }
12
-
13
- function createURL(base64, sourcemapArg, enableUnicodeArg) {
14
- var sourcemap = sourcemapArg === undefined ? null : sourcemapArg;
15
- var enableUnicode = enableUnicodeArg === undefined ? false : enableUnicodeArg;
16
- var source = decodeBase64(base64, enableUnicode);
17
- var start = source.indexOf('\n', 10) + 1;
18
- var body = source.substring(start) + (sourcemap ? '\/\/# sourceMappingURL=' + sourcemap : '');
19
- var blob = new Blob([body], { type: 'application/javascript' });
20
- return URL.createObjectURL(blob);
21
- }
22
-
23
- function createBase64WorkerFactory(base64, sourcemapArg, enableUnicodeArg) {
24
- var url;
25
- return function WorkerFactory(options) {
26
- url = url || createURL(base64, sourcemapArg, enableUnicodeArg);
27
- return new Worker(url, options);
28
- };
29
- }
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);
32
- /* eslint-enable */
33
-
34
1
  const workerLoaders = {
35
- editorWorkerService: () => WorkerFactory
2
+ editorWorkerService: () => new Worker(new URL('monaco-editor/esm/vs/editor/editor.worker', import.meta.url)),
3
+ textMateWorker: () => new Worker(new URL('@codingame/monaco-vscode-textmate-service-override/worker', import.meta.url)),
4
+ languageDetectionWorkerService: () => new Worker(new URL('@codingame/monaco-vscode-language-detection-worker-service-override/worker', import.meta.url))
36
5
  };
37
6
  function registerWorkerLoader(label, workerLoader) {
38
- workerLoaders[label] = workerLoader;
7
+ workerLoaders[label] = workerLoader;
39
8
  }
40
9
  // Do not use monaco-editor-webpack-plugin because it doesn't handle properly cross origin workers
41
10
  window.MonacoEnvironment = {
42
- getWorker: async function (moduleId, label) {
43
- const workerFactory = workerLoaders[label];
44
- if (workerFactory != null) {
45
- const Worker = await workerFactory();
46
- return new Worker();
11
+ getWorker: function (moduleId, label) {
12
+ const workerFactory = workerLoaders[label];
13
+ if (workerFactory != null) {
14
+ return workerFactory();
15
+ }
16
+ throw new Error(`Unimplemented worker ${label} (${moduleId})`);
47
17
  }
48
- throw new Error("Unimplemented worker ".concat(label, " (").concat(moduleId, ")"));
49
- }
50
18
  };
51
19
 
52
- export { createBase64WorkerFactory as c, registerWorkerLoader as r };
20
+ export { registerWorkerLoader };