@codingame/monaco-editor-wrapper 1.4.2 → 1.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (74) hide show
  1. package/dist/Groovy2.js +28 -0
  2. package/dist/cpptools.js +6 -0
  3. package/dist/css.worker.js +1 -1
  4. package/dist/features/mutualizedExtensionConfigurations.d.ts +1 -0
  5. package/dist/features/mutualizedExtensionConfigurations.js +4857 -0
  6. package/dist/hacks.d.ts +2 -1
  7. package/dist/html.worker.js +1 -1
  8. package/dist/index.d.ts +2 -2
  9. package/dist/java-java.js +4 -1
  10. package/dist/java2.js +2 -1
  11. package/dist/json.worker.js +1 -1
  12. package/dist/keybindings/index.d.ts +2 -1
  13. package/dist/keybindings/keybindingHelper.d.ts +1 -1
  14. package/dist/languages/extensions/configurationLoader.d.ts +20 -2
  15. package/dist/languages/extensions/languageConfigurationLoader.d.ts +9 -1
  16. package/dist/languages/textMate/CGTMTokenizationSupport.d.ts +2 -2
  17. package/dist/lua2.js +35 -0
  18. package/dist/main.js +145 -109
  19. package/dist/markdown-basics-markdown.js +18 -0
  20. package/dist/monaco.d.ts +0 -1
  21. package/dist/r2.js +1 -1
  22. package/dist/scalameta.js +7 -1
  23. package/dist/services/CustomFoldingRulesLanguageConfigurationService.d.ts +4 -0
  24. package/dist/services/MultiEditorStandaloneCodeEditorService.d.ts +3 -3
  25. package/dist/services/TextModelService.d.ts +25 -0
  26. package/dist/theme/tools.d.ts +2 -1
  27. package/dist/ts.worker.js +1 -1
  28. package/dist/typescript-language-features.js +14 -4
  29. package/dist/vscode-R-rmd.js +2 -2
  30. package/dist/worker.js +1 -1
  31. package/package.json +18 -13
  32. package/stats.html +1 -1
  33. package/dist/COBOL Copybook2.js +0 -2017
  34. package/dist/COBOL2.js +0 -2017
  35. package/dist/SQL.plist.js +0 -482
  36. package/dist/bsv2.js +0 -49
  37. package/dist/c2.js +0 -18
  38. package/dist/coffeescript2.js +0 -18
  39. package/dist/configuration/hack.d.ts +0 -2
  40. package/dist/cpp2.js +0 -18
  41. package/dist/csharp2.js +0 -508
  42. package/dist/cssContribution.js +0 -10
  43. package/dist/diet3.js +0 -92
  44. package/dist/extensionConfigurations.js +0 -9475
  45. package/dist/fsharp2.js +0 -18
  46. package/dist/groovy2.js +0 -229
  47. package/dist/html (eex).js +0 -31
  48. package/dist/htmlContribution.js +0 -10
  49. package/dist/javascript2.js +0 -196
  50. package/dist/javascriptreact2.js +0 -196
  51. package/dist/jsonContribution.js +0 -78
  52. package/dist/kotlin2.js +0 -117
  53. package/dist/kotlinscript2.js +0 -117
  54. package/dist/languages/monarch/list.d.ts +0 -7
  55. package/dist/languages/textMate/TextMateTokensProvider.d.ts +0 -11
  56. package/dist/markdown-basics.js +0 -103
  57. package/dist/markdown2.js +0 -103
  58. package/dist/pgsql-sql.js +0 -21
  59. package/dist/pgsql.js +0 -21
  60. package/dist/php2.js +0 -265
  61. package/dist/powershell2.js +0 -18
  62. package/dist/r.tmLanguage.js +0 -572
  63. package/dist/reason2.js +0 -100
  64. package/dist/services/functional.d.ts +0 -1
  65. package/dist/services/lyfecycle.d.ts +0 -13
  66. package/dist/sql2.js +0 -21
  67. package/dist/swift2.js +0 -183
  68. package/dist/systemverilog2.js +0 -208
  69. package/dist/tcl2.js +0 -151
  70. package/dist/typescript-basics.js +0 -312
  71. package/dist/typescript2.js +0 -312
  72. package/dist/typescriptContribution.js +0 -36
  73. package/dist/typescriptreact2.js +0 -312
  74. package/dist/vb2.js +0 -88
package/dist/worker.js CHANGED
@@ -28,7 +28,7 @@ function createBase64WorkerFactory(base64, sourcemapArg, enableUnicodeArg) {
28
28
  };
29
29
  }
30
30
 
31
- var WorkerFactory = createBase64WorkerFactory('Lyogcm9sbHVwLXBsdWdpbi13ZWItd29ya2VyLWxvYWRlciAqLwp2YXIgd29ya2VyX2NvZGU9ZnVuY3Rpb24oZSl7InVzZSBzdHJpY3QiO2NsYXNzIHR7Y29uc3RydWN0b3IoKXt0aGlzLmxpc3RlbmVycz1bXSx0aGlzLnVuZXhwZWN0ZWRFcnJvckhhbmRsZXI9ZnVuY3Rpb24oZSl7c2V0VGltZW91dCgoKT0+e2lmKGUuc3RhY2spdGhyb3cgbmV3IEVycm9yKGUubWVzc2FnZSsiXG5cbiIrZS5zdGFjayk7dGhyb3cgZX0sMCl9fWFkZExpc3RlbmVyKGUpe3JldHVybiB0aGlzLmxpc3RlbmVycy5wdXNoKGUpLCgpPT57dGhpcy5fcmVtb3ZlTGlzdGVuZXIoZSl9fWVtaXQodCl7dGhpcy5saXN0ZW5lcnMuZm9yRWFjaChlPT57ZSh0KX0pfV9yZW1vdmVMaXN0ZW5lcihlKXt0aGlzLmxpc3RlbmVycy5zcGxpY2UodGhpcy5saXN0ZW5lcnMuaW5kZXhPZihlKSwxKX1zZXRVbmV4cGVjdGVkRXJyb3JIYW5kbGVyKGUpe3RoaXMudW5leHBlY3RlZEVycm9ySGFuZGxlcj1lfWdldFVuZXhwZWN0ZWRFcnJvckhhbmRsZXIoKXtyZXR1cm4gdGhpcy51bmV4cGVjdGVkRXJyb3JIYW5kbGVyfW9uVW5leHBlY3RlZEVycm9yKGUpe3RoaXMudW5leHBlY3RlZEVycm9ySGFuZGxlcihlKSx0aGlzLmVtaXQoZSl9b25VbmV4cGVjdGVkRXh0ZXJuYWxFcnJvcihlKXt0aGlzLnVuZXhwZWN0ZWRFcnJvckhhbmRsZXIoZSl9fWNvbnN0IHI9bmV3IHQ7ZnVuY3Rpb24gaShlKXt2YXIgdDsodD1lKWluc3RhbmNlb2YgRXJyb3ImJnQubmFtZT09PXMmJnQubWVzc2FnZT09PXN8fHIub25VbmV4cGVjdGVkRXJyb3IoZSl9ZnVuY3Rpb24gbihlKXtpZihlIGluc3RhbmNlb2YgRXJyb3Ipe3ZhcntuYW1lOnQsbWVzc2FnZTpyfT1lO3JldHVybnskaXNFcnJvcjohMCxuYW1lOnQsbWVzc2FnZTpyLHN0YWNrOmUuc3RhY2t0cmFjZXx8ZS5zdGFja319cmV0dXJuIGV9Y29uc3Qgcz0iQ2FuY2VsZWQiO3ZhciBvOyFmdW5jdGlvbihzKXtzLmlzPWZ1bmN0aW9uKGUpe3JldHVybiBlJiYib2JqZWN0Ij09dHlwZW9mIGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBlW1N5bWJvbC5pdGVyYXRvcl19O2NvbnN0IHQ9T2JqZWN0LmZyZWV6ZShbXSk7cy5lbXB0eT1mdW5jdGlvbigpe3JldHVybiB0fSxzLnNpbmdsZT1mdW5jdGlvbiooZSl7eWllbGQgZX0scy5mcm9tPWZ1bmN0aW9uKGUpe3JldHVybiBlfHx0fSxzLmlzRW1wdHk9ZnVuY3Rpb24oZSl7cmV0dXJuIWV8fCEwPT09ZVtTeW1ib2wuaXRlcmF0b3JdKCkubmV4dCgpLmRvbmV9LHMuZmlyc3Q9ZnVuY3Rpb24oZSl7cmV0dXJuIGVbU3ltYm9sLml0ZXJhdG9yXSgpLm5leHQoKS52YWx1ZX0scy5zb21lPWZ1bmN0aW9uKGUsdCl7Zm9yKGNvbnN0IHIgb2YgZSlpZih0KHIpKXJldHVybiEwO3JldHVybiExfSxzLmZpbmQ9ZnVuY3Rpb24oZSx0KXtmb3IoY29uc3QgciBvZiBlKWlmKHQocikpcmV0dXJuIHJ9LHMuZmlsdGVyPWZ1bmN0aW9uKihlLHQpe2Zvcihjb25zdCByIG9mIGUpdChyKSYmKHlpZWxkIHIpfSxzLm1hcD1mdW5jdGlvbiooZSx0KXtsZXQgcj0wO2Zvcihjb25zdCBuIG9mIGUpeWllbGQgdChuLHIrKyl9LHMuY29uY2F0PWZ1bmN0aW9uKiguLi5lKXtmb3IoY29uc3QgdCBvZiBlKWZvcihjb25zdCByIG9mIHQpeWllbGQgcn0scy5jb25jYXROZXN0ZWQ9ZnVuY3Rpb24qKGUpe2Zvcihjb25zdCB0IG9mIGUpZm9yKGNvbnN0IHIgb2YgdCl5aWVsZCByfSxzLnJlZHVjZT1mdW5jdGlvbihlLHQscil7bGV0IG49cjtmb3IoY29uc3QgaSBvZiBlKW49dChuLGkpO3JldHVybiBufSxzLnNsaWNlPWZ1bmN0aW9uKihlLHQscj1lLmxlbmd0aCl7Zm9yKHQ8MCYmKHQrPWUubGVuZ3RoKSxyPDA/cis9ZS5sZW5ndGg6cj5lLmxlbmd0aCYmKHI9ZS5sZW5ndGgpO3Q8cjt0KyspeWllbGQgZVt0XX0scy5jb25zdW1lPWZ1bmN0aW9uKGUsdD1OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFkpe2NvbnN0IHI9W107aWYoMD09PXQpcmV0dXJuW3IsZV07Y29uc3Qgbj1lW1N5bWJvbC5pdGVyYXRvcl0oKTtmb3IobGV0IGU9MDtlPHQ7ZSsrKXt2YXIgaT1uLm5leHQoKTtpZihpLmRvbmUpcmV0dXJuW3Iscy5lbXB0eSgpXTtyLnB1c2goaS52YWx1ZSl9cmV0dXJuW3Ise1tTeW1ib2wuaXRlcmF0b3JdKCl7cmV0dXJuIG59fV19LHMuZXF1YWxzPWZ1bmN0aW9uKGUsdCxyPShlLHQpPT5lPT09dCl7Y29uc3Qgbj1lW1N5bWJvbC5pdGVyYXRvcl0oKSxpPXRbU3ltYm9sLml0ZXJhdG9yXSgpO2Zvcig7Oyl7dmFyIHM9bi5uZXh0KCksbz1pLm5leHQoKTtpZihzLmRvbmUhPT1vLmRvbmUpcmV0dXJuITE7aWYocy5kb25lKXJldHVybiEwO2lmKCFyKHMudmFsdWUsby52YWx1ZSkpcmV0dXJuITF9fX0obz1vfHx7fSk7Y2xhc3MgYSBleHRlbmRzIEVycm9ye2NvbnN0cnVjdG9yKGUpe3N1cGVyKGBFbmNvdW50ZXJlZCBlcnJvcnMgd2hpbGUgZGlzcG9zaW5nIG9mIHN0b3JlLiBFcnJvcnM6IFske2Uuam9pbigiLCAiKX1dYCksdGhpcy5lcnJvcnM9ZX19ZnVuY3Rpb24gaChlKXtpZihvLmlzKGUpKXtsZXQgdD1bXTtmb3IoY29uc3QgciBvZiBlKWlmKHIpdHJ5e3IuZGlzcG9zZSgpfWNhdGNoKGUpe3QucHVzaChlKX1pZigxPT09dC5sZW5ndGgpdGhyb3cgdFswXTtpZigxPHQubGVuZ3RoKXRocm93IG5ldyBhKHQpO3JldHVybiBBcnJheS5pc0FycmF5KGUpP1tdOmV9aWYoZSlyZXR1cm4gZS5kaXNwb3NlKCksZX1mdW5jdGlvbiBkKGUpe3JldHVybntkaXNwb3NlOmZ1bmN0aW9uKGUpe2NvbnN0IHQ9dGhpcztsZXQgcj0hMSxuO3JldHVybiBmdW5jdGlvbigpe3JldHVybiByfHwocj0hMCxuPWUuYXBwbHkodCxhcmd1bWVudHMpKSxufX0oKCk9PntlKCl9KX19Y2xhc3MgbHtjb25zdHJ1Y3Rvcigpe3RoaXMuX3RvRGlzcG9zZT1uZXcgU2V0LHRoaXMuX2lzRGlzcG9zZWQ9ITF9ZGlzcG9zZSgpe3RoaXMuX2lzRGlzcG9zZWR8fCh0aGlzLl9pc0Rpc3Bvc2VkPSEwLHRoaXMuY2xlYXIoKSl9Y2xlYXIoKXt0cnl7aCh0aGlzLl90b0Rpc3Bvc2UudmFsdWVzKCkpfWZpbmFsbHl7dGhpcy5fdG9EaXNwb3NlLmNsZWFyKCl9fWFkZChlKXtpZighZSlyZXR1cm4gZTtpZihlPT09dGhpcyl0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCByZWdpc3RlciBhIGRpc3Bvc2FibGUgb24gaXRzZWxmISIpO3JldHVybiB0aGlzLl9pc0Rpc3Bvc2VkP2wuRElTQUJMRV9ESVNQT1NFRF9XQVJOSU5HfHxjb25zb2xlLndhcm4obmV3IEVycm9yKCJUcnlpbmcgdG8gYWRkIGEgZGlzcG9zYWJsZSB0byBhIERpc3Bvc2FibGVTdG9yZSB0aGF0IGhhcyBhbHJlYWR5IGJlZW4gZGlzcG9zZWQgb2YuIFRoZSBhZGRlZCBvYmplY3Qgd2lsbCBiZSBsZWFrZWQhIikuc3RhY2spOnRoaXMuX3RvRGlzcG9zZS5hZGQoZSksZX19bC5ESVNBQkxFX0RJU1BPU0VEX1dBUk5JTkc9ITE7Y2xhc3MgY3tjb25zdHJ1Y3Rvcigpe3RoaXMuX3N0b3JlPW5ldyBsLHRoaXMuX3N0b3JlfWRpc3Bvc2UoKXt0aGlzLl9zdG9yZS5kaXNwb3NlKCl9X3JlZ2lzdGVyKGUpe2lmKGU9PT10aGlzKXRocm93IG5ldyBFcnJvcigiQ2Fubm90IHJlZ2lzdGVyIGEgZGlzcG9zYWJsZSBvbiBpdHNlbGYhIik7cmV0dXJuIHRoaXMuX3N0b3JlLmFkZChlKX19Yy5Ob25lPU9iamVjdC5mcmVlemUoe2Rpc3Bvc2UoKXt9fSk7Y2xhc3MgdXtjb25zdHJ1Y3RvcihlKXt0aGlzLmVsZW1lbnQ9ZSx0aGlzLm5leHQ9dS5VbmRlZmluZWQsdGhpcy5wcmV2PXUuVW5kZWZpbmVkfX11LlVuZGVmaW5lZD1uZXcgdSh2b2lkIDApO2NsYXNzIG17Y29uc3RydWN0b3IoKXt0aGlzLl9maXJzdD11LlVuZGVmaW5lZCx0aGlzLl9sYXN0PXUuVW5kZWZpbmVkLHRoaXMuX3NpemU9MH1nZXQgc2l6ZSgpe3JldHVybiB0aGlzLl9zaXplfWlzRW1wdHkoKXtyZXR1cm4gdGhpcy5fZmlyc3Q9PT11LlVuZGVmaW5lZH1jbGVhcigpe2xldCBlPXRoaXMuX2ZpcnN0O2Zvcig7ZSE9PXUuVW5kZWZpbmVkOyl7dmFyIHQ9ZS5uZXh0O2UucHJldj11LlVuZGVmaW5lZCxlLm5leHQ9dS5VbmRlZmluZWQsZT10fXRoaXMuX2ZpcnN0PXUuVW5kZWZpbmVkLHRoaXMuX2xhc3Q9dS5VbmRlZmluZWQsdGhpcy5fc2l6ZT0wfXVuc2hpZnQoZSl7cmV0dXJuIHRoaXMuX2luc2VydChlLCExKX1wdXNoKGUpe3JldHVybiB0aGlzLl9pbnNlcnQoZSwhMCl9X2luc2VydChlLHQpe2NvbnN0IHI9bmV3IHUoZSk7aWYodGhpcy5fZmlyc3Q9PT11LlVuZGVmaW5lZCl0aGlzLl9maXJzdD1yLHRoaXMuX2xhc3Q9cjtlbHNlIGlmKHQpe2NvbnN0IGk9dGhpcy5fbGFzdDt0aGlzLl9sYXN0PXIsci5wcmV2PWksaS5uZXh0PXJ9ZWxzZXtjb25zdCBzPXRoaXMuX2ZpcnN0O3RoaXMuX2ZpcnN0PXIsci5uZXh0PXMscy5wcmV2PXJ9dGhpcy5fc2l6ZSs9MTtsZXQgbj0hMTtyZXR1cm4oKT0+e258fChuPSEwLHRoaXMuX3JlbW92ZShyKSl9fXNoaWZ0KCl7aWYodGhpcy5fZmlyc3QhPT11LlVuZGVmaW5lZCl7dmFyIGU9dGhpcy5fZmlyc3QuZWxlbWVudDtyZXR1cm4gdGhpcy5fcmVtb3ZlKHRoaXMuX2ZpcnN0KSxlfX1wb3AoKXtpZih0aGlzLl9sYXN0IT09dS5VbmRlZmluZWQpe3ZhciBlPXRoaXMuX2xhc3QuZWxlbWVudDtyZXR1cm4gdGhpcy5fcmVtb3ZlKHRoaXMuX2xhc3QpLGV9fV9yZW1vdmUoZSl7aWYoZS5wcmV2IT09dS5VbmRlZmluZWQmJmUubmV4dCE9PXUuVW5kZWZpbmVkKXtjb25zdCB0PWUucHJldjt0Lm5leHQ9ZS5uZXh0LGUubmV4dC5wcmV2PXR9ZWxzZSBlLnByZXY9PT11LlVuZGVmaW5lZCYmZS5uZXh0PT09dS5VbmRlZmluZWQ/KHRoaXMuX2ZpcnN0PXUuVW5kZWZpbmVkLHRoaXMuX2xhc3Q9dS5VbmRlZmluZWQpOmUubmV4dD09PXUuVW5kZWZpbmVkPyh0aGlzLl9sYXN0PXRoaXMuX2xhc3QucHJldix0aGlzLl9sYXN0Lm5leHQ9dS5VbmRlZmluZWQpOmUucHJldj09PXUuVW5kZWZpbmVkJiYodGhpcy5fZmlyc3Q9dGhpcy5fZmlyc3QubmV4dCx0aGlzLl9maXJzdC5wcmV2PXUuVW5kZWZpbmVkKTstLXRoaXMuX3NpemV9KltTeW1ib2wuaXRlcmF0b3JdKCl7bGV0IGU9dGhpcy5fZmlyc3Q7Zm9yKDtlIT09dS5VbmRlZmluZWQ7KXlpZWxkIGUuZWxlbWVudCxlPWUubmV4dH19dmFyIGY9ImVuIjtsZXQgZz0hMSxfPSExLHA9ITEsQz12b2lkIDAsYj1mO2xldCB2PXZvaWQgMDtjb25zdCBMPSJvYmplY3QiPT10eXBlb2Ygc2VsZj9zZWxmOiJvYmplY3QiPT10eXBlb2YgZ2xvYmFsP2dsb2JhbDp7fTtsZXQgdz12b2lkIDA7dm9pZCAwIT09TC52c2NvZGUmJnZvaWQgMCE9PUwudnNjb2RlLnByb2Nlc3M/dz1MLnZzY29kZS5wcm9jZXNzOiJ1bmRlZmluZWQiIT10eXBlb2YgcHJvY2VzcyYmKHc9cHJvY2Vzcyk7dmFyIE49InN0cmluZyI9PXR5cGVvZihudWxsPT09KE49bnVsbD09PXd8fHZvaWQgMD09PXc/dm9pZCAwOncudmVyc2lvbnMpfHx2b2lkIDA9PT1OP3ZvaWQgMDpOLmVsZWN0cm9uKSYmInJlbmRlcmVyIj09PShudWxsPT09d3x8dm9pZCAwPT09dz92b2lkIDA6dy50eXBlKTtpZigib2JqZWN0IiE9dHlwZW9mIG5hdmlnYXRvcnx8TilpZigib2JqZWN0Ij09dHlwZW9mIHcpe2c9IndpbjMyIj09PXcucGxhdGZvcm0sXz0iZGFyd2luIj09PXcucGxhdGZvcm0scD0ibGludXgiPT09dy5wbGF0Zm9ybSxwJiZ3LmVudi5TTkFQJiZ3LmVudi5TTkFQX1JFVklTSU9OLEM9ZixiPWY7Tj13LmVudi5WU0NPREVfTkxTX0NPTkZJRztpZihOKXRyeXt2YXIgUz1KU09OLnBhcnNlKE4pLHk9Uy5hdmFpbGFibGVMYW5ndWFnZXNbIioiXTtDPVMubG9jYWxlLGI9eXx8ZixTLl90cmFuc2xhdGlvbnNDb25maWdGaWxlfWNhdGNoKGUpe319ZWxzZSBjb25zb2xlLmVycm9yKCJVbmFibGUgdG8gcmVzb2x2ZSBwbGF0Zm9ybS4iKTtlbHNlIHY9bmF2aWdhdG9yLnVzZXJBZ2VudCxnPTA8PXYuaW5kZXhPZigiV2luZG93cyIpLF89MDw9di5pbmRleE9mKCJNYWNpbnRvc2giKSwoMDw9di5pbmRleE9mKCJNYWNpbnRvc2giKXx8MDw9di5pbmRleE9mKCJpUGFkIil8fDA8PXYuaW5kZXhPZigiaVBob25lIikpJiZuYXZpZ2F0b3IubWF4VG91Y2hQb2ludHMmJm5hdmlnYXRvci5tYXhUb3VjaFBvaW50cyxwPTA8PXYuaW5kZXhPZigiTGludXgiKSxDPW5hdmlnYXRvci5sYW5ndWFnZSxiPUM7Y29uc3QgRT1nLEE9XyxNPWIseD1DLEs9KCgpPT57aWYoImZ1bmN0aW9uIiE9dHlwZW9mIEwucG9zdE1lc3NhZ2V8fEwuaW1wb3J0U2NyaXB0cylyZXR1cm4gZT0+c2V0VGltZW91dChlKTt7bGV0IGk9W107TC5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIixyPT57aWYoci5kYXRhJiZyLmRhdGEudnNjb2RlU2NoZWR1bGVBc3luY1dvcmspZm9yKGxldCBlPTAsdD1pLmxlbmd0aDtlPHQ7ZSsrKXtjb25zdCBuPWlbZV07aWYobi5pZD09PXIuZGF0YS52c2NvZGVTY2hlZHVsZUFzeW5jV29yaylyZXR1cm4gaS5zcGxpY2UoZSwxKSx2b2lkIG4uY2FsbGJhY2soKX19KTtsZXQgcj0wO3JldHVybiBlPT57dmFyIHQ9KytyO2kucHVzaCh7aWQ6dCxjYWxsYmFjazplfSksTC5wb3N0TWVzc2FnZSh7dnNjb2RlU2NoZWR1bGVBc3luY1dvcms6dH0sIioiKX19fSkoKTshZnVuY3Rpb24oKXtpZihMLnNldEltbWVkaWF0ZSlyZXR1cm4gTC5zZXRJbW1lZGlhdGUuYmluZChMKTtpZigiZnVuY3Rpb24iPT10eXBlb2YgTC5wb3N0TWVzc2FnZSYmIUwuaW1wb3J0U2NyaXB0cylyZXR1cm4gSztpZigiZnVuY3Rpb24iPT10eXBlb2YobnVsbD09PXd8fHZvaWQgMD09PXc/dm9pZCAwOncubmV4dFRpY2spKXJldHVybiB3Lm5leHRUaWNrLmJpbmQodyk7UHJvbWlzZS5yZXNvbHZlKCl9KCk7Y29uc3QgVj1MLnBlcmZvcm1hbmNlJiYiZnVuY3Rpb24iPT10eXBlb2YgTC5wZXJmb3JtYW5jZS5ub3c7Y2xhc3MgSXtjb25zdHJ1Y3RvcihlKXt0aGlzLl9oaWdoUmVzb2x1dGlvbj1WJiZlLHRoaXMuX3N0YXJ0VGltZT10aGlzLl9ub3coKSx0aGlzLl9zdG9wVGltZT0tMX1zdGF0aWMgY3JlYXRlKGU9ITApe3JldHVybiBuZXcgSShlKX1zdG9wKCl7dGhpcy5fc3RvcFRpbWU9dGhpcy5fbm93KCl9ZWxhcHNlZCgpe3JldHVybi0xIT09dGhpcy5fc3RvcFRpbWU/dGhpcy5fc3RvcFRpbWUtdGhpcy5fc3RhcnRUaW1lOnRoaXMuX25vdygpLXRoaXMuX3N0YXJ0VGltZX1fbm93KCl7cmV0dXJuKHRoaXMuX2hpZ2hSZXNvbHV0aW9uP0wucGVyZm9ybWFuY2U6RGF0ZSkubm93KCl9fSFmdW5jdGlvbihyKXtmdW5jdGlvbiBuKHMpe3JldHVybih0LHI9bnVsbCxlKT0+e2xldCBuPSExLGk7cmV0dXJuIGk9cyhlPT57aWYoIW4pcmV0dXJuIGk/aS5kaXNwb3NlKCk6bj0hMCx0LmNhbGwocixlKX0sbnVsbCxlKSxuJiZpLmRpc3Bvc2UoKSxpfX1mdW5jdGlvbiBpKG4saSl7cmV0dXJuIGUoKHQscj1udWxsLGUpPT5uKGU9PnQuY2FsbChyLGkoZSkpLG51bGwsZSkpfWZ1bmN0aW9uIHQobixpKXtyZXR1cm4gZSgodCxyPW51bGwsZSk9Pm4oZT0+e2koZSksdC5jYWxsKHIsZSl9LG51bGwsZSkpfWZ1bmN0aW9uIHMobixpKXtyZXR1cm4gZSgodCxyPW51bGwsZSk9Pm4oZT0+aShlKSYmdC5jYWxsKHIsZSksbnVsbCxlKSl9ZnVuY3Rpb24gbyhlLHQscil7bGV0IG49cjtyZXR1cm4gaShlLGU9PihuPXQobixlKSxuKSl9ZnVuY3Rpb24gZShlKXtsZXQgdDtjb25zdCByPW5ldyBSKHtvbkZpcnN0TGlzdGVuZXJBZGQoKXt0PWUoci5maXJlLHIpfSxvbkxhc3RMaXN0ZW5lclJlbW92ZSgpe3QuZGlzcG9zZSgpfX0pO3JldHVybiByLmV2ZW50fWZ1bmN0aW9uIGEoZSx0LHI9MTAwLG49ITEsaSl7bGV0IHMsbz12b2lkIDAsYT12b2lkIDAsbD0wO2NvbnN0IHU9bmV3IFIoe2xlYWtXYXJuaW5nVGhyZXNob2xkOmksb25GaXJzdExpc3RlbmVyQWRkKCl7cz1lKGU9PntsKyssbz10KG8sZSksbiYmIWEmJih1LmZpcmUobyksbz12b2lkIDApLGNsZWFyVGltZW91dChhKSxhPXNldFRpbWVvdXQoKCk9Pnt2YXIgZT1vO289dm9pZCAwLGE9dm9pZCAwLCghbnx8MTxsKSYmdS5maXJlKGUpLGw9MH0scil9KX0sb25MYXN0TGlzdGVuZXJSZW1vdmUoKXtzLmRpc3Bvc2UoKX19KTtyZXR1cm4gdS5ldmVudH1mdW5jdGlvbiBsKGUscj0oZSx0KT0+ZT09PXQpe2xldCBuPSEwLGk7cmV0dXJuIHMoZSxlPT57dmFyIHQ9bnx8IXIoZSxpKTtyZXR1cm4gbj0hMSxpPWUsdH0pfXIuTm9uZT0oKT0+Yy5Ob25lLHIub25jZT1uLHIubWFwPWksci5mb3JFYWNoPXQsci5maWx0ZXI9cyxyLnNpZ25hbD1mdW5jdGlvbihlKXtyZXR1cm4gZX0sci5hbnk9ZnVuY3Rpb24oLi4uZSl7cmV0dXJuKHQscj1udWxsLG4pPT5mdW5jdGlvbiguLi5lKXtyZXR1cm4gZCgoKT0+aChlKSl9KC4uLmUubWFwKGU9PmUoZT0+dC5jYWxsKHIsZSksbnVsbCxuKSkpfSxyLnJlZHVjZT1vLHIuZGVib3VuY2U9YSxyLmxhdGNoPWwsci5zcGxpdD1mdW5jdGlvbihlLHQpe3JldHVybltyLmZpbHRlcihlLHQpLHIuZmlsdGVyKGUsZT0+IXQoZSkpXX0sci5idWZmZXI9ZnVuY3Rpb24oZSx0PSExLHI9W10pe2xldCBuPXIuc2xpY2UoKSxpPWUoZT0+e24/bi5wdXNoKGUpOm8uZmlyZShlKX0pO2NvbnN0IHM9KCk9PntuJiZuLmZvckVhY2goZT0+by5maXJlKGUpKSxuPW51bGx9LG89bmV3IFIoe29uRmlyc3RMaXN0ZW5lckFkZCgpe2k9aXx8ZShlPT5vLmZpcmUoZSkpfSxvbkZpcnN0TGlzdGVuZXJEaWRBZGQoKXtuJiYodD9zZXRUaW1lb3V0KHMpOnMoKSl9LG9uTGFzdExpc3RlbmVyUmVtb3ZlKCl7aSYmaS5kaXNwb3NlKCksaT1udWxsfX0pO3JldHVybiBvLmV2ZW50fTtjbGFzcyB1e2NvbnN0cnVjdG9yKGUpe3RoaXMuZXZlbnQ9ZX1tYXAoZSl7cmV0dXJuIG5ldyB1KGkodGhpcy5ldmVudCxlKSl9Zm9yRWFjaChlKXtyZXR1cm4gbmV3IHUodCh0aGlzLmV2ZW50LGUpKX1maWx0ZXIoZSl7cmV0dXJuIG5ldyB1KHModGhpcy5ldmVudCxlKSl9cmVkdWNlKGUsdCl7cmV0dXJuIG5ldyB1KG8odGhpcy5ldmVudCxlLHQpKX1sYXRjaCgpe3JldHVybiBuZXcgdShsKHRoaXMuZXZlbnQpKX1kZWJvdW5jZShlLHQ9MTAwLHI9ITEsbil7cmV0dXJuIG5ldyB1KGEodGhpcy5ldmVudCxlLHQscixuKSl9b24oZSx0LHIpe3JldHVybiB0aGlzLmV2ZW50KGUsdCxyKX1vbmNlKGUsdCxyKXtyZXR1cm4gbih0aGlzLmV2ZW50KShlLHQscil9fXIuY2hhaW49ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyB1KGUpfSxyLmZyb21Ob2RlRXZlbnRFbWl0dGVyPWZ1bmN0aW9uKGUsdCxyPWU9PmUpe2NvbnN0IG49KC4uLmUpPT5pLmZpcmUociguLi5lKSksaT1uZXcgUih7b25GaXJzdExpc3RlbmVyQWRkOigpPT5lLm9uKHQsbiksb25MYXN0TGlzdGVuZXJSZW1vdmU6KCk9PmUucmVtb3ZlTGlzdGVuZXIodCxuKX0pO3JldHVybiBpLmV2ZW50fSxyLmZyb21ET01FdmVudEVtaXR0ZXI9ZnVuY3Rpb24oZSx0LHI9ZT0+ZSl7Y29uc3Qgbj0oLi4uZSk9PmkuZmlyZShyKC4uLmUpKSxpPW5ldyBSKHtvbkZpcnN0TGlzdGVuZXJBZGQ6KCk9PmUuYWRkRXZlbnRMaXN0ZW5lcih0LG4pLG9uTGFzdExpc3RlbmVyUmVtb3ZlOigpPT5lLnJlbW92ZUV2ZW50TGlzdGVuZXIodCxuKX0pO3JldHVybiBpLmV2ZW50fSxyLnRvUHJvbWlzZT1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IFByb21pc2UoZT0+bih0KShlKSl9fShIdD1IdHx8e30pO2NsYXNzIFB7Y29uc3RydWN0b3IoZSl7dGhpcy5fbGlzdGVuZXJDb3VudD0wLHRoaXMuX2ludm9jYXRpb25Db3VudD0wLHRoaXMuX2VsYXBzZWRPdmVyYWxsPTAsdGhpcy5fbmFtZT1lKyJfIitQLl9pZFBvb2wrK31zdGFydChlKXt0aGlzLl9zdG9wV2F0Y2g9bmV3IEkoITApLHRoaXMuX2xpc3RlbmVyQ291bnQ9ZX1zdG9wKCl7aWYodGhpcy5fc3RvcFdhdGNoKXtjb25zdCBlPXRoaXMuX3N0b3BXYXRjaC5lbGFwc2VkKCk7dGhpcy5fZWxhcHNlZE92ZXJhbGwrPWUsdGhpcy5faW52b2NhdGlvbkNvdW50Kz0xLGNvbnNvbGUuaW5mbyhgZGlkIEZJUkUgJHt0aGlzLl9uYW1lfTogZWxhcHNlZF9tczogJHtlLnRvRml4ZWQoNSl9LCBsaXN0ZW5lcjogJHt0aGlzLl9saXN0ZW5lckNvdW50fSAoZWxhcHNlZF9vdmVyYWxsOiAke3RoaXMuX2VsYXBzZWRPdmVyYWxsLnRvRml4ZWQoMil9LCBpbnZvY2F0aW9uczogJHt0aGlzLl9pbnZvY2F0aW9uQ291bnR9KWApLHRoaXMuX3N0b3BXYXRjaD12b2lkIDB9fX1QLl9pZFBvb2w9MDtjbGFzcyBSe2NvbnN0cnVjdG9yKGUpe3RoaXMuX2Rpc3Bvc2VkPSExLHRoaXMuX29wdGlvbnM9ZSx0aGlzLl9sZWFrYWdlTW9uPXZvaWQgMCx0aGlzLl9wZXJmTW9uPW51bGwhPT0oZT10aGlzLl9vcHRpb25zKSYmdm9pZCAwIT09ZSYmZS5fcHJvZk5hbWU/bmV3IFAodGhpcy5fb3B0aW9ucy5fcHJvZk5hbWUpOnZvaWQgMH1nZXQgZXZlbnQoKXtyZXR1cm4gdGhpcy5fZXZlbnR8fCh0aGlzLl9ldmVudD0oZSx0LHIpPT57dGhpcy5fbGlzdGVuZXJzfHwodGhpcy5fbGlzdGVuZXJzPW5ldyBtKTt2YXIgbj10aGlzLl9saXN0ZW5lcnMuaXNFbXB0eSgpO24mJnRoaXMuX29wdGlvbnMmJnRoaXMuX29wdGlvbnMub25GaXJzdExpc3RlbmVyQWRkJiZ0aGlzLl9vcHRpb25zLm9uRmlyc3RMaXN0ZW5lckFkZCh0aGlzKTtjb25zdCBpPXRoaXMuX2xpc3RlbmVycy5wdXNoKHQ/W2UsdF06ZSk7biYmdGhpcy5fb3B0aW9ucyYmdGhpcy5fb3B0aW9ucy5vbkZpcnN0TGlzdGVuZXJEaWRBZGQmJnRoaXMuX29wdGlvbnMub25GaXJzdExpc3RlbmVyRGlkQWRkKHRoaXMpLHRoaXMuX29wdGlvbnMmJnRoaXMuX29wdGlvbnMub25MaXN0ZW5lckRpZEFkZCYmdGhpcy5fb3B0aW9ucy5vbkxpc3RlbmVyRGlkQWRkKHRoaXMsZSx0KTtjb25zdCBzPW51bGw9PT0odD10aGlzLl9sZWFrYWdlTW9uKXx8dm9pZCAwPT09dD92b2lkIDA6dC5jaGVjayh0aGlzLl9saXN0ZW5lcnMuc2l6ZSk7dD1kKCgpPT57cyYmcygpLHRoaXMuX2Rpc3Bvc2VkfHwoaSgpLHRoaXMuX29wdGlvbnMmJnRoaXMuX29wdGlvbnMub25MYXN0TGlzdGVuZXJSZW1vdmUmJih0aGlzLl9saXN0ZW5lcnMmJiF0aGlzLl9saXN0ZW5lcnMuaXNFbXB0eSgpfHx0aGlzLl9vcHRpb25zLm9uTGFzdExpc3RlbmVyUmVtb3ZlKHRoaXMpKSl9KTtyZXR1cm4gciBpbnN0YW5jZW9mIGw/ci5hZGQodCk6QXJyYXkuaXNBcnJheShyKSYmci5wdXNoKHQpLHR9KSx0aGlzLl9ldmVudH1maXJlKGUpe3ZhciB0O2lmKHRoaXMuX2xpc3RlbmVycyl7dGhpcy5fZGVsaXZlcnlRdWV1ZXx8KHRoaXMuX2RlbGl2ZXJ5UXVldWU9bmV3IG0pO2Zvcih2YXIgciBvZiB0aGlzLl9saXN0ZW5lcnMpdGhpcy5fZGVsaXZlcnlRdWV1ZS5wdXNoKFtyLGVdKTtmb3IobnVsbCE9PSh0PXRoaXMuX3BlcmZNb24pJiZ2b2lkIDAhPT10JiZ0LnN0YXJ0KHRoaXMuX2RlbGl2ZXJ5UXVldWUuc2l6ZSk7MDx0aGlzLl9kZWxpdmVyeVF1ZXVlLnNpemU7KXtjb25zdFtuLGVdPXRoaXMuX2RlbGl2ZXJ5UXVldWUuc2hpZnQoKTt0cnl7ImZ1bmN0aW9uIj09dHlwZW9mIG4/bi5jYWxsKHZvaWQgMCxlKTpuWzBdLmNhbGwoblsxXSxlKX1jYXRjaChlKXtpKGUpfX1udWxsIT09KHQ9dGhpcy5fcGVyZk1vbikmJnZvaWQgMCE9PXQmJnQuc3RvcCgpfX1kaXNwb3NlKCl7dmFyIGUsdDt0aGlzLl9kaXNwb3NlZHx8KHRoaXMuX2Rpc3Bvc2VkPSEwLG51bGwhPT0odD10aGlzLl9saXN0ZW5lcnMpJiZ2b2lkIDAhPT10JiZ0LmNsZWFyKCksbnVsbCE9PShlPXRoaXMuX2RlbGl2ZXJ5UXVldWUpJiZ2b2lkIDAhPT1lJiZlLmNsZWFyKCksbnVsbCE9PShlPW51bGw9PT0odD10aGlzLl9vcHRpb25zKXx8dm9pZCAwPT09dD92b2lkIDA6dC5vbkxhc3RMaXN0ZW5lclJlbW92ZSkmJnZvaWQgMCE9PWUmJmUuY2FsbCh0KSxudWxsIT09KHQ9dGhpcy5fbGVha2FnZU1vbikmJnZvaWQgMCE9PXQmJnQuZGlzcG9zZSgpKX19ZnVuY3Rpb24gayhlKXtjb25zdCB0PVtdO2Zvcihjb25zdCByIG9mIGZ1bmN0aW9uKGUpe2xldCB0PVtdLHI9T2JqZWN0LmdldFByb3RvdHlwZU9mKGUpO2Zvcig7T2JqZWN0LnByb3RvdHlwZSE9PXI7KXQ9dC5jb25jYXQoT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMocikpLHI9T2JqZWN0LmdldFByb3RvdHlwZU9mKHIpO3JldHVybiB0fShlKSkiZnVuY3Rpb24iPT10eXBlb2YgZVtyXSYmdC5wdXNoKHIpO3JldHVybiB0fWZ1bmN0aW9uIEQoZSxyKXtsZXQgdD17fTtmb3IoY29uc3QgbiBvZiBlKXRbbl09KHQ9PmZ1bmN0aW9uKCl7dmFyIGU9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDApO3JldHVybiByKHQsZSl9KShuKTtyZXR1cm4gdH1mdW5jdGlvbiBPKHIsbixpPTAscz1yLmxlbmd0aCxvPTAsYT1uLmxlbmd0aCl7Zm9yKDtpPHMmJm88YTtpKyssbysrKXtsZXQgZT1yLmNoYXJDb2RlQXQoaSksdD1uLmNoYXJDb2RlQXQobyk7aWYoZSE9PXQpe2lmKDEyODw9ZXx8MTI4PD10KXJldHVybiBmdW5jdGlvbihlLHQscj0wLG49ZS5sZW5ndGgsaT0wLHM9dC5sZW5ndGgpe2Zvcig7cjxuJiZpPHM7cisrLGkrKyl7dmFyIG89ZS5jaGFyQ29kZUF0KHIpLGE9dC5jaGFyQ29kZUF0KGkpO2lmKG88YSlyZXR1cm4tMTtpZihhPG8pcmV0dXJuIDF9dmFyIGw9bi1yLHU9cy1pO3JldHVybiBsPHU/LTE6dTxsPzE6MH0oci50b0xvd2VyQ2FzZSgpLG4udG9Mb3dlckNhc2UoKSxpLHMsbyxhKTtUKGUpJiYoZS09MzIpLFQodCkmJih0LT0zMik7dmFyIGw9ZS10O2lmKDAhPWwpcmV0dXJuIGx9fXZhciBlPXMtaSx0PWEtbztyZXR1cm4gZTx0Py0xOnQ8ZT8xOjB9ZnVuY3Rpb24gVChlKXtyZXR1cm4gOTc8PWUmJmU8PTEyMn1mdW5jdGlvbiBGKGUpe3JldHVybiA2NTw9ZSYmZTw9OTB9ZnVuY3Rpb24gVShlKXtyZXR1cm4gNTUyOTY8PWUmJmU8PTU2MzE5fWNsYXNzIEJ7c3RhdGljIGdldERhdGEoKXtyZXR1cm4gSlNPTi5wYXJzZSgneyJfY29tbW9uIjpbODIzMiwzMiw4MjMzLDMyLDU3NjAsMzIsODE5MiwzMiw4MTkzLDMyLDgxOTQsMzIsODE5NSwzMiw4MTk2LDMyLDgxOTcsMzIsODE5OCwzMiw4MjAwLDMyLDgyMDEsMzIsODIwMiwzMiw4Mjg3LDMyLDgxOTksMzIsODIzOSwzMiwyMDQyLDk1LDY1MTAxLDk1LDY1MTAyLDk1LDY1MTAzLDk1LDgyMDgsNDUsODIwOSw0NSw4MjEwLDQ1LDY1MTEyLDQ1LDE3NDgsNDUsODI1OSw0NSw3MjcsNDUsODcyMiw0NSwxMDEzNCw0NSwxMTQ1MCw0NSwxNTQ5LDQ0LDE2NDMsNDQsODIxOCw0NCwxODQsNDQsNDIyMzMsNDQsODk0LDU5LDIzMDcsNTgsMjY5MSw1OCwxNDE3LDU4LDE3OTUsNTgsMTc5Niw1OCw1ODY4LDU4LDY1MDcyLDU4LDYxNDcsNTgsNjE1Myw1OCw4MjgyLDU4LDE0NzUsNTgsNzYwLDU4LDQyODg5LDU4LDg3NTgsNTgsNzIwLDU4LDQyMjM3LDU4LDQ1MSwzMywxMTYwMSwzMyw2NjAsNjMsNTc3LDYzLDI0MjksNjMsNTAzOCw2Myw0MjczMSw2MywxMTkxNDksNDYsODIyOCw0NiwxNzkzLDQ2LDE3OTQsNDYsNDI1MTAsNDYsNjgxNzYsNDYsMTYzMiw0NiwxNzc2LDQ2LDQyMjMyLDQ2LDEzNzMsOTYsNjUyODcsOTYsODIxOSw5Niw4MjQyLDk2LDEzNzAsOTYsMTUyMyw5Niw4MTc1LDk2LDY1MzQ0LDk2LDkwMCw5Niw4MTg5LDk2LDgxMjUsOTYsODEyNyw5Niw4MTkwLDk2LDY5Nyw5Niw4ODQsOTYsNzEyLDk2LDcxNCw5Niw3MTUsOTYsNzU2LDk2LDY5OSw5Niw3MDEsOTYsNzAwLDk2LDcwMiw5Niw0Mjg5Miw5NiwxNDk3LDk2LDIwMzYsOTYsMjAzNyw5Niw1MTk0LDk2LDU4MzYsOTYsOTQwMzMsOTYsOTQwMzQsOTYsNjUzMzksNDAsMTAwODgsNDAsMTAwOTgsNDAsMTIzMDgsNDAsNjQ4MzAsNDAsNjUzNDEsNDEsMTAwODksNDEsMTAwOTksNDEsMTIzMDksNDEsNjQ4MzEsNDEsMTAxMDAsMTIzLDExOTA2MCwxMjMsMTAxMDEsMTI1LDgyNzAsNDIsMTY0NSw0Miw4NzI3LDQyLDY2MzM1LDQyLDU5NDEsNDcsODI1Nyw0Nyw4NzI1LDQ3LDgyNjAsNDcsOTU4NSw0NywxMDE4Nyw0NywxMDc0NCw0NywxMTkzNTQsNDcsMTI3NTUsNDcsMTIzMzksNDcsMTE0NjIsNDcsMjAwMzEsNDcsMTIwMzUsNDcsNjUzNDAsOTIsNjUxMjgsOTIsODcyNiw5MiwxMDE4OSw5MiwxMDc0MSw5MiwxMDc0NSw5MiwxMTkzMTEsOTIsMTE5MzU1LDkyLDEyNzU2LDkyLDIwMDIyLDkyLDEyMDM0LDkyLDQyODcyLDM4LDcwOCw5NCw3MTAsOTQsNTg2OSw0MywxMDEzMyw0Myw2NjIwMyw0Myw4MjQ5LDYwLDEwMDk0LDYwLDcwNiw2MCwxMTkzNTAsNjAsNTE3Niw2MCw1ODEwLDYwLDUxMjAsNjEsMTE4NDAsNjEsMTI0NDgsNjEsNDIyMzksNjEsODI1MCw2MiwxMDA5NSw2Miw3MDcsNjIsMTE5MzUxLDYyLDUxNzEsNjIsOTQwMTUsNjIsODI3NSwxMjYsNzMyLDEyNiw4MTI4LDEyNiw4NzY0LDEyNiwxMjA3ODQsNTAsMTIwNzk0LDUwLDEyMDgwNCw1MCwxMjA4MTQsNTAsMTIwODI0LDUwLDEzMDAzNCw1MCw0Mjg0Miw1MCw0MjMsNTAsMTAwMCw1MCw0MjU2NCw1MCw1MzExLDUwLDQyNzM1LDUwLDExOTMwMiw1MSwxMjA3ODUsNTEsMTIwNzk1LDUxLDEyMDgwNSw1MSwxMjA4MTUsNTEsMTIwODI1LDUxLDEzMDAzNSw1MSw0MjkyMyw1MSw1NDAsNTEsNDM5LDUxLDQyODU4LDUxLDExNDY4LDUxLDEyNDgsNTEsOTQwMTEsNTEsNzE4ODIsNTEsMTIwNzg2LDUyLDEyMDc5Niw1MiwxMjA4MDYsNTIsMTIwODE2LDUyLDEyMDgyNiw1MiwxMzAwMzYsNTIsNTA3MCw1Miw3MTg1NSw1MiwxMjA3ODcsNTMsMTIwNzk3LDUzLDEyMDgwNyw1MywxMjA4MTcsNTMsMTIwODI3LDUzLDEzMDAzNyw1Myw0NDQsNTMsNzE4NjcsNTMsMTIwNzg4LDU0LDEyMDc5OCw1NCwxMjA4MDgsNTQsMTIwODE4LDU0LDEyMDgyOCw1NCwxMzAwMzgsNTQsMTE0NzQsNTQsNTEwMiw1NCw3MTg5Myw1NCwxMTkzMTQsNTUsMTIwNzg5LDU1LDEyMDc5OSw1NSwxMjA4MDksNTUsMTIwODE5LDU1LDEyMDgyOSw1NSwxMzAwMzksNTUsNjY3NzAsNTUsNzE4NzgsNTUsMjgxOSw1NiwyNTM4LDU2LDI2NjYsNTYsMTI1MTMxLDU2LDEyMDc5MCw1NiwxMjA4MDAsNTYsMTIwODEwLDU2LDEyMDgyMCw1NiwxMjA4MzAsNTYsMTMwMDQwLDU2LDU0Nyw1Niw1NDYsNTYsNjYzMzAsNTYsMjY2Myw1NywyOTIwLDU3LDI1NDEsNTcsMzQzNyw1NywxMjA3OTEsNTcsMTIwODAxLDU3LDEyMDgxMSw1NywxMjA4MjEsNTcsMTIwODMxLDU3LDEzMDA0MSw1Nyw0Mjg2Miw1NywxMTQ2Niw1Nyw3MTg4NCw1Nyw3MTg1Miw1Nyw3MTg5NCw1Nyw5MDgyLDk3LDY1MzQ1LDk3LDExOTgzNCw5NywxMTk4ODYsOTcsMTE5OTM4LDk3LDExOTk5MCw5NywxMjAwNDIsOTcsMTIwMDk0LDk3LDEyMDE0Niw5NywxMjAxOTgsOTcsMTIwMjUwLDk3LDEyMDMwMiw5NywxMjAzNTQsOTcsMTIwNDA2LDk3LDEyMDQ1OCw5Nyw1OTMsOTcsOTQ1LDk3LDEyMDUxNCw5NywxMjA1NzIsOTcsMTIwNjMwLDk3LDEyMDY4OCw5NywxMjA3NDYsOTcsNjUzMTMsNjUsMTE5ODA4LDY1LDExOTg2MCw2NSwxMTk5MTIsNjUsMTE5OTY0LDY1LDEyMDAxNiw2NSwxMjAwNjgsNjUsMTIwMTIwLDY1LDEyMDE3Miw2NSwxMjAyMjQsNjUsMTIwMjc2LDY1LDEyMDMyOCw2NSwxMjAzODAsNjUsMTIwNDMyLDY1LDkxMyw2NSwxMjA0ODgsNjUsMTIwNTQ2LDY1LDEyMDYwNCw2NSwxMjA2NjIsNjUsMTIwNzIwLDY1LDUwMzQsNjUsNTU3Myw2NSw0MjIyMiw2NSw5NDAxNiw2NSw2NjIwOCw2NSwxMTk4MzUsOTgsMTE5ODg3LDk4LDExOTkzOSw5OCwxMTk5OTEsOTgsMTIwMDQzLDk4LDEyMDA5NSw5OCwxMjAxNDcsOTgsMTIwMTk5LDk4LDEyMDI1MSw5OCwxMjAzMDMsOTgsMTIwMzU1LDk4LDEyMDQwNyw5OCwxMjA0NTksOTgsMzg4LDk4LDUwNzEsOTgsNTIzNCw5OCw1NTUxLDk4LDY1MzE0LDY2LDg0OTIsNjYsMTE5ODA5LDY2LDExOTg2MSw2NiwxMTk5MTMsNjYsMTIwMDE3LDY2LDEyMDA2OSw2NiwxMjAxMjEsNjYsMTIwMTczLDY2LDEyMDIyNSw2NiwxMjAyNzcsNjYsMTIwMzI5LDY2LDEyMDM4MSw2NiwxMjA0MzMsNjYsNDI5MzIsNjYsOTE0LDY2LDEyMDQ4OSw2NiwxMjA1NDcsNjYsMTIwNjA1LDY2LDEyMDY2Myw2NiwxMjA3MjEsNjYsNTEwOCw2Niw1NjIzLDY2LDQyMTkyLDY2LDY2MTc4LDY2LDY2MjA5LDY2LDY2MzA1LDY2LDY1MzQ3LDk5LDg1NzMsOTksMTE5ODM2LDk5LDExOTg4OCw5OSwxMTk5NDAsOTksMTE5OTkyLDk5LDEyMDA0NCw5OSwxMjAwOTYsOTksMTIwMTQ4LDk5LDEyMDIwMCw5OSwxMjAyNTIsOTksMTIwMzA0LDk5LDEyMDM1Niw5OSwxMjA0MDgsOTksMTIwNDYwLDk5LDc0MjgsOTksMTAxMCw5OSwxMTQyOSw5OSw0Mzk1MSw5OSw2NjYyMSw5OSwxMjg4NDQsNjcsNzE5MjIsNjcsNzE5MTMsNjcsNjUzMTUsNjcsODU1Nyw2Nyw4NDUwLDY3LDg0OTMsNjcsMTE5ODEwLDY3LDExOTg2Miw2NywxMTk5MTQsNjcsMTE5OTY2LDY3LDEyMDAxOCw2NywxMjAxNzQsNjcsMTIwMjI2LDY3LDEyMDI3OCw2NywxMjAzMzAsNjcsMTIwMzgyLDY3LDEyMDQzNCw2NywxMDE3LDY3LDExNDI4LDY3LDUwODcsNjcsNDIyMDIsNjcsNjYyMTAsNjcsNjYzMDYsNjcsNjY1ODEsNjcsNjY4NDQsNjcsODU3NCwxMDAsODUxOCwxMDAsMTE5ODM3LDEwMCwxMTk4ODksMTAwLDExOTk0MSwxMDAsMTE5OTkzLDEwMCwxMjAwNDUsMTAwLDEyMDA5NywxMDAsMTIwMTQ5LDEwMCwxMjAyMDEsMTAwLDEyMDI1MywxMDAsMTIwMzA1LDEwMCwxMjAzNTcsMTAwLDEyMDQwOSwxMDAsMTIwNDYxLDEwMCwxMjgxLDEwMCw1MDk1LDEwMCw1MjMxLDEwMCw0MjE5NCwxMDAsODU1OCw2OCw4NTE3LDY4LDExOTgxMSw2OCwxMTk4NjMsNjgsMTE5OTE1LDY4LDExOTk2Nyw2OCwxMjAwMTksNjgsMTIwMDcxLDY4LDEyMDEyMyw2OCwxMjAxNzUsNjgsMTIwMjI3LDY4LDEyMDI3OSw2OCwxMjAzMzEsNjgsMTIwMzgzLDY4LDEyMDQzNSw2OCw1MDI0LDY4LDU1OTgsNjgsNTYxMCw2OCw0MjE5NSw2OCw4NDk0LDEwMSw2NTM0OSwxMDEsODQ5NSwxMDEsODUxOSwxMDEsMTE5ODM4LDEwMSwxMTk4OTAsMTAxLDExOTk0MiwxMDEsMTIwMDQ2LDEwMSwxMjAwOTgsMTAxLDEyMDE1MCwxMDEsMTIwMjAyLDEwMSwxMjAyNTQsMTAxLDEyMDMwNiwxMDEsMTIwMzU4LDEwMSwxMjA0MTAsMTAxLDEyMDQ2MiwxMDEsNDM4MjYsMTAxLDEyMTMsMTAxLDg5NTksNjksNjUzMTcsNjksODQ5Niw2OSwxMTk4MTIsNjksMTE5ODY0LDY5LDExOTkxNiw2OSwxMjAwMjAsNjksMTIwMDcyLDY5LDEyMDEyNCw2OSwxMjAxNzYsNjksMTIwMjI4LDY5LDEyMDI4MCw2OSwxMjAzMzIsNjksMTIwMzg0LDY5LDEyMDQzNiw2OSw5MTcsNjksMTIwNDkyLDY5LDEyMDU1MCw2OSwxMjA2MDgsNjksMTIwNjY2LDY5LDEyMDcyNCw2OSwxMTU3Nyw2OSw1MDM2LDY5LDQyMjI0LDY5LDcxODQ2LDY5LDcxODU0LDY5LDY2MTgyLDY5LDExOTgzOSwxMDIsMTE5ODkxLDEwMiwxMTk5NDMsMTAyLDExOTk5NSwxMDIsMTIwMDQ3LDEwMiwxMjAwOTksMTAyLDEyMDE1MSwxMDIsMTIwMjAzLDEwMiwxMjAyNTUsMTAyLDEyMDMwNywxMDIsMTIwMzU5LDEwMiwxMjA0MTEsMTAyLDEyMDQ2MywxMDIsNDM4MjksMTAyLDQyOTA1LDEwMiwzODMsMTAyLDc4MzcsMTAyLDE0MTIsMTAyLDExOTMxNSw3MCw4NDk3LDcwLDExOTgxMyw3MCwxMTk4NjUsNzAsMTE5OTE3LDcwLDEyMDAyMSw3MCwxMjAwNzMsNzAsMTIwMTI1LDcwLDEyMDE3Nyw3MCwxMjAyMjksNzAsMTIwMjgxLDcwLDEyMDMzMyw3MCwxMjAzODUsNzAsMTIwNDM3LDcwLDQyOTA0LDcwLDk4OCw3MCwxMjA3NzgsNzAsNTU1Niw3MCw0MjIwNSw3MCw3MTg3NCw3MCw3MTg0Miw3MCw2NjE4Myw3MCw2NjIxMyw3MCw2Njg1Myw3MCw2NTM1MSwxMDMsODQ1OCwxMDMsMTE5ODQwLDEwMywxMTk4OTIsMTAzLDExOTk0NCwxMDMsMTIwMDQ4LDEwMywxMjAxMDAsMTAzLDEyMDE1MiwxMDMsMTIwMjA0LDEwMywxMjAyNTYsMTAzLDEyMDMwOCwxMDMsMTIwMzYwLDEwMywxMjA0MTIsMTAzLDEyMDQ2NCwxMDMsNjA5LDEwMyw3NTU1LDEwMywzOTcsMTAzLDE0MDksMTAzLDExOTgxNCw3MSwxMTk4NjYsNzEsMTE5OTE4LDcxLDExOTk3MCw3MSwxMjAwMjIsNzEsMTIwMDc0LDcxLDEyMDEyNiw3MSwxMjAxNzgsNzEsMTIwMjMwLDcxLDEyMDI4Miw3MSwxMjAzMzQsNzEsMTIwMzg2LDcxLDEyMDQzOCw3MSwxMjkyLDcxLDUwNTYsNzEsNTEwNyw3MSw0MjE5OCw3MSw2NTM1MiwxMDQsODQ2MiwxMDQsMTE5ODQxLDEwNCwxMTk5NDUsMTA0LDExOTk5NywxMDQsMTIwMDQ5LDEwNCwxMjAxMDEsMTA0LDEyMDE1MywxMDQsMTIwMjA1LDEwNCwxMjAyNTcsMTA0LDEyMDMwOSwxMDQsMTIwMzYxLDEwNCwxMjA0MTMsMTA0LDEyMDQ2NSwxMDQsMTIxMSwxMDQsMTM5MiwxMDQsNTA1OCwxMDQsNjUzMjAsNzIsODQ1OSw3Miw4NDYwLDcyLDg0NjEsNzIsMTE5ODE1LDcyLDExOTg2Nyw3MiwxMTk5MTksNzIsMTIwMDIzLDcyLDEyMDE3OSw3MiwxMjAyMzEsNzIsMTIwMjgzLDcyLDEyMDMzNSw3MiwxMjAzODcsNzIsMTIwNDM5LDcyLDkxOSw3MiwxMjA0OTQsNzIsMTIwNTUyLDcyLDEyMDYxMCw3MiwxMjA2NjgsNzIsMTIwNzI2LDcyLDExNDA2LDcyLDUwNTEsNzIsNTUwMCw3Miw0MjIxNSw3Miw2NjI1NSw3Miw3MzEsMTA1LDkwNzUsMTA1LDY1MzUzLDEwNSw4NTYwLDEwNSw4NTA1LDEwNSw4NTIwLDEwNSwxMTk4NDIsMTA1LDExOTg5NCwxMDUsMTE5OTQ2LDEwNSwxMTk5OTgsMTA1LDEyMDA1MCwxMDUsMTIwMTAyLDEwNSwxMjAxNTQsMTA1LDEyMDIwNiwxMDUsMTIwMjU4LDEwNSwxMjAzMTAsMTA1LDEyMDM2MiwxMDUsMTIwNDE0LDEwNSwxMjA0NjYsMTA1LDEyMDQ4NCwxMDUsNjE4LDEwNSw2MTcsMTA1LDk1MywxMDUsODEyNiwxMDUsODkwLDEwNSwxMjA1MjIsMTA1LDEyMDU4MCwxMDUsMTIwNjM4LDEwNSwxMjA2OTYsMTA1LDEyMDc1NCwxMDUsMTExMCwxMDUsNDI1NjcsMTA1LDEyMzEsMTA1LDQzODkzLDEwNSw1MDI5LDEwNSw3MTg3NSwxMDUsNjUzNTQsMTA2LDg1MjEsMTA2LDExOTg0MywxMDYsMTE5ODk1LDEwNiwxMTk5NDcsMTA2LDExOTk5OSwxMDYsMTIwMDUxLDEwNiwxMjAxMDMsMTA2LDEyMDE1NSwxMDYsMTIwMjA3LDEwNiwxMjAyNTksMTA2LDEyMDMxMSwxMDYsMTIwMzYzLDEwNiwxMjA0MTUsMTA2LDEyMDQ2NywxMDYsMTAxMSwxMDYsMTExMiwxMDYsNjUzMjIsNzQsMTE5ODE3LDc0LDExOTg2OSw3NCwxMTk5MjEsNzQsMTE5OTczLDc0LDEyMDAyNSw3NCwxMjAwNzcsNzQsMTIwMTI5LDc0LDEyMDE4MSw3NCwxMjAyMzMsNzQsMTIwMjg1LDc0LDEyMDMzNyw3NCwxMjAzODksNzQsMTIwNDQxLDc0LDQyOTMwLDc0LDg5NSw3NCwxMDMyLDc0LDUwMzUsNzQsNTI2MSw3NCw0MjIwMSw3NCwxMTk4NDQsMTA3LDExOTg5NiwxMDcsMTE5OTQ4LDEwNywxMjAwMDAsMTA3LDEyMDA1MiwxMDcsMTIwMTA0LDEwNywxMjAxNTYsMTA3LDEyMDIwOCwxMDcsMTIwMjYwLDEwNywxMjAzMTIsMTA3LDEyMDM2NCwxMDcsMTIwNDE2LDEwNywxMjA0NjgsMTA3LDg0OTAsNzUsNjUzMjMsNzUsMTE5ODE4LDc1LDExOTg3MCw3NSwxMTk5MjIsNzUsMTE5OTc0LDc1LDEyMDAyNiw3NSwxMjAwNzgsNzUsMTIwMTMwLDc1LDEyMDE4Miw3NSwxMjAyMzQsNzUsMTIwMjg2LDc1LDEyMDMzOCw3NSwxMjAzOTAsNzUsMTIwNDQyLDc1LDkyMiw3NSwxMjA0OTcsNzUsMTIwNTU1LDc1LDEyMDYxMyw3NSwxMjA2NzEsNzUsMTIwNzI5LDc1LDExNDEyLDc1LDUwOTQsNzUsNTg0NSw3NSw0MjE5OSw3NSw2Njg0MCw3NSwxNDcyLDEyNCw4NzM5LDEyNCw5MjEzLDEyNCw2NTUxMiwxMjQsMTYzMywxMjQsMTc3NywxMjQsNjYzMzYsMTI0LDEyNTEyNywxMjQsMTIwNzgzLDEyNCwxMjA3OTMsMTI0LDEyMDgwMywxMjQsMTIwODEzLDEyNCwxMjA4MjMsMTI0LDEzMDAzMywxMjQsNjUzMjEsMTI0LDg1NDQsMTI0LDg0NjQsMTI0LDg0NjUsMTI0LDExOTgxNiwxMjQsMTE5ODY4LDEyNCwxMTk5MjAsMTI0LDEyMDAyNCwxMjQsMTIwMTI4LDEyNCwxMjAxODAsMTI0LDEyMDIzMiwxMjQsMTIwMjg0LDEyNCwxMjAzMzYsMTI0LDEyMDM4OCwxMjQsMTIwNDQwLDEyNCw0MDYsMTI0LDY1MzU2LDEyNCw4NTcyLDEyNCw4NDY3LDEyNCwxMTk4NDUsMTI0LDExOTg5NywxMjQsMTE5OTQ5LDEyNCwxMjAwMDEsMTI0LDEyMDA1MywxMjQsMTIwMTA1LDEyNCwxMjAxNTcsMTI0LDEyMDIwOSwxMjQsMTIwMjYxLDEyNCwxMjAzMTMsMTI0LDEyMDM2NSwxMjQsMTIwNDE3LDEyNCwxMjA0NjksMTI0LDQ0OCwxMjQsMTIwNDk2LDEyNCwxMjA1NTQsMTI0LDEyMDYxMiwxMjQsMTIwNjcwLDEyNCwxMjA3MjgsMTI0LDExNDEwLDEyNCwxMDMwLDEyNCwxMjE2LDEyNCwxNDkzLDEyNCwxNTAzLDEyNCwxNTc1LDEyNCwxMjY0NjQsMTI0LDEyNjU5MiwxMjQsNjUxNjYsMTI0LDY1MTY1LDEyNCwxOTk0LDEyNCwxMTU5OSwxMjQsNTgyNSwxMjQsNDIyMjYsMTI0LDkzOTkyLDEyNCw2NjE4NiwxMjQsNjYzMTMsMTI0LDExOTMzOCw3Niw4NTU2LDc2LDg0NjYsNzYsMTE5ODE5LDc2LDExOTg3MSw3NiwxMTk5MjMsNzYsMTIwMDI3LDc2LDEyMDA3OSw3NiwxMjAxMzEsNzYsMTIwMTgzLDc2LDEyMDIzNSw3NiwxMjAyODcsNzYsMTIwMzM5LDc2LDEyMDM5MSw3NiwxMjA0NDMsNzYsMTE0NzIsNzYsNTA4Niw3Niw1MjkwLDc2LDQyMjA5LDc2LDkzOTc0LDc2LDcxODQzLDc2LDcxODU4LDc2LDY2NTg3LDc2LDY2ODU0LDc2LDY1MzI1LDc3LDg1NTksNzcsODQ5OSw3NywxMTk4MjAsNzcsMTE5ODcyLDc3LDExOTkyNCw3NywxMjAwMjgsNzcsMTIwMDgwLDc3LDEyMDEzMiw3NywxMjAxODQsNzcsMTIwMjM2LDc3LDEyMDI4OCw3NywxMjAzNDAsNzcsMTIwMzkyLDc3LDEyMDQ0NCw3Nyw5MjQsNzcsMTIwNDk5LDc3LDEyMDU1Nyw3NywxMjA2MTUsNzcsMTIwNjczLDc3LDEyMDczMSw3NywxMDE4LDc3LDExNDE2LDc3LDUwNDcsNzcsNTYxNiw3Nyw1ODQ2LDc3LDQyMjA3LDc3LDY2MjI0LDc3LDY2MzIxLDc3LDExOTg0NywxMTAsMTE5ODk5LDExMCwxMTk5NTEsMTEwLDEyMDAwMywxMTAsMTIwMDU1LDExMCwxMjAxMDcsMTEwLDEyMDE1OSwxMTAsMTIwMjExLDExMCwxMjAyNjMsMTEwLDEyMDMxNSwxMTAsMTIwMzY3LDExMCwxMjA0MTksMTEwLDEyMDQ3MSwxMTAsMTQwMCwxMTAsMTQwNCwxMTAsNjUzMjYsNzgsODQ2OSw3OCwxMTk4MjEsNzgsMTE5ODczLDc4LDExOTkyNSw3OCwxMTk5NzcsNzgsMTIwMDI5LDc4LDEyMDA4MSw3OCwxMjAxODUsNzgsMTIwMjM3LDc4LDEyMDI4OSw3OCwxMjAzNDEsNzgsMTIwMzkzLDc4LDEyMDQ0NSw3OCw5MjUsNzgsMTIwNTAwLDc4LDEyMDU1OCw3OCwxMjA2MTYsNzgsMTIwNjc0LDc4LDEyMDczMiw3OCwxMTQxOCw3OCw0MjIwOCw3OCw2NjgzNSw3OCwzMDc0LDExMSwzMjAyLDExMSwzMzMwLDExMSwzNDU4LDExMSwyNDA2LDExMSwyNjYyLDExMSwyNzkwLDExMSwzMDQ2LDExMSwzMTc0LDExMSwzMzAyLDExMSwzNDMwLDExMSwzNjY0LDExMSwzNzkyLDExMSw0MTYwLDExMSwxNjM3LDExMSwxNzgxLDExMSw2NTM1OSwxMTEsODUwMCwxMTEsMTE5ODQ4LDExMSwxMTk5MDAsMTExLDExOTk1MiwxMTEsMTIwMDU2LDExMSwxMjAxMDgsMTExLDEyMDE2MCwxMTEsMTIwMjEyLDExMSwxMjAyNjQsMTExLDEyMDMxNiwxMTEsMTIwMzY4LDExMSwxMjA0MjAsMTExLDEyMDQ3MiwxMTEsNzQzOSwxMTEsNzQ0MSwxMTEsNDM4MzcsMTExLDk1OSwxMTEsMTIwNTI4LDExMSwxMjA1ODYsMTExLDEyMDY0NCwxMTEsMTIwNzAyLDExMSwxMjA3NjAsMTExLDk2MywxMTEsMTIwNTMyLDExMSwxMjA1OTAsMTExLDEyMDY0OCwxMTEsMTIwNzA2LDExMSwxMjA3NjQsMTExLDExNDIzLDExMSw0MzUxLDExMSwxNDEzLDExMSwxNTA1LDExMSwxNjA3LDExMSwxMjY1MDAsMTExLDEyNjU2NCwxMTEsMTI2NTk2LDExMSw2NTI1OSwxMTEsNjUyNjAsMTExLDY1MjU4LDExMSw2NTI1NywxMTEsMTcyNiwxMTEsNjQ0MjgsMTExLDY0NDI5LDExMSw2NDQyNywxMTEsNjQ0MjYsMTExLDE3MjksMTExLDY0NDI0LDExMSw2NDQyNSwxMTEsNjQ0MjMsMTExLDY0NDIyLDExMSwxNzQ5LDExMSwzMzYwLDExMSw0MTI1LDExMSw2Njc5NCwxMTEsNzE4ODAsMTExLDcxODk1LDExMSw2NjYwNCwxMTEsMTk4NCw3OSwyNTM0LDc5LDI5MTgsNzksMTIyOTUsNzksNzA4NjQsNzksNzE5MDQsNzksMTIwNzgyLDc5LDEyMDc5Miw3OSwxMjA4MDIsNzksMTIwODEyLDc5LDEyMDgyMiw3OSwxMzAwMzIsNzksNjUzMjcsNzksMTE5ODIyLDc5LDExOTg3NCw3OSwxMTk5MjYsNzksMTE5OTc4LDc5LDEyMDAzMCw3OSwxMjAwODIsNzksMTIwMTM0LDc5LDEyMDE4Niw3OSwxMjAyMzgsNzksMTIwMjkwLDc5LDEyMDM0Miw3OSwxMjAzOTQsNzksMTIwNDQ2LDc5LDkyNyw3OSwxMjA1MDIsNzksMTIwNTYwLDc5LDEyMDYxOCw3OSwxMjA2NzYsNzksMTIwNzM0LDc5LDExNDIyLDc5LDEzNjUsNzksMTE2MDQsNzksNDgxNiw3OSwyODQ4LDc5LDY2NzU0LDc5LDQyMjI3LDc5LDcxODYxLDc5LDY2MTk0LDc5LDY2MjE5LDc5LDY2NTY0LDc5LDY2ODM4LDc5LDkwNzYsMTEyLDY1MzYwLDExMiwxMTk4NDksMTEyLDExOTkwMSwxMTIsMTE5OTUzLDExMiwxMjAwMDUsMTEyLDEyMDA1NywxMTIsMTIwMTA5LDExMiwxMjAxNjEsMTEyLDEyMDIxMywxMTIsMTIwMjY1LDExMiwxMjAzMTcsMTEyLDEyMDM2OSwxMTIsMTIwNDIxLDExMiwxMjA0NzMsMTEyLDk2MSwxMTIsMTIwNTMwLDExMiwxMjA1NDQsMTEyLDEyMDU4OCwxMTIsMTIwNjAyLDExMiwxMjA2NDYsMTEyLDEyMDY2MCwxMTIsMTIwNzA0LDExMiwxMjA3MTgsMTEyLDEyMDc2MiwxMTIsMTIwNzc2LDExMiwxMTQyNywxMTIsNjUzMjgsODAsODQ3Myw4MCwxMTk4MjMsODAsMTE5ODc1LDgwLDExOTkyNyw4MCwxMTk5NzksODAsMTIwMDMxLDgwLDEyMDA4Myw4MCwxMjAxODcsODAsMTIwMjM5LDgwLDEyMDI5MSw4MCwxMjAzNDMsODAsMTIwMzk1LDgwLDEyMDQ0Nyw4MCw5MjksODAsMTIwNTA0LDgwLDEyMDU2Miw4MCwxMjA2MjAsODAsMTIwNjc4LDgwLDEyMDczNiw4MCwxMTQyNiw4MCw1MDkwLDgwLDUyMjksODAsNDIxOTMsODAsNjYxOTcsODAsMTE5ODUwLDExMywxMTk5MDIsMTEzLDExOTk1NCwxMTMsMTIwMDA2LDExMywxMjAwNTgsMTEzLDEyMDExMCwxMTMsMTIwMTYyLDExMywxMjAyMTQsMTEzLDEyMDI2NiwxMTMsMTIwMzE4LDExMywxMjAzNzAsMTEzLDEyMDQyMiwxMTMsMTIwNDc0LDExMywxMzA3LDExMywxMzc5LDExMywxMzgyLDExMyw4NDc0LDgxLDExOTgyNCw4MSwxMTk4NzYsODEsMTE5OTI4LDgxLDExOTk4MCw4MSwxMjAwMzIsODEsMTIwMDg0LDgxLDEyMDE4OCw4MSwxMjAyNDAsODEsMTIwMjkyLDgxLDEyMDM0NCw4MSwxMjAzOTYsODEsMTIwNDQ4LDgxLDExNjA1LDgxLDExOTg1MSwxMTQsMTE5OTAzLDExNCwxMTk5NTUsMTE0LDEyMDAwNywxMTQsMTIwMDU5LDExNCwxMjAxMTEsMTE0LDEyMDE2MywxMTQsMTIwMjE1LDExNCwxMjAyNjcsMTE0LDEyMDMxOSwxMTQsMTIwMzcxLDExNCwxMjA0MjMsMTE0LDEyMDQ3NSwxMTQsNDM4NDcsMTE0LDQzODQ4LDExNCw3NDYyLDExNCwxMTM5NywxMTQsNDM5MDUsMTE0LDExOTMxOCw4Miw4NDc1LDgyLDg0NzYsODIsODQ3Nyw4MiwxMTk4MjUsODIsMTE5ODc3LDgyLDExOTkyOSw4MiwxMjAwMzMsODIsMTIwMTg5LDgyLDEyMDI0MSw4MiwxMjAyOTMsODIsMTIwMzQ1LDgyLDEyMDM5Nyw4MiwxMjA0NDksODIsNDIyLDgyLDUwMjUsODIsNTA3NCw4Miw2Njc0MCw4Miw1NTExLDgyLDQyMjExLDgyLDk0MDA1LDgyLDY1MzYzLDExNSwxMTk4NTIsMTE1LDExOTkwNCwxMTUsMTE5OTU2LDExNSwxMjAwMDgsMTE1LDEyMDA2MCwxMTUsMTIwMTEyLDExNSwxMjAxNjQsMTE1LDEyMDIxNiwxMTUsMTIwMjY4LDExNSwxMjAzMjAsMTE1LDEyMDM3MiwxMTUsMTIwNDI0LDExNSwxMjA0NzYsMTE1LDQyODAxLDExNSw0NDUsMTE1LDExMDksMTE1LDQzOTQ2LDExNSw3MTg3MywxMTUsNjY2MzIsMTE1LDY1MzMxLDgzLDExOTgyNiw4MywxMTk4NzgsODMsMTE5OTMwLDgzLDExOTk4Miw4MywxMjAwMzQsODMsMTIwMDg2LDgzLDEyMDEzOCw4MywxMjAxOTAsODMsMTIwMjQyLDgzLDEyMDI5NCw4MywxMjAzNDYsODMsMTIwMzk4LDgzLDEyMDQ1MCw4MywxMDI5LDgzLDEzNTksODMsNTA3Nyw4Myw1MDgyLDgzLDQyMjEwLDgzLDk0MDEwLDgzLDY2MTk4LDgzLDY2NTkyLDgzLDExOTg1MywxMTYsMTE5OTA1LDExNiwxMTk5NTcsMTE2LDEyMDAwOSwxMTYsMTIwMDYxLDExNiwxMjAxMTMsMTE2LDEyMDE2NSwxMTYsMTIwMjE3LDExNiwxMjAyNjksMTE2LDEyMDMyMSwxMTYsMTIwMzczLDExNiwxMjA0MjUsMTE2LDEyMDQ3NywxMTYsODg2OCw4NCwxMDIwMSw4NCwxMjg4NzIsODQsNjUzMzIsODQsMTE5ODI3LDg0LDExOTg3OSw4NCwxMTk5MzEsODQsMTE5OTgzLDg0LDEyMDAzNSw4NCwxMjAwODcsODQsMTIwMTM5LDg0LDEyMDE5MSw4NCwxMjAyNDMsODQsMTIwMjk1LDg0LDEyMDM0Nyw4NCwxMjAzOTksODQsMTIwNDUxLDg0LDkzMiw4NCwxMjA1MDcsODQsMTIwNTY1LDg0LDEyMDYyMyw4NCwxMjA2ODEsODQsMTIwNzM5LDg0LDExNDMwLDg0LDUwMjYsODQsNDIxOTYsODQsOTM5NjIsODQsNzE4NjgsODQsNjYxOTksODQsNjYyMjUsODQsNjYzMjUsODQsMTE5ODU0LDExNywxMTk5MDYsMTE3LDExOTk1OCwxMTcsMTIwMDEwLDExNywxMjAwNjIsMTE3LDEyMDExNCwxMTcsMTIwMTY2LDExNywxMjAyMTgsMTE3LDEyMDI3MCwxMTcsMTIwMzIyLDExNywxMjAzNzQsMTE3LDEyMDQyNiwxMTcsMTIwNDc4LDExNyw0MjkxMSwxMTcsNzQ1MiwxMTcsNDM4NTQsMTE3LDQzODU4LDExNyw2NTEsMTE3LDk2NSwxMTcsMTIwNTM0LDExNywxMjA1OTIsMTE3LDEyMDY1MCwxMTcsMTIwNzA4LDExNywxMjA3NjYsMTE3LDE0MDUsMTE3LDY2ODA2LDExNyw3MTg5NiwxMTcsODc0Niw4NSw4ODk5LDg1LDExOTgyOCw4NSwxMTk4ODAsODUsMTE5OTMyLDg1LDExOTk4NCw4NSwxMjAwMzYsODUsMTIwMDg4LDg1LDEyMDE0MCw4NSwxMjAxOTIsODUsMTIwMjQ0LDg1LDEyMDI5Niw4NSwxMjAzNDgsODUsMTIwNDAwLDg1LDEyMDQ1Miw4NSwxMzU3LDg1LDQ2MDgsODUsNjY3NjYsODUsNTE5Niw4NSw0MjIyOCw4NSw5NDAxOCw4NSw3MTg2NCw4NSw4NzQ0LDExOCw4ODk3LDExOCw2NTM2NiwxMTgsODU2NCwxMTgsMTE5ODU1LDExOCwxMTk5MDcsMTE4LDExOTk1OSwxMTgsMTIwMDExLDExOCwxMjAwNjMsMTE4LDEyMDExNSwxMTgsMTIwMTY3LDExOCwxMjAyMTksMTE4LDEyMDI3MSwxMTgsMTIwMzIzLDExOCwxMjAzNzUsMTE4LDEyMDQyNywxMTgsMTIwNDc5LDExOCw3NDU2LDExOCw5NTcsMTE4LDEyMDUyNiwxMTgsMTIwNTg0LDExOCwxMjA2NDIsMTE4LDEyMDcwMCwxMTgsMTIwNzU4LDExOCwxMTQxLDExOCwxNDk2LDExOCw3MTQzMCwxMTgsNDM5NDUsMTE4LDcxODcyLDExOCwxMTkzMDksODYsMTYzOSw4NiwxNzgzLDg2LDg1NDgsODYsMTE5ODI5LDg2LDExOTg4MSw4NiwxMTk5MzMsODYsMTE5OTg1LDg2LDEyMDAzNyw4NiwxMjAwODksODYsMTIwMTQxLDg2LDEyMDE5Myw4NiwxMjAyNDUsODYsMTIwMjk3LDg2LDEyMDM0OSw4NiwxMjA0MDEsODYsMTIwNDUzLDg2LDExNDAsODYsMTE1NzYsODYsNTA4MSw4Niw1MTY3LDg2LDQyNzE5LDg2LDQyMjE0LDg2LDkzOTYwLDg2LDcxODQwLDg2LDY2ODQ1LDg2LDYyMywxMTksMTE5ODU2LDExOSwxMTk5MDgsMTE5LDExOTk2MCwxMTksMTIwMDEyLDExOSwxMjAwNjQsMTE5LDEyMDExNiwxMTksMTIwMTY4LDExOSwxMjAyMjAsMTE5LDEyMDI3MiwxMTksMTIwMzI0LDExOSwxMjAzNzYsMTE5LDEyMDQyOCwxMTksMTIwNDgwLDExOSw3NDU3LDExOSwxMTIxLDExOSwxMzA5LDExOSwxMzc3LDExOSw3MTQzNCwxMTksNzE0MzgsMTE5LDcxNDM5LDExOSw0MzkwNywxMTksNzE5MTksODcsNzE5MTAsODcsMTE5ODMwLDg3LDExOTg4Miw4NywxMTk5MzQsODcsMTE5OTg2LDg3LDEyMDAzOCw4NywxMjAwOTAsODcsMTIwMTQyLDg3LDEyMDE5NCw4NywxMjAyNDYsODcsMTIwMjk4LDg3LDEyMDM1MCw4NywxMjA0MDIsODcsMTIwNDU0LDg3LDEzMDgsODcsNTA0Myw4Nyw1MDc2LDg3LDQyMjE4LDg3LDU3NDIsMTIwLDEwNTM5LDEyMCwxMDU0MCwxMjAsMTA3OTksMTIwLDY1MzY4LDEyMCw4NTY5LDEyMCwxMTk4NTcsMTIwLDExOTkwOSwxMjAsMTE5OTYxLDEyMCwxMjAwMTMsMTIwLDEyMDA2NSwxMjAsMTIwMTE3LDEyMCwxMjAxNjksMTIwLDEyMDIyMSwxMjAsMTIwMjczLDEyMCwxMjAzMjUsMTIwLDEyMDM3NywxMjAsMTIwNDI5LDEyMCwxMjA0ODEsMTIwLDU0NDEsMTIwLDU1MDEsMTIwLDU3NDEsODgsOTU4Nyw4OCw2NjMzOCw4OCw3MTkxNiw4OCw2NTMzNiw4OCw4NTUzLDg4LDExOTgzMSw4OCwxMTk4ODMsODgsMTE5OTM1LDg4LDExOTk4Nyw4OCwxMjAwMzksODgsMTIwMDkxLDg4LDEyMDE0Myw4OCwxMjAxOTUsODgsMTIwMjQ3LDg4LDEyMDI5OSw4OCwxMjAzNTEsODgsMTIwNDAzLDg4LDEyMDQ1NSw4OCw0MjkzMSw4OCw5MzUsODgsMTIwNTEwLDg4LDEyMDU2OCw4OCwxMjA2MjYsODgsMTIwNjg0LDg4LDEyMDc0Miw4OCwxMTQzNiw4OCwxMTYxMyw4OCw1ODE1LDg4LDQyMjE5LDg4LDY2MTkyLDg4LDY2MjI4LDg4LDY2MzI3LDg4LDY2ODU1LDg4LDYxMSwxMjEsNzU2NCwxMjEsNjUzNjksMTIxLDExOTg1OCwxMjEsMTE5OTEwLDEyMSwxMTk5NjIsMTIxLDEyMDAxNCwxMjEsMTIwMDY2LDEyMSwxMjAxMTgsMTIxLDEyMDE3MCwxMjEsMTIwMjIyLDEyMSwxMjAyNzQsMTIxLDEyMDMyNiwxMjEsMTIwMzc4LDEyMSwxMjA0MzAsMTIxLDEyMDQ4MiwxMjEsNjU1LDEyMSw3OTM1LDEyMSw0Mzg2NiwxMjEsOTQ3LDEyMSw4NTA5LDEyMSwxMjA1MTYsMTIxLDEyMDU3NCwxMjEsMTIwNjMyLDEyMSwxMjA2OTAsMTIxLDEyMDc0OCwxMjEsMTE5OSwxMjEsNDMyNywxMjEsNzE5MDAsMTIxLDY1MzM3LDg5LDExOTgzMiw4OSwxMTk4ODQsODksMTE5OTM2LDg5LDExOTk4OCw4OSwxMjAwNDAsODksMTIwMDkyLDg5LDEyMDE0NCw4OSwxMjAxOTYsODksMTIwMjQ4LDg5LDEyMDMwMCw4OSwxMjAzNTIsODksMTIwNDA0LDg5LDEyMDQ1Niw4OSw5MzMsODksOTc4LDg5LDEyMDUwOCw4OSwxMjA1NjYsODksMTIwNjI0LDg5LDEyMDY4Miw4OSwxMjA3NDAsODksMTE0MzIsODksMTE5OCw4OSw1MDMzLDg5LDUwNTMsODksNDIyMjAsODksOTQwMTksODksNzE4NDQsODksNjYyMjYsODksMTE5ODU5LDEyMiwxMTk5MTEsMTIyLDExOTk2MywxMjIsMTIwMDE1LDEyMiwxMjAwNjcsMTIyLDEyMDExOSwxMjIsMTIwMTcxLDEyMiwxMjAyMjMsMTIyLDEyMDI3NSwxMjIsMTIwMzI3LDEyMiwxMjAzNzksMTIyLDEyMDQzMSwxMjIsMTIwNDgzLDEyMiw3NDU4LDEyMiw0MzkyMywxMjIsNzE4NzYsMTIyLDY2MjkzLDkwLDcxOTA5LDkwLDY1MzM4LDkwLDg0ODQsOTAsODQ4OCw5MCwxMTk4MzMsOTAsMTE5ODg1LDkwLDExOTkzNyw5MCwxMTk5ODksOTAsMTIwMDQxLDkwLDEyMDE5Nyw5MCwxMjAyNDksOTAsMTIwMzAxLDkwLDEyMDM1Myw5MCwxMjA0MDUsOTAsMTIwNDU3LDkwLDkxOCw5MCwxMjA0OTMsOTAsMTIwNTUxLDkwLDEyMDYwOSw5MCwxMjA2NjcsOTAsMTIwNzI1LDkwLDUwNTksOTAsNDIyMDQsOTAsNzE4NDksOTBdLCJfZGVmYXVsdCI6WzE2MCwzMiw4MjExLDQ1LDY1MzA2LDU4LDY1MjgxLDMzLDgyMTYsOTYsODIxNyw5Niw4MjQ1LDk2LDE4MCw5NiwxMjQ5NCw0NywxMDQ3LDUxLDEwNzMsNTQsMTA3Miw5NywxMDQwLDY1LDEwNjgsOTgsMTA0Miw2NiwxMDg5LDk5LDEwNTcsNjcsMTA3NywxMDEsMTA0NSw2OSwxMDUzLDcyLDMwNSwxMDUsMTA1MCw3NSw5MjEsMTI0LDEwNTIsNzcsMTA4NiwxMTEsMTA1NCw3OSwxMDA5LDExMiwxMDg4LDExMiwxMDU2LDgwLDEwNzUsMTE0LDEwNTgsODQsMjE1LDEyMCwxMDkzLDEyMCwxMDYxLDg4LDEwOTEsMTIxLDEwNTksODldLCJjcyI6WzY1MzA2LDU4LDY1MjgxLDMzLDgyMTYsOTYsODIxNyw5Niw4MjQ1LDk2LDE4MCw5NiwxMjQ5NCw0NywxMDQ3LDUxLDEwNzMsNTQsMTA3Miw5NywxMDQwLDY1LDEwNjgsOTgsMTA0Miw2NiwxMDg5LDk5LDEwNTcsNjcsMTA3NywxMDEsMTA0NSw2OSwxMDUzLDcyLDMwNSwxMDUsMTA1MCw3NSw5MjEsMTI0LDEwNTIsNzcsMTA4NiwxMTEsMTA1NCw3OSwxMDA5LDExMiwxMDg4LDExMiwxMDU2LDgwLDEwNzUsMTE0LDEwNTgsODQsMTA5MywxMjAsMTA2MSw4OCwxMDkxLDEyMSwxMDU5LDg5XSwiZGUiOls2NTMwNiw1OCw2NTI4MSwzMyw4MjE2LDk2LDgyMTcsOTYsODI0NSw5NiwxODAsOTYsMTI0OTQsNDcsMTA0Nyw1MSwxMDczLDU0LDEwNzIsOTcsMTA0MCw2NSwxMDY4LDk4LDEwNDIsNjYsMTA4OSw5OSwxMDU3LDY3LDEwNzcsMTAxLDEwNDUsNjksMTA1Myw3MiwzMDUsMTA1LDEwNTAsNzUsOTIxLDEyNCwxMDUyLDc3LDEwODYsMTExLDEwNTQsNzksMTAwOSwxMTIsMTA4OCwxMTIsMTA1Niw4MCwxMDc1LDExNCwxMDU4LDg0LDEwOTMsMTIwLDEwNjEsODgsMTA5MSwxMjEsMTA1OSw4OV0sImVzIjpbODIxMSw0NSw2NTMwNiw1OCw2NTI4MSwzMyw4MjQ1LDk2LDE4MCw5NiwxMjQ5NCw0NywxMDQ3LDUxLDEwNzMsNTQsMTA3Miw5NywxMDQwLDY1LDEwNjgsOTgsMTA0Miw2NiwxMDg5LDk5LDEwNTcsNjcsMTA3NywxMDEsMTA0NSw2OSwxMDUzLDcyLDMwNSwxMDUsMTA1MCw3NSwxMDUyLDc3LDEwODYsMTExLDEwNTQsNzksMTAwOSwxMTIsMTA4OCwxMTIsMTA1Niw4MCwxMDc1LDExNCwxMDU4LDg0LDIxNSwxMjAsMTA5MywxMjAsMTA2MSw4OCwxMDkxLDEyMSwxMDU5LDg5XSwiZnIiOls2NTMwNiw1OCw2NTI4MSwzMyw4MjE2LDk2LDgyNDUsOTYsMTI0OTQsNDcsMTA0Nyw1MSwxMDczLDU0LDEwNzIsOTcsMTA0MCw2NSwxMDY4LDk4LDEwNDIsNjYsMTA4OSw5OSwxMDU3LDY3LDEwNzcsMTAxLDEwNDUsNjksMTA1Myw3MiwzMDUsMTA1LDEwNTAsNzUsOTIxLDEyNCwxMDUyLDc3LDEwODYsMTExLDEwNTQsNzksMTAwOSwxMTIsMTA4OCwxMTIsMTA1Niw4MCwxMDc1LDExNCwxMDU4LDg0LDIxNSwxMjAsMTA5MywxMjAsMTA2MSw4OCwxMDkxLDEyMSwxMDU5LDg5XSwiaXQiOlsxNjAsMzIsODIxMSw0NSw2NTMwNiw1OCw2NTI4MSwzMyw4MjE2LDk2LDgyNDUsOTYsMTgwLDk2LDEyNDk0LDQ3LDEwNDcsNTEsMTA3Myw1NCwxMDcyLDk3LDEwNDAsNjUsMTA2OCw5OCwxMDQyLDY2LDEwODksOTksMTA1Nyw2NywxMDc3LDEwMSwxMDQ1LDY5LDEwNTMsNzIsMzA1LDEwNSwxMDUwLDc1LDkyMSwxMjQsMTA1Miw3NywxMDg2LDExMSwxMDU0LDc5LDEwMDksMTEyLDEwODgsMTEyLDEwNTYsODAsMTA3NSwxMTQsMTA1OCw4NCwyMTUsMTIwLDEwOTMsMTIwLDEwNjEsODgsMTA5MSwxMjEsMTA1OSw4OV0sImphIjpbODIxMSw0NSw2NTMwNiw1OCw2NTI4MSwzMyw4MjE2LDk2LDgyMTcsOTYsODI0NSw5NiwxODAsOTYsMTA0Nyw1MSwxMDczLDU0LDEwNzIsOTcsMTA0MCw2NSwxMDY4LDk4LDEwNDIsNjYsMTA4OSw5OSwxMDU3LDY3LDEwNzcsMTAxLDEwNDUsNjksMTA1Myw3MiwzMDUsMTA1LDEwNTAsNzUsOTIxLDEyNCwxMDUyLDc3LDEwODYsMTExLDEwNTQsNzksMTAwOSwxMTIsMTA4OCwxMTIsMTA1Niw4MCwxMDc1LDExNCwxMDU4LDg0LDIxNSwxMjAsMTA5MywxMjAsMTA2MSw4OCwxMDkxLDEyMSwxMDU5LDg5XSwia28iOls4MjExLDQ1LDY1MzA2LDU4LDY1MjgxLDMzLDgyNDUsOTYsMTgwLDk2LDEyNDk0LDQ3LDEwNDcsNTEsMTA3Myw1NCwxMDcyLDk3LDEwNDAsNjUsMTA2OCw5OCwxMDQyLDY2LDEwODksOTksMTA1Nyw2NywxMDc3LDEwMSwxMDQ1LDY5LDEwNTMsNzIsMzA1LDEwNSwxMDUwLDc1LDkyMSwxMjQsMTA1Miw3NywxMDg2LDExMSwxMDU0LDc5LDEwMDksMTEyLDEwODgsMTEyLDEwNTYsODAsMTA3NSwxMTQsMTA1OCw4NCwyMTUsMTIwLDEwOTMsMTIwLDEwNjEsODgsMTA5MSwxMjEsMTA1OSw4OV0sInBsIjpbNjUzMDYsNTgsNjUyODEsMzMsODIxNiw5Niw4MjE3LDk2LDgyNDUsOTYsMTgwLDk2LDEyNDk0LDQ3LDEwNDcsNTEsMTA3Myw1NCwxMDcyLDk3LDEwNDAsNjUsMTA2OCw5OCwxMDQyLDY2LDEwODksOTksMTA1Nyw2NywxMDc3LDEwMSwxMDQ1LDY5LDEwNTMsNzIsMzA1LDEwNSwxMDUwLDc1LDkyMSwxMjQsMTA1Miw3NywxMDg2LDExMSwxMDU0LDc5LDEwMDksMTEyLDEwODgsMTEyLDEwNTYsODAsMTA3NSwxMTQsMTA1OCw4NCwyMTUsMTIwLDEwOTMsMTIwLDEwNjEsODgsMTA5MSwxMjEsMTA1OSw4OV0sInB0LUJSIjpbNjUzMDYsNTgsNjUyODEsMzMsODIxNiw5Niw4MjE3LDk2LDgyNDUsOTYsMTgwLDk2LDEyNDk0LDQ3LDEwNDcsNTEsMTA3Myw1NCwxMDcyLDk3LDEwNDAsNjUsMTA2OCw5OCwxMDQyLDY2LDEwODksOTksMTA1Nyw2NywxMDc3LDEwMSwxMDQ1LDY5LDEwNTMsNzIsMzA1LDEwNSwxMDUwLDc1LDkyMSwxMjQsMTA1Miw3NywxMDg2LDExMSwxMDU0LDc5LDEwMDksMTEyLDEwODgsMTEyLDEwNTYsODAsMTA3NSwxMTQsMTA1OCw4NCwyMTUsMTIwLDEwOTMsMTIwLDEwNjEsODgsMTA5MSwxMjEsMTA1OSw4OV0sInFwcy1wbG9jIjpbMTYwLDMyLDgyMTEsNDUsNjUzMDYsNTgsNjUyODEsMzMsODIxNiw5Niw4MjE3LDk2LDgyNDUsOTYsMTgwLDk2LDEyNDk0LDQ3LDEwNDcsNTEsMTA3Myw1NCwxMDcyLDk3LDEwNDAsNjUsMTA2OCw5OCwxMDQyLDY2LDEwODksOTksMTA1Nyw2NywxMDc3LDEwMSwxMDQ1LDY5LDEwNTMsNzIsMzA1LDEwNSwxMDUwLDc1LDkyMSwxMjQsMTA1Miw3NywxMDg2LDExMSwxMDU0LDc5LDEwODgsMTEyLDEwNTYsODAsMTA3NSwxMTQsMTA1OCw4NCwyMTUsMTIwLDEwOTMsMTIwLDEwNjEsODgsMTA5MSwxMjEsMTA1OSw4OV0sInJ1IjpbNjUzMDYsNTgsNjUyODEsMzMsODIxNiw5Niw4MjE3LDk2LDgyNDUsOTYsMTgwLDk2LDEyNDk0LDQ3LDMwNSwxMDUsOTIxLDEyNCwxMDA5LDExMiwyMTUsMTIwXSwidHIiOlsxNjAsMzIsODIxMSw0NSw2NTMwNiw1OCw2NTI4MSwzMyw4MjQ1LDk2LDE4MCw5NiwxMjQ5NCw0NywxMDQ3LDUxLDEwNzMsNTQsMTA3Miw5NywxMDQwLDY1LDEwNjgsOTgsMTA0Miw2NiwxMDg5LDk5LDEwNTcsNjcsMTA3NywxMDEsMTA0NSw2OSwxMDUzLDcyLDEwNTAsNzUsOTIxLDEyNCwxMDUyLDc3LDEwODYsMTExLDEwNTQsNzksMTAwOSwxMTIsMTA4OCwxMTIsMTA1Niw4MCwxMDc1LDExNCwxMDU4LDg0LDIxNSwxMjAsMTA5MywxMjAsMTA2MSw4OCwxMDkxLDEyMSwxMDU5LDg5XSwiemgtaGFucyI6WzY1MzA2LDU4LDY1MjgxLDMzLDgyNDUsOTYsMTgwLDk2LDEyNDk0LDQ3LDEwNDcsNTEsMTA3Myw1NCwxMDcyLDk3LDEwNDAsNjUsMTA2OCw5OCwxMDQyLDY2LDEwODksOTksMTA1Nyw2NywxMDc3LDEwMSwxMDQ1LDY5LDEwNTMsNzIsMzA1LDEwNSwxMDUwLDc1LDkyMSwxMjQsMTA1Miw3NywxMDg2LDExMSwxMDU0LDc5LDEwMDksMTEyLDEwODgsMTEyLDEwNTYsODAsMTA3NSwxMTQsMTA1OCw4NCwyMTUsMTIwLDEwOTMsMTIwLDEwNjEsODgsMTA5MSwxMjEsMTA1OSw4OV0sInpoLWhhbnQiOls4MjExLDQ1LDE4MCw5NiwxMjQ5NCw0NywxMDQ3LDUxLDEwNzMsNTQsMTA3Miw5NywxMDQwLDY1LDEwNjgsOTgsMTA0Miw2NiwxMDg5LDk5LDEwNTcsNjcsMTA3NywxMDEsMTA0NSw2OSwxMDUzLDcyLDMwNSwxMDUsMTA1MCw3NSw5MjEsMTI0LDEwNTIsNzcsMTA4NiwxMTEsMTA1NCw3OSwxMDA5LDExMiwxMDg4LDExMiwxMDU2LDgwLDEwNzUsMTE0LDEwNTgsODQsMjE1LDEyMCwxMDkzLDEyMCwxMDYxLDg4LDEwOTEsMTIxLDEwNTksODldfScpfXN0YXRpYyBnZXRDb25mdXNhYmxlc0ZvckN1cnJlbnRMb2NhbGUoKXtpZighQi5tYXApe3ZhciB0LHIsbj1CLmdldERhdGEoKTtsZXQgZT14O2Z1bmN0aW9uIGkodCl7Y29uc3Qgcj1uZXcgTWFwO2ZvcihsZXQgZT0wO2U8dC5sZW5ndGg7ZSs9MilyLnNldCh0W2VdLHRbZSsxXSk7cmV0dXJuIHJ9ZSYmZSBpbiBufHwoZT1NKSxlJiZlIGluIG58fChlPSJfZGVmYXVsdCIpO2NvbnN0IHM9aShuLl9jb21tb24pO2ZvcihbdCxyXW9mIGkobltlXSkpcy5zZXQodCxyKTtCLm1hcD1zfXJldHVybiBCLm1hcH1zdGF0aWMgaXNBbWJpZ3VvdXMoZSl7cmV0dXJuIEIuZ2V0Q29uZnVzYWJsZXNGb3JDdXJyZW50TG9jYWxlKCkuaGFzKGUpfXN0YXRpYyBnZXRQcmltYXJ5Q29uZnVzYWJsZShlKXtyZXR1cm4gQi5nZXRDb25mdXNhYmxlc0ZvckN1cnJlbnRMb2NhbGUoKS5nZXQoZSl9c3RhdGljIGdldFByaW1hcnlDb25mdXNhYmxlQ29kZVBvaW50cygpe3JldHVybiBuZXcgU2V0KEIuZ2V0Q29uZnVzYWJsZXNGb3JDdXJyZW50TG9jYWxlKCkua2V5cygpKX19Y2xhc3MgcXtzdGF0aWMgZ2V0UmF3RGF0YSgpe3JldHVybiBKU09OLnBhcnNlKCJbOSwxMCwxMSwxMiwxMywzMiwxMjcsMTYwLDE3Myw4NDcsMTU2NCw0NDQ3LDQ0NDgsNjA2OCw2MDY5LDYxNTUsNjE1Niw2MTU3LDYxNTgsNzM1NSw3MzU2LDgxOTIsODE5Myw4MTk0LDgxOTUsODE5Niw4MTk3LDgxOTgsODE5OSw4MjAwLDgyMDEsODIwMiw4MjAzLDgyMDQsODIwNSw4MjA2LDgyMDcsODIzNCw4MjM1LDgyMzYsODIzNyw4MjM4LDgyMzksODI4Nyw4Mjg4LDgyODksODI5MCw4MjkxLDgyOTIsODI5Myw4Mjk0LDgyOTUsODI5Niw4Mjk3LDgyOTgsODI5OSw4MzAwLDgzMDEsODMwMiw4MzAzLDEwMjQwLDEyMjg4LDEyNjQ0LDY1MDI0LDY1MDI1LDY1MDI2LDY1MDI3LDY1MDI4LDY1MDI5LDY1MDMwLDY1MDMxLDY1MDMyLDY1MDMzLDY1MDM0LDY1MDM1LDY1MDM2LDY1MDM3LDY1MDM4LDY1MDM5LDY1Mjc5LDY1NDQwLDY1NTIwLDY1NTIxLDY1NTIyLDY1NTIzLDY1NTI0LDY1NTI1LDY1NTI2LDY1NTI3LDY1NTI4LDY1NTMyLDc4ODQ0LDExOTE1NSwxMTkxNTYsMTE5MTU3LDExOTE1OCwxMTkxNTksMTE5MTYwLDExOTE2MSwxMTkxNjIsOTE3NTA0LDkxNzUwNSw5MTc1MDYsOTE3NTA3LDkxNzUwOCw5MTc1MDksOTE3NTEwLDkxNzUxMSw5MTc1MTIsOTE3NTEzLDkxNzUxNCw5MTc1MTUsOTE3NTE2LDkxNzUxNyw5MTc1MTgsOTE3NTE5LDkxNzUyMCw5MTc1MjEsOTE3NTIyLDkxNzUyMyw5MTc1MjQsOTE3NTI1LDkxNzUyNiw5MTc1MjcsOTE3NTI4LDkxNzUyOSw5MTc1MzAsOTE3NTMxLDkxNzUzMiw5MTc1MzMsOTE3NTM0LDkxNzUzNSw5MTc1MzYsOTE3NTM3LDkxNzUzOCw5MTc1MzksOTE3NTQwLDkxNzU0MSw5MTc1NDIsOTE3NTQzLDkxNzU0NCw5MTc1NDUsOTE3NTQ2LDkxNzU0Nyw5MTc1NDgsOTE3NTQ5LDkxNzU1MCw5MTc1NTEsOTE3NTUyLDkxNzU1Myw5MTc1NTQsOTE3NTU1LDkxNzU1Niw5MTc1NTcsOTE3NTU4LDkxNzU1OSw5MTc1NjAsOTE3NTYxLDkxNzU2Miw5MTc1NjMsOTE3NTY0LDkxNzU2NSw5MTc1NjYsOTE3NTY3LDkxNzU2OCw5MTc1NjksOTE3NTcwLDkxNzU3MSw5MTc1NzIsOTE3NTczLDkxNzU3NCw5MTc1NzUsOTE3NTc2LDkxNzU3Nyw5MTc1NzgsOTE3NTc5LDkxNzU4MCw5MTc1ODEsOTE3NTgyLDkxNzU4Myw5MTc1ODQsOTE3NTg1LDkxNzU4Niw5MTc1ODcsOTE3NTg4LDkxNzU4OSw5MTc1OTAsOTE3NTkxLDkxNzU5Miw5MTc1OTMsOTE3NTk0LDkxNzU5NSw5MTc1OTYsOTE3NTk3LDkxNzU5OCw5MTc1OTksOTE3NjAwLDkxNzYwMSw5MTc2MDIsOTE3NjAzLDkxNzYwNCw5MTc2MDUsOTE3NjA2LDkxNzYwNyw5MTc2MDgsOTE3NjA5LDkxNzYxMCw5MTc2MTEsOTE3NjEyLDkxNzYxMyw5MTc2MTQsOTE3NjE1LDkxNzYxNiw5MTc2MTcsOTE3NjE4LDkxNzYxOSw5MTc2MjAsOTE3NjIxLDkxNzYyMiw5MTc2MjMsOTE3NjI0LDkxNzYyNSw5MTc2MjYsOTE3NjI3LDkxNzYyOCw5MTc2MjksOTE3NjMwLDkxNzYzMSw5MTc3NjAsOTE3NzYxLDkxNzc2Miw5MTc3NjMsOTE3NzY0LDkxNzc2NSw5MTc3NjYsOTE3NzY3LDkxNzc2OCw5MTc3NjksOTE3NzcwLDkxNzc3MSw5MTc3NzIsOTE3NzczLDkxNzc3NCw5MTc3NzUsOTE3Nzc2LDkxNzc3Nyw5MTc3NzgsOTE3Nzc5LDkxNzc4MCw5MTc3ODEsOTE3NzgyLDkxNzc4Myw5MTc3ODQsOTE3Nzg1LDkxNzc4Niw5MTc3ODcsOTE3Nzg4LDkxNzc4OSw5MTc3OTAsOTE3NzkxLDkxNzc5Miw5MTc3OTMsOTE3Nzk0LDkxNzc5NSw5MTc3OTYsOTE3Nzk3LDkxNzc5OCw5MTc3OTksOTE3ODAwLDkxNzgwMSw5MTc4MDIsOTE3ODAzLDkxNzgwNCw5MTc4MDUsOTE3ODA2LDkxNzgwNyw5MTc4MDgsOTE3ODA5LDkxNzgxMCw5MTc4MTEsOTE3ODEyLDkxNzgxMyw5MTc4MTQsOTE3ODE1LDkxNzgxNiw5MTc4MTcsOTE3ODE4LDkxNzgxOSw5MTc4MjAsOTE3ODIxLDkxNzgyMiw5MTc4MjMsOTE3ODI0LDkxNzgyNSw5MTc4MjYsOTE3ODI3LDkxNzgyOCw5MTc4MjksOTE3ODMwLDkxNzgzMSw5MTc4MzIsOTE3ODMzLDkxNzgzNCw5MTc4MzUsOTE3ODM2LDkxNzgzNyw5MTc4MzgsOTE3ODM5LDkxNzg0MCw5MTc4NDEsOTE3ODQyLDkxNzg0Myw5MTc4NDQsOTE3ODQ1LDkxNzg0Niw5MTc4NDcsOTE3ODQ4LDkxNzg0OSw5MTc4NTAsOTE3ODUxLDkxNzg1Miw5MTc4NTMsOTE3ODU0LDkxNzg1NSw5MTc4NTYsOTE3ODU3LDkxNzg1OCw5MTc4NTksOTE3ODYwLDkxNzg2MSw5MTc4NjIsOTE3ODYzLDkxNzg2NCw5MTc4NjUsOTE3ODY2LDkxNzg2Nyw5MTc4NjgsOTE3ODY5LDkxNzg3MCw5MTc4NzEsOTE3ODcyLDkxNzg3Myw5MTc4NzQsOTE3ODc1LDkxNzg3Niw5MTc4NzcsOTE3ODc4LDkxNzg3OSw5MTc4ODAsOTE3ODgxLDkxNzg4Miw5MTc4ODMsOTE3ODg0LDkxNzg4NSw5MTc4ODYsOTE3ODg3LDkxNzg4OCw5MTc4ODksOTE3ODkwLDkxNzg5MSw5MTc4OTIsOTE3ODkzLDkxNzg5NCw5MTc4OTUsOTE3ODk2LDkxNzg5Nyw5MTc4OTgsOTE3ODk5LDkxNzkwMCw5MTc5MDEsOTE3OTAyLDkxNzkwMyw5MTc5MDQsOTE3OTA1LDkxNzkwNiw5MTc5MDcsOTE3OTA4LDkxNzkwOSw5MTc5MTAsOTE3OTExLDkxNzkxMiw5MTc5MTMsOTE3OTE0LDkxNzkxNSw5MTc5MTYsOTE3OTE3LDkxNzkxOCw5MTc5MTksOTE3OTIwLDkxNzkyMSw5MTc5MjIsOTE3OTIzLDkxNzkyNCw5MTc5MjUsOTE3OTI2LDkxNzkyNyw5MTc5MjgsOTE3OTI5LDkxNzkzMCw5MTc5MzEsOTE3OTMyLDkxNzkzMyw5MTc5MzQsOTE3OTM1LDkxNzkzNiw5MTc5MzcsOTE3OTM4LDkxNzkzOSw5MTc5NDAsOTE3OTQxLDkxNzk0Miw5MTc5NDMsOTE3OTQ0LDkxNzk0NSw5MTc5NDYsOTE3OTQ3LDkxNzk0OCw5MTc5NDksOTE3OTUwLDkxNzk1MSw5MTc5NTIsOTE3OTUzLDkxNzk1NCw5MTc5NTUsOTE3OTU2LDkxNzk1Nyw5MTc5NTgsOTE3OTU5LDkxNzk2MCw5MTc5NjEsOTE3OTYyLDkxNzk2Myw5MTc5NjQsOTE3OTY1LDkxNzk2Niw5MTc5NjcsOTE3OTY4LDkxNzk2OSw5MTc5NzAsOTE3OTcxLDkxNzk3Miw5MTc5NzMsOTE3OTc0LDkxNzk3NSw5MTc5NzYsOTE3OTc3LDkxNzk3OCw5MTc5NzksOTE3OTgwLDkxNzk4MSw5MTc5ODIsOTE3OTgzLDkxNzk4NCw5MTc5ODUsOTE3OTg2LDkxNzk4Nyw5MTc5ODgsOTE3OTg5LDkxNzk5MCw5MTc5OTEsOTE3OTkyLDkxNzk5Myw5MTc5OTQsOTE3OTk1LDkxNzk5Niw5MTc5OTcsOTE3OTk4LDkxNzk5OV0iKX1zdGF0aWMgZ2V0RGF0YSgpe3JldHVybiB0aGlzLl9kYXRhfHwodGhpcy5fZGF0YT1uZXcgU2V0KHEuZ2V0UmF3RGF0YSgpKSksdGhpcy5fZGF0YX1zdGF0aWMgaXNJbnZpc2libGVDaGFyYWN0ZXIoZSl7cmV0dXJuIHEuZ2V0RGF0YSgpLmhhcyhlKX1zdGF0aWMgZ2V0IGNvZGVQb2ludHMoKXtyZXR1cm4gcS5nZXREYXRhKCl9fXEuX2RhdGE9dm9pZCAwO2NsYXNzIEh7Y29uc3RydWN0b3IoZSx0LHIsbil7dGhpcy52c1dvcmtlcj1lLHRoaXMucmVxPXQsdGhpcy5tZXRob2Q9cix0aGlzLmFyZ3M9bix0aGlzLnR5cGU9MH19Y2xhc3MgV3tjb25zdHJ1Y3RvcihlLHQscixuKXt0aGlzLnZzV29ya2VyPWUsdGhpcy5zZXE9dCx0aGlzLnJlcz1yLHRoaXMuZXJyPW4sdGhpcy50eXBlPTF9fWNsYXNzIHp7Y29uc3RydWN0b3IoZSx0LHIsbil7dGhpcy52c1dvcmtlcj1lLHRoaXMucmVxPXQsdGhpcy5ldmVudE5hbWU9cix0aGlzLmFyZz1uLHRoaXMudHlwZT0yfX1jbGFzcyBqe2NvbnN0cnVjdG9yKGUsdCxyKXt0aGlzLnZzV29ya2VyPWUsdGhpcy5yZXE9dCx0aGlzLmV2ZW50PXIsdGhpcy50eXBlPTN9fWNsYXNzICR7Y29uc3RydWN0b3IoZSx0KXt0aGlzLnZzV29ya2VyPWUsdGhpcy5yZXE9dCx0aGlzLnR5cGU9NH19Y2xhc3MgR3tjb25zdHJ1Y3RvcihlKXt0aGlzLl93b3JrZXJJZD0tMSx0aGlzLl9oYW5kbGVyPWUsdGhpcy5fbGFzdFNlbnRSZXE9MCx0aGlzLl9wZW5kaW5nUmVwbGllcz1PYmplY3QuY3JlYXRlKG51bGwpLHRoaXMuX3BlbmRpbmdFbWl0dGVycz1uZXcgTWFwLHRoaXMuX3BlbmRpbmdFdmVudHM9bmV3IE1hcH1zZXRXb3JrZXJJZChlKXt0aGlzLl93b3JrZXJJZD1lfXNlbmRNZXNzYWdlKHIsbil7Y29uc3QgaT1TdHJpbmcoKyt0aGlzLl9sYXN0U2VudFJlcSk7cmV0dXJuIG5ldyBQcm9taXNlKChlLHQpPT57dGhpcy5fcGVuZGluZ1JlcGxpZXNbaV09e3Jlc29sdmU6ZSxyZWplY3Q6dH0sdGhpcy5fc2VuZChuZXcgSCh0aGlzLl93b3JrZXJJZCxpLHIsbikpfSl9bGlzdGVuKGUsdCl7bGV0IHI9bnVsbDtjb25zdCBuPW5ldyBSKHtvbkZpcnN0TGlzdGVuZXJBZGQ6KCk9PntyPVN0cmluZygrK3RoaXMuX2xhc3RTZW50UmVxKSx0aGlzLl9wZW5kaW5nRW1pdHRlcnMuc2V0KHIsbiksdGhpcy5fc2VuZChuZXcgeih0aGlzLl93b3JrZXJJZCxyLGUsdCkpfSxvbkxhc3RMaXN0ZW5lclJlbW92ZTooKT0+e3RoaXMuX3BlbmRpbmdFbWl0dGVycy5kZWxldGUociksdGhpcy5fc2VuZChuZXcgJCh0aGlzLl93b3JrZXJJZCxyKSkscj1udWxsfX0pO3JldHVybiBuLmV2ZW50fWhhbmRsZU1lc3NhZ2UoZSl7ZSYmZS52c1dvcmtlciYmKC0xIT09dGhpcy5fd29ya2VySWQmJmUudnNXb3JrZXIhPT10aGlzLl93b3JrZXJJZHx8dGhpcy5faGFuZGxlTWVzc2FnZShlKSl9X2hhbmRsZU1lc3NhZ2UoZSl7c3dpdGNoKGUudHlwZSl7Y2FzZSAxOnJldHVybiB0aGlzLl9oYW5kbGVSZXBseU1lc3NhZ2UoZSk7Y2FzZSAwOnJldHVybiB0aGlzLl9oYW5kbGVSZXF1ZXN0TWVzc2FnZShlKTtjYXNlIDI6cmV0dXJuIHRoaXMuX2hhbmRsZVN1YnNjcmliZUV2ZW50TWVzc2FnZShlKTtjYXNlIDM6cmV0dXJuIHRoaXMuX2hhbmRsZUV2ZW50TWVzc2FnZShlKTtjYXNlIDQ6cmV0dXJuIHRoaXMuX2hhbmRsZVVuc3Vic2NyaWJlRXZlbnRNZXNzYWdlKGUpfX1faGFuZGxlUmVwbHlNZXNzYWdlKHIpe2lmKHRoaXMuX3BlbmRpbmdSZXBsaWVzW3Iuc2VxXSl7bGV0IHQ9dGhpcy5fcGVuZGluZ1JlcGxpZXNbci5zZXFdO2lmKGRlbGV0ZSB0aGlzLl9wZW5kaW5nUmVwbGllc1tyLnNlcV0sci5lcnIpe2xldCBlPXIuZXJyO3JldHVybiByLmVyci4kaXNFcnJvciYmKGU9bmV3IEVycm9yLGUubmFtZT1yLmVyci5uYW1lLGUubWVzc2FnZT1yLmVyci5tZXNzYWdlLGUuc3RhY2s9ci5lcnIuc3RhY2spLHZvaWQgdC5yZWplY3QoZSl9dC5yZXNvbHZlKHIucmVzKX1lbHNlIGNvbnNvbGUud2FybigiR290IHJlcGx5IHRvIHVua25vd24gc2VxIil9X2hhbmRsZVJlcXVlc3RNZXNzYWdlKGUpe2xldCB0PWUucmVxLHI9dGhpcy5faGFuZGxlci5oYW5kbGVNZXNzYWdlKGUubWV0aG9kLGUuYXJncyk7ci50aGVuKGU9Pnt0aGlzLl9zZW5kKG5ldyBXKHRoaXMuX3dvcmtlcklkLHQsZSx2b2lkIDApKX0sZT0+e2UuZGV0YWlsIGluc3RhbmNlb2YgRXJyb3ImJihlLmRldGFpbD1uKGUuZGV0YWlsKSksdGhpcy5fc2VuZChuZXcgVyh0aGlzLl93b3JrZXJJZCx0LHZvaWQgMCxuKGUpKSl9KX1faGFuZGxlU3Vic2NyaWJlRXZlbnRNZXNzYWdlKGUpe2NvbnN0IHQ9ZS5yZXE7ZT10aGlzLl9oYW5kbGVyLmhhbmRsZUV2ZW50KGUuZXZlbnROYW1lLGUuYXJnKShlPT57dGhpcy5fc2VuZChuZXcgaih0aGlzLl93b3JrZXJJZCx0LGUpKX0pO3RoaXMuX3BlbmRpbmdFdmVudHMuc2V0KHQsZSl9X2hhbmRsZUV2ZW50TWVzc2FnZShlKXt0aGlzLl9wZW5kaW5nRW1pdHRlcnMuaGFzKGUucmVxKT90aGlzLl9wZW5kaW5nRW1pdHRlcnMuZ2V0KGUucmVxKS5maXJlKGUuZXZlbnQpOmNvbnNvbGUud2FybigiR290IGV2ZW50IGZvciB1bmtub3duIHJlcSIpfV9oYW5kbGVVbnN1YnNjcmliZUV2ZW50TWVzc2FnZShlKXt0aGlzLl9wZW5kaW5nRXZlbnRzLmhhcyhlLnJlcSk/KHRoaXMuX3BlbmRpbmdFdmVudHMuZ2V0KGUucmVxKS5kaXNwb3NlKCksdGhpcy5fcGVuZGluZ0V2ZW50cy5kZWxldGUoZS5yZXEpKTpjb25zb2xlLndhcm4oIkdvdCB1bnN1YnNjcmliZSBmb3IgdW5rbm93biByZXEiKX1fc2VuZCh0KXtsZXQgcj1bXTtpZigwPT09dC50eXBlKWZvcihsZXQgZT0wO2U8dC5hcmdzLmxlbmd0aDtlKyspdC5hcmdzW2VdaW5zdGFuY2VvZiBBcnJheUJ1ZmZlciYmci5wdXNoKHQuYXJnc1tlXSk7ZWxzZSAxPT09dC50eXBlJiZ0LnJlcyBpbnN0YW5jZW9mIEFycmF5QnVmZmVyJiZyLnB1c2godC5yZXMpO3RoaXMuX2hhbmRsZXIuc2VuZE1lc3NhZ2UodCxyKX19ZnVuY3Rpb24gSihlKXtyZXR1cm4ibyI9PT1lWzBdJiYibiI9PT1lWzFdJiZGKGUuY2hhckNvZGVBdCgyKSl9ZnVuY3Rpb24gUShlKXtyZXR1cm4vXm9uRHluYW1pYy8udGVzdChlKSYmRihlLmNoYXJDb2RlQXQoOSkpfWZ1bmN0aW9uIFkoZSxyLG4pe2xldCB0PXt9O2Zvcihjb25zdCBpIG9mIGUpUShpKT90W2ldPSh0PT5mdW5jdGlvbihlKXtyZXR1cm4gbih0LGUpfSkoaSk6SihpKT90W2ldPW4oaSx2b2lkIDApOnRbaV09KHQ9PmZ1bmN0aW9uKCl7dmFyIGU9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDApO3JldHVybiByKHQsZSl9KShpKTtyZXR1cm4gdH1jbGFzcyBae2NvbnN0cnVjdG9yKHIsZSl7dGhpcy5fcmVxdWVzdEhhbmRsZXJGYWN0b3J5PWUsdGhpcy5fcmVxdWVzdEhhbmRsZXI9bnVsbCx0aGlzLl9wcm90b2NvbD1uZXcgRyh7c2VuZE1lc3NhZ2U6KGUsdCk9PntyKGUsdCl9LGhhbmRsZU1lc3NhZ2U6KGUsdCk9PnRoaXMuX2hhbmRsZU1lc3NhZ2UoZSx0KSxoYW5kbGVFdmVudDooZSx0KT0+dGhpcy5faGFuZGxlRXZlbnQoZSx0KX0pfW9ubWVzc2FnZShlKXt0aGlzLl9wcm90b2NvbC5oYW5kbGVNZXNzYWdlKGUpfV9oYW5kbGVNZXNzYWdlKGUsdCl7aWYoIiRpbml0aWFsaXplIj09PWUpcmV0dXJuIHRoaXMuaW5pdGlhbGl6ZSh0WzBdLHRbMV0sdFsyXSx0WzNdKTtpZighdGhpcy5fcmVxdWVzdEhhbmRsZXJ8fCJmdW5jdGlvbiIhPXR5cGVvZiB0aGlzLl9yZXF1ZXN0SGFuZGxlcltlXSlyZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKCJNaXNzaW5nIHJlcXVlc3RIYW5kbGVyIG9yIG1ldGhvZDogIitlKSk7dHJ5e3JldHVybiBQcm9taXNlLnJlc29sdmUodGhpcy5fcmVxdWVzdEhhbmRsZXJbZV0uYXBwbHkodGhpcy5fcmVxdWVzdEhhbmRsZXIsdCkpfWNhdGNoKGUpe3JldHVybiBQcm9taXNlLnJlamVjdChlKX19X2hhbmRsZUV2ZW50KGUsdCl7aWYoIXRoaXMuX3JlcXVlc3RIYW5kbGVyKXRocm93IG5ldyBFcnJvcigiTWlzc2luZyByZXF1ZXN0SGFuZGxlciIpO2lmKFEoZSkpe3ZhciByPXRoaXMuX3JlcXVlc3RIYW5kbGVyW2VdLmNhbGwodGhpcy5fcmVxdWVzdEhhbmRsZXIsdCk7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHIpdGhyb3cgbmV3IEVycm9yKGBNaXNzaW5nIGR5bmFtaWMgZXZlbnQgJHtlfSBvbiByZXF1ZXN0IGhhbmRsZXIuYCk7cmV0dXJuIHJ9aWYoSihlKSl7cj10aGlzLl9yZXF1ZXN0SGFuZGxlcltlXTtpZigiZnVuY3Rpb24iIT10eXBlb2Ygcil0aHJvdyBuZXcgRXJyb3IoYE1pc3NpbmcgZXZlbnQgJHtlfSBvbiByZXF1ZXN0IGhhbmRsZXIuYCk7cmV0dXJuIHJ9dGhyb3cgbmV3IEVycm9yKCJNYWxmb3JtZWQgZXZlbnQgbmFtZSAiK2UpfWluaXRpYWxpemUoZSx0LG4scil7dGhpcy5fcHJvdG9jb2wuc2V0V29ya2VySWQoZSk7Y29uc3QgaT1ZKHIsKGUsdCk9PnRoaXMuX3Byb3RvY29sLnNlbmRNZXNzYWdlKGUsdCksKGUsdCk9PnRoaXMuX3Byb3RvY29sLmxpc3RlbihlLHQpKTtyZXR1cm4gdGhpcy5fcmVxdWVzdEhhbmRsZXJGYWN0b3J5Pyh0aGlzLl9yZXF1ZXN0SGFuZGxlcj10aGlzLl9yZXF1ZXN0SGFuZGxlckZhY3RvcnkoaSksUHJvbWlzZS5yZXNvbHZlKGsodGhpcy5fcmVxdWVzdEhhbmRsZXIpKSk6KHQmJih2b2lkIDAhPT10LmJhc2VVcmwmJmRlbGV0ZSB0LmJhc2VVcmwsdm9pZCAwIT09dC5wYXRocyYmdm9pZCAwIT09dC5wYXRocy52cyYmZGVsZXRlIHQucGF0aHMudnMsdC50cnVzdGVkVHlwZXNQb2xpY3ksZGVsZXRlIHQudHJ1c3RlZFR5cGVzUG9saWN5LHQuY2F0Y2hFcnJvcj0hMCxMLnJlcXVpcmUuY29uZmlnKHQpKSxuZXcgUHJvbWlzZSgodCxyKT0+e2NvbnN0IGU9TC5yZXF1aXJlO2UoW25dLGU9Pnt0aGlzLl9yZXF1ZXN0SGFuZGxlcj1lLmNyZWF0ZShpKSx0aGlzLl9yZXF1ZXN0SGFuZGxlcj90KGsodGhpcy5fcmVxdWVzdEhhbmRsZXIpKTpyKG5ldyBFcnJvcigiTm8gUmVxdWVzdEhhbmRsZXIhIikpfSxyKX0pKX19Y2xhc3MgWHtjb25zdHJ1Y3RvcihlLHQscixuKXt0aGlzLm9yaWdpbmFsU3RhcnQ9ZSx0aGlzLm9yaWdpbmFsTGVuZ3RoPXQsdGhpcy5tb2RpZmllZFN0YXJ0PXIsdGhpcy5tb2RpZmllZExlbmd0aD1ufWdldE9yaWdpbmFsRW5kKCl7cmV0dXJuIHRoaXMub3JpZ2luYWxTdGFydCt0aGlzLm9yaWdpbmFsTGVuZ3RofWdldE1vZGlmaWVkRW5kKCl7cmV0dXJuIHRoaXMubW9kaWZpZWRTdGFydCt0aGlzLm1vZGlmaWVkTGVuZ3RofX1mdW5jdGlvbiBlZShlLHQpe3JldHVybih0PDw1KS10K2V8MH1jbGFzcyB0ZXtjb25zdHJ1Y3RvcihlKXt0aGlzLnNvdXJjZT1lfWdldEVsZW1lbnRzKCl7Y29uc3Qgcj10aGlzLnNvdXJjZSxuPW5ldyBJbnQzMkFycmF5KHIubGVuZ3RoKTtmb3IobGV0IGU9MCx0PXIubGVuZ3RoO2U8dDtlKyspbltlXT1yLmNoYXJDb2RlQXQoZSk7cmV0dXJuIG59fWNsYXNzIHJle3N0YXRpYyBBc3NlcnQoZSx0KXtpZighZSl0aHJvdyBuZXcgRXJyb3IodCl9fWNsYXNzIG5le3N0YXRpYyBDb3B5KHQscixuLGkscyl7Zm9yKGxldCBlPTA7ZTxzO2UrKyluW2krZV09dFtyK2VdfXN0YXRpYyBDb3B5Mih0LHIsbixpLHMpe2ZvcihsZXQgZT0wO2U8cztlKyspbltpK2VdPXRbcitlXX19Y2xhc3MgaWV7Y29uc3RydWN0b3IoKXt0aGlzLm1fY2hhbmdlcz1bXSx0aGlzLm1fb3JpZ2luYWxTdGFydD0xMDczNzQxODI0LHRoaXMubV9tb2RpZmllZFN0YXJ0PTEwNzM3NDE4MjQsdGhpcy5tX29yaWdpbmFsQ291bnQ9MCx0aGlzLm1fbW9kaWZpZWRDb3VudD0wfU1hcmtOZXh0Q2hhbmdlKCl7KDA8dGhpcy5tX29yaWdpbmFsQ291bnR8fDA8dGhpcy5tX21vZGlmaWVkQ291bnQpJiZ0aGlzLm1fY2hhbmdlcy5wdXNoKG5ldyBYKHRoaXMubV9vcmlnaW5hbFN0YXJ0LHRoaXMubV9vcmlnaW5hbENvdW50LHRoaXMubV9tb2RpZmllZFN0YXJ0LHRoaXMubV9tb2RpZmllZENvdW50KSksdGhpcy5tX29yaWdpbmFsQ291bnQ9MCx0aGlzLm1fbW9kaWZpZWRDb3VudD0wLHRoaXMubV9vcmlnaW5hbFN0YXJ0PTEwNzM3NDE4MjQsdGhpcy5tX21vZGlmaWVkU3RhcnQ9MTA3Mzc0MTgyNH1BZGRPcmlnaW5hbEVsZW1lbnQoZSx0KXt0aGlzLm1fb3JpZ2luYWxTdGFydD1NYXRoLm1pbih0aGlzLm1fb3JpZ2luYWxTdGFydCxlKSx0aGlzLm1fbW9kaWZpZWRTdGFydD1NYXRoLm1pbih0aGlzLm1fbW9kaWZpZWRTdGFydCx0KSx0aGlzLm1fb3JpZ2luYWxDb3VudCsrfUFkZE1vZGlmaWVkRWxlbWVudChlLHQpe3RoaXMubV9vcmlnaW5hbFN0YXJ0PU1hdGgubWluKHRoaXMubV9vcmlnaW5hbFN0YXJ0LGUpLHRoaXMubV9tb2RpZmllZFN0YXJ0PU1hdGgubWluKHRoaXMubV9tb2RpZmllZFN0YXJ0LHQpLHRoaXMubV9tb2RpZmllZENvdW50Kyt9Z2V0Q2hhbmdlcygpe3JldHVybigwPHRoaXMubV9vcmlnaW5hbENvdW50fHwwPHRoaXMubV9tb2RpZmllZENvdW50KSYmdGhpcy5NYXJrTmV4dENoYW5nZSgpLHRoaXMubV9jaGFuZ2VzfWdldFJldmVyc2VDaGFuZ2VzKCl7cmV0dXJuKDA8dGhpcy5tX29yaWdpbmFsQ291bnR8fDA8dGhpcy5tX21vZGlmaWVkQ291bnQpJiZ0aGlzLk1hcmtOZXh0Q2hhbmdlKCksdGhpcy5tX2NoYW5nZXMucmV2ZXJzZSgpLHRoaXMubV9jaGFuZ2VzfX1jbGFzcyBzZXtjb25zdHJ1Y3RvcihlLHQscj1udWxsKXt0aGlzLkNvbnRpbnVlUHJvY2Vzc2luZ1ByZWRpY2F0ZT1yLHRoaXMuX29yaWdpbmFsU2VxdWVuY2U9ZSx0aGlzLl9tb2RpZmllZFNlcXVlbmNlPXQ7dmFyW24saSxzXT1zZS5fZ2V0RWxlbWVudHMoZSksW3IsZSx0XT1zZS5fZ2V0RWxlbWVudHModCk7dGhpcy5faGFzU3RyaW5ncz1zJiZ0LHRoaXMuX29yaWdpbmFsU3RyaW5nRWxlbWVudHM9bix0aGlzLl9vcmlnaW5hbEVsZW1lbnRzT3JIYXNoPWksdGhpcy5fbW9kaWZpZWRTdHJpbmdFbGVtZW50cz1yLHRoaXMuX21vZGlmaWVkRWxlbWVudHNPckhhc2g9ZSx0aGlzLm1fZm9yd2FyZEhpc3Rvcnk9W10sdGhpcy5tX3JldmVyc2VIaXN0b3J5PVtdfXN0YXRpYyBfaXNTdHJpbmdBcnJheShlKXtyZXR1cm4gMDxlLmxlbmd0aCYmInN0cmluZyI9PXR5cGVvZiBlWzBdfXN0YXRpYyBfZ2V0RWxlbWVudHMoZSl7dmFyIHI9ZS5nZXRFbGVtZW50cygpO2lmKHNlLl9pc1N0cmluZ0FycmF5KHIpKXtjb25zdCBuPW5ldyBJbnQzMkFycmF5KHIubGVuZ3RoKTtmb3IobGV0IGU9MCx0PXIubGVuZ3RoO2U8dDtlKyspbltlXT1mdW5jdGlvbihyLG4pe249ZWUoMTQ5NDE3LG4pO2ZvcihsZXQgZT0wLHQ9ci5sZW5ndGg7ZTx0O2UrKyluPWVlKHIuY2hhckNvZGVBdChlKSxuKTtyZXR1cm4gbn0ocltlXSwwKTtyZXR1cm5bcixuLCEwXX1yZXR1cm4gciBpbnN0YW5jZW9mIEludDMyQXJyYXk/W1tdLHIsITFdOltbXSxuZXcgSW50MzJBcnJheShyKSwhMV19RWxlbWVudHNBcmVFcXVhbChlLHQpe3JldHVybiB0aGlzLl9vcmlnaW5hbEVsZW1lbnRzT3JIYXNoW2VdPT09dGhpcy5fbW9kaWZpZWRFbGVtZW50c09ySGFzaFt0XSYmKCF0aGlzLl9oYXNTdHJpbmdzfHx0aGlzLl9vcmlnaW5hbFN0cmluZ0VsZW1lbnRzW2VdPT09dGhpcy5fbW9kaWZpZWRTdHJpbmdFbGVtZW50c1t0XSl9RWxlbWVudHNBcmVTdHJpY3RFcXVhbChlLHQpe3JldHVybiEhdGhpcy5FbGVtZW50c0FyZUVxdWFsKGUsdCkmJnNlLl9nZXRTdHJpY3RFbGVtZW50KHRoaXMuX29yaWdpbmFsU2VxdWVuY2UsZSk9PT1zZS5fZ2V0U3RyaWN0RWxlbWVudCh0aGlzLl9tb2RpZmllZFNlcXVlbmNlLHQpfXN0YXRpYyBfZ2V0U3RyaWN0RWxlbWVudChlLHQpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBlLmdldFN0cmljdEVsZW1lbnQ/ZS5nZXRTdHJpY3RFbGVtZW50KHQpOm51bGx9T3JpZ2luYWxFbGVtZW50c0FyZUVxdWFsKGUsdCl7cmV0dXJuIHRoaXMuX29yaWdpbmFsRWxlbWVudHNPckhhc2hbZV09PT10aGlzLl9vcmlnaW5hbEVsZW1lbnRzT3JIYXNoW3RdJiYoIXRoaXMuX2hhc1N0cmluZ3N8fHRoaXMuX29yaWdpbmFsU3RyaW5nRWxlbWVudHNbZV09PT10aGlzLl9vcmlnaW5hbFN0cmluZ0VsZW1lbnRzW3RdKX1Nb2RpZmllZEVsZW1lbnRzQXJlRXF1YWwoZSx0KXtyZXR1cm4gdGhpcy5fbW9kaWZpZWRFbGVtZW50c09ySGFzaFtlXT09PXRoaXMuX21vZGlmaWVkRWxlbWVudHNPckhhc2hbdF0mJighdGhpcy5faGFzU3RyaW5nc3x8dGhpcy5fbW9kaWZpZWRTdHJpbmdFbGVtZW50c1tlXT09PXRoaXMuX21vZGlmaWVkU3RyaW5nRWxlbWVudHNbdF0pfUNvbXB1dGVEaWZmKGUpe3JldHVybiB0aGlzLl9Db21wdXRlRGlmZigwLHRoaXMuX29yaWdpbmFsRWxlbWVudHNPckhhc2gubGVuZ3RoLTEsMCx0aGlzLl9tb2RpZmllZEVsZW1lbnRzT3JIYXNoLmxlbmd0aC0xLGUpfV9Db21wdXRlRGlmZihlLHQscixuLGkpe3ZhciBzPVshMV07bGV0IG89dGhpcy5Db21wdXRlRGlmZlJlY3Vyc2l2ZShlLHQscixuLHMpO3JldHVybiBpJiYobz10aGlzLlByZXR0aWZ5Q2hhbmdlcyhvKSkse3F1aXRFYXJseTpzWzBdLGNoYW5nZXM6b319Q29tcHV0ZURpZmZSZWN1cnNpdmUodCxyLG4saSxzKXtmb3Ioc1swXT0hMTt0PD1yJiZuPD1pJiZ0aGlzLkVsZW1lbnRzQXJlRXF1YWwodCxuKTspdCsrLG4rKztmb3IoO3Q8PXImJm48PWkmJnRoaXMuRWxlbWVudHNBcmVFcXVhbChyLGkpOylyLS0saS0tO2lmKHI8dHx8aTxuKXtsZXQgZTtyZXR1cm4gZT1uPD1pPyhyZS5Bc3NlcnQodD09PXIrMSwib3JpZ2luYWxTdGFydCBzaG91bGQgb25seSBiZSBvbmUgbW9yZSB0aGFuIG9yaWdpbmFsRW5kIiksW25ldyBYKHQsMCxuLGktbisxKV0pOnQ8PXI/KHJlLkFzc2VydChuPT09aSsxLCJtb2RpZmllZFN0YXJ0IHNob3VsZCBvbmx5IGJlIG9uZSBtb3JlIHRoYW4gbW9kaWZpZWRFbmQiKSxbbmV3IFgodCxyLXQrMSxuLDApXSk6KHJlLkFzc2VydCh0PT09cisxLCJvcmlnaW5hbFN0YXJ0IHNob3VsZCBvbmx5IGJlIG9uZSBtb3JlIHRoYW4gb3JpZ2luYWxFbmQiKSxyZS5Bc3NlcnQobj09PWkrMSwibW9kaWZpZWRTdGFydCBzaG91bGQgb25seSBiZSBvbmUgbW9yZSB0aGFuIG1vZGlmaWVkRW5kIiksW10pLGV9dmFyIG89WzBdLGE9WzBdLGw9dGhpcy5Db21wdXRlUmVjdXJzaW9uUG9pbnQodCxyLG4saSxvLGEscyksbz1vWzBdLGE9YVswXTtpZihudWxsIT09bClyZXR1cm4gbDtpZihzWzBdKXJldHVybltuZXcgWCh0LHItdCsxLG4saS1uKzEpXTt7bD10aGlzLkNvbXB1dGVEaWZmUmVjdXJzaXZlKHQsbyxuLGEscyk7bGV0IGU9W107cmV0dXJuIGU9c1swXT9bbmV3IFgobysxLHItKG8rMSkrMSxhKzEsaS0oYSsxKSsxKV06dGhpcy5Db21wdXRlRGlmZlJlY3Vyc2l2ZShvKzEscixhKzEsaSxzKSx0aGlzLkNvbmNhdGVuYXRlQ2hhbmdlcyhsLGUpfX1XQUxLVFJBQ0UoZSx0LHIsbixpLHMsbyxhLGwsdSxoLGQsYyxtLGYsZyxfLHApe2xldCBDPW51bGwsYj1uZXcgaWUsdj10LEw9cix3PWNbMF0tZ1swXS1uLE49LTEwNzM3NDE4MjQsUz10aGlzLm1fZm9yd2FyZEhpc3RvcnkubGVuZ3RoLTE7ZG97dmFyIHk9dytlO3c9eT09PXZ8fHk8TCYmbFt5LTFdPGxbeSsxXT8obT0oaD1sW3krMV0pLXctbixoPE4mJmIuTWFya05leHRDaGFuZ2UoKSxOPWgsYi5BZGRNb2RpZmllZEVsZW1lbnQoaCsxLG0pLHkrMS1lKToobT0oaD1sW3ktMV0rMSktdy1uLGg8TiYmYi5NYXJrTmV4dENoYW5nZSgpLE49aC0xLGIuQWRkT3JpZ2luYWxFbGVtZW50KGgsbSsxKSx5LTEtZSksMDw9UyYmKGU9KGw9dGhpcy5tX2ZvcndhcmRIaXN0b3J5W1NdKVswXSx2PTEsTD1sLmxlbmd0aC0xKX13aGlsZSgtMTw9LS1TKTtpZihyPWIuZ2V0UmV2ZXJzZUNoYW5nZXMoKSxwWzBdKXtsZXQgZT1jWzBdKzEsdD1nWzBdKzE7aWYobnVsbCE9PXImJjA8ci5sZW5ndGgpe2NvbnN0IEE9cltyLmxlbmd0aC0xXTtlPU1hdGgubWF4KGUsQS5nZXRPcmlnaW5hbEVuZCgpKSx0PU1hdGgubWF4KHQsQS5nZXRNb2RpZmllZEVuZCgpKX1DPVtuZXcgWChlLGQtZSsxLHQsZi10KzEpXX1lbHNle2I9bmV3IGllLHY9cyxMPW8sdz1jWzBdLWdbMF0tYSxOPTEwNzM3NDE4MjQsUz1fP3RoaXMubV9yZXZlcnNlSGlzdG9yeS5sZW5ndGgtMTp0aGlzLm1fcmV2ZXJzZUhpc3RvcnkubGVuZ3RoLTI7ZG97dmFyIEU9dytpO3c9RT09PXZ8fEU8TCYmdVtFLTFdPj11W0UrMV0/KG09KGg9dVtFKzFdLTEpLXctYSxoPk4mJmIuTWFya05leHRDaGFuZ2UoKSxOPWgrMSxiLkFkZE9yaWdpbmFsRWxlbWVudChoKzEsbSsxKSxFKzEtaSk6KG09KGg9dVtFLTFdKS13LWEsaD5OJiZiLk1hcmtOZXh0Q2hhbmdlKCksTj1oLGIuQWRkTW9kaWZpZWRFbGVtZW50KGgrMSxtKzEpLEUtMS1pKSwwPD1TJiYoaT0odT10aGlzLm1fcmV2ZXJzZUhpc3RvcnlbU10pWzBdLHY9MSxMPXUubGVuZ3RoLTEpfXdoaWxlKC0xPD0tLVMpO0M9Yi5nZXRDaGFuZ2VzKCl9cmV0dXJuIHRoaXMuQ29uY2F0ZW5hdGVDaGFuZ2VzKHIsQyl9Q29tcHV0ZVJlY3Vyc2lvblBvaW50KGkscyxvLGEsbCx1LGgpe2xldCBkPTAsYz0wLG09MCxmPTAsZz0wLF89MDtpLS0sby0tLHVbbFswXT0wXT0wLHRoaXMubV9mb3J3YXJkSGlzdG9yeT1bXSx0aGlzLm1fcmV2ZXJzZUhpc3Rvcnk9W107dmFyIGU9cy1pKyhhLW8pLHA9MStlO2NvbnN0IEM9bmV3IEludDMyQXJyYXkocCksYj1uZXcgSW50MzJBcnJheShwKTt2YXIgdj1hLW8sTD1zLWksdz1pLW8sTj1zLWEsUz0oTC12KSUyPT0wO0Nbdl09aSxiW0xdPXMsaFswXT0hMTtmb3IobGV0IG49MTtuPD1lLzIrMTtuKyspe2xldCB0PTAscj0wO209dGhpcy5DbGlwRGlhZ29uYWxCb3VuZCh2LW4sbix2LHApLGY9dGhpcy5DbGlwRGlhZ29uYWxCb3VuZCh2K24sbix2LHApO2ZvcihsZXQgZT1tO2U8PWY7ZSs9Mil7ZD1lPT09bXx8ZTxmJiZDW2UtMV08Q1tlKzFdP0NbZSsxXTpDW2UtMV0rMSxjPWQtKGUtdiktdztmb3IodmFyIHk9ZDtkPHMmJmM8YSYmdGhpcy5FbGVtZW50c0FyZUVxdWFsKGQrMSxjKzEpOylkKyssYysrO2lmKENbZV09ZCxkK2M+dCtyJiYodD1kLHI9YyksIVMmJk1hdGguYWJzKGUtTCk8PW4tMSYmZD49YltlXSlyZXR1cm4gbFswXT1kLHVbMF09Yyx5PD1iW2VdJiZuPD0xNDQ4P3RoaXMuV0FMS1RSQUNFKHYsbSxmLHcsTCxnLF8sTixDLGIsZCxzLGwsYyxhLHUsUyxoKTpudWxsfXZhciBFPSh0LWkrKHItbyktbikvMjtpZihudWxsIT09dGhpcy5Db250aW51ZVByb2Nlc3NpbmdQcmVkaWNhdGUmJiF0aGlzLkNvbnRpbnVlUHJvY2Vzc2luZ1ByZWRpY2F0ZSh0LEUpKXJldHVybiBoWzBdPSEwLGxbMF09dCx1WzBdPXIsMDxFJiZuPD0xNDQ4P3RoaXMuV0FMS1RSQUNFKHYsbSxmLHcsTCxnLF8sTixDLGIsZCxzLGwsYyxhLHUsUyxoKTooaSsrLG8rKyxbbmV3IFgoaSxzLWkrMSxvLGEtbysxKV0pO2c9dGhpcy5DbGlwRGlhZ29uYWxCb3VuZChMLW4sbixMLHApLF89dGhpcy5DbGlwRGlhZ29uYWxCb3VuZChMK24sbixMLHApO2ZvcihsZXQgZT1nO2U8PV87ZSs9Mil7ZD1lPT09Z3x8ZTxfJiZiW2UtMV0+PWJbZSsxXT9iW2UrMV0tMTpiW2UtMV0sYz1kLShlLUwpLU47Zm9yKHZhciBBPWQ7ZD5pJiZjPm8mJnRoaXMuRWxlbWVudHNBcmVFcXVhbChkLGMpOylkLS0sYy0tO2lmKGJbZV09ZCxTJiZNYXRoLmFicyhlLXYpPD1uJiZkPD1DW2VdKXJldHVybiBsWzBdPWQsdVswXT1jLEE+PUNbZV0mJm48PTE0NDg/dGhpcy5XQUxLVFJBQ0UodixtLGYsdyxMLGcsXyxOLEMsYixkLHMsbCxjLGEsdSxTLGgpOm51bGx9aWYobjw9MTQ0Nyl7bGV0IGU9bmV3IEludDMyQXJyYXkoZi1tKzIpO2VbMF09di1tKzEsbmUuQ29weTIoQyxtLGUsMSxmLW0rMSksdGhpcy5tX2ZvcndhcmRIaXN0b3J5LnB1c2goZSksZT1uZXcgSW50MzJBcnJheShfLWcrMiksZVswXT1MLWcrMSxuZS5Db3B5MihiLGcsZSwxLF8tZysxKSx0aGlzLm1fcmV2ZXJzZUhpc3RvcnkucHVzaChlKX19cmV0dXJuIHRoaXMuV0FMS1RSQUNFKHYsbSxmLHcsTCxnLF8sTixDLGIsZCxzLGwsYyxhLHUsUyxoKX1QcmV0dGlmeUNoYW5nZXMocyl7Zm9yKGxldCBlPTA7ZTxzLmxlbmd0aDtlKyspe2NvbnN0IHY9c1tlXTtmb3IodmFyIHQ9ZTxzLmxlbmd0aC0xP3NbZSsxXS5vcmlnaW5hbFN0YXJ0OnRoaXMuX29yaWdpbmFsRWxlbWVudHNPckhhc2gubGVuZ3RoLHI9ZTxzLmxlbmd0aC0xP3NbZSsxXS5tb2RpZmllZFN0YXJ0OnRoaXMuX21vZGlmaWVkRWxlbWVudHNPckhhc2gubGVuZ3RoLG49MDx2Lm9yaWdpbmFsTGVuZ3RoLGk9MDx2Lm1vZGlmaWVkTGVuZ3RoO3Yub3JpZ2luYWxTdGFydCt2Lm9yaWdpbmFsTGVuZ3RoPHQmJnYubW9kaWZpZWRTdGFydCt2Lm1vZGlmaWVkTGVuZ3RoPHImJighbnx8dGhpcy5PcmlnaW5hbEVsZW1lbnRzQXJlRXF1YWwodi5vcmlnaW5hbFN0YXJ0LHYub3JpZ2luYWxTdGFydCt2Lm9yaWdpbmFsTGVuZ3RoKSkmJighaXx8dGhpcy5Nb2RpZmllZEVsZW1lbnRzQXJlRXF1YWwodi5tb2RpZmllZFN0YXJ0LHYubW9kaWZpZWRTdGFydCt2Lm1vZGlmaWVkTGVuZ3RoKSk7KXt2YXIgbz10aGlzLkVsZW1lbnRzQXJlU3RyaWN0RXF1YWwodi5vcmlnaW5hbFN0YXJ0LHYubW9kaWZpZWRTdGFydCk7aWYodGhpcy5FbGVtZW50c0FyZVN0cmljdEVxdWFsKHYub3JpZ2luYWxTdGFydCt2Lm9yaWdpbmFsTGVuZ3RoLHYubW9kaWZpZWRTdGFydCt2Lm1vZGlmaWVkTGVuZ3RoKSYmIW8pYnJlYWs7di5vcmlnaW5hbFN0YXJ0Kyssdi5tb2RpZmllZFN0YXJ0Kyt9dmFyIGE9W251bGxdO2U8cy5sZW5ndGgtMSYmdGhpcy5DaGFuZ2VzT3ZlcmxhcChzW2VdLHNbZSsxXSxhKSYmKHNbZV09YVswXSxzLnNwbGljZShlKzEsMSksZS0tKX1mb3IobGV0IGU9cy5sZW5ndGgtMTswPD1lO2UtLSl7Y29uc3QgTD1zW2VdO2xldCB0PTAscj0wOzA8ZSYmKGM9c1tlLTFdLHQ9Yy5vcmlnaW5hbFN0YXJ0K2Mub3JpZ2luYWxMZW5ndGgscj1jLm1vZGlmaWVkU3RhcnQrYy5tb2RpZmllZExlbmd0aCk7dmFyIGw9MDxMLm9yaWdpbmFsTGVuZ3RoLHU9MDxMLm1vZGlmaWVkTGVuZ3RoO2xldCBuPTAsaT10aGlzLl9ib3VuZGFyeVNjb3JlKEwub3JpZ2luYWxTdGFydCxMLm9yaWdpbmFsTGVuZ3RoLEwubW9kaWZpZWRTdGFydCxMLm1vZGlmaWVkTGVuZ3RoKTtmb3IobGV0IGU9MTs7ZSsrKXt2YXIgaD1MLm9yaWdpbmFsU3RhcnQtZSxkPUwubW9kaWZpZWRTdGFydC1lO2lmKGg8dHx8ZDxyKWJyZWFrO2lmKGwmJiF0aGlzLk9yaWdpbmFsRWxlbWVudHNBcmVFcXVhbChoLGgrTC5vcmlnaW5hbExlbmd0aCkpYnJlYWs7aWYodSYmIXRoaXMuTW9kaWZpZWRFbGVtZW50c0FyZUVxdWFsKGQsZCtMLm1vZGlmaWVkTGVuZ3RoKSlicmVhaztkPShoPT09dCYmZD09PXI/NTowKSt0aGlzLl9ib3VuZGFyeVNjb3JlKGgsTC5vcmlnaW5hbExlbmd0aCxkLEwubW9kaWZpZWRMZW5ndGgpO2Q+aSYmKGk9ZCxuPWUpfUwub3JpZ2luYWxTdGFydC09bixMLm1vZGlmaWVkU3RhcnQtPW47dmFyIGM9W251bGxdOzA8ZSYmdGhpcy5DaGFuZ2VzT3ZlcmxhcChzW2UtMV0sc1tlXSxjKSYmKHNbZS0xXT1jWzBdLHMuc3BsaWNlKGUsMSksZSsrKX1pZih0aGlzLl9oYXNTdHJpbmdzKWZvcihsZXQgZT0xLHQ9cy5sZW5ndGg7ZTx0O2UrKyl7Y29uc3Qgdz1zW2UtMV0sTj1zW2VdO3ZhciBtPU4ub3JpZ2luYWxTdGFydC13Lm9yaWdpbmFsU3RhcnQtdy5vcmlnaW5hbExlbmd0aCxmPXcub3JpZ2luYWxTdGFydCxnPU4ub3JpZ2luYWxTdGFydCtOLm9yaWdpbmFsTGVuZ3RoLF89Zy1mLHA9dy5tb2RpZmllZFN0YXJ0LEM9Ti5tb2RpZmllZFN0YXJ0K04ubW9kaWZpZWRMZW5ndGgsYj1DLXA7bTw1JiZfPDIwJiZiPDIwJiYoKHA9dGhpcy5fZmluZEJldHRlckNvbnRpZ3VvdXNTZXF1ZW5jZShmLF8scCxiLG0pKSYmKFtiLHBdPXAsYj09PXcub3JpZ2luYWxTdGFydCt3Lm9yaWdpbmFsTGVuZ3RoJiZwPT09dy5tb2RpZmllZFN0YXJ0K3cubW9kaWZpZWRMZW5ndGh8fCh3Lm9yaWdpbmFsTGVuZ3RoPWItdy5vcmlnaW5hbFN0YXJ0LHcubW9kaWZpZWRMZW5ndGg9cC13Lm1vZGlmaWVkU3RhcnQsTi5vcmlnaW5hbFN0YXJ0PWIrbSxOLm1vZGlmaWVkU3RhcnQ9cCttLE4ub3JpZ2luYWxMZW5ndGg9Zy1OLm9yaWdpbmFsU3RhcnQsTi5tb2RpZmllZExlbmd0aD1DLU4ubW9kaWZpZWRTdGFydCkpKX1yZXR1cm4gc31fZmluZEJldHRlckNvbnRpZ3VvdXNTZXF1ZW5jZShlLHQscixuLGkpe2lmKHQ8aXx8bjxpKXJldHVybiBudWxsO3ZhciBzPWUrdC1pKzEsbz1yK24taSsxO2xldCBhPTAsbD0wLHU9MDtmb3IobGV0IHQ9ZTt0PHM7dCsrKWZvcihsZXQgZT1yO2U8bztlKyspe3ZhciBoPXRoaXMuX2NvbnRpZ3VvdXNTZXF1ZW5jZVNjb3JlKHQsZSxpKTswPGgmJmg+YSYmKGE9aCxsPXQsdT1lKX1yZXR1cm4gMDxhP1tsLHVdOm51bGx9X2NvbnRpZ3VvdXNTZXF1ZW5jZVNjb3JlKHQscixuKXtsZXQgaT0wO2ZvcihsZXQgZT0wO2U8bjtlKyspe2lmKCF0aGlzLkVsZW1lbnRzQXJlRXF1YWwodCtlLHIrZSkpcmV0dXJuIDA7aSs9dGhpcy5fb3JpZ2luYWxTdHJpbmdFbGVtZW50c1t0K2VdLmxlbmd0aH1yZXR1cm4gaX1fT3JpZ2luYWxJc0JvdW5kYXJ5KGUpe3JldHVybiBlPD0wfHxlPj10aGlzLl9vcmlnaW5hbEVsZW1lbnRzT3JIYXNoLmxlbmd0aC0xfHx0aGlzLl9oYXNTdHJpbmdzJiYvXlxzKiQvLnRlc3QodGhpcy5fb3JpZ2luYWxTdHJpbmdFbGVtZW50c1tlXSl9X09yaWdpbmFsUmVnaW9uSXNCb3VuZGFyeShlLHQpe2lmKHRoaXMuX09yaWdpbmFsSXNCb3VuZGFyeShlKXx8dGhpcy5fT3JpZ2luYWxJc0JvdW5kYXJ5KGUtMSkpcmV0dXJuITA7aWYoMDx0KXt0PWUrdDtpZih0aGlzLl9PcmlnaW5hbElzQm91bmRhcnkodC0xKXx8dGhpcy5fT3JpZ2luYWxJc0JvdW5kYXJ5KHQpKXJldHVybiEwfXJldHVybiExfV9Nb2RpZmllZElzQm91bmRhcnkoZSl7cmV0dXJuIGU8PTB8fGU+PXRoaXMuX21vZGlmaWVkRWxlbWVudHNPckhhc2gubGVuZ3RoLTF8fHRoaXMuX2hhc1N0cmluZ3MmJi9eXHMqJC8udGVzdCh0aGlzLl9tb2RpZmllZFN0cmluZ0VsZW1lbnRzW2VdKX1fTW9kaWZpZWRSZWdpb25Jc0JvdW5kYXJ5KGUsdCl7aWYodGhpcy5fTW9kaWZpZWRJc0JvdW5kYXJ5KGUpfHx0aGlzLl9Nb2RpZmllZElzQm91bmRhcnkoZS0xKSlyZXR1cm4hMDtpZigwPHQpe3Q9ZSt0O2lmKHRoaXMuX01vZGlmaWVkSXNCb3VuZGFyeSh0LTEpfHx0aGlzLl9Nb2RpZmllZElzQm91bmRhcnkodCkpcmV0dXJuITB9cmV0dXJuITF9X2JvdW5kYXJ5U2NvcmUoZSx0LHIsbil7cmV0dXJuKHRoaXMuX09yaWdpbmFsUmVnaW9uSXNCb3VuZGFyeShlLHQpPzE6MCkrKHRoaXMuX01vZGlmaWVkUmVnaW9uSXNCb3VuZGFyeShyLG4pPzE6MCl9Q29uY2F0ZW5hdGVDaGFuZ2VzKGUsdCl7dmFyIHI9W107aWYoMD09PWUubGVuZ3RofHwwPT09dC5sZW5ndGgpcmV0dXJuIDA8dC5sZW5ndGg/dDplO2lmKHRoaXMuQ2hhbmdlc092ZXJsYXAoZVtlLmxlbmd0aC0xXSx0WzBdLHIpKXtjb25zdCBuPW5ldyBBcnJheShlLmxlbmd0aCt0Lmxlbmd0aC0xKTtyZXR1cm4gbmUuQ29weShlLDAsbiwwLGUubGVuZ3RoLTEpLG5bZS5sZW5ndGgtMV09clswXSxuZS5Db3B5KHQsMSxuLGUubGVuZ3RoLHQubGVuZ3RoLTEpLG59cj1uZXcgQXJyYXkoZS5sZW5ndGgrdC5sZW5ndGgpO3JldHVybiBuZS5Db3B5KGUsMCxyLDAsZS5sZW5ndGgpLG5lLkNvcHkodCwwLHIsZS5sZW5ndGgsdC5sZW5ndGgpLHJ9Q2hhbmdlc092ZXJsYXAocixuLGkpe2lmKHJlLkFzc2VydChyLm9yaWdpbmFsU3RhcnQ8PW4ub3JpZ2luYWxTdGFydCwiTGVmdCBjaGFuZ2UgaXMgbm90IGxlc3MgdGhhbiBvciBlcXVhbCB0byByaWdodCBjaGFuZ2UiKSxyZS5Bc3NlcnQoci5tb2RpZmllZFN0YXJ0PD1uLm1vZGlmaWVkU3RhcnQsIkxlZnQgY2hhbmdlIGlzIG5vdCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gcmlnaHQgY2hhbmdlIiksci5vcmlnaW5hbFN0YXJ0K3Iub3JpZ2luYWxMZW5ndGg+PW4ub3JpZ2luYWxTdGFydHx8ci5tb2RpZmllZFN0YXJ0K3IubW9kaWZpZWRMZW5ndGg+PW4ubW9kaWZpZWRTdGFydCl7dmFyIHM9ci5vcmlnaW5hbFN0YXJ0O2xldCBlPXIub3JpZ2luYWxMZW5ndGg7dmFyIG89ci5tb2RpZmllZFN0YXJ0O2xldCB0PXIubW9kaWZpZWRMZW5ndGg7cmV0dXJuIHIub3JpZ2luYWxTdGFydCtyLm9yaWdpbmFsTGVuZ3RoPj1uLm9yaWdpbmFsU3RhcnQmJihlPW4ub3JpZ2luYWxTdGFydCtuLm9yaWdpbmFsTGVuZ3RoLXIub3JpZ2luYWxTdGFydCksci5tb2RpZmllZFN0YXJ0K3IubW9kaWZpZWRMZW5ndGg+PW4ubW9kaWZpZWRTdGFydCYmKHQ9bi5tb2RpZmllZFN0YXJ0K24ubW9kaWZpZWRMZW5ndGgtci5tb2RpZmllZFN0YXJ0KSxpWzBdPW5ldyBYKHMsZSxvLHQpLCEwfXJldHVybiBpWzBdPW51bGwsITF9Q2xpcERpYWdvbmFsQm91bmQoZSx0LHIsbil7aWYoMDw9ZSYmZTxuKXJldHVybiBlO3Q9dCUyPT0wO3JldHVybiBlPDA/dD09KHIlMj09MCk/MDoxOnQ9PSgobi1yLTEpJTI9PTApP24tMTpuLTJ9fWxldCBvZTtpZih2b2lkIDAhPT1MLnZzY29kZSYmdm9pZCAwIT09TC52c2NvZGUucHJvY2Vzcyl7Y29uc3QgbzE9TC52c2NvZGUucHJvY2VzcztvZT17Z2V0IHBsYXRmb3JtKCl7cmV0dXJuIG8xLnBsYXRmb3JtfSxnZXQgYXJjaCgpe3JldHVybiBvMS5hcmNofSxnZXQgZW52KCl7cmV0dXJuIG8xLmVudn0sY3dkKCl7cmV0dXJuIG8xLmN3ZCgpfX19ZWxzZSBvZT0idW5kZWZpbmVkIiE9dHlwZW9mIHByb2Nlc3M/e2dldCBwbGF0Zm9ybSgpe3JldHVybiBwcm9jZXNzLnBsYXRmb3JtfSxnZXQgYXJjaCgpe3JldHVybiBwcm9jZXNzLmFyY2h9LGdldCBlbnYoKXtyZXR1cm4gcHJvY2Vzcy5lbnZ9LGN3ZCgpe3JldHVybiBwcm9jZXNzLmVudi5WU0NPREVfQ1dEfHxwcm9jZXNzLmN3ZCgpfX06e2dldCBwbGF0Zm9ybSgpe3JldHVybiBFPyJ3aW4zMiI6QT8iZGFyd2luIjoibGludXgifSxnZXQgYXJjaCgpe30sZ2V0IGVudigpe3JldHVybnt9fSxjd2QoKXtyZXR1cm4iLyJ9fTtjb25zdCBhZT1vZS5jd2QsbGU9b2UuZW52O3ZhciB1ZSxoZSxkZSxjZSxtZSxmZSxnZSxfZSxwZSxDZSxTPW9lLnBsYXRmb3JtO2NsYXNzIGJlIGV4dGVuZHMgRXJyb3J7Y29uc3RydWN0b3IoZSx0LHIpe2xldCBuOyJzdHJpbmciPT10eXBlb2YgdCYmMD09PXQuaW5kZXhPZigibm90ICIpPyhuPSJtdXN0IG5vdCBiZSIsdD10LnJlcGxhY2UoL15ub3QgLywiIikpOm49Im11c3QgYmUiO3ZhciBpPS0xIT09ZS5pbmRleE9mKCIuIik/InByb3BlcnR5IjoiYXJndW1lbnQiLHQ9YFRoZSAiJHtlfSIgJHtpfSAke259IG9mIHR5cGUgYCt0O3N1cGVyKHQrPSIuIFJlY2VpdmVkIHR5cGUgIit0eXBlb2YgciksdGhpcy5jb2RlPSJFUlJfSU5WQUxJRF9BUkdfVFlQRSJ9fWZ1bmN0aW9uIHZlKGUsdCl7aWYoInN0cmluZyIhPXR5cGVvZiBlKXRocm93IG5ldyBiZSh0LCJzdHJpbmciLGUpfWZ1bmN0aW9uIExlKGUpe3JldHVybiA0Nz09PWV8fDkyPT09ZX1mdW5jdGlvbiB3ZShlKXtyZXR1cm4gNDc9PT1lfWZ1bmN0aW9uIE5lKGUpe3JldHVybiA2NTw9ZSYmZTw9OTB8fDk3PD1lJiZlPD0xMjJ9ZnVuY3Rpb24gU2UodCxyLG4saSl7bGV0IHM9IiIsbz0wLGE9LTEsbD0wLHU9MDtmb3IobGV0IGU9MDtlPD10Lmxlbmd0aDsrK2Upe2lmKGU8dC5sZW5ndGgpdT10LmNoYXJDb2RlQXQoZSk7ZWxzZXtpZihpKHUpKWJyZWFrO3U9NDd9aWYoaSh1KSl7aWYoYSE9PWUtMSYmMSE9PWwpaWYoMj09PWwpe2lmKHMubGVuZ3RoPDJ8fDIhPT1vfHw0NiE9PXMuY2hhckNvZGVBdChzLmxlbmd0aC0xKXx8NDYhPT1zLmNoYXJDb2RlQXQocy5sZW5ndGgtMikpe2lmKDI8cy5sZW5ndGgpe3ZhciBoPXMubGFzdEluZGV4T2Yobik7bz0tMT09PWg/KHM9IiIsMCk6KHM9cy5zbGljZSgwLGgpLHMubGVuZ3RoLTEtcy5sYXN0SW5kZXhPZihuKSksYT1lLGw9MDtjb250aW51ZX1pZigwIT09cy5sZW5ndGgpe3M9IiIsbz0wLGE9ZSxsPTA7Y29udGludWV9fXImJihzKz0wPHMubGVuZ3RoP24rIi4uIjoiLi4iLG89Mil9ZWxzZSAwPHMubGVuZ3RoP3MrPSIiK24rdC5zbGljZShhKzEsZSk6cz10LnNsaWNlKGErMSxlKSxvPWUtYS0xO2E9ZSxsPTB9ZWxzZSA0Nj09PXUmJi0xIT09bD8rK2w6bD0tMX1yZXR1cm4gc31mdW5jdGlvbiB5ZShlLHQpe2lmKG51bGw9PT10fHwib2JqZWN0IiE9dHlwZW9mIHQpdGhyb3cgbmV3IGJlKCJwYXRoT2JqZWN0IiwiT2JqZWN0Iix0KTt2YXIgcj10LmRpcnx8dC5yb290LG49dC5iYXNlfHwiIisodC5uYW1lfHwiIikrKHQuZXh0fHwiIik7cmV0dXJuIHI/cj09PXQucm9vdD8iIityK246IiIrcitlK246bn1jb25zdCBFZT17cmVzb2x2ZSguLi5zKXtsZXQgbz0iIixhPSIiLGw9ITE7Zm9yKGxldCB0PXMubGVuZ3RoLTE7LTE8PXQ7dC0tKXtsZXQgcjtpZigwPD10KXtpZihyPXNbdF0sdmUociwicGF0aCIpLDA9PT1yLmxlbmd0aCljb250aW51ZX1lbHNlIDA9PT1vLmxlbmd0aD9yPWFlKCk6KHI9bGVbIj0iK29dfHxhZSgpLCh2b2lkIDA9PT1yfHxyLnNsaWNlKDAsMikudG9Mb3dlckNhc2UoKSE9PW8udG9Mb3dlckNhc2UoKSYmOTI9PT1yLmNoYXJDb2RlQXQoMikpJiYocj1vKyJcXCIpKTt2YXIgdT1yLmxlbmd0aDtsZXQgbj0wLGk9IiIsZT0hMTt2YXIgaD1yLmNoYXJDb2RlQXQoMCk7aWYoMT09PXUpTGUoaCkmJihuPTEsZT0hMCk7ZWxzZSBpZihMZShoKSlpZihlPSEwLExlKHIuY2hhckNvZGVBdCgxKSkpe2xldCBlPTIsdD1lO2Zvcig7ZTx1JiYhTGUoci5jaGFyQ29kZUF0KGUpKTspZSsrO2lmKGU8dSYmZSE9PXQpe3ZhciBkPXIuc2xpY2UodCxlKTtmb3IodD1lO2U8dSYmTGUoci5jaGFyQ29kZUF0KGUpKTspZSsrO2lmKGU8dSYmZSE9PXQpe2Zvcih0PWU7ZTx1JiYhTGUoci5jaGFyQ29kZUF0KGUpKTspZSsrO2UhPT11JiZlPT09dHx8KGk9YFxcXFwke2R9XFxgK3Iuc2xpY2UodCxlKSxuPWUpfX19ZWxzZSBuPTE7ZWxzZSBOZShoKSYmNTg9PT1yLmNoYXJDb2RlQXQoMSkmJihpPXIuc2xpY2UoMCwyKSwobj0yKTx1JiZMZShyLmNoYXJDb2RlQXQoMikpJiYoZT0hMCxuPTMpKTtpZigwPGkubGVuZ3RoKWlmKDA8by5sZW5ndGgpe2lmKGkudG9Mb3dlckNhc2UoKSE9PW8udG9Mb3dlckNhc2UoKSljb250aW51ZX1lbHNlIG89aTtpZihsKXtpZigwPG8ubGVuZ3RoKWJyZWFrfWVsc2UgaWYoYT1yLnNsaWNlKG4pKyJcXCIrYSxsPWUsZSYmMDxvLmxlbmd0aClicmVha31yZXR1cm4gYT1TZShhLCFsLCJcXCIsTGUpLGw/bysiXFwiK2E6IiIrbythfHwiLiJ9LG5vcm1hbGl6ZShyKXt2ZShyLCJwYXRoIik7dmFyIG49ci5sZW5ndGg7aWYoMD09PW4pcmV0dXJuIi4iO2xldCBpPTAscyxlPSExO3ZhciB0PXIuY2hhckNvZGVBdCgwKTtpZigxPT09bilyZXR1cm4gd2UodCk/IlxcIjpyO2lmKExlKHQpKWlmKGU9ITAsTGUoci5jaGFyQ29kZUF0KDEpKSl7bGV0IGU9Mix0PWU7Zm9yKDtlPG4mJiFMZShyLmNoYXJDb2RlQXQoZSkpOyllKys7aWYoZTxuJiZlIT09dCl7dmFyIG89ci5zbGljZSh0LGUpO2Zvcih0PWU7ZTxuJiZMZShyLmNoYXJDb2RlQXQoZSkpOyllKys7aWYoZTxuJiZlIT09dCl7Zm9yKHQ9ZTtlPG4mJiFMZShyLmNoYXJDb2RlQXQoZSkpOyllKys7aWYoZT09PW4pcmV0dXJuYFxcXFwke299XFwke3Iuc2xpY2UodCl9XFxgO2UhPT10JiYocz1gXFxcXCR7b31cXGArci5zbGljZSh0LGUpLGk9ZSl9fX1lbHNlIGk9MTtlbHNlIE5lKHQpJiY1OD09PXIuY2hhckNvZGVBdCgxKSYmKHM9ci5zbGljZSgwLDIpLChpPTIpPG4mJkxlKHIuY2hhckNvZGVBdCgyKSkmJihlPSEwLGk9MykpO2xldCBhPWk8bj9TZShyLnNsaWNlKGkpLCFlLCJcXCIsTGUpOiIiO3JldHVybiAwIT09YS5sZW5ndGh8fGV8fChhPSIuIiksMDxhLmxlbmd0aCYmTGUoci5jaGFyQ29kZUF0KG4tMSkpJiYoYSs9IlxcIiksdm9pZCAwPT09cz9lPyJcXCIrYTphOmU/cysiXFwiK2E6IiIrcythfSxpc0Fic29sdXRlKGUpe3ZlKGUsInBhdGgiKTt2YXIgdD1lLmxlbmd0aDtpZigwPT09dClyZXR1cm4hMTt2YXIgcj1lLmNoYXJDb2RlQXQoMCk7cmV0dXJuIExlKHIpfHwyPHQmJk5lKHIpJiY1OD09PWUuY2hhckNvZGVBdCgxKSYmTGUoZS5jaGFyQ29kZUF0KDIpKX0sam9pbiguLi50KXtpZigwPT09dC5sZW5ndGgpcmV0dXJuIi4iO2xldCByLG47Zm9yKGxldCBlPTA7ZTx0Lmxlbmd0aDsrK2Upe3ZhciBpPXRbZV07dmUoaSwicGF0aCIpLDA8aS5sZW5ndGgmJih2b2lkIDA9PT1yP3I9bj1pOnIrPSJcXCIraSl9aWYodm9pZCAwPT09cilyZXR1cm4iLiI7bGV0IGU9ITAscz0wO3ZhciBvO2lmKCJzdHJpbmciPT10eXBlb2YgbiYmTGUobi5jaGFyQ29kZUF0KDApKSYmKCsrcywxPChvPW4ubGVuZ3RoKSYmTGUobi5jaGFyQ29kZUF0KDEpKSYmKCsrcywyPG8mJihMZShuLmNoYXJDb2RlQXQoMikpPysrczplPSExKSkpLGUpe2Zvcig7czxyLmxlbmd0aCYmTGUoci5jaGFyQ29kZUF0KHMpKTspcysrOzI8PXMmJihyPSJcXCIrci5zbGljZShzKSl9cmV0dXJuIEVlLm5vcm1hbGl6ZShyKX0scmVsYXRpdmUoZSx0KXtpZih2ZShlLCJmcm9tIiksdmUodCwidG8iKSxlPT09dClyZXR1cm4iIjtjb25zdCByPUVlLnJlc29sdmUoZSksbj1FZS5yZXNvbHZlKHQpO2lmKHI9PT1uKXJldHVybiIiO2lmKChlPXIudG9Mb3dlckNhc2UoKSk9PT0odD1uLnRvTG93ZXJDYXNlKCkpKXJldHVybiIiO2xldCBpPTA7Zm9yKDtpPGUubGVuZ3RoJiY5Mj09PWUuY2hhckNvZGVBdChpKTspaSsrO2xldCBzPWUubGVuZ3RoO2Zvcig7cy0xPmkmJjkyPT09ZS5jaGFyQ29kZUF0KHMtMSk7KXMtLTt2YXIgbz1zLWk7bGV0IGE9MDtmb3IoO2E8dC5sZW5ndGgmJjkyPT09dC5jaGFyQ29kZUF0KGEpOylhKys7bGV0IGw9dC5sZW5ndGg7Zm9yKDtsLTE+YSYmOTI9PT10LmNoYXJDb2RlQXQobC0xKTspbC0tO3ZhciB1PWwtYSxoPW88dT9vOnU7bGV0IGQ9LTEsYz0wO2Zvcig7YzxoO2MrKyl7dmFyIG09ZS5jaGFyQ29kZUF0KGkrYyk7aWYobSE9PXQuY2hhckNvZGVBdChhK2MpKWJyZWFrOzkyPT09bSYmKGQ9Yyl9aWYoYyE9PWgpe2lmKC0xPT09ZClyZXR1cm4gbn1lbHNle2lmKGg8dSl7aWYoOTI9PT10LmNoYXJDb2RlQXQoYStjKSlyZXR1cm4gbi5zbGljZShhK2MrMSk7aWYoMj09PWMpcmV0dXJuIG4uc2xpY2UoYStjKX1oPG8mJig5Mj09PWUuY2hhckNvZGVBdChpK2MpP2Q9YzoyPT09YyYmKGQ9MykpLC0xPT09ZCYmKGQ9MCl9bGV0IGY9IiI7Zm9yKGM9aStkKzE7Yzw9czsrK2MpYyE9PXMmJjkyIT09ZS5jaGFyQ29kZUF0KGMpfHwoZis9MD09PWYubGVuZ3RoPyIuLiI6IlxcLi4iKTtyZXR1cm4gYSs9ZCwwPGYubGVuZ3RoPyIiK2Yrbi5zbGljZShhLGwpOig5Mj09PW4uY2hhckNvZGVBdChhKSYmKythLG4uc2xpY2UoYSxsKSl9LHRvTmFtZXNwYWNlZFBhdGgoZSl7aWYoInN0cmluZyIhPXR5cGVvZiBlKXJldHVybiBlO2lmKDA9PT1lLmxlbmd0aClyZXR1cm4iIjtjb25zdCB0PUVlLnJlc29sdmUoZSk7aWYodC5sZW5ndGg8PTIpcmV0dXJuIGU7aWYoOTI9PT10LmNoYXJDb2RlQXQoMCkpe2lmKDkyPT09dC5jaGFyQ29kZUF0KDEpKXt2YXIgcj10LmNoYXJDb2RlQXQoMik7aWYoNjMhPT1yJiY0NiE9PXIpcmV0dXJuIlxcXFw/XFxVTkNcXCIrdC5zbGljZSgyKX19ZWxzZSBpZihOZSh0LmNoYXJDb2RlQXQoMCkpJiY1OD09PXQuY2hhckNvZGVBdCgxKSYmOTI9PT10LmNoYXJDb2RlQXQoMikpcmV0dXJuIlxcXFw/XFwiK3Q7cmV0dXJuIGV9LGRpcm5hbWUocil7dmUociwicGF0aCIpO3ZhciBuPXIubGVuZ3RoO2lmKDA9PT1uKXJldHVybiIuIjtsZXQgaT0tMSxzPTA7dmFyIGU9ci5jaGFyQ29kZUF0KDApO2lmKDE9PT1uKXJldHVybiBMZShlKT9yOiIuIjtpZihMZShlKSl7aWYoaT1zPTEsTGUoci5jaGFyQ29kZUF0KDEpKSl7bGV0IGU9Mix0PWU7Zm9yKDtlPG4mJiFMZShyLmNoYXJDb2RlQXQoZSkpOyllKys7aWYoZTxuJiZlIT09dCl7Zm9yKHQ9ZTtlPG4mJkxlKHIuY2hhckNvZGVBdChlKSk7KWUrKztpZihlPG4mJmUhPT10KXtmb3IodD1lO2U8biYmIUxlKHIuY2hhckNvZGVBdChlKSk7KWUrKztpZihlPT09bilyZXR1cm4gcjtlIT09dCYmKGk9cz1lKzEpfX19fWVsc2UgTmUoZSkmJjU4PT09ci5jaGFyQ29kZUF0KDEpJiYoaT0yPG4mJkxlKHIuY2hhckNvZGVBdCgyKSk/MzoyLHM9aSk7bGV0IHQ9LTEsbz0hMDtmb3IobGV0IGU9bi0xO2U+PXM7LS1lKWlmKExlKHIuY2hhckNvZGVBdChlKSkpe2lmKCFvKXt0PWU7YnJlYWt9fWVsc2Ugbz0hMTtpZigtMT09PXQpe2lmKC0xPT09aSlyZXR1cm4iLiI7dD1pfXJldHVybiByLnNsaWNlKDAsdCl9LGJhc2VuYW1lKHIsbil7dm9pZCAwIT09biYmdmUobiwiZXh0IiksdmUociwicGF0aCIpO2xldCBpPTAscz0tMSxvPSEwLGE7aWYoMjw9ci5sZW5ndGgmJk5lKHIuY2hhckNvZGVBdCgwKSkmJjU4PT09ci5jaGFyQ29kZUF0KDEpJiYoaT0yKSx2b2lkIDAhPT1uJiYwPG4ubGVuZ3RoJiZuLmxlbmd0aDw9ci5sZW5ndGgpe2lmKG49PT1yKXJldHVybiIiO2xldCBlPW4ubGVuZ3RoLTEsdD0tMTtmb3IoYT1yLmxlbmd0aC0xO2E+PWk7LS1hKXt2YXIgbD1yLmNoYXJDb2RlQXQoYSk7aWYoTGUobCkpe2lmKCFvKXtpPWErMTticmVha319ZWxzZS0xPT09dCYmKG89ITEsdD1hKzEpLDA8PWUmJihsPT09bi5jaGFyQ29kZUF0KGUpPy0xPT0tLWUmJihzPWEpOihlPS0xLHM9dCkpfXJldHVybiBpPT09cz9zPXQ6LTE9PT1zJiYocz1yLmxlbmd0aCksci5zbGljZShpLHMpfWZvcihhPXIubGVuZ3RoLTE7YT49aTstLWEpaWYoTGUoci5jaGFyQ29kZUF0KGEpKSl7aWYoIW8pe2k9YSsxO2JyZWFrfX1lbHNlLTE9PT1zJiYobz0hMSxzPWErMSk7cmV0dXJuLTE9PT1zPyIiOnIuc2xpY2UoaSxzKX0sZXh0bmFtZSh0KXt2ZSh0LCJwYXRoIik7bGV0IHI9MCxuPS0xLGk9MCxzPS0xLG89ITAsYT0wOzI8PXQubGVuZ3RoJiY1OD09PXQuY2hhckNvZGVBdCgxKSYmTmUodC5jaGFyQ29kZUF0KDApKSYmKHI9aT0yKTtmb3IobGV0IGU9dC5sZW5ndGgtMTtlPj1yOy0tZSl7dmFyIGw9dC5jaGFyQ29kZUF0KGUpO2lmKExlKGwpKXtpZihvKWNvbnRpbnVlO2k9ZSsxO2JyZWFrfS0xPT09cyYmKG89ITEscz1lKzEpLDQ2PT09bD8tMT09PW4/bj1lOjEhPT1hJiYoYT0xKTotMSE9PW4mJihhPS0xKX1yZXR1cm4tMT09PW58fC0xPT09c3x8MD09PWF8fDE9PT1hJiZuPT09cy0xJiZuPT09aSsxPyIiOnQuc2xpY2UobixzKX0sZm9ybWF0OnllLmJpbmQobnVsbCwiXFwiKSxwYXJzZShyKXt2ZShyLCJwYXRoIik7Y29uc3QgZT17cm9vdDoiIixkaXI6IiIsYmFzZToiIixleHQ6IiIsbmFtZToiIn07aWYoMD09PXIubGVuZ3RoKXJldHVybiBlO3ZhciBuPXIubGVuZ3RoO2xldCBpPTAsdD1yLmNoYXJDb2RlQXQoMCk7aWYoMT09PW4pcmV0dXJuIExlKHQpP2Uucm9vdD1lLmRpcj1yOmUuYmFzZT1lLm5hbWU9cixlO2lmKExlKHQpKXtpZihpPTEsTGUoci5jaGFyQ29kZUF0KDEpKSl7bGV0IGU9Mix0PWU7Zm9yKDtlPG4mJiFMZShyLmNoYXJDb2RlQXQoZSkpOyllKys7aWYoZTxuJiZlIT09dCl7Zm9yKHQ9ZTtlPG4mJkxlKHIuY2hhckNvZGVBdChlKSk7KWUrKztpZihlPG4mJmUhPT10KXtmb3IodD1lO2U8biYmIUxlKHIuY2hhckNvZGVBdChlKSk7KWUrKztlPT09bj9pPWU6ZSE9PXQmJihpPWUrMSl9fX19ZWxzZSBpZihOZSh0KSYmNTg9PT1yLmNoYXJDb2RlQXQoMSkpe2lmKG48PTIpcmV0dXJuIGUucm9vdD1lLmRpcj1yLGU7aWYoaT0yLExlKHIuY2hhckNvZGVBdCgyKSkpe2lmKDM9PT1uKXJldHVybiBlLnJvb3Q9ZS5kaXI9cixlO2k9M319MDxpJiYoZS5yb290PXIuc2xpY2UoMCxpKSk7bGV0IHM9LTEsbz1pLGE9LTEsbD0hMCx1PXIubGVuZ3RoLTEsaD0wO2Zvcig7dT49aTstLXUpe2lmKHQ9ci5jaGFyQ29kZUF0KHUpLExlKHQpKXtpZihsKWNvbnRpbnVlO289dSsxO2JyZWFrfS0xPT09YSYmKGw9ITEsYT11KzEpLDQ2PT09dD8tMT09PXM/cz11OjEhPT1oJiYoaD0xKTotMSE9PXMmJihoPS0xKX1yZXR1cm4tMSE9PWEmJigtMT09PXN8fDA9PT1ofHwxPT09aCYmcz09PWEtMSYmcz09PW8rMT9lLmJhc2U9ZS5uYW1lPXIuc2xpY2UobyxhKTooZS5uYW1lPXIuc2xpY2UobyxzKSxlLmJhc2U9ci5zbGljZShvLGEpLGUuZXh0PXIuc2xpY2UocyxhKSkpLDA8byYmbyE9PWk/ZS5kaXI9ci5zbGljZSgwLG8tMSk6ZS5kaXI9ZS5yb290LGV9LHNlcDoiXFwiLGRlbGltaXRlcjoiOyIsd2luMzI6bnVsbCxwb3NpeDpudWxsfSxBZT17cmVzb2x2ZSguLi50KXtsZXQgcj0iIixuPSExO2ZvcihsZXQgZT10Lmxlbmd0aC0xOy0xPD1lJiYhbjtlLS0pe2NvbnN0IGk9MDw9ZT90W2VdOmFlKCk7dmUoaSwicGF0aCIpLDAhPT1pLmxlbmd0aCYmKHI9aSsiLyIrcixuPTQ3PT09aS5jaGFyQ29kZUF0KDApKX1yZXR1cm4gcj1TZShyLCFuLCIvIix3ZSksbj8iLyIrcjowPHIubGVuZ3RoP3I6Ii4ifSxub3JtYWxpemUoZSl7aWYodmUoZSwicGF0aCIpLDA9PT1lLmxlbmd0aClyZXR1cm4iLiI7dmFyIHQ9NDc9PT1lLmNoYXJDb2RlQXQoMCkscj00Nz09PWUuY2hhckNvZGVBdChlLmxlbmd0aC0xKTtyZXR1cm4gMD09PShlPVNlKGUsIXQsIi8iLHdlKSkubGVuZ3RoP3Q/Ii8iOnI/Ii4vIjoiLiI6KHImJihlKz0iLyIpLHQ/Ii8iK2U6ZSl9LGlzQWJzb2x1dGUoZSl7cmV0dXJuIHZlKGUsInBhdGgiKSwwPGUubGVuZ3RoJiY0Nz09PWUuY2hhckNvZGVBdCgwKX0sam9pbiguLi50KXtpZigwPT09dC5sZW5ndGgpcmV0dXJuIi4iO2xldCByO2ZvcihsZXQgZT0wO2U8dC5sZW5ndGg7KytlKXt2YXIgbj10W2VdO3ZlKG4sInBhdGgiKSwwPG4ubGVuZ3RoJiYodm9pZCAwPT09cj9yPW46cis9Ii8iK24pfXJldHVybiB2b2lkIDA9PT1yPyIuIjpBZS5ub3JtYWxpemUocil9LHJlbGF0aXZlKGUsdCl7aWYodmUoZSwiZnJvbSIpLHZlKHQsInRvIiksZT09PXQpcmV0dXJuIiI7aWYoKGU9QWUucmVzb2x2ZShlKSk9PT0odD1BZS5yZXNvbHZlKHQpKSlyZXR1cm4iIjt2YXIgcj1lLmxlbmd0aCxuPXItMSxpPXQubGVuZ3RoLTEscz1uPGk/bjppO2xldCBvPS0xLGE9MDtmb3IoO2E8czthKyspe3ZhciBsPWUuY2hhckNvZGVBdCgxK2EpO2lmKGwhPT10LmNoYXJDb2RlQXQoMSthKSlicmVhazs0Nz09PWwmJihvPWEpfWlmKGE9PT1zKWlmKHM8aSl7aWYoNDc9PT10LmNoYXJDb2RlQXQoMSthKSlyZXR1cm4gdC5zbGljZSgxK2ErMSk7aWYoMD09PWEpcmV0dXJuIHQuc2xpY2UoMSthKX1lbHNlIHM8biYmKDQ3PT09ZS5jaGFyQ29kZUF0KDErYSk/bz1hOjA9PT1hJiYobz0wKSk7bGV0IHU9IiI7Zm9yKGE9MStvKzE7YTw9cjsrK2EpYSE9PXImJjQ3IT09ZS5jaGFyQ29kZUF0KGEpfHwodSs9MD09PXUubGVuZ3RoPyIuLiI6Ii8uLiIpO3JldHVybiIiK3UrdC5zbGljZSgxK28pfSx0b05hbWVzcGFjZWRQYXRoKGUpe3JldHVybiBlfSxkaXJuYW1lKHQpe2lmKHZlKHQsInBhdGgiKSwwPT09dC5sZW5ndGgpcmV0dXJuIi4iO3ZhciBlPTQ3PT09dC5jaGFyQ29kZUF0KDApO2xldCByPS0xLG49ITA7Zm9yKGxldCBlPXQubGVuZ3RoLTE7MTw9ZTstLWUpaWYoNDc9PT10LmNoYXJDb2RlQXQoZSkpe2lmKCFuKXtyPWU7YnJlYWt9fWVsc2Ugbj0hMTtyZXR1cm4tMT09PXI/ZT8iLyI6Ii4iOmUmJjE9PT1yPyIvLyI6dC5zbGljZSgwLHIpfSxiYXNlbmFtZShyLG4pe3ZvaWQgMCE9PW4mJnZlKG4sImV4dCIpLHZlKHIsInBhdGgiKTtsZXQgaT0wLHM9LTEsbz0hMCxhO2lmKHZvaWQgMCE9PW4mJjA8bi5sZW5ndGgmJm4ubGVuZ3RoPD1yLmxlbmd0aCl7aWYobj09PXIpcmV0dXJuIiI7bGV0IGU9bi5sZW5ndGgtMSx0PS0xO2ZvcihhPXIubGVuZ3RoLTE7MDw9YTstLWEpe3ZhciBsPXIuY2hhckNvZGVBdChhKTtpZig0Nz09PWwpe2lmKCFvKXtpPWErMTticmVha319ZWxzZS0xPT09dCYmKG89ITEsdD1hKzEpLDA8PWUmJihsPT09bi5jaGFyQ29kZUF0KGUpPy0xPT0tLWUmJihzPWEpOihlPS0xLHM9dCkpfXJldHVybiBpPT09cz9zPXQ6LTE9PT1zJiYocz1yLmxlbmd0aCksci5zbGljZShpLHMpfWZvcihhPXIubGVuZ3RoLTE7MDw9YTstLWEpaWYoNDc9PT1yLmNoYXJDb2RlQXQoYSkpe2lmKCFvKXtpPWErMTticmVha319ZWxzZS0xPT09cyYmKG89ITEscz1hKzEpO3JldHVybi0xPT09cz8iIjpyLnNsaWNlKGkscyl9LGV4dG5hbWUodCl7dmUodCwicGF0aCIpO2xldCByPS0xLG49MCxpPS0xLHM9ITAsbz0wO2ZvcihsZXQgZT10Lmxlbmd0aC0xOzA8PWU7LS1lKXt2YXIgYT10LmNoYXJDb2RlQXQoZSk7aWYoNDc9PT1hKXtpZihzKWNvbnRpbnVlO249ZSsxO2JyZWFrfS0xPT09aSYmKHM9ITEsaT1lKzEpLDQ2PT09YT8tMT09PXI/cj1lOjEhPT1vJiYobz0xKTotMSE9PXImJihvPS0xKX1yZXR1cm4tMT09PXJ8fC0xPT09aXx8MD09PW98fDE9PT1vJiZyPT09aS0xJiZyPT09bisxPyIiOnQuc2xpY2UocixpKX0sZm9ybWF0OnllLmJpbmQobnVsbCwiLyIpLHBhcnNlKGUpe3ZlKGUsInBhdGgiKTtjb25zdCB0PXtyb290OiIiLGRpcjoiIixiYXNlOiIiLGV4dDoiIixuYW1lOiIifTtpZigwPT09ZS5sZW5ndGgpcmV0dXJuIHQ7dmFyIHI9NDc9PT1lLmNoYXJDb2RlQXQoMCk7bGV0IG47bj1yPyh0LnJvb3Q9Ii8iLDEpOjA7bGV0IGk9LTEscz0wLG89LTEsYT0hMCxsPWUubGVuZ3RoLTEsdT0wO2Zvcig7bD49bjstLWwpe3ZhciBoPWUuY2hhckNvZGVBdChsKTtpZig0Nz09PWgpe2lmKGEpY29udGludWU7cz1sKzE7YnJlYWt9LTE9PT1vJiYoYT0hMSxvPWwrMSksNDY9PT1oPy0xPT09aT9pPWw6MSE9PXUmJih1PTEpOi0xIT09aSYmKHU9LTEpfWlmKC0xIT09byl7Y29uc3Qgbj0wPT09cyYmcj8xOnM7LTE9PT1pfHwwPT09dXx8MT09PXUmJmk9PT1vLTEmJmk9PT1zKzE/dC5iYXNlPXQubmFtZT1lLnNsaWNlKG4sbyk6KHQubmFtZT1lLnNsaWNlKG4saSksdC5iYXNlPWUuc2xpY2UobixvKSx0LmV4dD1lLnNsaWNlKGksbykpfXJldHVybiAwPHM/dC5kaXI9ZS5zbGljZSgwLHMtMSk6ciYmKHQuZGlyPSIvIiksdH0sc2VwOiIvIixkZWxpbWl0ZXI6IjoiLHdpbjMyOm51bGwscG9zaXg6bnVsbH07QWUud2luMzI9RWUud2luMzI9RWUsQWUucG9zaXg9RWUucG9zaXg9QWUsKCJ3aW4zMiI9PT1TP0VlOkFlKS5ub3JtYWxpemUsKCJ3aW4zMiI9PT1TP0VlOkFlKS5yZXNvbHZlLCgid2luMzIiPT09Uz9FZTpBZSkucmVsYXRpdmUsKCJ3aW4zMiI9PT1TP0VlOkFlKS5kaXJuYW1lLCgid2luMzIiPT09Uz9FZTpBZSkuYmFzZW5hbWUsKCJ3aW4zMiI9PT1TP0VlOkFlKS5leHRuYW1lLCgid2luMzIiPT09Uz9FZTpBZSkuc2VwO2NvbnN0IE1lPS9eXHdbXHdcZCsuLV0qJC8seGU9L15cLy8sS2U9L15cL1wvLztmdW5jdGlvbiBWZShlLHQpe2lmKCFlLnNjaGVtZSYmdCl0aHJvdyBuZXcgRXJyb3IoYFtVcmlFcnJvcl06IFNjaGVtZSBpcyBtaXNzaW5nOiB7c2NoZW1lOiAiIiwgYXV0aG9yaXR5OiAiJHtlLmF1dGhvcml0eX0iLCBwYXRoOiAiJHtlLnBhdGh9IiwgcXVlcnk6ICIke2UucXVlcnl9IiwgZnJhZ21lbnQ6ICIke2UuZnJhZ21lbnR9In1gKTtpZihlLnNjaGVtZSYmIU1lLnRlc3QoZS5zY2hlbWUpKXRocm93IG5ldyBFcnJvcigiW1VyaUVycm9yXTogU2NoZW1lIGNvbnRhaW5zIGlsbGVnYWwgY2hhcmFjdGVycy4iKTtpZihlLnBhdGgpaWYoZS5hdXRob3JpdHkpe2lmKCF4ZS50ZXN0KGUucGF0aCkpdGhyb3cgbmV3IEVycm9yKCdbVXJpRXJyb3JdOiBJZiBhIFVSSSBjb250YWlucyBhbiBhdXRob3JpdHkgY29tcG9uZW50LCB0aGVuIHRoZSBwYXRoIGNvbXBvbmVudCBtdXN0IGVpdGhlciBiZSBlbXB0eSBvciBiZWdpbiB3aXRoIGEgc2xhc2ggKCIvIikgY2hhcmFjdGVyJyl9ZWxzZSBpZihLZS50ZXN0KGUucGF0aCkpdGhyb3cgbmV3IEVycm9yKCdbVXJpRXJyb3JdOiBJZiBhIFVSSSBkb2VzIG5vdCBjb250YWluIGFuIGF1dGhvcml0eSBjb21wb25lbnQsIHRoZW4gdGhlIHBhdGggY2Fubm90IGJlZ2luIHdpdGggdHdvIHNsYXNoIGNoYXJhY3RlcnMgKCIvLyIpJyl9Y29uc3QgSWU9Ii8iLFBlPS9eKChbXjovPyNdKz8pOik/KFwvXC8oW14vPyNdKikpPyhbXj8jXSopKFw/KFteI10qKSk/KCMoLiopKT8vO2NsYXNzIFJle2NvbnN0cnVjdG9yKGUsdCxyLG4saSxzPSExKXt2YXIgbzsib2JqZWN0Ij09dHlwZW9mIGU/KHRoaXMuc2NoZW1lPWUuc2NoZW1lfHwiIix0aGlzLmF1dGhvcml0eT1lLmF1dGhvcml0eXx8IiIsdGhpcy5wYXRoPWUucGF0aHx8IiIsdGhpcy5xdWVyeT1lLnF1ZXJ5fHwiIix0aGlzLmZyYWdtZW50PWUuZnJhZ21lbnR8fCIiKToodGhpcy5zY2hlbWU9KG89cywoZT1lKXx8bz9lOiJmaWxlIiksdGhpcy5hdXRob3JpdHk9dHx8IiIsdGhpcy5wYXRoPWZ1bmN0aW9uKGUsdCl7c3dpdGNoKGUpe2Nhc2UiaHR0cHMiOmNhc2UiaHR0cCI6Y2FzZSJmaWxlIjp0P3RbMF0hPT1JZSYmKHQ9SWUrdCk6dD1JZX1yZXR1cm4gdH0odGhpcy5zY2hlbWUscnx8IiIpLHRoaXMucXVlcnk9bnx8IiIsdGhpcy5mcmFnbWVudD1pfHwiIixWZSh0aGlzLHMpKX1zdGF0aWMgaXNVcmkoZSl7cmV0dXJuIGUgaW5zdGFuY2VvZiBSZXx8ISFlJiYoInN0cmluZyI9PXR5cGVvZiBlLmF1dGhvcml0eSYmInN0cmluZyI9PXR5cGVvZiBlLmZyYWdtZW50JiYic3RyaW5nIj09dHlwZW9mIGUucGF0aCYmInN0cmluZyI9PXR5cGVvZiBlLnF1ZXJ5JiYic3RyaW5nIj09dHlwZW9mIGUuc2NoZW1lJiYic3RyaW5nIj09dHlwZW9mIGUuZnNQYXRoJiYiZnVuY3Rpb24iPT10eXBlb2YgZS53aXRoJiYiZnVuY3Rpb24iPT10eXBlb2YgZS50b1N0cmluZyl9Z2V0IGZzUGF0aCgpe3JldHVybiBVZSh0aGlzLCExKX13aXRoKGUpe2lmKCFlKXJldHVybiB0aGlzO2xldHtzY2hlbWU6dCxhdXRob3JpdHk6cixwYXRoOm4scXVlcnk6aSxmcmFnbWVudDpzfT1lO3JldHVybiB2b2lkIDA9PT10P3Q9dGhpcy5zY2hlbWU6bnVsbD09PXQmJih0PSIiKSx2b2lkIDA9PT1yP3I9dGhpcy5hdXRob3JpdHk6bnVsbD09PXImJihyPSIiKSx2b2lkIDA9PT1uP249dGhpcy5wYXRoOm51bGw9PT1uJiYobj0iIiksdm9pZCAwPT09aT9pPXRoaXMucXVlcnk6bnVsbD09PWkmJihpPSIiKSx2b2lkIDA9PT1zP3M9dGhpcy5mcmFnbWVudDpudWxsPT09cyYmKHM9IiIpLHQ9PT10aGlzLnNjaGVtZSYmcj09PXRoaXMuYXV0aG9yaXR5JiZuPT09dGhpcy5wYXRoJiZpPT09dGhpcy5xdWVyeSYmcz09PXRoaXMuZnJhZ21lbnQ/dGhpczpuZXcgRGUodCxyLG4saSxzKX1zdGF0aWMgcGFyc2UoZSx0PSExKXtlPVBlLmV4ZWMoZSk7cmV0dXJuIGU/bmV3IERlKGVbMl18fCIiLEhlKGVbNF18fCIiKSxIZShlWzVdfHwiIiksSGUoZVs3XXx8IiIpLEhlKGVbOV18fCIiKSx0KTpuZXcgRGUoIiIsIiIsIiIsIiIsIiIpfXN0YXRpYyBmaWxlKGUpe2xldCB0PSIiO3ZhciByO3JldHVybihlPUU/ZS5yZXBsYWNlKC9cXC9nLEllKTplKVswXT09PUllJiZlWzFdPT09SWUmJihlPS0xPT09KHI9ZS5pbmRleE9mKEllLDIpKT8odD1lLnN1YnN0cmluZygyKSxJZSk6KHQ9ZS5zdWJzdHJpbmcoMixyKSxlLnN1YnN0cmluZyhyKXx8SWUpKSxuZXcgRGUoImZpbGUiLHQsZSwiIiwiIil9c3RhdGljIGZyb20oZSl7ZT1uZXcgRGUoZS5zY2hlbWUsZS5hdXRob3JpdHksZS5wYXRoLGUucXVlcnksZS5mcmFnbWVudCk7cmV0dXJuIFZlKGUsITApLGV9c3RhdGljIGpvaW5QYXRoKGUsLi4udCl7aWYoIWUucGF0aCl0aHJvdyBuZXcgRXJyb3IoIltVcmlFcnJvcl06IGNhbm5vdCBjYWxsIGpvaW5QYXRoIG9uIFVSSSB3aXRob3V0IHBhdGgiKTtsZXQgcjtyZXR1cm4gcj1FJiYiZmlsZSI9PT1lLnNjaGVtZT9SZS5maWxlKEVlLmpvaW4oVWUoZSwhMCksLi4udCkpLnBhdGg6QWUuam9pbihlLnBhdGgsLi4udCksZS53aXRoKHtwYXRoOnJ9KX10b1N0cmluZyhlPSExKXtyZXR1cm4gQmUodGhpcyxlKX10b0pTT04oKXtyZXR1cm4gdGhpc31zdGF0aWMgcmV2aXZlKGUpe2lmKGUpe2lmKGUgaW5zdGFuY2VvZiBSZSlyZXR1cm4gZTt7Y29uc3QgdD1uZXcgRGUoZSk7cmV0dXJuIHQuX2Zvcm1hdHRlZD1lLmV4dGVybmFsLHQuX2ZzUGF0aD1lLl9zZXA9PT1rZT9lLmZzUGF0aDpudWxsLHR9fXJldHVybiBlfX1jb25zdCBrZT1FPzE6dm9pZCAwO2NsYXNzIERlIGV4dGVuZHMgUmV7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMuX2Zvcm1hdHRlZD1udWxsLHRoaXMuX2ZzUGF0aD1udWxsfWdldCBmc1BhdGgoKXtyZXR1cm4gdGhpcy5fZnNQYXRofHwodGhpcy5fZnNQYXRoPVVlKHRoaXMsITEpKSx0aGlzLl9mc1BhdGh9dG9TdHJpbmcoZT0hMSl7cmV0dXJuIGU/QmUodGhpcywhMCk6KHRoaXMuX2Zvcm1hdHRlZHx8KHRoaXMuX2Zvcm1hdHRlZD1CZSh0aGlzLCExKSksdGhpcy5fZm9ybWF0dGVkKX10b0pTT04oKXtjb25zdCBlPXskbWlkOjF9O3JldHVybiB0aGlzLl9mc1BhdGgmJihlLmZzUGF0aD10aGlzLl9mc1BhdGgsZS5fc2VwPWtlKSx0aGlzLl9mb3JtYXR0ZWQmJihlLmV4dGVybmFsPXRoaXMuX2Zvcm1hdHRlZCksdGhpcy5wYXRoJiYoZS5wYXRoPXRoaXMucGF0aCksdGhpcy5zY2hlbWUmJihlLnNjaGVtZT10aGlzLnNjaGVtZSksdGhpcy5hdXRob3JpdHkmJihlLmF1dGhvcml0eT10aGlzLmF1dGhvcml0eSksdGhpcy5xdWVyeSYmKGUucXVlcnk9dGhpcy5xdWVyeSksdGhpcy5mcmFnbWVudCYmKGUuZnJhZ21lbnQ9dGhpcy5mcmFnbWVudCksZX19Y29uc3QgT2U9e1s1OF06IiUzQSIsNDc6IiUyRiIsNjM6IiUzRiIsMzU6IiUyMyIsOTE6IiU1QiIsOTM6IiU1RCIsNjQ6IiU0MCIsMzM6IiUyMSIsMzY6IiUyNCIsMzg6IiUyNiIsMzk6IiUyNyIsNDA6IiUyOCIsNDE6IiUyOSIsNDI6IiUyQSIsNDM6IiUyQiIsNDQ6IiUyQyIsNTk6IiUzQiIsNjE6IiUzRCIsMzI6IiUyMCJ9O2Z1bmN0aW9uIFRlKHQscil7bGV0IG49dm9pZCAwLGk9LTE7Zm9yKGxldCBlPTA7ZTx0Lmxlbmd0aDtlKyspe3ZhciBzPXQuY2hhckNvZGVBdChlKTs5Nzw9cyYmczw9MTIyfHw2NTw9cyYmczw9OTB8fDQ4PD1zJiZzPD01N3x8NDU9PT1zfHw0Nj09PXN8fDk1PT09c3x8MTI2PT09c3x8ciYmNDc9PT1zPygtMSE9PWkmJihuKz1lbmNvZGVVUklDb21wb25lbnQodC5zdWJzdHJpbmcoaSxlKSksaT0tMSksdm9pZCAwIT09biYmKG4rPXQuY2hhckF0KGUpKSk6KHZvaWQgMD09PW4mJihuPXQuc3Vic3RyKDAsZSkpLHZvaWQgMCE9PShzPU9lW3NdKT8oLTEhPT1pJiYobis9ZW5jb2RlVVJJQ29tcG9uZW50KHQuc3Vic3RyaW5nKGksZSkpLGk9LTEpLG4rPXMpOi0xPT09aSYmKGk9ZSkpfXJldHVybi0xIT09aSYmKG4rPWVuY29kZVVSSUNvbXBvbmVudCh0LnN1YnN0cmluZyhpKSkpLHZvaWQgMCE9PW4/bjp0fWZ1bmN0aW9uIEZlKHQpe2xldCByPXZvaWQgMDtmb3IobGV0IGU9MDtlPHQubGVuZ3RoO2UrKyl7dmFyIG49dC5jaGFyQ29kZUF0KGUpOzM1PT09bnx8NjM9PT1uPyh2b2lkIDA9PT1yJiYocj10LnN1YnN0cigwLGUpKSxyKz1PZVtuXSk6dm9pZCAwIT09ciYmKHIrPXRbZV0pfXJldHVybiB2b2lkIDAhPT1yP3I6dH1mdW5jdGlvbiBVZShlLHQpe2xldCByO3JldHVybiByPWUuYXV0aG9yaXR5JiYxPGUucGF0aC5sZW5ndGgmJiJmaWxlIj09PWUuc2NoZW1lPyIvLyIrZS5hdXRob3JpdHkrZS5wYXRoOjQ3PT09ZS5wYXRoLmNoYXJDb2RlQXQoMCkmJig2NTw9ZS5wYXRoLmNoYXJDb2RlQXQoMSkmJmUucGF0aC5jaGFyQ29kZUF0KDEpPD05MHx8OTc8PWUucGF0aC5jaGFyQ29kZUF0KDEpJiZlLnBhdGguY2hhckNvZGVBdCgxKTw9MTIyKSYmNTg9PT1lLnBhdGguY2hhckNvZGVBdCgyKT90P2UucGF0aC5zdWJzdHIoMSk6ZS5wYXRoWzFdLnRvTG93ZXJDYXNlKCkrZS5wYXRoLnN1YnN0cigyKTplLnBhdGgsRSYmKHI9ci5yZXBsYWNlKC9cLy9nLCJcXCIpKSxyfWZ1bmN0aW9uIEJlKGUsdCl7Y29uc3Qgcj10P0ZlOlRlO2xldCBuPSIiLHtzY2hlbWU6aSxhdXRob3JpdHk6cyxwYXRoOm8scXVlcnk6YSxmcmFnbWVudDpsfT1lO2lmKGkmJihuKz1pLG4rPSI6IiksIXMmJiJmaWxlIiE9PWl8fChuKz1JZSxuKz1JZSkscyl7bGV0IGU9cy5pbmRleE9mKCJAIik7aWYoLTEhPT1lKXtjb25zdCBoPXMuc3Vic3RyKDAsZSk7cz1zLnN1YnN0cihlKzEpLGU9aC5pbmRleE9mKCI6IiksLTE9PT1lP24rPXIoaCwhMSk6KG4rPXIoaC5zdWJzdHIoMCxlKSwhMSksbis9IjoiLG4rPXIoaC5zdWJzdHIoZSsxKSwhMSkpLG4rPSJAIn1zPXMudG9Mb3dlckNhc2UoKSxlPXMuaW5kZXhPZigiOiIpLC0xPT09ZT9uKz1yKHMsITEpOihuKz1yKHMuc3Vic3RyKDAsZSksITEpLG4rPXMuc3Vic3RyKGUpKX12YXIgdTtyZXR1cm4gbyYmKDM8PW8ubGVuZ3RoJiY0Nz09PW8uY2hhckNvZGVBdCgwKSYmNTg9PT1vLmNoYXJDb2RlQXQoMik/NjU8PSh1PW8uY2hhckNvZGVBdCgxKSkmJnU8PTkwJiYobz1gLyR7U3RyaW5nLmZyb21DaGFyQ29kZSh1KzMyKX06YCtvLnN1YnN0cigzKSk6Mjw9by5sZW5ndGgmJjU4PT09by5jaGFyQ29kZUF0KDEpJiYoNjU8PSh1PW8uY2hhckNvZGVBdCgwKSkmJnU8PTkwJiYobz1TdHJpbmcuZnJvbUNoYXJDb2RlKHUrMzIpKyI6IitvLnN1YnN0cigyKSkpLG4rPXIobywhMCkpLGEmJihuKz0iPyIsbis9cihhLCExKSksbCYmKG4rPSIjIixuKz10P2w6VGUobCwhMSkpLG59Y29uc3QgcWU9LyglWzAtOUEtWmEtel1bMC05QS1aYS16XSkrL2c7ZnVuY3Rpb24gSGUoZSl7cmV0dXJuIGUubWF0Y2gocWUpP2UucmVwbGFjZShxZSxlPT5mdW5jdGlvbiB0KHIpe3RyeXtyZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KHIpfWNhdGNoKGUpe3JldHVybiAzPHIubGVuZ3RoP3Iuc3Vic3RyKDAsMykrdChyLnN1YnN0cigzKSk6cn19KGUpKTplfWNsYXNzIFdle2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5saW5lTnVtYmVyPWUsdGhpcy5jb2x1bW49dH13aXRoKGU9dGhpcy5saW5lTnVtYmVyLHQ9dGhpcy5jb2x1bW4pe3JldHVybiBlPT09dGhpcy5saW5lTnVtYmVyJiZ0PT09dGhpcy5jb2x1bW4/dGhpczpuZXcgV2UoZSx0KX1kZWx0YShlPTAsdD0wKXtyZXR1cm4gdGhpcy53aXRoKHRoaXMubGluZU51bWJlcitlLHRoaXMuY29sdW1uK3QpfWVxdWFscyhlKXtyZXR1cm4gV2UuZXF1YWxzKHRoaXMsZSl9c3RhdGljIGVxdWFscyhlLHQpe3JldHVybiFlJiYhdHx8ISFlJiYhIXQmJmUubGluZU51bWJlcj09PXQubGluZU51bWJlciYmZS5jb2x1bW49PT10LmNvbHVtbn1pc0JlZm9yZShlKXtyZXR1cm4gV2UuaXNCZWZvcmUodGhpcyxlKX1zdGF0aWMgaXNCZWZvcmUoZSx0KXtyZXR1cm4gZS5saW5lTnVtYmVyPHQubGluZU51bWJlcnx8ISh0LmxpbmVOdW1iZXI8ZS5saW5lTnVtYmVyKSYmZS5jb2x1bW48dC5jb2x1bW59aXNCZWZvcmVPckVxdWFsKGUpe3JldHVybiBXZS5pc0JlZm9yZU9yRXF1YWwodGhpcyxlKX1zdGF0aWMgaXNCZWZvcmVPckVxdWFsKGUsdCl7cmV0dXJuIGUubGluZU51bWJlcjx0LmxpbmVOdW1iZXJ8fCEodC5saW5lTnVtYmVyPGUubGluZU51bWJlcikmJmUuY29sdW1uPD10LmNvbHVtbn1zdGF0aWMgY29tcGFyZShlLHQpe3ZhciByPTB8ZS5saW5lTnVtYmVyLG49MHx0LmxpbmVOdW1iZXI7cmV0dXJuIHIhPW4/ci1uOigwfGUuY29sdW1uKS0oMHx0LmNvbHVtbil9Y2xvbmUoKXtyZXR1cm4gbmV3IFdlKHRoaXMubGluZU51bWJlcix0aGlzLmNvbHVtbil9dG9TdHJpbmcoKXtyZXR1cm4iKCIrdGhpcy5saW5lTnVtYmVyKyIsIit0aGlzLmNvbHVtbisiKSJ9c3RhdGljIGxpZnQoZSl7cmV0dXJuIG5ldyBXZShlLmxpbmVOdW1iZXIsZS5jb2x1bW4pfXN0YXRpYyBpc0lQb3NpdGlvbihlKXtyZXR1cm4gZSYmIm51bWJlciI9PXR5cGVvZiBlLmxpbmVOdW1iZXImJiJudW1iZXIiPT10eXBlb2YgZS5jb2x1bW59fWNsYXNzIHple2NvbnN0cnVjdG9yKGUsdCxyLG4pe3I8ZXx8ZT09PXImJm48dD8odGhpcy5zdGFydExpbmVOdW1iZXI9cix0aGlzLnN0YXJ0Q29sdW1uPW4sdGhpcy5lbmRMaW5lTnVtYmVyPWUsdGhpcy5lbmRDb2x1bW49dCk6KHRoaXMuc3RhcnRMaW5lTnVtYmVyPWUsdGhpcy5zdGFydENvbHVtbj10LHRoaXMuZW5kTGluZU51bWJlcj1yLHRoaXMuZW5kQ29sdW1uPW4pfWlzRW1wdHkoKXtyZXR1cm4gemUuaXNFbXB0eSh0aGlzKX1zdGF0aWMgaXNFbXB0eShlKXtyZXR1cm4gZS5zdGFydExpbmVOdW1iZXI9PT1lLmVuZExpbmVOdW1iZXImJmUuc3RhcnRDb2x1bW49PT1lLmVuZENvbHVtbn1jb250YWluc1Bvc2l0aW9uKGUpe3JldHVybiB6ZS5jb250YWluc1Bvc2l0aW9uKHRoaXMsZSl9c3RhdGljIGNvbnRhaW5zUG9zaXRpb24oZSx0KXtyZXR1cm4hKHQubGluZU51bWJlcjxlLnN0YXJ0TGluZU51bWJlcnx8dC5saW5lTnVtYmVyPmUuZW5kTGluZU51bWJlcikmJighKHQubGluZU51bWJlcj09PWUuc3RhcnRMaW5lTnVtYmVyJiZ0LmNvbHVtbjxlLnN0YXJ0Q29sdW1uKSYmISh0LmxpbmVOdW1iZXI9PT1lLmVuZExpbmVOdW1iZXImJnQuY29sdW1uPmUuZW5kQ29sdW1uKSl9c3RhdGljIHN0cmljdENvbnRhaW5zUG9zaXRpb24oZSx0KXtyZXR1cm4hKHQubGluZU51bWJlcjxlLnN0YXJ0TGluZU51bWJlcnx8dC5saW5lTnVtYmVyPmUuZW5kTGluZU51bWJlcikmJighKHQubGluZU51bWJlcj09PWUuc3RhcnRMaW5lTnVtYmVyJiZ0LmNvbHVtbjw9ZS5zdGFydENvbHVtbikmJiEodC5saW5lTnVtYmVyPT09ZS5lbmRMaW5lTnVtYmVyJiZ0LmNvbHVtbj49ZS5lbmRDb2x1bW4pKX1jb250YWluc1JhbmdlKGUpe3JldHVybiB6ZS5jb250YWluc1JhbmdlKHRoaXMsZSl9c3RhdGljIGNvbnRhaW5zUmFuZ2UoZSx0KXtyZXR1cm4hKHQuc3RhcnRMaW5lTnVtYmVyPGUuc3RhcnRMaW5lTnVtYmVyfHx0LmVuZExpbmVOdW1iZXI8ZS5zdGFydExpbmVOdW1iZXIpJiYoISh0LnN0YXJ0TGluZU51bWJlcj5lLmVuZExpbmVOdW1iZXJ8fHQuZW5kTGluZU51bWJlcj5lLmVuZExpbmVOdW1iZXIpJiYoISh0LnN0YXJ0TGluZU51bWJlcj09PWUuc3RhcnRMaW5lTnVtYmVyJiZ0LnN0YXJ0Q29sdW1uPGUuc3RhcnRDb2x1bW4pJiYhKHQuZW5kTGluZU51bWJlcj09PWUuZW5kTGluZU51bWJlciYmdC5lbmRDb2x1bW4+ZS5lbmRDb2x1bW4pKSl9c3RyaWN0Q29udGFpbnNSYW5nZShlKXtyZXR1cm4gemUuc3RyaWN0Q29udGFpbnNSYW5nZSh0aGlzLGUpfXN0YXRpYyBzdHJpY3RDb250YWluc1JhbmdlKGUsdCl7cmV0dXJuISh0LnN0YXJ0TGluZU51bWJlcjxlLnN0YXJ0TGluZU51bWJlcnx8dC5lbmRMaW5lTnVtYmVyPGUuc3RhcnRMaW5lTnVtYmVyKSYmKCEodC5zdGFydExpbmVOdW1iZXI+ZS5lbmRMaW5lTnVtYmVyfHx0LmVuZExpbmVOdW1iZXI+ZS5lbmRMaW5lTnVtYmVyKSYmKCEodC5zdGFydExpbmVOdW1iZXI9PT1lLnN0YXJ0TGluZU51bWJlciYmdC5zdGFydENvbHVtbjw9ZS5zdGFydENvbHVtbikmJiEodC5lbmRMaW5lTnVtYmVyPT09ZS5lbmRMaW5lTnVtYmVyJiZ0LmVuZENvbHVtbj49ZS5lbmRDb2x1bW4pKSl9cGx1c1JhbmdlKGUpe3JldHVybiB6ZS5wbHVzUmFuZ2UodGhpcyxlKX1zdGF0aWMgcGx1c1JhbmdlKGUsdCl7bGV0IHIsbixpLHM7cmV0dXJuIG49dC5zdGFydExpbmVOdW1iZXI8ZS5zdGFydExpbmVOdW1iZXI/KHI9dC5zdGFydExpbmVOdW1iZXIsdC5zdGFydENvbHVtbik6dC5zdGFydExpbmVOdW1iZXI9PT1lLnN0YXJ0TGluZU51bWJlcj8ocj10LnN0YXJ0TGluZU51bWJlcixNYXRoLm1pbih0LnN0YXJ0Q29sdW1uLGUuc3RhcnRDb2x1bW4pKToocj1lLnN0YXJ0TGluZU51bWJlcixlLnN0YXJ0Q29sdW1uKSxzPXQuZW5kTGluZU51bWJlcj5lLmVuZExpbmVOdW1iZXI/KGk9dC5lbmRMaW5lTnVtYmVyLHQuZW5kQ29sdW1uKTp0LmVuZExpbmVOdW1iZXI9PT1lLmVuZExpbmVOdW1iZXI/KGk9dC5lbmRMaW5lTnVtYmVyLE1hdGgubWF4KHQuZW5kQ29sdW1uLGUuZW5kQ29sdW1uKSk6KGk9ZS5lbmRMaW5lTnVtYmVyLGUuZW5kQ29sdW1uKSxuZXcgemUocixuLGkscyl9aW50ZXJzZWN0UmFuZ2VzKGUpe3JldHVybiB6ZS5pbnRlcnNlY3RSYW5nZXModGhpcyxlKX1zdGF0aWMgaW50ZXJzZWN0UmFuZ2VzKGUsdCl7bGV0IHI9ZS5zdGFydExpbmVOdW1iZXIsbj1lLnN0YXJ0Q29sdW1uLGk9ZS5lbmRMaW5lTnVtYmVyLHM9ZS5lbmRDb2x1bW47dmFyIG89dC5zdGFydExpbmVOdW1iZXIsYT10LnN0YXJ0Q29sdW1uLGU9dC5lbmRMaW5lTnVtYmVyLHQ9dC5lbmRDb2x1bW47cmV0dXJuIHI8bz8ocj1vLG49YSk6cj09PW8mJihuPU1hdGgubWF4KG4sYSkpLGk+ZT8oaT1lLHM9dCk6aT09PWUmJihzPU1hdGgubWluKHMsdCkpLHI+aXx8cj09PWkmJm4+cz9udWxsOm5ldyB6ZShyLG4saSxzKX1lcXVhbHNSYW5nZShlKXtyZXR1cm4gemUuZXF1YWxzUmFuZ2UodGhpcyxlKX1zdGF0aWMgZXF1YWxzUmFuZ2UoZSx0KXtyZXR1cm4hIWUmJiEhdCYmZS5zdGFydExpbmVOdW1iZXI9PT10LnN0YXJ0TGluZU51bWJlciYmZS5zdGFydENvbHVtbj09PXQuc3RhcnRDb2x1bW4mJmUuZW5kTGluZU51bWJlcj09PXQuZW5kTGluZU51bWJlciYmZS5lbmRDb2x1bW49PT10LmVuZENvbHVtbn1nZXRFbmRQb3NpdGlvbigpe3JldHVybiB6ZS5nZXRFbmRQb3NpdGlvbih0aGlzKX1zdGF0aWMgZ2V0RW5kUG9zaXRpb24oZSl7cmV0dXJuIG5ldyBXZShlLmVuZExpbmVOdW1iZXIsZS5lbmRDb2x1bW4pfWdldFN0YXJ0UG9zaXRpb24oKXtyZXR1cm4gemUuZ2V0U3RhcnRQb3NpdGlvbih0aGlzKX1zdGF0aWMgZ2V0U3RhcnRQb3NpdGlvbihlKXtyZXR1cm4gbmV3IFdlKGUuc3RhcnRMaW5lTnVtYmVyLGUuc3RhcnRDb2x1bW4pfXRvU3RyaW5nKCl7cmV0dXJuIlsiK3RoaXMuc3RhcnRMaW5lTnVtYmVyKyIsIit0aGlzLnN0YXJ0Q29sdW1uKyIgLT4gIit0aGlzLmVuZExpbmVOdW1iZXIrIiwiK3RoaXMuZW5kQ29sdW1uKyJdIn1zZXRFbmRQb3NpdGlvbihlLHQpe3JldHVybiBuZXcgemUodGhpcy5zdGFydExpbmVOdW1iZXIsdGhpcy5zdGFydENvbHVtbixlLHQpfXNldFN0YXJ0UG9zaXRpb24oZSx0KXtyZXR1cm4gbmV3IHplKGUsdCx0aGlzLmVuZExpbmVOdW1iZXIsdGhpcy5lbmRDb2x1bW4pfWNvbGxhcHNlVG9TdGFydCgpe3JldHVybiB6ZS5jb2xsYXBzZVRvU3RhcnQodGhpcyl9c3RhdGljIGNvbGxhcHNlVG9TdGFydChlKXtyZXR1cm4gbmV3IHplKGUuc3RhcnRMaW5lTnVtYmVyLGUuc3RhcnRDb2x1bW4sZS5zdGFydExpbmVOdW1iZXIsZS5zdGFydENvbHVtbil9c3RhdGljIGZyb21Qb3NpdGlvbnMoZSx0PWUpe3JldHVybiBuZXcgemUoZS5saW5lTnVtYmVyLGUuY29sdW1uLHQubGluZU51bWJlcix0LmNvbHVtbil9c3RhdGljIGxpZnQoZSl7cmV0dXJuIGU/bmV3IHplKGUuc3RhcnRMaW5lTnVtYmVyLGUuc3RhcnRDb2x1bW4sZS5lbmRMaW5lTnVtYmVyLGUuZW5kQ29sdW1uKTpudWxsfXN0YXRpYyBpc0lSYW5nZShlKXtyZXR1cm4gZSYmIm51bWJlciI9PXR5cGVvZiBlLnN0YXJ0TGluZU51bWJlciYmIm51bWJlciI9PXR5cGVvZiBlLnN0YXJ0Q29sdW1uJiYibnVtYmVyIj09dHlwZW9mIGUuZW5kTGluZU51bWJlciYmIm51bWJlciI9PXR5cGVvZiBlLmVuZENvbHVtbn1zdGF0aWMgYXJlSW50ZXJzZWN0aW5nT3JUb3VjaGluZyhlLHQpe3JldHVybiEoZS5lbmRMaW5lTnVtYmVyPHQuc3RhcnRMaW5lTnVtYmVyfHxlLmVuZExpbmVOdW1iZXI9PT10LnN0YXJ0TGluZU51bWJlciYmZS5lbmRDb2x1bW48dC5zdGFydENvbHVtbikmJiEodC5lbmRMaW5lTnVtYmVyPGUuc3RhcnRMaW5lTnVtYmVyfHx0LmVuZExpbmVOdW1iZXI9PT1lLnN0YXJ0TGluZU51bWJlciYmdC5lbmRDb2x1bW48ZS5zdGFydENvbHVtbil9c3RhdGljIGFyZUludGVyc2VjdGluZyhlLHQpe3JldHVybiEoZS5lbmRMaW5lTnVtYmVyPHQuc3RhcnRMaW5lTnVtYmVyfHxlLmVuZExpbmVOdW1iZXI9PT10LnN0YXJ0TGluZU51bWJlciYmZS5lbmRDb2x1bW48PXQuc3RhcnRDb2x1bW4pJiYhKHQuZW5kTGluZU51bWJlcjxlLnN0YXJ0TGluZU51bWJlcnx8dC5lbmRMaW5lTnVtYmVyPT09ZS5zdGFydExpbmVOdW1iZXImJnQuZW5kQ29sdW1uPD1lLnN0YXJ0Q29sdW1uKX1zdGF0aWMgY29tcGFyZVJhbmdlc1VzaW5nU3RhcnRzKGUsdCl7aWYoZSYmdCl7dmFyIHI9MHxlLnN0YXJ0TGluZU51bWJlcixuPTB8dC5zdGFydExpbmVOdW1iZXI7aWYociE9bilyZXR1cm4gci1uO3I9MHxlLnN0YXJ0Q29sdW1uLG49MHx0LnN0YXJ0Q29sdW1uO2lmKHIhPW4pcmV0dXJuIHItbjtyPTB8ZS5lbmRMaW5lTnVtYmVyLG49MHx0LmVuZExpbmVOdW1iZXI7cmV0dXJuIHIhPW4/ci1uOigwfGUuZW5kQ29sdW1uKS0oMHx0LmVuZENvbHVtbil9cmV0dXJuKGU/MTowKS0odD8xOjApfXN0YXRpYyBjb21wYXJlUmFuZ2VzVXNpbmdFbmRzKGUsdCl7cmV0dXJuIGUuZW5kTGluZU51bWJlcj09PXQuZW5kTGluZU51bWJlcj9lLmVuZENvbHVtbj09PXQuZW5kQ29sdW1uP2Uuc3RhcnRMaW5lTnVtYmVyPT09dC5zdGFydExpbmVOdW1iZXI/ZS5zdGFydENvbHVtbi10LnN0YXJ0Q29sdW1uOmUuc3RhcnRMaW5lTnVtYmVyLXQuc3RhcnRMaW5lTnVtYmVyOmUuZW5kQ29sdW1uLXQuZW5kQ29sdW1uOmUuZW5kTGluZU51bWJlci10LmVuZExpbmVOdW1iZXJ9c3RhdGljIHNwYW5zTXVsdGlwbGVMaW5lcyhlKXtyZXR1cm4gZS5lbmRMaW5lTnVtYmVyPmUuc3RhcnRMaW5lTnVtYmVyfX1mdW5jdGlvbiBqZShlLHQscixuKXtjb25zdCBpPW5ldyBzZShlLHQscik7cmV0dXJuIGkuQ29tcHV0ZURpZmYobil9Y2xhc3MgJGV7Y29uc3RydWN0b3Iocil7Y29uc3Qgbj1bXSxpPVtdO2ZvcihsZXQgZT0wLHQ9ci5sZW5ndGg7ZTx0O2UrKyluW2VdPVplKHJbZV0sMSksaVtlXT1YZShyW2VdLDEpO3RoaXMubGluZXM9cix0aGlzLl9zdGFydENvbHVtbnM9bix0aGlzLl9lbmRDb2x1bW5zPWl9Z2V0RWxlbWVudHMoKXtjb25zdCByPVtdO2ZvcihsZXQgZT0wLHQ9dGhpcy5saW5lcy5sZW5ndGg7ZTx0O2UrKylyW2VdPXRoaXMubGluZXNbZV0uc3Vic3RyaW5nKHRoaXMuX3N0YXJ0Q29sdW1uc1tlXS0xLHRoaXMuX2VuZENvbHVtbnNbZV0tMSk7cmV0dXJuIHJ9Z2V0U3RyaWN0RWxlbWVudChlKXtyZXR1cm4gdGhpcy5saW5lc1tlXX1nZXRTdGFydExpbmVOdW1iZXIoZSl7cmV0dXJuIGUrMX1nZXRFbmRMaW5lTnVtYmVyKGUpe3JldHVybiBlKzF9Y3JlYXRlQ2hhclNlcXVlbmNlKGUscixuKXtjb25zdCBpPVtdLHM9W10sbz1bXTtsZXQgYT0wO2ZvcihsZXQgdD1yO3Q8PW47dCsrKXtjb25zdCBoPXRoaXMubGluZXNbdF07dmFyIGw9ZT90aGlzLl9zdGFydENvbHVtbnNbdF06MSx1PWU/dGhpcy5fZW5kQ29sdW1uc1t0XTpoLmxlbmd0aCsxO2ZvcihsZXQgZT1sO2U8dTtlKyspaVthXT1oLmNoYXJDb2RlQXQoZS0xKSxzW2FdPXQrMSxvW2FdPWUsYSsrfXJldHVybiBuZXcgR2UoaSxzLG8pfX1jbGFzcyBHZXtjb25zdHJ1Y3RvcihlLHQscil7dGhpcy5fY2hhckNvZGVzPWUsdGhpcy5fbGluZU51bWJlcnM9dCx0aGlzLl9jb2x1bW5zPXJ9Z2V0RWxlbWVudHMoKXtyZXR1cm4gdGhpcy5fY2hhckNvZGVzfWdldFN0YXJ0TGluZU51bWJlcihlKXtyZXR1cm4gdGhpcy5fbGluZU51bWJlcnNbZV19Z2V0U3RhcnRDb2x1bW4oZSl7cmV0dXJuIHRoaXMuX2NvbHVtbnNbZV19Z2V0RW5kTGluZU51bWJlcihlKXtyZXR1cm4gdGhpcy5fbGluZU51bWJlcnNbZV19Z2V0RW5kQ29sdW1uKGUpe3JldHVybiB0aGlzLl9jb2x1bW5zW2VdKzF9fWNsYXNzIEple2NvbnN0cnVjdG9yKGUsdCxyLG4saSxzLG8sYSl7dGhpcy5vcmlnaW5hbFN0YXJ0TGluZU51bWJlcj1lLHRoaXMub3JpZ2luYWxTdGFydENvbHVtbj10LHRoaXMub3JpZ2luYWxFbmRMaW5lTnVtYmVyPXIsdGhpcy5vcmlnaW5hbEVuZENvbHVtbj1uLHRoaXMubW9kaWZpZWRTdGFydExpbmVOdW1iZXI9aSx0aGlzLm1vZGlmaWVkU3RhcnRDb2x1bW49cyx0aGlzLm1vZGlmaWVkRW5kTGluZU51bWJlcj1vLHRoaXMubW9kaWZpZWRFbmRDb2x1bW49YX1zdGF0aWMgY3JlYXRlRnJvbURpZmZDaGFuZ2UoZSx0LHIpe2xldCBuLGkscyxvLGEsbCx1LGg7cmV0dXJuIG89MD09PWUub3JpZ2luYWxMZW5ndGg/KG49MCxpPTAscz0wKToobj10LmdldFN0YXJ0TGluZU51bWJlcihlLm9yaWdpbmFsU3RhcnQpLGk9dC5nZXRTdGFydENvbHVtbihlLm9yaWdpbmFsU3RhcnQpLHM9dC5nZXRFbmRMaW5lTnVtYmVyKGUub3JpZ2luYWxTdGFydCtlLm9yaWdpbmFsTGVuZ3RoLTEpLHQuZ2V0RW5kQ29sdW1uKGUub3JpZ2luYWxTdGFydCtlLm9yaWdpbmFsTGVuZ3RoLTEpKSxoPTA9PT1lLm1vZGlmaWVkTGVuZ3RoPyhhPTAsbD0wLHU9MCk6KGE9ci5nZXRTdGFydExpbmVOdW1iZXIoZS5tb2RpZmllZFN0YXJ0KSxsPXIuZ2V0U3RhcnRDb2x1bW4oZS5tb2RpZmllZFN0YXJ0KSx1PXIuZ2V0RW5kTGluZU51bWJlcihlLm1vZGlmaWVkU3RhcnQrZS5tb2RpZmllZExlbmd0aC0xKSxyLmdldEVuZENvbHVtbihlLm1vZGlmaWVkU3RhcnQrZS5tb2RpZmllZExlbmd0aC0xKSksbmV3IEplKG4saSxzLG8sYSxsLHUsaCl9fWNsYXNzIFFle2NvbnN0cnVjdG9yKGUsdCxyLG4saSl7dGhpcy5vcmlnaW5hbFN0YXJ0TGluZU51bWJlcj1lLHRoaXMub3JpZ2luYWxFbmRMaW5lTnVtYmVyPXQsdGhpcy5tb2RpZmllZFN0YXJ0TGluZU51bWJlcj1yLHRoaXMubW9kaWZpZWRFbmRMaW5lTnVtYmVyPW4sdGhpcy5jaGFyQ2hhbmdlcz1pfXN0YXRpYyBjcmVhdGVGcm9tRGlmZlJlc3VsdChlLHQsbixpLHMscixvKXtsZXQgYSxsLHUsaCxkPXZvaWQgMDtpZihsPTA9PT10Lm9yaWdpbmFsTGVuZ3RoPyhhPW4uZ2V0U3RhcnRMaW5lTnVtYmVyKHQub3JpZ2luYWxTdGFydCktMSwwKTooYT1uLmdldFN0YXJ0TGluZU51bWJlcih0Lm9yaWdpbmFsU3RhcnQpLG4uZ2V0RW5kTGluZU51bWJlcih0Lm9yaWdpbmFsU3RhcnQrdC5vcmlnaW5hbExlbmd0aC0xKSksaD0wPT09dC5tb2RpZmllZExlbmd0aD8odT1pLmdldFN0YXJ0TGluZU51bWJlcih0Lm1vZGlmaWVkU3RhcnQpLTEsMCk6KHU9aS5nZXRTdGFydExpbmVOdW1iZXIodC5tb2RpZmllZFN0YXJ0KSxpLmdldEVuZExpbmVOdW1iZXIodC5tb2RpZmllZFN0YXJ0K3QubW9kaWZpZWRMZW5ndGgtMSkpLHImJjA8dC5vcmlnaW5hbExlbmd0aCYmdC5vcmlnaW5hbExlbmd0aDwyMCYmMDx0Lm1vZGlmaWVkTGVuZ3RoJiZ0Lm1vZGlmaWVkTGVuZ3RoPDIwJiZzKCkpe3ZhciBjPW4uY3JlYXRlQ2hhclNlcXVlbmNlKGUsdC5vcmlnaW5hbFN0YXJ0LHQub3JpZ2luYWxTdGFydCt0Lm9yaWdpbmFsTGVuZ3RoLTEpLG09aS5jcmVhdGVDaGFyU2VxdWVuY2UoZSx0Lm1vZGlmaWVkU3RhcnQsdC5tb2RpZmllZFN0YXJ0K3QubW9kaWZpZWRMZW5ndGgtMSk7bGV0IHI9amUoYyxtLHMsITApLmNoYW5nZXM7byYmKHI9ZnVuY3Rpb24ocil7aWYoci5sZW5ndGg8PTEpcmV0dXJuIHI7Y29uc3Qgbj1bclswXV07bGV0IGk9blswXTtmb3IobGV0IGU9MSx0PXIubGVuZ3RoO2U8dDtlKyspe3ZhciBzPXJbZV0sbz1zLm9yaWdpbmFsU3RhcnQtKGkub3JpZ2luYWxTdGFydCtpLm9yaWdpbmFsTGVuZ3RoKSxhPXMubW9kaWZpZWRTdGFydC0oaS5tb2RpZmllZFN0YXJ0K2kubW9kaWZpZWRMZW5ndGgpO01hdGgubWluKG8sYSk8Mz8oaS5vcmlnaW5hbExlbmd0aD1zLm9yaWdpbmFsU3RhcnQrcy5vcmlnaW5hbExlbmd0aC1pLm9yaWdpbmFsU3RhcnQsaS5tb2RpZmllZExlbmd0aD1zLm1vZGlmaWVkU3RhcnQrcy5tb2RpZmllZExlbmd0aC1pLm1vZGlmaWVkU3RhcnQpOihuLnB1c2gocyksaT1zKX1yZXR1cm4gbn0ocikpLGQ9W107Zm9yKGxldCBlPTAsdD1yLmxlbmd0aDtlPHQ7ZSsrKWQucHVzaChKZS5jcmVhdGVGcm9tRGlmZkNoYW5nZShyW2VdLGMsbSkpfXJldHVybiBuZXcgUWUoYSxsLHUsaCxkKX19Y2xhc3MgWWV7Y29uc3RydWN0b3IoZSx0LHIpe3RoaXMuc2hvdWxkQ29tcHV0ZUNoYXJDaGFuZ2VzPXIuc2hvdWxkQ29tcHV0ZUNoYXJDaGFuZ2VzLHRoaXMuc2hvdWxkUG9zdFByb2Nlc3NDaGFyQ2hhbmdlcz1yLnNob3VsZFBvc3RQcm9jZXNzQ2hhckNoYW5nZXMsdGhpcy5zaG91bGRJZ25vcmVUcmltV2hpdGVzcGFjZT1yLnNob3VsZElnbm9yZVRyaW1XaGl0ZXNwYWNlLHRoaXMuc2hvdWxkTWFrZVByZXR0eURpZmY9ci5zaG91bGRNYWtlUHJldHR5RGlmZix0aGlzLm9yaWdpbmFsTGluZXM9ZSx0aGlzLm1vZGlmaWVkTGluZXM9dCx0aGlzLm9yaWdpbmFsPW5ldyAkZShlKSx0aGlzLm1vZGlmaWVkPW5ldyAkZSh0KSx0aGlzLmNvbnRpbnVlTGluZURpZmY9ZXQoci5tYXhDb21wdXRhdGlvblRpbWUpLHRoaXMuY29udGludWVDaGFyRGlmZj1ldCgwPT09ci5tYXhDb21wdXRhdGlvblRpbWU/MDpNYXRoLm1pbihyLm1heENvbXB1dGF0aW9uVGltZSw1ZTMpKX1jb21wdXRlRGlmZigpe2lmKDE9PT10aGlzLm9yaWdpbmFsLmxpbmVzLmxlbmd0aCYmMD09PXRoaXMub3JpZ2luYWwubGluZXNbMF0ubGVuZ3RoKXJldHVybiAxPT09dGhpcy5tb2RpZmllZC5saW5lcy5sZW5ndGgmJjA9PT10aGlzLm1vZGlmaWVkLmxpbmVzWzBdLmxlbmd0aD97cXVpdEVhcmx5OiExLGNoYW5nZXM6W119OntxdWl0RWFybHk6ITEsY2hhbmdlczpbe29yaWdpbmFsU3RhcnRMaW5lTnVtYmVyOjEsb3JpZ2luYWxFbmRMaW5lTnVtYmVyOjEsbW9kaWZpZWRTdGFydExpbmVOdW1iZXI6MSxtb2RpZmllZEVuZExpbmVOdW1iZXI6dGhpcy5tb2RpZmllZC5saW5lcy5sZW5ndGgsY2hhckNoYW5nZXM6W3ttb2RpZmllZEVuZENvbHVtbjowLG1vZGlmaWVkRW5kTGluZU51bWJlcjowLG1vZGlmaWVkU3RhcnRDb2x1bW46MCxtb2RpZmllZFN0YXJ0TGluZU51bWJlcjowLG9yaWdpbmFsRW5kQ29sdW1uOjAsb3JpZ2luYWxFbmRMaW5lTnVtYmVyOjAsb3JpZ2luYWxTdGFydENvbHVtbjowLG9yaWdpbmFsU3RhcnRMaW5lTnVtYmVyOjB9XX1dfTtpZigxPT09dGhpcy5tb2RpZmllZC5saW5lcy5sZW5ndGgmJjA9PT10aGlzLm1vZGlmaWVkLmxpbmVzWzBdLmxlbmd0aClyZXR1cm57cXVpdEVhcmx5OiExLGNoYW5nZXM6W3tvcmlnaW5hbFN0YXJ0TGluZU51bWJlcjoxLG9yaWdpbmFsRW5kTGluZU51bWJlcjp0aGlzLm9yaWdpbmFsLmxpbmVzLmxlbmd0aCxtb2RpZmllZFN0YXJ0TGluZU51bWJlcjoxLG1vZGlmaWVkRW5kTGluZU51bWJlcjoxLGNoYXJDaGFuZ2VzOlt7bW9kaWZpZWRFbmRDb2x1bW46MCxtb2RpZmllZEVuZExpbmVOdW1iZXI6MCxtb2RpZmllZFN0YXJ0Q29sdW1uOjAsbW9kaWZpZWRTdGFydExpbmVOdW1iZXI6MCxvcmlnaW5hbEVuZENvbHVtbjowLG9yaWdpbmFsRW5kTGluZU51bWJlcjowLG9yaWdpbmFsU3RhcnRDb2x1bW46MCxvcmlnaW5hbFN0YXJ0TGluZU51bWJlcjowfV19XX07dmFyIGU9amUodGhpcy5vcmlnaW5hbCx0aGlzLm1vZGlmaWVkLHRoaXMuY29udGludWVMaW5lRGlmZix0aGlzLnNob3VsZE1ha2VQcmV0dHlEaWZmKSxyPWUuY2hhbmdlcyxlPWUucXVpdEVhcmx5O2lmKHRoaXMuc2hvdWxkSWdub3JlVHJpbVdoaXRlc3BhY2Upe2NvbnN0IGQ9W107Zm9yKGxldCBlPTAsdD1yLmxlbmd0aDtlPHQ7ZSsrKWQucHVzaChRZS5jcmVhdGVGcm9tRGlmZlJlc3VsdCh0aGlzLnNob3VsZElnbm9yZVRyaW1XaGl0ZXNwYWNlLHJbZV0sdGhpcy5vcmlnaW5hbCx0aGlzLm1vZGlmaWVkLHRoaXMuY29udGludWVDaGFyRGlmZix0aGlzLnNob3VsZENvbXB1dGVDaGFyQ2hhbmdlcyx0aGlzLnNob3VsZFBvc3RQcm9jZXNzQ2hhckNoYW5nZXMpKTtyZXR1cm57cXVpdEVhcmx5OmUsY2hhbmdlczpkfX1jb25zdCBuPVtdO2xldCBpPTAscz0wO2ZvcihsZXQgZT0tMSx0PXIubGVuZ3RoO2U8dDtlKyspe2Zvcih2YXIgbz1lKzE8dD9yW2UrMV06bnVsbCxhPW8/by5vcmlnaW5hbFN0YXJ0OnRoaXMub3JpZ2luYWxMaW5lcy5sZW5ndGgsbD1vP28ubW9kaWZpZWRTdGFydDp0aGlzLm1vZGlmaWVkTGluZXMubGVuZ3RoO2k8YSYmczxsOyl7Y29uc3QgYz10aGlzLm9yaWdpbmFsTGluZXNbaV0sbT10aGlzLm1vZGlmaWVkTGluZXNbc107aWYoYyE9PW0pe3tsZXQgZT1aZShjLDEpLHQ9WmUobSwxKTtmb3IoOzE8ZSYmMTx0Oyl7aWYoYy5jaGFyQ29kZUF0KGUtMikhPT1tLmNoYXJDb2RlQXQodC0yKSlicmVhaztlLS0sdC0tfSgxPGV8fDE8dCkmJnRoaXMuX3B1c2hUcmltV2hpdGVzcGFjZUNoYXJDaGFuZ2UobixpKzEsMSxlLHMrMSwxLHQpfXtsZXQgZT1YZShjLDEpLHQ9WGUobSwxKTtmb3IodmFyIHU9Yy5sZW5ndGgrMSxoPW0ubGVuZ3RoKzE7ZTx1JiZ0PGg7KXtpZihjLmNoYXJDb2RlQXQoZS0xKSE9PWMuY2hhckNvZGVBdCh0LTEpKWJyZWFrO2UrKyx0Kyt9KGU8dXx8dDxoKSYmdGhpcy5fcHVzaFRyaW1XaGl0ZXNwYWNlQ2hhckNoYW5nZShuLGkrMSxlLHUscysxLHQsaCl9fWkrKyxzKyt9byYmKG4ucHVzaChRZS5jcmVhdGVGcm9tRGlmZlJlc3VsdCh0aGlzLnNob3VsZElnbm9yZVRyaW1XaGl0ZXNwYWNlLG8sdGhpcy5vcmlnaW5hbCx0aGlzLm1vZGlmaWVkLHRoaXMuY29udGludWVDaGFyRGlmZix0aGlzLnNob3VsZENvbXB1dGVDaGFyQ2hhbmdlcyx0aGlzLnNob3VsZFBvc3RQcm9jZXNzQ2hhckNoYW5nZXMpKSxpKz1vLm9yaWdpbmFsTGVuZ3RoLHMrPW8ubW9kaWZpZWRMZW5ndGgpfXJldHVybntxdWl0RWFybHk6ZSxjaGFuZ2VzOm59fV9wdXNoVHJpbVdoaXRlc3BhY2VDaGFyQ2hhbmdlKHQscixuLGkscyxvLGEpe2lmKCF0aGlzLl9tZXJnZVRyaW1XaGl0ZXNwYWNlQ2hhckNoYW5nZSh0LHIsbixpLHMsbyxhKSl7bGV0IGU9dm9pZCAwO3RoaXMuc2hvdWxkQ29tcHV0ZUNoYXJDaGFuZ2VzJiYoZT1bbmV3IEplKHIsbixyLGkscyxvLHMsYSldKSx0LnB1c2gobmV3IFFlKHIscixzLHMsZSkpfX1fbWVyZ2VUcmltV2hpdGVzcGFjZUNoYXJDaGFuZ2UoZSx0LHIsbixpLHMsbyl7dmFyIGE9ZS5sZW5ndGg7aWYoMD09PWEpcmV0dXJuITE7Y29uc3QgbD1lW2EtMV07cmV0dXJuIDAhPT1sLm9yaWdpbmFsRW5kTGluZU51bWJlciYmMCE9PWwubW9kaWZpZWRFbmRMaW5lTnVtYmVyJiYobC5vcmlnaW5hbEVuZExpbmVOdW1iZXIrMT09PXQmJmwubW9kaWZpZWRFbmRMaW5lTnVtYmVyKzE9PT1pJiYobC5vcmlnaW5hbEVuZExpbmVOdW1iZXI9dCxsLm1vZGlmaWVkRW5kTGluZU51bWJlcj1pLHRoaXMuc2hvdWxkQ29tcHV0ZUNoYXJDaGFuZ2VzJiZsLmNoYXJDaGFuZ2VzJiZsLmNoYXJDaGFuZ2VzLnB1c2gobmV3IEplKHQscix0LG4saSxzLGksbykpLCEwKSl9fWZ1bmN0aW9uIFplKGUsdCl7ZT1mdW5jdGlvbihyKXtmb3IobGV0IGU9MCx0PXIubGVuZ3RoO2U8dDtlKyspe3ZhciBuPXIuY2hhckNvZGVBdChlKTtpZigzMiE9PW4mJjkhPT1uKXJldHVybiBlfXJldHVybi0xfShlKTtyZXR1cm4tMT09PWU/dDplKzF9ZnVuY3Rpb24gWGUoZSx0KXtlPWZ1bmN0aW9uKHQscj10Lmxlbmd0aC0xKXtmb3IobGV0IGU9cjswPD1lO2UtLSl7dmFyIG49dC5jaGFyQ29kZUF0KGUpO2lmKDMyIT09biYmOSE9PW4pcmV0dXJuIGV9cmV0dXJuLTF9KGUpO3JldHVybi0xPT09ZT90OmUrMn1mdW5jdGlvbiBldChlKXtpZigwPT09ZSlyZXR1cm4oKT0+ITA7Y29uc3QgdD1EYXRlLm5vdygpO3JldHVybigpPT5EYXRlLm5vdygpLXQ8ZX1mdW5jdGlvbiB0dChlKXtyZXR1cm4gZTwwPzA6MjU1PGU/MjU1OjB8ZX1mdW5jdGlvbiBydChlKXtyZXR1cm4gZTwwPzA6NDI5NDk2NzI5NTxlPzQyOTQ5NjcyOTU6MHxlfWNsYXNzIG50e2NvbnN0cnVjdG9yKGUpe3RoaXMudmFsdWVzPWUsdGhpcy5wcmVmaXhTdW09bmV3IFVpbnQzMkFycmF5KGUubGVuZ3RoKSx0aGlzLnByZWZpeFN1bVZhbGlkSW5kZXg9bmV3IEludDMyQXJyYXkoMSksdGhpcy5wcmVmaXhTdW1WYWxpZEluZGV4WzBdPS0xfWluc2VydFZhbHVlcyhlLHQpe2U9cnQoZSk7Y29uc3Qgcj10aGlzLnZhbHVlcyxuPXRoaXMucHJlZml4U3VtO3ZhciBpPXQubGVuZ3RoO3JldHVybiAwIT09aSYmKHRoaXMudmFsdWVzPW5ldyBVaW50MzJBcnJheShyLmxlbmd0aCtpKSx0aGlzLnZhbHVlcy5zZXQoci5zdWJhcnJheSgwLGUpLDApLHRoaXMudmFsdWVzLnNldChyLnN1YmFycmF5KGUpLGUraSksdGhpcy52YWx1ZXMuc2V0KHQsZSksZS0xPHRoaXMucHJlZml4U3VtVmFsaWRJbmRleFswXSYmKHRoaXMucHJlZml4U3VtVmFsaWRJbmRleFswXT1lLTEpLHRoaXMucHJlZml4U3VtPW5ldyBVaW50MzJBcnJheSh0aGlzLnZhbHVlcy5sZW5ndGgpLDA8PXRoaXMucHJlZml4U3VtVmFsaWRJbmRleFswXSYmdGhpcy5wcmVmaXhTdW0uc2V0KG4uc3ViYXJyYXkoMCx0aGlzLnByZWZpeFN1bVZhbGlkSW5kZXhbMF0rMSkpLCEwKX1zZXRWYWx1ZShlLHQpe3JldHVybiBlPXJ0KGUpLHQ9cnQodCksdGhpcy52YWx1ZXNbZV0hPT10JiYodGhpcy52YWx1ZXNbZV09dCxlLTE8dGhpcy5wcmVmaXhTdW1WYWxpZEluZGV4WzBdJiYodGhpcy5wcmVmaXhTdW1WYWxpZEluZGV4WzBdPWUtMSksITApfXJlbW92ZVZhbHVlcyhlLHQpe2U9cnQoZSksdD1ydCh0KTtjb25zdCByPXRoaXMudmFsdWVzLG49dGhpcy5wcmVmaXhTdW07aWYoZT49ci5sZW5ndGgpcmV0dXJuITE7dmFyIGk9ci5sZW5ndGgtZTtyZXR1cm4gMCE9PSh0PWk8PXQ/aTp0KSYmKHRoaXMudmFsdWVzPW5ldyBVaW50MzJBcnJheShyLmxlbmd0aC10KSx0aGlzLnZhbHVlcy5zZXQoci5zdWJhcnJheSgwLGUpLDApLHRoaXMudmFsdWVzLnNldChyLnN1YmFycmF5KGUrdCksZSksdGhpcy5wcmVmaXhTdW09bmV3IFVpbnQzMkFycmF5KHRoaXMudmFsdWVzLmxlbmd0aCksZS0xPHRoaXMucHJlZml4U3VtVmFsaWRJbmRleFswXSYmKHRoaXMucHJlZml4U3VtVmFsaWRJbmRleFswXT1lLTEpLDA8PXRoaXMucHJlZml4U3VtVmFsaWRJbmRleFswXSYmdGhpcy5wcmVmaXhTdW0uc2V0KG4uc3ViYXJyYXkoMCx0aGlzLnByZWZpeFN1bVZhbGlkSW5kZXhbMF0rMSkpLCEwKX1nZXRUb3RhbFN1bSgpe3JldHVybiAwPT09dGhpcy52YWx1ZXMubGVuZ3RoPzA6dGhpcy5fZ2V0UHJlZml4U3VtKHRoaXMudmFsdWVzLmxlbmd0aC0xKX1nZXRQcmVmaXhTdW0oZSl7cmV0dXJuIGU8MD8wOihlPXJ0KGUpLHRoaXMuX2dldFByZWZpeFN1bShlKSl9X2dldFByZWZpeFN1bSh0KXtpZih0PD10aGlzLnByZWZpeFN1bVZhbGlkSW5kZXhbMF0pcmV0dXJuIHRoaXMucHJlZml4U3VtW3RdO2xldCByPXRoaXMucHJlZml4U3VtVmFsaWRJbmRleFswXSsxOzA9PT1yJiYodGhpcy5wcmVmaXhTdW1bMF09dGhpcy52YWx1ZXNbMF0scisrKSx0Pj10aGlzLnZhbHVlcy5sZW5ndGgmJih0PXRoaXMudmFsdWVzLmxlbmd0aC0xKTtmb3IobGV0IGU9cjtlPD10O2UrKyl0aGlzLnByZWZpeFN1bVtlXT10aGlzLnByZWZpeFN1bVtlLTFdK3RoaXMudmFsdWVzW2VdO3JldHVybiB0aGlzLnByZWZpeFN1bVZhbGlkSW5kZXhbMF09TWF0aC5tYXgodGhpcy5wcmVmaXhTdW1WYWxpZEluZGV4WzBdLHQpLHRoaXMucHJlZml4U3VtW3RdfWdldEluZGV4T2YoZSl7ZT1NYXRoLmZsb29yKGUpLHRoaXMuZ2V0VG90YWxTdW0oKTtsZXQgdD0wLHI9dGhpcy52YWx1ZXMubGVuZ3RoLTEsbj0wO3ZhciBpO2xldCBzPTA7Zm9yKDt0PD1yOylpZihuPXQrKHItdCkvMnwwLGk9dGhpcy5wcmVmaXhTdW1bbl0scz1pLXRoaXMudmFsdWVzW25dLGU8cylyPW4tMTtlbHNle2lmKCEoaTw9ZSkpYnJlYWs7dD1uKzF9cmV0dXJuIG5ldyBpdChuLGUtcyl9fWNsYXNzIGl0e2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5pbmRleD1lLHRoaXMucmVtYWluZGVyPXQsdGhpcy5fcHJlZml4U3VtSW5kZXhPZlJlc3VsdEJyYW5kPXZvaWQgMCx0aGlzLmluZGV4PWUsdGhpcy5yZW1haW5kZXI9dH19Y29uc3Qgc3Q9ZnVuY3Rpb24oZT0iIil7bGV0IHQ9IigtP1xcZCpcXC5cXGRcXHcqKXwoW14iO2Zvcihjb25zdCByIG9mImB+IUAjJCVeJiooKS09K1t7XX1cXHw7OidcIiwuPD4vPyIpMDw9ZS5pbmRleE9mKHIpfHwodCs9IlxcIityKTtyZXR1cm4gdCs9Ilxcc10rKSIsbmV3IFJlZ0V4cCh0LCJnIil9KCk7Y29uc3Qgb3Q9e21heExlbjoxZTMsd2luZG93U2l6ZToxNSx0aW1lQnVkZ2V0OjE1MH07ZnVuY3Rpb24gYXQodCxyLG4saSxzPW90KXtpZihuLmxlbmd0aD5zLm1heExlbil7bGV0IGU9dC1zLm1heExlbi8yO3JldHVybiBlPDA/ZT0wOmkrPWUsYXQodCxyLG49bi5zdWJzdHJpbmcoZSx0K3MubWF4TGVuLzIpLGkscyl9dmFyIG89RGF0ZS5ub3coKSxhPXQtMS1pO2xldCBsPS0xLHU9bnVsbDtmb3IobGV0IGU9MTshKERhdGUubm93KCktbz49cy50aW1lQnVkZ2V0KTtlKyspe3ZhciBoPWEtcy53aW5kb3dTaXplKmU7ci5sYXN0SW5kZXg9TWF0aC5tYXgoMCxoKTt2YXIgZD1mdW5jdGlvbihlLHQscixuKXt2YXIgaTtmb3IoO2k9ZS5leGVjKHQpOyl7dmFyIHM9aS5pbmRleHx8MDtpZihzPD1yJiZlLmxhc3RJbmRleD49cilyZXR1cm4gaTtpZigwPG4mJm48cylyZXR1cm4gbnVsbH1yZXR1cm4gbnVsbH0ocixuLGEsbCk7aWYoIWQmJnUpYnJlYWs7aWYodT1kLGg8PTApYnJlYWs7bD1ofWlmKHUpe2k9e3dvcmQ6dVswXSxzdGFydENvbHVtbjppKzErdS5pbmRleCxlbmRDb2x1bW46aSsxK3UuaW5kZXgrdVswXS5sZW5ndGh9O3JldHVybiByLmxhc3RJbmRleD0wLGl9cmV0dXJuIG51bGx9Y2xhc3MgbHR7Y29uc3RydWN0b3IoZSl7ZT10dChlKTt0aGlzLl9kZWZhdWx0VmFsdWU9ZSx0aGlzLl9hc2NpaU1hcD1sdC5fY3JlYXRlQXNjaWlNYXAoZSksdGhpcy5fbWFwPW5ldyBNYXB9c3RhdGljIF9jcmVhdGVBc2NpaU1hcCh0KXtsZXQgcj1uZXcgVWludDhBcnJheSgyNTYpO2ZvcihsZXQgZT0wO2U8MjU2O2UrKylyW2VdPXQ7cmV0dXJuIHJ9c2V0KGUsdCl7dD10dCh0KTswPD1lJiZlPDI1Nj90aGlzLl9hc2NpaU1hcFtlXT10OnRoaXMuX21hcC5zZXQoZSx0KX1nZXQoZSl7cmV0dXJuIDA8PWUmJmU8MjU2P3RoaXMuX2FzY2lpTWFwW2VdOnRoaXMuX21hcC5nZXQoZSl8fHRoaXMuX2RlZmF1bHRWYWx1ZX19Y2xhc3MgdXR7Y29uc3RydWN0b3IocixuLGkpe2NvbnN0IHM9bmV3IFVpbnQ4QXJyYXkocipuKTtmb3IobGV0IGU9MCx0PXIqbjtlPHQ7ZSsrKXNbZV09aTt0aGlzLl9kYXRhPXMsdGhpcy5yb3dzPXIsdGhpcy5jb2xzPW59Z2V0KGUsdCl7cmV0dXJuIHRoaXMuX2RhdGFbZSp0aGlzLmNvbHMrdF19c2V0KGUsdCxyKXt0aGlzLl9kYXRhW2UqdGhpcy5jb2xzK3RdPXJ9fWNsYXNzIGh0e2NvbnN0cnVjdG9yKHIpe2xldCBuPTAsaT0wO2ZvcihsZXQgZT0wLHQ9ci5sZW5ndGg7ZTx0O2UrKyl7dmFyW3MsbyxhXT1yW2VdO28+biYmKG49bykscz5pJiYoaT1zKSxhPmkmJihpPWEpfW4rKyxpKys7bGV0IGw9bmV3IHV0KGksbiwwKTtmb3IobGV0IGU9MCx0PXIubGVuZ3RoO2U8dDtlKyspe3Zhclt1LGgsZF09cltlXTtsLnNldCh1LGgsZCl9dGhpcy5fc3RhdGVzPWwsdGhpcy5fbWF4Q2hhckNvZGU9bn1uZXh0U3RhdGUoZSx0KXtyZXR1cm4gdDwwfHx0Pj10aGlzLl9tYXhDaGFyQ29kZT8wOnRoaXMuX3N0YXRlcy5nZXQoZSx0KX19bGV0IGR0PW51bGw7bGV0IGN0PW51bGw7Y2xhc3MgbXR7c3RhdGljIF9jcmVhdGVMaW5rKGUsdCxyLG4saSl7bGV0IHM9aS0xO2Rve3ZhciBvPXQuY2hhckNvZGVBdChzKTtpZigyIT09ZS5nZXQobykpYnJlYWt9d2hpbGUocy0tLHM+bik7dmFyIGE7cmV0dXJuIDA8biYmKGE9dC5jaGFyQ29kZUF0KG4tMSksaT10LmNoYXJDb2RlQXQocyksKDQwPT09YSYmNDE9PT1pfHw5MT09PWEmJjkzPT09aXx8MTIzPT09YSYmMTI1PT09aSkmJnMtLSkse3JhbmdlOntzdGFydExpbmVOdW1iZXI6cixzdGFydENvbHVtbjpuKzEsZW5kTGluZU51bWJlcjpyLGVuZENvbHVtbjpzKzJ9LHVybDp0LnN1YnN0cmluZyhuLHMrMSl9fXN0YXRpYyBjb21wdXRlTGlua3ModCxkPShudWxsPT09ZHQmJihkdD1uZXcgaHQoW1sxLDEwNCwyXSxbMSw3MiwyXSxbMSwxMDIsNl0sWzEsNzAsNl0sWzIsMTE2LDNdLFsyLDg0LDNdLFszLDExNiw0XSxbMyw4NCw0XSxbNCwxMTIsNV0sWzQsODAsNV0sWzUsMTE1LDldLFs1LDgzLDldLFs1LDU4LDEwXSxbNiwxMDUsN10sWzYsNzMsN10sWzcsMTA4LDhdLFs3LDc2LDhdLFs4LDEwMSw5XSxbOCw2OSw5XSxbOSw1OCwxMF0sWzEwLDQ3LDExXSxbMTEsNDcsMTJdXSkpLGR0KSl7Y29uc3QgYz1mdW5jdGlvbigpe2lmKG51bGw9PT1jdCl7Y3Q9bmV3IGx0KDApO3ZhciB0PSIgXHQ8PidcIuOAgeOAgu+9oe+9pO+8jO+8ju+8mu+8m+KAmOOAiOOAjOOAjuOAlO+8iO+8u++9m++9ou+9o++9ne+8ve+8ieOAleOAj+OAjeOAieKAme+9gO+9nuKApiI7Zm9yKGxldCBlPTA7ZTx0Lmxlbmd0aDtlKyspY3Quc2V0KHQuY2hhckNvZGVBdChlKSwxKTtmb3IobGV0IGU9MDtlPCIuLDsiLmxlbmd0aDtlKyspY3Quc2V0KCIuLDsiLmNoYXJDb2RlQXQoZSksMil9cmV0dXJuIGN0fSgpO2xldCBtPVtdO2ZvcihsZXQgaD0xLGU9dC5nZXRMaW5lQ291bnQoKTtoPD1lO2grKyl7Y29uc3QgXz10LmdldExpbmVDb250ZW50KGgpO3ZhciBmPV8ubGVuZ3RoO2xldCByPTAsbj0wLGk9MCxzPTEsbz0hMSxhPSExLGw9ITEsdT0hMTtmb3IoO3I8Zjspe2xldCB0PSExO3ZhciBnPV8uY2hhckNvZGVBdChyKTtpZigxMz09PXMpe2xldCBlO3N3aXRjaChnKXtjYXNlIDQwOm89ITAsZT0wO2JyZWFrO2Nhc2UgNDE6ZT1vPzA6MTticmVhaztjYXNlIDkxOmw9ITAsYT0hMCxlPTA7YnJlYWs7Y2FzZSA5MzpsPSExLGU9YT8wOjE7YnJlYWs7Y2FzZSAxMjM6dT0hMCxlPTA7YnJlYWs7Y2FzZSAxMjU6ZT11PzA6MTticmVhaztjYXNlIDM5OmU9MzQ9PT1pfHw5Nj09PWk/MDoxO2JyZWFrO2Nhc2UgMzQ6ZT0zOT09PWl8fDk2PT09aT8wOjE7YnJlYWs7Y2FzZSA5NjplPTM5PT09aXx8MzQ9PT1pPzA6MTticmVhaztjYXNlIDQyOmU9NDI9PT1pPzE6MDticmVhaztjYXNlIDEyNDplPTEyND09PWk/MTowO2JyZWFrO2Nhc2UgMzI6ZT1sPzA6MTticmVhaztkZWZhdWx0OmU9Yy5nZXQoZyl9MT09PWUmJihtLnB1c2gobXQuX2NyZWF0ZUxpbmsoYyxfLGgsbixyKSksdD0hMCl9ZWxzZSBpZigxMj09PXMpe2xldCBlO2U9OTE9PT1nPyhhPSEwLDApOmMuZ2V0KGcpLDE9PT1lP3Q9ITA6cz0xM31lbHNlIHM9ZC5uZXh0U3RhdGUocyxnKSwwPT09cyYmKHQ9ITApO3QmJihzPTEsbz0hMSxhPSExLHU9ITEsbj1yKzEsaT1nKSxyKyt9MTM9PT1zJiZtLnB1c2gobXQuX2NyZWF0ZUxpbmsoYyxfLGgsbixmKSl9cmV0dXJuIG19fWNsYXNzIGZ0e2NvbnN0cnVjdG9yKCl7dGhpcy5fZGVmYXVsdFZhbHVlU2V0PVtbInRydWUiLCJmYWxzZSJdLFsiVHJ1ZSIsIkZhbHNlIl0sWyJQcml2YXRlIiwiUHVibGljIiwiRnJpZW5kIiwiUmVhZE9ubHkiLCJQYXJ0aWFsIiwiUHJvdGVjdGVkIiwiV3JpdGVPbmx5Il0sWyJwdWJsaWMiLCJwcm90ZWN0ZWQiLCJwcml2YXRlIl1dfW5hdmlnYXRlVmFsdWVTZXQoZSx0LHIsbixpKXtpZihlJiZ0KXt0PXRoaXMuZG9OYXZpZ2F0ZVZhbHVlU2V0KHQsaSk7aWYodClyZXR1cm57cmFuZ2U6ZSx2YWx1ZTp0fX1pZihyJiZuKXtpPXRoaXMuZG9OYXZpZ2F0ZVZhbHVlU2V0KG4saSk7aWYoaSlyZXR1cm57cmFuZ2U6cix2YWx1ZTppfX1yZXR1cm4gbnVsbH1kb05hdmlnYXRlVmFsdWVTZXQoZSx0KXt2YXIgcj10aGlzLm51bWJlclJlcGxhY2UoZSx0KTtyZXR1cm4gbnVsbCE9PXI/cjp0aGlzLnRleHRSZXBsYWNlKGUsdCl9bnVtYmVyUmVwbGFjZShlLHQpe3ZhciByPU1hdGgucG93KDEwLGUubGVuZ3RoLShlLmxhc3RJbmRleE9mKCIuIikrMSkpO2xldCBuPU51bWJlcihlKTtlPXBhcnNlRmxvYXQoZSk7cmV0dXJuIWlzTmFOKG4pJiYhaXNOYU4oZSkmJm49PT1lJiYoMCE9PW58fHQpPyhuPU1hdGguZmxvb3IobipyKSxuKz10P3I6LXIsU3RyaW5nKG4vcikpOm51bGx9dGV4dFJlcGxhY2UoZSx0KXtyZXR1cm4gdGhpcy52YWx1ZVNldHNSZXBsYWNlKHRoaXMuX2RlZmF1bHRWYWx1ZVNldCxlLHQpfXZhbHVlU2V0c1JlcGxhY2UocixuLGkpe2xldCBzPW51bGw7Zm9yKGxldCBlPTAsdD1yLmxlbmd0aDtudWxsPT09cyYmZTx0O2UrKylzPXRoaXMudmFsdWVTZXRSZXBsYWNlKHJbZV0sbixpKTtyZXR1cm4gc312YWx1ZVNldFJlcGxhY2UoZSx0LHIpe2xldCBuPWUuaW5kZXhPZih0KTtyZXR1cm4gMDw9bj8obis9cj8xOi0xLG48MD9uPWUubGVuZ3RoLTE6biU9ZS5sZW5ndGgsZVtuXSk6bnVsbH19ZnQuSU5TVEFOQ0U9bmV3IGZ0O2NvbnN0IGd0PU9iamVjdC5mcmVlemUoZnVuY3Rpb24oZSx0KXtjb25zdCByPXNldFRpbWVvdXQoZS5iaW5kKHQpLDApO3JldHVybntkaXNwb3NlKCl7Y2xlYXJUaW1lb3V0KHIpfX19KTsoaGU9dWU9dWV8fHt9KS5pc0NhbmNlbGxhdGlvblRva2VuPWZ1bmN0aW9uKGUpe3JldHVybiBlPT09aGUuTm9uZXx8ZT09PWhlLkNhbmNlbGxlZHx8KGUgaW5zdGFuY2VvZiBfdHx8ISghZXx8Im9iamVjdCIhPXR5cGVvZiBlKSYmKCJib29sZWFuIj09dHlwZW9mIGUuaXNDYW5jZWxsYXRpb25SZXF1ZXN0ZWQmJiJmdW5jdGlvbiI9PXR5cGVvZiBlLm9uQ2FuY2VsbGF0aW9uUmVxdWVzdGVkKSl9LGhlLk5vbmU9T2JqZWN0LmZyZWV6ZSh7aXNDYW5jZWxsYXRpb25SZXF1ZXN0ZWQ6ITEsb25DYW5jZWxsYXRpb25SZXF1ZXN0ZWQ6SHQuTm9uZX0pLGhlLkNhbmNlbGxlZD1PYmplY3QuZnJlZXplKHtpc0NhbmNlbGxhdGlvblJlcXVlc3RlZDohMCxvbkNhbmNlbGxhdGlvblJlcXVlc3RlZDpndH0pO2NsYXNzIF90e2NvbnN0cnVjdG9yKCl7dGhpcy5faXNDYW5jZWxsZWQ9ITEsdGhpcy5fZW1pdHRlcj1udWxsfWNhbmNlbCgpe3RoaXMuX2lzQ2FuY2VsbGVkfHwodGhpcy5faXNDYW5jZWxsZWQ9ITAsdGhpcy5fZW1pdHRlciYmKHRoaXMuX2VtaXR0ZXIuZmlyZSh2b2lkIDApLHRoaXMuZGlzcG9zZSgpKSl9Z2V0IGlzQ2FuY2VsbGF0aW9uUmVxdWVzdGVkKCl7cmV0dXJuIHRoaXMuX2lzQ2FuY2VsbGVkfWdldCBvbkNhbmNlbGxhdGlvblJlcXVlc3RlZCgpe3JldHVybiB0aGlzLl9pc0NhbmNlbGxlZD9ndDoodGhpcy5fZW1pdHRlcnx8KHRoaXMuX2VtaXR0ZXI9bmV3IFIpLHRoaXMuX2VtaXR0ZXIuZXZlbnQpfWRpc3Bvc2UoKXt0aGlzLl9lbWl0dGVyJiYodGhpcy5fZW1pdHRlci5kaXNwb3NlKCksdGhpcy5fZW1pdHRlcj1udWxsKX19Y2xhc3MgcHR7Y29uc3RydWN0b3IoZSl7dGhpcy5fdG9rZW49dm9pZCAwLHRoaXMuX3BhcmVudExpc3RlbmVyPXZvaWQgMCx0aGlzLl9wYXJlbnRMaXN0ZW5lcj1lJiZlLm9uQ2FuY2VsbGF0aW9uUmVxdWVzdGVkKHRoaXMuY2FuY2VsLHRoaXMpfWdldCB0b2tlbigpe3JldHVybiB0aGlzLl90b2tlbnx8KHRoaXMuX3Rva2VuPW5ldyBfdCksdGhpcy5fdG9rZW59Y2FuY2VsKCl7dGhpcy5fdG9rZW4/dGhpcy5fdG9rZW4gaW5zdGFuY2VvZiBfdCYmdGhpcy5fdG9rZW4uY2FuY2VsKCk6dGhpcy5fdG9rZW49dWUuQ2FuY2VsbGVkfWRpc3Bvc2UoZT0hMSl7ZSYmdGhpcy5jYW5jZWwoKSx0aGlzLl9wYXJlbnRMaXN0ZW5lciYmdGhpcy5fcGFyZW50TGlzdGVuZXIuZGlzcG9zZSgpLHRoaXMuX3Rva2VuP3RoaXMuX3Rva2VuIGluc3RhbmNlb2YgX3QmJnRoaXMuX3Rva2VuLmRpc3Bvc2UoKTp0aGlzLl90b2tlbj11ZS5Ob25lfX1jbGFzcyBDdHtjb25zdHJ1Y3Rvcigpe3RoaXMuX2tleUNvZGVUb1N0cj1bXSx0aGlzLl9zdHJUb0tleUNvZGU9T2JqZWN0LmNyZWF0ZShudWxsKX1kZWZpbmUoZSx0KXt0aGlzLl9rZXlDb2RlVG9TdHJbZV09dCx0aGlzLl9zdHJUb0tleUNvZGVbdC50b0xvd2VyQ2FzZSgpXT1lfWtleUNvZGVUb1N0cihlKXtyZXR1cm4gdGhpcy5fa2V5Q29kZVRvU3RyW2VdfXN0clRvS2V5Q29kZShlKXtyZXR1cm4gdGhpcy5fc3RyVG9LZXlDb2RlW2UudG9Mb3dlckNhc2UoKV18fDB9fWNvbnN0IGJ0PW5ldyBDdCx2dD1uZXcgQ3QsTHQ9bmV3IEN0LHd0PW5ldyBBcnJheSgyMzApLE50PXt9LFN0PVtdLHl0PU9iamVjdC5jcmVhdGUobnVsbCksRXQ9T2JqZWN0LmNyZWF0ZShudWxsKSxBdD1bXSxNdD1bXTtmb3IobGV0IGU9MDtlPD0xOTM7ZSsrKUF0W2VdPS0xO2ZvcihsZXQgZT0wO2U8PTEyNjtlKyspTXRbZV09LTE7IWZ1bmN0aW9uKCl7bGV0IGU9W10sdD1bXTtmb3IoY29uc3QgciBvZltbMCwxLDAsIk5vbmUiLDAsInVua25vd24iLDAsIlZLX1VOS05PV04iLCIiLCIiXSxbMCwxLDEsIkh5cGVyIiwwLCIiLDAsIiIsIiIsIiJdLFswLDEsMiwiU3VwZXIiLDAsIiIsMCwiIiwiIiwiIl0sWzAsMSwzLCJGbiIsMCwiIiwwLCIiLCIiLCIiXSxbMCwxLDQsIkZuTG9jayIsMCwiIiwwLCIiLCIiLCIiXSxbMCwxLDUsIlN1c3BlbmQiLDAsIiIsMCwiIiwiIiwiIl0sWzAsMSw2LCJSZXN1bWUiLDAsIiIsMCwiIiwiIiwiIl0sWzAsMSw3LCJUdXJibyIsMCwiIiwwLCIiLCIiLCIiXSxbMCwxLDgsIlNsZWVwIiwwLCIiLDAsIlZLX1NMRUVQIiwiIiwiIl0sWzAsMSw5LCJXYWtlVXAiLDAsIiIsMCwiIiwiIiwiIl0sWzMxLDAsMTAsIktleUEiLDMxLCJBIiw2NSwiVktfQSIsIiIsIiJdLFszMiwwLDExLCJLZXlCIiwzMiwiQiIsNjYsIlZLX0IiLCIiLCIiXSxbMzMsMCwxMiwiS2V5QyIsMzMsIkMiLDY3LCJWS19DIiwiIiwiIl0sWzM0LDAsMTMsIktleUQiLDM0LCJEIiw2OCwiVktfRCIsIiIsIiJdLFszNSwwLDE0LCJLZXlFIiwzNSwiRSIsNjksIlZLX0UiLCIiLCIiXSxbMzYsMCwxNSwiS2V5RiIsMzYsIkYiLDcwLCJWS19GIiwiIiwiIl0sWzM3LDAsMTYsIktleUciLDM3LCJHIiw3MSwiVktfRyIsIiIsIiJdLFszOCwwLDE3LCJLZXlIIiwzOCwiSCIsNzIsIlZLX0giLCIiLCIiXSxbMzksMCwxOCwiS2V5SSIsMzksIkkiLDczLCJWS19JIiwiIiwiIl0sWzQwLDAsMTksIktleUoiLDQwLCJKIiw3NCwiVktfSiIsIiIsIiJdLFs0MSwwLDIwLCJLZXlLIiw0MSwiSyIsNzUsIlZLX0siLCIiLCIiXSxbNDIsMCwyMSwiS2V5TCIsNDIsIkwiLDc2LCJWS19MIiwiIiwiIl0sWzQzLDAsMjIsIktleU0iLDQzLCJNIiw3NywiVktfTSIsIiIsIiJdLFs0NCwwLDIzLCJLZXlOIiw0NCwiTiIsNzgsIlZLX04iLCIiLCIiXSxbNDUsMCwyNCwiS2V5TyIsNDUsIk8iLDc5LCJWS19PIiwiIiwiIl0sWzQ2LDAsMjUsIktleVAiLDQ2LCJQIiw4MCwiVktfUCIsIiIsIiJdLFs0NywwLDI2LCJLZXlRIiw0NywiUSIsODEsIlZLX1EiLCIiLCIiXSxbNDgsMCwyNywiS2V5UiIsNDgsIlIiLDgyLCJWS19SIiwiIiwiIl0sWzQ5LDAsMjgsIktleVMiLDQ5LCJTIiw4MywiVktfUyIsIiIsIiJdLFs1MCwwLDI5LCJLZXlUIiw1MCwiVCIsODQsIlZLX1QiLCIiLCIiXSxbNTEsMCwzMCwiS2V5VSIsNTEsIlUiLDg1LCJWS19VIiwiIiwiIl0sWzUyLDAsMzEsIktleVYiLDUyLCJWIiw4NiwiVktfViIsIiIsIiJdLFs1MywwLDMyLCJLZXlXIiw1MywiVyIsODcsIlZLX1ciLCIiLCIiXSxbNTQsMCwzMywiS2V5WCIsNTQsIlgiLDg4LCJWS19YIiwiIiwiIl0sWzU1LDAsMzQsIktleVkiLDU1LCJZIiw4OSwiVktfWSIsIiIsIiJdLFs1NiwwLDM1LCJLZXlaIiw1NiwiWiIsOTAsIlZLX1oiLCIiLCIiXSxbMjIsMCwzNiwiRGlnaXQxIiwyMiwiMSIsNDksIlZLXzEiLCIiLCIiXSxbMjMsMCwzNywiRGlnaXQyIiwyMywiMiIsNTAsIlZLXzIiLCIiLCIiXSxbMjQsMCwzOCwiRGlnaXQzIiwyNCwiMyIsNTEsIlZLXzMiLCIiLCIiXSxbMjUsMCwzOSwiRGlnaXQ0IiwyNSwiNCIsNTIsIlZLXzQiLCIiLCIiXSxbMjYsMCw0MCwiRGlnaXQ1IiwyNiwiNSIsNTMsIlZLXzUiLCIiLCIiXSxbMjcsMCw0MSwiRGlnaXQ2IiwyNywiNiIsNTQsIlZLXzYiLCIiLCIiXSxbMjgsMCw0MiwiRGlnaXQ3IiwyOCwiNyIsNTUsIlZLXzciLCIiLCIiXSxbMjksMCw0MywiRGlnaXQ4IiwyOSwiOCIsNTYsIlZLXzgiLCIiLCIiXSxbMzAsMCw0NCwiRGlnaXQ5IiwzMCwiOSIsNTcsIlZLXzkiLCIiLCIiXSxbMjEsMCw0NSwiRGlnaXQwIiwyMSwiMCIsNDgsIlZLXzAiLCIiLCIiXSxbMywxLDQ2LCJFbnRlciIsMywiRW50ZXIiLDEzLCJWS19SRVRVUk4iLCIiLCIiXSxbOSwxLDQ3LCJFc2NhcGUiLDksIkVzY2FwZSIsMjcsIlZLX0VTQ0FQRSIsIiIsIiJdLFsxLDEsNDgsIkJhY2tzcGFjZSIsMSwiQmFja3NwYWNlIiw4LCJWS19CQUNLIiwiIiwiIl0sWzIsMSw0OSwiVGFiIiwyLCJUYWIiLDksIlZLX1RBQiIsIiIsIiJdLFsxMCwxLDUwLCJTcGFjZSIsMTAsIlNwYWNlIiwzMiwiVktfU1BBQ0UiLCIiLCIiXSxbODMsMCw1MSwiTWludXMiLDgzLCItIiwxODksIlZLX09FTV9NSU5VUyIsIi0iLCJPRU1fTUlOVVMiXSxbODEsMCw1MiwiRXF1YWwiLDgxLCI9IiwxODcsIlZLX09FTV9QTFVTIiwiPSIsIk9FTV9QTFVTIl0sWzg3LDAsNTMsIkJyYWNrZXRMZWZ0Iiw4NywiWyIsMjE5LCJWS19PRU1fNCIsIlsiLCJPRU1fNCJdLFs4OSwwLDU0LCJCcmFja2V0UmlnaHQiLDg5LCJdIiwyMjEsIlZLX09FTV82IiwiXSIsIk9FTV82Il0sWzg4LDAsNTUsIkJhY2tzbGFzaCIsODgsIlxcIiwyMjAsIlZLX09FTV81IiwiXFwiLCJPRU1fNSJdLFswLDAsNTYsIkludGxIYXNoIiwwLCIiLDAsIiIsIiIsIiJdLFs4MCwwLDU3LCJTZW1pY29sb24iLDgwLCI7IiwxODYsIlZLX09FTV8xIiwiOyIsIk9FTV8xIl0sWzkwLDAsNTgsIlF1b3RlIiw5MCwiJyIsMjIyLCJWS19PRU1fNyIsIiciLCJPRU1fNyJdLFs4NiwwLDU5LCJCYWNrcXVvdGUiLDg2LCJgIiwxOTIsIlZLX09FTV8zIiwiYCIsIk9FTV8zIl0sWzgyLDAsNjAsIkNvbW1hIiw4MiwiLCIsMTg4LCJWS19PRU1fQ09NTUEiLCIsIiwiT0VNX0NPTU1BIl0sWzg0LDAsNjEsIlBlcmlvZCIsODQsIi4iLDE5MCwiVktfT0VNX1BFUklPRCIsIi4iLCJPRU1fUEVSSU9EIl0sWzg1LDAsNjIsIlNsYXNoIiw4NSwiLyIsMTkxLCJWS19PRU1fMiIsIi8iLCJPRU1fMiJdLFs4LDEsNjMsIkNhcHNMb2NrIiw4LCJDYXBzTG9jayIsMjAsIlZLX0NBUElUQUwiLCIiLCIiXSxbNTksMSw2NCwiRjEiLDU5LCJGMSIsMTEyLCJWS19GMSIsIiIsIiJdLFs2MCwxLDY1LCJGMiIsNjAsIkYyIiwxMTMsIlZLX0YyIiwiIiwiIl0sWzYxLDEsNjYsIkYzIiw2MSwiRjMiLDExNCwiVktfRjMiLCIiLCIiXSxbNjIsMSw2NywiRjQiLDYyLCJGNCIsMTE1LCJWS19GNCIsIiIsIiJdLFs2MywxLDY4LCJGNSIsNjMsIkY1IiwxMTYsIlZLX0Y1IiwiIiwiIl0sWzY0LDEsNjksIkY2Iiw2NCwiRjYiLDExNywiVktfRjYiLCIiLCIiXSxbNjUsMSw3MCwiRjciLDY1LCJGNyIsMTE4LCJWS19GNyIsIiIsIiJdLFs2NiwxLDcxLCJGOCIsNjYsIkY4IiwxMTksIlZLX0Y4IiwiIiwiIl0sWzY3LDEsNzIsIkY5Iiw2NywiRjkiLDEyMCwiVktfRjkiLCIiLCIiXSxbNjgsMSw3MywiRjEwIiw2OCwiRjEwIiwxMjEsIlZLX0YxMCIsIiIsIiJdLFs2OSwxLDc0LCJGMTEiLDY5LCJGMTEiLDEyMiwiVktfRjExIiwiIiwiIl0sWzcwLDEsNzUsIkYxMiIsNzAsIkYxMiIsMTIzLCJWS19GMTIiLCIiLCIiXSxbMCwxLDc2LCJQcmludFNjcmVlbiIsMCwiIiwwLCIiLCIiLCIiXSxbNzksMSw3NywiU2Nyb2xsTG9jayIsNzksIlNjcm9sbExvY2siLDE0NSwiVktfU0NST0xMIiwiIiwiIl0sWzcsMSw3OCwiUGF1c2UiLDcsIlBhdXNlQnJlYWsiLDE5LCJWS19QQVVTRSIsIiIsIiJdLFsxOSwxLDc5LCJJbnNlcnQiLDE5LCJJbnNlcnQiLDQ1LCJWS19JTlNFUlQiLCIiLCIiXSxbMTQsMSw4MCwiSG9tZSIsMTQsIkhvbWUiLDM2LCJWS19IT01FIiwiIiwiIl0sWzExLDEsODEsIlBhZ2VVcCIsMTEsIlBhZ2VVcCIsMzMsIlZLX1BSSU9SIiwiIiwiIl0sWzIwLDEsODIsIkRlbGV0ZSIsMjAsIkRlbGV0ZSIsNDYsIlZLX0RFTEVURSIsIiIsIiJdLFsxMywxLDgzLCJFbmQiLDEzLCJFbmQiLDM1LCJWS19FTkQiLCIiLCIiXSxbMTIsMSw4NCwiUGFnZURvd24iLDEyLCJQYWdlRG93biIsMzQsIlZLX05FWFQiLCIiLCIiXSxbMTcsMSw4NSwiQXJyb3dSaWdodCIsMTcsIlJpZ2h0QXJyb3ciLDM5LCJWS19SSUdIVCIsIlJpZ2h0IiwiIl0sWzE1LDEsODYsIkFycm93TGVmdCIsMTUsIkxlZnRBcnJvdyIsMzcsIlZLX0xFRlQiLCJMZWZ0IiwiIl0sWzE4LDEsODcsIkFycm93RG93biIsMTgsIkRvd25BcnJvdyIsNDAsIlZLX0RPV04iLCJEb3duIiwiIl0sWzE2LDEsODgsIkFycm93VXAiLDE2LCJVcEFycm93IiwzOCwiVktfVVAiLCJVcCIsIiJdLFs3OCwxLDg5LCJOdW1Mb2NrIiw3OCwiTnVtTG9jayIsMTQ0LCJWS19OVU1MT0NLIiwiIiwiIl0sWzEwOCwxLDkwLCJOdW1wYWREaXZpZGUiLDEwOCwiTnVtUGFkX0RpdmlkZSIsMTExLCJWS19ESVZJREUiLCIiLCIiXSxbMTAzLDEsOTEsIk51bXBhZE11bHRpcGx5IiwxMDMsIk51bVBhZF9NdWx0aXBseSIsMTA2LCJWS19NVUxUSVBMWSIsIiIsIiJdLFsxMDYsMSw5MiwiTnVtcGFkU3VidHJhY3QiLDEwNiwiTnVtUGFkX1N1YnRyYWN0IiwxMDksIlZLX1NVQlRSQUNUIiwiIiwiIl0sWzEwNCwxLDkzLCJOdW1wYWRBZGQiLDEwNCwiTnVtUGFkX0FkZCIsMTA3LCJWS19BREQiLCIiLCIiXSxbMywxLDk0LCJOdW1wYWRFbnRlciIsMywiIiwwLCIiLCIiLCIiXSxbOTQsMSw5NSwiTnVtcGFkMSIsOTQsIk51bVBhZDEiLDk3LCJWS19OVU1QQUQxIiwiIiwiIl0sWzk1LDEsOTYsIk51bXBhZDIiLDk1LCJOdW1QYWQyIiw5OCwiVktfTlVNUEFEMiIsIiIsIiJdLFs5NiwxLDk3LCJOdW1wYWQzIiw5NiwiTnVtUGFkMyIsOTksIlZLX05VTVBBRDMiLCIiLCIiXSxbOTcsMSw5OCwiTnVtcGFkNCIsOTcsIk51bVBhZDQiLDEwMCwiVktfTlVNUEFENCIsIiIsIiJdLFs5OCwxLDk5LCJOdW1wYWQ1Iiw5OCwiTnVtUGFkNSIsMTAxLCJWS19OVU1QQUQ1IiwiIiwiIl0sWzk5LDEsMTAwLCJOdW1wYWQ2Iiw5OSwiTnVtUGFkNiIsMTAyLCJWS19OVU1QQUQ2IiwiIiwiIl0sWzEwMCwxLDEwMSwiTnVtcGFkNyIsMTAwLCJOdW1QYWQ3IiwxMDMsIlZLX05VTVBBRDciLCIiLCIiXSxbMTAxLDEsMTAyLCJOdW1wYWQ4IiwxMDEsIk51bVBhZDgiLDEwNCwiVktfTlVNUEFEOCIsIiIsIiJdLFsxMDIsMSwxMDMsIk51bXBhZDkiLDEwMiwiTnVtUGFkOSIsMTA1LCJWS19OVU1QQUQ5IiwiIiwiIl0sWzkzLDEsMTA0LCJOdW1wYWQwIiw5MywiTnVtUGFkMCIsOTYsIlZLX05VTVBBRDAiLCIiLCIiXSxbMTA3LDEsMTA1LCJOdW1wYWREZWNpbWFsIiwxMDcsIk51bVBhZF9EZWNpbWFsIiwxMTAsIlZLX0RFQ0lNQUwiLCIiLCIiXSxbOTIsMCwxMDYsIkludGxCYWNrc2xhc2giLDkyLCJPRU1fMTAyIiwyMjYsIlZLX09FTV8xMDIiLCIiLCIiXSxbNTgsMSwxMDcsIkNvbnRleHRNZW51Iiw1OCwiQ29udGV4dE1lbnUiLDkzLCIiLCIiLCIiXSxbMCwxLDEwOCwiUG93ZXIiLDAsIiIsMCwiIiwiIiwiIl0sWzAsMSwxMDksIk51bXBhZEVxdWFsIiwwLCIiLDAsIiIsIiIsIiJdLFs3MSwxLDExMCwiRjEzIiw3MSwiRjEzIiwxMjQsIlZLX0YxMyIsIiIsIiJdLFs3MiwxLDExMSwiRjE0Iiw3MiwiRjE0IiwxMjUsIlZLX0YxNCIsIiIsIiJdLFs3MywxLDExMiwiRjE1Iiw3MywiRjE1IiwxMjYsIlZLX0YxNSIsIiIsIiJdLFs3NCwxLDExMywiRjE2Iiw3NCwiRjE2IiwxMjcsIlZLX0YxNiIsIiIsIiJdLFs3NSwxLDExNCwiRjE3Iiw3NSwiRjE3IiwxMjgsIlZLX0YxNyIsIiIsIiJdLFs3NiwxLDExNSwiRjE4Iiw3NiwiRjE4IiwxMjksIlZLX0YxOCIsIiIsIiJdLFs3NywxLDExNiwiRjE5Iiw3NywiRjE5IiwxMzAsIlZLX0YxOSIsIiIsIiJdLFswLDEsMTE3LCJGMjAiLDAsIiIsMCwiVktfRjIwIiwiIiwiIl0sWzAsMSwxMTgsIkYyMSIsMCwiIiwwLCJWS19GMjEiLCIiLCIiXSxbMCwxLDExOSwiRjIyIiwwLCIiLDAsIlZLX0YyMiIsIiIsIiJdLFswLDEsMTIwLCJGMjMiLDAsIiIsMCwiVktfRjIzIiwiIiwiIl0sWzAsMSwxMjEsIkYyNCIsMCwiIiwwLCJWS19GMjQiLCIiLCIiXSxbMCwxLDEyMiwiT3BlbiIsMCwiIiwwLCIiLCIiLCIiXSxbMCwxLDEyMywiSGVscCIsMCwiIiwwLCIiLCIiLCIiXSxbMCwxLDEyNCwiU2VsZWN0IiwwLCIiLDAsIiIsIiIsIiJdLFswLDEsMTI1LCJBZ2FpbiIsMCwiIiwwLCIiLCIiLCIiXSxbMCwxLDEyNiwiVW5kbyIsMCwiIiwwLCIiLCIiLCIiXSxbMCwxLDEyNywiQ3V0IiwwLCIiLDAsIiIsIiIsIiJdLFswLDEsMTI4LCJDb3B5IiwwLCIiLDAsIiIsIiIsIiJdLFswLDEsMTI5LCJQYXN0ZSIsMCwiIiwwLCIiLCIiLCIiXSxbMCwxLDEzMCwiRmluZCIsMCwiIiwwLCIiLCIiLCIiXSxbMCwxLDEzMSwiQXVkaW9Wb2x1bWVNdXRlIiwxMTIsIkF1ZGlvVm9sdW1lTXV0ZSIsMTczLCJWS19WT0xVTUVfTVVURSIsIiIsIiJdLFswLDEsMTMyLCJBdWRpb1ZvbHVtZVVwIiwxMTMsIkF1ZGlvVm9sdW1lVXAiLDE3NSwiVktfVk9MVU1FX1VQIiwiIiwiIl0sWzAsMSwxMzMsIkF1ZGlvVm9sdW1lRG93biIsMTE0LCJBdWRpb1ZvbHVtZURvd24iLDE3NCwiVktfVk9MVU1FX0RPV04iLCIiLCIiXSxbMTA1LDEsMTM0LCJOdW1wYWRDb21tYSIsMTA1LCJOdW1QYWRfU2VwYXJhdG9yIiwxMDgsIlZLX1NFUEFSQVRPUiIsIiIsIiJdLFsxMTAsMCwxMzUsIkludGxSbyIsMTEwLCJBQk5UX0MxIiwxOTMsIlZLX0FCTlRfQzEiLCIiLCIiXSxbMCwxLDEzNiwiS2FuYU1vZGUiLDAsIiIsMCwiIiwiIiwiIl0sWzAsMCwxMzcsIkludGxZZW4iLDAsIiIsMCwiIiwiIiwiIl0sWzAsMSwxMzgsIkNvbnZlcnQiLDAsIiIsMCwiIiwiIiwiIl0sWzAsMSwxMzksIk5vbkNvbnZlcnQiLDAsIiIsMCwiIiwiIiwiIl0sWzAsMSwxNDAsIkxhbmcxIiwwLCIiLDAsIiIsIiIsIiJdLFswLDEsMTQxLCJMYW5nMiIsMCwiIiwwLCIiLCIiLCIiXSxbMCwxLDE0MiwiTGFuZzMiLDAsIiIsMCwiIiwiIiwiIl0sWzAsMSwxNDMsIkxhbmc0IiwwLCIiLDAsIiIsIiIsIiJdLFswLDEsMTQ0LCJMYW5nNSIsMCwiIiwwLCIiLCIiLCIiXSxbMCwxLDE0NSwiQWJvcnQiLDAsIiIsMCwiIiwiIiwiIl0sWzAsMSwxNDYsIlByb3BzIiwwLCIiLDAsIiIsIiIsIiJdLFswLDEsMTQ3LCJOdW1wYWRQYXJlbkxlZnQiLDAsIiIsMCwiIiwiIiwiIl0sWzAsMSwxNDgsIk51bXBhZFBhcmVuUmlnaHQiLDAsIiIsMCwiIiwiIiwiIl0sWzAsMSwxNDksIk51bXBhZEJhY2tzcGFjZSIsMCwiIiwwLCIiLCIiLCIiXSxbMCwxLDE1MCwiTnVtcGFkTWVtb3J5U3RvcmUiLDAsIiIsMCwiIiwiIiwiIl0sWzAsMSwxNTEsIk51bXBhZE1lbW9yeVJlY2FsbCIsMCwiIiwwLCIiLCIiLCIiXSxbMCwxLDE1MiwiTnVtcGFkTWVtb3J5Q2xlYXIiLDAsIiIsMCwiIiwiIiwiIl0sWzAsMSwxNTMsIk51bXBhZE1lbW9yeUFkZCIsMCwiIiwwLCIiLCIiLCIiXSxbMCwxLDE1NCwiTnVtcGFkTWVtb3J5U3VidHJhY3QiLDAsIiIsMCwiIiwiIiwiIl0sWzAsMSwxNTUsIk51bXBhZENsZWFyIiwwLCIiLDAsIiIsIiIsIiJdLFswLDEsMTU2LCJOdW1wYWRDbGVhckVudHJ5IiwwLCIiLDAsIiIsIiIsIiJdLFs1LDEsMCwiIiw1LCJDdHJsIiwxNywiVktfQ09OVFJPTCIsIiIsIiJdLFs0LDEsMCwiIiw0LCJTaGlmdCIsMTYsIlZLX1NISUZUIiwiIiwiIl0sWzYsMSwwLCIiLDYsIkFsdCIsMTgsIlZLX01FTlUiLCIiLCIiXSxbNTcsMSwwLCIiLDU3LCJNZXRhIiwwLCJWS19DT01NQU5EIiwiIiwiIl0sWzUsMSwxNTcsIkNvbnRyb2xMZWZ0Iiw1LCIiLDAsIlZLX0xDT05UUk9MIiwiIiwiIl0sWzQsMSwxNTgsIlNoaWZ0TGVmdCIsNCwiIiwwLCJWS19MU0hJRlQiLCIiLCIiXSxbNiwxLDE1OSwiQWx0TGVmdCIsNiwiIiwwLCJWS19MTUVOVSIsIiIsIiJdLFs1NywxLDE2MCwiTWV0YUxlZnQiLDU3LCIiLDAsIlZLX0xXSU4iLCIiLCIiXSxbNSwxLDE2MSwiQ29udHJvbFJpZ2h0Iiw1LCIiLDAsIlZLX1JDT05UUk9MIiwiIiwiIl0sWzQsMSwxNjIsIlNoaWZ0UmlnaHQiLDQsIiIsMCwiVktfUlNISUZUIiwiIiwiIl0sWzYsMSwxNjMsIkFsdFJpZ2h0Iiw2LCIiLDAsIlZLX1JNRU5VIiwiIiwiIl0sWzU3LDEsMTY0LCJNZXRhUmlnaHQiLDU3LCIiLDAsIlZLX1JXSU4iLCIiLCIiXSxbMCwxLDE2NSwiQnJpZ2h0bmVzc1VwIiwwLCIiLDAsIiIsIiIsIiJdLFswLDEsMTY2LCJCcmlnaHRuZXNzRG93biIsMCwiIiwwLCIiLCIiLCIiXSxbMCwxLDE2NywiTWVkaWFQbGF5IiwwLCIiLDAsIiIsIiIsIiJdLFswLDEsMTY4LCJNZWRpYVJlY29yZCIsMCwiIiwwLCIiLCIiLCIiXSxbMCwxLDE2OSwiTWVkaWFGYXN0Rm9yd2FyZCIsMCwiIiwwLCIiLCIiLCIiXSxbMCwxLDE3MCwiTWVkaWFSZXdpbmQiLDAsIiIsMCwiIiwiIiwiIl0sWzExNCwxLDE3MSwiTWVkaWFUcmFja05leHQiLDExOSwiTWVkaWFUcmFja05leHQiLDE3NiwiVktfTUVESUFfTkVYVF9UUkFDSyIsIiIsIiJdLFsxMTUsMSwxNzIsIk1lZGlhVHJhY2tQcmV2aW91cyIsMTIwLCJNZWRpYVRyYWNrUHJldmlvdXMiLDE3NywiVktfTUVESUFfUFJFVl9UUkFDSyIsIiIsIiJdLFsxMTYsMSwxNzMsIk1lZGlhU3RvcCIsMTIxLCJNZWRpYVN0b3AiLDE3OCwiVktfTUVESUFfU1RPUCIsIiIsIiJdLFswLDEsMTc0LCJFamVjdCIsMCwiIiwwLCIiLCIiLCIiXSxbMTE3LDEsMTc1LCJNZWRpYVBsYXlQYXVzZSIsMTIyLCJNZWRpYVBsYXlQYXVzZSIsMTc5LCJWS19NRURJQV9QTEFZX1BBVVNFIiwiIiwiIl0sWzAsMSwxNzYsIk1lZGlhU2VsZWN0IiwxMjMsIkxhdW5jaE1lZGlhUGxheWVyIiwxODEsIlZLX01FRElBX0xBVU5DSF9NRURJQV9TRUxFQ1QiLCIiLCIiXSxbMCwxLDE3NywiTGF1bmNoTWFpbCIsMTI0LCJMYXVuY2hNYWlsIiwxODAsIlZLX01FRElBX0xBVU5DSF9NQUlMIiwiIiwiIl0sWzAsMSwxNzgsIkxhdW5jaEFwcDIiLDEyNSwiTGF1bmNoQXBwMiIsMTgzLCJWS19NRURJQV9MQVVOQ0hfQVBQMiIsIiIsIiJdLFswLDEsMTc5LCJMYXVuY2hBcHAxIiwwLCIiLDAsIlZLX01FRElBX0xBVU5DSF9BUFAxIiwiIiwiIl0sWzAsMSwxODAsIlNlbGVjdFRhc2siLDAsIiIsMCwiIiwiIiwiIl0sWzAsMSwxODEsIkxhdW5jaFNjcmVlblNhdmVyIiwwLCIiLDAsIiIsIiIsIiJdLFswLDEsMTgyLCJCcm93c2VyU2VhcmNoIiwxMTUsIkJyb3dzZXJTZWFyY2giLDE3MCwiVktfQlJPV1NFUl9TRUFSQ0giLCIiLCIiXSxbMCwxLDE4MywiQnJvd3NlckhvbWUiLDExNiwiQnJvd3NlckhvbWUiLDE3MiwiVktfQlJPV1NFUl9IT01FIiwiIiwiIl0sWzExMiwxLDE4NCwiQnJvd3NlckJhY2siLDExNywiQnJvd3NlckJhY2siLDE2NiwiVktfQlJPV1NFUl9CQUNLIiwiIiwiIl0sWzExMywxLDE4NSwiQnJvd3NlckZvcndhcmQiLDExOCwiQnJvd3NlckZvcndhcmQiLDE2NywiVktfQlJPV1NFUl9GT1JXQVJEIiwiIiwiIl0sWzAsMSwxODYsIkJyb3dzZXJTdG9wIiwwLCIiLDAsIlZLX0JST1dTRVJfU1RPUCIsIiIsIiJdLFswLDEsMTg3LCJCcm93c2VyUmVmcmVzaCIsMCwiIiwwLCJWS19CUk9XU0VSX1JFRlJFU0giLCIiLCIiXSxbMCwxLDE4OCwiQnJvd3NlckZhdm9yaXRlcyIsMCwiIiwwLCJWS19CUk9XU0VSX0ZBVk9SSVRFUyIsIiIsIiJdLFswLDEsMTg5LCJab29tVG9nZ2xlIiwwLCIiLDAsIiIsIiIsIiJdLFswLDEsMTkwLCJNYWlsUmVwbHkiLDAsIiIsMCwiIiwiIiwiIl0sWzAsMSwxOTEsIk1haWxGb3J3YXJkIiwwLCIiLDAsIiIsIiIsIiJdLFswLDEsMTkyLCJNYWlsU2VuZCIsMCwiIiwwLCIiLCIiLCIiXSxbMTA5LDEsMCwiIiwxMDksIktleUluQ29tcG9zaXRpb24iLDIyOSwiIiwiIiwiIl0sWzExMSwxLDAsIiIsMTExLCJBQk5UX0MyIiwxOTQsIlZLX0FCTlRfQzIiLCIiLCIiXSxbOTEsMSwwLCIiLDkxLCJPRU1fOCIsMjIzLCJWS19PRU1fOCIsIiIsIiJdLFswLDEsMCwiIiwwLCIiLDAsIlZLX0NMRUFSIiwiIiwiIl0sWzAsMSwwLCIiLDAsIiIsMCwiVktfS0FOQSIsIiIsIiJdLFswLDEsMCwiIiwwLCIiLDAsIlZLX0hBTkdVTCIsIiIsIiJdLFswLDEsMCwiIiwwLCIiLDAsIlZLX0pVTkpBIiwiIiwiIl0sWzAsMSwwLCIiLDAsIiIsMCwiVktfRklOQUwiLCIiLCIiXSxbMCwxLDAsIiIsMCwiIiwwLCJWS19IQU5KQSIsIiIsIiJdLFswLDEsMCwiIiwwLCIiLDAsIlZLX0tBTkpJIiwiIiwiIl0sWzAsMSwwLCIiLDAsIiIsMCwiVktfQ09OVkVSVCIsIiIsIiJdLFswLDEsMCwiIiwwLCIiLDAsIlZLX05PTkNPTlZFUlQiLCIiLCIiXSxbMCwxLDAsIiIsMCwiIiwwLCJWS19BQ0NFUFQiLCIiLCIiXSxbMCwxLDAsIiIsMCwiIiwwLCJWS19NT0RFQ0hBTkdFIiwiIiwiIl0sWzAsMSwwLCIiLDAsIiIsMCwiVktfU0VMRUNUIiwiIiwiIl0sWzAsMSwwLCIiLDAsIiIsMCwiVktfUFJJTlQiLCIiLCIiXSxbMCwxLDAsIiIsMCwiIiwwLCJWS19FWEVDVVRFIiwiIiwiIl0sWzAsMSwwLCIiLDAsIiIsMCwiVktfU05BUFNIT1QiLCIiLCIiXSxbMCwxLDAsIiIsMCwiIiwwLCJWS19IRUxQIiwiIiwiIl0sWzAsMSwwLCIiLDAsIiIsMCwiVktfQVBQUyIsIiIsIiJdLFswLDEsMCwiIiwwLCIiLDAsIlZLX1BST0NFU1NLRVkiLCIiLCIiXSxbMCwxLDAsIiIsMCwiIiwwLCJWS19QQUNLRVQiLCIiLCIiXSxbMCwxLDAsIiIsMCwiIiwwLCJWS19EQkVfU0JDU0NIQVIiLCIiLCIiXSxbMCwxLDAsIiIsMCwiIiwwLCJWS19EQkVfREJDU0NIQVIiLCIiLCIiXSxbMCwxLDAsIiIsMCwiIiwwLCJWS19BVFROIiwiIiwiIl0sWzAsMSwwLCIiLDAsIiIsMCwiVktfQ1JTRUwiLCIiLCIiXSxbMCwxLDAsIiIsMCwiIiwwLCJWS19FWFNFTCIsIiIsIiJdLFswLDEsMCwiIiwwLCIiLDAsIlZLX0VSRU9GIiwiIiwiIl0sWzAsMSwwLCIiLDAsIiIsMCwiVktfUExBWSIsIiIsIiJdLFswLDEsMCwiIiwwLCIiLDAsIlZLX1pPT00iLCIiLCIiXSxbMCwxLDAsIiIsMCwiIiwwLCJWS19OT05BTUUiLCIiLCIiXSxbMCwxLDAsIiIsMCwiIiwwLCJWS19QQTEiLCIiLCIiXSxbMCwxLDAsIiIsMCwiIiwwLCJWS19PRU1fQ0xFQVIiLCIiLCIiXV0pe2NvbnN0WyxuLGkscyxvLGEsbCx1LGgsZF09cjtpZih0W2ldfHwodFtpXT0hMCxTdFtpXT1zLHl0W3NdPWksRXRbcy50b0xvd2VyQ2FzZSgpXT1pLG4mJjAhPT0oQXRbaV09bykmJjMhPT1vJiY1IT09byYmNCE9PW8mJjYhPT1vJiY1NyE9PW8mJihNdFtvXT1pKSksIWVbb10pe2lmKGVbb109ITAsIWEpdGhyb3cgbmV3IEVycm9yKGBTdHJpbmcgcmVwcmVzZW50YXRpb24gbWlzc2luZyBmb3Iga2V5IGNvZGUgJHtvfSBhcm91bmQgc2NhbiBjb2RlIGArcyk7YnQuZGVmaW5lKG8sYSksdnQuZGVmaW5lKG8saHx8YSksTHQuZGVmaW5lKG8sZHx8aHx8YSl9bCYmKHd0W2xdPW8pLHUmJihOdFt1XT1vKX1NdFszXT00Nn0oKTtjbGFzcyB4dCBleHRlbmRzIHple2NvbnN0cnVjdG9yKGUsdCxyLG4pe3N1cGVyKGUsdCxyLG4pLHRoaXMuc2VsZWN0aW9uU3RhcnRMaW5lTnVtYmVyPWUsdGhpcy5zZWxlY3Rpb25TdGFydENvbHVtbj10LHRoaXMucG9zaXRpb25MaW5lTnVtYmVyPXIsdGhpcy5wb3NpdGlvbkNvbHVtbj1ufXRvU3RyaW5nKCl7cmV0dXJuIlsiK3RoaXMuc2VsZWN0aW9uU3RhcnRMaW5lTnVtYmVyKyIsIit0aGlzLnNlbGVjdGlvblN0YXJ0Q29sdW1uKyIgLT4gIit0aGlzLnBvc2l0aW9uTGluZU51bWJlcisiLCIrdGhpcy5wb3NpdGlvbkNvbHVtbisiXSJ9ZXF1YWxzU2VsZWN0aW9uKGUpe3JldHVybiB4dC5zZWxlY3Rpb25zRXF1YWwodGhpcyxlKX1zdGF0aWMgc2VsZWN0aW9uc0VxdWFsKGUsdCl7cmV0dXJuIGUuc2VsZWN0aW9uU3RhcnRMaW5lTnVtYmVyPT09dC5zZWxlY3Rpb25TdGFydExpbmVOdW1iZXImJmUuc2VsZWN0aW9uU3RhcnRDb2x1bW49PT10LnNlbGVjdGlvblN0YXJ0Q29sdW1uJiZlLnBvc2l0aW9uTGluZU51bWJlcj09PXQucG9zaXRpb25MaW5lTnVtYmVyJiZlLnBvc2l0aW9uQ29sdW1uPT09dC5wb3NpdGlvbkNvbHVtbn1nZXREaXJlY3Rpb24oKXtyZXR1cm4gdGhpcy5zZWxlY3Rpb25TdGFydExpbmVOdW1iZXI9PT10aGlzLnN0YXJ0TGluZU51bWJlciYmdGhpcy5zZWxlY3Rpb25TdGFydENvbHVtbj09PXRoaXMuc3RhcnRDb2x1bW4/MDoxfXNldEVuZFBvc2l0aW9uKGUsdCl7cmV0dXJuIDA9PT10aGlzLmdldERpcmVjdGlvbigpP25ldyB4dCh0aGlzLnN0YXJ0TGluZU51bWJlcix0aGlzLnN0YXJ0Q29sdW1uLGUsdCk6bmV3IHh0KGUsdCx0aGlzLnN0YXJ0TGluZU51bWJlcix0aGlzLnN0YXJ0Q29sdW1uKX1nZXRQb3NpdGlvbigpe3JldHVybiBuZXcgV2UodGhpcy5wb3NpdGlvbkxpbmVOdW1iZXIsdGhpcy5wb3NpdGlvbkNvbHVtbil9Z2V0U2VsZWN0aW9uU3RhcnQoKXtyZXR1cm4gbmV3IFdlKHRoaXMuc2VsZWN0aW9uU3RhcnRMaW5lTnVtYmVyLHRoaXMuc2VsZWN0aW9uU3RhcnRDb2x1bW4pfXNldFN0YXJ0UG9zaXRpb24oZSx0KXtyZXR1cm4gMD09PXRoaXMuZ2V0RGlyZWN0aW9uKCk/bmV3IHh0KGUsdCx0aGlzLmVuZExpbmVOdW1iZXIsdGhpcy5lbmRDb2x1bW4pOm5ldyB4dCh0aGlzLmVuZExpbmVOdW1iZXIsdGhpcy5lbmRDb2x1bW4sZSx0KX1zdGF0aWMgZnJvbVBvc2l0aW9ucyhlLHQ9ZSl7cmV0dXJuIG5ldyB4dChlLmxpbmVOdW1iZXIsZS5jb2x1bW4sdC5saW5lTnVtYmVyLHQuY29sdW1uKX1zdGF0aWMgZnJvbVJhbmdlKGUsdCl7cmV0dXJuIDA9PT10P25ldyB4dChlLnN0YXJ0TGluZU51bWJlcixlLnN0YXJ0Q29sdW1uLGUuZW5kTGluZU51bWJlcixlLmVuZENvbHVtbik6bmV3IHh0KGUuZW5kTGluZU51bWJlcixlLmVuZENvbHVtbixlLnN0YXJ0TGluZU51bWJlcixlLnN0YXJ0Q29sdW1uKX1zdGF0aWMgbGlmdFNlbGVjdGlvbihlKXtyZXR1cm4gbmV3IHh0KGUuc2VsZWN0aW9uU3RhcnRMaW5lTnVtYmVyLGUuc2VsZWN0aW9uU3RhcnRDb2x1bW4sZS5wb3NpdGlvbkxpbmVOdW1iZXIsZS5wb3NpdGlvbkNvbHVtbil9c3RhdGljIHNlbGVjdGlvbnNBcnJFcXVhbChyLG4pe2lmKHImJiFufHwhciYmbilyZXR1cm4hMTtpZighciYmIW4pcmV0dXJuITA7aWYoci5sZW5ndGghPT1uLmxlbmd0aClyZXR1cm4hMTtmb3IobGV0IGU9MCx0PXIubGVuZ3RoO2U8dDtlKyspaWYoIXRoaXMuc2VsZWN0aW9uc0VxdWFsKHJbZV0sbltlXSkpcmV0dXJuITE7cmV0dXJuITB9c3RhdGljIGlzSVNlbGVjdGlvbihlKXtyZXR1cm4gZSYmIm51bWJlciI9PXR5cGVvZiBlLnNlbGVjdGlvblN0YXJ0TGluZU51bWJlciYmIm51bWJlciI9PXR5cGVvZiBlLnNlbGVjdGlvblN0YXJ0Q29sdW1uJiYibnVtYmVyIj09dHlwZW9mIGUucG9zaXRpb25MaW5lTnVtYmVyJiYibnVtYmVyIj09dHlwZW9mIGUucG9zaXRpb25Db2x1bW59c3RhdGljIGNyZWF0ZVdpdGhEaXJlY3Rpb24oZSx0LHIsbixpKXtyZXR1cm4gMD09PWk/bmV3IHh0KGUsdCxyLG4pOm5ldyB4dChyLG4sZSx0KX19Y2xhc3MgS3R7Y29uc3RydWN0b3IoZSx0LHIpe3RoaXMuX3Rva2VuQnJhbmQ9dm9pZCAwLHRoaXMub2Zmc2V0PWUsdGhpcy50eXBlPXQsdGhpcy5sYW5ndWFnZT1yfXRvU3RyaW5nKCl7cmV0dXJuIigiK3RoaXMub2Zmc2V0KyIsICIrdGhpcy50eXBlKyIpIn19Y2xhc3MgVnR7Y29uc3RydWN0b3IoZSx0KXt0aGlzLl90b2tlbml6YXRpb25SZXN1bHRCcmFuZD12b2lkIDAsdGhpcy50b2tlbnM9ZSx0aGlzLmVuZFN0YXRlPXR9fWNsYXNzIEl0e2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5fdG9rZW5pemF0aW9uUmVzdWx0MkJyYW5kPXZvaWQgMCx0aGlzLnRva2Vucz1lLHRoaXMuZW5kU3RhdGU9dH19KEh0PWRlPWRlfHx7fSlbSHQuRGVwZW5kc09uS2JMYXlvdXQ9LTFdPSJEZXBlbmRzT25LYkxheW91dCIsSHRbSHQuVW5rbm93bj0wXT0iVW5rbm93biIsSHRbSHQuQmFja3NwYWNlPTFdPSJCYWNrc3BhY2UiLEh0W0h0LlRhYj0yXT0iVGFiIixIdFtIdC5FbnRlcj0zXT0iRW50ZXIiLEh0W0h0LlNoaWZ0PTRdPSJTaGlmdCIsSHRbSHQuQ3RybD01XT0iQ3RybCIsSHRbSHQuQWx0PTZdPSJBbHQiLEh0W0h0LlBhdXNlQnJlYWs9N109IlBhdXNlQnJlYWsiLEh0W0h0LkNhcHNMb2NrPThdPSJDYXBzTG9jayIsSHRbSHQuRXNjYXBlPTldPSJFc2NhcGUiLEh0W0h0LlNwYWNlPTEwXT0iU3BhY2UiLEh0W0h0LlBhZ2VVcD0xMV09IlBhZ2VVcCIsSHRbSHQuUGFnZURvd249MTJdPSJQYWdlRG93biIsSHRbSHQuRW5kPTEzXT0iRW5kIixIdFtIdC5Ib21lPTE0XT0iSG9tZSIsSHRbSHQuTGVmdEFycm93PTE1XT0iTGVmdEFycm93IixIdFtIdC5VcEFycm93PTE2XT0iVXBBcnJvdyIsSHRbSHQuUmlnaHRBcnJvdz0xN109IlJpZ2h0QXJyb3ciLEh0W0h0LkRvd25BcnJvdz0xOF09IkRvd25BcnJvdyIsSHRbSHQuSW5zZXJ0PTE5XT0iSW5zZXJ0IixIdFtIdC5EZWxldGU9MjBdPSJEZWxldGUiLEh0W0h0LkRpZ2l0MD0yMV09IkRpZ2l0MCIsSHRbSHQuRGlnaXQxPTIyXT0iRGlnaXQxIixIdFtIdC5EaWdpdDI9MjNdPSJEaWdpdDIiLEh0W0h0LkRpZ2l0Mz0yNF09IkRpZ2l0MyIsSHRbSHQuRGlnaXQ0PTI1XT0iRGlnaXQ0IixIdFtIdC5EaWdpdDU9MjZdPSJEaWdpdDUiLEh0W0h0LkRpZ2l0Nj0yN109IkRpZ2l0NiIsSHRbSHQuRGlnaXQ3PTI4XT0iRGlnaXQ3IixIdFtIdC5EaWdpdDg9MjldPSJEaWdpdDgiLEh0W0h0LkRpZ2l0OT0zMF09IkRpZ2l0OSIsSHRbSHQuS2V5QT0zMV09IktleUEiLEh0W0h0LktleUI9MzJdPSJLZXlCIixIdFtIdC5LZXlDPTMzXT0iS2V5QyIsSHRbSHQuS2V5RD0zNF09IktleUQiLEh0W0h0LktleUU9MzVdPSJLZXlFIixIdFtIdC5LZXlGPTM2XT0iS2V5RiIsSHRbSHQuS2V5Rz0zN109IktleUciLEh0W0h0LktleUg9MzhdPSJLZXlIIixIdFtIdC5LZXlJPTM5XT0iS2V5SSIsSHRbSHQuS2V5Sj00MF09IktleUoiLEh0W0h0LktleUs9NDFdPSJLZXlLIixIdFtIdC5LZXlMPTQyXT0iS2V5TCIsSHRbSHQuS2V5TT00M109IktleU0iLEh0W0h0LktleU49NDRdPSJLZXlOIixIdFtIdC5LZXlPPTQ1XT0iS2V5TyIsSHRbSHQuS2V5UD00Nl09IktleVAiLEh0W0h0LktleVE9NDddPSJLZXlRIixIdFtIdC5LZXlSPTQ4XT0iS2V5UiIsSHRbSHQuS2V5Uz00OV09IktleVMiLEh0W0h0LktleVQ9NTBdPSJLZXlUIixIdFtIdC5LZXlVPTUxXT0iS2V5VSIsSHRbSHQuS2V5Vj01Ml09IktleVYiLEh0W0h0LktleVc9NTNdPSJLZXlXIixIdFtIdC5LZXlYPTU0XT0iS2V5WCIsSHRbSHQuS2V5WT01NV09IktleVkiLEh0W0h0LktleVo9NTZdPSJLZXlaIixIdFtIdC5NZXRhPTU3XT0iTWV0YSIsSHRbSHQuQ29udGV4dE1lbnU9NThdPSJDb250ZXh0TWVudSIsSHRbSHQuRjE9NTldPSJGMSIsSHRbSHQuRjI9NjBdPSJGMiIsSHRbSHQuRjM9NjFdPSJGMyIsSHRbSHQuRjQ9NjJdPSJGNCIsSHRbSHQuRjU9NjNdPSJGNSIsSHRbSHQuRjY9NjRdPSJGNiIsSHRbSHQuRjc9NjVdPSJGNyIsSHRbSHQuRjg9NjZdPSJGOCIsSHRbSHQuRjk9NjddPSJGOSIsSHRbSHQuRjEwPTY4XT0iRjEwIixIdFtIdC5GMTE9NjldPSJGMTEiLEh0W0h0LkYxMj03MF09IkYxMiIsSHRbSHQuRjEzPTcxXT0iRjEzIixIdFtIdC5GMTQ9NzJdPSJGMTQiLEh0W0h0LkYxNT03M109IkYxNSIsSHRbSHQuRjE2PTc0XT0iRjE2IixIdFtIdC5GMTc9NzVdPSJGMTciLEh0W0h0LkYxOD03Nl09IkYxOCIsSHRbSHQuRjE5PTc3XT0iRjE5IixIdFtIdC5OdW1Mb2NrPTc4XT0iTnVtTG9jayIsSHRbSHQuU2Nyb2xsTG9jaz03OV09IlNjcm9sbExvY2siLEh0W0h0LlNlbWljb2xvbj04MF09IlNlbWljb2xvbiIsSHRbSHQuRXF1YWw9ODFdPSJFcXVhbCIsSHRbSHQuQ29tbWE9ODJdPSJDb21tYSIsSHRbSHQuTWludXM9ODNdPSJNaW51cyIsSHRbSHQuUGVyaW9kPTg0XT0iUGVyaW9kIixIdFtIdC5TbGFzaD04NV09IlNsYXNoIixIdFtIdC5CYWNrcXVvdGU9ODZdPSJCYWNrcXVvdGUiLEh0W0h0LkJyYWNrZXRMZWZ0PTg3XT0iQnJhY2tldExlZnQiLEh0W0h0LkJhY2tzbGFzaD04OF09IkJhY2tzbGFzaCIsSHRbSHQuQnJhY2tldFJpZ2h0PTg5XT0iQnJhY2tldFJpZ2h0IixIdFtIdC5RdW90ZT05MF09IlF1b3RlIixIdFtIdC5PRU1fOD05MV09Ik9FTV84IixIdFtIdC5JbnRsQmFja3NsYXNoPTkyXT0iSW50bEJhY2tzbGFzaCIsSHRbSHQuTnVtcGFkMD05M109Ik51bXBhZDAiLEh0W0h0Lk51bXBhZDE9OTRdPSJOdW1wYWQxIixIdFtIdC5OdW1wYWQyPTk1XT0iTnVtcGFkMiIsSHRbSHQuTnVtcGFkMz05Nl09Ik51bXBhZDMiLEh0W0h0Lk51bXBhZDQ9OTddPSJOdW1wYWQ0IixIdFtIdC5OdW1wYWQ1PTk4XT0iTnVtcGFkNSIsSHRbSHQuTnVtcGFkNj05OV09Ik51bXBhZDYiLEh0W0h0Lk51bXBhZDc9MTAwXT0iTnVtcGFkNyIsSHRbSHQuTnVtcGFkOD0xMDFdPSJOdW1wYWQ4IixIdFtIdC5OdW1wYWQ5PTEwMl09Ik51bXBhZDkiLEh0W0h0Lk51bXBhZE11bHRpcGx5PTEwM109Ik51bXBhZE11bHRpcGx5IixIdFtIdC5OdW1wYWRBZGQ9MTA0XT0iTnVtcGFkQWRkIixIdFtIdC5OVU1QQURfU0VQQVJBVE9SPTEwNV09Ik5VTVBBRF9TRVBBUkFUT1IiLEh0W0h0Lk51bXBhZFN1YnRyYWN0PTEwNl09Ik51bXBhZFN1YnRyYWN0IixIdFtIdC5OdW1wYWREZWNpbWFsPTEwN109Ik51bXBhZERlY2ltYWwiLEh0W0h0Lk51bXBhZERpdmlkZT0xMDhdPSJOdW1wYWREaXZpZGUiLEh0W0h0LktFWV9JTl9DT01QT1NJVElPTj0xMDldPSJLRVlfSU5fQ09NUE9TSVRJT04iLEh0W0h0LkFCTlRfQzE9MTEwXT0iQUJOVF9DMSIsSHRbSHQuQUJOVF9DMj0xMTFdPSJBQk5UX0MyIixIdFtIdC5BdWRpb1ZvbHVtZU11dGU9MTEyXT0iQXVkaW9Wb2x1bWVNdXRlIixIdFtIdC5BdWRpb1ZvbHVtZVVwPTExM109IkF1ZGlvVm9sdW1lVXAiLEh0W0h0LkF1ZGlvVm9sdW1lRG93bj0xMTRdPSJBdWRpb1ZvbHVtZURvd24iLEh0W0h0LkJyb3dzZXJTZWFyY2g9MTE1XT0iQnJvd3NlclNlYXJjaCIsSHRbSHQuQnJvd3NlckhvbWU9MTE2XT0iQnJvd3NlckhvbWUiLEh0W0h0LkJyb3dzZXJCYWNrPTExN109IkJyb3dzZXJCYWNrIixIdFtIdC5Ccm93c2VyRm9yd2FyZD0xMThdPSJCcm93c2VyRm9yd2FyZCIsSHRbSHQuTWVkaWFUcmFja05leHQ9MTE5XT0iTWVkaWFUcmFja05leHQiLEh0W0h0Lk1lZGlhVHJhY2tQcmV2aW91cz0xMjBdPSJNZWRpYVRyYWNrUHJldmlvdXMiLEh0W0h0Lk1lZGlhU3RvcD0xMjFdPSJNZWRpYVN0b3AiLEh0W0h0Lk1lZGlhUGxheVBhdXNlPTEyMl09Ik1lZGlhUGxheVBhdXNlIixIdFtIdC5MYXVuY2hNZWRpYVBsYXllcj0xMjNdPSJMYXVuY2hNZWRpYVBsYXllciIsSHRbSHQuTGF1bmNoTWFpbD0xMjRdPSJMYXVuY2hNYWlsIixIdFtIdC5MYXVuY2hBcHAyPTEyNV09IkxhdW5jaEFwcDIiLEh0W0h0Lk1BWF9WQUxVRT0xMjZdPSJNQVhfVkFMVUUiLChIdD1jZT1jZXx8e30pW0h0LlRyYWNlPTBdPSJUcmFjZSIsSHRbSHQuRGVidWc9MV09IkRlYnVnIixIdFtIdC5JbmZvPTJdPSJJbmZvIixIdFtIdC5XYXJuaW5nPTNdPSJXYXJuaW5nIixIdFtIdC5FcnJvcj00XT0iRXJyb3IiLEh0W0h0LkNyaXRpY2FsPTVdPSJDcml0aWNhbCIsSHRbSHQuT2ZmPTZdPSJPZmYiLChIdD1tZT1tZXx8e30pW0h0LlBhcmFncmFwaD0wXT0iUGFyYWdyYXBoIixIdFtIdC5CcmVhaz0xXT0iQnJlYWsiLChIdD1mZT1mZXx8e30pW0h0LkhpbnQ9MV09IkhpbnQiLEh0W0h0LkluZm89Ml09IkluZm8iLEh0W0h0Lldhcm5pbmc9NF09Ildhcm5pbmciLEh0W0h0LkVycm9yPThdPSJFcnJvciIsKEh0PWdlPWdlfHx7fSlbSHQuVW5uZWNlc3Nhcnk9MV09IlVubmVjZXNzYXJ5IixIdFtIdC5EZXByZWNhdGVkPTJdPSJEZXByZWNhdGVkIiwoSHQ9X2U9X2V8fHt9KVtIdC5MVFI9MF09IkxUUiIsSHRbSHQuUlRMPTFdPSJSVEwiO2NvbnN0IFB0PW5ldyBjbGFzc3tjb25zdHJ1Y3Rvcigpe3RoaXMuX2ljb25zPW5ldyBNYXAsdGhpcy5fb25EaWRSZWdpc3Rlcj1uZXcgUn1hZGQoZSl7Y29uc3QgdD10aGlzLl9pY29ucy5nZXQoZS5pZCk7dD9lLmRlc2NyaXB0aW9uP3QuZGVzY3JpcHRpb249ZS5kZXNjcmlwdGlvbjpjb25zb2xlLmVycm9yKCJEdXBsaWNhdGUgcmVnaXN0cmF0aW9uIG9mIGNvZGljb24gIitlLmlkKToodGhpcy5faWNvbnMuc2V0KGUuaWQsZSksdGhpcy5fb25EaWRSZWdpc3Rlci5maXJlKGUpKX1nZXQoZSl7cmV0dXJuIHRoaXMuX2ljb25zLmdldChlKX1nZXQgYWxsKCl7cmV0dXJuIHRoaXMuX2ljb25zLnZhbHVlcygpfWdldCBvbkRpZFJlZ2lzdGVyKCl7cmV0dXJuIHRoaXMuX29uRGlkUmVnaXN0ZXIuZXZlbnR9fTtjbGFzcyBSdHtjb25zdHJ1Y3RvcihlLHQscil7dGhpcy5pZD1lLHRoaXMuZGVmaW5pdGlvbj10LHRoaXMuZGVzY3JpcHRpb249cixQdC5hZGQodGhpcyl9Z2V0IGNsYXNzTmFtZXMoKXtyZXR1cm4iY29kaWNvbiBjb2RpY29uLSIrdGhpcy5pZH1nZXQgY2xhc3NOYW1lc0FycmF5KCl7cmV0dXJuWyJjb2RpY29uIiwiY29kaWNvbi0iK3RoaXMuaWRdfWdldCBjc3NTZWxlY3Rvcigpe3JldHVybiIuY29kaWNvbi5jb2RpY29uLSIrdGhpcy5pZH19UnQuYWRkPW5ldyBSdCgiYWRkIix7Zm9udENoYXJhY3RlcjoiXFxlYTYwIn0pLFJ0LmxpZ2h0QnVsYj1uZXcgUnQoImxpZ2h0LWJ1bGIiLHtmb250Q2hhcmFjdGVyOiJcXGVhNjEifSksUnQud2FybmluZz1uZXcgUnQoIndhcm5pbmciLHtmb250Q2hhcmFjdGVyOiJcXGVhNmMifSksUnQuaW5mbz1uZXcgUnQoImluZm8iLHtmb250Q2hhcmFjdGVyOiJcXGVhNzQifSksUnQuY2xvc2U9bmV3IFJ0KCJjbG9zZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3NiJ9KSxSdC5zeW5jPW5ldyBSdCgic3luYyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3NyJ9KSxSdC5zeW1ib2xGb2xkZXI9bmV3IFJ0KCJzeW1ib2wtZm9sZGVyIix7Zm9udENoYXJhY3RlcjoiXFxlYTgzIn0pLFJ0LnN5bWJvbEV2ZW50PW5ldyBSdCgic3ltYm9sLWV2ZW50Iix7Zm9udENoYXJhY3RlcjoiXFxlYTg2In0pLFJ0LmVycm9yPW5ldyBSdCgiZXJyb3IiLHtmb250Q2hhcmFjdGVyOiJcXGVhODcifSksUnQuc3ltYm9sVmFyaWFibGU9bmV3IFJ0KCJzeW1ib2wtdmFyaWFibGUiLHtmb250Q2hhcmFjdGVyOiJcXGVhODgifSksUnQuc3ltYm9sQXJyYXk9bmV3IFJ0KCJzeW1ib2wtYXJyYXkiLHtmb250Q2hhcmFjdGVyOiJcXGVhOGEifSksUnQuc3ltYm9sTW9kdWxlPW5ldyBSdCgic3ltYm9sLW1vZHVsZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE4YiJ9KSxSdC5zeW1ib2xQYWNrYWdlPW5ldyBSdCgic3ltYm9sLXBhY2thZ2UiLHtmb250Q2hhcmFjdGVyOiJcXGVhOGIifSksUnQuc3ltYm9sTmFtZXNwYWNlPW5ldyBSdCgic3ltYm9sLW5hbWVzcGFjZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE4YiJ9KSxSdC5zeW1ib2xPYmplY3Q9bmV3IFJ0KCJzeW1ib2wtb2JqZWN0Iix7Zm9udENoYXJhY3RlcjoiXFxlYThiIn0pLFJ0LnN5bWJvbE1ldGhvZD1uZXcgUnQoInN5bWJvbC1tZXRob2QiLHtmb250Q2hhcmFjdGVyOiJcXGVhOGMifSksUnQuc3ltYm9sRnVuY3Rpb249bmV3IFJ0KCJzeW1ib2wtZnVuY3Rpb24iLHtmb250Q2hhcmFjdGVyOiJcXGVhOGMifSksUnQuc3ltYm9sQ29uc3RydWN0b3I9bmV3IFJ0KCJzeW1ib2wtY29uc3RydWN0b3IiLHtmb250Q2hhcmFjdGVyOiJcXGVhOGMifSksUnQuc3ltYm9sQm9vbGVhbj1uZXcgUnQoInN5bWJvbC1ib29sZWFuIix7Zm9udENoYXJhY3RlcjoiXFxlYThmIn0pLFJ0LnN5bWJvbE51bGw9bmV3IFJ0KCJzeW1ib2wtbnVsbCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE4ZiJ9KSxSdC5zeW1ib2xOdW1iZXI9bmV3IFJ0KCJzeW1ib2wtbnVtYmVyIix7Zm9udENoYXJhY3RlcjoiXFxlYTkwIn0pLFJ0LnN5bWJvbFN0cnVjdD1uZXcgUnQoInN5bWJvbC1zdHJ1Y3QiLHtmb250Q2hhcmFjdGVyOiJcXGVhOTEifSksUnQuc3ltYm9sVHlwZVBhcmFtZXRlcj1uZXcgUnQoInN5bWJvbC10eXBlLXBhcmFtZXRlciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE5MiJ9KSxSdC5zeW1ib2xLZXk9bmV3IFJ0KCJzeW1ib2wta2V5Iix7Zm9udENoYXJhY3RlcjoiXFxlYTkzIn0pLFJ0LnN5bWJvbFRleHQ9bmV3IFJ0KCJzeW1ib2wtdGV4dCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE5MyJ9KSxSdC5zeW1ib2xSZWZlcmVuY2U9bmV3IFJ0KCJzeW1ib2wtcmVmZXJlbmNlIix7Zm9udENoYXJhY3RlcjoiXFxlYTk0In0pLFJ0LnN5bWJvbEVudW09bmV3IFJ0KCJzeW1ib2wtZW51bSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE5NSJ9KSxSdC5zeW1ib2xWYWx1ZT1uZXcgUnQoInN5bWJvbC12YWx1ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE5NSJ9KSxSdC5zeW1ib2xVbml0PW5ldyBSdCgic3ltYm9sLXVuaXQiLHtmb250Q2hhcmFjdGVyOiJcXGVhOTYifSksUnQuYXJyb3dEb3duPW5ldyBSdCgiYXJyb3ctZG93biIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE5YSJ9KSxSdC5hcnJvd0xlZnQ9bmV3IFJ0KCJhcnJvdy1sZWZ0Iix7Zm9udENoYXJhY3RlcjoiXFxlYTliIn0pLFJ0LmFycm93VXA9bmV3IFJ0KCJhcnJvdy11cCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFhMSJ9KSxSdC5jYXNlU2Vuc2l0aXZlPW5ldyBSdCgiY2FzZS1zZW5zaXRpdmUiLHtmb250Q2hhcmFjdGVyOiJcXGVhYjEifSksUnQuY2hlY2s9bmV3IFJ0KCJjaGVjayIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFiMiJ9KSxSdC5jaGV2cm9uRG93bj1uZXcgUnQoImNoZXZyb24tZG93biIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFiNCJ9KSxSdC5jaGV2cm9uUmlnaHQ9bmV3IFJ0KCJjaGV2cm9uLXJpZ2h0Iix7Zm9udENoYXJhY3RlcjoiXFxlYWI2In0pLFJ0LmNoZXZyb25VcD1uZXcgUnQoImNoZXZyb24tdXAiLHtmb250Q2hhcmFjdGVyOiJcXGVhYjcifSksUnQubGlnaHRidWxiQXV0b2ZpeD1uZXcgUnQoImxpZ2h0YnVsYi1hdXRvZml4Iix7Zm9udENoYXJhY3RlcjoiXFxlYjEzIn0pLFJ0LmxvYWRpbmc9bmV3IFJ0KCJsb2FkaW5nIix7Zm9udENoYXJhY3RlcjoiXFxlYjE5In0pLFJ0LnByZXNlcnZlQ2FzZT1uZXcgUnQoInByZXNlcnZlLWNhc2UiLHtmb250Q2hhcmFjdGVyOiJcXGViMmUifSksUnQucmVnZXg9bmV3IFJ0KCJyZWdleCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIzOCJ9KSxSdC5yZW1vdmU9bmV3IFJ0KCJyZW1vdmUiLHtmb250Q2hhcmFjdGVyOiJcXGViM2IifSksUnQucmVwbGFjZUFsbD1uZXcgUnQoInJlcGxhY2UtYWxsIix7Zm9udENoYXJhY3RlcjoiXFxlYjNjIn0pLFJ0LnJlcGxhY2U9bmV3IFJ0KCJyZXBsYWNlIix7Zm9udENoYXJhY3RlcjoiXFxlYjNkIn0pLFJ0LnNwbGl0SG9yaXpvbnRhbD1uZXcgUnQoInNwbGl0LWhvcml6b250YWwiLHtmb250Q2hhcmFjdGVyOiJcXGViNTYifSksUnQuc3BsaXRWZXJ0aWNhbD1uZXcgUnQoInNwbGl0LXZlcnRpY2FsIix7Zm9udENoYXJhY3RlcjoiXFxlYjU3In0pLFJ0LnN5bWJvbENsYXNzPW5ldyBSdCgic3ltYm9sLWNsYXNzIix7Zm9udENoYXJhY3RlcjoiXFxlYjViIn0pLFJ0LnN5bWJvbENvbG9yPW5ldyBSdCgic3ltYm9sLWNvbG9yIix7Zm9udENoYXJhY3RlcjoiXFxlYjVjIn0pLFJ0LnN5bWJvbENvbnN0YW50PW5ldyBSdCgic3ltYm9sLWNvbnN0YW50Iix7Zm9udENoYXJhY3RlcjoiXFxlYjVkIn0pLFJ0LnN5bWJvbEVudW1NZW1iZXI9bmV3IFJ0KCJzeW1ib2wtZW51bS1tZW1iZXIiLHtmb250Q2hhcmFjdGVyOiJcXGViNWUifSksUnQuc3ltYm9sRmllbGQ9bmV3IFJ0KCJzeW1ib2wtZmllbGQiLHtmb250Q2hhcmFjdGVyOiJcXGViNWYifSksUnQuc3ltYm9sRmlsZT1uZXcgUnQoInN5bWJvbC1maWxlIix7Zm9udENoYXJhY3RlcjoiXFxlYjYwIn0pLFJ0LnN5bWJvbEludGVyZmFjZT1uZXcgUnQoInN5bWJvbC1pbnRlcmZhY2UiLHtmb250Q2hhcmFjdGVyOiJcXGViNjEifSksUnQuc3ltYm9sS2V5d29yZD1uZXcgUnQoInN5bWJvbC1rZXl3b3JkIix7Zm9udENoYXJhY3RlcjoiXFxlYjYyIn0pLFJ0LnN5bWJvbE9wZXJhdG9yPW5ldyBSdCgic3ltYm9sLW9wZXJhdG9yIix7Zm9udENoYXJhY3RlcjoiXFxlYjY0In0pLFJ0LnN5bWJvbFByb3BlcnR5PW5ldyBSdCgic3ltYm9sLXByb3BlcnR5Iix7Zm9udENoYXJhY3RlcjoiXFxlYjY1In0pLFJ0LnN5bWJvbFNuaXBwZXQ9bmV3IFJ0KCJzeW1ib2wtc25pcHBldCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI2NiJ9KSxSdC50cmlhbmdsZURvd249bmV3IFJ0KCJ0cmlhbmdsZS1kb3duIix7Zm9udENoYXJhY3RlcjoiXFxlYjZlIn0pLFJ0LnRyaWFuZ2xlTGVmdD1uZXcgUnQoInRyaWFuZ2xlLWxlZnQiLHtmb250Q2hhcmFjdGVyOiJcXGViNmYifSksUnQudHJpYW5nbGVSaWdodD1uZXcgUnQoInRyaWFuZ2xlLXJpZ2h0Iix7Zm9udENoYXJhY3RlcjoiXFxlYjcwIn0pLFJ0LnRyaWFuZ2xlVXA9bmV3IFJ0KCJ0cmlhbmdsZS11cCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI3MSJ9KSxSdC53aG9sZVdvcmQ9bmV3IFJ0KCJ3aG9sZS13b3JkIix7Zm9udENoYXJhY3RlcjoiXFxlYjdlIn0pLFJ0Lmxpc3RGaWx0ZXI9bmV3IFJ0KCJsaXN0LWZpbHRlciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI4MyJ9KSxSdC5saXN0U2VsZWN0aW9uPW5ldyBSdCgibGlzdC1zZWxlY3Rpb24iLHtmb250Q2hhcmFjdGVyOiJcXGViODUifSksUnQuc2VsZWN0aW9uPW5ldyBSdCgic2VsZWN0aW9uIix7Zm9udENoYXJhY3RlcjoiXFxlYjg1In0pLFJ0LnN5bWJvbFN0cmluZz1uZXcgUnQoInN5bWJvbC1zdHJpbmciLHtmb250Q2hhcmFjdGVyOiJcXGViOGQifSksUnQudHJlZUl0ZW1FeHBhbmRlZD1uZXcgUnQoInRyZWUtaXRlbS1leHBhbmRlZCIsUnQuY2hldnJvbkRvd24uZGVmaW5pdGlvbiksUnQudHJlZUZpbHRlck9uVHlwZU9uPW5ldyBSdCgidHJlZS1maWx0ZXItb24tdHlwZS1vbiIsUnQubGlzdEZpbHRlci5kZWZpbml0aW9uKSxSdC50cmVlRmlsdGVyT25UeXBlT2ZmPW5ldyBSdCgidHJlZS1maWx0ZXItb24tdHlwZS1vZmYiLFJ0Lmxpc3RTZWxlY3Rpb24uZGVmaW5pdGlvbiksUnQudHJlZUZpbHRlckNsZWFyPW5ldyBSdCgidHJlZS1maWx0ZXItY2xlYXIiLFJ0LmNsb3NlLmRlZmluaXRpb24pLFJ0LnRyZWVJdGVtTG9hZGluZz1uZXcgUnQoInRyZWUtaXRlbS1sb2FkaW5nIixSdC5sb2FkaW5nLmRlZmluaXRpb24pLFJ0Lm1lbnVTZWxlY3Rpb249bmV3IFJ0KCJtZW51LXNlbGVjdGlvbiIsUnQuY2hlY2suZGVmaW5pdGlvbiksUnQubWVudVN1Ym1lbnU9bmV3IFJ0KCJtZW51LXN1Ym1lbnUiLFJ0LmNoZXZyb25SaWdodC5kZWZpbml0aW9uKSxSdC5zY3JvbGxiYXJCdXR0b25MZWZ0PW5ldyBSdCgic2Nyb2xsYmFyLWJ1dHRvbi1sZWZ0IixSdC50cmlhbmdsZUxlZnQuZGVmaW5pdGlvbiksUnQuc2Nyb2xsYmFyQnV0dG9uUmlnaHQ9bmV3IFJ0KCJzY3JvbGxiYXItYnV0dG9uLXJpZ2h0IixSdC50cmlhbmdsZVJpZ2h0LmRlZmluaXRpb24pLFJ0LnNjcm9sbGJhckJ1dHRvblVwPW5ldyBSdCgic2Nyb2xsYmFyLWJ1dHRvbi11cCIsUnQudHJpYW5nbGVVcC5kZWZpbml0aW9uKSxSdC5zY3JvbGxiYXJCdXR0b25Eb3duPW5ldyBSdCgic2Nyb2xsYmFyLWJ1dHRvbi1kb3duIixSdC50cmlhbmdsZURvd24uZGVmaW5pdGlvbiksUnQucXVpY2tJbnB1dEJhY2s9bmV3IFJ0KCJxdWljay1pbnB1dC1iYWNrIixSdC5hcnJvd0xlZnQuZGVmaW5pdGlvbiksZnVuY3Rpb24oZSl7ZS5pY29uTmFtZVNlZ21lbnQ9IltBLVphLXowLTldKyIsZS5pY29uTmFtZUV4cHJlc3Npb249IltBLVphLXowLTktXSsiLGUuaWNvbk1vZGlmaWVyRXhwcmVzc2lvbj0ifltBLVphLXpdKyIsZS5pY29uTmFtZUNoYXJhY3Rlcj0iW0EtWmEtejAtOX4tXSI7Y29uc3QgaT1uZXcgUmVnRXhwKGBeKCR7ZS5pY29uTmFtZUV4cHJlc3Npb259KSgke2UuaWNvbk1vZGlmaWVyRXhwcmVzc2lvbn0pPyRgKTtmdW5jdGlvbiBzKGUpe2lmKGUgaW5zdGFuY2VvZiBSdClyZXR1cm5bImNvZGljb24iLCJjb2RpY29uLSIrZS5pZF07ZT1pLmV4ZWMoZS5pZCk7aWYoIWUpcmV0dXJuIHMoUnQuZXJyb3IpO2xldFssdCxyXT1lO2NvbnN0IG49WyJjb2RpY29uIiwiY29kaWNvbi0iK3RdO3JldHVybiByJiZuLnB1c2goImNvZGljb24tbW9kaWZpZXItIityLnN1YnN0cigxKSksbn1lLmFzQ2xhc3NOYW1lQXJyYXk9cyxlLmFzQ2xhc3NOYW1lPWZ1bmN0aW9uKGUpe3JldHVybiBzKGUpLmpvaW4oIiAiKX0sZS5hc0NTU1NlbGVjdG9yPWZ1bmN0aW9uKGUpe3JldHVybiIuIitzKGUpLmpvaW4oIi4iKX19KHBlPXBlfHx7fSk7Y2xhc3Mga3R7Y29uc3RydWN0b3IoKXt0aGlzW0NlXT0iTGlua2VkTWFwIix0aGlzLl9tYXA9bmV3IE1hcCx0aGlzLl9oZWFkPXZvaWQgMCx0aGlzLl90YWlsPXZvaWQgMCx0aGlzLl9zaXplPTAsdGhpcy5fc3RhdGU9MH1jbGVhcigpe3RoaXMuX21hcC5jbGVhcigpLHRoaXMuX2hlYWQ9dm9pZCAwLHRoaXMuX3RhaWw9dm9pZCAwLHRoaXMuX3NpemU9MCx0aGlzLl9zdGF0ZSsrfWlzRW1wdHkoKXtyZXR1cm4hdGhpcy5faGVhZCYmIXRoaXMuX3RhaWx9Z2V0IHNpemUoKXtyZXR1cm4gdGhpcy5fc2l6ZX1nZXQgZmlyc3QoKXt2YXIgZTtyZXR1cm4gbnVsbD09PShlPXRoaXMuX2hlYWQpfHx2b2lkIDA9PT1lP3ZvaWQgMDplLnZhbHVlfWdldCBsYXN0KCl7dmFyIGU7cmV0dXJuIG51bGw9PT0oZT10aGlzLl90YWlsKXx8dm9pZCAwPT09ZT92b2lkIDA6ZS52YWx1ZX1oYXMoZSl7cmV0dXJuIHRoaXMuX21hcC5oYXMoZSl9Z2V0KGUsdD0wKXtlPXRoaXMuX21hcC5nZXQoZSk7aWYoZSlyZXR1cm4gMCE9PXQmJnRoaXMudG91Y2goZSx0KSxlLnZhbHVlfXNldChlLHQscj0wKXtsZXQgbj10aGlzLl9tYXAuZ2V0KGUpO2lmKG4pbi52YWx1ZT10LDAhPT1yJiZ0aGlzLnRvdWNoKG4scik7ZWxzZXtzd2l0Y2gobj17a2V5OmUsdmFsdWU6dCxuZXh0OnZvaWQgMCxwcmV2aW91czp2b2lkIDB9LHIpe2Nhc2UgMDp0aGlzLmFkZEl0ZW1MYXN0KG4pO2JyZWFrO2Nhc2UgMTp0aGlzLmFkZEl0ZW1GaXJzdChuKTticmVhaztkZWZhdWx0OnRoaXMuYWRkSXRlbUxhc3Qobil9dGhpcy5fbWFwLnNldChlLG4pLHRoaXMuX3NpemUrK31yZXR1cm4gdGhpc31kZWxldGUoZSl7cmV0dXJuISF0aGlzLnJlbW92ZShlKX1yZW1vdmUoZSl7dmFyIHQ9dGhpcy5fbWFwLmdldChlKTtpZih0KXJldHVybiB0aGlzLl9tYXAuZGVsZXRlKGUpLHRoaXMucmVtb3ZlSXRlbSh0KSx0aGlzLl9zaXplLS0sdC52YWx1ZX1zaGlmdCgpe2lmKHRoaXMuX2hlYWR8fHRoaXMuX3RhaWwpe2lmKCF0aGlzLl9oZWFkfHwhdGhpcy5fdGFpbCl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgbGlzdCIpO3ZhciBlPXRoaXMuX2hlYWQ7cmV0dXJuIHRoaXMuX21hcC5kZWxldGUoZS5rZXkpLHRoaXMucmVtb3ZlSXRlbShlKSx0aGlzLl9zaXplLS0sZS52YWx1ZX19Zm9yRWFjaChlLHQpe3ZhciByPXRoaXMuX3N0YXRlO2xldCBuPXRoaXMuX2hlYWQ7Zm9yKDtuOyl7aWYoKHQ/ZS5iaW5kKHQpOmUpKG4udmFsdWUsbi5rZXksdGhpcyksdGhpcy5fc3RhdGUhPT1yKXRocm93IG5ldyBFcnJvcigiTGlua2VkTWFwIGdvdCBtb2RpZmllZCBkdXJpbmcgaXRlcmF0aW9uLiIpO249bi5uZXh0fX1rZXlzKCl7Y29uc3QgdD10aGlzLHI9dGhpcy5fc3RhdGU7bGV0IG49dGhpcy5faGVhZDtjb25zdCBlPXtbU3ltYm9sLml0ZXJhdG9yXSgpe3JldHVybiBlfSxuZXh0KCl7aWYodC5fc3RhdGUhPT1yKXRocm93IG5ldyBFcnJvcigiTGlua2VkTWFwIGdvdCBtb2RpZmllZCBkdXJpbmcgaXRlcmF0aW9uLiIpO2lmKG4pe3ZhciBlPXt2YWx1ZTpuLmtleSxkb25lOiExfTtyZXR1cm4gbj1uLm5leHQsZX1yZXR1cm57dmFsdWU6dm9pZCAwLGRvbmU6ITB9fX07cmV0dXJuIGV9dmFsdWVzKCl7Y29uc3QgdD10aGlzLHI9dGhpcy5fc3RhdGU7bGV0IG49dGhpcy5faGVhZDtjb25zdCBlPXtbU3ltYm9sLml0ZXJhdG9yXSgpe3JldHVybiBlfSxuZXh0KCl7aWYodC5fc3RhdGUhPT1yKXRocm93IG5ldyBFcnJvcigiTGlua2VkTWFwIGdvdCBtb2RpZmllZCBkdXJpbmcgaXRlcmF0aW9uLiIpO2lmKG4pe3ZhciBlPXt2YWx1ZTpuLnZhbHVlLGRvbmU6ITF9O3JldHVybiBuPW4ubmV4dCxlfXJldHVybnt2YWx1ZTp2b2lkIDAsZG9uZTohMH19fTtyZXR1cm4gZX1lbnRyaWVzKCl7Y29uc3QgdD10aGlzLHI9dGhpcy5fc3RhdGU7bGV0IG49dGhpcy5faGVhZDtjb25zdCBlPXtbU3ltYm9sLml0ZXJhdG9yXSgpe3JldHVybiBlfSxuZXh0KCl7aWYodC5fc3RhdGUhPT1yKXRocm93IG5ldyBFcnJvcigiTGlua2VkTWFwIGdvdCBtb2RpZmllZCBkdXJpbmcgaXRlcmF0aW9uLiIpO2lmKG4pe3ZhciBlPXt2YWx1ZTpbbi5rZXksbi52YWx1ZV0sZG9uZTohMX07cmV0dXJuIG49bi5uZXh0LGV9cmV0dXJue3ZhbHVlOnZvaWQgMCxkb25lOiEwfX19O3JldHVybiBlfVsoQ2U9U3ltYm9sLnRvU3RyaW5nVGFnLFN5bWJvbC5pdGVyYXRvcildKCl7cmV0dXJuIHRoaXMuZW50cmllcygpfXRyaW1PbGQocil7aWYoIShyPj10aGlzLnNpemUpKWlmKDAhPT1yKXtsZXQgZT10aGlzLl9oZWFkLHQ9dGhpcy5zaXplO2Zvcig7ZSYmdD5yOyl0aGlzLl9tYXAuZGVsZXRlKGUua2V5KSxlPWUubmV4dCx0LS07dGhpcy5faGVhZD1lLHRoaXMuX3NpemU9dCxlJiYoZS5wcmV2aW91cz12b2lkIDApLHRoaXMuX3N0YXRlKyt9ZWxzZSB0aGlzLmNsZWFyKCl9YWRkSXRlbUZpcnN0KGUpe2lmKHRoaXMuX2hlYWR8fHRoaXMuX3RhaWwpe2lmKCF0aGlzLl9oZWFkKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBsaXN0Iik7ZS5uZXh0PXRoaXMuX2hlYWQsdGhpcy5faGVhZC5wcmV2aW91cz1lfWVsc2UgdGhpcy5fdGFpbD1lO3RoaXMuX2hlYWQ9ZSx0aGlzLl9zdGF0ZSsrfWFkZEl0ZW1MYXN0KGUpe2lmKHRoaXMuX2hlYWR8fHRoaXMuX3RhaWwpe2lmKCF0aGlzLl90YWlsKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBsaXN0Iik7ZS5wcmV2aW91cz10aGlzLl90YWlsLHRoaXMuX3RhaWwubmV4dD1lfWVsc2UgdGhpcy5faGVhZD1lO3RoaXMuX3RhaWw9ZSx0aGlzLl9zdGF0ZSsrfXJlbW92ZUl0ZW0oZSl7aWYoZT09PXRoaXMuX2hlYWQmJmU9PT10aGlzLl90YWlsKXRoaXMuX2hlYWQ9dm9pZCAwLHRoaXMuX3RhaWw9dm9pZCAwO2Vsc2UgaWYoZT09PXRoaXMuX2hlYWQpe2lmKCFlLm5leHQpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGxpc3QiKTtlLm5leHQucHJldmlvdXM9dm9pZCAwLHRoaXMuX2hlYWQ9ZS5uZXh0fWVsc2UgaWYoZT09PXRoaXMuX3RhaWwpe2lmKCFlLnByZXZpb3VzKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBsaXN0Iik7ZS5wcmV2aW91cy5uZXh0PXZvaWQgMCx0aGlzLl90YWlsPWUucHJldmlvdXN9ZWxzZXtjb25zdCB0PWUubmV4dCxyPWUucHJldmlvdXM7aWYoIXR8fCFyKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBsaXN0Iik7dC5wcmV2aW91cz1yLHIubmV4dD10fWUubmV4dD12b2lkIDAsZS5wcmV2aW91cz12b2lkIDAsdGhpcy5fc3RhdGUrK310b3VjaChlLHQpe2lmKCF0aGlzLl9oZWFkfHwhdGhpcy5fdGFpbCl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgbGlzdCIpO2lmKDE9PT10fHwyPT09dClpZigxPT09dCl7aWYoZSE9PXRoaXMuX2hlYWQpe2NvbnN0IHI9ZS5uZXh0LG49ZS5wcmV2aW91cztlPT09dGhpcy5fdGFpbD8obi5uZXh0PXZvaWQgMCx0aGlzLl90YWlsPW4pOihyLnByZXZpb3VzPW4sbi5uZXh0PXIpLGUucHJldmlvdXM9dm9pZCAwLGUubmV4dD10aGlzLl9oZWFkLHRoaXMuX2hlYWQucHJldmlvdXM9ZSx0aGlzLl9oZWFkPWUsdGhpcy5fc3RhdGUrK319ZWxzZSBpZigyPT09dCYmZSE9PXRoaXMuX3RhaWwpe2NvbnN0IGk9ZS5uZXh0LHM9ZS5wcmV2aW91cztlPT09dGhpcy5faGVhZD8oaS5wcmV2aW91cz12b2lkIDAsdGhpcy5faGVhZD1pKTooaS5wcmV2aW91cz1zLHMubmV4dD1pKSxlLm5leHQ9dm9pZCAwLGUucHJldmlvdXM9dGhpcy5fdGFpbCx0aGlzLl90YWlsLm5leHQ9ZSx0aGlzLl90YWlsPWUsdGhpcy5fc3RhdGUrK319dG9KU09OKCl7Y29uc3Qgcj1bXTtyZXR1cm4gdGhpcy5mb3JFYWNoKChlLHQpPT57ci5wdXNoKFt0LGVdKX0pLHJ9ZnJvbUpTT04oZSl7dGhpcy5jbGVhcigpO2Zvcih2YXJbdCxyXW9mIGUpdGhpcy5zZXQodCxyKX19ZnVuY3Rpb24gRHQoZSx0LHIpe2lmKCFyfHxyLmxlbmd0aDx0Lmxlbmd0aClyZXR1cm4gbnVsbDtsZXQgbjt2YXIgaSxzO3JldHVybiBuPWU/KGk9cixlPShzPXQpLmxlbmd0aCwhKHMubGVuZ3RoPmkubGVuZ3RoKSYmMD09PU8oaSxzLDAsZSkpOjA9PT1yLmluZGV4T2YodCksbj8wPHQubGVuZ3RoP1t7c3RhcnQ6MCxlbmQ6dC5sZW5ndGh9XTpbXTpudWxsfUR0LmJpbmQodm9pZCAwLCExKSxEdC5iaW5kKHZvaWQgMCwhMCk7Y29uc3QgT3Q9bmV3IFNldDsiKClbXXt9PD5gJ1wiLS87OiwuPyEiLnNwbGl0KCIiKS5mb3JFYWNoKGU9Pk90LmFkZChlLmNoYXJDb2RlQXQoMCkpKSxuZXcgY2xhc3MgZXh0ZW5kcyBrdHtjb25zdHJ1Y3RvcihlLHQ9MSl7c3VwZXIoKSx0aGlzLl9saW1pdD1lLHRoaXMuX3JhdGlvPU1hdGgubWluKE1hdGgubWF4KDAsdCksMSl9Z2V0IGxpbWl0KCl7cmV0dXJuIHRoaXMuX2xpbWl0fXNldCBsaW1pdChlKXt0aGlzLl9saW1pdD1lLHRoaXMuY2hlY2tUcmltKCl9Z2V0KGUsdD0yKXtyZXR1cm4gc3VwZXIuZ2V0KGUsdCl9cGVlayhlKXtyZXR1cm4gc3VwZXIuZ2V0KGUsMCl9c2V0KGUsdCl7cmV0dXJuIHN1cGVyLnNldChlLHQsMiksdGhpcy5jaGVja1RyaW0oKSx0aGlzfWNoZWNrVHJpbSgpe3RoaXMuc2l6ZT50aGlzLl9saW1pdCYmdGhpcy50cmltT2xkKE1hdGgucm91bmQodGhpcy5fbGltaXQqdGhpcy5fcmF0aW8pKX19KDFlNCk7ZnVuY3Rpb24gVHQoKXtjb25zdCB0PVtdLHI9W107Zm9yKGxldCBlPTA7ZTw9MTI4O2UrKylyW2VdPTA7Zm9yKGxldCBlPTA7ZTw9MTI4O2UrKyl0LnB1c2goci5zbGljZSgwKSk7cmV0dXJuIHR9ZnVuY3Rpb24gRnQodCl7Y29uc3Qgcj1bXTtmb3IobGV0IGU9MDtlPD10O2UrKylyW2VdPTA7cmV0dXJuIHJ9RnQoMjU2KSxGdCgyNTYpLFR0KCksVHQoKSxUdCgpO3ZhciBVdCxCdCxxdCxIdD1uZXcgUmVnRXhwKGBcXCRcXCgke3BlLmljb25OYW1lRXhwcmVzc2lvbn0oPzoke3BlLmljb25Nb2RpZmllckV4cHJlc3Npb259KT9cXClgLCJnIik7bmV3IFJlZ0V4cChwZS5pY29uTmFtZUNoYXJhY3Rlcik7Y29uc3QgV3Q9bmV3IFJlZ0V4cCgiKFxcXFwpPyIrSHQuc291cmNlLCJnIik7bmV3IFJlZ0V4cCgiXFxcXCIrSHQuc291cmNlLCJnIiksbmV3IFJlZ0V4cChgKFxccyk/KFxcXFwpPyR7SHQuc291cmNlfShcXHMpP2AsImciKTtjbGFzcyB6dHtjb25zdHJ1Y3RvcihlPSIiLHQ9ITEpe3ZhciByO2lmKHRoaXMudmFsdWU9ZSwic3RyaW5nIiE9dHlwZW9mIHRoaXMudmFsdWUpdGhyb3cocj0idmFsdWUiKT9uZXcgRXJyb3IoIklsbGVnYWwgYXJndW1lbnQ6ICIrcik6bmV3IEVycm9yKCJJbGxlZ2FsIGFyZ3VtZW50Iik7ImJvb2xlYW4iPT10eXBlb2YgdD8odGhpcy5pc1RydXN0ZWQ9dCx0aGlzLnN1cHBvcnRUaGVtZUljb25zPSExLHRoaXMuc3VwcG9ydEh0bWw9ITEpOih0aGlzLmlzVHJ1c3RlZD1udWxsIT09KHI9dC5pc1RydXN0ZWQpJiZ2b2lkIDAhPT1yP3I6dm9pZCAwLHRoaXMuc3VwcG9ydFRoZW1lSWNvbnM9bnVsbCE9PShyPXQuc3VwcG9ydFRoZW1lSWNvbnMpJiZ2b2lkIDAhPT1yJiZyLHRoaXMuc3VwcG9ydEh0bWw9bnVsbCE9PSh0PXQuc3VwcG9ydEh0bWwpJiZ2b2lkIDAhPT10JiZ0KX1hcHBlbmRUZXh0KGUsdD0wKXtyZXR1cm4gdGhpcy52YWx1ZSs9KHRoaXMuc3VwcG9ydFRoZW1lSWNvbnM/ZS5yZXBsYWNlKFd0LChlLHQpPT50P2U6IlxcIitlKTplKS5yZXBsYWNlKC9bXFxgKl97fVtcXSgpIytcLSFdL2csIlxcJCYiKS5yZXBsYWNlKC8oWyBcdF0rKS9nLChlLHQpPT4iJm5ic3A7Ii5yZXBlYXQodC5sZW5ndGgpKS5yZXBsYWNlKC9cPi9nbSwiXFw+IikucmVwbGFjZSgvXG4vZywxPT09dD8iXFxcbiI6IlxuXG4iKSx0aGlzfWFwcGVuZE1hcmtkb3duKGUpe3JldHVybiB0aGlzLnZhbHVlKz1lLHRoaXN9YXBwZW5kQ29kZWJsb2NrKGUsdCl7cmV0dXJuIHRoaXMudmFsdWUrPSJcbmBgYCIsdGhpcy52YWx1ZSs9ZSx0aGlzLnZhbHVlKz0iXG4iLHRoaXMudmFsdWUrPXQsdGhpcy52YWx1ZSs9IlxuYGBgXG4iLHRoaXN9fWZ1bmN0aW9uIGp0KGUpe2lmKFV0LnNlcnZpY2VJZHMuaGFzKGUpKXJldHVybiBVdC5zZXJ2aWNlSWRzLmdldChlKTtmdW5jdGlvbiBzKGUsdCxyKXtpZigzIT09YXJndW1lbnRzLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoIkBJU2VydmljZU5hbWUtZGVjb3JhdG9yIGNhbiBvbmx5IGJlIHVzZWQgdG8gZGVjb3JhdGUgYSBwYXJhbWV0ZXIiKTt2YXIgbixpO249cyxpPXIscj0hMSwoZT1lKVtVdC5ESV9UQVJHRVRdPT09ZT9lW1V0LkRJX0RFUEVOREVOQ0lFU10ucHVzaCh7aWQ6bixpbmRleDppLG9wdGlvbmFsOnJ9KTooZVtVdC5ESV9ERVBFTkRFTkNJRVNdPVt7aWQ6bixpbmRleDppLG9wdGlvbmFsOnJ9XSxlW1V0LkRJX1RBUkdFVF09ZSl9cmV0dXJuIHMudG9TdHJpbmc9KCk9PmUsVXQuc2VydmljZUlkcy5zZXQoZSxzKSxzLDF9KEJ0PVV0PVV0fHx7fSkuc2VydmljZUlkcz1uZXcgTWFwLEJ0LkRJX1RBUkdFVD0iJGRpJHRhcmdldCIsQnQuRElfREVQRU5ERU5DSUVTPSIkZGkkZGVwZW5kZW5jaWVzIixCdC5nZXRTZXJ2aWNlRGVwZW5kZW5jaWVzPWZ1bmN0aW9uKGUpe3JldHVybiBlW0J0LkRJX0RFUEVOREVOQ0lFU118fFtdfSxqdCgiaW5zdGFudGlhdGlvblNlcnZpY2UiKSxqdCgibG9nU2VydmljZSIpLGp0KCJsb2dnZXJTZXJ2aWNlIiksKEh0PXF0PXF0fHx7fSlbSHQuVHJhY2U9MF09IlRyYWNlIixIdFtIdC5EZWJ1Zz0xXT0iRGVidWciLEh0W0h0LkluZm89Ml09IkluZm8iLEh0W0h0Lldhcm5pbmc9M109Ildhcm5pbmciLEh0W0h0LkVycm9yPTRdPSJFcnJvciIsSHRbSHQuQ3JpdGljYWw9NV09IkNyaXRpY2FsIixIdFtIdC5PZmY9Nl09Ik9mZiI7Y29uc3QgJHQ9cXQuSW5mbztjbGFzcyBHdCBleHRlbmRzIGN7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMubGV2ZWw9JHQsdGhpcy5fb25EaWRDaGFuZ2VMb2dMZXZlbD10aGlzLl9yZWdpc3RlcihuZXcgUiksdGhpcy5vbkRpZENoYW5nZUxvZ0xldmVsPXRoaXMuX29uRGlkQ2hhbmdlTG9nTGV2ZWwuZXZlbnR9c2V0TGV2ZWwoZSl7dGhpcy5sZXZlbCE9PWUmJih0aGlzLmxldmVsPWUsdGhpcy5fb25EaWRDaGFuZ2VMb2dMZXZlbC5maXJlKHRoaXMubGV2ZWwpKX1nZXRMZXZlbCgpe3JldHVybiB0aGlzLmxldmVsfX1jbGFzcyBKdCBleHRlbmRzIEd0e2NvbnN0cnVjdG9yKGU9JHQpe3N1cGVyKCksdGhpcy5zZXRMZXZlbChlKX10cmFjZShlLC4uLnQpe3RoaXMuZ2V0TGV2ZWwoKTw9cXQuVHJhY2UmJmNvbnNvbGUubG9nKCIlY1RSQUNFIiwiY29sb3I6ICM4ODgiLGUsLi4udCl9ZGVidWcoZSwuLi50KXt0aGlzLmdldExldmVsKCk8PXF0LkRlYnVnJiZjb25zb2xlLmxvZygiJWNERUJVRyIsImJhY2tncm91bmQ6ICNlZWU7IGNvbG9yOiAjODg4IixlLC4uLnQpfWluZm8oZSwuLi50KXt0aGlzLmdldExldmVsKCk8PXF0LkluZm8mJmNvbnNvbGUubG9nKCIlYyBJTkZPIiwiY29sb3I6ICMzM2YiLGUsLi4udCl9d2FybihlLC4uLnQpe3RoaXMuZ2V0TGV2ZWwoKTw9cXQuV2FybmluZyYmY29uc29sZS5sb2coIiVjIFdBUk4iLCJjb2xvcjogIzk5MyIsZSwuLi50KX1lcnJvcihlLC4uLnQpe3RoaXMuZ2V0TGV2ZWwoKTw9cXQuRXJyb3ImJmNvbnNvbGUubG9nKCIlYyAgRVJSIiwiY29sb3I6ICNmMzMiLGUsLi4udCl9Y3JpdGljYWwoZSwuLi50KXt0aGlzLmdldExldmVsKCk8PXF0LkNyaXRpY2FsJiZjb25zb2xlLmxvZygiJWNDUklUSSIsImJhY2tncm91bmQ6ICNmMzM7IGNvbG9yOiB3aGl0ZSIsZSwuLi50KX1kaXNwb3NlKCl7fWZsdXNoKCl7fX1jbGFzcyBRdHtzdGF0aWMgY2hvcmQoZSx0KXtyZXR1cm4oZXwoNjU1MzUmdCk8PDE2Pj4+MCk+Pj4wfX1mdW5jdGlvbiBZdChlLHQscixuLGkpe3JldHVybiBmdW5jdGlvbihlLHQscixuKXtpZigwPT09cilyZXR1cm4gMTt2YXIgaT10LmNoYXJDb2RlQXQoci0xKTtpZigwIT09ZS5nZXQoaSkpcmV0dXJuIDE7aWYoMTM9PT1pfHwxMD09PWkpcmV0dXJuIDE7aWYoMDxuKXtyPXQuY2hhckNvZGVBdChyKTtpZigwIT09ZS5nZXQocikpcmV0dXJuIDF9cmV0dXJufShlLHQsbixpKSYmZnVuY3Rpb24oZSx0LHIsbixpKXtpZihuK2k9PT1yKXJldHVybiAxO2lmKHI9dC5jaGFyQ29kZUF0KG4raSksMCE9PWUuZ2V0KHIpKXJldHVybiAxO2lmKDEzPT09cnx8MTA9PT1yKXJldHVybiAxO2lmKDA8aSl7aT10LmNoYXJDb2RlQXQobitpLTEpO2lmKDAhPT1lLmdldChpKSlyZXR1cm4gMX1yZXR1cm59KGUsdCxyLG4saSl9UXQuQ3RybENtZD0yMDQ4LFF0LlNoaWZ0PTEwMjQsUXQuQWx0PTUxMixRdC5XaW5DdHJsPTI1NjtjbGFzcyBadHtjb25zdHJ1Y3RvcihlLHQpe3RoaXMuX3dvcmRTZXBhcmF0b3JzPWUsdGhpcy5fc2VhcmNoUmVnZXg9dCx0aGlzLl9wcmV2TWF0Y2hTdGFydEluZGV4PS0xLHRoaXMuX3ByZXZNYXRjaExlbmd0aD0wfXJlc2V0KGUpe3RoaXMuX3NlYXJjaFJlZ2V4Lmxhc3RJbmRleD1lLHRoaXMuX3ByZXZNYXRjaFN0YXJ0SW5kZXg9LTEsdGhpcy5fcHJldk1hdGNoTGVuZ3RoPTB9bmV4dChlKXt2YXIgdD1lLmxlbmd0aDtsZXQgcjtkb3tpZih0aGlzLl9wcmV2TWF0Y2hTdGFydEluZGV4K3RoaXMuX3ByZXZNYXRjaExlbmd0aD09PXQpcmV0dXJuIG51bGw7aWYocj10aGlzLl9zZWFyY2hSZWdleC5leGVjKGUpLCFyKXJldHVybiBudWxsO3ZhciBuPXIuaW5kZXgsaT1yWzBdLmxlbmd0aDtpZihuIT09dGhpcy5fcHJldk1hdGNoU3RhcnRJbmRleHx8aSE9PXRoaXMuX3ByZXZNYXRjaExlbmd0aCl7aWYodGhpcy5fcHJldk1hdGNoU3RhcnRJbmRleD1uLHRoaXMuX3ByZXZNYXRjaExlbmd0aD1pLCF0aGlzLl93b3JkU2VwYXJhdG9yc3x8WXQodGhpcy5fd29yZFNlcGFyYXRvcnMsZSx0LG4saSkpcmV0dXJuIHJ9ZWxzZXtpZigwIT09aSlyZXR1cm4gbnVsbDs2NTUzNTxmdW5jdGlvbihlLHQscil7dmFyIG49ZS5jaGFyQ29kZUF0KHIpO2lmKFUobikmJnIrMTx0KXtlPWUuY2hhckNvZGVBdChyKzEpO2lmKDU2MzIwPD0ocj1lKSYmcjw9NTczNDMpcmV0dXJuIGUtNTYzMjArKG4tNTUyOTY8PDEwKSs2NTUzNn1yZXR1cm4gbn0oZSx0LHRoaXMuX3NlYXJjaFJlZ2V4Lmxhc3RJbmRleCk/dGhpcy5fc2VhcmNoUmVnZXgubGFzdEluZGV4Kz0yOnRoaXMuX3NlYXJjaFJlZ2V4Lmxhc3RJbmRleCs9MX19d2hpbGUocik7cmV0dXJuIG51bGx9fWNsYXNzIFh0e3N0YXRpYyBjb21wdXRlVW5pY29kZUhpZ2hsaWdodHModCxlLHIpe3ZhciBuPXI/ci5zdGFydExpbmVOdW1iZXI6MSxpPXI/ci5lbmRMaW5lTnVtYmVyOnQuZ2V0TGluZUNvdW50KCk7Y29uc3Qgcz1uZXcgZTEoZSk7dmFyIG8sZT1zLmdldENhbmRpZGF0ZUNvZGVQb2ludHMoKTtsZXQgYTthPSJhbGxOb25CYXNpY0FzY2lpIj09PWU/bmV3IFJlZ0V4cCgiW15cXHRcXG5cXHJcXHgyMC1cXHg3RV0iLCJnIik6bmV3IFJlZ0V4cCgiIitmdW5jdGlvbihlKXtlPWBbJHtlLm1hcChlPT5TdHJpbmcuZnJvbUNvZGVQb2ludChlKSkuam9pbigiIikucmVwbGFjZSgvW1xcXHtcfVwqXCtcP1x8XF5cJFwuXFtcXVwoXCldL2csIlxcJCYiKX1dYDtyZXR1cm4gZX0oQXJyYXkuZnJvbShlKSksImciKTtjb25zdCBsPW5ldyBadChudWxsLGEpLHU9W107bGV0IGg9ITEsZD0wLGM9MCxtPTA7ZTpmb3IobGV0IHI9bixlPWk7cjw9ZTtyKyspe2NvbnN0IF89dC5nZXRMaW5lQ29udGVudChyKTt2YXIgZj1fLmxlbmd0aDtsLnJlc2V0KDApO2Rve2lmKG89bC5uZXh0KF8pKXtsZXQgZT1vLmluZGV4LHQ9by5pbmRleCtvWzBdLmxlbmd0aDswPGUmJlUoXy5jaGFyQ29kZUF0KGUtMSkpJiZlLS0sdCsxPGYmJlUoXy5jaGFyQ29kZUF0KHQtMSkpJiZ0Kys7dmFyIGc9Xy5zdWJzdHJpbmcoZSx0KSxnPXMuc2hvdWxkSGlnaGxpZ2h0Tm9uQmFzaWNBU0NJSShnKTtpZigwIT09Zyl7Mz09PWc/ZCsrOjI9PT1nP2MrKzoxPT09Zz9tKys6ZnVuY3Rpb24oZT0iVW5yZWFjaGFibGUiKXt0aHJvdyBuZXcgRXJyb3IoZSl9KCk7aWYoMWUzPD11Lmxlbmd0aCl7aD0hMDticmVhayBlfXUucHVzaChuZXcgemUocixlKzEscix0KzEpKX19fXdoaWxlKG8pfXJldHVybntyYW5nZXM6dSxoYXNNb3JlOmgsYW1iaWd1b3VzQ2hhcmFjdGVyQ291bnQ6ZCxpbnZpc2libGVDaGFyYWN0ZXJDb3VudDpjLG5vbkJhc2ljQXNjaWlDaGFyYWN0ZXJDb3VudDptfX1zdGF0aWMgY29tcHV0ZVVuaWNvZGVIaWdobGlnaHRSZWFzb24oZSx0KXtjb25zdCByPW5ldyBlMSh0KTtzd2l0Y2goci5zaG91bGRIaWdobGlnaHROb25CYXNpY0FTQ0lJKGUpKXtjYXNlIDA6cmV0dXJuIG51bGw7Y2FzZSAyOnJldHVybntraW5kOjF9O2Nhc2UgMzp2YXIgbj1CLmdldFByaW1hcnlDb25mdXNhYmxlKGUuY29kZVBvaW50QXQoMCkpO3JldHVybntraW5kOjAsY29uZnVzYWJsZVdpdGg6U3RyaW5nLmZyb21Db2RlUG9pbnQobil9O2Nhc2UgMTpyZXR1cm57a2luZDoyfX19fWNsYXNzIGUxe2NvbnN0cnVjdG9yKGUpe3RoaXMub3B0aW9ucz1lLHRoaXMuYWxsb3dlZENvZGVQb2ludHM9bmV3IFNldChlLmFsbG93ZWRDb2RlUG9pbnRzKX1nZXRDYW5kaWRhdGVDb2RlUG9pbnRzKCl7aWYodGhpcy5vcHRpb25zLm5vbkJhc2ljQVNDSUkpcmV0dXJuImFsbE5vbkJhc2ljQXNjaWkiO2NvbnN0IGU9bmV3IFNldDtpZih0aGlzLm9wdGlvbnMuaW52aXNpYmxlQ2hhcmFjdGVycylmb3IoY29uc3QgdCBvZiBxLmNvZGVQb2ludHMpZS5hZGQodCk7aWYodGhpcy5vcHRpb25zLmFtYmlndW91c0NoYXJhY3RlcnMpZm9yKGNvbnN0IHIgb2YgQi5nZXRQcmltYXJ5Q29uZnVzYWJsZUNvZGVQb2ludHMoKSllLmFkZChyKTtmb3IoY29uc3QgbiBvZiB0aGlzLmFsbG93ZWRDb2RlUG9pbnRzKWUuZGVsZXRlKG4pO3JldHVybiBlfXNob3VsZEhpZ2hsaWdodE5vbkJhc2ljQVNDSUkoZSl7dmFyIHQ9ZS5jb2RlUG9pbnRBdCgwKTtpZih0aGlzLmFsbG93ZWRDb2RlUG9pbnRzLmhhcyh0KSlyZXR1cm4gMDtpZih0aGlzLm9wdGlvbnMubm9uQmFzaWNBU0NJSSlyZXR1cm4gMTtpZih0aGlzLm9wdGlvbnMuaW52aXNpYmxlQ2hhcmFjdGVycyYmKCEoIiAiPT09ZXx8IlxuIj09PWV8fCJcdCI9PT1lKSYmcS5pc0ludmlzaWJsZUNoYXJhY3Rlcih0KSkpcmV0dXJuIDI7cmV0dXJuIHRoaXMub3B0aW9ucy5hbWJpZ3VvdXNDaGFyYWN0ZXJzJiZCLmlzQW1iaWd1b3VzKHQpPzM6MH19dmFyIHQxPWZ1bmN0aW9uKGUsbyxhLGwpe3JldHVybiBuZXcoYT1hfHxQcm9taXNlKShmdW5jdGlvbihyLHQpe2Z1bmN0aW9uIG4oZSl7dHJ5e3MobC5uZXh0KGUpKX1jYXRjaChlKXt0KGUpfX1mdW5jdGlvbiBpKGUpe3RyeXtzKGwudGhyb3coZSkpfWNhdGNoKGUpe3QoZSl9fWZ1bmN0aW9uIHMoZSl7dmFyIHQ7ZS5kb25lP3IoZS52YWx1ZSk6KCh0PWUudmFsdWUpaW5zdGFuY2VvZiBhP3Q6bmV3IGEoZnVuY3Rpb24oZSl7ZSh0KX0pKS50aGVuKG4saSl9cygobD1sLmFwcGx5KGUsb3x8W10pKS5uZXh0KCkpfSl9O2NsYXNzIHIxIGV4dGVuZHMgY2xhc3N7Y29uc3RydWN0b3IoZSx0LHIsbil7dGhpcy5fdXJpPWUsdGhpcy5fbGluZXM9dCx0aGlzLl9lb2w9cix0aGlzLl92ZXJzaW9uSWQ9bix0aGlzLl9saW5lU3RhcnRzPW51bGwsdGhpcy5fY2FjaGVkVGV4dFZhbHVlPW51bGx9ZGlzcG9zZSgpe3RoaXMuX2xpbmVzLmxlbmd0aD0wfWdldCB2ZXJzaW9uKCl7cmV0dXJuIHRoaXMuX3ZlcnNpb25JZH1nZXRUZXh0KCl7cmV0dXJuIG51bGw9PT10aGlzLl9jYWNoZWRUZXh0VmFsdWUmJih0aGlzLl9jYWNoZWRUZXh0VmFsdWU9dGhpcy5fbGluZXMuam9pbih0aGlzLl9lb2wpKSx0aGlzLl9jYWNoZWRUZXh0VmFsdWV9b25FdmVudHMoZSl7ZS5lb2wmJmUuZW9sIT09dGhpcy5fZW9sJiYodGhpcy5fZW9sPWUuZW9sLHRoaXMuX2xpbmVTdGFydHM9bnVsbCk7Zm9yKGNvbnN0IHQgb2YgZS5jaGFuZ2VzKXRoaXMuX2FjY2VwdERlbGV0ZVJhbmdlKHQucmFuZ2UpLHRoaXMuX2FjY2VwdEluc2VydFRleHQobmV3IFdlKHQucmFuZ2Uuc3RhcnRMaW5lTnVtYmVyLHQucmFuZ2Uuc3RhcnRDb2x1bW4pLHQudGV4dCk7dGhpcy5fdmVyc2lvbklkPWUudmVyc2lvbklkLHRoaXMuX2NhY2hlZFRleHRWYWx1ZT1udWxsfV9lbnN1cmVMaW5lU3RhcnRzKCl7aWYoIXRoaXMuX2xpbmVTdGFydHMpe3ZhciB0PXRoaXMuX2VvbC5sZW5ndGgscj10aGlzLl9saW5lcy5sZW5ndGg7Y29uc3Qgbj1uZXcgVWludDMyQXJyYXkocik7Zm9yKGxldCBlPTA7ZTxyO2UrKyluW2VdPXRoaXMuX2xpbmVzW2VdLmxlbmd0aCt0O3RoaXMuX2xpbmVTdGFydHM9bmV3IG50KG4pfX1fc2V0TGluZVRleHQoZSx0KXt0aGlzLl9saW5lc1tlXT10LHRoaXMuX2xpbmVTdGFydHMmJnRoaXMuX2xpbmVTdGFydHMuc2V0VmFsdWUoZSx0aGlzLl9saW5lc1tlXS5sZW5ndGgrdGhpcy5fZW9sLmxlbmd0aCl9X2FjY2VwdERlbGV0ZVJhbmdlKGUpe2lmKGUuc3RhcnRMaW5lTnVtYmVyPT09ZS5lbmRMaW5lTnVtYmVyKXJldHVybiBlLnN0YXJ0Q29sdW1uPT09ZS5lbmRDb2x1bW4/dm9pZCAwOnZvaWQgdGhpcy5fc2V0TGluZVRleHQoZS5zdGFydExpbmVOdW1iZXItMSx0aGlzLl9saW5lc1tlLnN0YXJ0TGluZU51bWJlci0xXS5zdWJzdHJpbmcoMCxlLnN0YXJ0Q29sdW1uLTEpK3RoaXMuX2xpbmVzW2Uuc3RhcnRMaW5lTnVtYmVyLTFdLnN1YnN0cmluZyhlLmVuZENvbHVtbi0xKSk7dGhpcy5fc2V0TGluZVRleHQoZS5zdGFydExpbmVOdW1iZXItMSx0aGlzLl9saW5lc1tlLnN0YXJ0TGluZU51bWJlci0xXS5zdWJzdHJpbmcoMCxlLnN0YXJ0Q29sdW1uLTEpK3RoaXMuX2xpbmVzW2UuZW5kTGluZU51bWJlci0xXS5zdWJzdHJpbmcoZS5lbmRDb2x1bW4tMSkpLHRoaXMuX2xpbmVzLnNwbGljZShlLnN0YXJ0TGluZU51bWJlcixlLmVuZExpbmVOdW1iZXItZS5zdGFydExpbmVOdW1iZXIpLHRoaXMuX2xpbmVTdGFydHMmJnRoaXMuX2xpbmVTdGFydHMucmVtb3ZlVmFsdWVzKGUuc3RhcnRMaW5lTnVtYmVyLGUuZW5kTGluZU51bWJlci1lLnN0YXJ0TGluZU51bWJlcil9X2FjY2VwdEluc2VydFRleHQobixlKXtpZigwIT09ZS5sZW5ndGgpe2xldCByPWUuc3BsaXQoL1xyXG58XHJ8XG4vKTtpZigxIT09ci5sZW5ndGgpe3Jbci5sZW5ndGgtMV0rPXRoaXMuX2xpbmVzW24ubGluZU51bWJlci0xXS5zdWJzdHJpbmcobi5jb2x1bW4tMSksdGhpcy5fc2V0TGluZVRleHQobi5saW5lTnVtYmVyLTEsdGhpcy5fbGluZXNbbi5saW5lTnVtYmVyLTFdLnN1YnN0cmluZygwLG4uY29sdW1uLTEpK3JbMF0pO2xldCB0PW5ldyBVaW50MzJBcnJheShyLmxlbmd0aC0xKTtmb3IobGV0IGU9MTtlPHIubGVuZ3RoO2UrKyl0aGlzLl9saW5lcy5zcGxpY2Uobi5saW5lTnVtYmVyK2UtMSwwLHJbZV0pLHRbZS0xXT1yW2VdLmxlbmd0aCt0aGlzLl9lb2wubGVuZ3RoO3RoaXMuX2xpbmVTdGFydHMmJnRoaXMuX2xpbmVTdGFydHMuaW5zZXJ0VmFsdWVzKG4ubGluZU51bWJlcix0KX1lbHNlIHRoaXMuX3NldExpbmVUZXh0KG4ubGluZU51bWJlci0xLHRoaXMuX2xpbmVzW24ubGluZU51bWJlci0xXS5zdWJzdHJpbmcoMCxuLmNvbHVtbi0xKStyWzBdK3RoaXMuX2xpbmVzW24ubGluZU51bWJlci0xXS5zdWJzdHJpbmcobi5jb2x1bW4tMSkpfX19e2dldCB1cmkoKXtyZXR1cm4gdGhpcy5fdXJpfWdldCBlb2woKXtyZXR1cm4gdGhpcy5fZW9sfWdldFZhbHVlKCl7cmV0dXJuIHRoaXMuZ2V0VGV4dCgpfWdldExpbmVzQ29udGVudCgpe3JldHVybiB0aGlzLl9saW5lcy5zbGljZSgwKX1nZXRMaW5lQ291bnQoKXtyZXR1cm4gdGhpcy5fbGluZXMubGVuZ3RofWdldExpbmVDb250ZW50KGUpe3JldHVybiB0aGlzLl9saW5lc1tlLTFdfWdldFdvcmRBdFBvc2l0aW9uKGUsdCl7dD1hdChlLmNvbHVtbixmdW5jdGlvbih0KXtsZXQgcj1zdDtpZih0JiZ0IGluc3RhbmNlb2YgUmVnRXhwKWlmKHQuZ2xvYmFsKXI9dDtlbHNle2xldCBlPSJnIjt0Lmlnbm9yZUNhc2UmJihlKz0iaSIpLHQubXVsdGlsaW5lJiYoZSs9Im0iKSx0LnVuaWNvZGUmJihlKz0idSIpLHI9bmV3IFJlZ0V4cCh0LnNvdXJjZSxlKX1yZXR1cm4gci5sYXN0SW5kZXg9MCxyfSh0KSx0aGlzLl9saW5lc1tlLmxpbmVOdW1iZXItMV0sMCk7cmV0dXJuIHQ/bmV3IHplKGUubGluZU51bWJlcix0LnN0YXJ0Q29sdW1uLGUubGluZU51bWJlcix0LmVuZENvbHVtbik6bnVsbH13b3Jkcyh0KXtjb25zdCByPXRoaXMuX2xpbmVzLG49dGhpcy5fd29yZGVuaXplLmJpbmQodGhpcyk7bGV0IGk9MCxzPSIiLG89MCxhPVtdO3JldHVybnsqW1N5bWJvbC5pdGVyYXRvcl0oKXtmb3IoOzspaWYobzxhLmxlbmd0aCl7dmFyIGU9cy5zdWJzdHJpbmcoYVtvXS5zdGFydCxhW29dLmVuZCk7bys9MSx5aWVsZCBlfWVsc2V7aWYoIShpPHIubGVuZ3RoKSlicmVhaztzPXJbaV0sYT1uKHMsdCksbz0wLGkrPTF9fX19Z2V0TGluZVdvcmRzKGUsdCl7bGV0IHI9dGhpcy5fbGluZXNbZS0xXTtsZXQgbj1bXTtmb3IoY29uc3QgaSBvZiB0aGlzLl93b3JkZW5pemUocix0KSluLnB1c2goe3dvcmQ6ci5zdWJzdHJpbmcoaS5zdGFydCxpLmVuZCksc3RhcnRDb2x1bW46aS5zdGFydCsxLGVuZENvbHVtbjppLmVuZCsxfSk7cmV0dXJuIG59X3dvcmRlbml6ZShlLHQpe2NvbnN0IHI9W107dmFyIG47Zm9yKHQubGFzdEluZGV4PTA7KG49dC5leGVjKGUpKSYmMCE9PW5bMF0ubGVuZ3RoOylyLnB1c2goe3N0YXJ0Om4uaW5kZXgsZW5kOm4uaW5kZXgrblswXS5sZW5ndGh9KTtyZXR1cm4gcn1nZXRWYWx1ZUluUmFuZ2UoZSl7aWYoKGU9dGhpcy5fdmFsaWRhdGVSYW5nZShlKSkuc3RhcnRMaW5lTnVtYmVyPT09ZS5lbmRMaW5lTnVtYmVyKXJldHVybiB0aGlzLl9saW5lc1tlLnN0YXJ0TGluZU51bWJlci0xXS5zdWJzdHJpbmcoZS5zdGFydENvbHVtbi0xLGUuZW5kQ29sdW1uLTEpO3ZhciB0PXRoaXMuX2VvbCxyPWUuc3RhcnRMaW5lTnVtYmVyLTEsbj1lLmVuZExpbmVOdW1iZXItMTtsZXQgaT1bXTtpLnB1c2godGhpcy5fbGluZXNbcl0uc3Vic3RyaW5nKGUuc3RhcnRDb2x1bW4tMSkpO2ZvcihsZXQgZT0xK3I7ZTxuO2UrKylpLnB1c2godGhpcy5fbGluZXNbZV0pO3JldHVybiBpLnB1c2godGhpcy5fbGluZXNbbl0uc3Vic3RyaW5nKDAsZS5lbmRDb2x1bW4tMSkpLGkuam9pbih0KX1vZmZzZXRBdChlKXtyZXR1cm4gZT10aGlzLl92YWxpZGF0ZVBvc2l0aW9uKGUpLHRoaXMuX2Vuc3VyZUxpbmVTdGFydHMoKSx0aGlzLl9saW5lU3RhcnRzLmdldFByZWZpeFN1bShlLmxpbmVOdW1iZXItMikrKGUuY29sdW1uLTEpfXBvc2l0aW9uQXQoZSl7ZT1NYXRoLmZsb29yKGUpLGU9TWF0aC5tYXgoMCxlKSx0aGlzLl9lbnN1cmVMaW5lU3RhcnRzKCk7dmFyIHQ9dGhpcy5fbGluZVN0YXJ0cy5nZXRJbmRleE9mKGUpLGU9dGhpcy5fbGluZXNbdC5pbmRleF0ubGVuZ3RoO3JldHVybntsaW5lTnVtYmVyOjErdC5pbmRleCxjb2x1bW46MStNYXRoLm1pbih0LnJlbWFpbmRlcixlKX19X3ZhbGlkYXRlUmFuZ2UoZSl7dmFyIHQ9dGhpcy5fdmFsaWRhdGVQb3NpdGlvbih7bGluZU51bWJlcjplLnN0YXJ0TGluZU51bWJlcixjb2x1bW46ZS5zdGFydENvbHVtbn0pLHI9dGhpcy5fdmFsaWRhdGVQb3NpdGlvbih7bGluZU51bWJlcjplLmVuZExpbmVOdW1iZXIsY29sdW1uOmUuZW5kQ29sdW1ufSk7cmV0dXJuIHQubGluZU51bWJlciE9PWUuc3RhcnRMaW5lTnVtYmVyfHx0LmNvbHVtbiE9PWUuc3RhcnRDb2x1bW58fHIubGluZU51bWJlciE9PWUuZW5kTGluZU51bWJlcnx8ci5jb2x1bW4hPT1lLmVuZENvbHVtbj97c3RhcnRMaW5lTnVtYmVyOnQubGluZU51bWJlcixzdGFydENvbHVtbjp0LmNvbHVtbixlbmRMaW5lTnVtYmVyOnIubGluZU51bWJlcixlbmRDb2x1bW46ci5jb2x1bW59OmV9X3ZhbGlkYXRlUG9zaXRpb24oZSl7aWYoIVdlLmlzSVBvc2l0aW9uKGUpKXRocm93IG5ldyBFcnJvcigiYmFkIHBvc2l0aW9uIik7bGV0e2xpbmVOdW1iZXI6dCxjb2x1bW46cn09ZSxuPSExO3ZhciBpO3JldHVybiB0PDE/KHQ9MSxyPTEsbj0hMCk6dD50aGlzLl9saW5lcy5sZW5ndGg/KHQ9dGhpcy5fbGluZXMubGVuZ3RoLHI9dGhpcy5fbGluZXNbdC0xXS5sZW5ndGgrMSxuPSEwKTooaT10aGlzLl9saW5lc1t0LTFdLmxlbmd0aCsxLHI8MT8ocj0xLG49ITApOnI+aSYmKHI9aSxuPSEwKSksbj97bGluZU51bWJlcjp0LGNvbHVtbjpyfTplfX1jbGFzcyBuMXtjb25zdHJ1Y3RvcihlLHQpe3RoaXMuX2hvc3Q9ZSx0aGlzLl9tb2RlbHM9T2JqZWN0LmNyZWF0ZShudWxsKSx0aGlzLl9mb3JlaWduTW9kdWxlRmFjdG9yeT10LHRoaXMuX2ZvcmVpZ25Nb2R1bGU9bnVsbH1kaXNwb3NlKCl7dGhpcy5fbW9kZWxzPU9iamVjdC5jcmVhdGUobnVsbCl9X2dldE1vZGVsKGUpe3JldHVybiB0aGlzLl9tb2RlbHNbZV19X2dldE1vZGVscygpe2xldCB0PVtdO3JldHVybiBPYmplY3Qua2V5cyh0aGlzLl9tb2RlbHMpLmZvckVhY2goZT0+dC5wdXNoKHRoaXMuX21vZGVsc1tlXSkpLHR9YWNjZXB0TmV3TW9kZWwoZSl7dGhpcy5fbW9kZWxzW2UudXJsXT1uZXcgcjEoUmUucGFyc2UoZS51cmwpLGUubGluZXMsZS5FT0wsZS52ZXJzaW9uSWQpfWFjY2VwdE1vZGVsQ2hhbmdlZCh0LHIpe2lmKHRoaXMuX21vZGVsc1t0XSl7bGV0IGU9dGhpcy5fbW9kZWxzW3RdO2Uub25FdmVudHMocil9fWFjY2VwdFJlbW92ZWRNb2RlbChlKXt0aGlzLl9tb2RlbHNbZV0mJmRlbGV0ZSB0aGlzLl9tb2RlbHNbZV19Y29tcHV0ZVVuaWNvZGVIaWdobGlnaHRzKHQscixuKXtyZXR1cm4gdDEodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe3ZhciBlPXRoaXMuX2dldE1vZGVsKHQpO3JldHVybiBlP1h0LmNvbXB1dGVVbmljb2RlSGlnaGxpZ2h0cyhlLHIsbik6e3JhbmdlczpbXSxoYXNNb3JlOiExLGFtYmlndW91c0NoYXJhY3RlckNvdW50OjAsaW52aXNpYmxlQ2hhcmFjdGVyQ291bnQ6MCxub25CYXNpY0FzY2lpQ2hhcmFjdGVyQ291bnQ6MH19KX1jb21wdXRlRGlmZihzLG8sYSxsKXtyZXR1cm4gdDEodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe2NvbnN0IGU9dGhpcy5fZ2V0TW9kZWwocyksdD10aGlzLl9nZXRNb2RlbChvKTtpZighZXx8IXQpcmV0dXJuIG51bGw7dmFyIHI9ZS5nZXRMaW5lc0NvbnRlbnQoKSxuPXQuZ2V0TGluZXNDb250ZW50KCk7Y29uc3QgaT1uZXcgWWUocixuLHtzaG91bGRDb21wdXRlQ2hhckNoYW5nZXM6ITAsc2hvdWxkUG9zdFByb2Nlc3NDaGFyQ2hhbmdlczohMCxzaG91bGRJZ25vcmVUcmltV2hpdGVzcGFjZTphLHNob3VsZE1ha2VQcmV0dHlEaWZmOiEwLG1heENvbXB1dGF0aW9uVGltZTpsfSk7cj1pLmNvbXB1dGVEaWZmKCksbj0hKDA8ci5jaGFuZ2VzLmxlbmd0aCkmJnRoaXMuX21vZGVsc0FyZUlkZW50aWNhbChlLHQpO3JldHVybntxdWl0RWFybHk6ci5xdWl0RWFybHksaWRlbnRpY2FsOm4sY2hhbmdlczpyLmNoYW5nZXN9fSl9X21vZGVsc0FyZUlkZW50aWNhbCh0LHIpe3ZhciBuPXQuZ2V0TGluZUNvdW50KCk7aWYobiE9PXIuZ2V0TGluZUNvdW50KCkpcmV0dXJuITE7Zm9yKGxldCBlPTE7ZTw9bjtlKyspaWYodC5nZXRMaW5lQ29udGVudChlKSE9PXIuZ2V0TGluZUNvbnRlbnQoZSkpcmV0dXJuITE7cmV0dXJuITB9Y29tcHV0ZU1vcmVNaW5pbWFsRWRpdHMoYyxtKXtyZXR1cm4gdDEodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe2NvbnN0IGU9dGhpcy5fZ2V0TW9kZWwoYyk7aWYoIWUpcmV0dXJuIG07Y29uc3QgdD1bXTtsZXQgcj12b2lkIDA7Zm9yKHZhcntyYW5nZTpuLHRleHQ6aSxlb2w6c31vZiBtPW0uc2xpY2UoMCkuc29ydCgoZSx0KT0+e3JldHVybiBlLnJhbmdlJiZ0LnJhbmdlP3plLmNvbXBhcmVSYW5nZXNVc2luZ1N0YXJ0cyhlLnJhbmdlLHQucmFuZ2UpOihlLnJhbmdlPzA6MSktKHQucmFuZ2U/MDoxKX0pKWlmKCJudW1iZXIiPT10eXBlb2YgcyYmKHI9cyksIXplLmlzRW1wdHkobil8fGkpe3ZhciBvPWUuZ2V0VmFsdWVJblJhbmdlKG4pO2lmKGk9aS5yZXBsYWNlKC9cclxufFxufFxyL2csZS5lb2wpLG8hPT1pKWlmKE1hdGgubWF4KGkubGVuZ3RoLG8ubGVuZ3RoKT5uMS5fZGlmZkxpbWl0KXQucHVzaCh7cmFuZ2U6bix0ZXh0Oml9KTtlbHNle3ZhciBvPShoPW8scz1pLG89ITEsbmV3IHNlKG5ldyB0ZShoKSxuZXcgdGUocykpLkNvbXB1dGVEaWZmKG8pLmNoYW5nZXMpLGE9ZS5vZmZzZXRBdCh6ZS5saWZ0KG4pLmdldFN0YXJ0UG9zaXRpb24oKSk7Zm9yKGNvbnN0IGQgb2Ygbyl7dmFyIGw9ZS5wb3NpdGlvbkF0KGErZC5vcmlnaW5hbFN0YXJ0KSx1PWUucG9zaXRpb25BdChhK2Qub3JpZ2luYWxTdGFydCtkLm9yaWdpbmFsTGVuZ3RoKSx1PXt0ZXh0Omkuc3Vic3RyKGQubW9kaWZpZWRTdGFydCxkLm1vZGlmaWVkTGVuZ3RoKSxyYW5nZTp7c3RhcnRMaW5lTnVtYmVyOmwubGluZU51bWJlcixzdGFydENvbHVtbjpsLmNvbHVtbixlbmRMaW5lTnVtYmVyOnUubGluZU51bWJlcixlbmRDb2x1bW46dS5jb2x1bW59fTtlLmdldFZhbHVlSW5SYW5nZSh1LnJhbmdlKSE9PXUudGV4dCYmdC5wdXNoKHUpfX19dmFyIGg7cmV0dXJuIm51bWJlciI9PXR5cGVvZiByJiZ0LnB1c2goe2VvbDpyLHRleHQ6IiIscmFuZ2U6e3N0YXJ0TGluZU51bWJlcjowLHN0YXJ0Q29sdW1uOjAsZW5kTGluZU51bWJlcjowLGVuZENvbHVtbjowfX0pLHR9KX1jb21wdXRlTGlua3ModCl7cmV0dXJuIHQxKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbiooKXt2YXIgZT10aGlzLl9nZXRNb2RlbCh0KTtyZXR1cm4gZT8oZT1lKSYmImZ1bmN0aW9uIj09dHlwZW9mIGUuZ2V0TGluZUNvdW50JiYiZnVuY3Rpb24iPT10eXBlb2YgZS5nZXRMaW5lQ29udGVudD9tdC5jb21wdXRlTGlua3MoZSk6W106bnVsbH0pfXRleHR1YWxTdWdnZXN0KG8sYSxsLHUpe3JldHVybiB0MSh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24qKCl7Y29uc3QgZT1uZXcgSSghMCk7dmFyIHQ9bmV3IFJlZ0V4cChsLHUpO2NvbnN0IHI9bmV3IFNldDtlOmZvcih2YXIgbiBvZiBvKXtjb25zdCBzPXRoaXMuX2dldE1vZGVsKG4pO2lmKHMpZm9yKHZhciBpIG9mIHMud29yZHModCkpaWYoaSE9PWEmJmlzTmFOKE51bWJlcihpKSkmJihyLmFkZChpKSxyLnNpemU+bjEuX3N1Z2dlc3Rpb25zTGltaXQpKWJyZWFrIGV9cmV0dXJue3dvcmRzOkFycmF5LmZyb20ociksZHVyYXRpb246ZS5lbGFwc2VkKCl9fSl9Y29tcHV0ZVdvcmRSYW5nZXModCxzLG8sYSl7cmV0dXJuIHQxKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbiooKXtsZXQgZT10aGlzLl9nZXRNb2RlbCh0KTtpZighZSlyZXR1cm4gT2JqZWN0LmNyZWF0ZShudWxsKTt2YXIgcj1uZXcgUmVnRXhwKG8sYSk7Y29uc3Qgbj1PYmplY3QuY3JlYXRlKG51bGwpO2ZvcihsZXQgdD1zLnN0YXJ0TGluZU51bWJlcjt0PHMuZW5kTGluZU51bWJlcjt0KyspZm9yKGNvbnN0IGkgb2YgZS5nZXRMaW5lV29yZHModCxyKSlpZihpc05hTihOdW1iZXIoaS53b3JkKSkpe2xldCBlPW5baS53b3JkXTtlfHwoZT1bXSxuW2kud29yZF09ZSksZS5wdXNoKHtzdGFydExpbmVOdW1iZXI6dCxzdGFydENvbHVtbjppLnN0YXJ0Q29sdW1uLGVuZExpbmVOdW1iZXI6dCxlbmRDb2x1bW46aS5lbmRDb2x1bW59KX1yZXR1cm4gbn0pfW5hdmlnYXRlVmFsdWVTZXQoaSxzLG8sYSxsKXtyZXR1cm4gdDEodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe2xldCBlPXRoaXMuX2dldE1vZGVsKGkpO2lmKCFlKXJldHVybiBudWxsO3ZhciB0PW5ldyBSZWdFeHAoYSxsKTtzLnN0YXJ0Q29sdW1uPT09cy5lbmRDb2x1bW4mJihzPXtzdGFydExpbmVOdW1iZXI6cy5zdGFydExpbmVOdW1iZXIsc3RhcnRDb2x1bW46cy5zdGFydENvbHVtbixlbmRMaW5lTnVtYmVyOnMuZW5kTGluZU51bWJlcixlbmRDb2x1bW46cy5lbmRDb2x1bW4rMX0pO3ZhciByPWUuZ2V0VmFsdWVJblJhbmdlKHMpLG49ZS5nZXRXb3JkQXRQb3NpdGlvbih7bGluZU51bWJlcjpzLnN0YXJ0TGluZU51bWJlcixjb2x1bW46cy5zdGFydENvbHVtbn0sdCk7aWYoIW4pcmV0dXJuIG51bGw7dD1lLmdldFZhbHVlSW5SYW5nZShuKTtyZXR1cm4gZnQuSU5TVEFOQ0UubmF2aWdhdGVWYWx1ZVNldChzLHIsbix0LG8pfSl9bG9hZEZvcmVpZ25Nb2R1bGUoZSx0LHIpe3I9RChyLChlLHQpPT50aGlzLl9ob3N0LmZocihlLHQpKTtyZXR1cm4gdGhpcy5fZm9yZWlnbk1vZHVsZUZhY3Rvcnk/KHRoaXMuX2ZvcmVpZ25Nb2R1bGU9dGhpcy5fZm9yZWlnbk1vZHVsZUZhY3Rvcnkoe2hvc3Q6cixnZXRNaXJyb3JNb2RlbHM6KCk9PnRoaXMuX2dldE1vZGVscygpfSx0KSxQcm9taXNlLnJlc29sdmUoayh0aGlzLl9mb3JlaWduTW9kdWxlKSkpOlByb21pc2UucmVqZWN0KG5ldyBFcnJvcigiVW5leHBlY3RlZCB1c2FnZSIpKX1mbXIoZSx0KXtpZighdGhpcy5fZm9yZWlnbk1vZHVsZXx8ImZ1bmN0aW9uIiE9dHlwZW9mIHRoaXMuX2ZvcmVpZ25Nb2R1bGVbZV0pcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBFcnJvcigiTWlzc2luZyByZXF1ZXN0SGFuZGxlciBvciBtZXRob2Q6ICIrZSkpO3RyeXtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRoaXMuX2ZvcmVpZ25Nb2R1bGVbZV0uYXBwbHkodGhpcy5fZm9yZWlnbk1vZHVsZSx0KSl9Y2F0Y2goZSl7cmV0dXJuIFByb21pc2UucmVqZWN0KGUpfX19bjEuX2RpZmZMaW1pdD0xZTUsbjEuX3N1Z2dlc3Rpb25zTGltaXQ9MWU0LCJmdW5jdGlvbiI9PXR5cGVvZiBpbXBvcnRTY3JpcHRzJiYoTC5tb25hY289e2VkaXRvcjp2b2lkIDAsbGFuZ3VhZ2VzOnZvaWQgMCxleHRyYTp2b2lkIDAsQ2FuY2VsbGF0aW9uVG9rZW5Tb3VyY2U6cHQsRW1pdHRlcjpSLEtleUNvZGU6ZGUsS2V5TW9kOlF0LFBvc2l0aW9uOldlLFJhbmdlOnplLFNlbGVjdGlvbjp4dCxVcmk6UmUsVG9rZW46S3QsTWFya2Rvd25TdHJpbmc6enQsRGlzcG9zYWJsZTpjLERpc3Bvc2FibGVTdG9yZTpsLEVycm9ySGFuZGxlcjp0LEFic3RyYWN0TG9nZ2VyOkd0LENvbnNvbGVMb2dnZXI6SnQsVG9rZW5pemF0aW9uUmVzdWx0OlZ0LFRva2VuaXphdGlvblJlc3VsdDI6SXQsU2VsZWN0aW9uRGlyZWN0aW9uOl9lLE1hcmtlclNldmVyaXR5OmZlLE1hcmtlclRhZzpnZSxNYXJrZG93blN0cmluZ1RleHROZXdsaW5lU3R5bGU6bWUsTG9nTGV2ZWw6Y2UsZXJyb3JIYW5kbGVyOnJ9KTtsZXQgaTE9ITE7ZnVuY3Rpb24gczEodCl7aWYoIWkxKXtpMT0hMDtjb25zdCByPW5ldyBaKGU9PntzZWxmLnBvc3RNZXNzYWdlKGUpfSxlPT5uZXcgbjEoZSx0KSk7c2VsZi5vbm1lc3NhZ2U9ZT0+e3Iub25tZXNzYWdlKGUuZGF0YSl9fX1yZXR1cm4gc2VsZi5vbm1lc3NhZ2U9ZT0+e2kxfHxzMShudWxsKX0sZS5pbml0aWFsaXplPXMxLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxlfSh7fSk7Cgo=', null, false);
31
+ var WorkerFactory = createBase64WorkerFactory('Lyogcm9sbHVwLXBsdWdpbi13ZWItd29ya2VyLWxvYWRlciAqLwp2YXIgd29ya2VyX2NvZGU9ZnVuY3Rpb24obCl7InVzZSBzdHJpY3QiO2NsYXNzIGh7Y29uc3RydWN0b3IoKXt0aGlzLmxpc3RlbmVycz1bXSx0aGlzLnVuZXhwZWN0ZWRFcnJvckhhbmRsZXI9ZnVuY3Rpb24oZSl7c2V0VGltZW91dCgoKT0+e2lmKGUuc3RhY2spdGhyb3cgbmV3IEVycm9yKGUubWVzc2FnZSsiXG5cbiIrZS5zdGFjayk7dGhyb3cgZX0sMCl9fWFkZExpc3RlbmVyKGUpe3JldHVybiB0aGlzLmxpc3RlbmVycy5wdXNoKGUpLCgpPT57dGhpcy5fcmVtb3ZlTGlzdGVuZXIoZSl9fWVtaXQodCl7dGhpcy5saXN0ZW5lcnMuZm9yRWFjaChlPT57ZSh0KX0pfV9yZW1vdmVMaXN0ZW5lcihlKXt0aGlzLmxpc3RlbmVycy5zcGxpY2UodGhpcy5saXN0ZW5lcnMuaW5kZXhPZihlKSwxKX1zZXRVbmV4cGVjdGVkRXJyb3JIYW5kbGVyKGUpe3RoaXMudW5leHBlY3RlZEVycm9ySGFuZGxlcj1lfWdldFVuZXhwZWN0ZWRFcnJvckhhbmRsZXIoKXtyZXR1cm4gdGhpcy51bmV4cGVjdGVkRXJyb3JIYW5kbGVyfW9uVW5leHBlY3RlZEVycm9yKGUpe3RoaXMudW5leHBlY3RlZEVycm9ySGFuZGxlcihlKSx0aGlzLmVtaXQoZSl9b25VbmV4cGVjdGVkRXh0ZXJuYWxFcnJvcihlKXt0aGlzLnVuZXhwZWN0ZWRFcnJvckhhbmRsZXIoZSl9fWNvbnN0IHU9bmV3IGg7ZnVuY3Rpb24gYyhlKXshZnVuY3Rpb24oZSl7aWYoZSBpbnN0YW5jZW9mIGcpcmV0dXJuITA7cmV0dXJuIGUgaW5zdGFuY2VvZiBFcnJvciYmZS5uYW1lPT09bSYmZS5tZXNzYWdlPT09bX0oZSkmJnUub25VbmV4cGVjdGVkRXJyb3IoZSl9ZnVuY3Rpb24gZihlKXt2YXIgdCxyO3JldHVybiBlIGluc3RhbmNlb2YgRXJyb3I/KHtuYW1lOnQsbWVzc2FnZTpyfT1lLHskaXNFcnJvcjohMCxuYW1lOnQsbWVzc2FnZTpyLHN0YWNrOmUuc3RhY2t0cmFjZXx8ZS5zdGFja30pOmV9Y29uc3QgbT0iQ2FuY2VsZWQiO2NsYXNzIGcgZXh0ZW5kcyBFcnJvcntjb25zdHJ1Y3Rvcigpe3N1cGVyKG0pLHRoaXMubmFtZT10aGlzLm1lc3NhZ2V9fXZhciBiO3t2YXIgQz1iPWJ8fHt9O0MuaXM9ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJiJvYmplY3QiPT10eXBlb2YgZSYmImZ1bmN0aW9uIj09dHlwZW9mIGVbU3ltYm9sLml0ZXJhdG9yXX07Y29uc3QgYW49T2JqZWN0LmZyZWV6ZShbXSk7Qy5lbXB0eT1mdW5jdGlvbigpe3JldHVybiBhbn0sQy5zaW5nbGU9ZnVuY3Rpb24qKGUpe3lpZWxkIGV9LEMuZnJvbT1mdW5jdGlvbihlKXtyZXR1cm4gZXx8YW59LEMuaXNFbXB0eT1mdW5jdGlvbihlKXtyZXR1cm4hZXx8ITA9PT1lW1N5bWJvbC5pdGVyYXRvcl0oKS5uZXh0KCkuZG9uZX0sQy5maXJzdD1mdW5jdGlvbihlKXtyZXR1cm4gZVtTeW1ib2wuaXRlcmF0b3JdKCkubmV4dCgpLnZhbHVlfSxDLnNvbWU9ZnVuY3Rpb24oZSx0KXtmb3IoY29uc3QgciBvZiBlKWlmKHQocikpcmV0dXJuITA7cmV0dXJuITF9LEMuZmluZD1mdW5jdGlvbihlLHQpe2Zvcihjb25zdCByIG9mIGUpaWYodChyKSlyZXR1cm4gcn0sQy5maWx0ZXI9ZnVuY3Rpb24qKGUsdCl7Zm9yKGNvbnN0IHIgb2YgZSl0KHIpJiYoeWllbGQgcil9LEMubWFwPWZ1bmN0aW9uKihlLHQpe2xldCByPTA7Zm9yKGNvbnN0IG4gb2YgZSl5aWVsZCB0KG4scisrKX0sQy5jb25jYXQ9ZnVuY3Rpb24qKC4uLmUpe2Zvcihjb25zdCB0IG9mIGUpZm9yKGNvbnN0IHIgb2YgdCl5aWVsZCByfSxDLmNvbmNhdE5lc3RlZD1mdW5jdGlvbiooZSl7Zm9yKGNvbnN0IHQgb2YgZSlmb3IoY29uc3QgciBvZiB0KXlpZWxkIHJ9LEMucmVkdWNlPWZ1bmN0aW9uKGUsdCxyKXtsZXQgbj1yO2Zvcihjb25zdCBpIG9mIGUpbj10KG4saSk7cmV0dXJuIG59LEMuc2xpY2U9ZnVuY3Rpb24qKGUsdCxyPWUubGVuZ3RoKXtmb3IodDwwJiYodCs9ZS5sZW5ndGgpLHI8MD9yKz1lLmxlbmd0aDpyPmUubGVuZ3RoJiYocj1lLmxlbmd0aCk7dDxyO3QrKyl5aWVsZCBlW3RdfSxDLmNvbnN1bWU9ZnVuY3Rpb24oZSx0PU51bWJlci5QT1NJVElWRV9JTkZJTklUWSl7Y29uc3Qgcj1bXTtpZigwPT09dClyZXR1cm5bcixlXTtjb25zdCBuPWVbU3ltYm9sLml0ZXJhdG9yXSgpO2ZvcihsZXQgZT0wO2U8dDtlKyspe3ZhciBpPW4ubmV4dCgpO2lmKGkuZG9uZSlyZXR1cm5bcixDLmVtcHR5KCldO3IucHVzaChpLnZhbHVlKX1yZXR1cm5bcix7W1N5bWJvbC5pdGVyYXRvcl0oKXtyZXR1cm4gbn19XX0sQy5lcXVhbHM9ZnVuY3Rpb24oZSx0LHI9KGUsdCk9PmU9PT10KXtjb25zdCBuPWVbU3ltYm9sLml0ZXJhdG9yXSgpLGk9dFtTeW1ib2wuaXRlcmF0b3JdKCk7Zm9yKDs7KXt2YXIgYT1uLm5leHQoKSxvPWkubmV4dCgpO2lmKGEuZG9uZSE9PW8uZG9uZSlyZXR1cm4hMTtpZihhLmRvbmUpcmV0dXJuITA7aWYoIXIoYS52YWx1ZSxvLnZhbHVlKSlyZXR1cm4hMX19fWNsYXNzIHcgZXh0ZW5kcyBFcnJvcntjb25zdHJ1Y3RvcihlKXtzdXBlcihgRW5jb3VudGVyZWQgZXJyb3JzIHdoaWxlIGRpc3Bvc2luZyBvZiBzdG9yZS4gRXJyb3JzOiBbJHtlLmpvaW4oIiwgIil9XWApLHRoaXMuZXJyb3JzPWV9fWZ1bmN0aW9uIF8oZSl7aWYoYi5pcyhlKSl7bGV0IHQ9W107Zm9yKGNvbnN0IHIgb2YgZSlpZihyKXRyeXtyLmRpc3Bvc2UoKX1jYXRjaChlKXt0LnB1c2goZSl9aWYoMT09PXQubGVuZ3RoKXRocm93IHRbMF07aWYoMTx0Lmxlbmd0aCl0aHJvdyBuZXcgdyh0KTtyZXR1cm4gQXJyYXkuaXNBcnJheShlKT9bXTplfWlmKGUpcmV0dXJuIGUuZGlzcG9zZSgpLGV9ZnVuY3Rpb24gdihlKXtyZXR1cm57ZGlzcG9zZTpmdW5jdGlvbihlKXtjb25zdCB0PXRoaXM7bGV0IHI9ITEsbjtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gcj9uOihyPSEwLG49ZS5hcHBseSh0LGFyZ3VtZW50cykpfX0oKCk9PntlKCl9KX19Y2xhc3MgeXtjb25zdHJ1Y3Rvcigpe3RoaXMuX3RvRGlzcG9zZT1uZXcgU2V0LHRoaXMuX2lzRGlzcG9zZWQ9ITF9ZGlzcG9zZSgpe3RoaXMuX2lzRGlzcG9zZWR8fCh0aGlzLl9pc0Rpc3Bvc2VkPSEwLHRoaXMuY2xlYXIoKSl9Z2V0IGlzRGlzcG9zZWQoKXtyZXR1cm4gdGhpcy5faXNEaXNwb3NlZH1jbGVhcigpe3RyeXtfKHRoaXMuX3RvRGlzcG9zZS52YWx1ZXMoKSl9ZmluYWxseXt0aGlzLl90b0Rpc3Bvc2UuY2xlYXIoKX19YWRkKGUpe2lmKCFlKXJldHVybiBlO2lmKGU9PT10aGlzKXRocm93IG5ldyBFcnJvcigiQ2Fubm90IHJlZ2lzdGVyIGEgZGlzcG9zYWJsZSBvbiBpdHNlbGYhIik7cmV0dXJuIHRoaXMuX2lzRGlzcG9zZWQ/eS5ESVNBQkxFX0RJU1BPU0VEX1dBUk5JTkd8fGNvbnNvbGUud2FybihuZXcgRXJyb3IoIlRyeWluZyB0byBhZGQgYSBkaXNwb3NhYmxlIHRvIGEgRGlzcG9zYWJsZVN0b3JlIHRoYXQgaGFzIGFscmVhZHkgYmVlbiBkaXNwb3NlZCBvZi4gVGhlIGFkZGVkIG9iamVjdCB3aWxsIGJlIGxlYWtlZCEiKS5zdGFjayk6dGhpcy5fdG9EaXNwb3NlLmFkZChlKSxlfX15LkRJU0FCTEVfRElTUE9TRURfV0FSTklORz0hMTtjbGFzcyBTe2NvbnN0cnVjdG9yKCl7dGhpcy5fc3RvcmU9bmV3IHksdGhpcy5fc3RvcmV9ZGlzcG9zZSgpe3RoaXMuX3N0b3JlLmRpc3Bvc2UoKX1fcmVnaXN0ZXIoZSl7aWYoZT09PXRoaXMpdGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgcmVnaXN0ZXIgYSBkaXNwb3NhYmxlIG9uIGl0c2VsZiEiKTtyZXR1cm4gdGhpcy5fc3RvcmUuYWRkKGUpfX1TLk5vbmU9T2JqZWN0LmZyZWV6ZSh7ZGlzcG9zZSgpe319KTtjbGFzcyBve2NvbnN0cnVjdG9yKGUpe3RoaXMuZWxlbWVudD1lLHRoaXMubmV4dD1vLlVuZGVmaW5lZCx0aGlzLnByZXY9by5VbmRlZmluZWR9fW8uVW5kZWZpbmVkPW5ldyBvKHZvaWQgMCk7Y2xhc3MgTHtjb25zdHJ1Y3Rvcigpe3RoaXMuX2ZpcnN0PW8uVW5kZWZpbmVkLHRoaXMuX2xhc3Q9by5VbmRlZmluZWQsdGhpcy5fc2l6ZT0wfWdldCBzaXplKCl7cmV0dXJuIHRoaXMuX3NpemV9aXNFbXB0eSgpe3JldHVybiB0aGlzLl9maXJzdD09PW8uVW5kZWZpbmVkfWNsZWFyKCl7bGV0IGU9dGhpcy5fZmlyc3Q7Zm9yKDtlIT09by5VbmRlZmluZWQ7KXt2YXIgdD1lLm5leHQ7ZS5wcmV2PW8uVW5kZWZpbmVkLGUubmV4dD1vLlVuZGVmaW5lZCxlPXR9dGhpcy5fZmlyc3Q9by5VbmRlZmluZWQsdGhpcy5fbGFzdD1vLlVuZGVmaW5lZCx0aGlzLl9zaXplPTB9dW5zaGlmdChlKXtyZXR1cm4gdGhpcy5faW5zZXJ0KGUsITEpfXB1c2goZSl7cmV0dXJuIHRoaXMuX2luc2VydChlLCEwKX1faW5zZXJ0KGUsdCl7Y29uc3Qgcj1uZXcgbyhlKTtpZih0aGlzLl9maXJzdD09PW8uVW5kZWZpbmVkKXRoaXMuX2ZpcnN0PXIsdGhpcy5fbGFzdD1yO2Vsc2UgaWYodCl7Y29uc3QgaT10aGlzLl9sYXN0OygodGhpcy5fbGFzdD1yKS5wcmV2PWkpLm5leHQ9cn1lbHNle2NvbnN0IGE9dGhpcy5fZmlyc3Q7KCh0aGlzLl9maXJzdD1yKS5uZXh0PWEpLnByZXY9cn10aGlzLl9zaXplKz0xO2xldCBuPSExO3JldHVybigpPT57bnx8KG49ITAsdGhpcy5fcmVtb3ZlKHIpKX19c2hpZnQoKXt2YXIgZTtpZih0aGlzLl9maXJzdCE9PW8uVW5kZWZpbmVkKXJldHVybiBlPXRoaXMuX2ZpcnN0LmVsZW1lbnQsdGhpcy5fcmVtb3ZlKHRoaXMuX2ZpcnN0KSxlfXBvcCgpe3ZhciBlO2lmKHRoaXMuX2xhc3QhPT1vLlVuZGVmaW5lZClyZXR1cm4gZT10aGlzLl9sYXN0LmVsZW1lbnQsdGhpcy5fcmVtb3ZlKHRoaXMuX2xhc3QpLGV9X3JlbW92ZShlKXtpZihlLnByZXYhPT1vLlVuZGVmaW5lZCYmZS5uZXh0IT09by5VbmRlZmluZWQpe2NvbnN0IHQ9ZS5wcmV2O3QubmV4dD1lLm5leHQsZS5uZXh0LnByZXY9dH1lbHNlIGUucHJldj09PW8uVW5kZWZpbmVkJiZlLm5leHQ9PT1vLlVuZGVmaW5lZD8odGhpcy5fZmlyc3Q9by5VbmRlZmluZWQsdGhpcy5fbGFzdD1vLlVuZGVmaW5lZCk6ZS5uZXh0PT09by5VbmRlZmluZWQ/KHRoaXMuX2xhc3Q9dGhpcy5fbGFzdC5wcmV2LHRoaXMuX2xhc3QubmV4dD1vLlVuZGVmaW5lZCk6ZS5wcmV2PT09by5VbmRlZmluZWQmJih0aGlzLl9maXJzdD10aGlzLl9maXJzdC5uZXh0LHRoaXMuX2ZpcnN0LnByZXY9by5VbmRlZmluZWQpOy0tdGhpcy5fc2l6ZX0qW1N5bWJvbC5pdGVyYXRvcl0oKXtsZXQgZT10aGlzLl9maXJzdDtmb3IoO2UhPT1vLlVuZGVmaW5lZDspeWllbGQgZS5lbGVtZW50LGU9ZS5uZXh0fX12YXIgZT0iZW4iO2xldCBOPSExLEU9ITEsQT0hMSxrPXZvaWQgMCx4PWU7bGV0IE09dm9pZCAwO2NvbnN0IFA9Im9iamVjdCI9PXR5cGVvZiBzZWxmP3NlbGY6Im9iamVjdCI9PXR5cGVvZiBnbG9iYWw/Z2xvYmFsOnt9O2xldCBLPXZvaWQgMDt2b2lkIDAhPT1QLnZzY29kZSYmdm9pZCAwIT09UC52c2NvZGUucHJvY2Vzcz9LPVAudnNjb2RlLnByb2Nlc3M6InVuZGVmaW5lZCIhPXR5cGVvZiBwcm9jZXNzJiYoSz1wcm9jZXNzKTt2YXIgUj0ic3RyaW5nIj09dHlwZW9mKG51bGw9PT0oUj1udWxsPT09S3x8dm9pZCAwPT09Sz92b2lkIDA6Sy52ZXJzaW9ucyl8fHZvaWQgMD09PVI/dm9pZCAwOlIuZWxlY3Ryb24pJiYicmVuZGVyZXIiPT09KG51bGw9PT1LfHx2b2lkIDA9PT1LP3ZvaWQgMDpLLnR5cGUpO2lmKCJvYmplY3QiIT10eXBlb2YgbmF2aWdhdG9yfHxSKWlmKCJvYmplY3QiPT10eXBlb2YgSyl7Tj0id2luMzIiPT09Sy5wbGF0Zm9ybSxFPSJkYXJ3aW4iPT09Sy5wbGF0Zm9ybSwoQT0ibGludXgiPT09Sy5wbGF0Zm9ybSkmJksuZW52LlNOQVAmJksuZW52LlNOQVBfUkVWSVNJT04saz1lLHg9ZTtSPUsuZW52LlZTQ09ERV9OTFNfQ09ORklHO2lmKFIpdHJ5e3ZhciBEPUpTT04ucGFyc2UoUiksdD1ELmF2YWlsYWJsZUxhbmd1YWdlc1siKiJdO2s9RC5sb2NhbGUseD10fHxlLEQuX3RyYW5zbGF0aW9uc0NvbmZpZ0ZpbGV9Y2F0Y2goZSl7fX1lbHNlIGNvbnNvbGUuZXJyb3IoIlVuYWJsZSB0byByZXNvbHZlIHBsYXRmb3JtLiIpO2Vsc2UgTT1uYXZpZ2F0b3IudXNlckFnZW50LE49MDw9TS5pbmRleE9mKCJXaW5kb3dzIiksRT0wPD1NLmluZGV4T2YoIk1hY2ludG9zaCIpLCgwPD1NLmluZGV4T2YoIk1hY2ludG9zaCIpfHwwPD1NLmluZGV4T2YoImlQYWQiKXx8MDw9TS5pbmRleE9mKCJpUGhvbmUiKSkmJm5hdmlnYXRvci5tYXhUb3VjaFBvaW50cyYmbmF2aWdhdG9yLm1heFRvdWNoUG9pbnRzLEE9MDw9TS5pbmRleE9mKCJMaW51eCIpLGs9bmF2aWdhdG9yLmxhbmd1YWdlLHg9aztjb25zdCBJPU4sVj1FLE89QSxGPU07KCgpPT57aWYoImZ1bmN0aW9uIiE9dHlwZW9mIFAucG9zdE1lc3NhZ2V8fFAuaW1wb3J0U2NyaXB0cylyZXR1cm47e2xldCBpPVtdLGU9KFAuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIscj0+e2lmKHIuZGF0YSYmci5kYXRhLnZzY29kZVNjaGVkdWxlQXN5bmNXb3JrKWZvcihsZXQgZT0wLHQ9aS5sZW5ndGg7ZTx0O2UrKyl7Y29uc3Qgbj1pW2VdO2lmKG4uaWQ9PT1yLmRhdGEudnNjb2RlU2NoZWR1bGVBc3luY1dvcmspcmV0dXJuIGkuc3BsaWNlKGUsMSksdm9pZCBuLmNhbGxiYWNrKCl9fSksMCl9fSkoKTt2YXIgVCxCLFI9ISEoRiYmMDw9Ri5pbmRleE9mKCJDaHJvbWUiKSk7RiYmRi5pbmRleE9mKCJGaXJlZm94IiksIVImJkYmJkYuaW5kZXhPZigiU2FmYXJpIiksRiYmRi5pbmRleE9mKCJFZGcvIiksRiYmRi5pbmRleE9mKCJBbmRyb2lkIik7Y29uc3QgcT1QLnBlcmZvcm1hbmNlJiYiZnVuY3Rpb24iPT10eXBlb2YgUC5wZXJmb3JtYW5jZS5ub3c7Y2xhc3MgVXtjb25zdHJ1Y3RvcihlKXt0aGlzLl9oaWdoUmVzb2x1dGlvbj1xJiZlLHRoaXMuX3N0YXJ0VGltZT10aGlzLl9ub3coKSx0aGlzLl9zdG9wVGltZT0tMX1zdGF0aWMgY3JlYXRlKGU9ITApe3JldHVybiBuZXcgVShlKX1zdG9wKCl7dGhpcy5fc3RvcFRpbWU9dGhpcy5fbm93KCl9ZWxhcHNlZCgpe3JldHVybi0xIT09dGhpcy5fc3RvcFRpbWU/dGhpcy5fc3RvcFRpbWUtdGhpcy5fc3RhcnRUaW1lOnRoaXMuX25vdygpLXRoaXMuX3N0YXJ0VGltZX1fbm93KCl7cmV0dXJuKHRoaXMuX2hpZ2hSZXNvbHV0aW9uP1AucGVyZm9ybWFuY2U6RGF0ZSkubm93KCl9fXt2YXIgSD1UPVR8fHt9O2Z1bmN0aW9uIFcoYSl7cmV0dXJuKHQscj1udWxsLGUpPT57bGV0IG49ITEsaTtyZXR1cm4gaT1hKGU9PntpZighbilyZXR1cm4gaT9pLmRpc3Bvc2UoKTpuPSEwLHQuY2FsbChyLGUpfSxudWxsLGUpLG4mJmkuZGlzcG9zZSgpLGl9fWZ1bmN0aW9uIHoobixpKXtyZXR1cm4gSigodCxyPW51bGwsZSk9Pm4oZT0+dC5jYWxsKHIsaShlKSksbnVsbCxlKSl9ZnVuY3Rpb24gaihuLGkpe3JldHVybiBKKCh0LHI9bnVsbCxlKT0+bihlPT57aShlKSx0LmNhbGwocixlKX0sbnVsbCxlKSl9ZnVuY3Rpb24gJChuLGkpe3JldHVybiBKKCh0LHI9bnVsbCxlKT0+bihlPT5pKGUpJiZ0LmNhbGwocixlKSxudWxsLGUpKX1mdW5jdGlvbiBHKGUsdCxyKXtsZXQgbj1yO3JldHVybiB6KGUsZT0+bj10KG4sZSkpfWZ1bmN0aW9uIEooZSl7bGV0IHQ7Y29uc3Qgcj1uZXcgWCh7b25GaXJzdExpc3RlbmVyQWRkKCl7dD1lKHIuZmlyZSxyKX0sb25MYXN0TGlzdGVuZXJSZW1vdmUoKXt0LmRpc3Bvc2UoKX19KTtyZXR1cm4gci5ldmVudH1mdW5jdGlvbiBRKGUsdCxyPTEwMCxuPSExLGkpe2xldCBhLG89dm9pZCAwLHM9dm9pZCAwLGw9MDtjb25zdCBoPW5ldyBYKHtsZWFrV2FybmluZ1RocmVzaG9sZDppLG9uRmlyc3RMaXN0ZW5lckFkZCgpe2E9ZShlPT57bCsrLG89dChvLGUpLG4mJiFzJiYoaC5maXJlKG8pLG89dm9pZCAwKSxjbGVhclRpbWVvdXQocykscz1zZXRUaW1lb3V0KCgpPT57dmFyIGU9bztvPXZvaWQgMCxzPXZvaWQgMCwoIW58fDE8bCkmJmguZmlyZShlKSxsPTB9LHIpfSl9LG9uTGFzdExpc3RlbmVyUmVtb3ZlKCl7YS5kaXNwb3NlKCl9fSk7cmV0dXJuIGguZXZlbnR9ZnVuY3Rpb24gWShlLHI9KGUsdCk9PmU9PT10KXtsZXQgbj0hMCxpO3JldHVybiAkKGUsZT0+e3ZhciB0PW58fCFyKGUsaSk7cmV0dXJuIG49ITEsaT1lLHR9KX1ILk5vbmU9KCk9PlMuTm9uZSxILm9uY2U9VyxILm1hcD16LEguZm9yRWFjaD1qLEguZmlsdGVyPSQsSC5zaWduYWw9ZnVuY3Rpb24oZSl7cmV0dXJuIGV9LEguYW55PWZ1bmN0aW9uKC4uLmkpe3JldHVybih0LHI9bnVsbCxuKT0+e3ZhclsuLi5lXT1bLi4uaS5tYXAoZT0+ZShlPT50LmNhbGwocixlKSxudWxsLG4pKV07cmV0dXJuIHYoKCk9Pl8oZSkpfX0sSC5yZWR1Y2U9RyxILmRlYm91bmNlZExpc3RlbmVyPWZ1bmN0aW9uKGUsdCxyLG49MTAwLGk9ITEpe2xldCBhPXZvaWQgMCxvPXZvaWQgMCxzPTA7cmV0dXJuIGUoZT0+e3MrKyxhPXIoYSxlKSxpJiYhbyYmKHQoYSksYT12b2lkIDApLGNsZWFyVGltZW91dChvKSxvPXNldFRpbWVvdXQoKCk9Pnt2YXIgZT1hO2E9dm9pZCAwLG89dm9pZCAwLCghaXx8MTxzKSYmdChlKSxzPTB9LG4pfSl9LEguZGVib3VuY2U9USxILmxhdGNoPVksSC5zcGxpdD1mdW5jdGlvbihlLHQpe3JldHVybltILmZpbHRlcihlLHQpLEguZmlsdGVyKGUsZT0+IXQoZSkpXX0sSC5idWZmZXI9ZnVuY3Rpb24oZSx0PSExLHI9W10pe2xldCBuPXIuc2xpY2UoKSxpPWUoZT0+e24/bi5wdXNoKGUpOm8uZmlyZShlKX0pO2NvbnN0IGE9KCk9PntuJiZuLmZvckVhY2goZT0+by5maXJlKGUpKSxuPW51bGx9LG89bmV3IFgoe29uRmlyc3RMaXN0ZW5lckFkZCgpe2k9aXx8ZShlPT5vLmZpcmUoZSkpfSxvbkZpcnN0TGlzdGVuZXJEaWRBZGQoKXtuJiYodD9zZXRUaW1lb3V0KGEpOmEoKSl9LG9uTGFzdExpc3RlbmVyUmVtb3ZlKCl7aSYmaS5kaXNwb3NlKCksaT1udWxsfX0pO3JldHVybiBvLmV2ZW50fTtjbGFzcyBvbntjb25zdHJ1Y3RvcihlKXt0aGlzLmV2ZW50PWV9bWFwKGUpe3JldHVybiBuZXcgb24oeih0aGlzLmV2ZW50LGUpKX1mb3JFYWNoKGUpe3JldHVybiBuZXcgb24oaih0aGlzLmV2ZW50LGUpKX1maWx0ZXIoZSl7cmV0dXJuIG5ldyBvbigkKHRoaXMuZXZlbnQsZSkpfXJlZHVjZShlLHQpe3JldHVybiBuZXcgb24oRyh0aGlzLmV2ZW50LGUsdCkpfWxhdGNoKCl7cmV0dXJuIG5ldyBvbihZKHRoaXMuZXZlbnQpKX1kZWJvdW5jZShlLHQ9MTAwLHI9ITEsbil7cmV0dXJuIG5ldyBvbihRKHRoaXMuZXZlbnQsZSx0LHIsbikpfW9uKGUsdCxyKXtyZXR1cm4gdGhpcy5ldmVudChlLHQscil9b25jZShlLHQscil7cmV0dXJuIFcodGhpcy5ldmVudCkoZSx0LHIpfX1ILmNoYWluPWZ1bmN0aW9uKGUpe3JldHVybiBuZXcgb24oZSl9LEguZnJvbU5vZGVFdmVudEVtaXR0ZXI9ZnVuY3Rpb24oZSx0LHI9ZT0+ZSl7Y29uc3Qgbj0oLi4uZSk9PmkuZmlyZShyKC4uLmUpKSxpPW5ldyBYKHtvbkZpcnN0TGlzdGVuZXJBZGQ6KCk9PmUub24odCxuKSxvbkxhc3RMaXN0ZW5lclJlbW92ZTooKT0+ZS5yZW1vdmVMaXN0ZW5lcih0LG4pfSk7cmV0dXJuIGkuZXZlbnR9LEguZnJvbURPTUV2ZW50RW1pdHRlcj1mdW5jdGlvbihlLHQscj1lPT5lKXtjb25zdCBuPSguLi5lKT0+aS5maXJlKHIoLi4uZSkpLGk9bmV3IFgoe29uRmlyc3RMaXN0ZW5lckFkZDooKT0+ZS5hZGRFdmVudExpc3RlbmVyKHQsbiksb25MYXN0TGlzdGVuZXJSZW1vdmU6KCk9PmUucmVtb3ZlRXZlbnRMaXN0ZW5lcih0LG4pfSk7cmV0dXJuIGkuZXZlbnR9LEgudG9Qcm9taXNlPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgUHJvbWlzZShlPT5XKHQpKGUpKX0sSC5ydW5BbmRTdWJzY3JpYmU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdCh2b2lkIDApLGUoZT0+dChlKSl9LEgucnVuQW5kU3Vic2NyaWJlV2l0aFN0b3JlPWZ1bmN0aW9uKGUsdCl7bGV0IHI9bnVsbDtmdW5jdGlvbiBuKGUpe251bGwhPT1yJiZ2b2lkIDAhPT1yJiZyLmRpc3Bvc2UoKSxyPW5ldyB5LHQoZSxyKX1uKHZvaWQgMCk7Y29uc3QgaT1lKGU9Pm4oZSkpO3JldHVybiB2KCgpPT57aS5kaXNwb3NlKCksbnVsbCE9PXImJnZvaWQgMCE9PXImJnIuZGlzcG9zZSgpfSl9fWNsYXNzIFp7Y29uc3RydWN0b3IoZSl7dGhpcy5fbGlzdGVuZXJDb3VudD0wLHRoaXMuX2ludm9jYXRpb25Db3VudD0wLHRoaXMuX2VsYXBzZWRPdmVyYWxsPTAsdGhpcy5fbmFtZT1lKyJfIitaLl9pZFBvb2wrK31zdGFydChlKXt0aGlzLl9zdG9wV2F0Y2g9bmV3IFUoITApLHRoaXMuX2xpc3RlbmVyQ291bnQ9ZX1zdG9wKCl7aWYodGhpcy5fc3RvcFdhdGNoKXtjb25zdCBlPXRoaXMuX3N0b3BXYXRjaC5lbGFwc2VkKCk7dGhpcy5fZWxhcHNlZE92ZXJhbGwrPWUsdGhpcy5faW52b2NhdGlvbkNvdW50Kz0xLGNvbnNvbGUuaW5mbyhgZGlkIEZJUkUgJHt0aGlzLl9uYW1lfTogZWxhcHNlZF9tczogJHtlLnRvRml4ZWQoNSl9LCBsaXN0ZW5lcjogJHt0aGlzLl9saXN0ZW5lckNvdW50fSAoZWxhcHNlZF9vdmVyYWxsOiAke3RoaXMuX2VsYXBzZWRPdmVyYWxsLnRvRml4ZWQoMil9LCBpbnZvY2F0aW9uczogJHt0aGlzLl9pbnZvY2F0aW9uQ291bnR9KWApLHRoaXMuX3N0b3BXYXRjaD12b2lkIDB9fX1aLl9pZFBvb2w9MDtjbGFzcyBYe2NvbnN0cnVjdG9yKGUpe3RoaXMuX2Rpc3Bvc2VkPSExLHRoaXMuX29wdGlvbnM9ZSx0aGlzLl9sZWFrYWdlTW9uPXZvaWQgMCx0aGlzLl9wZXJmTW9uPW51bGwhPT0oZT10aGlzLl9vcHRpb25zKSYmdm9pZCAwIT09ZSYmZS5fcHJvZk5hbWU/bmV3IFoodGhpcy5fb3B0aW9ucy5fcHJvZk5hbWUpOnZvaWQgMH1nZXQgZXZlbnQoKXtyZXR1cm4gdGhpcy5fZXZlbnR8fCh0aGlzLl9ldmVudD0oZSx0LHIpPT57dGhpcy5fbGlzdGVuZXJzfHwodGhpcy5fbGlzdGVuZXJzPW5ldyBMKTt2YXIgbj10aGlzLl9saXN0ZW5lcnMuaXNFbXB0eSgpO24mJnRoaXMuX29wdGlvbnMmJnRoaXMuX29wdGlvbnMub25GaXJzdExpc3RlbmVyQWRkJiZ0aGlzLl9vcHRpb25zLm9uRmlyc3RMaXN0ZW5lckFkZCh0aGlzKTtjb25zdCBpPXRoaXMuX2xpc3RlbmVycy5wdXNoKHQ/W2UsdF06ZSksYT0obiYmdGhpcy5fb3B0aW9ucyYmdGhpcy5fb3B0aW9ucy5vbkZpcnN0TGlzdGVuZXJEaWRBZGQmJnRoaXMuX29wdGlvbnMub25GaXJzdExpc3RlbmVyRGlkQWRkKHRoaXMpLHRoaXMuX29wdGlvbnMmJnRoaXMuX29wdGlvbnMub25MaXN0ZW5lckRpZEFkZCYmdGhpcy5fb3B0aW9ucy5vbkxpc3RlbmVyRGlkQWRkKHRoaXMsZSx0KSxudWxsPT09KG49dGhpcy5fbGVha2FnZU1vbil8fHZvaWQgMD09PW4/dm9pZCAwOm4uY2hlY2sodGhpcy5fbGlzdGVuZXJzLnNpemUpKTtlPXYoKCk9PnthJiZhKCksdGhpcy5fZGlzcG9zZWR8fChpKCksdGhpcy5fb3B0aW9ucyYmdGhpcy5fb3B0aW9ucy5vbkxhc3RMaXN0ZW5lclJlbW92ZSYmKHRoaXMuX2xpc3RlbmVycyYmIXRoaXMuX2xpc3RlbmVycy5pc0VtcHR5KCl8fHRoaXMuX29wdGlvbnMub25MYXN0TGlzdGVuZXJSZW1vdmUodGhpcykpKX0pO3JldHVybiByIGluc3RhbmNlb2YgeT9yLmFkZChlKTpBcnJheS5pc0FycmF5KHIpJiZyLnB1c2goZSksZX0pLHRoaXMuX2V2ZW50fWZpcmUoZSl7dmFyIHQ7aWYodGhpcy5fbGlzdGVuZXJzKXt0aGlzLl9kZWxpdmVyeVF1ZXVlfHwodGhpcy5fZGVsaXZlcnlRdWV1ZT1uZXcgTCk7Zm9yKHZhciByIG9mIHRoaXMuX2xpc3RlbmVycyl0aGlzLl9kZWxpdmVyeVF1ZXVlLnB1c2goW3IsZV0pO2ZvcihudWxsIT09KHQ9dGhpcy5fcGVyZk1vbikmJnZvaWQgMCE9PXQmJnQuc3RhcnQodGhpcy5fZGVsaXZlcnlRdWV1ZS5zaXplKTswPHRoaXMuX2RlbGl2ZXJ5UXVldWUuc2l6ZTspe2NvbnN0W24sZV09dGhpcy5fZGVsaXZlcnlRdWV1ZS5zaGlmdCgpO3RyeXsiZnVuY3Rpb24iPT10eXBlb2Ygbj9uLmNhbGwodm9pZCAwLGUpOm5bMF0uY2FsbChuWzFdLGUpfWNhdGNoKGUpe2MoZSl9fW51bGwhPT0odD10aGlzLl9wZXJmTW9uKSYmdm9pZCAwIT09dCYmdC5zdG9wKCl9fWRpc3Bvc2UoKXt2YXIgZSx0O3RoaXMuX2Rpc3Bvc2VkfHwodGhpcy5fZGlzcG9zZWQ9ITAsbnVsbCE9PShlPXRoaXMuX2xpc3RlbmVycykmJnZvaWQgMCE9PWUmJmUuY2xlYXIoKSxudWxsIT09KGU9dGhpcy5fZGVsaXZlcnlRdWV1ZSkmJnZvaWQgMCE9PWUmJmUuY2xlYXIoKSxudWxsIT09KHQ9bnVsbD09PShlPXRoaXMuX29wdGlvbnMpfHx2b2lkIDA9PT1lP3ZvaWQgMDplLm9uTGFzdExpc3RlbmVyUmVtb3ZlKSYmdm9pZCAwIT09dCYmdC5jYWxsKGUpLG51bGwhPT0odD10aGlzLl9sZWFrYWdlTW9uKSYmdm9pZCAwIT09dCYmdC5kaXNwb3NlKCkpfX1mdW5jdGlvbiBlZShlKXtjb25zdCB0PVtdO2Zvcihjb25zdCByIG9mIGZ1bmN0aW9uKGUpe2xldCB0PVtdLHI9T2JqZWN0LmdldFByb3RvdHlwZU9mKGUpO2Zvcig7T2JqZWN0LnByb3RvdHlwZSE9PXI7KXQ9dC5jb25jYXQoT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMocikpLHI9T2JqZWN0LmdldFByb3RvdHlwZU9mKHIpO3JldHVybiB0fShlKSkiZnVuY3Rpb24iPT10eXBlb2YgZVtyXSYmdC5wdXNoKHIpO3JldHVybiB0fWZ1bmN0aW9uIHRlKGUscil7bGV0IHQ9e307Zm9yKGNvbnN0IG4gb2YgZSl0W25dPSh0PT5mdW5jdGlvbigpe3ZhciBlPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywwKTtyZXR1cm4gcih0LGUpfSkobik7cmV0dXJuIHR9Y2xhc3MgcmV7Y29uc3RydWN0b3IoZSl7dGhpcy5leGVjdXRvcj1lLHRoaXMuX2RpZFJ1bj0hMX1nZXRWYWx1ZSgpe2lmKCF0aGlzLl9kaWRSdW4pdHJ5e3RoaXMuX3ZhbHVlPXRoaXMuZXhlY3V0b3IoKX1jYXRjaChlKXt0aGlzLl9lcnJvcj1lfWZpbmFsbHl7dGhpcy5fZGlkUnVuPSEwfWlmKHRoaXMuX2Vycm9yKXRocm93IHRoaXMuX2Vycm9yO3JldHVybiB0aGlzLl92YWx1ZX1nZXQgcmF3VmFsdWUoKXtyZXR1cm4gdGhpcy5fdmFsdWV9fWZ1bmN0aW9uIG5lKGUpe3JldHVybiBlLnJlcGxhY2UoL1tcXFx7XH1cKlwrXD9cfFxeXCRcLlxbXF1cKFwpXS9nLCJcXCQmIil9ZnVuY3Rpb24gaWUocixuLGk9MCxhPXIubGVuZ3RoLG89MCxzPW4ubGVuZ3RoKXtmb3IoO2k8YSYmbzxzO2krKyxvKyspe2xldCBlPXIuY2hhckNvZGVBdChpKSx0PW4uY2hhckNvZGVBdChvKTtpZihlIT09dCl7aWYoMTI4PD1lfHwxMjg8PXQpcmV0dXJuIGZ1bmN0aW9uKGUsdCxyPTAsbj1lLmxlbmd0aCxpPTAsYT10Lmxlbmd0aCl7Zm9yKDtyPG4mJmk8YTtyKyssaSsrKXt2YXIgbz1lLmNoYXJDb2RlQXQocikscz10LmNoYXJDb2RlQXQoaSk7aWYobzxzKXJldHVybi0xO2lmKHM8bylyZXR1cm4gMX12YXIgbD1uLXIsaD1hLWk7cmV0dXJuIGw8aD8tMTpoPGw/MTowfShyLnRvTG93ZXJDYXNlKCksbi50b0xvd2VyQ2FzZSgpLGksYSxvLHMpO2FlKGUpJiYoZS09MzIpLGFlKHQpJiYodC09MzIpO3ZhciBsPWUtdDtpZigwIT1sKXJldHVybiBsfX12YXIgZT1hLWksdD1zLW87cmV0dXJuIGU8dD8tMTp0PGU/MTowfWZ1bmN0aW9uIGFlKGUpe3JldHVybiA5Nzw9ZSYmZTw9MTIyfWZ1bmN0aW9uIG9lKGUpe3JldHVybiA2NTw9ZSYmZTw9OTB9ZnVuY3Rpb24gc2UoZSx0KXt2YXIgcj10Lmxlbmd0aDtyZXR1cm4hKHQubGVuZ3RoPmUubGVuZ3RoKSYmMD09PWllKGUsdCwwLHIpfWZ1bmN0aW9uIGxlKGUpe3JldHVybiA1NTI5Njw9ZSYmZTw9NTYzMTl9Y2xhc3MgaGV7Y29uc3RydWN0b3IoZSl7dGhpcy5jb25mdXNhYmxlRGljdGlvbmFyeT1lfXN0YXRpYyBnZXRJbnN0YW5jZShlKXtyZXR1cm4gaGUuY2FjaGUuZ2V0KEFycmF5LmZyb20oZSkpfXN0YXRpYyBnZXRMb2NhbGVzKCl7cmV0dXJuIGhlLl9sb2NhbGVzLmdldFZhbHVlKCl9aXNBbWJpZ3VvdXMoZSl7cmV0dXJuIHRoaXMuY29uZnVzYWJsZURpY3Rpb25hcnkuaGFzKGUpfWdldFByaW1hcnlDb25mdXNhYmxlKGUpe3JldHVybiB0aGlzLmNvbmZ1c2FibGVEaWN0aW9uYXJ5LmdldChlKX1nZXRDb25mdXNhYmxlQ29kZVBvaW50cygpe3JldHVybiBuZXcgU2V0KHRoaXMuY29uZnVzYWJsZURpY3Rpb25hcnkua2V5cygpKX19KEI9aGUpLmFtYmlndW91c0NoYXJhY3RlckRhdGE9bmV3IHJlKCgpPT5KU09OLnBhcnNlKCd7Il9jb21tb24iOls4MjMyLDMyLDgyMzMsMzIsNTc2MCwzMiw4MTkyLDMyLDgxOTMsMzIsODE5NCwzMiw4MTk1LDMyLDgxOTYsMzIsODE5NywzMiw4MTk4LDMyLDgyMDAsMzIsODIwMSwzMiw4MjAyLDMyLDgyODcsMzIsODE5OSwzMiw4MjM5LDMyLDIwNDIsOTUsNjUxMDEsOTUsNjUxMDIsOTUsNjUxMDMsOTUsODIwOCw0NSw4MjA5LDQ1LDgyMTAsNDUsNjUxMTIsNDUsMTc0OCw0NSw4MjU5LDQ1LDcyNyw0NSw4NzIyLDQ1LDEwMTM0LDQ1LDExNDUwLDQ1LDE1NDksNDQsMTY0Myw0NCw4MjE4LDQ0LDE4NCw0NCw0MjIzMyw0NCw4OTQsNTksMjMwNyw1OCwyNjkxLDU4LDE0MTcsNTgsMTc5NSw1OCwxNzk2LDU4LDU4NjgsNTgsNjUwNzIsNTgsNjE0Nyw1OCw2MTUzLDU4LDgyODIsNTgsMTQ3NSw1OCw3NjAsNTgsNDI4ODksNTgsODc1OCw1OCw3MjAsNTgsNDIyMzcsNTgsNDUxLDMzLDExNjAxLDMzLDY2MCw2Myw1NzcsNjMsMjQyOSw2Myw1MDM4LDYzLDQyNzMxLDYzLDExOTE0OSw0Niw4MjI4LDQ2LDE3OTMsNDYsMTc5NCw0Niw0MjUxMCw0Niw2ODE3Niw0NiwxNjMyLDQ2LDE3NzYsNDYsNDIyMzIsNDYsMTM3Myw5Niw2NTI4Nyw5Niw4MjE5LDk2LDgyNDIsOTYsMTM3MCw5NiwxNTIzLDk2LDgxNzUsOTYsNjUzNDQsOTYsOTAwLDk2LDgxODksOTYsODEyNSw5Niw4MTI3LDk2LDgxOTAsOTYsNjk3LDk2LDg4NCw5Niw3MTIsOTYsNzE0LDk2LDcxNSw5Niw3NTYsOTYsNjk5LDk2LDcwMSw5Niw3MDAsOTYsNzAyLDk2LDQyODkyLDk2LDE0OTcsOTYsMjAzNiw5NiwyMDM3LDk2LDUxOTQsOTYsNTgzNiw5Niw5NDAzMyw5Niw5NDAzNCw5Niw2NTMzOSw5MSwxMDA4OCw0MCwxMDA5OCw0MCwxMjMwOCw0MCw2NDgzMCw0MCw2NTM0MSw5MywxMDA4OSw0MSwxMDA5OSw0MSwxMjMwOSw0MSw2NDgzMSw0MSwxMDEwMCwxMjMsMTE5MDYwLDEyMywxMDEwMSwxMjUsNjUzNDIsOTQsODI3MCw0MiwxNjQ1LDQyLDg3MjcsNDIsNjYzMzUsNDIsNTk0MSw0Nyw4MjU3LDQ3LDg3MjUsNDcsODI2MCw0Nyw5NTg1LDQ3LDEwMTg3LDQ3LDEwNzQ0LDQ3LDExOTM1NCw0NywxMjc1NSw0NywxMjMzOSw0NywxMTQ2Miw0NywyMDAzMSw0NywxMjAzNSw0Nyw2NTM0MCw5Miw2NTEyOCw5Miw4NzI2LDkyLDEwMTg5LDkyLDEwNzQxLDkyLDEwNzQ1LDkyLDExOTMxMSw5MiwxMTkzNTUsOTIsMTI3NTYsOTIsMjAwMjIsOTIsMTIwMzQsOTIsNDI4NzIsMzgsNzA4LDk0LDcxMCw5NCw1ODY5LDQzLDEwMTMzLDQzLDY2MjAzLDQzLDgyNDksNjAsMTAwOTQsNjAsNzA2LDYwLDExOTM1MCw2MCw1MTc2LDYwLDU4MTAsNjAsNTEyMCw2MSwxMTg0MCw2MSwxMjQ0OCw2MSw0MjIzOSw2MSw4MjUwLDYyLDEwMDk1LDYyLDcwNyw2MiwxMTkzNTEsNjIsNTE3MSw2Miw5NDAxNSw2Miw4Mjc1LDEyNiw3MzIsMTI2LDgxMjgsMTI2LDg3NjQsMTI2LDY1MzcyLDEyNCw2NTI5Myw0NSwxMjA3ODQsNTAsMTIwNzk0LDUwLDEyMDgwNCw1MCwxMjA4MTQsNTAsMTIwODI0LDUwLDEzMDAzNCw1MCw0Mjg0Miw1MCw0MjMsNTAsMTAwMCw1MCw0MjU2NCw1MCw1MzExLDUwLDQyNzM1LDUwLDExOTMwMiw1MSwxMjA3ODUsNTEsMTIwNzk1LDUxLDEyMDgwNSw1MSwxMjA4MTUsNTEsMTIwODI1LDUxLDEzMDAzNSw1MSw0MjkyMyw1MSw1NDAsNTEsNDM5LDUxLDQyODU4LDUxLDExNDY4LDUxLDEyNDgsNTEsOTQwMTEsNTEsNzE4ODIsNTEsMTIwNzg2LDUyLDEyMDc5Niw1MiwxMjA4MDYsNTIsMTIwODE2LDUyLDEyMDgyNiw1MiwxMzAwMzYsNTIsNTA3MCw1Miw3MTg1NSw1MiwxMjA3ODcsNTMsMTIwNzk3LDUzLDEyMDgwNyw1MywxMjA4MTcsNTMsMTIwODI3LDUzLDEzMDAzNyw1Myw0NDQsNTMsNzE4NjcsNTMsMTIwNzg4LDU0LDEyMDc5OCw1NCwxMjA4MDgsNTQsMTIwODE4LDU0LDEyMDgyOCw1NCwxMzAwMzgsNTQsMTE0NzQsNTQsNTEwMiw1NCw3MTg5Myw1NCwxMTkzMTQsNTUsMTIwNzg5LDU1LDEyMDc5OSw1NSwxMjA4MDksNTUsMTIwODE5LDU1LDEyMDgyOSw1NSwxMzAwMzksNTUsNjY3NzAsNTUsNzE4NzgsNTUsMjgxOSw1NiwyNTM4LDU2LDI2NjYsNTYsMTI1MTMxLDU2LDEyMDc5MCw1NiwxMjA4MDAsNTYsMTIwODEwLDU2LDEyMDgyMCw1NiwxMjA4MzAsNTYsMTMwMDQwLDU2LDU0Nyw1Niw1NDYsNTYsNjYzMzAsNTYsMjY2Myw1NywyOTIwLDU3LDI1NDEsNTcsMzQzNyw1NywxMjA3OTEsNTcsMTIwODAxLDU3LDEyMDgxMSw1NywxMjA4MjEsNTcsMTIwODMxLDU3LDEzMDA0MSw1Nyw0Mjg2Miw1NywxMTQ2Niw1Nyw3MTg4NCw1Nyw3MTg1Miw1Nyw3MTg5NCw1Nyw5MDgyLDk3LDY1MzQ1LDk3LDExOTgzNCw5NywxMTk4ODYsOTcsMTE5OTM4LDk3LDExOTk5MCw5NywxMjAwNDIsOTcsMTIwMDk0LDk3LDEyMDE0Niw5NywxMjAxOTgsOTcsMTIwMjUwLDk3LDEyMDMwMiw5NywxMjAzNTQsOTcsMTIwNDA2LDk3LDEyMDQ1OCw5Nyw1OTMsOTcsOTQ1LDk3LDEyMDUxNCw5NywxMjA1NzIsOTcsMTIwNjMwLDk3LDEyMDY4OCw5NywxMjA3NDYsOTcsNjUzMTMsNjUsMTE5ODA4LDY1LDExOTg2MCw2NSwxMTk5MTIsNjUsMTE5OTY0LDY1LDEyMDAxNiw2NSwxMjAwNjgsNjUsMTIwMTIwLDY1LDEyMDE3Miw2NSwxMjAyMjQsNjUsMTIwMjc2LDY1LDEyMDMyOCw2NSwxMjAzODAsNjUsMTIwNDMyLDY1LDkxMyw2NSwxMjA0ODgsNjUsMTIwNTQ2LDY1LDEyMDYwNCw2NSwxMjA2NjIsNjUsMTIwNzIwLDY1LDUwMzQsNjUsNTU3Myw2NSw0MjIyMiw2NSw5NDAxNiw2NSw2NjIwOCw2NSwxMTk4MzUsOTgsMTE5ODg3LDk4LDExOTkzOSw5OCwxMTk5OTEsOTgsMTIwMDQzLDk4LDEyMDA5NSw5OCwxMjAxNDcsOTgsMTIwMTk5LDk4LDEyMDI1MSw5OCwxMjAzMDMsOTgsMTIwMzU1LDk4LDEyMDQwNyw5OCwxMjA0NTksOTgsMzg4LDk4LDUwNzEsOTgsNTIzNCw5OCw1NTUxLDk4LDY1MzE0LDY2LDg0OTIsNjYsMTE5ODA5LDY2LDExOTg2MSw2NiwxMTk5MTMsNjYsMTIwMDE3LDY2LDEyMDA2OSw2NiwxMjAxMjEsNjYsMTIwMTczLDY2LDEyMDIyNSw2NiwxMjAyNzcsNjYsMTIwMzI5LDY2LDEyMDM4MSw2NiwxMjA0MzMsNjYsNDI5MzIsNjYsOTE0LDY2LDEyMDQ4OSw2NiwxMjA1NDcsNjYsMTIwNjA1LDY2LDEyMDY2Myw2NiwxMjA3MjEsNjYsNTEwOCw2Niw1NjIzLDY2LDQyMTkyLDY2LDY2MTc4LDY2LDY2MjA5LDY2LDY2MzA1LDY2LDY1MzQ3LDk5LDg1NzMsOTksMTE5ODM2LDk5LDExOTg4OCw5OSwxMTk5NDAsOTksMTE5OTkyLDk5LDEyMDA0NCw5OSwxMjAwOTYsOTksMTIwMTQ4LDk5LDEyMDIwMCw5OSwxMjAyNTIsOTksMTIwMzA0LDk5LDEyMDM1Niw5OSwxMjA0MDgsOTksMTIwNDYwLDk5LDc0MjgsOTksMTAxMCw5OSwxMTQyOSw5OSw0Mzk1MSw5OSw2NjYyMSw5OSwxMjg4NDQsNjcsNzE5MjIsNjcsNzE5MTMsNjcsNjUzMTUsNjcsODU1Nyw2Nyw4NDUwLDY3LDg0OTMsNjcsMTE5ODEwLDY3LDExOTg2Miw2NywxMTk5MTQsNjcsMTE5OTY2LDY3LDEyMDAxOCw2NywxMjAxNzQsNjcsMTIwMjI2LDY3LDEyMDI3OCw2NywxMjAzMzAsNjcsMTIwMzgyLDY3LDEyMDQzNCw2NywxMDE3LDY3LDExNDI4LDY3LDUwODcsNjcsNDIyMDIsNjcsNjYyMTAsNjcsNjYzMDYsNjcsNjY1ODEsNjcsNjY4NDQsNjcsODU3NCwxMDAsODUxOCwxMDAsMTE5ODM3LDEwMCwxMTk4ODksMTAwLDExOTk0MSwxMDAsMTE5OTkzLDEwMCwxMjAwNDUsMTAwLDEyMDA5NywxMDAsMTIwMTQ5LDEwMCwxMjAyMDEsMTAwLDEyMDI1MywxMDAsMTIwMzA1LDEwMCwxMjAzNTcsMTAwLDEyMDQwOSwxMDAsMTIwNDYxLDEwMCwxMjgxLDEwMCw1MDk1LDEwMCw1MjMxLDEwMCw0MjE5NCwxMDAsODU1OCw2OCw4NTE3LDY4LDExOTgxMSw2OCwxMTk4NjMsNjgsMTE5OTE1LDY4LDExOTk2Nyw2OCwxMjAwMTksNjgsMTIwMDcxLDY4LDEyMDEyMyw2OCwxMjAxNzUsNjgsMTIwMjI3LDY4LDEyMDI3OSw2OCwxMjAzMzEsNjgsMTIwMzgzLDY4LDEyMDQzNSw2OCw1MDI0LDY4LDU1OTgsNjgsNTYxMCw2OCw0MjE5NSw2OCw4NDk0LDEwMSw2NTM0OSwxMDEsODQ5NSwxMDEsODUxOSwxMDEsMTE5ODM4LDEwMSwxMTk4OTAsMTAxLDExOTk0MiwxMDEsMTIwMDQ2LDEwMSwxMjAwOTgsMTAxLDEyMDE1MCwxMDEsMTIwMjAyLDEwMSwxMjAyNTQsMTAxLDEyMDMwNiwxMDEsMTIwMzU4LDEwMSwxMjA0MTAsMTAxLDEyMDQ2MiwxMDEsNDM4MjYsMTAxLDEyMTMsMTAxLDg5NTksNjksNjUzMTcsNjksODQ5Niw2OSwxMTk4MTIsNjksMTE5ODY0LDY5LDExOTkxNiw2OSwxMjAwMjAsNjksMTIwMDcyLDY5LDEyMDEyNCw2OSwxMjAxNzYsNjksMTIwMjI4LDY5LDEyMDI4MCw2OSwxMjAzMzIsNjksMTIwMzg0LDY5LDEyMDQzNiw2OSw5MTcsNjksMTIwNDkyLDY5LDEyMDU1MCw2OSwxMjA2MDgsNjksMTIwNjY2LDY5LDEyMDcyNCw2OSwxMTU3Nyw2OSw1MDM2LDY5LDQyMjI0LDY5LDcxODQ2LDY5LDcxODU0LDY5LDY2MTgyLDY5LDExOTgzOSwxMDIsMTE5ODkxLDEwMiwxMTk5NDMsMTAyLDExOTk5NSwxMDIsMTIwMDQ3LDEwMiwxMjAwOTksMTAyLDEyMDE1MSwxMDIsMTIwMjAzLDEwMiwxMjAyNTUsMTAyLDEyMDMwNywxMDIsMTIwMzU5LDEwMiwxMjA0MTEsMTAyLDEyMDQ2MywxMDIsNDM4MjksMTAyLDQyOTA1LDEwMiwzODMsMTAyLDc4MzcsMTAyLDE0MTIsMTAyLDExOTMxNSw3MCw4NDk3LDcwLDExOTgxMyw3MCwxMTk4NjUsNzAsMTE5OTE3LDcwLDEyMDAyMSw3MCwxMjAwNzMsNzAsMTIwMTI1LDcwLDEyMDE3Nyw3MCwxMjAyMjksNzAsMTIwMjgxLDcwLDEyMDMzMyw3MCwxMjAzODUsNzAsMTIwNDM3LDcwLDQyOTA0LDcwLDk4OCw3MCwxMjA3NzgsNzAsNTU1Niw3MCw0MjIwNSw3MCw3MTg3NCw3MCw3MTg0Miw3MCw2NjE4Myw3MCw2NjIxMyw3MCw2Njg1Myw3MCw2NTM1MSwxMDMsODQ1OCwxMDMsMTE5ODQwLDEwMywxMTk4OTIsMTAzLDExOTk0NCwxMDMsMTIwMDQ4LDEwMywxMjAxMDAsMTAzLDEyMDE1MiwxMDMsMTIwMjA0LDEwMywxMjAyNTYsMTAzLDEyMDMwOCwxMDMsMTIwMzYwLDEwMywxMjA0MTIsMTAzLDEyMDQ2NCwxMDMsNjA5LDEwMyw3NTU1LDEwMywzOTcsMTAzLDE0MDksMTAzLDExOTgxNCw3MSwxMTk4NjYsNzEsMTE5OTE4LDcxLDExOTk3MCw3MSwxMjAwMjIsNzEsMTIwMDc0LDcxLDEyMDEyNiw3MSwxMjAxNzgsNzEsMTIwMjMwLDcxLDEyMDI4Miw3MSwxMjAzMzQsNzEsMTIwMzg2LDcxLDEyMDQzOCw3MSwxMjkyLDcxLDUwNTYsNzEsNTEwNyw3MSw0MjE5OCw3MSw2NTM1MiwxMDQsODQ2MiwxMDQsMTE5ODQxLDEwNCwxMTk5NDUsMTA0LDExOTk5NywxMDQsMTIwMDQ5LDEwNCwxMjAxMDEsMTA0LDEyMDE1MywxMDQsMTIwMjA1LDEwNCwxMjAyNTcsMTA0LDEyMDMwOSwxMDQsMTIwMzYxLDEwNCwxMjA0MTMsMTA0LDEyMDQ2NSwxMDQsMTIxMSwxMDQsMTM5MiwxMDQsNTA1OCwxMDQsNjUzMjAsNzIsODQ1OSw3Miw4NDYwLDcyLDg0NjEsNzIsMTE5ODE1LDcyLDExOTg2Nyw3MiwxMTk5MTksNzIsMTIwMDIzLDcyLDEyMDE3OSw3MiwxMjAyMzEsNzIsMTIwMjgzLDcyLDEyMDMzNSw3MiwxMjAzODcsNzIsMTIwNDM5LDcyLDkxOSw3MiwxMjA0OTQsNzIsMTIwNTUyLDcyLDEyMDYxMCw3MiwxMjA2NjgsNzIsMTIwNzI2LDcyLDExNDA2LDcyLDUwNTEsNzIsNTUwMCw3Miw0MjIxNSw3Miw2NjI1NSw3Miw3MzEsMTA1LDkwNzUsMTA1LDY1MzUzLDEwNSw4NTYwLDEwNSw4NTA1LDEwNSw4NTIwLDEwNSwxMTk4NDIsMTA1LDExOTg5NCwxMDUsMTE5OTQ2LDEwNSwxMTk5OTgsMTA1LDEyMDA1MCwxMDUsMTIwMTAyLDEwNSwxMjAxNTQsMTA1LDEyMDIwNiwxMDUsMTIwMjU4LDEwNSwxMjAzMTAsMTA1LDEyMDM2MiwxMDUsMTIwNDE0LDEwNSwxMjA0NjYsMTA1LDEyMDQ4NCwxMDUsNjE4LDEwNSw2MTcsMTA1LDk1MywxMDUsODEyNiwxMDUsODkwLDEwNSwxMjA1MjIsMTA1LDEyMDU4MCwxMDUsMTIwNjM4LDEwNSwxMjA2OTYsMTA1LDEyMDc1NCwxMDUsMTExMCwxMDUsNDI1NjcsMTA1LDEyMzEsMTA1LDQzODkzLDEwNSw1MDI5LDEwNSw3MTg3NSwxMDUsNjUzNTQsMTA2LDg1MjEsMTA2LDExOTg0MywxMDYsMTE5ODk1LDEwNiwxMTk5NDcsMTA2LDExOTk5OSwxMDYsMTIwMDUxLDEwNiwxMjAxMDMsMTA2LDEyMDE1NSwxMDYsMTIwMjA3LDEwNiwxMjAyNTksMTA2LDEyMDMxMSwxMDYsMTIwMzYzLDEwNiwxMjA0MTUsMTA2LDEyMDQ2NywxMDYsMTAxMSwxMDYsMTExMiwxMDYsNjUzMjIsNzQsMTE5ODE3LDc0LDExOTg2OSw3NCwxMTk5MjEsNzQsMTE5OTczLDc0LDEyMDAyNSw3NCwxMjAwNzcsNzQsMTIwMTI5LDc0LDEyMDE4MSw3NCwxMjAyMzMsNzQsMTIwMjg1LDc0LDEyMDMzNyw3NCwxMjAzODksNzQsMTIwNDQxLDc0LDQyOTMwLDc0LDg5NSw3NCwxMDMyLDc0LDUwMzUsNzQsNTI2MSw3NCw0MjIwMSw3NCwxMTk4NDQsMTA3LDExOTg5NiwxMDcsMTE5OTQ4LDEwNywxMjAwMDAsMTA3LDEyMDA1MiwxMDcsMTIwMTA0LDEwNywxMjAxNTYsMTA3LDEyMDIwOCwxMDcsMTIwMjYwLDEwNywxMjAzMTIsMTA3LDEyMDM2NCwxMDcsMTIwNDE2LDEwNywxMjA0NjgsMTA3LDg0OTAsNzUsNjUzMjMsNzUsMTE5ODE4LDc1LDExOTg3MCw3NSwxMTk5MjIsNzUsMTE5OTc0LDc1LDEyMDAyNiw3NSwxMjAwNzgsNzUsMTIwMTMwLDc1LDEyMDE4Miw3NSwxMjAyMzQsNzUsMTIwMjg2LDc1LDEyMDMzOCw3NSwxMjAzOTAsNzUsMTIwNDQyLDc1LDkyMiw3NSwxMjA0OTcsNzUsMTIwNTU1LDc1LDEyMDYxMyw3NSwxMjA2NzEsNzUsMTIwNzI5LDc1LDExNDEyLDc1LDUwOTQsNzUsNTg0NSw3NSw0MjE5OSw3NSw2Njg0MCw3NSwxNDcyLDEwOCw4NzM5LDczLDkyMTMsNzMsNjU1MTIsNzMsMTYzMywxMDgsMTc3Nyw3Myw2NjMzNiwxMDgsMTI1MTI3LDEwOCwxMjA3ODMsNzMsMTIwNzkzLDczLDEyMDgwMyw3MywxMjA4MTMsNzMsMTIwODIzLDczLDEzMDAzMyw3Myw2NTMyMSw3Myw4NTQ0LDczLDg0NjQsNzMsODQ2NSw3MywxMTk4MTYsNzMsMTE5ODY4LDczLDExOTkyMCw3MywxMjAwMjQsNzMsMTIwMTI4LDczLDEyMDE4MCw3MywxMjAyMzIsNzMsMTIwMjg0LDczLDEyMDMzNiw3MywxMjAzODgsNzMsMTIwNDQwLDczLDY1MzU2LDEwOCw4NTcyLDczLDg0NjcsMTA4LDExOTg0NSwxMDgsMTE5ODk3LDEwOCwxMTk5NDksMTA4LDEyMDAwMSwxMDgsMTIwMDUzLDEwOCwxMjAxMDUsNzMsMTIwMTU3LDczLDEyMDIwOSw3MywxMjAyNjEsNzMsMTIwMzEzLDczLDEyMDM2NSw3MywxMjA0MTcsNzMsMTIwNDY5LDczLDQ0OCw3MywxMjA0OTYsNzMsMTIwNTU0LDczLDEyMDYxMiw3MywxMjA2NzAsNzMsMTIwNzI4LDczLDExNDEwLDczLDEwMzAsNzMsMTIxNiw3MywxNDkzLDEwOCwxNTAzLDEwOCwxNTc1LDEwOCwxMjY0NjQsMTA4LDEyNjU5MiwxMDgsNjUxNjYsMTA4LDY1MTY1LDEwOCwxOTk0LDEwOCwxMTU5OSw3Myw1ODI1LDczLDQyMjI2LDczLDkzOTkyLDczLDY2MTg2LDEyNCw2NjMxMywxMjQsMTE5MzM4LDc2LDg1NTYsNzYsODQ2Niw3NiwxMTk4MTksNzYsMTE5ODcxLDc2LDExOTkyMyw3NiwxMjAwMjcsNzYsMTIwMDc5LDc2LDEyMDEzMSw3NiwxMjAxODMsNzYsMTIwMjM1LDc2LDEyMDI4Nyw3NiwxMjAzMzksNzYsMTIwMzkxLDc2LDEyMDQ0Myw3NiwxMTQ3Miw3Niw1MDg2LDc2LDUyOTAsNzYsNDIyMDksNzYsOTM5NzQsNzYsNzE4NDMsNzYsNzE4NTgsNzYsNjY1ODcsNzYsNjY4NTQsNzYsNjUzMjUsNzcsODU1OSw3Nyw4NDk5LDc3LDExOTgyMCw3NywxMTk4NzIsNzcsMTE5OTI0LDc3LDEyMDAyOCw3NywxMjAwODAsNzcsMTIwMTMyLDc3LDEyMDE4NCw3NywxMjAyMzYsNzcsMTIwMjg4LDc3LDEyMDM0MCw3NywxMjAzOTIsNzcsMTIwNDQ0LDc3LDkyNCw3NywxMjA0OTksNzcsMTIwNTU3LDc3LDEyMDYxNSw3NywxMjA2NzMsNzcsMTIwNzMxLDc3LDEwMTgsNzcsMTE0MTYsNzcsNTA0Nyw3Nyw1NjE2LDc3LDU4NDYsNzcsNDIyMDcsNzcsNjYyMjQsNzcsNjYzMjEsNzcsMTE5ODQ3LDExMCwxMTk4OTksMTEwLDExOTk1MSwxMTAsMTIwMDAzLDExMCwxMjAwNTUsMTEwLDEyMDEwNywxMTAsMTIwMTU5LDExMCwxMjAyMTEsMTEwLDEyMDI2MywxMTAsMTIwMzE1LDExMCwxMjAzNjcsMTEwLDEyMDQxOSwxMTAsMTIwNDcxLDExMCwxNDAwLDExMCwxNDA0LDExMCw2NTMyNiw3OCw4NDY5LDc4LDExOTgyMSw3OCwxMTk4NzMsNzgsMTE5OTI1LDc4LDExOTk3Nyw3OCwxMjAwMjksNzgsMTIwMDgxLDc4LDEyMDE4NSw3OCwxMjAyMzcsNzgsMTIwMjg5LDc4LDEyMDM0MSw3OCwxMjAzOTMsNzgsMTIwNDQ1LDc4LDkyNSw3OCwxMjA1MDAsNzgsMTIwNTU4LDc4LDEyMDYxNiw3OCwxMjA2NzQsNzgsMTIwNzMyLDc4LDExNDE4LDc4LDQyMjA4LDc4LDY2ODM1LDc4LDMwNzQsMTExLDMyMDIsMTExLDMzMzAsMTExLDM0NTgsMTExLDI0MDYsMTExLDI2NjIsMTExLDI3OTAsMTExLDMwNDYsMTExLDMxNzQsMTExLDMzMDIsMTExLDM0MzAsMTExLDM2NjQsMTExLDM3OTIsMTExLDQxNjAsMTExLDE2MzcsMTExLDE3ODEsMTExLDY1MzU5LDExMSw4NTAwLDExMSwxMTk4NDgsMTExLDExOTkwMCwxMTEsMTE5OTUyLDExMSwxMjAwNTYsMTExLDEyMDEwOCwxMTEsMTIwMTYwLDExMSwxMjAyMTIsMTExLDEyMDI2NCwxMTEsMTIwMzE2LDExMSwxMjAzNjgsMTExLDEyMDQyMCwxMTEsMTIwNDcyLDExMSw3NDM5LDExMSw3NDQxLDExMSw0MzgzNywxMTEsOTU5LDExMSwxMjA1MjgsMTExLDEyMDU4NiwxMTEsMTIwNjQ0LDExMSwxMjA3MDIsMTExLDEyMDc2MCwxMTEsOTYzLDExMSwxMjA1MzIsMTExLDEyMDU5MCwxMTEsMTIwNjQ4LDExMSwxMjA3MDYsMTExLDEyMDc2NCwxMTEsMTE0MjMsMTExLDQzNTEsMTExLDE0MTMsMTExLDE1MDUsMTExLDE2MDcsMTExLDEyNjUwMCwxMTEsMTI2NTY0LDExMSwxMjY1OTYsMTExLDY1MjU5LDExMSw2NTI2MCwxMTEsNjUyNTgsMTExLDY1MjU3LDExMSwxNzI2LDExMSw2NDQyOCwxMTEsNjQ0MjksMTExLDY0NDI3LDExMSw2NDQyNiwxMTEsMTcyOSwxMTEsNjQ0MjQsMTExLDY0NDI1LDExMSw2NDQyMywxMTEsNjQ0MjIsMTExLDE3NDksMTExLDMzNjAsMTExLDQxMjUsMTExLDY2Nzk0LDExMSw3MTg4MCwxMTEsNzE4OTUsMTExLDY2NjA0LDExMSwxOTg0LDc5LDI1MzQsNzksMjkxOCw3OSwxMjI5NSw3OSw3MDg2NCw3OSw3MTkwNCw3OSwxMjA3ODIsNzksMTIwNzkyLDc5LDEyMDgwMiw3OSwxMjA4MTIsNzksMTIwODIyLDc5LDEzMDAzMiw3OSw2NTMyNyw3OSwxMTk4MjIsNzksMTE5ODc0LDc5LDExOTkyNiw3OSwxMTk5NzgsNzksMTIwMDMwLDc5LDEyMDA4Miw3OSwxMjAxMzQsNzksMTIwMTg2LDc5LDEyMDIzOCw3OSwxMjAyOTAsNzksMTIwMzQyLDc5LDEyMDM5NCw3OSwxMjA0NDYsNzksOTI3LDc5LDEyMDUwMiw3OSwxMjA1NjAsNzksMTIwNjE4LDc5LDEyMDY3Niw3OSwxMjA3MzQsNzksMTE0MjIsNzksMTM2NSw3OSwxMTYwNCw3OSw0ODE2LDc5LDI4NDgsNzksNjY3NTQsNzksNDIyMjcsNzksNzE4NjEsNzksNjYxOTQsNzksNjYyMTksNzksNjY1NjQsNzksNjY4MzgsNzksOTA3NiwxMTIsNjUzNjAsMTEyLDExOTg0OSwxMTIsMTE5OTAxLDExMiwxMTk5NTMsMTEyLDEyMDAwNSwxMTIsMTIwMDU3LDExMiwxMjAxMDksMTEyLDEyMDE2MSwxMTIsMTIwMjEzLDExMiwxMjAyNjUsMTEyLDEyMDMxNywxMTIsMTIwMzY5LDExMiwxMjA0MjEsMTEyLDEyMDQ3MywxMTIsOTYxLDExMiwxMjA1MzAsMTEyLDEyMDU0NCwxMTIsMTIwNTg4LDExMiwxMjA2MDIsMTEyLDEyMDY0NiwxMTIsMTIwNjYwLDExMiwxMjA3MDQsMTEyLDEyMDcxOCwxMTIsMTIwNzYyLDExMiwxMjA3NzYsMTEyLDExNDI3LDExMiw2NTMyOCw4MCw4NDczLDgwLDExOTgyMyw4MCwxMTk4NzUsODAsMTE5OTI3LDgwLDExOTk3OSw4MCwxMjAwMzEsODAsMTIwMDgzLDgwLDEyMDE4Nyw4MCwxMjAyMzksODAsMTIwMjkxLDgwLDEyMDM0Myw4MCwxMjAzOTUsODAsMTIwNDQ3LDgwLDkyOSw4MCwxMjA1MDQsODAsMTIwNTYyLDgwLDEyMDYyMCw4MCwxMjA2NzgsODAsMTIwNzM2LDgwLDExNDI2LDgwLDUwOTAsODAsNTIyOSw4MCw0MjE5Myw4MCw2NjE5Nyw4MCwxMTk4NTAsMTEzLDExOTkwMiwxMTMsMTE5OTU0LDExMywxMjAwMDYsMTEzLDEyMDA1OCwxMTMsMTIwMTEwLDExMywxMjAxNjIsMTEzLDEyMDIxNCwxMTMsMTIwMjY2LDExMywxMjAzMTgsMTEzLDEyMDM3MCwxMTMsMTIwNDIyLDExMywxMjA0NzQsMTEzLDEzMDcsMTEzLDEzNzksMTEzLDEzODIsMTEzLDg0NzQsODEsMTE5ODI0LDgxLDExOTg3Niw4MSwxMTk5MjgsODEsMTE5OTgwLDgxLDEyMDAzMiw4MSwxMjAwODQsODEsMTIwMTg4LDgxLDEyMDI0MCw4MSwxMjAyOTIsODEsMTIwMzQ0LDgxLDEyMDM5Niw4MSwxMjA0NDgsODEsMTE2MDUsODEsMTE5ODUxLDExNCwxMTk5MDMsMTE0LDExOTk1NSwxMTQsMTIwMDA3LDExNCwxMjAwNTksMTE0LDEyMDExMSwxMTQsMTIwMTYzLDExNCwxMjAyMTUsMTE0LDEyMDI2NywxMTQsMTIwMzE5LDExNCwxMjAzNzEsMTE0LDEyMDQyMywxMTQsMTIwNDc1LDExNCw0Mzg0NywxMTQsNDM4NDgsMTE0LDc0NjIsMTE0LDExMzk3LDExNCw0MzkwNSwxMTQsMTE5MzE4LDgyLDg0NzUsODIsODQ3Niw4Miw4NDc3LDgyLDExOTgyNSw4MiwxMTk4NzcsODIsMTE5OTI5LDgyLDEyMDAzMyw4MiwxMjAxODksODIsMTIwMjQxLDgyLDEyMDI5Myw4MiwxMjAzNDUsODIsMTIwMzk3LDgyLDEyMDQ0OSw4Miw0MjIsODIsNTAyNSw4Miw1MDc0LDgyLDY2NzQwLDgyLDU1MTEsODIsNDIyMTEsODIsOTQwMDUsODIsNjUzNjMsMTE1LDExOTg1MiwxMTUsMTE5OTA0LDExNSwxMTk5NTYsMTE1LDEyMDAwOCwxMTUsMTIwMDYwLDExNSwxMjAxMTIsMTE1LDEyMDE2NCwxMTUsMTIwMjE2LDExNSwxMjAyNjgsMTE1LDEyMDMyMCwxMTUsMTIwMzcyLDExNSwxMjA0MjQsMTE1LDEyMDQ3NiwxMTUsNDI4MDEsMTE1LDQ0NSwxMTUsMTEwOSwxMTUsNDM5NDYsMTE1LDcxODczLDExNSw2NjYzMiwxMTUsNjUzMzEsODMsMTE5ODI2LDgzLDExOTg3OCw4MywxMTk5MzAsODMsMTE5OTgyLDgzLDEyMDAzNCw4MywxMjAwODYsODMsMTIwMTM4LDgzLDEyMDE5MCw4MywxMjAyNDIsODMsMTIwMjk0LDgzLDEyMDM0Niw4MywxMjAzOTgsODMsMTIwNDUwLDgzLDEwMjksODMsMTM1OSw4Myw1MDc3LDgzLDUwODIsODMsNDIyMTAsODMsOTQwMTAsODMsNjYxOTgsODMsNjY1OTIsODMsMTE5ODUzLDExNiwxMTk5MDUsMTE2LDExOTk1NywxMTYsMTIwMDA5LDExNiwxMjAwNjEsMTE2LDEyMDExMywxMTYsMTIwMTY1LDExNiwxMjAyMTcsMTE2LDEyMDI2OSwxMTYsMTIwMzIxLDExNiwxMjAzNzMsMTE2LDEyMDQyNSwxMTYsMTIwNDc3LDExNiw4ODY4LDg0LDEwMjAxLDg0LDEyODg3Miw4NCw2NTMzMiw4NCwxMTk4MjcsODQsMTE5ODc5LDg0LDExOTkzMSw4NCwxMTk5ODMsODQsMTIwMDM1LDg0LDEyMDA4Nyw4NCwxMjAxMzksODQsMTIwMTkxLDg0LDEyMDI0Myw4NCwxMjAyOTUsODQsMTIwMzQ3LDg0LDEyMDM5OSw4NCwxMjA0NTEsODQsOTMyLDg0LDEyMDUwNyw4NCwxMjA1NjUsODQsMTIwNjIzLDg0LDEyMDY4MSw4NCwxMjA3MzksODQsMTE0MzAsODQsNTAyNiw4NCw0MjE5Niw4NCw5Mzk2Miw4NCw3MTg2OCw4NCw2NjE5OSw4NCw2NjIyNSw4NCw2NjMyNSw4NCwxMTk4NTQsMTE3LDExOTkwNiwxMTcsMTE5OTU4LDExNywxMjAwMTAsMTE3LDEyMDA2MiwxMTcsMTIwMTE0LDExNywxMjAxNjYsMTE3LDEyMDIxOCwxMTcsMTIwMjcwLDExNywxMjAzMjIsMTE3LDEyMDM3NCwxMTcsMTIwNDI2LDExNywxMjA0NzgsMTE3LDQyOTExLDExNyw3NDUyLDExNyw0Mzg1NCwxMTcsNDM4NTgsMTE3LDY1MSwxMTcsOTY1LDExNywxMjA1MzQsMTE3LDEyMDU5MiwxMTcsMTIwNjUwLDExNywxMjA3MDgsMTE3LDEyMDc2NiwxMTcsMTQwNSwxMTcsNjY4MDYsMTE3LDcxODk2LDExNyw4NzQ2LDg1LDg4OTksODUsMTE5ODI4LDg1LDExOTg4MCw4NSwxMTk5MzIsODUsMTE5OTg0LDg1LDEyMDAzNiw4NSwxMjAwODgsODUsMTIwMTQwLDg1LDEyMDE5Miw4NSwxMjAyNDQsODUsMTIwMjk2LDg1LDEyMDM0OCw4NSwxMjA0MDAsODUsMTIwNDUyLDg1LDEzNTcsODUsNDYwOCw4NSw2Njc2Niw4NSw1MTk2LDg1LDQyMjI4LDg1LDk0MDE4LDg1LDcxODY0LDg1LDg3NDQsMTE4LDg4OTcsMTE4LDY1MzY2LDExOCw4NTY0LDExOCwxMTk4NTUsMTE4LDExOTkwNywxMTgsMTE5OTU5LDExOCwxMjAwMTEsMTE4LDEyMDA2MywxMTgsMTIwMTE1LDExOCwxMjAxNjcsMTE4LDEyMDIxOSwxMTgsMTIwMjcxLDExOCwxMjAzMjMsMTE4LDEyMDM3NSwxMTgsMTIwNDI3LDExOCwxMjA0NzksMTE4LDc0NTYsMTE4LDk1NywxMTgsMTIwNTI2LDExOCwxMjA1ODQsMTE4LDEyMDY0MiwxMTgsMTIwNzAwLDExOCwxMjA3NTgsMTE4LDExNDEsMTE4LDE0OTYsMTE4LDcxNDMwLDExOCw0Mzk0NSwxMTgsNzE4NzIsMTE4LDExOTMwOSw4NiwxNjM5LDg2LDE3ODMsODYsODU0OCw4NiwxMTk4MjksODYsMTE5ODgxLDg2LDExOTkzMyw4NiwxMTk5ODUsODYsMTIwMDM3LDg2LDEyMDA4OSw4NiwxMjAxNDEsODYsMTIwMTkzLDg2LDEyMDI0NSw4NiwxMjAyOTcsODYsMTIwMzQ5LDg2LDEyMDQwMSw4NiwxMjA0NTMsODYsMTE0MCw4NiwxMTU3Niw4Niw1MDgxLDg2LDUxNjcsODYsNDI3MTksODYsNDIyMTQsODYsOTM5NjAsODYsNzE4NDAsODYsNjY4NDUsODYsNjIzLDExOSwxMTk4NTYsMTE5LDExOTkwOCwxMTksMTE5OTYwLDExOSwxMjAwMTIsMTE5LDEyMDA2NCwxMTksMTIwMTE2LDExOSwxMjAxNjgsMTE5LDEyMDIyMCwxMTksMTIwMjcyLDExOSwxMjAzMjQsMTE5LDEyMDM3NiwxMTksMTIwNDI4LDExOSwxMjA0ODAsMTE5LDc0NTcsMTE5LDExMjEsMTE5LDEzMDksMTE5LDEzNzcsMTE5LDcxNDM0LDExOSw3MTQzOCwxMTksNzE0MzksMTE5LDQzOTA3LDExOSw3MTkxOSw4Nyw3MTkxMCw4NywxMTk4MzAsODcsMTE5ODgyLDg3LDExOTkzNCw4NywxMTk5ODYsODcsMTIwMDM4LDg3LDEyMDA5MCw4NywxMjAxNDIsODcsMTIwMTk0LDg3LDEyMDI0Niw4NywxMjAyOTgsODcsMTIwMzUwLDg3LDEyMDQwMiw4NywxMjA0NTQsODcsMTMwOCw4Nyw1MDQzLDg3LDUwNzYsODcsNDIyMTgsODcsNTc0MiwxMjAsMTA1MzksMTIwLDEwNTQwLDEyMCwxMDc5OSwxMjAsNjUzNjgsMTIwLDg1NjksMTIwLDExOTg1NywxMjAsMTE5OTA5LDEyMCwxMTk5NjEsMTIwLDEyMDAxMywxMjAsMTIwMDY1LDEyMCwxMjAxMTcsMTIwLDEyMDE2OSwxMjAsMTIwMjIxLDEyMCwxMjAyNzMsMTIwLDEyMDMyNSwxMjAsMTIwMzc3LDEyMCwxMjA0MjksMTIwLDEyMDQ4MSwxMjAsNTQ0MSwxMjAsNTUwMSwxMjAsNTc0MSw4OCw5NTg3LDg4LDY2MzM4LDg4LDcxOTE2LDg4LDY1MzM2LDg4LDg1NTMsODgsMTE5ODMxLDg4LDExOTg4Myw4OCwxMTk5MzUsODgsMTE5OTg3LDg4LDEyMDAzOSw4OCwxMjAwOTEsODgsMTIwMTQzLDg4LDEyMDE5NSw4OCwxMjAyNDcsODgsMTIwMjk5LDg4LDEyMDM1MSw4OCwxMjA0MDMsODgsMTIwNDU1LDg4LDQyOTMxLDg4LDkzNSw4OCwxMjA1MTAsODgsMTIwNTY4LDg4LDEyMDYyNiw4OCwxMjA2ODQsODgsMTIwNzQyLDg4LDExNDM2LDg4LDExNjEzLDg4LDU4MTUsODgsNDIyMTksODgsNjYxOTIsODgsNjYyMjgsODgsNjYzMjcsODgsNjY4NTUsODgsNjExLDEyMSw3NTY0LDEyMSw2NTM2OSwxMjEsMTE5ODU4LDEyMSwxMTk5MTAsMTIxLDExOTk2MiwxMjEsMTIwMDE0LDEyMSwxMjAwNjYsMTIxLDEyMDExOCwxMjEsMTIwMTcwLDEyMSwxMjAyMjIsMTIxLDEyMDI3NCwxMjEsMTIwMzI2LDEyMSwxMjAzNzgsMTIxLDEyMDQzMCwxMjEsMTIwNDgyLDEyMSw2NTUsMTIxLDc5MzUsMTIxLDQzODY2LDEyMSw5NDcsMTIxLDg1MDksMTIxLDEyMDUxNiwxMjEsMTIwNTc0LDEyMSwxMjA2MzIsMTIxLDEyMDY5MCwxMjEsMTIwNzQ4LDEyMSwxMTk5LDEyMSw0MzI3LDEyMSw3MTkwMCwxMjEsNjUzMzcsODksMTE5ODMyLDg5LDExOTg4NCw4OSwxMTk5MzYsODksMTE5OTg4LDg5LDEyMDA0MCw4OSwxMjAwOTIsODksMTIwMTQ0LDg5LDEyMDE5Niw4OSwxMjAyNDgsODksMTIwMzAwLDg5LDEyMDM1Miw4OSwxMjA0MDQsODksMTIwNDU2LDg5LDkzMyw4OSw5NzgsODksMTIwNTA4LDg5LDEyMDU2Niw4OSwxMjA2MjQsODksMTIwNjgyLDg5LDEyMDc0MCw4OSwxMTQzMiw4OSwxMTk4LDg5LDUwMzMsODksNTA1Myw4OSw0MjIyMCw4OSw5NDAxOSw4OSw3MTg0NCw4OSw2NjIyNiw4OSwxMTk4NTksMTIyLDExOTkxMSwxMjIsMTE5OTYzLDEyMiwxMjAwMTUsMTIyLDEyMDA2NywxMjIsMTIwMTE5LDEyMiwxMjAxNzEsMTIyLDEyMDIyMywxMjIsMTIwMjc1LDEyMiwxMjAzMjcsMTIyLDEyMDM3OSwxMjIsMTIwNDMxLDEyMiwxMjA0ODMsMTIyLDc0NTgsMTIyLDQzOTIzLDEyMiw3MTg3NiwxMjIsNjYyOTMsOTAsNzE5MDksOTAsNjUzMzgsOTAsODQ4NCw5MCw4NDg4LDkwLDExOTgzMyw5MCwxMTk4ODUsOTAsMTE5OTM3LDkwLDExOTk4OSw5MCwxMjAwNDEsOTAsMTIwMTk3LDkwLDEyMDI0OSw5MCwxMjAzMDEsOTAsMTIwMzUzLDkwLDEyMDQwNSw5MCwxMjA0NTcsOTAsOTE4LDkwLDEyMDQ5Myw5MCwxMjA1NTEsOTAsMTIwNjA5LDkwLDEyMDY2Nyw5MCwxMjA3MjUsOTAsNTA1OSw5MCw0MjIwNCw5MCw3MTg0OSw5MCw2NTI4MiwzNCw2NTI4NCwzNiw2NTI4NSwzNyw2NTI4NiwzOCw2NTI5MCw0Miw2NTI5MSw0Myw2NTI5NCw0Niw2NTI5NSw0Nyw2NTI5Niw0OCw2NTI5Nyw0OSw2NTI5OCw1MCw2NTI5OSw1MSw2NTMwMCw1Miw2NTMwMSw1Myw2NTMwMiw1NCw2NTMwMyw1NSw2NTMwNCw1Niw2NTMwNSw1Nyw2NTMwOCw2MCw2NTMwOSw2MSw2NTMxMCw2Miw2NTMxMiw2NCw2NTMxNiw2OCw2NTMxOCw3MCw2NTMxOSw3MSw2NTMyNCw3Niw2NTMyOSw4MSw2NTMzMCw4Miw2NTMzMyw4NSw2NTMzNCw4Niw2NTMzNSw4Nyw2NTM0Myw5NSw2NTM0Niw5OCw2NTM0OCwxMDAsNjUzNTAsMTAyLDY1MzU1LDEwNyw2NTM1NywxMDksNjUzNTgsMTEwLDY1MzYxLDExMyw2NTM2MiwxMTQsNjUzNjQsMTE2LDY1MzY1LDExNyw2NTM2NywxMTksNjUzNzAsMTIyLDY1MzcxLDEyMyw2NTM3MywxMjVdLCJfZGVmYXVsdCI6WzE2MCwzMiw4MjExLDQ1LDY1Mzc0LDEyNiw2NTMwNiw1OCw2NTI4MSwzMyw4MjE2LDk2LDgyMTcsOTYsODI0NSw5NiwxODAsOTYsMTI0OTQsNDcsMTA0Nyw1MSwxMDczLDU0LDEwNzIsOTcsMTA0MCw2NSwxMDY4LDk4LDEwNDIsNjYsMTA4OSw5OSwxMDU3LDY3LDEwNzcsMTAxLDEwNDUsNjksMTA1Myw3MiwzMDUsMTA1LDEwNTAsNzUsOTIxLDczLDEwNTIsNzcsMTA4NiwxMTEsMTA1NCw3OSwxMDA5LDExMiwxMDg4LDExMiwxMDU2LDgwLDEwNzUsMTE0LDEwNTgsODQsMjE1LDEyMCwxMDkzLDEyMCwxMDYxLDg4LDEwOTEsMTIxLDEwNTksODksNjUyODMsMzUsNjUyODgsNDAsNjUyODksNDEsNjUyOTIsNDQsNjUzMDcsNTksNjUzMTEsNjNdLCJjcyI6WzY1Mzc0LDEyNiw2NTMwNiw1OCw2NTI4MSwzMyw4MjE2LDk2LDgyMTcsOTYsODI0NSw5NiwxODAsOTYsMTI0OTQsNDcsMTA0Nyw1MSwxMDczLDU0LDEwNzIsOTcsMTA0MCw2NSwxMDY4LDk4LDEwNDIsNjYsMTA4OSw5OSwxMDU3LDY3LDEwNzcsMTAxLDEwNDUsNjksMTA1Myw3MiwzMDUsMTA1LDEwNTAsNzUsOTIxLDczLDEwNTIsNzcsMTA4NiwxMTEsMTA1NCw3OSwxMDA5LDExMiwxMDg4LDExMiwxMDU2LDgwLDEwNzUsMTE0LDEwNTgsODQsMTA5MywxMjAsMTA2MSw4OCwxMDkxLDEyMSwxMDU5LDg5LDY1MjgzLDM1LDY1Mjg4LDQwLDY1Mjg5LDQxLDY1MjkyLDQ0LDY1MzA3LDU5LDY1MzExLDYzXSwiZGUiOls2NTM3NCwxMjYsNjUzMDYsNTgsNjUyODEsMzMsODIxNiw5Niw4MjE3LDk2LDgyNDUsOTYsMTgwLDk2LDEyNDk0LDQ3LDEwNDcsNTEsMTA3Myw1NCwxMDcyLDk3LDEwNDAsNjUsMTA2OCw5OCwxMDQyLDY2LDEwODksOTksMTA1Nyw2NywxMDc3LDEwMSwxMDQ1LDY5LDEwNTMsNzIsMzA1LDEwNSwxMDUwLDc1LDkyMSw3MywxMDUyLDc3LDEwODYsMTExLDEwNTQsNzksMTAwOSwxMTIsMTA4OCwxMTIsMTA1Niw4MCwxMDc1LDExNCwxMDU4LDg0LDEwOTMsMTIwLDEwNjEsODgsMTA5MSwxMjEsMTA1OSw4OSw2NTI4MywzNSw2NTI4OCw0MCw2NTI4OSw0MSw2NTI5Miw0NCw2NTMwNyw1OSw2NTMxMSw2M10sImVzIjpbODIxMSw0NSw2NTM3NCwxMjYsNjUzMDYsNTgsNjUyODEsMzMsODI0NSw5NiwxODAsOTYsMTI0OTQsNDcsMTA0Nyw1MSwxMDczLDU0LDEwNzIsOTcsMTA0MCw2NSwxMDY4LDk4LDEwNDIsNjYsMTA4OSw5OSwxMDU3LDY3LDEwNzcsMTAxLDEwNDUsNjksMTA1Myw3MiwzMDUsMTA1LDEwNTAsNzUsMTA1Miw3NywxMDg2LDExMSwxMDU0LDc5LDEwMDksMTEyLDEwODgsMTEyLDEwNTYsODAsMTA3NSwxMTQsMTA1OCw4NCwyMTUsMTIwLDEwOTMsMTIwLDEwNjEsODgsMTA5MSwxMjEsMTA1OSw4OSw2NTI4MywzNSw2NTI4OCw0MCw2NTI4OSw0MSw2NTI5Miw0NCw2NTMwNyw1OSw2NTMxMSw2M10sImZyIjpbNjUzNzQsMTI2LDY1MzA2LDU4LDY1MjgxLDMzLDgyMTYsOTYsODI0NSw5NiwxMjQ5NCw0NywxMDQ3LDUxLDEwNzMsNTQsMTA3Miw5NywxMDQwLDY1LDEwNjgsOTgsMTA0Miw2NiwxMDg5LDk5LDEwNTcsNjcsMTA3NywxMDEsMTA0NSw2OSwxMDUzLDcyLDMwNSwxMDUsMTA1MCw3NSw5MjEsNzMsMTA1Miw3NywxMDg2LDExMSwxMDU0LDc5LDEwMDksMTEyLDEwODgsMTEyLDEwNTYsODAsMTA3NSwxMTQsMTA1OCw4NCwyMTUsMTIwLDEwOTMsMTIwLDEwNjEsODgsMTA5MSwxMjEsMTA1OSw4OSw2NTI4MywzNSw2NTI4OCw0MCw2NTI4OSw0MSw2NTI5Miw0NCw2NTMwNyw1OSw2NTMxMSw2M10sIml0IjpbMTYwLDMyLDgyMTEsNDUsNjUzNzQsMTI2LDY1MzA2LDU4LDY1MjgxLDMzLDgyMTYsOTYsODI0NSw5NiwxODAsOTYsMTI0OTQsNDcsMTA0Nyw1MSwxMDczLDU0LDEwNzIsOTcsMTA0MCw2NSwxMDY4LDk4LDEwNDIsNjYsMTA4OSw5OSwxMDU3LDY3LDEwNzcsMTAxLDEwNDUsNjksMTA1Myw3MiwzMDUsMTA1LDEwNTAsNzUsOTIxLDczLDEwNTIsNzcsMTA4NiwxMTEsMTA1NCw3OSwxMDA5LDExMiwxMDg4LDExMiwxMDU2LDgwLDEwNzUsMTE0LDEwNTgsODQsMjE1LDEyMCwxMDkzLDEyMCwxMDYxLDg4LDEwOTEsMTIxLDEwNTksODksNjUyODMsMzUsNjUyODgsNDAsNjUyODksNDEsNjUyOTIsNDQsNjUzMDcsNTksNjUzMTEsNjNdLCJqYSI6WzgyMTEsNDUsNjUzMDYsNTgsNjUyODEsMzMsODIxNiw5Niw4MjE3LDk2LDgyNDUsOTYsMTgwLDk2LDEwNDcsNTEsMTA3Myw1NCwxMDcyLDk3LDEwNDAsNjUsMTA2OCw5OCwxMDQyLDY2LDEwODksOTksMTA1Nyw2NywxMDc3LDEwMSwxMDQ1LDY5LDEwNTMsNzIsMzA1LDEwNSwxMDUwLDc1LDkyMSw3MywxMDUyLDc3LDEwODYsMTExLDEwNTQsNzksMTAwOSwxMTIsMTA4OCwxMTIsMTA1Niw4MCwxMDc1LDExNCwxMDU4LDg0LDIxNSwxMjAsMTA5MywxMjAsMTA2MSw4OCwxMDkxLDEyMSwxMDU5LDg5LDY1MjgzLDM1LDY1MjkyLDQ0LDY1MzA3LDU5XSwia28iOls4MjExLDQ1LDY1Mzc0LDEyNiw2NTMwNiw1OCw2NTI4MSwzMyw4MjQ1LDk2LDE4MCw5NiwxMjQ5NCw0NywxMDQ3LDUxLDEwNzMsNTQsMTA3Miw5NywxMDQwLDY1LDEwNjgsOTgsMTA0Miw2NiwxMDg5LDk5LDEwNTcsNjcsMTA3NywxMDEsMTA0NSw2OSwxMDUzLDcyLDMwNSwxMDUsMTA1MCw3NSw5MjEsNzMsMTA1Miw3NywxMDg2LDExMSwxMDU0LDc5LDEwMDksMTEyLDEwODgsMTEyLDEwNTYsODAsMTA3NSwxMTQsMTA1OCw4NCwyMTUsMTIwLDEwOTMsMTIwLDEwNjEsODgsMTA5MSwxMjEsMTA1OSw4OSw2NTI4MywzNSw2NTI4OCw0MCw2NTI4OSw0MSw2NTI5Miw0NCw2NTMwNyw1OSw2NTMxMSw2M10sInBsIjpbNjUzNzQsMTI2LDY1MzA2LDU4LDY1MjgxLDMzLDgyMTYsOTYsODIxNyw5Niw4MjQ1LDk2LDE4MCw5NiwxMjQ5NCw0NywxMDQ3LDUxLDEwNzMsNTQsMTA3Miw5NywxMDQwLDY1LDEwNjgsOTgsMTA0Miw2NiwxMDg5LDk5LDEwNTcsNjcsMTA3NywxMDEsMTA0NSw2OSwxMDUzLDcyLDMwNSwxMDUsMTA1MCw3NSw5MjEsNzMsMTA1Miw3NywxMDg2LDExMSwxMDU0LDc5LDEwMDksMTEyLDEwODgsMTEyLDEwNTYsODAsMTA3NSwxMTQsMTA1OCw4NCwyMTUsMTIwLDEwOTMsMTIwLDEwNjEsODgsMTA5MSwxMjEsMTA1OSw4OSw2NTI4MywzNSw2NTI4OCw0MCw2NTI4OSw0MSw2NTI5Miw0NCw2NTMwNyw1OSw2NTMxMSw2M10sInB0LUJSIjpbNjUzNzQsMTI2LDY1MzA2LDU4LDY1MjgxLDMzLDgyMTYsOTYsODIxNyw5Niw4MjQ1LDk2LDE4MCw5NiwxMjQ5NCw0NywxMDQ3LDUxLDEwNzMsNTQsMTA3Miw5NywxMDQwLDY1LDEwNjgsOTgsMTA0Miw2NiwxMDg5LDk5LDEwNTcsNjcsMTA3NywxMDEsMTA0NSw2OSwxMDUzLDcyLDMwNSwxMDUsMTA1MCw3NSw5MjEsNzMsMTA1Miw3NywxMDg2LDExMSwxMDU0LDc5LDEwMDksMTEyLDEwODgsMTEyLDEwNTYsODAsMTA3NSwxMTQsMTA1OCw4NCwyMTUsMTIwLDEwOTMsMTIwLDEwNjEsODgsMTA5MSwxMjEsMTA1OSw4OSw2NTI4MywzNSw2NTI4OCw0MCw2NTI4OSw0MSw2NTI5Miw0NCw2NTMwNyw1OSw2NTMxMSw2M10sInFwcy1wbG9jIjpbMTYwLDMyLDgyMTEsNDUsNjUzNzQsMTI2LDY1MzA2LDU4LDY1MjgxLDMzLDgyMTYsOTYsODIxNyw5Niw4MjQ1LDk2LDE4MCw5NiwxMjQ5NCw0NywxMDQ3LDUxLDEwNzMsNTQsMTA3Miw5NywxMDQwLDY1LDEwNjgsOTgsMTA0Miw2NiwxMDg5LDk5LDEwNTcsNjcsMTA3NywxMDEsMTA0NSw2OSwxMDUzLDcyLDMwNSwxMDUsMTA1MCw3NSw5MjEsNzMsMTA1Miw3NywxMDg2LDExMSwxMDU0LDc5LDEwODgsMTEyLDEwNTYsODAsMTA3NSwxMTQsMTA1OCw4NCwyMTUsMTIwLDEwOTMsMTIwLDEwNjEsODgsMTA5MSwxMjEsMTA1OSw4OSw2NTI4MywzNSw2NTI4OCw0MCw2NTI4OSw0MSw2NTI5Miw0NCw2NTMwNyw1OSw2NTMxMSw2M10sInJ1IjpbNjUzNzQsMTI2LDY1MzA2LDU4LDY1MjgxLDMzLDgyMTYsOTYsODIxNyw5Niw4MjQ1LDk2LDE4MCw5NiwxMjQ5NCw0NywzMDUsMTA1LDkyMSw3MywxMDA5LDExMiwyMTUsMTIwLDY1MjgzLDM1LDY1Mjg4LDQwLDY1Mjg5LDQxLDY1MjkyLDQ0LDY1MzA3LDU5LDY1MzExLDYzXSwidHIiOlsxNjAsMzIsODIxMSw0NSw2NTM3NCwxMjYsNjUzMDYsNTgsNjUyODEsMzMsODI0NSw5NiwxODAsOTYsMTI0OTQsNDcsMTA0Nyw1MSwxMDczLDU0LDEwNzIsOTcsMTA0MCw2NSwxMDY4LDk4LDEwNDIsNjYsMTA4OSw5OSwxMDU3LDY3LDEwNzcsMTAxLDEwNDUsNjksMTA1Myw3MiwxMDUwLDc1LDkyMSw3MywxMDUyLDc3LDEwODYsMTExLDEwNTQsNzksMTAwOSwxMTIsMTA4OCwxMTIsMTA1Niw4MCwxMDc1LDExNCwxMDU4LDg0LDIxNSwxMjAsMTA5MywxMjAsMTA2MSw4OCwxMDkxLDEyMSwxMDU5LDg5LDY1MjgzLDM1LDY1Mjg4LDQwLDY1Mjg5LDQxLDY1MjkyLDQ0LDY1MzA3LDU5LDY1MzExLDYzXSwiemgtaGFucyI6WzY1Mzc0LDEyNiw2NTMwNiw1OCw2NTI4MSwzMyw4MjQ1LDk2LDE4MCw5NiwxMjQ5NCw0NywxMDQ3LDUxLDEwNzMsNTQsMTA3Miw5NywxMDQwLDY1LDEwNjgsOTgsMTA0Miw2NiwxMDg5LDk5LDEwNTcsNjcsMTA3NywxMDEsMTA0NSw2OSwxMDUzLDcyLDMwNSwxMDUsMTA1MCw3NSw5MjEsNzMsMTA1Miw3NywxMDg2LDExMSwxMDU0LDc5LDEwMDksMTEyLDEwODgsMTEyLDEwNTYsODAsMTA3NSwxMTQsMTA1OCw4NCwyMTUsMTIwLDEwOTMsMTIwLDEwNjEsODgsMTA5MSwxMjEsMTA1OSw4OSw2NTI4OCw0MCw2NTI4OSw0MV0sInpoLWhhbnQiOls4MjExLDQ1LDY1Mzc0LDEyNiwxODAsOTYsMTI0OTQsNDcsMTA0Nyw1MSwxMDczLDU0LDEwNzIsOTcsMTA0MCw2NSwxMDY4LDk4LDEwNDIsNjYsMTA4OSw5OSwxMDU3LDY3LDEwNzcsMTAxLDEwNDUsNjksMTA1Myw3MiwzMDUsMTA1LDEwNTAsNzUsOTIxLDczLDEwNTIsNzcsMTA4NiwxMTEsMTA1NCw3OSwxMDA5LDExMiwxMDg4LDExMiwxMDU2LDgwLDEwNzUsMTE0LDEwNTgsODQsMjE1LDEyMCwxMDkzLDEyMCwxMDYxLDg4LDEwOTEsMTIxLDEwNTksODksNjUyODMsMzUsNjUzMDcsNTldfScpKSxoZS5jYWNoZT1uZXcgY2xhc3N7Y29uc3RydWN0b3IoZSl7dGhpcy5jb21wdXRlRm49ZSx0aGlzLmxhc3RDYWNoZT12b2lkIDAsdGhpcy5sYXN0QXJnS2V5PXZvaWQgMH1nZXQoZSl7dmFyIHQ9SlNPTi5zdHJpbmdpZnkoZSk7cmV0dXJuIHRoaXMubGFzdEFyZ0tleSE9PXQmJih0aGlzLmxhc3RBcmdLZXk9dCx0aGlzLmxhc3RDYWNoZT10aGlzLmNvbXB1dGVGbihlKSksdGhpcy5sYXN0Q2FjaGV9fShlPT57ZnVuY3Rpb24gdCh0KXtjb25zdCByPW5ldyBNYXA7Zm9yKGxldCBlPTA7ZTx0Lmxlbmd0aDtlKz0yKXIuc2V0KHRbZV0sdFtlKzFdKTtyZXR1cm4gcn1jb25zdCByPUIuYW1iaWd1b3VzQ2hhcmFjdGVyRGF0YS5nZXRWYWx1ZSgpO2xldCBuPWUuZmlsdGVyKGU9PiFlLnN0YXJ0c1dpdGgoIl8iKSYmZSBpbiByKSxpPXZvaWQgMDtmb3IoY29uc3QgbyBvZiBuPTA9PT1uLmxlbmd0aD9bIl9kZWZhdWx0Il06bil7Y29uc3QgYT10KHJbb10pO2k9ZnVuY3Rpb24oZSx0KXtpZighZSlyZXR1cm4gdDtjb25zdCByPW5ldyBNYXA7Zm9yKHZhcltuLGldb2YgZSl0LmhhcyhuKSYmci5zZXQobixpKTtyZXR1cm4gcn0oaSxhKX1jb25zdCBhPWZ1bmN0aW9uKGUsdCl7Y29uc3Qgcj1uZXcgTWFwKGUpO2Zvcih2YXJbbixpXW9mIHQpci5zZXQobixpKTtyZXR1cm4gcn0odChyLl9jb21tb24pLGkpO3JldHVybiBuZXcgaGUoYSl9KSxoZS5fbG9jYWxlcz1uZXcgcmUoKCk9Pk9iamVjdC5rZXlzKGhlLmFtYmlndW91c0NoYXJhY3RlckRhdGEuZ2V0VmFsdWUoKSkuZmlsdGVyKGU9PiFlLnN0YXJ0c1dpdGgoIl8iKSkpO2NsYXNzIHVle3N0YXRpYyBnZXRSYXdEYXRhKCl7cmV0dXJuIEpTT04ucGFyc2UoIls5LDEwLDExLDEyLDEzLDMyLDEyNywxNjAsMTczLDg0NywxNTY0LDQ0NDcsNDQ0OCw2MDY4LDYwNjksNjE1NSw2MTU2LDYxNTcsNjE1OCw3MzU1LDczNTYsODE5Miw4MTkzLDgxOTQsODE5NSw4MTk2LDgxOTcsODE5OCw4MTk5LDgyMDAsODIwMSw4MjAyLDgyMDMsODIwNCw4MjA1LDgyMDYsODIwNyw4MjM0LDgyMzUsODIzNiw4MjM3LDgyMzgsODIzOSw4Mjg3LDgyODgsODI4OSw4MjkwLDgyOTEsODI5Miw4MjkzLDgyOTQsODI5NSw4Mjk2LDgyOTcsODI5OCw4Mjk5LDgzMDAsODMwMSw4MzAyLDgzMDMsMTAyNDAsMTIyODgsMTI2NDQsNjUwMjQsNjUwMjUsNjUwMjYsNjUwMjcsNjUwMjgsNjUwMjksNjUwMzAsNjUwMzEsNjUwMzIsNjUwMzMsNjUwMzQsNjUwMzUsNjUwMzYsNjUwMzcsNjUwMzgsNjUwMzksNjUyNzksNjU0NDAsNjU1MjAsNjU1MjEsNjU1MjIsNjU1MjMsNjU1MjQsNjU1MjUsNjU1MjYsNjU1MjcsNjU1MjgsNjU1MzIsNzg4NDQsMTE5MTU1LDExOTE1NiwxMTkxNTcsMTE5MTU4LDExOTE1OSwxMTkxNjAsMTE5MTYxLDExOTE2Miw5MTc1MDQsOTE3NTA1LDkxNzUwNiw5MTc1MDcsOTE3NTA4LDkxNzUwOSw5MTc1MTAsOTE3NTExLDkxNzUxMiw5MTc1MTMsOTE3NTE0LDkxNzUxNSw5MTc1MTYsOTE3NTE3LDkxNzUxOCw5MTc1MTksOTE3NTIwLDkxNzUyMSw5MTc1MjIsOTE3NTIzLDkxNzUyNCw5MTc1MjUsOTE3NTI2LDkxNzUyNyw5MTc1MjgsOTE3NTI5LDkxNzUzMCw5MTc1MzEsOTE3NTMyLDkxNzUzMyw5MTc1MzQsOTE3NTM1LDkxNzUzNiw5MTc1MzcsOTE3NTM4LDkxNzUzOSw5MTc1NDAsOTE3NTQxLDkxNzU0Miw5MTc1NDMsOTE3NTQ0LDkxNzU0NSw5MTc1NDYsOTE3NTQ3LDkxNzU0OCw5MTc1NDksOTE3NTUwLDkxNzU1MSw5MTc1NTIsOTE3NTUzLDkxNzU1NCw5MTc1NTUsOTE3NTU2LDkxNzU1Nyw5MTc1NTgsOTE3NTU5LDkxNzU2MCw5MTc1NjEsOTE3NTYyLDkxNzU2Myw5MTc1NjQsOTE3NTY1LDkxNzU2Niw5MTc1NjcsOTE3NTY4LDkxNzU2OSw5MTc1NzAsOTE3NTcxLDkxNzU3Miw5MTc1NzMsOTE3NTc0LDkxNzU3NSw5MTc1NzYsOTE3NTc3LDkxNzU3OCw5MTc1NzksOTE3NTgwLDkxNzU4MSw5MTc1ODIsOTE3NTgzLDkxNzU4NCw5MTc1ODUsOTE3NTg2LDkxNzU4Nyw5MTc1ODgsOTE3NTg5LDkxNzU5MCw5MTc1OTEsOTE3NTkyLDkxNzU5Myw5MTc1OTQsOTE3NTk1LDkxNzU5Niw5MTc1OTcsOTE3NTk4LDkxNzU5OSw5MTc2MDAsOTE3NjAxLDkxNzYwMiw5MTc2MDMsOTE3NjA0LDkxNzYwNSw5MTc2MDYsOTE3NjA3LDkxNzYwOCw5MTc2MDksOTE3NjEwLDkxNzYxMSw5MTc2MTIsOTE3NjEzLDkxNzYxNCw5MTc2MTUsOTE3NjE2LDkxNzYxNyw5MTc2MTgsOTE3NjE5LDkxNzYyMCw5MTc2MjEsOTE3NjIyLDkxNzYyMyw5MTc2MjQsOTE3NjI1LDkxNzYyNiw5MTc2MjcsOTE3NjI4LDkxNzYyOSw5MTc2MzAsOTE3NjMxLDkxNzc2MCw5MTc3NjEsOTE3NzYyLDkxNzc2Myw5MTc3NjQsOTE3NzY1LDkxNzc2Niw5MTc3NjcsOTE3NzY4LDkxNzc2OSw5MTc3NzAsOTE3NzcxLDkxNzc3Miw5MTc3NzMsOTE3Nzc0LDkxNzc3NSw5MTc3NzYsOTE3Nzc3LDkxNzc3OCw5MTc3NzksOTE3NzgwLDkxNzc4MSw5MTc3ODIsOTE3NzgzLDkxNzc4NCw5MTc3ODUsOTE3Nzg2LDkxNzc4Nyw5MTc3ODgsOTE3Nzg5LDkxNzc5MCw5MTc3OTEsOTE3NzkyLDkxNzc5Myw5MTc3OTQsOTE3Nzk1LDkxNzc5Niw5MTc3OTcsOTE3Nzk4LDkxNzc5OSw5MTc4MDAsOTE3ODAxLDkxNzgwMiw5MTc4MDMsOTE3ODA0LDkxNzgwNSw5MTc4MDYsOTE3ODA3LDkxNzgwOCw5MTc4MDksOTE3ODEwLDkxNzgxMSw5MTc4MTIsOTE3ODEzLDkxNzgxNCw5MTc4MTUsOTE3ODE2LDkxNzgxNyw5MTc4MTgsOTE3ODE5LDkxNzgyMCw5MTc4MjEsOTE3ODIyLDkxNzgyMyw5MTc4MjQsOTE3ODI1LDkxNzgyNiw5MTc4MjcsOTE3ODI4LDkxNzgyOSw5MTc4MzAsOTE3ODMxLDkxNzgzMiw5MTc4MzMsOTE3ODM0LDkxNzgzNSw5MTc4MzYsOTE3ODM3LDkxNzgzOCw5MTc4MzksOTE3ODQwLDkxNzg0MSw5MTc4NDIsOTE3ODQzLDkxNzg0NCw5MTc4NDUsOTE3ODQ2LDkxNzg0Nyw5MTc4NDgsOTE3ODQ5LDkxNzg1MCw5MTc4NTEsOTE3ODUyLDkxNzg1Myw5MTc4NTQsOTE3ODU1LDkxNzg1Niw5MTc4NTcsOTE3ODU4LDkxNzg1OSw5MTc4NjAsOTE3ODYxLDkxNzg2Miw5MTc4NjMsOTE3ODY0LDkxNzg2NSw5MTc4NjYsOTE3ODY3LDkxNzg2OCw5MTc4NjksOTE3ODcwLDkxNzg3MSw5MTc4NzIsOTE3ODczLDkxNzg3NCw5MTc4NzUsOTE3ODc2LDkxNzg3Nyw5MTc4NzgsOTE3ODc5LDkxNzg4MCw5MTc4ODEsOTE3ODgyLDkxNzg4Myw5MTc4ODQsOTE3ODg1LDkxNzg4Niw5MTc4ODcsOTE3ODg4LDkxNzg4OSw5MTc4OTAsOTE3ODkxLDkxNzg5Miw5MTc4OTMsOTE3ODk0LDkxNzg5NSw5MTc4OTYsOTE3ODk3LDkxNzg5OCw5MTc4OTksOTE3OTAwLDkxNzkwMSw5MTc5MDIsOTE3OTAzLDkxNzkwNCw5MTc5MDUsOTE3OTA2LDkxNzkwNyw5MTc5MDgsOTE3OTA5LDkxNzkxMCw5MTc5MTEsOTE3OTEyLDkxNzkxMyw5MTc5MTQsOTE3OTE1LDkxNzkxNiw5MTc5MTcsOTE3OTE4LDkxNzkxOSw5MTc5MjAsOTE3OTIxLDkxNzkyMiw5MTc5MjMsOTE3OTI0LDkxNzkyNSw5MTc5MjYsOTE3OTI3LDkxNzkyOCw5MTc5MjksOTE3OTMwLDkxNzkzMSw5MTc5MzIsOTE3OTMzLDkxNzkzNCw5MTc5MzUsOTE3OTM2LDkxNzkzNyw5MTc5MzgsOTE3OTM5LDkxNzk0MCw5MTc5NDEsOTE3OTQyLDkxNzk0Myw5MTc5NDQsOTE3OTQ1LDkxNzk0Niw5MTc5NDcsOTE3OTQ4LDkxNzk0OSw5MTc5NTAsOTE3OTUxLDkxNzk1Miw5MTc5NTMsOTE3OTU0LDkxNzk1NSw5MTc5NTYsOTE3OTU3LDkxNzk1OCw5MTc5NTksOTE3OTYwLDkxNzk2MSw5MTc5NjIsOTE3OTYzLDkxNzk2NCw5MTc5NjUsOTE3OTY2LDkxNzk2Nyw5MTc5NjgsOTE3OTY5LDkxNzk3MCw5MTc5NzEsOTE3OTcyLDkxNzk3Myw5MTc5NzQsOTE3OTc1LDkxNzk3Niw5MTc5NzcsOTE3OTc4LDkxNzk3OSw5MTc5ODAsOTE3OTgxLDkxNzk4Miw5MTc5ODMsOTE3OTg0LDkxNzk4NSw5MTc5ODYsOTE3OTg3LDkxNzk4OCw5MTc5ODksOTE3OTkwLDkxNzk5MSw5MTc5OTIsOTE3OTkzLDkxNzk5NCw5MTc5OTUsOTE3OTk2LDkxNzk5Nyw5MTc5OTgsOTE3OTk5XSIpfXN0YXRpYyBnZXREYXRhKCl7cmV0dXJuIHRoaXMuX2RhdGF8fCh0aGlzLl9kYXRhPW5ldyBTZXQodWUuZ2V0UmF3RGF0YSgpKSksdGhpcy5fZGF0YX1zdGF0aWMgaXNJbnZpc2libGVDaGFyYWN0ZXIoZSl7cmV0dXJuIHVlLmdldERhdGEoKS5oYXMoZSl9c3RhdGljIGdldCBjb2RlUG9pbnRzKCl7cmV0dXJuIHVlLmdldERhdGEoKX19dWUuX2RhdGE9dm9pZCAwO2NsYXNzIGNle2NvbnN0cnVjdG9yKGUsdCxyLG4pe3RoaXMudnNXb3JrZXI9ZSx0aGlzLnJlcT10LHRoaXMubWV0aG9kPXIsdGhpcy5hcmdzPW4sdGhpcy50eXBlPTB9fWNsYXNzIGRle2NvbnN0cnVjdG9yKGUsdCxyLG4pe3RoaXMudnNXb3JrZXI9ZSx0aGlzLnNlcT10LHRoaXMucmVzPXIsdGhpcy5lcnI9bix0aGlzLnR5cGU9MX19Y2xhc3MgZmV7Y29uc3RydWN0b3IoZSx0LHIsbil7dGhpcy52c1dvcmtlcj1lLHRoaXMucmVxPXQsdGhpcy5ldmVudE5hbWU9cix0aGlzLmFyZz1uLHRoaXMudHlwZT0yfX1jbGFzcyBtZXtjb25zdHJ1Y3RvcihlLHQscil7dGhpcy52c1dvcmtlcj1lLHRoaXMucmVxPXQsdGhpcy5ldmVudD1yLHRoaXMudHlwZT0zfX1jbGFzcyBnZXtjb25zdHJ1Y3RvcihlLHQpe3RoaXMudnNXb3JrZXI9ZSx0aGlzLnJlcT10LHRoaXMudHlwZT00fX1jbGFzcyBiZXtjb25zdHJ1Y3RvcihlKXt0aGlzLl93b3JrZXJJZD0tMSx0aGlzLl9oYW5kbGVyPWUsdGhpcy5fbGFzdFNlbnRSZXE9MCx0aGlzLl9wZW5kaW5nUmVwbGllcz1PYmplY3QuY3JlYXRlKG51bGwpLHRoaXMuX3BlbmRpbmdFbWl0dGVycz1uZXcgTWFwLHRoaXMuX3BlbmRpbmdFdmVudHM9bmV3IE1hcH1zZXRXb3JrZXJJZChlKXt0aGlzLl93b3JrZXJJZD1lfXNlbmRNZXNzYWdlKHIsbil7Y29uc3QgaT1TdHJpbmcoKyt0aGlzLl9sYXN0U2VudFJlcSk7cmV0dXJuIG5ldyBQcm9taXNlKChlLHQpPT57dGhpcy5fcGVuZGluZ1JlcGxpZXNbaV09e3Jlc29sdmU6ZSxyZWplY3Q6dH0sdGhpcy5fc2VuZChuZXcgY2UodGhpcy5fd29ya2VySWQsaSxyLG4pKX0pfWxpc3RlbihlLHQpe2xldCByPW51bGw7Y29uc3Qgbj1uZXcgWCh7b25GaXJzdExpc3RlbmVyQWRkOigpPT57cj1TdHJpbmcoKyt0aGlzLl9sYXN0U2VudFJlcSksdGhpcy5fcGVuZGluZ0VtaXR0ZXJzLnNldChyLG4pLHRoaXMuX3NlbmQobmV3IGZlKHRoaXMuX3dvcmtlcklkLHIsZSx0KSl9LG9uTGFzdExpc3RlbmVyUmVtb3ZlOigpPT57dGhpcy5fcGVuZGluZ0VtaXR0ZXJzLmRlbGV0ZShyKSx0aGlzLl9zZW5kKG5ldyBnZSh0aGlzLl93b3JrZXJJZCxyKSkscj1udWxsfX0pO3JldHVybiBuLmV2ZW50fWhhbmRsZU1lc3NhZ2UoZSl7ZSYmZS52c1dvcmtlciYmKC0xIT09dGhpcy5fd29ya2VySWQmJmUudnNXb3JrZXIhPT10aGlzLl93b3JrZXJJZHx8dGhpcy5faGFuZGxlTWVzc2FnZShlKSl9X2hhbmRsZU1lc3NhZ2UoZSl7c3dpdGNoKGUudHlwZSl7Y2FzZSAxOnJldHVybiB0aGlzLl9oYW5kbGVSZXBseU1lc3NhZ2UoZSk7Y2FzZSAwOnJldHVybiB0aGlzLl9oYW5kbGVSZXF1ZXN0TWVzc2FnZShlKTtjYXNlIDI6cmV0dXJuIHRoaXMuX2hhbmRsZVN1YnNjcmliZUV2ZW50TWVzc2FnZShlKTtjYXNlIDM6cmV0dXJuIHRoaXMuX2hhbmRsZUV2ZW50TWVzc2FnZShlKTtjYXNlIDQ6cmV0dXJuIHRoaXMuX2hhbmRsZVVuc3Vic2NyaWJlRXZlbnRNZXNzYWdlKGUpfX1faGFuZGxlUmVwbHlNZXNzYWdlKHIpe2lmKHRoaXMuX3BlbmRpbmdSZXBsaWVzW3Iuc2VxXSl7bGV0IHQ9dGhpcy5fcGVuZGluZ1JlcGxpZXNbci5zZXFdO2lmKGRlbGV0ZSB0aGlzLl9wZW5kaW5nUmVwbGllc1tyLnNlcV0sci5lcnIpe2xldCBlPXIuZXJyO3JldHVybiByLmVyci4kaXNFcnJvciYmKChlPW5ldyBFcnJvcikubmFtZT1yLmVyci5uYW1lLGUubWVzc2FnZT1yLmVyci5tZXNzYWdlLGUuc3RhY2s9ci5lcnIuc3RhY2spLHZvaWQgdC5yZWplY3QoZSl9dC5yZXNvbHZlKHIucmVzKX1lbHNlIGNvbnNvbGUud2FybigiR290IHJlcGx5IHRvIHVua25vd24gc2VxIil9X2hhbmRsZVJlcXVlc3RNZXNzYWdlKGUpe2xldCB0PWUucmVxLHI9dGhpcy5faGFuZGxlci5oYW5kbGVNZXNzYWdlKGUubWV0aG9kLGUuYXJncyk7ci50aGVuKGU9Pnt0aGlzLl9zZW5kKG5ldyBkZSh0aGlzLl93b3JrZXJJZCx0LGUsdm9pZCAwKSl9LGU9PntlLmRldGFpbCBpbnN0YW5jZW9mIEVycm9yJiYoZS5kZXRhaWw9ZihlLmRldGFpbCkpLHRoaXMuX3NlbmQobmV3IGRlKHRoaXMuX3dvcmtlcklkLHQsdm9pZCAwLGYoZSkpKX0pfV9oYW5kbGVTdWJzY3JpYmVFdmVudE1lc3NhZ2UoZSl7Y29uc3QgdD1lLnJlcTtlPXRoaXMuX2hhbmRsZXIuaGFuZGxlRXZlbnQoZS5ldmVudE5hbWUsZS5hcmcpKGU9Pnt0aGlzLl9zZW5kKG5ldyBtZSh0aGlzLl93b3JrZXJJZCx0LGUpKX0pO3RoaXMuX3BlbmRpbmdFdmVudHMuc2V0KHQsZSl9X2hhbmRsZUV2ZW50TWVzc2FnZShlKXt0aGlzLl9wZW5kaW5nRW1pdHRlcnMuaGFzKGUucmVxKT90aGlzLl9wZW5kaW5nRW1pdHRlcnMuZ2V0KGUucmVxKS5maXJlKGUuZXZlbnQpOmNvbnNvbGUud2FybigiR290IGV2ZW50IGZvciB1bmtub3duIHJlcSIpfV9oYW5kbGVVbnN1YnNjcmliZUV2ZW50TWVzc2FnZShlKXt0aGlzLl9wZW5kaW5nRXZlbnRzLmhhcyhlLnJlcSk/KHRoaXMuX3BlbmRpbmdFdmVudHMuZ2V0KGUucmVxKS5kaXNwb3NlKCksdGhpcy5fcGVuZGluZ0V2ZW50cy5kZWxldGUoZS5yZXEpKTpjb25zb2xlLndhcm4oIkdvdCB1bnN1YnNjcmliZSBmb3IgdW5rbm93biByZXEiKX1fc2VuZCh0KXtsZXQgcj1bXTtpZigwPT09dC50eXBlKWZvcihsZXQgZT0wO2U8dC5hcmdzLmxlbmd0aDtlKyspdC5hcmdzW2VdaW5zdGFuY2VvZiBBcnJheUJ1ZmZlciYmci5wdXNoKHQuYXJnc1tlXSk7ZWxzZSAxPT09dC50eXBlJiZ0LnJlcyBpbnN0YW5jZW9mIEFycmF5QnVmZmVyJiZyLnB1c2godC5yZXMpO3RoaXMuX2hhbmRsZXIuc2VuZE1lc3NhZ2UodCxyKX19ZnVuY3Rpb24gcGUoZSl7cmV0dXJuIm8iPT09ZVswXSYmIm4iPT09ZVsxXSYmb2UoZS5jaGFyQ29kZUF0KDIpKX1mdW5jdGlvbiBDZShlKXtyZXR1cm4vXm9uRHluYW1pYy8udGVzdChlKSYmb2UoZS5jaGFyQ29kZUF0KDkpKX1mdW5jdGlvbiB3ZShlLHIsbil7bGV0IHQ9e307Zm9yKGNvbnN0IGkgb2YgZSlDZShpKT90W2ldPSh0PT5mdW5jdGlvbihlKXtyZXR1cm4gbih0LGUpfSkoaSk6cGUoaSk/dFtpXT1uKGksdm9pZCAwKTp0W2ldPSh0PT5mdW5jdGlvbigpe3ZhciBlPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywwKTtyZXR1cm4gcih0LGUpfSkoaSk7cmV0dXJuIHR9Y2xhc3MgX2V7Y29uc3RydWN0b3IocixlKXt0aGlzLl9yZXF1ZXN0SGFuZGxlckZhY3Rvcnk9ZSx0aGlzLl9yZXF1ZXN0SGFuZGxlcj1udWxsLHRoaXMuX3Byb3RvY29sPW5ldyBiZSh7c2VuZE1lc3NhZ2U6KGUsdCk9PntyKGUsdCl9LGhhbmRsZU1lc3NhZ2U6KGUsdCk9PnRoaXMuX2hhbmRsZU1lc3NhZ2UoZSx0KSxoYW5kbGVFdmVudDooZSx0KT0+dGhpcy5faGFuZGxlRXZlbnQoZSx0KX0pfW9ubWVzc2FnZShlKXt0aGlzLl9wcm90b2NvbC5oYW5kbGVNZXNzYWdlKGUpfV9oYW5kbGVNZXNzYWdlKGUsdCl7aWYoIiRpbml0aWFsaXplIj09PWUpcmV0dXJuIHRoaXMuaW5pdGlhbGl6ZSh0WzBdLHRbMV0sdFsyXSx0WzNdKTtpZighdGhpcy5fcmVxdWVzdEhhbmRsZXJ8fCJmdW5jdGlvbiIhPXR5cGVvZiB0aGlzLl9yZXF1ZXN0SGFuZGxlcltlXSlyZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKCJNaXNzaW5nIHJlcXVlc3RIYW5kbGVyIG9yIG1ldGhvZDogIitlKSk7dHJ5e3JldHVybiBQcm9taXNlLnJlc29sdmUodGhpcy5fcmVxdWVzdEhhbmRsZXJbZV0uYXBwbHkodGhpcy5fcmVxdWVzdEhhbmRsZXIsdCkpfWNhdGNoKGUpe3JldHVybiBQcm9taXNlLnJlamVjdChlKX19X2hhbmRsZUV2ZW50KGUsdCl7aWYoIXRoaXMuX3JlcXVlc3RIYW5kbGVyKXRocm93IG5ldyBFcnJvcigiTWlzc2luZyByZXF1ZXN0SGFuZGxlciIpO2lmKENlKGUpKXt0PXRoaXMuX3JlcXVlc3RIYW5kbGVyW2VdLmNhbGwodGhpcy5fcmVxdWVzdEhhbmRsZXIsdCk7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQpdGhyb3cgbmV3IEVycm9yKGBNaXNzaW5nIGR5bmFtaWMgZXZlbnQgJHtlfSBvbiByZXF1ZXN0IGhhbmRsZXIuYCk7cmV0dXJuIHR9aWYocGUoZSkpe3Q9dGhpcy5fcmVxdWVzdEhhbmRsZXJbZV07aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQpdGhyb3cgbmV3IEVycm9yKGBNaXNzaW5nIGV2ZW50ICR7ZX0gb24gcmVxdWVzdCBoYW5kbGVyLmApO3JldHVybiB0fXRocm93IG5ldyBFcnJvcigiTWFsZm9ybWVkIGV2ZW50IG5hbWUgIitlKX1pbml0aWFsaXplKGUsdCxuLHIpe3RoaXMuX3Byb3RvY29sLnNldFdvcmtlcklkKGUpO2NvbnN0IGk9d2UociwoZSx0KT0+dGhpcy5fcHJvdG9jb2wuc2VuZE1lc3NhZ2UoZSx0KSwoZSx0KT0+dGhpcy5fcHJvdG9jb2wubGlzdGVuKGUsdCkpO3JldHVybiB0aGlzLl9yZXF1ZXN0SGFuZGxlckZhY3Rvcnk/KHRoaXMuX3JlcXVlc3RIYW5kbGVyPXRoaXMuX3JlcXVlc3RIYW5kbGVyRmFjdG9yeShpKSxQcm9taXNlLnJlc29sdmUoZWUodGhpcy5fcmVxdWVzdEhhbmRsZXIpKSk6KHQmJih2b2lkIDAhPT10LmJhc2VVcmwmJmRlbGV0ZSB0LmJhc2VVcmwsdm9pZCAwIT09dC5wYXRocyYmdm9pZCAwIT09dC5wYXRocy52cyYmZGVsZXRlIHQucGF0aHMudnMsdC50cnVzdGVkVHlwZXNQb2xpY3ksZGVsZXRlIHQudHJ1c3RlZFR5cGVzUG9saWN5LHQuY2F0Y2hFcnJvcj0hMCxQLnJlcXVpcmUuY29uZmlnKHQpKSxuZXcgUHJvbWlzZSgodCxyKT0+e2NvbnN0IGU9UC5yZXF1aXJlO2UoW25dLGU9Pnt0aGlzLl9yZXF1ZXN0SGFuZGxlcj1lLmNyZWF0ZShpKSx0aGlzLl9yZXF1ZXN0SGFuZGxlcj90KGVlKHRoaXMuX3JlcXVlc3RIYW5kbGVyKSk6cihuZXcgRXJyb3IoIk5vIFJlcXVlc3RIYW5kbGVyISIpKX0scil9KSl9fWNsYXNzIHZle2NvbnN0cnVjdG9yKGUsdCxyLG4pe3RoaXMub3JpZ2luYWxTdGFydD1lLHRoaXMub3JpZ2luYWxMZW5ndGg9dCx0aGlzLm1vZGlmaWVkU3RhcnQ9cix0aGlzLm1vZGlmaWVkTGVuZ3RoPW59Z2V0T3JpZ2luYWxFbmQoKXtyZXR1cm4gdGhpcy5vcmlnaW5hbFN0YXJ0K3RoaXMub3JpZ2luYWxMZW5ndGh9Z2V0TW9kaWZpZWRFbmQoKXtyZXR1cm4gdGhpcy5tb2RpZmllZFN0YXJ0K3RoaXMubW9kaWZpZWRMZW5ndGh9fWZ1bmN0aW9uIHllKGUsdCl7cmV0dXJuKHQ8PDUpLXQrZXwwfWNsYXNzIFNle2NvbnN0cnVjdG9yKGUpe3RoaXMuc291cmNlPWV9Z2V0RWxlbWVudHMoKXtjb25zdCByPXRoaXMuc291cmNlLG49bmV3IEludDMyQXJyYXkoci5sZW5ndGgpO2ZvcihsZXQgZT0wLHQ9ci5sZW5ndGg7ZTx0O2UrKyluW2VdPXIuY2hhckNvZGVBdChlKTtyZXR1cm4gbn19Y2xhc3MgTGV7c3RhdGljIEFzc2VydChlLHQpe2lmKCFlKXRocm93IG5ldyBFcnJvcih0KX19Y2xhc3MgTmV7c3RhdGljIENvcHkodCxyLG4saSxhKXtmb3IobGV0IGU9MDtlPGE7ZSsrKW5baStlXT10W3IrZV19c3RhdGljIENvcHkyKHQscixuLGksYSl7Zm9yKGxldCBlPTA7ZTxhO2UrKyluW2krZV09dFtyK2VdfX1jbGFzcyBFZXtjb25zdHJ1Y3Rvcigpe3RoaXMubV9jaGFuZ2VzPVtdLHRoaXMubV9vcmlnaW5hbFN0YXJ0PTEwNzM3NDE4MjQsdGhpcy5tX21vZGlmaWVkU3RhcnQ9MTA3Mzc0MTgyNCx0aGlzLm1fb3JpZ2luYWxDb3VudD0wLHRoaXMubV9tb2RpZmllZENvdW50PTB9TWFya05leHRDaGFuZ2UoKXsoMDx0aGlzLm1fb3JpZ2luYWxDb3VudHx8MDx0aGlzLm1fbW9kaWZpZWRDb3VudCkmJnRoaXMubV9jaGFuZ2VzLnB1c2gobmV3IHZlKHRoaXMubV9vcmlnaW5hbFN0YXJ0LHRoaXMubV9vcmlnaW5hbENvdW50LHRoaXMubV9tb2RpZmllZFN0YXJ0LHRoaXMubV9tb2RpZmllZENvdW50KSksdGhpcy5tX29yaWdpbmFsQ291bnQ9MCx0aGlzLm1fbW9kaWZpZWRDb3VudD0wLHRoaXMubV9vcmlnaW5hbFN0YXJ0PTEwNzM3NDE4MjQsdGhpcy5tX21vZGlmaWVkU3RhcnQ9MTA3Mzc0MTgyNH1BZGRPcmlnaW5hbEVsZW1lbnQoZSx0KXt0aGlzLm1fb3JpZ2luYWxTdGFydD1NYXRoLm1pbih0aGlzLm1fb3JpZ2luYWxTdGFydCxlKSx0aGlzLm1fbW9kaWZpZWRTdGFydD1NYXRoLm1pbih0aGlzLm1fbW9kaWZpZWRTdGFydCx0KSx0aGlzLm1fb3JpZ2luYWxDb3VudCsrfUFkZE1vZGlmaWVkRWxlbWVudChlLHQpe3RoaXMubV9vcmlnaW5hbFN0YXJ0PU1hdGgubWluKHRoaXMubV9vcmlnaW5hbFN0YXJ0LGUpLHRoaXMubV9tb2RpZmllZFN0YXJ0PU1hdGgubWluKHRoaXMubV9tb2RpZmllZFN0YXJ0LHQpLHRoaXMubV9tb2RpZmllZENvdW50Kyt9Z2V0Q2hhbmdlcygpe3JldHVybigwPHRoaXMubV9vcmlnaW5hbENvdW50fHwwPHRoaXMubV9tb2RpZmllZENvdW50KSYmdGhpcy5NYXJrTmV4dENoYW5nZSgpLHRoaXMubV9jaGFuZ2VzfWdldFJldmVyc2VDaGFuZ2VzKCl7cmV0dXJuKDA8dGhpcy5tX29yaWdpbmFsQ291bnR8fDA8dGhpcy5tX21vZGlmaWVkQ291bnQpJiZ0aGlzLk1hcmtOZXh0Q2hhbmdlKCksdGhpcy5tX2NoYW5nZXMucmV2ZXJzZSgpLHRoaXMubV9jaGFuZ2VzfX1jbGFzcyBBZXtjb25zdHJ1Y3RvcihlLHQscj1udWxsKXt0aGlzLkNvbnRpbnVlUHJvY2Vzc2luZ1ByZWRpY2F0ZT1yLHRoaXMuX29yaWdpbmFsU2VxdWVuY2U9ZSx0aGlzLl9tb2RpZmllZFNlcXVlbmNlPXQ7dmFyW3IsZSxuXT1BZS5fZ2V0RWxlbWVudHMoZSksW3QsaSxhXT1BZS5fZ2V0RWxlbWVudHModCk7dGhpcy5faGFzU3RyaW5ncz1uJiZhLHRoaXMuX29yaWdpbmFsU3RyaW5nRWxlbWVudHM9cix0aGlzLl9vcmlnaW5hbEVsZW1lbnRzT3JIYXNoPWUsdGhpcy5fbW9kaWZpZWRTdHJpbmdFbGVtZW50cz10LHRoaXMuX21vZGlmaWVkRWxlbWVudHNPckhhc2g9aSx0aGlzLm1fZm9yd2FyZEhpc3Rvcnk9W10sdGhpcy5tX3JldmVyc2VIaXN0b3J5PVtdfXN0YXRpYyBfaXNTdHJpbmdBcnJheShlKXtyZXR1cm4gMDxlLmxlbmd0aCYmInN0cmluZyI9PXR5cGVvZiBlWzBdfXN0YXRpYyBfZ2V0RWxlbWVudHMoZSl7dmFyIHI9ZS5nZXRFbGVtZW50cygpO2lmKEFlLl9pc1N0cmluZ0FycmF5KHIpKXtjb25zdCBuPW5ldyBJbnQzMkFycmF5KHIubGVuZ3RoKTtmb3IobGV0IGU9MCx0PXIubGVuZ3RoO2U8dDtlKyspbltlXT1mdW5jdGlvbihyLG4pe249eWUoMTQ5NDE3LG4pO2ZvcihsZXQgZT0wLHQ9ci5sZW5ndGg7ZTx0O2UrKyluPXllKHIuY2hhckNvZGVBdChlKSxuKTtyZXR1cm4gbn0ocltlXSwwKTtyZXR1cm5bcixuLCEwXX1yZXR1cm4gciBpbnN0YW5jZW9mIEludDMyQXJyYXk/W1tdLHIsITFdOltbXSxuZXcgSW50MzJBcnJheShyKSwhMV19RWxlbWVudHNBcmVFcXVhbChlLHQpe3JldHVybiB0aGlzLl9vcmlnaW5hbEVsZW1lbnRzT3JIYXNoW2VdPT09dGhpcy5fbW9kaWZpZWRFbGVtZW50c09ySGFzaFt0XSYmKCF0aGlzLl9oYXNTdHJpbmdzfHx0aGlzLl9vcmlnaW5hbFN0cmluZ0VsZW1lbnRzW2VdPT09dGhpcy5fbW9kaWZpZWRTdHJpbmdFbGVtZW50c1t0XSl9RWxlbWVudHNBcmVTdHJpY3RFcXVhbChlLHQpe3JldHVybiEhdGhpcy5FbGVtZW50c0FyZUVxdWFsKGUsdCkmJkFlLl9nZXRTdHJpY3RFbGVtZW50KHRoaXMuX29yaWdpbmFsU2VxdWVuY2UsZSk9PT1BZS5fZ2V0U3RyaWN0RWxlbWVudCh0aGlzLl9tb2RpZmllZFNlcXVlbmNlLHQpfXN0YXRpYyBfZ2V0U3RyaWN0RWxlbWVudChlLHQpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBlLmdldFN0cmljdEVsZW1lbnQ/ZS5nZXRTdHJpY3RFbGVtZW50KHQpOm51bGx9T3JpZ2luYWxFbGVtZW50c0FyZUVxdWFsKGUsdCl7cmV0dXJuIHRoaXMuX29yaWdpbmFsRWxlbWVudHNPckhhc2hbZV09PT10aGlzLl9vcmlnaW5hbEVsZW1lbnRzT3JIYXNoW3RdJiYoIXRoaXMuX2hhc1N0cmluZ3N8fHRoaXMuX29yaWdpbmFsU3RyaW5nRWxlbWVudHNbZV09PT10aGlzLl9vcmlnaW5hbFN0cmluZ0VsZW1lbnRzW3RdKX1Nb2RpZmllZEVsZW1lbnRzQXJlRXF1YWwoZSx0KXtyZXR1cm4gdGhpcy5fbW9kaWZpZWRFbGVtZW50c09ySGFzaFtlXT09PXRoaXMuX21vZGlmaWVkRWxlbWVudHNPckhhc2hbdF0mJighdGhpcy5faGFzU3RyaW5nc3x8dGhpcy5fbW9kaWZpZWRTdHJpbmdFbGVtZW50c1tlXT09PXRoaXMuX21vZGlmaWVkU3RyaW5nRWxlbWVudHNbdF0pfUNvbXB1dGVEaWZmKGUpe3JldHVybiB0aGlzLl9Db21wdXRlRGlmZigwLHRoaXMuX29yaWdpbmFsRWxlbWVudHNPckhhc2gubGVuZ3RoLTEsMCx0aGlzLl9tb2RpZmllZEVsZW1lbnRzT3JIYXNoLmxlbmd0aC0xLGUpfV9Db21wdXRlRGlmZihlLHQscixuLGkpe3ZhciBhPVshMV07bGV0IG89dGhpcy5Db21wdXRlRGlmZlJlY3Vyc2l2ZShlLHQscixuLGEpO3JldHVybiBpJiYobz10aGlzLlByZXR0aWZ5Q2hhbmdlcyhvKSkse3F1aXRFYXJseTphWzBdLGNoYW5nZXM6b319Q29tcHV0ZURpZmZSZWN1cnNpdmUodCxyLG4saSxhKXtmb3IoYVswXT0hMTt0PD1yJiZuPD1pJiZ0aGlzLkVsZW1lbnRzQXJlRXF1YWwodCxuKTspdCsrLG4rKztmb3IoO3Q8PXImJm48PWkmJnRoaXMuRWxlbWVudHNBcmVFcXVhbChyLGkpOylyLS0saS0tO2lmKHI8dHx8aTxuKXtsZXQgZTtyZXR1cm4gZT1uPD1pPyhMZS5Bc3NlcnQodD09PXIrMSwib3JpZ2luYWxTdGFydCBzaG91bGQgb25seSBiZSBvbmUgbW9yZSB0aGFuIG9yaWdpbmFsRW5kIiksW25ldyB2ZSh0LDAsbixpLW4rMSldKTp0PD1yPyhMZS5Bc3NlcnQobj09PWkrMSwibW9kaWZpZWRTdGFydCBzaG91bGQgb25seSBiZSBvbmUgbW9yZSB0aGFuIG1vZGlmaWVkRW5kIiksW25ldyB2ZSh0LHItdCsxLG4sMCldKTooTGUuQXNzZXJ0KHQ9PT1yKzEsIm9yaWdpbmFsU3RhcnQgc2hvdWxkIG9ubHkgYmUgb25lIG1vcmUgdGhhbiBvcmlnaW5hbEVuZCIpLExlLkFzc2VydChuPT09aSsxLCJtb2RpZmllZFN0YXJ0IHNob3VsZCBvbmx5IGJlIG9uZSBtb3JlIHRoYW4gbW9kaWZpZWRFbmQiKSxbXSl9dmFyIG89WzBdLHM9WzBdLGw9dGhpcy5Db21wdXRlUmVjdXJzaW9uUG9pbnQodCxyLG4saSxvLHMsYSksbz1vWzBdLHM9c1swXTtpZihudWxsIT09bClyZXR1cm4gbDtpZihhWzBdKXJldHVybltuZXcgdmUodCxyLXQrMSxuLGktbisxKV07e2w9dGhpcy5Db21wdXRlRGlmZlJlY3Vyc2l2ZSh0LG8sbixzLGEpO2xldCBlPVtdO3JldHVybiBlPWFbMF0/W25ldyB2ZShvKzEsci0obysxKSsxLHMrMSxpLShzKzEpKzEpXTp0aGlzLkNvbXB1dGVEaWZmUmVjdXJzaXZlKG8rMSxyLHMrMSxpLGEpLHRoaXMuQ29uY2F0ZW5hdGVDaGFuZ2VzKGwsZSl9fVdBTEtUUkFDRSh1LHIsYyxkLGYsbSxnLGIsZSxwLHQsQyx3LG4sXyx2LHksUyl7bGV0IEw9bnVsbCxpPW5ldyBFZSxOPXIsRT1jLGE9d1swXS12WzBdLWQsbz0tMTA3Mzc0MTgyNCxzPXRoaXMubV9mb3J3YXJkSGlzdG9yeS5sZW5ndGgtMTtkb3t2YXIgbD1hK3U7YT1sPT09Tnx8bDxFJiZlW2wtMV08ZVtsKzFdPyhuPSh0PWVbbCsxXSktYS1kLHQ8byYmaS5NYXJrTmV4dENoYW5nZSgpLG89dCxpLkFkZE1vZGlmaWVkRWxlbWVudCh0KzEsbiksbCsxLXUpOihuPSh0PWVbbC0xXSsxKS1hLWQsdDxvJiZpLk1hcmtOZXh0Q2hhbmdlKCksbz10LTEsaS5BZGRPcmlnaW5hbEVsZW1lbnQodCxuKzEpLGwtMS11KSwwPD1zJiYodT0oZT10aGlzLm1fZm9yd2FyZEhpc3Rvcnlbc10pWzBdLE49MSxFPWUubGVuZ3RoLTEpfXdoaWxlKC0xPD0tLXMpO2lmKHI9aS5nZXRSZXZlcnNlQ2hhbmdlcygpLFNbMF0pe2xldCBlPXdbMF0rMSx0PXZbMF0rMTtpZihudWxsIT09ciYmMDxyLmxlbmd0aCl7Y29uc3QgQT1yW3IubGVuZ3RoLTFdO2U9TWF0aC5tYXgoZSxBLmdldE9yaWdpbmFsRW5kKCkpLHQ9TWF0aC5tYXgodCxBLmdldE1vZGlmaWVkRW5kKCkpfUw9W25ldyB2ZShlLEMtZSsxLHQsXy10KzEpXX1lbHNle2k9bmV3IEVlLE49bSxFPWcsYT13WzBdLXZbMF0tYixvPTEwNzM3NDE4MjQscz15P3RoaXMubV9yZXZlcnNlSGlzdG9yeS5sZW5ndGgtMTp0aGlzLm1fcmV2ZXJzZUhpc3RvcnkubGVuZ3RoLTI7ZG97dmFyIGg9YStmO2E9aD09PU58fGg8RSYmcFtoLTFdPj1wW2grMV0/KG49KHQ9cFtoKzFdLTEpLWEtYix0Pm8mJmkuTWFya05leHRDaGFuZ2UoKSxvPXQrMSxpLkFkZE9yaWdpbmFsRWxlbWVudCh0KzEsbisxKSxoKzEtZik6KG49KHQ9cFtoLTFdKS1hLWIsdD5vJiZpLk1hcmtOZXh0Q2hhbmdlKCksbz10LGkuQWRkTW9kaWZpZWRFbGVtZW50KHQrMSxuKzEpLGgtMS1mKSwwPD1zJiYoZj0ocD10aGlzLm1fcmV2ZXJzZUhpc3Rvcnlbc10pWzBdLE49MSxFPXAubGVuZ3RoLTEpfXdoaWxlKC0xPD0tLXMpO0w9aS5nZXRDaGFuZ2VzKCl9cmV0dXJuIHRoaXMuQ29uY2F0ZW5hdGVDaGFuZ2VzKHIsTCl9Q29tcHV0ZVJlY3Vyc2lvblBvaW50KGksYSxtLGcsYixwLEMpe2xldCBvPTAscz0wLGw9MCx3PTAsaD0wLF89MDtpLS0sbS0tLHBbYlswXT0wXT0wLHRoaXMubV9mb3J3YXJkSGlzdG9yeT1bXSx0aGlzLm1fcmV2ZXJzZUhpc3Rvcnk9W107dmFyIGU9YS1pKyhnLW0pLHY9MStlO2NvbnN0IHU9bmV3IEludDMyQXJyYXkodiksYz1uZXcgSW50MzJBcnJheSh2KTt2YXIgZD1nLW0sZj1hLWkseT1pLW0sUz1hLWcsTD0oZi1kKSUyPT0wO3VbZF09aSxjW2ZdPWEsQ1swXT0hMTtmb3IobGV0IG49MTtuPD1lLzIrMTtuKyspe2xldCB0PTAscj0wO2w9dGhpcy5DbGlwRGlhZ29uYWxCb3VuZChkLW4sbixkLHYpLHc9dGhpcy5DbGlwRGlhZ29uYWxCb3VuZChkK24sbixkLHYpO2ZvcihsZXQgZT1sO2U8PXc7ZSs9Mil7bz1lPT09bHx8ZTx3JiZ1W2UtMV08dVtlKzFdP3VbZSsxXTp1W2UtMV0rMSxzPW8tKGUtZCkteTtmb3IodmFyIE49bztvPGEmJnM8ZyYmdGhpcy5FbGVtZW50c0FyZUVxdWFsKG8rMSxzKzEpOylvKysscysrO2lmKCh1W2VdPW8pK3M+dCtyJiYodD1vLHI9cyksIUwmJk1hdGguYWJzKGUtZik8PW4tMSYmbz49Y1tlXSlyZXR1cm4gYlswXT1vLHBbMF09cyxOPD1jW2VdJiZuPD0xNDQ4P3RoaXMuV0FMS1RSQUNFKGQsbCx3LHksZixoLF8sUyx1LGMsbyxhLGIscyxnLHAsTCxDKTpudWxsfXZhciBFPSh0LWkrKHItbSktbikvMjtpZihudWxsIT09dGhpcy5Db250aW51ZVByb2Nlc3NpbmdQcmVkaWNhdGUmJiF0aGlzLkNvbnRpbnVlUHJvY2Vzc2luZ1ByZWRpY2F0ZSh0LEUpKXJldHVybiBDWzBdPSEwLGJbMF09dCxwWzBdPXIsMDxFJiZuPD0xNDQ4P3RoaXMuV0FMS1RSQUNFKGQsbCx3LHksZixoLF8sUyx1LGMsbyxhLGIscyxnLHAsTCxDKTooaSsrLG0rKyxbbmV3IHZlKGksYS1pKzEsbSxnLW0rMSldKTtoPXRoaXMuQ2xpcERpYWdvbmFsQm91bmQoZi1uLG4sZix2KSxfPXRoaXMuQ2xpcERpYWdvbmFsQm91bmQoZituLG4sZix2KTtmb3IobGV0IGU9aDtlPD1fO2UrPTIpe289ZT09PWh8fGU8XyYmY1tlLTFdPj1jW2UrMV0/Y1tlKzFdLTE6Y1tlLTFdLHM9by0oZS1mKS1TO2Zvcih2YXIgQT1vO28+aSYmcz5tJiZ0aGlzLkVsZW1lbnRzQXJlRXF1YWwobyxzKTspby0tLHMtLTtpZihjW2VdPW8sTCYmTWF0aC5hYnMoZS1kKTw9biYmbzw9dVtlXSlyZXR1cm4gYlswXT1vLHBbMF09cyxBPj11W2VdJiZuPD0xNDQ4P3RoaXMuV0FMS1RSQUNFKGQsbCx3LHksZixoLF8sUyx1LGMsbyxhLGIscyxnLHAsTCxDKTpudWxsfWlmKG48PTE0NDcpe2xldCBlPW5ldyBJbnQzMkFycmF5KHctbCsyKTtlWzBdPWQtbCsxLE5lLkNvcHkyKHUsbCxlLDEsdy1sKzEpLHRoaXMubV9mb3J3YXJkSGlzdG9yeS5wdXNoKGUpLChlPW5ldyBJbnQzMkFycmF5KF8taCsyKSlbMF09Zi1oKzEsTmUuQ29weTIoYyxoLGUsMSxfLWgrMSksdGhpcy5tX3JldmVyc2VIaXN0b3J5LnB1c2goZSl9fXJldHVybiB0aGlzLldBTEtUUkFDRShkLGwsdyx5LGYsaCxfLFMsdSxjLG8sYSxiLHMsZyxwLEwsQyl9UHJldHRpZnlDaGFuZ2VzKGEpe2ZvcihsZXQgZT0wO2U8YS5sZW5ndGg7ZSsrKXtjb25zdCB0PWFbZV07Zm9yKHZhciBjPWU8YS5sZW5ndGgtMT9hW2UrMV0ub3JpZ2luYWxTdGFydDp0aGlzLl9vcmlnaW5hbEVsZW1lbnRzT3JIYXNoLmxlbmd0aCxkPWU8YS5sZW5ndGgtMT9hW2UrMV0ubW9kaWZpZWRTdGFydDp0aGlzLl9tb2RpZmllZEVsZW1lbnRzT3JIYXNoLmxlbmd0aCxmPTA8dC5vcmlnaW5hbExlbmd0aCxtPTA8dC5tb2RpZmllZExlbmd0aDt0Lm9yaWdpbmFsU3RhcnQrdC5vcmlnaW5hbExlbmd0aDxjJiZ0Lm1vZGlmaWVkU3RhcnQrdC5tb2RpZmllZExlbmd0aDxkJiYoIWZ8fHRoaXMuT3JpZ2luYWxFbGVtZW50c0FyZUVxdWFsKHQub3JpZ2luYWxTdGFydCx0Lm9yaWdpbmFsU3RhcnQrdC5vcmlnaW5hbExlbmd0aCkpJiYoIW18fHRoaXMuTW9kaWZpZWRFbGVtZW50c0FyZUVxdWFsKHQubW9kaWZpZWRTdGFydCx0Lm1vZGlmaWVkU3RhcnQrdC5tb2RpZmllZExlbmd0aCkpOyl7dmFyIGc9dGhpcy5FbGVtZW50c0FyZVN0cmljdEVxdWFsKHQub3JpZ2luYWxTdGFydCx0Lm1vZGlmaWVkU3RhcnQpO2lmKHRoaXMuRWxlbWVudHNBcmVTdHJpY3RFcXVhbCh0Lm9yaWdpbmFsU3RhcnQrdC5vcmlnaW5hbExlbmd0aCx0Lm1vZGlmaWVkU3RhcnQrdC5tb2RpZmllZExlbmd0aCkmJiFnKWJyZWFrO3Qub3JpZ2luYWxTdGFydCsrLHQubW9kaWZpZWRTdGFydCsrfXZhciBiPVtudWxsXTtlPGEubGVuZ3RoLTEmJnRoaXMuQ2hhbmdlc092ZXJsYXAoYVtlXSxhW2UrMV0sYikmJihhW2VdPWJbMF0sYS5zcGxpY2UoZSsxLDEpLGUtLSl9Zm9yKGxldCBlPWEubGVuZ3RoLTE7MDw9ZTtlLS0pe2NvbnN0IGg9YVtlXTtsZXQgdD0wLHI9MDswPGUmJihsPWFbZS0xXSx0PWwub3JpZ2luYWxTdGFydCtsLm9yaWdpbmFsTGVuZ3RoLHI9bC5tb2RpZmllZFN0YXJ0K2wubW9kaWZpZWRMZW5ndGgpO3ZhciBwPTA8aC5vcmlnaW5hbExlbmd0aCxDPTA8aC5tb2RpZmllZExlbmd0aDtsZXQgbj0wLGk9dGhpcy5fYm91bmRhcnlTY29yZShoLm9yaWdpbmFsU3RhcnQsaC5vcmlnaW5hbExlbmd0aCxoLm1vZGlmaWVkU3RhcnQsaC5tb2RpZmllZExlbmd0aCk7Zm9yKGxldCBlPTE7O2UrKyl7dmFyIG89aC5vcmlnaW5hbFN0YXJ0LWUscz1oLm1vZGlmaWVkU3RhcnQtZTtpZihvPHR8fHM8cilicmVhaztpZihwJiYhdGhpcy5PcmlnaW5hbEVsZW1lbnRzQXJlRXF1YWwobyxvK2gub3JpZ2luYWxMZW5ndGgpKWJyZWFrO2lmKEMmJiF0aGlzLk1vZGlmaWVkRWxlbWVudHNBcmVFcXVhbChzLHMraC5tb2RpZmllZExlbmd0aCkpYnJlYWs7bz0obz09PXQmJnM9PT1yPzU6MCkrdGhpcy5fYm91bmRhcnlTY29yZShvLGgub3JpZ2luYWxMZW5ndGgscyxoLm1vZGlmaWVkTGVuZ3RoKTtvPmkmJihpPW8sbj1lKX1oLm9yaWdpbmFsU3RhcnQtPW4saC5tb2RpZmllZFN0YXJ0LT1uO3ZhciBsPVtudWxsXTswPGUmJnRoaXMuQ2hhbmdlc092ZXJsYXAoYVtlLTFdLGFbZV0sbCkmJihhW2UtMV09bFswXSxhLnNwbGljZShlLDEpLGUrKyl9aWYodGhpcy5faGFzU3RyaW5ncylmb3IobGV0IGU9MSx0PWEubGVuZ3RoO2U8dDtlKyspe2NvbnN0IGk9YVtlLTFdLHU9YVtlXTt2YXIgdz11Lm9yaWdpbmFsU3RhcnQtaS5vcmlnaW5hbFN0YXJ0LWkub3JpZ2luYWxMZW5ndGgsXz1pLm9yaWdpbmFsU3RhcnQsdj11Lm9yaWdpbmFsU3RhcnQrdS5vcmlnaW5hbExlbmd0aCxyPXYtXyxuPWkubW9kaWZpZWRTdGFydCx5PXUubW9kaWZpZWRTdGFydCt1Lm1vZGlmaWVkTGVuZ3RoLFM9eS1uO3c8NSYmcjwyMCYmUzwyMCYmKChfPXRoaXMuX2ZpbmRCZXR0ZXJDb250aWd1b3VzU2VxdWVuY2UoXyxyLG4sUyx3KSkmJihbcixuXT1fLHI9PT1pLm9yaWdpbmFsU3RhcnQraS5vcmlnaW5hbExlbmd0aCYmbj09PWkubW9kaWZpZWRTdGFydCtpLm1vZGlmaWVkTGVuZ3RofHwoaS5vcmlnaW5hbExlbmd0aD1yLWkub3JpZ2luYWxTdGFydCxpLm1vZGlmaWVkTGVuZ3RoPW4taS5tb2RpZmllZFN0YXJ0LHUub3JpZ2luYWxTdGFydD1yK3csdS5tb2RpZmllZFN0YXJ0PW4rdyx1Lm9yaWdpbmFsTGVuZ3RoPXYtdS5vcmlnaW5hbFN0YXJ0LHUubW9kaWZpZWRMZW5ndGg9eS11Lm1vZGlmaWVkU3RhcnQpKSl9cmV0dXJuIGF9X2ZpbmRCZXR0ZXJDb250aWd1b3VzU2VxdWVuY2UoZSx0LHIsbixpKXtpZih0PGl8fG48aSlyZXR1cm4gbnVsbDt2YXIgYT1lK3QtaSsxLHU9cituLWkrMTtsZXQgbz0wLHM9MCxsPTA7Zm9yKGxldCB0PWU7dDxhO3QrKylmb3IobGV0IGU9cjtlPHU7ZSsrKXt2YXIgaD10aGlzLl9jb250aWd1b3VzU2VxdWVuY2VTY29yZSh0LGUsaSk7MDxoJiZoPm8mJihvPWgscz10LGw9ZSl9cmV0dXJuIDA8bz9bcyxsXTpudWxsfV9jb250aWd1b3VzU2VxdWVuY2VTY29yZSh0LHIsbil7bGV0IGk9MDtmb3IobGV0IGU9MDtlPG47ZSsrKXtpZighdGhpcy5FbGVtZW50c0FyZUVxdWFsKHQrZSxyK2UpKXJldHVybiAwO2krPXRoaXMuX29yaWdpbmFsU3RyaW5nRWxlbWVudHNbdCtlXS5sZW5ndGh9cmV0dXJuIGl9X09yaWdpbmFsSXNCb3VuZGFyeShlKXtyZXR1cm4gZTw9MHx8ZT49dGhpcy5fb3JpZ2luYWxFbGVtZW50c09ySGFzaC5sZW5ndGgtMXx8dGhpcy5faGFzU3RyaW5ncyYmL15ccyokLy50ZXN0KHRoaXMuX29yaWdpbmFsU3RyaW5nRWxlbWVudHNbZV0pfV9PcmlnaW5hbFJlZ2lvbklzQm91bmRhcnkoZSx0KXtpZih0aGlzLl9PcmlnaW5hbElzQm91bmRhcnkoZSl8fHRoaXMuX09yaWdpbmFsSXNCb3VuZGFyeShlLTEpKXJldHVybiEwO2lmKDA8dCl7ZT1lK3Q7aWYodGhpcy5fT3JpZ2luYWxJc0JvdW5kYXJ5KGUtMSl8fHRoaXMuX09yaWdpbmFsSXNCb3VuZGFyeShlKSlyZXR1cm4hMH1yZXR1cm4hMX1fTW9kaWZpZWRJc0JvdW5kYXJ5KGUpe3JldHVybiBlPD0wfHxlPj10aGlzLl9tb2RpZmllZEVsZW1lbnRzT3JIYXNoLmxlbmd0aC0xfHx0aGlzLl9oYXNTdHJpbmdzJiYvXlxzKiQvLnRlc3QodGhpcy5fbW9kaWZpZWRTdHJpbmdFbGVtZW50c1tlXSl9X01vZGlmaWVkUmVnaW9uSXNCb3VuZGFyeShlLHQpe2lmKHRoaXMuX01vZGlmaWVkSXNCb3VuZGFyeShlKXx8dGhpcy5fTW9kaWZpZWRJc0JvdW5kYXJ5KGUtMSkpcmV0dXJuITA7aWYoMDx0KXtlPWUrdDtpZih0aGlzLl9Nb2RpZmllZElzQm91bmRhcnkoZS0xKXx8dGhpcy5fTW9kaWZpZWRJc0JvdW5kYXJ5KGUpKXJldHVybiEwfXJldHVybiExfV9ib3VuZGFyeVNjb3JlKGUsdCxyLG4pe3JldHVybih0aGlzLl9PcmlnaW5hbFJlZ2lvbklzQm91bmRhcnkoZSx0KT8xOjApKyh0aGlzLl9Nb2RpZmllZFJlZ2lvbklzQm91bmRhcnkocixuKT8xOjApfUNvbmNhdGVuYXRlQ2hhbmdlcyhlLHQpe3ZhciByPVtdO2lmKDA9PT1lLmxlbmd0aHx8MD09PXQubGVuZ3RoKXJldHVybiAwPHQubGVuZ3RoP3Q6ZTtpZih0aGlzLkNoYW5nZXNPdmVybGFwKGVbZS5sZW5ndGgtMV0sdFswXSxyKSl7Y29uc3Qgbj1uZXcgQXJyYXkoZS5sZW5ndGgrdC5sZW5ndGgtMSk7cmV0dXJuIE5lLkNvcHkoZSwwLG4sMCxlLmxlbmd0aC0xKSxuW2UubGVuZ3RoLTFdPXJbMF0sTmUuQ29weSh0LDEsbixlLmxlbmd0aCx0Lmxlbmd0aC0xKSxufXJldHVybiByPW5ldyBBcnJheShlLmxlbmd0aCt0Lmxlbmd0aCksTmUuQ29weShlLDAsciwwLGUubGVuZ3RoKSxOZS5Db3B5KHQsMCxyLGUubGVuZ3RoLHQubGVuZ3RoKSxyfUNoYW5nZXNPdmVybGFwKHIsbixpKXtpZihMZS5Bc3NlcnQoci5vcmlnaW5hbFN0YXJ0PD1uLm9yaWdpbmFsU3RhcnQsIkxlZnQgY2hhbmdlIGlzIG5vdCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gcmlnaHQgY2hhbmdlIiksTGUuQXNzZXJ0KHIubW9kaWZpZWRTdGFydDw9bi5tb2RpZmllZFN0YXJ0LCJMZWZ0IGNoYW5nZSBpcyBub3QgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHJpZ2h0IGNoYW5nZSIpLHIub3JpZ2luYWxTdGFydCtyLm9yaWdpbmFsTGVuZ3RoPj1uLm9yaWdpbmFsU3RhcnR8fHIubW9kaWZpZWRTdGFydCtyLm1vZGlmaWVkTGVuZ3RoPj1uLm1vZGlmaWVkU3RhcnQpe3ZhciBhPXIub3JpZ2luYWxTdGFydDtsZXQgZT1yLm9yaWdpbmFsTGVuZ3RoO3ZhciBvPXIubW9kaWZpZWRTdGFydDtsZXQgdD1yLm1vZGlmaWVkTGVuZ3RoO3JldHVybiByLm9yaWdpbmFsU3RhcnQrci5vcmlnaW5hbExlbmd0aD49bi5vcmlnaW5hbFN0YXJ0JiYoZT1uLm9yaWdpbmFsU3RhcnQrbi5vcmlnaW5hbExlbmd0aC1yLm9yaWdpbmFsU3RhcnQpLHIubW9kaWZpZWRTdGFydCtyLm1vZGlmaWVkTGVuZ3RoPj1uLm1vZGlmaWVkU3RhcnQmJih0PW4ubW9kaWZpZWRTdGFydCtuLm1vZGlmaWVkTGVuZ3RoLXIubW9kaWZpZWRTdGFydCksaVswXT1uZXcgdmUoYSxlLG8sdCksITB9cmV0dXJuIGlbMF09bnVsbCwhMX1DbGlwRGlhZ29uYWxCb3VuZChlLHQscixuKXtpZigwPD1lJiZlPG4pcmV0dXJuIGU7dD10JTI9PTA7cmV0dXJuIGU8MD90PT0ociUyPT0wKT8wOjE6dD09KChuLXItMSklMj09MCk/bi0xOm4tMn19bGV0IGtlO2lmKHZvaWQgMCE9PVAudnNjb2RlJiZ2b2lkIDAhPT1QLnZzY29kZS5wcm9jZXNzKXtjb25zdCBzbj1QLnZzY29kZS5wcm9jZXNzO2tlPXtnZXQgcGxhdGZvcm0oKXtyZXR1cm4gc24ucGxhdGZvcm19LGdldCBhcmNoKCl7cmV0dXJuIHNuLmFyY2h9LGdldCBlbnYoKXtyZXR1cm4gc24uZW52fSxjd2QoKXtyZXR1cm4gc24uY3dkKCl9fX1lbHNlIGtlPSJ1bmRlZmluZWQiIT10eXBlb2YgcHJvY2Vzcz97Z2V0IHBsYXRmb3JtKCl7cmV0dXJuIHByb2Nlc3MucGxhdGZvcm19LGdldCBhcmNoKCl7cmV0dXJuIHByb2Nlc3MuYXJjaH0sZ2V0IGVudigpe3JldHVybiBwcm9jZXNzLmVudn0sY3dkKCl7cmV0dXJuIHByb2Nlc3MuZW52LlZTQ09ERV9DV0R8fHByb2Nlc3MuY3dkKCl9fTp7Z2V0IHBsYXRmb3JtKCl7cmV0dXJuIEk/IndpbjMyIjpWPyJkYXJ3aW4iOiJsaW51eCJ9LGdldCBhcmNoKCl7fSxnZXQgZW52KCl7cmV0dXJue319LGN3ZCgpe3JldHVybiIvIn19O2NvbnN0IHhlPWtlLmN3ZCxNZT1rZS5lbnY7dmFyIFBlLEtlLHQ9a2UucGxhdGZvcm07Y2xhc3MgUmUgZXh0ZW5kcyBFcnJvcntjb25zdHJ1Y3RvcihlLHQscil7bGV0IG47InN0cmluZyI9PXR5cGVvZiB0JiYwPT09dC5pbmRleE9mKCJub3QgIik/KG49Im11c3Qgbm90IGJlIix0PXQucmVwbGFjZSgvXm5vdCAvLCIiKSk6bj0ibXVzdCBiZSI7dmFyIGk9LTEhPT1lLmluZGV4T2YoIi4iKT8icHJvcGVydHkiOiJhcmd1bWVudCIsZT1gVGhlICIke2V9IiAke2l9ICR7bn0gb2YgdHlwZSBgK3Q7c3VwZXIoZSs9Ii4gUmVjZWl2ZWQgdHlwZSAiK3R5cGVvZiByKSx0aGlzLmNvZGU9IkVSUl9JTlZBTElEX0FSR19UWVBFIn19ZnVuY3Rpb24gRGUoZSx0KXtpZigic3RyaW5nIiE9dHlwZW9mIGUpdGhyb3cgbmV3IFJlKHQsInN0cmluZyIsZSl9ZnVuY3Rpb24gZChlKXtyZXR1cm4gNDc9PT1lfHw5Mj09PWV9ZnVuY3Rpb24gSWUoZSl7cmV0dXJuIDQ3PT09ZX1mdW5jdGlvbiBWZShlKXtyZXR1cm4gNjU8PWUmJmU8PTkwfHw5Nzw9ZSYmZTw9MTIyfWZ1bmN0aW9uIE9lKHQscixuLGkpe2xldCBhPSIiLG89MCxzPS0xLGw9MCxoPTA7Zm9yKGxldCBlPTA7ZTw9dC5sZW5ndGg7KytlKXtpZihlPHQubGVuZ3RoKWg9dC5jaGFyQ29kZUF0KGUpO2Vsc2V7aWYoaShoKSlicmVhaztoPTQ3fWlmKGkoaCkpe2lmKHMhPT1lLTEmJjEhPT1sKWlmKDI9PT1sKXtpZihhLmxlbmd0aDwyfHwyIT09b3x8NDYhPT1hLmNoYXJDb2RlQXQoYS5sZW5ndGgtMSl8fDQ2IT09YS5jaGFyQ29kZUF0KGEubGVuZ3RoLTIpKXtpZigyPGEubGVuZ3RoKXt2YXIgdT1hLmxhc3RJbmRleE9mKG4pO289LTE9PT11PyhhPSIiLDApOihhPWEuc2xpY2UoMCx1KSkubGVuZ3RoLTEtYS5sYXN0SW5kZXhPZihuKSxzPWUsbD0wO2NvbnRpbnVlfWlmKDAhPT1hLmxlbmd0aCl7YT0iIixvPTAscz1lLGw9MDtjb250aW51ZX19ciYmKGErPTA8YS5sZW5ndGg/bisiLi4iOiIuLiIsbz0yKX1lbHNlIDA8YS5sZW5ndGg/YSs9IiIrbit0LnNsaWNlKHMrMSxlKTphPXQuc2xpY2UocysxLGUpLG89ZS1zLTE7cz1lLGw9MH1lbHNlIDQ2PT09aCYmLTEhPT1sPysrbDpsPS0xfXJldHVybiBhfWZ1bmN0aW9uIEZlKGUsdCl7aWYobnVsbD09PXR8fCJvYmplY3QiIT10eXBlb2YgdCl0aHJvdyBuZXcgUmUoInBhdGhPYmplY3QiLCJPYmplY3QiLHQpO3ZhciByPXQuZGlyfHx0LnJvb3Qsbj10LmJhc2V8fCIiKyh0Lm5hbWV8fCIiKSsodC5leHR8fCIiKTtyZXR1cm4gcj9yPT09dC5yb290PyIiK3IrbjoiIityK2UrbjpufWNvbnN0IFRlPXtyZXNvbHZlKC4uLmEpe2xldCBvPSIiLHM9IiIsbD0hMTtmb3IobGV0IHQ9YS5sZW5ndGgtMTstMTw9dDt0LS0pe2xldCByO2lmKDA8PXQpe2lmKERlKHI9YVt0XSwicGF0aCIpLDA9PT1yLmxlbmd0aCljb250aW51ZX1lbHNlIDA9PT1vLmxlbmd0aD9yPXhlKCk6KHZvaWQgMD09PShyPU1lWyI9IitvXXx8eGUoKSl8fHIuc2xpY2UoMCwyKS50b0xvd2VyQ2FzZSgpIT09by50b0xvd2VyQ2FzZSgpJiY5Mj09PXIuY2hhckNvZGVBdCgyKSkmJihyPW8rIlxcIik7dmFyIGg9ci5sZW5ndGg7bGV0IG49MCxpPSIiLGU9ITE7dmFyIHU9ci5jaGFyQ29kZUF0KDApO2lmKDE9PT1oKWQodSkmJihuPTEsZT0hMCk7ZWxzZSBpZihkKHUpKWlmKGU9ITAsZChyLmNoYXJDb2RlQXQoMSkpKXtsZXQgZT0yLHQ9ZTtmb3IoO2U8aCYmIWQoci5jaGFyQ29kZUF0KGUpKTspZSsrO2lmKGU8aCYmZSE9PXQpe3ZhciBjPXIuc2xpY2UodCxlKTtmb3IodD1lO2U8aCYmZChyLmNoYXJDb2RlQXQoZSkpOyllKys7aWYoZTxoJiZlIT09dCl7Zm9yKHQ9ZTtlPGgmJiFkKHIuY2hhckNvZGVBdChlKSk7KWUrKztlIT09aCYmZT09PXR8fChpPWBcXFxcJHtjfVxcYCtyLnNsaWNlKHQsZSksbj1lKX19fWVsc2Ugbj0xO2Vsc2UgVmUodSkmJjU4PT09ci5jaGFyQ29kZUF0KDEpJiYoaT1yLnNsaWNlKDAsMiksKG49Mik8aCYmZChyLmNoYXJDb2RlQXQoMikpJiYoZT0hMCxuPTMpKTtpZigwPGkubGVuZ3RoKWlmKDA8by5sZW5ndGgpe2lmKGkudG9Mb3dlckNhc2UoKSE9PW8udG9Mb3dlckNhc2UoKSljb250aW51ZX1lbHNlIG89aTtpZihsKXtpZigwPG8ubGVuZ3RoKWJyZWFrfWVsc2UgaWYocz1yLnNsaWNlKG4pKyJcXCIrcywobD1lKSYmMDxvLmxlbmd0aClicmVha31yZXR1cm4gcz1PZShzLCFsLCJcXCIsZCksbD9vKyJcXCIrczoiIitvK3N8fCIuIn0sbm9ybWFsaXplKHIpe0RlKHIsInBhdGgiKTt2YXIgbj1yLmxlbmd0aDtpZigwPT09bilyZXR1cm4iLiI7bGV0IGk9MCxhLGU9ITE7dmFyIHQ9ci5jaGFyQ29kZUF0KDApO2lmKDE9PT1uKXJldHVybiBJZSh0KT8iXFwiOnI7aWYoZCh0KSlpZihlPSEwLGQoci5jaGFyQ29kZUF0KDEpKSl7bGV0IGU9Mix0PWU7Zm9yKDtlPG4mJiFkKHIuY2hhckNvZGVBdChlKSk7KWUrKztpZihlPG4mJmUhPT10KXt2YXIgbz1yLnNsaWNlKHQsZSk7Zm9yKHQ9ZTtlPG4mJmQoci5jaGFyQ29kZUF0KGUpKTspZSsrO2lmKGU8biYmZSE9PXQpe2Zvcih0PWU7ZTxuJiYhZChyLmNoYXJDb2RlQXQoZSkpOyllKys7aWYoZT09PW4pcmV0dXJuYFxcXFwke299XFwke3Iuc2xpY2UodCl9XFxgO2UhPT10JiYoYT1gXFxcXCR7b31cXGArci5zbGljZSh0LGUpLGk9ZSl9fX1lbHNlIGk9MTtlbHNlIFZlKHQpJiY1OD09PXIuY2hhckNvZGVBdCgxKSYmKGE9ci5zbGljZSgwLDIpLChpPTIpPG4mJmQoci5jaGFyQ29kZUF0KDIpKSYmKGU9ITAsaT0zKSk7bGV0IHM9aTxuP09lKHIuc2xpY2UoaSksIWUsIlxcIixkKToiIjtyZXR1cm4gMDwocz0wIT09cy5sZW5ndGh8fGU/czoiLiIpLmxlbmd0aCYmZChyLmNoYXJDb2RlQXQobi0xKSkmJihzKz0iXFwiKSx2b2lkIDA9PT1hP2U/IlxcIitzOnM6ZT9hKyJcXCIrczoiIithK3N9LGlzQWJzb2x1dGUoZSl7RGUoZSwicGF0aCIpO3ZhciB0PWUubGVuZ3RoO2lmKDA9PT10KXJldHVybiExO3ZhciByPWUuY2hhckNvZGVBdCgwKTtyZXR1cm4gZChyKXx8Mjx0JiZWZShyKSYmNTg9PT1lLmNoYXJDb2RlQXQoMSkmJmQoZS5jaGFyQ29kZUF0KDIpKX0sam9pbiguLi50KXtpZigwPT09dC5sZW5ndGgpcmV0dXJuIi4iO2xldCByLG47Zm9yKGxldCBlPTA7ZTx0Lmxlbmd0aDsrK2Upe3ZhciBpPXRbZV07RGUoaSwicGF0aCIpLDA8aS5sZW5ndGgmJih2b2lkIDA9PT1yP3I9bj1pOnIrPSJcXCIraSl9aWYodm9pZCAwPT09cilyZXR1cm4iLiI7bGV0IGU9ITAsYT0wO3ZhciBvO2lmKCJzdHJpbmciPT10eXBlb2YgbiYmZChuLmNoYXJDb2RlQXQoMCkpJiYoKythLDE8KG89bi5sZW5ndGgpJiZkKG4uY2hhckNvZGVBdCgxKSkmJigrK2EsMjxvJiYoZChuLmNoYXJDb2RlQXQoMikpPysrYTplPSExKSkpLGUpe2Zvcig7YTxyLmxlbmd0aCYmZChyLmNoYXJDb2RlQXQoYSkpOylhKys7Mjw9YSYmKHI9IlxcIityLnNsaWNlKGEpKX1yZXR1cm4gVGUubm9ybWFsaXplKHIpfSxyZWxhdGl2ZShlLHQpe2lmKERlKGUsImZyb20iKSxEZSh0LCJ0byIpLGU9PT10KXJldHVybiIiO2NvbnN0IHU9VGUucmVzb2x2ZShlKSxyPVRlLnJlc29sdmUodCk7aWYodT09PXIpcmV0dXJuIiI7aWYoKGU9dS50b0xvd2VyQ2FzZSgpKT09PSh0PXIudG9Mb3dlckNhc2UoKSkpcmV0dXJuIiI7bGV0IG49MDtmb3IoO248ZS5sZW5ndGgmJjkyPT09ZS5jaGFyQ29kZUF0KG4pOyluKys7bGV0IGk9ZS5sZW5ndGg7Zm9yKDtpLTE+biYmOTI9PT1lLmNoYXJDb2RlQXQoaS0xKTspaS0tO3ZhciBjPWktbjtsZXQgYT0wO2Zvcig7YTx0Lmxlbmd0aCYmOTI9PT10LmNoYXJDb2RlQXQoYSk7KWErKztsZXQgbz10Lmxlbmd0aDtmb3IoO28tMT5hJiY5Mj09PXQuY2hhckNvZGVBdChvLTEpOylvLS07dmFyIGQ9by1hLHM9YzxkP2M6ZDtsZXQgbD0tMSxoPTA7Zm9yKDtoPHM7aCsrKXt2YXIgZj1lLmNoYXJDb2RlQXQobitoKTtpZihmIT09dC5jaGFyQ29kZUF0KGEraCkpYnJlYWs7OTI9PT1mJiYobD1oKX1pZihoIT09cyl7aWYoLTE9PT1sKXJldHVybiByfWVsc2V7aWYoczxkKXtpZig5Mj09PXQuY2hhckNvZGVBdChhK2gpKXJldHVybiByLnNsaWNlKGEraCsxKTtpZigyPT09aClyZXR1cm4gci5zbGljZShhK2gpfXM8YyYmKDkyPT09ZS5jaGFyQ29kZUF0KG4raCk/bD1oOjI9PT1oJiYobD0zKSksLTE9PT1sJiYobD0wKX1sZXQgbT0iIjtmb3IoaD1uK2wrMTtoPD1pOysraCloIT09aSYmOTIhPT1lLmNoYXJDb2RlQXQoaCl8fChtKz0wPT09bS5sZW5ndGg/Ii4uIjoiXFwuLiIpO3JldHVybiBhKz1sLDA8bS5sZW5ndGg/IiIrbStyLnNsaWNlKGEsbyk6KDkyPT09ci5jaGFyQ29kZUF0KGEpJiYrK2Esci5zbGljZShhLG8pKX0sdG9OYW1lc3BhY2VkUGF0aChlKXtpZigic3RyaW5nIiE9dHlwZW9mIGUpcmV0dXJuIGU7aWYoMD09PWUubGVuZ3RoKXJldHVybiIiO2NvbnN0IHQ9VGUucmVzb2x2ZShlKTtpZih0Lmxlbmd0aDw9MilyZXR1cm4gZTtpZig5Mj09PXQuY2hhckNvZGVBdCgwKSl7aWYoOTI9PT10LmNoYXJDb2RlQXQoMSkpe3ZhciByPXQuY2hhckNvZGVBdCgyKTtpZig2MyE9PXImJjQ2IT09cilyZXR1cm4iXFxcXD9cXFVOQ1xcIit0LnNsaWNlKDIpfX1lbHNlIGlmKFZlKHQuY2hhckNvZGVBdCgwKSkmJjU4PT09dC5jaGFyQ29kZUF0KDEpJiY5Mj09PXQuY2hhckNvZGVBdCgyKSlyZXR1cm4iXFxcXD9cXCIrdDtyZXR1cm4gZX0sZGlybmFtZShyKXtEZShyLCJwYXRoIik7dmFyIG49ci5sZW5ndGg7aWYoMD09PW4pcmV0dXJuIi4iO2xldCBpPS0xLGE9MDt2YXIgZT1yLmNoYXJDb2RlQXQoMCk7aWYoMT09PW4pcmV0dXJuIGQoZSk/cjoiLiI7aWYoZChlKSl7aWYoaT1hPTEsZChyLmNoYXJDb2RlQXQoMSkpKXtsZXQgZT0yLHQ9ZTtmb3IoO2U8biYmIWQoci5jaGFyQ29kZUF0KGUpKTspZSsrO2lmKGU8biYmZSE9PXQpe2Zvcih0PWU7ZTxuJiZkKHIuY2hhckNvZGVBdChlKSk7KWUrKztpZihlPG4mJmUhPT10KXtmb3IodD1lO2U8biYmIWQoci5jaGFyQ29kZUF0KGUpKTspZSsrO2lmKGU9PT1uKXJldHVybiByO2UhPT10JiYoaT1hPWUrMSl9fX19ZWxzZSBWZShlKSYmNTg9PT1yLmNoYXJDb2RlQXQoMSkmJihpPTI8biYmZChyLmNoYXJDb2RlQXQoMikpPzM6MixhPWkpO2xldCB0PS0xLG89ITA7Zm9yKGxldCBlPW4tMTtlPj1hOy0tZSlpZihkKHIuY2hhckNvZGVBdChlKSkpe2lmKCFvKXt0PWU7YnJlYWt9fWVsc2Ugbz0hMTtpZigtMT09PXQpe2lmKC0xPT09aSlyZXR1cm4iLiI7dD1pfXJldHVybiByLnNsaWNlKDAsdCl9LGJhc2VuYW1lKHIsbil7dm9pZCAwIT09biYmRGUobiwiZXh0IiksRGUociwicGF0aCIpO2xldCBpPTAsYT0tMSxvPSEwLHM7aWYoMjw9ci5sZW5ndGgmJlZlKHIuY2hhckNvZGVBdCgwKSkmJjU4PT09ci5jaGFyQ29kZUF0KDEpJiYoaT0yKSx2b2lkIDAhPT1uJiYwPG4ubGVuZ3RoJiZuLmxlbmd0aDw9ci5sZW5ndGgpe2lmKG49PT1yKXJldHVybiIiO2xldCBlPW4ubGVuZ3RoLTEsdD0tMTtmb3Iocz1yLmxlbmd0aC0xO3M+PWk7LS1zKXt2YXIgbD1yLmNoYXJDb2RlQXQocyk7aWYoZChsKSl7aWYoIW8pe2k9cysxO2JyZWFrfX1lbHNlLTE9PT10JiYobz0hMSx0PXMrMSksMDw9ZSYmKGw9PT1uLmNoYXJDb2RlQXQoZSk/LTE9PS0tZSYmKGE9cyk6KGU9LTEsYT10KSl9cmV0dXJuIGk9PT1hP2E9dDotMT09PWEmJihhPXIubGVuZ3RoKSxyLnNsaWNlKGksYSl9Zm9yKHM9ci5sZW5ndGgtMTtzPj1pOy0tcylpZihkKHIuY2hhckNvZGVBdChzKSkpe2lmKCFvKXtpPXMrMTticmVha319ZWxzZS0xPT09YSYmKG89ITEsYT1zKzEpO3JldHVybi0xPT09YT8iIjpyLnNsaWNlKGksYSl9LGV4dG5hbWUodCl7RGUodCwicGF0aCIpO2xldCByPTAsbj0tMSxpPTAsYT0tMSxvPSEwLHM9MDsyPD10Lmxlbmd0aCYmNTg9PT10LmNoYXJDb2RlQXQoMSkmJlZlKHQuY2hhckNvZGVBdCgwKSkmJihyPWk9Mik7Zm9yKGxldCBlPXQubGVuZ3RoLTE7ZT49cjstLWUpe3ZhciBsPXQuY2hhckNvZGVBdChlKTtpZihkKGwpKXtpZihvKWNvbnRpbnVlO2k9ZSsxO2JyZWFrfS0xPT09YSYmKG89ITEsYT1lKzEpLDQ2PT09bD8tMT09PW4/bj1lOjEhPT1zJiYocz0xKTotMSE9PW4mJihzPS0xKX1yZXR1cm4tMT09PW58fC0xPT09YXx8MD09PXN8fDE9PT1zJiZuPT09YS0xJiZuPT09aSsxPyIiOnQuc2xpY2UobixhKX0sZm9ybWF0OkZlLmJpbmQobnVsbCwiXFwiKSxwYXJzZShyKXtEZShyLCJwYXRoIik7Y29uc3QgZT17cm9vdDoiIixkaXI6IiIsYmFzZToiIixleHQ6IiIsbmFtZToiIn07aWYoMD09PXIubGVuZ3RoKXJldHVybiBlO3ZhciBuPXIubGVuZ3RoO2xldCBpPTAsdD1yLmNoYXJDb2RlQXQoMCk7aWYoMT09PW4pcmV0dXJuIGQodCk/ZS5yb290PWUuZGlyPXI6ZS5iYXNlPWUubmFtZT1yLGU7aWYoZCh0KSl7aWYoaT0xLGQoci5jaGFyQ29kZUF0KDEpKSl7bGV0IGU9Mix0PWU7Zm9yKDtlPG4mJiFkKHIuY2hhckNvZGVBdChlKSk7KWUrKztpZihlPG4mJmUhPT10KXtmb3IodD1lO2U8biYmZChyLmNoYXJDb2RlQXQoZSkpOyllKys7aWYoZTxuJiZlIT09dCl7Zm9yKHQ9ZTtlPG4mJiFkKHIuY2hhckNvZGVBdChlKSk7KWUrKztlPT09bj9pPWU6ZSE9PXQmJihpPWUrMSl9fX19ZWxzZSBpZihWZSh0KSYmNTg9PT1yLmNoYXJDb2RlQXQoMSkpe2lmKG48PTIpcmV0dXJuIGUucm9vdD1lLmRpcj1yLGU7aWYoaT0yLGQoci5jaGFyQ29kZUF0KDIpKSl7aWYoMz09PW4pcmV0dXJuIGUucm9vdD1lLmRpcj1yLGU7aT0zfX0wPGkmJihlLnJvb3Q9ci5zbGljZSgwLGkpKTtsZXQgYT0tMSxvPWkscz0tMSx1PSEwLGw9ci5sZW5ndGgtMSxoPTA7Zm9yKDtsPj1pOy0tbCl7aWYoZCh0PXIuY2hhckNvZGVBdChsKSkpe2lmKHUpY29udGludWU7bz1sKzE7YnJlYWt9LTE9PT1zJiYodT0hMSxzPWwrMSksNDY9PT10Py0xPT09YT9hPWw6MSE9PWgmJihoPTEpOi0xIT09YSYmKGg9LTEpfXJldHVybi0xIT09cyYmKC0xPT09YXx8MD09PWh8fDE9PT1oJiZhPT09cy0xJiZhPT09bysxP2UuYmFzZT1lLm5hbWU9ci5zbGljZShvLHMpOihlLm5hbWU9ci5zbGljZShvLGEpLGUuYmFzZT1yLnNsaWNlKG8scyksZS5leHQ9ci5zbGljZShhLHMpKSksMDxvJiZvIT09aT9lLmRpcj1yLnNsaWNlKDAsby0xKTplLmRpcj1lLnJvb3QsZX0sc2VwOiJcXCIsZGVsaW1pdGVyOiI7Iix3aW4zMjpudWxsLHBvc2l4Om51bGx9LEJlPXtyZXNvbHZlKC4uLnQpe2xldCByPSIiLG49ITE7Zm9yKGxldCBlPXQubGVuZ3RoLTE7LTE8PWUmJiFuO2UtLSl7Y29uc3QgaT0wPD1lP3RbZV06eGUoKTtEZShpLCJwYXRoIiksMCE9PWkubGVuZ3RoJiYocj1pKyIvIityLG49NDc9PT1pLmNoYXJDb2RlQXQoMCkpfXJldHVybiByPU9lKHIsIW4sIi8iLEllKSxuPyIvIityOjA8ci5sZW5ndGg/cjoiLiJ9LG5vcm1hbGl6ZShlKXtpZihEZShlLCJwYXRoIiksMD09PWUubGVuZ3RoKXJldHVybiIuIjt2YXIgdD00Nz09PWUuY2hhckNvZGVBdCgwKSxyPTQ3PT09ZS5jaGFyQ29kZUF0KGUubGVuZ3RoLTEpO3JldHVybiAwPT09KGU9T2UoZSwhdCwiLyIsSWUpKS5sZW5ndGg/dD8iLyI6cj8iLi8iOiIuIjoociYmKGUrPSIvIiksdD8iLyIrZTplKX0saXNBYnNvbHV0ZShlKXtyZXR1cm4gRGUoZSwicGF0aCIpLDA8ZS5sZW5ndGgmJjQ3PT09ZS5jaGFyQ29kZUF0KDApfSxqb2luKC4uLnQpe2lmKDA9PT10Lmxlbmd0aClyZXR1cm4iLiI7bGV0IHI7Zm9yKGxldCBlPTA7ZTx0Lmxlbmd0aDsrK2Upe3ZhciBuPXRbZV07RGUobiwicGF0aCIpLDA8bi5sZW5ndGgmJih2b2lkIDA9PT1yP3I9bjpyKz0iLyIrbil9cmV0dXJuIHZvaWQgMD09PXI/Ii4iOkJlLm5vcm1hbGl6ZShyKX0scmVsYXRpdmUoZSx0KXtpZihEZShlLCJmcm9tIiksRGUodCwidG8iKSxlPT09dClyZXR1cm4iIjtpZigoZT1CZS5yZXNvbHZlKGUpKT09PSh0PUJlLnJlc29sdmUodCkpKXJldHVybiIiO3ZhciByPWUubGVuZ3RoLG49ci0xLGk9dC5sZW5ndGgtMSxhPW48aT9uOmk7bGV0IG89LTEscz0wO2Zvcig7czxhO3MrKyl7dmFyIGw9ZS5jaGFyQ29kZUF0KDErcyk7aWYobCE9PXQuY2hhckNvZGVBdCgxK3MpKWJyZWFrOzQ3PT09bCYmKG89cyl9aWYocz09PWEpaWYoYTxpKXtpZig0Nz09PXQuY2hhckNvZGVBdCgxK3MpKXJldHVybiB0LnNsaWNlKDErcysxKTtpZigwPT09cylyZXR1cm4gdC5zbGljZSgxK3MpfWVsc2UgYTxuJiYoNDc9PT1lLmNoYXJDb2RlQXQoMStzKT9vPXM6MD09PXMmJihvPTApKTtsZXQgaD0iIjtmb3Iocz0xK28rMTtzPD1yOysrcylzIT09ciYmNDchPT1lLmNoYXJDb2RlQXQocyl8fChoKz0wPT09aC5sZW5ndGg/Ii4uIjoiLy4uIik7cmV0dXJuIiIraCt0LnNsaWNlKDErbyl9LHRvTmFtZXNwYWNlZFBhdGgoZSl7cmV0dXJuIGV9LGRpcm5hbWUodCl7aWYoRGUodCwicGF0aCIpLDA9PT10Lmxlbmd0aClyZXR1cm4iLiI7dmFyIGU9NDc9PT10LmNoYXJDb2RlQXQoMCk7bGV0IHI9LTEsbj0hMDtmb3IobGV0IGU9dC5sZW5ndGgtMTsxPD1lOy0tZSlpZig0Nz09PXQuY2hhckNvZGVBdChlKSl7aWYoIW4pe3I9ZTticmVha319ZWxzZSBuPSExO3JldHVybi0xPT09cj9lPyIvIjoiLiI6ZSYmMT09PXI/Ii8vIjp0LnNsaWNlKDAscil9LGJhc2VuYW1lKHIsbil7dm9pZCAwIT09biYmRGUobiwiZXh0IiksRGUociwicGF0aCIpO2xldCBpPTAsYT0tMSxvPSEwLHM7aWYodm9pZCAwIT09biYmMDxuLmxlbmd0aCYmbi5sZW5ndGg8PXIubGVuZ3RoKXtpZihuPT09cilyZXR1cm4iIjtsZXQgZT1uLmxlbmd0aC0xLHQ9LTE7Zm9yKHM9ci5sZW5ndGgtMTswPD1zOy0tcyl7dmFyIGw9ci5jaGFyQ29kZUF0KHMpO2lmKDQ3PT09bCl7aWYoIW8pe2k9cysxO2JyZWFrfX1lbHNlLTE9PT10JiYobz0hMSx0PXMrMSksMDw9ZSYmKGw9PT1uLmNoYXJDb2RlQXQoZSk/LTE9PS0tZSYmKGE9cyk6KGU9LTEsYT10KSl9cmV0dXJuIGk9PT1hP2E9dDotMT09PWEmJihhPXIubGVuZ3RoKSxyLnNsaWNlKGksYSl9Zm9yKHM9ci5sZW5ndGgtMTswPD1zOy0tcylpZig0Nz09PXIuY2hhckNvZGVBdChzKSl7aWYoIW8pe2k9cysxO2JyZWFrfX1lbHNlLTE9PT1hJiYobz0hMSxhPXMrMSk7cmV0dXJuLTE9PT1hPyIiOnIuc2xpY2UoaSxhKX0sZXh0bmFtZSh0KXtEZSh0LCJwYXRoIik7bGV0IHI9LTEsbj0wLGk9LTEsYT0hMCxvPTA7Zm9yKGxldCBlPXQubGVuZ3RoLTE7MDw9ZTstLWUpe3ZhciBzPXQuY2hhckNvZGVBdChlKTtpZig0Nz09PXMpe2lmKGEpY29udGludWU7bj1lKzE7YnJlYWt9LTE9PT1pJiYoYT0hMSxpPWUrMSksNDY9PT1zPy0xPT09cj9yPWU6MSE9PW8mJihvPTEpOi0xIT09ciYmKG89LTEpfXJldHVybi0xPT09cnx8LTE9PT1pfHwwPT09b3x8MT09PW8mJnI9PT1pLTEmJnI9PT1uKzE/IiI6dC5zbGljZShyLGkpfSxmb3JtYXQ6RmUuYmluZChudWxsLCIvIikscGFyc2UoZSl7RGUoZSwicGF0aCIpO2NvbnN0IHQ9e3Jvb3Q6IiIsZGlyOiIiLGJhc2U6IiIsZXh0OiIiLG5hbWU6IiJ9O2lmKDA9PT1lLmxlbmd0aClyZXR1cm4gdDt2YXIgcj00Nz09PWUuY2hhckNvZGVBdCgwKTtsZXQgbixpPShuPXI/KHQucm9vdD0iLyIsMSk6MCwtMSksYT0wLG89LTEscz0hMCxsPWUubGVuZ3RoLTEsaD0wO2Zvcig7bD49bjstLWwpe3ZhciB1PWUuY2hhckNvZGVBdChsKTtpZig0Nz09PXUpe2lmKHMpY29udGludWU7YT1sKzE7YnJlYWt9LTE9PT1vJiYocz0hMSxvPWwrMSksNDY9PT11Py0xPT09aT9pPWw6MSE9PWgmJihoPTEpOi0xIT09aSYmKGg9LTEpfWlmKC0xIT09byl7Y29uc3Qgbj0wPT09YSYmcj8xOmE7LTE9PT1pfHwwPT09aHx8MT09PWgmJmk9PT1vLTEmJmk9PT1hKzE/dC5iYXNlPXQubmFtZT1lLnNsaWNlKG4sbyk6KHQubmFtZT1lLnNsaWNlKG4saSksdC5iYXNlPWUuc2xpY2UobixvKSx0LmV4dD1lLnNsaWNlKGksbykpfXJldHVybiAwPGE/dC5kaXI9ZS5zbGljZSgwLGEtMSk6ciYmKHQuZGlyPSIvIiksdH0sc2VwOiIvIixkZWxpbWl0ZXI6IjoiLHdpbjMyOm51bGwscG9zaXg6bnVsbH0scWU9KEJlLndpbjMyPVRlLndpbjMyPVRlLEJlLnBvc2l4PVRlLnBvc2l4PUJlLCgid2luMzIiPT09dD9UZTpCZSkubm9ybWFsaXplKSxVZT0oKCJ3aW4zMiI9PT10P1RlOkJlKS5yZXNvbHZlLCgid2luMzIiPT09dD9UZTpCZSkucmVsYXRpdmUsKCJ3aW4zMiI9PT10P1RlOkJlKS5kaXJuYW1lLCgid2luMzIiPT09dD9UZTpCZSkuYmFzZW5hbWUpLEhlPSgid2luMzIiPT09dD9UZTpCZSkuZXh0bmFtZSxXZT0oIndpbjMyIj09PXQ/VGU6QmUpLnNlcCx6ZT0vXlx3W1x3XGQrLi1dKiQvLGplPS9eXC8vLCRlPS9eXC9cLy87ZnVuY3Rpb24gR2UoZSx0KXtpZighZS5zY2hlbWUmJnQpdGhyb3cgbmV3IEVycm9yKGBbVXJpRXJyb3JdOiBTY2hlbWUgaXMgbWlzc2luZzoge3NjaGVtZTogIiIsIGF1dGhvcml0eTogIiR7ZS5hdXRob3JpdHl9IiwgcGF0aDogIiR7ZS5wYXRofSIsIHF1ZXJ5OiAiJHtlLnF1ZXJ5fSIsIGZyYWdtZW50OiAiJHtlLmZyYWdtZW50fSJ9YCk7aWYoZS5zY2hlbWUmJiF6ZS50ZXN0KGUuc2NoZW1lKSl0aHJvdyBuZXcgRXJyb3IoIltVcmlFcnJvcl06IFNjaGVtZSBjb250YWlucyBpbGxlZ2FsIGNoYXJhY3RlcnMuIik7aWYoZS5wYXRoKWlmKGUuYXV0aG9yaXR5KXtpZighamUudGVzdChlLnBhdGgpKXRocm93IG5ldyBFcnJvcignW1VyaUVycm9yXTogSWYgYSBVUkkgY29udGFpbnMgYW4gYXV0aG9yaXR5IGNvbXBvbmVudCwgdGhlbiB0aGUgcGF0aCBjb21wb25lbnQgbXVzdCBlaXRoZXIgYmUgZW1wdHkgb3IgYmVnaW4gd2l0aCBhIHNsYXNoICgiLyIpIGNoYXJhY3RlcicpfWVsc2UgaWYoJGUudGVzdChlLnBhdGgpKXRocm93IG5ldyBFcnJvcignW1VyaUVycm9yXTogSWYgYSBVUkkgZG9lcyBub3QgY29udGFpbiBhbiBhdXRob3JpdHkgY29tcG9uZW50LCB0aGVuIHRoZSBwYXRoIGNhbm5vdCBiZWdpbiB3aXRoIHR3byBzbGFzaCBjaGFyYWN0ZXJzICgiLy8iKScpfWNvbnN0IEplPSIvIixRZT0vXigoW146Lz8jXSs/KTopPyhcL1wvKFteLz8jXSopKT8oW14/I10qKShcPyhbXiNdKikpPygjKC4qKSk/LztjbGFzcyBZZXtjb25zdHJ1Y3RvcihlLHQscixuLGksYT0hMSl7dmFyIG87Im9iamVjdCI9PXR5cGVvZiBlPyh0aGlzLnNjaGVtZT1lLnNjaGVtZXx8IiIsdGhpcy5hdXRob3JpdHk9ZS5hdXRob3JpdHl8fCIiLHRoaXMucGF0aD1lLnBhdGh8fCIiLHRoaXMucXVlcnk9ZS5xdWVyeXx8IiIsdGhpcy5mcmFnbWVudD1lLmZyYWdtZW50fHwiIik6KHRoaXMuc2NoZW1lPShvPWEsKGU9ZSl8fG8/ZToiZmlsZSIpLHRoaXMuYXV0aG9yaXR5PXR8fCIiLHRoaXMucGF0aD1mdW5jdGlvbihlLHQpe3N3aXRjaChlKXtjYXNlImh0dHBzIjpjYXNlImh0dHAiOmNhc2UiZmlsZSI6dD90WzBdIT09SmUmJih0PUplK3QpOnQ9SmV9cmV0dXJuIHR9KHRoaXMuc2NoZW1lLHJ8fCIiKSx0aGlzLnF1ZXJ5PW58fCIiLHRoaXMuZnJhZ21lbnQ9aXx8IiIsR2UodGhpcyxhKSl9c3RhdGljIGlzVXJpKGUpe3JldHVybiBlIGluc3RhbmNlb2YgWWV8fCEhZSYmKCJzdHJpbmciPT10eXBlb2YgZS5hdXRob3JpdHkmJiJzdHJpbmciPT10eXBlb2YgZS5mcmFnbWVudCYmInN0cmluZyI9PXR5cGVvZiBlLnBhdGgmJiJzdHJpbmciPT10eXBlb2YgZS5xdWVyeSYmInN0cmluZyI9PXR5cGVvZiBlLnNjaGVtZSYmInN0cmluZyI9PXR5cGVvZiBlLmZzUGF0aCYmImZ1bmN0aW9uIj09dHlwZW9mIGUud2l0aCYmImZ1bmN0aW9uIj09dHlwZW9mIGUudG9TdHJpbmcpfWdldCBmc1BhdGgoKXtyZXR1cm4gbnQodGhpcywhMSl9d2l0aChlKXtpZighZSlyZXR1cm4gdGhpcztsZXR7c2NoZW1lOnQsYXV0aG9yaXR5OnIscGF0aDpuLHF1ZXJ5OmksZnJhZ21lbnQ6YX09ZTtyZXR1cm4gdm9pZCAwPT09dD90PXRoaXMuc2NoZW1lOm51bGw9PT10JiYodD0iIiksdm9pZCAwPT09cj9yPXRoaXMuYXV0aG9yaXR5Om51bGw9PT1yJiYocj0iIiksdm9pZCAwPT09bj9uPXRoaXMucGF0aDpudWxsPT09biYmKG49IiIpLHZvaWQgMD09PWk/aT10aGlzLnF1ZXJ5Om51bGw9PT1pJiYoaT0iIiksdm9pZCAwPT09YT9hPXRoaXMuZnJhZ21lbnQ6bnVsbD09PWEmJihhPSIiKSx0PT09dGhpcy5zY2hlbWUmJnI9PT10aGlzLmF1dGhvcml0eSYmbj09PXRoaXMucGF0aCYmaT09PXRoaXMucXVlcnkmJmE9PT10aGlzLmZyYWdtZW50P3RoaXM6bmV3IFhlKHQscixuLGksYSl9c3RhdGljIHBhcnNlKGUsdD0hMSl7ZT1RZS5leGVjKGUpO3JldHVybiBlP25ldyBYZShlWzJdfHwiIixvdChlWzRdfHwiIiksb3QoZVs1XXx8IiIpLG90KGVbN118fCIiKSxvdChlWzldfHwiIiksdCk6bmV3IFhlKCIiLCIiLCIiLCIiLCIiKX1zdGF0aWMgZmlsZShlKXtsZXQgdD0iIjt2YXIgcjtyZXR1cm4oZT1JP2UucmVwbGFjZSgvXFwvZyxKZSk6ZSlbMF09PT1KZSYmZVsxXT09PUplJiYoZT0tMT09PShyPWUuaW5kZXhPZihKZSwyKSk/KHQ9ZS5zdWJzdHJpbmcoMiksSmUpOih0PWUuc3Vic3RyaW5nKDIsciksZS5zdWJzdHJpbmcocil8fEplKSksbmV3IFhlKCJmaWxlIix0LGUsIiIsIiIpfXN0YXRpYyBmcm9tKGUpe2U9bmV3IFhlKGUuc2NoZW1lLGUuYXV0aG9yaXR5LGUucGF0aCxlLnF1ZXJ5LGUuZnJhZ21lbnQpO3JldHVybiBHZShlLCEwKSxlfXN0YXRpYyBqb2luUGF0aChlLC4uLnQpe2lmKCFlLnBhdGgpdGhyb3cgbmV3IEVycm9yKCJbVXJpRXJyb3JdOiBjYW5ub3QgY2FsbCBqb2luUGF0aCBvbiBVUkkgd2l0aG91dCBwYXRoIik7bGV0IHI7cmV0dXJuIHI9SSYmImZpbGUiPT09ZS5zY2hlbWU/WWUuZmlsZShUZS5qb2luKG50KGUsITApLC4uLnQpKS5wYXRoOkJlLmpvaW4oZS5wYXRoLC4uLnQpLGUud2l0aCh7cGF0aDpyfSl9dG9TdHJpbmcoZT0hMSl7cmV0dXJuIGl0KHRoaXMsZSl9dG9KU09OKCl7cmV0dXJuIHRoaXN9c3RhdGljIHJldml2ZShlKXtpZihlKXtpZihlIGluc3RhbmNlb2YgWWUpcmV0dXJuIGU7e2NvbnN0IHQ9bmV3IFhlKGUpO3JldHVybiB0Ll9mb3JtYXR0ZWQ9ZS5leHRlcm5hbCx0Ll9mc1BhdGg9ZS5fc2VwPT09WmU/ZS5mc1BhdGg6bnVsbCx0fX1yZXR1cm4gZX19Y29uc3QgWmU9ST8xOnZvaWQgMDtjbGFzcyBYZSBleHRlbmRzIFlle2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLl9mb3JtYXR0ZWQ9bnVsbCx0aGlzLl9mc1BhdGg9bnVsbH1nZXQgZnNQYXRoKCl7cmV0dXJuIHRoaXMuX2ZzUGF0aHx8KHRoaXMuX2ZzUGF0aD1udCh0aGlzLCExKSksdGhpcy5fZnNQYXRofXRvU3RyaW5nKGU9ITEpe3JldHVybiBlP2l0KHRoaXMsITApOih0aGlzLl9mb3JtYXR0ZWR8fCh0aGlzLl9mb3JtYXR0ZWQ9aXQodGhpcywhMSkpLHRoaXMuX2Zvcm1hdHRlZCl9dG9KU09OKCl7Y29uc3QgZT17JG1pZDoxfTtyZXR1cm4gdGhpcy5fZnNQYXRoJiYoZS5mc1BhdGg9dGhpcy5fZnNQYXRoLGUuX3NlcD1aZSksdGhpcy5fZm9ybWF0dGVkJiYoZS5leHRlcm5hbD10aGlzLl9mb3JtYXR0ZWQpLHRoaXMucGF0aCYmKGUucGF0aD10aGlzLnBhdGgpLHRoaXMuc2NoZW1lJiYoZS5zY2hlbWU9dGhpcy5zY2hlbWUpLHRoaXMuYXV0aG9yaXR5JiYoZS5hdXRob3JpdHk9dGhpcy5hdXRob3JpdHkpLHRoaXMucXVlcnkmJihlLnF1ZXJ5PXRoaXMucXVlcnkpLHRoaXMuZnJhZ21lbnQmJihlLmZyYWdtZW50PXRoaXMuZnJhZ21lbnQpLGV9fWNvbnN0IGV0PXtbNThdOiIlM0EiLDQ3OiIlMkYiLDYzOiIlM0YiLDM1OiIlMjMiLDkxOiIlNUIiLDkzOiIlNUQiLDY0OiIlNDAiLDMzOiIlMjEiLDM2OiIlMjQiLDM4OiIlMjYiLDM5OiIlMjciLDQwOiIlMjgiLDQxOiIlMjkiLDQyOiIlMkEiLDQzOiIlMkIiLDQ0OiIlMkMiLDU5OiIlM0IiLDYxOiIlM0QiLDMyOiIlMjAifTtmdW5jdGlvbiB0dCh0LHIpe2xldCBuPXZvaWQgMCxpPS0xO2ZvcihsZXQgZT0wO2U8dC5sZW5ndGg7ZSsrKXt2YXIgYT10LmNoYXJDb2RlQXQoZSk7OTc8PWEmJmE8PTEyMnx8NjU8PWEmJmE8PTkwfHw0ODw9YSYmYTw9NTd8fDQ1PT09YXx8NDY9PT1hfHw5NT09PWF8fDEyNj09PWF8fHImJjQ3PT09YT8oLTEhPT1pJiYobis9ZW5jb2RlVVJJQ29tcG9uZW50KHQuc3Vic3RyaW5nKGksZSkpLGk9LTEpLHZvaWQgMCE9PW4mJihuKz10LmNoYXJBdChlKSkpOih2b2lkIDA9PT1uJiYobj10LnN1YnN0cigwLGUpKSx2b2lkIDAhPT0oYT1ldFthXSk/KC0xIT09aSYmKG4rPWVuY29kZVVSSUNvbXBvbmVudCh0LnN1YnN0cmluZyhpLGUpKSxpPS0xKSxuKz1hKTotMT09PWkmJihpPWUpKX1yZXR1cm4tMSE9PWkmJihuKz1lbmNvZGVVUklDb21wb25lbnQodC5zdWJzdHJpbmcoaSkpKSx2b2lkIDAhPT1uP246dH1mdW5jdGlvbiBydCh0KXtsZXQgcj12b2lkIDA7Zm9yKGxldCBlPTA7ZTx0Lmxlbmd0aDtlKyspe3ZhciBuPXQuY2hhckNvZGVBdChlKTszNT09PW58fDYzPT09bj8odm9pZCAwPT09ciYmKHI9dC5zdWJzdHIoMCxlKSkscis9ZXRbbl0pOnZvaWQgMCE9PXImJihyKz10W2VdKX1yZXR1cm4gdm9pZCAwIT09cj9yOnR9ZnVuY3Rpb24gbnQoZSx0KXtsZXQgcjtyZXR1cm4gcj1lLmF1dGhvcml0eSYmMTxlLnBhdGgubGVuZ3RoJiYiZmlsZSI9PT1lLnNjaGVtZT8iLy8iK2UuYXV0aG9yaXR5K2UucGF0aDo0Nz09PWUucGF0aC5jaGFyQ29kZUF0KDApJiYoNjU8PWUucGF0aC5jaGFyQ29kZUF0KDEpJiZlLnBhdGguY2hhckNvZGVBdCgxKTw9OTB8fDk3PD1lLnBhdGguY2hhckNvZGVBdCgxKSYmZS5wYXRoLmNoYXJDb2RlQXQoMSk8PTEyMikmJjU4PT09ZS5wYXRoLmNoYXJDb2RlQXQoMik/dD9lLnBhdGguc3Vic3RyKDEpOmUucGF0aFsxXS50b0xvd2VyQ2FzZSgpK2UucGF0aC5zdWJzdHIoMik6ZS5wYXRoLHI9ST9yLnJlcGxhY2UoL1wvL2csIlxcIik6cn1mdW5jdGlvbiBpdChlLHQpe2NvbnN0IHI9dD9ydDp0dDtsZXQgbj0iIix7c2NoZW1lOmksYXV0aG9yaXR5OmEscGF0aDpvLHF1ZXJ5OnMsZnJhZ21lbnQ6bH09ZTtpZihpJiYobj1uK2krIjoiKSwhYSYmImZpbGUiIT09aXx8KG49KG4rPUplKStKZSksYSl7bGV0IGU9YS5pbmRleE9mKCJAIik7aWYoLTEhPT1lKXtjb25zdCBoPWEuc3Vic3RyKDAsZSk7YT1hLnN1YnN0cihlKzEpLC0xPT09KGU9aC5pbmRleE9mKCI6IikpP24rPXIoaCwhMSk6bj0obj1uK3IoaC5zdWJzdHIoMCxlKSwhMSkrIjoiKStyKGguc3Vic3RyKGUrMSksITEpLG4rPSJAIn1hPWEudG9Mb3dlckNhc2UoKSwtMT09PShlPWEuaW5kZXhPZigiOiIpKT9uKz1yKGEsITEpOm49KG4rPXIoYS5zdWJzdHIoMCxlKSwhMSkpK2Euc3Vic3RyKGUpfXJldHVybiBvJiYoMzw9by5sZW5ndGgmJjQ3PT09by5jaGFyQ29kZUF0KDApJiY1OD09PW8uY2hhckNvZGVBdCgyKT82NTw9KGU9by5jaGFyQ29kZUF0KDEpKSYmZTw9OTAmJihvPWAvJHtTdHJpbmcuZnJvbUNoYXJDb2RlKGUrMzIpfTpgK28uc3Vic3RyKDMpKToyPD1vLmxlbmd0aCYmNTg9PT1vLmNoYXJDb2RlQXQoMSkmJig2NTw9KGU9by5jaGFyQ29kZUF0KDApKSYmZTw9OTAmJihvPVN0cmluZy5mcm9tQ2hhckNvZGUoZSszMikrIjoiK28uc3Vic3RyKDIpKSksbis9cihvLCEwKSkscyYmKG49KG4rPSI/IikrcihzLCExKSksbj1sPyhuKz0iIyIpKyh0P2w6dHQobCwhMSkpOm59Y29uc3QgYXQ9LyglWzAtOUEtWmEtel1bMC05QS1aYS16XSkrL2c7ZnVuY3Rpb24gb3QoZSl7cmV0dXJuIGUubWF0Y2goYXQpP2UucmVwbGFjZShhdCxlPT5mdW5jdGlvbiB0KHIpe3RyeXtyZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KHIpfWNhdGNoKGUpe3JldHVybiAzPHIubGVuZ3RoP3Iuc3Vic3RyKDAsMykrdChyLnN1YnN0cigzKSk6cn19KGUpKTplfWNsYXNzIHN0e2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5saW5lTnVtYmVyPWUsdGhpcy5jb2x1bW49dH13aXRoKGU9dGhpcy5saW5lTnVtYmVyLHQ9dGhpcy5jb2x1bW4pe3JldHVybiBlPT09dGhpcy5saW5lTnVtYmVyJiZ0PT09dGhpcy5jb2x1bW4/dGhpczpuZXcgc3QoZSx0KX1kZWx0YShlPTAsdD0wKXtyZXR1cm4gdGhpcy53aXRoKHRoaXMubGluZU51bWJlcitlLHRoaXMuY29sdW1uK3QpfWVxdWFscyhlKXtyZXR1cm4gc3QuZXF1YWxzKHRoaXMsZSl9c3RhdGljIGVxdWFscyhlLHQpe3JldHVybiFlJiYhdHx8ISFlJiYhIXQmJmUubGluZU51bWJlcj09PXQubGluZU51bWJlciYmZS5jb2x1bW49PT10LmNvbHVtbn1pc0JlZm9yZShlKXtyZXR1cm4gc3QuaXNCZWZvcmUodGhpcyxlKX1zdGF0aWMgaXNCZWZvcmUoZSx0KXtyZXR1cm4gZS5saW5lTnVtYmVyPHQubGluZU51bWJlcnx8ISh0LmxpbmVOdW1iZXI8ZS5saW5lTnVtYmVyKSYmZS5jb2x1bW48dC5jb2x1bW59aXNCZWZvcmVPckVxdWFsKGUpe3JldHVybiBzdC5pc0JlZm9yZU9yRXF1YWwodGhpcyxlKX1zdGF0aWMgaXNCZWZvcmVPckVxdWFsKGUsdCl7cmV0dXJuIGUubGluZU51bWJlcjx0LmxpbmVOdW1iZXJ8fCEodC5saW5lTnVtYmVyPGUubGluZU51bWJlcikmJmUuY29sdW1uPD10LmNvbHVtbn1zdGF0aWMgY29tcGFyZShlLHQpe3ZhciByPTB8ZS5saW5lTnVtYmVyLG49MHx0LmxpbmVOdW1iZXI7cmV0dXJuIHIhPW4/ci1uOigwfGUuY29sdW1uKS0oMHx0LmNvbHVtbil9Y2xvbmUoKXtyZXR1cm4gbmV3IHN0KHRoaXMubGluZU51bWJlcix0aGlzLmNvbHVtbil9dG9TdHJpbmcoKXtyZXR1cm4iKCIrdGhpcy5saW5lTnVtYmVyKyIsIit0aGlzLmNvbHVtbisiKSJ9c3RhdGljIGxpZnQoZSl7cmV0dXJuIG5ldyBzdChlLmxpbmVOdW1iZXIsZS5jb2x1bW4pfXN0YXRpYyBpc0lQb3NpdGlvbihlKXtyZXR1cm4gZSYmIm51bWJlciI9PXR5cGVvZiBlLmxpbmVOdW1iZXImJiJudW1iZXIiPT10eXBlb2YgZS5jb2x1bW59fWNsYXNzIHB7Y29uc3RydWN0b3IoZSx0LHIsbil7cjxlfHxlPT09ciYmbjx0Pyh0aGlzLnN0YXJ0TGluZU51bWJlcj1yLHRoaXMuc3RhcnRDb2x1bW49bix0aGlzLmVuZExpbmVOdW1iZXI9ZSx0aGlzLmVuZENvbHVtbj10KToodGhpcy5zdGFydExpbmVOdW1iZXI9ZSx0aGlzLnN0YXJ0Q29sdW1uPXQsdGhpcy5lbmRMaW5lTnVtYmVyPXIsdGhpcy5lbmRDb2x1bW49bil9aXNFbXB0eSgpe3JldHVybiBwLmlzRW1wdHkodGhpcyl9c3RhdGljIGlzRW1wdHkoZSl7cmV0dXJuIGUuc3RhcnRMaW5lTnVtYmVyPT09ZS5lbmRMaW5lTnVtYmVyJiZlLnN0YXJ0Q29sdW1uPT09ZS5lbmRDb2x1bW59Y29udGFpbnNQb3NpdGlvbihlKXtyZXR1cm4gcC5jb250YWluc1Bvc2l0aW9uKHRoaXMsZSl9c3RhdGljIGNvbnRhaW5zUG9zaXRpb24oZSx0KXtyZXR1cm4hKHQubGluZU51bWJlcjxlLnN0YXJ0TGluZU51bWJlcnx8dC5saW5lTnVtYmVyPmUuZW5kTGluZU51bWJlcikmJighKHQubGluZU51bWJlcj09PWUuc3RhcnRMaW5lTnVtYmVyJiZ0LmNvbHVtbjxlLnN0YXJ0Q29sdW1uKSYmISh0LmxpbmVOdW1iZXI9PT1lLmVuZExpbmVOdW1iZXImJnQuY29sdW1uPmUuZW5kQ29sdW1uKSl9c3RhdGljIHN0cmljdENvbnRhaW5zUG9zaXRpb24oZSx0KXtyZXR1cm4hKHQubGluZU51bWJlcjxlLnN0YXJ0TGluZU51bWJlcnx8dC5saW5lTnVtYmVyPmUuZW5kTGluZU51bWJlcikmJighKHQubGluZU51bWJlcj09PWUuc3RhcnRMaW5lTnVtYmVyJiZ0LmNvbHVtbjw9ZS5zdGFydENvbHVtbikmJiEodC5saW5lTnVtYmVyPT09ZS5lbmRMaW5lTnVtYmVyJiZ0LmNvbHVtbj49ZS5lbmRDb2x1bW4pKX1jb250YWluc1JhbmdlKGUpe3JldHVybiBwLmNvbnRhaW5zUmFuZ2UodGhpcyxlKX1zdGF0aWMgY29udGFpbnNSYW5nZShlLHQpe3JldHVybiEodC5zdGFydExpbmVOdW1iZXI8ZS5zdGFydExpbmVOdW1iZXJ8fHQuZW5kTGluZU51bWJlcjxlLnN0YXJ0TGluZU51bWJlcikmJighKHQuc3RhcnRMaW5lTnVtYmVyPmUuZW5kTGluZU51bWJlcnx8dC5lbmRMaW5lTnVtYmVyPmUuZW5kTGluZU51bWJlcikmJighKHQuc3RhcnRMaW5lTnVtYmVyPT09ZS5zdGFydExpbmVOdW1iZXImJnQuc3RhcnRDb2x1bW48ZS5zdGFydENvbHVtbikmJiEodC5lbmRMaW5lTnVtYmVyPT09ZS5lbmRMaW5lTnVtYmVyJiZ0LmVuZENvbHVtbj5lLmVuZENvbHVtbikpKX1zdHJpY3RDb250YWluc1JhbmdlKGUpe3JldHVybiBwLnN0cmljdENvbnRhaW5zUmFuZ2UodGhpcyxlKX1zdGF0aWMgc3RyaWN0Q29udGFpbnNSYW5nZShlLHQpe3JldHVybiEodC5zdGFydExpbmVOdW1iZXI8ZS5zdGFydExpbmVOdW1iZXJ8fHQuZW5kTGluZU51bWJlcjxlLnN0YXJ0TGluZU51bWJlcikmJighKHQuc3RhcnRMaW5lTnVtYmVyPmUuZW5kTGluZU51bWJlcnx8dC5lbmRMaW5lTnVtYmVyPmUuZW5kTGluZU51bWJlcikmJighKHQuc3RhcnRMaW5lTnVtYmVyPT09ZS5zdGFydExpbmVOdW1iZXImJnQuc3RhcnRDb2x1bW48PWUuc3RhcnRDb2x1bW4pJiYhKHQuZW5kTGluZU51bWJlcj09PWUuZW5kTGluZU51bWJlciYmdC5lbmRDb2x1bW4+PWUuZW5kQ29sdW1uKSkpfXBsdXNSYW5nZShlKXtyZXR1cm4gcC5wbHVzUmFuZ2UodGhpcyxlKX1zdGF0aWMgcGx1c1JhbmdlKGUsdCl7bGV0IHIsbixpLGE7cmV0dXJuIG49dC5zdGFydExpbmVOdW1iZXI8ZS5zdGFydExpbmVOdW1iZXI/KHI9dC5zdGFydExpbmVOdW1iZXIsdC5zdGFydENvbHVtbik6dC5zdGFydExpbmVOdW1iZXI9PT1lLnN0YXJ0TGluZU51bWJlcj8ocj10LnN0YXJ0TGluZU51bWJlcixNYXRoLm1pbih0LnN0YXJ0Q29sdW1uLGUuc3RhcnRDb2x1bW4pKToocj1lLnN0YXJ0TGluZU51bWJlcixlLnN0YXJ0Q29sdW1uKSxhPXQuZW5kTGluZU51bWJlcj5lLmVuZExpbmVOdW1iZXI/KGk9dC5lbmRMaW5lTnVtYmVyLHQuZW5kQ29sdW1uKTp0LmVuZExpbmVOdW1iZXI9PT1lLmVuZExpbmVOdW1iZXI/KGk9dC5lbmRMaW5lTnVtYmVyLE1hdGgubWF4KHQuZW5kQ29sdW1uLGUuZW5kQ29sdW1uKSk6KGk9ZS5lbmRMaW5lTnVtYmVyLGUuZW5kQ29sdW1uKSxuZXcgcChyLG4saSxhKX1pbnRlcnNlY3RSYW5nZXMoZSl7cmV0dXJuIHAuaW50ZXJzZWN0UmFuZ2VzKHRoaXMsZSl9c3RhdGljIGludGVyc2VjdFJhbmdlcyhlLHQpe2xldCByPWUuc3RhcnRMaW5lTnVtYmVyLG49ZS5zdGFydENvbHVtbixpPWUuZW5kTGluZU51bWJlcixhPWUuZW5kQ29sdW1uO3ZhciBlPXQuc3RhcnRMaW5lTnVtYmVyLG89dC5zdGFydENvbHVtbixzPXQuZW5kTGluZU51bWJlcix0PXQuZW5kQ29sdW1uO3JldHVybiByPGU/KHI9ZSxuPW8pOnI9PT1lJiYobj1NYXRoLm1heChuLG8pKSxpPnM/KGk9cyxhPXQpOmk9PT1zJiYoYT1NYXRoLm1pbihhLHQpKSxyPml8fHI9PT1pJiZuPmE/bnVsbDpuZXcgcChyLG4saSxhKX1lcXVhbHNSYW5nZShlKXtyZXR1cm4gcC5lcXVhbHNSYW5nZSh0aGlzLGUpfXN0YXRpYyBlcXVhbHNSYW5nZShlLHQpe3JldHVybiEhZSYmISF0JiZlLnN0YXJ0TGluZU51bWJlcj09PXQuc3RhcnRMaW5lTnVtYmVyJiZlLnN0YXJ0Q29sdW1uPT09dC5zdGFydENvbHVtbiYmZS5lbmRMaW5lTnVtYmVyPT09dC5lbmRMaW5lTnVtYmVyJiZlLmVuZENvbHVtbj09PXQuZW5kQ29sdW1ufWdldEVuZFBvc2l0aW9uKCl7cmV0dXJuIHAuZ2V0RW5kUG9zaXRpb24odGhpcyl9c3RhdGljIGdldEVuZFBvc2l0aW9uKGUpe3JldHVybiBuZXcgc3QoZS5lbmRMaW5lTnVtYmVyLGUuZW5kQ29sdW1uKX1nZXRTdGFydFBvc2l0aW9uKCl7cmV0dXJuIHAuZ2V0U3RhcnRQb3NpdGlvbih0aGlzKX1zdGF0aWMgZ2V0U3RhcnRQb3NpdGlvbihlKXtyZXR1cm4gbmV3IHN0KGUuc3RhcnRMaW5lTnVtYmVyLGUuc3RhcnRDb2x1bW4pfXRvU3RyaW5nKCl7cmV0dXJuIlsiK3RoaXMuc3RhcnRMaW5lTnVtYmVyKyIsIit0aGlzLnN0YXJ0Q29sdW1uKyIgLT4gIit0aGlzLmVuZExpbmVOdW1iZXIrIiwiK3RoaXMuZW5kQ29sdW1uKyJdIn1zZXRFbmRQb3NpdGlvbihlLHQpe3JldHVybiBuZXcgcCh0aGlzLnN0YXJ0TGluZU51bWJlcix0aGlzLnN0YXJ0Q29sdW1uLGUsdCl9c2V0U3RhcnRQb3NpdGlvbihlLHQpe3JldHVybiBuZXcgcChlLHQsdGhpcy5lbmRMaW5lTnVtYmVyLHRoaXMuZW5kQ29sdW1uKX1jb2xsYXBzZVRvU3RhcnQoKXtyZXR1cm4gcC5jb2xsYXBzZVRvU3RhcnQodGhpcyl9c3RhdGljIGNvbGxhcHNlVG9TdGFydChlKXtyZXR1cm4gbmV3IHAoZS5zdGFydExpbmVOdW1iZXIsZS5zdGFydENvbHVtbixlLnN0YXJ0TGluZU51bWJlcixlLnN0YXJ0Q29sdW1uKX1zdGF0aWMgZnJvbVBvc2l0aW9ucyhlLHQ9ZSl7cmV0dXJuIG5ldyBwKGUubGluZU51bWJlcixlLmNvbHVtbix0LmxpbmVOdW1iZXIsdC5jb2x1bW4pfXN0YXRpYyBsaWZ0KGUpe3JldHVybiBlP25ldyBwKGUuc3RhcnRMaW5lTnVtYmVyLGUuc3RhcnRDb2x1bW4sZS5lbmRMaW5lTnVtYmVyLGUuZW5kQ29sdW1uKTpudWxsfXN0YXRpYyBpc0lSYW5nZShlKXtyZXR1cm4gZSYmIm51bWJlciI9PXR5cGVvZiBlLnN0YXJ0TGluZU51bWJlciYmIm51bWJlciI9PXR5cGVvZiBlLnN0YXJ0Q29sdW1uJiYibnVtYmVyIj09dHlwZW9mIGUuZW5kTGluZU51bWJlciYmIm51bWJlciI9PXR5cGVvZiBlLmVuZENvbHVtbn1zdGF0aWMgYXJlSW50ZXJzZWN0aW5nT3JUb3VjaGluZyhlLHQpe3JldHVybiEoZS5lbmRMaW5lTnVtYmVyPHQuc3RhcnRMaW5lTnVtYmVyfHxlLmVuZExpbmVOdW1iZXI9PT10LnN0YXJ0TGluZU51bWJlciYmZS5lbmRDb2x1bW48dC5zdGFydENvbHVtbikmJiEodC5lbmRMaW5lTnVtYmVyPGUuc3RhcnRMaW5lTnVtYmVyfHx0LmVuZExpbmVOdW1iZXI9PT1lLnN0YXJ0TGluZU51bWJlciYmdC5lbmRDb2x1bW48ZS5zdGFydENvbHVtbil9c3RhdGljIGFyZUludGVyc2VjdGluZyhlLHQpe3JldHVybiEoZS5lbmRMaW5lTnVtYmVyPHQuc3RhcnRMaW5lTnVtYmVyfHxlLmVuZExpbmVOdW1iZXI9PT10LnN0YXJ0TGluZU51bWJlciYmZS5lbmRDb2x1bW48PXQuc3RhcnRDb2x1bW4pJiYhKHQuZW5kTGluZU51bWJlcjxlLnN0YXJ0TGluZU51bWJlcnx8dC5lbmRMaW5lTnVtYmVyPT09ZS5zdGFydExpbmVOdW1iZXImJnQuZW5kQ29sdW1uPD1lLnN0YXJ0Q29sdW1uKX1zdGF0aWMgY29tcGFyZVJhbmdlc1VzaW5nU3RhcnRzKGUsdCl7dmFyIHIsbixpLGEsbyxzO3JldHVybiBlJiZ0PyhyPTB8ZS5zdGFydExpbmVOdW1iZXIpPT0obj0wfHQuc3RhcnRMaW5lTnVtYmVyKT8oaT0wfGUuc3RhcnRDb2x1bW4pPT0oYT0wfHQuc3RhcnRDb2x1bW4pPyhvPTB8ZS5lbmRMaW5lTnVtYmVyKSE9KHM9MHx0LmVuZExpbmVOdW1iZXIpP28tczooMHxlLmVuZENvbHVtbiktKDB8dC5lbmRDb2x1bW4pOmktYTpyLW46KGU/MTowKS0odD8xOjApfXN0YXRpYyBjb21wYXJlUmFuZ2VzVXNpbmdFbmRzKGUsdCl7cmV0dXJuIGUuZW5kTGluZU51bWJlcj09PXQuZW5kTGluZU51bWJlcj9lLmVuZENvbHVtbj09PXQuZW5kQ29sdW1uP2Uuc3RhcnRMaW5lTnVtYmVyPT09dC5zdGFydExpbmVOdW1iZXI/ZS5zdGFydENvbHVtbi10LnN0YXJ0Q29sdW1uOmUuc3RhcnRMaW5lTnVtYmVyLXQuc3RhcnRMaW5lTnVtYmVyOmUuZW5kQ29sdW1uLXQuZW5kQ29sdW1uOmUuZW5kTGluZU51bWJlci10LmVuZExpbmVOdW1iZXJ9c3RhdGljIHNwYW5zTXVsdGlwbGVMaW5lcyhlKXtyZXR1cm4gZS5lbmRMaW5lTnVtYmVyPmUuc3RhcnRMaW5lTnVtYmVyfX1mdW5jdGlvbiBsdChlLHQscixuKXtjb25zdCBpPW5ldyBBZShlLHQscik7cmV0dXJuIGkuQ29tcHV0ZURpZmYobil9Y2xhc3MgaHR7Y29uc3RydWN0b3Iocil7Y29uc3Qgbj1bXSxpPVtdO2ZvcihsZXQgZT0wLHQ9ci5sZW5ndGg7ZTx0O2UrKyluW2VdPW10KHJbZV0sMSksaVtlXT1ndChyW2VdLDEpO3RoaXMubGluZXM9cix0aGlzLl9zdGFydENvbHVtbnM9bix0aGlzLl9lbmRDb2x1bW5zPWl9Z2V0RWxlbWVudHMoKXtjb25zdCByPVtdO2ZvcihsZXQgZT0wLHQ9dGhpcy5saW5lcy5sZW5ndGg7ZTx0O2UrKylyW2VdPXRoaXMubGluZXNbZV0uc3Vic3RyaW5nKHRoaXMuX3N0YXJ0Q29sdW1uc1tlXS0xLHRoaXMuX2VuZENvbHVtbnNbZV0tMSk7cmV0dXJuIHJ9Z2V0U3RyaWN0RWxlbWVudChlKXtyZXR1cm4gdGhpcy5saW5lc1tlXX1nZXRTdGFydExpbmVOdW1iZXIoZSl7cmV0dXJuIGUrMX1nZXRFbmRMaW5lTnVtYmVyKGUpe3JldHVybiBlKzF9Y3JlYXRlQ2hhclNlcXVlbmNlKGUscixuKXtjb25zdCBpPVtdLGE9W10sbz1bXTtsZXQgcz0wO2ZvcihsZXQgdD1yO3Q8PW47dCsrKXtjb25zdCB1PXRoaXMubGluZXNbdF07dmFyIGw9ZT90aGlzLl9zdGFydENvbHVtbnNbdF06MSxoPWU/dGhpcy5fZW5kQ29sdW1uc1t0XTp1Lmxlbmd0aCsxO2ZvcihsZXQgZT1sO2U8aDtlKyspaVtzXT11LmNoYXJDb2RlQXQoZS0xKSxhW3NdPXQrMSxvW3NdPWUscysrfXJldHVybiBuZXcgdXQoaSxhLG8pfX1jbGFzcyB1dHtjb25zdHJ1Y3RvcihlLHQscil7dGhpcy5fY2hhckNvZGVzPWUsdGhpcy5fbGluZU51bWJlcnM9dCx0aGlzLl9jb2x1bW5zPXJ9Z2V0RWxlbWVudHMoKXtyZXR1cm4gdGhpcy5fY2hhckNvZGVzfWdldFN0YXJ0TGluZU51bWJlcihlKXtyZXR1cm4gdGhpcy5fbGluZU51bWJlcnNbZV19Z2V0U3RhcnRDb2x1bW4oZSl7cmV0dXJuIHRoaXMuX2NvbHVtbnNbZV19Z2V0RW5kTGluZU51bWJlcihlKXtyZXR1cm4gdGhpcy5fbGluZU51bWJlcnNbZV19Z2V0RW5kQ29sdW1uKGUpe3JldHVybiB0aGlzLl9jb2x1bW5zW2VdKzF9fWNsYXNzIGN0e2NvbnN0cnVjdG9yKGUsdCxyLG4saSxhLG8scyl7dGhpcy5vcmlnaW5hbFN0YXJ0TGluZU51bWJlcj1lLHRoaXMub3JpZ2luYWxTdGFydENvbHVtbj10LHRoaXMub3JpZ2luYWxFbmRMaW5lTnVtYmVyPXIsdGhpcy5vcmlnaW5hbEVuZENvbHVtbj1uLHRoaXMubW9kaWZpZWRTdGFydExpbmVOdW1iZXI9aSx0aGlzLm1vZGlmaWVkU3RhcnRDb2x1bW49YSx0aGlzLm1vZGlmaWVkRW5kTGluZU51bWJlcj1vLHRoaXMubW9kaWZpZWRFbmRDb2x1bW49c31zdGF0aWMgY3JlYXRlRnJvbURpZmZDaGFuZ2UoZSx0LHIpe2xldCBuLGksYSxvLHMsbCxoLHU7cmV0dXJuIG89MD09PWUub3JpZ2luYWxMZW5ndGg/KG49MCxpPTAsYT0wKToobj10LmdldFN0YXJ0TGluZU51bWJlcihlLm9yaWdpbmFsU3RhcnQpLGk9dC5nZXRTdGFydENvbHVtbihlLm9yaWdpbmFsU3RhcnQpLGE9dC5nZXRFbmRMaW5lTnVtYmVyKGUub3JpZ2luYWxTdGFydCtlLm9yaWdpbmFsTGVuZ3RoLTEpLHQuZ2V0RW5kQ29sdW1uKGUub3JpZ2luYWxTdGFydCtlLm9yaWdpbmFsTGVuZ3RoLTEpKSx1PTA9PT1lLm1vZGlmaWVkTGVuZ3RoPyhzPTAsbD0wLGg9MCk6KHM9ci5nZXRTdGFydExpbmVOdW1iZXIoZS5tb2RpZmllZFN0YXJ0KSxsPXIuZ2V0U3RhcnRDb2x1bW4oZS5tb2RpZmllZFN0YXJ0KSxoPXIuZ2V0RW5kTGluZU51bWJlcihlLm1vZGlmaWVkU3RhcnQrZS5tb2RpZmllZExlbmd0aC0xKSxyLmdldEVuZENvbHVtbihlLm1vZGlmaWVkU3RhcnQrZS5tb2RpZmllZExlbmd0aC0xKSksbmV3IGN0KG4saSxhLG8scyxsLGgsdSl9fWNsYXNzIGR0e2NvbnN0cnVjdG9yKGUsdCxyLG4saSl7dGhpcy5vcmlnaW5hbFN0YXJ0TGluZU51bWJlcj1lLHRoaXMub3JpZ2luYWxFbmRMaW5lTnVtYmVyPXQsdGhpcy5tb2RpZmllZFN0YXJ0TGluZU51bWJlcj1yLHRoaXMubW9kaWZpZWRFbmRMaW5lTnVtYmVyPW4sdGhpcy5jaGFyQ2hhbmdlcz1pfXN0YXRpYyBjcmVhdGVGcm9tRGlmZlJlc3VsdChlLHQsbixpLGEsdSxjKXtsZXQgcixvLHMsbCxoPXZvaWQgMDtpZihvPTA9PT10Lm9yaWdpbmFsTGVuZ3RoPyhyPW4uZ2V0U3RhcnRMaW5lTnVtYmVyKHQub3JpZ2luYWxTdGFydCktMSwwKToocj1uLmdldFN0YXJ0TGluZU51bWJlcih0Lm9yaWdpbmFsU3RhcnQpLG4uZ2V0RW5kTGluZU51bWJlcih0Lm9yaWdpbmFsU3RhcnQrdC5vcmlnaW5hbExlbmd0aC0xKSksbD0wPT09dC5tb2RpZmllZExlbmd0aD8ocz1pLmdldFN0YXJ0TGluZU51bWJlcih0Lm1vZGlmaWVkU3RhcnQpLTEsMCk6KHM9aS5nZXRTdGFydExpbmVOdW1iZXIodC5tb2RpZmllZFN0YXJ0KSxpLmdldEVuZExpbmVOdW1iZXIodC5tb2RpZmllZFN0YXJ0K3QubW9kaWZpZWRMZW5ndGgtMSkpLHUmJjA8dC5vcmlnaW5hbExlbmd0aCYmdC5vcmlnaW5hbExlbmd0aDwyMCYmMDx0Lm1vZGlmaWVkTGVuZ3RoJiZ0Lm1vZGlmaWVkTGVuZ3RoPDIwJiZhKCkpe3ZhciBkPW4uY3JlYXRlQ2hhclNlcXVlbmNlKGUsdC5vcmlnaW5hbFN0YXJ0LHQub3JpZ2luYWxTdGFydCt0Lm9yaWdpbmFsTGVuZ3RoLTEpLGY9aS5jcmVhdGVDaGFyU2VxdWVuY2UoZSx0Lm1vZGlmaWVkU3RhcnQsdC5tb2RpZmllZFN0YXJ0K3QubW9kaWZpZWRMZW5ndGgtMSk7bGV0IHI9bHQoZCxmLGEsITApLmNoYW5nZXM7YyYmKHI9ZnVuY3Rpb24ocil7aWYoci5sZW5ndGg8PTEpcmV0dXJuIHI7Y29uc3Qgbj1bclswXV07bGV0IGk9blswXTtmb3IobGV0IGU9MSx0PXIubGVuZ3RoO2U8dDtlKyspe3ZhciBhPXJbZV0sbz1hLm9yaWdpbmFsU3RhcnQtKGkub3JpZ2luYWxTdGFydCtpLm9yaWdpbmFsTGVuZ3RoKSxzPWEubW9kaWZpZWRTdGFydC0oaS5tb2RpZmllZFN0YXJ0K2kubW9kaWZpZWRMZW5ndGgpO01hdGgubWluKG8scyk8Mz8oaS5vcmlnaW5hbExlbmd0aD1hLm9yaWdpbmFsU3RhcnQrYS5vcmlnaW5hbExlbmd0aC1pLm9yaWdpbmFsU3RhcnQsaS5tb2RpZmllZExlbmd0aD1hLm1vZGlmaWVkU3RhcnQrYS5tb2RpZmllZExlbmd0aC1pLm1vZGlmaWVkU3RhcnQpOihuLnB1c2goYSksaT1hKX1yZXR1cm4gbn0ocikpLGg9W107Zm9yKGxldCBlPTAsdD1yLmxlbmd0aDtlPHQ7ZSsrKWgucHVzaChjdC5jcmVhdGVGcm9tRGlmZkNoYW5nZShyW2VdLGQsZikpfXJldHVybiBuZXcgZHQocixvLHMsbCxoKX19Y2xhc3MgZnR7Y29uc3RydWN0b3IoZSx0LHIpe3RoaXMuc2hvdWxkQ29tcHV0ZUNoYXJDaGFuZ2VzPXIuc2hvdWxkQ29tcHV0ZUNoYXJDaGFuZ2VzLHRoaXMuc2hvdWxkUG9zdFByb2Nlc3NDaGFyQ2hhbmdlcz1yLnNob3VsZFBvc3RQcm9jZXNzQ2hhckNoYW5nZXMsdGhpcy5zaG91bGRJZ25vcmVUcmltV2hpdGVzcGFjZT1yLnNob3VsZElnbm9yZVRyaW1XaGl0ZXNwYWNlLHRoaXMuc2hvdWxkTWFrZVByZXR0eURpZmY9ci5zaG91bGRNYWtlUHJldHR5RGlmZix0aGlzLm9yaWdpbmFsTGluZXM9ZSx0aGlzLm1vZGlmaWVkTGluZXM9dCx0aGlzLm9yaWdpbmFsPW5ldyBodChlKSx0aGlzLm1vZGlmaWVkPW5ldyBodCh0KSx0aGlzLmNvbnRpbnVlTGluZURpZmY9YnQoci5tYXhDb21wdXRhdGlvblRpbWUpLHRoaXMuY29udGludWVDaGFyRGlmZj1idCgwPT09ci5tYXhDb21wdXRhdGlvblRpbWU/MDpNYXRoLm1pbihyLm1heENvbXB1dGF0aW9uVGltZSw1ZTMpKX1jb21wdXRlRGlmZigpe2lmKDE9PT10aGlzLm9yaWdpbmFsLmxpbmVzLmxlbmd0aCYmMD09PXRoaXMub3JpZ2luYWwubGluZXNbMF0ubGVuZ3RoKXJldHVybiAxPT09dGhpcy5tb2RpZmllZC5saW5lcy5sZW5ndGgmJjA9PT10aGlzLm1vZGlmaWVkLmxpbmVzWzBdLmxlbmd0aD97cXVpdEVhcmx5OiExLGNoYW5nZXM6W119OntxdWl0RWFybHk6ITEsY2hhbmdlczpbe29yaWdpbmFsU3RhcnRMaW5lTnVtYmVyOjEsb3JpZ2luYWxFbmRMaW5lTnVtYmVyOjEsbW9kaWZpZWRTdGFydExpbmVOdW1iZXI6MSxtb2RpZmllZEVuZExpbmVOdW1iZXI6dGhpcy5tb2RpZmllZC5saW5lcy5sZW5ndGgsY2hhckNoYW5nZXM6W3ttb2RpZmllZEVuZENvbHVtbjowLG1vZGlmaWVkRW5kTGluZU51bWJlcjowLG1vZGlmaWVkU3RhcnRDb2x1bW46MCxtb2RpZmllZFN0YXJ0TGluZU51bWJlcjowLG9yaWdpbmFsRW5kQ29sdW1uOjAsb3JpZ2luYWxFbmRMaW5lTnVtYmVyOjAsb3JpZ2luYWxTdGFydENvbHVtbjowLG9yaWdpbmFsU3RhcnRMaW5lTnVtYmVyOjB9XX1dfTtpZigxPT09dGhpcy5tb2RpZmllZC5saW5lcy5sZW5ndGgmJjA9PT10aGlzLm1vZGlmaWVkLmxpbmVzWzBdLmxlbmd0aClyZXR1cm57cXVpdEVhcmx5OiExLGNoYW5nZXM6W3tvcmlnaW5hbFN0YXJ0TGluZU51bWJlcjoxLG9yaWdpbmFsRW5kTGluZU51bWJlcjp0aGlzLm9yaWdpbmFsLmxpbmVzLmxlbmd0aCxtb2RpZmllZFN0YXJ0TGluZU51bWJlcjoxLG1vZGlmaWVkRW5kTGluZU51bWJlcjoxLGNoYXJDaGFuZ2VzOlt7bW9kaWZpZWRFbmRDb2x1bW46MCxtb2RpZmllZEVuZExpbmVOdW1iZXI6MCxtb2RpZmllZFN0YXJ0Q29sdW1uOjAsbW9kaWZpZWRTdGFydExpbmVOdW1iZXI6MCxvcmlnaW5hbEVuZENvbHVtbjowLG9yaWdpbmFsRW5kTGluZU51bWJlcjowLG9yaWdpbmFsU3RhcnRDb2x1bW46MCxvcmlnaW5hbFN0YXJ0TGluZU51bWJlcjowfV19XX07dmFyIGU9bHQodGhpcy5vcmlnaW5hbCx0aGlzLm1vZGlmaWVkLHRoaXMuY29udGludWVMaW5lRGlmZix0aGlzLnNob3VsZE1ha2VQcmV0dHlEaWZmKSxyPWUuY2hhbmdlcyxlPWUucXVpdEVhcmx5O2lmKHRoaXMuc2hvdWxkSWdub3JlVHJpbVdoaXRlc3BhY2Upe2NvbnN0IGY9W107Zm9yKGxldCBlPTAsdD1yLmxlbmd0aDtlPHQ7ZSsrKWYucHVzaChkdC5jcmVhdGVGcm9tRGlmZlJlc3VsdCh0aGlzLnNob3VsZElnbm9yZVRyaW1XaGl0ZXNwYWNlLHJbZV0sdGhpcy5vcmlnaW5hbCx0aGlzLm1vZGlmaWVkLHRoaXMuY29udGludWVDaGFyRGlmZix0aGlzLnNob3VsZENvbXB1dGVDaGFyQ2hhbmdlcyx0aGlzLnNob3VsZFBvc3RQcm9jZXNzQ2hhckNoYW5nZXMpKTtyZXR1cm57cXVpdEVhcmx5OmUsY2hhbmdlczpmfX1jb25zdCBuPVtdO2xldCBpPTAsYT0wO2ZvcihsZXQgZT0tMSx0PXIubGVuZ3RoO2U8dDtlKyspe2Zvcih2YXIgbz1lKzE8dD9yW2UrMV06bnVsbCxjPW8/by5vcmlnaW5hbFN0YXJ0OnRoaXMub3JpZ2luYWxMaW5lcy5sZW5ndGgsZD1vP28ubW9kaWZpZWRTdGFydDp0aGlzLm1vZGlmaWVkTGluZXMubGVuZ3RoO2k8YyYmYTxkOyl7Y29uc3QgaD10aGlzLm9yaWdpbmFsTGluZXNbaV0sdT10aGlzLm1vZGlmaWVkTGluZXNbYV07aWYoaCE9PXUpe3tsZXQgZT1tdChoLDEpLHQ9bXQodSwxKTtmb3IoOzE8ZSYmMTx0Oyl7aWYoaC5jaGFyQ29kZUF0KGUtMikhPT11LmNoYXJDb2RlQXQodC0yKSlicmVhaztlLS0sdC0tfSgxPGV8fDE8dCkmJnRoaXMuX3B1c2hUcmltV2hpdGVzcGFjZUNoYXJDaGFuZ2UobixpKzEsMSxlLGErMSwxLHQpfXtsZXQgZT1ndChoLDEpLHQ9Z3QodSwxKTtmb3IodmFyIHM9aC5sZW5ndGgrMSxsPXUubGVuZ3RoKzE7ZTxzJiZ0PGw7KXtpZihoLmNoYXJDb2RlQXQoZS0xKSE9PWguY2hhckNvZGVBdCh0LTEpKWJyZWFrO2UrKyx0Kyt9KGU8c3x8dDxsKSYmdGhpcy5fcHVzaFRyaW1XaGl0ZXNwYWNlQ2hhckNoYW5nZShuLGkrMSxlLHMsYSsxLHQsbCl9fWkrKyxhKyt9byYmKG4ucHVzaChkdC5jcmVhdGVGcm9tRGlmZlJlc3VsdCh0aGlzLnNob3VsZElnbm9yZVRyaW1XaGl0ZXNwYWNlLG8sdGhpcy5vcmlnaW5hbCx0aGlzLm1vZGlmaWVkLHRoaXMuY29udGludWVDaGFyRGlmZix0aGlzLnNob3VsZENvbXB1dGVDaGFyQ2hhbmdlcyx0aGlzLnNob3VsZFBvc3RQcm9jZXNzQ2hhckNoYW5nZXMpKSxpKz1vLm9yaWdpbmFsTGVuZ3RoLGErPW8ubW9kaWZpZWRMZW5ndGgpfXJldHVybntxdWl0RWFybHk6ZSxjaGFuZ2VzOm59fV9wdXNoVHJpbVdoaXRlc3BhY2VDaGFyQ2hhbmdlKHQscixuLGksYSxvLHMpe2lmKCF0aGlzLl9tZXJnZVRyaW1XaGl0ZXNwYWNlQ2hhckNoYW5nZSh0LHIsbixpLGEsbyxzKSl7bGV0IGU9dm9pZCAwO3RoaXMuc2hvdWxkQ29tcHV0ZUNoYXJDaGFuZ2VzJiYoZT1bbmV3IGN0KHIsbixyLGksYSxvLGEscyldKSx0LnB1c2gobmV3IGR0KHIscixhLGEsZSkpfX1fbWVyZ2VUcmltV2hpdGVzcGFjZUNoYXJDaGFuZ2UoZSx0LHIsbixpLGEsbyl7dmFyIHM9ZS5sZW5ndGg7aWYoMD09PXMpcmV0dXJuITE7Y29uc3QgbD1lW3MtMV07cmV0dXJuIDAhPT1sLm9yaWdpbmFsRW5kTGluZU51bWJlciYmMCE9PWwubW9kaWZpZWRFbmRMaW5lTnVtYmVyJiYobC5vcmlnaW5hbEVuZExpbmVOdW1iZXIrMT09PXQmJmwubW9kaWZpZWRFbmRMaW5lTnVtYmVyKzE9PT1pJiYobC5vcmlnaW5hbEVuZExpbmVOdW1iZXI9dCxsLm1vZGlmaWVkRW5kTGluZU51bWJlcj1pLHRoaXMuc2hvdWxkQ29tcHV0ZUNoYXJDaGFuZ2VzJiZsLmNoYXJDaGFuZ2VzJiZsLmNoYXJDaGFuZ2VzLnB1c2gobmV3IGN0KHQscix0LG4saSxhLGksbykpLCEwKSl9fWZ1bmN0aW9uIG10KGUsdCl7ZT1mdW5jdGlvbihyKXtmb3IobGV0IGU9MCx0PXIubGVuZ3RoO2U8dDtlKyspe3ZhciBuPXIuY2hhckNvZGVBdChlKTtpZigzMiE9PW4mJjkhPT1uKXJldHVybiBlfXJldHVybi0xfShlKTtyZXR1cm4tMT09PWU/dDplKzF9ZnVuY3Rpb24gZ3QoZSx0KXtlPWZ1bmN0aW9uKHQscj10Lmxlbmd0aC0xKXtmb3IobGV0IGU9cjswPD1lO2UtLSl7dmFyIG49dC5jaGFyQ29kZUF0KGUpO2lmKDMyIT09biYmOSE9PW4pcmV0dXJuIGV9cmV0dXJuLTF9KGUpO3JldHVybi0xPT09ZT90OmUrMn1mdW5jdGlvbiBidChlKXtpZigwPT09ZSlyZXR1cm4oKT0+ITA7Y29uc3QgdD1EYXRlLm5vdygpO3JldHVybigpPT5EYXRlLm5vdygpLXQ8ZX1mdW5jdGlvbiBwdChlKXtyZXR1cm4gZTwwPzA6MjU1PGU/MjU1OjB8ZX1mdW5jdGlvbiBDdChlKXtyZXR1cm4gZTwwPzA6NDI5NDk2NzI5NTxlPzQyOTQ5NjcyOTU6MHxlfWNsYXNzIHd0e2NvbnN0cnVjdG9yKGUpe3RoaXMudmFsdWVzPWUsdGhpcy5wcmVmaXhTdW09bmV3IFVpbnQzMkFycmF5KGUubGVuZ3RoKSx0aGlzLnByZWZpeFN1bVZhbGlkSW5kZXg9bmV3IEludDMyQXJyYXkoMSksdGhpcy5wcmVmaXhTdW1WYWxpZEluZGV4WzBdPS0xfWluc2VydFZhbHVlcyhlLHQpe2U9Q3QoZSk7Y29uc3Qgcj10aGlzLnZhbHVlcyxuPXRoaXMucHJlZml4U3VtO3ZhciBpPXQubGVuZ3RoO3JldHVybiAwIT09aSYmKHRoaXMudmFsdWVzPW5ldyBVaW50MzJBcnJheShyLmxlbmd0aCtpKSx0aGlzLnZhbHVlcy5zZXQoci5zdWJhcnJheSgwLGUpLDApLHRoaXMudmFsdWVzLnNldChyLnN1YmFycmF5KGUpLGUraSksdGhpcy52YWx1ZXMuc2V0KHQsZSksZS0xPHRoaXMucHJlZml4U3VtVmFsaWRJbmRleFswXSYmKHRoaXMucHJlZml4U3VtVmFsaWRJbmRleFswXT1lLTEpLHRoaXMucHJlZml4U3VtPW5ldyBVaW50MzJBcnJheSh0aGlzLnZhbHVlcy5sZW5ndGgpLDA8PXRoaXMucHJlZml4U3VtVmFsaWRJbmRleFswXSYmdGhpcy5wcmVmaXhTdW0uc2V0KG4uc3ViYXJyYXkoMCx0aGlzLnByZWZpeFN1bVZhbGlkSW5kZXhbMF0rMSkpLCEwKX1zZXRWYWx1ZShlLHQpe3JldHVybiBlPUN0KGUpLHQ9Q3QodCksdGhpcy52YWx1ZXNbZV0hPT10JiYodGhpcy52YWx1ZXNbZV09dCxlLTE8dGhpcy5wcmVmaXhTdW1WYWxpZEluZGV4WzBdJiYodGhpcy5wcmVmaXhTdW1WYWxpZEluZGV4WzBdPWUtMSksITApfXJlbW92ZVZhbHVlcyhlLHQpe2U9Q3QoZSksdD1DdCh0KTtjb25zdCByPXRoaXMudmFsdWVzLG49dGhpcy5wcmVmaXhTdW07aWYoZT49ci5sZW5ndGgpcmV0dXJuITE7dmFyIGk9ci5sZW5ndGgtZTtyZXR1cm4gMCE9PSh0PWk8PXQ/aTp0KSYmKHRoaXMudmFsdWVzPW5ldyBVaW50MzJBcnJheShyLmxlbmd0aC10KSx0aGlzLnZhbHVlcy5zZXQoci5zdWJhcnJheSgwLGUpLDApLHRoaXMudmFsdWVzLnNldChyLnN1YmFycmF5KGUrdCksZSksdGhpcy5wcmVmaXhTdW09bmV3IFVpbnQzMkFycmF5KHRoaXMudmFsdWVzLmxlbmd0aCksZS0xPHRoaXMucHJlZml4U3VtVmFsaWRJbmRleFswXSYmKHRoaXMucHJlZml4U3VtVmFsaWRJbmRleFswXT1lLTEpLDA8PXRoaXMucHJlZml4U3VtVmFsaWRJbmRleFswXSYmdGhpcy5wcmVmaXhTdW0uc2V0KG4uc3ViYXJyYXkoMCx0aGlzLnByZWZpeFN1bVZhbGlkSW5kZXhbMF0rMSkpLCEwKX1nZXRUb3RhbFN1bSgpe3JldHVybiAwPT09dGhpcy52YWx1ZXMubGVuZ3RoPzA6dGhpcy5fZ2V0UHJlZml4U3VtKHRoaXMudmFsdWVzLmxlbmd0aC0xKX1nZXRQcmVmaXhTdW0oZSl7cmV0dXJuIGU8MD8wOihlPUN0KGUpLHRoaXMuX2dldFByZWZpeFN1bShlKSl9X2dldFByZWZpeFN1bSh0KXtpZih0PD10aGlzLnByZWZpeFN1bVZhbGlkSW5kZXhbMF0pcmV0dXJuIHRoaXMucHJlZml4U3VtW3RdO2xldCByPXRoaXMucHJlZml4U3VtVmFsaWRJbmRleFswXSsxOzA9PT1yJiYodGhpcy5wcmVmaXhTdW1bMF09dGhpcy52YWx1ZXNbMF0scisrKSx0Pj10aGlzLnZhbHVlcy5sZW5ndGgmJih0PXRoaXMudmFsdWVzLmxlbmd0aC0xKTtmb3IobGV0IGU9cjtlPD10O2UrKyl0aGlzLnByZWZpeFN1bVtlXT10aGlzLnByZWZpeFN1bVtlLTFdK3RoaXMudmFsdWVzW2VdO3JldHVybiB0aGlzLnByZWZpeFN1bVZhbGlkSW5kZXhbMF09TWF0aC5tYXgodGhpcy5wcmVmaXhTdW1WYWxpZEluZGV4WzBdLHQpLHRoaXMucHJlZml4U3VtW3RdfWdldEluZGV4T2YoZSl7ZT1NYXRoLmZsb29yKGUpLHRoaXMuZ2V0VG90YWxTdW0oKTtsZXQgdD0wLHI9dGhpcy52YWx1ZXMubGVuZ3RoLTEsbj0wO3ZhciBpO2xldCBhPTA7Zm9yKDt0PD1yOylpZihuPXQrKHItdCkvMnwwLGk9dGhpcy5wcmVmaXhTdW1bbl0sZTwoYT1pLXRoaXMudmFsdWVzW25dKSlyPW4tMTtlbHNle2lmKCEoaTw9ZSkpYnJlYWs7dD1uKzF9cmV0dXJuIG5ldyBfdChuLGUtYSl9fWNsYXNzIF90e2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5pbmRleD1lLHRoaXMucmVtYWluZGVyPXQsdGhpcy5fcHJlZml4U3VtSW5kZXhPZlJlc3VsdEJyYW5kPXZvaWQgMCx0aGlzLmluZGV4PWUsdGhpcy5yZW1haW5kZXI9dH19Y29uc3QgdnQ9ZnVuY3Rpb24oZT0iIil7bGV0IHQ9IigtP1xcZCpcXC5cXGRcXHcqKXwoW14iO2Zvcihjb25zdCByIG9mImB+IUAjJCVeJiooKS09K1t7XX1cXHw7OidcIiwuPD4vPyIpMDw9ZS5pbmRleE9mKHIpfHwodCs9IlxcIityKTtyZXR1cm4gdCs9Ilxcc10rKSIsbmV3IFJlZ0V4cCh0LCJnIil9KCk7Y29uc3QgeXQ9e21heExlbjoxZTMsd2luZG93U2l6ZToxNSx0aW1lQnVkZ2V0OjE1MH07ZnVuY3Rpb24gU3QodCxyLG4saSxhPXl0KXtpZihuLmxlbmd0aD5hLm1heExlbil7bGV0IGU9dC1hLm1heExlbi8yO3JldHVybiBlPDA/ZT0wOmkrPWUsU3QodCxyLG49bi5zdWJzdHJpbmcoZSx0K2EubWF4TGVuLzIpLGksYSl9dmFyIGM9RGF0ZS5ub3coKSxvPXQtMS1pO2xldCBzPS0xLGw9bnVsbDtmb3IobGV0IGU9MTshKERhdGUubm93KCktYz49YS50aW1lQnVkZ2V0KTtlKyspe3ZhciBoPW8tYS53aW5kb3dTaXplKmUsdT0oci5sYXN0SW5kZXg9TWF0aC5tYXgoMCxoKSxmdW5jdGlvbihlLHQscixuKXt2YXIgaTtmb3IoO2k9ZS5leGVjKHQpOyl7dmFyIGE9aS5pbmRleHx8MDtpZihhPD1yJiZlLmxhc3RJbmRleD49cilyZXR1cm4gaTtpZigwPG4mJm48YSlyZXR1cm4gbnVsbH1yZXR1cm4gbnVsbH0ocixuLG8scykpO2lmKCF1JiZsKWJyZWFrO2lmKGw9dSxoPD0wKWJyZWFrO3M9aH1yZXR1cm4gbD8odD17d29yZDpsWzBdLHN0YXJ0Q29sdW1uOmkrMStsLmluZGV4LGVuZENvbHVtbjppKzErbC5pbmRleCtsWzBdLmxlbmd0aH0sci5sYXN0SW5kZXg9MCx0KTpudWxsfWNsYXNzIEx0e2NvbnN0cnVjdG9yKGUpe2U9cHQoZSk7dGhpcy5fZGVmYXVsdFZhbHVlPWUsdGhpcy5fYXNjaWlNYXA9THQuX2NyZWF0ZUFzY2lpTWFwKGUpLHRoaXMuX21hcD1uZXcgTWFwfXN0YXRpYyBfY3JlYXRlQXNjaWlNYXAodCl7Y29uc3Qgcj1uZXcgVWludDhBcnJheSgyNTYpO2ZvcihsZXQgZT0wO2U8MjU2O2UrKylyW2VdPXQ7cmV0dXJuIHJ9c2V0KGUsdCl7dD1wdCh0KTswPD1lJiZlPDI1Nj90aGlzLl9hc2NpaU1hcFtlXT10OnRoaXMuX21hcC5zZXQoZSx0KX1nZXQoZSl7cmV0dXJuIDA8PWUmJmU8MjU2P3RoaXMuX2FzY2lpTWFwW2VdOnRoaXMuX21hcC5nZXQoZSl8fHRoaXMuX2RlZmF1bHRWYWx1ZX19Y2xhc3MgTnR7Y29uc3RydWN0b3IocixuLGkpe2NvbnN0IGE9bmV3IFVpbnQ4QXJyYXkocipuKTtmb3IobGV0IGU9MCx0PXIqbjtlPHQ7ZSsrKWFbZV09aTt0aGlzLl9kYXRhPWEsdGhpcy5yb3dzPXIsdGhpcy5jb2xzPW59Z2V0KGUsdCl7cmV0dXJuIHRoaXMuX2RhdGFbZSp0aGlzLmNvbHMrdF19c2V0KGUsdCxyKXt0aGlzLl9kYXRhW2UqdGhpcy5jb2xzK3RdPXJ9fWNsYXNzIEV0e2NvbnN0cnVjdG9yKHIpe2xldCBuPTAsaT0wO2ZvcihsZXQgZT0wLHQ9ci5sZW5ndGg7ZTx0O2UrKyl7dmFyW2EsbyxzXT1yW2VdO28+biYmKG49bykscz4oaT1hPmk/YTppKSYmKGk9cyl9bisrLGkrKztjb25zdCBsPW5ldyBOdChpLG4sMCk7Zm9yKGxldCBlPTAsdD1yLmxlbmd0aDtlPHQ7ZSsrKXt2YXJbaCx1LGNdPXJbZV07bC5zZXQoaCx1LGMpfXRoaXMuX3N0YXRlcz1sLHRoaXMuX21heENoYXJDb2RlPW59bmV4dFN0YXRlKGUsdCl7cmV0dXJuIHQ8MHx8dD49dGhpcy5fbWF4Q2hhckNvZGU/MDp0aGlzLl9zdGF0ZXMuZ2V0KGUsdCl9fWxldCBBdD1udWxsO2xldCBrdD1udWxsO2NsYXNzIHh0e3N0YXRpYyBfY3JlYXRlTGluayhlLHQscixuLGkpe2xldCBhPWktMTtkb3t2YXIgbz10LmNoYXJDb2RlQXQoYSk7aWYoMiE9PWUuZ2V0KG8pKWJyZWFrfXdoaWxlKC0tYT5uKTt2YXIgcztyZXR1cm4gMDxuJiYoaT10LmNoYXJDb2RlQXQobi0xKSxzPXQuY2hhckNvZGVBdChhKSwoNDA9PT1pJiY0MT09PXN8fDkxPT09aSYmOTM9PT1zfHwxMjM9PT1pJiYxMjU9PT1zKSYmYS0tKSx7cmFuZ2U6e3N0YXJ0TGluZU51bWJlcjpyLHN0YXJ0Q29sdW1uOm4rMSxlbmRMaW5lTnVtYmVyOnIsZW5kQ29sdW1uOmErMn0sdXJsOnQuc3Vic3RyaW5nKG4sYSsxKX19c3RhdGljIGNvbXB1dGVMaW5rcyh0LGM9QXQ9bnVsbD09PUF0P25ldyBFdChbWzEsMTA0LDJdLFsxLDcyLDJdLFsxLDEwMiw2XSxbMSw3MCw2XSxbMiwxMTYsM10sWzIsODQsM10sWzMsMTE2LDRdLFszLDg0LDRdLFs0LDExMiw1XSxbNCw4MCw1XSxbNSwxMTUsOV0sWzUsODMsOV0sWzUsNTgsMTBdLFs2LDEwNSw3XSxbNiw3Myw3XSxbNywxMDgsOF0sWzcsNzYsOF0sWzgsMTAxLDldLFs4LDY5LDldLFs5LDU4LDEwXSxbMTAsNDcsMTFdLFsxMSw0NywxMl1dKTpBdCl7Y29uc3QgZD1mdW5jdGlvbigpe2lmKG51bGw9PT1rdCl7a3Q9bmV3IEx0KDApO3ZhciB0PSIgXHQ8PidcIuOAgeOAgu+9oe+9pO+8jO+8ju+8mu+8m+KAmOOAiOOAjOOAjuOAlO+8iO+8u++9m++9ou+9o++9ne+8ve+8ieOAleOAj+OAjeOAieKAme+9gO+9nuKApiI7Zm9yKGxldCBlPTA7ZTx0Lmxlbmd0aDtlKyspa3Quc2V0KHQuY2hhckNvZGVBdChlKSwxKTtmb3IobGV0IGU9MDtlPCIuLDsiLmxlbmd0aDtlKyspa3Quc2V0KCIuLDsiLmNoYXJDb2RlQXQoZSksMil9cmV0dXJuIGt0fSgpLGY9W107Zm9yKGxldCB1PTEsZT10LmdldExpbmVDb3VudCgpO3U8PWU7dSsrKXtjb25zdCBiPXQuZ2V0TGluZUNvbnRlbnQodSk7dmFyIG09Yi5sZW5ndGg7bGV0IHI9MCxuPTAsaT0wLGE9MSxvPSExLHM9ITEsbD0hMSxoPSExO2Zvcig7cjxtOyl7bGV0IHQ9ITE7dmFyIGc9Yi5jaGFyQ29kZUF0KHIpO2lmKDEzPT09YSl7bGV0IGU7c3dpdGNoKGcpe2Nhc2UgNDA6bz0hMCxlPTA7YnJlYWs7Y2FzZSA0MTplPW8/MDoxO2JyZWFrO2Nhc2UgOTE6bD0hMCxzPSEwLGU9MDticmVhaztjYXNlIDkzOmw9ITEsZT1zPzA6MTticmVhaztjYXNlIDEyMzpoPSEwLGU9MDticmVhaztjYXNlIDEyNTplPWg/MDoxO2JyZWFrO2Nhc2UgMzk6ZT0zND09PWl8fDk2PT09aT8wOjE7YnJlYWs7Y2FzZSAzNDplPTM5PT09aXx8OTY9PT1pPzA6MTticmVhaztjYXNlIDk2OmU9Mzk9PT1pfHwzND09PWk/MDoxO2JyZWFrO2Nhc2UgNDI6ZT00Mj09PWk/MTowO2JyZWFrO2Nhc2UgMTI0OmU9MTI0PT09aT8xOjA7YnJlYWs7Y2FzZSAzMjplPWw/MDoxO2JyZWFrO2RlZmF1bHQ6ZT1kLmdldChnKX0xPT09ZSYmKGYucHVzaCh4dC5fY3JlYXRlTGluayhkLGIsdSxuLHIpKSx0PSEwKX1lbHNlIGlmKDEyPT09YSl7bGV0IGU7MT09PShlPTkxPT09Zz8ocz0hMCwwKTpkLmdldChnKSk/dD0hMDphPTEzfWVsc2UgMD09PShhPWMubmV4dFN0YXRlKGEsZykpJiYodD0hMCk7dCYmKGE9MSxvPSExLHM9ITEsaD0hMSxuPXIrMSxpPWcpLHIrK30xMz09PWEmJmYucHVzaCh4dC5fY3JlYXRlTGluayhkLGIsdSxuLG0pKX1yZXR1cm4gZn19Y2xhc3MgTXR7Y29uc3RydWN0b3IoKXt0aGlzLl9kZWZhdWx0VmFsdWVTZXQ9W1sidHJ1ZSIsImZhbHNlIl0sWyJUcnVlIiwiRmFsc2UiXSxbIlByaXZhdGUiLCJQdWJsaWMiLCJGcmllbmQiLCJSZWFkT25seSIsIlBhcnRpYWwiLCJQcm90ZWN0ZWQiLCJXcml0ZU9ubHkiXSxbInB1YmxpYyIsInByb3RlY3RlZCIsInByaXZhdGUiXV19bmF2aWdhdGVWYWx1ZVNldChlLHQscixuLGkpe2lmKGUmJnQpe3Q9dGhpcy5kb05hdmlnYXRlVmFsdWVTZXQodCxpKTtpZih0KXJldHVybntyYW5nZTplLHZhbHVlOnR9fWlmKHImJm4pe2U9dGhpcy5kb05hdmlnYXRlVmFsdWVTZXQobixpKTtpZihlKXJldHVybntyYW5nZTpyLHZhbHVlOmV9fXJldHVybiBudWxsfWRvTmF2aWdhdGVWYWx1ZVNldChlLHQpe3ZhciByPXRoaXMubnVtYmVyUmVwbGFjZShlLHQpO3JldHVybiBudWxsIT09cj9yOnRoaXMudGV4dFJlcGxhY2UoZSx0KX1udW1iZXJSZXBsYWNlKGUsdCl7dmFyIHI9TWF0aC5wb3coMTAsZS5sZW5ndGgtKGUubGFzdEluZGV4T2YoIi4iKSsxKSk7bGV0IG49TnVtYmVyKGUpO2U9cGFyc2VGbG9hdChlKTtyZXR1cm4haXNOYU4obikmJiFpc05hTihlKSYmbj09PWUmJigwIT09bnx8dCk/KG49TWF0aC5mbG9vcihuKnIpLG4rPXQ/cjotcixTdHJpbmcobi9yKSk6bnVsbH10ZXh0UmVwbGFjZShlLHQpe3JldHVybiB0aGlzLnZhbHVlU2V0c1JlcGxhY2UodGhpcy5fZGVmYXVsdFZhbHVlU2V0LGUsdCl9dmFsdWVTZXRzUmVwbGFjZShyLG4saSl7bGV0IGE9bnVsbDtmb3IobGV0IGU9MCx0PXIubGVuZ3RoO251bGw9PT1hJiZlPHQ7ZSsrKWE9dGhpcy52YWx1ZVNldFJlcGxhY2UocltlXSxuLGkpO3JldHVybiBhfXZhbHVlU2V0UmVwbGFjZShlLHQscil7bGV0IG49ZS5pbmRleE9mKHQpO3JldHVybiAwPD1uPygobis9cj8xOi0xKTwwP249ZS5sZW5ndGgtMTpuJT1lLmxlbmd0aCxlW25dKTpudWxsfX1NdC5JTlNUQU5DRT1uZXcgTXQ7Y29uc3QgUHQ9T2JqZWN0LmZyZWV6ZShmdW5jdGlvbihlLHQpe2NvbnN0IHI9c2V0VGltZW91dChlLmJpbmQodCksMCk7cmV0dXJue2Rpc3Bvc2UoKXtjbGVhclRpbWVvdXQocil9fX0pOyhLZT1QZT1QZXx8e30pLmlzQ2FuY2VsbGF0aW9uVG9rZW49ZnVuY3Rpb24oZSl7cmV0dXJuIGU9PT1LZS5Ob25lfHxlPT09S2UuQ2FuY2VsbGVkfHwoZSBpbnN0YW5jZW9mIEt0fHwhKCFlfHwib2JqZWN0IiE9dHlwZW9mIGUpJiYoImJvb2xlYW4iPT10eXBlb2YgZS5pc0NhbmNlbGxhdGlvblJlcXVlc3RlZCYmImZ1bmN0aW9uIj09dHlwZW9mIGUub25DYW5jZWxsYXRpb25SZXF1ZXN0ZWQpKX0sS2UuTm9uZT1PYmplY3QuZnJlZXplKHtpc0NhbmNlbGxhdGlvblJlcXVlc3RlZDohMSxvbkNhbmNlbGxhdGlvblJlcXVlc3RlZDpULk5vbmV9KSxLZS5DYW5jZWxsZWQ9T2JqZWN0LmZyZWV6ZSh7aXNDYW5jZWxsYXRpb25SZXF1ZXN0ZWQ6ITAsb25DYW5jZWxsYXRpb25SZXF1ZXN0ZWQ6UHR9KTtjbGFzcyBLdHtjb25zdHJ1Y3Rvcigpe3RoaXMuX2lzQ2FuY2VsbGVkPSExLHRoaXMuX2VtaXR0ZXI9bnVsbH1jYW5jZWwoKXt0aGlzLl9pc0NhbmNlbGxlZHx8KHRoaXMuX2lzQ2FuY2VsbGVkPSEwLHRoaXMuX2VtaXR0ZXImJih0aGlzLl9lbWl0dGVyLmZpcmUodm9pZCAwKSx0aGlzLmRpc3Bvc2UoKSkpfWdldCBpc0NhbmNlbGxhdGlvblJlcXVlc3RlZCgpe3JldHVybiB0aGlzLl9pc0NhbmNlbGxlZH1nZXQgb25DYW5jZWxsYXRpb25SZXF1ZXN0ZWQoKXtyZXR1cm4gdGhpcy5faXNDYW5jZWxsZWQ/UHQ6KHRoaXMuX2VtaXR0ZXJ8fCh0aGlzLl9lbWl0dGVyPW5ldyBYKSx0aGlzLl9lbWl0dGVyLmV2ZW50KX1kaXNwb3NlKCl7dGhpcy5fZW1pdHRlciYmKHRoaXMuX2VtaXR0ZXIuZGlzcG9zZSgpLHRoaXMuX2VtaXR0ZXI9bnVsbCl9fWNsYXNzIFJ0e2NvbnN0cnVjdG9yKGUpe3RoaXMuX3Rva2VuPXZvaWQgMCx0aGlzLl9wYXJlbnRMaXN0ZW5lcj12b2lkIDAsdGhpcy5fcGFyZW50TGlzdGVuZXI9ZSYmZS5vbkNhbmNlbGxhdGlvblJlcXVlc3RlZCh0aGlzLmNhbmNlbCx0aGlzKX1nZXQgdG9rZW4oKXtyZXR1cm4gdGhpcy5fdG9rZW58fCh0aGlzLl90b2tlbj1uZXcgS3QpLHRoaXMuX3Rva2VufWNhbmNlbCgpe3RoaXMuX3Rva2VuP3RoaXMuX3Rva2VuIGluc3RhbmNlb2YgS3QmJnRoaXMuX3Rva2VuLmNhbmNlbCgpOnRoaXMuX3Rva2VuPVBlLkNhbmNlbGxlZH1kaXNwb3NlKGU9ITEpe2UmJnRoaXMuY2FuY2VsKCksdGhpcy5fcGFyZW50TGlzdGVuZXImJnRoaXMuX3BhcmVudExpc3RlbmVyLmRpc3Bvc2UoKSx0aGlzLl90b2tlbj90aGlzLl90b2tlbiBpbnN0YW5jZW9mIEt0JiZ0aGlzLl90b2tlbi5kaXNwb3NlKCk6dGhpcy5fdG9rZW49UGUuTm9uZX19Y2xhc3MgRHR7Y29uc3RydWN0b3IoKXt0aGlzLl9rZXlDb2RlVG9TdHI9W10sdGhpcy5fc3RyVG9LZXlDb2RlPU9iamVjdC5jcmVhdGUobnVsbCl9ZGVmaW5lKGUsdCl7dGhpcy5fa2V5Q29kZVRvU3RyW2VdPXQsdGhpcy5fc3RyVG9LZXlDb2RlW3QudG9Mb3dlckNhc2UoKV09ZX1rZXlDb2RlVG9TdHIoZSl7cmV0dXJuIHRoaXMuX2tleUNvZGVUb1N0cltlXX1zdHJUb0tleUNvZGUoZSl7cmV0dXJuIHRoaXMuX3N0clRvS2V5Q29kZVtlLnRvTG93ZXJDYXNlKCldfHwwfX1jb25zdCBJdD1uZXcgRHQsVnQ9bmV3IER0LE90PW5ldyBEdCxGdD1uZXcgQXJyYXkoMjMwKSxUdD17fSxCdD1bXSxxdD1PYmplY3QuY3JlYXRlKG51bGwpLFV0PU9iamVjdC5jcmVhdGUobnVsbCksSHQ9W10sV3Q9W107Zm9yKGxldCBlPTA7ZTw9MTkzO2UrKylIdFtlXT0tMTtmb3IobGV0IGU9MDtlPD0xMjY7ZSsrKVd0W2VdPS0xO3tsZXQgZT1bXSx0PVtdO2Zvcihjb25zdCBsbiBvZltbMCwxLDAsIk5vbmUiLDAsInVua25vd24iLDAsIlZLX1VOS05PV04iLCIiLCIiXSxbMCwxLDEsIkh5cGVyIiwwLCIiLDAsIiIsIiIsIiJdLFswLDEsMiwiU3VwZXIiLDAsIiIsMCwiIiwiIiwiIl0sWzAsMSwzLCJGbiIsMCwiIiwwLCIiLCIiLCIiXSxbMCwxLDQsIkZuTG9jayIsMCwiIiwwLCIiLCIiLCIiXSxbMCwxLDUsIlN1c3BlbmQiLDAsIiIsMCwiIiwiIiwiIl0sWzAsMSw2LCJSZXN1bWUiLDAsIiIsMCwiIiwiIiwiIl0sWzAsMSw3LCJUdXJibyIsMCwiIiwwLCIiLCIiLCIiXSxbMCwxLDgsIlNsZWVwIiwwLCIiLDAsIlZLX1NMRUVQIiwiIiwiIl0sWzAsMSw5LCJXYWtlVXAiLDAsIiIsMCwiIiwiIiwiIl0sWzMxLDAsMTAsIktleUEiLDMxLCJBIiw2NSwiVktfQSIsIiIsIiJdLFszMiwwLDExLCJLZXlCIiwzMiwiQiIsNjYsIlZLX0IiLCIiLCIiXSxbMzMsMCwxMiwiS2V5QyIsMzMsIkMiLDY3LCJWS19DIiwiIiwiIl0sWzM0LDAsMTMsIktleUQiLDM0LCJEIiw2OCwiVktfRCIsIiIsIiJdLFszNSwwLDE0LCJLZXlFIiwzNSwiRSIsNjksIlZLX0UiLCIiLCIiXSxbMzYsMCwxNSwiS2V5RiIsMzYsIkYiLDcwLCJWS19GIiwiIiwiIl0sWzM3LDAsMTYsIktleUciLDM3LCJHIiw3MSwiVktfRyIsIiIsIiJdLFszOCwwLDE3LCJLZXlIIiwzOCwiSCIsNzIsIlZLX0giLCIiLCIiXSxbMzksMCwxOCwiS2V5SSIsMzksIkkiLDczLCJWS19JIiwiIiwiIl0sWzQwLDAsMTksIktleUoiLDQwLCJKIiw3NCwiVktfSiIsIiIsIiJdLFs0MSwwLDIwLCJLZXlLIiw0MSwiSyIsNzUsIlZLX0siLCIiLCIiXSxbNDIsMCwyMSwiS2V5TCIsNDIsIkwiLDc2LCJWS19MIiwiIiwiIl0sWzQzLDAsMjIsIktleU0iLDQzLCJNIiw3NywiVktfTSIsIiIsIiJdLFs0NCwwLDIzLCJLZXlOIiw0NCwiTiIsNzgsIlZLX04iLCIiLCIiXSxbNDUsMCwyNCwiS2V5TyIsNDUsIk8iLDc5LCJWS19PIiwiIiwiIl0sWzQ2LDAsMjUsIktleVAiLDQ2LCJQIiw4MCwiVktfUCIsIiIsIiJdLFs0NywwLDI2LCJLZXlRIiw0NywiUSIsODEsIlZLX1EiLCIiLCIiXSxbNDgsMCwyNywiS2V5UiIsNDgsIlIiLDgyLCJWS19SIiwiIiwiIl0sWzQ5LDAsMjgsIktleVMiLDQ5LCJTIiw4MywiVktfUyIsIiIsIiJdLFs1MCwwLDI5LCJLZXlUIiw1MCwiVCIsODQsIlZLX1QiLCIiLCIiXSxbNTEsMCwzMCwiS2V5VSIsNTEsIlUiLDg1LCJWS19VIiwiIiwiIl0sWzUyLDAsMzEsIktleVYiLDUyLCJWIiw4NiwiVktfViIsIiIsIiJdLFs1MywwLDMyLCJLZXlXIiw1MywiVyIsODcsIlZLX1ciLCIiLCIiXSxbNTQsMCwzMywiS2V5WCIsNTQsIlgiLDg4LCJWS19YIiwiIiwiIl0sWzU1LDAsMzQsIktleVkiLDU1LCJZIiw4OSwiVktfWSIsIiIsIiJdLFs1NiwwLDM1LCJLZXlaIiw1NiwiWiIsOTAsIlZLX1oiLCIiLCIiXSxbMjIsMCwzNiwiRGlnaXQxIiwyMiwiMSIsNDksIlZLXzEiLCIiLCIiXSxbMjMsMCwzNywiRGlnaXQyIiwyMywiMiIsNTAsIlZLXzIiLCIiLCIiXSxbMjQsMCwzOCwiRGlnaXQzIiwyNCwiMyIsNTEsIlZLXzMiLCIiLCIiXSxbMjUsMCwzOSwiRGlnaXQ0IiwyNSwiNCIsNTIsIlZLXzQiLCIiLCIiXSxbMjYsMCw0MCwiRGlnaXQ1IiwyNiwiNSIsNTMsIlZLXzUiLCIiLCIiXSxbMjcsMCw0MSwiRGlnaXQ2IiwyNywiNiIsNTQsIlZLXzYiLCIiLCIiXSxbMjgsMCw0MiwiRGlnaXQ3IiwyOCwiNyIsNTUsIlZLXzciLCIiLCIiXSxbMjksMCw0MywiRGlnaXQ4IiwyOSwiOCIsNTYsIlZLXzgiLCIiLCIiXSxbMzAsMCw0NCwiRGlnaXQ5IiwzMCwiOSIsNTcsIlZLXzkiLCIiLCIiXSxbMjEsMCw0NSwiRGlnaXQwIiwyMSwiMCIsNDgsIlZLXzAiLCIiLCIiXSxbMywxLDQ2LCJFbnRlciIsMywiRW50ZXIiLDEzLCJWS19SRVRVUk4iLCIiLCIiXSxbOSwxLDQ3LCJFc2NhcGUiLDksIkVzY2FwZSIsMjcsIlZLX0VTQ0FQRSIsIiIsIiJdLFsxLDEsNDgsIkJhY2tzcGFjZSIsMSwiQmFja3NwYWNlIiw4LCJWS19CQUNLIiwiIiwiIl0sWzIsMSw0OSwiVGFiIiwyLCJUYWIiLDksIlZLX1RBQiIsIiIsIiJdLFsxMCwxLDUwLCJTcGFjZSIsMTAsIlNwYWNlIiwzMiwiVktfU1BBQ0UiLCIiLCIiXSxbODMsMCw1MSwiTWludXMiLDgzLCItIiwxODksIlZLX09FTV9NSU5VUyIsIi0iLCJPRU1fTUlOVVMiXSxbODEsMCw1MiwiRXF1YWwiLDgxLCI9IiwxODcsIlZLX09FTV9QTFVTIiwiPSIsIk9FTV9QTFVTIl0sWzg3LDAsNTMsIkJyYWNrZXRMZWZ0Iiw4NywiWyIsMjE5LCJWS19PRU1fNCIsIlsiLCJPRU1fNCJdLFs4OSwwLDU0LCJCcmFja2V0UmlnaHQiLDg5LCJdIiwyMjEsIlZLX09FTV82IiwiXSIsIk9FTV82Il0sWzg4LDAsNTUsIkJhY2tzbGFzaCIsODgsIlxcIiwyMjAsIlZLX09FTV81IiwiXFwiLCJPRU1fNSJdLFswLDAsNTYsIkludGxIYXNoIiwwLCIiLDAsIiIsIiIsIiJdLFs4MCwwLDU3LCJTZW1pY29sb24iLDgwLCI7IiwxODYsIlZLX09FTV8xIiwiOyIsIk9FTV8xIl0sWzkwLDAsNTgsIlF1b3RlIiw5MCwiJyIsMjIyLCJWS19PRU1fNyIsIiciLCJPRU1fNyJdLFs4NiwwLDU5LCJCYWNrcXVvdGUiLDg2LCJgIiwxOTIsIlZLX09FTV8zIiwiYCIsIk9FTV8zIl0sWzgyLDAsNjAsIkNvbW1hIiw4MiwiLCIsMTg4LCJWS19PRU1fQ09NTUEiLCIsIiwiT0VNX0NPTU1BIl0sWzg0LDAsNjEsIlBlcmlvZCIsODQsIi4iLDE5MCwiVktfT0VNX1BFUklPRCIsIi4iLCJPRU1fUEVSSU9EIl0sWzg1LDAsNjIsIlNsYXNoIiw4NSwiLyIsMTkxLCJWS19PRU1fMiIsIi8iLCJPRU1fMiJdLFs4LDEsNjMsIkNhcHNMb2NrIiw4LCJDYXBzTG9jayIsMjAsIlZLX0NBUElUQUwiLCIiLCIiXSxbNTksMSw2NCwiRjEiLDU5LCJGMSIsMTEyLCJWS19GMSIsIiIsIiJdLFs2MCwxLDY1LCJGMiIsNjAsIkYyIiwxMTMsIlZLX0YyIiwiIiwiIl0sWzYxLDEsNjYsIkYzIiw2MSwiRjMiLDExNCwiVktfRjMiLCIiLCIiXSxbNjIsMSw2NywiRjQiLDYyLCJGNCIsMTE1LCJWS19GNCIsIiIsIiJdLFs2MywxLDY4LCJGNSIsNjMsIkY1IiwxMTYsIlZLX0Y1IiwiIiwiIl0sWzY0LDEsNjksIkY2Iiw2NCwiRjYiLDExNywiVktfRjYiLCIiLCIiXSxbNjUsMSw3MCwiRjciLDY1LCJGNyIsMTE4LCJWS19GNyIsIiIsIiJdLFs2NiwxLDcxLCJGOCIsNjYsIkY4IiwxMTksIlZLX0Y4IiwiIiwiIl0sWzY3LDEsNzIsIkY5Iiw2NywiRjkiLDEyMCwiVktfRjkiLCIiLCIiXSxbNjgsMSw3MywiRjEwIiw2OCwiRjEwIiwxMjEsIlZLX0YxMCIsIiIsIiJdLFs2OSwxLDc0LCJGMTEiLDY5LCJGMTEiLDEyMiwiVktfRjExIiwiIiwiIl0sWzcwLDEsNzUsIkYxMiIsNzAsIkYxMiIsMTIzLCJWS19GMTIiLCIiLCIiXSxbMCwxLDc2LCJQcmludFNjcmVlbiIsMCwiIiwwLCIiLCIiLCIiXSxbNzksMSw3NywiU2Nyb2xsTG9jayIsNzksIlNjcm9sbExvY2siLDE0NSwiVktfU0NST0xMIiwiIiwiIl0sWzcsMSw3OCwiUGF1c2UiLDcsIlBhdXNlQnJlYWsiLDE5LCJWS19QQVVTRSIsIiIsIiJdLFsxOSwxLDc5LCJJbnNlcnQiLDE5LCJJbnNlcnQiLDQ1LCJWS19JTlNFUlQiLCIiLCIiXSxbMTQsMSw4MCwiSG9tZSIsMTQsIkhvbWUiLDM2LCJWS19IT01FIiwiIiwiIl0sWzExLDEsODEsIlBhZ2VVcCIsMTEsIlBhZ2VVcCIsMzMsIlZLX1BSSU9SIiwiIiwiIl0sWzIwLDEsODIsIkRlbGV0ZSIsMjAsIkRlbGV0ZSIsNDYsIlZLX0RFTEVURSIsIiIsIiJdLFsxMywxLDgzLCJFbmQiLDEzLCJFbmQiLDM1LCJWS19FTkQiLCIiLCIiXSxbMTIsMSw4NCwiUGFnZURvd24iLDEyLCJQYWdlRG93biIsMzQsIlZLX05FWFQiLCIiLCIiXSxbMTcsMSw4NSwiQXJyb3dSaWdodCIsMTcsIlJpZ2h0QXJyb3ciLDM5LCJWS19SSUdIVCIsIlJpZ2h0IiwiIl0sWzE1LDEsODYsIkFycm93TGVmdCIsMTUsIkxlZnRBcnJvdyIsMzcsIlZLX0xFRlQiLCJMZWZ0IiwiIl0sWzE4LDEsODcsIkFycm93RG93biIsMTgsIkRvd25BcnJvdyIsNDAsIlZLX0RPV04iLCJEb3duIiwiIl0sWzE2LDEsODgsIkFycm93VXAiLDE2LCJVcEFycm93IiwzOCwiVktfVVAiLCJVcCIsIiJdLFs3OCwxLDg5LCJOdW1Mb2NrIiw3OCwiTnVtTG9jayIsMTQ0LCJWS19OVU1MT0NLIiwiIiwiIl0sWzEwOCwxLDkwLCJOdW1wYWREaXZpZGUiLDEwOCwiTnVtUGFkX0RpdmlkZSIsMTExLCJWS19ESVZJREUiLCIiLCIiXSxbMTAzLDEsOTEsIk51bXBhZE11bHRpcGx5IiwxMDMsIk51bVBhZF9NdWx0aXBseSIsMTA2LCJWS19NVUxUSVBMWSIsIiIsIiJdLFsxMDYsMSw5MiwiTnVtcGFkU3VidHJhY3QiLDEwNiwiTnVtUGFkX1N1YnRyYWN0IiwxMDksIlZLX1NVQlRSQUNUIiwiIiwiIl0sWzEwNCwxLDkzLCJOdW1wYWRBZGQiLDEwNCwiTnVtUGFkX0FkZCIsMTA3LCJWS19BREQiLCIiLCIiXSxbMywxLDk0LCJOdW1wYWRFbnRlciIsMywiIiwwLCIiLCIiLCIiXSxbOTQsMSw5NSwiTnVtcGFkMSIsOTQsIk51bVBhZDEiLDk3LCJWS19OVU1QQUQxIiwiIiwiIl0sWzk1LDEsOTYsIk51bXBhZDIiLDk1LCJOdW1QYWQyIiw5OCwiVktfTlVNUEFEMiIsIiIsIiJdLFs5NiwxLDk3LCJOdW1wYWQzIiw5NiwiTnVtUGFkMyIsOTksIlZLX05VTVBBRDMiLCIiLCIiXSxbOTcsMSw5OCwiTnVtcGFkNCIsOTcsIk51bVBhZDQiLDEwMCwiVktfTlVNUEFENCIsIiIsIiJdLFs5OCwxLDk5LCJOdW1wYWQ1Iiw5OCwiTnVtUGFkNSIsMTAxLCJWS19OVU1QQUQ1IiwiIiwiIl0sWzk5LDEsMTAwLCJOdW1wYWQ2Iiw5OSwiTnVtUGFkNiIsMTAyLCJWS19OVU1QQUQ2IiwiIiwiIl0sWzEwMCwxLDEwMSwiTnVtcGFkNyIsMTAwLCJOdW1QYWQ3IiwxMDMsIlZLX05VTVBBRDciLCIiLCIiXSxbMTAxLDEsMTAyLCJOdW1wYWQ4IiwxMDEsIk51bVBhZDgiLDEwNCwiVktfTlVNUEFEOCIsIiIsIiJdLFsxMDIsMSwxMDMsIk51bXBhZDkiLDEwMiwiTnVtUGFkOSIsMTA1LCJWS19OVU1QQUQ5IiwiIiwiIl0sWzkzLDEsMTA0LCJOdW1wYWQwIiw5MywiTnVtUGFkMCIsOTYsIlZLX05VTVBBRDAiLCIiLCIiXSxbMTA3LDEsMTA1LCJOdW1wYWREZWNpbWFsIiwxMDcsIk51bVBhZF9EZWNpbWFsIiwxMTAsIlZLX0RFQ0lNQUwiLCIiLCIiXSxbOTIsMCwxMDYsIkludGxCYWNrc2xhc2giLDkyLCJPRU1fMTAyIiwyMjYsIlZLX09FTV8xMDIiLCIiLCIiXSxbNTgsMSwxMDcsIkNvbnRleHRNZW51Iiw1OCwiQ29udGV4dE1lbnUiLDkzLCIiLCIiLCIiXSxbMCwxLDEwOCwiUG93ZXIiLDAsIiIsMCwiIiwiIiwiIl0sWzAsMSwxMDksIk51bXBhZEVxdWFsIiwwLCIiLDAsIiIsIiIsIiJdLFs3MSwxLDExMCwiRjEzIiw3MSwiRjEzIiwxMjQsIlZLX0YxMyIsIiIsIiJdLFs3MiwxLDExMSwiRjE0Iiw3MiwiRjE0IiwxMjUsIlZLX0YxNCIsIiIsIiJdLFs3MywxLDExMiwiRjE1Iiw3MywiRjE1IiwxMjYsIlZLX0YxNSIsIiIsIiJdLFs3NCwxLDExMywiRjE2Iiw3NCwiRjE2IiwxMjcsIlZLX0YxNiIsIiIsIiJdLFs3NSwxLDExNCwiRjE3Iiw3NSwiRjE3IiwxMjgsIlZLX0YxNyIsIiIsIiJdLFs3NiwxLDExNSwiRjE4Iiw3NiwiRjE4IiwxMjksIlZLX0YxOCIsIiIsIiJdLFs3NywxLDExNiwiRjE5Iiw3NywiRjE5IiwxMzAsIlZLX0YxOSIsIiIsIiJdLFswLDEsMTE3LCJGMjAiLDAsIiIsMCwiVktfRjIwIiwiIiwiIl0sWzAsMSwxMTgsIkYyMSIsMCwiIiwwLCJWS19GMjEiLCIiLCIiXSxbMCwxLDExOSwiRjIyIiwwLCIiLDAsIlZLX0YyMiIsIiIsIiJdLFswLDEsMTIwLCJGMjMiLDAsIiIsMCwiVktfRjIzIiwiIiwiIl0sWzAsMSwxMjEsIkYyNCIsMCwiIiwwLCJWS19GMjQiLCIiLCIiXSxbMCwxLDEyMiwiT3BlbiIsMCwiIiwwLCIiLCIiLCIiXSxbMCwxLDEyMywiSGVscCIsMCwiIiwwLCIiLCIiLCIiXSxbMCwxLDEyNCwiU2VsZWN0IiwwLCIiLDAsIiIsIiIsIiJdLFswLDEsMTI1LCJBZ2FpbiIsMCwiIiwwLCIiLCIiLCIiXSxbMCwxLDEyNiwiVW5kbyIsMCwiIiwwLCIiLCIiLCIiXSxbMCwxLDEyNywiQ3V0IiwwLCIiLDAsIiIsIiIsIiJdLFswLDEsMTI4LCJDb3B5IiwwLCIiLDAsIiIsIiIsIiJdLFswLDEsMTI5LCJQYXN0ZSIsMCwiIiwwLCIiLCIiLCIiXSxbMCwxLDEzMCwiRmluZCIsMCwiIiwwLCIiLCIiLCIiXSxbMCwxLDEzMSwiQXVkaW9Wb2x1bWVNdXRlIiwxMTIsIkF1ZGlvVm9sdW1lTXV0ZSIsMTczLCJWS19WT0xVTUVfTVVURSIsIiIsIiJdLFswLDEsMTMyLCJBdWRpb1ZvbHVtZVVwIiwxMTMsIkF1ZGlvVm9sdW1lVXAiLDE3NSwiVktfVk9MVU1FX1VQIiwiIiwiIl0sWzAsMSwxMzMsIkF1ZGlvVm9sdW1lRG93biIsMTE0LCJBdWRpb1ZvbHVtZURvd24iLDE3NCwiVktfVk9MVU1FX0RPV04iLCIiLCIiXSxbMTA1LDEsMTM0LCJOdW1wYWRDb21tYSIsMTA1LCJOdW1QYWRfU2VwYXJhdG9yIiwxMDgsIlZLX1NFUEFSQVRPUiIsIiIsIiJdLFsxMTAsMCwxMzUsIkludGxSbyIsMTEwLCJBQk5UX0MxIiwxOTMsIlZLX0FCTlRfQzEiLCIiLCIiXSxbMCwxLDEzNiwiS2FuYU1vZGUiLDAsIiIsMCwiIiwiIiwiIl0sWzAsMCwxMzcsIkludGxZZW4iLDAsIiIsMCwiIiwiIiwiIl0sWzAsMSwxMzgsIkNvbnZlcnQiLDAsIiIsMCwiIiwiIiwiIl0sWzAsMSwxMzksIk5vbkNvbnZlcnQiLDAsIiIsMCwiIiwiIiwiIl0sWzAsMSwxNDAsIkxhbmcxIiwwLCIiLDAsIiIsIiIsIiJdLFswLDEsMTQxLCJMYW5nMiIsMCwiIiwwLCIiLCIiLCIiXSxbMCwxLDE0MiwiTGFuZzMiLDAsIiIsMCwiIiwiIiwiIl0sWzAsMSwxNDMsIkxhbmc0IiwwLCIiLDAsIiIsIiIsIiJdLFswLDEsMTQ0LCJMYW5nNSIsMCwiIiwwLCIiLCIiLCIiXSxbMCwxLDE0NSwiQWJvcnQiLDAsIiIsMCwiIiwiIiwiIl0sWzAsMSwxNDYsIlByb3BzIiwwLCIiLDAsIiIsIiIsIiJdLFswLDEsMTQ3LCJOdW1wYWRQYXJlbkxlZnQiLDAsIiIsMCwiIiwiIiwiIl0sWzAsMSwxNDgsIk51bXBhZFBhcmVuUmlnaHQiLDAsIiIsMCwiIiwiIiwiIl0sWzAsMSwxNDksIk51bXBhZEJhY2tzcGFjZSIsMCwiIiwwLCIiLCIiLCIiXSxbMCwxLDE1MCwiTnVtcGFkTWVtb3J5U3RvcmUiLDAsIiIsMCwiIiwiIiwiIl0sWzAsMSwxNTEsIk51bXBhZE1lbW9yeVJlY2FsbCIsMCwiIiwwLCIiLCIiLCIiXSxbMCwxLDE1MiwiTnVtcGFkTWVtb3J5Q2xlYXIiLDAsIiIsMCwiIiwiIiwiIl0sWzAsMSwxNTMsIk51bXBhZE1lbW9yeUFkZCIsMCwiIiwwLCIiLCIiLCIiXSxbMCwxLDE1NCwiTnVtcGFkTWVtb3J5U3VidHJhY3QiLDAsIiIsMCwiIiwiIiwiIl0sWzAsMSwxNTUsIk51bXBhZENsZWFyIiwwLCIiLDAsIiIsIiIsIiJdLFswLDEsMTU2LCJOdW1wYWRDbGVhckVudHJ5IiwwLCIiLDAsIiIsIiIsIiJdLFs1LDEsMCwiIiw1LCJDdHJsIiwxNywiVktfQ09OVFJPTCIsIiIsIiJdLFs0LDEsMCwiIiw0LCJTaGlmdCIsMTYsIlZLX1NISUZUIiwiIiwiIl0sWzYsMSwwLCIiLDYsIkFsdCIsMTgsIlZLX01FTlUiLCIiLCIiXSxbNTcsMSwwLCIiLDU3LCJNZXRhIiwwLCJWS19DT01NQU5EIiwiIiwiIl0sWzUsMSwxNTcsIkNvbnRyb2xMZWZ0Iiw1LCIiLDAsIlZLX0xDT05UUk9MIiwiIiwiIl0sWzQsMSwxNTgsIlNoaWZ0TGVmdCIsNCwiIiwwLCJWS19MU0hJRlQiLCIiLCIiXSxbNiwxLDE1OSwiQWx0TGVmdCIsNiwiIiwwLCJWS19MTUVOVSIsIiIsIiJdLFs1NywxLDE2MCwiTWV0YUxlZnQiLDU3LCIiLDAsIlZLX0xXSU4iLCIiLCIiXSxbNSwxLDE2MSwiQ29udHJvbFJpZ2h0Iiw1LCIiLDAsIlZLX1JDT05UUk9MIiwiIiwiIl0sWzQsMSwxNjIsIlNoaWZ0UmlnaHQiLDQsIiIsMCwiVktfUlNISUZUIiwiIiwiIl0sWzYsMSwxNjMsIkFsdFJpZ2h0Iiw2LCIiLDAsIlZLX1JNRU5VIiwiIiwiIl0sWzU3LDEsMTY0LCJNZXRhUmlnaHQiLDU3LCIiLDAsIlZLX1JXSU4iLCIiLCIiXSxbMCwxLDE2NSwiQnJpZ2h0bmVzc1VwIiwwLCIiLDAsIiIsIiIsIiJdLFswLDEsMTY2LCJCcmlnaHRuZXNzRG93biIsMCwiIiwwLCIiLCIiLCIiXSxbMCwxLDE2NywiTWVkaWFQbGF5IiwwLCIiLDAsIiIsIiIsIiJdLFswLDEsMTY4LCJNZWRpYVJlY29yZCIsMCwiIiwwLCIiLCIiLCIiXSxbMCwxLDE2OSwiTWVkaWFGYXN0Rm9yd2FyZCIsMCwiIiwwLCIiLCIiLCIiXSxbMCwxLDE3MCwiTWVkaWFSZXdpbmQiLDAsIiIsMCwiIiwiIiwiIl0sWzExNCwxLDE3MSwiTWVkaWFUcmFja05leHQiLDExOSwiTWVkaWFUcmFja05leHQiLDE3NiwiVktfTUVESUFfTkVYVF9UUkFDSyIsIiIsIiJdLFsxMTUsMSwxNzIsIk1lZGlhVHJhY2tQcmV2aW91cyIsMTIwLCJNZWRpYVRyYWNrUHJldmlvdXMiLDE3NywiVktfTUVESUFfUFJFVl9UUkFDSyIsIiIsIiJdLFsxMTYsMSwxNzMsIk1lZGlhU3RvcCIsMTIxLCJNZWRpYVN0b3AiLDE3OCwiVktfTUVESUFfU1RPUCIsIiIsIiJdLFswLDEsMTc0LCJFamVjdCIsMCwiIiwwLCIiLCIiLCIiXSxbMTE3LDEsMTc1LCJNZWRpYVBsYXlQYXVzZSIsMTIyLCJNZWRpYVBsYXlQYXVzZSIsMTc5LCJWS19NRURJQV9QTEFZX1BBVVNFIiwiIiwiIl0sWzAsMSwxNzYsIk1lZGlhU2VsZWN0IiwxMjMsIkxhdW5jaE1lZGlhUGxheWVyIiwxODEsIlZLX01FRElBX0xBVU5DSF9NRURJQV9TRUxFQ1QiLCIiLCIiXSxbMCwxLDE3NywiTGF1bmNoTWFpbCIsMTI0LCJMYXVuY2hNYWlsIiwxODAsIlZLX01FRElBX0xBVU5DSF9NQUlMIiwiIiwiIl0sWzAsMSwxNzgsIkxhdW5jaEFwcDIiLDEyNSwiTGF1bmNoQXBwMiIsMTgzLCJWS19NRURJQV9MQVVOQ0hfQVBQMiIsIiIsIiJdLFswLDEsMTc5LCJMYXVuY2hBcHAxIiwwLCIiLDAsIlZLX01FRElBX0xBVU5DSF9BUFAxIiwiIiwiIl0sWzAsMSwxODAsIlNlbGVjdFRhc2siLDAsIiIsMCwiIiwiIiwiIl0sWzAsMSwxODEsIkxhdW5jaFNjcmVlblNhdmVyIiwwLCIiLDAsIiIsIiIsIiJdLFswLDEsMTgyLCJCcm93c2VyU2VhcmNoIiwxMTUsIkJyb3dzZXJTZWFyY2giLDE3MCwiVktfQlJPV1NFUl9TRUFSQ0giLCIiLCIiXSxbMCwxLDE4MywiQnJvd3NlckhvbWUiLDExNiwiQnJvd3NlckhvbWUiLDE3MiwiVktfQlJPV1NFUl9IT01FIiwiIiwiIl0sWzExMiwxLDE4NCwiQnJvd3NlckJhY2siLDExNywiQnJvd3NlckJhY2siLDE2NiwiVktfQlJPV1NFUl9CQUNLIiwiIiwiIl0sWzExMywxLDE4NSwiQnJvd3NlckZvcndhcmQiLDExOCwiQnJvd3NlckZvcndhcmQiLDE2NywiVktfQlJPV1NFUl9GT1JXQVJEIiwiIiwiIl0sWzAsMSwxODYsIkJyb3dzZXJTdG9wIiwwLCIiLDAsIlZLX0JST1dTRVJfU1RPUCIsIiIsIiJdLFswLDEsMTg3LCJCcm93c2VyUmVmcmVzaCIsMCwiIiwwLCJWS19CUk9XU0VSX1JFRlJFU0giLCIiLCIiXSxbMCwxLDE4OCwiQnJvd3NlckZhdm9yaXRlcyIsMCwiIiwwLCJWS19CUk9XU0VSX0ZBVk9SSVRFUyIsIiIsIiJdLFswLDEsMTg5LCJab29tVG9nZ2xlIiwwLCIiLDAsIiIsIiIsIiJdLFswLDEsMTkwLCJNYWlsUmVwbHkiLDAsIiIsMCwiIiwiIiwiIl0sWzAsMSwxOTEsIk1haWxGb3J3YXJkIiwwLCIiLDAsIiIsIiIsIiJdLFswLDEsMTkyLCJNYWlsU2VuZCIsMCwiIiwwLCIiLCIiLCIiXSxbMTA5LDEsMCwiIiwxMDksIktleUluQ29tcG9zaXRpb24iLDIyOSwiIiwiIiwiIl0sWzExMSwxLDAsIiIsMTExLCJBQk5UX0MyIiwxOTQsIlZLX0FCTlRfQzIiLCIiLCIiXSxbOTEsMSwwLCIiLDkxLCJPRU1fOCIsMjIzLCJWS19PRU1fOCIsIiIsIiJdLFswLDEsMCwiIiwwLCIiLDAsIlZLX0NMRUFSIiwiIiwiIl0sWzAsMSwwLCIiLDAsIiIsMCwiVktfS0FOQSIsIiIsIiJdLFswLDEsMCwiIiwwLCIiLDAsIlZLX0hBTkdVTCIsIiIsIiJdLFswLDEsMCwiIiwwLCIiLDAsIlZLX0pVTkpBIiwiIiwiIl0sWzAsMSwwLCIiLDAsIiIsMCwiVktfRklOQUwiLCIiLCIiXSxbMCwxLDAsIiIsMCwiIiwwLCJWS19IQU5KQSIsIiIsIiJdLFswLDEsMCwiIiwwLCIiLDAsIlZLX0tBTkpJIiwiIiwiIl0sWzAsMSwwLCIiLDAsIiIsMCwiVktfQ09OVkVSVCIsIiIsIiJdLFswLDEsMCwiIiwwLCIiLDAsIlZLX05PTkNPTlZFUlQiLCIiLCIiXSxbMCwxLDAsIiIsMCwiIiwwLCJWS19BQ0NFUFQiLCIiLCIiXSxbMCwxLDAsIiIsMCwiIiwwLCJWS19NT0RFQ0hBTkdFIiwiIiwiIl0sWzAsMSwwLCIiLDAsIiIsMCwiVktfU0VMRUNUIiwiIiwiIl0sWzAsMSwwLCIiLDAsIiIsMCwiVktfUFJJTlQiLCIiLCIiXSxbMCwxLDAsIiIsMCwiIiwwLCJWS19FWEVDVVRFIiwiIiwiIl0sWzAsMSwwLCIiLDAsIiIsMCwiVktfU05BUFNIT1QiLCIiLCIiXSxbMCwxLDAsIiIsMCwiIiwwLCJWS19IRUxQIiwiIiwiIl0sWzAsMSwwLCIiLDAsIiIsMCwiVktfQVBQUyIsIiIsIiJdLFswLDEsMCwiIiwwLCIiLDAsIlZLX1BST0NFU1NLRVkiLCIiLCIiXSxbMCwxLDAsIiIsMCwiIiwwLCJWS19QQUNLRVQiLCIiLCIiXSxbMCwxLDAsIiIsMCwiIiwwLCJWS19EQkVfU0JDU0NIQVIiLCIiLCIiXSxbMCwxLDAsIiIsMCwiIiwwLCJWS19EQkVfREJDU0NIQVIiLCIiLCIiXSxbMCwxLDAsIiIsMCwiIiwwLCJWS19BVFROIiwiIiwiIl0sWzAsMSwwLCIiLDAsIiIsMCwiVktfQ1JTRUwiLCIiLCIiXSxbMCwxLDAsIiIsMCwiIiwwLCJWS19FWFNFTCIsIiIsIiJdLFswLDEsMCwiIiwwLCIiLDAsIlZLX0VSRU9GIiwiIiwiIl0sWzAsMSwwLCIiLDAsIiIsMCwiVktfUExBWSIsIiIsIiJdLFswLDEsMCwiIiwwLCIiLDAsIlZLX1pPT00iLCIiLCIiXSxbMCwxLDAsIiIsMCwiIiwwLCJWS19OT05BTUUiLCIiLCIiXSxbMCwxLDAsIiIsMCwiIiwwLCJWS19QQTEiLCIiLCIiXSxbMCwxLDAsIiIsMCwiIiwwLCJWS19PRU1fQ0xFQVIiLCIiLCIiXV0pe2NvbnN0Wyxobix1bixjbixkbixmbixtbixnbixibixwbl09bG47aWYodFt1bl18fCh0W3VuXT0hMCxCdFt1bl09Y24scXRbY25dPXVuLFV0W2NuLnRvTG93ZXJDYXNlKCldPXVuLGhuJiYwIT09KEh0W3VuXT1kbikmJjMhPT1kbiYmNSE9PWRuJiY0IT09ZG4mJjYhPT1kbiYmNTchPT1kbiYmKFd0W2RuXT11bikpLCFlW2RuXSl7aWYoZVtkbl09ITAsIWZuKXRocm93IG5ldyBFcnJvcihgU3RyaW5nIHJlcHJlc2VudGF0aW9uIG1pc3NpbmcgZm9yIGtleSBjb2RlICR7ZG59IGFyb3VuZCBzY2FuIGNvZGUgYCtjbik7SXQuZGVmaW5lKGRuLGZuKSxWdC5kZWZpbmUoZG4sYm58fGZuKSxPdC5kZWZpbmUoZG4scG58fGJufHxmbil9bW4mJihGdFttbl09ZG4pLGduJiYoVHRbZ25dPWRuKX1XdFszXT00Nn1jbGFzcyB6dCBleHRlbmRzIHB7Y29uc3RydWN0b3IoZSx0LHIsbil7c3VwZXIoZSx0LHIsbiksdGhpcy5zZWxlY3Rpb25TdGFydExpbmVOdW1iZXI9ZSx0aGlzLnNlbGVjdGlvblN0YXJ0Q29sdW1uPXQsdGhpcy5wb3NpdGlvbkxpbmVOdW1iZXI9cix0aGlzLnBvc2l0aW9uQ29sdW1uPW59dG9TdHJpbmcoKXtyZXR1cm4iWyIrdGhpcy5zZWxlY3Rpb25TdGFydExpbmVOdW1iZXIrIiwiK3RoaXMuc2VsZWN0aW9uU3RhcnRDb2x1bW4rIiAtPiAiK3RoaXMucG9zaXRpb25MaW5lTnVtYmVyKyIsIit0aGlzLnBvc2l0aW9uQ29sdW1uKyJdIn1lcXVhbHNTZWxlY3Rpb24oZSl7cmV0dXJuIHp0LnNlbGVjdGlvbnNFcXVhbCh0aGlzLGUpfXN0YXRpYyBzZWxlY3Rpb25zRXF1YWwoZSx0KXtyZXR1cm4gZS5zZWxlY3Rpb25TdGFydExpbmVOdW1iZXI9PT10LnNlbGVjdGlvblN0YXJ0TGluZU51bWJlciYmZS5zZWxlY3Rpb25TdGFydENvbHVtbj09PXQuc2VsZWN0aW9uU3RhcnRDb2x1bW4mJmUucG9zaXRpb25MaW5lTnVtYmVyPT09dC5wb3NpdGlvbkxpbmVOdW1iZXImJmUucG9zaXRpb25Db2x1bW49PT10LnBvc2l0aW9uQ29sdW1ufWdldERpcmVjdGlvbigpe3JldHVybiB0aGlzLnNlbGVjdGlvblN0YXJ0TGluZU51bWJlcj09PXRoaXMuc3RhcnRMaW5lTnVtYmVyJiZ0aGlzLnNlbGVjdGlvblN0YXJ0Q29sdW1uPT09dGhpcy5zdGFydENvbHVtbj8wOjF9c2V0RW5kUG9zaXRpb24oZSx0KXtyZXR1cm4gMD09PXRoaXMuZ2V0RGlyZWN0aW9uKCk/bmV3IHp0KHRoaXMuc3RhcnRMaW5lTnVtYmVyLHRoaXMuc3RhcnRDb2x1bW4sZSx0KTpuZXcgenQoZSx0LHRoaXMuc3RhcnRMaW5lTnVtYmVyLHRoaXMuc3RhcnRDb2x1bW4pfWdldFBvc2l0aW9uKCl7cmV0dXJuIG5ldyBzdCh0aGlzLnBvc2l0aW9uTGluZU51bWJlcix0aGlzLnBvc2l0aW9uQ29sdW1uKX1nZXRTZWxlY3Rpb25TdGFydCgpe3JldHVybiBuZXcgc3QodGhpcy5zZWxlY3Rpb25TdGFydExpbmVOdW1iZXIsdGhpcy5zZWxlY3Rpb25TdGFydENvbHVtbil9c2V0U3RhcnRQb3NpdGlvbihlLHQpe3JldHVybiAwPT09dGhpcy5nZXREaXJlY3Rpb24oKT9uZXcgenQoZSx0LHRoaXMuZW5kTGluZU51bWJlcix0aGlzLmVuZENvbHVtbik6bmV3IHp0KHRoaXMuZW5kTGluZU51bWJlcix0aGlzLmVuZENvbHVtbixlLHQpfXN0YXRpYyBmcm9tUG9zaXRpb25zKGUsdD1lKXtyZXR1cm4gbmV3IHp0KGUubGluZU51bWJlcixlLmNvbHVtbix0LmxpbmVOdW1iZXIsdC5jb2x1bW4pfXN0YXRpYyBmcm9tUmFuZ2UoZSx0KXtyZXR1cm4gMD09PXQ/bmV3IHp0KGUuc3RhcnRMaW5lTnVtYmVyLGUuc3RhcnRDb2x1bW4sZS5lbmRMaW5lTnVtYmVyLGUuZW5kQ29sdW1uKTpuZXcgenQoZS5lbmRMaW5lTnVtYmVyLGUuZW5kQ29sdW1uLGUuc3RhcnRMaW5lTnVtYmVyLGUuc3RhcnRDb2x1bW4pfXN0YXRpYyBsaWZ0U2VsZWN0aW9uKGUpe3JldHVybiBuZXcgenQoZS5zZWxlY3Rpb25TdGFydExpbmVOdW1iZXIsZS5zZWxlY3Rpb25TdGFydENvbHVtbixlLnBvc2l0aW9uTGluZU51bWJlcixlLnBvc2l0aW9uQ29sdW1uKX1zdGF0aWMgc2VsZWN0aW9uc0FyckVxdWFsKHIsbil7aWYociYmIW58fCFyJiZuKXJldHVybiExO2lmKCFyJiYhbilyZXR1cm4hMDtpZihyLmxlbmd0aCE9PW4ubGVuZ3RoKXJldHVybiExO2ZvcihsZXQgZT0wLHQ9ci5sZW5ndGg7ZTx0O2UrKylpZighdGhpcy5zZWxlY3Rpb25zRXF1YWwocltlXSxuW2VdKSlyZXR1cm4hMTtyZXR1cm4hMH1zdGF0aWMgaXNJU2VsZWN0aW9uKGUpe3JldHVybiBlJiYibnVtYmVyIj09dHlwZW9mIGUuc2VsZWN0aW9uU3RhcnRMaW5lTnVtYmVyJiYibnVtYmVyIj09dHlwZW9mIGUuc2VsZWN0aW9uU3RhcnRDb2x1bW4mJiJudW1iZXIiPT10eXBlb2YgZS5wb3NpdGlvbkxpbmVOdW1iZXImJiJudW1iZXIiPT10eXBlb2YgZS5wb3NpdGlvbkNvbHVtbn1zdGF0aWMgY3JlYXRlV2l0aERpcmVjdGlvbihlLHQscixuLGkpe3JldHVybiAwPT09aT9uZXcgenQoZSx0LHIsbik6bmV3IHp0KHIsbixlLHQpfX12YXIganQsJHQ9ZnVuY3Rpb24oZSxvLHMsbCl7cmV0dXJuIG5ldyhzPXN8fFByb21pc2UpKGZ1bmN0aW9uKHIsdCl7ZnVuY3Rpb24gbihlKXt0cnl7YShsLm5leHQoZSkpfWNhdGNoKGUpe3QoZSl9fWZ1bmN0aW9uIGkoZSl7dHJ5e2EobC50aHJvdyhlKSl9Y2F0Y2goZSl7dChlKX19ZnVuY3Rpb24gYShlKXt2YXIgdDtlLmRvbmU/cihlLnZhbHVlKTooKHQ9ZS52YWx1ZSlpbnN0YW5jZW9mIHM/dDpuZXcgcyhmdW5jdGlvbihlKXtlKHQpfSkpLnRoZW4obixpKX1hKChsPWwuYXBwbHkoZSxvfHxbXSkpLm5leHQoKSl9KX0sR3Q9ZnVuY3Rpb24obyl7aWYoIVN5bWJvbC5hc3luY0l0ZXJhdG9yKXRocm93IG5ldyBUeXBlRXJyb3IoIlN5bWJvbC5hc3luY0l0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLiIpO3ZhciBlLHQ9b1tTeW1ib2wuYXN5bmNJdGVyYXRvcl07cmV0dXJuIHQ/dC5jYWxsKG8pOihvPSJmdW5jdGlvbiI9PXR5cGVvZiBfX3ZhbHVlcz9fX3ZhbHVlcyhvKTpvW1N5bWJvbC5pdGVyYXRvcl0oKSxlPXt9LHIoIm5leHQiKSxyKCJ0aHJvdyIpLHIoInJldHVybiIpLGVbU3ltYm9sLmFzeW5jSXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9LGUpO2Z1bmN0aW9uIHIoYSl7ZVthXT1vW2FdJiZmdW5jdGlvbihpKXtyZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24oZSx0KXt2YXIgcixuO2k9b1thXShpKSxyPWUsZT10LG49aS5kb25lLHQ9aS52YWx1ZSxQcm9taXNlLnJlc29sdmUodCkudGhlbihmdW5jdGlvbihlKXtyKHt2YWx1ZTplLGRvbmU6bn0pfSxlKX0pfX19O2NsYXNzIEp0e2NvbnN0cnVjdG9yKHQpe3RoaXMuX3N0YXRlPTAsdGhpcy5fcmVzdWx0cz1bXSx0aGlzLl9lcnJvcj1udWxsLHRoaXMuX29uU3RhdGVDaGFuZ2VkPW5ldyBYLHF1ZXVlTWljcm90YXNrKCgpPT4kdCh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24qKCl7Y29uc3QgZT17ZW1pdE9uZTplPT50aGlzLmVtaXRPbmUoZSksZW1pdE1hbnk6ZT0+dGhpcy5lbWl0TWFueShlKSxyZWplY3Q6ZT0+dGhpcy5yZWplY3QoZSl9O3RyeXt5aWVsZCBQcm9taXNlLnJlc29sdmUodChlKSksdGhpcy5yZXNvbHZlKCl9Y2F0Y2goZSl7dGhpcy5yZWplY3QoZSl9ZmluYWxseXtlLmVtaXRPbmU9dm9pZCAwLGUuZW1pdE1hbnk9dm9pZCAwLGUucmVqZWN0PXZvaWQgMH19KSl9c3RhdGljIGZyb21BcnJheSh0KXtyZXR1cm4gbmV3IEp0KGU9PntlLmVtaXRNYW55KHQpfSl9c3RhdGljIGZyb21Qcm9taXNlKHQpe3JldHVybiBuZXcgSnQoZT0+JHQodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe2UuZW1pdE1hbnkoeWllbGQgdCl9KSl9c3RhdGljIGZyb21Qcm9taXNlcyhlKXtyZXR1cm4gbmV3IEp0KHQ9PiR0KHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbiooKXt5aWVsZCBQcm9taXNlLmFsbChlLm1hcChlPT4kdCh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24qKCl7cmV0dXJuIHQuZW1pdE9uZSh5aWVsZCBlKX0pKSl9KSl9c3RhdGljIG1lcmdlKGUpe3JldHVybiBuZXcgSnQobz0+JHQodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe3lpZWxkIFByb21pc2UuYWxsKGUubWFwKG49Pnt2YXIgaSxhO3JldHVybiAkdCh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24qKCl7dmFyIHQsZTt0cnl7Zm9yKGk9R3Qobik7IShhPXlpZWxkIGkubmV4dCgpKS5kb25lOyl7dmFyIHI9YS52YWx1ZTtvLmVtaXRPbmUocil9fWNhdGNoKGUpe3Q9e2Vycm9yOmV9fWZpbmFsbHl7dHJ5e2EmJiFhLmRvbmUmJihlPWkucmV0dXJuKSYmKHlpZWxkIGUuY2FsbChpKSl9ZmluYWxseXtpZih0KXRocm93IHQuZXJyb3J9fX0pfSkpfSkpfVtTeW1ib2wuYXN5bmNJdGVyYXRvcl0oKXtsZXQgZT0wO3JldHVybntuZXh0OigpPT4kdCh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24qKCl7Zm9yKDs7KXtpZigyPT09dGhpcy5fc3RhdGUpdGhyb3cgdGhpcy5fZXJyb3I7aWYoZTx0aGlzLl9yZXN1bHRzLmxlbmd0aClyZXR1cm57ZG9uZTohMSx2YWx1ZTp0aGlzLl9yZXN1bHRzW2UrK119O2lmKDE9PT10aGlzLl9zdGF0ZSlyZXR1cm57ZG9uZTohMCx2YWx1ZTp2b2lkIDB9O3lpZWxkIFQudG9Qcm9taXNlKHRoaXMuX29uU3RhdGVDaGFuZ2VkLmV2ZW50KX19KX19c3RhdGljIG1hcChvLHMpe3JldHVybiBuZXcgSnQoYT0+JHQodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe3ZhciB0LGU7dHJ5e2Zvcih2YXIgcixuPUd0KG8pOyEocj15aWVsZCBuLm5leHQoKSkuZG9uZTspe3ZhciBpPXIudmFsdWU7YS5lbWl0T25lKHMoaSkpfX1jYXRjaChlKXt0PXtlcnJvcjplfX1maW5hbGx5e3RyeXtyJiYhci5kb25lJiYoZT1uLnJldHVybikmJih5aWVsZCBlLmNhbGwobikpfWZpbmFsbHl7aWYodCl0aHJvdyB0LmVycm9yfX19KSl9bWFwKGUpe3JldHVybiBKdC5tYXAodGhpcyxlKX1zdGF0aWMgZmlsdGVyKG8scyl7cmV0dXJuIG5ldyBKdChhPT4kdCh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24qKCl7dmFyIHQsZTt0cnl7Zm9yKHZhciByLG49R3Qobyk7IShyPXlpZWxkIG4ubmV4dCgpKS5kb25lOyl7dmFyIGk9ci52YWx1ZTtzKGkpJiZhLmVtaXRPbmUoaSl9fWNhdGNoKGUpe3Q9e2Vycm9yOmV9fWZpbmFsbHl7dHJ5e3ImJiFyLmRvbmUmJihlPW4ucmV0dXJuKSYmKHlpZWxkIGUuY2FsbChuKSl9ZmluYWxseXtpZih0KXRocm93IHQuZXJyb3J9fX0pKX1maWx0ZXIoZSl7cmV0dXJuIEp0LmZpbHRlcih0aGlzLGUpfXN0YXRpYyBjb2FsZXNjZShlKXtyZXR1cm4gSnQuZmlsdGVyKGUsZT0+ISFlKX1jb2FsZXNjZSgpe3JldHVybiBKdC5jb2FsZXNjZSh0aGlzKX1zdGF0aWMgdG9Qcm9taXNlKHIpe3ZhciBuLGksYSxvO3JldHVybiAkdCh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24qKCl7Y29uc3QgZT1bXTt0cnl7Zm9yKG49R3Qocik7IShpPXlpZWxkIG4ubmV4dCgpKS5kb25lOyl7dmFyIHQ9aS52YWx1ZTtlLnB1c2godCl9fWNhdGNoKGUpe2E9e2Vycm9yOmV9fWZpbmFsbHl7dHJ5e2kmJiFpLmRvbmUmJihvPW4ucmV0dXJuKSYmKHlpZWxkIG8uY2FsbChuKSl9ZmluYWxseXtpZihhKXRocm93IGEuZXJyb3J9fXJldHVybiBlfSl9dG9Qcm9taXNlKCl7cmV0dXJuIEp0LnRvUHJvbWlzZSh0aGlzKX1lbWl0T25lKGUpezA9PT10aGlzLl9zdGF0ZSYmKHRoaXMuX3Jlc3VsdHMucHVzaChlKSx0aGlzLl9vblN0YXRlQ2hhbmdlZC5maXJlKCkpfWVtaXRNYW55KGUpezA9PT10aGlzLl9zdGF0ZSYmKHRoaXMuX3Jlc3VsdHM9dGhpcy5fcmVzdWx0cy5jb25jYXQoZSksdGhpcy5fb25TdGF0ZUNoYW5nZWQuZmlyZSgpKX1yZXNvbHZlKCl7MD09PXRoaXMuX3N0YXRlJiYodGhpcy5fc3RhdGU9MSx0aGlzLl9vblN0YXRlQ2hhbmdlZC5maXJlKCkpfXJlamVjdChlKXswPT09dGhpcy5fc3RhdGUmJih0aGlzLl9zdGF0ZT0yLHRoaXMuX2Vycm9yPWUsdGhpcy5fb25TdGF0ZUNoYW5nZWQuZmlyZSgpKX19SnQuRU1QVFk9SnQuZnJvbUFycmF5KFtdKTtjbGFzcyBRdHtjb25zdHJ1Y3Rvcigpe3RoaXNbanRdPSJMaW5rZWRNYXAiLHRoaXMuX21hcD1uZXcgTWFwLHRoaXMuX2hlYWQ9dm9pZCAwLHRoaXMuX3RhaWw9dm9pZCAwLHRoaXMuX3NpemU9MCx0aGlzLl9zdGF0ZT0wfWNsZWFyKCl7dGhpcy5fbWFwLmNsZWFyKCksdGhpcy5faGVhZD12b2lkIDAsdGhpcy5fdGFpbD12b2lkIDAsdGhpcy5fc2l6ZT0wLHRoaXMuX3N0YXRlKyt9aXNFbXB0eSgpe3JldHVybiF0aGlzLl9oZWFkJiYhdGhpcy5fdGFpbH1nZXQgc2l6ZSgpe3JldHVybiB0aGlzLl9zaXplfWdldCBmaXJzdCgpe3ZhciBlO3JldHVybiBudWxsPT09KGU9dGhpcy5faGVhZCl8fHZvaWQgMD09PWU/dm9pZCAwOmUudmFsdWV9Z2V0IGxhc3QoKXt2YXIgZTtyZXR1cm4gbnVsbD09PShlPXRoaXMuX3RhaWwpfHx2b2lkIDA9PT1lP3ZvaWQgMDplLnZhbHVlfWhhcyhlKXtyZXR1cm4gdGhpcy5fbWFwLmhhcyhlKX1nZXQoZSx0PTApe2U9dGhpcy5fbWFwLmdldChlKTtpZihlKXJldHVybiAwIT09dCYmdGhpcy50b3VjaChlLHQpLGUudmFsdWV9c2V0KGUsdCxyPTApe2xldCBuPXRoaXMuX21hcC5nZXQoZSk7aWYobiluLnZhbHVlPXQsMCE9PXImJnRoaXMudG91Y2gobixyKTtlbHNle3N3aXRjaChuPXtrZXk6ZSx2YWx1ZTp0LG5leHQ6dm9pZCAwLHByZXZpb3VzOnZvaWQgMH0scil7Y2FzZSAwOnRoaXMuYWRkSXRlbUxhc3Qobik7YnJlYWs7Y2FzZSAxOnRoaXMuYWRkSXRlbUZpcnN0KG4pO2JyZWFrO2RlZmF1bHQ6dGhpcy5hZGRJdGVtTGFzdChuKX10aGlzLl9tYXAuc2V0KGUsbiksdGhpcy5fc2l6ZSsrfXJldHVybiB0aGlzfWRlbGV0ZShlKXtyZXR1cm4hIXRoaXMucmVtb3ZlKGUpfXJlbW92ZShlKXt2YXIgdD10aGlzLl9tYXAuZ2V0KGUpO2lmKHQpcmV0dXJuIHRoaXMuX21hcC5kZWxldGUoZSksdGhpcy5yZW1vdmVJdGVtKHQpLHRoaXMuX3NpemUtLSx0LnZhbHVlfXNoaWZ0KCl7aWYodGhpcy5faGVhZHx8dGhpcy5fdGFpbCl7aWYoIXRoaXMuX2hlYWR8fCF0aGlzLl90YWlsKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBsaXN0Iik7dmFyIGU9dGhpcy5faGVhZDtyZXR1cm4gdGhpcy5fbWFwLmRlbGV0ZShlLmtleSksdGhpcy5yZW1vdmVJdGVtKGUpLHRoaXMuX3NpemUtLSxlLnZhbHVlfX1mb3JFYWNoKGUsdCl7dmFyIHI9dGhpcy5fc3RhdGU7bGV0IG49dGhpcy5faGVhZDtmb3IoO247KXtpZigodD9lLmJpbmQodCk6ZSkobi52YWx1ZSxuLmtleSx0aGlzKSx0aGlzLl9zdGF0ZSE9PXIpdGhyb3cgbmV3IEVycm9yKCJMaW5rZWRNYXAgZ290IG1vZGlmaWVkIGR1cmluZyBpdGVyYXRpb24uIik7bj1uLm5leHR9fWtleXMoKXtjb25zdCB0PXRoaXMscj10aGlzLl9zdGF0ZTtsZXQgbj10aGlzLl9oZWFkO2NvbnN0IGU9e1tTeW1ib2wuaXRlcmF0b3JdKCl7cmV0dXJuIGV9LG5leHQoKXtpZih0Ll9zdGF0ZSE9PXIpdGhyb3cgbmV3IEVycm9yKCJMaW5rZWRNYXAgZ290IG1vZGlmaWVkIGR1cmluZyBpdGVyYXRpb24uIik7dmFyIGU7cmV0dXJuIG4/KGU9e3ZhbHVlOm4ua2V5LGRvbmU6ITF9LG49bi5uZXh0LGUpOnt2YWx1ZTp2b2lkIDAsZG9uZTohMH19fTtyZXR1cm4gZX12YWx1ZXMoKXtjb25zdCB0PXRoaXMscj10aGlzLl9zdGF0ZTtsZXQgbj10aGlzLl9oZWFkO2NvbnN0IGU9e1tTeW1ib2wuaXRlcmF0b3JdKCl7cmV0dXJuIGV9LG5leHQoKXtpZih0Ll9zdGF0ZSE9PXIpdGhyb3cgbmV3IEVycm9yKCJMaW5rZWRNYXAgZ290IG1vZGlmaWVkIGR1cmluZyBpdGVyYXRpb24uIik7dmFyIGU7cmV0dXJuIG4/KGU9e3ZhbHVlOm4udmFsdWUsZG9uZTohMX0sbj1uLm5leHQsZSk6e3ZhbHVlOnZvaWQgMCxkb25lOiEwfX19O3JldHVybiBlfWVudHJpZXMoKXtjb25zdCB0PXRoaXMscj10aGlzLl9zdGF0ZTtsZXQgbj10aGlzLl9oZWFkO2NvbnN0IGU9e1tTeW1ib2wuaXRlcmF0b3JdKCl7cmV0dXJuIGV9LG5leHQoKXtpZih0Ll9zdGF0ZSE9PXIpdGhyb3cgbmV3IEVycm9yKCJMaW5rZWRNYXAgZ290IG1vZGlmaWVkIGR1cmluZyBpdGVyYXRpb24uIik7dmFyIGU7cmV0dXJuIG4/KGU9e3ZhbHVlOltuLmtleSxuLnZhbHVlXSxkb25lOiExfSxuPW4ubmV4dCxlKTp7dmFsdWU6dm9pZCAwLGRvbmU6ITB9fX07cmV0dXJuIGV9WyhqdD1TeW1ib2wudG9TdHJpbmdUYWcsU3ltYm9sLml0ZXJhdG9yKV0oKXtyZXR1cm4gdGhpcy5lbnRyaWVzKCl9dHJpbU9sZChyKXtpZighKHI+PXRoaXMuc2l6ZSkpaWYoMCE9PXIpe2xldCBlPXRoaXMuX2hlYWQsdD10aGlzLnNpemU7Zm9yKDtlJiZ0PnI7KXRoaXMuX21hcC5kZWxldGUoZS5rZXkpLGU9ZS5uZXh0LHQtLTt0aGlzLl9oZWFkPWUsdGhpcy5fc2l6ZT10LGUmJihlLnByZXZpb3VzPXZvaWQgMCksdGhpcy5fc3RhdGUrK31lbHNlIHRoaXMuY2xlYXIoKX1hZGRJdGVtRmlyc3QoZSl7aWYodGhpcy5faGVhZHx8dGhpcy5fdGFpbCl7aWYoIXRoaXMuX2hlYWQpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGxpc3QiKTtlLm5leHQ9dGhpcy5faGVhZCx0aGlzLl9oZWFkLnByZXZpb3VzPWV9ZWxzZSB0aGlzLl90YWlsPWU7dGhpcy5faGVhZD1lLHRoaXMuX3N0YXRlKyt9YWRkSXRlbUxhc3QoZSl7aWYodGhpcy5faGVhZHx8dGhpcy5fdGFpbCl7aWYoIXRoaXMuX3RhaWwpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGxpc3QiKTtlLnByZXZpb3VzPXRoaXMuX3RhaWwsdGhpcy5fdGFpbC5uZXh0PWV9ZWxzZSB0aGlzLl9oZWFkPWU7dGhpcy5fdGFpbD1lLHRoaXMuX3N0YXRlKyt9cmVtb3ZlSXRlbShlKXtpZihlPT09dGhpcy5faGVhZCYmZT09PXRoaXMuX3RhaWwpdGhpcy5faGVhZD12b2lkIDAsdGhpcy5fdGFpbD12b2lkIDA7ZWxzZSBpZihlPT09dGhpcy5faGVhZCl7aWYoIWUubmV4dCl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgbGlzdCIpO2UubmV4dC5wcmV2aW91cz12b2lkIDAsdGhpcy5faGVhZD1lLm5leHR9ZWxzZSBpZihlPT09dGhpcy5fdGFpbCl7aWYoIWUucHJldmlvdXMpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGxpc3QiKTtlLnByZXZpb3VzLm5leHQ9dm9pZCAwLHRoaXMuX3RhaWw9ZS5wcmV2aW91c31lbHNle2NvbnN0IHQ9ZS5uZXh0LHI9ZS5wcmV2aW91cztpZighdHx8IXIpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGxpc3QiKTsodC5wcmV2aW91cz1yKS5uZXh0PXR9ZS5uZXh0PXZvaWQgMCxlLnByZXZpb3VzPXZvaWQgMCx0aGlzLl9zdGF0ZSsrfXRvdWNoKGUsdCl7aWYoIXRoaXMuX2hlYWR8fCF0aGlzLl90YWlsKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBsaXN0Iik7aWYoMT09PXR8fDI9PT10KWlmKDE9PT10KXtpZihlIT09dGhpcy5faGVhZCl7Y29uc3Qgcj1lLm5leHQsbj1lLnByZXZpb3VzO2U9PT10aGlzLl90YWlsPyhuLm5leHQ9dm9pZCAwLHRoaXMuX3RhaWw9bik6KHIucHJldmlvdXM9bikubmV4dD1yLGUucHJldmlvdXM9dm9pZCAwLGUubmV4dD10aGlzLl9oZWFkLHRoaXMuX2hlYWQucHJldmlvdXM9ZSx0aGlzLl9oZWFkPWUsdGhpcy5fc3RhdGUrK319ZWxzZSBpZigyPT09dCYmZSE9PXRoaXMuX3RhaWwpe2NvbnN0IGk9ZS5uZXh0LGE9ZS5wcmV2aW91cztlPT09dGhpcy5faGVhZD8oaS5wcmV2aW91cz12b2lkIDAsdGhpcy5faGVhZD1pKTooaS5wcmV2aW91cz1hKS5uZXh0PWksZS5uZXh0PXZvaWQgMCxlLnByZXZpb3VzPXRoaXMuX3RhaWwsdGhpcy5fdGFpbC5uZXh0PWUsdGhpcy5fdGFpbD1lLHRoaXMuX3N0YXRlKyt9fXRvSlNPTigpe2NvbnN0IHI9W107cmV0dXJuIHRoaXMuZm9yRWFjaCgoZSx0KT0+e3IucHVzaChbdCxlXSl9KSxyfWZyb21KU09OKGUpe3RoaXMuY2xlYXIoKTtmb3IodmFyW3Qscl1vZiBlKXRoaXMuc2V0KHQscil9fWNsYXNzIFl0IGV4dGVuZHMgUXR7Y29uc3RydWN0b3IoZSx0PTEpe3N1cGVyKCksdGhpcy5fbGltaXQ9ZSx0aGlzLl9yYXRpbz1NYXRoLm1pbihNYXRoLm1heCgwLHQpLDEpfWdldCBsaW1pdCgpe3JldHVybiB0aGlzLl9saW1pdH1zZXQgbGltaXQoZSl7dGhpcy5fbGltaXQ9ZSx0aGlzLmNoZWNrVHJpbSgpfWdldChlLHQ9Mil7cmV0dXJuIHN1cGVyLmdldChlLHQpfXBlZWsoZSl7cmV0dXJuIHN1cGVyLmdldChlLDApfXNldChlLHQpe3JldHVybiBzdXBlci5zZXQoZSx0LDIpLHRoaXMuY2hlY2tUcmltKCksdGhpc31jaGVja1RyaW0oKXt0aGlzLnNpemU+dGhpcy5fbGltaXQmJnRoaXMudHJpbU9sZChNYXRoLnJvdW5kKHRoaXMuX2xpbWl0KnRoaXMuX3JhdGlvKSl9fWNvbnN0IFp0PSIqKiIsWHQ9Ii8iLGVyPSJbL1xcXFxdIix0cj0iW14vXFxcXF0iLHJyPS9cLy9nO2Z1bmN0aW9uIG5yKGUpe3N3aXRjaChlKXtjYXNlIDA6cmV0dXJuIiI7Y2FzZSAxOnJldHVybiB0cisiKj8iO2RlZmF1bHQ6cmV0dXJuYCg/OiR7ZXJ9fCR7dHJ9KyR7ZXJ9fCR7ZXJ9JHt0cn0rKSo/YH19ZnVuY3Rpb24gaXIoZSx0KXtpZighZSlyZXR1cm5bXTtjb25zdCByPVtdO2xldCBuPSExLGk9ITEsYT0iIjtmb3IoY29uc3QgbyBvZiBlKXtzd2l0Y2gobyl7Y2FzZSB0OmlmKG58fGkpYnJlYWs7ci5wdXNoKGEpLGE9IiI7Y29udGludWU7Y2FzZSJ7IjpuPSEwO2JyZWFrO2Nhc2UifSI6bj0hMTticmVhaztjYXNlIlsiOmk9ITA7YnJlYWs7Y2FzZSJdIjppPSExfWErPW99cmV0dXJuIGEmJnIucHVzaChhKSxyfWZ1bmN0aW9uIGFyKCl7cmV0dXJuITF9Y29uc3Qgb3I9L15cKlwqXC9cKlwuW1x3XC4tXSskLyxzcj0vXlwqXCpcLyhbXHdcLi1dKylcLz8kLyxscj0vXntcKlwqXC9bXCpcLl0/W1x3XC4tXStcLz8oLFwqXCpcL1tcKlwuXT9bXHdcLi1dK1wvPykqfSQvLGhyPS9ee1wqXCpcL1tcKlwuXT9bXHdcLi1dKyhcLyhcKlwqKT8pPygsXCpcKlwvW1wqXC5dP1tcd1wuLV0rKFwvKFwqXCopPyk/KSp9JC8sdXI9L15cKlwqKChcL1tcd1wuLV0rKSspXC8/JC8sY3I9L14oW1x3XC4tXSsoXC9bXHdcLi1dKykqKVwvPyQvLGRyPW5ldyBZdCgxZTQpLGZyPWZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9O2Z1bmN0aW9uIG1yKGUsdCl7aWYoIWUpcmV0dXJuIGZyO2xldCByO3ZhciBuPShyPShyPSJzdHJpbmciIT10eXBlb2YgZT9lLnBhdHRlcm46ZSkudHJpbSgpKSsiXyIrISF0LnRyaW1Gb3JFeGNsdXNpb25zO2xldCBpPWRyLmdldChuKTtpZihpKXJldHVybiBncihpLGUpO2xldCBhO2lmKG9yLnRlc3Qocikpe2NvbnN0IG89ci5zdWJzdHIoNCk7aT1mdW5jdGlvbihlLHQpe3JldHVybiJzdHJpbmciPT10eXBlb2YgZSYmZS5lbmRzV2l0aChvKT9yOm51bGx9fWVsc2UgaT0oYT1zci5leGVjKGJyKHIsdCkpKT9mdW5jdGlvbihyLG4pe2Z1bmN0aW9uIGUoZSx0KXtyZXR1cm4ic3RyaW5nIiE9dHlwZW9mIGU/bnVsbDp0P3Q9PT1yP246bnVsbDplPT09cnx8ZS5lbmRzV2l0aChpKXx8ZS5lbmRzV2l0aChhKT9uOm51bGx9Y29uc3QgaT0iLyIrcixhPSJcXCIrcix0PVtyXTtyZXR1cm4gZS5iYXNlbmFtZXM9dCxlLnBhdHRlcm5zPVtuXSxlLmFsbEJhc2VuYW1lcz10LGV9KGFbMV0scik6KHQudHJpbUZvckV4Y2x1c2lvbnM/aHI6bHIpLnRlc3Qocik/ZnVuY3Rpb24oaSx0KXtjb25zdCBhPXdyKGkuc2xpY2UoMSwtMSkuc3BsaXQoIiwiKS5tYXAoZT0+bXIoZSx0KSkuZmlsdGVyKGU9PmUhPT1mciksaSksZT1hLmxlbmd0aDtpZighZSlyZXR1cm4gZnI7aWYoMT09PWUpcmV0dXJuIGFbMF07ZnVuY3Rpb24gcihyLG4pe2ZvcihsZXQgZT0wLHQ9YS5sZW5ndGg7ZTx0O2UrKylpZihhW2VdKHIsbikpcmV0dXJuIGk7cmV0dXJuIG51bGx9dmFyIG49YS5maW5kKGU9PiEhZS5hbGxCYXNlbmFtZXMpO24mJihyLmFsbEJhc2VuYW1lcz1uLmFsbEJhc2VuYW1lcyk7bj1hLnJlZHVjZSgoZSx0KT0+dC5hbGxQYXRocz9lLmNvbmNhdCh0LmFsbFBhdGhzKTplLFtdKTtuLmxlbmd0aCYmKHIuYWxsUGF0aHM9bik7cmV0dXJuIHJ9KHIsdCk6KGE9dXIuZXhlYyhicihyLHQpKSk/cHIoYVsxXS5zdWJzdHIoMSksciwhMCk6KGE9Y3IuZXhlYyhicihyLHQpKSk/cHIoYVsxXSxyLCExKTpmdW5jdGlvbih0KXt0cnl7Y29uc3Qgcj1uZXcgUmVnRXhwKGBeJHtmdW5jdGlvbiB1KGUpe2lmKCFlKXJldHVybiIiO2xldCBjPSIiO2NvbnN0IGQ9aXIoZSxYdCk7aWYoZC5ldmVyeShlPT5lPT09WnQpKWM9Ii4qIjtlbHNle2xldCBoPSExO2QuZm9yRWFjaCgoaSxhKT0+e2lmKGkhPT1adCl7bGV0IGU9ITEsdD0iIixyPSExLG49IiI7Zm9yKGNvbnN0IHMgb2YgaSlpZigifSIhPT1zJiZlKXQrPXM7ZWxzZSBpZighcnx8Il0iPT09cyYmbilzd2l0Y2gocyl7Y2FzZSJ7IjplPSEwO2NvbnRpbnVlO2Nhc2UiWyI6cj0hMDtjb250aW51ZTtjYXNlIn0iOntjb25zdCBsPWlyKHQsIiwiKTt2YXIgbz1gKD86JHtsLm1hcChlPT51KGUpKS5qb2luKCJ8Iil9KWA7Yys9byxlPSExLHQ9IiI7YnJlYWt9Y2FzZSJdIjpjKz0iWyIrbisiXSIscj0hMSxuPSIiO2JyZWFrO2Nhc2UiPyI6Yys9dHI7Y29udGludWU7Y2FzZSIqIjpjKz1ucigxKTtjb250aW51ZTtkZWZhdWx0OmMrPW5lKHMpfWVsc2V7bGV0IGU7ZT0iLSI9PT1zP3M6Il4iIT09cyYmIiEiIT09c3x8bj9zPT09WHQ/IiI6bmUocyk6Il4iLG4rPWV9YTxkLmxlbmd0aC0xJiYoZFthKzFdIT09WnR8fGErMjxkLmxlbmd0aCkmJihjKz1lciksaD0hMX1lbHNlIGh8fChjKz1ucigyKSxoPSEwKX0pfXJldHVybiBjfSh0KX0kYCk7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiByLmxhc3RJbmRleD0wLCJzdHJpbmciPT10eXBlb2YgZSYmci50ZXN0KGUpP3Q6bnVsbH19Y2F0Y2goZSl7cmV0dXJuIGZyfX0ocik7cmV0dXJuIGRyLnNldChuLGkpLGdyKGksZSl9ZnVuY3Rpb24gZ3IocixuKXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIG4/cjpmdW5jdGlvbihlLHQpe3JldHVybiBmdW5jdGlvbih0LHIsZSxuPVdlKXtpZih0PT09cilyZXR1cm4gMTtpZih0JiZyJiYhKHIubGVuZ3RoPnQubGVuZ3RoKSl7aWYoZSl7aWYoIXNlKHQscikpcmV0dXJuO2lmKHIubGVuZ3RoPT09dC5sZW5ndGgpcmV0dXJuIDE7bGV0IGU9ci5sZW5ndGg7cmV0dXJuIHIuY2hhckF0KHIubGVuZ3RoLTEpPT09biYmZS0tLHQuY2hhckF0KGUpPT09bn1yZXR1cm4gci5jaGFyQXQoci5sZW5ndGgtMSkhPT1uJiYocis9biksMD09PXQuaW5kZXhPZihyKX19KGUsbi5iYXNlLCFPKT9yKGUuc3Vic3RyKG4uYmFzZS5sZW5ndGgrMSksdCk6bnVsbH19ZnVuY3Rpb24gYnIoZSx0KXtyZXR1cm4gdC50cmltRm9yRXhjbHVzaW9ucyYmZS5lbmRzV2l0aCgiLyoqIik/ZS5zdWJzdHIoMCxlLmxlbmd0aC0yKTplfWZ1bmN0aW9uIHByKHIsbixlKXtjb25zdCBpPVdlPT09QmUuc2VwLGE9aT9yOnIucmVwbGFjZShycixXZSksbz1XZSthLHM9QmUuc2VwK3IsdD1lP2Z1bmN0aW9uKGUsdCl7cmV0dXJuInN0cmluZyIhPXR5cGVvZiBlfHxlIT09YSYmIWUuZW5kc1dpdGgobykmJihpfHxlIT09ciYmIWUuZW5kc1dpdGgocykpP251bGw6bn06ZnVuY3Rpb24oZSx0KXtyZXR1cm4ic3RyaW5nIiE9dHlwZW9mIGV8fGUhPT1hJiYoaXx8ZSE9PXIpP251bGw6bn07cmV0dXJuIHQuYWxsUGF0aHM9WyhlPyIqLyI6Ii4vIikrcl0sdH1mdW5jdGlvbiBDcihlLHQscil7cmV0dXJuIGUmJiJzdHJpbmciPT10eXBlb2YgdCYmZnVuY3Rpb24oZSx0PXt9KXtpZighZSlyZXR1cm4gYXI7aWYoInN0cmluZyI9PXR5cGVvZiBlfHxmdW5jdGlvbihlKXtyZXR1cm4hIWUmJigic3RyaW5nIj09dHlwZW9mIGUuYmFzZSYmInN0cmluZyI9PXR5cGVvZiBlLnBhdHRlcm4pfShlKSl7Y29uc3Qgbj1tcihlLHQpO2lmKG49PT1mcilyZXR1cm4gYXI7dmFyIHI9ZnVuY3Rpb24oZSx0KXtyZXR1cm4hIW4oZSx0KX07cmV0dXJuIG4uYWxsQmFzZW5hbWVzJiYoci5hbGxCYXNlbmFtZXM9bi5hbGxCYXNlbmFtZXMpLG4uYWxsUGF0aHMmJihyLmFsbFBhdGhzPW4uYWxsUGF0aHMpLHJ9cmV0dXJuIGZ1bmN0aW9uKHIsbil7Y29uc3QgbD13cihPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhyKS5tYXAoZT0+e3t2YXIgYT1lLHQ9KGU9cltlXSxuKTtpZighMT09PWUpcmV0dXJuIGZyO2NvbnN0IG89bXIoYSx0KTtpZihvPT09ZnIpcmV0dXJuIGZyO2lmKCJib29sZWFuIj09dHlwZW9mIGUpcmV0dXJuIG87aWYoZSl7Y29uc3Qgcz1lLndoZW47aWYoInN0cmluZyI9PXR5cGVvZiBzKXJldHVybih0PShlLHQscixuKT0+e2lmKCFufHwhbyhlLHQpKXJldHVybiBudWxsO2NvbnN0IGk9bihzLnJlcGxhY2UoIiQoYmFzZW5hbWUpIixyKSk7cmV0dXJuKGU9aSkmJiJmdW5jdGlvbiI9PXR5cGVvZiBlLnRoZW4/aS50aGVuKGU9PmU/YTpudWxsKTppP2E6bnVsbH0pLnJlcXVpcmVzU2libGluZ3M9ITAsdH1yZXR1cm4gb319KS5maWx0ZXIoZT0+ZSE9PWZyKSksZT1sLmxlbmd0aDtpZighZSlyZXR1cm4gZnI7aWYoIWwuc29tZShlPT4hIWUucmVxdWlyZXNTaWJsaW5ncykpe2lmKDE9PT1lKXJldHVybiBsWzBdO2NvbnN0IHQ9ZnVuY3Rpb24ocixuKXtmb3IobGV0IGU9MCx0PWwubGVuZ3RoO2U8dDtlKyspe3ZhciBpPWxbZV0ocixuKTtpZihpKXJldHVybiBpfXJldHVybiBudWxsfSxpPWwuZmluZChlPT4hIWUuYWxsQmFzZW5hbWVzKSxhPShpJiYodC5hbGxCYXNlbmFtZXM9aS5hbGxCYXNlbmFtZXMpLGwucmVkdWNlKChlLHQpPT50LmFsbFBhdGhzP2UuY29uY2F0KHQuYWxsUGF0aHMpOmUsW10pKTtyZXR1cm4gYS5sZW5ndGgmJih0LmFsbFBhdGhzPWEpLHR9Y29uc3QgdD1mdW5jdGlvbihyLG4saSl7bGV0IGE9dm9pZCAwO2ZvcihsZXQgZT0wLHQ9bC5sZW5ndGg7ZTx0O2UrKyl7Y29uc3Qgcz1sW2VdO3MucmVxdWlyZXNTaWJsaW5ncyYmaSYmKG49bnx8VWUociksYT1hfHxuLnN1YnN0cigwLG4ubGVuZ3RoLUhlKHIpLmxlbmd0aCkpO3ZhciBvPXMocixuLGEsaSk7aWYobylyZXR1cm4gb31yZXR1cm4gbnVsbH0saT1sLmZpbmQoZT0+ISFlLmFsbEJhc2VuYW1lcyk7aSYmKHQuYWxsQmFzZW5hbWVzPWkuYWxsQmFzZW5hbWVzKTtjb25zdCBhPWwucmVkdWNlKChlLHQpPT50LmFsbFBhdGhzP2UuY29uY2F0KHQuYWxsUGF0aHMpOmUsW10pO2EubGVuZ3RoJiYodC5hbGxQYXRocz1hKTtyZXR1cm4gdH0oZSx0KX0oZSkodCx2b2lkIDAscil9ZnVuY3Rpb24gd3IoZSxyKXtjb25zdCB0PWUuZmlsdGVyKGU9PiEhZS5iYXNlbmFtZXMpO2lmKHQubGVuZ3RoPDIpcmV0dXJuIGU7Y29uc3QgaT10LnJlZHVjZSgoZSx0KT0+e3Q9dC5iYXNlbmFtZXM7cmV0dXJuIHQ/ZS5jb25jYXQodCk6ZX0sW10pO2xldCBhO2lmKHIpe2E9W107Zm9yKGxldCBlPTAsdD1pLmxlbmd0aDtlPHQ7ZSsrKWEucHVzaChyKX1lbHNlIGE9dC5yZWR1Y2UoKGUsdCk9Pnt0PXQucGF0dGVybnM7cmV0dXJuIHQ/ZS5jb25jYXQodCk6ZX0sW10pO2Z1bmN0aW9uIG4odCxyKXtpZigic3RyaW5nIiE9dHlwZW9mIHQpcmV0dXJuIG51bGw7aWYoIXIpe2xldCBlO2ZvcihlPXQubGVuZ3RoOzA8ZTtlLS0pe3ZhciBuPXQuY2hhckNvZGVBdChlLTEpO2lmKDQ3PT09bnx8OTI9PT1uKWJyZWFrfXI9dC5zdWJzdHIoZSl9cmV0dXJuLTEhPT0ocj1pLmluZGV4T2YocikpP2Fbcl06bnVsbH1uLmJhc2VuYW1lcz1pLG4ucGF0dGVybnM9YSxuLmFsbEJhc2VuYW1lcz1pO2NvbnN0IG89ZS5maWx0ZXIoZT0+IWUuYmFzZW5hbWVzKTtyZXR1cm4gby5wdXNoKG4pLG99ZnVuY3Rpb24gX3IoZSl7cmV0dXJuInN0cmluZyIhPXR5cGVvZiBlJiYoQXJyYXkuaXNBcnJheShlKT9lLmV2ZXJ5KF9yKTohIWUuZXhjbHVzaXZlKX1jbGFzcyBhe2NvbnN0cnVjdG9yKCl7dGhpcy5fY2xvY2s9MCx0aGlzLl9lbnRyaWVzPVtdLHRoaXMuX29uRGlkQ2hhbmdlPW5ldyBYfWdldCBvbkRpZENoYW5nZSgpe3JldHVybiB0aGlzLl9vbkRpZENoYW5nZS5ldmVudH1yZWdpc3RlcihlLHQpe2xldCByPXtzZWxlY3RvcjplLHByb3ZpZGVyOnQsX3Njb3JlOi0xLF90aW1lOnRoaXMuX2Nsb2NrKyt9O3JldHVybiB0aGlzLl9lbnRyaWVzLnB1c2gociksdGhpcy5fbGFzdENhbmRpZGF0ZT12b2lkIDAsdGhpcy5fb25EaWRDaGFuZ2UuZmlyZSh0aGlzLl9lbnRyaWVzLmxlbmd0aCksdigoKT0+e3ZhciBlOyFyfHwwPD0oZT10aGlzLl9lbnRyaWVzLmluZGV4T2YocikpJiYodGhpcy5fZW50cmllcy5zcGxpY2UoZSwxKSx0aGlzLl9sYXN0Q2FuZGlkYXRlPXZvaWQgMCx0aGlzLl9vbkRpZENoYW5nZS5maXJlKHRoaXMuX2VudHJpZXMubGVuZ3RoKSxyPXZvaWQgMCl9KX1oYXMoZSl7cmV0dXJuIDA8dGhpcy5hbGwoZSkubGVuZ3RofWFsbChlKXtpZighZSlyZXR1cm5bXTt0aGlzLl91cGRhdGVTY29yZXMoZSk7Y29uc3QgdD1bXTtmb3IodmFyIHIgb2YgdGhpcy5fZW50cmllcykwPHIuX3Njb3JlJiZ0LnB1c2goci5wcm92aWRlcik7cmV0dXJuIHR9b3JkZXJlZChlKXtjb25zdCB0PVtdO3JldHVybiB0aGlzLl9vcmRlcmVkRm9yRWFjaChlLGU9PnQucHVzaChlLnByb3ZpZGVyKSksdH1vcmRlcmVkR3JvdXBzKGUpe2NvbnN0IHQ9W107bGV0IHIsbjtyZXR1cm4gdGhpcy5fb3JkZXJlZEZvckVhY2goZSxlPT57ciYmbj09PWUuX3Njb3JlP3IucHVzaChlLnByb3ZpZGVyKToobj1lLl9zY29yZSxyPVtlLnByb3ZpZGVyXSx0LnB1c2gocikpfSksdH1fb3JkZXJlZEZvckVhY2goZSx0KXtpZihlKXt0aGlzLl91cGRhdGVTY29yZXMoZSk7Zm9yKGNvbnN0IHIgb2YgdGhpcy5fZW50cmllcykwPHIuX3Njb3JlJiZ0KHIpfX1fdXBkYXRlU2NvcmVzKGUpe3ZhciB0LHI9e3VyaTplLnVyaS50b1N0cmluZygpLGxhbmd1YWdlOmUuZ2V0TGFuZ3VhZ2VJZCgpfTtpZighdGhpcy5fbGFzdENhbmRpZGF0ZXx8dGhpcy5fbGFzdENhbmRpZGF0ZS5sYW5ndWFnZSE9PXIubGFuZ3VhZ2V8fHRoaXMuX2xhc3RDYW5kaWRhdGUudXJpIT09ci51cmkpe3RoaXMuX2xhc3RDYW5kaWRhdGU9cjtmb3IodmFyIG4gb2YgdGhpcy5fZW50cmllcylpZihuLl9zY29yZT1mdW5jdGlvbiB0KHIsbixpLGEpe2lmKEFycmF5LmlzQXJyYXkocikpe2xldCBlPTA7Zm9yKGNvbnN0IGggb2Ygcil7dmFyIG89dChoLG4saSxhKTtpZigxMD09PW8pcmV0dXJuIG87bz5lJiYoZT1vKX1yZXR1cm4gZX1pZigic3RyaW5nIj09dHlwZW9mIHIpcmV0dXJuIGE/IioiPT09cj81OnI9PT1pPzEwOjA6MDtpZihyKXt2YXJ7bGFuZ3VhZ2U6cixwYXR0ZXJuOnMsc2NoZW1lOmUsaGFzQWNjZXNzVG9BbGxNb2RlbHM6bH09cjtpZighYSYmIWwpcmV0dXJuIDA7bGV0IHQ9MDtpZihlKWlmKGU9PT1uLnNjaGVtZSl0PTEwO2Vsc2V7aWYoIioiIT09ZSlyZXR1cm4gMDt0PTV9aWYocilpZihyPT09aSl0PTEwO2Vsc2V7aWYoIioiIT09cilyZXR1cm4gMDt0PU1hdGgubWF4KHQsNSl9aWYocyl7bGV0IGU7aWYoKGU9InN0cmluZyI9PXR5cGVvZiBzP3M6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHMpLHtiYXNlOnFlKHMuYmFzZSl9KSkhPT1uLmZzUGF0aCYmIUNyKGUsbi5mc1BhdGgpKXJldHVybiAwO3Q9MTB9cmV0dXJuIHR9cmV0dXJuIDB9KG4uc2VsZWN0b3IsZS51cmksZS5nZXRMYW5ndWFnZUlkKCksISh0PWUpLmlzVG9vTGFyZ2VGb3JTeW5jaW5nKCkmJiF0LmlzRm9yU2ltcGxlV2lkZ2V0KSxfcihuLnNlbGVjdG9yKSYmMDxuLl9zY29yZSl7Zm9yKHZhciBpIG9mIHRoaXMuX2VudHJpZXMpaS5fc2NvcmU9MDtuLl9zY29yZT0xZTM7YnJlYWt9dGhpcy5fZW50cmllcy5zb3J0KGEuX2NvbXBhcmVCeVNjb3JlQW5kVGltZSl9fXN0YXRpYyBfY29tcGFyZUJ5U2NvcmVBbmRUaW1lKGUsdCl7cmV0dXJuIGUuX3Njb3JlPHQuX3Njb3JlPzE6ZS5fc2NvcmU+dC5fc2NvcmU/LTE6ZS5fdGltZTx0Ll90aW1lPzE6ZS5fdGltZT50Ll90aW1lPy0xOjB9fXZhciB2cix5cixTcixMcixOcixFcixBcixrcj1mdW5jdGlvbihlLG8scyxsKXtyZXR1cm4gbmV3KHM9c3x8UHJvbWlzZSkoZnVuY3Rpb24ocix0KXtmdW5jdGlvbiBuKGUpe3RyeXthKGwubmV4dChlKSl9Y2F0Y2goZSl7dChlKX19ZnVuY3Rpb24gaShlKXt0cnl7YShsLnRocm93KGUpKX1jYXRjaChlKXt0KGUpfX1mdW5jdGlvbiBhKGUpe3ZhciB0O2UuZG9uZT9yKGUudmFsdWUpOigodD1lLnZhbHVlKWluc3RhbmNlb2Ygcz90Om5ldyBzKGZ1bmN0aW9uKGUpe2UodCl9KSkudGhlbihuLGkpfWEoKGw9bC5hcHBseShlLG98fFtdKSkubmV4dCgpKX0pfTtjbGFzcyB4ciBleHRlbmRzIFN7Y29uc3RydWN0b3IoZSx0LHIpe3N1cGVyKCksdGhpcy5fcmVnaXN0cnk9ZSx0aGlzLl9sYW5ndWFnZUlkPXQsdGhpcy5fZmFjdG9yeT1yLHRoaXMuX2lzRGlzcG9zZWQ9ITEsdGhpcy5fcmVzb2x2ZVByb21pc2U9bnVsbCx0aGlzLl9pc1Jlc29sdmVkPSExfWdldCBpc1Jlc29sdmVkKCl7cmV0dXJuIHRoaXMuX2lzUmVzb2x2ZWR9ZGlzcG9zZSgpe3RoaXMuX2lzRGlzcG9zZWQ9ITAsc3VwZXIuZGlzcG9zZSgpfXJlc29sdmUoKXtyZXR1cm4ga3IodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe3JldHVybiB0aGlzLl9yZXNvbHZlUHJvbWlzZXx8KHRoaXMuX3Jlc29sdmVQcm9taXNlPXRoaXMuX2NyZWF0ZSgpKSx0aGlzLl9yZXNvbHZlUHJvbWlzZX0pfV9jcmVhdGUoKXtyZXR1cm4ga3IodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe3ZhciBlPXlpZWxkIFByb21pc2UucmVzb2x2ZSh0aGlzLl9mYWN0b3J5LmNyZWF0ZVRva2VuaXphdGlvblN1cHBvcnQoKSk7dGhpcy5faXNSZXNvbHZlZD0hMCxlJiYhdGhpcy5faXNEaXNwb3NlZCYmdGhpcy5fcmVnaXN0ZXIodGhpcy5fcmVnaXN0cnkucmVnaXN0ZXIodGhpcy5fbGFuZ3VhZ2VJZCxlKSl9KX19Y2xhc3MgaXtjb25zdHJ1Y3RvcihlLHQscil7dGhpcy5pZD1lLHRoaXMuZGVmaW5pdGlvbj10LHRoaXMuZGVzY3JpcHRpb249cixpLl9hbGxDb2RpY29ucy5wdXNoKHRoaXMpfWdldCBjbGFzc05hbWVzKCl7cmV0dXJuImNvZGljb24gY29kaWNvbi0iK3RoaXMuaWR9Z2V0IGNsYXNzTmFtZXNBcnJheSgpe3JldHVyblsiY29kaWNvbiIsImNvZGljb24tIit0aGlzLmlkXX1nZXQgY3NzU2VsZWN0b3IoKXtyZXR1cm4iLmNvZGljb24uY29kaWNvbi0iK3RoaXMuaWR9c3RhdGljIGdldEFsbCgpe3JldHVybiBpLl9hbGxDb2RpY29uc319aS5fYWxsQ29kaWNvbnM9W10saS5hZGQ9bmV3IGkoImFkZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2MCJ9KSxpLnBsdXM9bmV3IGkoInBsdXMiLGkuYWRkLmRlZmluaXRpb24pLGkuZ2lzdE5ldz1uZXcgaSgiZ2lzdC1uZXciLGkuYWRkLmRlZmluaXRpb24pLGkucmVwb0NyZWF0ZT1uZXcgaSgicmVwby1jcmVhdGUiLGkuYWRkLmRlZmluaXRpb24pLGkubGlnaHRidWxiPW5ldyBpKCJsaWdodGJ1bGIiLHtmb250Q2hhcmFjdGVyOiJcXGVhNjEifSksaS5saWdodEJ1bGI9bmV3IGkoImxpZ2h0LWJ1bGIiLHtmb250Q2hhcmFjdGVyOiJcXGVhNjEifSksaS5yZXBvPW5ldyBpKCJyZXBvIix7Zm9udENoYXJhY3RlcjoiXFxlYTYyIn0pLGkucmVwb0RlbGV0ZT1uZXcgaSgicmVwby1kZWxldGUiLHtmb250Q2hhcmFjdGVyOiJcXGVhNjIifSksaS5naXN0Rm9yaz1uZXcgaSgiZ2lzdC1mb3JrIix7Zm9udENoYXJhY3RlcjoiXFxlYTYzIn0pLGkucmVwb0ZvcmtlZD1uZXcgaSgicmVwby1mb3JrZWQiLHtmb250Q2hhcmFjdGVyOiJcXGVhNjMifSksaS5naXRQdWxsUmVxdWVzdD1uZXcgaSgiZ2l0LXB1bGwtcmVxdWVzdCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2NCJ9KSxpLmdpdFB1bGxSZXF1ZXN0QWJhbmRvbmVkPW5ldyBpKCJnaXQtcHVsbC1yZXF1ZXN0LWFiYW5kb25lZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2NCJ9KSxpLnJlY29yZEtleXM9bmV3IGkoInJlY29yZC1rZXlzIix7Zm9udENoYXJhY3RlcjoiXFxlYTY1In0pLGkua2V5Ym9hcmQ9bmV3IGkoImtleWJvYXJkIix7Zm9udENoYXJhY3RlcjoiXFxlYTY1In0pLGkudGFnPW5ldyBpKCJ0YWciLHtmb250Q2hhcmFjdGVyOiJcXGVhNjYifSksaS50YWdBZGQ9bmV3IGkoInRhZy1hZGQiLHtmb250Q2hhcmFjdGVyOiJcXGVhNjYifSksaS50YWdSZW1vdmU9bmV3IGkoInRhZy1yZW1vdmUiLHtmb250Q2hhcmFjdGVyOiJcXGVhNjYifSksaS5wZXJzb249bmV3IGkoInBlcnNvbiIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2NyJ9KSxpLnBlcnNvbkZvbGxvdz1uZXcgaSgicGVyc29uLWZvbGxvdyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2NyJ9KSxpLnBlcnNvbk91dGxpbmU9bmV3IGkoInBlcnNvbi1vdXRsaW5lIix7Zm9udENoYXJhY3RlcjoiXFxlYTY3In0pLGkucGVyc29uRmlsbGVkPW5ldyBpKCJwZXJzb24tZmlsbGVkIix7Zm9udENoYXJhY3RlcjoiXFxlYTY3In0pLGkuZ2l0QnJhbmNoPW5ldyBpKCJnaXQtYnJhbmNoIix7Zm9udENoYXJhY3RlcjoiXFxlYTY4In0pLGkuZ2l0QnJhbmNoQ3JlYXRlPW5ldyBpKCJnaXQtYnJhbmNoLWNyZWF0ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2OCJ9KSxpLmdpdEJyYW5jaERlbGV0ZT1uZXcgaSgiZ2l0LWJyYW5jaC1kZWxldGUiLHtmb250Q2hhcmFjdGVyOiJcXGVhNjgifSksaS5zb3VyY2VDb250cm9sPW5ldyBpKCJzb3VyY2UtY29udHJvbCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2OCJ9KSxpLm1pcnJvcj1uZXcgaSgibWlycm9yIix7Zm9udENoYXJhY3RlcjoiXFxlYTY5In0pLGkubWlycm9yUHVibGljPW5ldyBpKCJtaXJyb3ItcHVibGljIix7Zm9udENoYXJhY3RlcjoiXFxlYTY5In0pLGkuc3Rhcj1uZXcgaSgic3RhciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2YSJ9KSxpLnN0YXJBZGQ9bmV3IGkoInN0YXItYWRkIix7Zm9udENoYXJhY3RlcjoiXFxlYTZhIn0pLGkuc3RhckRlbGV0ZT1uZXcgaSgic3Rhci1kZWxldGUiLHtmb250Q2hhcmFjdGVyOiJcXGVhNmEifSksaS5zdGFyRW1wdHk9bmV3IGkoInN0YXItZW1wdHkiLHtmb250Q2hhcmFjdGVyOiJcXGVhNmEifSksaS5jb21tZW50PW5ldyBpKCJjb21tZW50Iix7Zm9udENoYXJhY3RlcjoiXFxlYTZiIn0pLGkuY29tbWVudEFkZD1uZXcgaSgiY29tbWVudC1hZGQiLHtmb250Q2hhcmFjdGVyOiJcXGVhNmIifSksaS5hbGVydD1uZXcgaSgiYWxlcnQiLHtmb250Q2hhcmFjdGVyOiJcXGVhNmMifSksaS53YXJuaW5nPW5ldyBpKCJ3YXJuaW5nIix7Zm9udENoYXJhY3RlcjoiXFxlYTZjIn0pLGkuc2VhcmNoPW5ldyBpKCJzZWFyY2giLHtmb250Q2hhcmFjdGVyOiJcXGVhNmQifSksaS5zZWFyY2hTYXZlPW5ldyBpKCJzZWFyY2gtc2F2ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2ZCJ9KSxpLmxvZ091dD1uZXcgaSgibG9nLW91dCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2ZSJ9KSxpLnNpZ25PdXQ9bmV3IGkoInNpZ24tb3V0Iix7Zm9udENoYXJhY3RlcjoiXFxlYTZlIn0pLGkubG9nSW49bmV3IGkoImxvZy1pbiIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2ZiJ9KSxpLnNpZ25Jbj1uZXcgaSgic2lnbi1pbiIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2ZiJ9KSxpLmV5ZT1uZXcgaSgiZXllIix7Zm9udENoYXJhY3RlcjoiXFxlYTcwIn0pLGkuZXllVW53YXRjaD1uZXcgaSgiZXllLXVud2F0Y2giLHtmb250Q2hhcmFjdGVyOiJcXGVhNzAifSksaS5leWVXYXRjaD1uZXcgaSgiZXllLXdhdGNoIix7Zm9udENoYXJhY3RlcjoiXFxlYTcwIn0pLGkuY2lyY2xlRmlsbGVkPW5ldyBpKCJjaXJjbGUtZmlsbGVkIix7Zm9udENoYXJhY3RlcjoiXFxlYTcxIn0pLGkucHJpbWl0aXZlRG90PW5ldyBpKCJwcmltaXRpdmUtZG90Iix7Zm9udENoYXJhY3RlcjoiXFxlYTcxIn0pLGkuY2xvc2VEaXJ0eT1uZXcgaSgiY2xvc2UtZGlydHkiLHtmb250Q2hhcmFjdGVyOiJcXGVhNzEifSksaS5kZWJ1Z0JyZWFrcG9pbnQ9bmV3IGkoImRlYnVnLWJyZWFrcG9pbnQiLHtmb250Q2hhcmFjdGVyOiJcXGVhNzEifSksaS5kZWJ1Z0JyZWFrcG9pbnREaXNhYmxlZD1uZXcgaSgiZGVidWctYnJlYWtwb2ludC1kaXNhYmxlZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3MSJ9KSxpLmRlYnVnSGludD1uZXcgaSgiZGVidWctaGludCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3MSJ9KSxpLnByaW1pdGl2ZVNxdWFyZT1uZXcgaSgicHJpbWl0aXZlLXNxdWFyZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3MiJ9KSxpLmVkaXQ9bmV3IGkoImVkaXQiLHtmb250Q2hhcmFjdGVyOiJcXGVhNzMifSksaS5wZW5jaWw9bmV3IGkoInBlbmNpbCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3MyJ9KSxpLmluZm89bmV3IGkoImluZm8iLHtmb250Q2hhcmFjdGVyOiJcXGVhNzQifSksaS5pc3N1ZU9wZW5lZD1uZXcgaSgiaXNzdWUtb3BlbmVkIix7Zm9udENoYXJhY3RlcjoiXFxlYTc0In0pLGkuZ2lzdFByaXZhdGU9bmV3IGkoImdpc3QtcHJpdmF0ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3NSJ9KSxpLmdpdEZvcmtQcml2YXRlPW5ldyBpKCJnaXQtZm9yay1wcml2YXRlIix7Zm9udENoYXJhY3RlcjoiXFxlYTc1In0pLGkubG9jaz1uZXcgaSgibG9jayIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3NSJ9KSxpLm1pcnJvclByaXZhdGU9bmV3IGkoIm1pcnJvci1wcml2YXRlIix7Zm9udENoYXJhY3RlcjoiXFxlYTc1In0pLGkuY2xvc2U9bmV3IGkoImNsb3NlIix7Zm9udENoYXJhY3RlcjoiXFxlYTc2In0pLGkucmVtb3ZlQ2xvc2U9bmV3IGkoInJlbW92ZS1jbG9zZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3NiJ9KSxpLng9bmV3IGkoIngiLHtmb250Q2hhcmFjdGVyOiJcXGVhNzYifSksaS5yZXBvU3luYz1uZXcgaSgicmVwby1zeW5jIix7Zm9udENoYXJhY3RlcjoiXFxlYTc3In0pLGkuc3luYz1uZXcgaSgic3luYyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3NyJ9KSxpLmNsb25lPW5ldyBpKCJjbG9uZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3OCJ9KSxpLmRlc2t0b3BEb3dubG9hZD1uZXcgaSgiZGVza3RvcC1kb3dubG9hZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3OCJ9KSxpLmJlYWtlcj1uZXcgaSgiYmVha2VyIix7Zm9udENoYXJhY3RlcjoiXFxlYTc5In0pLGkubWljcm9zY29wZT1uZXcgaSgibWljcm9zY29wZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3OSJ9KSxpLnZtPW5ldyBpKCJ2bSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3YSJ9KSxpLmRldmljZURlc2t0b3A9bmV3IGkoImRldmljZS1kZXNrdG9wIix7Zm9udENoYXJhY3RlcjoiXFxlYTdhIn0pLGkuZmlsZT1uZXcgaSgiZmlsZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3YiJ9KSxpLmZpbGVUZXh0PW5ldyBpKCJmaWxlLXRleHQiLHtmb250Q2hhcmFjdGVyOiJcXGVhN2IifSksaS5tb3JlPW5ldyBpKCJtb3JlIix7Zm9udENoYXJhY3RlcjoiXFxlYTdjIn0pLGkuZWxsaXBzaXM9bmV3IGkoImVsbGlwc2lzIix7Zm9udENoYXJhY3RlcjoiXFxlYTdjIn0pLGkua2ViYWJIb3Jpem9udGFsPW5ldyBpKCJrZWJhYi1ob3Jpem9udGFsIix7Zm9udENoYXJhY3RlcjoiXFxlYTdjIn0pLGkubWFpbFJlcGx5PW5ldyBpKCJtYWlsLXJlcGx5Iix7Zm9udENoYXJhY3RlcjoiXFxlYTdkIn0pLGkucmVwbHk9bmV3IGkoInJlcGx5Iix7Zm9udENoYXJhY3RlcjoiXFxlYTdkIn0pLGkub3JnYW5pemF0aW9uPW5ldyBpKCJvcmdhbml6YXRpb24iLHtmb250Q2hhcmFjdGVyOiJcXGVhN2UifSksaS5vcmdhbml6YXRpb25GaWxsZWQ9bmV3IGkoIm9yZ2FuaXphdGlvbi1maWxsZWQiLHtmb250Q2hhcmFjdGVyOiJcXGVhN2UifSksaS5vcmdhbml6YXRpb25PdXRsaW5lPW5ldyBpKCJvcmdhbml6YXRpb24tb3V0bGluZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3ZSJ9KSxpLm5ld0ZpbGU9bmV3IGkoIm5ldy1maWxlIix7Zm9udENoYXJhY3RlcjoiXFxlYTdmIn0pLGkuZmlsZUFkZD1uZXcgaSgiZmlsZS1hZGQiLHtmb250Q2hhcmFjdGVyOiJcXGVhN2YifSksaS5uZXdGb2xkZXI9bmV3IGkoIm5ldy1mb2xkZXIiLHtmb250Q2hhcmFjdGVyOiJcXGVhODAifSksaS5maWxlRGlyZWN0b3J5Q3JlYXRlPW5ldyBpKCJmaWxlLWRpcmVjdG9yeS1jcmVhdGUiLHtmb250Q2hhcmFjdGVyOiJcXGVhODAifSksaS50cmFzaD1uZXcgaSgidHJhc2giLHtmb250Q2hhcmFjdGVyOiJcXGVhODEifSksaS50cmFzaGNhbj1uZXcgaSgidHJhc2hjYW4iLHtmb250Q2hhcmFjdGVyOiJcXGVhODEifSksaS5oaXN0b3J5PW5ldyBpKCJoaXN0b3J5Iix7Zm9udENoYXJhY3RlcjoiXFxlYTgyIn0pLGkuY2xvY2s9bmV3IGkoImNsb2NrIix7Zm9udENoYXJhY3RlcjoiXFxlYTgyIn0pLGkuZm9sZGVyPW5ldyBpKCJmb2xkZXIiLHtmb250Q2hhcmFjdGVyOiJcXGVhODMifSksaS5maWxlRGlyZWN0b3J5PW5ldyBpKCJmaWxlLWRpcmVjdG9yeSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE4MyJ9KSxpLnN5bWJvbEZvbGRlcj1uZXcgaSgic3ltYm9sLWZvbGRlciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE4MyJ9KSxpLmxvZ29HaXRodWI9bmV3IGkoImxvZ28tZ2l0aHViIix7Zm9udENoYXJhY3RlcjoiXFxlYTg0In0pLGkubWFya0dpdGh1Yj1uZXcgaSgibWFyay1naXRodWIiLHtmb250Q2hhcmFjdGVyOiJcXGVhODQifSksaS5naXRodWI9bmV3IGkoImdpdGh1YiIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE4NCJ9KSxpLnRlcm1pbmFsPW5ldyBpKCJ0ZXJtaW5hbCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE4NSJ9KSxpLmNvbnNvbGU9bmV3IGkoImNvbnNvbGUiLHtmb250Q2hhcmFjdGVyOiJcXGVhODUifSksaS5yZXBsPW5ldyBpKCJyZXBsIix7Zm9udENoYXJhY3RlcjoiXFxlYTg1In0pLGkuemFwPW5ldyBpKCJ6YXAiLHtmb250Q2hhcmFjdGVyOiJcXGVhODYifSksaS5zeW1ib2xFdmVudD1uZXcgaSgic3ltYm9sLWV2ZW50Iix7Zm9udENoYXJhY3RlcjoiXFxlYTg2In0pLGkuZXJyb3I9bmV3IGkoImVycm9yIix7Zm9udENoYXJhY3RlcjoiXFxlYTg3In0pLGkuc3RvcD1uZXcgaSgic3RvcCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE4NyJ9KSxpLnZhcmlhYmxlPW5ldyBpKCJ2YXJpYWJsZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE4OCJ9KSxpLnN5bWJvbFZhcmlhYmxlPW5ldyBpKCJzeW1ib2wtdmFyaWFibGUiLHtmb250Q2hhcmFjdGVyOiJcXGVhODgifSksaS5hcnJheT1uZXcgaSgiYXJyYXkiLHtmb250Q2hhcmFjdGVyOiJcXGVhOGEifSksaS5zeW1ib2xBcnJheT1uZXcgaSgic3ltYm9sLWFycmF5Iix7Zm9udENoYXJhY3RlcjoiXFxlYThhIn0pLGkuc3ltYm9sTW9kdWxlPW5ldyBpKCJzeW1ib2wtbW9kdWxlIix7Zm9udENoYXJhY3RlcjoiXFxlYThiIn0pLGkuc3ltYm9sUGFja2FnZT1uZXcgaSgic3ltYm9sLXBhY2thZ2UiLHtmb250Q2hhcmFjdGVyOiJcXGVhOGIifSksaS5zeW1ib2xOYW1lc3BhY2U9bmV3IGkoInN5bWJvbC1uYW1lc3BhY2UiLHtmb250Q2hhcmFjdGVyOiJcXGVhOGIifSksaS5zeW1ib2xPYmplY3Q9bmV3IGkoInN5bWJvbC1vYmplY3QiLHtmb250Q2hhcmFjdGVyOiJcXGVhOGIifSksaS5zeW1ib2xNZXRob2Q9bmV3IGkoInN5bWJvbC1tZXRob2QiLHtmb250Q2hhcmFjdGVyOiJcXGVhOGMifSksaS5zeW1ib2xGdW5jdGlvbj1uZXcgaSgic3ltYm9sLWZ1bmN0aW9uIix7Zm9udENoYXJhY3RlcjoiXFxlYThjIn0pLGkuc3ltYm9sQ29uc3RydWN0b3I9bmV3IGkoInN5bWJvbC1jb25zdHJ1Y3RvciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE4YyJ9KSxpLnN5bWJvbEJvb2xlYW49bmV3IGkoInN5bWJvbC1ib29sZWFuIix7Zm9udENoYXJhY3RlcjoiXFxlYThmIn0pLGkuc3ltYm9sTnVsbD1uZXcgaSgic3ltYm9sLW51bGwiLHtmb250Q2hhcmFjdGVyOiJcXGVhOGYifSksaS5zeW1ib2xOdW1lcmljPW5ldyBpKCJzeW1ib2wtbnVtZXJpYyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE5MCJ9KSxpLnN5bWJvbE51bWJlcj1uZXcgaSgic3ltYm9sLW51bWJlciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE5MCJ9KSxpLnN5bWJvbFN0cnVjdHVyZT1uZXcgaSgic3ltYm9sLXN0cnVjdHVyZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE5MSJ9KSxpLnN5bWJvbFN0cnVjdD1uZXcgaSgic3ltYm9sLXN0cnVjdCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE5MSJ9KSxpLnN5bWJvbFBhcmFtZXRlcj1uZXcgaSgic3ltYm9sLXBhcmFtZXRlciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE5MiJ9KSxpLnN5bWJvbFR5cGVQYXJhbWV0ZXI9bmV3IGkoInN5bWJvbC10eXBlLXBhcmFtZXRlciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE5MiJ9KSxpLnN5bWJvbEtleT1uZXcgaSgic3ltYm9sLWtleSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE5MyJ9KSxpLnN5bWJvbFRleHQ9bmV3IGkoInN5bWJvbC10ZXh0Iix7Zm9udENoYXJhY3RlcjoiXFxlYTkzIn0pLGkuc3ltYm9sUmVmZXJlbmNlPW5ldyBpKCJzeW1ib2wtcmVmZXJlbmNlIix7Zm9udENoYXJhY3RlcjoiXFxlYTk0In0pLGkuZ29Ub0ZpbGU9bmV3IGkoImdvLXRvLWZpbGUiLHtmb250Q2hhcmFjdGVyOiJcXGVhOTQifSksaS5zeW1ib2xFbnVtPW5ldyBpKCJzeW1ib2wtZW51bSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE5NSJ9KSxpLnN5bWJvbFZhbHVlPW5ldyBpKCJzeW1ib2wtdmFsdWUiLHtmb250Q2hhcmFjdGVyOiJcXGVhOTUifSksaS5zeW1ib2xSdWxlcj1uZXcgaSgic3ltYm9sLXJ1bGVyIix7Zm9udENoYXJhY3RlcjoiXFxlYTk2In0pLGkuc3ltYm9sVW5pdD1uZXcgaSgic3ltYm9sLXVuaXQiLHtmb250Q2hhcmFjdGVyOiJcXGVhOTYifSksaS5hY3RpdmF0ZUJyZWFrcG9pbnRzPW5ldyBpKCJhY3RpdmF0ZS1icmVha3BvaW50cyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE5NyJ9KSxpLmFyY2hpdmU9bmV3IGkoImFyY2hpdmUiLHtmb250Q2hhcmFjdGVyOiJcXGVhOTgifSksaS5hcnJvd0JvdGg9bmV3IGkoImFycm93LWJvdGgiLHtmb250Q2hhcmFjdGVyOiJcXGVhOTkifSksaS5hcnJvd0Rvd249bmV3IGkoImFycm93LWRvd24iLHtmb250Q2hhcmFjdGVyOiJcXGVhOWEifSksaS5hcnJvd0xlZnQ9bmV3IGkoImFycm93LWxlZnQiLHtmb250Q2hhcmFjdGVyOiJcXGVhOWIifSksaS5hcnJvd1JpZ2h0PW5ldyBpKCJhcnJvdy1yaWdodCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE5YyJ9KSxpLmFycm93U21hbGxEb3duPW5ldyBpKCJhcnJvdy1zbWFsbC1kb3duIix7Zm9udENoYXJhY3RlcjoiXFxlYTlkIn0pLGkuYXJyb3dTbWFsbExlZnQ9bmV3IGkoImFycm93LXNtYWxsLWxlZnQiLHtmb250Q2hhcmFjdGVyOiJcXGVhOWUifSksaS5hcnJvd1NtYWxsUmlnaHQ9bmV3IGkoImFycm93LXNtYWxsLXJpZ2h0Iix7Zm9udENoYXJhY3RlcjoiXFxlYTlmIn0pLGkuYXJyb3dTbWFsbFVwPW5ldyBpKCJhcnJvdy1zbWFsbC11cCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFhMCJ9KSxpLmFycm93VXA9bmV3IGkoImFycm93LXVwIix7Zm9udENoYXJhY3RlcjoiXFxlYWExIn0pLGkuYmVsbD1uZXcgaSgiYmVsbCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFhMiJ9KSxpLmJvbGQ9bmV3IGkoImJvbGQiLHtmb250Q2hhcmFjdGVyOiJcXGVhYTMifSksaS5ib29rPW5ldyBpKCJib29rIix7Zm9udENoYXJhY3RlcjoiXFxlYWE0In0pLGkuYm9va21hcms9bmV3IGkoImJvb2ttYXJrIix7Zm9udENoYXJhY3RlcjoiXFxlYWE1In0pLGkuZGVidWdCcmVha3BvaW50Q29uZGl0aW9uYWxVbnZlcmlmaWVkPW5ldyBpKCJkZWJ1Zy1icmVha3BvaW50LWNvbmRpdGlvbmFsLXVudmVyaWZpZWQiLHtmb250Q2hhcmFjdGVyOiJcXGVhYTYifSksaS5kZWJ1Z0JyZWFrcG9pbnRDb25kaXRpb25hbD1uZXcgaSgiZGVidWctYnJlYWtwb2ludC1jb25kaXRpb25hbCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFhNyJ9KSxpLmRlYnVnQnJlYWtwb2ludENvbmRpdGlvbmFsRGlzYWJsZWQ9bmV3IGkoImRlYnVnLWJyZWFrcG9pbnQtY29uZGl0aW9uYWwtZGlzYWJsZWQiLHtmb250Q2hhcmFjdGVyOiJcXGVhYTcifSksaS5kZWJ1Z0JyZWFrcG9pbnREYXRhVW52ZXJpZmllZD1uZXcgaSgiZGVidWctYnJlYWtwb2ludC1kYXRhLXVudmVyaWZpZWQiLHtmb250Q2hhcmFjdGVyOiJcXGVhYTgifSksaS5kZWJ1Z0JyZWFrcG9pbnREYXRhPW5ldyBpKCJkZWJ1Zy1icmVha3BvaW50LWRhdGEiLHtmb250Q2hhcmFjdGVyOiJcXGVhYTkifSksaS5kZWJ1Z0JyZWFrcG9pbnREYXRhRGlzYWJsZWQ9bmV3IGkoImRlYnVnLWJyZWFrcG9pbnQtZGF0YS1kaXNhYmxlZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFhOSJ9KSxpLmRlYnVnQnJlYWtwb2ludExvZ1VudmVyaWZpZWQ9bmV3IGkoImRlYnVnLWJyZWFrcG9pbnQtbG9nLXVudmVyaWZpZWQiLHtmb250Q2hhcmFjdGVyOiJcXGVhYWEifSksaS5kZWJ1Z0JyZWFrcG9pbnRMb2c9bmV3IGkoImRlYnVnLWJyZWFrcG9pbnQtbG9nIix7Zm9udENoYXJhY3RlcjoiXFxlYWFiIn0pLGkuZGVidWdCcmVha3BvaW50TG9nRGlzYWJsZWQ9bmV3IGkoImRlYnVnLWJyZWFrcG9pbnQtbG9nLWRpc2FibGVkIix7Zm9udENoYXJhY3RlcjoiXFxlYWFiIn0pLGkuYnJpZWZjYXNlPW5ldyBpKCJicmllZmNhc2UiLHtmb250Q2hhcmFjdGVyOiJcXGVhYWMifSksaS5icm9hZGNhc3Q9bmV3IGkoImJyb2FkY2FzdCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFhZCJ9KSxpLmJyb3dzZXI9bmV3IGkoImJyb3dzZXIiLHtmb250Q2hhcmFjdGVyOiJcXGVhYWUifSksaS5idWc9bmV3IGkoImJ1ZyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFhZiJ9KSxpLmNhbGVuZGFyPW5ldyBpKCJjYWxlbmRhciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFiMCJ9KSxpLmNhc2VTZW5zaXRpdmU9bmV3IGkoImNhc2Utc2Vuc2l0aXZlIix7Zm9udENoYXJhY3RlcjoiXFxlYWIxIn0pLGkuY2hlY2s9bmV3IGkoImNoZWNrIix7Zm9udENoYXJhY3RlcjoiXFxlYWIyIn0pLGkuY2hlY2tsaXN0PW5ldyBpKCJjaGVja2xpc3QiLHtmb250Q2hhcmFjdGVyOiJcXGVhYjMifSksaS5jaGV2cm9uRG93bj1uZXcgaSgiY2hldnJvbi1kb3duIix7Zm9udENoYXJhY3RlcjoiXFxlYWI0In0pLGkuZHJvcERvd25CdXR0b249bmV3IGkoImRyb3AtZG93bi1idXR0b24iLGkuY2hldnJvbkRvd24uZGVmaW5pdGlvbiksaS5jaGV2cm9uTGVmdD1uZXcgaSgiY2hldnJvbi1sZWZ0Iix7Zm9udENoYXJhY3RlcjoiXFxlYWI1In0pLGkuY2hldnJvblJpZ2h0PW5ldyBpKCJjaGV2cm9uLXJpZ2h0Iix7Zm9udENoYXJhY3RlcjoiXFxlYWI2In0pLGkuY2hldnJvblVwPW5ldyBpKCJjaGV2cm9uLXVwIix7Zm9udENoYXJhY3RlcjoiXFxlYWI3In0pLGkuY2hyb21lQ2xvc2U9bmV3IGkoImNocm9tZS1jbG9zZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFiOCJ9KSxpLmNocm9tZU1heGltaXplPW5ldyBpKCJjaHJvbWUtbWF4aW1pemUiLHtmb250Q2hhcmFjdGVyOiJcXGVhYjkifSksaS5jaHJvbWVNaW5pbWl6ZT1uZXcgaSgiY2hyb21lLW1pbmltaXplIix7Zm9udENoYXJhY3RlcjoiXFxlYWJhIn0pLGkuY2hyb21lUmVzdG9yZT1uZXcgaSgiY2hyb21lLXJlc3RvcmUiLHtmb250Q2hhcmFjdGVyOiJcXGVhYmIifSksaS5jaXJjbGVPdXRsaW5lPW5ldyBpKCJjaXJjbGUtb3V0bGluZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFiYyJ9KSxpLmRlYnVnQnJlYWtwb2ludFVudmVyaWZpZWQ9bmV3IGkoImRlYnVnLWJyZWFrcG9pbnQtdW52ZXJpZmllZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFiYyJ9KSxpLmNpcmNsZVNsYXNoPW5ldyBpKCJjaXJjbGUtc2xhc2giLHtmb250Q2hhcmFjdGVyOiJcXGVhYmQifSksaS5jaXJjdWl0Qm9hcmQ9bmV3IGkoImNpcmN1aXQtYm9hcmQiLHtmb250Q2hhcmFjdGVyOiJcXGVhYmUifSksaS5jbGVhckFsbD1uZXcgaSgiY2xlYXItYWxsIix7Zm9udENoYXJhY3RlcjoiXFxlYWJmIn0pLGkuY2xpcHB5PW5ldyBpKCJjbGlwcHkiLHtmb250Q2hhcmFjdGVyOiJcXGVhYzAifSksaS5jbG9zZUFsbD1uZXcgaSgiY2xvc2UtYWxsIix7Zm9udENoYXJhY3RlcjoiXFxlYWMxIn0pLGkuY2xvdWREb3dubG9hZD1uZXcgaSgiY2xvdWQtZG93bmxvYWQiLHtmb250Q2hhcmFjdGVyOiJcXGVhYzIifSksaS5jbG91ZFVwbG9hZD1uZXcgaSgiY2xvdWQtdXBsb2FkIix7Zm9udENoYXJhY3RlcjoiXFxlYWMzIn0pLGkuY29kZT1uZXcgaSgiY29kZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFjNCJ9KSxpLmNvbGxhcHNlQWxsPW5ldyBpKCJjb2xsYXBzZS1hbGwiLHtmb250Q2hhcmFjdGVyOiJcXGVhYzUifSksaS5jb2xvck1vZGU9bmV3IGkoImNvbG9yLW1vZGUiLHtmb250Q2hhcmFjdGVyOiJcXGVhYzYifSksaS5jb21tZW50RGlzY3Vzc2lvbj1uZXcgaSgiY29tbWVudC1kaXNjdXNzaW9uIix7Zm9udENoYXJhY3RlcjoiXFxlYWM3In0pLGkuY29tcGFyZUNoYW5nZXM9bmV3IGkoImNvbXBhcmUtY2hhbmdlcyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFmZCJ9KSxpLmNyZWRpdENhcmQ9bmV3IGkoImNyZWRpdC1jYXJkIix7Zm9udENoYXJhY3RlcjoiXFxlYWM5In0pLGkuZGFzaD1uZXcgaSgiZGFzaCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFjYyJ9KSxpLmRhc2hib2FyZD1uZXcgaSgiZGFzaGJvYXJkIix7Zm9udENoYXJhY3RlcjoiXFxlYWNkIn0pLGkuZGF0YWJhc2U9bmV3IGkoImRhdGFiYXNlIix7Zm9udENoYXJhY3RlcjoiXFxlYWNlIn0pLGkuZGVidWdDb250aW51ZT1uZXcgaSgiZGVidWctY29udGludWUiLHtmb250Q2hhcmFjdGVyOiJcXGVhY2YifSksaS5kZWJ1Z0Rpc2Nvbm5lY3Q9bmV3IGkoImRlYnVnLWRpc2Nvbm5lY3QiLHtmb250Q2hhcmFjdGVyOiJcXGVhZDAifSksaS5kZWJ1Z1BhdXNlPW5ldyBpKCJkZWJ1Zy1wYXVzZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFkMSJ9KSxpLmRlYnVnUmVzdGFydD1uZXcgaSgiZGVidWctcmVzdGFydCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFkMiJ9KSxpLmRlYnVnU3RhcnQ9bmV3IGkoImRlYnVnLXN0YXJ0Iix7Zm9udENoYXJhY3RlcjoiXFxlYWQzIn0pLGkuZGVidWdTdGVwSW50bz1uZXcgaSgiZGVidWctc3RlcC1pbnRvIix7Zm9udENoYXJhY3RlcjoiXFxlYWQ0In0pLGkuZGVidWdTdGVwT3V0PW5ldyBpKCJkZWJ1Zy1zdGVwLW91dCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFkNSJ9KSxpLmRlYnVnU3RlcE92ZXI9bmV3IGkoImRlYnVnLXN0ZXAtb3ZlciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFkNiJ9KSxpLmRlYnVnU3RvcD1uZXcgaSgiZGVidWctc3RvcCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFkNyJ9KSxpLmRlYnVnPW5ldyBpKCJkZWJ1ZyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFkOCJ9KSxpLmRldmljZUNhbWVyYVZpZGVvPW5ldyBpKCJkZXZpY2UtY2FtZXJhLXZpZGVvIix7Zm9udENoYXJhY3RlcjoiXFxlYWQ5In0pLGkuZGV2aWNlQ2FtZXJhPW5ldyBpKCJkZXZpY2UtY2FtZXJhIix7Zm9udENoYXJhY3RlcjoiXFxlYWRhIn0pLGkuZGV2aWNlTW9iaWxlPW5ldyBpKCJkZXZpY2UtbW9iaWxlIix7Zm9udENoYXJhY3RlcjoiXFxlYWRiIn0pLGkuZGlmZkFkZGVkPW5ldyBpKCJkaWZmLWFkZGVkIix7Zm9udENoYXJhY3RlcjoiXFxlYWRjIn0pLGkuZGlmZklnbm9yZWQ9bmV3IGkoImRpZmYtaWdub3JlZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFkZCJ9KSxpLmRpZmZNb2RpZmllZD1uZXcgaSgiZGlmZi1tb2RpZmllZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFkZSJ9KSxpLmRpZmZSZW1vdmVkPW5ldyBpKCJkaWZmLXJlbW92ZWQiLHtmb250Q2hhcmFjdGVyOiJcXGVhZGYifSksaS5kaWZmUmVuYW1lZD1uZXcgaSgiZGlmZi1yZW5hbWVkIix7Zm9udENoYXJhY3RlcjoiXFxlYWUwIn0pLGkuZGlmZj1uZXcgaSgiZGlmZiIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFlMSJ9KSxpLmRpc2NhcmQ9bmV3IGkoImRpc2NhcmQiLHtmb250Q2hhcmFjdGVyOiJcXGVhZTIifSksaS5lZGl0b3JMYXlvdXQ9bmV3IGkoImVkaXRvci1sYXlvdXQiLHtmb250Q2hhcmFjdGVyOiJcXGVhZTMifSksaS5lbXB0eVdpbmRvdz1uZXcgaSgiZW1wdHktd2luZG93Iix7Zm9udENoYXJhY3RlcjoiXFxlYWU0In0pLGkuZXhjbHVkZT1uZXcgaSgiZXhjbHVkZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFlNSJ9KSxpLmV4dGVuc2lvbnM9bmV3IGkoImV4dGVuc2lvbnMiLHtmb250Q2hhcmFjdGVyOiJcXGVhZTYifSksaS5leWVDbG9zZWQ9bmV3IGkoImV5ZS1jbG9zZWQiLHtmb250Q2hhcmFjdGVyOiJcXGVhZTcifSksaS5maWxlQmluYXJ5PW5ldyBpKCJmaWxlLWJpbmFyeSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFlOCJ9KSxpLmZpbGVDb2RlPW5ldyBpKCJmaWxlLWNvZGUiLHtmb250Q2hhcmFjdGVyOiJcXGVhZTkifSksaS5maWxlTWVkaWE9bmV3IGkoImZpbGUtbWVkaWEiLHtmb250Q2hhcmFjdGVyOiJcXGVhZWEifSksaS5maWxlUGRmPW5ldyBpKCJmaWxlLXBkZiIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFlYiJ9KSxpLmZpbGVTdWJtb2R1bGU9bmV3IGkoImZpbGUtc3VibW9kdWxlIix7Zm9udENoYXJhY3RlcjoiXFxlYWVjIn0pLGkuZmlsZVN5bWxpbmtEaXJlY3Rvcnk9bmV3IGkoImZpbGUtc3ltbGluay1kaXJlY3RvcnkiLHtmb250Q2hhcmFjdGVyOiJcXGVhZWQifSksaS5maWxlU3ltbGlua0ZpbGU9bmV3IGkoImZpbGUtc3ltbGluay1maWxlIix7Zm9udENoYXJhY3RlcjoiXFxlYWVlIn0pLGkuZmlsZVppcD1uZXcgaSgiZmlsZS16aXAiLHtmb250Q2hhcmFjdGVyOiJcXGVhZWYifSksaS5maWxlcz1uZXcgaSgiZmlsZXMiLHtmb250Q2hhcmFjdGVyOiJcXGVhZjAifSksaS5maWx0ZXI9bmV3IGkoImZpbHRlciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFmMSJ9KSxpLmZsYW1lPW5ldyBpKCJmbGFtZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFmMiJ9KSxpLmZvbGREb3duPW5ldyBpKCJmb2xkLWRvd24iLHtmb250Q2hhcmFjdGVyOiJcXGVhZjMifSksaS5mb2xkVXA9bmV3IGkoImZvbGQtdXAiLHtmb250Q2hhcmFjdGVyOiJcXGVhZjQifSksaS5mb2xkPW5ldyBpKCJmb2xkIix7Zm9udENoYXJhY3RlcjoiXFxlYWY1In0pLGkuZm9sZGVyQWN0aXZlPW5ldyBpKCJmb2xkZXItYWN0aXZlIix7Zm9udENoYXJhY3RlcjoiXFxlYWY2In0pLGkuZm9sZGVyT3BlbmVkPW5ldyBpKCJmb2xkZXItb3BlbmVkIix7Zm9udENoYXJhY3RlcjoiXFxlYWY3In0pLGkuZ2Vhcj1uZXcgaSgiZ2VhciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFmOCJ9KSxpLmdpZnQ9bmV3IGkoImdpZnQiLHtmb250Q2hhcmFjdGVyOiJcXGVhZjkifSksaS5naXN0U2VjcmV0PW5ldyBpKCJnaXN0LXNlY3JldCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFmYSJ9KSxpLmdpc3Q9bmV3IGkoImdpc3QiLHtmb250Q2hhcmFjdGVyOiJcXGVhZmIifSksaS5naXRDb21taXQ9bmV3IGkoImdpdC1jb21taXQiLHtmb250Q2hhcmFjdGVyOiJcXGVhZmMifSksaS5naXRDb21wYXJlPW5ldyBpKCJnaXQtY29tcGFyZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFmZCJ9KSxpLmdpdE1lcmdlPW5ldyBpKCJnaXQtbWVyZ2UiLHtmb250Q2hhcmFjdGVyOiJcXGVhZmUifSksaS5naXRodWJBY3Rpb249bmV3IGkoImdpdGh1Yi1hY3Rpb24iLHtmb250Q2hhcmFjdGVyOiJcXGVhZmYifSksaS5naXRodWJBbHQ9bmV3IGkoImdpdGh1Yi1hbHQiLHtmb250Q2hhcmFjdGVyOiJcXGViMDAifSksaS5nbG9iZT1uZXcgaSgiZ2xvYmUiLHtmb250Q2hhcmFjdGVyOiJcXGViMDEifSksaS5ncmFiYmVyPW5ldyBpKCJncmFiYmVyIix7Zm9udENoYXJhY3RlcjoiXFxlYjAyIn0pLGkuZ3JhcGg9bmV3IGkoImdyYXBoIix7Zm9udENoYXJhY3RlcjoiXFxlYjAzIn0pLGkuZ3JpcHBlcj1uZXcgaSgiZ3JpcHBlciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIwNCJ9KSxpLmhlYXJ0PW5ldyBpKCJoZWFydCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIwNSJ9KSxpLmhvbWU9bmV3IGkoImhvbWUiLHtmb250Q2hhcmFjdGVyOiJcXGViMDYifSksaS5ob3Jpem9udGFsUnVsZT1uZXcgaSgiaG9yaXpvbnRhbC1ydWxlIix7Zm9udENoYXJhY3RlcjoiXFxlYjA3In0pLGkuaHVib3Q9bmV3IGkoImh1Ym90Iix7Zm9udENoYXJhY3RlcjoiXFxlYjA4In0pLGkuaW5ib3g9bmV3IGkoImluYm94Iix7Zm9udENoYXJhY3RlcjoiXFxlYjA5In0pLGkuaXNzdWVDbG9zZWQ9bmV3IGkoImlzc3VlLWNsb3NlZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJhNCJ9KSxpLmlzc3VlUmVvcGVuZWQ9bmV3IGkoImlzc3VlLXJlb3BlbmVkIix7Zm9udENoYXJhY3RlcjoiXFxlYjBiIn0pLGkuaXNzdWVzPW5ldyBpKCJpc3N1ZXMiLHtmb250Q2hhcmFjdGVyOiJcXGViMGMifSksaS5pdGFsaWM9bmV3IGkoIml0YWxpYyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIwZCJ9KSxpLmplcnNleT1uZXcgaSgiamVyc2V5Iix7Zm9udENoYXJhY3RlcjoiXFxlYjBlIn0pLGkuanNvbj1uZXcgaSgianNvbiIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIwZiJ9KSxpLmtlYmFiVmVydGljYWw9bmV3IGkoImtlYmFiLXZlcnRpY2FsIix7Zm9udENoYXJhY3RlcjoiXFxlYjEwIn0pLGkua2V5PW5ldyBpKCJrZXkiLHtmb250Q2hhcmFjdGVyOiJcXGViMTEifSksaS5sYXc9bmV3IGkoImxhdyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIxMiJ9KSxpLmxpZ2h0YnVsYkF1dG9maXg9bmV3IGkoImxpZ2h0YnVsYi1hdXRvZml4Iix7Zm9udENoYXJhY3RlcjoiXFxlYjEzIn0pLGkubGlua0V4dGVybmFsPW5ldyBpKCJsaW5rLWV4dGVybmFsIix7Zm9udENoYXJhY3RlcjoiXFxlYjE0In0pLGkubGluaz1uZXcgaSgibGluayIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIxNSJ9KSxpLmxpc3RPcmRlcmVkPW5ldyBpKCJsaXN0LW9yZGVyZWQiLHtmb250Q2hhcmFjdGVyOiJcXGViMTYifSksaS5saXN0VW5vcmRlcmVkPW5ldyBpKCJsaXN0LXVub3JkZXJlZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIxNyJ9KSxpLmxpdmVTaGFyZT1uZXcgaSgibGl2ZS1zaGFyZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIxOCJ9KSxpLmxvYWRpbmc9bmV3IGkoImxvYWRpbmciLHtmb250Q2hhcmFjdGVyOiJcXGViMTkifSksaS5sb2NhdGlvbj1uZXcgaSgibG9jYXRpb24iLHtmb250Q2hhcmFjdGVyOiJcXGViMWEifSksaS5tYWlsUmVhZD1uZXcgaSgibWFpbC1yZWFkIix7Zm9udENoYXJhY3RlcjoiXFxlYjFiIn0pLGkubWFpbD1uZXcgaSgibWFpbCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIxYyJ9KSxpLm1hcmtkb3duPW5ldyBpKCJtYXJrZG93biIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIxZCJ9KSxpLm1lZ2FwaG9uZT1uZXcgaSgibWVnYXBob25lIix7Zm9udENoYXJhY3RlcjoiXFxlYjFlIn0pLGkubWVudGlvbj1uZXcgaSgibWVudGlvbiIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIxZiJ9KSxpLm1pbGVzdG9uZT1uZXcgaSgibWlsZXN0b25lIix7Zm9udENoYXJhY3RlcjoiXFxlYjIwIn0pLGkubW9ydGFyQm9hcmQ9bmV3IGkoIm1vcnRhci1ib2FyZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIyMSJ9KSxpLm1vdmU9bmV3IGkoIm1vdmUiLHtmb250Q2hhcmFjdGVyOiJcXGViMjIifSksaS5tdWx0aXBsZVdpbmRvd3M9bmV3IGkoIm11bHRpcGxlLXdpbmRvd3MiLHtmb250Q2hhcmFjdGVyOiJcXGViMjMifSksaS5tdXRlPW5ldyBpKCJtdXRlIix7Zm9udENoYXJhY3RlcjoiXFxlYjI0In0pLGkubm9OZXdsaW5lPW5ldyBpKCJuby1uZXdsaW5lIix7Zm9udENoYXJhY3RlcjoiXFxlYjI1In0pLGkubm90ZT1uZXcgaSgibm90ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIyNiJ9KSxpLm9jdG9mYWNlPW5ldyBpKCJvY3RvZmFjZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIyNyJ9KSxpLm9wZW5QcmV2aWV3PW5ldyBpKCJvcGVuLXByZXZpZXciLHtmb250Q2hhcmFjdGVyOiJcXGViMjgifSksaS5wYWNrYWdlXz1uZXcgaSgicGFja2FnZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIyOSJ9KSxpLnBhaW50Y2FuPW5ldyBpKCJwYWludGNhbiIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIyYSJ9KSxpLnBpbj1uZXcgaSgicGluIix7Zm9udENoYXJhY3RlcjoiXFxlYjJiIn0pLGkucGxheT1uZXcgaSgicGxheSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIyYyJ9KSxpLnJ1bj1uZXcgaSgicnVuIix7Zm9udENoYXJhY3RlcjoiXFxlYjJjIn0pLGkucGx1Zz1uZXcgaSgicGx1ZyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIyZCJ9KSxpLnByZXNlcnZlQ2FzZT1uZXcgaSgicHJlc2VydmUtY2FzZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIyZSJ9KSxpLnByZXZpZXc9bmV3IGkoInByZXZpZXciLHtmb250Q2hhcmFjdGVyOiJcXGViMmYifSksaS5wcm9qZWN0PW5ldyBpKCJwcm9qZWN0Iix7Zm9udENoYXJhY3RlcjoiXFxlYjMwIn0pLGkucHVsc2U9bmV3IGkoInB1bHNlIix7Zm9udENoYXJhY3RlcjoiXFxlYjMxIn0pLGkucXVlc3Rpb249bmV3IGkoInF1ZXN0aW9uIix7Zm9udENoYXJhY3RlcjoiXFxlYjMyIn0pLGkucXVvdGU9bmV3IGkoInF1b3RlIix7Zm9udENoYXJhY3RlcjoiXFxlYjMzIn0pLGkucmFkaW9Ub3dlcj1uZXcgaSgicmFkaW8tdG93ZXIiLHtmb250Q2hhcmFjdGVyOiJcXGViMzQifSksaS5yZWFjdGlvbnM9bmV3IGkoInJlYWN0aW9ucyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIzNSJ9KSxpLnJlZmVyZW5jZXM9bmV3IGkoInJlZmVyZW5jZXMiLHtmb250Q2hhcmFjdGVyOiJcXGViMzYifSksaS5yZWZyZXNoPW5ldyBpKCJyZWZyZXNoIix7Zm9udENoYXJhY3RlcjoiXFxlYjM3In0pLGkucmVnZXg9bmV3IGkoInJlZ2V4Iix7Zm9udENoYXJhY3RlcjoiXFxlYjM4In0pLGkucmVtb3RlRXhwbG9yZXI9bmV3IGkoInJlbW90ZS1leHBsb3JlciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIzOSJ9KSxpLnJlbW90ZT1uZXcgaSgicmVtb3RlIix7Zm9udENoYXJhY3RlcjoiXFxlYjNhIn0pLGkucmVtb3ZlPW5ldyBpKCJyZW1vdmUiLHtmb250Q2hhcmFjdGVyOiJcXGViM2IifSksaS5yZXBsYWNlQWxsPW5ldyBpKCJyZXBsYWNlLWFsbCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIzYyJ9KSxpLnJlcGxhY2U9bmV3IGkoInJlcGxhY2UiLHtmb250Q2hhcmFjdGVyOiJcXGViM2QifSksaS5yZXBvQ2xvbmU9bmV3IGkoInJlcG8tY2xvbmUiLHtmb250Q2hhcmFjdGVyOiJcXGViM2UifSksaS5yZXBvRm9yY2VQdXNoPW5ldyBpKCJyZXBvLWZvcmNlLXB1c2giLHtmb250Q2hhcmFjdGVyOiJcXGViM2YifSksaS5yZXBvUHVsbD1uZXcgaSgicmVwby1wdWxsIix7Zm9udENoYXJhY3RlcjoiXFxlYjQwIn0pLGkucmVwb1B1c2g9bmV3IGkoInJlcG8tcHVzaCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI0MSJ9KSxpLnJlcG9ydD1uZXcgaSgicmVwb3J0Iix7Zm9udENoYXJhY3RlcjoiXFxlYjQyIn0pLGkucmVxdWVzdENoYW5nZXM9bmV3IGkoInJlcXVlc3QtY2hhbmdlcyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI0MyJ9KSxpLnJvY2tldD1uZXcgaSgicm9ja2V0Iix7Zm9udENoYXJhY3RlcjoiXFxlYjQ0In0pLGkucm9vdEZvbGRlck9wZW5lZD1uZXcgaSgicm9vdC1mb2xkZXItb3BlbmVkIix7Zm9udENoYXJhY3RlcjoiXFxlYjQ1In0pLGkucm9vdEZvbGRlcj1uZXcgaSgicm9vdC1mb2xkZXIiLHtmb250Q2hhcmFjdGVyOiJcXGViNDYifSksaS5yc3M9bmV3IGkoInJzcyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI0NyJ9KSxpLnJ1Ynk9bmV3IGkoInJ1YnkiLHtmb250Q2hhcmFjdGVyOiJcXGViNDgifSksaS5zYXZlQWxsPW5ldyBpKCJzYXZlLWFsbCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI0OSJ9KSxpLnNhdmVBcz1uZXcgaSgic2F2ZS1hcyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI0YSJ9KSxpLnNhdmU9bmV3IGkoInNhdmUiLHtmb250Q2hhcmFjdGVyOiJcXGViNGIifSksaS5zY3JlZW5GdWxsPW5ldyBpKCJzY3JlZW4tZnVsbCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI0YyJ9KSxpLnNjcmVlbk5vcm1hbD1uZXcgaSgic2NyZWVuLW5vcm1hbCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI0ZCJ9KSxpLnNlYXJjaFN0b3A9bmV3IGkoInNlYXJjaC1zdG9wIix7Zm9udENoYXJhY3RlcjoiXFxlYjRlIn0pLGkuc2VydmVyPW5ldyBpKCJzZXJ2ZXIiLHtmb250Q2hhcmFjdGVyOiJcXGViNTAifSksaS5zZXR0aW5nc0dlYXI9bmV3IGkoInNldHRpbmdzLWdlYXIiLHtmb250Q2hhcmFjdGVyOiJcXGViNTEifSksaS5zZXR0aW5ncz1uZXcgaSgic2V0dGluZ3MiLHtmb250Q2hhcmFjdGVyOiJcXGViNTIifSksaS5zaGllbGQ9bmV3IGkoInNoaWVsZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI1MyJ9KSxpLnNtaWxleT1uZXcgaSgic21pbGV5Iix7Zm9udENoYXJhY3RlcjoiXFxlYjU0In0pLGkuc29ydFByZWNlZGVuY2U9bmV3IGkoInNvcnQtcHJlY2VkZW5jZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI1NSJ9KSxpLnNwbGl0SG9yaXpvbnRhbD1uZXcgaSgic3BsaXQtaG9yaXpvbnRhbCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI1NiJ9KSxpLnNwbGl0VmVydGljYWw9bmV3IGkoInNwbGl0LXZlcnRpY2FsIix7Zm9udENoYXJhY3RlcjoiXFxlYjU3In0pLGkuc3F1aXJyZWw9bmV3IGkoInNxdWlycmVsIix7Zm9udENoYXJhY3RlcjoiXFxlYjU4In0pLGkuc3RhckZ1bGw9bmV3IGkoInN0YXItZnVsbCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI1OSJ9KSxpLnN0YXJIYWxmPW5ldyBpKCJzdGFyLWhhbGYiLHtmb250Q2hhcmFjdGVyOiJcXGViNWEifSksaS5zeW1ib2xDbGFzcz1uZXcgaSgic3ltYm9sLWNsYXNzIix7Zm9udENoYXJhY3RlcjoiXFxlYjViIn0pLGkuc3ltYm9sQ29sb3I9bmV3IGkoInN5bWJvbC1jb2xvciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI1YyJ9KSxpLnN5bWJvbEN1c3RvbUNvbG9yPW5ldyBpKCJzeW1ib2wtY3VzdG9tY29sb3IiLHtmb250Q2hhcmFjdGVyOiJcXGViNWMifSksaS5zeW1ib2xDb25zdGFudD1uZXcgaSgic3ltYm9sLWNvbnN0YW50Iix7Zm9udENoYXJhY3RlcjoiXFxlYjVkIn0pLGkuc3ltYm9sRW51bU1lbWJlcj1uZXcgaSgic3ltYm9sLWVudW0tbWVtYmVyIix7Zm9udENoYXJhY3RlcjoiXFxlYjVlIn0pLGkuc3ltYm9sRmllbGQ9bmV3IGkoInN5bWJvbC1maWVsZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI1ZiJ9KSxpLnN5bWJvbEZpbGU9bmV3IGkoInN5bWJvbC1maWxlIix7Zm9udENoYXJhY3RlcjoiXFxlYjYwIn0pLGkuc3ltYm9sSW50ZXJmYWNlPW5ldyBpKCJzeW1ib2wtaW50ZXJmYWNlIix7Zm9udENoYXJhY3RlcjoiXFxlYjYxIn0pLGkuc3ltYm9sS2V5d29yZD1uZXcgaSgic3ltYm9sLWtleXdvcmQiLHtmb250Q2hhcmFjdGVyOiJcXGViNjIifSksaS5zeW1ib2xNaXNjPW5ldyBpKCJzeW1ib2wtbWlzYyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI2MyJ9KSxpLnN5bWJvbE9wZXJhdG9yPW5ldyBpKCJzeW1ib2wtb3BlcmF0b3IiLHtmb250Q2hhcmFjdGVyOiJcXGViNjQifSksaS5zeW1ib2xQcm9wZXJ0eT1uZXcgaSgic3ltYm9sLXByb3BlcnR5Iix7Zm9udENoYXJhY3RlcjoiXFxlYjY1In0pLGkud3JlbmNoPW5ldyBpKCJ3cmVuY2giLHtmb250Q2hhcmFjdGVyOiJcXGViNjUifSksaS53cmVuY2hTdWJhY3Rpb249bmV3IGkoIndyZW5jaC1zdWJhY3Rpb24iLHtmb250Q2hhcmFjdGVyOiJcXGViNjUifSksaS5zeW1ib2xTbmlwcGV0PW5ldyBpKCJzeW1ib2wtc25pcHBldCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI2NiJ9KSxpLnRhc2tsaXN0PW5ldyBpKCJ0YXNrbGlzdCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI2NyJ9KSxpLnRlbGVzY29wZT1uZXcgaSgidGVsZXNjb3BlIix7Zm9udENoYXJhY3RlcjoiXFxlYjY4In0pLGkudGV4dFNpemU9bmV3IGkoInRleHQtc2l6ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI2OSJ9KSxpLnRocmVlQmFycz1uZXcgaSgidGhyZWUtYmFycyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI2YSJ9KSxpLnRodW1ic2Rvd249bmV3IGkoInRodW1ic2Rvd24iLHtmb250Q2hhcmFjdGVyOiJcXGViNmIifSksaS50aHVtYnN1cD1uZXcgaSgidGh1bWJzdXAiLHtmb250Q2hhcmFjdGVyOiJcXGViNmMifSksaS50b29scz1uZXcgaSgidG9vbHMiLHtmb250Q2hhcmFjdGVyOiJcXGViNmQifSksaS50cmlhbmdsZURvd249bmV3IGkoInRyaWFuZ2xlLWRvd24iLHtmb250Q2hhcmFjdGVyOiJcXGViNmUifSksaS50cmlhbmdsZUxlZnQ9bmV3IGkoInRyaWFuZ2xlLWxlZnQiLHtmb250Q2hhcmFjdGVyOiJcXGViNmYifSksaS50cmlhbmdsZVJpZ2h0PW5ldyBpKCJ0cmlhbmdsZS1yaWdodCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI3MCJ9KSxpLnRyaWFuZ2xlVXA9bmV3IGkoInRyaWFuZ2xlLXVwIix7Zm9udENoYXJhY3RlcjoiXFxlYjcxIn0pLGkudHdpdHRlcj1uZXcgaSgidHdpdHRlciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI3MiJ9KSxpLnVuZm9sZD1uZXcgaSgidW5mb2xkIix7Zm9udENoYXJhY3RlcjoiXFxlYjczIn0pLGkudW5sb2NrPW5ldyBpKCJ1bmxvY2siLHtmb250Q2hhcmFjdGVyOiJcXGViNzQifSksaS51bm11dGU9bmV3IGkoInVubXV0ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI3NSJ9KSxpLnVudmVyaWZpZWQ9bmV3IGkoInVudmVyaWZpZWQiLHtmb250Q2hhcmFjdGVyOiJcXGViNzYifSksaS52ZXJpZmllZD1uZXcgaSgidmVyaWZpZWQiLHtmb250Q2hhcmFjdGVyOiJcXGViNzcifSksaS52ZXJzaW9ucz1uZXcgaSgidmVyc2lvbnMiLHtmb250Q2hhcmFjdGVyOiJcXGViNzgifSksaS52bUFjdGl2ZT1uZXcgaSgidm0tYWN0aXZlIix7Zm9udENoYXJhY3RlcjoiXFxlYjc5In0pLGkudm1PdXRsaW5lPW5ldyBpKCJ2bS1vdXRsaW5lIix7Zm9udENoYXJhY3RlcjoiXFxlYjdhIn0pLGkudm1SdW5uaW5nPW5ldyBpKCJ2bS1ydW5uaW5nIix7Zm9udENoYXJhY3RlcjoiXFxlYjdiIn0pLGkud2F0Y2g9bmV3IGkoIndhdGNoIix7Zm9udENoYXJhY3RlcjoiXFxlYjdjIn0pLGkud2hpdGVzcGFjZT1uZXcgaSgid2hpdGVzcGFjZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI3ZCJ9KSxpLndob2xlV29yZD1uZXcgaSgid2hvbGUtd29yZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI3ZSJ9KSxpLndpbmRvdz1uZXcgaSgid2luZG93Iix7Zm9udENoYXJhY3RlcjoiXFxlYjdmIn0pLGkud29yZFdyYXA9bmV3IGkoIndvcmQtd3JhcCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI4MCJ9KSxpLnpvb21Jbj1uZXcgaSgiem9vbS1pbiIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI4MSJ9KSxpLnpvb21PdXQ9bmV3IGkoInpvb20tb3V0Iix7Zm9udENoYXJhY3RlcjoiXFxlYjgyIn0pLGkubGlzdEZpbHRlcj1uZXcgaSgibGlzdC1maWx0ZXIiLHtmb250Q2hhcmFjdGVyOiJcXGViODMifSksaS5saXN0RmxhdD1uZXcgaSgibGlzdC1mbGF0Iix7Zm9udENoYXJhY3RlcjoiXFxlYjg0In0pLGkubGlzdFNlbGVjdGlvbj1uZXcgaSgibGlzdC1zZWxlY3Rpb24iLHtmb250Q2hhcmFjdGVyOiJcXGViODUifSksaS5zZWxlY3Rpb249bmV3IGkoInNlbGVjdGlvbiIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI4NSJ9KSxpLmxpc3RUcmVlPW5ldyBpKCJsaXN0LXRyZWUiLHtmb250Q2hhcmFjdGVyOiJcXGViODYifSksaS5kZWJ1Z0JyZWFrcG9pbnRGdW5jdGlvblVudmVyaWZpZWQ9bmV3IGkoImRlYnVnLWJyZWFrcG9pbnQtZnVuY3Rpb24tdW52ZXJpZmllZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI4NyJ9KSxpLmRlYnVnQnJlYWtwb2ludEZ1bmN0aW9uPW5ldyBpKCJkZWJ1Zy1icmVha3BvaW50LWZ1bmN0aW9uIix7Zm9udENoYXJhY3RlcjoiXFxlYjg4In0pLGkuZGVidWdCcmVha3BvaW50RnVuY3Rpb25EaXNhYmxlZD1uZXcgaSgiZGVidWctYnJlYWtwb2ludC1mdW5jdGlvbi1kaXNhYmxlZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI4OCJ9KSxpLmRlYnVnU3RhY2tmcmFtZUFjdGl2ZT1uZXcgaSgiZGVidWctc3RhY2tmcmFtZS1hY3RpdmUiLHtmb250Q2hhcmFjdGVyOiJcXGViODkifSksaS5kZWJ1Z1N0YWNrZnJhbWVEb3Q9bmV3IGkoImRlYnVnLXN0YWNrZnJhbWUtZG90Iix7Zm9udENoYXJhY3RlcjoiXFxlYjhhIn0pLGkuZGVidWdTdGFja2ZyYW1lPW5ldyBpKCJkZWJ1Zy1zdGFja2ZyYW1lIix7Zm9udENoYXJhY3RlcjoiXFxlYjhiIn0pLGkuZGVidWdTdGFja2ZyYW1lRm9jdXNlZD1uZXcgaSgiZGVidWctc3RhY2tmcmFtZS1mb2N1c2VkIix7Zm9udENoYXJhY3RlcjoiXFxlYjhiIn0pLGkuZGVidWdCcmVha3BvaW50VW5zdXBwb3J0ZWQ9bmV3IGkoImRlYnVnLWJyZWFrcG9pbnQtdW5zdXBwb3J0ZWQiLHtmb250Q2hhcmFjdGVyOiJcXGViOGMifSksaS5zeW1ib2xTdHJpbmc9bmV3IGkoInN5bWJvbC1zdHJpbmciLHtmb250Q2hhcmFjdGVyOiJcXGViOGQifSksaS5kZWJ1Z1JldmVyc2VDb250aW51ZT1uZXcgaSgiZGVidWctcmV2ZXJzZS1jb250aW51ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI4ZSJ9KSxpLmRlYnVnU3RlcEJhY2s9bmV3IGkoImRlYnVnLXN0ZXAtYmFjayIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI4ZiJ9KSxpLmRlYnVnUmVzdGFydEZyYW1lPW5ldyBpKCJkZWJ1Zy1yZXN0YXJ0LWZyYW1lIix7Zm9udENoYXJhY3RlcjoiXFxlYjkwIn0pLGkuY2FsbEluY29taW5nPW5ldyBpKCJjYWxsLWluY29taW5nIix7Zm9udENoYXJhY3RlcjoiXFxlYjkyIn0pLGkuY2FsbE91dGdvaW5nPW5ldyBpKCJjYWxsLW91dGdvaW5nIix7Zm9udENoYXJhY3RlcjoiXFxlYjkzIn0pLGkubWVudT1uZXcgaSgibWVudSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI5NCJ9KSxpLmV4cGFuZEFsbD1uZXcgaSgiZXhwYW5kLWFsbCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI5NSJ9KSxpLmZlZWRiYWNrPW5ldyBpKCJmZWVkYmFjayIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI5NiJ9KSxpLmdyb3VwQnlSZWZUeXBlPW5ldyBpKCJncm91cC1ieS1yZWYtdHlwZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI5NyJ9KSxpLnVuZ3JvdXBCeVJlZlR5cGU9bmV3IGkoInVuZ3JvdXAtYnktcmVmLXR5cGUiLHtmb250Q2hhcmFjdGVyOiJcXGViOTgifSksaS5hY2NvdW50PW5ldyBpKCJhY2NvdW50Iix7Zm9udENoYXJhY3RlcjoiXFxlYjk5In0pLGkuYmVsbERvdD1uZXcgaSgiYmVsbC1kb3QiLHtmb250Q2hhcmFjdGVyOiJcXGViOWEifSksaS5kZWJ1Z0NvbnNvbGU9bmV3IGkoImRlYnVnLWNvbnNvbGUiLHtmb250Q2hhcmFjdGVyOiJcXGViOWIifSksaS5saWJyYXJ5PW5ldyBpKCJsaWJyYXJ5Iix7Zm9udENoYXJhY3RlcjoiXFxlYjljIn0pLGkub3V0cHV0PW5ldyBpKCJvdXRwdXQiLHtmb250Q2hhcmFjdGVyOiJcXGViOWQifSksaS5ydW5BbGw9bmV3IGkoInJ1bi1hbGwiLHtmb250Q2hhcmFjdGVyOiJcXGViOWUifSksaS5zeW5jSWdub3JlZD1uZXcgaSgic3luYy1pZ25vcmVkIix7Zm9udENoYXJhY3RlcjoiXFxlYjlmIn0pLGkucGlubmVkPW5ldyBpKCJwaW5uZWQiLHtmb250Q2hhcmFjdGVyOiJcXGViYTAifSksaS5naXRodWJJbnZlcnRlZD1uZXcgaSgiZ2l0aHViLWludmVydGVkIix7Zm9udENoYXJhY3RlcjoiXFxlYmExIn0pLGkuZGVidWdBbHQ9bmV3IGkoImRlYnVnLWFsdCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI5MSJ9KSxpLnNlcnZlclByb2Nlc3M9bmV3IGkoInNlcnZlci1wcm9jZXNzIix7Zm9udENoYXJhY3RlcjoiXFxlYmEyIn0pLGkuc2VydmVyRW52aXJvbm1lbnQ9bmV3IGkoInNlcnZlci1lbnZpcm9ubWVudCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJhMyJ9KSxpLnBhc3M9bmV3IGkoInBhc3MiLHtmb250Q2hhcmFjdGVyOiJcXGViYTQifSksaS5zdG9wQ2lyY2xlPW5ldyBpKCJzdG9wLWNpcmNsZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJhNSJ9KSxpLnBsYXlDaXJjbGU9bmV3IGkoInBsYXktY2lyY2xlIix7Zm9udENoYXJhY3RlcjoiXFxlYmE2In0pLGkucmVjb3JkPW5ldyBpKCJyZWNvcmQiLHtmb250Q2hhcmFjdGVyOiJcXGViYTcifSksaS5kZWJ1Z0FsdFNtYWxsPW5ldyBpKCJkZWJ1Zy1hbHQtc21hbGwiLHtmb250Q2hhcmFjdGVyOiJcXGViYTgifSksaS52bUNvbm5lY3Q9bmV3IGkoInZtLWNvbm5lY3QiLHtmb250Q2hhcmFjdGVyOiJcXGViYTkifSksaS5jbG91ZD1uZXcgaSgiY2xvdWQiLHtmb250Q2hhcmFjdGVyOiJcXGViYWEifSksaS5tZXJnZT1uZXcgaSgibWVyZ2UiLHtmb250Q2hhcmFjdGVyOiJcXGViYWIifSksaS5leHBvcnRJY29uPW5ldyBpKCJleHBvcnQiLHtmb250Q2hhcmFjdGVyOiJcXGViYWMifSksaS5ncmFwaExlZnQ9bmV3IGkoImdyYXBoLWxlZnQiLHtmb250Q2hhcmFjdGVyOiJcXGViYWQifSksaS5tYWduZXQ9bmV3IGkoIm1hZ25ldCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJhZSJ9KSxpLm5vdGVib29rPW5ldyBpKCJub3RlYm9vayIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJhZiJ9KSxpLnJlZG89bmV3IGkoInJlZG8iLHtmb250Q2hhcmFjdGVyOiJcXGViYjAifSksaS5jaGVja0FsbD1uZXcgaSgiY2hlY2stYWxsIix7Zm9udENoYXJhY3RlcjoiXFxlYmIxIn0pLGkucGlubmVkRGlydHk9bmV3IGkoInBpbm5lZC1kaXJ0eSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJiMiJ9KSxpLnBhc3NGaWxsZWQ9bmV3IGkoInBhc3MtZmlsbGVkIix7Zm9udENoYXJhY3RlcjoiXFxlYmIzIn0pLGkuY2lyY2xlTGFyZ2VGaWxsZWQ9bmV3IGkoImNpcmNsZS1sYXJnZS1maWxsZWQiLHtmb250Q2hhcmFjdGVyOiJcXGViYjQifSksaS5jaXJjbGVMYXJnZU91dGxpbmU9bmV3IGkoImNpcmNsZS1sYXJnZS1vdXRsaW5lIix7Zm9udENoYXJhY3RlcjoiXFxlYmI1In0pLGkuY29tYmluZT1uZXcgaSgiY29tYmluZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJiNiJ9KSxpLmdhdGhlcj1uZXcgaSgiZ2F0aGVyIix7Zm9udENoYXJhY3RlcjoiXFxlYmI2In0pLGkudGFibGU9bmV3IGkoInRhYmxlIix7Zm9udENoYXJhY3RlcjoiXFxlYmI3In0pLGkudmFyaWFibGVHcm91cD1uZXcgaSgidmFyaWFibGUtZ3JvdXAiLHtmb250Q2hhcmFjdGVyOiJcXGViYjgifSksaS50eXBlSGllcmFyY2h5PW5ldyBpKCJ0eXBlLWhpZXJhcmNoeSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJiOSJ9KSxpLnR5cGVIaWVyYXJjaHlTdWI9bmV3IGkoInR5cGUtaGllcmFyY2h5LXN1YiIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJiYSJ9KSxpLnR5cGVIaWVyYXJjaHlTdXBlcj1uZXcgaSgidHlwZS1oaWVyYXJjaHktc3VwZXIiLHtmb250Q2hhcmFjdGVyOiJcXGViYmIifSksaS5naXRQdWxsUmVxdWVzdENyZWF0ZT1uZXcgaSgiZ2l0LXB1bGwtcmVxdWVzdC1jcmVhdGUiLHtmb250Q2hhcmFjdGVyOiJcXGViYmMifSksaS5ydW5BYm92ZT1uZXcgaSgicnVuLWFib3ZlIix7Zm9udENoYXJhY3RlcjoiXFxlYmJkIn0pLGkucnVuQmVsb3c9bmV3IGkoInJ1bi1iZWxvdyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJiZSJ9KSxpLm5vdGVib29rVGVtcGxhdGU9bmV3IGkoIm5vdGVib29rLXRlbXBsYXRlIix7Zm9udENoYXJhY3RlcjoiXFxlYmJmIn0pLGkuZGVidWdSZXJ1bj1uZXcgaSgiZGVidWctcmVydW4iLHtmb250Q2hhcmFjdGVyOiJcXGViYzAifSksaS53b3Jrc3BhY2VUcnVzdGVkPW5ldyBpKCJ3b3Jrc3BhY2UtdHJ1c3RlZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJjMSJ9KSxpLndvcmtzcGFjZVVudHJ1c3RlZD1uZXcgaSgid29ya3NwYWNlLXVudHJ1c3RlZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJjMiJ9KSxpLndvcmtzcGFjZVVuc3BlY2lmaWVkPW5ldyBpKCJ3b3Jrc3BhY2UtdW5zcGVjaWZpZWQiLHtmb250Q2hhcmFjdGVyOiJcXGViYzMifSksaS50ZXJtaW5hbENtZD1uZXcgaSgidGVybWluYWwtY21kIix7Zm9udENoYXJhY3RlcjoiXFxlYmM0In0pLGkudGVybWluYWxEZWJpYW49bmV3IGkoInRlcm1pbmFsLWRlYmlhbiIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJjNSJ9KSxpLnRlcm1pbmFsTGludXg9bmV3IGkoInRlcm1pbmFsLWxpbnV4Iix7Zm9udENoYXJhY3RlcjoiXFxlYmM2In0pLGkudGVybWluYWxQb3dlcnNoZWxsPW5ldyBpKCJ0ZXJtaW5hbC1wb3dlcnNoZWxsIix7Zm9udENoYXJhY3RlcjoiXFxlYmM3In0pLGkudGVybWluYWxUbXV4PW5ldyBpKCJ0ZXJtaW5hbC10bXV4Iix7Zm9udENoYXJhY3RlcjoiXFxlYmM4In0pLGkudGVybWluYWxVYnVudHU9bmV3IGkoInRlcm1pbmFsLXVidW50dSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJjOSJ9KSxpLnRlcm1pbmFsQmFzaD1uZXcgaSgidGVybWluYWwtYmFzaCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJjYSJ9KSxpLmFycm93U3dhcD1uZXcgaSgiYXJyb3ctc3dhcCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJjYiJ9KSxpLmNvcHk9bmV3IGkoImNvcHkiLHtmb250Q2hhcmFjdGVyOiJcXGViY2MifSksaS5wZXJzb25BZGQ9bmV3IGkoInBlcnNvbi1hZGQiLHtmb250Q2hhcmFjdGVyOiJcXGViY2QifSksaS5maWx0ZXJGaWxsZWQ9bmV3IGkoImZpbHRlci1maWxsZWQiLHtmb250Q2hhcmFjdGVyOiJcXGViY2UifSksaS53YW5kPW5ldyBpKCJ3YW5kIix7Zm9udENoYXJhY3RlcjoiXFxlYmNmIn0pLGkuZGVidWdMaW5lQnlMaW5lPW5ldyBpKCJkZWJ1Zy1saW5lLWJ5LWxpbmUiLHtmb250Q2hhcmFjdGVyOiJcXGViZDAifSksaS5pbnNwZWN0PW5ldyBpKCJpbnNwZWN0Iix7Zm9udENoYXJhY3RlcjoiXFxlYmQxIn0pLGkubGF5ZXJzPW5ldyBpKCJsYXllcnMiLHtmb250Q2hhcmFjdGVyOiJcXGViZDIifSksaS5sYXllcnNEb3Q9bmV3IGkoImxheWVycy1kb3QiLHtmb250Q2hhcmFjdGVyOiJcXGViZDMifSksaS5sYXllcnNBY3RpdmU9bmV3IGkoImxheWVycy1hY3RpdmUiLHtmb250Q2hhcmFjdGVyOiJcXGViZDQifSksaS5jb21wYXNzPW5ldyBpKCJjb21wYXNzIix7Zm9udENoYXJhY3RlcjoiXFxlYmQ1In0pLGkuY29tcGFzc0RvdD1uZXcgaSgiY29tcGFzcy1kb3QiLHtmb250Q2hhcmFjdGVyOiJcXGViZDYifSksaS5jb21wYXNzQWN0aXZlPW5ldyBpKCJjb21wYXNzLWFjdGl2ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJkNyJ9KSxpLmF6dXJlPW5ldyBpKCJhenVyZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJkOCJ9KSxpLmlzc3VlRHJhZnQ9bmV3IGkoImlzc3VlLWRyYWZ0Iix7Zm9udENoYXJhY3RlcjoiXFxlYmQ5In0pLGkuZ2l0UHVsbFJlcXVlc3RDbG9zZWQ9bmV3IGkoImdpdC1wdWxsLXJlcXVlc3QtY2xvc2VkIix7Zm9udENoYXJhY3RlcjoiXFxlYmRhIn0pLGkuZ2l0UHVsbFJlcXVlc3REcmFmdD1uZXcgaSgiZ2l0LXB1bGwtcmVxdWVzdC1kcmFmdCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJkYiJ9KSxpLmRlYnVnQWxsPW5ldyBpKCJkZWJ1Zy1hbGwiLHtmb250Q2hhcmFjdGVyOiJcXGViZGMifSksaS5kZWJ1Z0NvdmVyYWdlPW5ldyBpKCJkZWJ1Zy1jb3ZlcmFnZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJkZCJ9KSxpLnJ1bkVycm9ycz1uZXcgaSgicnVuLWVycm9ycyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJkZSJ9KSxpLmZvbGRlckxpYnJhcnk9bmV3IGkoImZvbGRlci1saWJyYXJ5Iix7Zm9udENoYXJhY3RlcjoiXFxlYmRmIn0pLGkuZGVidWdDb250aW51ZVNtYWxsPW5ldyBpKCJkZWJ1Zy1jb250aW51ZS1zbWFsbCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJlMCJ9KSxpLmJlYWtlclN0b3A9bmV3IGkoImJlYWtlci1zdG9wIix7Zm9udENoYXJhY3RlcjoiXFxlYmUxIn0pLGkuZ3JhcGhMaW5lPW5ldyBpKCJncmFwaC1saW5lIix7Zm9udENoYXJhY3RlcjoiXFxlYmUyIn0pLGkuZ3JhcGhTY2F0dGVyPW5ldyBpKCJncmFwaC1zY2F0dGVyIix7Zm9udENoYXJhY3RlcjoiXFxlYmUzIn0pLGkucGllQ2hhcnQ9bmV3IGkoInBpZS1jaGFydCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJlNCJ9KSxpLmJyYWNrZXQ9bmV3IGkoImJyYWNrZXQiLGkuanNvbi5kZWZpbml0aW9uKSxpLmJyYWNrZXREb3Q9bmV3IGkoImJyYWNrZXQtZG90Iix7Zm9udENoYXJhY3RlcjoiXFxlYmU1In0pLGkuYnJhY2tldEVycm9yPW5ldyBpKCJicmFja2V0LWVycm9yIix7Zm9udENoYXJhY3RlcjoiXFxlYmU2In0pLGkubG9ja1NtYWxsPW5ldyBpKCJsb2NrLXNtYWxsIix7Zm9udENoYXJhY3RlcjoiXFxlYmU3In0pLGkuYXp1cmVEZXZvcHM9bmV3IGkoImF6dXJlLWRldm9wcyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJlOCJ9KSxpLnZlcmlmaWVkRmlsbGVkPW5ldyBpKCJ2ZXJpZmllZC1maWxsZWQiLHtmb250Q2hhcmFjdGVyOiJcXGViZTkifSksaS5uZXdMaW5lPW5ldyBpKCJuZXdsaW5lIix7Zm9udENoYXJhY3RlcjoiXFxlYmVhIn0pLGkubGF5b3V0PW5ldyBpKCJsYXlvdXQiLHtmb250Q2hhcmFjdGVyOiJcXGViZWIifSksaS5sYXlvdXRBY3Rpdml0eWJhckxlZnQ9bmV3IGkoImxheW91dC1hY3Rpdml0eWJhci1sZWZ0Iix7Zm9udENoYXJhY3RlcjoiXFxlYmVjIn0pLGkubGF5b3V0QWN0aXZpdHliYXJSaWdodD1uZXcgaSgibGF5b3V0LWFjdGl2aXR5YmFyLXJpZ2h0Iix7Zm9udENoYXJhY3RlcjoiXFxlYmVkIn0pLGkubGF5b3V0UGFuZWxMZWZ0PW5ldyBpKCJsYXlvdXQtcGFuZWwtbGVmdCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJlZSJ9KSxpLmxheW91dFBhbmVsQ2VudGVyPW5ldyBpKCJsYXlvdXQtcGFuZWwtY2VudGVyIix7Zm9udENoYXJhY3RlcjoiXFxlYmVmIn0pLGkubGF5b3V0UGFuZWxKdXN0aWZ5PW5ldyBpKCJsYXlvdXQtcGFuZWwtanVzdGlmeSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJmMCJ9KSxpLmxheW91dFBhbmVsUmlnaHQ9bmV3IGkoImxheW91dC1wYW5lbC1yaWdodCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJmMSJ9KSxpLmxheW91dFBhbmVsPW5ldyBpKCJsYXlvdXQtcGFuZWwiLHtmb250Q2hhcmFjdGVyOiJcXGViZjIifSksaS5sYXlvdXRTaWRlYmFyTGVmdD1uZXcgaSgibGF5b3V0LXNpZGViYXItbGVmdCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJmMyJ9KSxpLmxheW91dFNpZGViYXJSaWdodD1uZXcgaSgibGF5b3V0LXNpZGViYXItcmlnaHQiLHtmb250Q2hhcmFjdGVyOiJcXGViZjQifSksaS5sYXlvdXRTdGF0dXNiYXI9bmV3IGkoImxheW91dC1zdGF0dXNiYXIiLHtmb250Q2hhcmFjdGVyOiJcXGViZjUifSksaS5sYXlvdXRNZW51YmFyPW5ldyBpKCJsYXlvdXQtbWVudWJhciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJmNiJ9KSxpLmxheW91dENlbnRlcmVkPW5ldyBpKCJsYXlvdXQtY2VudGVyZWQiLHtmb250Q2hhcmFjdGVyOiJcXGViZjcifSksaS50YXJnZXQ9bmV3IGkoInRhcmdldCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJmOCJ9KSxpLmRpYWxvZ0Vycm9yPW5ldyBpKCJkaWFsb2ctZXJyb3IiLGkuZXJyb3IuZGVmaW5pdGlvbiksaS5kaWFsb2dXYXJuaW5nPW5ldyBpKCJkaWFsb2ctd2FybmluZyIsaS53YXJuaW5nLmRlZmluaXRpb24pLGkuZGlhbG9nSW5mbz1uZXcgaSgiZGlhbG9nLWluZm8iLGkuaW5mby5kZWZpbml0aW9uKSxpLmRpYWxvZ0Nsb3NlPW5ldyBpKCJkaWFsb2ctY2xvc2UiLGkuY2xvc2UuZGVmaW5pdGlvbiksaS50cmVlSXRlbUV4cGFuZGVkPW5ldyBpKCJ0cmVlLWl0ZW0tZXhwYW5kZWQiLGkuY2hldnJvbkRvd24uZGVmaW5pdGlvbiksaS50cmVlRmlsdGVyT25UeXBlT249bmV3IGkoInRyZWUtZmlsdGVyLW9uLXR5cGUtb24iLGkubGlzdEZpbHRlci5kZWZpbml0aW9uKSxpLnRyZWVGaWx0ZXJPblR5cGVPZmY9bmV3IGkoInRyZWUtZmlsdGVyLW9uLXR5cGUtb2ZmIixpLmxpc3RTZWxlY3Rpb24uZGVmaW5pdGlvbiksaS50cmVlRmlsdGVyQ2xlYXI9bmV3IGkoInRyZWUtZmlsdGVyLWNsZWFyIixpLmNsb3NlLmRlZmluaXRpb24pLGkudHJlZUl0ZW1Mb2FkaW5nPW5ldyBpKCJ0cmVlLWl0ZW0tbG9hZGluZyIsaS5sb2FkaW5nLmRlZmluaXRpb24pLGkubWVudVNlbGVjdGlvbj1uZXcgaSgibWVudS1zZWxlY3Rpb24iLGkuY2hlY2suZGVmaW5pdGlvbiksaS5tZW51U3VibWVudT1uZXcgaSgibWVudS1zdWJtZW51IixpLmNoZXZyb25SaWdodC5kZWZpbml0aW9uKSxpLm1lbnVCYXJNb3JlPW5ldyBpKCJtZW51YmFyLW1vcmUiLGkubW9yZS5kZWZpbml0aW9uKSxpLnNjcm9sbGJhckJ1dHRvbkxlZnQ9bmV3IGkoInNjcm9sbGJhci1idXR0b24tbGVmdCIsaS50cmlhbmdsZUxlZnQuZGVmaW5pdGlvbiksaS5zY3JvbGxiYXJCdXR0b25SaWdodD1uZXcgaSgic2Nyb2xsYmFyLWJ1dHRvbi1yaWdodCIsaS50cmlhbmdsZVJpZ2h0LmRlZmluaXRpb24pLGkuc2Nyb2xsYmFyQnV0dG9uVXA9bmV3IGkoInNjcm9sbGJhci1idXR0b24tdXAiLGkudHJpYW5nbGVVcC5kZWZpbml0aW9uKSxpLnNjcm9sbGJhckJ1dHRvbkRvd249bmV3IGkoInNjcm9sbGJhci1idXR0b24tZG93biIsaS50cmlhbmdsZURvd24uZGVmaW5pdGlvbiksaS50b29sQmFyTW9yZT1uZXcgaSgidG9vbGJhci1tb3JlIixpLm1vcmUuZGVmaW5pdGlvbiksaS5xdWlja0lucHV0QmFjaz1uZXcgaSgicXVpY2staW5wdXQtYmFjayIsaS5hcnJvd0xlZnQuZGVmaW5pdGlvbik7e3ZhciBlOyhlPXZyPXZyfHx7fSkuaWNvbk5hbWVTZWdtZW50PSJbQS1aYS16MC05XSsiLGUuaWNvbk5hbWVFeHByZXNzaW9uPSJbQS1aYS16MC05LV0rIixlLmljb25Nb2RpZmllckV4cHJlc3Npb249In5bQS1aYS16XSsiLGUuaWNvbk5hbWVDaGFyYWN0ZXI9IltBLVphLXowLTl+LV0iO2NvbnN0IENuPW5ldyBSZWdFeHAoYF4oJHtlLmljb25OYW1lRXhwcmVzc2lvbn0pKCR7ZS5pY29uTW9kaWZpZXJFeHByZXNzaW9ufSk/JGApO2Z1bmN0aW9uIE1yKGUpe2lmKGUgaW5zdGFuY2VvZiBpKXJldHVyblsiY29kaWNvbiIsImNvZGljb24tIitlLmlkXTtlPUNuLmV4ZWMoZS5pZCk7aWYoIWUpcmV0dXJuIE1yKGkuZXJyb3IpO2xldFssdCxyXT1lO2NvbnN0IG49WyJjb2RpY29uIiwiY29kaWNvbi0iK3RdO3JldHVybiByJiZuLnB1c2goImNvZGljb24tbW9kaWZpZXItIityLnN1YnN0cigxKSksbn1lLmFzQ2xhc3NOYW1lQXJyYXk9TXIsZS5hc0NsYXNzTmFtZT1mdW5jdGlvbihlKXtyZXR1cm4gTXIoZSkuam9pbigiICIpfSxlLmFzQ1NTU2VsZWN0b3I9ZnVuY3Rpb24oZSl7cmV0dXJuIi4iK01yKGUpLmpvaW4oIi4iKX19Y2xhc3MgUHJ7Y29uc3RydWN0b3IoZSx0LHIpe3RoaXMuX3Rva2VuQnJhbmQ9dm9pZCAwLHRoaXMub2Zmc2V0PWUsdGhpcy50eXBlPXQsdGhpcy5sYW5ndWFnZT1yfXRvU3RyaW5nKCl7cmV0dXJuIigiK3RoaXMub2Zmc2V0KyIsICIrdGhpcy50eXBlKyIpIn19Y2xhc3MgS3J7Y29uc3RydWN0b3IoZSx0KXt0aGlzLl90b2tlbml6YXRpb25SZXN1bHRCcmFuZD12b2lkIDAsdGhpcy50b2tlbnM9ZSx0aGlzLmVuZFN0YXRlPXR9fWNsYXNzIFJye2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5fZW5jb2RlZFRva2VuaXphdGlvblJlc3VsdEJyYW5kPXZvaWQgMCx0aGlzLnRva2Vucz1lLHRoaXMuZW5kU3RhdGU9dH19e0Q9e307Y29uc3Qgcj1uZXcgTWFwLG49KHIuc2V0KDAsaS5zeW1ib2xNZXRob2QpLHIuc2V0KDEsaS5zeW1ib2xGdW5jdGlvbiksci5zZXQoMixpLnN5bWJvbENvbnN0cnVjdG9yKSxyLnNldCgzLGkuc3ltYm9sRmllbGQpLHIuc2V0KDQsaS5zeW1ib2xWYXJpYWJsZSksci5zZXQoNSxpLnN5bWJvbENsYXNzKSxyLnNldCg2LGkuc3ltYm9sU3RydWN0KSxyLnNldCg3LGkuc3ltYm9sSW50ZXJmYWNlKSxyLnNldCg4LGkuc3ltYm9sTW9kdWxlKSxyLnNldCg5LGkuc3ltYm9sUHJvcGVydHkpLHIuc2V0KDEwLGkuc3ltYm9sRXZlbnQpLHIuc2V0KDExLGkuc3ltYm9sT3BlcmF0b3IpLHIuc2V0KDEyLGkuc3ltYm9sVW5pdCksci5zZXQoMTMsaS5zeW1ib2xWYWx1ZSksci5zZXQoMTUsaS5zeW1ib2xFbnVtKSxyLnNldCgxNCxpLnN5bWJvbENvbnN0YW50KSxyLnNldCgxNSxpLnN5bWJvbEVudW0pLHIuc2V0KDE2LGkuc3ltYm9sRW51bU1lbWJlciksci5zZXQoMTcsaS5zeW1ib2xLZXl3b3JkKSxyLnNldCgyNyxpLnN5bWJvbFNuaXBwZXQpLHIuc2V0KDE4LGkuc3ltYm9sVGV4dCksci5zZXQoMTksaS5zeW1ib2xDb2xvciksci5zZXQoMjAsaS5zeW1ib2xGaWxlKSxyLnNldCgyMSxpLnN5bWJvbFJlZmVyZW5jZSksci5zZXQoMjIsaS5zeW1ib2xDdXN0b21Db2xvciksci5zZXQoMjMsaS5zeW1ib2xGb2xkZXIpLHIuc2V0KDI0LGkuc3ltYm9sVHlwZVBhcmFtZXRlciksci5zZXQoMjUsaS5hY2NvdW50KSxyLnNldCgyNixpLmlzc3VlcyksRC50b0ljb249ZnVuY3Rpb24oZSl7bGV0IHQ9ci5nZXQoZSk7cmV0dXJuIHR8fChjb25zb2xlLmluZm8oIk5vIGNvZGljb24gZm91bmQgZm9yIENvbXBsZXRpb25JdGVtS2luZCAiK2UpLHQ9aS5zeW1ib2xQcm9wZXJ0eSksdH0sbmV3IE1hcCk7bi5zZXQoIm1ldGhvZCIsMCksbi5zZXQoImZ1bmN0aW9uIiwxKSxuLnNldCgiY29uc3RydWN0b3IiLDIpLG4uc2V0KCJmaWVsZCIsMyksbi5zZXQoInZhcmlhYmxlIiw0KSxuLnNldCgiY2xhc3MiLDUpLG4uc2V0KCJzdHJ1Y3QiLDYpLG4uc2V0KCJpbnRlcmZhY2UiLDcpLG4uc2V0KCJtb2R1bGUiLDgpLG4uc2V0KCJwcm9wZXJ0eSIsOSksbi5zZXQoImV2ZW50IiwxMCksbi5zZXQoIm9wZXJhdG9yIiwxMSksbi5zZXQoInVuaXQiLDEyKSxuLnNldCgidmFsdWUiLDEzKSxuLnNldCgiY29uc3RhbnQiLDE0KSxuLnNldCgiZW51bSIsMTUpLG4uc2V0KCJlbnVtLW1lbWJlciIsMTYpLG4uc2V0KCJlbnVtTWVtYmVyIiwxNiksbi5zZXQoImtleXdvcmQiLDE3KSxuLnNldCgic25pcHBldCIsMjcpLG4uc2V0KCJ0ZXh0IiwxOCksbi5zZXQoImNvbG9yIiwxOSksbi5zZXQoImZpbGUiLDIwKSxuLnNldCgicmVmZXJlbmNlIiwyMSksbi5zZXQoImN1c3RvbWNvbG9yIiwyMiksbi5zZXQoImZvbGRlciIsMjMpLG4uc2V0KCJ0eXBlLXBhcmFtZXRlciIsMjQpLG4uc2V0KCJ0eXBlUGFyYW1ldGVyIiwyNCksbi5zZXQoImFjY291bnQiLDI1KSxuLnNldCgiaXNzdWUiLDI2KSxELmZyb21TdHJpbmc9ZnVuY3Rpb24oZSx0KXtsZXQgcj1uLmdldChlKTtyZXR1cm4gcj12b2lkIDAhPT1yfHx0P3I6OX19e3ZhciBSPXt9O2NvbnN0IHM9bmV3IE1hcDtzLnNldCgwLGkuc3ltYm9sRmlsZSkscy5zZXQoMSxpLnN5bWJvbE1vZHVsZSkscy5zZXQoMixpLnN5bWJvbE5hbWVzcGFjZSkscy5zZXQoMyxpLnN5bWJvbFBhY2thZ2UpLHMuc2V0KDQsaS5zeW1ib2xDbGFzcykscy5zZXQoNSxpLnN5bWJvbE1ldGhvZCkscy5zZXQoNixpLnN5bWJvbFByb3BlcnR5KSxzLnNldCg3LGkuc3ltYm9sRmllbGQpLHMuc2V0KDgsaS5zeW1ib2xDb25zdHJ1Y3Rvcikscy5zZXQoOSxpLnN5bWJvbEVudW0pLHMuc2V0KDEwLGkuc3ltYm9sSW50ZXJmYWNlKSxzLnNldCgxMSxpLnN5bWJvbEZ1bmN0aW9uKSxzLnNldCgxMixpLnN5bWJvbFZhcmlhYmxlKSxzLnNldCgxMyxpLnN5bWJvbENvbnN0YW50KSxzLnNldCgxNCxpLnN5bWJvbFN0cmluZykscy5zZXQoMTUsaS5zeW1ib2xOdW1iZXIpLHMuc2V0KDE2LGkuc3ltYm9sQm9vbGVhbikscy5zZXQoMTcsaS5zeW1ib2xBcnJheSkscy5zZXQoMTgsaS5zeW1ib2xPYmplY3QpLHMuc2V0KDE5LGkuc3ltYm9sS2V5KSxzLnNldCgyMCxpLnN5bWJvbE51bGwpLHMuc2V0KDIxLGkuc3ltYm9sRW51bU1lbWJlcikscy5zZXQoMjIsaS5zeW1ib2xTdHJ1Y3QpLHMuc2V0KDIzLGkuc3ltYm9sRXZlbnQpLHMuc2V0KDI0LGkuc3ltYm9sT3BlcmF0b3IpLHMuc2V0KDI1LGkuc3ltYm9sVHlwZVBhcmFtZXRlciksUi50b0ljb249ZnVuY3Rpb24oZSl7bGV0IHQ9cy5nZXQoZSk7cmV0dXJuIHR8fChjb25zb2xlLmluZm8oIk5vIGNvZGljb24gZm91bmQgZm9yIFN5bWJvbEtpbmQgIitlKSx0PWkuc3ltYm9sUHJvcGVydHkpLHR9fWZ1bmN0aW9uIERyKGUsdCxyKXtpZighcnx8ci5sZW5ndGg8dC5sZW5ndGgpcmV0dXJuIG51bGw7bGV0IG47cmV0dXJuKG49ZT9zZShyLHQpOjA9PT1yLmluZGV4T2YodCkpPzA8dC5sZW5ndGg/W3tzdGFydDowLGVuZDp0Lmxlbmd0aH1dOltdOm51bGx9KHFyfHx7fSkuaXM9ZnVuY3Rpb24oZSl7cmV0dXJuISghZXx8Im9iamVjdCIhPXR5cGVvZiBlKSYmKCJzdHJpbmciPT10eXBlb2YgZS5pZCYmInN0cmluZyI9PXR5cGVvZiBlLnRpdGxlKX0sbmV3IGEsbmV3IGEsbmV3IGEsbmV3IGEsbmV3IGEsbmV3IGEsbmV3IGEsbmV3IGEsbmV3IGEsbmV3IGEsbmV3IGEsbmV3IGEsbmV3IGEsbmV3IGEsbmV3IGEsbmV3IGEsbmV3IGEsbmV3IGEsbmV3IGEsbmV3IGEsbmV3IGEsbmV3IGEsbmV3IGEsbmV3IGEsbmV3IGEsbmV3IGEsbmV3IGEsbmV3IGNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5fbWFwPW5ldyBNYXAsdGhpcy5fZmFjdG9yaWVzPW5ldyBNYXAsdGhpcy5fb25EaWRDaGFuZ2U9bmV3IFgsdGhpcy5vbkRpZENoYW5nZT10aGlzLl9vbkRpZENoYW5nZS5ldmVudCx0aGlzLl9jb2xvck1hcD1udWxsfWZpcmUoZSl7dGhpcy5fb25EaWRDaGFuZ2UuZmlyZSh7Y2hhbmdlZExhbmd1YWdlczplLGNoYW5nZWRDb2xvck1hcDohMX0pfXJlZ2lzdGVyKGUsdCl7cmV0dXJuIHRoaXMuX21hcC5zZXQoZSx0KSx0aGlzLmZpcmUoW2VdKSx2KCgpPT57dGhpcy5fbWFwLmdldChlKT09PXQmJih0aGlzLl9tYXAuZGVsZXRlKGUpLHRoaXMuZmlyZShbZV0pKX0pfXJlZ2lzdGVyRmFjdG9yeSh0LGUpe3ZhciByO251bGwhPT0ocj10aGlzLl9mYWN0b3JpZXMuZ2V0KHQpKSYmdm9pZCAwIT09ciYmci5kaXNwb3NlKCk7Y29uc3Qgbj1uZXcgeHIodGhpcyx0LGUpO3JldHVybiB0aGlzLl9mYWN0b3JpZXMuc2V0KHQsbiksdigoKT0+e2NvbnN0IGU9dGhpcy5fZmFjdG9yaWVzLmdldCh0KTtlJiZlPT09biYmKHRoaXMuX2ZhY3Rvcmllcy5kZWxldGUodCksZS5kaXNwb3NlKCkpfSl9Z2V0T3JDcmVhdGUocil7cmV0dXJuIGtyKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbiooKXt2YXIgZT10aGlzLmdldChyKTtpZihlKXJldHVybiBlO2NvbnN0IHQ9dGhpcy5fZmFjdG9yaWVzLmdldChyKTtyZXR1cm4hdHx8dC5pc1Jlc29sdmVkP251bGw6KHlpZWxkIHQucmVzb2x2ZSgpLHRoaXMuZ2V0KHIpKX0pfWdldChlKXtyZXR1cm4gdGhpcy5fbWFwLmdldChlKXx8bnVsbH1pc1Jlc29sdmVkKGUpe2lmKHRoaXMuZ2V0KGUpKXJldHVybiEwO2U9dGhpcy5fZmFjdG9yaWVzLmdldChlKTtyZXR1cm4hKGUmJiFlLmlzUmVzb2x2ZWQpfXNldENvbG9yTWFwKGUpe3RoaXMuX2NvbG9yTWFwPWUsdGhpcy5fb25EaWRDaGFuZ2UuZmlyZSh7Y2hhbmdlZExhbmd1YWdlczpBcnJheS5mcm9tKHRoaXMuX21hcC5rZXlzKCkpLGNoYW5nZWRDb2xvck1hcDohMH0pfWdldENvbG9yTWFwKCl7cmV0dXJuIHRoaXMuX2NvbG9yTWFwfWdldERlZmF1bHRCYWNrZ3JvdW5kKCl7cmV0dXJuIHRoaXMuX2NvbG9yTWFwJiYyPHRoaXMuX2NvbG9yTWFwLmxlbmd0aD90aGlzLl9jb2xvck1hcFsyXTpudWxsfX0sKHQ9eXI9eXJ8fHt9KVt0LkRlcGVuZHNPbktiTGF5b3V0PS0xXT0iRGVwZW5kc09uS2JMYXlvdXQiLHRbdC5Vbmtub3duPTBdPSJVbmtub3duIix0W3QuQmFja3NwYWNlPTFdPSJCYWNrc3BhY2UiLHRbdC5UYWI9Ml09IlRhYiIsdFt0LkVudGVyPTNdPSJFbnRlciIsdFt0LlNoaWZ0PTRdPSJTaGlmdCIsdFt0LkN0cmw9NV09IkN0cmwiLHRbdC5BbHQ9Nl09IkFsdCIsdFt0LlBhdXNlQnJlYWs9N109IlBhdXNlQnJlYWsiLHRbdC5DYXBzTG9jaz04XT0iQ2Fwc0xvY2siLHRbdC5Fc2NhcGU9OV09IkVzY2FwZSIsdFt0LlNwYWNlPTEwXT0iU3BhY2UiLHRbdC5QYWdlVXA9MTFdPSJQYWdlVXAiLHRbdC5QYWdlRG93bj0xMl09IlBhZ2VEb3duIix0W3QuRW5kPTEzXT0iRW5kIix0W3QuSG9tZT0xNF09IkhvbWUiLHRbdC5MZWZ0QXJyb3c9MTVdPSJMZWZ0QXJyb3ciLHRbdC5VcEFycm93PTE2XT0iVXBBcnJvdyIsdFt0LlJpZ2h0QXJyb3c9MTddPSJSaWdodEFycm93Iix0W3QuRG93bkFycm93PTE4XT0iRG93bkFycm93Iix0W3QuSW5zZXJ0PTE5XT0iSW5zZXJ0Iix0W3QuRGVsZXRlPTIwXT0iRGVsZXRlIix0W3QuRGlnaXQwPTIxXT0iRGlnaXQwIix0W3QuRGlnaXQxPTIyXT0iRGlnaXQxIix0W3QuRGlnaXQyPTIzXT0iRGlnaXQyIix0W3QuRGlnaXQzPTI0XT0iRGlnaXQzIix0W3QuRGlnaXQ0PTI1XT0iRGlnaXQ0Iix0W3QuRGlnaXQ1PTI2XT0iRGlnaXQ1Iix0W3QuRGlnaXQ2PTI3XT0iRGlnaXQ2Iix0W3QuRGlnaXQ3PTI4XT0iRGlnaXQ3Iix0W3QuRGlnaXQ4PTI5XT0iRGlnaXQ4Iix0W3QuRGlnaXQ5PTMwXT0iRGlnaXQ5Iix0W3QuS2V5QT0zMV09IktleUEiLHRbdC5LZXlCPTMyXT0iS2V5QiIsdFt0LktleUM9MzNdPSJLZXlDIix0W3QuS2V5RD0zNF09IktleUQiLHRbdC5LZXlFPTM1XT0iS2V5RSIsdFt0LktleUY9MzZdPSJLZXlGIix0W3QuS2V5Rz0zN109IktleUciLHRbdC5LZXlIPTM4XT0iS2V5SCIsdFt0LktleUk9MzldPSJLZXlJIix0W3QuS2V5Sj00MF09IktleUoiLHRbdC5LZXlLPTQxXT0iS2V5SyIsdFt0LktleUw9NDJdPSJLZXlMIix0W3QuS2V5TT00M109IktleU0iLHRbdC5LZXlOPTQ0XT0iS2V5TiIsdFt0LktleU89NDVdPSJLZXlPIix0W3QuS2V5UD00Nl09IktleVAiLHRbdC5LZXlRPTQ3XT0iS2V5USIsdFt0LktleVI9NDhdPSJLZXlSIix0W3QuS2V5Uz00OV09IktleVMiLHRbdC5LZXlUPTUwXT0iS2V5VCIsdFt0LktleVU9NTFdPSJLZXlVIix0W3QuS2V5Vj01Ml09IktleVYiLHRbdC5LZXlXPTUzXT0iS2V5VyIsdFt0LktleVg9NTRdPSJLZXlYIix0W3QuS2V5WT01NV09IktleVkiLHRbdC5LZXlaPTU2XT0iS2V5WiIsdFt0Lk1ldGE9NTddPSJNZXRhIix0W3QuQ29udGV4dE1lbnU9NThdPSJDb250ZXh0TWVudSIsdFt0LkYxPTU5XT0iRjEiLHRbdC5GMj02MF09IkYyIix0W3QuRjM9NjFdPSJGMyIsdFt0LkY0PTYyXT0iRjQiLHRbdC5GNT02M109IkY1Iix0W3QuRjY9NjRdPSJGNiIsdFt0LkY3PTY1XT0iRjciLHRbdC5GOD02Nl09IkY4Iix0W3QuRjk9NjddPSJGOSIsdFt0LkYxMD02OF09IkYxMCIsdFt0LkYxMT02OV09IkYxMSIsdFt0LkYxMj03MF09IkYxMiIsdFt0LkYxMz03MV09IkYxMyIsdFt0LkYxND03Ml09IkYxNCIsdFt0LkYxNT03M109IkYxNSIsdFt0LkYxNj03NF09IkYxNiIsdFt0LkYxNz03NV09IkYxNyIsdFt0LkYxOD03Nl09IkYxOCIsdFt0LkYxOT03N109IkYxOSIsdFt0Lk51bUxvY2s9NzhdPSJOdW1Mb2NrIix0W3QuU2Nyb2xsTG9jaz03OV09IlNjcm9sbExvY2siLHRbdC5TZW1pY29sb249ODBdPSJTZW1pY29sb24iLHRbdC5FcXVhbD04MV09IkVxdWFsIix0W3QuQ29tbWE9ODJdPSJDb21tYSIsdFt0Lk1pbnVzPTgzXT0iTWludXMiLHRbdC5QZXJpb2Q9ODRdPSJQZXJpb2QiLHRbdC5TbGFzaD04NV09IlNsYXNoIix0W3QuQmFja3F1b3RlPTg2XT0iQmFja3F1b3RlIix0W3QuQnJhY2tldExlZnQ9ODddPSJCcmFja2V0TGVmdCIsdFt0LkJhY2tzbGFzaD04OF09IkJhY2tzbGFzaCIsdFt0LkJyYWNrZXRSaWdodD04OV09IkJyYWNrZXRSaWdodCIsdFt0LlF1b3RlPTkwXT0iUXVvdGUiLHRbdC5PRU1fOD05MV09Ik9FTV84Iix0W3QuSW50bEJhY2tzbGFzaD05Ml09IkludGxCYWNrc2xhc2giLHRbdC5OdW1wYWQwPTkzXT0iTnVtcGFkMCIsdFt0Lk51bXBhZDE9OTRdPSJOdW1wYWQxIix0W3QuTnVtcGFkMj05NV09Ik51bXBhZDIiLHRbdC5OdW1wYWQzPTk2XT0iTnVtcGFkMyIsdFt0Lk51bXBhZDQ9OTddPSJOdW1wYWQ0Iix0W3QuTnVtcGFkNT05OF09Ik51bXBhZDUiLHRbdC5OdW1wYWQ2PTk5XT0iTnVtcGFkNiIsdFt0Lk51bXBhZDc9MTAwXT0iTnVtcGFkNyIsdFt0Lk51bXBhZDg9MTAxXT0iTnVtcGFkOCIsdFt0Lk51bXBhZDk9MTAyXT0iTnVtcGFkOSIsdFt0Lk51bXBhZE11bHRpcGx5PTEwM109Ik51bXBhZE11bHRpcGx5Iix0W3QuTnVtcGFkQWRkPTEwNF09Ik51bXBhZEFkZCIsdFt0Lk5VTVBBRF9TRVBBUkFUT1I9MTA1XT0iTlVNUEFEX1NFUEFSQVRPUiIsdFt0Lk51bXBhZFN1YnRyYWN0PTEwNl09Ik51bXBhZFN1YnRyYWN0Iix0W3QuTnVtcGFkRGVjaW1hbD0xMDddPSJOdW1wYWREZWNpbWFsIix0W3QuTnVtcGFkRGl2aWRlPTEwOF09Ik51bXBhZERpdmlkZSIsdFt0LktFWV9JTl9DT01QT1NJVElPTj0xMDldPSJLRVlfSU5fQ09NUE9TSVRJT04iLHRbdC5BQk5UX0MxPTExMF09IkFCTlRfQzEiLHRbdC5BQk5UX0MyPTExMV09IkFCTlRfQzIiLHRbdC5BdWRpb1ZvbHVtZU11dGU9MTEyXT0iQXVkaW9Wb2x1bWVNdXRlIix0W3QuQXVkaW9Wb2x1bWVVcD0xMTNdPSJBdWRpb1ZvbHVtZVVwIix0W3QuQXVkaW9Wb2x1bWVEb3duPTExNF09IkF1ZGlvVm9sdW1lRG93biIsdFt0LkJyb3dzZXJTZWFyY2g9MTE1XT0iQnJvd3NlclNlYXJjaCIsdFt0LkJyb3dzZXJIb21lPTExNl09IkJyb3dzZXJIb21lIix0W3QuQnJvd3NlckJhY2s9MTE3XT0iQnJvd3NlckJhY2siLHRbdC5Ccm93c2VyRm9yd2FyZD0xMThdPSJCcm93c2VyRm9yd2FyZCIsdFt0Lk1lZGlhVHJhY2tOZXh0PTExOV09Ik1lZGlhVHJhY2tOZXh0Iix0W3QuTWVkaWFUcmFja1ByZXZpb3VzPTEyMF09Ik1lZGlhVHJhY2tQcmV2aW91cyIsdFt0Lk1lZGlhU3RvcD0xMjFdPSJNZWRpYVN0b3AiLHRbdC5NZWRpYVBsYXlQYXVzZT0xMjJdPSJNZWRpYVBsYXlQYXVzZSIsdFt0LkxhdW5jaE1lZGlhUGxheWVyPTEyM109IkxhdW5jaE1lZGlhUGxheWVyIix0W3QuTGF1bmNoTWFpbD0xMjRdPSJMYXVuY2hNYWlsIix0W3QuTGF1bmNoQXBwMj0xMjVdPSJMYXVuY2hBcHAyIix0W3QuTUFYX1ZBTFVFPTEyNl09Ik1BWF9WQUxVRSIsKGU9U3I9U3J8fHt9KVtlLlRyYWNlPTBdPSJUcmFjZSIsZVtlLkRlYnVnPTFdPSJEZWJ1ZyIsZVtlLkluZm89Ml09IkluZm8iLGVbZS5XYXJuaW5nPTNdPSJXYXJuaW5nIixlW2UuRXJyb3I9NF09IkVycm9yIixlW2UuQ3JpdGljYWw9NV09IkNyaXRpY2FsIixlW2UuT2ZmPTZdPSJPZmYiLChSPUxyPUxyfHx7fSlbUi5QYXJhZ3JhcGg9MF09IlBhcmFncmFwaCIsUltSLkJyZWFrPTFdPSJCcmVhayIsKHFyPU5yPU5yfHx7fSlbcXIuSGludD0xXT0iSGludCIscXJbcXIuSW5mbz0yXT0iSW5mbyIscXJbcXIuV2FybmluZz00XT0iV2FybmluZyIscXJbcXIuRXJyb3I9OF09IkVycm9yIiwoZT1Fcj1Fcnx8e30pW2UuVW5uZWNlc3Nhcnk9MV09IlVubmVjZXNzYXJ5IixlW2UuRGVwcmVjYXRlZD0yXT0iRGVwcmVjYXRlZCIsKFI9QXI9QXJ8fHt9KVtSLkxUUj0wXT0iTFRSIixSW1IuUlRMPTFdPSJSVEwiLERyLmJpbmQodm9pZCAwLCExKSxEci5iaW5kKHZvaWQgMCwhMCk7Y29uc3QgSXI9bmV3IFNldDsiKClbXXt9PD5gJ1wiLS87OiwuPyEiLnNwbGl0KCIiKS5mb3JFYWNoKGU9PklyLmFkZChlLmNoYXJDb2RlQXQoMCkpKSxuZXcgWXQoMWU0KTtmdW5jdGlvbiBWcigpe2NvbnN0IHQ9W10scj1bXTtmb3IobGV0IGU9MDtlPD0xMjg7ZSsrKXJbZV09MDtmb3IobGV0IGU9MDtlPD0xMjg7ZSsrKXQucHVzaChyLnNsaWNlKDApKTtyZXR1cm4gdH1mdW5jdGlvbiBPcih0KXtjb25zdCByPVtdO2ZvcihsZXQgZT0wO2U8PXQ7ZSsrKXJbZV09MDtyZXR1cm4gcn1PcigyNTYpLE9yKDI1NiksVnIoKSxWcigpLFZyKCk7dmFyIEZyLFRyLEJyLHFyPW5ldyBSZWdFeHAoYFxcJFxcKCR7dnIuaWNvbk5hbWVFeHByZXNzaW9ufSg/OiR7dnIuaWNvbk1vZGlmaWVyRXhwcmVzc2lvbn0pP1xcKWAsImciKTtuZXcgUmVnRXhwKHZyLmljb25OYW1lQ2hhcmFjdGVyKTtjb25zdCBVcj1uZXcgUmVnRXhwKCIoXFxcXCk/Iitxci5zb3VyY2UsImciKTtuZXcgUmVnRXhwKCJcXFxcIitxci5zb3VyY2UsImciKSxuZXcgUmVnRXhwKGAoXFxzKT8oXFxcXCk/JHtxci5zb3VyY2V9KFxccyk/YCwiZyIpO2NsYXNzIEhye2NvbnN0cnVjdG9yKGU9IiIsdD0hMSl7aWYodGhpcy52YWx1ZT1lLCJzdHJpbmciIT10eXBlb2YgdGhpcy52YWx1ZSl0aHJvdyhlPSJ2YWx1ZSIpP25ldyBFcnJvcigiSWxsZWdhbCBhcmd1bWVudDogIitlKTpuZXcgRXJyb3IoIklsbGVnYWwgYXJndW1lbnQiKTsiYm9vbGVhbiI9PXR5cGVvZiB0Pyh0aGlzLmlzVHJ1c3RlZD10LHRoaXMuc3VwcG9ydFRoZW1lSWNvbnM9ITEsdGhpcy5zdXBwb3J0SHRtbD0hMSk6KHRoaXMuaXNUcnVzdGVkPW51bGwhPT0oZT10LmlzVHJ1c3RlZCkmJnZvaWQgMCE9PWU/ZTp2b2lkIDAsdGhpcy5zdXBwb3J0VGhlbWVJY29ucz1udWxsIT09KGU9dC5zdXBwb3J0VGhlbWVJY29ucykmJnZvaWQgMCE9PWUmJmUsdGhpcy5zdXBwb3J0SHRtbD1udWxsIT09KGU9dC5zdXBwb3J0SHRtbCkmJnZvaWQgMCE9PWUmJmUpfWFwcGVuZFRleHQoZSx0PTApe3JldHVybiB0aGlzLnZhbHVlKz0odGhpcy5zdXBwb3J0VGhlbWVJY29ucz9lLnJlcGxhY2UoVXIsKGUsdCk9PnQ/ZToiXFwiK2UpOmUpLnJlcGxhY2UoL1tcXGAqX3t9W1xdKCkjK1wtIV0vZywiXFwkJiIpLnJlcGxhY2UoLyhbIFx0XSspL2csKGUsdCk9PiImbmJzcDsiLnJlcGVhdCh0Lmxlbmd0aCkpLnJlcGxhY2UoL1w+L2dtLCJcXD4iKS5yZXBsYWNlKC9cbi9nLDE9PT10PyJcXFxuIjoiXG5cbiIpLHRoaXN9YXBwZW5kTWFya2Rvd24oZSl7cmV0dXJuIHRoaXMudmFsdWUrPWUsdGhpc31hcHBlbmRDb2RlYmxvY2soZSx0KXtyZXR1cm4gdGhpcy52YWx1ZSs9IlxuYGBgIix0aGlzLnZhbHVlKz1lLHRoaXMudmFsdWUrPSJcbiIsdGhpcy52YWx1ZSs9dCx0aGlzLnZhbHVlKz0iXG5gYGBcbiIsdGhpc319ZnVuY3Rpb24gV3IoZSl7aWYoRnIuc2VydmljZUlkcy5oYXMoZSkpcmV0dXJuIEZyLnNlcnZpY2VJZHMuZ2V0KGUpO2Z1bmN0aW9uIGEoZSx0LHIpe2lmKDMhPT1hcmd1bWVudHMubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiQElTZXJ2aWNlTmFtZS1kZWNvcmF0b3IgY2FuIG9ubHkgYmUgdXNlZCB0byBkZWNvcmF0ZSBhIHBhcmFtZXRlciIpO3ZhciBuLGk7bj1hLHI9cixpPSExLChlPWUpW0ZyLkRJX1RBUkdFVF09PT1lP2VbRnIuRElfREVQRU5ERU5DSUVTXS5wdXNoKHtpZDpuLGluZGV4OnIsb3B0aW9uYWw6aX0pOihlW0ZyLkRJX0RFUEVOREVOQ0lFU109W3tpZDpuLGluZGV4OnIsb3B0aW9uYWw6aX1dLGVbRnIuRElfVEFSR0VUXT1lKX1yZXR1cm4gYS50b1N0cmluZz0oKT0+ZSxGci5zZXJ2aWNlSWRzLnNldChlLGEpLGEsMX0oVHI9RnI9RnJ8fHt9KS5zZXJ2aWNlSWRzPW5ldyBNYXAsVHIuRElfVEFSR0VUPSIkZGkkdGFyZ2V0IixUci5ESV9ERVBFTkRFTkNJRVM9IiRkaSRkZXBlbmRlbmNpZXMiLFRyLmdldFNlcnZpY2VEZXBlbmRlbmNpZXM9ZnVuY3Rpb24oZSl7cmV0dXJuIGVbVHIuRElfREVQRU5ERU5DSUVTXXx8W119LFdyKCJpbnN0YW50aWF0aW9uU2VydmljZSIpLFdyKCJsb2dTZXJ2aWNlIiksV3IoImxvZ2dlclNlcnZpY2UiKSwoZT1Ccj1Ccnx8e30pW2UuVHJhY2U9MF09IlRyYWNlIixlW2UuRGVidWc9MV09IkRlYnVnIixlW2UuSW5mbz0yXT0iSW5mbyIsZVtlLldhcm5pbmc9M109Ildhcm5pbmciLGVbZS5FcnJvcj00XT0iRXJyb3IiLGVbZS5Dcml0aWNhbD01XT0iQ3JpdGljYWwiLGVbZS5PZmY9Nl09Ik9mZiI7Y29uc3QgenI9QnIuSW5mbztjbGFzcyBqciBleHRlbmRzIFN7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMubGV2ZWw9enIsdGhpcy5fb25EaWRDaGFuZ2VMb2dMZXZlbD10aGlzLl9yZWdpc3RlcihuZXcgWCksdGhpcy5vbkRpZENoYW5nZUxvZ0xldmVsPXRoaXMuX29uRGlkQ2hhbmdlTG9nTGV2ZWwuZXZlbnR9c2V0TGV2ZWwoZSl7dGhpcy5sZXZlbCE9PWUmJih0aGlzLmxldmVsPWUsdGhpcy5fb25EaWRDaGFuZ2VMb2dMZXZlbC5maXJlKHRoaXMubGV2ZWwpKX1nZXRMZXZlbCgpe3JldHVybiB0aGlzLmxldmVsfX1jbGFzcyAkciBleHRlbmRzIGpye2NvbnN0cnVjdG9yKGU9enIpe3N1cGVyKCksdGhpcy5zZXRMZXZlbChlKX10cmFjZShlLC4uLnQpe3RoaXMuZ2V0TGV2ZWwoKTw9QnIuVHJhY2UmJmNvbnNvbGUubG9nKCIlY1RSQUNFIiwiY29sb3I6ICM4ODgiLGUsLi4udCl9ZGVidWcoZSwuLi50KXt0aGlzLmdldExldmVsKCk8PUJyLkRlYnVnJiZjb25zb2xlLmxvZygiJWNERUJVRyIsImJhY2tncm91bmQ6ICNlZWU7IGNvbG9yOiAjODg4IixlLC4uLnQpfWluZm8oZSwuLi50KXt0aGlzLmdldExldmVsKCk8PUJyLkluZm8mJmNvbnNvbGUubG9nKCIlYyBJTkZPIiwiY29sb3I6ICMzM2YiLGUsLi4udCl9d2FybihlLC4uLnQpe3RoaXMuZ2V0TGV2ZWwoKTw9QnIuV2FybmluZyYmY29uc29sZS5sb2coIiVjIFdBUk4iLCJjb2xvcjogIzk5MyIsZSwuLi50KX1lcnJvcihlLC4uLnQpe3RoaXMuZ2V0TGV2ZWwoKTw9QnIuRXJyb3ImJmNvbnNvbGUubG9nKCIlYyAgRVJSIiwiY29sb3I6ICNmMzMiLGUsLi4udCl9Y3JpdGljYWwoZSwuLi50KXt0aGlzLmdldExldmVsKCk8PUJyLkNyaXRpY2FsJiZjb25zb2xlLmxvZygiJWNDUklUSSIsImJhY2tncm91bmQ6ICNmMzM7IGNvbG9yOiB3aGl0ZSIsZSwuLi50KX1kaXNwb3NlKCl7fWZsdXNoKCl7fX1jbGFzcyBHcntzdGF0aWMgY2hvcmQoZSx0KXtyZXR1cm4oZXwoNjU1MzUmdCk8PDE2Pj4+MCk+Pj4wfX1mdW5jdGlvbiBKcihlLHQscixuLGkpe3JldHVybiBmdW5jdGlvbihlLHQscixuKXtpZigwPT09cilyZXR1cm4gMTt2YXIgaT10LmNoYXJDb2RlQXQoci0xKTtpZigwIT09ZS5nZXQoaSkpcmV0dXJuIDE7aWYoMTM9PT1pfHwxMD09PWkpcmV0dXJuIDE7aWYoMDxuKXtpPXQuY2hhckNvZGVBdChyKTtpZigwIT09ZS5nZXQoaSkpcmV0dXJuIDF9cmV0dXJufShlLHQsbixpKSYmZnVuY3Rpb24oZSx0LHIsbixpKXtpZihuK2k9PT1yKXJldHVybiAxO2lmKHI9dC5jaGFyQ29kZUF0KG4raSksMCE9PWUuZ2V0KHIpKXJldHVybiAxO2lmKDEzPT09cnx8MTA9PT1yKXJldHVybiAxO2lmKDA8aSl7cj10LmNoYXJDb2RlQXQobitpLTEpO2lmKDAhPT1lLmdldChyKSlyZXR1cm4gMX1yZXR1cm59KGUsdCxyLG4saSl9R3IuQ3RybENtZD0yMDQ4LEdyLlNoaWZ0PTEwMjQsR3IuQWx0PTUxMixHci5XaW5DdHJsPTI1NjtjbGFzcyBRcntjb25zdHJ1Y3RvcihlLHQpe3RoaXMuX3dvcmRTZXBhcmF0b3JzPWUsdGhpcy5fc2VhcmNoUmVnZXg9dCx0aGlzLl9wcmV2TWF0Y2hTdGFydEluZGV4PS0xLHRoaXMuX3ByZXZNYXRjaExlbmd0aD0wfXJlc2V0KGUpe3RoaXMuX3NlYXJjaFJlZ2V4Lmxhc3RJbmRleD1lLHRoaXMuX3ByZXZNYXRjaFN0YXJ0SW5kZXg9LTEsdGhpcy5fcHJldk1hdGNoTGVuZ3RoPTB9bmV4dChlKXt2YXIgdD1lLmxlbmd0aDtsZXQgcjtkb3tpZih0aGlzLl9wcmV2TWF0Y2hTdGFydEluZGV4K3RoaXMuX3ByZXZNYXRjaExlbmd0aD09PXQpcmV0dXJuIG51bGw7aWYoIShyPXRoaXMuX3NlYXJjaFJlZ2V4LmV4ZWMoZSkpKXJldHVybiBudWxsO3ZhciBuPXIuaW5kZXgsaT1yWzBdLmxlbmd0aDtpZihuIT09dGhpcy5fcHJldk1hdGNoU3RhcnRJbmRleHx8aSE9PXRoaXMuX3ByZXZNYXRjaExlbmd0aCl7aWYodGhpcy5fcHJldk1hdGNoU3RhcnRJbmRleD1uLHRoaXMuX3ByZXZNYXRjaExlbmd0aD1pLCF0aGlzLl93b3JkU2VwYXJhdG9yc3x8SnIodGhpcy5fd29yZFNlcGFyYXRvcnMsZSx0LG4saSkpcmV0dXJuIHJ9ZWxzZXtpZigwIT09aSlyZXR1cm4gbnVsbDs2NTUzNTxmdW5jdGlvbihlLHQscil7dmFyIG49ZS5jaGFyQ29kZUF0KHIpO2lmKGxlKG4pJiZyKzE8dCl7dD1lLmNoYXJDb2RlQXQocisxKTtpZig1NjMyMDw9KGU9dCkmJmU8PTU3MzQzKXJldHVybiB0LTU2MzIwKyhuLTU1Mjk2PDwxMCkrNjU1MzZ9cmV0dXJuIG59KGUsdCx0aGlzLl9zZWFyY2hSZWdleC5sYXN0SW5kZXgpP3RoaXMuX3NlYXJjaFJlZ2V4Lmxhc3RJbmRleCs9Mjp0aGlzLl9zZWFyY2hSZWdleC5sYXN0SW5kZXgrPTF9fXdoaWxlKHIpO3JldHVybiBudWxsfX1jbGFzcyBZcntzdGF0aWMgY29tcHV0ZVVuaWNvZGVIaWdobGlnaHRzKHQsdSxlKXt2YXIgYz1lP2Uuc3RhcnRMaW5lTnVtYmVyOjEsZD1lP2UuZW5kTGluZU51bWJlcjp0LmdldExpbmVDb3VudCgpO2NvbnN0IG49bmV3IFpyKHUpO3ZhciBpLGU9bi5nZXRDYW5kaWRhdGVDb2RlUG9pbnRzKCk7bGV0IHI7cj0iYWxsTm9uQmFzaWNBc2NpaSI9PT1lP25ldyBSZWdFeHAoIlteXFx0XFxuXFxyXFx4MjAtXFx4N0VdIiwiZyIpOm5ldyBSZWdFeHAoIiIrZnVuY3Rpb24oZSl7ZT1gWyR7bmUoZS5tYXAoZT0+U3RyaW5nLmZyb21Db2RlUG9pbnQoZSkpLmpvaW4oIiIpKX1dYDtyZXR1cm4gZX0oQXJyYXkuZnJvbShlKSksImciKTtjb25zdCBhPW5ldyBRcihudWxsLHIpLG89W107bGV0IHM9ITEsZj0wLG09MCxnPTA7ZTpmb3IobGV0IHI9YyxlPWQ7cjw9ZTtyKyspe2NvbnN0IGg9dC5nZXRMaW5lQ29udGVudChyKTt2YXIgYj1oLmxlbmd0aDthLnJlc2V0KDApO2Rve2lmKGk9YS5uZXh0KGgpKXtsZXQgZT1pLmluZGV4LHQ9aS5pbmRleCtpWzBdLmxlbmd0aDswPGUmJmxlKGguY2hhckNvZGVBdChlLTEpKSYmZS0tLHQrMTxiJiZsZShoLmNoYXJDb2RlQXQodC0xKSkmJnQrKzt2YXIgbD1oLnN1YnN0cmluZyhlLHQpLGw9bi5zaG91bGRIaWdobGlnaHROb25CYXNpY0FTQ0lJKGwpO2lmKDAhPT1sKXtpZigzPT09bClmKys7ZWxzZSBpZigyPT09bCltKys7ZWxzZXtpZigxIT09bCl0aHJvdyBsPXZvaWQgMCxbbD0iVW5yZWFjaGFibGUiXT1bXSxuZXcgRXJyb3IobCk7ZysrfWlmKDFlMzw9by5sZW5ndGgpe3M9ITA7YnJlYWsgZX1vLnB1c2gobmV3IHAocixlKzEscix0KzEpKX19fXdoaWxlKGkpfXJldHVybntyYW5nZXM6byxoYXNNb3JlOnMsYW1iaWd1b3VzQ2hhcmFjdGVyQ291bnQ6ZixpbnZpc2libGVDaGFyYWN0ZXJDb3VudDptLG5vbkJhc2ljQXNjaWlDaGFyYWN0ZXJDb3VudDpnfX1zdGF0aWMgY29tcHV0ZVVuaWNvZGVIaWdobGlnaHRSZWFzb24oZSx0KXtjb25zdCByPW5ldyBacih0KTtzd2l0Y2goci5zaG91bGRIaWdobGlnaHROb25CYXNpY0FTQ0lJKGUpKXtjYXNlIDA6cmV0dXJuIG51bGw7Y2FzZSAyOnJldHVybntraW5kOjF9O2Nhc2UgMzp7Y29uc3QgYT1lLmNvZGVQb2ludEF0KDApO3ZhciBuPXIuYW1iaWd1b3VzQ2hhcmFjdGVycy5nZXRQcmltYXJ5Q29uZnVzYWJsZShhKSxpPWhlLmdldExvY2FsZXMoKS5maWx0ZXIoZT0+IWhlLmdldEluc3RhbmNlKG5ldyBTZXQoWy4uLnQuYWxsb3dlZExvY2FsZXMsZV0pKS5pc0FtYmlndW91cyhhKSk7cmV0dXJue2tpbmQ6MCxjb25mdXNhYmxlV2l0aDpTdHJpbmcuZnJvbUNvZGVQb2ludChuKSxub3RBbWJpZ3VvdXNJbkxvY2FsZXM6aX19Y2FzZSAxOnJldHVybntraW5kOjJ9fX19Y2xhc3MgWnJ7Y29uc3RydWN0b3IoZSl7dGhpcy5vcHRpb25zPWUsdGhpcy5hbGxvd2VkQ29kZVBvaW50cz1uZXcgU2V0KGUuYWxsb3dlZENvZGVQb2ludHMpLHRoaXMuYW1iaWd1b3VzQ2hhcmFjdGVycz1oZS5nZXRJbnN0YW5jZShuZXcgU2V0KGUuYWxsb3dlZExvY2FsZXMpKX1nZXRDYW5kaWRhdGVDb2RlUG9pbnRzKCl7aWYodGhpcy5vcHRpb25zLm5vbkJhc2ljQVNDSUkpcmV0dXJuImFsbE5vbkJhc2ljQXNjaWkiO2NvbnN0IGU9bmV3IFNldDtpZih0aGlzLm9wdGlvbnMuaW52aXNpYmxlQ2hhcmFjdGVycylmb3IoY29uc3QgdCBvZiB1ZS5jb2RlUG9pbnRzKWUuYWRkKHQpO2lmKHRoaXMub3B0aW9ucy5hbWJpZ3VvdXNDaGFyYWN0ZXJzKWZvcihjb25zdCByIG9mIHRoaXMuYW1iaWd1b3VzQ2hhcmFjdGVycy5nZXRDb25mdXNhYmxlQ29kZVBvaW50cygpKWUuYWRkKHIpO2Zvcihjb25zdCBuIG9mIHRoaXMuYWxsb3dlZENvZGVQb2ludHMpZS5kZWxldGUobik7cmV0dXJuIGV9c2hvdWxkSGlnaGxpZ2h0Tm9uQmFzaWNBU0NJSShlKXt2YXIgdD1lLmNvZGVQb2ludEF0KDApO2lmKHRoaXMuYWxsb3dlZENvZGVQb2ludHMuaGFzKHQpKXJldHVybiAwO2lmKHRoaXMub3B0aW9ucy5ub25CYXNpY0FTQ0lJKXJldHVybiAxO2lmKHRoaXMub3B0aW9ucy5pbnZpc2libGVDaGFyYWN0ZXJzJiYoISgiICI9PT1lfHwiXG4iPT09ZXx8Ilx0Ij09PWUpJiZ1ZS5pc0ludmlzaWJsZUNoYXJhY3Rlcih0KSkpcmV0dXJuIDI7cmV0dXJuIHRoaXMub3B0aW9ucy5hbWJpZ3VvdXNDaGFyYWN0ZXJzJiZ0aGlzLmFtYmlndW91c0NoYXJhY3RlcnMuaXNBbWJpZ3VvdXModCk/MzowfX12YXIgWHI9ZnVuY3Rpb24oZSxvLHMsbCl7cmV0dXJuIG5ldyhzPXN8fFByb21pc2UpKGZ1bmN0aW9uKHIsdCl7ZnVuY3Rpb24gbihlKXt0cnl7YShsLm5leHQoZSkpfWNhdGNoKGUpe3QoZSl9fWZ1bmN0aW9uIGkoZSl7dHJ5e2EobC50aHJvdyhlKSl9Y2F0Y2goZSl7dChlKX19ZnVuY3Rpb24gYShlKXt2YXIgdDtlLmRvbmU/cihlLnZhbHVlKTooKHQ9ZS52YWx1ZSlpbnN0YW5jZW9mIHM/dDpuZXcgcyhmdW5jdGlvbihlKXtlKHQpfSkpLnRoZW4obixpKX1hKChsPWwuYXBwbHkoZSxvfHxbXSkpLm5leHQoKSl9KX07Y2xhc3MgZW4gZXh0ZW5kcyBjbGFzc3tjb25zdHJ1Y3RvcihlLHQscixuKXt0aGlzLl91cmk9ZSx0aGlzLl9saW5lcz10LHRoaXMuX2VvbD1yLHRoaXMuX3ZlcnNpb25JZD1uLHRoaXMuX2xpbmVTdGFydHM9bnVsbCx0aGlzLl9jYWNoZWRUZXh0VmFsdWU9bnVsbH1kaXNwb3NlKCl7dGhpcy5fbGluZXMubGVuZ3RoPTB9Z2V0IHZlcnNpb24oKXtyZXR1cm4gdGhpcy5fdmVyc2lvbklkfWdldFRleHQoKXtyZXR1cm4gbnVsbD09PXRoaXMuX2NhY2hlZFRleHRWYWx1ZSYmKHRoaXMuX2NhY2hlZFRleHRWYWx1ZT10aGlzLl9saW5lcy5qb2luKHRoaXMuX2VvbCkpLHRoaXMuX2NhY2hlZFRleHRWYWx1ZX1vbkV2ZW50cyhlKXtlLmVvbCYmZS5lb2whPT10aGlzLl9lb2wmJih0aGlzLl9lb2w9ZS5lb2wsdGhpcy5fbGluZVN0YXJ0cz1udWxsKTtmb3IoY29uc3QgdCBvZiBlLmNoYW5nZXMpdGhpcy5fYWNjZXB0RGVsZXRlUmFuZ2UodC5yYW5nZSksdGhpcy5fYWNjZXB0SW5zZXJ0VGV4dChuZXcgc3QodC5yYW5nZS5zdGFydExpbmVOdW1iZXIsdC5yYW5nZS5zdGFydENvbHVtbiksdC50ZXh0KTt0aGlzLl92ZXJzaW9uSWQ9ZS52ZXJzaW9uSWQsdGhpcy5fY2FjaGVkVGV4dFZhbHVlPW51bGx9X2Vuc3VyZUxpbmVTdGFydHMoKXtpZighdGhpcy5fbGluZVN0YXJ0cyl7dmFyIHQ9dGhpcy5fZW9sLmxlbmd0aCxyPXRoaXMuX2xpbmVzLmxlbmd0aDtjb25zdCBuPW5ldyBVaW50MzJBcnJheShyKTtmb3IobGV0IGU9MDtlPHI7ZSsrKW5bZV09dGhpcy5fbGluZXNbZV0ubGVuZ3RoK3Q7dGhpcy5fbGluZVN0YXJ0cz1uZXcgd3Qobil9fV9zZXRMaW5lVGV4dChlLHQpe3RoaXMuX2xpbmVzW2VdPXQsdGhpcy5fbGluZVN0YXJ0cyYmdGhpcy5fbGluZVN0YXJ0cy5zZXRWYWx1ZShlLHRoaXMuX2xpbmVzW2VdLmxlbmd0aCt0aGlzLl9lb2wubGVuZ3RoKX1fYWNjZXB0RGVsZXRlUmFuZ2UoZSl7aWYoZS5zdGFydExpbmVOdW1iZXI9PT1lLmVuZExpbmVOdW1iZXIpcmV0dXJuIGUuc3RhcnRDb2x1bW49PT1lLmVuZENvbHVtbj92b2lkIDA6dm9pZCB0aGlzLl9zZXRMaW5lVGV4dChlLnN0YXJ0TGluZU51bWJlci0xLHRoaXMuX2xpbmVzW2Uuc3RhcnRMaW5lTnVtYmVyLTFdLnN1YnN0cmluZygwLGUuc3RhcnRDb2x1bW4tMSkrdGhpcy5fbGluZXNbZS5zdGFydExpbmVOdW1iZXItMV0uc3Vic3RyaW5nKGUuZW5kQ29sdW1uLTEpKTt0aGlzLl9zZXRMaW5lVGV4dChlLnN0YXJ0TGluZU51bWJlci0xLHRoaXMuX2xpbmVzW2Uuc3RhcnRMaW5lTnVtYmVyLTFdLnN1YnN0cmluZygwLGUuc3RhcnRDb2x1bW4tMSkrdGhpcy5fbGluZXNbZS5lbmRMaW5lTnVtYmVyLTFdLnN1YnN0cmluZyhlLmVuZENvbHVtbi0xKSksdGhpcy5fbGluZXMuc3BsaWNlKGUuc3RhcnRMaW5lTnVtYmVyLGUuZW5kTGluZU51bWJlci1lLnN0YXJ0TGluZU51bWJlciksdGhpcy5fbGluZVN0YXJ0cyYmdGhpcy5fbGluZVN0YXJ0cy5yZW1vdmVWYWx1ZXMoZS5zdGFydExpbmVOdW1iZXIsZS5lbmRMaW5lTnVtYmVyLWUuc3RhcnRMaW5lTnVtYmVyKX1fYWNjZXB0SW5zZXJ0VGV4dCh0LGUpe2lmKDAhPT1lLmxlbmd0aCl7Y29uc3Qgcj1lLnNwbGl0KC9cclxufFxyfFxuLyk7aWYoMSE9PXIubGVuZ3RoKXtyW3IubGVuZ3RoLTFdKz10aGlzLl9saW5lc1t0LmxpbmVOdW1iZXItMV0uc3Vic3RyaW5nKHQuY29sdW1uLTEpLHRoaXMuX3NldExpbmVUZXh0KHQubGluZU51bWJlci0xLHRoaXMuX2xpbmVzW3QubGluZU51bWJlci0xXS5zdWJzdHJpbmcoMCx0LmNvbHVtbi0xKStyWzBdKTtjb25zdCBuPW5ldyBVaW50MzJBcnJheShyLmxlbmd0aC0xKTtmb3IobGV0IGU9MTtlPHIubGVuZ3RoO2UrKyl0aGlzLl9saW5lcy5zcGxpY2UodC5saW5lTnVtYmVyK2UtMSwwLHJbZV0pLG5bZS0xXT1yW2VdLmxlbmd0aCt0aGlzLl9lb2wubGVuZ3RoO3RoaXMuX2xpbmVTdGFydHMmJnRoaXMuX2xpbmVTdGFydHMuaW5zZXJ0VmFsdWVzKHQubGluZU51bWJlcixuKX1lbHNlIHRoaXMuX3NldExpbmVUZXh0KHQubGluZU51bWJlci0xLHRoaXMuX2xpbmVzW3QubGluZU51bWJlci0xXS5zdWJzdHJpbmcoMCx0LmNvbHVtbi0xKStyWzBdK3RoaXMuX2xpbmVzW3QubGluZU51bWJlci0xXS5zdWJzdHJpbmcodC5jb2x1bW4tMSkpfX19e2dldCB1cmkoKXtyZXR1cm4gdGhpcy5fdXJpfWdldCBlb2woKXtyZXR1cm4gdGhpcy5fZW9sfWdldFZhbHVlKCl7cmV0dXJuIHRoaXMuZ2V0VGV4dCgpfWdldExpbmVzQ29udGVudCgpe3JldHVybiB0aGlzLl9saW5lcy5zbGljZSgwKX1nZXRMaW5lQ291bnQoKXtyZXR1cm4gdGhpcy5fbGluZXMubGVuZ3RofWdldExpbmVDb250ZW50KGUpe3JldHVybiB0aGlzLl9saW5lc1tlLTFdfWdldFdvcmRBdFBvc2l0aW9uKGUsdCl7dD1TdChlLmNvbHVtbixmdW5jdGlvbih0KXtsZXQgcj12dDtpZih0JiZ0IGluc3RhbmNlb2YgUmVnRXhwKWlmKHQuZ2xvYmFsKXI9dDtlbHNle2xldCBlPSJnIjt0Lmlnbm9yZUNhc2UmJihlKz0iaSIpLHQubXVsdGlsaW5lJiYoZSs9Im0iKSx0LnVuaWNvZGUmJihlKz0idSIpLHI9bmV3IFJlZ0V4cCh0LnNvdXJjZSxlKX1yZXR1cm4gci5sYXN0SW5kZXg9MCxyfSh0KSx0aGlzLl9saW5lc1tlLmxpbmVOdW1iZXItMV0sMCk7cmV0dXJuIHQ/bmV3IHAoZS5saW5lTnVtYmVyLHQuc3RhcnRDb2x1bW4sZS5saW5lTnVtYmVyLHQuZW5kQ29sdW1uKTpudWxsfXdvcmRzKHQpe2NvbnN0IHI9dGhpcy5fbGluZXMsbj10aGlzLl93b3JkZW5pemUuYmluZCh0aGlzKTtsZXQgaT0wLGE9IiIsbz0wLHM9W107cmV0dXJueypbU3ltYm9sLml0ZXJhdG9yXSgpe2Zvcig7OylpZihvPHMubGVuZ3RoKXt2YXIgZT1hLnN1YnN0cmluZyhzW29dLnN0YXJ0LHNbb10uZW5kKTtvKz0xLHlpZWxkIGV9ZWxzZXtpZighKGk8ci5sZW5ndGgpKWJyZWFrO2E9cltpXSxzPW4oYSx0KSxvPTAsaSs9MX19fX1nZXRMaW5lV29yZHMoZSx0KXtjb25zdCByPXRoaXMuX2xpbmVzW2UtMV07Y29uc3Qgbj1bXTtmb3IoY29uc3QgaSBvZiB0aGlzLl93b3JkZW5pemUocix0KSluLnB1c2goe3dvcmQ6ci5zdWJzdHJpbmcoaS5zdGFydCxpLmVuZCksc3RhcnRDb2x1bW46aS5zdGFydCsxLGVuZENvbHVtbjppLmVuZCsxfSk7cmV0dXJuIG59X3dvcmRlbml6ZShlLHQpe2NvbnN0IHI9W107dmFyIG47Zm9yKHQubGFzdEluZGV4PTA7KG49dC5leGVjKGUpKSYmMCE9PW5bMF0ubGVuZ3RoOylyLnB1c2goe3N0YXJ0Om4uaW5kZXgsZW5kOm4uaW5kZXgrblswXS5sZW5ndGh9KTtyZXR1cm4gcn1nZXRWYWx1ZUluUmFuZ2UoZSl7aWYoKGU9dGhpcy5fdmFsaWRhdGVSYW5nZShlKSkuc3RhcnRMaW5lTnVtYmVyPT09ZS5lbmRMaW5lTnVtYmVyKXJldHVybiB0aGlzLl9saW5lc1tlLnN0YXJ0TGluZU51bWJlci0xXS5zdWJzdHJpbmcoZS5zdGFydENvbHVtbi0xLGUuZW5kQ29sdW1uLTEpO3ZhciB0PXRoaXMuX2VvbCxyPWUuc3RhcnRMaW5lTnVtYmVyLTEsbj1lLmVuZExpbmVOdW1iZXItMTtjb25zdCBpPVtdO2kucHVzaCh0aGlzLl9saW5lc1tyXS5zdWJzdHJpbmcoZS5zdGFydENvbHVtbi0xKSk7Zm9yKGxldCBlPTErcjtlPG47ZSsrKWkucHVzaCh0aGlzLl9saW5lc1tlXSk7cmV0dXJuIGkucHVzaCh0aGlzLl9saW5lc1tuXS5zdWJzdHJpbmcoMCxlLmVuZENvbHVtbi0xKSksaS5qb2luKHQpfW9mZnNldEF0KGUpe3JldHVybiBlPXRoaXMuX3ZhbGlkYXRlUG9zaXRpb24oZSksdGhpcy5fZW5zdXJlTGluZVN0YXJ0cygpLHRoaXMuX2xpbmVTdGFydHMuZ2V0UHJlZml4U3VtKGUubGluZU51bWJlci0yKSsoZS5jb2x1bW4tMSl9cG9zaXRpb25BdChlKXtlPU1hdGguZmxvb3IoZSksZT1NYXRoLm1heCgwLGUpLHRoaXMuX2Vuc3VyZUxpbmVTdGFydHMoKTt2YXIgZT10aGlzLl9saW5lU3RhcnRzLmdldEluZGV4T2YoZSksdD10aGlzLl9saW5lc1tlLmluZGV4XS5sZW5ndGg7cmV0dXJue2xpbmVOdW1iZXI6MStlLmluZGV4LGNvbHVtbjoxK01hdGgubWluKGUucmVtYWluZGVyLHQpfX1fdmFsaWRhdGVSYW5nZShlKXt2YXIgdD10aGlzLl92YWxpZGF0ZVBvc2l0aW9uKHtsaW5lTnVtYmVyOmUuc3RhcnRMaW5lTnVtYmVyLGNvbHVtbjplLnN0YXJ0Q29sdW1ufSkscj10aGlzLl92YWxpZGF0ZVBvc2l0aW9uKHtsaW5lTnVtYmVyOmUuZW5kTGluZU51bWJlcixjb2x1bW46ZS5lbmRDb2x1bW59KTtyZXR1cm4gdC5saW5lTnVtYmVyIT09ZS5zdGFydExpbmVOdW1iZXJ8fHQuY29sdW1uIT09ZS5zdGFydENvbHVtbnx8ci5saW5lTnVtYmVyIT09ZS5lbmRMaW5lTnVtYmVyfHxyLmNvbHVtbiE9PWUuZW5kQ29sdW1uP3tzdGFydExpbmVOdW1iZXI6dC5saW5lTnVtYmVyLHN0YXJ0Q29sdW1uOnQuY29sdW1uLGVuZExpbmVOdW1iZXI6ci5saW5lTnVtYmVyLGVuZENvbHVtbjpyLmNvbHVtbn06ZX1fdmFsaWRhdGVQb3NpdGlvbihlKXtpZighc3QuaXNJUG9zaXRpb24oZSkpdGhyb3cgbmV3IEVycm9yKCJiYWQgcG9zaXRpb24iKTtsZXR7bGluZU51bWJlcjp0LGNvbHVtbjpyfT1lLG49ITE7dmFyIGk7cmV0dXJuIHQ8MT8odD0xLHI9MSxuPSEwKTp0PnRoaXMuX2xpbmVzLmxlbmd0aD8odD10aGlzLl9saW5lcy5sZW5ndGgscj10aGlzLl9saW5lc1t0LTFdLmxlbmd0aCsxLG49ITApOihpPXRoaXMuX2xpbmVzW3QtMV0ubGVuZ3RoKzEscjwxPyhyPTEsbj0hMCk6cj5pJiYocj1pLG49ITApKSxuP3tsaW5lTnVtYmVyOnQsY29sdW1uOnJ9OmV9fWNsYXNzIHRue2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5faG9zdD1lLHRoaXMuX21vZGVscz1PYmplY3QuY3JlYXRlKG51bGwpLHRoaXMuX2ZvcmVpZ25Nb2R1bGVGYWN0b3J5PXQsdGhpcy5fZm9yZWlnbk1vZHVsZT1udWxsfWRpc3Bvc2UoKXt0aGlzLl9tb2RlbHM9T2JqZWN0LmNyZWF0ZShudWxsKX1fZ2V0TW9kZWwoZSl7cmV0dXJuIHRoaXMuX21vZGVsc1tlXX1fZ2V0TW9kZWxzKCl7Y29uc3QgdD1bXTtyZXR1cm4gT2JqZWN0LmtleXModGhpcy5fbW9kZWxzKS5mb3JFYWNoKGU9PnQucHVzaCh0aGlzLl9tb2RlbHNbZV0pKSx0fWFjY2VwdE5ld01vZGVsKGUpe3RoaXMuX21vZGVsc1tlLnVybF09bmV3IGVuKFllLnBhcnNlKGUudXJsKSxlLmxpbmVzLGUuRU9MLGUudmVyc2lvbklkKX1hY2NlcHRNb2RlbENoYW5nZWQoZSx0KXtpZih0aGlzLl9tb2RlbHNbZV0pe2NvbnN0IHI9dGhpcy5fbW9kZWxzW2VdO3Iub25FdmVudHModCl9fWFjY2VwdFJlbW92ZWRNb2RlbChlKXt0aGlzLl9tb2RlbHNbZV0mJmRlbGV0ZSB0aGlzLl9tb2RlbHNbZV19Y29tcHV0ZVVuaWNvZGVIaWdobGlnaHRzKHQscixuKXtyZXR1cm4gWHIodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe3ZhciBlPXRoaXMuX2dldE1vZGVsKHQpO3JldHVybiBlP1lyLmNvbXB1dGVVbmljb2RlSGlnaGxpZ2h0cyhlLHIsbik6e3JhbmdlczpbXSxoYXNNb3JlOiExLGFtYmlndW91c0NoYXJhY3RlckNvdW50OjAsaW52aXNpYmxlQ2hhcmFjdGVyQ291bnQ6MCxub25CYXNpY0FzY2lpQ2hhcmFjdGVyQ291bnQ6MH19KX1jb21wdXRlRGlmZihhLG8scyxsKXtyZXR1cm4gWHIodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe2NvbnN0IGU9dGhpcy5fZ2V0TW9kZWwoYSksdD10aGlzLl9nZXRNb2RlbChvKTtpZighZXx8IXQpcmV0dXJuIG51bGw7dmFyIHI9ZS5nZXRMaW5lc0NvbnRlbnQoKSxuPXQuZ2V0TGluZXNDb250ZW50KCk7Y29uc3QgaT1uZXcgZnQocixuLHtzaG91bGRDb21wdXRlQ2hhckNoYW5nZXM6ITAsc2hvdWxkUG9zdFByb2Nlc3NDaGFyQ2hhbmdlczohMCxzaG91bGRJZ25vcmVUcmltV2hpdGVzcGFjZTpzLHNob3VsZE1ha2VQcmV0dHlEaWZmOiEwLG1heENvbXB1dGF0aW9uVGltZTpsfSk7cj1pLmNvbXB1dGVEaWZmKCksbj0hKDA8ci5jaGFuZ2VzLmxlbmd0aCkmJnRoaXMuX21vZGVsc0FyZUlkZW50aWNhbChlLHQpO3JldHVybntxdWl0RWFybHk6ci5xdWl0RWFybHksaWRlbnRpY2FsOm4sY2hhbmdlczpyLmNoYW5nZXN9fSl9X21vZGVsc0FyZUlkZW50aWNhbCh0LHIpe3ZhciBuPXQuZ2V0TGluZUNvdW50KCk7aWYobiE9PXIuZ2V0TGluZUNvdW50KCkpcmV0dXJuITE7Zm9yKGxldCBlPTE7ZTw9bjtlKyspaWYodC5nZXRMaW5lQ29udGVudChlKSE9PXIuZ2V0TGluZUNvbnRlbnQoZSkpcmV0dXJuITE7cmV0dXJuITB9Y29tcHV0ZU1vcmVNaW5pbWFsRWRpdHMoZCxmKXtyZXR1cm4gWHIodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe2NvbnN0IGU9dGhpcy5fZ2V0TW9kZWwoZCk7aWYoIWUpcmV0dXJuIGY7Y29uc3QgdD1bXTtsZXQgcj12b2lkIDA7Zm9yKHZhcntyYW5nZTpuLHRleHQ6aSxlb2w6YX1vZiBmPWYuc2xpY2UoMCkuc29ydCgoZSx0KT0+e3JldHVybiBlLnJhbmdlJiZ0LnJhbmdlP3AuY29tcGFyZVJhbmdlc1VzaW5nU3RhcnRzKGUucmFuZ2UsdC5yYW5nZSk6KGUucmFuZ2U/MDoxKS0odC5yYW5nZT8wOjEpfSkpaWYoIm51bWJlciI9PXR5cGVvZiBhJiYocj1hKSwhcC5pc0VtcHR5KG4pfHxpKXthPWUuZ2V0VmFsdWVJblJhbmdlKG4pO2lmKGEhPT0oaT1pLnJlcGxhY2UoL1xyXG58XG58XHIvZyxlLmVvbCkpKWlmKE1hdGgubWF4KGkubGVuZ3RoLGEubGVuZ3RoKT50bi5fZGlmZkxpbWl0KXQucHVzaCh7cmFuZ2U6bix0ZXh0Oml9KTtlbHNle2E9YSx1PWksYz0hMTt2YXIgYT1uZXcgQWUobmV3IFNlKGEpLG5ldyBTZSh1KSkuQ29tcHV0ZURpZmYoYykuY2hhbmdlcyxvPWUub2Zmc2V0QXQocC5saWZ0KG4pLmdldFN0YXJ0UG9zaXRpb24oKSk7Zm9yKGNvbnN0IGggb2YgYSl7dmFyIHM9ZS5wb3NpdGlvbkF0KG8raC5vcmlnaW5hbFN0YXJ0KSxsPWUucG9zaXRpb25BdChvK2gub3JpZ2luYWxTdGFydCtoLm9yaWdpbmFsTGVuZ3RoKSxzPXt0ZXh0Omkuc3Vic3RyKGgubW9kaWZpZWRTdGFydCxoLm1vZGlmaWVkTGVuZ3RoKSxyYW5nZTp7c3RhcnRMaW5lTnVtYmVyOnMubGluZU51bWJlcixzdGFydENvbHVtbjpzLmNvbHVtbixlbmRMaW5lTnVtYmVyOmwubGluZU51bWJlcixlbmRDb2x1bW46bC5jb2x1bW59fTtlLmdldFZhbHVlSW5SYW5nZShzLnJhbmdlKSE9PXMudGV4dCYmdC5wdXNoKHMpfX19dmFyIHUsYztyZXR1cm4ibnVtYmVyIj09dHlwZW9mIHImJnQucHVzaCh7ZW9sOnIsdGV4dDoiIixyYW5nZTp7c3RhcnRMaW5lTnVtYmVyOjAsc3RhcnRDb2x1bW46MCxlbmRMaW5lTnVtYmVyOjAsZW5kQ29sdW1uOjB9fSksdH0pfWNvbXB1dGVMaW5rcyh0KXtyZXR1cm4gWHIodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe3ZhciBlPXRoaXMuX2dldE1vZGVsKHQpO3JldHVybiBlPyhlPWUpJiYiZnVuY3Rpb24iPT10eXBlb2YgZS5nZXRMaW5lQ291bnQmJiJmdW5jdGlvbiI9PXR5cGVvZiBlLmdldExpbmVDb250ZW50P3h0LmNvbXB1dGVMaW5rcyhlKTpbXTpudWxsfSl9dGV4dHVhbFN1Z2dlc3QobyxzLGwsaCl7cmV0dXJuIFhyKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbiooKXtjb25zdCBlPW5ldyBVKCEwKTt2YXIgdD1uZXcgUmVnRXhwKGwsaCk7Y29uc3Qgcj1uZXcgU2V0O2U6Zm9yKHZhciBuIG9mIG8pe2NvbnN0IGE9dGhpcy5fZ2V0TW9kZWwobik7aWYoYSlmb3IodmFyIGkgb2YgYS53b3Jkcyh0KSlpZihpIT09cyYmaXNOYU4oTnVtYmVyKGkpKSYmKHIuYWRkKGkpLHIuc2l6ZT50bi5fc3VnZ2VzdGlvbnNMaW1pdCkpYnJlYWsgZX1yZXR1cm57d29yZHM6QXJyYXkuZnJvbShyKSxkdXJhdGlvbjplLmVsYXBzZWQoKX19KX1jb21wdXRlV29yZFJhbmdlcyh0LGEsbyxzKXtyZXR1cm4gWHIodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe2NvbnN0IGU9dGhpcy5fZ2V0TW9kZWwodCk7aWYoIWUpcmV0dXJuIE9iamVjdC5jcmVhdGUobnVsbCk7dmFyIHI9bmV3IFJlZ0V4cChvLHMpO2NvbnN0IG49T2JqZWN0LmNyZWF0ZShudWxsKTtmb3IobGV0IHQ9YS5zdGFydExpbmVOdW1iZXI7dDxhLmVuZExpbmVOdW1iZXI7dCsrKWZvcihjb25zdCBpIG9mIGUuZ2V0TGluZVdvcmRzKHQscikpaWYoaXNOYU4oTnVtYmVyKGkud29yZCkpKXtsZXQgZT1uW2kud29yZF07ZXx8KGU9W10sbltpLndvcmRdPWUpLGUucHVzaCh7c3RhcnRMaW5lTnVtYmVyOnQsc3RhcnRDb2x1bW46aS5zdGFydENvbHVtbixlbmRMaW5lTnVtYmVyOnQsZW5kQ29sdW1uOmkuZW5kQ29sdW1ufSl9cmV0dXJuIG59KX1uYXZpZ2F0ZVZhbHVlU2V0KGksYSxvLHMsbCl7cmV0dXJuIFhyKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbiooKXtjb25zdCBlPXRoaXMuX2dldE1vZGVsKGkpO2lmKCFlKXJldHVybiBudWxsO3ZhciB0PW5ldyBSZWdFeHAocyxsKSxyPShhLnN0YXJ0Q29sdW1uPT09YS5lbmRDb2x1bW4mJihhPXtzdGFydExpbmVOdW1iZXI6YS5zdGFydExpbmVOdW1iZXIsc3RhcnRDb2x1bW46YS5zdGFydENvbHVtbixlbmRMaW5lTnVtYmVyOmEuZW5kTGluZU51bWJlcixlbmRDb2x1bW46YS5lbmRDb2x1bW4rMX0pLGUuZ2V0VmFsdWVJblJhbmdlKGEpKSx0PWUuZ2V0V29yZEF0UG9zaXRpb24oe2xpbmVOdW1iZXI6YS5zdGFydExpbmVOdW1iZXIsY29sdW1uOmEuc3RhcnRDb2x1bW59LHQpO2lmKCF0KXJldHVybiBudWxsO3ZhciBuPWUuZ2V0VmFsdWVJblJhbmdlKHQpO3JldHVybiBNdC5JTlNUQU5DRS5uYXZpZ2F0ZVZhbHVlU2V0KGEscix0LG4sbyl9KX1sb2FkRm9yZWlnbk1vZHVsZShlLHQscil7cj10ZShyLChlLHQpPT50aGlzLl9ob3N0LmZocihlLHQpKTtyZXR1cm4gdGhpcy5fZm9yZWlnbk1vZHVsZUZhY3Rvcnk/KHRoaXMuX2ZvcmVpZ25Nb2R1bGU9dGhpcy5fZm9yZWlnbk1vZHVsZUZhY3Rvcnkoe2hvc3Q6cixnZXRNaXJyb3JNb2RlbHM6KCk9PnRoaXMuX2dldE1vZGVscygpfSx0KSxQcm9taXNlLnJlc29sdmUoZWUodGhpcy5fZm9yZWlnbk1vZHVsZSkpKTpQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoIlVuZXhwZWN0ZWQgdXNhZ2UiKSl9Zm1yKGUsdCl7aWYoIXRoaXMuX2ZvcmVpZ25Nb2R1bGV8fCJmdW5jdGlvbiIhPXR5cGVvZiB0aGlzLl9mb3JlaWduTW9kdWxlW2VdKXJldHVybiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoIk1pc3NpbmcgcmVxdWVzdEhhbmRsZXIgb3IgbWV0aG9kOiAiK2UpKTt0cnl7cmV0dXJuIFByb21pc2UucmVzb2x2ZSh0aGlzLl9mb3JlaWduTW9kdWxlW2VdLmFwcGx5KHRoaXMuX2ZvcmVpZ25Nb2R1bGUsdCkpfWNhdGNoKGUpe3JldHVybiBQcm9taXNlLnJlamVjdChlKX19fXRuLl9kaWZmTGltaXQ9MWU1LHRuLl9zdWdnZXN0aW9uc0xpbWl0PTFlNCwiZnVuY3Rpb24iPT10eXBlb2YgaW1wb3J0U2NyaXB0cyYmKFAubW9uYWNvPXtlZGl0b3I6dm9pZCAwLGxhbmd1YWdlczp2b2lkIDAsZXh0cmE6dm9pZCAwLENhbmNlbGxhdGlvblRva2VuU291cmNlOlJ0LEVtaXR0ZXI6WCxLZXlDb2RlOnlyLEtleU1vZDpHcixQb3NpdGlvbjpzdCxSYW5nZTpwLFNlbGVjdGlvbjp6dCxVcmk6WWUsVG9rZW46UHIsTWFya2Rvd25TdHJpbmc6SHIsTWFya2Rvd25TdHJpbmdUZXh0TmV3bGluZVN0eWxlOkxyLERpc3Bvc2FibGU6UyxEaXNwb3NhYmxlU3RvcmU6eSxFcnJvckhhbmRsZXI6aCxBYnN0cmFjdExvZ2dlcjpqcixDb25zb2xlTG9nZ2VyOiRyLFRva2VuaXphdGlvblJlc3VsdDpLcixFbmNvZGVkVG9rZW5pemF0aW9uUmVzdWx0OlJyLFNlbGVjdGlvbkRpcmVjdGlvbjpBcixNYXJrZXJTZXZlcml0eTpOcixNYXJrZXJUYWc6RXIsTG9nTGV2ZWw6U3IsZXJyb3JIYW5kbGVyOnV9KTtsZXQgcm49ITE7ZnVuY3Rpb24gbm4odCl7aWYoIXJuKXtybj0hMDtjb25zdCByPW5ldyBfZShlPT57c2VsZi5wb3N0TWVzc2FnZShlKX0sZT0+bmV3IHRuKGUsdCkpO3NlbGYub25tZXNzYWdlPWU9PntyLm9ubWVzc2FnZShlLmRhdGEpfX19cmV0dXJuIHNlbGYub25tZXNzYWdlPWU9Pntybnx8bm4obnVsbCl9LGwuaW5pdGlhbGl6ZT1ubixPYmplY3QuZGVmaW5lUHJvcGVydHkobCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksbH0oe30pOwoK', null, false);
32
32
  /* eslint-enable */
33
33
 
34
34
  const workerLoaders = {