@volcengine/veplayer 1.15.1 → 1.15.2-rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of @volcengine/veplayer might be problematic. Click here for more details.

Files changed (245) hide show
  1. package/.changeset/config.json +11 -0
  2. package/.changeset/curvy-yaks-smoke.md +5 -0
  3. package/.changeset/neat-eyes-search.md +5 -0
  4. package/.codebase/pipelines/create-api-doc.yaml +16 -0
  5. package/.eslintignore +5 -0
  6. package/.eslintrc.json +53 -0
  7. package/.stylelintrc.js +51 -0
  8. package/CHANGELOG.md +5665 -0
  9. package/DEV_README.md +39 -0
  10. package/LICENSE +20 -0
  11. package/README_EN.md +46 -0
  12. package/build.sh +44 -0
  13. package/docg.config.js +65 -0
  14. package/env/byteplus.js +30 -0
  15. package/env/volcengine.js +50 -0
  16. package/fixtures/favicon.ico +0 -0
  17. package/fixtures/index.base.js +59 -0
  18. package/fixtures/index.html +41 -0
  19. package/fixtures/index.js +185 -0
  20. package/libd.config.js +147 -0
  21. package/localhost+2-key.pem +28 -0
  22. package/localhost+2.pem +26 -0
  23. package/lux.config.mjs +37 -0
  24. package/package.json +123 -4
  25. package/sdkhub.config.json +10 -0
  26. package/src/@types/global.d.ts +35 -0
  27. package/src/assets/common/error.svg +3 -0
  28. package/src/assets/common/errorImg.png +0 -0
  29. package/src/assets/common/errorImg.svg +12 -0
  30. package/src/assets/icons/mobile/definition.svg +3 -0
  31. package/src/assets/icons/mobile/line.svg +3 -0
  32. package/src/assets/icons/mobile/mobileDanmu.svg +1 -0
  33. package/src/assets/icons/mobile/mobileDanmuAcitive.svg +1 -0
  34. package/src/assets/icons/mobile/mobileDanmuSetting.svg +1 -0
  35. package/src/assets/icons/mobile/mobileExitFullscreen.svg +1 -0
  36. package/src/assets/icons/mobile/mobileFullscreen.svg +1 -0
  37. package/src/assets/icons/mobile/mobilePause.svg +4 -0
  38. package/src/assets/icons/mobile/mobilePlay.svg +4 -0
  39. package/src/assets/icons/mobile/mobilePlaynext.svg +1 -0
  40. package/src/assets/icons/mobile/mobileRefresh.svg +1 -0
  41. package/src/assets/icons/mobile/more.svg +3 -0
  42. package/src/assets/icons/mobile/muted.svg +22 -0
  43. package/src/assets/icons/mobile/playbackrate.svg +3 -0
  44. package/src/assets/icons/pc/danmu.svg +1 -0
  45. package/src/assets/icons/pc/danmuActive.svg +1 -0
  46. package/src/assets/icons/pc/danmuSettings.svg +1 -0
  47. package/src/assets/icons/pc/download.svg +14 -0
  48. package/src/assets/icons/pc/exitFullscreen.svg +1 -0
  49. package/src/assets/icons/pc/exitMirror.svg +10 -0
  50. package/src/assets/icons/pc/extend.svg +1 -0
  51. package/src/assets/icons/pc/fullscreen.svg +1 -0
  52. package/src/assets/icons/pc/getMirror.svg +10 -0
  53. package/src/assets/icons/pc/list.svg +20 -0
  54. package/src/assets/icons/pc/noPoster.svg +119 -0
  55. package/src/assets/icons/pc/pause.svg +1 -0
  56. package/src/assets/icons/pc/pip.svg +1 -0
  57. package/src/assets/icons/pc/pipExit.svg +1 -0
  58. package/src/assets/icons/pc/play-next-btn.svg +4 -0
  59. package/src/assets/icons/pc/play.svg +1 -0
  60. package/src/assets/icons/pc/playNext.svg +1 -0
  61. package/src/assets/icons/pc/playerLoading.svg +1 -0
  62. package/src/assets/icons/pc/refresh.svg +1 -0
  63. package/src/assets/icons/pc/replay.svg +1 -0
  64. package/src/assets/icons/pc/reset.svg +6 -0
  65. package/src/assets/icons/pc/startPlay.svg +1 -0
  66. package/src/assets/icons/pc/subtitleclose.svg +5 -0
  67. package/src/assets/icons/pc/subtitleopen.svg +3 -0
  68. package/src/assets/icons/pc/theaterEnter.svg +1 -0
  69. package/src/assets/icons/pc/theaterExit.svg +1 -0
  70. package/src/assets/icons/pc/volumeLarge.svg +1 -0
  71. package/src/assets/icons/pc/volumeMuted.svg +1 -0
  72. package/src/assets/icons/pc/volumeSmall.svg +1 -0
  73. package/src/config/defaultPreset.ts +110 -0
  74. package/src/config/playerOptionMobile.ts +166 -0
  75. package/src/config/playerOptionPc.ts +147 -0
  76. package/src/config/playerPreset.ts +242 -0
  77. package/src/constants/api.ts +13 -0
  78. package/src/constants/event.ts +577 -0
  79. package/src/constants/player.ts +84 -0
  80. package/src/constants/plugin.ts +19 -0
  81. package/src/constants/umdMap.ts +137 -0
  82. package/src/constants/umdPlugins.json +68 -0
  83. package/src/core/index.ts +7 -0
  84. package/src/core/player.ts +2713 -0
  85. package/src/core/playerData.ts +812 -0
  86. package/src/env.d.ts +47 -0
  87. package/src/index.ts +24 -0
  88. package/src/index.umd.ts +54 -0
  89. package/src/interface/adaptRange.d.ts +33 -0
  90. package/src/interface/api.ts +132 -0
  91. package/src/interface/autoBitrate.d.ts +41 -0
  92. package/src/interface/index.ts +1685 -0
  93. package/src/interface/rtm.ts +56 -0
  94. package/src/interface/sdkErrorPlugin.ts +145 -0
  95. package/src/interface/subtitle.ts +381 -0
  96. package/src/interface/video.ts +107 -0
  97. package/src/interface/xgplayer.ts +748 -0
  98. package/src/lang/constants.ts +69 -0
  99. package/src/lang/en.ts +98 -0
  100. package/src/lang/index.ts +33 -0
  101. package/src/lang/jp.ts +100 -0
  102. package/src/lang/zh-hk.ts +80 -0
  103. package/src/lang/zh.ts +79 -0
  104. package/src/license/index.ts +315 -0
  105. package/src/license/ttlicense2.js +15 -0
  106. package/src/license/ttlicense2.wasm +0 -0
  107. package/src/music/icons/back.svg +3 -0
  108. package/src/music/icons/forward.svg +3 -0
  109. package/src/music/icons/loop.svg +10 -0
  110. package/src/music/icons/order.svg +10 -0
  111. package/src/music/icons/pause-circle.svg +23 -0
  112. package/src/music/icons/play-circle.svg +22 -0
  113. package/src/music/icons/random.svg +10 -0
  114. package/src/music/icons/sloop.svg +10 -0
  115. package/src/music/index.ts +5 -0
  116. package/src/music/music.ts +550 -0
  117. package/src/music/plugins/index.less +185 -0
  118. package/src/music/plugins/index.ts +6 -0
  119. package/src/music/plugins/musicBackward.ts +82 -0
  120. package/src/music/plugins/musicCover.ts +45 -0
  121. package/src/music/plugins/musicForward.ts +82 -0
  122. package/src/music/plugins/musicMeta.ts +32 -0
  123. package/src/music/plugins/musicMode.ts +152 -0
  124. package/src/music/plugins/musicNext.ts +93 -0
  125. package/src/music/plugins/musicPrev.ts +94 -0
  126. package/src/music/preset.ts +69 -0
  127. package/src/music/xhr.ts +37 -0
  128. package/src/plugins/common/extendPluginFactory.ts +132 -0
  129. package/src/plugins/common/mobilePlayerPanel.ts +253 -0
  130. package/src/plugins/external/LiveInfoPanel.ts +340 -0
  131. package/src/plugins/external/ad/adsPlugin.ts +1 -0
  132. package/src/plugins/external/aiSubtitleIconPlugin.ts +270 -0
  133. package/src/plugins/external/aiSubtitlePlugin.ts +452 -0
  134. package/src/plugins/external/definitionDemotePlugin.ts +591 -0
  135. package/src/plugins/external/memoryPlay.ts +247 -0
  136. package/src/plugins/external/mirrorPlugin.ts +141 -0
  137. package/src/plugins/external/playList/OptionList.ts +204 -0
  138. package/src/plugins/external/playList/index.ts +743 -0
  139. package/src/plugins/external/subtitle/index.ts +672 -0
  140. package/src/plugins/external/subtitle/nativeSubTitle.ts +115 -0
  141. package/src/plugins/external/timeShiftPlugin.ts +484 -0
  142. package/src/plugins/external/watermark/dynamicWatermark.less +13 -0
  143. package/src/plugins/external/watermark/dynamicWatermark.ts +449 -0
  144. package/src/plugins/external/watermark/dynamicWatermarkPlugin.ts +185 -0
  145. package/src/plugins/inner/common/autoplayPlugin.ts +435 -0
  146. package/src/plugins/inner/common/danmu/container.ts +120 -0
  147. package/src/plugins/inner/common/danmu/index.ts +683 -0
  148. package/src/plugins/inner/common/danmu/lang.ts +139 -0
  149. package/src/plugins/inner/common/danmu/panel.ts +20 -0
  150. package/src/plugins/inner/common/danmu/slider.ts +210 -0
  151. package/src/plugins/inner/common/danmu/state.ts +118 -0
  152. package/src/plugins/inner/common/danmu/switch.ts +74 -0
  153. package/src/plugins/inner/common/definitionBasePlugin.ts +353 -0
  154. package/src/plugins/inner/common/errorPlugin.ts +544 -0
  155. package/src/plugins/inner/common/liveLogger.ts +137 -0
  156. package/src/plugins/inner/common/poster/index.less +66 -0
  157. package/src/plugins/inner/common/poster/index.ts +178 -0
  158. package/src/plugins/inner/common/refreshPlugin.ts +88 -0
  159. package/src/plugins/inner/common/rtmPlugin.ts +62 -0
  160. package/src/plugins/inner/common/toastPlugin.ts +90 -0
  161. package/src/plugins/inner/common/unmutePlugin.ts +133 -0
  162. package/src/plugins/inner/common/vodLogger.ts +80 -0
  163. package/src/plugins/inner/mobile/DefinitionMobilePlugin.ts +217 -0
  164. package/src/plugins/inner/mobile/LineMobilePlugins.ts +169 -0
  165. package/src/plugins/inner/mobile/MoreButtonPlugin.ts +176 -0
  166. package/src/plugins/inner/mobile/PlaybackRatePlugin.ts +199 -0
  167. package/src/plugins/inner/pc/definitionPlugin.ts +203 -0
  168. package/src/plugins/inner/pc/multilinePlugin.ts +93 -0
  169. package/src/sdkPlugin/abr.ts +67 -0
  170. package/src/sdkPlugin/adaptRange.ts +49 -0
  171. package/src/sdkPlugin/authToken.ts +557 -0
  172. package/src/sdkPlugin/sdkPlugin.ts +125 -0
  173. package/src/sdkPlugin/sdkPluginManager.ts +157 -0
  174. package/src/sdkPlugin/strategy.ts +47 -0
  175. package/src/strategy/index.ts +740 -0
  176. package/src/strategy/vestrategy-h265-wrapper.ts +34 -0
  177. package/src/strategy/vestrategy-preload-wrapper.ts +414 -0
  178. package/src/streamAdapters/base.ts +89 -0
  179. package/src/streamAdapters/dash.ts +230 -0
  180. package/src/streamAdapters/default.ts +53 -0
  181. package/src/streamAdapters/hls.ts +278 -0
  182. package/src/streamAdapters/index.ts +40 -0
  183. package/src/streamAdapters/mp4.ts +214 -0
  184. package/src/style/bytelive/danmu.less +293 -0
  185. package/src/style/bytelive/definitionIcon.less +80 -0
  186. package/src/style/bytelive/error.less +165 -0
  187. package/src/style/bytelive/index.less +62 -0
  188. package/src/style/bytelive/loading.less +5 -0
  189. package/src/style/bytelive/mobiePlugin.less +2 -0
  190. package/src/style/bytelive/mobile.less +76 -0
  191. package/src/style/bytelive/moreButton.less +79 -0
  192. package/src/style/bytelive/panel.less +259 -0
  193. package/src/style/bytelive/pc.less +161 -0
  194. package/src/style/bytelive/refresh.less +3 -0
  195. package/src/style/bytelive/reset.less +4 -0
  196. package/src/style/bytelive/toast.less +61 -0
  197. package/src/style/bytelive/unmute.less +65 -0
  198. package/src/style/external/LiveInfoPanel.less +41 -0
  199. package/src/style/external/aisub.less +139 -0
  200. package/src/style/external/aisubIcon.less +25 -0
  201. package/src/style/external/index.less +5 -0
  202. package/src/style/external/larkWindow.less +36 -0
  203. package/src/style/external/mirror.less +27 -0
  204. package/src/style/external/playList.less +258 -0
  205. package/src/style/external/timeShift.less +102 -0
  206. package/src/style/external/vttSubtitle.less +25 -0
  207. package/src/utils/debug.ts +62 -0
  208. package/src/utils/definition.ts +61 -0
  209. package/src/utils/escapeHtml.ts +93 -0
  210. package/src/utils/eventMiddleWare.ts +108 -0
  211. package/src/utils/index.ts +621 -0
  212. package/src/utils/intervalTimer.ts +38 -0
  213. package/src/utils/isHijackBrowser.ts +71 -0
  214. package/src/utils/proxy.ts +139 -0
  215. package/src/utils/storage.ts +34 -0
  216. package/src/utils/time.ts +19 -0
  217. package/src/utils/toast/index.less +20 -0
  218. package/src/utils/toast/index.ts +21 -0
  219. package/src/utils/token.ts +395 -0
  220. package/src/utils/u8a.ts +4 -0
  221. package/src/utils/umdLoader.ts +193 -0
  222. package/src/utils/video.ts +43 -0
  223. package/src/utils/xhr.ts +160 -0
  224. package/src/veError/error.ts +301 -0
  225. package/src/veError/index.ts +681 -0
  226. package/src/veError/playerProxy.ts +69 -0
  227. package/tsconfig.json +27 -0
  228. package/index.d.ts +0 -6874
  229. package/index.min.css +0 -1
  230. package/index.min.js +0 -2
  231. package/plugin/DashAbralgo.js +0 -2
  232. package/plugin/XGVideo.js +0 -2
  233. package/plugin/danmuMask.js +0 -2
  234. package/plugin/danmujs.js +0 -3
  235. package/plugin/dash.js +0 -2
  236. package/plugin/flv.js +0 -2
  237. package/plugin/hls.js +0 -2
  238. package/plugin/hlsEncrypt.js +0 -2
  239. package/plugin/mp4Encrypt.js +0 -2
  240. package/plugin/preloader.js +0 -2
  241. package/plugin/streamprobe.js +0 -2
  242. package/plugin/vestrategy.js +0 -1
  243. package/plugin/vestrategy_adapt_range.js +0 -1
  244. package/plugin/vestrategy_h265.js +0 -1
  245. package/plugin/vestrategy_preload.js +0 -1
@@ -1,2 +0,0 @@
1
- // Built @Thu, 07 Aug 2025 10:15:59 GMT
2
- !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("core-js/modules/es.array.concat.js"),require("core-js/modules/es.array.filter.js"),require("core-js/modules/es.array.find.js"),require("core-js/modules/es.array.find-index.js"),require("core-js/modules/es.array.includes.js"),require("core-js/modules/es.array.iterator.js"),require("core-js/modules/es.array.join.js"),require("core-js/modules/es.array.map.js"),require("core-js/modules/es.array.slice.js"),require("core-js/modules/es.array.sort.js"),require("core-js/modules/es.array.splice.js"),require("core-js/modules/es.function.name.js"),require("core-js/modules/es.number.constructor.js"),require("core-js/modules/es.object.assign.js"),require("core-js/modules/es.object.keys.js"),require("core-js/modules/es.object.to-string.js"),require("core-js/modules/es.promise.js"),require("core-js/modules/es.promise.finally.js"),require("core-js/modules/es.regexp.exec.js"),require("core-js/modules/es.regexp.to-string.js"),require("core-js/modules/es.string.includes.js"),require("core-js/modules/es.string.iterator.js"),require("core-js/modules/web.dom-collections.for-each.js"),require("core-js/modules/web.dom-collections.iterator.js"),require("xgplayer"),require("core-js/modules/es.map.js"),require("core-js/modules/esnext.map.delete-all.js"),require("core-js/modules/esnext.map.every.js"),require("core-js/modules/esnext.map.filter.js"),require("core-js/modules/esnext.map.find.js"),require("core-js/modules/esnext.map.find-key.js"),require("core-js/modules/esnext.map.includes.js"),require("core-js/modules/esnext.map.key-of.js"),require("core-js/modules/esnext.map.map-keys.js"),require("core-js/modules/esnext.map.map-values.js"),require("core-js/modules/esnext.map.merge.js"),require("core-js/modules/esnext.map.reduce.js"),require("core-js/modules/esnext.map.some.js"),require("core-js/modules/esnext.map.update.js"),require("core-js/modules/es.array-buffer.constructor.js"),require("core-js/modules/es.number.to-fixed.js"),require("core-js/modules/es.typed-array.int32-array.js"),require("core-js/modules/es.typed-array.copy-within.js"),require("core-js/modules/es.typed-array.every.js"),require("core-js/modules/es.typed-array.fill.js"),require("core-js/modules/es.typed-array.filter.js"),require("core-js/modules/es.typed-array.find.js"),require("core-js/modules/es.typed-array.find-index.js"),require("core-js/modules/es.typed-array.for-each.js"),require("core-js/modules/es.typed-array.includes.js"),require("core-js/modules/es.typed-array.index-of.js"),require("core-js/modules/es.typed-array.iterator.js"),require("core-js/modules/es.typed-array.join.js"),require("core-js/modules/es.typed-array.last-index-of.js"),require("core-js/modules/es.typed-array.map.js"),require("core-js/modules/es.typed-array.reduce.js"),require("core-js/modules/es.typed-array.reduce-right.js"),require("core-js/modules/es.typed-array.reverse.js"),require("core-js/modules/es.typed-array.set.js"),require("core-js/modules/es.typed-array.slice.js"),require("core-js/modules/es.typed-array.some.js"),require("core-js/modules/es.typed-array.sort.js"),require("core-js/modules/es.typed-array.subarray.js"),require("core-js/modules/es.typed-array.to-locale-string.js"),require("core-js/modules/es.typed-array.to-string.js"),require("core-js/modules/web.url.js"),require("core-js/modules/web.url.to-json.js"),require("core-js/modules/web.url-search-params.js"),require("core-js/modules/es.typed-array.uint8-array.js"),require("core-js/modules/es.regexp.constructor.js"),require("core-js/modules/es.string.match.js"),require("core-js/modules/es.string.replace.js"),require("core-js/modules/es.string.starts-with.js"),require("core-js/modules/es.typed-array.float32-array.js"),require("core-js/modules/es.typed-array.float64-array.js"),require("core-js/modules/es.typed-array.int8-array.js"),require("core-js/modules/es.typed-array.int16-array.js"),require("core-js/modules/es.typed-array.uint8-clamped-array.js"),require("core-js/modules/es.typed-array.uint16-array.js"),require("core-js/modules/es.typed-array.uint32-array.js"),require("core-js/modules/es.symbol.js"),require("core-js/modules/es.symbol.description.js"),require("core-js/modules/es.typed-array.of.js"),require("core-js/modules/es.object.values.js"),require("core-js/modules/es.string.split.js")):"function"==typeof define&&define.amd?define(["core-js/modules/es.array.concat.js","core-js/modules/es.array.filter.js","core-js/modules/es.array.find.js","core-js/modules/es.array.find-index.js","core-js/modules/es.array.includes.js","core-js/modules/es.array.iterator.js","core-js/modules/es.array.join.js","core-js/modules/es.array.map.js","core-js/modules/es.array.slice.js","core-js/modules/es.array.sort.js","core-js/modules/es.array.splice.js","core-js/modules/es.function.name.js","core-js/modules/es.number.constructor.js","core-js/modules/es.object.assign.js","core-js/modules/es.object.keys.js","core-js/modules/es.object.to-string.js","core-js/modules/es.promise.js","core-js/modules/es.promise.finally.js","core-js/modules/es.regexp.exec.js","core-js/modules/es.regexp.to-string.js","core-js/modules/es.string.includes.js","core-js/modules/es.string.iterator.js","core-js/modules/web.dom-collections.for-each.js","core-js/modules/web.dom-collections.iterator.js","xgplayer","core-js/modules/es.map.js","core-js/modules/esnext.map.delete-all.js","core-js/modules/esnext.map.every.js","core-js/modules/esnext.map.filter.js","core-js/modules/esnext.map.find.js","core-js/modules/esnext.map.find-key.js","core-js/modules/esnext.map.includes.js","core-js/modules/esnext.map.key-of.js","core-js/modules/esnext.map.map-keys.js","core-js/modules/esnext.map.map-values.js","core-js/modules/esnext.map.merge.js","core-js/modules/esnext.map.reduce.js","core-js/modules/esnext.map.some.js","core-js/modules/esnext.map.update.js","core-js/modules/es.array-buffer.constructor.js","core-js/modules/es.number.to-fixed.js","core-js/modules/es.typed-array.int32-array.js","core-js/modules/es.typed-array.copy-within.js","core-js/modules/es.typed-array.every.js","core-js/modules/es.typed-array.fill.js","core-js/modules/es.typed-array.filter.js","core-js/modules/es.typed-array.find.js","core-js/modules/es.typed-array.find-index.js","core-js/modules/es.typed-array.for-each.js","core-js/modules/es.typed-array.includes.js","core-js/modules/es.typed-array.index-of.js","core-js/modules/es.typed-array.iterator.js","core-js/modules/es.typed-array.join.js","core-js/modules/es.typed-array.last-index-of.js","core-js/modules/es.typed-array.map.js","core-js/modules/es.typed-array.reduce.js","core-js/modules/es.typed-array.reduce-right.js","core-js/modules/es.typed-array.reverse.js","core-js/modules/es.typed-array.set.js","core-js/modules/es.typed-array.slice.js","core-js/modules/es.typed-array.some.js","core-js/modules/es.typed-array.sort.js","core-js/modules/es.typed-array.subarray.js","core-js/modules/es.typed-array.to-locale-string.js","core-js/modules/es.typed-array.to-string.js","core-js/modules/web.url.js","core-js/modules/web.url.to-json.js","core-js/modules/web.url-search-params.js","core-js/modules/es.typed-array.uint8-array.js","core-js/modules/es.regexp.constructor.js","core-js/modules/es.string.match.js","core-js/modules/es.string.replace.js","core-js/modules/es.string.starts-with.js","core-js/modules/es.typed-array.float32-array.js","core-js/modules/es.typed-array.float64-array.js","core-js/modules/es.typed-array.int8-array.js","core-js/modules/es.typed-array.int16-array.js","core-js/modules/es.typed-array.uint8-clamped-array.js","core-js/modules/es.typed-array.uint16-array.js","core-js/modules/es.typed-array.uint32-array.js","core-js/modules/es.symbol.js","core-js/modules/es.symbol.description.js","core-js/modules/es.typed-array.of.js","core-js/modules/es.object.values.js","core-js/modules/es.string.split.js"],t):(e="undefined"!=typeof globalThis?globalThis:e||self).Mp4EncryptPlayer=t(null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,e.Player)}(this,(function(e,t,n,i,r,a,l,U,F,o,d,Q,s,c,u,B,R,h,V,p,m,Z,S,J,W){"use strict";function f(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,i=Array(t);n<t;n++)i[n]=e[n];return i}function y(e,t,n,i,r,a,l){try{var U=e[a](l),F=U.value}catch(o){return void n(o)}U.done?t(F):Promise.resolve(F).then(i,r)}function k(e){return function(){var t=this,n=arguments;return new Promise((function(i,r){var a=e.apply(t,n);function l(e){y(a,i,r,l,U,"next",e)}function U(e){y(a,i,r,l,U,"throw",e)}l(void 0)}))}}function E(e,t,n){return t=L(t),function(e,t){if(t&&("object"==typeof t||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e)}(e,X()?Reflect.construct(t,n||[],L(e).constructor):t.apply(e,n))}function b(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function v(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,P(i.key),i)}}function N(e,t,n){return t&&v(e.prototype,t),n&&v(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e}function g(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=H(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var i=0,r=function(){};return{s:r,n:function(){return i>=e.length?{done:!0}:{done:!1,value:e[i++]}},e:function(e){throw e},f:r}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,l=!0,U=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return l=e.done,e},e:function(e){U=!0,a=e},f:function(){try{l||null==n.return||n.return()}finally{if(U)throw a}}}}function T(e,t,n){return(t=P(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function C(){return C="undefined"!=typeof Reflect&&Reflect.get?Reflect.get.bind():function(e,t,n){var i=function(e,t){for(;!{}.hasOwnProperty.call(e,t)&&null!==(e=L(e)););return e}(e,t);if(i){var r=Object.getOwnPropertyDescriptor(i,t);return r.get?r.get.call(arguments.length<3?e:n):r.value}},C.apply(null,arguments)}function L(e){return(L=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function x(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&Y(e,t)}function X(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(X=function(){return!!e})()}function D(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function G(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?D(Object(n),!0).forEach((function(t){T(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):D(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function I(e,t){if(null==e)return{};var n,i,r=function(e,t){if(null==e)return{};var n={};for(var i in e)if({}.hasOwnProperty.call(e,i)){if(-1!==t.indexOf(i))continue;n[i]=e[i]}return n}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(i=0;i<a.length;i++)n=a[i],-1===t.indexOf(n)&&{}.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}function M(){M=function(){return t};var e,t={},n=Object.prototype,i=n.hasOwnProperty,r=Object.defineProperty||function(e,t,n){e[t]=n.value},a="function"==typeof Symbol?Symbol:{},l=a.iterator||"@@iterator",U=a.asyncIterator||"@@asyncIterator",F=a.toStringTag||"@@toStringTag";function o(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{o({},"")}catch(g){o=function(e,t,n){return e[t]=n}}function d(e,t,n,i){var a=t&&t.prototype instanceof h?t:h,l=Object.create(a.prototype),U=new v(i||[]);return r(l,"_invoke",{value:y(e,n,U)}),l}function Q(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(i){return{type:"throw",arg:i}}}t.wrap=d;var s="suspendedStart",c="suspendedYield",u="executing",B="completed",R={};function h(){}function V(){}function p(){}var m={};o(m,l,(function(){return this}));var Z=Object.getPrototypeOf,S=Z&&Z(Z(N([])));S&&S!==n&&i.call(S,l)&&(m=S);var J=p.prototype=h.prototype=Object.create(m);function W(e){["next","throw","return"].forEach((function(t){o(e,t,(function(e){return this._invoke(t,e)}))}))}function f(e,t){function n(r,a,l,U){var F=Q(e[r],e,a);if("throw"!==F.type){var o=F.arg,d=o.value;return d&&"object"==typeof d&&i.call(d,"__await")?t.resolve(d.__await).then((function(e){n("next",e,l,U)}),(function(e){n("throw",e,l,U)})):t.resolve(d).then((function(e){o.value=e,l(o)}),(function(e){return n("throw",e,l,U)}))}U(F.arg)}var a;r(this,"_invoke",{value:function(e,i){function r(){return new t((function(t,r){n(e,i,t,r)}))}return a=a?a.then(r,r):r()}})}function y(t,n,i){var r=s;return function(a,l){if(r===u)throw Error("Generator is already running");if(r===B){if("throw"===a)throw l;return{value:e,done:!0}}for(i.method=a,i.arg=l;;){var U=i.delegate;if(U){var F=k(U,i);if(F){if(F===R)continue;return F}}if("next"===i.method)i.sent=i._sent=i.arg;else if("throw"===i.method){if(r===s)throw r=B,i.arg;i.dispatchException(i.arg)}else"return"===i.method&&i.abrupt("return",i.arg);r=u;var o=Q(t,n,i);if("normal"===o.type){if(r=i.done?B:c,o.arg===R)continue;return{value:o.arg,done:i.done}}"throw"===o.type&&(r=B,i.method="throw",i.arg=o.arg)}}}function k(t,n){var i=n.method,r=t.iterator[i];if(r===e)return n.delegate=null,"throw"===i&&t.iterator.return&&(n.method="return",n.arg=e,k(t,n),"throw"===n.method)||"return"!==i&&(n.method="throw",n.arg=new TypeError("The iterator does not provide a '"+i+"' method")),R;var a=Q(r,t.iterator,n.arg);if("throw"===a.type)return n.method="throw",n.arg=a.arg,n.delegate=null,R;var l=a.arg;return l?l.done?(n[t.resultName]=l.value,n.next=t.nextLoc,"return"!==n.method&&(n.method="next",n.arg=e),n.delegate=null,R):l:(n.method="throw",n.arg=new TypeError("iterator result is not an object"),n.delegate=null,R)}function E(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function b(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function v(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(E,this),this.reset(!0)}function N(t){if(t||""===t){var n=t[l];if(n)return n.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var r=-1,a=function n(){for(;++r<t.length;)if(i.call(t,r))return n.value=t[r],n.done=!1,n;return n.value=e,n.done=!0,n};return a.next=a}}throw new TypeError(typeof t+" is not iterable")}return V.prototype=p,r(J,"constructor",{value:p,configurable:!0}),r(p,"constructor",{value:V,configurable:!0}),V.displayName=o(p,F,"GeneratorFunction"),t.isGeneratorFunction=function(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===V||"GeneratorFunction"===(t.displayName||t.name))},t.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,p):(e.__proto__=p,o(e,F,"GeneratorFunction")),e.prototype=Object.create(J),e},t.awrap=function(e){return{__await:e}},W(f.prototype),o(f.prototype,U,(function(){return this})),t.AsyncIterator=f,t.async=function(e,n,i,r,a){void 0===a&&(a=Promise);var l=new f(d(e,n,i,r),a);return t.isGeneratorFunction(n)?l:l.next().then((function(e){return e.done?e.value:l.next()}))},W(J),o(J,F,"Generator"),o(J,l,(function(){return this})),o(J,"toString",(function(){return"[object Generator]"})),t.keys=function(e){var t=Object(e),n=[];for(var i in t)n.push(i);return n.reverse(),function e(){for(;n.length;){var i=n.pop();if(i in t)return e.value=i,e.done=!1,e}return e.done=!0,e}},t.values=N,v.prototype={constructor:v,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=e,this.done=!1,this.delegate=null,this.method="next",this.arg=e,this.tryEntries.forEach(b),!t)for(var n in this)"t"===n.charAt(0)&&i.call(this,n)&&!isNaN(+n.slice(1))&&(this[n]=e)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var n=this;function r(i,r){return U.type="throw",U.arg=t,n.next=i,r&&(n.method="next",n.arg=e),!!r}for(var a=this.tryEntries.length-1;a>=0;--a){var l=this.tryEntries[a],U=l.completion;if("root"===l.tryLoc)return r("end");if(l.tryLoc<=this.prev){var F=i.call(l,"catchLoc"),o=i.call(l,"finallyLoc");if(F&&o){if(this.prev<l.catchLoc)return r(l.catchLoc,!0);if(this.prev<l.finallyLoc)return r(l.finallyLoc)}else if(F){if(this.prev<l.catchLoc)return r(l.catchLoc,!0)}else{if(!o)throw Error("try statement without catch or finally");if(this.prev<l.finallyLoc)return r(l.finallyLoc)}}}},abrupt:function(e,t){for(var n=this.tryEntries.length-1;n>=0;--n){var r=this.tryEntries[n];if(r.tryLoc<=this.prev&&i.call(r,"finallyLoc")&&this.prev<r.finallyLoc){var a=r;break}}a&&("break"===e||"continue"===e)&&a.tryLoc<=t&&t<=a.finallyLoc&&(a=null);var l=a?a.completion:{};return l.type=e,l.arg=t,a?(this.method="next",this.next=a.finallyLoc,R):this.complete(l)},complete:function(e,t){if("throw"===e.type)throw e.arg;return"break"===e.type||"continue"===e.type?this.next=e.arg:"return"===e.type?(this.rval=this.arg=e.arg,this.method="return",this.next="end"):"normal"===e.type&&t&&(this.next=t),R},finish:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),b(n),R}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var i=n.completion;if("throw"===i.type){var r=i.arg;b(n)}return r}}throw Error("illegal catch attempt")},delegateYield:function(t,n,i){return this.delegate={iterator:N(t),resultName:n,nextLoc:i},"next"===this.method&&(this.arg=e),R}},t}function Y(e,t){return(Y=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e})(e,t)}function w(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var i,r,a,l,U=[],F=!0,o=!1;try{if(a=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;F=!1}else for(;!(F=(i=a.call(n)).done)&&(U.push(i.value),U.length!==t);F=!0);}catch(d){o=!0,r=d}finally{try{if(!F&&null!=n.return&&(l=n.return(),Object(l)!==l))return}finally{if(o)throw r}}return U}}(e,t)||H(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function K(e,t,n,i){var r=C(L(1&i?e.prototype:e),t,n);return 2&i&&"function"==typeof r?function(e){return r.apply(n,e)}:r}function _(e){return function(e){if(Array.isArray(e))return f(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||H(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function P(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var i=n.call(e,t||"default");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}function j(e){return(j="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function H(e,t){if(e){if("string"==typeof e)return f(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?f(e,t):void 0}}var O="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function z(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var A={exports:{}};(function(e){var t="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:void 0!==O?O:"undefined"!=typeof self?self:{};function n(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var i=function(e){return e&&e.Math==Math&&e},r=i("object"==typeof globalThis&&globalThis)||i("object"==typeof window&&window)||i("object"==typeof self&&self)||i("object"==typeof t&&t)||function(){return this}()||Function("return this")(),a={},l=function(e){try{return!!e()}catch(rR){return!0}},U=!l((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]})),F={},o={}.propertyIsEnumerable,d=Object.getOwnPropertyDescriptor,Q=d&&!o.call({1:2},1);F.f=Q?function(e){var t=d(this,e);return!!t&&t.enumerable}:o;var s=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}},c={}.toString,u=function(e){return c.call(e).slice(8,-1)},B=u,R="".split,h=l((function(){return!Object("z").propertyIsEnumerable(0)}))?function(e){return"String"==B(e)?R.call(e,""):Object(e)}:Object,V=function(e){if(null==e)throw TypeError("Can't call method on "+e);return e},p=h,m=V,Z=function(e){return p(m(e))},S=function(e){return"object"==typeof e?null!==e:"function"==typeof e},J=S,W=function(e,t){if(!J(e))return e;var n,i;if(t&&"function"==typeof(n=e.toString)&&!J(i=n.call(e)))return i;if("function"==typeof(n=e.valueOf)&&!J(i=n.call(e)))return i;if(!t&&"function"==typeof(n=e.toString)&&!J(i=n.call(e)))return i;throw TypeError("Can't convert object to primitive value")},f=V,y=function(e){return Object(f(e))},k=y,E={}.hasOwnProperty,b=function(e,t){return E.call(k(e),t)},v=S,N=r.document,g=v(N)&&v(N.createElement),T=function(e){return g?N.createElement(e):{}},C=T,L=!U&&!l((function(){return 7!=Object.defineProperty(C("div"),"a",{get:function(){return 7}}).a})),x=U,X=F,D=s,G=Z,I=W,M=b,Y=L,w=Object.getOwnPropertyDescriptor;a.f=x?w:function(e,t){if(e=G(e),t=I(t,!0),Y)try{return w(e,t)}catch(n){}if(M(e,t))return D(!X.f.call(e,t),e[t])};var K={},_=S,P=function(e){if(!_(e))throw TypeError(String(e)+" is not an object");return e},j=U,H=L,z=P,A=W,q=Object.defineProperty;K.f=j?q:function(e,t,n){if(z(e),t=A(t,!0),z(n),H)try{return q(e,t,n)}catch(i){}if("get"in n||"set"in n)throw TypeError("Accessors not supported");return"value"in n&&(e[t]=n.value),e};var $=K,ee=s,te=U?function(e,t,n){return $.f(e,t,ee(1,n))}:function(e,t,n){return e[t]=n,e},ne={exports:{}},ie=r,re=te,ae=function(e,t){try{re(ie,e,t)}catch(n){ie[e]=t}return t},le=ae,Ue="__core-js_shared__",Fe=r[Ue]||le(Ue,{}),oe=Fe,de=Function.toString;"function"!=typeof oe.inspectSource&&(oe.inspectSource=function(e){return de.call(e)});var Qe=oe.inspectSource,se=Qe,ce=r.WeakMap,ue="function"==typeof ce&&/native code/.test(se(ce)),Be={exports:{}},Re=Fe;(Be.exports=function(e,t){return Re[e]||(Re[e]=void 0!==t?t:{})})("versions",[]).push({version:"3.12.1",mode:"global",copyright:"© 2021 Denis Pushkarev (zloirock.ru)"});var he,Ve,pe,me=Be.exports,Ze=0,Se=Math.random(),Je=function(e){return"Symbol("+String(void 0===e?"":e)+")_"+(++Ze+Se).toString(36)},We=Je,fe=me("keys"),ye=function(e){return fe[e]||(fe[e]=We(e))},ke={},Ee=ue,be=S,ve=te,Ne=b,ge=Fe,Te=ye,Ce=ke,Le="Object already initialized",xe=r.WeakMap;if(Ee||ge.state){var Xe=ge.state||(ge.state=new xe),De=Xe.get,Ge=Xe.has,Ie=Xe.set;he=function(e,t){if(Ge.call(Xe,e))throw new TypeError(Le);return t.facade=e,Ie.call(Xe,e,t),t},Ve=function(e){return De.call(Xe,e)||{}},pe=function(e){return Ge.call(Xe,e)}}else{var Me=Te("state");Ce[Me]=!0,he=function(e,t){if(Ne(e,Me))throw new TypeError(Le);return t.facade=e,ve(e,Me,t),t},Ve=function(e){return Ne(e,Me)?e[Me]:{}},pe=function(e){return Ne(e,Me)}}var Ye={set:he,get:Ve,has:pe,enforce:function(e){return pe(e)?Ve(e):he(e,{})},getterFor:function(e){return function(t){var n;if(!be(t)||(n=Ve(t)).type!==e)throw TypeError("Incompatible receiver, "+e+" required");return n}}},we=r,Ke=te,_e=b,Pe=ae,je=Qe,He=Ye.get,Oe=Ye.enforce,ze=String(String).split("String");(ne.exports=function(e,t,n,i){var r,a=!!i&&!!i.unsafe,l=!!i&&!!i.enumerable,U=!!i&&!!i.noTargetGet;"function"==typeof n&&("string"!=typeof t||_e(n,"name")||Ke(n,"name",t),(r=Oe(n)).source||(r.source=ze.join("string"==typeof t?t:""))),e!==we?(a?!U&&e[t]&&(l=!0):delete e[t],l?e[t]=n:Ke(e,t,n)):l?e[t]=n:Pe(t,n)})(Function.prototype,"toString",(function(){return"function"==typeof this&&He(this).source||je(this)}));var Ae=ne.exports,qe=r,$e=r,et=function(e){return"function"==typeof e?e:void 0},tt=function(e,t){return arguments.length<2?et(qe[e])||et($e[e]):qe[e]&&qe[e][t]||$e[e]&&$e[e][t]},nt={},it=Math.ceil,rt=Math.floor,at=function(e){return isNaN(e=+e)?0:(e>0?rt:it)(e)},lt=at,Ut=Math.min,Ft=function(e){return e>0?Ut(lt(e),9007199254740991):0},ot=at,dt=Math.max,Qt=Math.min,st=function(e,t){var n=ot(e);return n<0?dt(n+t,0):Qt(n,t)},ct=Z,ut=Ft,Bt=st,Rt=function(e){return function(t,n,i){var r,a=ct(t),l=ut(a.length),U=Bt(i,l);if(e&&n!=n){for(;l>U;)if((r=a[U++])!=r)return!0}else for(;l>U;U++)if((e||U in a)&&a[U]===n)return e||U||0;return!e&&-1}},ht={includes:Rt(!0),indexOf:Rt(!1)},Vt=b,pt=Z,mt=ht.indexOf,Zt=ke,St=function(e,t){var n,i=pt(e),r=0,a=[];for(n in i)!Vt(Zt,n)&&Vt(i,n)&&a.push(n);for(;t.length>r;)Vt(i,n=t[r++])&&(~mt(a,n)||a.push(n));return a},Jt=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"],Wt=St,ft=Jt.concat("length","prototype");nt.f=Object.getOwnPropertyNames||function(e){return Wt(e,ft)};var yt={};yt.f=Object.getOwnPropertySymbols;var kt=nt,Et=yt,bt=P,vt=tt("Reflect","ownKeys")||function(e){var t=kt.f(bt(e)),n=Et.f;return n?t.concat(n(e)):t},Nt=b,gt=vt,Tt=a,Ct=K,Lt=l,xt=/#|\.prototype\./,Xt=function(e,t){var n=Gt[Dt(e)];return n==Mt||n!=It&&("function"==typeof t?Lt(t):!!t)},Dt=Xt.normalize=function(e){return String(e).replace(xt,".").toLowerCase()},Gt=Xt.data={},It=Xt.NATIVE="N",Mt=Xt.POLYFILL="P",Yt=Xt,wt=r,Kt=a.f,_t=te,Pt=Ae,jt=ae,Ht=function(e,t){for(var n=gt(t),i=Ct.f,r=Tt.f,a=0;a<n.length;a++){var l=n[a];Nt(e,l)||i(e,l,r(t,l))}},Ot=Yt,zt=function(e,t){var n,i,r,a,l,U=e.target,F=e.global,o=e.stat;if(n=F?wt:o?wt[U]||jt(U,{}):(wt[U]||{}).prototype)for(i in t){if(a=t[i],r=e.noTargetGet?(l=Kt(n,i))&&l.value:n[i],!Ot(F?i:U+(o?".":"#")+i,e.forced)&&void 0!==r){if(typeof a==typeof r)continue;Ht(a,r)}(e.sham||r&&r.sham)&&_t(a,"sham",!0),Pt(n,i,a,e)}};function At(e,t,n,i,r,a,l){try{var U=e[a](l),F=U.value}catch(o){return void n(o)}U.done?t(F):Promise.resolve(F).then(i,r)}function qt(e){return function(){var t=this,n=arguments;return new Promise((function(i,r){var a=e.apply(t,n);function l(e){At(a,i,r,l,U,"next",e)}function U(e){At(a,i,r,l,U,"throw",e)}l(void 0)}))}}function $t(e,t,n){return t=an(t),function(e,t){if(t&&("object"==typeof t||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e)}(e,Un()?Reflect.construct(t,n||[],an(e).constructor):t.apply(e,n))}function en(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function tn(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,dn(i.key),i)}}function nn(e,t,n){return t&&tn(e.prototype,t),n&&tn(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e}function rn(e,t,n){return(t=dn(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function an(e){return(an=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function ln(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&on(e,t)}function Un(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(rR){}return(Un=function(){return!!e})()}function Fn(){Fn=function(){return t};var e,t={},n=Object.prototype,i=n.hasOwnProperty,r=Object.defineProperty||function(e,t,n){e[t]=n.value},a="function"==typeof Symbol?Symbol:{},l=a.iterator||"@@iterator",U=a.asyncIterator||"@@asyncIterator",F=a.toStringTag||"@@toStringTag";function o(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{o({},"")}catch(g){o=function(e,t,n){return e[t]=n}}function d(e,t,n,i){var a=t&&t.prototype instanceof h?t:h,l=Object.create(a.prototype),U=new v(i||[]);return r(l,"_invoke",{value:y(e,n,U)}),l}function Q(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(i){return{type:"throw",arg:i}}}t.wrap=d;var s="suspendedStart",c="suspendedYield",u="executing",B="completed",R={};function h(){}function V(){}function p(){}var m={};o(m,l,(function(){return this}));var Z=Object.getPrototypeOf,S=Z&&Z(Z(N([])));S&&S!==n&&i.call(S,l)&&(m=S);var J=p.prototype=h.prototype=Object.create(m);function W(e){["next","throw","return"].forEach((function(t){o(e,t,(function(e){return this._invoke(t,e)}))}))}function f(e,t){function n(r,a,l,U){var F=Q(e[r],e,a);if("throw"!==F.type){var o=F.arg,d=o.value;return d&&"object"==typeof d&&i.call(d,"__await")?t.resolve(d.__await).then((function(e){n("next",e,l,U)}),(function(e){n("throw",e,l,U)})):t.resolve(d).then((function(e){o.value=e,l(o)}),(function(e){return n("throw",e,l,U)}))}U(F.arg)}var a;r(this,"_invoke",{value:function(e,i){function r(){return new t((function(t,r){n(e,i,t,r)}))}return a=a?a.then(r,r):r()}})}function y(t,n,i){var r=s;return function(a,l){if(r===u)throw Error("Generator is already running");if(r===B){if("throw"===a)throw l;return{value:e,done:!0}}for(i.method=a,i.arg=l;;){var U=i.delegate;if(U){var F=k(U,i);if(F){if(F===R)continue;return F}}if("next"===i.method)i.sent=i._sent=i.arg;else if("throw"===i.method){if(r===s)throw r=B,i.arg;i.dispatchException(i.arg)}else"return"===i.method&&i.abrupt("return",i.arg);r=u;var o=Q(t,n,i);if("normal"===o.type){if(r=i.done?B:c,o.arg===R)continue;return{value:o.arg,done:i.done}}"throw"===o.type&&(r=B,i.method="throw",i.arg=o.arg)}}}function k(t,n){var i=n.method,r=t.iterator[i];if(r===e)return n.delegate=null,"throw"===i&&t.iterator.return&&(n.method="return",n.arg=e,k(t,n),"throw"===n.method)||"return"!==i&&(n.method="throw",n.arg=new TypeError("The iterator does not provide a '"+i+"' method")),R;var a=Q(r,t.iterator,n.arg);if("throw"===a.type)return n.method="throw",n.arg=a.arg,n.delegate=null,R;var l=a.arg;return l?l.done?(n[t.resultName]=l.value,n.next=t.nextLoc,"return"!==n.method&&(n.method="next",n.arg=e),n.delegate=null,R):l:(n.method="throw",n.arg=new TypeError("iterator result is not an object"),n.delegate=null,R)}function E(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function b(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function v(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(E,this),this.reset(!0)}function N(t){if(t||""===t){var n=t[l];if(n)return n.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var r=-1,a=function n(){for(;++r<t.length;)if(i.call(t,r))return n.value=t[r],n.done=!1,n;return n.value=e,n.done=!0,n};return a.next=a}}throw new TypeError(typeof t+" is not iterable")}return V.prototype=p,r(J,"constructor",{value:p,configurable:!0}),r(p,"constructor",{value:V,configurable:!0}),V.displayName=o(p,F,"GeneratorFunction"),t.isGeneratorFunction=function(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===V||"GeneratorFunction"===(t.displayName||t.name))},t.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,p):(e.__proto__=p,o(e,F,"GeneratorFunction")),e.prototype=Object.create(J),e},t.awrap=function(e){return{__await:e}},W(f.prototype),o(f.prototype,U,(function(){return this})),t.AsyncIterator=f,t.async=function(e,n,i,r,a){void 0===a&&(a=Promise);var l=new f(d(e,n,i,r),a);return t.isGeneratorFunction(n)?l:l.next().then((function(e){return e.done?e.value:l.next()}))},W(J),o(J,F,"Generator"),o(J,l,(function(){return this})),o(J,"toString",(function(){return"[object Generator]"})),t.keys=function(e){var t=Object(e),n=[];for(var i in t)n.push(i);return n.reverse(),function e(){for(;n.length;){var i=n.pop();if(i in t)return e.value=i,e.done=!1,e}return e.done=!0,e}},t.values=N,v.prototype={constructor:v,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=e,this.done=!1,this.delegate=null,this.method="next",this.arg=e,this.tryEntries.forEach(b),!t)for(var n in this)"t"===n.charAt(0)&&i.call(this,n)&&!isNaN(+n.slice(1))&&(this[n]=e)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var n=this;function r(i,r){return U.type="throw",U.arg=t,n.next=i,r&&(n.method="next",n.arg=e),!!r}for(var a=this.tryEntries.length-1;a>=0;--a){var l=this.tryEntries[a],U=l.completion;if("root"===l.tryLoc)return r("end");if(l.tryLoc<=this.prev){var F=i.call(l,"catchLoc"),o=i.call(l,"finallyLoc");if(F&&o){if(this.prev<l.catchLoc)return r(l.catchLoc,!0);if(this.prev<l.finallyLoc)return r(l.finallyLoc)}else if(F){if(this.prev<l.catchLoc)return r(l.catchLoc,!0)}else{if(!o)throw Error("try statement without catch or finally");if(this.prev<l.finallyLoc)return r(l.finallyLoc)}}}},abrupt:function(e,t){for(var n=this.tryEntries.length-1;n>=0;--n){var r=this.tryEntries[n];if(r.tryLoc<=this.prev&&i.call(r,"finallyLoc")&&this.prev<r.finallyLoc){var a=r;break}}a&&("break"===e||"continue"===e)&&a.tryLoc<=t&&t<=a.finallyLoc&&(a=null);var l=a?a.completion:{};return l.type=e,l.arg=t,a?(this.method="next",this.next=a.finallyLoc,R):this.complete(l)},complete:function(e,t){if("throw"===e.type)throw e.arg;return"break"===e.type||"continue"===e.type?this.next=e.arg:"return"===e.type?(this.rval=this.arg=e.arg,this.method="return",this.next="end"):"normal"===e.type&&t&&(this.next=t),R},finish:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),b(n),R}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var i=n.completion;if("throw"===i.type){var r=i.arg;b(n)}return r}}throw Error("illegal catch attempt")},delegateYield:function(t,n,i){return this.delegate={iterator:N(t),resultName:n,nextLoc:i},"next"===this.method&&(this.arg=e),R}},t}function on(e,t){return(on=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e})(e,t)}function dn(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var i=n.call(e,t||"default");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}function Qn(e){return(Qn="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function sn(e){var t="function"==typeof Map?new Map:void 0;return sn=function(e){if(null===e||!function(e){try{return-1!==Function.toString.call(e).indexOf("[native code]")}catch(t){return"function"==typeof e}}(e))return e;if("function"!=typeof e)throw new TypeError("Super expression must either be null or a function");if(void 0!==t){if(t.has(e))return t.get(e);t.set(e,n)}function n(){return function(e,t,n){if(Un())return Reflect.construct.apply(null,arguments);var i=[null];i.push.apply(i,t);var r=new(e.bind.apply(e,i));return n&&on(r,n.prototype),r}(e,arguments,an(this).constructor)}return n.prototype=Object.create(e.prototype,{constructor:{value:n,enumerable:!1,writable:!0,configurable:!0}}),on(n,e)},sn(e)}zt({global:!0},{globalThis:r});var cn,un,Bn=u,Rn=Array.isArray||function(e){return"Array"==Bn(e)},hn=W,Vn=K,pn=s,mn=function(e,t,n){var i=hn(t);i in e?Vn.f(e,i,pn(0,n)):e[i]=n},Zn=tt("navigator","userAgent")||"",Sn=Zn,Jn=r.process,Wn=Jn&&Jn.versions,fn=Wn&&Wn.v8;fn?un=(cn=fn.split("."))[0]<4?1:cn[0]+cn[1]:Sn&&(!(cn=Sn.match(/Edge\/(\d+)/))||cn[1]>=74)&&(cn=Sn.match(/Chrome\/(\d+)/))&&(un=cn[1]);var yn=un&&+un,kn=yn,En=l,bn=!!Object.getOwnPropertySymbols&&!En((function(){return!String(Symbol())||!Symbol.sham&&kn&&kn<41})),vn=bn&&!Symbol.sham&&"symbol"==typeof Symbol.iterator,Nn=r,gn=b,Tn=Je,Cn=bn,Ln=vn,xn=me("wks"),Xn=Nn.Symbol,Dn=Ln?Xn:Xn&&Xn.withoutSetter||Tn,Gn=function(e){return gn(xn,e)&&(Cn||"string"==typeof xn[e])||(Cn&&gn(Xn,e)?xn[e]=Xn[e]:xn[e]=Dn("Symbol."+e)),xn[e]},In=S,Mn=Rn,Yn=Gn("species"),wn=function(e,t){var n;return Mn(e)&&("function"!=typeof(n=e.constructor)||n!==Array&&!Mn(n.prototype)?In(n)&&null===(n=n[Yn])&&(n=void 0):n=void 0),new(void 0===n?Array:n)(0===t?0:t)},Kn=l,_n=yn,Pn=Gn("species"),jn=function(e){return _n>=51||!Kn((function(){var t=[];return(t.constructor={})[Pn]=function(){return{foo:1}},1!==t[e](Boolean).foo}))},Hn=zt,On=l,zn=Rn,An=S,qn=y,$n=Ft,ei=mn,ti=wn,ni=jn,ii=yn,ri=Gn("isConcatSpreadable"),ai=9007199254740991,li="Maximum allowed index exceeded",Ui=ii>=51||!On((function(){var e=[];return e[ri]=!1,e.concat()[0]!==e})),Fi=ni("concat"),oi=function(e){if(!An(e))return!1;var t=e[ri];return void 0!==t?!!t:zn(e)};Hn({target:"Array",proto:!0,forced:!Ui||!Fi},{concat:function(e){var t,n,i,r,a,l=qn(this),U=ti(l,0),F=0;for(t=-1,i=arguments.length;t<i;t++)if(oi(a=-1===t?l:arguments[t])){if(F+(r=$n(a.length))>ai)throw TypeError(li);for(n=0;n<r;n++,F++)n in a&&ei(U,F,a[n])}else{if(F>=ai)throw TypeError(li);ei(U,F++,a)}return U.length=F,U}});var di,Qi=St,si=Jt,ci=Object.keys||function(e){return Qi(e,si)},ui=K,Bi=P,Ri=ci,hi=U?Object.defineProperties:function(e,t){Bi(e);for(var n,i=Ri(t),r=i.length,a=0;r>a;)ui.f(e,n=i[a++],t[n]);return e},Vi=tt("document","documentElement"),pi=P,mi=hi,Zi=Jt,Si=ke,Ji=Vi,Wi=T,fi="prototype",yi="script",ki=ye("IE_PROTO"),Ei=function(){},bi=function(e){return"<"+yi+">"+e+"</"+yi+">"},vi=function(){try{di=document.domain&&new ActiveXObject("htmlfile")}catch(r){}var e,t,n;vi=di?function(e){e.write(bi("")),e.close();var t=e.parentWindow.Object;return e=null,t}(di):(t=Wi("iframe"),n="java"+yi+":",t.style.display="none",Ji.appendChild(t),t.src=String(n),(e=t.contentWindow.document).open(),e.write(bi("document.F=Object")),e.close(),e.F);for(var i=Zi.length;i--;)delete vi[fi][Zi[i]];return vi()};Si[ki]=!0;var Ni=Object.create||function(e,t){var n;return null!==e?(Ei[fi]=pi(e),n=new Ei,Ei[fi]=null,n[ki]=e):n=vi(),void 0===t?n:mi(n,t)},gi=Ni,Ti=K,Ci=Gn("unscopables"),Li=Array.prototype;null==Li[Ci]&&Ti.f(Li,Ci,{configurable:!0,value:gi(null)});var xi,Xi,Di,Gi={},Ii=!l((function(){function e(){}return e.prototype.constructor=null,Object.getPrototypeOf(new e)!==e.prototype})),Mi=b,Yi=y,wi=Ii,Ki=ye("IE_PROTO"),_i=Object.prototype,Pi=wi?Object.getPrototypeOf:function(e){return e=Yi(e),Mi(e,Ki)?e[Ki]:"function"==typeof e.constructor&&e instanceof e.constructor?e.constructor.prototype:e instanceof Object?_i:null},ji=l,Hi=Pi,Oi=te,zi=b,Ai=Gn("iterator"),qi=!1;[].keys&&("next"in(Di=[].keys())?(Xi=Hi(Hi(Di)))!==Object.prototype&&(xi=Xi):qi=!0),(null==xi||ji((function(){var e={};return xi[Ai].call(e)!==e})))&&(xi={}),zi(xi,Ai)||Oi(xi,Ai,(function(){return this}));var $i={IteratorPrototype:xi,BUGGY_SAFARI_ITERATORS:qi},er=K.f,tr=b,nr=Gn("toStringTag"),ir=function(e,t,n){e&&!tr(e=n?e:e.prototype,nr)&&er(e,nr,{configurable:!0,value:t})},rr=$i.IteratorPrototype,ar=Ni,lr=s,Ur=ir,Fr=Gi,or=function(){return this},dr=S,Qr=P,sr=function(e){if(!dr(e)&&null!==e)throw TypeError("Can't set "+String(e)+" as a prototype");return e},cr=Object.setPrototypeOf||("__proto__"in{}?function(){var e,t=!1,n={};try{(e=Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set).call(n,[]),t=n instanceof Array}catch(i){}return function(n,i){return Qr(n),sr(i),t?e.call(n,i):n.__proto__=i,n}}():void 0),ur=zt,Br=function(e,t,n){var i=t+" Iterator";return e.prototype=ar(rr,{next:lr(1,n)}),Ur(e,i,!1),Fr[i]=or,e},Rr=Pi,hr=cr,Vr=ir,pr=te,mr=Ae,Zr=Gi,Sr=$i.IteratorPrototype,Jr=$i.BUGGY_SAFARI_ITERATORS,Wr=Gn("iterator"),fr="keys",yr="values",kr="entries",Er=function(){return this},br=function(e,t,n,i,r,a,l){Br(n,t,i);var U,F,o,d=function(e){if(e===r&&B)return B;if(!Jr&&e in c)return c[e];switch(e){case fr:case yr:case kr:return function(){return new n(this,e)}}return function(){return new n(this)}},Q=t+" Iterator",s=!1,c=e.prototype,u=c[Wr]||c["@@iterator"]||r&&c[r],B=!Jr&&u||d(r),R="Array"==t&&c.entries||u;if(R&&(U=Rr(R.call(new e)),Sr!==Object.prototype&&U.next&&(Rr(U)!==Sr&&(hr?hr(U,Sr):"function"!=typeof U[Wr]&&pr(U,Wr,Er)),Vr(U,Q,!0))),r==yr&&u&&u.name!==yr&&(s=!0,B=function(){return u.call(this)}),c[Wr]!==B&&pr(c,Wr,B),Zr[t]=B,r)if(F={values:d(yr),keys:a?B:d(fr),entries:d(kr)},l)for(o in F)(Jr||s||!(o in c))&&mr(c,o,F[o]);else ur({target:t,proto:!0,forced:Jr||s},F);return F},vr=Z,Nr=function(e){Li[Ci][e]=!0},gr=Gi,Tr=Ye,Cr=br,Lr="Array Iterator",xr=Tr.set,Xr=Tr.getterFor(Lr),Dr=Cr(Array,"Array",(function(e,t){xr(this,{type:Lr,target:vr(e),index:0,kind:t})}),(function(){var e=Xr(this),t=e.target,n=e.kind,i=e.index++;return!t||i>=t.length?(e.target=void 0,{value:void 0,done:!0}):"keys"==n?{value:i,done:!1}:"values"==n?{value:t[i],done:!1}:{value:[i,t[i]],done:!1}}),"values");gr.Arguments=gr.Array,Nr("keys"),Nr("values"),Nr("entries");var Gr="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof DataView,Ir=Ae,Mr=function(e,t,n){for(var i in t)Ir(e,i,t[i],n);return e},Yr=function(e,t,n){if(!(e instanceof t))throw TypeError("Incorrect "+(n?n+" ":"")+"invocation");return e},wr=at,Kr=Ft,_r=function(e){if(void 0===e)return 0;var t=wr(e),n=Kr(t);if(t!==n)throw RangeError("Wrong length or index");return n},Pr=Math.abs,jr=Math.pow,Hr=Math.floor,Or=Math.log,zr=Math.LN2,Ar=y,qr=st,$r=Ft,ea=function(e){for(var t=Ar(this),n=$r(t.length),i=arguments.length,r=qr(i>1?arguments[1]:void 0,n),a=i>2?arguments[2]:void 0,l=void 0===a?n:qr(a,n);l>r;)t[r++]=e;return t},ta=r,na=U,ia=Gr,ra=te,aa=Mr,la=l,Ua=Yr,Fa=at,oa=Ft,da=_r,Qa={pack:function(e,t,n){var i,r,a,l=new Array(n),U=8*n-t-1,F=(1<<U)-1,o=F>>1,d=23===t?jr(2,-24)-jr(2,-77):0,Q=e<0||0===e&&1/e<0?1:0,s=0;for((e=Pr(e))!=e||e===1/0?(r=e!=e?1:0,i=F):(i=Hr(Or(e)/zr),e*(a=jr(2,-i))<1&&(i--,a*=2),(e+=i+o>=1?d/a:d*jr(2,1-o))*a>=2&&(i++,a/=2),i+o>=F?(r=0,i=F):i+o>=1?(r=(e*a-1)*jr(2,t),i+=o):(r=e*jr(2,o-1)*jr(2,t),i=0));t>=8;l[s++]=255&r,r/=256,t-=8);for(i=i<<t|r,U+=t;U>0;l[s++]=255&i,i/=256,U-=8);return l[--s]|=128*Q,l},unpack:function(e,t){var n,i=e.length,r=8*i-t-1,a=(1<<r)-1,l=a>>1,U=r-7,F=i-1,o=e[F--],d=127&o;for(o>>=7;U>0;d=256*d+e[F],F--,U-=8);for(n=d&(1<<-U)-1,d>>=-U,U+=t;U>0;n=256*n+e[F],F--,U-=8);if(0===d)d=1-l;else{if(d===a)return n?NaN:o?-1/0:1/0;n+=jr(2,t),d-=l}return(o?-1:1)*n*jr(2,d-t)}},sa=Pi,ca=cr,ua=nt.f,Ba=K.f,Ra=ea,ha=ir,Va=Ye.get,pa=Ye.set,ma="ArrayBuffer",Za="DataView",Sa="prototype",Ja="Wrong index",Wa=ta[ma],fa=Wa,ya=ta[Za],ka=ya&&ya[Sa],Ea=Object.prototype,ba=ta.RangeError,va=Qa.pack,Na=Qa.unpack,ga=function(e){return[255&e]},Ta=function(e){return[255&e,e>>8&255]},Ca=function(e){return[255&e,e>>8&255,e>>16&255,e>>24&255]},La=function(e){return e[3]<<24|e[2]<<16|e[1]<<8|e[0]},xa=function(e){return va(e,23,4)},Xa=function(e){return va(e,52,8)},Da=function(e,t){Ba(e[Sa],t,{get:function(){return Va(this)[t]}})},Ga=function(e,t,n,i){var r=da(n),a=Va(e);if(r+t>a.byteLength)throw ba(Ja);var l=Va(a.buffer).bytes,U=r+a.byteOffset,F=l.slice(U,U+t);return i?F:F.reverse()},Ia=function(e,t,n,i,r,a){var l=da(n),U=Va(e);if(l+t>U.byteLength)throw ba(Ja);for(var F=Va(U.buffer).bytes,o=l+U.byteOffset,d=i(+r),Q=0;Q<t;Q++)F[o+Q]=d[a?Q:t-Q-1]};if(ia){if(!la((function(){Wa(1)}))||!la((function(){new Wa(-1)}))||la((function(){return new Wa,new Wa(1.5),new Wa(NaN),Wa.name!=ma}))){for(var Ma,Ya=(fa=function(e){return Ua(this,fa),new Wa(da(e))})[Sa]=Wa[Sa],wa=ua(Wa),Ka=0;wa.length>Ka;)(Ma=wa[Ka++])in fa||ra(fa,Ma,Wa[Ma]);Ya.constructor=fa}ca&&sa(ka)!==Ea&&ca(ka,Ea);var _a=new ya(new fa(2)),Pa=ka.setInt8;_a.setInt8(0,2147483648),_a.setInt8(1,2147483649),!_a.getInt8(0)&&_a.getInt8(1)||aa(ka,{setInt8:function(e,t){Pa.call(this,e,t<<24>>24)},setUint8:function(e,t){Pa.call(this,e,t<<24>>24)}},{unsafe:!0})}else fa=function(e){Ua(this,fa,ma);var t=da(e);pa(this,{bytes:Ra.call(new Array(t),0),byteLength:t}),na||(this.byteLength=t)},ya=function(e,t,n){Ua(this,ya,Za),Ua(e,fa,Za);var i=Va(e).byteLength,r=Fa(t);if(r<0||r>i)throw ba("Wrong offset");if(r+(n=void 0===n?i-r:oa(n))>i)throw ba("Wrong length");pa(this,{buffer:e,byteLength:n,byteOffset:r}),na||(this.buffer=e,this.byteLength=n,this.byteOffset=r)},na&&(Da(fa,"byteLength"),Da(ya,"buffer"),Da(ya,"byteLength"),Da(ya,"byteOffset")),aa(ya[Sa],{getInt8:function(e){return Ga(this,1,e)[0]<<24>>24},getUint8:function(e){return Ga(this,1,e)[0]},getInt16:function(e){var t=Ga(this,2,e,arguments.length>1?arguments[1]:void 0);return(t[1]<<8|t[0])<<16>>16},getUint16:function(e){var t=Ga(this,2,e,arguments.length>1?arguments[1]:void 0);return t[1]<<8|t[0]},getInt32:function(e){return La(Ga(this,4,e,arguments.length>1?arguments[1]:void 0))},getUint32:function(e){return La(Ga(this,4,e,arguments.length>1?arguments[1]:void 0))>>>0},getFloat32:function(e){return Na(Ga(this,4,e,arguments.length>1?arguments[1]:void 0),23)},getFloat64:function(e){return Na(Ga(this,8,e,arguments.length>1?arguments[1]:void 0),52)},setInt8:function(e,t){Ia(this,1,e,ga,t)},setUint8:function(e,t){Ia(this,1,e,ga,t)},setInt16:function(e,t){Ia(this,2,e,Ta,t,arguments.length>2?arguments[2]:void 0)},setUint16:function(e,t){Ia(this,2,e,Ta,t,arguments.length>2?arguments[2]:void 0)},setInt32:function(e,t){Ia(this,4,e,Ca,t,arguments.length>2?arguments[2]:void 0)},setUint32:function(e,t){Ia(this,4,e,Ca,t,arguments.length>2?arguments[2]:void 0)},setFloat32:function(e,t){Ia(this,4,e,xa,t,arguments.length>2?arguments[2]:void 0)},setFloat64:function(e,t){Ia(this,8,e,Xa,t,arguments.length>2?arguments[2]:void 0)}});ha(fa,ma),ha(ya,Za);var ja={ArrayBuffer:fa,DataView:ya},Ha=tt,Oa=K,za=U,Aa=Gn("species"),qa=function(e){var t=Ha(e),n=Oa.f;za&&t&&!t[Aa]&&n(t,Aa,{configurable:!0,get:function(){return this}})},$a=qa,el="ArrayBuffer",tl=ja[el];zt({global:!0,forced:r[el]!==tl},{ArrayBuffer:tl}),$a(el);var nl=y,il=ci;zt({target:"Object",stat:!0,forced:l((function(){il(1)}))},{keys:function(e){return il(nl(e))}});var rl={};rl[Gn("toStringTag")]="z";var al="[object z]"===String(rl),ll=al,Ul=u,Fl=Gn("toStringTag"),ol="Arguments"==Ul(function(){return arguments}()),dl=ll?Ul:function(e){var t,n,i;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(n=function(e,t){try{return e[t]}catch(n){}}(t=Object(e),Fl))?n:ol?Ul(t):"Object"==(i=Ul(t))&&"function"==typeof t.callee?"Arguments":i},Ql=dl,sl=al?{}.toString:function(){return"[object "+Ql(this)+"]"};al||Ae(Object.prototype,"toString",sl,{unsafe:!0});var cl=r.Promise,ul=function(e){if("function"!=typeof e)throw TypeError(String(e)+" is not a function");return e},Bl=Gi,Rl=Gn("iterator"),hl=Array.prototype,Vl=function(e){return void 0!==e&&(Bl.Array===e||hl[Rl]===e)},pl=ul,ml=function(e,t,n){if(pl(e),void 0===t)return e;switch(n){case 0:return function(){return e.call(t)};case 1:return function(n){return e.call(t,n)};case 2:return function(n,i){return e.call(t,n,i)};case 3:return function(n,i,r){return e.call(t,n,i,r)}}return function(){return e.apply(t,arguments)}},Zl=dl,Sl=Gi,Jl=Gn("iterator"),Wl=function(e){if(null!=e)return e[Jl]||e["@@iterator"]||Sl[Zl(e)]},fl=P,yl=P,kl=Vl,El=Ft,bl=ml,vl=Wl,Nl=function(e){var t=e.return;if(void 0!==t)return fl(t.call(e)).value},gl=function(e,t){this.stopped=e,this.result=t},Tl=function(e,t,n){var i,r,a,l,U,F,o,d=n&&n.that,Q=!(!n||!n.AS_ENTRIES),s=!(!n||!n.IS_ITERATOR),c=!(!n||!n.INTERRUPTED),u=bl(t,d,1+Q+c),B=function(e){return i&&Nl(i),new gl(!0,e)},R=function(e){return Q?(yl(e),c?u(e[0],e[1],B):u(e[0],e[1])):c?u(e,B):u(e)};if(s)i=e;else{if("function"!=typeof(r=vl(e)))throw TypeError("Target is not iterable");if(kl(r)){for(a=0,l=El(e.length);l>a;a++)if((U=R(e[a]))&&U instanceof gl)return U;return new gl(!1)}i=r.call(e)}for(F=i.next;!(o=F.call(i)).done;){try{U=R(o.value)}catch(h){throw Nl(i),h}if("object"==typeof U&&U&&U instanceof gl)return U}return new gl(!1)},Cl=Gn("iterator"),Ll=!1;try{var xl=0,Xl={next:function(){return{done:!!xl++}},return:function(){Ll=!0}};Xl[Cl]=function(){return this},Array.from(Xl,(function(){throw 2}))}catch(np){}var Dl,Gl,Il,Ml=function(e,t){if(!t&&!Ll)return!1;var n=!1;try{var i={};i[Cl]=function(){return{next:function(){return{done:n=!0}}}},e(i)}catch(np){}return n},Yl=P,wl=ul,Kl=Gn("species"),_l=function(e,t){var n,i=Yl(e).constructor;return void 0===i||null==(n=Yl(i)[Kl])?t:wl(n)},Pl=/(?:iphone|ipod|ipad).*applewebkit/i.test(Zn),jl="process"==u(r.process),Hl=r,Ol=l,zl=ml,Al=Vi,ql=T,$l=Pl,eU=jl,tU=Hl.location,nU=Hl.setImmediate,iU=Hl.clearImmediate,rU=Hl.process,aU=Hl.MessageChannel,lU=Hl.Dispatch,UU=0,FU={},oU="onreadystatechange",dU=function(e){if(FU.hasOwnProperty(e)){var t=FU[e];delete FU[e],t()}},QU=function(e){return function(){dU(e)}},sU=function(e){dU(e.data)},cU=function(e){Hl.postMessage(e+"",tU.protocol+"//"+tU.host)};nU&&iU||(nU=function(e){for(var t=[],n=1;arguments.length>n;)t.push(arguments[n++]);return FU[++UU]=function(){("function"==typeof e?e:Function(e)).apply(void 0,t)},Dl(UU),UU},iU=function(e){delete FU[e]},eU?Dl=function(e){rU.nextTick(QU(e))}:lU&&lU.now?Dl=function(e){lU.now(QU(e))}:aU&&!$l?(Il=(Gl=new aU).port2,Gl.port1.onmessage=sU,Dl=zl(Il.postMessage,Il,1)):Hl.addEventListener&&"function"==typeof postMessage&&!Hl.importScripts&&tU&&"file:"!==tU.protocol&&!Ol(cU)?(Dl=cU,Hl.addEventListener("message",sU,!1)):Dl=oU in ql("script")?function(e){Al.appendChild(ql("script"))[oU]=function(){Al.removeChild(this),dU(e)}}:function(e){setTimeout(QU(e),0)});var uU,BU,RU,hU,VU,pU,mU,ZU,SU={set:nU,clear:iU},JU=/web0s(?!.*chrome)/i.test(Zn),WU=r,fU=a.f,yU=SU.set,kU=Pl,EU=JU,bU=jl,vU=WU.MutationObserver||WU.WebKitMutationObserver,NU=WU.document,gU=WU.process,TU=WU.Promise,CU=fU(WU,"queueMicrotask"),LU=CU&&CU.value;LU||(uU=function(){var e,t;for(bU&&(e=gU.domain)&&e.exit();BU;){t=BU.fn,BU=BU.next;try{t()}catch(np){throw BU?hU():RU=void 0,np}}RU=void 0,e&&e.enter()},kU||bU||EU||!vU||!NU?TU&&TU.resolve?((mU=TU.resolve(void 0)).constructor=TU,ZU=mU.then,hU=function(){ZU.call(mU,uU)}):hU=bU?function(){gU.nextTick(uU)}:function(){yU.call(WU,uU)}:(VU=!0,pU=NU.createTextNode(""),new vU(uU).observe(pU,{characterData:!0}),hU=function(){pU.data=VU=!VU}));var xU=LU||function(e){var t={fn:e,next:void 0};RU&&(RU.next=t),BU||(BU=t,hU()),RU=t},XU={},DU=ul,GU=function(e){var t,n;this.promise=new e((function(e,i){if(void 0!==t||void 0!==n)throw TypeError("Bad Promise constructor");t=e,n=i})),this.resolve=DU(t),this.reject=DU(n)};XU.f=function(e){return new GU(e)};var IU,MU,YU,wU,KU=P,_U=S,PU=XU,jU=r,HU="object"==typeof window,OU=zt,zU=r,AU=tt,qU=cl,$U=Ae,eF=Mr,tF=cr,nF=ir,iF=qa,rF=S,aF=ul,lF=Yr,UF=Qe,FF=Tl,oF=Ml,dF=_l,QF=SU.set,sF=xU,cF=function(e,t){if(KU(e),_U(t)&&t.constructor===e)return t;var n=PU.f(e);return(0,n.resolve)(t),n.promise},uF=function(e,t){var n=jU.console;n&&n.error&&(1===arguments.length?n.error(e):n.error(e,t))},BF=XU,RF=function(e){try{return{error:!1,value:e()}}catch(np){return{error:!0,value:np}}},hF=Ye,VF=Yt,pF=HU,mF=jl,ZF=yn,SF=Gn("species"),JF="Promise",WF=hF.get,fF=hF.set,yF=hF.getterFor(JF),kF=qU&&qU.prototype,EF=qU,bF=kF,vF=zU.TypeError,NF=zU.document,gF=zU.process,TF=BF.f,CF=TF,LF=!!(NF&&NF.createEvent&&zU.dispatchEvent),xF="function"==typeof PromiseRejectionEvent,XF="unhandledrejection",DF=!1,GF=VF(JF,(function(){var e=UF(EF)!==String(EF);if(!e&&66===ZF)return!0;if(ZF>=51&&/native code/.test(EF))return!1;var t=new EF((function(e){e(1)})),n=function(e){e((function(){}),(function(){}))};return(t.constructor={})[SF]=n,!(DF=t.then((function(){}))instanceof n)||!e&&pF&&!xF})),IF=GF||!oF((function(e){EF.all(e).catch((function(){}))})),MF=function(e){var t;return!(!rF(e)||"function"!=typeof(t=e.then))&&t},YF=function(e,t){if(!e.notified){e.notified=!0;var n=e.reactions;sF((function(){for(var i=e.value,r=1==e.state,a=0;n.length>a;){var l,U,F,o=n[a++],d=r?o.ok:o.fail,Q=o.resolve,s=o.reject,c=o.domain;try{d?(r||(2===e.rejection&&PF(e),e.rejection=1),!0===d?l=i:(c&&c.enter(),l=d(i),c&&(c.exit(),F=!0)),l===o.promise?s(vF("Promise-chain cycle")):(U=MF(l))?U.call(l,Q,s):Q(l)):s(i)}catch(np){c&&!F&&c.exit(),s(np)}}e.reactions=[],e.notified=!1,t&&!e.rejection&&KF(e)}))}},wF=function(e,t,n){var i,r;LF?((i=NF.createEvent("Event")).promise=t,i.reason=n,i.initEvent(e,!1,!0),zU.dispatchEvent(i)):i={promise:t,reason:n},!xF&&(r=zU["on"+e])?r(i):e===XF&&uF("Unhandled promise rejection",n)},KF=function(e){QF.call(zU,(function(){var t,n=e.facade,i=e.value;if(_F(e)&&(t=RF((function(){mF?gF.emit("unhandledRejection",i,n):wF(XF,n,i)})),e.rejection=mF||_F(e)?2:1,t.error))throw t.value}))},_F=function(e){return 1!==e.rejection&&!e.parent},PF=function(e){QF.call(zU,(function(){var t=e.facade;mF?gF.emit("rejectionHandled",t):wF("rejectionhandled",t,e.value)}))},jF=function(e,t,n){return function(i){e(t,i,n)}},HF=function(e,t,n){e.done||(e.done=!0,n&&(e=n),e.value=t,e.state=2,YF(e,!0))},OF=function(e,t,n){if(!e.done){e.done=!0,n&&(e=n);try{if(e.facade===t)throw vF("Promise can't be resolved itself");var i=MF(t);i?sF((function(){var n={done:!1};try{i.call(t,jF(OF,n,e),jF(HF,n,e))}catch(np){HF(n,np,e)}})):(e.value=t,e.state=1,YF(e,!1))}catch(np){HF({done:!1},np,e)}}};if(GF&&(bF=(EF=function(e){lF(this,EF,JF),aF(e),IU.call(this);var t=WF(this);try{e(jF(OF,t),jF(HF,t))}catch(np){HF(t,np)}}).prototype,(IU=function(e){fF(this,{type:JF,done:!1,notified:!1,parent:!1,reactions:[],rejection:!1,state:0,value:void 0})}).prototype=eF(bF,{then:function(e,t){var n=yF(this),i=TF(dF(this,EF));return i.ok="function"!=typeof e||e,i.fail="function"==typeof t&&t,i.domain=mF?gF.domain:void 0,n.parent=!0,n.reactions.push(i),0!=n.state&&YF(n,!1),i.promise},catch:function(e){return this.then(void 0,e)}}),MU=function(){var e=new IU,t=WF(e);this.promise=e,this.resolve=jF(OF,t),this.reject=jF(HF,t)},BF.f=TF=function(e){return e===EF||e===YU?new MU(e):CF(e)},"function"==typeof qU&&kF!==Object.prototype)){wU=kF.then,DF||($U(kF,"then",(function(e,t){var n=this;return new EF((function(e,t){wU.call(n,e,t)})).then(e,t)}),{unsafe:!0}),$U(kF,"catch",bF.catch,{unsafe:!0}));try{delete kF.constructor}catch(np){}tF&&tF(kF,bF)}OU({global:!0,wrap:!0,forced:GF},{Promise:EF}),nF(EF,JF,!1),iF(JF),YU=AU(JF),OU({target:JF,stat:!0,forced:GF},{reject:function(e){var t=TF(this);return t.reject.call(void 0,e),t.promise}}),OU({target:JF,stat:!0,forced:GF},{resolve:function(e){return cF(this,e)}}),OU({target:JF,stat:!0,forced:IF},{all:function(e){var t=this,n=TF(t),i=n.resolve,r=n.reject,a=RF((function(){var n=aF(t.resolve),a=[],l=0,U=1;FF(e,(function(e){var F=l++,o=!1;a.push(void 0),U++,n.call(t,e).then((function(e){o||(o=!0,a[F]=e,--U||i(a))}),r)})),--U||i(a)}));return a.error&&r(a.value),n.promise},race:function(e){var t=this,n=TF(t),i=n.reject,r=RF((function(){var r=aF(t.resolve);FF(e,(function(e){r.call(t,e).then(n.resolve,i)}))}));return r.error&&i(r.value),n.promise}});var zF=P,AF=function(){var e=zF(this),t="";return e.global&&(t+="g"),e.ignoreCase&&(t+="i"),e.multiline&&(t+="m"),e.dotAll&&(t+="s"),e.unicode&&(t+="u"),e.sticky&&(t+="y"),t},qF=Ae,$F=P,eo=l,to=AF,no="toString",io=RegExp.prototype,ro=io[no],ao=eo((function(){return"/a/b"!=ro.call({source:"a",flags:"b"})})),lo=ro.name!=no;(ao||lo)&&qF(RegExp.prototype,no,(function(){var e=$F(this),t=String(e.source),n=e.flags;return"/"+t+"/"+String(void 0===n&&e instanceof RegExp&&!("flags"in io)?to.call(e):n)}),{unsafe:!0});var Uo,Fo={exports:{}},oo=Gr,Qo=U,so=r,co=S,uo=b,Bo=dl,Ro=te,ho=Ae,Vo=K.f,po=Pi,mo=cr,Zo=Gn,So=Je,Jo=so.Int8Array,Wo=Jo&&Jo.prototype,fo=so.Uint8ClampedArray,yo=fo&&fo.prototype,ko=Jo&&po(Jo),Eo=Wo&&po(Wo),bo=Object.prototype,vo=bo.isPrototypeOf,No=Zo("toStringTag"),go=So("TYPED_ARRAY_TAG"),To=oo&&!!mo&&"Opera"!==Bo(so.opera),Co=!1,Lo={Int8Array:1,Uint8Array:1,Uint8ClampedArray:1,Int16Array:2,Uint16Array:2,Int32Array:4,Uint32Array:4,Float32Array:4,Float64Array:8},xo={BigInt64Array:8,BigUint64Array:8},Xo=function(e){if(!co(e))return!1;var t=Bo(e);return uo(Lo,t)||uo(xo,t)};for(Uo in Lo)so[Uo]||(To=!1);if((!To||"function"!=typeof ko||ko===Function.prototype)&&(ko=function(){throw TypeError("Incorrect invocation")},To))for(Uo in Lo)so[Uo]&&mo(so[Uo],ko);if((!To||!Eo||Eo===bo)&&(Eo=ko.prototype,To))for(Uo in Lo)so[Uo]&&mo(so[Uo].prototype,Eo);if(To&&po(yo)!==Eo&&mo(yo,Eo),Qo&&!uo(Eo,No))for(Uo in Co=!0,Vo(Eo,No,{get:function(){return co(this)?this[go]:void 0}}),Lo)so[Uo]&&Ro(so[Uo],go,Uo);var Do={NATIVE_ARRAY_BUFFER_VIEWS:To,TYPED_ARRAY_TAG:Co&&go,aTypedArray:function(e){if(Xo(e))return e;throw TypeError("Target is not a typed array")},aTypedArrayConstructor:function(e){if(mo){if(vo.call(ko,e))return e}else for(var t in Lo)if(uo(Lo,Uo)){var n=so[t];if(n&&(e===n||vo.call(n,e)))return e}throw TypeError("Target is not a typed array constructor")},exportTypedArrayMethod:function(e,t,n){if(Qo){if(n)for(var i in Lo){var r=so[i];if(r&&uo(r.prototype,e))try{delete r.prototype[e]}catch(np){}}Eo[e]&&!n||ho(Eo,e,n?t:To&&Wo[e]||t)}},exportTypedArrayStaticMethod:function(e,t,n){var i,r;if(Qo){if(mo){if(n)for(i in Lo)if((r=so[i])&&uo(r,e))try{delete r[e]}catch(np){}if(ko[e]&&!n)return;try{return ho(ko,e,n?t:To&&ko[e]||t)}catch(np){}}for(i in Lo)!(r=so[i])||r[e]&&!n||ho(r,e,t)}},isView:function(e){if(!co(e))return!1;var t=Bo(e);return"DataView"===t||uo(Lo,t)||uo(xo,t)},isTypedArray:Xo,TypedArray:ko,TypedArrayPrototype:Eo},Go=r,Io=l,Mo=Ml,Yo=Do.NATIVE_ARRAY_BUFFER_VIEWS,wo=Go.ArrayBuffer,Ko=Go.Int8Array,_o=!Yo||!Io((function(){Ko(1)}))||!Io((function(){new Ko(-1)}))||!Mo((function(e){new Ko,new Ko(null),new Ko(1.5),new Ko(e)}),!0)||Io((function(){return 1!==new Ko(new wo(2),1,void 0).length})),Po=at,jo=function(e){var t=Po(e);if(t<0)throw RangeError("The argument can't be less than 0");return t},Ho=function(e,t){var n=jo(e);if(n%t)throw RangeError("Wrong offset");return n},Oo=y,zo=Ft,Ao=Wl,qo=Vl,$o=ml,ed=Do.aTypedArrayConstructor,td=ml,nd=h,id=y,rd=Ft,ad=wn,ld=[].push,Ud=function(e){var t=1==e,n=2==e,i=3==e,r=4==e,a=6==e,l=7==e,U=5==e||a;return function(F,o,d,Q){for(var s,c,u=id(F),B=nd(u),R=td(o,d,3),h=rd(B.length),V=0,p=Q||ad,m=t?p(F,h):n||l?p(F,0):void 0;h>V;V++)if((U||V in B)&&(c=R(s=B[V],V,u),e))if(t)m[V]=c;else if(c)switch(e){case 3:return!0;case 5:return s;case 6:return V;case 2:ld.call(m,s)}else switch(e){case 4:return!1;case 7:ld.call(m,s)}return a?-1:i||r?r:m}},Fd={forEach:Ud(0),map:Ud(1),filter:Ud(2),some:Ud(3),every:Ud(4),find:Ud(5),findIndex:Ud(6),filterOut:Ud(7)},od=S,dd=cr,Qd=function(e,t,n){var i,r;return dd&&"function"==typeof(i=t.constructor)&&i!==n&&od(r=i.prototype)&&r!==n.prototype&&dd(e,r),e},sd=zt,cd=r,ud=U,Bd=_o,Rd=Do,hd=ja,Vd=Yr,pd=s,md=te,Zd=Ft,Sd=_r,Jd=Ho,Wd=W,fd=b,yd=dl,kd=S,Ed=Ni,bd=cr,vd=nt.f,Nd=function(e){var t,n,i,r,a,l,U=Oo(e),F=arguments.length,o=F>1?arguments[1]:void 0,d=void 0!==o,Q=Ao(U);if(null!=Q&&!qo(Q))for(l=(a=Q.call(U)).next,U=[];!(r=l.call(a)).done;)U.push(r.value);for(d&&F>2&&(o=$o(o,arguments[2],2)),n=zo(U.length),i=new(ed(this))(n),t=0;n>t;t++)i[t]=d?o(U[t],t):U[t];return i},gd=Fd.forEach,Td=qa,Cd=K,Ld=a,xd=Qd,Xd=Ye.get,Dd=Ye.set,Gd=Cd.f,Id=Ld.f,Md=Math.round,Yd=cd.RangeError,wd=hd.ArrayBuffer,Kd=hd.DataView,_d=Rd.NATIVE_ARRAY_BUFFER_VIEWS,Pd=Rd.TYPED_ARRAY_TAG,jd=Rd.TypedArray,Hd=Rd.TypedArrayPrototype,Od=Rd.aTypedArrayConstructor,zd=Rd.isTypedArray,Ad="BYTES_PER_ELEMENT",qd="Wrong length",$d=function(e,t){for(var n=0,i=t.length,r=new(Od(e))(i);i>n;)r[n]=t[n++];return r},eQ=function(e,t){Gd(e,t,{get:function(){return Xd(this)[t]}})},tQ=function(e){var t;return e instanceof wd||"ArrayBuffer"==(t=yd(e))||"SharedArrayBuffer"==t},nQ=function(e,t){return zd(e)&&"symbol"!=typeof t&&t in e&&String(+t)==String(t)},iQ=function(e,t){return nQ(e,t=Wd(t,!0))?pd(2,e[t]):Id(e,t)},rQ=function(e,t,n){return!(nQ(e,t=Wd(t,!0))&&kd(n)&&fd(n,"value"))||fd(n,"get")||fd(n,"set")||n.configurable||fd(n,"writable")&&!n.writable||fd(n,"enumerable")&&!n.enumerable?Gd(e,t,n):(e[t]=n.value,e)};ud?(_d||(Ld.f=iQ,Cd.f=rQ,eQ(Hd,"buffer"),eQ(Hd,"byteOffset"),eQ(Hd,"byteLength"),eQ(Hd,"length")),sd({target:"Object",stat:!0,forced:!_d},{getOwnPropertyDescriptor:iQ,defineProperty:rQ}),Fo.exports=function(e,t,n){var i=e.match(/\d+$/)[0]/8,r=e+(n?"Clamped":"")+"Array",a="get"+e,l="set"+e,U=cd[r],F=U,o=F&&F.prototype,d={},Q=function(e,t){Gd(e,t,{get:function(){return e=t,(n=Xd(this)).view[a](e*i+n.byteOffset,!0);var e,n},set:function(e){return r=t,a=e,U=Xd(this),n&&(a=(a=Md(a))<0?0:a>255?255:255&a),void U.view[l](r*i+U.byteOffset,a,!0);var r,a,U},enumerable:!0})};_d?Bd&&(F=t((function(e,t,n,a){return Vd(e,F,r),xd(kd(t)?tQ(t)?void 0!==a?new U(t,Jd(n,i),a):void 0!==n?new U(t,Jd(n,i)):new U(t):zd(t)?$d(F,t):Nd.call(F,t):new U(Sd(t)),e,F)})),bd&&bd(F,jd),gd(vd(U),(function(e){e in F||md(F,e,U[e])})),F.prototype=o):(F=t((function(e,t,n,a){Vd(e,F,r);var l,U,o,d=0,s=0;if(kd(t)){if(!tQ(t))return zd(t)?$d(F,t):Nd.call(F,t);l=t,s=Jd(n,i);var c=t.byteLength;if(void 0===a){if(c%i)throw Yd(qd);if((U=c-s)<0)throw Yd(qd)}else if((U=Zd(a)*i)+s>c)throw Yd(qd);o=U/i}else o=Sd(t),l=new wd(U=o*i);for(Dd(e,{buffer:l,byteOffset:s,byteLength:U,length:o,view:new Kd(l)});d<o;)Q(e,d++)})),bd&&bd(F,jd),o=F.prototype=Ed(Hd)),o.constructor!==F&&md(o,"constructor",F),Pd&&md(o,Pd,r),d[r]=F,sd({global:!0,forced:F!=U,sham:!_d},d),Ad in F||md(F,Ad,i),Ad in o||md(o,Ad,i),Td(r)}):Fo.exports=function(){};var aQ=Fo.exports;aQ("Uint8",(function(e){return function(t,n,i){return e(this,t,n,i)}})),aQ("Uint16",(function(e){return function(t,n,i){return e(this,t,n,i)}}));var lQ=y,UQ=st,FQ=Ft,oQ=Math.min,dQ=[].copyWithin||function(e,t){var n=lQ(this),i=FQ(n.length),r=UQ(e,i),a=UQ(t,i),l=arguments.length>2?arguments[2]:void 0,U=oQ((void 0===l?i:UQ(l,i))-a,i-r),F=1;for(a<r&&r<a+U&&(F=-1,a+=U-1,r+=U-1);U-- >0;)a in n?n[r]=n[a]:delete n[r],r+=F,a+=F;return n},QQ=dQ,sQ=Do.aTypedArray;(0,Do.exportTypedArrayMethod)("copyWithin",(function(e,t){return QQ.call(sQ(this),e,t,arguments.length>2?arguments[2]:void 0)}));var cQ=Fd.every,uQ=Do.aTypedArray;(0,Do.exportTypedArrayMethod)("every",(function(e){return cQ(uQ(this),e,arguments.length>1?arguments[1]:void 0)}));var BQ=ea,RQ=Do.aTypedArray;(0,Do.exportTypedArrayMethod)("fill",(function(e){return BQ.apply(RQ(this),arguments)}));var hQ=Do.aTypedArrayConstructor,VQ=_l,pQ=Fd.filter,mQ=function(e,t){for(var n=VQ(e,e.constructor),i=0,r=t.length,a=new(hQ(n))(r);r>i;)a[i]=t[i++];return a},ZQ=Do.aTypedArray;(0,Do.exportTypedArrayMethod)("filter",(function(e){var t=pQ(ZQ(this),e,arguments.length>1?arguments[1]:void 0);return mQ(this,t)}));var SQ=Fd.find,JQ=Do.aTypedArray;(0,Do.exportTypedArrayMethod)("find",(function(e){return SQ(JQ(this),e,arguments.length>1?arguments[1]:void 0)}));var WQ=Fd.findIndex,fQ=Do.aTypedArray;(0,Do.exportTypedArrayMethod)("findIndex",(function(e){return WQ(fQ(this),e,arguments.length>1?arguments[1]:void 0)}));var yQ=Fd.forEach,kQ=Do.aTypedArray;(0,Do.exportTypedArrayMethod)("forEach",(function(e){yQ(kQ(this),e,arguments.length>1?arguments[1]:void 0)}));var EQ=ht.includes,bQ=Do.aTypedArray;(0,Do.exportTypedArrayMethod)("includes",(function(e){return EQ(bQ(this),e,arguments.length>1?arguments[1]:void 0)}));var vQ=ht.indexOf,NQ=Do.aTypedArray;(0,Do.exportTypedArrayMethod)("indexOf",(function(e){return vQ(NQ(this),e,arguments.length>1?arguments[1]:void 0)}));var gQ=r,TQ=Do,CQ=Dr,LQ=Gn("iterator"),xQ=gQ.Uint8Array,XQ=CQ.values,DQ=CQ.keys,GQ=CQ.entries,IQ=TQ.aTypedArray,MQ=TQ.exportTypedArrayMethod,YQ=xQ&&xQ.prototype[LQ],wQ=!!YQ&&("values"==YQ.name||null==YQ.name),KQ=function(){return XQ.call(IQ(this))};MQ("entries",(function(){return GQ.call(IQ(this))})),MQ("keys",(function(){return DQ.call(IQ(this))})),MQ("values",KQ,!wQ),MQ(LQ,KQ,!wQ);var _Q=Do.aTypedArray,PQ=[].join;(0,Do.exportTypedArrayMethod)("join",(function(e){return PQ.apply(_Q(this),arguments)}));var jQ=l,HQ=function(e,t){var n=[][e];return!!n&&jQ((function(){n.call(null,t||function(){throw 1},1)}))},OQ=Z,zQ=at,AQ=Ft,qQ=HQ,$Q=Math.min,es=[].lastIndexOf,ts=!!es&&1/[1].lastIndexOf(1,-0)<0,ns=qQ("lastIndexOf"),is=ts||!ns?function(e){if(ts)return es.apply(this,arguments)||0;var t=OQ(this),n=AQ(t.length),i=n-1;for(arguments.length>1&&(i=$Q(i,zQ(arguments[1]))),i<0&&(i=n+i);i>=0;i--)if(i in t&&t[i]===e)return i||0;return-1}:es,rs=is,as=Do.aTypedArray;(0,Do.exportTypedArrayMethod)("lastIndexOf",(function(e){return rs.apply(as(this),arguments)}));var ls=Fd.map,Us=_l,Fs=Do.aTypedArray,os=Do.aTypedArrayConstructor;(0,Do.exportTypedArrayMethod)("map",(function(e){return ls(Fs(this),e,arguments.length>1?arguments[1]:void 0,(function(e,t){return new(os(Us(e,e.constructor)))(t)}))}));var ds=ul,Qs=y,ss=h,cs=Ft,us=function(e){return function(t,n,i,r){ds(n);var a=Qs(t),l=ss(a),U=cs(a.length),F=e?U-1:0,o=e?-1:1;if(i<2)for(;;){if(F in l){r=l[F],F+=o;break}if(F+=o,e?F<0:U<=F)throw TypeError("Reduce of empty array with no initial value")}for(;e?F>=0:U>F;F+=o)F in l&&(r=n(r,l[F],F,a));return r}},Bs={left:us(!1),right:us(!0)},Rs=Bs.left,hs=Do.aTypedArray;(0,Do.exportTypedArrayMethod)("reduce",(function(e){return Rs(hs(this),e,arguments.length,arguments.length>1?arguments[1]:void 0)}));var Vs=Bs.right,ps=Do.aTypedArray;(0,Do.exportTypedArrayMethod)("reduceRight",(function(e){return Vs(ps(this),e,arguments.length,arguments.length>1?arguments[1]:void 0)}));var ms=Do.aTypedArray,Zs=Do.exportTypedArrayMethod,Ss=Math.floor;Zs("reverse",(function(){for(var e,t=this,n=ms(t).length,i=Ss(n/2),r=0;r<i;)e=t[r],t[r++]=t[--n],t[n]=e;return t}));var Js=Ft,Ws=Ho,fs=y,ys=Do.aTypedArray;(0,Do.exportTypedArrayMethod)("set",(function(e){ys(this);var t=Ws(arguments.length>1?arguments[1]:void 0,1),n=this.length,i=fs(e),r=Js(i.length),a=0;if(r+t>n)throw RangeError("Wrong length");for(;a<r;)this[t+a]=i[a++]}),l((function(){new Int8Array(1).set({})})));var ks=_l,Es=Do.aTypedArray,bs=Do.aTypedArrayConstructor,vs=[].slice;(0,Do.exportTypedArrayMethod)("slice",(function(e,t){for(var n=vs.call(Es(this),e,t),i=ks(this,this.constructor),r=0,a=n.length,l=new(bs(i))(a);a>r;)l[r]=n[r++];return l}),l((function(){new Int8Array(1).slice()})));var Ns=Fd.some,gs=Do.aTypedArray;(0,Do.exportTypedArrayMethod)("some",(function(e){return Ns(gs(this),e,arguments.length>1?arguments[1]:void 0)}));var Ts=Do.aTypedArray,Cs=[].sort;(0,Do.exportTypedArrayMethod)("sort",(function(e){return Cs.call(Ts(this),e)}));var Ls=Ft,xs=st,Xs=_l,Ds=Do.aTypedArray;(0,Do.exportTypedArrayMethod)("subarray",(function(e,t){var n=Ds(this),i=n.length,r=xs(e,i);return new(Xs(n,n.constructor))(n.buffer,n.byteOffset+r*n.BYTES_PER_ELEMENT,Ls((void 0===t?i:xs(t,i))-r))}));var Gs=Do,Is=l,Ms=r.Int8Array,Ys=Gs.aTypedArray,ws=Gs.exportTypedArrayMethod,Ks=[].toLocaleString,_s=[].slice,Ps=!!Ms&&Is((function(){Ks.call(new Ms(1))}));ws("toLocaleString",(function(){return Ks.apply(Ps?_s.call(Ys(this)):Ys(this),arguments)}),Is((function(){return[1,2].toLocaleString()!=new Ms([1,2]).toLocaleString()}))||!Is((function(){Ms.prototype.toLocaleString.call([1,2])})));var js=Do.exportTypedArrayMethod,Hs=l,Os=r.Uint8Array,zs=Os&&Os.prototype||{},As=[].toString,qs=[].join;Hs((function(){As.call({})}))&&(As=function(){return qs.call(this)});var $s=zs.toString!=As;js("toString",As,$s);var ec={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0},tc=Fd.forEach,nc=HQ("forEach")?[].forEach:function(e){return tc(this,e,arguments.length>1?arguments[1]:void 0)},ic=r,rc=ec,ac=nc,lc=te;for(var Uc in rc){var Fc=ic[Uc],oc=Fc&&Fc.prototype;if(oc&&oc.forEach!==ac)try{lc(oc,"forEach",ac)}catch(np){oc.forEach=ac}}var dc=r,Qc=ec,sc=Dr,cc=te,uc=Gn,Bc=uc("iterator"),Rc=uc("toStringTag"),hc=sc.values;for(var Vc in Qc){var pc=dc[Vc],mc=pc&&pc.prototype;if(mc){if(mc[Bc]!==hc)try{cc(mc,Bc,hc)}catch(np){mc[Bc]=hc}if(mc[Rc]||cc(mc,Rc,Vc),Qc[Vc])for(var Zc in sc)if(mc[Zc]!==sc[Zc])try{cc(mc,Zc,sc[Zc])}catch(np){mc[Zc]=sc[Zc]}}}var Sc={exports:{}};!function(e){var t=Object.prototype.hasOwnProperty,n="~";function i(){}function r(e,t,n){this.fn=e,this.context=t,this.once=n||!1}function a(e,t,i,a,l){if("function"!=typeof i)throw new TypeError("The listener must be a function");var U=new r(i,a||e,l),F=n?n+t:t;return e._events[F]?e._events[F].fn?e._events[F]=[e._events[F],U]:e._events[F].push(U):(e._events[F]=U,e._eventsCount++),e}function l(e,t){0==--e._eventsCount?e._events=new i:delete e._events[t]}function U(){this._events=new i,this._eventsCount=0}Object.create&&(i.prototype=Object.create(null),(new i).__proto__||(n=!1)),U.prototype.eventNames=function(){var e,i,r=[];if(0===this._eventsCount)return r;for(i in e=this._events)t.call(e,i)&&r.push(n?i.slice(1):i);return Object.getOwnPropertySymbols?r.concat(Object.getOwnPropertySymbols(e)):r},U.prototype.listeners=function(e){var t=n?n+e:e,i=this._events[t];if(!i)return[];if(i.fn)return[i.fn];for(var r=0,a=i.length,l=new Array(a);r<a;r++)l[r]=i[r].fn;return l},U.prototype.listenerCount=function(e){var t=n?n+e:e,i=this._events[t];return i?i.fn?1:i.length:0},U.prototype.emit=function(e,t,i,r,a,l){var U=n?n+e:e;if(!this._events[U])return!1;var F,o,d=this._events[U],Q=arguments.length;if(d.fn){switch(d.once&&this.removeListener(e,d.fn,void 0,!0),Q){case 1:return d.fn.call(d.context),!0;case 2:return d.fn.call(d.context,t),!0;case 3:return d.fn.call(d.context,t,i),!0;case 4:return d.fn.call(d.context,t,i,r),!0;case 5:return d.fn.call(d.context,t,i,r,a),!0;case 6:return d.fn.call(d.context,t,i,r,a,l),!0}for(o=1,F=new Array(Q-1);o<Q;o++)F[o-1]=arguments[o];d.fn.apply(d.context,F)}else{var s,c=d.length;for(o=0;o<c;o++)switch(d[o].once&&this.removeListener(e,d[o].fn,void 0,!0),Q){case 1:d[o].fn.call(d[o].context);break;case 2:d[o].fn.call(d[o].context,t);break;case 3:d[o].fn.call(d[o].context,t,i);break;case 4:d[o].fn.call(d[o].context,t,i,r);break;default:if(!F)for(s=1,F=new Array(Q-1);s<Q;s++)F[s-1]=arguments[s];d[o].fn.apply(d[o].context,F)}}return!0},U.prototype.on=function(e,t,n){return a(this,e,t,n,!1)},U.prototype.once=function(e,t,n){return a(this,e,t,n,!0)},U.prototype.removeListener=function(e,t,i,r){var a=n?n+e:e;if(!this._events[a])return this;if(!t)return l(this,a),this;var U=this._events[a];if(U.fn)U.fn!==t||r&&!U.once||i&&U.context!==i||l(this,a);else{for(var F=0,o=[],d=U.length;F<d;F++)(U[F].fn!==t||r&&!U[F].once||i&&U[F].context!==i)&&o.push(U[F]);o.length?this._events[a]=1===o.length?o[0]:o:l(this,a)}return this},U.prototype.removeAllListeners=function(e){var t;return e?(t=n?n+e:e,this._events[t]&&l(this,t)):(this._events=new i,this._eventsCount=0),this},U.prototype.off=U.prototype.removeListener,U.prototype.addListener=U.prototype.on,U.prefixed=n,U.EventEmitter=U,e.exports=U}(Sc);var Jc=n(Sc.exports),Wc=zt,fc=Z,yc=[].join,kc=h!=Object,Ec=HQ("join",",");Wc({target:"Array",proto:!0,forced:kc||!Ec},{join:function(e){return yc.call(fc(this),void 0===e?",":e)}});var bc=Fd.map;zt({target:"Array",proto:!0,forced:!jn("map")},{map:function(e){return bc(this,e,arguments.length>1?arguments[1]:void 0)}});var vc=zt,Nc=S,gc=Rn,Tc=st,Cc=Ft,Lc=Z,xc=mn,Xc=Gn,Dc=jn("slice"),Gc=Xc("species"),Ic=[].slice,Mc=Math.max;vc({target:"Array",proto:!0,forced:!Dc},{slice:function(e,t){var n,i,r,a=Lc(this),l=Cc(a.length),U=Tc(e,l),F=Tc(void 0===t?l:t,l);if(gc(a)&&("function"!=typeof(n=a.constructor)||n!==Array&&!gc(n.prototype)?Nc(n)&&null===(n=n[Gc])&&(n=void 0):n=void 0,n===Array||void 0===n))return Ic.call(a,U,F);for(i=new(void 0===n?Array:n)(Mc(F-U,0)),r=0;U<F;U++,r++)U in a&&xc(i,r,a[U]);return i.length=r,i}});var Yc=V,wc="[\t\n\v\f\r                 \u2028\u2029\ufeff]",Kc=RegExp("^"+wc+wc+"*"),_c=RegExp(wc+wc+"*$"),Pc=function(e){return function(t){var n=String(Yc(t));return 1&e&&(n=n.replace(Kc,"")),2&e&&(n=n.replace(_c,"")),n}},jc={start:Pc(1),end:Pc(2),trim:Pc(3)},Hc=U,Oc=r,zc=Yt,Ac=Ae,qc=b,$c=u,eu=Qd,tu=W,nu=l,iu=Ni,ru=nt.f,au=a.f,lu=K.f,Uu=jc.trim,Fu="Number",ou=Oc[Fu],du=ou.prototype,Qu=$c(iu(du))==Fu,su=function(e){var t,n,i,r,a,l,U,F,o=tu(e,!1);if("string"==typeof o&&o.length>2)if(43===(t=(o=Uu(o)).charCodeAt(0))||45===t){if(88===(n=o.charCodeAt(2))||120===n)return NaN}else if(48===t){switch(o.charCodeAt(1)){case 66:case 98:i=2,r=49;break;case 79:case 111:i=8,r=55;break;default:return+o}for(l=(a=o.slice(2)).length,U=0;U<l;U++)if((F=a.charCodeAt(U))<48||F>r)return NaN;return parseInt(a,i)}return+o};if(zc(Fu,!ou(" 0o1")||!ou("0b1")||ou("+0x1"))){for(var cu,uu=function(e){var t=arguments.length<1?0:e,n=this;return n instanceof uu&&(Qu?nu((function(){du.valueOf.call(n)})):$c(n)!=Fu)?eu(new ou(su(t)),n,uu):su(t)},Bu=Hc?ru(ou):"MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger,fromString,range".split(","),Ru=0;Bu.length>Ru;Ru++)qc(ou,cu=Bu[Ru])&&!qc(uu,cu)&&lu(uu,cu,au(ou,cu));uu.prototype=du,du.constructor=uu,Ac(Oc,Fu,uu)}var hu={},Vu=l;function pu(e,t){return RegExp(e,t)}hu.UNSUPPORTED_Y=Vu((function(){var e=pu("a","y");return e.lastIndex=2,null!=e.exec("abcd")})),hu.BROKEN_CARET=Vu((function(){var e=pu("^r","gy");return e.lastIndex=2,null!=e.exec("str")}));var mu,Zu,Su=AF,Ju=hu,Wu=me,fu=RegExp.prototype.exec,yu=Wu("native-string-replace",String.prototype.replace),ku=fu,Eu=(mu=/a/,Zu=/b*/g,fu.call(mu,"a"),fu.call(Zu,"a"),0!==mu.lastIndex||0!==Zu.lastIndex),bu=Ju.UNSUPPORTED_Y||Ju.BROKEN_CARET,vu=void 0!==/()??/.exec("")[1];(Eu||vu||bu)&&(ku=function(e){var t,n,i,r,a=this,l=bu&&a.sticky,U=Su.call(a),F=a.source,o=0,d=e;return l&&(-1===(U=U.replace("y","")).indexOf("g")&&(U+="g"),d=String(e).slice(a.lastIndex),a.lastIndex>0&&(!a.multiline||a.multiline&&"\n"!==e[a.lastIndex-1])&&(F="(?: "+F+")",d=" "+d,o++),n=new RegExp("^(?:"+F+")",U)),vu&&(n=new RegExp("^"+F+"$(?!\\s)",U)),Eu&&(t=a.lastIndex),i=fu.call(l?n:a,d),l?i?(i.input=i.input.slice(o),i[0]=i[0].slice(o),i.index=a.lastIndex,a.lastIndex+=i[0].length):a.lastIndex=0:Eu&&i&&(a.lastIndex=a.global?i.index+i[0].length:t),vu&&i&&i.length>1&&yu.call(i[0],n,(function(){for(r=1;r<arguments.length-2;r++)void 0===arguments[r]&&(i[r]=void 0)})),i});var Nu=ku;zt({target:"RegExp",proto:!0,forced:/./.exec!==Nu},{exec:Nu});var gu=Ae,Tu=Nu,Cu=l,Lu=Gn,xu=te,Xu=Lu("species"),Du=RegExp.prototype,Gu=!Cu((function(){var e=/./;return e.exec=function(){var e=[];return e.groups={a:"7"},e},"7"!=="".replace(e,"$<a>")})),Iu="$0"==="a".replace(/./,"$0"),Mu=Lu("replace"),Yu=!!/./[Mu]&&""===/./[Mu]("a","$0"),wu=!Cu((function(){var e=/(?:)/,t=e.exec;e.exec=function(){return t.apply(this,arguments)};var n="ab".split(e);return 2!==n.length||"a"!==n[0]||"b"!==n[1]})),Ku=function(e,t,n,i){var r=Lu(e),a=!Cu((function(){var t={};return t[r]=function(){return 7},7!=""[e](t)})),l=a&&!Cu((function(){var t=!1,n=/a/;return"split"===e&&((n={}).constructor={},n.constructor[Xu]=function(){return n},n.flags="",n[r]=/./[r]),n.exec=function(){return t=!0,null},n[r](""),!t}));if(!a||!l||"replace"===e&&(!Gu||!Iu||Yu)||"split"===e&&!wu){var U=/./[r],F=n(r,""[e],(function(e,t,n,i,r){var l=t.exec;return l===Tu||l===Du.exec?a&&!r?{done:!0,value:U.call(t,n,i)}:{done:!0,value:e.call(n,t,i)}:{done:!1}}),{REPLACE_KEEPS_$0:Iu,REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE:Yu}),o=F[0],d=F[1];gu(String.prototype,e,o),gu(Du,r,2==t?function(e,t){return d.call(e,this,t)}:function(e){return d.call(e,this)})}i&&xu(Du[r],"sham",!0)},_u=at,Pu=V,ju=function(e){return function(t,n){var i,r,a=String(Pu(t)),l=_u(n),U=a.length;return l<0||l>=U?e?"":void 0:(i=a.charCodeAt(l))<55296||i>56319||l+1===U||(r=a.charCodeAt(l+1))<56320||r>57343?e?a.charAt(l):i:e?a.slice(l,l+2):r-56320+(i-55296<<10)+65536}},Hu={codeAt:ju(!1),charAt:ju(!0)},Ou=Hu.charAt,zu=function(e,t,n){return t+(n?Ou(e,t).length:1)},Au=u,qu=Nu,$u=function(e,t){var n=e.exec;if("function"==typeof n){var i=n.call(e,t);if("object"!=typeof i)throw TypeError("RegExp exec method returned something other than an Object or null");return i}if("RegExp"!==Au(e))throw TypeError("RegExp#exec called on incompatible receiver");return qu.call(e,t)},eB=P,tB=Ft,nB=V,iB=zu,rB=$u;Ku("match",1,(function(e,t,n){return[function(t){var n=nB(this),i=null==t?void 0:t[e];return void 0!==i?i.call(t,n):new RegExp(t)[e](String(n))},function(e){var i=n(t,e,this);if(i.done)return i.value;var r=eB(e),a=String(this);if(!r.global)return rB(r,a);var l=r.unicode;r.lastIndex=0;for(var U,F=[],o=0;null!==(U=rB(r,a));){var d=String(U[0]);F[o]=d,""===d&&(r.lastIndex=iB(a,tB(r.lastIndex),l)),o++}return 0===o?null:F}]}));var aB=y,lB=Math.floor,UB="".replace,FB=/\$([$&'`]|\d{1,2}|<[^>]*>)/g,oB=/\$([$&'`]|\d{1,2})/g,dB=Ku,QB=P,sB=Ft,cB=at,uB=V,BB=zu,RB=function(e,t,n,i,r,a){var l=n+e.length,U=i.length,F=oB;return void 0!==r&&(r=aB(r),F=FB),UB.call(a,F,(function(a,F){var o;switch(F.charAt(0)){case"$":return"$";case"&":return e;case"`":return t.slice(0,n);case"'":return t.slice(l);case"<":o=r[F.slice(1,-1)];break;default:var d=+F;if(0===d)return a;if(d>U){var Q=lB(d/10);return 0===Q?a:Q<=U?void 0===i[Q-1]?F.charAt(1):i[Q-1]+F.charAt(1):a}o=i[d-1]}return void 0===o?"":o}))},hB=$u,VB=Math.max,pB=Math.min;dB("replace",2,(function(e,t,n,i){var r=i.REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE,a=i.REPLACE_KEEPS_$0,l=r?"$":"$0";return[function(n,i){var r=uB(this),a=null==n?void 0:n[e];return void 0!==a?a.call(n,r,i):t.call(String(r),n,i)},function(e,i){if(!r&&a||"string"==typeof i&&-1===i.indexOf(l)){var U=n(t,e,this,i);if(U.done)return U.value}var F=QB(e),o=String(this),d="function"==typeof i;d||(i=String(i));var Q=F.global;if(Q){var s=F.unicode;F.lastIndex=0}for(var c=[];;){var u=hB(F,o);if(null===u)break;if(c.push(u),!Q)break;""===String(u[0])&&(F.lastIndex=BB(o,sB(F.lastIndex),s))}for(var B,R="",h=0,V=0;V<c.length;V++){u=c[V];for(var p=String(u[0]),m=VB(pB(cB(u.index),o.length),0),Z=[],S=1;S<u.length;S++)Z.push(void 0===(B=u[S])?B:String(B));var J=u.groups;if(d){var W=[p].concat(Z,m,o);void 0!==J&&W.push(J);var f=String(i.apply(void 0,W))}else f=RB(p,o,m,Z,J,i);m>=h&&(R+=o.slice(h,m)+f,h=m+p.length)}return R+o.slice(h)}]}));var mB=Do.aTypedArrayConstructor;(0,Do.exportTypedArrayStaticMethod)("of",(function(){for(var e=0,t=arguments.length,n=new(mB(this))(t);t>e;)n[e]=arguments[e++];return n}),_o);var ZB=function(e){var t=0;for(t=0;0!==e;t++)e&=e-1;return t};function SB(e,t){return e^t}function JB(e,t,n){var i=e+ZB(t)+n;return String.fromCharCode(255&i)}function WB(e,t,n){var i=e-ZB(t)-n;return String.fromCharCode(255&i)}function fB(e){for(var t,n=e.length,i=0;i<n&&i!==n-1;i+=2)t=e[i],e[i]=e[i+1],e[i+1]=t;return e}function yB(e,t){var n=85,i=250;fB(e);for(var r=0;r<e.length;r++){var a=e[r].charCodeAt(0),l=0===t?JB:WB;r%2==1?n=a=SB(n,l(a+i,r,21).charCodeAt(0)):i=a=SB(i,l(a+n,r,21).charCodeAt(0)),e[r]=String.fromCharCode(a)}return fB(e),e}function kB(e,t){var n,i=function(e,t){var n,i=(e[0].charCodeAt(0)^e[1].charCodeAt(0)^e[2].charCodeAt(0))-"0".charCodeAt(0),r=t-i-1,a=new Array(i);for(n=i;n>0;n--)a[i-n]=String.fromCharCode(e[t-i-2].charCodeAt(0)^e[t-i-1].charCodeAt(0)^e[t-n].charCodeAt(0));return{convertKey:e.substring(1,r+1).split(""),convertLen:r,method:a.join(""),methodLen:i}}(e,t=t||e.length),r=i.convertKey,a=i.convertLen,l=i.method,U="11"===l||"appdevice"===l||"app_v2"===l?0:1;switch(l){case"11":case"22":case"appdevice":case"webdevice":r=function(e,t,n){for(var i,r=85,a=250,l=0;l<t;l++){var U=e[l].charCodeAt(0);l%2==1?(i=r^U,r=U):(i=a^U,a=U),e[l]=0===n?WB(i,l,21):JB(i,l,21)}return e}(r,a,U);break;case"app_v2":case"web_v2":r=function(e,t,n){t=t||e.length;var i=85,r=250;fB(e);for(var a=0;a<t;a++){var l=e[a].charCodeAt(0),U=void 0,F=void 0;a%2==1?(F=SB(i,l),i=l,U=r):(F=SB(r,l),r=l,U=i);var o=(0===n?WB:JB)(F,a,21).charCodeAt(0)-U;o<0&&(o+=256),e[a]=String.fromCharCode(o)}return fB(e),e}(r,a,U)}var F=a-((n=r[0])>="0"&&n<="9"?n.charCodeAt(0)-"0".charCodeAt(0):n>="a"&&n<="z"?n.charCodeAt(0)-"a".charCodeAt(0)+10:255)-1,o=new Array(F+1);o[F]="";var d=0;for(d=0;d<F;d++)o[d]=r[d+1];return o.join("")}var EB=nn((function e(){var t,n;en(this,e);var i=new Promise((function(e,i){t=e,n=i}));return i.resolve=function(e){t(e),i.state="fulfilled"},i.reject=function(e){n(e),i.state="rejected",i.isBreak="DESTROYED"===e},i.state="pending",i}),[{key:"resolve",value:function(e){}},{key:"reject",value:function(e){}}]);function bB(e){var t=e||{},n=t.url,i=t.method,r=void 0===i?"GET":i,a=t.type,l=void 0===a?"arraybuffer":a,U=t.data,F=void 0===U?{}:U;return new Promise((function(e,t){var i=new window.XMLHttpRequest,a=r.toUpperCase(),U=[];if(Object.keys(F).map((function(e){U.push("k=".concat(F[e]))})),"GET"===a){var o="";o=n.indexOf("?")<0?"".concat(n,"?").concat(U.join("&")):(null==U?void 0:U.length)>0?"".concat(n,"&").concat(U.join("&")):n,i.open(a,o),l&&(i.responseType=l),i.send()}else{if("POST"!==a)throw new Error("xhr ".concat(a," is not supported"));i.open(a,n,!0),l&&(i.responseType=l),i.setRequestHeader("Content-Type","application/json"),i.send(JSON.stringify(F))}i.onload=function(){200===i.status||206===i.status?e(i):t(i)},i.onerror=function(){t(i)}}))}var vB,NB,gB,TB,CB,LB,xB,XB,DB=U,GB=K.f,IB=Function.prototype,MB=IB.toString,YB=/^\s*function ([^ (]*)/,wB="name";function KB(e){return _B.apply(this,arguments)}function _B(){return _B=qt(Fn().mark((function e(t){var n,i,r=arguments;return Fn().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=!(r.length>1&&void 0!==r[1])||r[1],i=r.length>2&&void 0!==r[2]?r[2]:["encrypt","decrypt"],e.abrupt("return",new Promise((function(e,r){var a;"undefined"!=typeof crypto&&null!==(a=crypto)&&void 0!==a&&a.subtle?crypto.subtle.generateKey(t,n,i).then((function(t){e(t)})).catch((function(e){r(e)})):r(new Error(NB.WebCryptoNotSupport.msg))})));case 3:case"end":return e.stop()}}),e)}))),_B.apply(this,arguments)}function PB(){if("object"!==("undefined"==typeof crypto?"undefined":Qn(crypto))||"[object crypto]"!==Object.prototype.toString.call(crypto).toLowerCase()||void 0===crypto.subtle)throw new gB(NB.WebCryptoNotSupport.code,NB.WebCryptoNotSupport.msg);return!0}function jB(e){for(var t=window.atob(e),n=new Uint8Array(t.length),i=0;i<t.length;i++)n[i]=t.charCodeAt(i);return n.buffer}function HB(e){return OB.apply(this,arguments)}function OB(){return(OB=qt(Fn().mark((function e(t){var n,i,r,a,l;return Fn().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.data,i=t.privateKey,r=jB(n),PB(),e.prev=3,e.next=6,crypto.subtle.decrypt({name:"RSA-OAEP"},i,r);case 6:a=e.sent,e.next=12;break;case 9:throw e.prev=9,e.t0=e.catch(3),new gB(NB.PrivateKeyDecryptFail.code,"".concat(NB.PrivateKeyDecryptFail.msg,": ").concat((null===e.t0||void 0===e.t0?void 0:e.t0.message)||(null===e.t0||void 0===e.t0?void 0:e.t0.name)));case 12:return l=(new TextDecoder).decode(a),e.abrupt("return",l);case 14:case"end":return e.stop()}}),e,null,[[3,9]])})))).apply(this,arguments)}function zB(e){for(var t="",n=0;n<e.length;n+=16e3){var i=e.subarray(n,n+16e3);t+=String.fromCharCode.apply(null,i)}return t}DB&&!(wB in IB)&&GB(IB,wB,{configurable:!0,get:function(){try{return MB.call(this).match(YB)[1]}catch(np){return""}}}),function(e,t,n){function i(e,t){var n=parseInt(e.slice(t,t+2),16);return n>>>7==0?[1,n]:n>>>6==2?(n=(63&n)<<8,[2,n+=parseInt(e.slice(t+2,t+4),16)]):(n=(63&n)<<16,[3,n+=parseInt(e.slice(t+2,t+6),16)])}var r,a=0,l=[],U=[];for(r=0;r<4;++r)a+=(3&parseInt(e.slice(8+2*r,10+2*r),16))<<2*r;var F=parseInt(e.slice(16,24),16),o=2*parseInt(e.slice(32,40),16);for(r=40;r<o+40;r+=2)l.push(parseInt(e.slice(r,r+2),16));var d=o+40,Q=parseInt(e.slice(d,d+4),16);for(d+=4,r=0;r<Q;++r){var s=i(e,d);d+=2*s[0];for(var c="",u=0;u<s[1];++u){var B=i(e,d);c+=String.fromCharCode(a^B[1]),d+=2*B[0]}U.push(c)}t.p=null,function e(t,n,i,r,a){var F,o,d,Q,s,c=-1,u=[],B=[0,null],R=null,h=[n];for(o=Math.min(n.length,i),d=0;d<o;++d)h.push(n[d]);h.p=r;for(var V=[];;)try{switch(l[t++]){case 70:u[++c]=!1;break;case 39:u[++c]=null;break;case 36:F=l[t++],u[++c]=F<<24>>24;break;case 22:F=(l[t]<<8)+l[t+1],t+=2,u[++c]=F<<16>>16;break;case 50:F=((F=((F=l[t++])<<8)+l[t++])<<8)+l[t++],u[++c]=(F<<8)+l[t++];break;case 65:F=(l[t]<<8)+l[t+1],t+=2,u[++c]=U[F];break;case 33:u[++c]=void 0;break;case 35:u[++c]=a;break;case 52:F=(l[t]<<8)+l[t+1],t+=2,c=c-F+1,o=u.slice(c,c+F),u[c]=o;break;case 72:u[++c]={};break;case 27:F=(l[t]<<8)+l[t+1],t+=2,o=U[F],d=u[c--],u[c][o]=d;break;case 57:for(o=l[t++],d=l[t++],Q=h;o>0;--o)Q=Q.p;u[++c]=Q[d];break;case 28:F=(l[t]<<8)+l[t+1],t+=2,o=U[F],u[c]=u[c][o];break;case 73:o=u[c--],u[c]=u[c][o];break;case 17:for(o=l[t++],d=l[t++],Q=h;o>0;--o)Q=Q.p;Q[d]=u[c--];break;case 21:F=(l[t]<<8)+l[t+1],t+=2,o=U[F],d=u[c--],Q=u[c--],d[o]=Q;break;case 15:o=u[c--],d=u[c--],Q=u[c--],d[o]=Q;break;case 64:for(o=l[t++],d=l[t++],Q=h,Q=h;o>0;--o)Q=Q.p;u[++c]=Q,u[++c]=d;break;case 13:o=u[c--],u[c]-=o;break;case 45:o=u[c--],Q=(d=u[c--])[o]++,u[++c]=Q;break;case 16:o=u[c--],u[c]=u[c]===o;break;case 62:o=u[c--],u[c]=u[c]<o;break;case 51:o=u[c--],u[c]=u[c]>o;break;case 59:u[c]=!u[c];break;case 53:F=(F=(l[t]<<8)+l[t+1])<<16>>16,t+=2,u[c]?--c:t+=F;break;case 74:F=(F=(l[t]<<8)+l[t+1])<<16>>16,t+=2,u[c]?t+=F:--c;break;case 66:o=u[c--],(d=u[c--])[o]=u[c];break;case 61:o=u[c--],u[c]=u[c]instanceof o;break;case 34:u[c]=void 0;break;case 14:u[c]=typeof u[c];break;case 30:F=l[t++],o=u[c--],(d=function e(){var t=e._v;return(0,e._u)(t[0],arguments,t[1],t[2],this)})._v=[o,F,h],d._u=e,u[++c]=d;break;case 46:F=l[t++],o=u[c--],(Q=[d=function e(){var t=e._v;return(0,e._u)(t[0],arguments,t[1],t[2],this)}]).p=h,d._v=[o,F,Q],d._u=e,u[++c]=d;break;case 3:F=(F=(l[t]<<8)+l[t+1])<<16>>16,t+=2,(o=V[V.length-1])[1]=t+F;break;case 49:F=(F=(l[t]<<8)+l[t+1])<<16>>16,t+=2,(o=V[V.length-1])&&!o[1]?(o[0]=3,o.push(t)):V.push([1,0,t]),t+=F;break;case 48:throw o=u[c--];case 56:if(d=(o=V.pop())[0],Q=B[0],1===d)t=o[1];else if(0===d)if(0===Q)t=o[1];else{if(1!==Q)throw B[1];if(!R)return B[1];t=R[1],a=R[2],h=R[3],V=R[4],u[++c]=B[1],B=[0,null],R=R[0]}else t=o[2],o[0]=0,V.push(o);break;case 7:for(o=u[c--],d=null;Q=V.pop();)if(2===Q[0]||3===Q[0]){d=Q;break}if(d)B=[1,o],t=d[2],d[0]=0,V.push(d);else{if(!R)return o;t=R[1],a=R[2],h=R[3],V=R[4],u[++c]=o,B=[0,null],R=R[0]}break;case 12:c-=F=l[t++],d=u.slice(c+1,c+F+1),o=u[c--],Q=u[c--],o._u===e?(o=o._v,R=[R,t,a,h,V],t=o[0],null==Q&&(Q=function(){return this}()),a=Q,(h=[d].concat(d)).length=Math.min(o[1],F)+1,h.p=o[2],V=[]):(s=o.apply(Q,d),u[++c]=s);break;case 43:for(F=l[t++],Q=[void 0],s=F;s>0;--s)Q[s]=u[c--];d=u[c--],s=new(o=Function.bind.apply(d,Q)),u[++c]=s;break;case 31:t+=2+(F=(F=(l[t]<<8)+l[t+1])<<16>>16);break;case 25:F=(F=(l[t]<<8)+l[t+1])<<16>>16,t+=2,(o=u[c--])||(t+=F);break;case 41:F=(F=(l[t]<<8)+l[t+1])<<16>>16,t+=2,o=u[c--],u[c]===o&&(--c,t+=F);break;case 69:--c;break;case 44:o=u[c],u[++c]=o;break;default:throw new Error("ioe")}}catch(p){for(B=[0,null];(F=V.pop())&&!F[0];);if(!F){e:for(;R;){for(o=R[4];F=o.pop();)if(F[0])break e;R=R[0]}if(!R)throw p;t=R[1],a=R[2],h=R[3],V=R[4],R=R[0]}1===(o=F[0])?(t=F[2],F[0]=0,V.push(F),u[++c]=p):2===o?(t=F[2],F[0]=0,V.push(F),B=[3,p]):(t=F[3],F[0]=2,V.push(F),u[++c]=p)}}(F,[],0,t,n)}("504B0101603cafe00000055ce3ae3f60000005f64100003900014100010f4100023900014100030f4100043900014100050f3900010732000000431e021100022739020c3900023900010c02452739020f3900020c01072739030e233901020c02452739030d233901023900023400010c03110003390001390003150006390003073902112b00110004273902124841000c1b000d41000e1b000f3900031b0010484100111b00124100131b0014483900011b00153400002c1c00163900020c011b00173400011b00181b00190c012c1c001a32000000da1e010c012c1c0024320000015e1e000c01453900040739000127104a0007390001240022101900062400221f00063900011c001b1100023900020e41001c1019000f3903012c1c001d3900020c011100023900021900213900021c001e39010149390102491100033901042c1c001f3900030c01451f00202739031b4100203901014100213901024100220c05453901042c1c00230c004521072739031b4100203901014100213901024100240c05453901042c1c00230c004521073901022c1c0025233900000c02072739020a273902080c002c1c002632000001b82e060c010c011101023901022c1c0025233900000c0207273904080c002c1c002732000001cf2e013901000c020724011901683900011c00283900014100294224002900322405290080240829008f2409290093240c2900b9240d2900bd240f2900d22416290116241729012141002a29011b451f01213902014a000341002b11020139020219000b24093900011500281f01043902013500033902033500033902043b19000b24083900011500281f00e62405390001150028273906173902013902033902040c03073900011c002c11020224093900011500281f00ba39060041002d2b0130390205410004103b19000b240d3900011500281f009b240c390001150028273906193902023902060c02073900011c002c11020239020219000b240f3900011500281f006c39060041002e2b013027390610273906023902020c010c011102073902033b19000b24163900011500281f003f48481b002f1102083902073902081c002f3902030f3900012c1c00304100313902080c02073900012c1c00304100313902070c02073900012c1c00320c00071ffe9321073901032c1c0025233900000c02072739020a273902080c002c1c002632000003762e020c010c011101033901032c1c0025233900000c0207273904080c002c1c0027320000038d2e013901000c0207240119009a3900011c0028390001410029422400290019240229003e2404290058240629006c41002a290066451f006c3902013b4a00043902023b3b19000b24023900011500281f00523900012c1c00304100313902010c0207240439000115002827390613483902011b00193902021c00331b00330c01073900011c002c1102013900012c1c00304100313902010c02073900012c1c00320c00071fff612107310004110002380300743902030e410034101900064100341f0009273902093902030c014100351035000b3902031c00360e410037101900443902031c00383902042c1c0039240024612473246d24012400240024000c082b011100013900013902031c00383d1900133902031c003a3900012b013902031c003a3d0738460739010127101900223100041100063803001839020535000e3902052c1c003b41003c0c013b3b110101383900001c003d11000339020639000324013319000939000324010d1f000224002b0111000424011100053900053900033e1900193900003900054939000439000524010d0f4000052d451fffdd3901013500063902071c003e350025390207400002421c003e2c1c002539000241003f3900013400022c1c00163900040c010c02452107320000006e1e0311011732000001801e06110118320000018e1e00110002320000033e1e02110119320000034c1e00110003320000042e1e0011011a32000004ae1e0111011b271100012732000000001e013901144a0001480c011101144848161c211b00064100071b00081b000948161c221b000641000a1b00081b000b1101152732000000221e012739010b3901000c010c0111011621070040104344515e545142546f555e5342494044106364717e747162746f757e73626960640f404259465144556f555e53424940440f606279667164756f757e736269606417404259465144556f555e53424940446f4540574251545517606279667164756f757e73626960646f6560776271747504535f5455256755521053424940445f57425140584910716079105943105e5f4410434540405f42445554035d43571367555273424940445f7e5f44634540405f42441d74555342494044595f5e105249106263711d7f717560105651595c555415604259465144557b5549745553424940447651595c045a435f5e044449405504607f6364065d5544585f540345425c0202020854425d6f4449405503021e000746554243595f5e0346595406535f5e535144045b5954430f5c5953555e43556f425541455543440454514451044458555e08425543405f5e435506434442595e570540514243550d405c51496f5c5953555e435543074255435f5c46551b5755446355534255447b554972497b595410555e541c104659541c051c105b59540d425543405f5e4355105e455c5c0642555a555344055351445358055140405c49045d51425b0447425140045e554844044042554603555e54000443555e443543585f455c541040425f46595455104355534255447b5549105f42104659541c105b5549795410515e54105c5953555e435565425c185755447b554966515c45550a10435b10594310555d40444909535c5551427b554943065152424540440642554445425e0443445f400a404259465144557b554909455e545556595e5554065f525a5553440b595e4344515e44595144550856455e5344595f5e067d5f54455c55025f5608795e4344515e5355075755447944555d0c4355534255445b55495c5f57065c555e574458035c5f570d6b68776355534255445b55496d",{0:Error,1:JSON,get 2(){return atob},3:WebAssembly,4:Uint8Array,get 5(){return localStorage},6:Array,get 7(){return console},get 8(){return Fn},get 9(){return Qn},get 10(){return qt},get 11(){return sn},get 12(){return ln},get 13(){return $t},get 14(){return en},get 15(){return nn},get 16(){return kB},get 17(){return EB},get 18(){return bB},get 19(){return HB},get 20(){return vB},set 20(e){vB=e},get 21(){return NB},set 21(e){NB=e},get 22(){return gB},set 22(e){gB=e},get 23(){return TB},set 23(e){TB=e},get 24(){return CB},set 24(e){CB=e},get 25(){return LB},set 25(e){LB=e},get 26(){return xB},set 26(e){xB=e},get 27(){return XB},set 27(e){XB=e}},void 0);var AB,qB,$B,eR,tR,nR,iR,rR,aR=(AB="vodTimestampSalt",qB=function(e){return e.split("").map((function(e){return e.charCodeAt(0)}))},$B=function(e){return"0".concat(Number(e).toString(16)).substr(-2)},eR=function(e){return qB(AB).reduce((function(e,t){return e^t}),e)},function(e){return e.split("").map(qB).map(eR).map($B).join("")}),lR=(iR="vodTimestampSalt",rR=function(e){return(t=iR,t.split("").map((function(e){return e.charCodeAt(0)}))).reduce((function(e,t){return e^t}),e);var t},function(e){return e.match(/.{1,2}/g).map((function(e){return parseInt(e,16)})).map(rR).map((function(e){return String.fromCharCode(e)})).join("")}),UR={str2hex:function(e){if(""===e)return"";for(var t=[],n=0;n<e.length;n++)t.push(e.charCodeAt(n));return t},Base64ToHex:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=window.atob(e.replace(/-/g,"+").replace(/_/g,"/"));if(t){for(var i=[],r=0;r<n.length;r++)i.push(n.charCodeAt(r));return new Uint8Array(i).buffer}for(var a="",l=0;l<n.length;l++)a+="0".concat(n.charCodeAt(l).toString(16)).substr(-2);return a},checkUnionInfoExpired:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:30;if(0===t.indexOf(e)){var i=parseInt(lR(t.slice(e.length))),r=(new Date).getTime()-i;if(r>0&&r<=1e3*n)return!0;XB("UnionInfo timestamp expire!!!")}else XB("unionID and UnionInfo not match!!!");return!1},getUnionInfo:function(){return"".concat(arguments.length>0&&void 0!==arguments[0]?arguments[0]:"").concat(aR((new Date).getTime().toString()))},StringToArrayBuffer:function(e){for(var t=new ArrayBuffer(e.length),n=new Uint8Array(t),i=0;i<e.length;i++)n[i]=e.charCodeAt(i);return t},ArrayBufferToString:function(e){var t=[];e=ArrayBuffer.isView(e)?e:new Uint8Array(e);for(var n,i=0;i<e.length;i++)n=e[i],t.push(String.fromCharCode(n));return t.join("")},isBase64:function(e){return/^([A-Za-z0-9+/]{4})*([A-Za-z0-9+/]{4}|[A-Za-z0-9+/]{3}=|[A-Za-z0-9+/]{2}==)$/.test(e)},fromCharCode:zB,fromHex:function(e){for(var t=new Uint8Array(e.length/2),n=0;n<e.length;n+=2)t[n/2]=window.parseInt(e.substr(n,2),16);return t},toUTF8:function(e){for(var t=encodeURIComponent(e),n=unescape(t),i=new Uint8Array(n.length),r=0;r<n.length;++r)i[r]=n.charCodeAt(r);return i.buffer},toBase64:function(e,t){var n=zB(e);t=void 0===t||t;var i=window.btoa(n).replace(/\+/g,"-").replace(/\//g,"_");return t?i:i.replace(/=*$/,"")}};e.EVENT_EME=void 0,function(e,t,n){function i(e,t){var n=parseInt(e.slice(t,t+2),16);return n>>>7==0?[1,n]:n>>>6==2?(n=(63&n)<<8,[2,n+=parseInt(e.slice(t+2,t+4),16)]):(n=(63&n)<<16,[3,n+=parseInt(e.slice(t+2,t+6),16)])}var r,a=0,l=[],U=[];for(r=0;r<4;++r)a+=(3&parseInt(e.slice(8+2*r,10+2*r),16))<<2*r;var F=parseInt(e.slice(16,24),16),o=2*parseInt(e.slice(32,40),16);for(r=40;r<o+40;r+=2)l.push(parseInt(e.slice(r,r+2),16));var d=o+40,Q=parseInt(e.slice(d,d+4),16);for(d+=4,r=0;r<Q;++r){var s=i(e,d);d+=2*s[0];for(var c="",u=0;u<s[1];++u){var B=i(e,d);c+=String.fromCharCode(a^B[1]),d+=2*B[0]}U.push(c)}t.p=null,function e(t,n,i,r,a){var F,o,d,Q,s,c=-1,u=[],B=null,R=[n];for(o=Math.min(n.length,i),d=0;d<o;++d)R.push(n[d]);R.p=r;for(var h=[];;)try{switch(l[t++]){case 70:u[++c]=!1;break;case 39:u[++c]=null;break;case 36:F=l[t++],u[++c]=F<<24>>24;break;case 22:F=(l[t]<<8)+l[t+1],t+=2,u[++c]=F<<16>>16;break;case 50:F=((F=((F=l[t++])<<8)+l[t++])<<8)+l[t++],u[++c]=(F<<8)+l[t++];break;case 65:F=(l[t]<<8)+l[t+1],t+=2,u[++c]=U[F];break;case 33:u[++c]=void 0;break;case 35:u[++c]=a;break;case 52:F=(l[t]<<8)+l[t+1],t+=2,c=c-F+1,o=u.slice(c,c+F),u[c]=o;break;case 72:u[++c]={};break;case 27:F=(l[t]<<8)+l[t+1],t+=2,o=U[F],d=u[c--],u[c][o]=d;break;case 57:for(o=l[t++],d=l[t++],Q=R;o>0;--o)Q=Q.p;u[++c]=Q[d];break;case 28:F=(l[t]<<8)+l[t+1],t+=2,o=U[F],u[c]=u[c][o];break;case 73:o=u[c--],u[c]=u[c][o];break;case 17:for(o=l[t++],d=l[t++],Q=R;o>0;--o)Q=Q.p;Q[d]=u[c--];break;case 21:F=(l[t]<<8)+l[t+1],t+=2,o=U[F],d=u[c--],Q=u[c--],d[o]=Q;break;case 15:o=u[c--],d=u[c--],Q=u[c--],d[o]=Q;break;case 64:for(o=l[t++],d=l[t++],Q=R,Q=R;o>0;--o)Q=Q.p;u[++c]=Q,u[++c]=d;break;case 45:o=u[c--],Q=(d=u[c--])[o]++,u[++c]=Q;break;case 16:o=u[c--],u[c]=u[c]===o;break;case 10:o=u[c--],u[c]=u[c]!==o;break;case 59:u[c]=!u[c];break;case 53:F=(F=(l[t]<<8)+l[t+1])<<16>>16,t+=2,u[c]?--c:t+=F;break;case 74:F=(F=(l[t]<<8)+l[t+1])<<16>>16,t+=2,u[c]?t+=F:--c;break;case 66:o=u[c--],(d=u[c--])[o]=u[c];break;case 34:u[c]=void 0;break;case 42:o=u[c--],Q=delete(d=u[c--])[o],u[++c]=Q;break;case 30:F=l[t++],o=u[c--],(d=function e(){var t=e._v;return(0,e._u)(t[0],arguments,t[1],t[2],this)})._v=[o,F,R],d._u=e,u[++c]=d;break;case 46:F=l[t++],o=u[c--],(Q=[d=function e(){var t=e._v;return(0,e._u)(t[0],arguments,t[1],t[2],this)}]).p=R,d._v=[o,F,Q],d._u=e,u[++c]=d;break;case 48:throw o=u[c--];case 7:for(o=u[c--],d=null;Q=h.pop();)if(2===Q[0]||3===Q[0]){d=Q;break}if(d)t=d[2],d[0]=0,h.push(d);else{if(!B)return o;t=B[1],a=B[2],R=B[3],h=B[4],u[++c]=o,B=B[0]}break;case 12:c-=F=l[t++],d=u.slice(c+1,c+F+1),o=u[c--],Q=u[c--],o._u===e?(o=o._v,B=[B,t,a,R,h],t=o[0],null==Q&&(Q=function(){return this}()),a=Q,(R=[d].concat(d)).length=Math.min(o[1],F)+1,R.p=o[2],h=[]):(s=o.apply(Q,d),u[++c]=s);break;case 43:for(F=l[t++],Q=[void 0],s=F;s>0;--s)Q[s]=u[c--];d=u[c--],s=new(o=Function.bind.apply(d,Q)),u[++c]=s;break;case 31:t+=2+(F=(F=(l[t]<<8)+l[t+1])<<16>>16);break;case 25:F=(F=(l[t]<<8)+l[t+1])<<16>>16,t+=2,(o=u[c--])||(t+=F);break;case 69:--c;break;case 44:o=u[c],u[++c]=o;break;default:throw new Error("ioe")}}catch(V){for(;(F=h.pop())&&!F[0];);if(!F){e:for(;B;){for(o=B[4];F=o.pop();)if(F[0])break e;B=B[0]}if(!B)throw V;t=B[1],a=B[2],R=B[3],h=B[4],B=B[0]}1===(o=F[0])?(t=F[2],F[0]=0,h.push(F),u[++c]=V):2===o?(t=F[2],F[0]=0,h.push(F)):(t=F[3],F[0]=2,h.push(F),u[++c]=V)}}(F,[],0,t,n)}("504B0101603cafe000000fbce3ae3f6000000ff24100013900014100020f4100033900014100040f4100053900014100050f4100063900014100060f39000107320000012d1e011100022739020f3900023900010c0245273902113900024841002d1b002f32000008be2e021b0033484100341b002f320000097f2e011b0033484100351b002f3200000a122e001b0033484100291b002f3200000a502e011b0033484100241b002f3200000a702e011b00334841004b1b002f3200000b6a2e001b00334841001a1b002f3200000b6c2e031b0033484100521b002f3200000c022e011b0033484100531b002f3200000c142e011b0033484100561b002f3200000cb62e011b0033484100251b002f3200000ce42e011b00334841007a1b002f3200000f102e011b0033484100821b002f3200000fad2e001b003334000d0c020727390312233901020c024527390310233901020c021100024100073900021500084839000215000924002239000215000a3903153900021500002739000215000b240039000215000c3903002b002c1c000d0c002c1c000e24240c0139000215000f32000001c91e0139000215002c34000039000215001b3900022c1c002d3900010c01453900022c1c002e4100033900021c002c0c0245390002073901021100023900021c000b1100033901021100043900033b19000221073901021c0008410010101900334100111100053904012c1c0012484100133400011b00140c011100063904023904142c1c00153900060c012b011100071f054f3901021c0008410016101900b941001711000539000135000b3904023900011c00182b014a00993904022400240024002443247024732473246824002400240024001600ed1600ef16008b1600a924791600d6244a1600ce1600a31600c824271600dc1600d5241d24211600ed240024002400242324082401241224102433243324332433243324332433243324332433243324332400240024002400241a240a2469246e2474246524722474247224752473247424222401242a3400432b011100071f04893901021c00084100191019047c41001711000539000135000b3904023900011c00182b014a045f39040224002400240224262470247324732468240024002400240016009a24041600f02479160098244024421600861600ab1600921600e6245b1600e0160088245f1600952400240024022406240624022400240024012400240124001600fc2401243c24002457240024522400244d24002448240024452400244124002444240024452400245224002420240024782400246d2400246c2400246e240024732400243d24002422240024682400247424002474240024702400243a2400242f2400242f240024732400246324002468240024652400246d24002461240024732400242e2400246d2400246924002463240024722400246f240024732400246f24002466240024742400242e240024632400246f2400246d2400242f24002444240024522400244d2400242f240024322400243024002430240024372400242f24002430240024332400242f240024502400246c24002461240024792400245224002465240024612400246424002479240024482400246524002461240024642400246524002472240024222400242024002476240024652400247224002473240024692400246f2400246e2400243d24002422240024342400242e240024302400242e240024302400242e24002430240024222400243e2400243c240024442400244124002454240024412400243e2400243c24002450240024522400244f24002454240024452400244324002454240024492400244e240024462400244f2400243e2400243c2400244b24002445240024592400244c240024452400244e2400243e24002431240024362400243c2400242f2400244b24002445240024592400244c240024452400244e2400243e2400243c240024412400244c2400244724002449240024442400243e2400244124002445240024532400244324002454240024522400243c2400242f240024412400244c2400244724002449240024442400243e2400243c2400242f24002450240024522400244f24002454240024452400244324002454240024492400244e240024462400244f2400243e2400243c2400244b24002449240024442400243e2400244d2400247a2400244d2400247a2400244d2400247a2400244d2400247a2400244d2400247a2400244d2400247a2400244d2400247a2400244d2400247a2400244124002441240024412400244124002441240024412400243d2400243d2400243c2400242f2400244b24002449240024442400243e2400243c240024432400244824002445240024432400244b24002453240024552400244d2400243e24002441240024312400243524002442240024592400245724002444240024342400247124002473240024492400243d2400243c2400242f240024432400244824002445240024432400244b24002453240024552400244d2400243e2400243c2400242f240024442400244124002454240024412400243e2400243c2400242f24002457240024522400244d2400244824002445240024412400244424002445240024522400243e24003402262b011100073900042c1c001a3900033900041c00083900041c001b0c032c1c001c32000007b91e0032000008a21e000c022c1c001c32000008af1e0032000008b11e000c024521073901031c001d4000014227104a0007390001240022101900062400221f00093900012c1c001e0c001100023900023b19000939050341001f2b01303901031c00202c1c00213900020c01453901041c0008410010101900293904013901041c000f491100033900022c1c00224100233901042c1c00243900030c010c02451f00553901041c00084100161019001f3900022c1c00224100233901041c00252c1c00263901040c010c02451f00293901041c00084100191019001c3900022c1c00224100233901041c00252c1c00263901040c010c02453900022c1c00273901053901071c00280c02073901042c1c002941002a0c010721073901042c1c002941002b0c0107390001270a3500073900012400220a3500063900011c0030190015410010231500083900011c0030390301231c000f0f390001270a3500073900012400220a3500063900011c003019000a410010231500081f005b390001270a3500073900012400220a3500063900011c0031190014410016231500083900011c0031231500091f002c390001270a3500073900012400220a3500063900011c0032190011410019231500083900011c0032231500093900023500083900022341000042452107231c00003904151019007f231c00084100101035000e390301231c000f4940000242270a3500073900022400220a350008390002231c000049190029390301231c000f49231c000049390301231c000f493900010f390301231c000f493904152a451f0025231c0009231c000049190019231c000939041549231c00093900010f231c00093904152a45390001231500002107484100114100363400021b0037484100381b00393400011b003a4841003b1b00394841003c1b00394841003d1b00393400031b003e3400012315001b21073904042c1c000141003f3900010c0245232c1c00404100013900010c02452107231100023200000a7c1e01073400001100023400001100033905052c1c00093901010c012c1c00413200000aea1e010c0145483900021b00091100043905012c1c00123900040c011100053900011c00472c1c00483905142c1c00493900050c010c012c1c001c3200000b5b1e003200000b5d1e000c02452107390201390001491100023906142c1c00423900010c011100033906142c1c00423900020c01110004484100431b00443906142c1c0045390003460c021b00003906142c1c0045390004460c021b00461100053901022c1c00213900050c01453901032c1c00213900051c00000c0145210721073902022c1c002941004a0c0107210723110004231c000a4a00063900011c001d190011231c000a4a00093904062c1c004c0c00073904072c1c004d3900023900030c022c1c001c3200000bd11e013200000bdb1e000c022c1c001c3200000be81e013200000bf51e000c022315000a231c000a073900012c1c004e0c00073901042c1c002941004f0c01073901012c1c00503900010c01073901042c1c00294100510c01073900012315000b34000039000115002021074100541100023904081c005519008f232c1c00563900010c011100033904081c00552b001100043900042c1c00573900034100580c021100053900051900153900052c1c005939000241005a0c022400491f0001271100063900061900153900062c1c005939000241005b0c022400491f0001271100073900071900153900072c1c005939000241005c0c022400491f0001271100083900081900022707390001073904091c005d2c1c005e273904023900012b010c021100022739040a2739040b3900020c010c01110003390003072311000239040c2b001100033900032c1c005f410060231c00091c00610c02453200000d1d1e003900031500783900032c1c00790c004521073901031c00622404101901163901011c00231100013901031c00631100023901021c0008410019101900333905012c1c00643901031c00630c011100024100072c1c00653900021c00664100670c022c1c00653900021c00680c011100023900023b1900433901022c1c0040410006484100072c1c00653901021c00091c00614100690c022c1c00653901031c006a41006b0c022c1c00653901031c006c0c011b006d0c0245210739050c2b001100033901011c004739000315006e41006f390003150070463900031500713900032c1c005f410072273905093900020c010c02453901021c0008410019101900103900032c1c00734100744100580c02453200000e411e003900031500783900032c1c00793901022c1c007a3900010c010c014521073901031c00622404101900c13901031c006a1600c80a19003d3902022c1c0040410006484100072c1c00653901024100750c022c1c00653901031c006a41006b0c022c1c00653901031c006c0c011b006d0c024521073902022c1c0040410005483902021c000c1b006d0c024539020241000c2d453902021c0008410019101900153902022c1c00533901031c00630c011100011f000e3906023901031c00632b011100013901031c006e2c1c00483900010c012c1c00763906041c00012c1c00263906044100770c020c01452107231c0008410019101900892711000239040d2b0011000339040e3900012b011100043904091c005d2c1c005e273900040c021100053900032c1c005739000541007b0c021100063900062c1c007c41007d0c012400491900333900062c1c007c41007e0c012400491c007f2400491c008011000739000719000f3904082c1c00813900070c011100021f000439000107390002073904023900012b0107232c1c00830c0045272315000b21074100001101152732000000001e013901164a0001480c011101164811000127320000002c1e013901130c0111000239000211011721070084035b5954055542425f42057562627f6209555e5342494044555409757e736269606475741373747d6f7c7973757e63756f636573737563631173747d6f7c7973757e63756f7562627f6200095b554963494344555d045b5549430d555e4345425560425f5d59435505465954555f0b5c5953555e4355634455400757554464595d5508445f634442595e570f535c5551427b554963445f425579540f5f42571e47031e535c5551425b5549065b554959544309434442595e57595649200001020304050607080951525354555600010203040506070809515253545556045b59544306445f6564760812535f5d1e4759545546595e551e515c4058510453555e5308595e59447451445117535f5d1e5d5953425f435f56441e405c5149425551544916555e434542557d555459517b55494373425551445554075f4044595f5e43044458555e095d555459517b5549430d53425551445563554343595f5e197651595c555410445f105342555144551043554343595f5e1e0843554343595f5e430440454358105154547546555e447c594344555e5542075d5543435157551145405451445563554343595f5e76455e53135c5953555e43556255414555434462555154490452595e540f57555e55425144556255414555434406524556565542045251595c2f105651595c555410445f10555e43454255107d555459517b554943105f5e1078647d7c7d55545951755c555d555e441c107651595c555410445f1057555e554251445510425541455543441e0d555e534249404478515e545c550945405451445574425d025f5e035b554909535c5551427b554943084759545546595e5509405c514942555154490546515c4555094540545144557b59540a4355447f4044595f5e43044755525d0d595e59447451445164494055431d514554595f1f5d40040b10535f545553430d125d4004511e04001e02120b535f5e44555e446449405511514554595f7351405152595c59445955431f465954555f1f5d40040b10535f545553430d12514653011e0402530001551224465954555f1f5d40040b10535f545553430d12585546011e011e061e7c0102001e09001218465954555f1f4755525d0b10535f545553430d124640081211465954555f7351405152595c5944595543056b757d756d04555d594407565f42755153580756425f5d785548035f5344035b444908445f725143550604015b064451425755440645405451445513634442595e57645f71424251497245565655421e107d555459517b554963554343595f5e10454054514455105651595c55540a5b5549437358515e5755074255435f5c46551b425541455543447d555459517b554963494344555d7153535543430f5342555144557d555459517b55494325107651595c555410445f1042554145554344105b55491043494344555d105153535543431e0c4355447d555459517b55494322105651595c555410445f10534255514455107d555459517b554943105f525a555344084355444540757d75134051424355635542465542625543405f5e43552a58444440430a1f1f435358555d51431e485d5c435f51401e5f42571f435f51401f555e46555c5f40551f09747f7d6051424355420c45595e44645f634442595e570f405142435576425f5d634442595e5708445548441f485d5c16575544755c555d555e444372496451577e515d557e6308755e46555c5f405504725f5449057651455c440c56425f5d73585142735f5455055140405c49045f40555e037775640943554246554265627c0a4255515449634451445508425543405f5e435505405142435506535f5e535144155c5953555e43557153414559435944595f5e65425c120f75484042554343605c5149645f5b555e0d05445f5b555e231042554145554344105651595c555411103a101010101010101010104344514445430a064344514445430c10434451444543645548440a0a4344514445436455484404545144510a5b554963554343595f5e0b51424251495245565655420c425543405f5e4355644940550f4759445873425554555e4459515c4304607f636410435544625541455543447855515455420c735f5e44555e441d44494055271042554145554344105651595c555411103a10101010101010101010101010104344514445430a0553514453580f4540545144551819105651595c5554125f5e425551544943445144555358515e57550443555e541c5755447c5953555e43556255414555434476425f5d7d5543435157550f5140405c59535144595f5e1f485d5c14575544755c555d555e444372496451577e515d5513605c514962555154497b55497d554343515755097358515c5c555e57550a5358595c547e5f545543095e5f545566515c45550451445f520754554344425f491242555d5f4655715c5c7c594344555e554243",{0:Date,1:JSON,2:Uint8Array,3:Error,get 4(){return console},5:Object,6:Promise,get 7(){return navigator},get 8(){return window},9:String,10:decodeURIComponent,get 11(){return escape},get 12(){return XMLHttpRequest},get 13(){return DOMParser},14:Uint16Array,get 15(){return ln},get 16(){return $t},get 17(){return nn},get 18(){return en},get 19(){return Jc},get 20(){return UR},get 21(){return tR},set 21(e){tR=e},get 22(){return e.EVENT_EME},set 22(t){e.EVENT_EME=t},get 23(){return nR},set 23(e){nR=e}},void 0);var FR,oR,dR=nR,QR=S,sR=u,cR=Gn("match"),uR=U,BR=r,RR=Yt,hR=Qd,VR=K.f,pR=nt.f,mR=function(e){var t;return QR(e)&&(void 0!==(t=e[cR])?!!t:"RegExp"==sR(e))},ZR=AF,SR=hu,JR=Ae,WR=l,fR=Ye.enforce,yR=qa,kR=Gn("match"),ER=BR.RegExp,bR=ER.prototype,vR=/a/g,NR=/a/g,gR=new ER(vR)!==vR,TR=SR.UNSUPPORTED_Y;if(uR&&RR("RegExp",!gR||TR||WR((function(){return NR[kR]=!1,ER(vR)!=vR||ER(NR)==NR||"/a/i"!=ER(vR,"i")})))){for(var CR=function(e,t){var n,i=this instanceof CR,r=mR(e),a=void 0===t;if(!i&&r&&e.constructor===CR&&a)return e;gR?r&&!a&&(e=e.source):e instanceof CR&&(a&&(t=ZR.call(e)),e=e.source),TR&&(n=!!t&&t.indexOf("y")>-1)&&(t=t.replace(/y/g,""));var l=hR(gR?new ER(e,t):ER(e,t),i?this:bR,CR);return TR&&n&&(fR(l).sticky=!0),l},LR=function(e){e in CR||VR(CR,e,{configurable:!0,get:function(){return ER[e]},set:function(t){ER[e]=t}})},xR=pR(ER),XR=0;xR.length>XR;)LR(xR[XR++]);bR.constructor=CR,CR.prototype=bR,JR(BR,"RegExp",CR)}yR("RegExp"),e.isNativeFunction=void 0,e.checkMSEValid=void 0,e.checkEMEValid=void 0,function(e,t,n){function i(e,t){var n=parseInt(e.slice(t,t+2),16);return n>>>7==0?[1,n]:n>>>6==2?(n=(63&n)<<8,[2,n+=parseInt(e.slice(t+2,t+4),16)]):(n=(63&n)<<16,[3,n+=parseInt(e.slice(t+2,t+6),16)])}var r,a=0,l=[],U=[];for(r=0;r<4;++r)a+=(3&parseInt(e.slice(8+2*r,10+2*r),16))<<2*r;var F=parseInt(e.slice(16,24),16),o=2*parseInt(e.slice(32,40),16);for(r=40;r<o+40;r+=2)l.push(parseInt(e.slice(r,r+2),16));var d=o+40,Q=parseInt(e.slice(d,d+4),16);for(d+=4,r=0;r<Q;++r){var s=i(e,d);d+=2*s[0];for(var c="",u=0;u<s[1];++u){var B=i(e,d);c+=String.fromCharCode(a^B[1]),d+=2*B[0]}U.push(c)}t.p=null,function e(t,n,i,r,a){var F,o,d,Q,s,c=-1,u=[],B=null,R=[n];for(o=Math.min(n.length,i),d=0;d<o;++d)R.push(n[d]);R.p=r;for(var h=[];;)try{switch(l[t++]){case 8:u[++c]=!0;break;case 70:u[++c]=!1;break;case 39:u[++c]=null;break;case 36:F=l[t++],u[++c]=F<<24>>24;break;case 50:F=((F=((F=l[t++])<<8)+l[t++])<<8)+l[t++],u[++c]=(F<<8)+l[t++];break;case 65:F=(l[t]<<8)+l[t+1],t+=2,u[++c]=U[F];break;case 33:u[++c]=void 0;break;case 52:F=(l[t]<<8)+l[t+1],t+=2,c=c-F+1,o=u.slice(c,c+F),u[c]=o;break;case 57:for(o=l[t++],d=l[t++],Q=R;o>0;--o)Q=Q.p;u[++c]=Q[d];break;case 28:F=(l[t]<<8)+l[t+1],t+=2,o=U[F],u[c]=u[c][o];break;case 73:o=u[c--],u[c]=u[c][o];break;case 17:for(o=l[t++],d=l[t++],Q=R;o>0;--o)Q=Q.p;Q[d]=u[c--];break;case 64:for(o=l[t++],d=l[t++],Q=R,Q=R;o>0;--o)Q=Q.p;u[++c]=Q,u[++c]=d;break;case 75:u[c]=-u[c];break;case 16:o=u[c--],u[c]=u[c]===o;break;case 10:o=u[c--],u[c]=u[c]!==o;break;case 51:o=u[c--],u[c]=u[c]>o;break;case 53:F=(F=(l[t]<<8)+l[t+1])<<16>>16,t+=2,u[c]?--c:t+=F;break;case 74:F=(F=(l[t]<<8)+l[t+1])<<16>>16,t+=2,u[c]?t+=F:--c;break;case 66:o=u[c--],(d=u[c--])[o]=u[c];break;case 34:u[c]=void 0;break;case 14:u[c]=typeof u[c];break;case 30:F=l[t++],o=u[c--],(d=function e(){var t=e._v;return(0,e._u)(t[0],arguments,t[1],t[2],this)})._v=[o,F,R],d._u=e,u[++c]=d;break;case 7:for(o=u[c--],d=null;Q=h.pop();)if(2===Q[0]||3===Q[0]){d=Q;break}if(d)t=d[2],d[0]=0,h.push(d);else{if(!B)return o;t=B[1],a=B[2],R=B[3],h=B[4],u[++c]=o,B=B[0]}break;case 12:c-=F=l[t++],d=u.slice(c+1,c+F+1),o=u[c--],Q=u[c--],o._u===e?(o=o._v,B=[B,t,a,R,h],t=o[0],null==Q&&(Q=function(){return this}()),a=Q,(R=[d].concat(d)).length=Math.min(o[1],F)+1,R.p=o[2],h=[]):(s=o.apply(Q,d),u[++c]=s);break;case 43:for(F=l[t++],Q=[void 0],s=F;s>0;--s)Q[s]=u[c--];d=u[c--],s=new(o=Function.bind.apply(d,Q)),u[++c]=s;break;case 31:t+=2+(F=(F=(l[t]<<8)+l[t+1])<<16>>16);break;case 25:F=(F=(l[t]<<8)+l[t+1])<<16>>16,t+=2,(o=u[c--])||(t+=F);break;case 69:--c;break;case 44:o=u[c],u[++c]=o;break;default:throw new Error("ioe")}}catch(V){for(;(F=h.pop())&&!F[0];);if(!F){e:for(;B;){for(o=B[4];F=o.pop();)if(F[0])break e;B=B[0]}if(!B)throw V;t=B[1],a=B[2],R=B[3],h=B[4],B=B[0]}1===(o=F[0])?(t=F[2],F[0]=0,h.push(F),u[++c]=V):2===o?(t=F[2],F[0]=0,h.push(F)):(t=F[3],F[0]=2,h.push(F),u[++c]=V)}}(F,[],0,t,n)}("504B0101603cafe0000002f7e3ae3f6000000343081100023902022c1c00023900010c011900193900012c1c0003320000009d1e023900020c021100021f006d273902034100042c1c0005273902043901010c012c1c00063902034100074100082b024100090c022c1c000639020341000a4100082b0241000b0c0241000c0c020c011100033900010e41000d101900183900032c1c000e3901022c1c000f3900010c010c011f000146110002390002073900013500092739030c3900020c01073900001c0010240033350008390000240049210a1900093900002400491f0001461100013902050e4100110a190007390205071f003739000135000c390206410012490e4100110a19000b39020641001249071f0017390206410013490e4100110a190008390206410013490721073900001c0010240033350008390000240049210a1900093900002400491f0001461100013902070e4100110a190007390207071f001d39000135000c390206410014490e4100110a190008390206410014490721073900001c0010240033350008390000240049210a1900093900002400491f0001461100012739020d3900010c011100022739020e3900010c01110003461100043900023500033900031900623400001100053900031900203900052c1c00153900030c01453900052c1c00153900031c00001c00160c01453900021900203900052c1c00153900020c01453900052c1c00153900021c00001c00170c01452739020c3900050c0119000408110004390004073400001100013902080e4100110a1900a93900012c1c00153902081c00001c00180c01453900012c1c00153902091c00001c00190c01453900012c1c00153902081c00001c001a0c014539020a0e4100110a35004539020b4000024227104a0007390002240022104a000c3900021c001b4000024227104a0007390002240022101900062400221f000c3900022c1c001c41001d0c0124014b1019000d3900012c1c001539020a0c01453900012c1c001539020b1c001e0c01453900011c0010240010190004081f00092739020c3900010c010732000000001e0111010c32000000ad1e0011010d320000011c1e0011010e32000001711e0011010f32000002231e001101103901001c00001c00011100013901011c00001c00011100022107001f0940425f445f4449405508445f634442595e57075943714242514906425554455355016e06535f5e535144074255405c515355146b1e1a1b0f6e144b4d18194c6b6c6d6c1f6c6c6d0157036c14162f445f634442595e574c1856455e5344595f5e191e1a0f180f0d6c6c6c18194c10565f42101e1b0f180f0d6c6c6c6d190514011e1a0f01140856455e5344595f5e04445543440453515c5c065c555e57445809455e545556595e5554127d515e515755547d55545951635f45425355116755527b59447d55545951635f45425355137d515e51575554635f4542535572455656554204404543580c514040555e547245565655420f515454635f45425355724556565542064540545144550d53425551445563554343595f5e105154547546555e447c594344555e554209454355427157555e4407595e5455487f5608755c555344425f5e1b425541455543447d555459517b554963494344555d715353554343",{0:Object,1:Function,2:Array,3:RegExp,4:String,get 5(){return"undefined"!=typeof MediaSource?MediaSource:void 0},get 6(){return self},get 7(){return"undefined"!=typeof SourceBuffer?SourceBuffer:void 0},get 8(){return"undefined"!=typeof MediaKeySession?MediaKeySession:void 0},get 9(){return MediaKeys},get 10(){return"undefined"!=typeof atob?atob:void 0},get 11(){return navigator},get 12(){return e.isNativeFunction},set 12(t){e.isNativeFunction=t},get 13(){return FR},set 13(e){FR=e},get 14(){return oR},set 14(e){oR=e},get 15(){return e.checkMSEValid},set 15(t){e.checkMSEValid=t},get 16(){return e.checkEMEValid},set 16(t){e.checkEMEValid=t}},void 0);var DR={exports:{}},GR=!l((function(){return Object.isExtensible(Object.preventExtensions({}))})),IR=ke,MR=S,YR=b,wR=K.f,KR=GR,_R=Je("meta"),PR=0,jR=Object.isExtensible||function(){return!0},HR=function(e){wR(e,_R,{value:{objectID:"O"+ ++PR,weakData:{}}})},OR=DR.exports={REQUIRED:!1,fastKey:function(e,t){if(!MR(e))return"symbol"==typeof e?e:("string"==typeof e?"S":"P")+e;if(!YR(e,_R)){if(!jR(e))return"F";if(!t)return"E";HR(e)}return e[_R].objectID},getWeakData:function(e,t){if(!YR(e,_R)){if(!jR(e))return!0;if(!t)return!1;HR(e)}return e[_R].weakData},onFreeze:function(e){return KR&&OR.REQUIRED&&jR(e)&&!YR(e,_R)&&HR(e),e}};IR[_R]=!0;var zR=DR.exports,AR=zt,qR=r,$R=Yt,eh=Ae,th=zR,nh=Tl,ih=Yr,rh=S,ah=l,lh=Ml,Uh=ir,Fh=Qd,oh=K.f,dh=Ni,Qh=Mr,sh=ml,ch=Yr,uh=Tl,Bh=br,Rh=qa,hh=U,Vh=zR.fastKey,ph=Ye.set,mh=Ye.getterFor,Zh={getConstructor:function(e,t,n,i){var r=e((function(e,a){ch(e,r,t),ph(e,{type:t,index:dh(null),first:void 0,last:void 0,size:0}),hh||(e.size=0),null!=a&&uh(a,e[i],{that:e,AS_ENTRIES:n})})),a=mh(t),l=function(e,t,n){var i,r,l=a(e),F=U(e,t);return F?F.value=n:(l.last=F={index:r=Vh(t,!0),key:t,value:n,previous:i=l.last,next:void 0,removed:!1},l.first||(l.first=F),i&&(i.next=F),hh?l.size++:e.size++,"F"!==r&&(l.index[r]=F)),e},U=function(e,t){var n,i=a(e),r=Vh(t);if("F"!==r)return i.index[r];for(n=i.first;n;n=n.next)if(n.key==t)return n};return Qh(r.prototype,{clear:function(){for(var e=a(this),t=e.index,n=e.first;n;)n.removed=!0,n.previous&&(n.previous=n.previous.next=void 0),delete t[n.index],n=n.next;e.first=e.last=void 0,hh?e.size=0:this.size=0},delete:function(e){var t=this,n=a(t),i=U(t,e);if(i){var r=i.next,l=i.previous;delete n.index[i.index],i.removed=!0,l&&(l.next=r),r&&(r.previous=l),n.first==i&&(n.first=r),n.last==i&&(n.last=l),hh?n.size--:t.size--}return!!i},forEach:function(e){for(var t,n=a(this),i=sh(e,arguments.length>1?arguments[1]:void 0,3);t=t?t.next:n.first;)for(i(t.value,t.key,this);t&&t.removed;)t=t.previous},has:function(e){return!!U(this,e)}}),Qh(r.prototype,n?{get:function(e){var t=U(this,e);return t&&t.value},set:function(e,t){return l(this,0===e?0:e,t)}}:{add:function(e){return l(this,e=0===e?0:e,e)}}),hh&&oh(r.prototype,"size",{get:function(){return a(this).size}}),r},setStrong:function(e,t,n){var i=t+" Iterator",r=mh(t),a=mh(i);Bh(e,t,(function(e,t){ph(this,{type:i,target:e,state:r(e),kind:t,last:void 0})}),(function(){for(var e=a(this),t=e.kind,n=e.last;n&&n.removed;)n=n.previous;return e.target&&(e.last=n=n?n.next:e.state.first)?"keys"==t?{value:n.key,done:!1}:"values"==t?{value:n.value,done:!1}:{value:[n.key,n.value],done:!1}:(e.target=void 0,{value:void 0,done:!0})}),n?"entries":"values",!n,!0),Rh(t)}};!function(e,t,n){var i=-1!==e.indexOf("Map"),r=-1!==e.indexOf("Weak"),a=i?"set":"add",l=qR[e],U=l&&l.prototype,F=l,o={},d=function(e){var t=U[e];eh(U,e,"add"==e?function(e){return t.call(this,0===e?0:e),this}:"delete"==e?function(e){return!(r&&!rh(e))&&t.call(this,0===e?0:e)}:"get"==e?function(e){return r&&!rh(e)?void 0:t.call(this,0===e?0:e)}:"has"==e?function(e){return!(r&&!rh(e))&&t.call(this,0===e?0:e)}:function(e,n){return t.call(this,0===e?0:e,n),this})};if($R(e,"function"!=typeof l||!(r||U.forEach&&!ah((function(){(new l).entries().next()})))))F=n.getConstructor(t,e,i,a),th.REQUIRED=!0;else if($R(e,!0)){var Q=new F,s=Q[a](r?{}:-0,1)!=Q,c=ah((function(){Q.has(1)})),u=lh((function(e){new l(e)})),B=!r&&ah((function(){for(var e=new l,t=5;t--;)e[a](t,t);return!e.has(-0)}));u||((F=t((function(t,n){ih(t,F,e);var r=Fh(new l,t,F);return null!=n&&nh(n,r[a],{that:r,AS_ENTRIES:i}),r}))).prototype=U,U.constructor=F),(c||B)&&(d("delete"),d("has"),i&&d("get")),(B||s)&&d(a),r&&U.clear&&delete U.clear}o[e]=F,AR({global:!0,forced:F!=l},o),Uh(F,e),r||n.setStrong(F,e,i)}("Map",(function(e){return function(){return e(this,arguments.length?arguments[0]:void 0)}}),Zh);var Sh=Hu.charAt,Jh=Ye,Wh=br,fh="String Iterator",yh=Jh.set,kh=Jh.getterFor(fh);Wh(String,"String",(function(e){yh(this,{type:fh,string:String(e),index:0})}),(function(){var e,t=kh(this),n=t.string,i=t.index;return i>=n.length?{value:void 0,done:!0}:(e=Sh(n,i),t.index+=e.length,{value:e,done:!1})}));var Eh=P,bh=ul,vh=function(){for(var e,t=Eh(this),n=bh(t.delete),i=!0,r=0,a=arguments.length;r<a;r++)e=n.call(t,arguments[r]),i=i&&e;return!!i};zt({target:"Map",proto:!0,real:!0,forced:!1},{deleteAll:function(){return vh.apply(this,arguments)}});var Nh=function(e){return Map.prototype.entries.call(e)},gh=P,Th=ml,Ch=Nh,Lh=Tl;zt({target:"Map",proto:!0,real:!0,forced:!1},{every:function(e){var t=gh(this),n=Ch(t),i=Th(e,arguments.length>1?arguments[1]:void 0,3);return!Lh(n,(function(e,n,r){if(!i(n,e,t))return r()}),{AS_ENTRIES:!0,IS_ITERATOR:!0,INTERRUPTED:!0}).stopped}});var xh=tt,Xh=P,Dh=ul,Gh=ml,Ih=_l,Mh=Nh,Yh=Tl;zt({target:"Map",proto:!0,real:!0,forced:!1},{filter:function(e){var t=Xh(this),n=Mh(t),i=Gh(e,arguments.length>1?arguments[1]:void 0,3),r=new(Ih(t,xh("Map"))),a=Dh(r.set);return Yh(n,(function(e,n){i(n,e,t)&&a.call(r,e,n)}),{AS_ENTRIES:!0,IS_ITERATOR:!0}),r}});var wh=P,Kh=ml,_h=Nh,Ph=Tl;zt({target:"Map",proto:!0,real:!0,forced:!1},{find:function(e){var t=wh(this),n=_h(t),i=Kh(e,arguments.length>1?arguments[1]:void 0,3);return Ph(n,(function(e,n,r){if(i(n,e,t))return r(n)}),{AS_ENTRIES:!0,IS_ITERATOR:!0,INTERRUPTED:!0}).result}});var jh=P,Hh=ml,Oh=Nh,zh=Tl;zt({target:"Map",proto:!0,real:!0,forced:!1},{findKey:function(e){var t=jh(this),n=Oh(t),i=Hh(e,arguments.length>1?arguments[1]:void 0,3);return zh(n,(function(e,n,r){if(i(n,e,t))return r(e)}),{AS_ENTRIES:!0,IS_ITERATOR:!0,INTERRUPTED:!0}).result}});var Ah=P,qh=Nh,$h=function(e,t){return e===t||e!=e&&t!=t},eV=Tl;zt({target:"Map",proto:!0,real:!0,forced:!1},{includes:function(e){return eV(qh(Ah(this)),(function(t,n,i){if($h(n,e))return i()}),{AS_ENTRIES:!0,IS_ITERATOR:!0,INTERRUPTED:!0}).stopped}});var tV=P,nV=Nh,iV=Tl;zt({target:"Map",proto:!0,real:!0,forced:!1},{keyOf:function(e){return iV(nV(tV(this)),(function(t,n,i){if(n===e)return i(t)}),{AS_ENTRIES:!0,IS_ITERATOR:!0,INTERRUPTED:!0}).result}});var rV=tt,aV=P,lV=ul,UV=ml,FV=_l,oV=Nh,dV=Tl;zt({target:"Map",proto:!0,real:!0,forced:!1},{mapKeys:function(e){var t=aV(this),n=oV(t),i=UV(e,arguments.length>1?arguments[1]:void 0,3),r=new(FV(t,rV("Map"))),a=lV(r.set);return dV(n,(function(e,n){a.call(r,i(n,e,t),n)}),{AS_ENTRIES:!0,IS_ITERATOR:!0}),r}});var QV=tt,sV=P,cV=ul,uV=ml,BV=_l,RV=Nh,hV=Tl;zt({target:"Map",proto:!0,real:!0,forced:!1},{mapValues:function(e){var t=sV(this),n=RV(t),i=uV(e,arguments.length>1?arguments[1]:void 0,3),r=new(BV(t,QV("Map"))),a=cV(r.set);return hV(n,(function(e,n){a.call(r,e,i(n,e,t))}),{AS_ENTRIES:!0,IS_ITERATOR:!0}),r}});var VV=P,pV=ul,mV=Tl;zt({target:"Map",proto:!0,real:!0,forced:!1},{merge:function(e){for(var t=VV(this),n=pV(t.set),i=0;i<arguments.length;)mV(arguments[i++],n,{that:t,AS_ENTRIES:!0});return t}});var ZV=P,SV=ul,JV=Nh,WV=Tl;zt({target:"Map",proto:!0,real:!0,forced:!1},{reduce:function(e){var t=ZV(this),n=JV(t),i=arguments.length<2,r=i?void 0:arguments[1];if(SV(e),WV(n,(function(n,a){i?(i=!1,r=a):r=e(r,a,n,t)}),{AS_ENTRIES:!0,IS_ITERATOR:!0}),i)throw TypeError("Reduce of empty map with no initial value");return r}});var fV=P,yV=ml,kV=Nh,EV=Tl;zt({target:"Map",proto:!0,real:!0,forced:!1},{some:function(e){var t=fV(this),n=kV(t),i=yV(e,arguments.length>1?arguments[1]:void 0,3);return EV(n,(function(e,n,r){if(i(n,e,t))return r()}),{AS_ENTRIES:!0,IS_ITERATOR:!0,INTERRUPTED:!0}).stopped}});var bV=P,vV=ul;zt({target:"Map",proto:!0,real:!0,forced:!1},{update:function(e,t){var n=bV(this),i=arguments.length;vV(t);var r=n.has(e);if(!r&&i<3)throw TypeError("Updating absent value");var a=r?n.get(e):vV(i>2?arguments[2]:void 0)(e,n);return n.set(e,t(a,e,n)),n}});var NV={exports:{}};NV.exports=function(e){var t=["0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f"];function n(e,t){var n=e[0],i=e[1],r=e[2],a=e[3];i=((i+=((r=((r+=((a=((a+=((n=((n+=(i&r|~i&a)+t[0]-680876936|0)<<7|n>>>25)+i|0)&i|~n&r)+t[1]-389564586|0)<<12|a>>>20)+n|0)&n|~a&i)+t[2]+606105819|0)<<17|r>>>15)+a|0)&a|~r&n)+t[3]-1044525330|0)<<22|i>>>10)+r|0,i=((i+=((r=((r+=((a=((a+=((n=((n+=(i&r|~i&a)+t[4]-176418897|0)<<7|n>>>25)+i|0)&i|~n&r)+t[5]+1200080426|0)<<12|a>>>20)+n|0)&n|~a&i)+t[6]-1473231341|0)<<17|r>>>15)+a|0)&a|~r&n)+t[7]-45705983|0)<<22|i>>>10)+r|0,i=((i+=((r=((r+=((a=((a+=((n=((n+=(i&r|~i&a)+t[8]+1770035416|0)<<7|n>>>25)+i|0)&i|~n&r)+t[9]-1958414417|0)<<12|a>>>20)+n|0)&n|~a&i)+t[10]-42063|0)<<17|r>>>15)+a|0)&a|~r&n)+t[11]-1990404162|0)<<22|i>>>10)+r|0,i=((i+=((r=((r+=((a=((a+=((n=((n+=(i&r|~i&a)+t[12]+1804603682|0)<<7|n>>>25)+i|0)&i|~n&r)+t[13]-40341101|0)<<12|a>>>20)+n|0)&n|~a&i)+t[14]-1502002290|0)<<17|r>>>15)+a|0)&a|~r&n)+t[15]+1236535329|0)<<22|i>>>10)+r|0,i=((i+=((r=((r+=((a=((a+=((n=((n+=(i&a|r&~a)+t[1]-165796510|0)<<5|n>>>27)+i|0)&r|i&~r)+t[6]-1069501632|0)<<9|a>>>23)+n|0)&i|n&~i)+t[11]+643717713|0)<<14|r>>>18)+a|0)&n|a&~n)+t[0]-373897302|0)<<20|i>>>12)+r|0,i=((i+=((r=((r+=((a=((a+=((n=((n+=(i&a|r&~a)+t[5]-701558691|0)<<5|n>>>27)+i|0)&r|i&~r)+t[10]+38016083|0)<<9|a>>>23)+n|0)&i|n&~i)+t[15]-660478335|0)<<14|r>>>18)+a|0)&n|a&~n)+t[4]-405537848|0)<<20|i>>>12)+r|0,i=((i+=((r=((r+=((a=((a+=((n=((n+=(i&a|r&~a)+t[9]+568446438|0)<<5|n>>>27)+i|0)&r|i&~r)+t[14]-1019803690|0)<<9|a>>>23)+n|0)&i|n&~i)+t[3]-187363961|0)<<14|r>>>18)+a|0)&n|a&~n)+t[8]+1163531501|0)<<20|i>>>12)+r|0,i=((i+=((r=((r+=((a=((a+=((n=((n+=(i&a|r&~a)+t[13]-1444681467|0)<<5|n>>>27)+i|0)&r|i&~r)+t[2]-51403784|0)<<9|a>>>23)+n|0)&i|n&~i)+t[7]+1735328473|0)<<14|r>>>18)+a|0)&n|a&~n)+t[12]-1926607734|0)<<20|i>>>12)+r|0,i=((i+=((r=((r+=((a=((a+=((n=((n+=(i^r^a)+t[5]-378558|0)<<4|n>>>28)+i|0)^i^r)+t[8]-2022574463|0)<<11|a>>>21)+n|0)^n^i)+t[11]+1839030562|0)<<16|r>>>16)+a|0)^a^n)+t[14]-35309556|0)<<23|i>>>9)+r|0,i=((i+=((r=((r+=((a=((a+=((n=((n+=(i^r^a)+t[1]-1530992060|0)<<4|n>>>28)+i|0)^i^r)+t[4]+1272893353|0)<<11|a>>>21)+n|0)^n^i)+t[7]-155497632|0)<<16|r>>>16)+a|0)^a^n)+t[10]-1094730640|0)<<23|i>>>9)+r|0,i=((i+=((r=((r+=((a=((a+=((n=((n+=(i^r^a)+t[13]+681279174|0)<<4|n>>>28)+i|0)^i^r)+t[0]-358537222|0)<<11|a>>>21)+n|0)^n^i)+t[3]-722521979|0)<<16|r>>>16)+a|0)^a^n)+t[6]+76029189|0)<<23|i>>>9)+r|0,i=((i+=((r=((r+=((a=((a+=((n=((n+=(i^r^a)+t[9]-640364487|0)<<4|n>>>28)+i|0)^i^r)+t[12]-421815835|0)<<11|a>>>21)+n|0)^n^i)+t[15]+530742520|0)<<16|r>>>16)+a|0)^a^n)+t[2]-995338651|0)<<23|i>>>9)+r|0,i=((i+=((a=((a+=(i^((n=((n+=(r^(i|~a))+t[0]-198630844|0)<<6|n>>>26)+i|0)|~r))+t[7]+1126891415|0)<<10|a>>>22)+n|0)^((r=((r+=(n^(a|~i))+t[14]-1416354905|0)<<15|r>>>17)+a|0)|~n))+t[5]-57434055|0)<<21|i>>>11)+r|0,i=((i+=((a=((a+=(i^((n=((n+=(r^(i|~a))+t[12]+1700485571|0)<<6|n>>>26)+i|0)|~r))+t[3]-1894986606|0)<<10|a>>>22)+n|0)^((r=((r+=(n^(a|~i))+t[10]-1051523|0)<<15|r>>>17)+a|0)|~n))+t[1]-2054922799|0)<<21|i>>>11)+r|0,i=((i+=((a=((a+=(i^((n=((n+=(r^(i|~a))+t[8]+1873313359|0)<<6|n>>>26)+i|0)|~r))+t[15]-30611744|0)<<10|a>>>22)+n|0)^((r=((r+=(n^(a|~i))+t[6]-1560198380|0)<<15|r>>>17)+a|0)|~n))+t[13]+1309151649|0)<<21|i>>>11)+r|0,i=((i+=((a=((a+=(i^((n=((n+=(r^(i|~a))+t[4]-145523070|0)<<6|n>>>26)+i|0)|~r))+t[11]-1120210379|0)<<10|a>>>22)+n|0)^((r=((r+=(n^(a|~i))+t[2]+718787259|0)<<15|r>>>17)+a|0)|~n))+t[9]-343485551|0)<<21|i>>>11)+r|0,e[0]=n+e[0]|0,e[1]=i+e[1]|0,e[2]=r+e[2]|0,e[3]=a+e[3]|0}function i(e){var t,n=[];for(t=0;t<64;t+=4)n[t>>2]=e.charCodeAt(t)+(e.charCodeAt(t+1)<<8)+(e.charCodeAt(t+2)<<16)+(e.charCodeAt(t+3)<<24);return n}function r(e){var t,n=[];for(t=0;t<64;t+=4)n[t>>2]=e[t]+(e[t+1]<<8)+(e[t+2]<<16)+(e[t+3]<<24);return n}function a(e){var t,r,a,l,U,F,o=e.length,d=[1732584193,-271733879,-1732584194,271733878];for(t=64;t<=o;t+=64)n(d,i(e.substring(t-64,t)));for(r=(e=e.substring(t-64)).length,a=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],t=0;t<r;t+=1)a[t>>2]|=e.charCodeAt(t)<<(t%4<<3);if(a[t>>2]|=128<<(t%4<<3),t>55)for(n(d,a),t=0;t<16;t+=1)a[t]=0;return l=(l=8*o).toString(16).match(/(.*?)(.{0,8})$/),U=parseInt(l[2],16),F=parseInt(l[1],16)||0,a[14]=U,a[15]=F,n(d,a),d}function l(e){var t,i,a,l,U,F,o=e.length,d=[1732584193,-271733879,-1732584194,271733878];for(t=64;t<=o;t+=64)n(d,r(e.subarray(t-64,t)));for(i=(e=t-64<o?e.subarray(t-64):new Uint8Array(0)).length,a=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],t=0;t<i;t+=1)a[t>>2]|=e[t]<<(t%4<<3);if(a[t>>2]|=128<<(t%4<<3),t>55)for(n(d,a),t=0;t<16;t+=1)a[t]=0;return l=(l=8*o).toString(16).match(/(.*?)(.{0,8})$/),U=parseInt(l[2],16),F=parseInt(l[1],16)||0,a[14]=U,a[15]=F,n(d,a),d}function U(e){var n,i="";for(n=0;n<4;n+=1)i+=t[e>>8*n+4&15]+t[e>>8*n&15];return i}function F(e){var t;for(t=0;t<e.length;t+=1)e[t]=U(e[t]);return e.join("")}function o(e){return/[\u0080-\uFFFF]/.test(e)&&(e=unescape(encodeURIComponent(e))),e}function d(e,t){var n,i=e.length,r=new ArrayBuffer(i),a=new Uint8Array(r);for(n=0;n<i;n+=1)a[n]=e.charCodeAt(n);return t?a:r}function Q(e){return String.fromCharCode.apply(null,new Uint8Array(e))}function s(e,t,n){var i=new Uint8Array(e.byteLength+t.byteLength);return i.set(new Uint8Array(e)),i.set(new Uint8Array(t),e.byteLength),n?i:i.buffer}function c(e){var t,n=[],i=e.length;for(t=0;t<i-1;t+=2)n.push(parseInt(e.substr(t,2),16));return String.fromCharCode.apply(String,n)}function u(){this.reset()}return F(a("hello")),"undefined"==typeof ArrayBuffer||ArrayBuffer.prototype.slice||function(){function t(e,t){return(e=0|e||0)<0?Math.max(e+t,0):Math.min(e,t)}ArrayBuffer.prototype.slice=function(n,i){var r,a,l,U,F=this.byteLength,o=t(n,F),d=F;return i!==e&&(d=t(i,F)),o>d?new ArrayBuffer(0):(r=d-o,a=new ArrayBuffer(r),l=new Uint8Array(a),U=new Uint8Array(this,o,r),l.set(U),a)}}(),u.prototype.append=function(e){return this.appendBinary(o(e)),this},u.prototype.appendBinary=function(e){this._buff+=e,this._length+=e.length;var t,r=this._buff.length;for(t=64;t<=r;t+=64)n(this._hash,i(this._buff.substring(t-64,t)));return this._buff=this._buff.substring(t-64),this},u.prototype.end=function(e){var t,n,i=this._buff,r=i.length,a=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];for(t=0;t<r;t+=1)a[t>>2]|=i.charCodeAt(t)<<(t%4<<3);return this._finish(a,r),n=F(this._hash),e&&(n=c(n)),this.reset(),n},u.prototype.reset=function(){return this._buff="",this._length=0,this._hash=[1732584193,-271733879,-1732584194,271733878],this},u.prototype.getState=function(){return{buff:this._buff,length:this._length,hash:this._hash.slice()}},u.prototype.setState=function(e){return this._buff=e.buff,this._length=e.length,this._hash=e.hash,this},u.prototype.destroy=function(){delete this._hash,delete this._buff,delete this._length},u.prototype._finish=function(e,t){var i,r,a,l=t;if(e[l>>2]|=128<<(l%4<<3),l>55)for(n(this._hash,e),l=0;l<16;l+=1)e[l]=0;i=(i=8*this._length).toString(16).match(/(.*?)(.{0,8})$/),r=parseInt(i[2],16),a=parseInt(i[1],16)||0,e[14]=r,e[15]=a,n(this._hash,e)},u.hash=function(e,t){return u.hashBinary(o(e),t)},u.hashBinary=function(e,t){var n=F(a(e));return t?c(n):n},u.ArrayBuffer=function(){this.reset()},u.ArrayBuffer.prototype.append=function(e){var t,i=s(this._buff.buffer,e,!0),a=i.length;for(this._length+=e.byteLength,t=64;t<=a;t+=64)n(this._hash,r(i.subarray(t-64,t)));return this._buff=t-64<a?new Uint8Array(i.buffer.slice(t-64)):new Uint8Array(0),this},u.ArrayBuffer.prototype.end=function(e){var t,n,i=this._buff,r=i.length,a=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];for(t=0;t<r;t+=1)a[t>>2]|=i[t]<<(t%4<<3);return this._finish(a,r),n=F(this._hash),e&&(n=c(n)),this.reset(),n},u.ArrayBuffer.prototype.reset=function(){return this._buff=new Uint8Array(0),this._length=0,this._hash=[1732584193,-271733879,-1732584194,271733878],this},u.ArrayBuffer.prototype.getState=function(){var e=u.prototype.getState.call(this);return e.buff=Q(e.buff),e},u.ArrayBuffer.prototype.setState=function(e){return e.buff=d(e.buff,!0),u.prototype.setState.call(this,e)},u.ArrayBuffer.prototype.destroy=u.prototype.destroy,u.ArrayBuffer.prototype._finish=u.prototype._finish,u.ArrayBuffer.hash=function(e,t){var n=F(l(new Uint8Array(e)));return t?c(n):n},u}();var gV=n(NV.exports),TV="KekHelper",CV="-----BEGIN PUBLIC KEY-----",LV="-----END PUBLIC KEY-----";function xV(e){return String.fromCharCode.apply(null,new Uint8Array(e))}function XV(e){return new Uint8Array(e.split("").map((function(e){return e.charCodeAt(0)})))}function DV(e,t,n){return GV.apply(this,arguments)}function GV(){return(GV=qt(Fn().mark((function e(t,n,i){var r,a,l,U;return Fn().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=XV(t),e.next=3,crypto.subtle.importKey("pkcs8",r,{name:i.name,hash:i.hash},!0,["decrypt"]);case 3:return a=e.sent,l=XV(n),e.next=7,crypto.subtle.importKey("spki",l,{name:i.name,hash:i.hash},!0,["encrypt"]);case 7:return U=e.sent,e.abrupt("return",{privateKey:a,publicKey:U});case 9:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function IV(){return MV.apply(this,arguments)}function MV(){return(MV=qt(Fn().mark((function e(){var t,n,i,r,a,l,U,F,o,d,Q,s,c,u,B,R,h,V;return Fn().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t={name:"RSA-OAEP",modulusLength:2048,publicExponent:new Uint8Array([1,0,1]),hash:"SHA-256"},n=null,i="",r="",a="",U=/kek=localstorage/gi.test("object"===("undefined"==typeof location?"undefined":Qn(location))?location.href:""),e.prev=7,F=performance.now(),!(o=U?localStorage.getItem("player_keypair"):null)){e.next=23;break}if(!((d=JSON.parse(o))&&d.privateKey&&d.publicKey)){e.next=23;break}return XB(TV,"Found key pair in local storage",d),i=d.privateKey,r=d.publicKey,a=atob(d.publicKey.replace(CV,"").replace(LV,"").replace(/\s/g,"")),l=atob(d.privateKey.replace("-----BEGIN PRIVATE KEY-----","").replace("-----END PRIVATE KEY-----","").replace(/\s/g,"")),e.next=20,DV(l,a,t);case 20:n=e.sent,Q=performance.now(),XB(TV,"importKeyPair took ".concat(Q-F," milliseconds"));case 23:e.next=28;break;case 25:e.prev=25,e.t0=e.catch(7),XB(TV,"importKeyPair error:",e.t0);case 28:if(n){e.next=46;break}return s=performance.now(),e.next=32,KB(t);case 32:return n=e.sent,e.next=35,crypto.subtle.exportKey("pkcs8",n.privateKey);case 35:return c=e.sent,u=xV(c),i=window.btoa(u),e.next=40,crypto.subtle.exportKey("spki",n.publicKey);case 40:B=e.sent,a=xV(B),r=window.btoa(a),R=performance.now(),XB(TV,"keyPair generated, took ".concat(R-s," milliseconds")),U&&localStorage.setItem("player_keypair",JSON.stringify({privateKey:i,publicKey:r}));case 46:return h="".concat(CV,"\n").concat(r,"\n").concat(LV),XB(TV,"Public key (PEM format): \n".concat(h)),V=btoa(yB(a.split("")).join("")),XB(TV,"drmKeK: ".concat(V)),e.abrupt("return",{keyPair:n,drmKeK:V});case 51:case"end":return e.stop()}}),e,null,[[7,25]])})))).apply(this,arguments)}var YV={cipher:{},hash:{},keyexchange:{},mode:{},misc:{},codec:{},exception:{corrupt:function(e){this.toString=function(){return"CORRUPT: "+this.message},this.message=e},invalid:function(e){this.toString=function(){return"INVALID: "+this.message},this.message=e},bug:function(e){this.toString=function(){return"BUG: "+this.message},this.message=e},notReady:function(e){this.toString=function(){return"NOT READY: "+this.message},this.message=e}}};function wV(e,t){return KV.apply(this,arguments)}function KV(){return(KV=qt(Fn().mark((function e(t,n){var i,r,a,l,U;return Fn().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return i=n.iv,r=n.tagLength,a=n.data,l=null,t=UR.StringToArrayBuffer(t),a=UR.Base64ToHex(a,!0),e.prev=4,e.next=7,crypto.subtle.importKey("raw",t,"AES-GCM",!0,["encrypt","decrypt"]);case 7:U=e.sent,e.next=13;break;case 10:throw e.prev=10,e.t0=e.catch(4),"importKey: ".concat((null===e.t0||void 0===e.t0?void 0:e.t0.message)||e.t0);case 13:return e.prev=13,e.next=16,crypto.subtle.decrypt({name:"AES-GCM",iv:new Uint8Array(i),tagLength:r},U,a);case 16:l=e.sent,e.next=30;break;case 19:if(e.prev=19,e.t1=e.catch(13),"OperationError"!==String(e.t1)){e.next=25;break}throw"Wrong Password.";case 25:if("InvalidAccessError"!==String(e.t1)){e.next=29;break}throw"Invalid Key";case 29:throw e.t1;case 30:return e.abrupt("return",new TextDecoder("utf-8").decode(l));case 31:case"end":return e.stop()}}),e,null,[[4,10],[13,19]])})))).apply(this,arguments)}function _V(e,t){return PV.apply(this,arguments)}function PV(){return(PV=qt(Fn().mark((function e(t,n){var i,r,a,l,U,F,o;return Fn().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return i=n.iv,r=n.tagLength,a=n.data,l=btoa(UR.ArrayBufferToString(i)),U=YV.codec.base64.toBits(l),F=YV.codec.utf8String.toBits(t),o=new YV.cipher.aes(F),e.abrupt("return",YV.codec.utf8String.fromBits(YV.mode.gcm.decrypt(o,YV.codec.base64.toBits(a),U,[],r)));case 6:case"end":return e.stop()}}),e)})))).apply(this,arguments)}YV.cipher.aes=function(e){this._tables[0][0][0]||this._precompute();var t,n,i,r,a,l=this._tables[0][4],U=this._tables[1],F=e.length,o=1;if(4!==F&&6!==F&&8!==F)throw new YV.exception.invalid("invalid aes key size");for(this._key=[r=e.slice(0),a=[]],t=F;t<4*F+28;t++)i=r[t-1],(t%F==0||8===F&&t%F==4)&&(i=l[i>>>24]<<24^l[i>>16&255]<<16^l[i>>8&255]<<8^l[255&i],t%F==0&&(i=i<<8^i>>>24^o<<24,o=o<<1^283*(o>>7))),r[t]=r[t-F]^i;for(n=0;t;n++,t--)i=r[3&n?t:t-4],a[n]=t<=4||n<4?i:U[0][l[i>>>24]]^U[1][l[i>>16&255]]^U[2][l[i>>8&255]]^U[3][l[255&i]]},YV.cipher.aes.prototype={encrypt:function(e){return this._crypt(e,0)},decrypt:function(e){return this._crypt(e,1)},_tables:[[[],[],[],[],[]],[[],[],[],[],[]]],_precompute:function(){var e,t,n,i,r,a,l,U,F=this._tables[0],o=this._tables[1],d=F[4],Q=o[4],s=[],c=[];for(e=0;e<256;e++)c[(s[e]=e<<1^283*(e>>7))^e]=e;for(t=n=0;!d[t];t^=i||1,n=c[n]||1)for(a=(a=n^n<<1^n<<2^n<<3^n<<4)>>8^255&a^99,d[t]=a,Q[a]=t,U=16843009*s[r=s[i=s[t]]]^65537*r^257*i^16843008*t,l=257*s[a]^16843008*a,e=0;e<4;e++)F[e][t]=l=l<<24^l>>>8,o[e][a]=U=U<<24^U>>>8;for(e=0;e<5;e++)F[e]=F[e].slice(0),o[e]=o[e].slice(0)},_crypt:function(e,t){if(4!==e.length)throw new YV.exception.invalid("invalid aes block size");var n,i,r,a,l=this._key[t],U=e[0]^l[0],F=e[t?3:1]^l[1],o=e[2]^l[2],d=e[t?1:3]^l[3],Q=l.length/4-2,s=4,c=[0,0,0,0],u=this._tables[t],B=u[0],R=u[1],h=u[2],V=u[3],p=u[4];for(a=0;a<Q;a++)n=B[U>>>24]^R[F>>16&255]^h[o>>8&255]^V[255&d]^l[s],i=B[F>>>24]^R[o>>16&255]^h[d>>8&255]^V[255&U]^l[s+1],r=B[o>>>24]^R[d>>16&255]^h[U>>8&255]^V[255&F]^l[s+2],d=B[d>>>24]^R[U>>16&255]^h[F>>8&255]^V[255&o]^l[s+3],s+=4,U=n,F=i,o=r;for(a=0;a<4;a++)c[t?3&-a:a]=p[U>>>24]<<24^p[F>>16&255]<<16^p[o>>8&255]<<8^p[255&d]^l[s++],n=U,U=F,F=o,o=d,d=n;return c}},YV.bitArray={bitSlice:function(e,t,n){return e=YV.bitArray._shiftRight(e.slice(t/32),32-(31&t)).slice(1),void 0===n?e:YV.bitArray.clamp(e,n-t)},extract:function(e,t,n){var i=Math.floor(-t-n&31);return(-32&(t+n-1^t)?e[t/32|0]<<32-i^e[t/32+1|0]>>>i:e[t/32|0]>>>i)&(1<<n)-1},concat:function(e,t){if(0===e.length||0===t.length)return e.concat(t);var n=e[e.length-1],i=YV.bitArray.getPartial(n);return 32===i?e.concat(t):YV.bitArray._shiftRight(t,i,0|n,e.slice(0,e.length-1))},bitLength:function(e){var t,n=e.length;return 0===n?0:(t=e[n-1],32*(n-1)+YV.bitArray.getPartial(t))},clamp:function(e,t){if(32*e.length<t)return e;var n=(e=e.slice(0,Math.ceil(t/32))).length;return t&=31,n>0&&t&&(e[n-1]=YV.bitArray.partial(t,e[n-1]&2147483648>>t-1,1)),e},partial:function(e,t,n){return 32===e?t:(n?0|t:t<<32-e)+1099511627776*e},getPartial:function(e){return Math.round(e/1099511627776)||32},equal:function(e,t){if(YV.bitArray.bitLength(e)!==YV.bitArray.bitLength(t))return!1;var n,i=0;for(n=0;n<e.length;n++)i|=e[n]^t[n];return 0===i},_shiftRight:function(e,t,n,i){var r,a,l;for(void 0===i&&(i=[]);t>=32;t-=32)i.push(n),n=0;if(0===t)return i.concat(e);for(r=0;r<e.length;r++)i.push(n|e[r]>>>t),n=e[r]<<32-t;return a=e.length?e[e.length-1]:0,l=YV.bitArray.getPartial(a),i.push(YV.bitArray.partial(t+l&31,t+l>32?n:i.pop(),1)),i},_xor4:function(e,t){return[e[0]^t[0],e[1]^t[1],e[2]^t[2],e[3]^t[3]]},byteswapM:function(e){var t,n;for(t=0;t<e.length;++t)n=e[t],e[t]=n>>>24|n>>>8&65280|(65280&n)<<8|n<<24;return e}},YV.codec.utf8String={fromBits:function(e){var t,n,i="",r=YV.bitArray.bitLength(e);for(t=0;t<r/8;t++)3&t||(n=e[t/4]),i+=String.fromCharCode(n>>>8>>>8>>>8),n<<=8;return decodeURIComponent(escape(i))},toBits:function(e){e=unescape(encodeURIComponent(e));var t,n=[],i=0;for(t=0;t<e.length;t++)i=i<<8|e.charCodeAt(t),3&~t||(n.push(i),i=0);return 3&t&&n.push(YV.bitArray.partial(8*(3&t),i)),n}},YV.codec.base64={_chars:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",fromBits:function(e,t,n){var i,r="",a=0,l=YV.codec.base64._chars,U=0,F=YV.bitArray.bitLength(e);for(n&&(l=l.substr(0,62)+"-_"),i=0;6*r.length<F;)r+=l.charAt((U^e[i]>>>a)>>>26),a<6?(U=e[i]<<6-a,a+=26,i++):(U<<=6,a-=6);for(;3&r.length&&!t;)r+="=";return r},toBits:function(e,t){e=e.replace(/\s|=/g,"");var n,i,r=[],a=0,l=YV.codec.base64._chars,U=0;for(t&&(l=l.substr(0,62)+"-_"),n=0;n<e.length;n++){if((i=l.indexOf(e.charAt(n)))<0)throw new YV.exception.invalid("this isn't base64!");a>26?(a-=26,r.push(U^i>>>a),U=i<<32-a):U^=i<<32-(a+=6)}return 56&a&&r.push(YV.bitArray.partial(56&a,U,1)),r}},YV.codec.base64url={fromBits:function(e){return YV.codec.base64.fromBits(e,1,1)},toBits:function(e){return YV.codec.base64.toBits(e,1)}},YV.mode.gcm={name:"gcm",encrypt:function(e,t,n,i,r){var a,l=t.slice(0),U=YV.bitArray;return r=r||128,i=i||[],a=YV.mode.gcm._ctrMode(!0,e,l,i,n,r),U.concat(a.data,a.tag)},decrypt:function(e,t,n,i,r){var a,l,U=t.slice(0),F=YV.bitArray,o=F.bitLength(U);if(i=i||[],(r=r||128)<=o?(l=F.bitSlice(U,o-r),U=F.bitSlice(U,0,o-r)):(l=U,U=[]),a=YV.mode.gcm._ctrMode(!1,e,U,i,n,r),!F.equal(a.tag,l))throw new YV.exception.corrupt("gcm: tag doesn't match");return a.data},_galoisMultiply:function(e,t){var n,i,r,a,l,U=YV.bitArray._xor4;for(r=[0,0,0,0],a=t.slice(0),n=0;n<128;n++){for(!!(e[Math.floor(n/32)]&1<<31-n%32)&&(r=U(r,a)),l=!!(1&a[3]),i=3;i>0;i--)a[i]=a[i]>>>1|(1&a[i-1])<<31;a[0]=a[0]>>>1,l&&(a[0]=a[0]^225<<24)}return r},_ghash:function(e,t,n){var i,r,a=n.length;for(i=t.slice(0),r=0;r<a;r+=4)i[0]^=4294967295&n[r],i[1]^=4294967295&n[r+1],i[2]^=4294967295&n[r+2],i[3]^=4294967295&n[r+3],i=YV.mode.gcm._galoisMultiply(i,e);return i},_ctrMode:function(e,t,n,i,r,a){var l,U,F,o,d,Q,s,c,u,B,R,h,V=YV.bitArray;for(u=n.length,B=V.bitLength(n),R=V.bitLength(i),h=V.bitLength(r),l=t.encrypt([0,0,0,0]),96===h?(U=r.slice(0),U=V.concat(U,[1])):(U=YV.mode.gcm._ghash(l,[0,0,0,0],r),U=YV.mode.gcm._ghash(l,U,[0,0,Math.floor(h/4294967296),4294967295&h])),F=YV.mode.gcm._ghash(l,[0,0,0,0],i),Q=U.slice(0),s=F.slice(0),e||(s=YV.mode.gcm._ghash(l,F,n)),d=0;d<u;d+=4)Q[3]++,o=t.encrypt(Q),n[d]^=o[0],n[d+1]^=o[1],n[d+2]^=o[2],n[d+3]^=o[3];return n=V.clamp(n,B),e&&(s=YV.mode.gcm._ghash(l,F,n)),c=[Math.floor(R/4294967296),4294967295&R,Math.floor(B/4294967296),4294967295&B],s=YV.mode.gcm._ghash(l,s,c),o=t.encrypt(U),s[0]^=o[0],s[1]^=o[1],s[2]^=o[2],s[3]^=o[3],{tag:V.bitSlice(s,0,a),data:n}}};var jV,HV={webCryptoDecrypt:wV,decrypt:(jV=qt(Fn().mark((function e(t,n){var i,r;return Fn().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if("string"==typeof n&&(n=JSON.parse(n)),!n.enableSoftwareAES&&null!==(i=crypto)&&void 0!==i&&i.subtle){e.next=7;break}return e.next=4,_V(t,n);case 4:r=e.sent,e.next=18;break;case 7:return e.prev=7,e.next=10,wV(t,n);case 10:r=e.sent,e.next=18;break;case 13:return e.prev=13,e.t0=e.catch(7),e.next=17,_V(t,n);case 17:r=e.sent;case 18:return e.abrupt("return",r);case 19:case"end":return e.stop()}}),e,null,[[7,13]])}))),function(e,t){return jV.apply(this,arguments)})};function OV(e,t,n){function i(e,t){var n=parseInt(e.slice(t,t+2),16);return n>>>7==0?[1,n]:n>>>6==2?(n=(63&n)<<8,[2,n+=parseInt(e.slice(t+2,t+4),16)]):(n=(63&n)<<16,[3,n+=parseInt(e.slice(t+2,t+6),16)])}var r,a=0,l=[],U=[];for(r=0;r<4;++r)a+=(3&parseInt(e.slice(8+2*r,10+2*r),16))<<2*r;var F=parseInt(e.slice(16,24),16),o=2*parseInt(e.slice(32,40),16);for(r=40;r<o+40;r+=2)l.push(parseInt(e.slice(r,r+2),16));var d=o+40,Q=parseInt(e.slice(d,d+4),16);for(d+=4,r=0;r<Q;++r){var s=i(e,d);d+=2*s[0];for(var c="",u=0;u<s[1];++u){var B=i(e,d);c+=String.fromCharCode(a^B[1]),d+=2*B[0]}U.push(c)}return t.p=null,function e(t,n,i,r,a){var F,o,d,Q,s,c=-1,u=[],B=null,R=[n];for(o=Math.min(n.length,i),d=0;d<o;++d)R.push(n[d]);R.p=r;for(var h=[];;)try{switch(l[t++]){case 8:u[++c]=!0;break;case 70:u[++c]=!1;break;case 39:u[++c]=null;break;case 36:F=l[t++],u[++c]=F<<24>>24;break;case 50:F=((F=((F=l[t++])<<8)+l[t++])<<8)+l[t++],u[++c]=(F<<8)+l[t++];break;case 65:F=(l[t]<<8)+l[t+1],t+=2,u[++c]=U[F];break;case 33:u[++c]=void 0;break;case 35:u[++c]=a;break;case 52:F=(l[t]<<8)+l[t+1],t+=2,c=c-F+1,o=u.slice(c,c+F),u[c]=o;break;case 72:u[++c]={};break;case 27:F=(l[t]<<8)+l[t+1],t+=2,o=U[F],d=u[c--],u[c][o]=d;break;case 57:for(o=l[t++],d=l[t++],Q=R;o>0;--o)Q=Q.p;u[++c]=Q[d];break;case 28:F=(l[t]<<8)+l[t+1],t+=2,o=U[F],u[c]=u[c][o];break;case 73:o=u[c--],u[c]=u[c][o];break;case 17:for(o=l[t++],d=l[t++],Q=R;o>0;--o)Q=Q.p;Q[d]=u[c--];break;case 21:F=(l[t]<<8)+l[t+1],t+=2,o=U[F],d=u[c--],Q=u[c--],d[o]=Q;break;case 15:o=u[c--],d=u[c--],Q=u[c--],d[o]=Q;break;case 64:for(o=l[t++],d=l[t++],Q=R,Q=R;o>0;--o)Q=Q.p;u[++c]=Q,u[++c]=d;break;case 40:o=u[c--],u[c]+=o;break;case 75:u[c]=-u[c];break;case 16:o=u[c--],u[c]=u[c]===o;break;case 10:o=u[c--],u[c]=u[c]!==o;break;case 51:o=u[c--],u[c]=u[c]>o;break;case 59:u[c]=!u[c];break;case 53:F=(F=(l[t]<<8)+l[t+1])<<16>>16,t+=2,u[c]?--c:t+=F;break;case 74:F=(F=(l[t]<<8)+l[t+1])<<16>>16,t+=2,u[c]?t+=F:--c;break;case 66:o=u[c--],(d=u[c--])[o]=u[c];break;case 34:u[c]=void 0;break;case 14:u[c]=typeof u[c];break;case 30:F=l[t++],o=u[c--],(d=function e(){var t=e._v;return(0,e._u)(t[0],arguments,t[1],t[2],this)})._v=[o,F,R],d._u=e,u[++c]=d;break;case 46:F=l[t++],o=u[c--],(Q=[d=function e(){var t=e._v;return(0,e._u)(t[0],arguments,t[1],t[2],this)}]).p=R,d._v=[o,F,Q],d._u=e,u[++c]=d;break;case 48:throw o=u[c--];case 7:for(o=u[c--],d=null;Q=h.pop();)if(2===Q[0]||3===Q[0]){d=Q;break}if(d)t=d[2],d[0]=0,h.push(d);else{if(!B)return o;t=B[1],a=B[2],R=B[3],h=B[4],u[++c]=o,B=B[0]}break;case 12:c-=F=l[t++],d=u.slice(c+1,c+F+1),o=u[c--],Q=u[c--],o._u===e?(o=o._v,B=[B,t,a,R,h],t=o[0],null==Q&&(Q=function(){return this}()),a=Q,(R=[d].concat(d)).length=Math.min(o[1],F)+1,R.p=o[2],h=[]):(s=o.apply(Q,d),u[++c]=s);break;case 43:for(F=l[t++],Q=[void 0],s=F;s>0;--s)Q[s]=u[c--];d=u[c--],s=new(o=Function.bind.apply(d,Q)),u[++c]=s;break;case 31:t+=2+(F=(F=(l[t]<<8)+l[t+1])<<16>>16);break;case 25:F=(F=(l[t]<<8)+l[t+1])<<16>>16,t+=2,(o=u[c--])||(t+=F);break;case 41:F=(F=(l[t]<<8)+l[t+1])<<16>>16,t+=2,o=u[c--],u[c]===o&&(--c,t+=F);break;case 69:--c;break;case 44:o=u[c],u[++c]=o;break;default:throw new Error("ioe")}}catch(V){for(;(F=h.pop())&&!F[0];);if(!F){e:for(;B;){for(o=B[4];F=o.pop();)if(F[0])break e;B=B[0]}if(!B)throw V;t=B[1],a=B[2],R=B[3],h=B[4],B=B[0]}1===(o=F[0])?(t=F[2],F[0]=0,h.push(F),u[++c]=V):2===o?(t=F[2],F[0]=0,h.push(F)):(t=F[3],F[0]=2,h.push(F),u[++c]=V)}}(F,[],0,t,n)}e.TRANSFORM_IV=void 0,e.transformUnionKey=void 0,function(e,t,n){function i(e,t){var n=parseInt(e.slice(t,t+2),16);return n>>>7==0?[1,n]:n>>>6==2?(n=(63&n)<<8,[2,n+=parseInt(e.slice(t+2,t+4),16)]):(n=(63&n)<<16,[3,n+=parseInt(e.slice(t+2,t+6),16)])}var r,a=0,l=[],U=[];for(r=0;r<4;++r)a+=(3&parseInt(e.slice(8+2*r,10+2*r),16))<<2*r;var F=parseInt(e.slice(16,24),16),o=2*parseInt(e.slice(32,40),16);for(r=40;r<o+40;r+=2)l.push(parseInt(e.slice(r,r+2),16));var d=o+40,Q=parseInt(e.slice(d,d+4),16);for(d+=4,r=0;r<Q;++r){var s=i(e,d);d+=2*s[0];for(var c="",u=0;u<s[1];++u){var B=i(e,d);c+=String.fromCharCode(a^B[1]),d+=2*B[0]}U.push(c)}t.p=null,function e(t,n,i,r,a){var F,o,d,Q,s,c=-1,u=[],B=null,R=[n];for(o=Math.min(n.length,i),d=0;d<o;++d)R.push(n[d]);R.p=r;for(var h=[];;)try{switch(l[t++]){case 39:u[++c]=null;break;case 36:F=l[t++],u[++c]=F<<24>>24;break;case 22:F=(l[t]<<8)+l[t+1],t+=2,u[++c]=F<<16>>16;break;case 50:F=((F=((F=l[t++])<<8)+l[t++])<<8)+l[t++],u[++c]=(F<<8)+l[t++];break;case 65:F=(l[t]<<8)+l[t+1],t+=2,u[++c]=U[F];break;case 33:u[++c]=void 0;break;case 35:u[++c]=a;break;case 52:F=(l[t]<<8)+l[t+1],t+=2,c=c-F+1,o=u.slice(c,c+F),u[c]=o;break;case 72:u[++c]={};break;case 27:F=(l[t]<<8)+l[t+1],t+=2,o=U[F],d=u[c--],u[c][o]=d;break;case 57:for(o=l[t++],d=l[t++],Q=R;o>0;--o)Q=Q.p;u[++c]=Q[d];break;case 28:F=(l[t]<<8)+l[t+1],t+=2,o=U[F],u[c]=u[c][o];break;case 17:for(o=l[t++],d=l[t++],Q=R;o>0;--o)Q=Q.p;Q[d]=u[c--];break;case 21:F=(l[t]<<8)+l[t+1],t+=2,o=U[F],d=u[c--],Q=u[c--],d[o]=Q;break;case 66:o=u[c--],(d=u[c--])[o]=u[c];break;case 30:F=l[t++],o=u[c--],(d=function e(){var t=e._v;return(0,e._u)(t[0],arguments,t[1],t[2],this)})._v=[o,F,R],d._u=e,u[++c]=d;break;case 46:F=l[t++],o=u[c--],(Q=[d=function e(){var t=e._v;return(0,e._u)(t[0],arguments,t[1],t[2],this)}]).p=R,d._v=[o,F,Q],d._u=e,u[++c]=d;break;case 7:for(o=u[c--],d=null;Q=h.pop();)if(2===Q[0]||3===Q[0]){d=Q;break}if(d)t=d[2],d[0]=0,h.push(d);else{if(!B)return o;t=B[1],a=B[2],R=B[3],h=B[4],u[++c]=o,B=B[0]}break;case 12:c-=F=l[t++],d=u.slice(c+1,c+F+1),o=u[c--],Q=u[c--],o._u===e?(o=o._v,B=[B,t,a,R,h],t=o[0],null==Q&&(Q=function(){return this}()),a=Q,(R=[d].concat(d)).length=Math.min(o[1],F)+1,R.p=o[2],h=[]):(s=o.apply(Q,d),u[++c]=s);break;case 43:for(F=l[t++],Q=[void 0],s=F;s>0;--s)Q[s]=u[c--];d=u[c--],s=new(o=Function.bind.apply(d,Q)),u[++c]=s;break;case 31:t+=2+(F=(F=(l[t]<<8)+l[t+1])<<16>>16);break;case 25:F=(F=(l[t]<<8)+l[t+1])<<16>>16,t+=2,(o=u[c--])||(t+=F);break;case 41:F=(F=(l[t]<<8)+l[t+1])<<16>>16,t+=2,o=u[c--],u[c]===o&&(--c,t+=F);break;case 69:--c;break;case 44:o=u[c],u[++c]=o;break;default:throw new Error("ioe")}}catch(V){for(;(F=h.pop())&&!F[0];);if(!F){e:for(;B;){for(o=B[4];F=o.pop();)if(F[0])break e;B=B[0]}if(!B)throw V;t=B[1],a=B[2],R=B[3],h=B[4],B=B[0]}1===(o=F[0])?(t=F[2],F[0]=0,h.push(F),u[++c]=V):2===o?(t=F[2],F[0]=0,h.push(F)):(t=F[3],F[0]=2,h.push(F),u[++c]=V)}}(F,[],0,t,n)}("504B0101603cafe0000000d9e3ae3f600000011a3901012c1c0001233900000c020727390201273902020c002c1c000232000000382e020c010c011101013901012c1c0001233900000c0207273904020c002c1c0003320000004f2e013901000c020724011900833900011c00043900014100054224002900142403290046240529005a410006290054451f005a3906042c1c00073902020c0111020324033900011500043906032c1c0008390203483902011b00093906051b000a1600801b000b0c02073900011c000c1102043900012c1c000d41000e3902040c02073900012c1c000f0c00071fff78210732000000001e02110106320000000e1e00110001390100245b24682445244b16009c1600ab1600ee24471600ca24041600f4240534000c2b011c00001101052107001006524556565542055140405c49045d51425b0447425140045e554844044042554603555e54045851435807545553424940440454514451025946094451577c555e5744580443555e44065152424540440642554445425e0443445f40",{0:Uint8Array,get 1(){return qt},get 2(){return Fn},get 3(){return HV},get 4(){return gV},get 5(){return e.TRANSFORM_IV},set 5(t){e.TRANSFORM_IV=t},get 6(){return e.transformUnionKey},set 6(t){e.transformUnionKey=t}},void 0);var zV="volcvui",AV=new Map,qV=new Map,$V=void 0,ep=function(){function t(n){var i;return en(this,t),(i=$t(this,t)).EMEError=function(t){i.emit(e.EVENT_EME.ERROR,t)},i.encryptHandle=function(){var t;null===(t=i.eme)||void 0===t||t.emit(e.EVENT_EME.ENCRYPTED)},i.config=ep.defaultConfig,i.updateConfig(n),i.config.isEncrypt=!!(i.config.kid||i.config.drm||i.config.secretKey||i.config.drmKeyToken||i.config.keyValue),i.on(e.EVENT_EME.ENCRYPTED,i.encryptHandle),i}return ln(t,Jc),nn(t,[{key:"destroy",value:function(){this.removeAllListeners(),this.eme&&(this.eme.destroy(),this.eme=null)}},{key:"log",value:function(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),i=1;i<t;i++)n[i-1]=arguments[i];XB.apply(void 0,[e].concat(n))}},{key:"setupEME",value:function(e){this.eme&&this.eme.setupEME(e)}},{key:"updateConfig",value:function(e){var t=this;Object.keys(e).map((function(n){void 0!==e[n]&&null!==e[n]&&(t.config[n]=e[n])})),this.log("set config",JSON.stringify(this.config))}},{key:"setOptions",value:function(e){this.eme&&this.eme.setOptions(e)}},{key:"getSecretKeyByToken",value:function(e,t,n){var i=this,r=this.config,a=e||r.kid,l=t||r.playDomain||"";l.indexOf("//")<0&&(l="//".concat(l));var U=n||r.drmKeyToken||"",F=UR.isBase64(U)?window.atob(U):U,o="".concat(l,"?").concat(F,"&PlayAuthIds=").concat(a,"&ssl=true");F.indexOf("DrmType=")<0&&(o+="&DrmType=".concat(r.useUnionInfoDRM?"webdevice":"22")),this.log("getSecretKeyByToken start, vid,",r.vid,o);var d=Promise.withResolvers(),Q=d.promise,s=d.resolve,c=d.reject;return bB({type:"json",method:"GET",url:o}).then((function(e){var t,n,a=e.response;if("string"==typeof a&&(a=JSON.parse(a)),a&&null!==(t=a)&&void 0!==t&&t.Result&&(null===(n=a.Result.PlayAuthInfoList)||void 0===n?void 0:n.length)>0){var l=a.Result.PlayAuthInfoList[0].PlayAuthContent;i.log("getSecretKeyByToken end, vid,",r.vid,",res,",JSON.stringify(a)),s(l)}else c(new Error("getSecretKeyByToken end, vid, ".concat(r.vid,", response null")))})).catch((function(e){c(e)})),Q}},{key:"getLicense",value:function t(){return OV("504B0101603cafe00000031ee3ae3f60000003a1273903030c002c1c000b32000000222e0139010027240524203400023400010c040724011902f53900011c000c39000141000d4224002900462403290067240a290106240b29010a24132901e124162901f024172901f424192901fa241a2901fb24202902562425290288242729028e242929029a41000e290294451f029a4841000f1b0010461b0011110201240339000115000c3904012c1c001239020139040a0c02073904011c000040020242453902021c001340020342453902021c001440020442453904044a00033902034a00033902044a00093904011c00001c00153b19000b242739000115000c1f0229240539000115000d3904011c00001c00154a00033902041102073902034a00093904043500033904053b19000b240b39000115000c1f01f1240a39000115000c273905043904033902033904043904053904063905050c06073900011c001611020739040435000939020740020542270a3500073902052400220a3500063902051c001719000d3902071c0017390404491f00033902071102083904011c000040020a424539020a1c001840020b424539020a1c001940020c42453904012c1c001a0c0011020d3902083b35000d3904011c00001c0014400208424539020b35000339020d3500183905062c1c001b39020d1c001c39020d1c001d39020c0c033b19000b241939000115000c1f011a3905070e41001e103b19000b241639000115000c1f0103241339000115000c2739050739020839020d1c001d0c02073900011c0016110209241739000115000c1f00d739050841001f2b0130241a39000115000c1f00c339020811020939040435000939020740020642270a3500073902062400220a3500063902061c00171900163902093902071c00173904040f39020739020115001539020939020115001408390201150011273904093902010c0145242539000115000c1f005d242039000115000d3900012c4100204924050c01390001150021463902011500113900011c00213902011500222739040a3902010c0145242939000115000c1f001b08390201150011273904093902010c01453900012c1c00230c00071ffd06210723110001231c00001100023900021c00011100033900021c00021100043900021c00031100053900021c00041100063901012c1c00050c001100073900071c00061100083900071c00071100093900071c000811000a3901012c1c00070c002c1c000927390102273901030c002c1c000a32000000002e000c010c010c014539000807002406535f5e56595703465954035b59540d5755447c5953555e435565425c0754425d644940550d475944586255435f5c465542430740425f5d594355074255435f5c46550642555a555344044458555e045d51425b0447425140045e554844044042554603555e540a5755447c5953555e4355065d5544585f540743455353554343176f4442497755446355534255447b55497249645f5b555e094355534255447b5549085b554966515c45550354425d0443555e4409535c5551427b5549430f454355655e595f5e795e565f74627d175b5549645f5b555e754840594255547445425144595f5e0d6f575544655e595f5e795e565f15535855535b655e595f5e795e565f7548405942555407455e595f5e797409455e595f5e795e565f0856455e5344595f5e4964585510124442515e43565f425d655e595f5e7b5549121043585f455c541052551040425f465954555410595e10535f5e56595745425144595f5e10514310511056455e5344595f5e055351445358024400055542425f420443445f40",{get 0(){return t},1:Promise,get 2(){return qt},get 3(){return Fn},get 4(){return CB},get 5(){return $V},get 6(){return UR},get 7(){return void 0!==e.transformUnionKey?e.transformUnionKey:void 0},8:Error,9:arguments},this)}},{key:"_tryGetSecretKeyByToken",value:(i=qt(Fn().mark((function e(t,n){var i,r,a,l;return Fn().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(i=this.config,r=i.kid,a=i.drmKeyToken,l=i.playDomain,!(r&&a&&l)){e.next=14;break}return e.prev=2,e.next=5,this.getSecretKeyByToken(r,l,a);case 5:this.config.secretKey=e.sent,t.success=!0,e.next=14;break;case 9:e.prev=9,e.t0=e.catch(2),t.success=!1,t.error=e.t0,n(t);case 14:case"end":return e.stop()}}),e,this,[[2,9]])}))),function(e,t){return i.apply(this,arguments)})},{key:"updateKid",value:function e(t){return OV("504B0101603cafe000000000e3ae3f6000000017231c000035000d231c00002c1c00013901020c01452107000203555d55094540545144557b5954",{get 0(){return e},1:arguments,2:t},this)}},{key:"getLicenseSecret",value:function t(){return OV("504B0101603cafe00000032ce3ae3f600000048a3901012c1c000c3902021c000b3900010c024521073901012c1c000c3902021c000d3900010c02452107273903070c002c1c001e320000004c2e0139010027240b241e3400023400010c040724011902d93900011c001f39000141002042240029004124032900622405290089240a2900e0240b2900e4240f290115241029011924172901d124182901d524192901ee241e290251242329028341002129027d451f0283484100221b0023461b0024110201240339000115001f3904012c1c002539020139040f0c02073902011c00243b3500063902011c00263b19000b240539000115001f1f023e3900012c1c00274100280c01073904011c00001c00291102023902023b3500043904073b3b19000b240b39000115001f1f020b3904043500033904053b19000b240b39000115001f1f01f3240a39000115001f273905083904034a000341002a3904043904050c03073900011c002b110202240b3900011500203904083905091c002c103b19000b241039000115001f1f01ab240f39000115001f2739050a39020239050b0c02073900011c002b1102023904061900273904071900093904071102021f00183902021900122739050c2739050d3902020c010c011102023904011c000040020342453902031c002d40020442453902031c002e40020542453904012c1c002f0c0011020639020435000339020635001839050e2c1c00303902061c00313902061c00323902050c033b19000b241939000115001f1f01003904063500033902023b19000b241839000115001f1f00e8241739000115001f2739050f3902023902061c00320c02073900011c002b11020239050e2c1c00333905102c1c00343902061c00320c010c0139020115003539040619003d48481b00361102073904044a00033905111102083902023902071c00363902080f3904011c00072c1c00173902070c01452400223902011500291f0009390202390201150029083902011500242739040e3902010c0145242339000115001f1f0041241e3900011500203900012c41003749240b0c01390001150038463902011500243900011c00383902011500262739040f3902010c01453900012c1c00390c00071ffd22210723110001231c00001100023900021c00011100033900021c00021100043900021c00031100053900021c00041100063900021c00051100073900021c0006110008231c00001c00041900bf3901012b0023150007231c00072c1c00083901021c0009231c000a0c0245231c00072c1c00083901021c000b32000000001e010c0245231c00072c1c00083901021c000d32000000151e010c0245231c00001c000e11000939000435000339000919005b3901031c000f1c00102c1c00110c002c1c00124100130c0124014b331900064100141f000341001511000a273901044839000a48390009390004281b00160c0311000b231c00072c1c001739000b0c01453901052c1c00180c00073901052c1c00190c0011000c39000c1c001a11000d39000c1c001811000e39000c1c001b11000f3901052c1c00180c002c1c001c27390106273901070c002c1c001d320000002a2e000c010c010c014539000d07003a06535f5e56595703465954035b59540d5755447c5953555e435565425c06454355757d75085b554966515c45550754425d6449405503555d55025f5e057562627f6208757d757542425f421373747d6f7c7973757e63756f6365737375636304555d59441173747d6f7c7973757e63756f7562627f6213595e445542444245434463554246554265627c095e5146595751445f4209454355427157555e4411445f7c5f53515c557c5f4755427351435507595e5455487f56065358425f5d55084759545546595e5509405c514942555154490943554246554265627c0945405451445574425d074255435f5c46550d475944586255435f5c465542430740425f5d5943550642555a555344044458555e045d51425b0447425140045e554844044042554603555e540a5755447c5953555e4355065d5544585f540743455353554343176f4442497755446355534255447b55497249645f5b555e055542425f42065152424540440642554445425e094355534255447b5549000443555e4417606279667164756f757e73626960646f656077627174750f454355655e595f5e795e565f74627d175b5549645f5b555e754840594255547445425144595f5e0d6f575544655e595f5e795e565f15535855535b655e595f5e795e565f7548405942555407455e595f5e797409455e595f5e795e565f13634442595e57645f714242514972455656554204585143580a545553424940447b554909535c5551427b5549430553514453580244000443445f40",{get 0(){return t},get 1(){return dR},get 2(){return e.EVENT_EME},get 3(){return window},get 4(){return rn},5:Promise,get 6(){return qt},get 7(){return Fn},get 8(){return TB},get 9(){return vB},get 10(){return LB},get 11(){return $V},get 12(){return kB},get 13(){return atob},get 14(){return UR},get 15(){return e.transformUnionKey},get 16(){return gV},get 17(){return tR},18:arguments},this)}},{key:"getSecretKey",value:function(){var e=this.config,t=e.vid,n=e.kid,i=e.getLicenseUrl,r=e.drmKeyToken,a=e.playDomain,l=e.secretKey;return i&&n?TB(t||"",n,i):r&&n&&a?this.getSecretKeyByToken(n,a,r):l||(console.error("[DRM]DRM,getSecretKey args is invalid"),null)}},{key:"getKeyValue",value:function e(){return OV("504B0101603cafe000000000e3ae3f600000004d231c00001100013900011c00011100023900011c00021100033900011c00031100043900011c00041100053900011c0005110006273901013900023900053900033900043900063901020c0607000606535f5e56595703465954035b59540d5755447c5953555e435565425c094355534255447b55490754425d64494055",{get 0(){return e},get 1(){return CB},get 2(){return $V},3:arguments},this)}},{key:"_getUnionInfo",value:function(){var e=this.config,t=e.drmType,n=e.sessionId;if(!e.useUnionInfoDRM||!n)return null;var i=t===vB.PRIVATE_ENCRYPT_UPGRADE?qV:AV;if(!i.get(n))throw new Error('The "sessionId" '.concat(n," for unionInfo is not valid"));return i.get(n)}}],[{key:"pluginName",get:function(){return"XGSecretKey"}},{key:"defaultConfig",get:function(){return{keyValue:void 0,kid:void 0,getLicenseUrl:"",secretKey:void 0,drm:void 0,drmType:void 0,vid:"",useUnionInfoDRM:!1,transformUnionKey:void 0,drmKeyToken:void 0,keyTokenExpiredDuration:void 0,playDomain:void 0,sessionId:zV,useEME:!0,intertrustServerURL:void 0}}},{key:"updateUnionInfo",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:zV,n=UR.getUnionInfo(e);return AV.set(t,{unionID:e,unionInfo:n}),n}},{key:"generateEncryptInfo",value:(n=qt(Fn().mark((function e(){var t,n,i,r,a,l,U=arguments;return Fn().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t=U.length>0&&void 0!==U[0]?U[0]:"",n=U.length>1&&void 0!==U[1]?U[1]:zV,e.next=4,IV();case 4:return i=e.sent,r=i.drmKeK,a=i.keyPair,l=UR.getUnionInfo(t),qV.set(n,{unionID:t,unionInfo:l}),$V=a,e.abrupt("return",{sessionId:n,unionInfo:l,drmKeK:r});case 11:case"end":return e.stop()}}),e)}))),function(){return n.apply(this,arguments)})}]);var n,i}(),tp=ep;tp.isWebAssemblySupported=xB,e.XGSecretKey=tp,e.aes4js=HV,e.util=UR})(A.exports);var q,$,ee=A.exports,te=function(){return N((function e(t,n,i,r){var a=this;b(this,e),this.config=e.getDefaultConfig(),this.bitrate=0,r&&Object.keys(r).map((function(e){void 0!==r[e]&&null!==r[e]&&(a.config[e]=r[e])})),this.duration=i,this.player=t,this.updateBitrate(n)}),[{key:"updateBitrate",value:function(e){this.bitrate=e,this.bitrate||(this.bitrate=this.config.minBandwidth)}},{key:"getAdaptLoadDuration",value:function(){var e=this.player,t=this.config;if(!t.rangeControl)return-1;var n=(null==e?void 0:e.bufferedPoint)||null,i=e&&null!=n&&n.end?n.end-e.currentTime:0;return Math.max(t.rangeMaxDuration-i,t.rangeMinDuration)}},{key:"getAdaptCacheBuffer",value:function(){var e=this.player,t=this.config,n=this.bitrate;if(!t.targetCacheControl)return-1;var i=t.estPlayTime,r=i;if(t.estPTcontrol){var a=this.duration||(null==e?void 0:e.duration)||0,l=(null==e?void 0:e.currentTime)||0;r=Math.min(i,a-l)}var U=e&&1024*e.avgSpeed||0,F=Math.max(t.safeFactor*U,t.minBandwidth);null!=e&&e.avgSpeed&&(F=t.safeFactor*U);var o=n>0?Math.floor((1-F/n)*r):0;return o=t.minDangerThreshold+Math.max(o,0),Math.min(Math.max(t.cacheSafeFactor*o,t.minTargetCacheDur),t.maxTargetCacheDur)}}],[{key:"getDefaultConfig",value:function(){return{rangeMaxDuration:15,rangeMinDuration:5,rangeMinSize:409600,safeFactor:.1,cacheSafeFactor:3,minDangerThreshold:5,estPlayTime:12,minBandwidth:1e6,estPTcontrol:!1,minTargetCacheDur:30,maxTargetCacheDur:60,targetCacheControl:!1,rangeControl:!1}}}])}(),ne=function(e){return e.MP4="MP4",e.MP4_MSE_SOFT="MP4_MSE_SOFT",e.MP4_MSE="MP4_MSE",e.MP4_0="MP4_0",e.MP4_1="MP4_1",e.MP4_2="MP4_2",e.DASH="DASH",e.HLS="HLS",e}(ne||{}),ie=function(e){return e[e.Normal=0]="Normal",e[e.Ad=1]="Ad",e}(ie||{}),re=function(e){return e[e.AVC=0]="AVC",e[e.HEVC=1]="HEVC",e[e.VVC=2]="VVC",e.H264="h264",e.H265="h265",e.H266="h266",e}(re||{}),ae="cdn",le={BEFEORE_START:0,NOT_SUPPORTED:1,START_INIT_DESTROY:2,NO_PRELOAD:3,CLOSE_DWNGRADE:4,INIT_PROMISE_CATCH:5,PLAYER_ERROR:6,HTTP_ERROR:7,MSE_ERROR:8,DESTROY:9},Ue=T(T(T(T(T(T(T(T(T(T({},le.BEFEORE_START,"before start"),le.NOT_SUPPORTED,"codec not support"),le.START_INIT_DESTROY,"start init destroy"),le.NO_PRELOAD,"no preload"),le.CLOSE_DWNGRADE,"close downgrade"),le.INIT_PROMISE_CATCH,"init promise catch"),le.PLAYER_ERROR,"player error"),le.HTTP_ERROR,"http error"),le.MSE_ERROR,"mse error"),le.DESTROY,"destroy"),Fe=function(e){return e.CHANGE_FLYING_PLUGIN_CONFIG="CHANGE_FLYING_PLUGIN_CONFIG",e}(Fe||{}),oe=function(e){function t(){var e;return b(this,t),(e=E(this,t,arguments))._ploys=[],e}return x(t,e),N(t,[{key:"_findIndexFromPloys",value:function(e){for(var t=-1,n=this._ploys,i=0;i<n.length;i++)if(n[i]===e){t=i;break}return t}},{key:"_checkStrategy",value:function(e){return!(null==e||!e.start||!e.stop||this._findIndexFromPloys(e)>-1)}},{key:"registerStrategy",value:function(e){var t=this;e&&(Array.isArray(e)||(e=[e]),e.forEach((function(e){var n=e.Strategy,i=e.config;if(i)try{var r=new n(i,t);t._checkStrategy(r)&&(r.start(),t._ploys.push(r))}catch(a){console.log("InstStrategy Error:",a)}})))}},{key:"unregisterStrategy",value:function(e){if(e){e.stop();var t=this._findIndexFromPloys(e);t>-1&&this._ploys.splice(t,1)}else this._ploys.forEach((function(e){e.stop()})),this._ploys.splice(0,this._ploys.length)}},{key:"updateStrategyConfig",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];e&&t&&this._ploys.forEach((function(i){i instanceof e&&i.updateConfig(t,n)}))}},{key:"setActive",value:function(e,n){var i=K(t,"setActive",this,3)([e,n]);return this.emit("UPDATE_INST_ORDER"),i}},{key:"setNext",value:function(e){var n=K(t,"setNext",this,3)([e]);return this.emit("UPDATE_INST_ORDER"),n}}],[{key:"getInstance",value:function(){return q||(q=new t),q}}])}(W.InstManager||Object.prototype.constructor),de=function(e){function t(e){var n;b(this,t);var i=n=E(this,t,[e]),r=i.player,a=i.playerConfig;return n.playerId=r.playerId,n.codecType=a.codecType?a.codecType.toLowerCase():re.H264,n.bizType=r.bizType="number"==typeof a.bizType?a.bizType:ie.Normal,a.vtype&&(n.vtype=a.vtype.toUpperCase()),$&&(r.preloader=$),n}return x(t,e),N(t,[{key:"softDecode",get:function(){var e;return"xg-video"===(null===(e=this.playerConfig)||void 0===e?void 0:e.mediaType)}}],[{key:"registerPreloader",value:function(e){e&&($=e,oe.getInstance().findAll((function(e){return e.config.isLive||(e.preloader=$),!1})))}}])}(W.BasePlugin);function Qe(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function se(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Qe(Object(n),!0).forEach((function(t){me(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Qe(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function ce(){ce=function(){return e};var e={},t=Object.prototype,n=t.hasOwnProperty,i=Object.defineProperty||function(e,t,n){e[t]=n.value},r="function"==typeof Symbol?Symbol:{},a=r.iterator||"@@iterator",l=r.asyncIterator||"@@asyncIterator",U=r.toStringTag||"@@toStringTag";function F(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{F({},"")}catch(E){F=function(e,t,n){return e[t]=n}}function o(e,t,n,r){var a=t&&t.prototype instanceof s?t:s,l=Object.create(a.prototype),U=new f(r||[]);return i(l,"_invoke",{value:Z(e,n,U)}),l}function d(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(E){return{type:"throw",arg:E}}}e.wrap=o;var Q={};function s(){}function c(){}function u(){}var B={};F(B,a,(function(){return this}));var R=Object.getPrototypeOf,h=R&&R(R(y([])));h&&h!==t&&n.call(h,a)&&(B=h);var V=u.prototype=s.prototype=Object.create(B);function p(e){["next","throw","return"].forEach((function(t){F(e,t,(function(e){return this._invoke(t,e)}))}))}function m(e,t){function r(i,a,l,U){var F=d(e[i],e,a);if("throw"!==F.type){var o=F.arg,Q=o.value;return Q&&"object"==typeof Q&&n.call(Q,"__await")?t.resolve(Q.__await).then((function(e){r("next",e,l,U)}),(function(e){r("throw",e,l,U)})):t.resolve(Q).then((function(e){o.value=e,l(o)}),(function(e){return r("throw",e,l,U)}))}U(F.arg)}var a;i(this,"_invoke",{value:function(e,n){function i(){return new t((function(t,i){r(e,n,t,i)}))}return a=a?a.then(i,i):i()}})}function Z(e,t,n){var i="suspendedStart";return function(r,a){if("executing"===i)throw new Error("Generator is already running");if("completed"===i){if("throw"===r)throw a;return{value:void 0,done:!0}}for(n.method=r,n.arg=a;;){var l=n.delegate;if(l){var U=S(l,n);if(U){if(U===Q)continue;return U}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if("suspendedStart"===i)throw i="completed",n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);i="executing";var F=d(e,t,n);if("normal"===F.type){if(i=n.done?"completed":"suspendedYield",F.arg===Q)continue;return{value:F.arg,done:n.done}}"throw"===F.type&&(i="completed",n.method="throw",n.arg=F.arg)}}}function S(e,t){var n=t.method,i=e.iterator[n];if(void 0===i)return t.delegate=null,"throw"===n&&e.iterator.return&&(t.method="return",t.arg=void 0,S(e,t),"throw"===t.method)||"return"!==n&&(t.method="throw",t.arg=new TypeError("The iterator does not provide a '"+n+"' method")),Q;var r=d(i,e.iterator,t.arg);if("throw"===r.type)return t.method="throw",t.arg=r.arg,t.delegate=null,Q;var a=r.arg;return a?a.done?(t[e.resultName]=a.value,t.next=e.nextLoc,"return"!==t.method&&(t.method="next",t.arg=void 0),t.delegate=null,Q):a:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,Q)}function J(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function W(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function f(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(J,this),this.reset(!0)}function y(e){if(e){var t=e[a];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var i=-1,r=function t(){for(;++i<e.length;)if(n.call(e,i))return t.value=e[i],t.done=!1,t;return t.value=void 0,t.done=!0,t};return r.next=r}}return{next:k}}function k(){return{value:void 0,done:!0}}return c.prototype=u,i(V,"constructor",{value:u,configurable:!0}),i(u,"constructor",{value:c,configurable:!0}),c.displayName=F(u,U,"GeneratorFunction"),e.isGeneratorFunction=function(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===c||"GeneratorFunction"===(t.displayName||t.name))},e.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,u):(e.__proto__=u,F(e,U,"GeneratorFunction")),e.prototype=Object.create(V),e},e.awrap=function(e){return{__await:e}},p(m.prototype),F(m.prototype,l,(function(){return this})),e.AsyncIterator=m,e.async=function(t,n,i,r,a){void 0===a&&(a=Promise);var l=new m(o(t,n,i,r),a);return e.isGeneratorFunction(n)?l:l.next().then((function(e){return e.done?e.value:l.next()}))},p(V),F(V,U,"Generator"),F(V,a,(function(){return this})),F(V,"toString",(function(){return"[object Generator]"})),e.keys=function(e){var t=Object(e),n=[];for(var i in t)n.push(i);return n.reverse(),function e(){for(;n.length;){var i=n.pop();if(i in t)return e.value=i,e.done=!1,e}return e.done=!0,e}},e.values=y,f.prototype={constructor:f,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(W),!e)for(var t in this)"t"===t.charAt(0)&&n.call(this,t)&&!isNaN(+t.slice(1))&&(this[t]=void 0)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var t=this;function i(n,i){return l.type="throw",l.arg=e,t.next=n,i&&(t.method="next",t.arg=void 0),!!i}for(var r=this.tryEntries.length-1;r>=0;--r){var a=this.tryEntries[r],l=a.completion;if("root"===a.tryLoc)return i("end");if(a.tryLoc<=this.prev){var U=n.call(a,"catchLoc"),F=n.call(a,"finallyLoc");if(U&&F){if(this.prev<a.catchLoc)return i(a.catchLoc,!0);if(this.prev<a.finallyLoc)return i(a.finallyLoc)}else if(U){if(this.prev<a.catchLoc)return i(a.catchLoc,!0)}else{if(!F)throw new Error("try statement without catch or finally");if(this.prev<a.finallyLoc)return i(a.finallyLoc)}}}},abrupt:function(e,t){for(var i=this.tryEntries.length-1;i>=0;--i){var r=this.tryEntries[i];if(r.tryLoc<=this.prev&&n.call(r,"finallyLoc")&&this.prev<r.finallyLoc){var a=r;break}}a&&("break"===e||"continue"===e)&&a.tryLoc<=t&&t<=a.finallyLoc&&(a=null);var l=a?a.completion:{};return l.type=e,l.arg=t,a?(this.method="next",this.next=a.finallyLoc,Q):this.complete(l)},complete:function(e,t){if("throw"===e.type)throw e.arg;return"break"===e.type||"continue"===e.type?this.next=e.arg:"return"===e.type?(this.rval=this.arg=e.arg,this.method="return",this.next="end"):"normal"===e.type&&t&&(this.next=t),Q},finish:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),W(n),Q}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var i=n.completion;if("throw"===i.type){var r=i.arg;W(n)}return r}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,n){return this.delegate={iterator:y(e),resultName:t,nextLoc:n},"next"===this.method&&(this.arg=void 0),Q}},e}function ue(e){return(ue="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function Be(e,t,n,i,r,a,l){try{var U=e[a](l),F=U.value}catch(o){return void n(o)}U.done?t(F):Promise.resolve(F).then(i,r)}function Re(e){return function(){var t=this,n=arguments;return new Promise((function(i,r){var a=e.apply(t,n);function l(e){Be(a,i,r,l,U,"next",e)}function U(e){Be(a,i,r,l,U,"throw",e)}l(void 0)}))}}function he(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function Ve(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,Te(i.key),i)}}function pe(e,t,n){return t&&Ve(e.prototype,t),n&&Ve(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e}function me(e,t,n){return(t=Te(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Ze(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&Je(e,t)}function Se(e){return(Se=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function Je(e,t){return(Je=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e})(e,t)}function We(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}function fe(e,t,n){return(fe=We()?Reflect.construct.bind():function(e,t,n){var i=[null];i.push.apply(i,t);var r=new(Function.bind.apply(e,i));return n&&Je(r,n.prototype),r}).apply(null,arguments)}function ye(e){var t="function"==typeof Map?new Map:void 0;return ye=function(e){if(null===e||(n=e,-1===Function.toString.call(n).indexOf("[native code]")))return e;var n;if("function"!=typeof e)throw new TypeError("Super expression must either be null or a function");if(void 0!==t){if(t.has(e))return t.get(e);t.set(e,i)}function i(){return fe(e,arguments,Se(this).constructor)}return i.prototype=Object.create(e.prototype,{constructor:{value:i,enumerable:!1,writable:!0,configurable:!0}}),Je(i,e)},ye(e)}function ke(e,t){if(null==e)return{};var n,i,r=function(e,t){if(null==e)return{};var n,i,r={},a=Object.keys(e);for(i=0;i<a.length;i++)n=a[i],t.indexOf(n)>=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(i=0;i<a.length;i++)n=a[i],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}function Ee(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function be(e){var t=We();return function(){var n,i=Se(e);if(t){var r=Se(this).constructor;n=Reflect.construct(i,arguments,r)}else n=i.apply(this,arguments);return function(e,t){if(t&&("object"==typeof t||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return Ee(e)}(this,n)}}function ve(){return ve="undefined"!=typeof Reflect&&Reflect.get?Reflect.get.bind():function(e,t,n){var i=function(e,t){for(;!Object.prototype.hasOwnProperty.call(e,t)&&null!==(e=Se(e)););return e}(e,t);if(i){var r=Object.getOwnPropertyDescriptor(i,t);return r.get?r.get.call(arguments.length<3?e:n):r.value}},ve.apply(this,arguments)}function Ne(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,i=new Array(t);n<t;n++)i[n]=e[n];return i}function ge(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(e){if("string"==typeof e)return Ne(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Ne(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var i=0,r=function(){};return{s:r,n:function(){return i>=e.length?{done:!0}:{done:!1,value:e[i++]}},e:function(e){throw e},f:r}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,l=!0,U=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return l=e.done,e},e:function(e){U=!0,a=e},f:function(){try{l||null==n.return||n.return()}finally{if(U)throw a}}}}function Te(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var i=n.call(e,t||"default");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}function Ce(){var e,t,n=new Promise((function(n,i){e=n,t=i}));return n.used=!1,n.resolve=function(){return n.used=!0,e.apply(void 0,arguments)},n.reject=function(){return n.used=!0,t.apply(void 0,arguments)},n}var Le={DEBUG:1,LOG:2,WARN:3,ERROR:4},xe=["Boolean","Number","String","Undefined","Null","Date","Object"],Xe=function(){function e(t,n){he(this,e),this.name=t||"",this._prefix="[".concat(this.name,"]"),this.logCacheLevel=(null==n?void 0:n.logCacheLevel)||3,this.logMaxSize=(null==n?void 0:n.logMaxSize)||204800,this.logSize=0,this.logTextArray=[]}return pe(e,[{key:"debug",value:function(){for(var t,n=arguments.length,i=new Array(n),r=0;r<n;r++)i[r]=arguments[r];this.logCache.apply(this,[Le.DEBUG].concat(i)),e.disabled||(t=console).debug.apply(t,[this._prefix,De()].concat(i))}},{key:"log",value:function(){for(var t,n=arguments.length,i=new Array(n),r=0;r<n;r++)i[r]=arguments[r];this.logCache.apply(this,[Le.LOG].concat(i)),e.disabled||(t=console).log.apply(t,[this._prefix,De()].concat(i))}},{key:"warn",value:function(){for(var t,n=arguments.length,i=new Array(n),r=0;r<n;r++)i[r]=arguments[r];this.logCache.apply(this,[Le.WARN].concat(i)),e.disabled||(t=console).warn.apply(t,[this._prefix,De()].concat(i))}},{key:"error",value:function(){for(var t,n=arguments.length,i=new Array(n),r=0;r<n;r++)i[r]=arguments[r];this.logCache.apply(this,[Le.ERROR].concat(i)),e.disabled||(t=console).error.apply(t,[this._prefix,De()].concat(i))}},{key:"logCache",value:function(e){if(!(e<this.logCacheLevel)){var t="";try{for(var n=arguments.length,i=new Array(n>1?n-1:0),r=1;r<n;r++)i[r-1]=arguments[r];var a=i.map((function(e){return Ie(e)}));t=this._prefix+De()+JSON.stringify(a)}catch(U){return}if(e>=this.logCacheLevel&&(this.logSize+=t.length,this.logTextArray.push(t)),this.logSize>this.logMaxSize){var l=this.logTextArray.shift();this.logSize-=l.length}}}},{key:"getLogCache",value:function(){var e=this.logTextArray.join("\n");return this.reset(),e}},{key:"reset",value:function(){this.logTextArray=[],this.logSize=0}},{key:"table",value:function(){var t;e.disabled||(console.group(this._prefix),(t=console).table.apply(t,arguments),console.groupEnd())}},{key:"setLogLevel",value:function(e){this.logCacheLevel=e}}],[{key:"enable",value:function(){e.disabled=!1}},{key:"disable",value:function(){e.disabled=!0}}]),e}();function De(){return(new Date).toLocaleString()}function Ge(e){if("object"!==ue(e))return e;var t=Object.prototype.toString.call(e).slice(8,-1);switch(t){case"Array":case"Uint8Array":case"ArrayBuffer":return t+"["+e.length+"]";case"Object":return"{}";default:return t}}function Ie(e,t,n){n||(n=1),t||(t=2);var i={};if(!e||"object"!==ue(e))return e;var r=Object.prototype.toString.call(e).slice(8,-1);if(!xe.includes(r))return r;if(!(n>t)){for(var a in e)Object.prototype.hasOwnProperty.call(e,a)&&(n===t?i[a]=Ge(e[a]):"object"===ue(e[a])?i[a]=Ie(e[a],t,n+1):i[a]=e[a]);return i}}me(Xe,"disabled",!0);var Me="fetch",Ye="xhr",we="arraybuffer",Ke="text",_e="json",Pe=function(e){Ze(n,e);var t=be(n);function n(e,i,r,a){var l;return he(this,n),me(Ee(l=t.call(this,a)),"retryCount",0),me(Ee(l),"isTimeout",!1),me(Ee(l),"loaderType",Me),me(Ee(l),"startTime",0),me(Ee(l),"endTime",0),me(Ee(l),"options",{}),l.url=e,l.request=i,l.response=r,l}return pe(n)}(ye(Error)),je=Object.prototype.toString;function He(e){if("[object Object]"!==je.call(e))return!1;var t=Object.getPrototypeOf(e);return null===t||t===Object.prototype}function Oe(e){if(e&&null!==e[0]&&void 0!==e[0]&&(0!==e[0]||null!==e[1]&&void 0!==e[1])){var t="bytes="+e[0]+"-";return e[1]&&(t+=e[1]),t}}function ze(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}function Ae(e,t){if(e){if(!t)return e;var n,i=Object.keys(t).map((function(e){if(null!=(n=t[e]))return Array.isArray(n)?e+="[]":n=[n],n.map((function(t){var n;return n=t,"[object Date]"===je.call(n)?t=t.toISOString():function(e){return null!==e&&"object"===ue(e)}(t)&&(t=JSON.stringify(t)),"".concat(ze(e),"=").concat(ze(t))})).join("&")})).filter(Boolean).join("&");if(i){var r=e.indexOf("#");-1!==r&&(e=e.slice(0,r)),e+=(-1===e.indexOf("?")?"?":"&")+i}return e}}function qe(e,t,n,i,r,a,l,U,F,o,d){return r=null!=r?parseFloat(r):null,i=parseInt(i||"0",10),Number.isNaN(i)&&(i=0),{data:e,done:t,options:{range:F,vid:o,index:U,contentLength:i,age:r,startTime:a,firstByteTime:l,endTime:Date.now(),priOptions:d},response:n}}function $e(e,t){return Math.round(8*e*1e3/t/1024)}var et="real_time_speed",tt={exports:{}};!function(e){var t=Object.prototype.hasOwnProperty,n="~";function i(){}function r(e,t,n){this.fn=e,this.context=t,this.once=n||!1}function a(e,t,i,a,l){if("function"!=typeof i)throw new TypeError("The listener must be a function");var U=new r(i,a||e,l),F=n?n+t:t;return e._events[F]?e._events[F].fn?e._events[F]=[e._events[F],U]:e._events[F].push(U):(e._events[F]=U,e._eventsCount++),e}function l(e,t){0==--e._eventsCount?e._events=new i:delete e._events[t]}function U(){this._events=new i,this._eventsCount=0}Object.create&&(i.prototype=Object.create(null),(new i).__proto__||(n=!1)),U.prototype.eventNames=function(){var e,i,r=[];if(0===this._eventsCount)return r;for(i in e=this._events)t.call(e,i)&&r.push(n?i.slice(1):i);return Object.getOwnPropertySymbols?r.concat(Object.getOwnPropertySymbols(e)):r},U.prototype.listeners=function(e){var t=n?n+e:e,i=this._events[t];if(!i)return[];if(i.fn)return[i.fn];for(var r=0,a=i.length,l=new Array(a);r<a;r++)l[r]=i[r].fn;return l},U.prototype.listenerCount=function(e){var t=n?n+e:e,i=this._events[t];return i?i.fn?1:i.length:0},U.prototype.emit=function(e,t,i,r,a,l){var U=n?n+e:e;if(!this._events[U])return!1;var F,o,d=this._events[U],Q=arguments.length;if(d.fn){switch(d.once&&this.removeListener(e,d.fn,void 0,!0),Q){case 1:return d.fn.call(d.context),!0;case 2:return d.fn.call(d.context,t),!0;case 3:return d.fn.call(d.context,t,i),!0;case 4:return d.fn.call(d.context,t,i,r),!0;case 5:return d.fn.call(d.context,t,i,r,a),!0;case 6:return d.fn.call(d.context,t,i,r,a,l),!0}for(o=1,F=new Array(Q-1);o<Q;o++)F[o-1]=arguments[o];d.fn.apply(d.context,F)}else{var s,c=d.length;for(o=0;o<c;o++)switch(d[o].once&&this.removeListener(e,d[o].fn,void 0,!0),Q){case 1:d[o].fn.call(d[o].context);break;case 2:d[o].fn.call(d[o].context,t);break;case 3:d[o].fn.call(d[o].context,t,i);break;case 4:d[o].fn.call(d[o].context,t,i,r);break;default:if(!F)for(s=1,F=new Array(Q-1);s<Q;s++)F[s-1]=arguments[s];d[o].fn.apply(d[o].context,F)}}return!0},U.prototype.on=function(e,t,n){return a(this,e,t,n,!1)},U.prototype.once=function(e,t,n){return a(this,e,t,n,!0)},U.prototype.removeListener=function(e,t,i,r){var a=n?n+e:e;if(!this._events[a])return this;if(!t)return l(this,a),this;var U=this._events[a];if(U.fn)U.fn!==t||r&&!U.once||i&&U.context!==i||l(this,a);else{for(var F=0,o=[],d=U.length;F<d;F++)(U[F].fn!==t||r&&!U[F].once||i&&U[F].context!==i)&&o.push(U[F]);o.length?this._events[a]=1===o.length?o[0]:o:l(this,a)}return this},U.prototype.removeAllListeners=function(e){var t;return e?(t=n?n+e:e,this._events[t]&&l(this,t)):(this._events=new i,this._eventsCount=0),this},U.prototype.off=U.prototype.removeListener,U.prototype.addListener=U.prototype.on,U.prefixed=n,U.EventEmitter=U,e.exports=U}(tt);var nt=tt.exports,it=z(nt),rt=2097152,at=function(e){Ze(i,e);var t,n=be(i);function i(){var e;return he(this,i),me(Ee(e=n.call(this)),"_abortController",null),me(Ee(e),"_timeoutTimer",null),me(Ee(e),"_reader",null),me(Ee(e),"_response",null),me(Ee(e),"_aborted",!1),me(Ee(e),"_index",-1),me(Ee(e),"_range",null),me(Ee(e),"_receivedLength",0),me(Ee(e),"_running",!1),me(Ee(e),"_logger",null),me(Ee(e),"_vid",""),me(Ee(e),"_onProcessMinLen",0),me(Ee(e),"_onCancel",null),me(Ee(e),"_priOptions",null),e}return pe(i,[{key:"load",value:function(e){var t,n=this,i=e.url,r=e.vid,a=e.timeout,l=e.responseType,U=e.onProgress,F=e.index,o=e.onTimeout,d=e.onCancel,Q=e.range,s=e.transformResponse,c=e.request,u=e.params,B=e.logger,R=e.method,h=e.headers,V=e.body,p=e.mode,m=e.credentials,Z=e.cache,S=e.redirect,J=e.referrer,W=e.referrerPolicy,f=e.onProcessMinLen,y=e.priOptions;this._logger=B,this._aborted=!1,this._onProcessMinLen=f,this._onCancel=d,this._abortController="undefined"!=typeof AbortController&&new AbortController,this._running=!0,this._index=F,this._range=Q||[0,0],this._vid=r||i,this._priOptions=y||{};var k={method:R,headers:h,body:V,mode:p,credentials:m,cache:Z,redirect:S,referrer:J,referrerPolicy:W,signal:null===(t=this._abortController)||void 0===t?void 0:t.signal},E=!1;clearTimeout(this._timeoutTimer),i=Ae(i,u);var b=Oe(Q);b&&(h=c?c.headers:k.headers=k.headers||(Headers?new Headers:{}),Headers&&h instanceof Headers?h.append("Range",b):h.Range=b),a&&(this._timeoutTimer=setTimeout((function(){if(E=!0,n.cancel(),o){var e=new Pe(i,k,null,"timeout");e.isTimeout=!0,o(e,{index:n._index,range:n._range,vid:n._vid,priOptions:n._priOptions})}}),a));var v=Date.now();return this._logger.debug("[fetch load start], index,",F,",range,",Q),new Promise((function(e,t){fetch(c||i,c?void 0:k).then(function(){var r=Re(ce().mark((function r(a){var o,d,c,u;return ce().wrap((function(r){for(;;)switch(r.prev=r.next){case 0:if(clearTimeout(n._timeoutTimer),n._response=a,!n._aborted&&n._running){r.next=4;break}return r.abrupt("return");case 4:if(s&&(a=s(a,i)||a),a.ok){r.next=7;break}throw new Pe(i,k,a,"bad network response");case 7:if(o=Date.now(),l!==Ke){r.next=15;break}return r.next=11,a.text();case 11:d=r.sent,n._running=!1,r.next=37;break;case 15:if(l!==_e){r.next=22;break}return r.next=18,a.json();case 18:d=r.sent,n._running=!1,r.next=37;break;case 22:if(!U){r.next=29;break}return n.resolve=e,n.reject=t,n._loadChunk(a,U,v,o),r.abrupt("return");case 29:return r.next=31,a.arrayBuffer();case 31:d=r.sent,d=new Uint8Array(d),n._running=!1,c=Date.now()-v,u=$e(d.byteLength,c),n.emit(et,{speed:u,len:d.byteLength,time:c,vid:n._vid,index:n._index,range:n._range,priOptions:n._priOptions});case 37:n._logger.debug("[fetch load end], index,",F,",range,",Q),e(qe(d,!0,a,a.headers.get("Content-Length"),a.headers.get("age"),v,o,F,Q,n._vid,n._priOptions));case 39:case"end":return r.stop()}}),r)})));return function(e){return r.apply(this,arguments)}}()).catch((function(e){var r;clearTimeout(n._timeoutTimer),n._running=!1,n._aborted&&!E||((e=e instanceof Pe?e:new Pe(i,k,null,null===(r=e)||void 0===r?void 0:r.message)).startTime=v,e.endTime=Date.now(),e.isTimeout=E,e.options={index:n._index,range:n._range,vid:n._vid,priOptions:n._priOptions},t(e))}))}))}},{key:"cancel",value:(t=Re(ce().mark((function e(){return ce().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!this._aborted){e.next=2;break}return e.abrupt("return");case 2:if(this._aborted=!0,this._running=!1,!this._response){e.next=14;break}if(e.prev=5,!this._reader){e.next=9;break}return e.next=9,this._reader.cancel();case 9:e.next=13;break;case 11:e.prev=11,e.t0=e.catch(5);case 13:this._response=this._reader=null;case 14:if(this._abortController){try{this._abortController.abort()}catch(t){}this._abortController=null}this._onCancel&&this._onCancel({index:this._index,range:this._range,vid:this._vid,priOptions:this._priOptions});case 16:case"end":return e.stop()}}),e,this,[[5,11]])}))),function(){return t.apply(this,arguments)})},{key:"_loadChunk",value:function(e,t,n,i){var r=this;if(!e.body||!e.body.getReader){this._running=!1;var a=new Pe(e.url,"",e,"onProgress of bad response.body.getReader");return a.options={index:this._index,range:this._range,vid:this._vid,priOptions:this._priOptions},void this.reject(a)}this._onProcessMinLen>0&&(this._cache=new Uint8Array(rt),this._writeIdx=0);var l,U,F,o=this._reader=e.body.getReader(),d=function(){var a=Re(ce().mark((function a(){var Q,s,c,u,B,R,h,V;return ce().wrap((function(a){for(;;)switch(a.prev=a.next){case 0:return U=Date.now(),a.prev=1,a.next=4,o.read();case 4:l=a.sent,F=Date.now(),a.next=13;break;case 8:return a.prev=8,a.t0=a.catch(1),F=Date.now(),r._aborted||(r._running=!1,a.t0.options={index:r._index,range:r._range,vid:r._vid,priOptions:r._priOptions},r.reject(a.t0)),a.abrupt("return");case 13:if(s=(null===(Q=r._range)||void 0===Q?void 0:Q.length)>0?r._range[0]:0,c=s+r._receivedLength,!r._aborted){a.next=19;break}return r._running=!1,t(void 0,!1,{range:[c,c],vid:r._vid,index:r._index,startTime:U,endTime:F,st:n,firstByteTime:i,priOptions:r._priOptions},e),a.abrupt("return");case 19:u=l.value?l.value.byteLength:0,r._receivedLength+=u,r._logger.debug("【fetchLoader,onProgress call】,task,",r._range,", start,",c,", end,",s+r._receivedLength,", done,",l.done),r._onProcessMinLen>0?r._writeIdx+u>=r._onProcessMinLen||l.done?((B=new Uint8Array(r._writeIdx+u)).set(r._cache.slice(0,r._writeIdx),0),u>0&&B.set(l.value,r._writeIdx),r._writeIdx=0,r._logger.debug("【fetchLoader,onProgress enough】,done,",l.done,",len,",B.byteLength,", writeIdx,",r._writeIdx)):u>0&&r._writeIdx+u<rt?(r._cache.set(l.value,r._writeIdx),r._writeIdx+=u,r._logger.debug("【fetchLoader,onProgress cache】,len,",u,", writeIdx,",r._writeIdx)):u>0&&(R=new Uint8Array(r._writeIdx+u+2048),r._logger.debug("【fetchLoader,onProgress extra start】,size,",r._writeIdx+u+2048,", datalen,",u,", writeIdx,",r._writeIdx),R.set(r._cache.slice(0,r._writeIdx),0),u>0&&R.set(l.value,r._writeIdx),r._writeIdx+=u,delete r._cache,r._cache=R,r._logger.debug("【fetchLoader,onProgress extra end】,len,",u,", writeIdx,",r._writeIdx)):B=l.value,(B&&B.byteLength>0||l.done)&&t(B,l.done,{range:[r._range[0]+r._receivedLength-(B?B.byteLength:0),r._range[0]+r._receivedLength],vid:r._vid,index:r._index,startTime:U,endTime:F,st:n,firstByteTime:i,priOptions:r._priOptions},e),l.done?(h=Date.now()-n,V=$e(r._receivedLength,h),r.emit(et,{speed:V,len:r._receivedLength,time:h,vid:r._vid,index:r._index,range:r._range,priOptions:r._priOptions}),r._running=!1,r._logger.debug("[fetchLoader onProgress end],task,",r._range,",done,",l.done),r.resolve(qe(l,!0,e,e.headers.get("Content-Length"),e.headers.get("age"),n,i,r._index,r._range,r._vid,r._priOptions))):d();case 25:case"end":return a.stop()}}),a,null,[[1,8]])})));return function(){return a.apply(this,arguments)}}();d()}},{key:"receiveLen",get:function(){return this._receivedLength}},{key:"running",get:function(){return this._running},set:function(e){this._running=e}}],[{key:"isSupported",value:function(){return!("undefined"==typeof fetch)}}]),i}(it);var lt=function(e){Ze(n,e);var t=be(n);function n(){var e;return he(this,n),me(Ee(e=t.call(this)),"_xhr",null),me(Ee(e),"_aborted",!1),me(Ee(e),"_timeoutTimer",null),me(Ee(e),"_range",null),me(Ee(e),"_receivedLength",0),me(Ee(e),"_url",null),me(Ee(e),"_onProgress",null),me(Ee(e),"_index",-1),me(Ee(e),"_headers",null),me(Ee(e),"_currentChunkSizeKB",384),me(Ee(e),"_timeout",null),me(Ee(e),"_xhr",null),me(Ee(e),"_withCredentials",null),me(Ee(e),"_startTime",-1),me(Ee(e),"_loadCompleteResolve",null),me(Ee(e),"_loadCompleteReject",null),me(Ee(e),"_runing",!1),me(Ee(e),"_logger",!1),me(Ee(e),"_vid",""),me(Ee(e),"_responseType",void 0),me(Ee(e),"_credentials",void 0),me(Ee(e),"_method",void 0),me(Ee(e),"_transformResponse",void 0),me(Ee(e),"_firstRtt",void 0),me(Ee(e),"_onCancel",null),me(Ee(e),"_priOptions",null),e}return pe(n,[{key:"load",value:function(e){var t=this;clearTimeout(this._timeoutTimer),this._logger=e.logger,this._range=e.range,this._onProgress=e.onProgress,this._index=e.index,this._headers=e.headers,this._withCredentials="include"===e.credentials||"same-origin"===e.credentials,this._body=e.body||null,e.method&&(this._method=e.method),this._timeout=e.timeout||null,this._runing=!0,this._vid=e.vid||e.url,this._responseType=e.responseType,this._firstRtt=-1,this._onTimeout=e.onTimeout,this._onCancel=e.onCancel,this._request=e.request,this._priOptions=e.priOptions||{},this._logger.debug("【xhrLoader task】, range",this._range),this._url=Ae(e.url,e.params);var n=Date.now();return new Promise((function(e,n){t._loadCompleteResolve=e,t._loadCompleteReject=n,t._startLoad()})).catch((function(e){if(clearTimeout(t._timeoutTimer),t._runing=!1,!t._aborted)throw(e=e instanceof Pe?e:new Pe(t._url,t._request)).startTime=n,e.endTime=Date.now(),e.options={index:t._index,vid:t._vid,priOptions:t._priOptions},e}))}},{key:"_startLoad",value:function(){var e=null;if(this._responseType===we&&this._range&&this._range.length>1)if(this._onProgress){this._firstRtt=-1;var t=1024*this._currentChunkSizeKB,n=this._range[0]+this._receivedLength,i=this._range[1];t<this._range[1]-n&&(i=n+t),e=[n,i],this._logger.debug("[xhr_loader->],tast :",this._range,", SubRange, ",e)}else e=this._range,this._logger.debug("[xhr_loader->],tast :",this._range,", allRange, ",e);this._internalOpen(e)}},{key:"_internalOpen",value:function(e){var t=this;try{this._startTime=Date.now();var n=this._xhr=new XMLHttpRequest;n.open(this._method||"GET",this._url,!0),n.responseType=this._responseType,this._timeout&&(n.timeout=this._timeout),n.withCredentials=this._withCredentials,n.onload=this._onLoad.bind(this),n.onreadystatechange=this._onReadyStatechange.bind(this),n.onerror=function(e){var n,i,r;t._running=!1;var a=new Pe(t._url,t._request,null==e||null===(n=e.currentTarget)||void 0===n?void 0:n.response,"xhr.onerror.status:"+(null==e||null===(i=e.currentTarget)||void 0===i?void 0:i.status)+",statusText,"+(null==e||null===(r=e.currentTarget)||void 0===r?void 0:r.statusText));a.options={index:t._index,range:t._range,vid:t._vid,priOptions:t._priOptions},t._loadCompleteReject(a)},n.ontimeout=function(e){t.cancel();var n=new Pe(t._url,t._request,{status:408},"timeout");t._onTimeout&&(n.isTimeout=!0,t._onTimeout(n,{index:t._index,range:t._range,vid:t._vid,priOptions:t._priOptions})),n.options={index:t._index,range:t._range,vid:t._vid,priOptions:t._priOptions},t._loadCompleteReject(n)};var i=this._headers||{},r=Oe(e);r&&(i.Range=r),i&&Object.keys(i).forEach((function(e){n.setRequestHeader(e,i[e])})),this._logger.debug("[xhr.send->] tast,",this._range,",load sub range, ",e),n.send(this._body)}catch(a){a.options={index:this._index,range:e,vid:this._vid,priOptions:this._priOptions},this._loadCompleteReject(a)}}},{key:"_onReadyStatechange",value:function(e){2===e.target.readyState&&this._firstRtt<0&&(this._firstRtt=Date.now())}},{key:"_onLoad",value:function(e){var t,n=e.target.status;if(n<200||n>299){var i=new Pe(this._url,null,se(se({},e.target.response),{},{status:n}),"bad response,status:"+n);return i.options={index:this._index,range:this._range,vid:this._vid,priOptions:this._priOptions},this._loadCompleteReject(i)}var r,a=null,l=!1,U=(null===(t=this._range)||void 0===t?void 0:t.length)>0?this._range[0]:0;if(this._responseType===we){var F,o=new Uint8Array(e.target.response);if(r=U+this._receivedLength,o&&o.byteLength>0){this._receivedLength+=o.byteLength;var d=Date.now()-this._startTime,Q=$e(this._receivedLength,d);this.emit(et,{speed:Q,len:this._receivedLength,time:d,vid:this._vid,index:this._index,range:[r,U+this._receivedLength],priOptions:this._priOptions})}a=o,l=!((null===(F=this._range)||void 0===F?void 0:F.length)>1&&this._range[1]&&this._receivedLength<this._range[1]-this._range[0]),this._logger.debug("[xhr load done->], tast :",this._range,", start",r,"end ",U+this._receivedLength,",dataLen,",o?o.byteLength:0,",receivedLength",this._receivedLength,",index,",this._index,", done,",l)}else l=!0,a=e.target.response;var s={ok:n>=200&&n<300,status:n,statusText:this._xhr.statusText,url:this._xhr.responseURL,headers:this._getHeaders(this._xhr),body:this._xhr.response};this._transformResponse&&(s=this._transformResponse(s,this._url)||s),this._onProgress&&this._onProgress(a,l,{index:this._index,vid:this._vid,range:[r,U+this._receivedLength],startTime:this._startTime,endTime:Date.now(),priOptions:this._priOptions},s),l?(this._runing=!1,this._loadCompleteResolve&&this._loadCompleteResolve(qe(this._onProgress?null:a,l,s,s.headers["content-length"],s.headers.age,this._startTime,this._firstRtt,this._index,this._range,this._vid,this._priOptions))):this._startLoad()}},{key:"cancel",value:function(){if(!this._aborted)return this._aborted=!0,this._runing=!1,ve(Se(n.prototype),"removeAllListeners",this).call(this),this._onCancel&&this._onCancel({index:this._index,range:this._range,vid:this._vid,priOptions:this._priOptions}),this._xhr?this._xhr.abort():void 0}},{key:"receiveLen",get:function(){return this._receivedLength}},{key:"running",get:function(){return this._running},set:function(e){this._running=e}},{key:"_getHeaders",value:function(e){var t,n={},i=ge(e.getAllResponseHeaders().trim().split("\r\n"));try{for(i.s();!(t=i.n()).done;){var r=t.value.split(": ");n[r[0].toLowerCase()]=r.slice(1).join(": ")}}catch(a){i.e(a)}finally{i.f()}return n}}],[{key:"isSupported",value:function(){return"undefined"!=typeof XMLHttpRequest}}]),n}(it),Ut=["retry","retryDelay","onRetryError","transformError"],Ft=function(){function e(t,n){he(this,e),this.promise=Ce(),this.alive=!!n.onProgress,!n.logger&&(n.logger=new Xe("Loader")),this._loaderType=t,this._loader=t===Me&&"undefined"!=typeof fetch?new at:new lt,this._config=n,this._retryCount=0,this._retryTimer=null,this._canceled=!1,this._retryCheckFunc=n.retryCheckFunc,this._logger=n.logger}var t;return pe(e,[{key:"exec",value:function(){var e=this,t=this._config,n=t.retry,i=t.retryDelay,r=t.onRetryError,a=t.transformError,l=ke(t,Ut),U=function(){var t=Re(ce().mark((function t(){var F,o,d;return ce().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,t.next=3,e._loader.load(l);case 3:F=t.sent,e.promise.resolve(F),t.next=27;break;case 7:if(t.prev=7,t.t0=t.catch(0),e._loader.running=!1,e._logger.debug("[task request catch err]",t.t0),!e._canceled){t.next=13;break}return t.abrupt("return");case 13:if(t.t0.loaderType=e._loaderType,t.t0.retryCount=e._retryCount,o=t.t0,a&&(o=a(o)||o),r&&e._retryCount>0&&r(o,e._retryCount,{index:l.index,vid:l.vid,range:l.range,priOptions:l.priOptions}),e._retryCount++,d=!0,e._retryCheckFunc&&(d=e._retryCheckFunc(t.t0)),!(d&&e._retryCount<=n)){t.next=26;break}return clearTimeout(e._retryTimer),e._logger.debug("[task request setTimeout],retry",e._retryCount,",retry range,",l.range),e._retryTimer=setTimeout(U,i),t.abrupt("return");case 26:e.promise.reject(o);case 27:case"end":return t.stop()}}),t,null,[[0,7]])})));return function(){return t.apply(this,arguments)}}();return U(),this.promise}},{key:"cancel",value:(t=Re(ce().mark((function e(){return ce().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return clearTimeout(this._retryTimer),this._canceled=!0,this._loader.running=!1,e.abrupt("return",this._loader.cancel());case 4:case"end":return e.stop()}}),e,this)}))),function(){return t.apply(this,arguments)})},{key:"running",get:function(){return this._loader&&this._loader.running}},{key:"loader",get:function(){return this._loader}}]),e}();function ot(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;return new Promise((function(t){return setTimeout(t,e)}))}var dt=function(e){Ze(i,e);var t,n=be(i);function i(e){var t;return he(this,i),me(Ee(t=n.call(this,e)),"type",Me),me(Ee(t),"_queue",[]),me(Ee(t),"_alive",[]),me(Ee(t),"_currentTask",null),me(Ee(t),"_finnalUrl",""),me(Ee(t),"_config",void 0),t._config=function(e){return se({loaderType:Me,retry:0,retryDelay:0,timeout:0,request:null,onTimeout:void 0,onProgress:void 0,onRetryError:void 0,transformRequest:void 0,transformResponse:void 0,transformError:void 0,responseType:Ke,range:void 0,url:"",params:void 0,method:"GET",headers:{},body:void 0,mode:void 0,credentials:void 0,cache:void 0,redirect:void 0,referrer:void 0,referrerPolicy:void 0,integrity:void 0,onProcessMinLen:0},e)}(e),t._config.loaderType!==Ye&&at.isSupported()||(t.type=Ye),t.log=e.logger,t}return pe(i,[{key:"isFetch",value:function(){return this.type===Me}},{key:"load",value:function(e){var t=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};"string"!=typeof e&&e?n=e:n.url=e||n.url||this._config.url,(n=Object.assign({},this._config,n)).params&&(n.params=Object.assign({},n.params)),n.headers&&He(n.headers)&&(n.headers=Object.assign({},n.headers)),n.body&&He(n.body)&&(n.body=Object.assign({},n.body)),n.transformRequest&&(n=n.transformRequest(n)||n),n.logger=this.log;var i=new Ft(this.type,n);return i.loader.on(et,(function(e){t.emit(et,e)})),this._queue.push(i),1!==this._queue.length||this._currentTask&&this._currentTask.running||this._processTask(),i.promise}},{key:"cancel",value:(t=Re(ce().mark((function e(){var t;return ce().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t=this._queue.map((function(e){return e.cancel()})).concat(this._alive.map((function(e){return e.cancel()}))),this._currentTask&&t.push(this._currentTask.cancel()),this._queue=[],this._alive=[],e.next=6,Promise.all(t);case 6:return e.next=8,ot();case 8:case"end":return e.stop()}}),e,this)}))),function(){return t.apply(this,arguments)})},{key:"_processTask",value:function(){var e=this;if(this._currentTask=this._queue.shift(),this._currentTask){this._currentTask.alive&&this._alive.push(this._currentTask);var t=this._currentTask.exec().catch((function(e){}));t&&"function"==typeof t.finally&&t.finally((function(){var t,n;null!==(t=e._currentTask)&&void 0!==t&&t.alive&&(null===(n=e._alive)||void 0===n?void 0:n.length)>0&&(e._alive=e._alive.filter((function(t){return t&&t!==e._currentTask}))),e._processTask()}))}}}],[{key:"isFetchSupport",value:function(){return at.isSupported()}}]),i}(it),Qt=function(){return N((function e(t,n,i,r){var a=this;b(this,e),this.config=e.getDefaultConfig(),Object.keys(r).map((function(e){void 0!==r[e]&&null!==r[e]&&(a.config[e]=r[e])})),this.duration=i,this.player=t,this.updateBitrate(n),this.curPCDNInBuffer=this.config.maxPCDNInBuffer,this.curPCDNOutBuffer=this.config.maxPCDNOutBuffer,this.PCDNChangeCnt=0}),[{key:"updateBitrate",value:function(e){this.bitrate=e,this.bitrate||(this.bitrate=this.config.minBandwidth)}},{key:"getPCDNInBuffer",value:function(){var e=this.config,t=this.player,n=this.bitrate;if(!e.PCDNBufferControl)return null;var i=e.estPlayTime,r=i;e.estPTcontrol&&(r=Math.min(i,Math.max(0,this.duration-((null==t?void 0:t.currentTime)||0))));var a=e.safePCDNInFactor,l=e.minBandwidth,U=e.maxPCDNInBuffer,F=e.minPCDNInBuffer,o=a*Math.max(1024*(null==t?void 0:t.avgSpeedPCDN)||0,l),d=n>0?(1-o/n)*r:0;return this.curPCDNInBuffer=Math.min(U,Math.max(F,d)),this.curPCDNInBuffer}},{key:"getPCDNOutBuffer",value:function(){var e=this.config,t=this.player,n=this.bitrate;if(!e.PCDNBufferControl)return null;var i=e.estPlayTime,r=i;e.estPTcontrol&&(r=Math.min(i,Math.max(0,this.duration-((null==t?void 0:t.currentTime)||0))));var a=e.safePCDNOutFactor,l=e.minBandwidth,U=e.maxPCDNOutBuffer,F=e.minPCDNOutBuffer,o=a*Math.max(1024*(null==t?void 0:t.avgSpeedPCDN)||0,l),d=n>0?(1-o/n)*r:0;return this.curPCDNOutBuffer=Math.min(U,Math.max(F,d)),this.curPCDNOutBuffer}},{key:"getPCDNChangeCnt",value:function(){var e=this.config,t=e.PCDNCntControl,n=e.alpha,i=this.curPCDNInBuffer,r=this.player,a=(null==r?void 0:r.bufferedPoint)||null,l=a&&a.end?a.end-r.currentTime:0;t?l>i+(this.PCDNChangeCnt-1)*n&&this.PCDNChangeCnt++:l>=i&&this.PCDNChangeCnt<2&&this.PCDNChangeCnt++;return this.PCDNChangeCnt}}],[{key:"getDefaultConfig",value:function(){return{PCDNBufferControl:!1,PCDNCntControl:!1,estPTcontrol:!1,minPCDNInBuffer:8,maxPCDNInBuffer:12,minPCDNOutBuffer:3,maxPCDNOutBuffer:6,safePCDNInFactor:.1,safePCDNOutFactor:.4,alpha:.5,estPlayTime:12,minBandwidth:1e6}}}])}(),st=new Map,ct=function(){function e(t,n,i,r){var a,l=this;b(this,e),this.options=e.getDefaultConfig(),Object.keys(t).map((function(e){void 0!==t[e]&&null!==t[e]&&(l.options[e]=t[e])})),this.options.productConfig&&this.options.productConfig.app_id||console.error("productConfig must has"),this.loader=new dt(this.options),this.resetTrackeArgs(),this._lastFileInfo=null,this.lastfetchNodeTime=-1,this._lastRetFileKey=null,this._minUpdateNodeStep=this.options.ErrorTimeStep,null!==(a=this.options)&&void 0!==a&&null!==(a=a.adaptPCDNConfig)&&void 0!==a&&a.PCDNBufferControl&&(this.pcdnAdapt=new Qt(n,i,r,this.options.adaptPCDNConfig))}return N(e,[{key:"isOpenAdaptPCDN",get:function(){return!!this.pcdnAdapt}},{key:"curPCDNInBuffer",get:function(){return this.pcdnAdapt.curPCDNInBuffer}},{key:"getPCDNInBuffer",value:function(){var e;return null===(e=this.pcdnAdapt)||void 0===e?void 0:e.getPCDNInBuffer()}},{key:"curPCDNOutBuffer",get:function(){return this.pcdnAdapt.curPCDNOutBuffer}},{key:"getPCDNOutBuffer",value:function(){var e;return null===(e=this.pcdnAdapt)||void 0===e?void 0:e.getPCDNOutBuffer()}},{key:"curPCDNChangeCnt",get:function(){return this.pcdnAdapt.PCDNChangeCnt}},{key:"getPCDNChangeCnt",value:function(){var e;return null===(e=this.pcdnAdapt)||void 0===e?void 0:e.getPCDNChangeCnt()}},{key:"updatePCDNBitrate",value:function(e){var t;return null===(t=this.pcdnAdapt)||void 0===t?void 0:t.updateBitrate(e)}},{key:"resetTrackeArgs",value:function(e){this.trackeArgs={fid:null,trace_id:null,req_times:(null==e?void 0:e.req_times)||0,resp_times:(null==e?void 0:e.resp_times)||0,token:null,node_num:this.options.node_num,client_info:this.options.client_info}}},{key:"getPCDNNode",value:function(e,t,n){var i,r=Bt(t),a=st.get(ut(e,r)),l=new Ce;return null==a||!a.nodes||(null==a||null===(i=a.nodes)||void 0===i?void 0:i.length)<1?this.fetchPCDNNode(null,null,n).then((function(e){l.resolve(e)})).catch((function(e){l.reject(e)})):(a.fromCache=!0,l.resolve(a)),l}},{key:"removePCDNNode",value:function(e,t,n){var i=Bt(t),r=st.get(ut(e,i)),a=null==r?void 0:r.nodes;a&&(n?r.nodes=a.filter((function(e){return e&&n.indexOf(e.url)<0})):a.shift(),st.set(ut(e,i),r)),a&&a.length||this.fetchPCDNNode().then().catch((function(){}))}},{key:"fetchPCDNNode",value:(n=k(M().mark((function t(n,i,r){var a,l,U,F,o,d,Q,s,c,u,B,R,h,V,p,m,Z;return M().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(a=new Ce,i){t.next=5;break}i=this._lastFileInfo,t.next=15;break;case 5:if(i.byterate=Bt(i.bitrate),this.options.trackerOptions&&Object.assign(i,this.options.trackerOptions),this._lastFileInfo=Object.assign({},i,{byterate:i.byterate}),!((null==(U=st.get(ut(i.vid,i.byterate)))||null===(l=U.nodes)||void 0===l?void 0:l.length)>0)){t.next=13;break}return U.fromCache=!0,a.resolve(U),t.abrupt("return",a);case 13:delete i.bitrate,this._lastFileInfo=i;case 15:if(i){t.next=18;break}return a.resolve(null),t.abrupt("return",a);case 18:if(F=!1,o=ut(i.vid,i.byterate),this._lastRetFileKey!==o&&(this.resetTrackeArgs(),F=!0),!(Date.now()-this.lastfetchNodeTime<this._minUpdateNodeStep)||F){t.next=24;break}return a.resolve(null),t.abrupt("return",a);case 24:if(this.lastfetchNodeTime=Date.now(),this._lastRetFileKey=o,i.sfid?i.version=1:i.vid&&(i.version=2),this.options.withReferer&&(i.with_referer=this.options.withReferer),d=Object.assign(this.options.productConfig,{file_info:i},this.trackeArgs,{req_id:r}),Q=JSON.stringify(d),!(this.trackeArgs.req_times>=this.options.maxCnt)){t.next=33;break}return a.resolve(null),t.abrupt("return",a);case 33:return this.loader||(this.loader=new dt(this.options)),this.trackeArgs.req_times+=1,t.prev=35,e.pcdn_tracker_request_cnt++,t.next=39,this.loader.load(n||this.options.trackerUrl,{body:Q});case 39:s=t.sent,c=null,s&&(this.trackeArgs.resp_times+=1,B=8*i.byterate,s.done&&null!==(u=s.data)&&void 0!==u&&u.Result?(R=s.data.Result,(c=R.nodes)&&c.length>0?e.pcdn_tracker_success_cnt++:this._minUpdateNodeStep=this.options.NULLNodeTimeStep,c.map((function(e){e.vid=i.vid,e.bitrate=B})),h=R.fid,V=R.trace_id,p=R.req_id,m={nodes:c,fid:h,vid:i.vid,trace_id:V,req_id:p,bitrate:B},Z=ut(i.vid,i.byterate),st.set(Z,m),this.trackeArgs.fid=R.fid,this.trackeArgs.trace_id=R.trace_id,this.trackeArgs.token=R.token,a.resolve(m)):(this._minUpdateNodeStep=this.options.ErrorTimeStep,a.reject(s))),t.next=49;break;case 44:t.prev=44,t.t0=t.catch(35),this._minUpdateNodeStep=this.options.ErrorTimeStep,console.warn("tracker catch ERR,",t.t0),a.reject(t.t0);case 49:return t.abrupt("return",a);case 50:case"end":return t.stop()}}),t,this,[[35,44]])}))),function(e,t,i){return n.apply(this,arguments)})}],[{key:"pluginName",get:function(){return"PCDN"}},{key:"pcdnReqCnt",get:function(){var t=e.pcdn_tracker_request_cnt,n=e.pcdn_tracker_success_cnt;return e.pcdn_tracker_request_cnt=0,e.pcdn_tracker_success_cnt=0,{pcdn_tracker_request_cnt:t,pcdn_tracker_failed_cnt:t-n}}},{key:"getDefaultConfig",value:function(){return{trackerUrl:"",loaderType:Me,responseType:_e,mode:"cors",method:"POST",retry:0,retryDelay:3e3,timeout:5e3,node_num:5,client_info:null,maxCnt:30,withReferer:0,NULLNodeTimeStep:6e4,ErrorTimeStep:15e3}}},{key:"gainPCDNNode",value:(t=k(M().mark((function t(n,i,r,a){var l,U,F,o,d,Q,s;return M().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return l=e.getDefaultConfig(),Object.keys(i).map((function(e){void 0!==i[e]&&null!==i[e]&&(l[e]=i[e])})),a&&a.app_id||console.error("productConfig must has"),U=new Ce,r?(r.byterate=Bt(r.bitrate),this.options.trackerOptions&&Object.assign(r,this.options.trackerOptions),delete r.bitrate):U.reject("video fileInfo need set"),F=Object.assign(a,{file_info:r},{node_num:(null==i?void 0:i.node_num)||3}),o=JSON.stringify(F),d=new dt(l),t.prev=8,e.pcdn_tracker_request_cnt++,t.next=12,d.load(n,{body:o});case 12:(s=t.sent).done&&(null===(Q=s.data)||void 0===Q||null===(Q=Q.Result)||void 0===Q||null===(Q=Q.nodes)||void 0===Q?void 0:Q.length)>0&&e.pcdn_tracker_success_cnt++,U.resolve(s),t.next=20;break;case 17:t.prev=17,t.t0=t.catch(8),U.reject((null===t.t0||void 0===t.t0?void 0:t.t0.message)||"get pcdnNode error");case 20:return t.abrupt("return",U);case 21:case"end":return t.stop()}}),t,this,[[8,17]])}))),function(e,n,i,r){return t.apply(this,arguments)})}]);var t,n}();function ut(e,t){return"".concat(e,"-").concat(t)}function Bt(e){return Math.floor(e/8)}function Rt(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function ht(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Rt(Object(n),!0).forEach((function(t){ft(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Rt(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Vt(){Vt=function(){return e};var e={},t=Object.prototype,n=t.hasOwnProperty,i=Object.defineProperty||function(e,t,n){e[t]=n.value},r="function"==typeof Symbol?Symbol:{},a=r.iterator||"@@iterator",l=r.asyncIterator||"@@asyncIterator",U=r.toStringTag||"@@toStringTag";function F(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{F({},"")}catch(E){F=function(e,t,n){return e[t]=n}}function o(e,t,n,r){var a=t&&t.prototype instanceof s?t:s,l=Object.create(a.prototype),U=new f(r||[]);return i(l,"_invoke",{value:Z(e,n,U)}),l}function d(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(E){return{type:"throw",arg:E}}}e.wrap=o;var Q={};function s(){}function c(){}function u(){}var B={};F(B,a,(function(){return this}));var R=Object.getPrototypeOf,h=R&&R(R(y([])));h&&h!==t&&n.call(h,a)&&(B=h);var V=u.prototype=s.prototype=Object.create(B);function p(e){["next","throw","return"].forEach((function(t){F(e,t,(function(e){return this._invoke(t,e)}))}))}function m(e,t){function r(i,a,l,U){var F=d(e[i],e,a);if("throw"!==F.type){var o=F.arg,Q=o.value;return Q&&"object"==typeof Q&&n.call(Q,"__await")?t.resolve(Q.__await).then((function(e){r("next",e,l,U)}),(function(e){r("throw",e,l,U)})):t.resolve(Q).then((function(e){o.value=e,l(o)}),(function(e){return r("throw",e,l,U)}))}U(F.arg)}var a;i(this,"_invoke",{value:function(e,n){function i(){return new t((function(t,i){r(e,n,t,i)}))}return a=a?a.then(i,i):i()}})}function Z(e,t,n){var i="suspendedStart";return function(r,a){if("executing"===i)throw new Error("Generator is already running");if("completed"===i){if("throw"===r)throw a;return{value:void 0,done:!0}}for(n.method=r,n.arg=a;;){var l=n.delegate;if(l){var U=S(l,n);if(U){if(U===Q)continue;return U}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if("suspendedStart"===i)throw i="completed",n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);i="executing";var F=d(e,t,n);if("normal"===F.type){if(i=n.done?"completed":"suspendedYield",F.arg===Q)continue;return{value:F.arg,done:n.done}}"throw"===F.type&&(i="completed",n.method="throw",n.arg=F.arg)}}}function S(e,t){var n=t.method,i=e.iterator[n];if(void 0===i)return t.delegate=null,"throw"===n&&e.iterator.return&&(t.method="return",t.arg=void 0,S(e,t),"throw"===t.method)||"return"!==n&&(t.method="throw",t.arg=new TypeError("The iterator does not provide a '"+n+"' method")),Q;var r=d(i,e.iterator,t.arg);if("throw"===r.type)return t.method="throw",t.arg=r.arg,t.delegate=null,Q;var a=r.arg;return a?a.done?(t[e.resultName]=a.value,t.next=e.nextLoc,"return"!==t.method&&(t.method="next",t.arg=void 0),t.delegate=null,Q):a:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,Q)}function J(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function W(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function f(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(J,this),this.reset(!0)}function y(e){if(e){var t=e[a];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var i=-1,r=function t(){for(;++i<e.length;)if(n.call(e,i))return t.value=e[i],t.done=!1,t;return t.value=void 0,t.done=!0,t};return r.next=r}}return{next:k}}function k(){return{value:void 0,done:!0}}return c.prototype=u,i(V,"constructor",{value:u,configurable:!0}),i(u,"constructor",{value:c,configurable:!0}),c.displayName=F(u,U,"GeneratorFunction"),e.isGeneratorFunction=function(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===c||"GeneratorFunction"===(t.displayName||t.name))},e.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,u):(e.__proto__=u,F(e,U,"GeneratorFunction")),e.prototype=Object.create(V),e},e.awrap=function(e){return{__await:e}},p(m.prototype),F(m.prototype,l,(function(){return this})),e.AsyncIterator=m,e.async=function(t,n,i,r,a){void 0===a&&(a=Promise);var l=new m(o(t,n,i,r),a);return e.isGeneratorFunction(n)?l:l.next().then((function(e){return e.done?e.value:l.next()}))},p(V),F(V,U,"Generator"),F(V,a,(function(){return this})),F(V,"toString",(function(){return"[object Generator]"})),e.keys=function(e){var t=Object(e),n=[];for(var i in t)n.push(i);return n.reverse(),function e(){for(;n.length;){var i=n.pop();if(i in t)return e.value=i,e.done=!1,e}return e.done=!0,e}},e.values=y,f.prototype={constructor:f,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(W),!e)for(var t in this)"t"===t.charAt(0)&&n.call(this,t)&&!isNaN(+t.slice(1))&&(this[t]=void 0)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var t=this;function i(n,i){return l.type="throw",l.arg=e,t.next=n,i&&(t.method="next",t.arg=void 0),!!i}for(var r=this.tryEntries.length-1;r>=0;--r){var a=this.tryEntries[r],l=a.completion;if("root"===a.tryLoc)return i("end");if(a.tryLoc<=this.prev){var U=n.call(a,"catchLoc"),F=n.call(a,"finallyLoc");if(U&&F){if(this.prev<a.catchLoc)return i(a.catchLoc,!0);if(this.prev<a.finallyLoc)return i(a.finallyLoc)}else if(U){if(this.prev<a.catchLoc)return i(a.catchLoc,!0)}else{if(!F)throw new Error("try statement without catch or finally");if(this.prev<a.finallyLoc)return i(a.finallyLoc)}}}},abrupt:function(e,t){for(var i=this.tryEntries.length-1;i>=0;--i){var r=this.tryEntries[i];if(r.tryLoc<=this.prev&&n.call(r,"finallyLoc")&&this.prev<r.finallyLoc){var a=r;break}}a&&("break"===e||"continue"===e)&&a.tryLoc<=t&&t<=a.finallyLoc&&(a=null);var l=a?a.completion:{};return l.type=e,l.arg=t,a?(this.method="next",this.next=a.finallyLoc,Q):this.complete(l)},complete:function(e,t){if("throw"===e.type)throw e.arg;return"break"===e.type||"continue"===e.type?this.next=e.arg:"return"===e.type?(this.rval=this.arg=e.arg,this.method="return",this.next="end"):"normal"===e.type&&t&&(this.next=t),Q},finish:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),W(n),Q}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var i=n.completion;if("throw"===i.type){var r=i.arg;W(n)}return r}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,n){return this.delegate={iterator:y(e),resultName:t,nextLoc:n},"next"===this.method&&(this.arg=void 0),Q}},e}function pt(e){return(pt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function mt(e,t,n,i,r,a,l){try{var U=e[a](l),F=U.value}catch(o){return void n(o)}U.done?t(F):Promise.resolve(F).then(i,r)}function Zt(e){return function(){var t=this,n=arguments;return new Promise((function(i,r){var a=e.apply(t,n);function l(e){mt(a,i,r,l,U,"next",e)}function U(e){mt(a,i,r,l,U,"throw",e)}l(void 0)}))}}function St(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function Jt(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,Dt(i.key),i)}}function Wt(e,t,n){return t&&Jt(e.prototype,t),n&&Jt(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e}function ft(e,t,n){return(t=Dt(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function yt(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&Et(e,t)}function kt(e){return(kt=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function Et(e,t){return(Et=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e})(e,t)}function bt(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}function vt(e,t,n){return(vt=bt()?Reflect.construct.bind():function(e,t,n){var i=[null];i.push.apply(i,t);var r=new(Function.bind.apply(e,i));return n&&Et(r,n.prototype),r}).apply(null,arguments)}function Nt(e){var t="function"==typeof Map?new Map:void 0;return Nt=function(e){if(null===e||(n=e,-1===Function.toString.call(n).indexOf("[native code]")))return e;var n;if("function"!=typeof e)throw new TypeError("Super expression must either be null or a function");if(void 0!==t){if(t.has(e))return t.get(e);t.set(e,i)}function i(){return vt(e,arguments,kt(this).constructor)}return i.prototype=Object.create(e.prototype,{constructor:{value:i,enumerable:!1,writable:!0,configurable:!0}}),Et(i,e)},Nt(e)}function gt(e,t){if(null==e)return{};var n,i,r=function(e,t){if(null==e)return{};var n,i,r={},a=Object.keys(e);for(i=0;i<a.length;i++)n=a[i],t.indexOf(n)>=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(i=0;i<a.length;i++)n=a[i],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}function Tt(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function Ct(e){var t=bt();return function(){var n,i=kt(e);if(t){var r=kt(this).constructor;n=Reflect.construct(i,arguments,r)}else n=i.apply(this,arguments);return function(e,t){if(t&&("object"==typeof t||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return Tt(e)}(this,n)}}function Lt(){return Lt="undefined"!=typeof Reflect&&Reflect.get?Reflect.get.bind():function(e,t,n){var i=function(e,t){for(;!Object.prototype.hasOwnProperty.call(e,t)&&null!==(e=kt(e)););return e}(e,t);if(i){var r=Object.getOwnPropertyDescriptor(i,t);return r.get?r.get.call(arguments.length<3?e:n):r.value}},Lt.apply(this,arguments)}function xt(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,i=new Array(t);n<t;n++)i[n]=e[n];return i}function Xt(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(e){if("string"==typeof e)return xt(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?xt(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var i=0,r=function(){};return{s:r,n:function(){return i>=e.length?{done:!0}:{done:!1,value:e[i++]}},e:function(e){throw e},f:r}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,l=!0,U=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return l=e.done,e},e:function(e){U=!0,a=e},f:function(){try{l||null==n.return||n.return()}finally{if(U)throw a}}}}function Dt(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var i=n.call(e,t||"default");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}T(ct,"pcdn_tracker_request_cnt",0),T(ct,"pcdn_tracker_success_cnt",0);var Gt,It=function(){function e(){St(this,e)}return Wt(e,null,[{key:"start",value:function(e){return e&&e.length?1===e.length&&e.end(0)-e.start(0)<1e-6||1===e.length&&e.start(0)<0?0:e.start(0):0}},{key:"end",value:function(e){return e&&e.length?1===e.length&&e.end(0)-e.start(0)<1e-6?0:e.end(e.length-1):0}},{key:"get",value:function(e){if(e)try{return e.buffered}catch(t){}}},{key:"buffers",value:function(e,t){if(!e||!e.length)return[];for(var n=[],i=0,r=e.length;i<r;i++){var a=n.length;if(a&&t){var l=n[a-1],U=l[1];if(e.start(i)-U<=t){var F=e.end(i);F>U&&(l[1]=F)}else n.push([e.start(i),e.end(i)])}else n.push([e.start(i),e.end(i)])}return n}},{key:"totalLength",value:function(e){return e&&e.length?e.reduce((function(e,t){return e+(t[1]-t[0])}),0):0}},{key:"info",value:function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;if(!t||!t.length)return{start:0,end:0,buffers:[]};for(var r=0,a=0,l=0,U=0,F=0,o=0,d=0,Q=e.buffers(t,i),s=0,c=Q.length;s<c;s++){var u=Q[s];if(n+i>=u[0]&&n<=u[1])r=u[0],a=u[1],l=s;else{if(n+i<u[0]){U=u[0],F=u[1];break}n+i>u[1]&&(o=u[0],d=u[1])}}return{start:r,end:a,index:l,buffers:Q,nextStart:U,nextEnd:F,prevStart:o,prevEnd:d,currentTime:n,behind:n-r,remaining:a?a-n:0,length:e.totalLength&&e.totalLength(Q)}}},{key:"isBuffered",value:function(t,n){if(t){var i=e.get(t);if(null!=i&&i.length)for(var r=0;r<i.length;r++)if(n>=i.start(r)&&n<=i.end(r))return!0}return!1}}]),e}(),Mt="undefined"!=typeof window,Yt={MANIFEST:"manifest",NETWORK:"network",NETWORK_TIMEOUT:"network_timeout",NETWORK_FORBIDDEN:"network_forbidden",NETWORK_NOTFOUND:"network_notfound",NETWROK_RANGE_NOT_SATISFIABLE:"network_range_not_satisfiable",DEMUX:"demux",REMUX:"remux",MEDIA:"media",DRM:"drm",OTHER:"other",RUNTIME:"runtime",SUB_TYPES:{FLV:"FLV",HLS:"HLS",MP4:"MP4",FMP4:"FMP4",MSE_ADD_SB:"MSE_ADD_SB",MSE_APPEND_BUFFER:"MSE_APPEND_BUFFER",MSE_OTHER:"MSE_OTHER",MSE_FULL:"MSE_FULL",MSE_CHANGE_TYPE:"MSE_CHANGE_TYPE",OPTION:"OPTION",DASH:"DASH",LICENSE:"LICENSE",CUSTOM_LICENSE:"CUSTOM_LICENSE",MSE_HIJACK:"MSE_HIJACK",EME_HIJACK:"EME_HIJACK",SIDX:"SIDX",NO_CANPLAY_ERROR:"NO_CANPLAY_ERROR",BUFFERBREAK_ERROR:"BUFFERBREAK_ERROR",WAITING_TIMEOUT_ERROR:"WAITING_TIMEOUT_ERROR",MEDIA_ERR_ABORTED:"MEDIA_ERR_ABORTED",MEDIA_ERR_NETWORK:"MEDIA_ERR_NETWORK",MEDIA_ERR_DECODE:"MEDIA_ERR_DECODE",MEDIA_ERR_SRC_NOT_SUPPORTED:"MEDIA_ERR_SRC_NOT_SUPPORTED",MEDIA_ERR_CODEC_NOT_SUPPORTED:"MEDIA_ERR_CODEC_NOT_SUPPORTED",MEDIA_ERR_URL_EMPTY:"MEDIA_ERR_URL_EMPTY"}},wt=(ft(Gt={},Yt.MANIFEST,{HLS:1100,DASH:1200}),ft(Gt,Yt.NETWORK,2100),ft(Gt,Yt.NETWORK_TIMEOUT,2101),ft(Gt,Yt.NETWORK_FORBIDDEN,2103),ft(Gt,Yt.NETWORK_NOTFOUND,2104),ft(Gt,Yt.NETWROK_RANGE_NOT_SATISFIABLE,2116),ft(Gt,Yt.DEMUX,{FLV:3100,HLS:3200,MP4:3300,FMP4:3400,SIDX:3410}),ft(Gt,Yt.REMUX,{FMP4:4100,MP4:4200}),ft(Gt,Yt.MEDIA,{MEDIA_ERR_ABORTED:5101,MEDIA_ERR_NETWORK:5102,MEDIA_ERR_DECODE:5103,MEDIA_ERR_SRC_NOT_SUPPORTED:5104,MEDIA_ERR_CODEC_NOT_SUPPORTED:5105,MEDIA_ERR_URL_EMPTY:5106,MSE_ADD_SB:5200,MSE_APPEND_BUFFER:5201,MSE_OTHER:5202,MSE_FULL:5203,MSE_HIJACK:5204,MSE_CHANGE_TYPE:5205,EME_HIJACK:5301}),ft(Gt,Yt.DRM,{LICENSE:7100,CUSTOM_LICENSE:7200}),ft(Gt,Yt.OTHER,8e3),ft(Gt,Yt.RUNTIME,{NO_CANPLAY_ERROR:9001,BUFFERBREAK_ERROR:9002,WAITING_TIMEOUT_ERROR:9003}),Gt),Kt=function(e){yt(n,e);var t=Ct(n);function n(e,i,r,a,l){var U;return St(this,n),(U=t.call(this,l||(null==r?void 0:r.message))).errorType=e===Yt.NETWORK_TIMEOUT?Yt.NETWORK:e,U.originError=r,U.ext=a,U.errorCode=wt[e][i]||wt[e],U.errorMessage=U.message,U.errorCode||(U.errorType=Yt.OTHER,U.errorCode=wt[U.errorType]),U}return Wt(n,null,[{key:"create",value:function(e,t,i,r,a){return e instanceof n?e:(e instanceof Error&&(i=e,e=""),e||(e=Yt.OTHER),new n(e,t,i,r,a))}},{key:"network",value:function(e){var t;return new n(null!=e&&e.isTimeout?Yt.NETWORK_TIMEOUT:Yt.NETWORK,null,e instanceof Error?e:null,{url:null==e?void 0:e.url,response:null==e?void 0:e.response,httpCode:null==e||null===(t=e.response)||void 0===t?void 0:t.status})}}]),n}(Nt(Error)),_t={DEBUG:1,LOG:2,WARN:3,ERROR:4},Pt=["Boolean","Number","String","Undefined","Null","Date","Object"],jt=function(){function e(t,n){St(this,e),this.name=t||"",this._prefix="[".concat(this.name,"]"),this.logCacheLevel=(null==n?void 0:n.logCacheLevel)||3,this.logMaxSize=(null==n?void 0:n.logMaxSize)||204800,this.logSize=0,this.logTextArray=[]}return Wt(e,[{key:"debug",value:function(){for(var t,n=arguments.length,i=new Array(n),r=0;r<n;r++)i[r]=arguments[r];this.logCache.apply(this,[_t.DEBUG].concat(i)),e.disabled||(t=console).debug.apply(t,["[".concat(Ht(),"]"),this._prefix].concat(i))}},{key:"log",value:function(){for(var t,n=arguments.length,i=new Array(n),r=0;r<n;r++)i[r]=arguments[r];this.logCache.apply(this,[_t.LOG].concat(i)),e.disabled||(t=console).log.apply(t,["[".concat(Ht(),"]"),this._prefix].concat(i))}},{key:"warn",value:function(){for(var t,n=arguments.length,i=new Array(n),r=0;r<n;r++)i[r]=arguments[r];this.logCache.apply(this,[_t.WARN].concat(i)),e.disabled||(t=console).warn.apply(t,["[".concat(Ht(),"]"),this._prefix].concat(i))}},{key:"error",value:function(){for(var t,n=arguments.length,i=new Array(n),r=0;r<n;r++)i[r]=arguments[r];this.logCache.apply(this,[_t.ERROR].concat(i)),e.disabled||(t=console).error.apply(t,["[".concat(Ht(),"]"),this._prefix].concat(i))}},{key:"logCache",value:function(e){if(!(e<this.logCacheLevel)){var t="";try{for(var n=arguments.length,i=new Array(n>1?n-1:0),r=1;r<n;r++)i[r-1]=arguments[r];var a=i.map((function(e){return zt(e)}));t="[".concat(Ht(),"]")+this._prefix+JSON.stringify(a)}catch(U){return}if(e>=this.logCacheLevel&&(this.logSize+=t.length,this.logTextArray.push(t)),this.logSize>this.logMaxSize){var l=this.logTextArray.shift();this.logSize-=l.length}}}},{key:"getLogCache",value:function(){var e=this.logTextArray.join("\n");return this.reset(),e}},{key:"reset",value:function(){this.logTextArray=[],this.logSize=0}},{key:"table",value:function(){var t;e.disabled||(console.group(this._prefix),(t=console).table.apply(t,arguments),console.groupEnd())}},{key:"setLogLevel",value:function(e){this.logCacheLevel=e}}],[{key:"enable",value:function(){e.disabled=!1}},{key:"disable",value:function(){e.disabled=!0}}]),e}();function Ht(){return(new Date).toLocaleString()}function Ot(e){if("object"!==pt(e))return e;var t=Object.prototype.toString.call(e).slice(8,-1);switch(t){case"Array":case"Uint8Array":case"ArrayBuffer":return t+"["+e.length+"]";case"Object":return"{}";default:return t}}function zt(e,t,n){n||(n=1),t||(t=2);var i={};if(!e||"object"!==pt(e))return e;var r=Object.prototype.toString.call(e).slice(8,-1);if(!Pt.includes(r))return r;if(!(n>t)){for(var a in e)Object.prototype.hasOwnProperty.call(e,a)&&(n===t?i[a]=Ot(e[a]):"object"===pt(e[a])?i[a]=zt(e[a],t,n+1):i[a]=e[a]);return i}}function At(){var e,t,n=new Promise((function(n,i){e=n,t=i}));return n.used=!1,n.resolve=function(){return n.used=!0,e.apply(void 0,arguments)},n.reject=function(){return n.used=!0,t.apply(void 0,arguments)},n}function qt(){try{return parseInt(performance.now(),10)}catch(e){return(new Date).getTime()}}ft(jt,"disabled",!0);var $t=function(e){try{return JSON.stringify(e)}catch(t){return""}};function en(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];try{return Mt?e&&"undefined"!=typeof ManagedMediaSource?ManagedMediaSource:window.MediaSource:null}catch(t){}}function tn(e){return/ManagedMediaSource/gi.test(Object.prototype.toString.call(e))}var nn="appendBuffer",rn="removeBuffer",an="updateDuration",ln=function(){function e(t,n){var i=this;St(this,e),ft(this,"media",null),ft(this,"mediaSource",null),ft(this,"_openPromise",At()),ft(this,"_queue",Object.create(null)),ft(this,"_sourceBuffer",Object.create(null)),ft(this,"_mseFullFlag",{}),ft(this,"_st",0),ft(this,"_opst",0),ft(this,"_logger",null),ft(this,"_config",null),ft(this,"_url",null),ft(this,"_onStartStreaming",(function(){i._logger.debug("startstreaming")})),ft(this,"_onEndStreaming",(function(){i._logger.debug("endstreaming")})),ft(this,"_onSBUpdateEnd",(function(e){var t=i._queue[e];if(t){var n=t[0];if((null==n?void 0:n.opName)!==an&&t.shift(),n){var r,a,l=qt()-i._opst;i._logger.debug("UpdateEnd(".concat(e,"/").concat(n.opName,")"),$t(function(e){var t=[];if(e instanceof TimeRanges)for(var n=0;n<e.length;n++)t.push({start:e.start(n),end:e.end(n)});return t}(null===(r=i._sourceBuffer[e])||void 0===r?void 0:r.buffered)),l,n.context),n.promise.resolve({name:n.opName,context:n.context,costtime:l});var U=null===(a=n.context)||void 0===a?void 0:a.callback;U&&"function"==typeof U&&U(n.context),i._startQueue(e)}}})),ft(this,"_onSBUpdateError",(function(e,t){var n=i._queue[e];if(n){var r=n[0];r&&(i._logger.error("UpdateError",e,r.opName,r.context),r.promise.reject(new Kt(Yt.MEDIA,Yt.SUB_TYPES.MSE_APPEND_BUFFER,t)))}})),this._config=Object.assign(e.getDefaultConfig(),n),t&&this.bindMedia(t),this._logger=new jt("MSE"),this._config.openLog&&jt.enable()}var t,n,i;return Wt(e,[{key:"isOpened",get:function(){var e;return"open"===(null===(e=this.mediaSource)||void 0===e?void 0:e.readyState)}},{key:"hasOpTasks",get:function(){var e=this,t=!1;return Object.keys(this._queue).forEach((function(n){var i=e._queue[n];Array.isArray(i)&&(t||(t=i.length>0))})),t}},{key:"url",get:function(){return this._url}},{key:"duration",get:function(){var e;return(null===(e=this.mediaSource)||void 0===e?void 0:e.duration)||-1}},{key:"isEnded",get:function(){return!!this.mediaSource&&"ended"===this.mediaSource.readyState}},{key:"streaming",get:function(){return!tn(this.mediaSource)||this.mediaSource.streaming}},{key:"isFull",value:function(t){return t?this._mseFullFlag[t]:this._mseFullFlag[e.VIDEO]}},{key:"updateDuration",value:function(e){var t=this,n=this.mediaSource&&this.mediaSource.duration>e;if(this.mediaSource&&this.mediaSource.duration>e){var i=0;if(Object.keys(this._sourceBuffer).forEach((function(e){try{i=Math.max(t.bufferEnd(e)||0,i)}catch(n){}})),e<i)return Promise.resolve()}return this._enqueueBlockingOp((function(){t.isEnded?t._logger.debug("setDuration but ended"):t.mediaSource&&(t.mediaSource.duration=e,t._logger.debug("setDuration",e))}),an,{isReduceDuration:n})}},{key:"open",value:function(){var e=this;if(this._openPromise.used&&!this.isOpened&&this.mediaSource){var t=this.mediaSource;t.addEventListener("sourceopen",(function n(){var i=qt()-e._st;e._logger.debug("sourceopen",i),t.removeEventListener("sourceopen",n),e._openPromise.resolve({costtime:i})})),this._openPromise=At()}return this._openPromise}},{key:"bindMedia",value:(i=Zt(Vt().mark((function e(t){var n,i,r,a,l=this;return Vt().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!this.mediaSource&&!this.media){e.next=3;break}return e.next=3,this.unbindMedia();case 3:if(n=en(this._config.preferMMS),t&&n){e.next=6;break}throw new Error("Param media or MediaSource does not exist");case 6:return this.media=t,i=this.mediaSource=new n,r=tn(i),this._st=qt(),a=function e(){var n=qt()-l._st;l._logger.debug("sourceopen"),i.removeEventListener("sourceopen",e),URL.revokeObjectURL(t.src),l._openPromise.resolve({costtime:n})},i.addEventListener("sourceopen",a),r&&(i.addEventListener("startstreaming",this._onStartStreaming),i.addEventListener("endstreaming",this._onEndStreaming)),this._url=URL.createObjectURL(i),t.src=this._url,t.disableRemotePlayback=r,e.abrupt("return",this._openPromise);case 17:case"end":return e.stop()}}),e,this)}))),function(e){return i.apply(this,arguments)})},{key:"unbindMedia",value:(n=Zt(Vt().mark((function e(){var t,n,i,r=this;return Vt().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this._openPromise.used||this._openPromise.resolve(),t=this.mediaSource){if(Object.keys(this._queue).forEach((function(e){var t=r._queue[e];t&&t.forEach((function(e){var t,n;return null===(t=e.promise)||void 0===t||null===(n=t.resolve)||void 0===n?void 0:n.call(t)}))})),n=!!this.media&&this.media.readyState>=1,i="open"===t.readyState,n&&i)try{t.endOfStream()}catch(a){}Object.keys(this._sourceBuffer).forEach((function(e){try{t.removeSourceBuffer(r._sourceBuffer[e])}catch(a){}})),tn(t)&&(t.removeEventListener("startstreaming",this._onStartStreaming),t.removeEventListener("endstreaming",this._onEndStreaming))}if(this.media){this.media.disableRemotePlayback=!1,this.media.removeAttribute("src");try{this.media.load()}catch(a){}this.media=null}this.mediaSource=null,this._openPromise=At(),this._queue=Object.create(null),this._sourceBuffer=Object.create(null);case 8:case"end":return e.stop()}}),e,this)}))),function(){return n.apply(this,arguments)})},{key:"createSource",value:function(e,t){if(!this._sourceBuffer[e]&&this.mediaSource){var n;try{n=this._sourceBuffer[e]=this.mediaSource.addSourceBuffer(t)}catch(i){throw new Kt(Yt.MEDIA,Yt.SUB_TYPES.MSE_ADD_SB,i)}n.mimeType=t,n.addEventListener("updateend",this._onSBUpdateEnd.bind(this,e)),n.addEventListener("error",this._onSBUpdateError.bind(this,e))}}},{key:"changeType",value:function(e,t){var n=this,i=this._sourceBuffer[e];return this.mediaSource&&i&&i.mimeType!==t?"function"!=typeof i.changeType?Promise.reject(new Kt(Yt.MEDIA,Yt.SUB_TYPES.MSE_CHANGE_TYPE,new Error("changeType is not a function"))):this._enqueueOp(e,(function(){try{i.changeType(t)}catch(r){throw new Kt(Yt.MEDIA,Yt.SUB_TYPES.MSE_CHANGE_TYPE,r)}i.mimeType=t,n._onSBUpdateEnd(e)}),"changeType",{mimeType:t}):Promise.resolve()}},{key:"createOrChangeSource",value:function(e,t){return this.createSource(e,t),this.changeType(e,t)}},{key:"append",value:function(e,t,n){var i=this;return t&&t.byteLength&&this._sourceBuffer[e]?this._enqueueOp(e,(function(){var r;i.mediaSource&&!i.media.error&&(i._logger.debug("MSE APPEND START",n),i._opst=qt(),null===(r=i._sourceBuffer[e])||void 0===r||r.appendBuffer(t))}),nn,n):Promise.resolve()}},{key:"remove",value:function(e,t,n,i){var r=this,a=!1;return this._mseFullFlag[e]&&(a=!0),this._enqueueOp(e,(function(){if(r.mediaSource&&!r.media.error){var a=r._sourceBuffer[e];t>=n||!a?r._onSBUpdateEnd(e):(r._opst=qt(),r._logger.debug("MSE REMOVE START",e,t,n,i),a.remove(t,n))}}),rn,i,a)}},{key:"clearBuffer",value:function(e,t){var n,i=this;return Object.keys(this._sourceBuffer).forEach((function(r){n=i.remove(r,e,t)})),n||Promise.resolve()}},{key:"clearAllBuffer",value:function(){var e,t=this;return Object.keys(this._sourceBuffer).forEach((function(n){var i=t._sourceBuffer[n];e=t.remove(n,0,It.end(It.get(i)))})),e}},{key:"clearOpQueues",value:function(e,t){var n;this._logger.debug("MSE clearOpQueue START");var i=this._queue[e];if(t&&i)this._queue[e]=[];else if(i&&i[e]&&!(i.length<5)){var r=[];i.forEach((function(e){e.context&&e.context.isinit&&r.push(e)})),this._queue[e]=i.slice(0,2),r.length>0&&(n=this._queue[e]).push.apply(n,r)}}},{key:"endOfStream",value:function(e){var t=this;return this.mediaSource&&"open"===this.mediaSource.readyState?this._enqueueBlockingOp((function(){var n=t.mediaSource;n&&"open"===n.readyState&&(t._logger.debug("MSE endOfStream START"),e?n.endOfStream(e):n.endOfStream())}),"endOfStream"):Promise.resolve()}},{key:"setLiveSeekableRange",value:function(e,t){var n=this.mediaSource;e<0||t<e||null==n||!n.setLiveSeekableRange||"open"!==n.readyState||n.setLiveSeekableRange(e,t)}},{key:"getSourceBuffer",value:function(e){return this._sourceBuffer[e]}},{key:"buffered",value:function(e){return It.get(this._sourceBuffer[e])}},{key:"bufferStart",value:function(e){return It.start(this.buffered(e))}},{key:"bufferEnd",value:function(e){return It.end(this.buffered(e))}},{key:"_enqueueOp",value:function(e,t,n,i,r){var a=this;if(!this.mediaSource)return Promise.resolve();var l=this._queue[e]=this._queue[e]||[],U={exec:t,promise:At(),opName:n,context:i};return r?(l.splice(0,0,U),this._mseFullFlag[e]=!1,this._startQueue(e)):l.push(U),this.isOpened||this.isEnded?1===l.length&&this._startQueue(e):this._openPromise.then((function(){1===l.length&&a._startQueue(e)})),U.promise}},{key:"_enqueueBlockingOp",value:(t=Zt(Vt().mark((function e(t,n,i){var r,a,l=this;return Vt().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this.mediaSource){e.next=2;break}return e.abrupt("return",Promise.resolve());case 2:if((r=Object.keys(this._sourceBuffer)).length){e.next=5;break}return e.abrupt("return",t());case 5:return a=[],r.forEach((function(e){var t=l._queue[e],r=At();a.push(r),t.push({exec:function(){r.resolve()},promise:r,opName:n,context:i}),1===t.length&&l._startQueue(e)})),e.abrupt("return",Promise.all(a).then((function(){try{return t()}finally{r.forEach((function(e){var t=l._queue[e],n=l._sourceBuffer[e];null==t||t.shift(),n&&n.updating||l._startQueue(e)}))}})));case 8:case"end":return e.stop()}}),e,this)}))),function(e,n,i){return t.apply(this,arguments)})},{key:"_startQueue",value:function(e){var t=this._queue[e];if(t){var n=t[0];if(n&&!this._mseFullFlag[e])try{n.exec()}catch(a){var i,r;if(a&&a.message&&a.message.indexOf("SourceBuffer is full")>=0)this._mseFullFlag[e]=!0,n.context&&"object"===pt(n.context)&&(n.context.isFull=!0),this._logger.error("[MSE error], context,",n.context," ,name,",n.opName,",err,SourceBuffer is full"),null==n||null===(i=n.promise)||void 0===i||i.reject(new Kt(Yt.MEDIA,Yt.SUB_TYPES.MSE_FULL,a));else this._logger.error(a),null==n||null===(r=n.promise)||void 0===r||r.reject(a.constructor===Kt?a:new Kt(Yt.MEDIA,Yt.SUB_TYPES.MSE_OTHER,a)),t.shift(),this._startQueue(e)}}}},{key:"setTimeoffset",value:function(e,t,n){var i=this;return this._enqueueOp(e,(function(){t<0&&(t+=.001),i._sourceBuffer[e].timestampOffset=t,i._onSBUpdateEnd(e)}),"setTimeoffset",n)}},{key:"abort",value:function(e,t){var n=this;return this.isOpened?this._enqueueOp(e,(function(){n._sourceBuffer[e].abort(),n._onSBUpdateEnd(e)}),"abort",t):Promise.resolve()}}],[{key:"isSupported",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:'video/mp4; codecs="avc1.42E01E,mp4a.40.2"',t=en();if(!t)return!1;try{return t.isTypeSupported(e)}catch(n){return this._logger.error(e,n),!1}}},{key:"isMMSOnly",value:function(){return"undefined"!=typeof ManagedMediaSource&&"undefined"==typeof MediaSource}},{key:"getDefaultConfig",value:function(){return{openLog:!1,preferMMS:!1}}}]),e}();ft(ln,"VIDEO","video"),ft(ln,"AUDIO","audio");var Un="fetch",Fn="xhr",on="arraybuffer",dn="text",Qn="json",sn=function(e){yt(n,e);var t=Ct(n);function n(e,i,r,a){var l;return St(this,n),ft(Tt(l=t.call(this,a)),"retryCount",0),ft(Tt(l),"isTimeout",!1),ft(Tt(l),"loaderType",Un),ft(Tt(l),"startTime",0),ft(Tt(l),"endTime",0),ft(Tt(l),"options",{}),l.url=e,l.request=i,l.response=r,l}return Wt(n)}(Nt(Error)),cn=Object.prototype.toString;function un(e){if("[object Object]"!==cn.call(e))return!1;var t=Object.getPrototypeOf(e);return null===t||t===Object.prototype}function Bn(e){if(e&&null!==e[0]&&void 0!==e[0]&&(0!==e[0]||null!==e[1]&&void 0!==e[1])){var t="bytes="+e[0]+"-";return e[1]&&(t+=e[1]),t}}function Rn(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}function hn(e,t){if(e){if(!t)return e;var n,i=Object.keys(t).map((function(e){if(null!=(n=t[e]))return Array.isArray(n)?e+="[]":n=[n],n.map((function(t){var n;return n=t,"[object Date]"===cn.call(n)?t=t.toISOString():function(e){return null!==e&&"object"===pt(e)}(t)&&(t=JSON.stringify(t)),"".concat(Rn(e),"=").concat(Rn(t))})).join("&")})).filter(Boolean).join("&");if(i){var r=e.indexOf("#");-1!==r&&(e=e.slice(0,r)),e+=(-1===e.indexOf("?")?"?":"&")+i}return e}}function Vn(e,t,n,i,r,a,l,U,F,o,d){return r=null!=r?parseFloat(r):null,i=parseInt(i||"0",10),Number.isNaN(i)&&(i=0),{data:e,done:t,options:{range:F,vid:o,index:U,contentLength:i,age:r,startTime:a,firstByteTime:l,endTime:Date.now(),priOptions:d},response:n}}function pn(e,t){return Math.round(8*e*1e3/t/1024)}var mn="real_time_speed",Zn=2097152,Sn=function(e){yt(i,e);var t,n=Ct(i);function i(){var e;return St(this,i),ft(Tt(e=n.call(this)),"_abortController",null),ft(Tt(e),"_timeoutTimer",null),ft(Tt(e),"_reader",null),ft(Tt(e),"_response",null),ft(Tt(e),"_aborted",!1),ft(Tt(e),"_index",-1),ft(Tt(e),"_range",null),ft(Tt(e),"_receivedLength",0),ft(Tt(e),"_running",!1),ft(Tt(e),"_logger",null),ft(Tt(e),"_vid",""),ft(Tt(e),"_firtstByte",0),ft(Tt(e),"_onProcessMinLen",0),ft(Tt(e),"_onCancel",null),ft(Tt(e),"_priOptions",null),e}return Wt(i,[{key:"load",value:function(e){var t,n=this,i=e.url,r=e.vid,a=e.timeout,l=e.responseType,U=e.onProgress,F=e.index,o=e.onTimeout,d=e.onCancel,Q=e.range,s=e.transformResponse,c=e.request,u=e.params,B=e.logger,R=e.method,h=e.headers,V=e.body,p=e.mode,m=e.credentials,Z=e.cache,S=e.redirect,J=e.referrer,W=e.referrerPolicy,f=e.onProcessMinLen,y=e.priOptions,k=e.streamRes,E=e.firstMaxChunkSize;this._logger=B,this._aborted=!1,this._onProcessMinLen=f,this._onCancel=d,this._abortController="undefined"!=typeof AbortController&&new AbortController,this._running=!0,this._index=F,this._range=Q||[0,0],this._vid=r||i,this._priOptions=y||{},this._firstMaxChunkSize=E;var b={method:R,headers:h,body:V,mode:p,credentials:m,cache:Z,redirect:S,referrer:J,referrerPolicy:W,signal:null===(t=this._abortController)||void 0===t?void 0:t.signal},v=!1;clearTimeout(this._timeoutTimer),i=hn(i,u);var N=Bn(Q);N&&(h=c?c.headers:b.headers=b.headers||(Headers?new Headers:{}),Headers&&h instanceof Headers?h.append("Range",N):h.Range=N),a&&(this._timeoutTimer=setTimeout((function(){if(v=!0,n.cancel(),o){var e=new sn(i,b,null,"timeout");e.isTimeout=!0,o(e,{index:n._index,range:n._range,vid:n._vid,priOptions:n._priOptions})}}),a));var g=Date.now();return this._logger.debug("[fetch load start], index,",F,",range,",Q),new Promise((function(e,t){(k?new Promise((function(e){e(k)})):fetch(c||i,c?void 0:b)).then(function(){var r=Zt(Vt().mark((function r(a){var o,d,c,u;return Vt().wrap((function(r){for(;;)switch(r.prev=r.next){case 0:if(clearTimeout(n._timeoutTimer),n._response=a,!n._aborted&&n._running){r.next=4;break}return r.abrupt("return");case 4:if(s&&(a=s(a,i)||a),a.ok){r.next=7;break}throw new sn(i,b,a,"bad network response");case 7:if(o=Date.now(),l!==dn){r.next=15;break}return r.next=11,a.text();case 11:d=r.sent,n._running=!1,r.next=37;break;case 15:if(l!==Qn){r.next=22;break}return r.next=18,a.json();case 18:d=r.sent,n._running=!1,r.next=37;break;case 22:if(!U){r.next=29;break}return n.resolve=e,n.reject=t,n._loadChunk(a,U,g,o),r.abrupt("return");case 29:return r.next=31,a.arrayBuffer();case 31:d=r.sent,d=new Uint8Array(d),n._running=!1,c=Date.now()-g,u=pn(d.byteLength,c),n.emit(mn,{speed:u,len:d.byteLength,time:c,vid:n._vid,index:n._index,range:n._range,priOptions:n._priOptions});case 37:n._logger.debug("[fetch load end], index,",F,",range,",Q),e(Vn(d,!0,a,a.headers.get("Content-Length"),a.headers.get("age"),g,o,F,Q,n._vid,n._priOptions));case 39:case"end":return r.stop()}}),r)})));return function(e){return r.apply(this,arguments)}}()).catch((function(e){var r;clearTimeout(n._timeoutTimer),n._running=!1,n._aborted&&!v||((e=e instanceof sn?e:new sn(i,b,null,null===(r=e)||void 0===r?void 0:r.message)).startTime=g,e.endTime=Date.now(),e.isTimeout=v,e.options={index:n._index,range:n._range,vid:n._vid,priOptions:n._priOptions},t(e))}))}))}},{key:"cancel",value:(t=Zt(Vt().mark((function e(){return Vt().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!this._aborted){e.next=2;break}return e.abrupt("return");case 2:if(this._aborted=!0,this._running=!1,!this._response){e.next=14;break}if(e.prev=5,!this._reader){e.next=9;break}return e.next=9,this._reader.cancel();case 9:e.next=13;break;case 11:e.prev=11,e.t0=e.catch(5);case 13:this._response=this._reader=null;case 14:if(this._abortController){try{this._abortController.abort()}catch(t){}this._abortController=null}this._onCancel&&this._onCancel({index:this._index,range:this._range,vid:this._vid,priOptions:this._priOptions});case 16:case"end":return e.stop()}}),e,this,[[5,11]])}))),function(){return t.apply(this,arguments)})},{key:"_loadChunk",value:function(e,t,n,i){var r=this;if(!e.body||!e.body.getReader){this._running=!1;var a=new sn(e.url,"",e,"onProgress of bad response.body.getReader");return a.options={index:this._index,range:this._range,vid:this._vid,priOptions:this._priOptions},void this.reject(a)}this._onProcessMinLen>0&&(this._cache=new Uint8Array(Zn),this._writeIdx=0);var l,U,F,o=this._reader=e.body.getReader(),d=function(){var a=Zt(Vt().mark((function a(){var Q,s,c,u,B,R,h,V,p,m;return Vt().wrap((function(a){for(;;)switch(a.prev=a.next){case 0:return U=Date.now(),a.prev=1,a.next=4,o.read();case 4:l=a.sent,F=Date.now(),a.next=13;break;case 8:return a.prev=8,a.t0=a.catch(1),F=Date.now(),r._aborted||(r._running=!1,a.t0.options={index:r._index,range:r._range,vid:r._vid,priOptions:r._priOptions},r.reject(a.t0)),a.abrupt("return");case 13:if(s=(null===(Q=r._range)||void 0===Q?void 0:Q.length)>0?r._range[0]:0,c=s+r._receivedLength,!r._aborted){a.next=19;break}return r._running=!1,t(void 0,!1,{range:[c,c],vid:r._vid,index:r._index,startTime:U,endTime:F,st:n,firstByteTime:i,priOptions:r._priOptions},e),a.abrupt("return");case 19:u=l.value?l.value.byteLength:0,r._receivedLength+=u,r._logger.debug("【fetchLoader,onProgress call】,task,",r._range,", start,",c,", end,",s+r._receivedLength,", done,",l.done),r._onProcessMinLen>0?r._writeIdx+u>=r._onProcessMinLen||l.done?((B=new Uint8Array(r._writeIdx+u)).set(r._cache.slice(0,r._writeIdx),0),u>0&&B.set(l.value,r._writeIdx),r._writeIdx=0,r._logger.debug("【fetchLoader,onProgress enough】,done,",l.done,",len,",B.byteLength,", writeIdx,",r._writeIdx)):u>0&&r._writeIdx+u<Zn?(r._cache.set(l.value,r._writeIdx),r._writeIdx+=u,r._logger.debug("【fetchLoader,onProgress cache】,len,",u,", writeIdx,",r._writeIdx)):u>0&&(R=new Uint8Array(r._writeIdx+u+2048),r._logger.debug("【fetchLoader,onProgress extra start】,size,",r._writeIdx+u+2048,", datalen,",u,", writeIdx,",r._writeIdx),R.set(r._cache.slice(0,r._writeIdx),0),u>0&&R.set(l.value,r._writeIdx),r._writeIdx+=u,delete r._cache,r._cache=R,r._logger.debug("【fetchLoader,onProgress extra end】,len,",u,", writeIdx,",r._writeIdx)):B=l.value,(B&&B.byteLength>0||l.done)&&(r._firstMaxChunkSize&&(r._firtstByte?r._cacheData&&((V=new Uint8Array(r._cacheData.byteLength+B.byteLength)).set(r._cacheData,0),V.set(B,r._cacheData.byteLength),B=V,r._cacheData=null):(r._firtstByte++,h=B.slice(0,r._firstMaxChunkSize),r._cacheData=B.slice(r._firstMaxChunkSize),B=h)),t(B,l.done,{range:[r._range[0]+r._receivedLength-(B?B.byteLength:0),r._range[0]+r._receivedLength],vid:r._vid,index:r._index,startTime:U,endTime:F,st:n,firstByteTime:i,priOptions:r._priOptions},e)),l.done?(p=Date.now()-n,m=pn(r._receivedLength,p),r.emit(mn,{speed:m,len:r._receivedLength,time:p,vid:r._vid,index:r._index,range:r._range,priOptions:r._priOptions}),r._running=!1,r._logger.debug("[fetchLoader onProgress end],task,",r._range,",done,",l.done),r.resolve(Vn(l,!0,e,e.headers.get("Content-Length"),e.headers.get("age"),n,i,r._index,r._range,r._vid,r._priOptions))):r._firstMaxChunkSize?setTimeout((function(){d()}),0):d();case 25:case"end":return a.stop()}}),a,null,[[1,8]])})));return function(){return a.apply(this,arguments)}}();d()}},{key:"receiveLen",get:function(){return this._receivedLength}},{key:"running",get:function(){return this._running},set:function(e){this._running=e}}],[{key:"isSupported",value:function(){return!("undefined"==typeof fetch)}}]),i}(it);var Jn=function(e){yt(n,e);var t=Ct(n);function n(){var e;return St(this,n),ft(Tt(e=t.call(this)),"_xhr",null),ft(Tt(e),"_aborted",!1),ft(Tt(e),"_timeoutTimer",null),ft(Tt(e),"_range",null),ft(Tt(e),"_receivedLength",0),ft(Tt(e),"_url",null),ft(Tt(e),"_onProgress",null),ft(Tt(e),"_index",-1),ft(Tt(e),"_headers",null),ft(Tt(e),"_currentChunkSizeKB",384),ft(Tt(e),"_timeout",null),ft(Tt(e),"_xhr",null),ft(Tt(e),"_withCredentials",null),ft(Tt(e),"_startTime",-1),ft(Tt(e),"_loadCompleteResolve",null),ft(Tt(e),"_loadCompleteReject",null),ft(Tt(e),"_runing",!1),ft(Tt(e),"_logger",!1),ft(Tt(e),"_vid",""),ft(Tt(e),"_responseType",void 0),ft(Tt(e),"_credentials",void 0),ft(Tt(e),"_method",void 0),ft(Tt(e),"_transformResponse",void 0),ft(Tt(e),"_firstRtt",void 0),ft(Tt(e),"_onCancel",null),ft(Tt(e),"_priOptions",null),e}return Wt(n,[{key:"load",value:function(e){var t=this;clearTimeout(this._timeoutTimer),this._logger=e.logger,this._range=e.range,this._onProgress=e.onProgress,this._index=e.index,this._headers=e.headers,this._withCredentials="include"===e.credentials||"same-origin"===e.credentials,this._body=e.body||null,e.method&&(this._method=e.method),this._timeout=e.timeout||null,this._runing=!0,this._vid=e.vid||e.url,this._responseType=e.responseType,this._firstRtt=-1,this._onTimeout=e.onTimeout,this._onCancel=e.onCancel,this._request=e.request,this._priOptions=e.priOptions||{},this._logger.debug("【xhrLoader task】, range",this._range),this._url=hn(e.url,e.params);var n=Date.now();return new Promise((function(e,n){t._loadCompleteResolve=e,t._loadCompleteReject=n,t._startLoad()})).catch((function(e){if(clearTimeout(t._timeoutTimer),t._runing=!1,!t._aborted)throw(e=e instanceof sn?e:new sn(t._url,t._request)).startTime=n,e.endTime=Date.now(),e.options={index:t._index,vid:t._vid,priOptions:t._priOptions},e}))}},{key:"_startLoad",value:function(){var e=null;if(this._responseType===on&&this._range&&this._range.length>1)if(this._onProgress){this._firstRtt=-1;var t=1024*this._currentChunkSizeKB,n=this._range[0]+this._receivedLength,i=this._range[1];t<this._range[1]-n&&(i=n+t),e=[n,i],this._logger.debug("[xhr_loader->],tast :",this._range,", SubRange, ",e)}else e=this._range,this._logger.debug("[xhr_loader->],tast :",this._range,", allRange, ",e);this._internalOpen(e)}},{key:"_internalOpen",value:function(e){var t=this;try{this._startTime=Date.now();var n=this._xhr=new XMLHttpRequest;n.open(this._method||"GET",this._url,!0),n.responseType=this._responseType,this._timeout&&(n.timeout=this._timeout),n.withCredentials=this._withCredentials,n.onload=this._onLoad.bind(this),n.onreadystatechange=this._onReadyStatechange.bind(this),n.onerror=function(e){var n,i,r;t._running=!1;var a=new sn(t._url,t._request,null==e||null===(n=e.currentTarget)||void 0===n?void 0:n.response,"xhr.onerror.status:"+(null==e||null===(i=e.currentTarget)||void 0===i?void 0:i.status)+",statusText,"+(null==e||null===(r=e.currentTarget)||void 0===r?void 0:r.statusText));a.options={index:t._index,range:t._range,vid:t._vid,priOptions:t._priOptions},t._loadCompleteReject(a)},n.ontimeout=function(e){t.cancel();var n=new sn(t._url,t._request,{status:408},"timeout");t._onTimeout&&(n.isTimeout=!0,t._onTimeout(n,{index:t._index,range:t._range,vid:t._vid,priOptions:t._priOptions})),n.options={index:t._index,range:t._range,vid:t._vid,priOptions:t._priOptions},t._loadCompleteReject(n)};var i=this._headers||{},r=Bn(e);r&&(i.Range=r),i&&Object.keys(i).forEach((function(e){n.setRequestHeader(e,i[e])})),this._logger.debug("[xhr.send->] tast,",this._range,",load sub range, ",e),n.send(this._body)}catch(a){a.options={index:this._index,range:e,vid:this._vid,priOptions:this._priOptions},this._loadCompleteReject(a)}}},{key:"_onReadyStatechange",value:function(e){2===e.target.readyState&&this._firstRtt<0&&(this._firstRtt=Date.now())}},{key:"_onLoad",value:function(e){var t,n=e.target.status;if(n<200||n>299){var i=new sn(this._url,null,ht(ht({},e.target.response),{},{status:n}),"bad response,status:"+n);return i.options={index:this._index,range:this._range,vid:this._vid,priOptions:this._priOptions},this._loadCompleteReject(i)}var r,a=null,l=!1,U=(null===(t=this._range)||void 0===t?void 0:t.length)>0?this._range[0]:0;if(this._responseType===on){var F,o=new Uint8Array(e.target.response);if(r=U+this._receivedLength,o&&o.byteLength>0){this._receivedLength+=o.byteLength;var d=Date.now()-this._startTime,Q=pn(this._receivedLength,d);this.emit(mn,{speed:Q,len:this._receivedLength,time:d,vid:this._vid,index:this._index,range:[r,U+this._receivedLength],priOptions:this._priOptions})}a=o,l=!((null===(F=this._range)||void 0===F?void 0:F.length)>1&&this._range[1]&&this._receivedLength<this._range[1]-this._range[0]),this._logger.debug("[xhr load done->], tast :",this._range,", start",r,"end ",U+this._receivedLength,",dataLen,",o?o.byteLength:0,",receivedLength",this._receivedLength,",index,",this._index,", done,",l)}else l=!0,a=e.target.response;var s={ok:n>=200&&n<300,status:n,statusText:this._xhr.statusText,url:this._xhr.responseURL,headers:this._getHeaders(this._xhr),body:this._xhr.response};this._transformResponse&&(s=this._transformResponse(s,this._url)||s),this._onProgress&&this._onProgress(a,l,{index:this._index,vid:this._vid,range:[r,U+this._receivedLength],startTime:this._startTime,endTime:Date.now(),priOptions:this._priOptions},s),l?(this._runing=!1,this._loadCompleteResolve&&this._loadCompleteResolve(Vn(this._onProgress?null:a,l,s,s.headers["content-length"],s.headers.age,this._startTime,this._firstRtt,this._index,this._range,this._vid,this._priOptions))):this._startLoad()}},{key:"cancel",value:function(){if(!this._aborted)return this._aborted=!0,this._runing=!1,Lt(kt(n.prototype),"removeAllListeners",this).call(this),this._onCancel&&this._onCancel({index:this._index,range:this._range,vid:this._vid,priOptions:this._priOptions}),this._xhr?this._xhr.abort():void 0}},{key:"receiveLen",get:function(){return this._receivedLength}},{key:"running",get:function(){return this._running},set:function(e){this._running=e}},{key:"_getHeaders",value:function(e){var t,n={},i=Xt(e.getAllResponseHeaders().trim().split("\r\n"));try{for(i.s();!(t=i.n()).done;){var r=t.value.split(": ");n[r[0].toLowerCase()]=r.slice(1).join(": ")}}catch(a){i.e(a)}finally{i.f()}return n}}],[{key:"isSupported",value:function(){return"undefined"!=typeof XMLHttpRequest}}]),n}(it),Wn=["retry","retryDelay","onRetryError","transformError"],fn=function(){function e(t,n){St(this,e),this.promise=At(),this.alive=!!n.onProgress,!n.logger&&(n.logger=new jt("Loader")),this._loaderType=t,this._loader=t===Un&&"undefined"!=typeof fetch?new Sn:new Jn,this._config=n,this._retryCount=0,this._retryTimer=null,this._canceled=!1,this._retryCheckFunc=n.retryCheckFunc,this._logger=n.logger}var t;return Wt(e,[{key:"exec",value:function(){var e=this,t=this._config,n=t.retry,i=t.retryDelay,r=t.onRetryError,a=t.transformError,l=gt(t,Wn),U=function(){var t=Zt(Vt().mark((function t(){var F,o,d;return Vt().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,t.next=3,e._loader.load(l);case 3:F=t.sent,e.promise.resolve(F),t.next=27;break;case 7:if(t.prev=7,t.t0=t.catch(0),e._loader.running=!1,e._logger.debug("[task request catch err]",t.t0),!e._canceled){t.next=13;break}return t.abrupt("return");case 13:if(t.t0.loaderType=e._loaderType,t.t0.retryCount=e._retryCount,o=t.t0,a&&(o=a(o)||o),r&&e._retryCount>0&&r(o,e._retryCount,{index:l.index,vid:l.vid,range:l.range,priOptions:l.priOptions}),e._retryCount++,d=!0,e._retryCheckFunc&&(d=e._retryCheckFunc(t.t0)),!(d&&e._retryCount<=n)){t.next=26;break}return clearTimeout(e._retryTimer),e._logger.debug("[task request setTimeout],retry",e._retryCount,",retry range,",l.range),e._retryTimer=setTimeout(U,i),t.abrupt("return");case 26:e.promise.reject(o);case 27:case"end":return t.stop()}}),t,null,[[0,7]])})));return function(){return t.apply(this,arguments)}}();return U(),this.promise}},{key:"cancel",value:(t=Zt(Vt().mark((function e(){return Vt().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return clearTimeout(this._retryTimer),this._canceled=!0,this._loader.running=!1,e.abrupt("return",this._loader.cancel());case 4:case"end":return e.stop()}}),e,this)}))),function(){return t.apply(this,arguments)})},{key:"running",get:function(){return this._loader&&this._loader.running}},{key:"loader",get:function(){return this._loader}}]),e}();function yn(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;return new Promise((function(t){return setTimeout(t,e)}))}var kn=function(e){yt(i,e);var t,n=Ct(i);function i(e){var t;return St(this,i),ft(Tt(t=n.call(this,e)),"type",Un),ft(Tt(t),"_queue",[]),ft(Tt(t),"_alive",[]),ft(Tt(t),"_currentTask",null),ft(Tt(t),"_finnalUrl",""),ft(Tt(t),"_config",void 0),t._config=function(e){return ht({loaderType:Un,retry:0,retryDelay:0,timeout:0,request:null,onTimeout:void 0,onProgress:void 0,onRetryError:void 0,transformRequest:void 0,transformResponse:void 0,transformError:void 0,responseType:dn,range:void 0,url:"",params:void 0,method:"GET",headers:{},body:void 0,mode:void 0,credentials:void 0,cache:void 0,redirect:void 0,referrer:void 0,referrerPolicy:void 0,integrity:void 0,onProcessMinLen:0},e)}(e),t._config.loaderType!==Fn&&Sn.isSupported()||(t.type=Fn),t.log=e.logger,t}return Wt(i,[{key:"isFetch",value:function(){return this.type===Un}},{key:"load",value:function(e){var t=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};"string"!=typeof e&&e?n=e:n.url=e||n.url||this._config.url,(n=Object.assign({},this._config,n)).params&&(n.params=Object.assign({},n.params)),n.headers&&un(n.headers)&&(n.headers=Object.assign({},n.headers)),n.body&&un(n.body)&&(n.body=Object.assign({},n.body)),n.transformRequest&&(n=n.transformRequest(n)||n),n.logger=this.log;var i=new fn(this.type,n);return i.loader.on(mn,(function(e){t.emit(mn,e)})),this._queue.push(i),1!==this._queue.length||this._currentTask&&this._currentTask.running||this._processTask(),i.promise}},{key:"cancel",value:(t=Zt(Vt().mark((function e(){var t;return Vt().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t=this._queue.map((function(e){return e.cancel()})).concat(this._alive.map((function(e){return e.cancel()}))),this._currentTask&&t.push(this._currentTask.cancel()),this._queue=[],this._alive=[],e.next=6,Promise.all(t);case 6:return e.next=8,yn();case 8:case"end":return e.stop()}}),e,this)}))),function(){return t.apply(this,arguments)})},{key:"_processTask",value:function(){var e=this;if(this._currentTask=this._queue.shift(),this._currentTask){this._currentTask.alive&&this._alive.push(this._currentTask);var t=this._currentTask.exec().catch((function(e){}));t&&"function"==typeof t.finally&&t.finally((function(){var t,n;null!==(t=e._currentTask)&&void 0!==t&&t.alive&&(null===(n=e._alive)||void 0===n?void 0:n.length)>0&&(e._alive=e._alive.filter((function(t){return t&&t!==e._currentTask}))),e._processTask()}))}}}],[{key:"isFetchSupport",value:function(){return Sn.isSupported()}}]),i}(it);var En=function(){return N((function e(){b(this,e)}),null,[{key:"install",value:function(){if(window.requestAnimationFrame=window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame,window.cancelAnimationFrame=window.cancelAnimationFrame||window.webkitCancelAnimationFrame||window.mozCancelAnimationFrame||window.cancelRequestAnimationFrame||window.webkitCancelRequestAnimationFrame||window.mozCancelRequestAnimationFrame,!window.requestAnimationFrame){var e=Date.now();window.requestAnimationFrame=function(t){var n=Date.now(),i=Math.max(16.7-(n-e),0),r=setTimeout(t,i);return e=n+i,r}}window.cancelAnimationFrame||(window.cancelAnimationFrame=function(e){clearTimeout(e)})}}])}(),bn=function(){return N((function e(){b(this,e),this.fps=0,this.isStoped=!0,this.ticks=[],this.isSupport=!0,this.maxFps=0,this.step=this._step.bind(this),this.rafId=null}),[{key:"_step",value:function(e){var t=this.ticks;if(t.unshift(e),t.length>10){var n=t.pop();n&&(this.fps=Math.floor(1e4/(e-n)),this.updateFpsInfo())}this.isStoped||(this.rafId=window.requestAnimationFrame(this.step))}},{key:"updateFpsInfo",value:function(){this.fps>this.maxFps&&(this.maxFps=this.fps)}},{key:"start",value:function(){void 0!==window.requestAnimationFrame&&(this.isStoped=!1,this.rafId=window.requestAnimationFrame(this.step))}},{key:"stop",value:function(){window.cancelAnimationFrame(this.rafId),this.isStoped=!0}}],[{key:"install",value:function(){En.install()}}])}(),vn=Nn&&!function(){var e="_localstorage_support_test";try{return localStorage.setItem(e,!0),localStorage.removeItem(e),!1}catch(t){return!0}}();function Nn(){try{return"undefined"!=typeof localStorage&&"setItem"in localStorage&&!!localStorage.setItem}catch(e){return!1}}var gn={length:vn?localStorage.length:0,clear:function(e){try{for(var t=localStorage.length-1;t>=0;t--){var n=localStorage.key(t);0===n.indexOf(e)&&localStorage.removeItem(n)}}catch(i){}},getItem:function(e){try{return localStorage.getItem(e)}catch(t){return null}},key:function(e){try{return localStorage.key(e)}catch(t){return null}},setItem:function(e,t){try{localStorage.setItem(e,t)}catch(n){}},removeItem:function(e){try{localStorage.removeItem(e)}catch(t){}},isSupport:vn},Tn=function(){return N((function e(){var t,n;b(this,e);var i=new Promise((function(e,i){t=e,n=i}));return i.resolve=t,i.reject=n,i}),[{key:"resolve",value:function(e){}},{key:"reject",value:function(e){}}])}(),Cn="IWZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO3ZhciBlPXt9LHQ9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtmdW5jdGlvbiBhKHQscyl7ZVt0XT1zZXRUaW1lb3V0KChmdW5jdGlvbigpe3Bvc3RNZXNzYWdlKHtkYXRhOntmYWtlSWQ6dH19KSxhKHQscyl9KSxzKX1wb3N0TWVzc2FnZSh7ZXZlbnQ6InJlYWR5In0pLGFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLChmdW5jdGlvbihzKXt0cnl7dmFyIHI9cy5kYXRhLG89dm9pZCAwPT09cj97fTpyLGM9by5hY3Rpb24sbj1vLmZha2VJZCxpPW8udGltZTtzd2l0Y2goYyl7Y2FzZSJzZXRJbnRlcnZhbCI6YShuLGkpO2JyZWFrO2Nhc2UiY2xlYXJJbnRlcnZhbCI6Y2FzZSJjbGVhclRpbWVvdXQiOnQuY2FsbChlLG4pJiYoY2xlYXJUaW1lb3V0KGVbbl0pLGRlbGV0ZSBlW25dKTticmVhaztjYXNlInNldFRpbWVvdXQiOmVbbl09c2V0VGltZW91dCgoZnVuY3Rpb24oKXtwb3N0TWVzc2FnZSh7ZGF0YTp7ZmFrZUlkOm59fSksdC5jYWxsKGUsbikmJmRlbGV0ZSBlW25dfSksaSl9fWNhdGNoKGQpe3Bvc3RNZXNzYWdlKHtldmVudDoiZXJyb3IiLGRhdGE6e2Vycm9yOmR9fSl9fSkpfSgpOwo=",Ln="undefined"!=typeof window&&window.Blob&&new Blob([atob(Cn)],{type:"text/javascript;charset=utf-8"});function xn(){var e;try{if(!(e=Ln&&(window.URL||window.webkitURL).createObjectURL(Ln)))throw"";return new Worker(e)}catch(t){return new Worker("data:application/javascript;base64,"+Cn)}finally{!("undefined"!=typeof window&&navigator.userAgent.indexOf("Trident/")>0)&&e&&(window.URL||window.webkitlRL).revokeObjectURL(e)}}var Xn,Dn,Gn,In={},Mn=0;if("undefined"!=typeof Worker){var Yn,wn=!1,Kn=!1,_n=function(e,t){Kn?t&&t():wn?e():function(){if(!Yn){var e=Promise.withResolvers(),t=e.promise,n=e.resolve,i=e.reject;Yn=t;try{(Xn=new xn).addEventListener("message",(function(e){var t=e.data,r=t.event,a=t.data;switch(r){case"error":Kn=!0,i(a.error);break;case"ready":wn=!0,n();break;default:var l=a.fakeId;if(l in In){var U=In[l]||{},F=U.cb,o=U.param,d=U.keepAlive;if("setInterval"!==U.type&&delete In[l],!d&&document.hidden)return;if("function"==typeof F)try{F.apply(window,o)}catch(Q){console.error("Error when parse callback function, code %s",Q)}}}})),Xn.addEventListener("error",(function(e){console.error(e),Kn=!0,i(e)}))}catch(r){Kn=!0,i(r)}}return Yn}().then(e,t)};Dn=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if("function"!=typeof e)throw new Error("cb must be a function");for(var i=function(){do{2147483647===Mn?Mn=0:Mn++}while(Mn in In);return Mn}(),r=arguments.length,a=new Array(r>3?r-3:0),l=3;l<r;l++)a[l-3]=arguments[l];return In[i]={cb:e,param:a,keepAlive:!!n,type:"setInterval"},_n((function(){Xn.postMessage({action:"setInterval",fakeId:i,time:t})}),(function(){i in In&&(In[i].degradeId=setInterval(e,t))})),i},Gn=function(e){if("number"==typeof e&&e in In){var t=In[e].degradeId;delete In[e],_n((function(){Xn.postMessage({action:"clearInterval",fakeId:e})}),(function(){t&&clearInterval(t)}))}}}else Dn=setInterval,Gn=clearInterval,console.error("the browser not support web worker, fallback to unWarp function!");Promise.withResolvers||(Promise.withResolvers=function(){var e={};return e.promise=new Promise((function(t,n){e.resolve=t,e.reject=n})),e});var Pn=["module"],jn="danger_d_speed";var Hn={stall_penalty:11,switch_penalty:4,interval:1e3,startInterval:1e3,decodeUnderflowBuffer:1,decodeUnderflowMode:1,decodeUnderflowCount:1},On=function(){return N((function e(t,n,i,r){var a=this,l=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{logger:function(){},openLog:!1};b(this,e),this._wasmPromise=new Tn,this._hasDeviceInfoChanged=!0,this.uuid=(new Date).getTime().toString(36).slice(4),this._defaultMaxBitrate=0,this._underflowBitrate=0,this._minBitrate=1/0,this._isCurrentHDR=!1,this.config=t,this.segment_duration=r||5e3,this.logger=function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];l.logger.apply(l,["abr(".concat(a.uuid,")::")].concat(t))},this.openLog=l.openLog,this.autoBitrateOpts=Object.assign({},Hn,t.autoBitrateOpts),this.stall_penalty=this.autoBitrateOpts.stall_penalty,this.switch_penalty=this.autoBitrateOpts.switch_penalty,this.interval=this.autoBitrateOpts.interval;var U=t.progressTimer||1e3,F=this.autoBitrateOpts.startInterval||U;this.initInterval=.8*F,this._preloadMethod=t.preloadmethod||0,this._videoWidth=0,this._videoHeight=0,this._maxDefinition=this.autoBitrateOpts.maxDefinition||null,this._underflowDefinition=this.autoBitrateOpts.underflowDefinition||null,this.updateBitrate(n),this.updateMediaInfos(i,!1)}),[{key:"_onLoadWasm",value:function(){var e=this,t=this.autoBitrateOpts.module,n=this.autoBitrateOpts;n.module;var i=I(n,Pn),r=this.autoBitrateOpts.isClassic||!1;t&&(r?this.module=new t(G({promise:this._wasmPromise},i)):t(this.module={onRuntimeInitialized:function(){e._wasmPromise.resolve()}}));return this._wasmPromise}},{key:"updateMediaInfos",value:function(e){var t=this,n=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];this._heightToDefinitionConfig=new Map,this._bitrateToDefinitionConfig=new Map,this._definitionToDefitionConfig=new Map,e?(e.dynamic_video_list.forEach((function(e){var n,i;null===(n=t._heightToDefinitionConfig)||void 0===n||n.set(e.height||e.vheight,e);var r,a=e.bandwidth||e.bitrate;(a<t._minBitrate&&(t._minBitrate=a),null===(i=t._bitrateToDefinitionConfig)||void 0===i||i.set(a,e),e.definition)&&(null===(r=t._definitionToDefitionConfig)||void 0===r||r.set(e.definition,e))})),this._maxDefinition&&(this._defaultMaxBitrate=this._getBitrate(this._maxDefinition)),this._underflowDefinition&&(this._underflowBitrate=this._getBitrate(this._underflowDefinition)),this.mediaInfos=e):n&&console.error("baseAbr mediaInfos null")}},{key:"_getBitrate",value:function(e){var t;return(null===(t=this._definitionToDefitionConfig)||void 0===t||null===(t=t.get(e))||void 0===t?void 0:t.bandwidth)||-1}},{key:"transformMediaInfo",value:function(){if(this.setDebugModel(this.openLog),this.mediaInfos){this.logger("mediaInfos",this.mediaInfos);try{for(var e,t=[],n=this.mediaInfos.dynamic_video_list,i=0;i<n.length;i++){var r=n[i];this._isCurrentHDR===!!r.isHDR&&t.push({stream_id:"s".concat(i),bandwidth:r.bitrate||r.bandwidth,width:r.vwidth||r.width,height:r.vheight||r.height,codec:r.codecs||r.codec_type||"h264",frame_rate:Number(r.fps)||-1,segment_duration:this.segment_duration,definition:r.qualityType,gearName:r.gearName})}var a={v_adaptation:t},l=JSON.stringify(a);null===(e=this.module)||void 0===e||e.ccall("parseMPD","null",["string"],[l])}catch(U){}}else console.warn("mediaInfos is null")}},{key:"_getDefaultSpeed",value:function(e){var t=0,n=navigator.connection;if(n&&n.downlink)t=1024*n.downlink/8,this.logger("initSpeed connect",t);else try{t=parseFloat(gn.getItem(jn)||"")||0,this.logger("initSpeed connect",t)}catch(i){}return 0===t&&(t=e&&e.historyAvspeed||0,this.logger("initSpeed history",t)),t}},{key:"setDebugModel",value:function(e){var t,n;null===(t=this.module)||void 0===t||null===(n=t._setDebugModel)||void 0===n||n.call(t,e)}},{key:"updateBitrate",value:function(e){var t,n,i=this;(this.bitrate=e,e>0)&&(this.module?null===(t=(n=this.module).updateBitrate)||void 0===t||t.call(n,e):this.readyPromise().then((function(){var t,n;null===(t=i.module)||void 0===t||null===(n=t.updateBitrate)||void 0===n||n.call(t,e)})))}},{key:"getPreloadBitrate",value:function(){return null}},{key:"_updateDeviceInfo",value:function(e){try{if(this._hasDeviceInfoChanged){var t,n=window.devicePixelRatio||1;null===(t=this.module)||void 0===t||t._updateDeviceInfo(this._videoWidth||Number(this.config.width),this._videoHeight||Number(this.config.height),n,e||-1)}this._hasDeviceInfoChanged=!1}catch(i){}}},{key:"readyPromise",value:function(){return this._wasmPromise}}])}();On.SPPED_CACHE=jn;var zn=function(e){return e.ABR_CHANGE="ABR_CHANGE_A",e.ABR_UPDATE_SPEC="ABR_UPDATE_SPEC",e.START_ABR="START_ABR",e.UPDATE_AUTO_DESC="UPDATE_AUTO_DESC",e.ABR_START_PROGRESS="ABR_START_PROGRESS",e.MAX_BUFFER_CHANGE="MAX_BUFFER_CHANGE",e.NEXT_SEGMENT_PREDICT="NEXT_SEGMENT_PREDICT",e.ABR_STAT="ABR_STAT",e.ABR_DEFINITION_REAL_CHANGE="ABR_DEFINITION_REAL_CHANGE",e.ABR_LIMIT_BITRATE="ABR_LIMIT_BITRATE",e}(zn||{}),An={PLAYBACK_BITRATE:"avg_play_bitrate",DOWNLOAD_BITRATE:"avg_download_bitrate",DOWNLOAD_NETWORK_SPEED:"avg_download_speed",PREDICT_NETWORK_SPEED:"avg_predict_speed",BUFFER_LENGTH:"avg_buffer_length",QOE:"avg_qoe"},qn=function(e){function t(e,n,i,r,a){var l,U,F,o,d,Q=arguments.length>5&&void 0!==arguments[5]?arguments[5]:{logger:function(){},openLog:!1};b(this,t),(l=E(this,t,[n,i,r,a,Q]))._bufferRange=new Map,l._sortedBufferRange=[],l._lastCheckResolutionStamp=0,l._currentDefinition=null,l._isSeeking=!1,l._waitingStartTime=0,l._stallCount=0,l._seekState=0,l._stallState=0,l._videoCurrentTime=0,l._hasStart=!1,l._isPaused=!1,l._hasAddFragment=!1,l._eventInfo={local_time_ms:0,internet_speed:0,buffer_length:0,last_bitrate:0,now_bitrate:0,play_speed:1},l._bitrateSet=[],l._generalInfo={},l._currentInAbr=!1,l._hasCalcTimelineLog=!1,l._abr_play_info={start_play_time_ms:0,is_hint:0,playback_info:{internet_speed_record:[],play_bitrate_record:[],buffer_length_record:[],play_speed_record:[],qoe_record:[],qoe_a_record:[],qoe_b_record:[],qoe_c_record:[]}},l._tickCount=0,l._fps=30,l.startTime=performance.now(),l._prevDefinitionItem=null,l._currentItem=null,l._switchCount=0,l._switchBitrate=0,l._avgStatItems={},l._qoeArgs=[0,0,0,0],l._abrUsed=-1,l._abrAlwaysOn=1,l._preloadInfo=null,l._hasLogStartInfo=!1,l._hasExecuteAbrAlgo=!1,l._lastExecuteTimeInMs=0,l._isSegmentDrive=!1,l._prevCurrentTime=-1,l._abrChangeTimeMap={},l._underFlowDecodeCount=0,l._onSegmentPredict=function(e){if(l.isCurrentInAbr&&l._isSegmentDrive){var t=Math.floor(l.player.downloadSpeed);e.isInitSegment||"video"!==e.mediaType||l._loopAbr(t,e.start,e.fix?e.end:0,e)}},l._onPlay=function(){l._hasStart=!0,l.logger("onplay")},l._onSeeking=function(){var e,t;l._isSeeking=!0,l.player.currentTime<l._videoCurrentTime?l._seekState=-1:l._seekState=1,null===(e=l.module)||void 0===e||null===(t=e._updateSeekInfo)||void 0===t||t.call(e,l._seekState),l.logger("seekState",l._seekState)},l._onSeekEnd=function(){l._isSeeking=!1,l.checkRestart()},l._onWaiting=function(){if(!(l._isSeeking||l._waitingStartTime>0)){for(var e=l.player.video.buffered,t=l.player.currentTime,n=!0,i=0;i<e.length;i++){var r=e.start(i),a=e.end(i);if(r<=t&&t<a-(l.autoBitrateOpts.decodeUnderflowBuffer||1)&&l.player.readyState<HTMLVideoElement.HAVE_ENOUGH_DATA){l._underFlowDecodeCount++,n=!1;break}}var U=l._underFlowDecodeCount>=(l.autoBitrateOpts.decodeUnderflowCount||1),F=l._defaultMaxBitrate>0||l._underflowBitrate>0,o=1===l.autoBitrateOpts.decodeUnderflowMode&&l._isSegmentDrive;if(U&&(F||o)){var d=!0;if(o){var Q=l._maxBitrate;l._maxBitrate=l._minBitrate,d=l._maxBitrate!==Q}l.player.emit("ABR_LIMIT_BITRATE",{removed:d}),l._underflowBitrate>0&&(l._maxBitrate=l._underflowBitrate)}l._waitingStartTime=(new Date).getTime(),l._stallId=setTimeout((function(){var e,t;clearTimeout(l._stallId),l._stallCount++,l._stallState=1,null===(e=l.module)||void 0===e||null===(t=e.updateWaitingState)||void 0===t||t.call(e,n)}),200)}},l._onPlaying=function(){l._waitingStartTime=0,l._stallState=0,clearTimeout(l._stallId),l.checkRestart()},l._onTimeUpdate=function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(l._sortedBufferRange&&0!==l._sortedBufferRange.length&&l._currentInAbr&&l.player){l._videoCurrentTime=l.player.currentTime;var n=Date.now();if(!(n-l._lastCheckResolutionStamp<1e3&&0!==l._lastCheckResolutionStamp)||t){l._lastCheckResolutionStamp=n;for(var i=l.player.currentTime,r=0,a=l._sortedBufferRange.length-1,U=null;r<=a;){var F=Math.floor(r+(a-r)/2),o=l._sortedBufferRange[F];if(i<o.start)a=F-1;else{if(!(i>=o.end)){U=o;break}r=F+1}}if(U){var d,Q=null===(d=l._bitrateToDefinitionConfig)||void 0===d?void 0:d.get(U.bandwidth),s=null==Q?void 0:Q.definition;if(l._currentDefinition===s&&!t||!s)return void(s||l.logger("error definition, mpd配置与接口配置不一致"));l._currentDefinition=s,l._prevDefinitionItem=l._currentItem,l._currentFps=Q.fps,l._currentItem=Q,l._emitAutoDescChange(s,!1,l._currentFps,Q),l._prevDefinitionItem&&l._currentDefinition&&l._prevDefinitionItem.definition!==l._currentDefinition.definition&&l._emitDefinitionRealChange(U)}}}},l._onCanPlay=function(){l._currentInAbr&&l._currentDefinition&&(l._updateId=setTimeout((function(){clearTimeout(l._updateId),l._emitAutoDescChange(l._currentDefinition,!1,l._currentFps,l._currentItem)}),0))},l._onBufferRangeUpdate=function(e){if(void 0!==e.start){null===l._currentItem&&l._onTimeUpdate(null,!0);var t=e.start;l._hasAddFragment=!0,l._bufferRange.set(t,e);var n=_(l._bufferRange.values());l._sortedBufferRange=n.sort((function(e,t){return e.start-t.start})),l.avgStat(An.DOWNLOAD_BITRATE,e.bandwidth)}},l._onReplay=function(){l.checkRestart()},l._onEnded=function(){l.stop()},l._onError=function(){l.stop()},l.start=function(){if(l.logger("start"),l._isPaused=!1,!l._hasCalcTimelineLog){var e=1===Math.floor(100*Math.random());l._abr_play_info.is_hint=e?1:0}l._hasCalcTimelineLog=!0,l._loop()},l.stop=function(){!0===(arguments.length>0&&void 0!==arguments[0]&&arguments[0])&&(l._abrAlwaysOn=-1),clearTimeout(l.timerId),l._isPaused=!0,l.logger("stop")},l.logger("constructor",n,i,r,a,l.bitrate),l.player=e,l.isOpenAutoDefi=!!l.autoBitrateOpts.isOpenAutoDefi,l._isSegmentDrive=1===l.autoBitrateOpts.abrDriveMode,l.onPlayRateChange=l._onPlayrateChange.bind(l),l._onWinSizeChange=(U=l.onWinElemSizeChange.bind(l),F=1e3,o=!1,function(){for(var e=this,t=arguments.length,n=new Array(t),i=0;i<t;i++)n[i]=arguments[i];var r=n,a=o&&!d;clearTimeout(d),d=setTimeout((function(){d=null,o||U.apply(e,r)}),F),a&&U.apply(e,r)}),l._maxDefinition=l.autoBitrateOpts.maxDefinition||null,l._maxBitrate=-1,l.listeners=[{evt:"MAX_BUFFER_CHANGE",handler:l._onMaxBufferChange.bind(l)},{evt:"playbackrateChange",handler:l.onPlayRateChange},{evt:"replay",handler:l._onReplay},{evt:"ended",handler:l._onEnded},{evt:"error",handler:l._onError},{evt:"timeupdate",handler:l._onTimeUpdate},{evt:"addVideoBufferEnd",handler:l._onBufferRangeUpdate},{evt:"canplay",handler:l._onCanPlay},{evt:"play",handler:l._onPlay},{evt:"seeking",handler:l._onSeeking},{evt:"seeked",handler:l._onSeekEnd},{evt:"waiting",handler:l._onWaiting},{evt:"playing",handler:l._onPlaying},{evt:"video_resize",handler:l._onWinSizeChange},{evt:"NEXT_SEGMENT_PREDICT",handler:l._onSegmentPredict}],l.listeners.forEach((function(e){var t=e.evt,n=e.handler;l.player.on(t,n)})),l._abrMethod=l.autoBitrateOpts.method||0,l._loopInterval=l.initInterval,bn.install(),l._maxCacheTimeVideo=l.config.preloadTime||5,l._maxCacheTimeAudio=l._maxCacheTimeVideo;for(var s=Object.keys(An),c=0;c<s.length;c++){var u=s[c],B=An[u];l._avgStatItems[B]=new $n}return l}return x(t,e),N(t,[{key:"init",value:function(e){return this._mediaList=e,this.isOpenAutoDefi?this._onLoadWasm():this._wasmPromise.resolve(),this._wasmPromise}},{key:"execute",value:function(){return this.listenSize(),this.initFps(),this.onWinElemSizeChange(),this._execDecision()}},{key:"initFps",value:function(){this.fpsDetection=new bn,this.fpsDetection.start(),this._fps=this.fpsDetection.fps,this._hasDeviceInfoChanged=!0}},{key:"listenSize",value:function(){window.removeEventListener("resize",this._onWinSizeChange),window.addEventListener("resize",this._onWinSizeChange)}},{key:"onWinElemSizeChange",value:function(){var e,t,n=(null===(e=this.player)||void 0===e?void 0:e.media)||(null===(t=this.player)||void 0===t?void 0:t.video);if(n){var i=n.getBoundingClientRect();this._videoWidth=Math.floor(i.width),this._videoHeight=Math.floor(i.height),this._hasDeviceInfoChanged=!0}}},{key:"execTimeUpdate",value:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];this._onTimeUpdate(null,e)}},{key:"_onMaxBufferChange",value:function(e){var t=e.videoCacheTime,n=e.audioCacheTime;this._maxCacheTimeAudio=n,this._maxCacheTimeVideo=t}},{key:"_emitAutoDescChange",value:function(e,t,n,i){var r;this.logger("[ABR],emitAutoDescChange, definition, ",e,",item,",i,",pre_item,",this._prevDefinitionItem),null===(r=this.player)||void 0===r||r.emit("UPDATE_AUTO_DESC",{definition:e,reset:t,fps:n,item:i,pre_item:this._prevDefinitionItem})}},{key:"_emitDefinitionRealChange",value:function(e){var t,n=0,i=e.start;this._abrChangeTimeMap[i]&&(this._abrChangeTimeMap[i]=0,delete this._abrChangeTimeMap[i],n=1),null===(t=this.player)||void 0===t||t.emit("ABR_DEFINITION_REAL_CHANGE",{orgDefinition:this._prevDefinitionItem.definition,orgBitrate:this._prevDefinitionItem.bitrate||this._prevDefinitionItem.bandwidth,currentDefinition:this._currentItem.definition,currentBitrate:this._currentItem.bitrate||this._currentItem.bandwidth,abrChange:n})}},{key:"_onPlayrateChange",value:function(){this.module&&this.updateBufferInfo()}},{key:"_execDecision",value:function(){if(!this.isOpenAutoDefi)return 0;var e=0;try{this.logger("exec decision"),this.updateSwitchInfo(),this.transformMediaInfo(),this.updateDeviceInfo();var t=!!this.autoBitrateOpts.isPlayAutoDefi;if(this.isOpenAutoDefi&&t){this._abrUsed=1;var n=this._getDefaultSpeed(this.player);this._isSegmentDrive||(e=this._loopAbr(n)),this.start(),this._changeLoopInterval(),this.logger("time start progress",(new Date).getTime()),this.logger("time costTime",performance.now()-this.startTime)}}catch(i){this.logger("decision error",i),this.logger("time costTime err",performance.now()-this.startTime)}return e}},{key:"_changeLoopInterval",value:function(){var e=this;this.startTimer&&(clearTimeout(this.startTimer),this.startTimer=null),this.startTimer=setTimeout((function(){e._loopInterval=e.interval,e.startTimer&&clearTimeout(e.startTimer),e.logger("interval change")}),5e3)}},{key:"_loop",value:function(){var e=this;this._isPaused||this._isSegmentDrive||(clearTimeout(this.timerId),this.timerId=setTimeout((function(){var t,n=e.player,i=e.config;if(e._hasStart&&null!==(t=i.autoBitrateOpts)&&void 0!==t&&t.stillRunWhenPaused||!n.paused||!n.config.autoplay&&!e._hasStart){var r=e._hasAddFragment?void 0:e._getDefaultSpeed(n);e._loopAbr(r)}e._loop()}),this._loopInterval))}},{key:"checkRestart",value:function(){var e;null!==(e=this.config.autoBitrateOpts)&&void 0!==e&&e.autoRestartAbr&&this._currentInAbr&&this._isPaused&&this.start()}},{key:"updateDeviceInfo",value:function(){try{if(this.fpsDetection){var e=this.fpsDetection.fps;e!==this._fps&&(this._fps=e,this._hasDeviceInfoChanged=!0)}this._updateDeviceInfo(this._fps)}catch(t){}}},{key:"updateBufferInfo",value:function(e){var t,n,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,a=this.player.playbackRate,l=this.bufferLength;r>0&&(this.player&&(l=r-this.player.video.currentTime));var U=e||Math.floor(this.player.downloadSpeed);this._tickCount<5&&0===U&&(U=this._getDefaultSpeed(this.player),this.logger("initSpeed fix"));var F=-1===this._maxBitrate?this._defaultMaxBitrate:this._maxBitrate;return this.logger("downloadSpeed:",U,"buffer:",l,"maxCacheTimeAudio:",this._maxCacheTimeAudio,"maxCacheVideoTime",this._maxCacheTimeVideo,"seekState",this._seekState,"stallState",this._stallState,"segmentBufferStart",i,"segmentBufferEnd",r),null===(t=this.module)||void 0===t||t._updateBufferInfo(a,this._maxCacheTimeAudio,this._maxCacheTimeVideo,l,this._isSegmentDrive?r:l,U,this._seekState,null===(n=this.player)||void 0===n?void 0:n.currentTime,this._stallState,F),this._seekState=0,this._eventInfo={internet_speed:U,buffer_length:l,last_bitrate:this.bitrate,play_speed:a},this.logger("playRate:",a,"buff:",l,"downloadSpeed:",U),{buffer:l,downloadSpeed:U}}},{key:"updateSwitchInfo",value:function(){var e,t,n=(new Date).getTime();this._openTimeMs=n,this._abr_play_info.start_play_time_ms=n;var i,r,a=(null===(e=this.player)||void 0===e?void 0:e.config.preloadTime)||50,l=(r=(i=n).toString(16)).length<=8?{high:0,low:i}:{high:parseInt(r.substr(0,r.length-8),16),low:parseInt(r.substr(r.length-8),16)},U=this.autoBitrateOpts.noStallCheckTime||5,F=this.openLog;this.logger("openTime:",n,"this.logger",F),null===(t=this.module)||void 0===t||t._updateSwitchInfo(l.low,l.high,U,F,this.stall_penalty,this.switch_penalty);var o=this._mediaList.video,d=o.map((function(e){var t=e.bandwidth,n=e.bitrate;return t||n}));this._bitrateSet=d.map((function(e,t){return{bitrate:e,codecs:o[t].codecs||o[t].codec_type||""}})),this._generalInfo={max_cache_time:a,bitrate_set:this._bitrateSet,segment_duration:this.segment_duration,preload_info:{},startup_info:{}}}},{key:"updatePreloadCacheInfo",value:function(e){try{this._preloadInfo=e,this.logger("update preloadInfo",e),e&&e.item_num!==e.items.length&&(this.logger("preloadInfo invalid"),this._preloadInfo=null)}catch(t){this.logger("updatePreloadCacheInfo",t),this._preloadInfo=null}}},{key:"updatePreloadLogInfo",value:function(e){this._generalInfo.preload_info=e||{}}},{key:"_loopAbr",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};this._tickCount++;var r=-1,a=[];if(!this.module||!this.player)return this.bitrate;try{var l,U=(new Date).getTime(),F=this.player;this.updateDeviceInfo();var o=this.updateBufferInfo(e,t,n),d=o.downloadSpeed,Q=o.buffer;if(this.module.updateDropFrame&&F.video.getVideoPlaybackQuality){var s,c=F.video.getVideoPlaybackQuality(),u=c.droppedVideoFrames/c.totalVideoFrames;null===(s=this.module)||void 0===s||s.updateDropFrame(u)}r=this.module._getPredictedBitrate(this.bitrate,this._abrMethod);for(var B=0;B<7;B++)a.push(this.module.HEAP32[r/Int32Array.BYTES_PER_ELEMENT+B]);var R=a[0],h=1===a[1];this._eventInfo.now_bitrate=R,this._eventInfo.local_time_ms=(new Date).getTime();var V=0;if(R!==this.bitrate&&0!==R||this.autoBitrateOpts.reportVerboseAbrLog){var p=this.player.currentTime;if(this.module.getStat){var m=this.module.getStat();F.emit("ABR_STAT",G(G({v_time:p,diff_current_position:-1===this._prevCurrentTime?0:p-this._prevCurrentTime,net_speed:8*d,costTime:(new Date).getTime()-U,download_time:null==i?void 0:i.costTime},m),{},{gop_size:null==i?void 0:i.gopSize,audio_buffer:null==i?void 0:i.audioBuffer})),this._abrChangeTimeMap[m.download_position]=1}this._prevCurrentTime=p}if(R!==this.bitrate&&0!==R){var Z=this.bitrate;V=Math.abs(Z-R);for(var S=[],J=(F.media||F.video).buffered,W=0;W<J.length;W++)S.push({start:J.start(W),end:J.end(W)});var f=this._videoWidth||Number(this.config.width),y=this._videoHeight||Number(this.config.height),k=(new Date).getTime(),E={speed:"".concat(d," KB/s"),buffer_length:"".concat(Q," s"),video_pos:F.currentTime,all_buffers:S,seek_state:this._seekState,stall_state:this._stallState,screen_width:f,screen_height:y,dpr:window&&window.devicePixelRatio,playbackRate:F.playbackRate,bitrateSet:this._bitrateSet,abrMethod:this._abrMethod,delta:this._hasExecuteAbrAlgo?k-this._lastExecuteTimeInMs:0};this._lastExecuteTimeInMs=k,this._hasExecuteAbrAlgo=!0,this.logger("abr predicate: ".concat(R,", prevBitrate: ").concat(Z,","),"willStall: ".concat(h,", switchBitrate: ").concat(V)),this.updateBitrate(R),F.emit("ABR_CHANGE_A",Z,R,h,JSON.stringify(E))}this._hasLogStartInfo||(this._hasLogStartInfo=!0,this._generalInfo.startup_info={predict_bitrate:R,download_speed:d,screen_width:this._videoWidth||Number(this.config.width),screen_height:this._videoHeight||Number(this.config.height),device_pixel_ratio:window&&window.devicePixelRatio,screen_fps:this._fps,startup_method:this._abrMethod}),null===(l=this.player)||void 0===l||l.emit("ABR_LOOP"),this.onAbrLoop(d,a[2],V,a.slice(3))}catch(b){this.logger("abr error",b),console.error("loopAbr error",b)}finally{r>-1&&this.module._free(r)}return this.bitrate}},{key:"destroy",value:function(){var e,t=this;this.stop(),this.listeners.forEach((function(e){var n,i=e.evt,r=e.handler;null===(n=t.player)||void 0===n||n.off(i,r)})),this._maxBitrate=-1,this.player=null,this._heightToDefinitionConfig=null,this._bitrateToDefinitionConfig=null,this._bitrateToDefinitionConfig=null,this._bufferRange.clear(),this._sortedBufferRange=[],this.module=null,clearTimeout(this._stallId),clearTimeout(this._updateId),this.startTimer&&clearTimeout(this.startTimer),window.removeEventListener("resize",this._onWinSizeChange),null===(e=this.fpsDetection)||void 0===e||e.stop()}},{key:"eventInfo",get:function(){return this._eventInfo}},{key:"generalInfo",get:function(){return this._generalInfo}},{key:"bufferLength",get:function(){var e,t,n=(null===(e=this.player)||void 0===e?void 0:e.getBufferedRange())||[],i=((null===(t=this.player)||void 0===t?void 0:t.video)||{currentTime:0}).currentTime,r=n[1]-Math.max(n[0],i),a=Math.max(0,r).toFixed(2);return parseFloat(a)}},{key:"downloadSpeed",get:function(){return Math.floor(this.player.downloadSpeed)}},{key:"nowBitrate",get:function(){return this.bitrate}},{key:"openTimeMs",get:function(){return this._openTimeMs}},{key:"isCurrentInAbr",get:function(){return this._currentInAbr},set:function(e){this._currentInAbr=e}},{key:"isCurrentHDR",get:function(){return this._isCurrentHDR},set:function(e){this._isCurrentHDR=e}},{key:"onAbrLoop",value:function(e){var t,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:[];if(this._qoeArgs=r,this._currentItem&&this.avgStat(An.PLAYBACK_BITRATE,this._currentItem.bitrate),this.avgStat(An.DOWNLOAD_NETWORK_SPEED,1e3*e*8),this.avgStat(An.PREDICT_NETWORK_SPEED,n),this.avgStat(An.BUFFER_LENGTH,this.bufferLength),this.avgStat(An.QOE,this.getQoeRelValue(0)),i>0&&(this._switchCount++,this._switchBitrate+=i),this._abr_play_info.is_hint){var a=((new Date).getTime()-this.openTimeMs)/1e3;a=parseFloat(a.toFixed(2)),this._abr_play_info.playback_info.internet_speed_record.push([a,this.downloadSpeed]),this._abr_play_info.playback_info.play_bitrate_record.push([a,this.nowBitrate]),this._abr_play_info.playback_info.buffer_length_record.push([a,this.bufferLength]),this._abr_play_info.playback_info.play_speed_record.push([a,(null===(t=this.player)||void 0===t?void 0:t.playbackRate)||-1]),this._abr_play_info.playback_info.qoe_record.push([a,this.getQoeRelValue(0)]),this._abr_play_info.playback_info.qoe_a_record.push([a,this.getQoeRelValue(1)]),this._abr_play_info.playback_info.qoe_b_record.push([a,this.getQoeRelValue(2)]),this._abr_play_info.playback_info.qoe_c_record.push([a,this.getQoeRelValue(3)])}}},{key:"getQoeRelValue",value:function(e){return this._qoeArgs[e]/100}},{key:"avgStat",value:function(e,t){var n=this._avgStatItems[e];n&&n.add(t)}},{key:"getAbrPlayInfo",value:function(){return this._abr_play_info}},{key:"updateAbrMethod",value:function(e){this._abrMethod=e}},{key:"getAbrMethod",value:function(){return this._abrMethod}},{key:"updateSegmentDuration",value:function(e){var t;this.segment_duration=e,null!==(t=this.module)&&void 0!==t&&t.updateSegmentDuration&&this.module.updateSegmentDuration(e)}},{key:"getAbrVVStats",value:function(){for(var e={},t=Object.keys(An),n=0;n<t.length;n++){var i=t[n],r=An[i],a=this._avgStatItems[r];e[r]=a.avg()}return e.switch_counts=this._switchCount,e.avg_switch_bitrate=0===this._switchCount?0:this._switchBitrate/this._switchCount,e.abr_qoe=this.getQoeRelValue(0),e.abr_qoe_a=this.getQoeRelValue(1),e.abr_qoe_b=this.getQoeRelValue(2),e.abr_qoe_c=this.getQoeRelValue(3),e.abr_method=this._abrMethod,e.abr_used=this._abrUsed,e.abr_always_on=this._abrAlwaysOn,this.logger("abrVVStats",e),e}}])}(On),$n=function(){return N((function e(){b(this,e),this.total=0,this.count=0}),[{key:"add",value:function(e){this.total+=e,this.count++}},{key:"avg",value:function(){if(0===this.count)return 0;var e=this.total/this.count;return Math.floor(e)}}])}(),ei={1:"debug",2:"log",3:"warn",4:"error"},ti=function(){try{return"undefined"!=typeof localStorage&&"setItem"in window.localStorage&&!!window.localStorage.setItem}catch(e){return!1}}()&&!function(){var e="local_storage_support_test";try{return window.localStorage.setItem(e,"true"),window.localStorage.removeItem(e),!1}catch(t){return!0}}(),ni=ri(),ii=function(){if(ti)try{return!!window.localStorage.getItem("playertestlog")}catch(e){return!1}return!1}();function ri(){if(ti)try{return!!window.localStorage.getItem("playerlog")}catch(e){return!1}return!1}function ai(e,t,n){var i=ei[t];if(i&&null!=e&&e[i]){for(var r=arguments.length,a=new Array(r>3?r-3:0),l=3;l<r;l++)a[l-3]=arguments[l];e[i].apply(e,[n].concat(a))}}var li="FIXED",Ui="AUTO",Fi=function(){return N((function e(t,n){var i=this;b(this,e),this.bitrateMap={},this.defIdMap={},this._startPlay=!1,this.canplayHandler=function(){i._startPlay=!0},this.onAbrChange=function(e,t,n,r){var a=i.pluginInst.player,l=i.bitrateMap[e],U=i.bitrateMap[t],F=l?l.definition:"",o=null!=U&&U.definition?U.definition:F;F!==o&&i._startPlay&&(i._abrSwitchHandler(U),a.emit("ABR_CHANGE",{prev:F,cur:o,prevName:null==l?void 0:l.definitionName,curName:null==U?void 0:U.definitionName,abrInfo:r}))},this.onAutoDescChange=function(e){var t=e.definition,n=e.reset,r=e.fps,a=e.item;i.updateAutoDefiDesc(t,n,r,a)};var r=t.player;this.pluginInst=t;var a=this.pluginInst.config.autoBitrateOpts||{};this.isPlayAutoDefi=!!a.isPlayAutoDefi,this.isOpenAutoDefi=!!a.isOpenAutoDefi,this.isCurrentAutoDefi=this.isOpenAutoDefi&&this.isPlayAutoDefi,this._abrSwitchHandler=n,r.once("playing",this.canplayHandler)}),[{key:"init",value:(e=k(M().mark((function e(t){var n,i,r,a;return M().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this.isOpenAutoDefi){e.next=2;break}return e.abrupt("return",{type:li});case 2:return n=this.pluginInst,i=n.player,r=n.playerConfig,a=n.config,i.on(zn.UPDATE_AUTO_DESC,this.onAutoDescChange),this.bitrateMap={},this.defIdMap={},this.abrInstance=new qn(i,a,0,{dynamic_video_list:r.definition.list.concat()},5e3,{logger:ai,openLog:ni}),e.next=9,this.abrInstance.init(t);case 9:i.on(zn.ABR_CHANGE,this.onAbrChange),this.abrInstance&&(this.abrInstance.isCurrentInAbr=this.isCurrentAutoDefi);case 11:case"end":return e.stop()}}),e,this)}))),function(t){return e.apply(this,arguments)})},{key:"execute",value:function(){var e,t=null===(e=this.abrInstance)||void 0===e?void 0:e.execute();return{bitrate:t,type:-1===t?li:Ui}}},{key:"updateBitrate",value:function(e){var t;null===(t=this.abrInstance)||void 0===t||t.updateBitrate(e)}},{key:"updateCurrentHDRStatus",value:function(e){this.abrInstance&&(this.abrInstance.isCurrentHDR=!!e)}},{key:"enable",value:function(){this.isCurrentAutoDefi=!0,this.abrInstance&&(this.abrInstance.start(),this.abrInstance.isCurrentInAbr=!0,this.abrInstance.execTimeUpdate(!0))}},{key:"disable",value:function(){this.abrInstance&&(this.updateAutoDefiDesc("",!0),this.isCurrentAutoDefi=!1,this.abrInstance.isCurrentInAbr=!1,this.abrInstance.stop(!0))}},{key:"isCurrentInAbr",value:function(){return!!this.abrInstance&&this.abrInstance.isCurrentInAbr}},{key:"updateAutoDefiDesc",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0,i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,r=this.pluginInst,a=r.player,l=(r.config.autoBitrateOpts||{}).autoDefiText||"auto";a.emit("ABR_AUTO_DESC_CHANGE",l,t?void 0:e,n,i),t||(a._currentDefinitionFromPlayer={definition:"自动 ".concat(e),item:i})}},{key:"updateAbrCacheData",value:function(){var e=this,t=this.pluginInst,n=t.player,i=t.config,r=t.playerConfig,a=i.autoBitrateOpts||{},l=r.definition.list,U=!1;if(l.forEach((function(t){e.bitrateMap[t.bitrate]={url:t.url,definition:t.definition,definitionName:t.text},e.defIdMap[t.definition]={bitrate:t.bitrate,definition:t.definition},"auto"!==t.definition&&"自动"!==t.definition||(U=!0)})),this.isOpenAutoDefi&&!U){var F=a.autoDefiText||"auto",o={definition:"自动",bitrate:n.curDefinition.bitrate,text:F,url:"__auto__",selected:this.isPlayAutoDefi,name:"自动",vwidth:n.curDefinition.vwidth,vheight:n.curDefinition.vheight};r.definition.list.push(o)}}},{key:"destroy",value:function(){var e=this.pluginInst.player;e&&(e.off(zn.ABR_CHANGE,this.onAbrChange),e.off("playing",this.canplayHandler),this.abrInstance&&(e.off(zn.UPDATE_AUTO_DESC,this.onAutoDescChange),this.abrInstance.destroy(),this.abrInstance=void 0))}}]);var e}(),oi={MEDIA_EXPIRED:"MEDIA_EXPIRED",INIT_FAIL:"INIT_FAIL",PARSE_ERROR:"PARSE_ERROR",PLAYER_LOG:"PLAYER_LOG",BUFFERED_RESET:"BUFFERED_RESET",MEDIA_LIST:"MEDIA_LIST"},di="real_time_speed",Qi="is unsupported",si="buffer_control",ci="waiting",ui="playing",Bi={app_id:6383,sid:5,task_type:1},Ri=function(e){return e.GOP="gop",e.SIZE="size",e.UNMUX="un_mux",e.ONLY_SIZE="only_size",e}(Ri||{}),hi={BUFFER_CONTROLS:"buffer_control"},Vi="timer_update",pi="PRELOAD_ERROR",mi="PRELOAD_CHECK",Zi="PRELOAD_OK",Si="PRELOAD_MATCH",Ji="USER_DEFI_CHECK",Wi="meta_ready",fi="init",yi=[{range:[0,1800],time:5e3},{range:[1800,3600],time:1e4},{range:[3600,7200],time:15e3},{range:[7200,18e3],time:2e4},{range:[18e3,Number.MAX_VALUE],time:3e4}],ki="progress dataLen not match",Ei={onlyInit:!1,useWaterLevel:!1,maxBufferLength:10,minBufferLength:5,tickInSeconds:.2,getLicenseUrl:"",xhrSetup:{},retryCount:1,retryDelay:1e3,timeout:3e3,processMaxGapTime:1/0,preloadCacheType:1,needPreloadRangeList:!1,isOpenPreload:!0,needPreloadCheck:!1,preloadTime:0,preloadMaxCacheCount:0,needAutoBitrate:!0,keyValue:null,drm:null,switchBitRateWay:!1,enableWorker:!1,bufferThreshold:10,removeBufferLen:60,removeBufferAtSeek:!1,resumePlayWaterLevel:2,waitJampBufferMaxCnt:3,waitingInBufferTimeOut:5e3,waitingTimeOut:1e4,notDegradeErrorList:["timeout",403,404],h265Degrade:!1,forceVideoPlay:!1,segmentMinDuration:3,supportHevc:void 0,H264Config:null,reqOptions:{},rangeMaxDuration:15,getRequestOptionsCallback:null,closeDowngrade:!1,loaderType:"fetch",reUseMSE:!1,urlExpireDisableErrorEvent:!1,logCacheConfig:{logCacheLevel:_t.LOG,logMaxSize:204800},noPreloadAddBufferLen:0,enableFPSStuckHandle:!1,loadRangeType:Ri.GOP,timerInWorker:!1,waitingRetrySeekTimes:null,waitingRetryDuration:null,disableInactiveWaitingCheck:!1,alwaysStreamingLoad:!0,enableCusExpiryCheck:!1,enableCheckTrackGap:!1,trackGap:1,reqParams:{},isAddRange:!1,disableRepeatRange:!1,audioGroupingStrategy:2,reuseSecretKey:!1,bindSrcTiming:Wi},bi=function(){return N((function e(t){var n=this;b(this,e),this.alive=!0,this.timeoutId=null,this.onTick=function(e){var t,i;(null===(t=n.cancelPending)||void 0===t||t.call(n),n.alive)&&(null===(i=n.onTick_)||void 0===i||i.call(n),null==e||e())},this.onTick_=t}),[{key:"tickAfter",value:function(e){var t=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return this.cancelPending?this.cancelPending():this.cancelPending=function(){t.timeoutId&&(clearTimeout(t.timeoutId),t.timeoutId=null)},this.alive=!0,this.timeoutId=setTimeout(this.onTick,1e3*e,n),this}},{key:"tickEvery",value:function(e){var t=this;this.tickAfter(e,(function(){t.tickEvery(e)}))}},{key:"stop",value:function(){this.alive=!1,this.cancelPending&&(this.cancelPending(),this.cancelPending=void 0)}}])}(),vi=function(e){function t(e){var n;return b(this,t),(n=E(this,t)).onVisibleChange=function(){var e=n.masterTimer||n.workerTimer;n.stop(),e&&n.start()},n.options=e,document.addEventListener("visibilitychange",n.onVisibleChange),n}return x(t,e),N(t,[{key:"start",value:function(){var e=this,t=this.options,n=t.timerInWorker,i=t.frequency,r=function(){try{(e.masterTimer||e.workerTimer)&&e.emit(Vi)}catch(t){}};this.stop(),n&&"undefined"!=typeof Worker&&document.hidden?this.workerTimer=Dn(r,1e3*i,!0):(this.masterTimer=new bi(r),this.masterTimer.tickEvery(i))}},{key:"stop",value:function(){this.workerTimer&&(Gn(this.workerTimer),this.workerTimer=void 0),this.masterTimer&&(this.masterTimer.stop(),this.masterTimer=void 0)}},{key:"destroy",value:function(){this.removeAllListeners(),document.removeEventListener("visibilitychange",this.onVisibleChange),this.stop()}}])}(nt.EventEmitter);const Ni="3.0.31-alpha.1";var gi={416:wt[Yt.NETWROK_RANGE_NOT_SATISFIABLE],403:wt[Yt.NETWORK_FORBIDDEN],404:wt[Yt.NETWORK_NOTFOUND],timeout:wt[Yt.NETWORK_TIMEOUT],networkError:wt[Yt.NETWORK],lenNotMatch:2130,mse:wt[Yt.MEDIA][Yt.SUB_TYPES.MSE_OTHER],mseOpen:wt[Yt.MEDIA][Yt.SUB_TYPES.MSE_ADD_SB],mseAppend:wt[Yt.MEDIA][Yt.SUB_TYPES.MSE_APPEND_BUFFER],mse_hijack:wt[Yt.MEDIA][Yt.SUB_TYPES.MSE_HIJACK],eme_hijack:wt[Yt.MEDIA][Yt.SUB_TYPES.EME_HIJACK],metaError:wt[Yt.DEMUX][Yt.SUB_TYPES.MP4],muxError:wt[Yt.REMUX][Yt.SUB_TYPES.FMP4],other:wt[Yt.OTHER],waitTimeout:wt[Yt.RUNTIME][Yt.SUB_TYPES.BUFFERBREAK_ERROR],waitTimeoutWithHidden:wt[Yt.RUNTIME][Yt.SUB_TYPES.WAITING_TIMEOUT_ERROR],drm:wt[Yt.DRM][Yt.SUB_TYPES.LICENSE],custom_drm:wt[Yt.DRM][Yt.SUB_TYPES.CUSTOM_LICENSE]},Ti=Yt;var Ci=N((function e(t,n,i){b(this,e);var r=0,a=0;null!=i&&i.range&&i.range.length>1&&(r=i.range[0],a=i.range[1]);var l=function(e){return gi[e]||e}(n);return{headers:(null==i?void 0:i.headers)||null,errorCode:l,errorType:t,errorMessage:(null==i?void 0:i.httpText)||(null==i?void 0:i.message),url:null==i?void 0:i.url,httpCode:n,version:Ni,rangeStart:r,rangeEnd:a,ext:i,mediaError:{code:l,message:(null==i?void 0:i.httpText)||(null==i?void 0:i.message)}}})),Li=N((function e(t,n,i){return b(this,e),{version:Ni,errorCode:n,errorType:t,errorMessage:i.msg,ext:i,mediaError:{code:n,message:i.msg}}}));function xi(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function Xi(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?xi(Object(n),!0).forEach((function(t){Ki(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):xi(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Di(){Di=function(){return e};var e={},t=Object.prototype,n=t.hasOwnProperty,i=Object.defineProperty||function(e,t,n){e[t]=n.value},r="function"==typeof Symbol?Symbol:{},a=r.iterator||"@@iterator",l=r.asyncIterator||"@@asyncIterator",U=r.toStringTag||"@@toStringTag";function F(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{F({},"")}catch(E){F=function(e,t,n){return e[t]=n}}function o(e,t,n,r){var a=t&&t.prototype instanceof s?t:s,l=Object.create(a.prototype),U=new f(r||[]);return i(l,"_invoke",{value:Z(e,n,U)}),l}function d(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(E){return{type:"throw",arg:E}}}e.wrap=o;var Q={};function s(){}function c(){}function u(){}var B={};F(B,a,(function(){return this}));var R=Object.getPrototypeOf,h=R&&R(R(y([])));h&&h!==t&&n.call(h,a)&&(B=h);var V=u.prototype=s.prototype=Object.create(B);function p(e){["next","throw","return"].forEach((function(t){F(e,t,(function(e){return this._invoke(t,e)}))}))}function m(e,t){function r(i,a,l,U){var F=d(e[i],e,a);if("throw"!==F.type){var o=F.arg,Q=o.value;return Q&&"object"==typeof Q&&n.call(Q,"__await")?t.resolve(Q.__await).then((function(e){r("next",e,l,U)}),(function(e){r("throw",e,l,U)})):t.resolve(Q).then((function(e){o.value=e,l(o)}),(function(e){return r("throw",e,l,U)}))}U(F.arg)}var a;i(this,"_invoke",{value:function(e,n){function i(){return new t((function(t,i){r(e,n,t,i)}))}return a=a?a.then(i,i):i()}})}function Z(e,t,n){var i="suspendedStart";return function(r,a){if("executing"===i)throw new Error("Generator is already running");if("completed"===i){if("throw"===r)throw a;return{value:void 0,done:!0}}for(n.method=r,n.arg=a;;){var l=n.delegate;if(l){var U=S(l,n);if(U){if(U===Q)continue;return U}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if("suspendedStart"===i)throw i="completed",n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);i="executing";var F=d(e,t,n);if("normal"===F.type){if(i=n.done?"completed":"suspendedYield",F.arg===Q)continue;return{value:F.arg,done:n.done}}"throw"===F.type&&(i="completed",n.method="throw",n.arg=F.arg)}}}function S(e,t){var n=t.method,i=e.iterator[n];if(void 0===i)return t.delegate=null,"throw"===n&&e.iterator.return&&(t.method="return",t.arg=void 0,S(e,t),"throw"===t.method)||"return"!==n&&(t.method="throw",t.arg=new TypeError("The iterator does not provide a '"+n+"' method")),Q;var r=d(i,e.iterator,t.arg);if("throw"===r.type)return t.method="throw",t.arg=r.arg,t.delegate=null,Q;var a=r.arg;return a?a.done?(t[e.resultName]=a.value,t.next=e.nextLoc,"return"!==t.method&&(t.method="next",t.arg=void 0),t.delegate=null,Q):a:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,Q)}function J(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function W(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function f(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(J,this),this.reset(!0)}function y(e){if(e){var t=e[a];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var i=-1,r=function t(){for(;++i<e.length;)if(n.call(e,i))return t.value=e[i],t.done=!1,t;return t.value=void 0,t.done=!0,t};return r.next=r}}return{next:k}}function k(){return{value:void 0,done:!0}}return c.prototype=u,i(V,"constructor",{value:u,configurable:!0}),i(u,"constructor",{value:c,configurable:!0}),c.displayName=F(u,U,"GeneratorFunction"),e.isGeneratorFunction=function(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===c||"GeneratorFunction"===(t.displayName||t.name))},e.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,u):(e.__proto__=u,F(e,U,"GeneratorFunction")),e.prototype=Object.create(V),e},e.awrap=function(e){return{__await:e}},p(m.prototype),F(m.prototype,l,(function(){return this})),e.AsyncIterator=m,e.async=function(t,n,i,r,a){void 0===a&&(a=Promise);var l=new m(o(t,n,i,r),a);return e.isGeneratorFunction(n)?l:l.next().then((function(e){return e.done?e.value:l.next()}))},p(V),F(V,U,"Generator"),F(V,a,(function(){return this})),F(V,"toString",(function(){return"[object Generator]"})),e.keys=function(e){var t=Object(e),n=[];for(var i in t)n.push(i);return n.reverse(),function e(){for(;n.length;){var i=n.pop();if(i in t)return e.value=i,e.done=!1,e}return e.done=!0,e}},e.values=y,f.prototype={constructor:f,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(W),!e)for(var t in this)"t"===t.charAt(0)&&n.call(this,t)&&!isNaN(+t.slice(1))&&(this[t]=void 0)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var t=this;function i(n,i){return l.type="throw",l.arg=e,t.next=n,i&&(t.method="next",t.arg=void 0),!!i}for(var r=this.tryEntries.length-1;r>=0;--r){var a=this.tryEntries[r],l=a.completion;if("root"===a.tryLoc)return i("end");if(a.tryLoc<=this.prev){var U=n.call(a,"catchLoc"),F=n.call(a,"finallyLoc");if(U&&F){if(this.prev<a.catchLoc)return i(a.catchLoc,!0);if(this.prev<a.finallyLoc)return i(a.finallyLoc)}else if(U){if(this.prev<a.catchLoc)return i(a.catchLoc,!0)}else{if(!F)throw new Error("try statement without catch or finally");if(this.prev<a.finallyLoc)return i(a.finallyLoc)}}}},abrupt:function(e,t){for(var i=this.tryEntries.length-1;i>=0;--i){var r=this.tryEntries[i];if(r.tryLoc<=this.prev&&n.call(r,"finallyLoc")&&this.prev<r.finallyLoc){var a=r;break}}a&&("break"===e||"continue"===e)&&a.tryLoc<=t&&t<=a.finallyLoc&&(a=null);var l=a?a.completion:{};return l.type=e,l.arg=t,a?(this.method="next",this.next=a.finallyLoc,Q):this.complete(l)},complete:function(e,t){if("throw"===e.type)throw e.arg;return"break"===e.type||"continue"===e.type?this.next=e.arg:"return"===e.type?(this.rval=this.arg=e.arg,this.method="return",this.next="end"):"normal"===e.type&&t&&(this.next=t),Q},finish:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),W(n),Q}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var i=n.completion;if("throw"===i.type){var r=i.arg;W(n)}return r}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,n){return this.delegate={iterator:y(e),resultName:t,nextLoc:n},"next"===this.method&&(this.arg=void 0),Q}},e}function Gi(e,t,n,i,r,a,l){try{var U=e[a](l),F=U.value}catch(o){return void n(o)}U.done?t(F):Promise.resolve(F).then(i,r)}function Ii(e){return function(){var t=this,n=arguments;return new Promise((function(i,r){var a=e.apply(t,n);function l(e){Gi(a,i,r,l,U,"next",e)}function U(e){Gi(a,i,r,l,U,"throw",e)}l(void 0)}))}}function Mi(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function Yi(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,er(i.key),i)}}function wi(e,t,n){return t&&Yi(e.prototype,t),n&&Yi(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e}function Ki(e,t,n){return(t=er(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function _i(e){return(_i=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function Pi(e,t){return(Pi=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e})(e,t)}function ji(e,t){if(null==e)return{};var n,i,r=function(e,t){if(null==e)return{};var n,i,r={},a=Object.keys(e);for(i=0;i<a.length;i++)n=a[i],t.indexOf(n)>=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(i=0;i<a.length;i++)n=a[i],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}function Hi(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function Oi(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var n,i=_i(e);if(t){var r=_i(this).constructor;n=Reflect.construct(i,arguments,r)}else n=i.apply(this,arguments);return function(e,t){if(t&&("object"==typeof t||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return Hi(e)}(this,n)}}function zi(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var i,r,a,l,U=[],F=!0,o=!1;try{if(a=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;F=!1}else for(;!(F=(i=a.call(n)).done)&&(U.push(i.value),U.length!==t);F=!0);}catch(d){o=!0,r=d}finally{try{if(!F&&null!=n.return&&(l=n.return(),Object(l)!==l))return}finally{if(o)throw r}}return U}}(e,t)||qi(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Ai(e){return function(e){if(Array.isArray(e))return $i(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||qi(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function qi(e,t){if(e){if("string"==typeof e)return $i(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?$i(e,t):void 0}}function $i(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,i=new Array(t);n<t;n++)i[n]=e[n];return i}function er(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var i=n.call(e,t||"default");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}function tr(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function nr(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?tr(Object(n),!0).forEach((function(t){dr(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):tr(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function ir(){ir=function(){return e};var e={},t=Object.prototype,n=t.hasOwnProperty,i=Object.defineProperty||function(e,t,n){e[t]=n.value},r="function"==typeof Symbol?Symbol:{},a=r.iterator||"@@iterator",l=r.asyncIterator||"@@asyncIterator",U=r.toStringTag||"@@toStringTag";function F(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{F({},"")}catch(E){F=function(e,t,n){return e[t]=n}}function o(e,t,n,r){var a=t&&t.prototype instanceof s?t:s,l=Object.create(a.prototype),U=new f(r||[]);return i(l,"_invoke",{value:Z(e,n,U)}),l}function d(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(E){return{type:"throw",arg:E}}}e.wrap=o;var Q={};function s(){}function c(){}function u(){}var B={};F(B,a,(function(){return this}));var R=Object.getPrototypeOf,h=R&&R(R(y([])));h&&h!==t&&n.call(h,a)&&(B=h);var V=u.prototype=s.prototype=Object.create(B);function p(e){["next","throw","return"].forEach((function(t){F(e,t,(function(e){return this._invoke(t,e)}))}))}function m(e,t){function r(i,a,l,U){var F=d(e[i],e,a);if("throw"!==F.type){var o=F.arg,Q=o.value;return Q&&"object"==typeof Q&&n.call(Q,"__await")?t.resolve(Q.__await).then((function(e){r("next",e,l,U)}),(function(e){r("throw",e,l,U)})):t.resolve(Q).then((function(e){o.value=e,l(o)}),(function(e){return r("throw",e,l,U)}))}U(F.arg)}var a;i(this,"_invoke",{value:function(e,n){function i(){return new t((function(t,i){r(e,n,t,i)}))}return a=a?a.then(i,i):i()}})}function Z(e,t,n){var i="suspendedStart";return function(r,a){if("executing"===i)throw new Error("Generator is already running");if("completed"===i){if("throw"===r)throw a;return{value:void 0,done:!0}}for(n.method=r,n.arg=a;;){var l=n.delegate;if(l){var U=S(l,n);if(U){if(U===Q)continue;return U}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if("suspendedStart"===i)throw i="completed",n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);i="executing";var F=d(e,t,n);if("normal"===F.type){if(i=n.done?"completed":"suspendedYield",F.arg===Q)continue;return{value:F.arg,done:n.done}}"throw"===F.type&&(i="completed",n.method="throw",n.arg=F.arg)}}}function S(e,t){var n=t.method,i=e.iterator[n];if(void 0===i)return t.delegate=null,"throw"===n&&e.iterator.return&&(t.method="return",t.arg=void 0,S(e,t),"throw"===t.method)||"return"!==n&&(t.method="throw",t.arg=new TypeError("The iterator does not provide a '"+n+"' method")),Q;var r=d(i,e.iterator,t.arg);if("throw"===r.type)return t.method="throw",t.arg=r.arg,t.delegate=null,Q;var a=r.arg;return a?a.done?(t[e.resultName]=a.value,t.next=e.nextLoc,"return"!==t.method&&(t.method="next",t.arg=void 0),t.delegate=null,Q):a:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,Q)}function J(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function W(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function f(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(J,this),this.reset(!0)}function y(e){if(e){var t=e[a];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var i=-1,r=function t(){for(;++i<e.length;)if(n.call(e,i))return t.value=e[i],t.done=!1,t;return t.value=void 0,t.done=!0,t};return r.next=r}}return{next:k}}function k(){return{value:void 0,done:!0}}return c.prototype=u,i(V,"constructor",{value:u,configurable:!0}),i(u,"constructor",{value:c,configurable:!0}),c.displayName=F(u,U,"GeneratorFunction"),e.isGeneratorFunction=function(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===c||"GeneratorFunction"===(t.displayName||t.name))},e.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,u):(e.__proto__=u,F(e,U,"GeneratorFunction")),e.prototype=Object.create(V),e},e.awrap=function(e){return{__await:e}},p(m.prototype),F(m.prototype,l,(function(){return this})),e.AsyncIterator=m,e.async=function(t,n,i,r,a){void 0===a&&(a=Promise);var l=new m(o(t,n,i,r),a);return e.isGeneratorFunction(n)?l:l.next().then((function(e){return e.done?e.value:l.next()}))},p(V),F(V,U,"Generator"),F(V,a,(function(){return this})),F(V,"toString",(function(){return"[object Generator]"})),e.keys=function(e){var t=Object(e),n=[];for(var i in t)n.push(i);return n.reverse(),function e(){for(;n.length;){var i=n.pop();if(i in t)return e.value=i,e.done=!1,e}return e.done=!0,e}},e.values=y,f.prototype={constructor:f,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(W),!e)for(var t in this)"t"===t.charAt(0)&&n.call(this,t)&&!isNaN(+t.slice(1))&&(this[t]=void 0)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var t=this;function i(n,i){return l.type="throw",l.arg=e,t.next=n,i&&(t.method="next",t.arg=void 0),!!i}for(var r=this.tryEntries.length-1;r>=0;--r){var a=this.tryEntries[r],l=a.completion;if("root"===a.tryLoc)return i("end");if(a.tryLoc<=this.prev){var U=n.call(a,"catchLoc"),F=n.call(a,"finallyLoc");if(U&&F){if(this.prev<a.catchLoc)return i(a.catchLoc,!0);if(this.prev<a.finallyLoc)return i(a.finallyLoc)}else if(U){if(this.prev<a.catchLoc)return i(a.catchLoc,!0)}else{if(!F)throw new Error("try statement without catch or finally");if(this.prev<a.finallyLoc)return i(a.finallyLoc)}}}},abrupt:function(e,t){for(var i=this.tryEntries.length-1;i>=0;--i){var r=this.tryEntries[i];if(r.tryLoc<=this.prev&&n.call(r,"finallyLoc")&&this.prev<r.finallyLoc){var a=r;break}}a&&("break"===e||"continue"===e)&&a.tryLoc<=t&&t<=a.finallyLoc&&(a=null);var l=a?a.completion:{};return l.type=e,l.arg=t,a?(this.method="next",this.next=a.finallyLoc,Q):this.complete(l)},complete:function(e,t){if("throw"===e.type)throw e.arg;return"break"===e.type||"continue"===e.type?this.next=e.arg:"return"===e.type?(this.rval=this.arg=e.arg,this.method="return",this.next="end"):"normal"===e.type&&t&&(this.next=t),Q},finish:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),W(n),Q}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var i=n.completion;if("throw"===i.type){var r=i.arg;W(n)}return r}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,n){return this.delegate={iterator:y(e),resultName:t,nextLoc:n},"next"===this.method&&(this.arg=void 0),Q}},e}function rr(e){return(rr="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function ar(e,t,n,i,r,a,l){try{var U=e[a](l),F=U.value}catch(o){return void n(o)}U.done?t(F):Promise.resolve(F).then(i,r)}function lr(e){return function(){var t=this,n=arguments;return new Promise((function(i,r){var a=e.apply(t,n);function l(e){ar(a,i,r,l,U,"next",e)}function U(e){ar(a,i,r,l,U,"throw",e)}l(void 0)}))}}function Ur(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function Fr(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,Jr(i.key),i)}}function or(e,t,n){return t&&Fr(e.prototype,t),n&&Fr(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e}function dr(e,t,n){return(t=Jr(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Qr(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&cr(e,t)}function sr(e){return(sr=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function cr(e,t){return(cr=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e})(e,t)}function ur(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}function Br(e,t,n){return(Br=ur()?Reflect.construct.bind():function(e,t,n){var i=[null];i.push.apply(i,t);var r=new(Function.bind.apply(e,i));return n&&cr(r,n.prototype),r}).apply(null,arguments)}function Rr(e){var t="function"==typeof Map?new Map:void 0;return Rr=function(e){if(null===e||(n=e,-1===Function.toString.call(n).indexOf("[native code]")))return e;var n;if("function"!=typeof e)throw new TypeError("Super expression must either be null or a function");if(void 0!==t){if(t.has(e))return t.get(e);t.set(e,i)}function i(){return Br(e,arguments,sr(this).constructor)}return i.prototype=Object.create(e.prototype,{constructor:{value:i,enumerable:!1,writable:!0,configurable:!0}}),cr(i,e)},Rr(e)}function hr(e,t){if(null==e)return{};var n,i,r=function(e,t){if(null==e)return{};var n,i,r={},a=Object.keys(e);for(i=0;i<a.length;i++)n=a[i],t.indexOf(n)>=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(i=0;i<a.length;i++)n=a[i],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}function Vr(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function pr(e){var t=ur();return function(){var n,i=sr(e);if(t){var r=sr(this).constructor;n=Reflect.construct(i,arguments,r)}else n=i.apply(this,arguments);return function(e,t){if(t&&("object"==typeof t||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return Vr(e)}(this,n)}}function mr(){return mr="undefined"!=typeof Reflect&&Reflect.get?Reflect.get.bind():function(e,t,n){var i=function(e,t){for(;!Object.prototype.hasOwnProperty.call(e,t)&&null!==(e=sr(e)););return e}(e,t);if(i){var r=Object.getOwnPropertyDescriptor(i,t);return r.get?r.get.call(arguments.length<3?e:n):r.value}},mr.apply(this,arguments)}function Zr(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,i=new Array(t);n<t;n++)i[n]=e[n];return i}function Sr(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(e){if("string"==typeof e)return Zr(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Zr(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var i=0,r=function(){};return{s:r,n:function(){return i>=e.length?{done:!0}:{done:!1,value:e[i++]}},e:function(e){throw e},f:r}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,l=!0,U=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return l=e.done,e},e:function(e){U=!0,a=e},f:function(){try{l||null==n.return||n.return()}finally{if(U)throw a}}}}function Jr(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var i=n.call(e,t||"default");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}var Wr={DEBUG:1,LOG:2,WARN:3,ERROR:4},fr=["Boolean","Number","String","Undefined","Null","Date","Object"],yr=function(){function e(t,n){Ur(this,e),this.name=t||"",this._prefix="[".concat(this.name,"]"),this.logCacheLevel=(null==n?void 0:n.logCacheLevel)||3,this.logMaxSize=(null==n?void 0:n.logMaxSize)||204800,this.logSize=0,this.logTextArray=[]}return or(e,[{key:"debug",value:function(){for(var t,n=arguments.length,i=new Array(n),r=0;r<n;r++)i[r]=arguments[r];this.logCache.apply(this,[Wr.DEBUG].concat(i)),e.disabled||(t=console).debug.apply(t,[this._prefix,kr()].concat(i))}},{key:"log",value:function(){for(var t,n=arguments.length,i=new Array(n),r=0;r<n;r++)i[r]=arguments[r];this.logCache.apply(this,[Wr.LOG].concat(i)),e.disabled||(t=console).log.apply(t,[this._prefix,kr()].concat(i))}},{key:"warn",value:function(){for(var t,n=arguments.length,i=new Array(n),r=0;r<n;r++)i[r]=arguments[r];this.logCache.apply(this,[Wr.WARN].concat(i)),e.disabled||(t=console).warn.apply(t,[this._prefix,kr()].concat(i))}},{key:"error",value:function(){for(var t,n=arguments.length,i=new Array(n),r=0;r<n;r++)i[r]=arguments[r];this.logCache.apply(this,[Wr.ERROR].concat(i)),e.disabled||(t=console).error.apply(t,[this._prefix,kr()].concat(i))}},{key:"logCache",value:function(e){if(!(e<this.logCacheLevel)){var t="";try{for(var n=arguments.length,i=new Array(n>1?n-1:0),r=1;r<n;r++)i[r-1]=arguments[r];var a=i.map((function(e){return br(e)}));t=this._prefix+kr()+JSON.stringify(a)}catch(U){return}if(e>=this.logCacheLevel&&(this.logSize+=t.length,this.logTextArray.push(t)),this.logSize>this.logMaxSize){var l=this.logTextArray.shift();this.logSize-=l.length}}}},{key:"getLogCache",value:function(){var e=this.logTextArray.join("\n");return this.reset(),e}},{key:"reset",value:function(){this.logTextArray=[],this.logSize=0}},{key:"table",value:function(){var t;e.disabled||(console.group(this._prefix),(t=console).table.apply(t,arguments),console.groupEnd())}},{key:"setLogLevel",value:function(e){this.logCacheLevel=e}}],[{key:"enable",value:function(){e.disabled=!1}},{key:"disable",value:function(){e.disabled=!0}}]),e}();function kr(){return(new Date).toLocaleString()}function Er(e){if("object"!==rr(e))return e;var t=Object.prototype.toString.call(e).slice(8,-1);switch(t){case"Array":case"Uint8Array":case"ArrayBuffer":return t+"["+e.length+"]";case"Object":return"{}";default:return t}}function br(e,t,n){n||(n=1),t||(t=2);var i={};if(!e||"object"!==rr(e))return e;var r=Object.prototype.toString.call(e).slice(8,-1);if(!fr.includes(r))return r;if(!(n>t)){for(var a in e)Object.prototype.hasOwnProperty.call(e,a)&&(n===t?i[a]=Er(e[a]):"object"===rr(e[a])?i[a]=br(e[a],t,n+1):i[a]=e[a]);return i}}dr(yr,"disabled",!0);var vr="fetch",Nr="xhr",gr="arraybuffer",Tr="text",Cr="json",Lr=function(e){Qr(n,e);var t=pr(n);function n(e,i,r,a){var l;return Ur(this,n),dr(Vr(l=t.call(this,a)),"retryCount",0),dr(Vr(l),"isTimeout",!1),dr(Vr(l),"loaderType",vr),dr(Vr(l),"startTime",0),dr(Vr(l),"endTime",0),dr(Vr(l),"options",{}),l.url=e,l.request=i,l.response=r,l}return or(n)}(Rr(Error)),xr=Object.prototype.toString;function Xr(e){if("[object Object]"!==xr.call(e))return!1;var t=Object.getPrototypeOf(e);return null===t||t===Object.prototype}function Dr(e){if(e&&null!==e[0]&&void 0!==e[0]&&(0!==e[0]||null!==e[1]&&void 0!==e[1])){var t="bytes="+e[0]+"-";return e[1]&&(t+=e[1]),t}}function Gr(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}function Ir(e,t){if(e){if(!t)return e;var n,i=Object.keys(t).map((function(e){if(null!=(n=t[e]))return Array.isArray(n)?e+="[]":n=[n],n.map((function(t){var n;return n=t,"[object Date]"===xr.call(n)?t=t.toISOString():function(e){return null!==e&&"object"===rr(e)}(t)&&(t=JSON.stringify(t)),"".concat(Gr(e),"=").concat(Gr(t))})).join("&")})).filter(Boolean).join("&");if(i){var r=e.indexOf("#");-1!==r&&(e=e.slice(0,r)),e+=(-1===e.indexOf("?")?"?":"&")+i}return e}}function Mr(e,t,n,i,r,a,l,U,F,o,d){return r=null!=r?parseFloat(r):null,i=parseInt(i||"0",10),Number.isNaN(i)&&(i=0),{data:e,done:t,options:{range:F,vid:o,index:U,contentLength:i,age:r,startTime:a,firstByteTime:l,endTime:Date.now(),priOptions:d},response:n}}function Yr(e,t){return Math.round(8*e*1e3/t/1024)}var wr="real_time_speed",Kr=2097152,_r=function(e){Qr(i,e);var t,n=pr(i);function i(){var e;return Ur(this,i),dr(Vr(e=n.call(this)),"_abortController",null),dr(Vr(e),"_timeoutTimer",null),dr(Vr(e),"_reader",null),dr(Vr(e),"_response",null),dr(Vr(e),"_aborted",!1),dr(Vr(e),"_index",-1),dr(Vr(e),"_range",null),dr(Vr(e),"_receivedLength",0),dr(Vr(e),"_running",!1),dr(Vr(e),"_logger",null),dr(Vr(e),"_vid",""),dr(Vr(e),"_onProcessMinLen",0),dr(Vr(e),"_onCancel",null),dr(Vr(e),"_priOptions",null),dr(Vr(e),"_processMaxGapTime",1/0),e}return or(i,[{key:"load",value:function(e){var t,n=this,i=e.url,r=e.vid,a=e.timeout,l=e.responseType,U=e.onProgress,F=e.index,o=e.onTimeout,d=e.onCancel,Q=e.range,s=e.transformResponse,c=e.request,u=e.params,B=e.logger,R=e.method,h=e.headers,V=e.body,p=e.mode,m=e.credentials,Z=e.cache,S=e.redirect,J=e.referrer,W=e.referrerPolicy,f=e.onProcessMinLen,y=e.processMaxGapTime,k=e.priOptions;this._logger=B,this._aborted=!1,this._onProcessMinLen=f,this._onCancel=d,this._abortController="undefined"!=typeof AbortController&&new AbortController,this._running=!0,this._receivedLength=0,this._index=F,this._range=Q||[0,0],this._vid=r||i,this._priOptions=k||{},this._processMaxGapTime=y;var E={method:R,headers:h,body:V,mode:p,credentials:m,cache:Z,redirect:S,referrer:J,referrerPolicy:W,signal:null===(t=this._abortController)||void 0===t?void 0:t.signal},b=!1;clearTimeout(this._timeoutTimer),i=Ir(i,u);var v=Dr(Q);v&&(h=c?c.headers:E.headers=E.headers||(Headers?new Headers:{}),Headers&&h instanceof Headers?h.append("Range",v):h.Range=v),a&&(this._timeoutTimer=setTimeout(lr(ir().mark((function e(){var t;return ir().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return b=!0,e.next=3,n.cancel();case 3:o&&((t=new Lr(i,E,null,"timeout")).isTimeout=!0,o(t,{index:n._index,range:n._range,vid:n._vid,priOptions:n._priOptions}));case 4:case"end":return e.stop()}}),e)}))),a));var N=Date.now();return this._logger.debug("[fetch load start], index,",F,",range,",Q),new Promise((function(e,t){fetch(c||i,c?void 0:E).then(function(){var r=lr(ir().mark((function r(a){var o,d,c,u;return ir().wrap((function(r){for(;;)switch(r.prev=r.next){case 0:if(clearTimeout(n._timeoutTimer),n._response=a,!n._aborted&&n._running){r.next=4;break}return r.abrupt("return");case 4:if(s&&(a=s(a,i)||a),a.ok){r.next=7;break}throw new Lr(i,E,a,"bad network response");case 7:if(o=Date.now(),l!==Tr){r.next=15;break}return r.next=11,a.text();case 11:d=r.sent,n._running=!1,r.next=37;break;case 15:if(l!==Cr){r.next=22;break}return r.next=18,a.json();case 18:d=r.sent,n._running=!1,r.next=37;break;case 22:if(!U){r.next=29;break}return n.resolve=e,n.reject=t,n._loadChunk(a,U,N,o),r.abrupt("return");case 29:return r.next=31,a.arrayBuffer();case 31:d=r.sent,d=new Uint8Array(d),n._running=!1,c=Date.now()-N,u=Yr(d.byteLength,c),n.emit(wr,{speed:u,len:d.byteLength,time:c,vid:n._vid,index:n._index,range:n._range,priOptions:n._priOptions});case 37:n._logger.debug("[fetch load end], index,",F,",range,",Q),e(Mr(d,!0,a,a.headers.get("Content-Length"),a.headers.get("age"),N,o,F,Q,n._vid,n._priOptions));case 39:case"end":return r.stop()}}),r)})));return function(e){return r.apply(this,arguments)}}()).catch((function(e){var r;clearTimeout(n._timeoutTimer),n._running=!1,n._aborted&&!b||((e=e instanceof Lr?e:new Lr(i,E,null,null===(r=e)||void 0===r?void 0:r.message)).startTime=N,e.endTime=Date.now(),e.isTimeout=b,e.options={index:n._index,range:n._range,vid:n._vid,priOptions:n._priOptions},t(e))}))}))}},{key:"cancel",value:(t=lr(ir().mark((function e(){return ir().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!this._aborted){e.next=2;break}return e.abrupt("return");case 2:if(this._aborted=!0,this._running=!1,!this._response){e.next=14;break}if(e.prev=5,!this._reader){e.next=9;break}return e.next=9,this._reader.cancel();case 9:e.next=13;break;case 11:e.prev=11,e.t0=e.catch(5);case 13:this._response=this._reader=null;case 14:if(this._abortController){try{this._abortController.abort()}catch(t){}this._abortController=null}this._onCancel&&this._onCancel({index:this._index,range:this._range,vid:this._vid,priOptions:this._priOptions});case 16:case"end":return e.stop()}}),e,this,[[5,11]])}))),function(){return t.apply(this,arguments)})},{key:"_loadChunk",value:function(e,t,n,i){var r=this;if(!e.body||!e.body.getReader){this._running=!1;var a=new Lr(e.url,"",e,"onProgress of bad response.body.getReader");return a.options={index:this._index,range:this._range,vid:this._vid,priOptions:this._priOptions},void this.reject(a)}this._onProcessMinLen>0&&(this._cache=new Uint8Array(Kr),this._writeIdx=0);var l,U,F,o=this._reader=e.body.getReader(),d=Date.now(),Q=function(){var a=lr(ir().mark((function a(){var s,c,u,B,R,h,V,p,m;return ir().wrap((function(a){for(;;)switch(a.prev=a.next){case 0:return U=Date.now(),a.prev=1,a.next=4,o.read();case 4:l=a.sent,F=Date.now(),a.next=13;break;case 8:return a.prev=8,a.t0=a.catch(1),F=Date.now(),r._aborted||(r._running=!1,a.t0.options={index:r._index,range:r._range,vid:r._vid,priOptions:r._priOptions},r.reject(a.t0)),a.abrupt("return");case 13:if(c=(null===(s=r._range)||void 0===s?void 0:s.length)>0?r._range[0]:0,u=c+r._receivedLength,!r._aborted){a.next=19;break}return r._running=!1,t(void 0,!1,{range:[u,u],vid:r._vid,index:r._index,startTime:U,endTime:F,st:n,firstByteTime:i,priOptions:r._priOptions},e),a.abrupt("return");case 19:if(B=l.value?l.value.byteLength:0,r._receivedLength+=B,r._onProcessMinLen>0?r._writeIdx+B>=r._onProcessMinLen||l.done?((R=new Uint8Array(r._writeIdx+B)).set(r._cache.subarray(0,r._writeIdx),0),B>0&&R.set(l.value,r._writeIdx),r._writeIdx=0,r._logger.debug("【fetchLoader,onProgress enough】,done,",l.done,",len,",R.byteLength,", writeIdx,",r._writeIdx)):B>0&&r._writeIdx+B<Kr?(r._cache.set(l.value,r._writeIdx),r._writeIdx+=B,r._logger.debug("【fetchLoader,onProgress cache】,len,",B,", writeIdx,",r._writeIdx)):B>0&&(h=new Uint8Array(r._writeIdx+B+2048),r._logger.debug("【fetchLoader,onProgress extra start】,size,",r._writeIdx+B+2048,", datalen,",B,", writeIdx,",r._writeIdx),h.set(r._cache.subarray(0,r._writeIdx),0),B>0&&h.set(l.value,r._writeIdx),r._writeIdx+=B,delete r._cache,r._cache=h,r._logger.debug("【fetchLoader,onProgress extra end】,len,",B,", writeIdx,",r._writeIdx)):R=l.value,!(R&&R.byteLength>0||l.done)){a.next=28;break}r._logger.debug("【fetchLoader,onProgress call】,task,",r._range,", start,",u,", end,",c+r._receivedLength,", done,",l.done,n),t(R,l.done,{range:[r._range[0]+r._receivedLength-(R?R.byteLength:0),r._range[0]+r._receivedLength],vid:r._vid,index:r._index,startTime:U,endTime:F,st:n,firstByteTime:i,priOptions:r._priOptions},e),d=Date.now(),a.next=37;break;case 28:if(!(Date.now()-d>=r._processMaxGapTime)){a.next=37;break}return r._logger.debug("[onProgress timeout],task: ".concat(JSON.stringify(r._range)," done: ").concat(l.done," processMaxGapTime: ").concat(r._processMaxGapTime)),(V=new Lr(e.url,null,e,"process timeout")).options={index:r._index,range:r._range,vid:r._vid,priOptions:r._priOptions},r.running=!1,a.next=35,r.cancel();case 35:return r.reject(V),a.abrupt("return");case 37:l.done?(p=Date.now()-n,m=Yr(r._receivedLength,p),r.emit(wr,{speed:m,len:r._receivedLength,time:p,vid:r._vid,index:r._index,range:r._range,priOptions:r._priOptions}),r._running=!1,r._logger.debug("[fetchLoader onProgress end],task,",r._range,",done,",l.done),r.resolve(Mr(l,!0,e,e.headers.get("Content-Length"),e.headers.get("age"),n,i,r._index,r._range,r._vid,r._priOptions))):Q();case 38:case"end":return a.stop()}}),a,null,[[1,8]])})));return function(){return a.apply(this,arguments)}}();Q()}},{key:"receiveLen",get:function(){return this._receivedLength}},{key:"running",get:function(){return this._running},set:function(e){this._running=e}}],[{key:"isSupported",value:function(){return!("undefined"==typeof fetch)}}]),i}(it);var Pr=function(e){Qr(n,e);var t=pr(n);function n(){var e;return Ur(this,n),dr(Vr(e=t.call(this)),"_xhr",null),dr(Vr(e),"_aborted",!1),dr(Vr(e),"_timeoutTimer",null),dr(Vr(e),"_range",null),dr(Vr(e),"_receivedLength",0),dr(Vr(e),"_url",null),dr(Vr(e),"_onProgress",null),dr(Vr(e),"_index",-1),dr(Vr(e),"_headers",null),dr(Vr(e),"_currentChunkSizeKB",384),dr(Vr(e),"_timeout",null),dr(Vr(e),"_xhr",null),dr(Vr(e),"_withCredentials",null),dr(Vr(e),"_startTime",-1),dr(Vr(e),"_loadCompleteResolve",null),dr(Vr(e),"_loadCompleteReject",null),dr(Vr(e),"_runing",!1),dr(Vr(e),"_logger",!1),dr(Vr(e),"_vid",""),dr(Vr(e),"_responseType",void 0),dr(Vr(e),"_credentials",void 0),dr(Vr(e),"_method",void 0),dr(Vr(e),"_transformResponse",void 0),dr(Vr(e),"_firstRtt",void 0),dr(Vr(e),"_onCancel",null),dr(Vr(e),"_priOptions",null),e}return or(n,[{key:"load",value:function(e){var t=this;clearTimeout(this._timeoutTimer),this._logger=e.logger,this._range=e.range,this._onProgress=e.onProgress,this._index=e.index,this._headers=e.headers,this._withCredentials="include"===e.credentials||"same-origin"===e.credentials,this._body=e.body||null,e.method&&(this._method=e.method),this._timeout=e.timeout||null,this._runing=!0,this._vid=e.vid||e.url,this._responseType=e.responseType,this._firstRtt=-1,this._onTimeout=e.onTimeout,this._onCancel=e.onCancel,this._request=e.request,this._priOptions=e.priOptions||{},this._logger.debug("【xhrLoader task】, range",this._range),this._url=Ir(e.url,e.params);var n=Date.now();return new Promise((function(e,n){t._loadCompleteResolve=e,t._loadCompleteReject=n,t._startLoad()})).catch((function(e){if(clearTimeout(t._timeoutTimer),t._runing=!1,!t._aborted)throw(e=e instanceof Lr?e:new Lr(t._url,t._request)).startTime=n,e.endTime=Date.now(),e.options={index:t._index,vid:t._vid,priOptions:t._priOptions},e}))}},{key:"_startLoad",value:function(){var e=null;if(this._responseType===gr&&this._range&&this._range.length>1)if(this._onProgress){this._firstRtt=-1;var t=1024*this._currentChunkSizeKB,n=this._range[0]+this._receivedLength,i=this._range[1];t<this._range[1]-n&&(i=n+t),e=[n,i],this._logger.debug("[xhr_loader->],tast :",this._range,", SubRange, ",e)}else e=this._range,this._logger.debug("[xhr_loader->],tast :",this._range,", allRange, ",e);this._internalOpen(e)}},{key:"_internalOpen",value:function(e){var t=this;try{this._startTime=Date.now();var n=this._xhr=new XMLHttpRequest;n.open(this._method||"GET",this._url,!0),n.responseType=this._responseType,this._timeout&&(n.timeout=this._timeout),n.withCredentials=this._withCredentials,n.onload=this._onLoad.bind(this),n.onreadystatechange=this._onReadyStatechange.bind(this),n.onerror=function(e){var n,i,r;t._running=!1;var a=new Lr(t._url,t._request,null==e||null===(n=e.currentTarget)||void 0===n?void 0:n.response,"xhr.onerror.status:"+(null==e||null===(i=e.currentTarget)||void 0===i?void 0:i.status)+",statusText,"+(null==e||null===(r=e.currentTarget)||void 0===r?void 0:r.statusText));a.options={index:t._index,range:t._range,vid:t._vid,priOptions:t._priOptions},t._loadCompleteReject(a)},n.ontimeout=function(e){t.cancel();var n=new Lr(t._url,t._request,{status:408},"timeout");t._onTimeout&&(n.isTimeout=!0,t._onTimeout(n,{index:t._index,range:t._range,vid:t._vid,priOptions:t._priOptions})),n.options={index:t._index,range:t._range,vid:t._vid,priOptions:t._priOptions},t._loadCompleteReject(n)};var i=this._headers||{},r=Dr(e);r&&(i.Range=r),i&&Object.keys(i).forEach((function(e){n.setRequestHeader(e,i[e])})),this._logger.debug("[xhr.send->] tast,",this._range,",load sub range, ",e),n.send(this._body)}catch(a){a.options={index:this._index,range:e,vid:this._vid,priOptions:this._priOptions},this._loadCompleteReject(a)}}},{key:"_onReadyStatechange",value:function(e){2===e.target.readyState&&this._firstRtt<0&&(this._firstRtt=Date.now())}},{key:"_onLoad",value:function(e){var t,n=e.target.status;if(n<200||n>299){var i=new Lr(this._url,null,nr(nr({},e.target.response),{},{status:n}),"bad response,status:"+n);return i.options={index:this._index,range:this._range,vid:this._vid,priOptions:this._priOptions},this._loadCompleteReject(i)}var r,a=null,l=!1,U=(null===(t=this._range)||void 0===t?void 0:t.length)>0?this._range[0]:0;if(this._responseType===gr){var F,o=new Uint8Array(e.target.response);if(r=U+this._receivedLength,o&&o.byteLength>0){this._receivedLength+=o.byteLength;var d=Date.now()-this._startTime,Q=Yr(this._receivedLength,d);this.emit(wr,{speed:Q,len:this._receivedLength,time:d,vid:this._vid,index:this._index,range:[r,U+this._receivedLength],priOptions:this._priOptions})}a=o,l=!((null===(F=this._range)||void 0===F?void 0:F.length)>1&&this._range[1]&&this._receivedLength<this._range[1]-this._range[0]),this._logger.debug("[xhr load done->], tast :",this._range,", start",r,"end ",U+this._receivedLength,",dataLen,",o?o.byteLength:0,",receivedLength",this._receivedLength,",index,",this._index,", done,",l)}else l=!0,a=e.target.response;var s={ok:n>=200&&n<300,status:n,statusText:this._xhr.statusText,url:this._xhr.responseURL,headers:this._getHeaders(this._xhr),body:this._xhr.response};this._transformResponse&&(s=this._transformResponse(s,this._url)||s),this._onProgress&&this._onProgress(a,l,{index:this._index,vid:this._vid,range:[r,U+this._receivedLength],startTime:this._startTime,endTime:Date.now(),priOptions:this._priOptions},s),l?(this._runing=!1,this._loadCompleteResolve&&this._loadCompleteResolve(Mr(this._onProgress?null:a,l,s,s.headers["content-length"],s.headers.age,this._startTime,this._firstRtt,this._index,this._range,this._vid,this._priOptions))):this._startLoad()}},{key:"cancel",value:function(){if(!this._aborted)return this._aborted=!0,this._runing=!1,mr(sr(n.prototype),"removeAllListeners",this).call(this),this._onCancel&&this._onCancel({index:this._index,range:this._range,vid:this._vid,priOptions:this._priOptions}),this._xhr?this._xhr.abort():void 0}},{key:"receiveLen",get:function(){return this._receivedLength}},{key:"running",get:function(){return this._running},set:function(e){this._running=e}},{key:"_getHeaders",value:function(e){var t,n={},i=Sr(e.getAllResponseHeaders().trim().split("\r\n"));try{for(i.s();!(t=i.n()).done;){var r=t.value.split(": ");n[r[0].toLowerCase()]=r.slice(1).join(": ")}}catch(a){i.e(a)}finally{i.f()}return n}}],[{key:"isSupported",value:function(){return"undefined"!=typeof XMLHttpRequest}}]),n}(it),jr=["retry","retryDelay","onRetryError","transformError"],Hr=function(){function e(t,n){var i,r,a;Ur(this,e),this.promise=((a=new Promise((function(e,t){i=e,r=t}))).used=!1,a.resolve=function(){return a.used=!0,i.apply(void 0,arguments)},a.reject=function(){return a.used=!0,r.apply(void 0,arguments)},a),this.alive=!!n.onProgress,!n.logger&&(n.logger=new yr("Loader")),this._loaderType=t,this._loader=t===vr&&window.fetch?new _r:new Pr,this._config=n,this._retryCount=0,this._retryTimer=null,this._canceled=!1,this._retryCheckFunc=n.retryCheckFunc,this._logger=n.logger}var t;return or(e,[{key:"exec",value:function(){var e=this,t=this._config,n=t.retry,i=t.retryDelay,r=t.onRetryError,a=t.transformError,l=hr(t,jr),U=function(){var t=lr(ir().mark((function t(){var F,o,d;return ir().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,t.next=3,e._loader.load(l);case 3:F=t.sent,e.promise.resolve(F),t.next=27;break;case 7:if(t.prev=7,t.t0=t.catch(0),e._loader.running=!1,e._logger.debug("[task request catch err]",t.t0),!e._canceled){t.next=13;break}return t.abrupt("return");case 13:if(t.t0.loaderType=e._loaderType,t.t0.retryCount=e._retryCount,o=t.t0,a&&(o=a(o)||o),r&&e._retryCount>0&&r(o,e._retryCount,{index:l.index,vid:l.vid,range:l.range,priOptions:l.priOptions}),e._retryCount++,d=!0,e._retryCheckFunc&&(d=e._retryCheckFunc(t.t0)),!(d&&e._retryCount<=n)){t.next=26;break}return clearTimeout(e._retryTimer),e._logger.debug("[task request setTimeout],retry",e._retryCount,",retry range,",l.range),e._retryTimer=setTimeout(U,i),t.abrupt("return");case 26:e.promise.reject(o);case 27:case"end":return t.stop()}}),t,null,[[0,7]])})));return function(){return t.apply(this,arguments)}}();return U(),this.promise}},{key:"cancel",value:(t=lr(ir().mark((function e(){return ir().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return clearTimeout(this._retryTimer),this._canceled=!0,this._loader.running=!1,e.abrupt("return",this._loader.cancel());case 4:case"end":return e.stop()}}),e,this)}))),function(){return t.apply(this,arguments)})},{key:"running",get:function(){return this._loader&&this._loader.running}},{key:"loader",get:function(){return this._loader}}]),e}();function Or(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];if((t=t.filter(Boolean)).length<2)return t[0];var i=zr(t.reduce((function(e,t){return e+t.byteLength}),0)),r=0;return t.forEach((function(e){i.set(e,r),r+=e.byteLength})),i}function zr(e){for(var t,n=0;n<10;)try{if((t=new Uint8Array(e))&&t.byteLength>0)break;n++}catch(i){if(!(n<10))throw new Error("new array failed final,".concat(null==i?void 0:i.message));n++}return t}function Ar(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;return new Promise((function(t){return setTimeout(t,e)}))}var qr=function(e){Qr(i,e);var t,n=pr(i);function i(e){var t;return Ur(this,i),dr(Vr(t=n.call(this,e)),"type",vr),dr(Vr(t),"_queue",[]),dr(Vr(t),"_alive",[]),dr(Vr(t),"_currentTask",null),dr(Vr(t),"_finnalUrl",""),dr(Vr(t),"_config",void 0),t._config=function(e){return nr({loaderType:vr,retry:0,retryDelay:0,timeout:0,request:null,onTimeout:void 0,onProgress:void 0,onRetryError:void 0,transformRequest:void 0,transformResponse:void 0,transformError:void 0,responseType:Tr,range:void 0,url:"",params:void 0,method:"GET",headers:{},body:void 0,mode:void 0,credentials:void 0,cache:void 0,redirect:void 0,referrer:void 0,referrerPolicy:void 0,integrity:void 0,onProcessMinLen:0,processMaxGapTime:1/0},e)}(e),t._config.loaderType!==Nr&&_r.isSupported()||(t.type=Nr),t.log=e.logger,t}return or(i,[{key:"isFetch",value:function(){return this.type===vr}},{key:"load",value:function(e){var t=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};"string"!=typeof e&&e?n=e:n.url=e||n.url||this._config.url,(n=Object.assign({},this._config,n)).params&&(n.params=Object.assign({},n.params)),n.headers&&Xr(n.headers)&&(n.headers=Object.assign({},n.headers)),n.body&&Xr(n.body)&&(n.body=Object.assign({},n.body)),n.transformRequest&&(n=n.transformRequest(n)||n),n.logger=this.log;var i=new Hr(this.type,n);return i.loader.on(wr,(function(e){t.emit(wr,e)})),this._queue.push(i),1!==this._queue.length||this._currentTask&&this._currentTask.running||this._processTask(),i.promise}},{key:"cancel",value:(t=lr(ir().mark((function e(){var t;return ir().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t=this._queue.map((function(e){return e.cancel()})).concat(this._alive.map((function(e){return e.cancel()}))),this._currentTask&&t.push(this._currentTask.cancel()),this._queue=[],this._alive=[],e.next=6,Promise.all(t);case 6:return e.next=8,Ar();case 8:case"end":return e.stop()}}),e,this)}))),function(){return t.apply(this,arguments)})},{key:"_processTask",value:function(){var e=this;if(this._currentTask=this._queue.shift(),this._currentTask){this._currentTask.alive&&this._alive.push(this._currentTask);var t=this._currentTask.exec().catch((function(e){}));t&&"function"==typeof t.finally&&t.finally((function(){var t,n;null!==(t=e._currentTask)&&void 0!==t&&t.alive&&(null===(n=e._alive)||void 0===n?void 0:n.length)>0&&(e._alive=e._alive.filter((function(t){return t&&t!==e._currentTask}))),e._processTask()}))}}}],[{key:"isFetchSupport",value:function(){return _r.isSupported()}}]),i}(it);function $r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function ea(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,Ua(i.key),i)}}function ta(e,t,n){return t&&ea(e.prototype,t),n&&ea(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e}function na(e,t,n){return(t=Ua(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function ia(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var i,r,a,l,U=[],F=!0,o=!1;try{if(a=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;F=!1}else for(;!(F=(i=a.call(n)).done)&&(U.push(i.value),U.length!==t);F=!0);}catch(d){o=!0,r=d}finally{try{if(!F&&null!=n.return&&(l=n.return(),Object(l)!==l))return}finally{if(o)throw r}}return U}}(e,t)||aa(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function ra(e){return function(e){if(Array.isArray(e))return la(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||aa(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function aa(e,t){if(e){if("string"==typeof e)return la(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?la(e,t):void 0}}function la(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,i=new Array(t);n<t;n++)i[n]=e[n];return i}function Ua(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var i=n.call(e,t||"default");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}var Fa="video",oa="audio",da="metadata",Qa="avc",sa="hevc",ca="vvcC",ua="aac",Ba="g7110a",Ra="g7110m",ha=function(){function e(){$r(this,e),na(this,"id",1),na(this,"type",Fa),na(this,"codecType",Qa),na(this,"pid",-1),na(this,"hvcC",void 0),na(this,"codec",""),na(this,"timescale",0),na(this,"formatTimescale",0),na(this,"sequenceNumber",0),na(this,"baseMediaDecodeTime",0),na(this,"baseDts",0),na(this,"duration",0),na(this,"warnings",[]),na(this,"samples",[]),na(this,"pps",[]),na(this,"sps",[]),na(this,"vps",[]),na(this,"fpsNum",0),na(this,"fpsDen",0),na(this,"sarRatio",[]),na(this,"width",0),na(this,"height",0),na(this,"nalUnitSize",4),na(this,"present",!1),na(this,"isVideoEncryption",!1),na(this,"isAudioEncryption",!1),na(this,"isVideo",!0),na(this,"kid",null),na(this,"pssh",null),na(this,"ext",void 0)}return ta(e,[{key:"reset",value:function(){this.sequenceNumber=this.width=this.height=this.fpsDen=this.fpsNum=this.duration=this.baseMediaDecodeTime=this.timescale=0,this.codec="",this.present=!1,this.pid=-1,this.pps=[],this.sps=[],this.vps=[],this.sarRatio=[],this.samples=[],this.warnings=[],this.hvcC=null}},{key:"exist",value:function(){return!!(this.pps.length&&this.sps.length&&this.codec)}},{key:"hasSample",value:function(){return!!this.samples.length}},{key:"isEncryption",get:function(){return this.isVideoEncryption}}]),e}(),Va=function(){function e(){$r(this,e),na(this,"id",2),na(this,"type",oa),na(this,"codecType",ua),na(this,"pid",-1),na(this,"codec",""),na(this,"sequenceNumber",0),na(this,"sampleDuration",0),na(this,"timescale",0),na(this,"formatTimescale",0),na(this,"baseMediaDecodeTime",0),na(this,"duration",0),na(this,"warnings",[]),na(this,"samples",[]),na(this,"baseDts",0),na(this,"sampleSize",16),na(this,"sampleRate",0),na(this,"channelCount",0),na(this,"objectType",0),na(this,"sampleRateIndex",0),na(this,"config",[]),na(this,"present",!1),na(this,"isVideoEncryption",!1),na(this,"isAudioEncryption",!1),na(this,"kid",null),na(this,"ext",void 0)}return ta(e,[{key:"reset",value:function(){this.sequenceNumber=0,this.timescale=0,this.sampleDuration=0,this.sampleRate=0,this.channelCount=0,this.baseMediaDecodeTime=0,this.present=!1,this.pid=-1,this.codec="",this.samples=[],this.config=[],this.warnings=[]}},{key:"exist",value:function(){return!!(this.sampleRate&&this.channelCount&&this.codec&&this.codecType===ua)}},{key:"hasSample",value:function(){return!!this.samples.length}},{key:"isEncryption",get:function(){return this.isAudioEncryption}}]),e}(),pa=function(){function e(t,n,i){$r(this,e),na(this,"flag",{}),na(this,"keyframe",!1),na(this,"gopId",0),na(this,"duration",0),na(this,"size",0),na(this,"units",[]),na(this,"chromaFormat",420),this.originPts=this.pts=t,this.originDts=this.dts=n,i&&(this.units=i)}return ta(e,[{key:"cts",get:function(){return this.pts-this.dts}},{key:"setToKeyframe",value:function(){this.keyframe=!0,this.flag.dependsOn=2,this.flag.isNonSyncSample=0}}]),e}(),ma=ta((function e(t,n,i,r){$r(this,e),na(this,"duration",1024),na(this,"flag",{dependsOn:2,isNonSyncSample:0}),na(this,"keyframe",!0),this.originPts=this.pts=this.dts=t,this.data=n,this.size=n.byteLength,this.sampleOffset=r,i&&(this.duration=i)})),Za=function(){function e(){$r(this,e),na(this,"id",3),na(this,"type",da),na(this,"timescale",0),na(this,"flvScriptSamples",[]),na(this,"seiSamples",[])}return ta(e,[{key:"exist",value:function(){return!(!this.flvScriptSamples.length&&!this.seiSamples.length||!this.timescale)}},{key:"reset",value:function(){this.timescale=0,this.flvScriptSamples=[],this.seiSamples=[]}},{key:"hasSample",value:function(){return!(!this.flvScriptSamples.length&&!this.seiSamples.length)}}]),e}(),Sa="undefined"!=typeof window,Ja=Sa&&navigator.userAgent.toLocaleLowerCase(),Wa=Sa&&Ja.includes("firefox"),fa=Sa&&Ja.includes("android"),ya=function(){function e(){$r(this,e)}return ta(e,null,[{key:"getRateIndexByRate",value:function(t){return e.FREQ.indexOf(t)}},{key:"parseADTS",value:function(t,n){for(var i=t.length,r=0;r+2<i&&(255!==t[r]||240!=(246&t[r+1]));)r++;if(!(r>=i)){var a=r,l=[],U=(60&t[r+2])>>>2,F=e.FREQ[U];if(!F)throw new Error("Invalid sampling index: ".concat(U));for(var o,d,Q=1+((192&t[r+2])>>>6),s=(1&t[r+2])<<2|(192&t[r+3])>>>6,c=e._getConfig(U,s,Q),u=c.config,B=c.codec,R=0,h=e.getFrameDuration(F);r+7<i;)if(255===t[r]&&240==(246&t[r+1])){if(i-r<(d=(3&t[r+3])<<11|t[r+4]<<3|(224&t[r+5])>>5))break;o=2*(1&~t[r+1]),l.push({pts:n+R*h,data:t.subarray(r+7+o,r+d)}),R++,r+=d}else r++;return{skip:a,remaining:r>=i?void 0:t.subarray(r),frames:l,samplingFrequencyIndex:U,sampleRate:F,objectType:Q,channelCount:s,codec:B,config:u,originCodec:"mp4a.40.".concat(Q)}}}},{key:"parseAudioSpecificConfig",value:function(t){if(t.length){var n=t[0]>>>3,i=(7&t[0])<<1|t[1]>>>7,r=(120&t[1])>>>3,a=e.FREQ[i];if(a){var l=e._getConfig(i,r,n);return{samplingFrequencyIndex:i,sampleRate:a,objectType:n,channelCount:r,config:l.config,codec:l.codec,originCodec:"mp4a.40.".concat(n)}}}}},{key:"getFrameDuration",value:function(e){return 1024*(arguments.length>1&&void 0!==arguments[1]?arguments[1]:9e4)/e}},{key:"_getConfig",value:function(e,t,n){var i,r,a=[];return Wa?e>=6?(i=5,r=e-3):(i=2,r=e):fa?(i=2,r=e):(i=2===n||5===n?n:5,r=e,e>=6?r=e-3:1===t&&(i=2,r=e)),a[0]=i<<3,a[0]|=(14&e)>>1,a[1]=(1&e)<<7,a[1]|=t<<3,5===i&&(a[1]|=(14&r)>>1,a[2]=(1&r)<<7,a[2]|=8,a[3]=0),{config:a,codec:"mp4a.40.".concat(i)}}},{key:"getSilentFrame",value:function(e,t){if("mp4a.40.2"===e){if(1===t)return new Uint8Array([0,200,0,128,35,128]);if(2===t)return new Uint8Array([33,0,73,144,2,25,0,35,128]);if(3===t)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,142]);if(4===t)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,128,44,128,8,2,56]);if(5===t)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,130,48,4,153,0,33,144,2,56]);if(6===t)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,130,48,4,153,0,33,144,2,0,178,0,32,8,224])}else{if(1===t)return new Uint8Array([1,64,34,128,163,78,230,128,186,8,0,0,0,28,6,241,193,10,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,94]);if(2===t)return new Uint8Array([1,64,34,128,163,94,230,128,186,8,0,0,0,0,149,0,6,241,161,10,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,94]);if(3===t)return new Uint8Array([1,64,34,128,163,94,230,128,186,8,0,0,0,0,149,0,6,241,161,10,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,94])}}}]),e}();function ka(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];t=t.filter(Boolean);var i=new Uint8Array(t.reduce((function(e,t){return e+t.byteLength}),0)),r=0;return t.forEach((function(e){i.set(e,r),r+=e.byteLength})),i}na(ya,"FREQ",[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350]);var Ea=Math.pow(2,32);function ba(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return(e[t]<<8)+(e[t+1]||0)}function va(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return(e[t]<<24>>>0)+(e[t+1]<<16)+(e[t+2]<<8)+(e[t+3]||0)}function Na(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return new DataView(e.buffer,e.byteOffset,e.byteLength).getInt32(t)}function ga(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return va(e,t)*Ea+va(e,t+4)}function Ta(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=new DataView(e.buffer,e.byteOffset,e.byteLength);return n.getUint32(t)<<32|n.getUint32(t+4)}function Ca(e){var t="";if(e.forEach((function(e){t+=function(e){return("0"+Number(e).toString(16)).slice(-2).toUpperCase()}(e)})),t.length<=32)for(var n=32-t.length,i=0;i<n;i++)t+="0";return t}function La(e){if(!Array.isArray(e)){for(var t=[],n="",i=0;i<e.length;i++)i%2&&(n=e[i-1]+e[i],t.push(parseInt(n,16)),n="");return t}return e.map((function(e){return parseInt(e,16)}))}var xa=function(){function e(t){if($r(this,e),na(this,"_bytesAvailable",void 0),na(this,"_bitsAvailable",0),na(this,"_word",0),!t)throw new Error("ExpGolomb data params is required");this._data=t,this._bytesAvailable=t.byteLength,this._bytesAvailable&&this._loadWord()}return ta(e,[{key:"_loadWord",value:function(){var e=this._data.byteLength-this._bytesAvailable,t=Math.min(4,this._bytesAvailable);if(0===t)throw new Error("No bytes available");var n=new Uint8Array(4);n.set(this._data.subarray(e,e+t)),this._word=new DataView(n.buffer).getUint32(0),this._bitsAvailable=8*t,this._bytesAvailable-=t}},{key:"bitsPos",value:function(){return 8*this._bytesAvailable-this._bitsAvailable}},{key:"bitsLeft",value:function(){return 8*this._data.length-this.bitsPos()}},{key:"byteAligned",value:function(){return 0===this.bitsPos()||this.bitsPos()%8==0}},{key:"skipBits",value:function(e){if(this._bitsAvailable>e)this._word<<=e,this._bitsAvailable-=e;else{e-=this._bitsAvailable;var t=Math.floor(e/8);e-=8*t,this._bytesAvailable-=t,this._loadWord(),this._word<<=e,this._bitsAvailable-=e}}},{key:"readBits",value:function(e){if(e>32)throw new Error("Cannot read more than 32 bits");var t=Math.min(this._bitsAvailable,e),n=this._word>>>32-t;return this._bitsAvailable-=t,this._bitsAvailable>0?this._word<<=t:this._bytesAvailable>0&&this._loadWord(),(t=e-t)>0&&this._bitsAvailable?n<<t|this.readBits(t):n}},{key:"skipLZ",value:function(){var e;for(e=0;e<this._bitsAvailable;++e)if(this._word&2147483648>>>e)return this._word<<=e,this._bitsAvailable-=e,e;return this._loadWord(),e+this.skipLZ()}},{key:"skipUEG",value:function(){this.skipBits(1+this.skipLZ())}},{key:"readUEG",value:function(){var e=this.skipLZ();return this.readBits(e+1)-1}},{key:"readEG",value:function(){var e=this.readUEG();return 1&e?1+e>>>1:-1*(e>>>1)}},{key:"readBool",value:function(){return 1===this.readBits(1)}},{key:"readUByte",value:function(){return this.readBits(8)}},{key:"skipScalingList",value:function(e){for(var t=8,n=8,i=0;i<e;i++)0!==n&&(n=(t+this.readEG()+256)%256),t=0===n?t:n}}]),e}(),Xa=function(){function e(t){$r(this,e),this._buffer=t,this._offset=0,this._heldBits=0,this._numHeldBits=0}return ta(e,[{key:"readUint8",value:function(){return this._buffer[this._offset++]}},{key:"readUint16",value:function(){return this._buffer[this._offset++]<<8|this._buffer[this._offset++]}},{key:"readUint32",value:function(){return this._buffer[this._offset++]<<24|this._buffer[this._offset++]<<16|this._buffer[this._offset++]<<8|this._buffer[this._offset++]}},{key:"readUint8Array",value:function(e){var t=this._buffer.slice(this._offset,this._offset+e);return this._offset+=e,t}},{key:"streamRead1Bytes",value:function(){this._heldBits=this.readUint8(),this._numHeldBits=8}},{key:"streamRead2Bytes",value:function(){this._heldBits=this.readUint16(),this._numHeldBits=16}},{key:"extractBits",value:function(e){var t=this._heldBits>>this._numHeldBits-e&(1<<e)-1;return this._numHeldBits-=e,t}}]),e}(),Da=function(){function e(){$r(this,e)}return ta(e,null,[{key:"parseVVCDecoderConfigurationRecord",value:function(t){var n=new Xa(t),i=n.readUint8();n.streamRead1Bytes(),n.extractBits(5);var r,a,l,U,F,o,d,Q,s=n.extractBits(2)+1,c=n.extractBits(1),u={};c&&(n.streamRead2Bytes(),U=n.extractBits(2),F=n.extractBits(3),a=n.extractBits(3),l=n.extractBits(2),n.extractBits(6),u=e.parseVVCPTLRecord(n,a),r=n.readUint16(),o=n.readUint16(),d=n.readUint16(),Q=n.readUint16());for(var B=n.readUint8(),R=[],h=[],V=[],p=null,m=0;m<B;m++){n.streamRead1Bytes(),n.extractBits(1),n.extractBits(2);var Z=n.extractBits(5),S=1;13!==Z&&12!==Z&&(S=n.readUint16());for(var J=0;J<S;J++){var W=n.readUint16();switch(Z){case 14:R.push(n.readUint8Array(W));break;case 15:var f=n.readUint8Array(W);p||(p=e.parseSPS(e.removeEPB(f))),h.push(f);break;case 16:V.push(n.readUint8Array(W))}}}return{data:t,configurationVersion:i,codec:"bvc2.1.6.L93.B0",nalUnitSize:s,ptlPresentFlag:c,olsIdx:r,numSublayers:a,constantFrameRate:l,chromaFormatIdc:U,bitDepthLumaMinus8:F,ptlRecord:u,width:o,height:d,sampleRate:Q,numOfArrays:B,vps:R,sps:h,pps:V,spsParsed:p}}},{key:"parseVVCPTLRecord",value:function(e,t){e.streamRead2Bytes(),e.extractBits(2);var n=e.extractBits(6),i=e.extractBits(7),r=e.extractBits(1),a=e.readUint8();e.streamRead1Bytes();var l=e.extractBits(1),U=e.extractBits(1),F=new Uint8Array(n);if(n){for(var o=0;o<n-1;o++){var d=e.extractBits(6);e.streamRead1Bytes();var Q=e.extractBits(2);F[o]=d<<2|Q}F[n-1]=e.extractBits(6)}else e.extractBits(6);var s=[];if(t>1){e.streamRead1Bytes();for(var c=0,u=t-2;u>=0;--u){c|=e.extractBits(1)<<u}for(var B=t;B<=8&&t>1;++B)e.extractBits(1);for(var R=t-2;R>=0;--R)c&1<<R&&(s[R]=e.readUint8())}var h=e.readUint8(),V=[];if(h)for(var p=0;p<h;p++)V.push(e.readUint32());return{generalProfileIdc:i,generalTierFlag:r,generalLevelIdc:a,ptlFrameOnlyConstraintFlag:l,ptlMultilayerEnabledFlag:U,generalConstraintInfo:F,subLayerLevelIdc:s,generalSubProfileIdc:V,ptlNumSubProfiles:h,numBytesConstraintInfo:n}}},{key:"getAvccNals",value:function(e){for(var t=[];e.position<e.length-4;){var n=e.dataview.getInt32(e.dataview.position);if(!(e.length-e.position>=n))break;var i=e.buffer.slice(e.position,e.position+4);e.skip(4);var r=new Uint8Array(e.buffer.slice(e.position,e.position+n));e.skip(n),t.push({header:i,body:r})}return t}},{key:"analyseNal",value:function(e){var t=(248&e.body[1])>>3;switch(e.type=t,t){case 23:case 24:break;case 7:case 8:e.key=!0;break;case 14:e.vps=!0;break;case 15:e.sps=!0;break;case 16:e.pps=!0;break;case 17:e.aps=!0}}},{key:"removeEPB",value:function(e){for(var t=e.byteLength,n=[],i=1;i<t-2;)0===e[i]&&0===e[i+1]&&3===e[i+2]?(n.push(i+2),i+=2):i++;if(!n.length)return e;var r=t-n.length,a=new Uint8Array(r),l=0;for(i=0;i<r;l++,i++)l===n[0]&&(l++,n.shift()),a[i]=e[l];return a}},{key:"parseVps",value:function(){}},{key:"parseSPS",value:function(t){var n=new xa(t);n.readUByte(),n.readUByte(),n.skipBits(4);var i=n.readBits(4),r=n.readBits(3),a=n.readBits(2),l=420;a<=3&&(l=[0,420,422,444][a]),n.readBits(2),n.readBits(1);var U=e._parseProfileTierLevel(n,1,r);return n.readBits(1),n.readBits(1)&&n.readBits(1),{width:n.readUEG(),height:n.readUEG(),spsMaxSubLayerMinus1:r,spsVideoParameterSetId:i,chromaFormatIdc:a,chromaFormat:l,ptlInfo:U}}},{key:"_parseProfileTierLevel",value:function(t,n,i){var r,a=t.readBits(7),l=t.readBits(1),U=t.readBits(8),F=t.readBits(1),o=t.readBits(1);n&&(r=e._parseGeneralConstraintsInfo(t));for(var d=i-1,Q=[],s=[],c=[],u=d;u>=0;--u)Q[u]=t.readBits(1);for(;!t.byteAligned();)t.readBits(1);for(var B=d;B>=0;--B)Q[B]&&(s[B]=t.readUByte());if(n)for(var R=t.readUByte(),h=0;h<R;h++)c[h]=t.readBits(32);return{generalProfileIdc:a,generalTierFlag:l,generalLevelIdc:U,ptlFrameOnlyConstraintFlag:F,ptlMultilayerEnabledFlag:o,ptlSublayerLevelPresentFlags:Q,ptlSublayerLevelIdcs:s,ptlSubProfileIdcs:c,gciInfo:r}}},{key:"_parseGeneralConstraintsInfo",value:function(e){var t=e.readBits(1);if(t){e.skipBits(71);var n=e.readBits(8);n&&e.skipBits(n)}var i=8-e.bitsPos()%8;return e.skipBits(i),{gciPresentFlag:t}}}]),e}(),Ga=function(){function e(){$r(this,e)}return ta(e,null,[{key:"findBox",value:function(t,n){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,r=[];if(!t)return r;for(var a=0,l="",U=0;t.length>7;){if(a=va(t),l=String.fromCharCode.apply(null,t.subarray(4,8)),U=8,1===a?(a=ga(t,8),U+=8):a||(a=t.length),!n[0]||l===n[0]){var F=t.subarray(0,a);if(!(n.length<2))return e.findBox(F.subarray(U),n.slice(1),i+U);r.push({start:i,size:a,headerSize:U,type:l,data:F})}i+=a,t=t.subarray(a)}return r}},{key:"tfhd",value:function(e){return wa(e,!0,(function(e,t){e.trackId=va(t);var n=4,i=1&e.flags,r=2&e.flags,a=8&e.flags,l=16&e.flags,U=32&e.flags;i&&(n+=4,e.baseDataOffset=va(t,n),n+=4),r&&(e.sampleDescriptionIndex=va(t,n),n+=4),a&&(e.defaultSampleDuration=va(t,n),n+=4),l&&(e.defaultSampleSize=va(t,n),n+=4),U&&(e.defaultSampleFlags=va(t,n))}))}},{key:"sidx",value:function(e){return wa(e,!0,(function(e,t){var n=0;e.reference_ID=va(t,n),n+=4,e.timescale=va(t,n),n+=4,0===e.version?(e.earliest_presentation_time=va(t,n),n+=4,e.first_offset=va(t,n),n+=4):(e.earliest_presentation_time=ga(t,n),n+=8,e.first_offset=ga(t,n),n+=8),n+=2,e.references=[];var i=ba(t,n);n+=2;for(var r=0;r<i;r++){var a={};e.references.push(a);var l=va(t,n);n+=4,a.reference_type=l>>31&1,a.referenced_size=2147483647&l,a.subsegment_duration=va(t,n),l=va(t,n+=4),n+=4,a.starts_with_SAP=l>>31&1,a.SAP_type=l>>28&7,a.SAP_delta_time=268435455&l}}))}},{key:"moov",value:function(t){return wa(t,!1,(function(t,n,i){t.mvhd=e.mvhd(e.findBox(n,["mvhd"],i)[0]),t.trak=e.findBox(n,["trak"],i).map((function(t){return e.trak(t)})),t.pssh=e.pssh(e.findBox(n,["pssh"],i)[0])}))}},{key:"mvhd",value:function(e){return wa(e,!0,(function(e,t){var n=0;1===e.version?(e.timescale=va(t,16),e.duration=ga(t,20),n+=28):(e.timescale=va(t,8),e.duration=va(t,12),n+=16),e.nextTrackId=va(t,n+76)}))}},{key:"trak",value:function(t){return wa(t,!1,(function(t,n,i){t.tkhd=e.tkhd(e.findBox(n,["tkhd"],i)[0]),t.mdia=e.mdia(e.findBox(n,["mdia"],i)[0]),t.edts=e.edts(e.findBox(n,["edts"],i)[0])}))}},{key:"tkhd",value:function(e){return wa(e,!0,(function(e,t){var n=0;1===e.version?(e.trackId=va(t,16),e.duration=ga(t,24),n+=32):(e.trackId=va(t,8),e.duration=va(t,16),n+=20),e.width=va(t,n+52),e.height=va(t,n+56)}))}},{key:"mdia",value:function(t){return wa(t,!1,(function(t,n,i){t.mdhd=e.mdhd(e.findBox(n,["mdhd"],i)[0]),t.hdlr=e.hdlr(e.findBox(n,["hdlr"],i)[0]),t.minf=e.minf(e.findBox(n,["minf"],i)[0])}))}},{key:"edts",value:function(t){return wa(t,!1,(function(t,n,i){t.elst=e.elst(e.findBox(n,["elst"],i)[0])}))}},{key:"elst",value:function(e){return wa(e,!0,(function(e,t,n){e.entries=[],e.entriesData=t;var i=0,r=va(t,i);i+=4;for(var a=0;a<r;a++){var l={};e.entries.push(l),1===e.version?(l.segment_duration=ga(t,i),i+=8,l.media_time=Ta(t,i),i+=8):(l.segment_duration=va(t,i),i+=4,l.media_time=Na(t,i),i+=4),l.media_rate_integer=ba(t,i),i+=2,l.media_rate_fraction=ba(t,n),i+=2}}))}},{key:"mdhd",value:function(e){return wa(e,!0,(function(e,t){var n=0;1===e.version?(e.timescale=va(t,16),e.duration=ga(t,20),n+=28):(e.timescale=va(t,8),e.duration=va(t,12),n+=16);var i=ba(t,n);e.language=String.fromCharCode(96+(i>>10&31),96+(i>>5&31),96+(31&i))}))}},{key:"hdlr",value:function(e){return wa(e,!0,(function(e,t){0===e.version&&(e.handlerType=String.fromCharCode.apply(null,t.subarray(4,8)))}))}},{key:"minf",value:function(t){return wa(t,!1,(function(t,n,i){t.vmhd=e.vmhd(e.findBox(n,["vmhd"],i)[0]),t.smhd=e.smhd(e.findBox(n,["smhd"],i)[0]),t.stbl=e.stbl(e.findBox(n,["stbl"],i)[0])}))}},{key:"vmhd",value:function(e){return wa(e,!0,(function(e,t){e.graphicsmode=ba(t),e.opcolor=[ba(t,2),ba(t,4),ba(t,6)]}))}},{key:"smhd",value:function(e){return wa(e,!0,(function(e,t){e.balance=ba(t)}))}},{key:"stbl",value:function(t){return wa(t,!1,(function(t,n,i){var r,a,l;t.stsd=e.stsd(e.findBox(n,["stsd"],i)[0]),t.stts=e.stts(e.findBox(n,["stts"],i)[0]),t.ctts=e.ctts(e.findBox(n,["ctts"],i)[0]),t.stsc=e.stsc(e.findBox(n,["stsc"],i)[0]),t.stsz=e.stsz(e.findBox(n,["stsz"],i)[0]),t.stco=e.stco(e.findBox(n,["stco"],i)[0]),t.stco||(t.co64=e.co64(e.findBox(n,["co64"],i)[0]),t.stco=t.co64);var U=null===(r=t.stsd.entries[0])||void 0===r||null===(a=r.sinf)||void 0===a||null===(l=a.schi)||void 0===l?void 0:l.tenc.default_IV_size;t.stss=e.stss(e.findBox(n,["stss"],i)[0]),t.senc=e.senc(e.findBox(n,["senc"],i)[0],U)}))}},{key:"senc",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:8;return wa(e,!0,(function(e,n){var i=0,r=va(n,i);i+=4,e.samples=[];for(var a=0;a<r;a++){for(var l={InitializationVector:[]},U=0;U<t;U++)l.InitializationVector[U]=n[i+U];if(i+=t,2&e.flags){l.subsamples=[];var F=ba(n,i);i+=2;for(var o=0;o<F;o++){var d={};d.BytesOfClearData=ba(n,i),i+=2,d.BytesOfProtectedData=va(n,i),i+=4,l.subsamples.push(d)}}e.samples.push(l)}}))}},{key:"pssh",value:function(e){return wa(e,!0,(function(e,t){for(var n=[],i=[],r=0,a=0;a<16;a++)i.push(Ka(t[r+a]));if(r+=16,e.version>0){var l=va(t,r);r+=4;for(var U=0;U<(""+l).length;U++)for(var F=0;F<16;F++){var o=t[r];r+=1,n.push(Ka(o))}}var d=va(t,r);e.data_size=d,r+=4,e.kid=n,e.system_id=i,e.buffer=t}))}},{key:"bvc2",value:function(t){return wa(t,!1,(function(t,n,i){var r=Ma(t,n),a=n.subarray(r);i+=r,t.vvcC=e.bv2C(e.findBox(a,["bv2C"],i)[0]),t.pasp=e.pasp(e.findBox(a,["pasp"],i)[0])}))}},{key:"bv2C",value:function(e){return wa(e,!1,(function(e,t,n){var i=Da.parseVVCDecoderConfigurationRecord(t);for(var r in i)Object.prototype.hasOwnProperty.call(i,r)&&(e[r]=i[r])}))}},{key:"stsd",value:function(t){return wa(t,!0,(function(t,n,i){t.entryCount=va(n),t.entries=e.findBox(n.subarray(4),[],i+4).map((function(t){switch(t.type){case"avc1":case"avc2":case"avc3":case"avc4":return e.avc1(t);case"hvc1":case"hev1":return e.hvc1(t);case"bvc2":return e.bvc2(t);case"mp4a":return e.mp4a(t);case"alaw":case"ulaw":return e.alaw(t);case"enca":return wa(t,!1,(function(t,n,i){t.channelCount=ba(n,16),t.samplesize=ba(n,18),t.sampleRate=va(n,24)/65536,n=n.subarray(28),t.sinf=e.sinf(e.findBox(n,["sinf"],i)[0]),t.esds=e.esds(e.findBox(n,["esds"],i)[0])}));case"encv":return wa(t,!1,(function(t,n,i){t.width=ba(n,24),t.height=ba(n,26),t.horizresolution=va(n,28),t.vertresolution=va(n,32),n=n.subarray(78),t.sinf=e.sinf(e.findBox(n,["sinf"],i)[0]),t.avcC=e.avcC(e.findBox(n,["avcC"],i)[0]),t.hvcC=e.hvcC(e.findBox(n,["hvcC"],i)[0]),t.pasp=e.pasp(e.findBox(n,["pasp"],i)[0])}))}})).filter(Boolean)}))}},{key:"tenc",value:function(e){return wa(e,!1,(function(e,t){var n=6;e.default_IsEncrypted=t[n],n+=1,e.default_IV_size=t[n],n+=1,e.default_KID=[];for(var i=0;i<16;i++)e.default_KID.push(Ka(t[n])),n+=1}))}},{key:"schi",value:function(t){return wa(t,!1,(function(t,n,i){t.tenc=e.tenc(e.findBox(n,["tenc"],i)[0])}))}},{key:"sinf",value:function(t){return wa(t,!1,(function(t,n,i){t.schi=e.schi(e.findBox(n,["schi"],i)[0]),t.frma=e.frma(e.findBox(n,["frma"],i)[0])}))}},{key:"frma",value:function(e){return wa(e,!1,(function(e,t){e.data_format="";for(var n=0;n<4;n++)e.data_format+=String.fromCharCode(t[n])}))}},{key:"avc1",value:function(t){return wa(t,!1,(function(t,n,i){var r=Ma(t,n),a=n.subarray(r);i+=r,t.avcC=e.avcC(e.findBox(a,["avcC"],i)[0]),t.pasp=e.pasp(e.findBox(a,["pasp"],i)[0])}))}},{key:"avcC",value:function(e){return wa(e,!1,(function(e,t){e.configurationVersion=t[0],e.AVCProfileIndication=t[1],e.profileCompatibility=t[2],e.AVCLevelIndication=t[3],e.codec=function(e){for(var t,n="avc1.",i=0;i<3;i++)(t=e[i].toString(16)).length<2&&(t="0".concat(t)),n+=t;return n}([t[1],t[2],t[3]]),e.lengthSizeMinusOne=3&t[4],e.spsLength=31&t[5],e.sps=[];for(var n=6,i=0;i<e.spsLength;i++){var r=ba(t,n);n+=2,e.sps.push(t.subarray(n,n+r)),n+=r}e.ppsLength=t[n],n+=1,e.pps=[];for(var a=0;a<e.ppsLength;a++){var l=ba(t,n);n+=2,e.pps.push(t.subarray(n,n+=l)),n+=l}}))}},{key:"hvc1",value:function(t){return wa(t,!1,(function(t,n,i){var r=Ma(t,n),a=n.subarray(r);i+=r,t.hvcC=e.hvcC(e.findBox(a,["hvcC"],i)[0]),t.pasp=e.pasp(e.findBox(a,["pasp"],i)[0])}))}},{key:"hvcC",value:function(e){return wa(e,!1,(function(t,n){t.data=e.data,t.codec="hev1.1.6.L93.B0",t.configurationVersion=n[0];var i=n[1];t.generalProfileSpace=i>>6,t.generalTierFlag=(32&i)>>5,t.generalProfileIdc=31&i,t.generalProfileCompatibility=va(n,2),t.generalConstraintIndicatorFlags=n.subarray(6,12),t.generalLevelIdc=n[12],t.avgFrameRate=ba(n,19),t.numOfArrays=n[22],t.vps=[],t.sps=[],t.pps=[];for(var r=23,a=0,l=0,U=0,F=0;F<t.numOfArrays;F++){a=63&n[r],l=ba(n,r+1),r+=3;for(var o,d=[],Q=0;Q<l;Q++)U=ba(n,r),r+=2,d.push(n.subarray(r,r+U)),r+=U;if(32===a)(o=t.vps).push.apply(o,d);else if(33===a){var s;(s=t.sps).push.apply(s,d)}else if(34===a){var c;(c=t.pps).push.apply(c,d)}}}))}},{key:"pasp",value:function(e){return wa(e,!1,(function(e,t){e.hSpacing=va(t),e.vSpacing=va(t,4)}))}},{key:"mp4a",value:function(t){return wa(t,!1,(function(t,n,i){var r=Ya(t,n);t.esds=e.esds(e.findBox(n.subarray(r),["esds"],i+r)[0])}))}},{key:"esds",value:function(e){return wa(e,!0,(function(e,t){e.codec="mp4a.";for(var n=0,i=0,r=0,a=0;t.length;){for(a=t[n=0],i=t[n+1],n+=2;128&i;)r=(127&i)<<7,i=t[n],n+=1;if(r+=127&i,3===a)t=t.subarray(n+3);else{if(4!==a){if(5===a){var l=e.config=t.subarray(n,n+r),U=(248&l[0])>>3;return 31===U&&l.length>=2&&(U=32+((7&l[0])<<3)+((224&l[1])>>5)),e.objectType=U,e.codec+=U.toString(16),void("."===e.codec[e.codec.length-1]&&(e.codec=e.codec.substring(0,e.codec.length-1)))}return void("."===e.codec[e.codec.length-1]&&(e.codec=e.codec.substring(0,e.codec.length-1)))}e.codec+=(t[n].toString(16)+".").padStart(3,"0"),t=t.subarray(n+13)}}}))}},{key:"alaw",value:function(e){return wa(e,!1,(function(e,t){Ya(e,t)}))}},{key:"stts",value:function(e){return wa(e,!0,(function(e,t){for(var n=va(t),i=[],r=4,a=0;a<n;a++)i.push({count:va(t,r),delta:va(t,r+4)}),r+=8;e.entryCount=n,e.entries=i}))}},{key:"ctts",value:function(e){return wa(e,!0,(function(e,t){var n=va(t),i=[],r=4;if(1===e.version)for(var a=0;a<n;a++)i.push({count:va(t,r),offset:va(t,r+4)}),r+=8;else for(var l=0;l<n;l++)i.push({count:va(t,r),offset:-(1+~va(t,r+4))}),r+=8;e.entryCount=n,e.entries=i}))}},{key:"stsc",value:function(e){return wa(e,!0,(function(e,t){for(var n=va(t),i=new Array(n),r=4,a=0;a<n;a++)i[a]={firstChunk:va(t,r),samplesPerChunk:va(t,r+4),sampleDescriptionIndex:va(t,r+8)},r+=12;e.entryCount=n,e.entries=i}))}},{key:"stsz",value:function(e){return wa(e,!0,(function(e,t){var n=va(t),i=va(t,4),r=new Array(i);if(!n)for(var a=8,l=0;l<i;l++)r[l]=va(t,a),a+=4;e.sampleSize=n,e.sampleCount=i,e.entrySizes=r}))}},{key:"stco",value:function(e){return wa(e,!0,(function(e,t){for(var n=va(t),i=new Array(n),r=4,a=0;a<n;a++)i[a]=va(t,r),r+=4;e.entryCount=n,e.entries=i}))}},{key:"co64",value:function(e){return wa(e,!0,(function(e,t){for(var n=va(t),i=new Array(n),r=4,a=0;a<n;a++)i[a]=ga(t,r),r+=8;e.entryCount=n,e.entries=i}))}},{key:"stss",value:function(e){return wa(e,!0,(function(e,t){for(var n=va(t),i=new Array(n),r=4,a=0;a<n;a++)i[a]=va(t,r),r+=4;e.entryCount=n,e.entries=i}))}},{key:"moof",value:function(t){return wa(t,!1,(function(t,n,i){t.mfhd=e.mfhd(e.findBox(n,["mfhd"],i)[0]),t.traf=e.findBox(n,["traf"],i).map((function(t){return e.traf(t)}))}))}},{key:"mfhd",value:function(e){return wa(e,!0,(function(e,t){e.sequenceNumber=va(t)}))}},{key:"traf",value:function(t){return wa(t,!1,(function(t,n,i){t.tfhd=e.tfhd(e.findBox(n,["tfhd"],i)[0]),t.tfdt=e.tfdt(e.findBox(n,["tfdt"],i)[0]),t.trun=e.trun(e.findBox(n,["trun"],i)[0])}))}},{key:"trun",value:function(e){return wa(e,!0,(function(e,t){var n=e.version,i=e.flags,r=t.length,a=e.sampleCount=va(t),l=4;if(r>l&&1&i&&(e.dataOffset=-(1+~va(t,l)),l+=4),r>l&&4&i&&(e.firstSampleFlags=va(t,l),l+=4),r>l){var U;e.samples=new Array(a);for(var F=0;F<a;F++)U={},256&i&&(U.duration=va(t,l),l+=4),512&i&&(U.size=va(t,l),l+=4),1024&i&&(U.flags=va(t,l),l+=4),2048&i&&(U.cts=n?-(1+~va(t,l+4)):va(t,l),l+=4),e.samples[F]=U}}))}},{key:"tfdt",value:function(e){return wa(e,!0,(function(e,t){1===e.version?e.baseMediaDecodeTime=ga(t):e.baseMediaDecodeTime=va(t)}))}},{key:"probe",value:function(t){return!!e.findBox(t,["ftyp"])}},{key:"parseSampleFlags",value:function(e){return{isLeading:(12&e[0])>>>2,dependsOn:3&e[0],isDependedOn:(192&e[1])>>>6,hasRedundancy:(48&e[1])>>>4,paddingValue:(14&e[1])>>>1,isNonSyncSample:1&e[1],degradationPriority:e[2]<<8|e[3]}}},{key:"moovToTrack",value:function(e,t,n){var i,r,a=e.trak;if(a&&a.length){var l=a.find((function(e){var t,n;return"vide"===(null===(t=e.mdia)||void 0===t||null===(n=t.hdlr)||void 0===n?void 0:n.handlerType)})),U=a.find((function(e){var t,n;return"soun"===(null===(t=e.mdia)||void 0===t||null===(n=t.hdlr)||void 0===n?void 0:n.handlerType)}));if(l&&t){var F,o,d,Q,s,c,u,B,R=t,h=null===(F=l.tkhd)||void 0===F?void 0:F.trackId;null!=h&&(R.id=l.tkhd.trackId),R.tkhdDuration=l.tkhd.duration,R.mvhdDurtion=e.mvhd.duration,R.mvhdTimecale=e.mvhd.timescale,R.timescale=R.formatTimescale=l.mdia.mdhd.timescale,R.duration=l.mdia.mdhd.duration||R.mvhdDurtion/R.mvhdTimecale*R.timescale,null!==(o=l.edts)&&void 0!==o&&o.elst&&(R.editList=l.edts.elst,R.editListApplied=l.editListApplied);var V,p,m,Z,S,J,W,f,y=l.mdia.minf.stbl.stsd.entries[0];if(R.width=y.width,R.height=y.height,y.pasp&&(R.sarRatio=[y.pasp.hSpacing,y.pasp.vSpacing]),y.hvcC)R.codecType=sa,R.codec=y.hvcC.codec,R.vps=y.hvcC.vps,R.sps=y.hvcC.sps,R.pps=y.hvcC.pps,R.hvcC=y.hvcC.data;else if(y.avcC)R.codec=y.avcC.codec,R.sps=y.avcC.sps,R.pps=y.avcC.pps;else{if(!y.vvcC)throw new Error("unknown video stsd entry");R.codecType=ca,R.codec=y.vvcC.codec,R.sps=y.vvcC.sps,R.pps=y.vvcC.pps,R.vps=y.vvcC.vps,R.vvcC=y.vvcC.data}if(R.present=!0,R.ext={},R.ext.stss=null===(d=l.mdia)||void 0===d||null===(Q=d.minf)||void 0===Q||null===(s=Q.stbl)||void 0===s?void 0:s.stss,R.ext.ctts=null===(c=l.mdia)||void 0===c||null===(u=c.minf)||void 0===u||null===(B=u.stbl)||void 0===B?void 0:B.ctts,y&&"encv"===y.type)R.isVideoEncryption=!0,y.default_KID=null===(V=y.sinf)||void 0===V||null===(p=V.schi)||void 0===p?void 0:p.tenc.default_KID,y.default_IsEncrypted=null===(m=y.sinf)||void 0===m||null===(Z=m.schi)||void 0===Z?void 0:Z.tenc.default_IsEncrypted,y.default_IV_size=null===(S=y.sinf)||void 0===S||null===(J=S.schi)||void 0===J?void 0:J.tenc.default_IV_size,R.videoSenc=l.mdia.minf.stbl.senc&&l.mdia.minf.stbl.senc.samples,y.data_format=null===(W=y.sinf)||void 0===W||null===(f=W.frma)||void 0===f?void 0:f.data_format,R.useEME=e.useEME,R.kidValue=e.kidValue,R.pssh=e.pssh,R.encv=y}if(U&&n){var k,E,b,v,N,g,T,C,L,x,X=n,D=null===(k=U.tkhd)||void 0===k?void 0:k.trackId;null!=D&&(X.id=U.tkhd.trackId),X.tkhdDuration=U.tkhd.duration,X.mvhdDurtion=e.mvhd.duration,X.mvhdTimecale=e.mvhd.timescale,X.timescale=X.formatTimescale=U.mdia.mdhd.timescale,X.duration=U.mdia.mdhd.duration||X.mvhdDurtion/X.mvhdTimecale*X.timescale,null!==(E=U.edts)&&void 0!==E&&E.elst&&(X.editList=U.edts.elst,X.editListApplied=U.editListApplied);var G,I,M,Y,w,K,_,P,j=U.mdia.minf.stbl.stsd.entries[0];switch(X.sampleSize=j.sampleSize,X.sampleRate=j.sampleRate,X.channelCount=j.channelCount,X.present=!0,j.type){case"alaw":X.codecType=X.codec=Ba,X.sampleRate=8e3;break;case"ulaw":X.codecType=X.codec=Ra,X.sampleRate=8e3;break;default:X.sampleDuration=ya.getFrameDuration(X.sampleRate,X.timescale),X.sampleRateIndex=ya.getRateIndexByRate(X.sampleRate),X.objectType=(null===(i=j.esds)||void 0===i?void 0:i.objectType)||2,j.esds&&(X.config=Array.from(j.esds.config)),X.codec=(null===(r=j.esds)||void 0===r?void 0:r.codec)||"mp4a.40.2"}if(X.sampleDuration=ya.getFrameDuration(X.sampleRate,X.timescale),X.objectType=(null===(b=j.esds)||void 0===b?void 0:b.objectType)||2,j.esds&&(j.esds.config?X.config=Array.from(j.esds.config):console.warn("esds config is null")),X.codec=(null===(v=j.esds)||void 0===v?void 0:v.codec)||"mp4a.40.2",X.sampleRateIndex=ya.getRateIndexByRate(X.sampleRate),X.ext={},X.ext.stss=null===(N=U.mdia)||void 0===N||null===(g=N.minf)||void 0===g||null===(T=g.stbl)||void 0===T?void 0:T.stss,X.ext.ctts=null===(C=U.mdia)||void 0===C||null===(L=C.minf)||void 0===L||null===(x=L.stbl)||void 0===x?void 0:x.ctts,X.present=!0,j&&"enca"===j.type)X.isAudioEncryption=!0,j.data_format=null===(G=j.sinf)||void 0===G||null===(I=G.frma)||void 0===I?void 0:I.data_format,j.default_KID=null===(M=j.sinf)||void 0===M||null===(Y=M.schi)||void 0===Y?void 0:Y.tenc.default_KID,j.default_IsEncrypted=null===(w=j.sinf)||void 0===w||null===(K=w.schi)||void 0===K?void 0:K.tenc.default_IsEncrypted,j.default_IV_size=null===(_=j.sinf)||void 0===_||null===(P=_.schi)||void 0===P?void 0:P.tenc.default_IV_size,X.audioSenc=U.mdia.minf.stbl.senc&&U.mdia.minf.stbl.senc.samples,X.useEME=e.useEME,X.kidValue=e.kidValue,X.enca=j}if(n&&(n.isVideoEncryption=!!t&&t.isVideoEncryption),t&&(t.isAudioEncryption=!!n&&n.isAudioEncryption),null!=t&&t.encv||null!=n&&n.enca){var H,O,z=null==t||null===(H=t.encv)||void 0===H?void 0:H.default_KID,A=null==n||null===(O=n.enca)||void 0===O?void 0:O.default_KID,q=z||A?(z||A).join(""):null;t&&(t.kid=q),n&&(n.kid=q)}return t&&(t.flags=3841),n&&(n.flags=1793),{videoTrack:t,audioTrack:n}}}},{key:"evaluateDefaultDuration",value:function(e,t,n){var i,r=null==t||null===(i=t.samples)||void 0===i?void 0:i.length;return r?1024*r/t.timescale*e.timescale/n:1024}},{key:"moofToSamples",value:function(t,n,i){var r={};return t.mfhd&&(n&&(n.sequenceNumber=t.mfhd.sequenceNumber),i&&(i.sequenceNumber=t.mfhd.sequenceNumber)),t.traf.forEach((function(t){var a=t.tfhd,l=t.tfdt,U=t.trun;if(a&&U){l&&(n&&n.id===a.trackId&&(n.baseMediaDecodeTime=l.baseMediaDecodeTime),i&&i.id===a.trackId&&(i.baseMediaDecodeTime=l.baseMediaDecodeTime));var F=a.defaultSampleSize||0,o=a.defaultSampleDuration||e.evaluateDefaultDuration(n,i,U.samples.length||U.sampleCount),d=U.dataOffset||0,Q=0,s=-1;if(!U.samples.length&&U.sampleCount){r[a.trackId]=new Array(U.sampleCount);for(var c=0;c<U.sampleCount;c++)r[a.trackId][c]={offset:d,dts:Q,duration:o,size:F},Q+=o,d+=F}else r[a.trackId]=U.samples.map((function(e,t){return(e={offset:d,dts:Q,pts:Q+(e.cts||0),duration:e.duration||o,size:e.size||F,gopId:s,keyframe:0===t||null!==e.flags&&void 0!==e.flags&&(65536&e.flags)>>>0!=65536}).keyframe&&(s++,e.gopId=s),Q+=e.duration,d+=e.size,e}))}})),r}},{key:"moovToSamples",value:function(e){var t=e.trak;if(t&&t.length){var n=t.find((function(e){var t,n;return"vide"===(null===(t=e.mdia)||void 0===t||null===(n=t.hdlr)||void 0===n?void 0:n.handlerType)})),i=t.find((function(e){var t,n;return"soun"===(null===(t=e.mdia)||void 0===t||null===(n=t.hdlr)||void 0===n?void 0:n.handlerType)}));if(n||i){var r,a;if(n){var l,U,F=null===(l=n.mdia)||void 0===l||null===(U=l.minf)||void 0===U?void 0:U.stbl;if(!F)return;var o=F.stts,d=F.stsc,Q=F.stsz,s=F.stco,c=F.stss,u=F.ctts;if(!(o&&d&&Q&&s&&c))return;r=Ia(o,d,Q,s,u,c)}if(i){var B,R,h,V=null===(B=i.mdia)||void 0===B||null===(R=B.minf)||void 0===R?void 0:R.stbl;if(!V)return;var p=null===(h=i.mdia.mdhd)||void 0===h?void 0:h.timescale,m=V.stts,Z=V.stsc,S=V.stsz,J=V.stco;if(!(p&&m&&Z&&S&&J))return;a=Ia(m,Z,S,J)}return{videoSamples:r,audioSamples:a}}}}}]),e}();function Ia(e,t,n,i,r,a){var l,U,F,o=[],d=null==r?void 0:r.entries,Q=t.entries,s=i.entries,c=n.entrySizes,u=null==a?void 0:a.entries;u&&(l={},u.forEach((function(e){l[e-1]=!0}))),d&&(U=[],d.forEach((function(e){for(var t=e.count,n=e.offset,i=0;i<t;i++)U.push(n)})));var B=-1,R=0,h=0,V=0,p=0,m=0,Z=Q[0].samplesPerChunk,S=Q[1]?Q[1].firstChunk-1:1/0;return e.entries.forEach((function(e){for(var t=e.count,i=e.delta,r=0;r<t;r++)F={dts:R,duration:i,size:c[h]||n.sampleSize,offset:s[V]+m,index:h},u&&(F.keyframe=l[h],F.keyframe&&B++,F.gopId=B),U&&h<U.length&&(F.pts=F.dts+U[h]),o.push(F),R+=i,++h<Z?m+=F.size:(V++,m=0,V>=S&&(p++,S=Q[p+1]?Q[p+1].firstChunk-1:1/0),Z+=Q[p].samplesPerChunk)})),o}function Ma(e,t){return e.dataReferenceIndex=ba(t,6),e.width=ba(t,24),e.height=ba(t,26),e.horizresolution=va(t,28),e.vertresolution=va(t,32),e.frameCount=ba(t,40),e.depth=ba(t,74),78}function Ya(e,t){return e.dataReferenceIndex=ba(t,6),e.channelCount=ba(t,16),e.sampleSize=ba(t,18),e.sampleRate=va(t,24)/65536,28}function wa(e,t,n){if(e){if(e.size!==e.data.length)throw new Error("box ".concat(e.type," size !== data.length"));var i={start:e.start,size:e.size,headerSize:e.headerSize,type:e.type};return t&&(i.version=e.data[e.headerSize],i.flags=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return(e[t]<<16)+(e[t+1]<<8)+(e[t+2]||0)}(e.data,e.headerSize+1),i.headerSize+=4),n(i,e.data.subarray(i.headerSize),i.start+i.headerSize),i}}var Ka=function(){for(var e=[],t=arguments.length,n=new Array(t),i=0;i<t;i++)n[i]=arguments[i];return n.forEach((function(t){e.push(function(e,t,n){for(var i=String(n),r=0|t,a=Math.ceil(r/i.length),l=[],U=String(e);a--;)l.push(i);return l.join("").substring(0,r-U.length)+U}(Number(t).toString(16),2,0))})),e[0]};var _a=function(){function e(){$r(this,e),this.buffer=new Uint8Array(0)}return ta(e,[{key:"write",value:function(){for(var e=this,t=arguments.length,n=new Array(t),i=0;i<t;i++)n[i]=arguments[i];n.forEach((function(t){t?e.buffer=function(e){for(var t=0,n=arguments.length,i=new Array(n>1?n-1:0),r=1;r<n;r++)i[r-1]=arguments[r];i.forEach((function(e){t+=e.length}));var a=new e(t),l=0;return i.forEach((function(e){a.set(e,l),l+=e.length})),a}(Uint8Array,e.buffer,t):window.console.warn(t)}))}}],[{key:"writeUint16",value:function(e){return new Uint8Array([e>>8&255,255&e])}},{key:"writeUint32",value:function(e){return new Uint8Array([e>>24,e>>16&255,e>>8&255,255&e])}}]),e}(),Pa=Math.pow(2,32)-1,ja=function(){function e(){$r(this,e)}return ta(e,null,[{key:"box",value:function(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),i=1;i<t;i++)n[i-1]=arguments[i];var r=8+(n=n.filter(Boolean)).reduce((function(e,t){return e+t.byteLength}),0),a=new Uint8Array(r);a[0]=r>>24&255,a[1]=r>>16&255,a[2]=r>>8&255,a[3]=255&r,a.set(e,4);var l=8;return n.forEach((function(e){a.set(e,l),l+=e.byteLength})),a}},{key:"FullBox",value:function(t,n,i){for(var r=arguments.length,a=new Array(r>3?r-3:0),l=3;l<r;l++)a[l-3]=arguments[l];return e.box.apply(e,[t,new Uint8Array([n,i>>16&255,i>>8&255,255&i])].concat(a))}},{key:"ftyp",value:function(t){return t.find((function(e){return e.type===Fa&&e.codecType===sa}))?e.FTYPHEV1:e.FTYPAVC1}},{key:"initSegment",value:function(t){return ka(e.ftyp(t),e.moov(t))}},{key:"pssh",value:function(t){var n=new Uint8Array([1,0,0,0].concat([16,119,239,236,192,178,77,2,172,227,60,30,82,226,251,75],[0,0,0,1],La(t.kid),[0,0,0,0]));return e.box(e.types.pssh,n)}},{key:"moov",value:function(t){if(t[0].useEME&&(t[0].encv||t[0].enca)){t[0].pssh||(t[0].pssh={kid:t[0].kid});var n=this.pssh(t[0].pssh);return e.box.apply(e,[e.types.moov,e.mvhd(t[0].mvhdDurtion||t[0].duration,t[0].mvhdTimecale||t[0].timescale),e.mvex(t)].concat(ra(t.map((function(t){return e.trak(t)}))),[n]))}return e.box.apply(e,[e.types.moov,e.mvhd(t[0].mvhdDurtion||t[0].duration,t[0].mvhdTimecale||t[0].timescale)].concat(ra(t.map((function(t){return e.trak(t)}))),[e.mvex(t)]))}},{key:"mvhd",value:function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:9e4;return e.box(e.types.mvhd,new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,n>>24&255,n>>16&255,n>>8&255,255&n,t>>24&255,t>>16&255,t>>8&255,255&t,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255]))}},{key:"trak",value:function(t){return e.box(e.types.trak,e.tkhd(t.id,t.tkhdDuration||0,t.width,t.height),e.mdia(t))}},{key:"tkhd",value:function(t,n){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0;return e.box(e.types.tkhd,new Uint8Array([0,0,0,7,0,0,0,0,0,0,0,0,t>>24&255,t>>16&255,t>>8&255,255&t,0,0,0,0,n>>24&255,n>>16&255,n>>8&255,255&n,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,i>>8&255,255&i,0,0,r>>8&255,255&r,0,0]))}},{key:"edts",value:function(t){return e.box(e.types.edts,e.elst(t))}},{key:"elst",value:function(t){t.entries;var n=t.entriesData,i=t.version;return e.FullBox(e.types.elst,i,0,n)}},{key:"mdia",value:function(t){return e.box(e.types.mdia,e.mdhd(t.duration,t.timescale),e.hdlr(t.type),e.minf(t))}},{key:"mdhd",value:function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:9e4;return e.box(e.types.mdhd,new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,n>>24&255,n>>16&255,n>>8&255,255&n,t>>24&255,t>>16&255,t>>8&255,255&t,85,196,0,0]))}},{key:"hdlr",value:function(t){return e.box(e.types.hdlr,e.HDLR_TYPES[t])}},{key:"minf",value:function(t){return e.box(e.types.minf,t.type===Fa?e.VMHD:e.SMHD,e.DINF,e.stbl(t))}},{key:"stbl",value:function(t){return t&&t.ext,e.box(e.types.stbl,e.stsd(t),e.STTS,[][0],e.STSC,e.STSZ,e.STCO)}},{key:"stsd",value:function(t){var n;return n="audio"===t.type?t.useEME&&t.enca?e.enca(t):e.mp4a(t):t.useEME&&t.encv?e.encv(t):e.avc1hev1vvc1(t),e.box(e.types.stsd,new Uint8Array([0,0,0,0,0,0,0,1]),n)}},{key:"enca",value:function(t){var n=t.enca.channelCount,i=t.enca.sampleRate,r=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,n,0,16,0,0,0,0,i>>8&255,255&i,0,0]),a=e.esds(t.config),l=e.sinf(t.enca);return e.box(e.types.enca,r,a,l)}},{key:"encv",value:function(t){var n,i,r=t.sps.length>0?t.sps[0]:[],a=t.pps.length>0?t.pps[0]:[],l=t.width,U=t.height,F=t.sarRatio[0],o=t.sarRatio[1],d=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,l>>8&255,255&l,U>>8&255,255&U,0,72,0,0,0,72,0,0,0,0,0,0,0,1,18,100,97,105,108,121,109,111,116,105,111,110,47,104,108,115,46,106,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,17,17]),Q=new Uint8Array((n=(i=[1,r[1],r[2],r[3],255,225,r.length>>>8&255,255&r.length]).concat.apply(i,ra(r)).concat([1,a.length>>>8&255,255&a.length])).concat.apply(n,ra(a))),s=new Uint8Array([0,0,88,57,0,15,200,192,0,4,86,72]),c=e.sinf(t.encv),u=new Uint8Array([F>>24,F>>16&255,F>>8&255,255&F,o>>24,o>>16&255,o>>8&255,255&o]);return e.box(e.types.encv,d,e.box(e.types.avcC,Q),e.box(e.types.btrt,s),c,e.box(e.types.pasp,u))}},{key:"schi",value:function(t){var n=new Uint8Array([]),i=e.tenc(t);return e.box(e.types.schi,n,i)}},{key:"tenc",value:function(t){var n=new Uint8Array([0,0,0,0,0,0,255&t.default_IsEncrypted,255&t.default_IV_size].concat(La(t.default_KID)));return e.box(e.types.tenc,n)}},{key:"sinf",value:function(t){var n=new Uint8Array([]),i=new Uint8Array([t.data_format.charCodeAt(0),t.data_format.charCodeAt(1),t.data_format.charCodeAt(2),t.data_format.charCodeAt(3)]),r=new Uint8Array([0,0,0,0,99,101,110,99,0,1,0,0]),a=e.schi(t);return e.box(e.types.sinf,n,e.box(e.types.frma,i),e.box(e.types.schm,r),a)}},{key:"avc1hev1vvc1",value:function(t){var n,i;t.codecType===sa?(n=e.hvcC(t),i=e.types.hvc1):t.codecType===ca?(n=e.vvcC(t),i=e.types.bvc2):(n=e.avcC(t),i=e.types.avc1);var r=[new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,t.width>>8&255,255&t.width,t.height>>8&255,255&t.height,0,72,0,0,0,72,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,17,17]),n];return t.codecType===sa?r.push(e.box(e.types.fiel,new Uint8Array([1,0]))):t.sarRatio&&t.sarRatio.length>1&&r.push(e.pasp(t.sarRatio)),e.box.apply(e,[i].concat(r))}},{key:"avcC",value:function(t){var n,i,r,a=[],l=[];return t.sps.forEach((function(e){r=e.byteLength,a.push(r>>>8&255),a.push(255&r),a.push.apply(a,ra(e))})),t.pps.forEach((function(e){r=e.byteLength,l.push(r>>>8&255),l.push(255&r),l.push.apply(l,ra(e))})),e.box(e.types.avcC,new Uint8Array((n=(i=[1,a[3],a[4],a[5],255,224|t.sps.length]).concat.apply(i,a).concat([t.pps.length])).concat.apply(n,l)))}},{key:"vvcC",value:function(t){var n=t.vvcC;return e.box(e.types.bv2C,new Uint8Array(n))}},{key:"hvcC",value:function(t){var n=t.hvcC;if(n instanceof ArrayBuffer||n instanceof Uint8Array)return n;var i,r=t.vps,a=t.sps,l=t.pps;if(n){var U=n.generalProfileCompatibilityFlags,F=n.generalConstraintIndicatorFlags,o=(r.length&&1)+(a.length&&1)+(l.length&&1);i=[1,n.generalProfileSpace<<6|n.generalTierFlag<<5|n.generalProfileIdc,U>>>24,U>>>16,U>>>8,U,F[0],F[1],F[2],F[3],F[4],F[5],n.generalLevelIdc,240,0,252,252|n.chromaFormatIdc,248|n.bitDepthLumaMinus8,248|n.bitDepthChromaMinus8,0,0,n.numTemporalLayers<<3|n.temporalIdNested<<2|3,o];var d=function(e){var t;i.push(e.length>>8,e.length),(t=i).push.apply(t,ra(e))};r.length&&(i.push(160,0,r.length),r.forEach(d)),a.length&&(i.push(161,0,a.length),a.forEach(d)),l.length&&(i.push(162,0,l.length),l.forEach(d))}else i=[1,1,96,0,0,0,144,0,0,0,0,0,93,240,0,252,253,248,248,0,0,15,3,160,0,1,0,24,64,1,12,1,255,255,1,96,0,0,3,0,144,0,0,3,0,0,3,0,93,153,152,9,161,0,1,0,45,66,1,1,1,96,0,0,3,0,144,0,0,3,0,0,3,0,93,160,2,128,128,45,22,89,153,164,147,43,154,128,128,128,130,0,0,3,0,2,0,0,3,0,50,16,162,0,1,0,7,68,1,193,114,180,98,64];return e.box(e.types.hvcC,new Uint8Array(i))}},{key:"pasp",value:function(t){var n=ia(t,2),i=n[0],r=n[1];return e.box(e.types.pasp,new Uint8Array([i>>24,i>>16&255,i>>8&255,255&i,r>>24,r>>16&255,r>>8&255,255&r]))}},{key:"mp4a",value:function(t){return e.box(e.types.mp4a,new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,t.channelCount,0,16,0,0,0,0,t.sampleRate>>8&255,255&t.sampleRate,0,0]),t.config.length?e.esds(t.config):void 0)}},{key:"esds",value:function(t){var n=t.length;return e.box(e.types.esds,new Uint8Array([0,0,0,0,3,23+n,0,0,0,4,15+n,64,21,0,6,0,0,0,218,192,0,0,218,192,5].concat([n]).concat(t).concat([6,1,2])))}},{key:"mvex",value:function(t){return e.box.apply(e,[e.types.mvex].concat(ra(t.map((function(t){return e.trex(t.id)})))))}},{key:"trex",value:function(t){return e.box(e.types.trex,new Uint8Array([0,0,0,0,t>>24,t>>16&255,t>>8&255,255&t,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1]))}},{key:"trex1",value:function(t){return e.box(e.types.trex,new Uint8Array([0,0,0,0,t>>24,t>>16&255,t>>8&255,255&t,0,0,0,1,0,0,2,0,0,0,0,0,0,1,0,0]))}},{key:"trex2",value:function(t){return e.box(e.types.trex,new Uint8Array([0,0,0,0,t>>24,t>>16&255,t>>8&255,255&t,0,0,0,1,0,0,4,0,0,0,0,0,2,0,0,0]))}},{key:"moof",value:function(t){return e.box.apply(e,[e.types.moof,e.mfhd(t[0].samples?t[0].samples[0].gopId:0)].concat(ra(t.map((function(t){return e.traf(t)})))))}},{key:"mfhd",value:function(t){return e.box(e.types.mfhd,new Uint8Array([0,0,0,0,t>>24,t>>16&255,t>>8&255,255&t]))}},{key:"traf",value:function(t){var n=e.tfhd(t.id),i=e.tfdt(t.baseMediaDecodeTime),r=0;if(t.isVideo&&t.videoSenc&&t.videoSenc.forEach((function(e){r+=8,e.subsamples&&e.subsamples.length&&(r+=2,r+=6*e.subsamples.length)})),t.videoSencLength=r,t.useEME&&(t.isVideoEncryption||t.isAudioEncryption)){if(t.isVideoEncryption){if(t.isVideo){var a=e.saiz(t),l=e.saio(t),U=e.trun1(t),F=e.senc(t);return e.box(e.types.traf,n,i,a,l,U,F)}if(t.isAudioEncryption){var o=e.sbgp(),d=e.saiz(t),Q=e.saio(t),s=e.senc(t),c=e.trun1(t);return e.box(e.types.traf,n,i,o,d,Q,s,c)}var u=e.sbgp(),B=e.trun1(t);return e.box(e.types.traf,n,i,u,B)}if(t.isVideo){var R=e.trun1(t);return e.box(e.types.traf,n,i,R)}var h=e.sbgp(),V=e.saiz(t),p=e.saio(t),m=e.senc(t),Z=e.trun1(t);return e.box(e.types.traf,n,i,h,V,p,m,Z)}var S=e.sdtp(t);return e.box(e.types.traf,n,i,S,e.trun(t.samples,S.byteLength+76))}},{key:"sdtp",value:function(t){var n=new _a;return t.samples.forEach((function(e){n.write(new Uint8Array(t.isVideo?[e.keyframe?32:16]:[16]))})),e.box(e.types.sdtp,this.extension(0,0),n.buffer)}},{key:"trun1",value:function(t){var n=new _a,i=_a.writeUint32(t.samples.length),r=null;if(t.isVideo){var a=t.videoSencLength;r=_a.writeUint32(76+16*t.samples.length+a+77),!t.isVideoEncryption&&t.isAudioEncryption&&(r=_a.writeUint32(76+16*t.samples.length+20))}else{var l=76+12*t.samples.length+52;t.isAudioEncryption&&(l=76+12*t.samples.length+8*t.audioSenc.length+105),r=_a.writeUint32(l)}return t.samples.forEach((function(e){n.write(_a.writeUint32(e.duration)),n.write(_a.writeUint32(e.size)),n.write(_a.writeUint32(e.keyframe?33554432:65536)),t.isVideo&&n.write(_a.writeUint32(e.cts?e.cts:0))})),e.box(e.types.trun,this.extension(0,t.flags),i,r,n.buffer)}},{key:"senc",value:function(t){var n=new _a,i=t.samples.length,r=t.isVideo?16:8,a=t.isVideo?2:0,l=[],U=0;return t.isVideo?(l=t.videoSenc,U=t.videoSencLength):l=t.audioSenc,U=U||r*i,n.write(_a.writeUint32(16+U),e.types.senc,this.extension(0,a)),n.write(_a.writeUint32(i)),l.forEach((function(e){for(var t=0;t<e.InitializationVector.length;t++)n.write(new Uint8Array([e.InitializationVector[t]]));e.subsamples&&e.subsamples.length&&(n.write(_a.writeUint16(e.subsamples.length)),e.subsamples.forEach((function(e){n.write(_a.writeUint16(e.BytesOfClearData)),n.write(_a.writeUint32(e.BytesOfProtectedData))})))})),n.buffer}},{key:"saio",value:function(t){var n=12*t.samples.length+141;!t.isVideo&&t.isAudioEncryption&&(n=149);var i=new Uint8Array([1,0,0,0,0,0,0,1,0,0,0,0,n>>24&255,n>>16&255,n>>8&255,255&n]);return e.box(e.types.saio,i)}},{key:"saiz",value:function(t){var n=t.samples.length,i=new Uint8Array([0,0,0,0,16,n>>24&255,n>>16&255,n>>8&255,255&n]);return e.box(e.types.saiz,i)}},{key:"sbgp",value:function(){var t=new Uint8Array([114,111,108,108,0,0,0,1,0,0,1,25,0,0,0,1]);return e.box(e.types.sbgp,this.extension(0,0),t)}},{key:"extension",value:function(e,t){return new Uint8Array([e,t>>16&255,t>>8&255,255&t])}},{key:"tfhd",value:function(t){return e.box(e.types.tfhd,new Uint8Array([0,0,0,0,t>>24,t>>16&255,t>>8&255,255&t]))}},{key:"tfdt",value:function(t){var n=Math.floor(t/(Pa+1)),i=Math.floor(t%(Pa+1));return e.box(e.types.tfdt,new Uint8Array([1,0,0,0,n>>24,n>>16&255,n>>8&255,255&n,i>>24,i>>16&255,i>>8&255,255&i]))}},{key:"trun",value:function(t,n){var i=t.length,r=12+16*i;n+=8+r;var a=new Uint8Array(r);a.set([0,0,15,1,i>>>24&255,i>>>16&255,i>>>8&255,255&i,n>>>24&255,n>>>16&255,n>>>8&255,255&n],0);for(var l=0;l<i;l++){var U=t[l],F=U.duration,o=U.size,d=U.flag,Q=void 0===d?{}:d,s=U.cts,c=void 0===s?0:s;a.set([F>>>24&255,F>>>16&255,F>>>8&255,255&F,o>>>24&255,o>>>16&255,o>>>8&255,255&o,Q.isLeading<<2|(null===Q.dependsOn||void 0===Q.dependsOn?1:Q.dependsOn),Q.isDependedOn<<6|Q.hasRedundancy<<4|Q.paddingValue<<1|(null===Q.isNonSyncSample||void 0===Q.isNonSyncSample?1:Q.isNonSyncSample),61440&Q.degradationPriority,15&Q.degradationPriority,c>>>24&255,c>>>16&255,c>>>8&255,255&c],12+16*l)}return e.box(e.types.trun,a)}},{key:"moovMP4",value:function(t){return e.box.apply(e,[e.types.moov,e.mvhd(t[0].duration,t[0].timescale)].concat(ra(t.map((function(t){return e.trackMP4(t)})))))}},{key:"trackMP4",value:function(t){return e.box(e.types.trak,e.tkhd(t.id,t.duration,t.width,t.height),e.mdiaMP4(t))}},{key:"mdiaMP4",value:function(t){return e.box(e.types.mdia,e.mdhd(t.duration,t.timescale),e.hdlr(t.type),e.minfMP4(t))}},{key:"minfMP4",value:function(t){return e.box(e.types.minf,t.type===Fa?e.VMHD:e.SMHD,e.DINF,e.stblMP4(t))}},{key:"stblMP4",value:function(t){var n=t.ext,i=[e.stsd(t),e.stts(n.stts),e.stsc(n.stsc),e.stsz(n.stsz),e.stco(n.stco)];return n.stss.length&&i.push(e.stss(n.stss)),n.ctts.length&&i.push(e.ctts(n.ctts)),e.box.apply(e,[e.types.stbl].concat(i))}},{key:"stts",value:function(t){var n=t.length,i=new Uint8Array(8*n),r=0;return t.forEach((function(e){var t=e.value,n=e.count;i.set([n>>24,n>>16&255,n>>8&255,255&n,t>>24,t>>16&255,t>>8&255,255&t],r),r+=8})),e.box(e.types.stts,ka(new Uint8Array([0,0,0,0,n>>24,n>>16&255,n>>8&255,255&n]),i))}},{key:"stsc",value:function(t){var n=t.length,i=new Uint8Array(12*n),r=0;return t.forEach((function(e){var t=e.firstChunk,n=e.samplesPerChunk,a=e.sampleDescIndex;i.set([t>>24,t>>16&255,t>>8&255,255&t,n>>24,n>>16&255,n>>8&255,255&n,a>>24,a>>16&255,a>>8&255,255&a],r),r+=12})),e.box(e.types.stsc,ka(new Uint8Array([0,0,0,0,n>>24,n>>16&255,n>>8&255,255&n]),i))}},{key:"stsz",value:function(t){var n=t.length,i=new Uint8Array(4*n),r=0;return t.forEach((function(e){i.set([e>>24,e>>16&255,e>>8&255,255&e],r),r+=4})),e.box(e.types.stsz,ka(new Uint8Array([0,0,0,0,0,0,0,0,n>>24,n>>16&255,n>>8&255,255&n]),i))}},{key:"stco",value:function(t){var n=t.length,i=new Uint8Array(4*n),r=0;return t.forEach((function(e){i.set([e>>24,e>>16&255,e>>8&255,255&e],r),r+=4})),e.box(e.types.stco,ka(new Uint8Array([0,0,0,0,n>>24,n>>16&255,n>>8&255,255&n]),i))}},{key:"stss",value:function(t){var n=t.length,i=new Uint8Array(4*n),r=0;return t.forEach((function(e){i.set([e>>24,e>>16&255,e>>8&255,255&e],r),r+=4})),e.box(e.types.stss,ka(new Uint8Array([0,0,0,0,n>>24,n>>16&255,n>>8&255,255&n]),i))}},{key:"ctts",value:function(t){var n=t.length,i=new Uint8Array(8*n),r=0;return t.forEach((function(e){var t=e.value,n=e.count;i.set([n>>24,n>>16&255,n>>8&255,255&n,t>>24,t>>16&255,t>>8&255,255&t],r),r+=8})),e.box(e.types.ctts,ka(new Uint8Array([0,0,0,0,n>>24,n>>16&255,n>>8&255,255&n]),i))}},{key:"styp",value:function(){return e.box(e.types.styp,new Uint8Array([109,115,100,104,0,0,0,0,109,115,100,104,109,115,105,120]))}},{key:"sidx",value:function(t){var n=t.timescale,i=t.samples[0].duration,r=i*t.samples.length,a=t.samples[0].sampleOffset*i,l=8;t.samples.forEach((function(e){l+=e.size}));var U=0;if(t.isVideo){var F,o=0;t.videoSenc&&(F=t.videoSenc),t.isVideo&&F.forEach((function(e){o+=8,e.subsamples&&e.subsamples.length&&(o+=2,o+=6*e.subsamples.length)})),t.videoSencLength=o,U=l+141+16*t.samples.length+o,t.useEME&&t.isAudioEncryption&&!t.isVideoEncryption&&(U=l+16*t.samples.length+84)}else U=l+116+12*t.samples.length,t.useEME&&t.isAudioEncryption&&(U=l+169+12*t.samples.length+8*t.audioSenc.length);var d=new Uint8Array([0,0,0,0,0,0,0,255&t.id,n>>24&255,n>>16&255,n>>8&255,255&n,a>>24&255,a>>16&255,a>>8&255,255&a,0,0,0,0,0,0,0,1,0,U>>16&255,U>>8&255,255&U,r>>24&255,r>>16&255,r>>8&255,255&r,144,0,0,0]);return e.box(e.types.sidx,d)}},{key:"mdat",value:function(t){return e.box(e.types.mdat,t)}}]),e}();na(ja,"types",["avc1","avcC","hvc1","hvcC","dinf","dref","edts","elst","esds","ftyp","hdlr","mdat","mdhd","mdia","mfhd","minf","moof","moov","mp4a","mvex","mvhd","pasp","stbl","stco","stsc","stsd","stsz","stts","tfdt","tfhd","traf","trak","trex","tkhd","vmhd","smhd","ctts","stss","styp","pssh","sidx","sbgp","saiz","saio","senc","trun","encv","enca","sinf","btrt","frma","tenc","schm","schi","mehd","fiel","sdtp","bvc2","bv2C"].reduce((function(e,t){return e[t]=[t.charCodeAt(0),t.charCodeAt(1),t.charCodeAt(2),t.charCodeAt(3)],e}),Object.create(null))),na(ja,"HDLR_TYPES",{video:new Uint8Array([0,0,0,0,0,0,0,0,118,105,100,101,0,0,0,0,0,0,0,0,0,0,0,0,86,105,100,101,111,72,97,110,100,108,101,114,0]),audio:new Uint8Array([0,0,0,0,0,0,0,0,115,111,117,110,0,0,0,0,0,0,0,0,0,0,0,0,83,111,117,110,100,72,97,110,100,108,101,114,0])}),na(ja,"FTYPAVC1",ja.box(ja.types.ftyp,new Uint8Array([105,115,111,109,0,0,0,1,105,115,111,109,97,118,99,49]))),na(ja,"FTYPHEV1",ja.box(ja.types.ftyp,new Uint8Array([105,115,111,109,0,0,0,1,105,115,111,109,104,101,118,49]))),na(ja,"DINF",ja.box(ja.types.dinf,ja.box(ja.types.dref,new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,12,117,114,108,32,0,0,0,1])))),na(ja,"VMHD",ja.box(ja.types.vmhd,new Uint8Array([0,0,0,1,0,0,0,0,0,0,0,0]))),na(ja,"SMHD",ja.box(ja.types.smhd,new Uint8Array([0,0,0,0,0,0,0,0]))),na(ja,"StblTable",new Uint8Array([0,0,0,0,0,0,0,0])),na(ja,"STTS",ja.box(ja.types.stts,ja.StblTable)),na(ja,"STSC",ja.box(ja.types.stsc,ja.StblTable)),na(ja,"STSZ",ja.box(ja.types.stsz,new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0]))),na(ja,"STCO",ja.box(ja.types.stco,ja.StblTable));var Ha=function(){function e(t,n){$r(this,e),this.name=t||"",this._prefix="[".concat(this.name,"]"),e.disabled=n}return ta(e,[{key:"debug",value:function(){var t;if(!e.disabled){for(var n=arguments.length,i=new Array(n),r=0;r<n;r++)i[r]=arguments[r];(t=console).debug.apply(t,[this._prefix].concat(i))}}},{key:"log",value:function(){var t;if(!e.disabled){for(var n=arguments.length,i=new Array(n),r=0;r<n;r++)i[r]=arguments[r];(t=console).log.apply(t,[this._prefix].concat(i))}}},{key:"warn",value:function(){var t;if(!e.disabled){for(var n=arguments.length,i=new Array(n),r=0;r<n;r++)i[r]=arguments[r];(t=console).warn.apply(t,[this._prefix].concat(i))}}},{key:"error",value:function(){var t;if(!e.disabled){for(var n=arguments.length,i=new Array(n),r=0;r<n;r++)i[r]=arguments[r];(t=console).error.apply(t,[this._prefix].concat(i))}}},{key:"table",value:function(){var t;e.disabled||(console.group(this._prefix),(t=console).table.apply(t,arguments),console.groupEnd())}}],[{key:"enable",value:function(){e.disabled=!1}},{key:"disable",value:function(){e.disabled=!0}}]),e}();na(Ha,"disabled",!0);for(var Oa=function(){function e(t,n,i){$r(this,e),this.videoTrack=t,this.audioTrack=n;var r=/Chrome\/([^.]+)/.exec(navigator.userAgent);this.forceFirstIDR=r&&Number(r[1])<50,this.log=new Ha("FMP4Remuxer",!i||!i.openLog||!i.openLog)}return ta(e,[{key:"remux",value:function(){var e,t,n,i,r,a=arguments.length>0&&void 0!==arguments[0]&&arguments[0],l=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},U=this.videoTrack,F=this.audioTrack,o=U.exist(),d=F.exist(),Q=[];return a&&(l&&l.initMerge?(o&&Q.push(this.videoTrack),d&&Q.push(this.audioTrack),n=ja.initSegment(Q)):(o&&(e=ja.initSegment([this.videoTrack])),d&&(t=ja.initSegment([this.audioTrack])))),o&&U.hasSample()&&(i=this._remuxVideo()),d&&F.hasSample()&&(r=this._remuxAudio()),U.samples=[],F.samples=[],{initSegment:n,videoInitSegment:e,audioInitSegment:t,videoSegment:i,audioSegment:r}}},{key:"_remuxVideo",value:function(){var e=this.videoTrack;this.forceFirstIDR&&(e.samples[0].flag={dependsOn:2,isNonSyncSample:0});var t=e.samples,n=0;t.forEach((function(e){n+=e.units.reduce((function(e,t){return e+t.byteLength}),0),n+=4*e.units.length}));for(var i,r=new Uint8Array(n),a=new DataView(r.buffer),l=function(e,n){n=t[U];var l=0;n.units.forEach((function(t){a.setUint32(e,t.byteLength),e+=4,r.set(t,e),e+=t.byteLength,l+=4+t.byteLength})),n.size=l,o=e,i=n},U=0,F=t.length,o=0;U<F;U++)l(o,i);var d=ja.mdat(r);return ka(ja.moof([e]),d)}},{key:"_remuxAudio",value:function(){var e=this.audioTrack,t=new Uint8Array(e.samples.reduce((function(e,t){return e+t.size}),0));e.samples.reduce((function(e,n){return t.set(n.data,e),e+n.size}),0);var n=ja.mdat(t);return ka(ja.moof([e]),n)}},{key:"reset",value:function(){this.videoTrack.reset(),this.audioTrack.reset()}}]),e}(),za=function(){return N((function e(){b(this,e)}),[{key:"mixIn",value:function(e){return Object.assign(this,e)}},{key:"clone",value:function(){var e=new this.constructor;return Object.assign(e,this),e}}],[{key:"create",value:function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return function(e,t,n){if(X())return Reflect.construct.apply(null,arguments);var i=[null];i.push.apply(i,t);var r=new(e.bind.apply(e,i));return n&&Y(r,n.prototype),r}(this,t)}}])}(),Aa=function(e){function t(){var e,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:4*n.length;b(this,t),e=E(this,t);var r=n;if(r instanceof ArrayBuffer&&(r=new Uint8Array(r)),(r instanceof Int8Array||r instanceof Uint8ClampedArray||r instanceof Int16Array||r instanceof Uint16Array||r instanceof Int32Array||r instanceof Uint32Array||r instanceof Float32Array||r instanceof Float64Array)&&(r=new Uint8Array(r.buffer,r.byteOffset,r.byteLength)),r instanceof Uint8Array){for(var a=r.byteLength,l=[],U=0;U<a;U+=1)l[U>>>2]|=r[U]<<24-U%4*8;e.words=l,e.sigBytes=a}else e.words=n,e.sigBytes=i;return e}return x(t,e),N(t,[{key:"toString",value:function(){return(arguments.length>0&&void 0!==arguments[0]?arguments[0]:qa).stringify(this)}},{key:"concat",value:function(e){var t=this.words,n=e.words,i=this.sigBytes,r=e.sigBytes;if(this.clamp(),i%4)for(var a=0;a<r;a+=1){var l=n[a>>>2]>>>24-a%4*8&255;t[i+a>>>2]|=l<<24-(i+a)%4*8}else for(var U=0;U<r;U+=4)t[i+U>>>2]=n[U>>>2];return this.sigBytes+=r,this}},{key:"clamp",value:function(){var e=this.words,t=this.sigBytes;e[t>>>2]&=4294967295<<32-t%4*8,e.length=Math.ceil(t/4)}},{key:"clone",value:function(){var e=K(t,"clone",this,1).call(this);return e.words=this.words.slice(0),e}}],[{key:"random",value:function(e){for(var n,i=[],r=function(e){var t=e,n=987654321,i=4294967295;return function(){var e=((n=36969*(65535&n)+(n>>16)&i)<<16)+(t=18e3*(65535&t)+(t>>16)&i)&i;return e/=4294967296,(e+=.5)*(Math.random()>.5?1:-1)}},a=0;a<e;a+=4){var l=r(4294967296*(n||Math.random()));n=987654071*l(),i.push(4294967296*l()|0)}return new t(i,e)}}])}(za),qa={stringify:function(e){for(var t=e.words,n=e.sigBytes,i=[],r=0;r<n;r+=1){var a=t[r>>>2]>>>24-r%4*8&255;i.push((a>>>4).toString(16)),i.push((15&a).toString(16))}return i.join("")},parse:function(e){for(var t=e.length,n=[],i=0;i<t;i+=2)n[i>>>3]|=parseInt(e.substr(i,2),16)<<24-i%8*4;return new Aa(n,t/2)}},$a=function(e){for(var t=e.length,n=[],i=0;i<t;i+=1)n[i>>>2]|=(255&e.charCodeAt(i))<<24-i%4*8;return new Aa(n,t)},el=function(e){return $a(unescape(encodeURIComponent(e)))},tl=function(e){function t(){var e;return b(this,t),(e=E(this,t))._minBufferSize=0,e}return x(t,e),N(t,[{key:"reset",value:function(){this._data=new Aa,this._nDataBytes=0}},{key:"_append",value:function(e){var t=e;"string"==typeof t&&(t=el(t)),this._data.concat(t),this._nDataBytes+=t.sigBytes}},{key:"_process",value:function(e){var t,n=this._data,i=this.blockSize,r=n.words,a=n.sigBytes,l=a/(4*i),U=(l=e?Math.ceil(l):Math.max((0|l)-this._minBufferSize,0))*i,F=Math.min(4*U,a);if(U){for(var o=0;o<U;o+=i)this._doProcessBlock(r,o);t=r.splice(0,U),n.sigBytes-=F}return new Aa(t,F)}},{key:"clone",value:function(){var e=K(t,"clone",this,1).call(this);return e._data=this._data.clone(),e}}])}(za),nl=function(e){function t(e){var n;return b(this,t),(n=E(this,t)).blockSize=16,n.cfg=Object.assign(new za,e),n.reset(),n}return x(t,e),N(t,[{key:"reset",value:function(){K(t,"reset",this,1).call(this),this._doReset()}},{key:"update",value:function(e){return this._append(e),this._process(),this}},{key:"finalize",value:function(e){return e&&this._append(e),this._doFinalize()}}],[{key:"_createHelper",value:function(e){return function(t,n){return new e(n).finalize(t)}}},{key:"_createHmacHelper",value:function(e){return function(t,n){return new il(e,n).finalize(t)}}}])}(tl),il=function(e){function t(e,n){var i;b(this,t),i=E(this,t);var r=new e;i._hasher=r;var a=n;"string"==typeof a&&(a=el(a));var l=r.blockSize,U=4*l;a.sigBytes>U&&(a=r.finalize(n)),a.clamp();var F=a.clone();i._oKey=F;var o=a.clone();i._iKey=o;for(var d=F.words,Q=o.words,s=0;s<l;s+=1)d[s]^=1549556828,Q[s]^=909522486;return F.sigBytes=U,o.sigBytes=U,i.reset(),i}return x(t,e),N(t,[{key:"reset",value:function(){var e=this._hasher;e.reset(),e.update(this._iKey)}},{key:"update",value:function(e){return this._hasher.update(e),this}},{key:"finalize",value:function(e){var t=this._hasher,n=t.finalize(e);return t.reset(),t.finalize(this._oKey.clone().concat(n))}}])}(za),rl={stringify:function(e){var t=e.words,n=e.sigBytes,i=this._map;e.clamp();for(var r=[],a=0;a<n;a+=3)for(var l=(t[a>>>2]>>>24-a%4*8&255)<<16|(t[a+1>>>2]>>>24-(a+1)%4*8&255)<<8|t[a+2>>>2]>>>24-(a+2)%4*8&255,U=0;U<4&&a+.75*U<n;U+=1)r.push(i.charAt(l>>>6*(3-U)&63));var F=i.charAt(64);if(F)for(;r.length%4;)r.push(F);return r.join("")},parse:function(e){var t=e.length,n=this._map,i=this._reverseMap;if(!i){this._reverseMap=[],i=this._reverseMap;for(var r=0;r<n.length;r+=1)i[n.charCodeAt(r)]=r}var a=n.charAt(64);if(a){var l=e.indexOf(a);-1!==l&&(t=l)}return function(e,t,n){for(var i=[],r=0,a=0;a<t;a+=1)if(a%4){var l=n[e.charCodeAt(a-1)]<<a%4*2|n[e.charCodeAt(a)]>>>6-a%4*2;i[r>>>2]|=l<<24-r%4*8,r+=1}return Aa.create(i,r)}(e,t,i)},_map:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="},al=[],ll=0;ll<64;ll+=1)al[ll]=4294967296*Math.abs(Math.sin(ll+1))|0;var Ul=function(e,t,n,i,r,a,l){var U=e+(t&n|~t&i)+r+l;return(U<<a|U>>>32-a)+t},Fl=function(e,t,n,i,r,a,l){var U=e+(t&i|n&~i)+r+l;return(U<<a|U>>>32-a)+t},ol=function(e,t,n,i,r,a,l){var U=e+(t^n^i)+r+l;return(U<<a|U>>>32-a)+t},dl=function(e,t,n,i,r,a,l){var U=e+(n^(t|~i))+r+l;return(U<<a|U>>>32-a)+t},Ql=function(e){function t(){return b(this,t),E(this,t,arguments)}return x(t,e),N(t,[{key:"_doReset",value:function(){this._hash=new Aa([1732584193,4023233417,2562383102,271733878])}},{key:"_doProcessBlock",value:function(e,t){for(var n=e,i=0;i<16;i+=1){var r=t+i,a=e[r];n[r]=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8)}var l=this._hash.words,U=n[t+0],F=n[t+1],o=n[t+2],d=n[t+3],Q=n[t+4],s=n[t+5],c=n[t+6],u=n[t+7],B=n[t+8],R=n[t+9],h=n[t+10],V=n[t+11],p=n[t+12],m=n[t+13],Z=n[t+14],S=n[t+15],J=l[0],W=l[1],f=l[2],y=l[3];J=Ul(J,W,f,y,U,7,al[0]),y=Ul(y,J,W,f,F,12,al[1]),f=Ul(f,y,J,W,o,17,al[2]),W=Ul(W,f,y,J,d,22,al[3]),J=Ul(J,W,f,y,Q,7,al[4]),y=Ul(y,J,W,f,s,12,al[5]),f=Ul(f,y,J,W,c,17,al[6]),W=Ul(W,f,y,J,u,22,al[7]),J=Ul(J,W,f,y,B,7,al[8]),y=Ul(y,J,W,f,R,12,al[9]),f=Ul(f,y,J,W,h,17,al[10]),W=Ul(W,f,y,J,V,22,al[11]),J=Ul(J,W,f,y,p,7,al[12]),y=Ul(y,J,W,f,m,12,al[13]),f=Ul(f,y,J,W,Z,17,al[14]),W=Ul(W,f,y,J,S,22,al[15]),J=Fl(J,W,f,y,F,5,al[16]),y=Fl(y,J,W,f,c,9,al[17]),f=Fl(f,y,J,W,V,14,al[18]),W=Fl(W,f,y,J,U,20,al[19]),J=Fl(J,W,f,y,s,5,al[20]),y=Fl(y,J,W,f,h,9,al[21]),f=Fl(f,y,J,W,S,14,al[22]),W=Fl(W,f,y,J,Q,20,al[23]),J=Fl(J,W,f,y,R,5,al[24]),y=Fl(y,J,W,f,Z,9,al[25]),f=Fl(f,y,J,W,d,14,al[26]),W=Fl(W,f,y,J,B,20,al[27]),J=Fl(J,W,f,y,m,5,al[28]),y=Fl(y,J,W,f,o,9,al[29]),f=Fl(f,y,J,W,u,14,al[30]),W=Fl(W,f,y,J,p,20,al[31]),J=ol(J,W,f,y,s,4,al[32]),y=ol(y,J,W,f,B,11,al[33]),f=ol(f,y,J,W,V,16,al[34]),W=ol(W,f,y,J,Z,23,al[35]),J=ol(J,W,f,y,F,4,al[36]),y=ol(y,J,W,f,Q,11,al[37]),f=ol(f,y,J,W,u,16,al[38]),W=ol(W,f,y,J,h,23,al[39]),J=ol(J,W,f,y,m,4,al[40]),y=ol(y,J,W,f,U,11,al[41]),f=ol(f,y,J,W,d,16,al[42]),W=ol(W,f,y,J,c,23,al[43]),J=ol(J,W,f,y,R,4,al[44]),y=ol(y,J,W,f,p,11,al[45]),f=ol(f,y,J,W,S,16,al[46]),W=ol(W,f,y,J,o,23,al[47]),J=dl(J,W,f,y,U,6,al[48]),y=dl(y,J,W,f,u,10,al[49]),f=dl(f,y,J,W,Z,15,al[50]),W=dl(W,f,y,J,s,21,al[51]),J=dl(J,W,f,y,p,6,al[52]),y=dl(y,J,W,f,d,10,al[53]),f=dl(f,y,J,W,h,15,al[54]),W=dl(W,f,y,J,F,21,al[55]),J=dl(J,W,f,y,B,6,al[56]),y=dl(y,J,W,f,S,10,al[57]),f=dl(f,y,J,W,c,15,al[58]),W=dl(W,f,y,J,m,21,al[59]),J=dl(J,W,f,y,Q,6,al[60]),y=dl(y,J,W,f,V,10,al[61]),f=dl(f,y,J,W,o,15,al[62]),W=dl(W,f,y,J,R,21,al[63]),l[0]=l[0]+J|0,l[1]=l[1]+W|0,l[2]=l[2]+f|0,l[3]=l[3]+y|0}},{key:"_doFinalize",value:function(){var e=this._data,t=e.words,n=8*this._nDataBytes,i=8*e.sigBytes;t[i>>>5]|=128<<24-i%32;var r=Math.floor(n/4294967296),a=n;t[15+(i+64>>>9<<4)]=16711935&(r<<8|r>>>24)|4278255360&(r<<24|r>>>8),t[14+(i+64>>>9<<4)]=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),e.sigBytes=4*(t.length+1),this._process();for(var l=this._hash,U=l.words,F=0;F<4;F+=1){var o=U[F];U[F]=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8)}return l}},{key:"clone",value:function(){var e=K(t,"clone",this,1).call(this);return e._hash=this._hash.clone(),e}}])}(nl);nl._createHelper(Ql),nl._createHmacHelper(Ql);var sl=function(e){function t(e){var n;return b(this,t),(n=E(this,t)).cfg=Object.assign(new za,{keySize:4,hasher:Ql,iterations:1},e),n}return x(t,e),N(t,[{key:"compute",value:function(e,t){for(var n,i=this.cfg,r=i.hasher.create(),a=Aa.create(),l=a.words,U=i.keySize,F=i.iterations;l.length<U;){n&&r.update(n),n=r.update(e).finalize(t),r.reset();for(var o=1;o<F;o+=1)n=r.finalize(n),r.reset();a.concat(n)}return a.sigBytes=4*U,a}}])}(za),cl=function(e){function t(e,n,i){var r;return b(this,t),(r=E(this,t)).cfg=Object.assign(new za,i),r._xformMode=e,r._key=n,r.reset(),r}return x(t,e),N(t,[{key:"reset",value:function(){K(t,"reset",this,1).call(this),this._doReset()}},{key:"process",value:function(e){return this._append(e),this._process()}},{key:"finalize",value:function(e){return e&&this._append(e),this._doFinalize()}}],[{key:"createEncryptor",value:function(e,t){return this.create(this._ENC_XFORM_MODE,e,t)}},{key:"createDecryptor",value:function(e,t){return this.create(this._DEC_XFORM_MODE,e,t)}},{key:"_createHelper",value:function(e){var t=function(e){return"string"==typeof e?Jl:Zl};return{encrypt:function(n,i,r){return t(i).encrypt(e,n,i,r)},decrypt:function(n,i,r){return t(i).decrypt(e,n,i,r)}}}}])}(tl);cl._ENC_XFORM_MODE=1,cl._DEC_XFORM_MODE=2,cl.keySize=4,cl.ivSize=4;var ul=function(e){function t(e,n){var i;return b(this,t),(i=E(this,t))._cipher=e,i._iv=n,i}return x(t,e),N(t,null,[{key:"createEncryptor",value:function(e,t){return this.Encryptor.create(e,t)}},{key:"createDecryptor",value:function(e,t){return this.Decryptor.create(e,t)}}])}(za);function Bl(e,t,n){var i,r=e,a=this._iv;a?(i=a,this._iv=void 0):i=this._prevBlock;for(var l=0;l<n;l+=1)r[t+l]^=i[l]}var Rl=function(e){function t(){return b(this,t),E(this,t,arguments)}return x(t,e),N(t)}(ul);Rl.Encryptor=function(e){function t(){return b(this,t),E(this,t,arguments)}return x(t,e),N(t,[{key:"processBlock",value:function(e,t){var n=this._cipher,i=n.blockSize;Bl.call(this,e,t,i),n.encryptBlock(e,t),this._prevBlock=e.slice(t,t+i)}}])}(Rl),Rl.Decryptor=function(e){function t(){return b(this,t),E(this,t,arguments)}return x(t,e),N(t,[{key:"processBlock",value:function(e,t){var n=this._cipher,i=n.blockSize,r=e.slice(t,t+i);n.decryptBlock(e,t),Bl.call(this,e,t,i),this._prevBlock=r}}])}(Rl);var hl={pad:function(e,t){for(var n=4*t,i=n-e.sigBytes%n,r=i<<24|i<<16|i<<8|i,a=[],l=0;l<i;l+=4)a.push(r);var U=Aa.create(a,i);e.concat(U)},unpad:function(e){var t=e,n=255&t.words[t.sigBytes-1>>>2];t.sigBytes-=n}},Vl=function(e){function t(e,n,i){var r;return b(this,t),(r=E(this,t,[e,n,Object.assign({mode:Rl,padding:hl},i)])).blockSize=4,r}return x(t,e),N(t,[{key:"reset",value:function(){var e;K(t,"reset",this,1).call(this);var n=this.cfg,i=n.iv,r=n.mode;this._xformMode===this.constructor._ENC_XFORM_MODE?e=r.createEncryptor:(e=r.createDecryptor,this._minBufferSize=1),this._mode=e.call(r,this,i&&i.words),this._mode.__creator=e}},{key:"_doProcessBlock",value:function(e,t){this._mode.processBlock(e,t)}},{key:"_doFinalize",value:function(){var e,t=this.cfg.padding;return this._xformMode===this.constructor._ENC_XFORM_MODE?(t.pad(this._data,this.blockSize),e=this._process(!0)):(e=this._process(!0),t.unpad(e)),e}}])}(cl),pl=function(e){function t(e){var n;return b(this,t),(n=E(this,t)).mixIn(e),n}return x(t,e),N(t,[{key:"toString",value:function(e){return(e||this.formatter).stringify(this)}}])}(za),ml={stringify:function(e){var t=e.ciphertext,n=e.salt;return(n?Aa.create([1398893684,1701076831]).concat(n).concat(t):t).toString(rl)},parse:function(e){var t,n=rl.parse(e),i=n.words;return 1398893684===i[0]&&1701076831===i[1]&&(t=Aa.create(i.slice(2,4)),i.splice(0,4),n.sigBytes-=16),pl.create({ciphertext:n,salt:t})}},Zl=function(e){function t(){return b(this,t),E(this,t,arguments)}return x(t,e),N(t,null,[{key:"encrypt",value:function(e,t,n,i){var r=Object.assign(new za,this.cfg,i),a=e.createEncryptor(n,r),l=a.finalize(t),U=a.cfg;return pl.create({ciphertext:l,key:n,iv:U.iv,algorithm:e,mode:U.mode,padding:U.padding,blockSize:a.blockSize,formatter:r.format})}},{key:"decrypt",value:function(e,t,n,i){var r=t,a=Object.assign(new za,this.cfg,i);return r=this._parse(r,a.format),e.createDecryptor(n,a).finalize(r.ciphertext)}},{key:"_parse",value:function(e,t){return"string"==typeof e?t.parse(e,this):e}}])}(za);Zl.cfg=Object.assign(new za,{format:ml});var Sl={execute:function(e,t,n,i){var r=i;r||(r=Aa.random(8));var a=sl.create({keySize:t+n}).compute(e,r),l=Aa.create(a.words.slice(t),4*n);return a.sigBytes=4*t,pl.create({key:a,iv:l,salt:r})}},Jl=function(e){function t(){return b(this,t),E(this,t,arguments)}return x(t,e),N(t,null,[{key:"encrypt",value:function(e,t,n,i){var r=Object.assign(new za,this.cfg,i),a=r.kdf.execute(n,e.keySize,e.ivSize);r.iv=a.iv;var l=Zl.encrypt.call(this,e,t,a.key,r);return l.mixIn(a),l}},{key:"decrypt",value:function(e,t,n,i){var r=t,a=Object.assign(new za,this.cfg,i);r=this._parse(r,a.format);var l=a.kdf.execute(n,e.keySize,e.ivSize,r.salt);return a.iv=l.iv,Zl.decrypt.call(this,e,r,l.key,a)}}])}(Zl);Jl.cfg=Object.assign(Zl.cfg,{kdf:Sl});for(var Wl=[],fl=[],yl=[],kl=[],El=[],bl=[],vl=[],Nl=[],gl=[],Tl=[],Cl=[],Ll=0;Ll<256;Ll+=1)Cl[Ll]=Ll<128?Ll<<1:Ll<<1^283;for(var xl=0,Xl=0,Dl=0;Dl<256;Dl+=1){var Gl=Xl^Xl<<1^Xl<<2^Xl<<3^Xl<<4;Gl=Gl>>>8^255&Gl^99,Wl[xl]=Gl,fl[Gl]=xl;var Il=Cl[xl],Ml=Cl[Il],Yl=Cl[Ml],wl=257*Cl[Gl]^16843008*Gl;yl[xl]=wl<<24|wl>>>8,kl[xl]=wl<<16|wl>>>16,El[xl]=wl<<8|wl>>>24,bl[xl]=wl,wl=16843009*Yl^65537*Ml^257*Il^16843008*xl,vl[Gl]=wl<<24|wl>>>8,Nl[Gl]=wl<<16|wl>>>16,gl[Gl]=wl<<8|wl>>>24,Tl[Gl]=wl,xl?(xl=Il^Cl[Cl[Cl[Yl^Il]]],Xl^=Cl[Cl[Xl]]):xl=Xl=1}var Kl=[0,1,2,4,8,16,32,64,128,27,54],_l=function(e){function t(){return b(this,t),E(this,t,arguments)}return x(t,e),N(t,[{key:"_doReset",value:function(){var e;if(!this._nRounds||this._keyPriorReset!==this._key){this._keyPriorReset=this._key;var t=this._keyPriorReset,n=t.words,i=t.sigBytes/4;this._nRounds=i+6;var r=4*(this._nRounds+1);this._keySchedule=[];for(var a=this._keySchedule,l=0;l<r;l+=1)l<i?a[l]=n[l]:(e=a[l-1],l%i?i>6&&l%i==4&&(e=Wl[e>>>24]<<24|Wl[e>>>16&255]<<16|Wl[e>>>8&255]<<8|Wl[255&e]):(e=Wl[(e=e<<8|e>>>24)>>>24]<<24|Wl[e>>>16&255]<<16|Wl[e>>>8&255]<<8|Wl[255&e],e^=Kl[l/i|0]<<24),a[l]=a[l-i]^e);this._invKeySchedule=[];for(var U=this._invKeySchedule,F=0;F<r;F+=1){var o=r-F;e=F%4?a[o]:a[o-4],U[F]=F<4||o<=4?e:vl[Wl[e>>>24]]^Nl[Wl[e>>>16&255]]^gl[Wl[e>>>8&255]]^Tl[Wl[255&e]]}}}},{key:"encryptBlock",value:function(e,t){this._doCryptBlock(e,t,this._keySchedule,yl,kl,El,bl,Wl)}},{key:"decryptBlock",value:function(e,t){var n=e,i=n[t+1];n[t+1]=n[t+3],n[t+3]=i,this._doCryptBlock(n,t,this._invKeySchedule,vl,Nl,gl,Tl,fl),i=n[t+1],n[t+1]=n[t+3],n[t+3]=i}},{key:"_doCryptBlock",value:function(e,t,n,i,r,a,l,U){for(var F=e,o=this._nRounds,d=F[t]^n[0],Q=F[t+1]^n[1],s=F[t+2]^n[2],c=F[t+3]^n[3],u=4,B=1;B<o;B+=1){var R=i[d>>>24]^r[Q>>>16&255]^a[s>>>8&255]^l[255&c]^n[u];u+=1;var h=i[Q>>>24]^r[s>>>16&255]^a[c>>>8&255]^l[255&d]^n[u];u+=1;var V=i[s>>>24]^r[c>>>16&255]^a[d>>>8&255]^l[255&Q]^n[u];u+=1;var p=i[c>>>24]^r[d>>>16&255]^a[Q>>>8&255]^l[255&s]^n[u];u+=1,d=R,Q=h,s=V,c=p}var m=(U[d>>>24]<<24|U[Q>>>16&255]<<16|U[s>>>8&255]<<8|U[255&c])^n[u];u+=1;var Z=(U[Q>>>24]<<24|U[s>>>16&255]<<16|U[c>>>8&255]<<8|U[255&d])^n[u];u+=1;var S=(U[s>>>24]<<24|U[c>>>16&255]<<16|U[d>>>8&255]<<8|U[255&Q])^n[u];u+=1;var J=(U[c>>>24]<<24|U[d>>>16&255]<<16|U[Q>>>8&255]<<8|U[255&s])^n[u];u+=1,F[t]=m,F[t+1]=Z,F[t+2]=S,F[t+3]=J}}])}(Vl);_l.keySize=8;var Pl=Vl._createHelper(_l),jl=function(e){function t(){return b(this,t),E(this,t,arguments)}return x(t,e),N(t)}(ul);jl.Encryptor=function(e){function t(){return b(this,t),E(this,t,arguments)}return x(t,e),N(t,[{key:"processBlock",value:function(e,t){var n=e,i=this._cipher,r=i.blockSize,a=this._iv,l=this._counter;a&&(this._counter=a.slice(0),l=this._counter,this._iv=void 0);var U=l.slice(0);i.encryptBlock(U,0),l[r-1]=l[r-1]+1|0;for(var F=0;F<r;F+=1)n[t+F]^=U[F]}}])}(jl),jl.Decryptor=jl.Encryptor;var Hl={pad:function(){},unpad:function(){}},Ol={decryptWordArray:function(e,t,n){var i=qa.parse(t),r=qa.parse(Ca(n)),a=Aa.create(new Uint8Array(e)),l=Pl.decrypt(pl.create({ciphertext:a}),i,{iv:r,mode:jl,padding:Hl});return Ol.wordArrayToUint8Array(l)},wordArrayToUint8Array:function(e){for(var t=e.sigBytes,n=e.words,i=new Uint8Array(t),r=0,a=0;r!==t;){var l=n[a++];if(i[r++]=(4278190080&l)>>>24,r===t)break;if(i[r++]=(16711680&l)>>>16,r===t)break;if(i[r++]=(65280&l)>>>8,r===t)break;i[r++]=255&l}return i},decoderAESCTRData:function(e,t,n){if(e.videoSenc){var i=e.kidValue,r=e.videoSenc;e.samples.forEach((function(t,a){var l=r[a],U=t.data,F=[],o=[],d=l.InitializationVector;if(l.subsamples&&l.subsamples.length)l.subsamples.forEach((function(e){var t=e.BytesOfClearData+e.BytesOfProtectedData,n=U.slice(0,t);F.push(n.slice(0,e.BytesOfClearData)),o.push(n.slice(e.BytesOfClearData)),U=U.slice(t)}));else{var Q=t.size;F.push(U.slice(0,0)),o.push(U.slice(0,Q)),U=U.slice(Q)}var s=new _a;s.write.apply(s,o);var c=n?n(s.buffer,i,d):Ol.decryptWordArray(s.buffer,i,d),u=new _a;F.forEach((function(e,t){var n=o[t].length,i=c.slice(0,n);u.write(e),u.write(i),c=c.slice(n)})),e.samples[a].data=u.buffer}))}if(t.audioSenc){var a=t.kidValue,l=t.audioSenc;t.samples.forEach((function(e,i){var r=l[i],U=n?n(e.data,a,r.InitializationVector):Ol.decryptWordArray(e.data,a,r.InitializationVector);t.samples[i].data=U}))}}},zl=["stts","stsc","stsz","stco","co64","stss","ctts"],Al=function(){function e(t,n,i,r){var a,l,U=this;if($r(this,e),na(this,"_videoSamples",[]),na(this,"_audioSamples",[]),na(this,"_lastRemainBuffer",[]),na(this,"_lastRemainBufferStartPos",0),na(this,"videoMaxFrameIdx",-1),na(this,"audioMaxFrameIdx",-1),this.videoTrack=new ha,this.audioTrack=new Va,this.metadataTrack=i||new Za,this.videoSegmnents=t,this.audioSegmnents=n,this.log=new Ha("MP4Demuxer",!r||!r.openLog||!r.openLog),this.memoryOpt=null==r?void 0:r.memoryOpt,this.memoryOpt||(t&&t.forEach((function(e){var t;(t=U._videoSamples).push.apply(t,ra(e.frames))})),n&&n.forEach((function(e){var t;(t=U._audioSamples).push.apply(t,ra(e.frames))}))),(null===(a=this.videoSegmnents)||void 0===a?void 0:a.length)>0){var F=this.videoSegmnents[this.videoSegmnents.length-1].frames;this.videoMaxFrameIdx=F[F.length-1].index}if((null===(l=this.audioSegmnents)||void 0===l?void 0:l.length)>0){var o=this.audioSegmnents[this.audioSegmnents.length-1].frames;this.audioMaxFrameIdx=o[o.length-1].index}}return ta(e,[{key:"parseSamples",value:function(e){if(!e)throw new Error("moov is required");this.videoTrack.codec||this.audioTrack.codec||(Ga.moovToTrack(e,this.videoTrack,this.audioTrack),this.videoSenc=this.videoTrack.videoSenc,this.audioSenc=this.audioTrack.audioSenc,this.memoryOpt&&this.clearBoxEntries(e))}},{key:"demux",value:function(e,t,n,i,r){this.parseSamples(r);var a,l,U,F=this.videoTrack,o=this.audioTrack;F.samples=[],o.samples=[];var d={};if(n){var Q,s=0;if(this.memoryOpt&&this.videoSegmnents&&!(d=this.getFramePosByIdx("video",n[0])))throw new Error("cannot found video frame #".concat(n[0]));for(var c=d,u=c.frameIdx,B=c.segmentIdx,R=n[0],h=n[1];R<=h;R++){if(!this._videoSamples.length&&this.videoSegmnents){var V=this.getFrameInfo("video",B,u);a=V.sample,B=V.segmentIdx,u=V.frameIdx}else a=this._videoSamples[R];if(!a)throw new Error("cannot found video frame #".concat(R));U=a.offset-t,l=e.subarray(U,U+a.size),(Q=new pa("number"==typeof a.pts?a.pts:a.dts,a.dts)).duration=a.duration,Q.gopId=a.gopId,a.keyframe&&Q.setToKeyframe();for(var p=0,m=l.length-1;p<m;)s=va(l,p),p+=4,Q.units.push(l.subarray(p,p+s)),p+=s;F.samples.push(Q)}F.baseMediaDecodeTime=F.samples[0].dts}if(d={},i){if(this.memoryOpt&&this.audioSegmnents&&!(d=this.getFramePosByIdx("audio",i[0])))throw new Error("cannot found video frame #".concat(i[0]));for(var Z=d,S=Z.frameIdx,J=Z.segmentIdx,W=i[0],f=i[1];W<=f;W++){if(!this._audioSamples.length&&this.audioSegmnents){var y=this.getFrameInfo("audio",J,S);a=y.sample,J=y.segmentIdx,S=y.frameIdx}else a=this._audioSamples[W];if(!a)throw new Error("cannot found video frame #".concat(W));U=a.offset-t,l=e.subarray(U,U+a.size),o.samples.push(new ma(a.dts,l,a.duration))}o.baseMediaDecodeTime=o.samples[0].dts}return{videoTrack:F,audioTrack:o,metadataTrack:this.metadataTrack}}},{key:"demuxPart",value:function(e,t,n,i,r,a,l,U){if(this.parseSamples(r),this.videoTrack.useEME=a,this.audioTrack.useEME=a,this._lastRemainBuffer&&this._lastRemainBuffer.byteLength>0&&t>this._lastRemainBufferStartPos&&t<=this._lastRemainBufferStartPos+this._lastRemainBuffer.byteLength)for(var F=0;F<20;)try{var o=this._lastRemainBuffer.subarray(0,t-this._lastRemainBufferStartPos),d=new Uint8Array(e.byteLength+o.byteLength);d.set(o,0),d.set(new Uint8Array(e),o.byteLength),e=d,t-=o.byteLength,this._lastRemainBuffer=null,this._lastRemainBufferStartPos=0;break}catch(X){if(!(F<20))throw new Error("new Uint8Array error:,"+X.errorMessage);F++}var Q,s,c,u=this.videoTrack,B=this.audioTrack;u.samples=[],B.samples=[],u.videoSenc=null,B.audioSenc=null,(null==n?void 0:n[1])>this.videoMaxFrameIdx&&this.videoMaxFrameIdx>0&&(n[1]=this.videoMaxFrameIdx),(null==i?void 0:i[1])>this.audioMaxFrameIdx&&this.audioMaxFrameIdx>0&&(i[1]=this.audioMaxFrameIdx);var R=0,h=0,V={},p=e.byteLength+t;if(n.length>0){var m;if(this.memoryOpt&&this.videoSegmnents&&!(V=this.getFramePosByIdx("video",n[0])))throw new Error("cannot found video frame #".concat(n[0]));for(var Z=V,S=Z.frameIdx,J=Z.segmentIdx,W=n[0];W<=n[1];W++){if(!this._videoSamples.length&&this.videoSegmnents){var f=this.getFrameInfo("video",J,S);Q=f.sample,J=f.segmentIdx,S=f.frameIdx}else Q=this._videoSamples[W];if(!Q)throw new Error("cannot found video frame #".concat(W));if(this.memoryOpt&&Q.offset+Q.size>p)break;Q.offset>=t&&Q.offset+Q.size<=p&&(R=(c=Q.offset-t)+Q.size,s=e.subarray(c,R),(m=new pa("number"==typeof Q.pts?Q.pts:Q.dts,Q.dts)).duration=Q.duration,m.gopId=Q.gopId,m.sampleOffset=Q.index,Q.keyframe&&m.setToKeyframe(),m.data=s,m.size=Q.size,u.samples.push(m))}u.samples.length>0&&(u.gopId=u.samples[0].gopId,u.baseMediaDecodeTime=u.samples[0].dts,u.startPts=u.samples[0].pts/u.timescale,u.endPts=u.samples[u.samples.length-1].pts/u.timescale,u.startDts=u.samples[0].dts/u.timescale,u.endDts=u.samples[u.samples.length-1].dts/u.timescale,this.videoSenc&&(u.videoSenc=this.videoSenc.slice(u.samples[0].sampleOffset,u.samples[0].sampleOffset+u.samples.length),u.kidValue=l))}if(i.length>0){if(this.memoryOpt&&this.audioSegmnents&&!(V=this.getFramePosByIdx("audio",i[0])))throw new Error("cannot found video frame #".concat(i[0]));for(var y=V,k=y.frameIdx,E=y.segmentIdx,b=i[0];b<=i[1];b++){if(!this._audioSamples.length&&this.audioSegmnents){var v=this.getFrameInfo("audio",E,k);Q=v.sample,E=v.segmentIdx,k=v.frameIdx}else Q=this._audioSamples[b];if(!Q)throw new Error("cannot found video frame #".concat(b));if(this.memoryOpt&&Q.offset+Q.size>p)break;Q.offset>=t&&Q.offset+Q.size<=p&&(h=(c=Q.offset-t)+Q.size,s=e.subarray(c,h),B.samples.push(new ma(Q.dts,s,Q.duration,Q.index)))}B.samples.length>0&&(B.gopId=B.samples[0].gopId||u.gopId,B.baseMediaDecodeTime=B.samples[0].dts,B.startPts=B.samples[0].pts/B.timescale,B.endPts=B.samples[B.samples.length-1].pts/B.timescale,this.audioSenc&&(B.audioSenc=this.audioSenc.slice(B.samples[0].sampleOffset,B.samples[0].sampleOffset+B.samples.length),B.kidValue=l))}this.decoderData(u,B,U);for(var N=0,g=0;g<u.samples.length;g++)for(var T=0,C=u.samples[g].data,L=C.length-1;T<L;)N=va(C,T),T+=4,u.samples[g].units.push(C.subarray(T,T+N)),T+=N;var x=Math.max(R,h);return this._lastRemainBuffer=e.subarray(x),this._lastRemainBuffer.byteLength>0?this._lastRemainBufferStartPos=t+e.byteLength-this._lastRemainBuffer.byteLength:this._lastRemainBufferStartPos=0,{videoTrack:u,audioTrack:B,metadataTrack:this.metadataTrack,lastRemainBufferInfo:{data:this._lastRemainBuffer,pos:this._lastRemainBufferStartPos}}}},{key:"setLastRemainBufferInfo",value:function(e,t){this._lastRemainBuffer=e,this._lastRemainBufferStartPos=t}},{key:"reset",value:function(){this._lastRemainBuffer=null,this._lastRemainBufferStartPos=0,this.videoTrack.reset(),this.audioTrack.reset(),this.metadataTrack.reset()}},{key:"decoderData",value:function(e,t,n){e.useEME||t.useEME||Ol.decoderAESCTRData(e,t,n)}},{key:"getFramePosByIdx",value:function(e,t){var n="video"===e?this.videoSegmnents:this.audioSegmnents;if(!n||null==n||!n.length)return null;for(var i,r=0,a=0;a<n.length;a++){var l,U;if(i=n[a].frames,t<=(null===(l=n[a].frames)||void 0===l?void 0:l[(null===(U=i)||void 0===U?void 0:U.length)-1].index)){r=a;break}}return{frameIdx:i.findIndex((function(e){return e.index===t})),segmentIdx:r}}},{key:"getFrameInfo",value:function(e,t,n){var i,r,a,l,U="video"===e?this.videoSegmnents:this.audioSegmnents;return U?n<(null===(i=U[t])||void 0===i||null===(r=i.frames)||void 0===r?void 0:r.length)?{sample:null===(a=U[t])||void 0===a?void 0:a.frames[n],segmentIdx:t,frameIdx:n+1}:{sample:null===(l=U[t+1])||void 0===l?void 0:l.frames[0],segmentIdx:t+1,frameIdx:1}:{}}},{key:"clearBoxEntries",value:function(e){this.memoryOpt&&e.trak.forEach((function(e){zl.forEach((function(t){var n=e.mdia.minf.stbl[t];n&&(n.entries&&(n.entries=null),n.entrySizes&&(n.entrySizes=null))}))}))}}],[{key:"probe",value:function(e){return Ga.probe(e)}}]),e}();var ql=wi((function e(t,n){Mi(this,e),this.type="file",this.message=t,this.data=n})),$l=function(){function e(){Mi(this,e),Ki(this,"_data",Object.create(null))}return wi(e,[{key:"set",value:function(e,t){this._data[e]=t}},{key:"get",value:function(e){return this._data[e]}},{key:"clear",value:function(){this._data=Object.create(null)}}]),e}(),eU=function(){function e(){Mi(this,e),this.frames=[],this.dur=0,this.minPts=Number.MAX_VALUE,this.maxPts=0}return wi(e,[{key:"appendFrame",value:function(e){this.frames.push(e),this.dur+=e.duration}},{key:"calMinMaxPts",value:function(e){e.pts<this.minPts&&(this.minPts=e.pts);var t=e.pts+e.duration;t>this.maxPts&&(this.maxPts=t)}}]),e}();function tU(e,t){var n=t.segmentDuration,i=e.trak;if(i&&i.length){var r=i.find((function(e){var t,n;return"vide"===(null===(t=e.mdia)||void 0===t||null===(n=t.hdlr)||void 0===n?void 0:n.handlerType)})),a=i.find((function(e){var t,n;return"soun"===(null===(t=e.mdia)||void 0===t||null===(n=t.hdlr)||void 0===n?void 0:n.handlerType)}));if(r||a){var l,U=[],F=[];return r&&(l=(U=nU("video",r,n,t)).map((function(e){return e.duration}))),a&&(F=nU("audio",a,n,t,l,U)),{videoSegments:U,audioSegments:F}}}}function nU(e,t,n,i){var r,a,l,U,F,o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:[],d=arguments.length>5?arguments[5]:void 0,Q=i.fixEditListOffset,s=i.fixEditListOffsetThreshold,c=i.audioGroupingStrategy,u=i.memoryOpt,B=null===(r=t.mdia)||void 0===r||null===(a=r.minf)||void 0===a?void 0:a.stbl;if(!B)return[];var R=null===(l=t.mdia.mdhd)||void 0===l?void 0:l.timescale,h=B.stts,V=B.stsc,p=B.stsz,m=B.stco,Z=B.stss,S=B.ctts;if(!(R&&h&&V&&p&&m&&("video"!==e||Z)))return[];var J=0,W=null===(U=t.edts)||void 0===U||null===(F=U.elst)||void 0===F?void 0:F.entries;if(Q&&function(){var e=!0,t=navigator.userAgent||"";if(/Chrome/gi.test(t)&&!/Edge\//gi.test(t)){var n=t.match(/Chrome\/(\d+)/i),i=n?parseInt(n[1],10):0;e=!!i&&i>=75}return e}()&&Array.isArray(W)&&W.length>0){var f=W[0].media_time;f>0&&f<(s?s*R:5*R)&&(J=f)}var y,k,E=[],b=[],v=[],N=[],g=[],T=V.entries,C=m.entries,L=p.entrySizes,x=null==Z?void 0:Z.entries,X=null==S?void 0:S.entries,D=[],G={};u||(X&&X.forEach((function(e){for(var t=e.count,n=e.offset,i=0;i<t;i++)D.push(n)})),x&&x.forEach((function(e){G[e-1]=!0})));var I,M=0,Y=0,w=0,K=0,_=T.length>0?T[0].samplesPerChunk:0,P=T.length>1&&T[1]?T[1].firstChunk-1:1/0,j=0,H=-1,O=!1,z={};(null==X?void 0:X.length)>0&&J>0&&(j-=J,O=!0),t.editListApplied=O,u&&(I=null==x?void 0:x.shift()),h.entries.forEach((function(e){var t=e.count,n=e.delta;k=n;for(var i=0;i<t;i++){if(y={dts:j,duration:k,size:L[M]||p.sampleSize,offset:C[Y]+K,index:M},X&&(u?(iU(X,M,z),y.pts=j+((null==z?void 0:z.offset)||0)):D&&M<D.length&&(y.pts=j+D[M])),0===J&&0===M&&(y.pts=0),void 0===y.pts&&(y.pts=y.dts),x){if(u?M+1===I&&(y.keyframe=!0,I=x.shift()):y.keyframe=G[M],y.keyframe)if(H++,u){var r=new eU;r.appendFrame(y),b.push(r)}else b.push([y]),v.push(y.duration);else u?b[b.length-1].appendFrame(y):(b[b.length-1].push(y),v[b.length-1]+=y.duration);y.gopId=H,u&&b[b.length-1].calMinMaxPts(y)}if(!u)if(y.keyframe?N[N.length]=y.pts:y.pts<N[b.length-1]&&(N[b.length-1]=y.pts),y.keyframe)g[g.length]=y.index;else if(b.length>0&&void 0!==g[b.length-1]){var a,l=null===(a=E[g[b.length-1]])||void 0===a?void 0:a.pts;void 0!==l&&y.pts>l&&(g[b.length-1]=y.index)}E[E.length]=y,j+=n,++M<_?K+=y.size:(Y++,K=0,Y>=P&&(w++,P=T[w+1]?T[w+1].firstChunk-1:1/0),_+=T[w].samplesPerChunk)}}));var A=E.length;if(!A||Z&&!E[0].keyframe)return[];var q,$,ee=[],te=[],ne=0,ie=0,re=0,ae=0,le=function(e,t,n){(q=te[te.length-1],u?(re=(null==b?void 0:b.length)>0?b[t].minPts:te[0].pts,ae=(null==b?void 0:b.length)>0?b[n].maxPts:q.pts+q.duration):(re=N[t],$=E[g[n]],ae=$.pts+$.duration),0===ee.length)&&(e=(ae-re)/R);ee.push({index:ee.length,startTime:re/R,endTime:ae/R,duration:e,range:[te[0].offset,q.offset+q.size-1],frames:te}),1!==c&&(ne=0),te=[]},Ue=0;if(Z)for(var Fe=n*R,oe=0,de=b.length;oe<de;oe++){var Qe,se;if(u)ne+=b[oe].dur,(Qe=te).push.apply(Qe,Ai(b[oe].frames));else ne+=v[oe],(se=te).push.apply(se,Ai(b[oe]));oe+1<de?(0===oe||ne>Fe)&&(le(ne/R,Ue,oe),ne=0,Ue=oe+1):(le(ne/R,Ue,oe),ne=0,Ue=oe+1)}else{u||(N=[],g=[]);var ce=o[0]||n;if(1===c)for(var ue,Be=0;Be<A;Be++){var Re=E[Be],he=E[Be+1],Ve=Be===A-1;te.push(Re),ne+=Re.duration;var pe=ue||ne/R;ue=(he?ne+he.duration:0)/R,(Ve||(d[ee.length]?ue>d[ee.length].endTime:ue-te[0].pts/R>=ce))&&(u||(N.push(te[0].pts),g.push(te[te.length-1].index)),le(pe,ee.length,ee.length),ce=o[ee.length]||n)}else for(var me,Ze=0;Ze<A;Ze++){var Se=E[Ze],Je=E[Ze+1],We=Ze===A-1;te.push(Se),ne+=Se.duration;var fe=me||ne/R;me=(Je?ne+Je.duration:0)/R,(We||me+ie>=ce)&&(ie+=2===c?ne/R-ce:me-ce,u||(N.push(te[0].pts),g.push(te[te.length-1].index)),le(fe,ee.length,ee.length),ce=o[ee.length]||n)}}return ee}function iU(e,t,n){n.offset=0;var i=(null==n?void 0:n.beforeFrameNum)||0,r=(null==n?void 0:n.usedCttsIdx)||0;if(!e||(null==e?void 0:e.length)<=0||(null==n?void 0:n.usedCttsIdx)>=e.length)n.offset=0,n.usedCttsIdx=r,n.beforeFrameNum=i;else{var a=e[r];if(t<i+((null==a?void 0:a.count)||1))n.offset=(null==a?void 0:a.offset)||0;else{var l=e[++r];l?(n.offset=l.offset||0,n.beforeFrameNum=i+a.count):(n.offset=0,n.beforeFrameNum=i+1),n.usedCttsIdx=r}}}function rU(e){var t="",n="",i=0,r=0,a=0,l=0,U=0,F=0,o=0;e.mvhd&&(U=e.mvhd.duration/e.mvhd.timescale);var d=e.trak;if(d){var Q,s,c,u,B,R,h,V,p,m,Z,S,J,W,f,y,k,E=d.find((function(e){var t,n;return"vide"===(null===(t=e.mdia)||void 0===t||null===(n=t.hdlr)||void 0===n?void 0:n.handlerType)})),b=d.find((function(e){var t,n;return"soun"===(null===(t=e.mdia)||void 0===t||null===(n=t.hdlr)||void 0===n?void 0:n.handlerType)})),v=null;if(E)if(v=null===(s=E.mdia)||void 0===s||null===(c=s.minf)||void 0===c||null===(u=c.stbl)||void 0===u?void 0:u.stsd.entries[0])if(i=v.width,r=v.height,F=null===(B=E.mdia)||void 0===B||null===(R=B.mdhd)||void 0===R?void 0:R.timescale,t=null===(h=v.avcC||v.hvcC||v.vvcC)||void 0===h?void 0:h.codec,"encv"===v.type)Q=null===(V=v.sinf)||void 0===V||null===(p=V.schi)||void 0===p?void 0:p.tenc.default_KID;if(b)if(v=null===(m=b.mdia)||void 0===m||null===(Z=m.minf)||void 0===Z||null===(S=Z.stbl)||void 0===S?void 0:S.stsd.entries[0])if(a=v.channelCount,l=v.sampleRate,n=null===(J=v.esds)||void 0===J?void 0:J.codec,o=null===(W=b.mdia)||void 0===W||null===(f=W.mdhd)||void 0===f?void 0:f.timescale,"enca"===v.type)Q=Q||(null===(y=v.sinf)||void 0===y||null===(k=y.schi)||void 0===k?void 0:k.tenc.default_KID);return{kid:Q?Q.join(""):null,videoCodec:t,audioCodec:n,width:i,height:r,videoTimescale:F,audioChannelCount:a,audioSampleRate:l,duration:U,audioTimescale:o,moov:e}}}function aU(e){return"number"==typeof e&&!Number.isNaN(e)}function lU(e){if(!e)return!1;var t=e.audioSegments,n=e.videoSegments,i=!n||0===n.length,r=!t||0===t.length;return!i||!r}var UU=["vid","cache"],FU=function(e){!function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&Pi(e,t)}(c,e);var t,n,i,r,a,l,U,F,o,d,Q,s=Oi(c);function c(e){var t,n;Mi(this,c),Ki(Hi(t=s.call(this)),"vid",""),Ki(Hi(t),"url",""),Ki(Hi(t),"meta",{}),Ki(Hi(t),"downloadInfo",[]),Ki(Hi(t),"videoSegments",[]),Ki(Hi(t),"audioSegments",[]),Ki(Hi(t),"cache",null),Ki(Hi(t),"_currentSegmentIndex",-1),Ki(Hi(t),"_currentLoadingSegmentIndex",-1),Ki(Hi(t),"buffer",void 0),Ki(Hi(t),"bufferDataLen",0),Ki(Hi(t),"_error",void 0),Ki(Hi(t),"_transformError",(function(e){return e})),t._config=("boolean"!=typeof(n=e).fixEditListOffset&&delete n.fixEditListOffset,Xi({vid:"",moovEnd:8e4,segmentDuration:2,maxDownloadInfoSize:30,responseType:"arraybuffer",fixEditListOffset:!0,cache:null},n));var i=t._config,r=i.vid,a=i.cache,l=ji(i,UU);return t.cache=a||new $l,t.vid=r||l.url,t.url=l.url,l.transformError=t._transformError,t.logger=new yr("MP4Loader_"+t.vid),e.openLog&&yr.enable(),l.logger=t.logger,t.filesize=0,t._loader=new qr(l),t._loader.on(wr,(function(e){t.emit(wr,e)})),t}return wi(c,[{key:"isMetaLoaded",get:function(){return this.videoSegments.length||this.audioSegments.length}},{key:"setCurrentSegment",value:function(e){aU(e)&&(this._currentSegmentIndex=e)}},{key:"isLastSegment",value:function(e){var t,n;return!!aU(e)&&e>=((null===(t=this.videoSegments[this.videoSegments.length-1])||void 0===t?void 0:t.index)||(null===(n=this.audioSegments[this.audioSegments.length-1])||void 0===n?void 0:n.index)||0)}},{key:"isSegmentLoading",value:function(e){return e===this._currentLoadingSegmentIndex}},{key:"changeUrl",value:(Q=Ii(Di().mark((function e(t){var n,i,r,a=arguments;return Di().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=a.length>1&&void 0!==a[1]?a[1]:t,i=a.length>2?a[2]:void 0,r=a.length>3?a[3]:void 0,e.next=5,this.reset(r);case 5:t&&(this.url=t),n&&(this.vid=n),i&&(this._config.moovEnd=i);case 8:case"end":return e.stop()}}),e,this)}))),function(e){return Q.apply(this,arguments)})},{key:"getOrLoadMeta",value:(d=Ii(Di().mark((function e(t){return Di().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this.isMetaLoaded){e.next=3;break}return e.next=3,this.loadMeta(t);case 3:return e.abrupt("return",this.meta);case 4:case"end":return e.stop()}}),e,this)}))),function(e){return d.apply(this,arguments)})},{key:"newBufferArray",value:function(e,t){var n;if(this.buffer){if(t||(null===(n=this.buffer)||void 0===n?void 0:n.byteLength)<e){var i,r=this.buffer.subarray(0,this.bufferDataLen),a=zr(((null===(i=this.buffer)||void 0===i?void 0:i.byteLength)||0)+e);a.set(r,0),delete this.buffer,this.buffer=a}}else this.buffer=zr(e),this.bufferDataLen=0}},{key:"loadMetaProcess",value:(o=Ii(Di().mark((function e(t,n,i){var r,a,l,U,F,o,d=this,Q=arguments;return Di().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(a=zi(n,2),l=a[0],U=a[1],F=Q.length>3&&void 0!==Q[3]?Q[3]:{},this._error=!1,this.filesize=0,this.logger.debug("[loadMetaProcess start], range,",[l,U]),null!==(r=this._config)&&void 0!==r&&r.memoryOpt&&(!this.buffer||null!=F&&F.isExp))try{this.newBufferArray(U-l+1,null==F?void 0:F.isExp)}catch(s){i(null,!0,{},new ql(null==s?void 0:s.message),{})}return o=function(){var e=Ii(Di().mark((function e(n,r,a,o){var Q,s,c,u,B,R,h,V,p,m,Z,S,J;return Di().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!d.filesize&&null!=o&&o.headers&&(Q=o.headers.get("content-range"))&&(s=Q.split("/"),Array.isArray(s)&&2===s.length&&(d.filesize=parseInt(s[1]),d.filesize>0&&U>d.filesize&&(U=d.filesize,d.logger.debug("[loadMetaProcess] moovEnd changed by content-range in header, [".concat(l,"-").concat(U,"]"))))),!r&&d.meta&&null!=a&&a.range&&a.range.length>0&&a.range[1]>=U&&(r=!0,d.logger.debug("[loadMetaProcess],data done,setstate true,[",l,U,"]")),r&&null!=a&&a.range&&a.range.length>0&&a.range[1]<U&&(r=!1,d.logger.debug("[loadMetaProcess],data not done,setstate false,[",l,U,"]")),d.logger.debug("[loadMetaProcess],task,[",l,U,"], range,",a.range,",dataLen,",n?n.byteLength:void 0,", state,",r,",err,",d._error),!d._error&&n&&n.byteLength>0&&i(n,r,a,null,o),!d.meta.moov&&!d._error){e.next=7;break}return e.abrupt("return");case 7:if(!(n&&n.byteLength>0)){e.next=53;break}e.prev=8,null!==(u=d._config)&&void 0!==u&&u.memoryOpt?(d.buffer.set(n,d.bufferDataLen),d.bufferDataLen+=(null==n?void 0:n.byteLength)||0,c=d.buffer.subarray(0,d.bufferDataLen)):(d.buffer=Or(d.buffer,n),c=d.buffer),e.next=16;break;case 12:return e.prev=12,e.t0=e.catch(8),i(null,r,a,new ql(null===e.t0||void 0===e.t0?void 0:e.t0.message),o),e.abrupt("return");case 16:if(B=Ga.findBox(c,["moov"])[0]){e.next=31;break}if(R=Ga.findBox(c,["mdat"])[0],!r){e.next=31;break}if(R){e.next=26;break}return d._error=!0,i(null,r,a,new ql("cannot find moov or mdat box"),o),e.abrupt("return");case 26:return h=R.start+R.size,e.next=29,d.loadData([h,""],t,F);case 29:(V=e.sent)&&(B=Ga.findBox(V.data,["moov"])[0]);case 31:if(!(B&&r&&B.size>B.data.length)){e.next=35;break}return d.logger.debug("[loadMetaProcess],moov not all, range,",a.range[1],",dataLen,",d.bufferDataLen,", state,",r),e.next=35,d.loadMetaProcess(t,[a.range[1],B.start+B.size-1],i,{isExp:!0});case 35:if(!(B&&B.size<=B.data.length)||d.meta.moov){e.next=53;break}if(m=Ga.moov(B)){e.next=41;break}return d._error=!0,i(null,r,a,new ql("cannot parse moov box"),o),e.abrupt("return");case 41:if(lU(Z=tU(m,d._config))){e.next=46;break}return d._error=!0,i(null,r,a,new ql("cannot parse segments"),o),e.abrupt("return");case 46:d.meta=rU(m),S=Z.videoSegments,J=Z.audioSegments,d.videoSegments=S,d.audioSegments=J,null!==(p=d._config)&&void 0!==p&&p.memoryOpt&&(delete d.buffer,d.bufferDataLen=0),d.logger.debug("[loadMetaProcess] moov ok"),i(void 0,r,{meta:{meta:d.meta,videoSegments:S,audioSegments:J}},null,o);case 53:case"end":return e.stop()}}),e,null,[[8,12]])})));return function(t,n,i,r){return e.apply(this,arguments)}}(),e.next=9,this.loadData([l,U||this._config.moovEnd],t,Xi({onProgress:o},F));case 9:case"end":return e.stop()}}),e,this)}))),function(e,t,n){return o.apply(this,arguments)})},{key:"loadMeta",value:(F=Ii(Di().mark((function e(t,n){var i,r,a,l,U,F,o,d,Q,s,c=arguments;return Di().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return i=c.length>2&&void 0!==c[2]?c[2]:{},r=[],this.logger.debug("[loadMeta start]"),e.next=5,this.loadData([0,n||this._config.moovEnd],t,i);case 5:if(a=e.sent){e.next=8;break}return e.abrupt("return");case 8:if(r.push(a),l=Ga.findBox(a.data,["moov"])[0]){e.next=24;break}if(U=Ga.findBox(a.data,["mdat"])[0]){e.next=14;break}throw new ql("cannot find moov or mdat box",a.data);case 14:return F=U.start+U.size,e.next=17,this.loadData([F],t,i);case 17:if(a=e.sent){e.next=20;break}return e.abrupt("return");case 20:if(r.push(a),l=Ga.findBox(a.data,["moov"],F)[0]){e.next=24;break}throw new ql("cannot find moov box",a.data);case 24:if(!(l.size>l.data.length)){e.next=32;break}return e.next=27,this.loadData([a.data.length,l.start+l.size-1],t,i);case 27:if(a=e.sent){e.next=30;break}return e.abrupt("return");case 30:r.push(a),l.data=Or(l.data,a.data);case 32:if(o=Ga.moov(l)){e.next=35;break}throw new ql("cannot parse moov box",l.data);case 35:if(lU(d=tU(o,this._config))){e.next=38;break}throw new ql("cannot parse segments",l.data);case 38:return this.meta=rU(o),Q=d.videoSegments,s=d.audioSegments,this.videoSegments=Q,this.audioSegments=s,delete this.buffer,this.bufferDataLen=0,this.logger.debug("[load moov end!!!!!]"),e.abrupt("return",{meta:this.meta,videoSegments:Q,audioSegments:s,responses:r});case 46:case"end":return e.stop()}}),e,this)}))),function(e,t){return F.apply(this,arguments)})},{key:"loadCacheMeta",value:function(e,t){var n=tU(e.moov,this._config),i=n.videoSegments,r=n.audioSegments;this.videoSegments=i,this.audioSegments=r,this._currentSegmentIndex=t,this.meta=e}},{key:"getSegmentByTime",value:function(e){var t,n;return this.videoSegments.length?(t=this.videoSegments.find((function(t){return t.startTime<=e&&t.endTime>e})))&&(n=this.audioSegments[t.index]):n=this.audioSegments.find((function(t){return t.startTime<=e&&t.endTime>e})),{video:t,audio:n}}},{key:"loadSegmentByTime",value:(U=Ii(Di().mark((function e(t,n){var i,r,a,l,U,F=arguments;return Di().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(i=!(F.length>2&&void 0!==F[2])||F[2],r=F.length>3&&void 0!==F[3]?F[3]:{},this.isMetaLoaded){e.next=5;break}return e.next=5,this.loadMeta(n);case 5:return a=this.getSegmentByTime(t),l=a.video,U=a.audio,e.abrupt("return",this._loadSegment(l,U,n,i,r));case 7:case"end":return e.stop()}}),e,this)}))),function(e,t){return U.apply(this,arguments)})},{key:"loadNextSegment",value:(l=Ii(Di().mark((function e(t){var n,i,r,a,l=arguments;return Di().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(n=!(l.length>1&&void 0!==l[1])||l[1],i=l.length>2&&void 0!==l[2]?l[2]:{},this.isMetaLoaded){e.next=5;break}return e.next=5,this.loadMeta();case 5:return r=this.videoSegments[this._currentSegmentIndex+1],a=this.audioSegments[this._currentSegmentIndex+1],e.abrupt("return",this._loadSegment(r,a,t,n,i));case 8:case"end":return e.stop()}}),e,this)}))),function(e){return l.apply(this,arguments)})},{key:"preload",value:(a=Ii(Di().mark((function e(t){var n,i,r,a,l,U,F,o=this;return Di().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this.isMetaLoaded){e.next=3;break}return e.next=3,this.loadMeta(!0);case 3:if(t&&!(t<0)){e.next=5;break}return e.abrupt("return");case 5:if(n=this.getSegmentByTime(t),i=n.video,r=n.audio,a=Math.max((null==i?void 0:i.index)||0,(null==r?void 0:r.index)||0)){e.next=9;break}return e.abrupt("return");case 9:return l=this.videoSegments.slice(0,a),U=this.audioSegments.slice(0,a),F=function(){var e=Ii(Di().mark((function e(t){return Di().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!(t>a)){e.next=2;break}return e.abrupt("return");case 2:return e.next=4,o._loadSegment(l[t],U[t],!0,!1);case 4:return e.next=6,F(t+1);case 6:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),e.next=14,F(0);case 14:case"end":return e.stop()}}),e,this)}))),function(e){return a.apply(this,arguments)})},{key:"cancel",value:function(){return this._loader.cancel()}},{key:"reset",value:(r=Ii(Di().mark((function e(){var t,n=arguments;return Di().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(n.length>0&&void 0!==n[0]&&n[0]){e.next=5;break}return this.logger.debug("[MP4loader reset func call loader.cancel]"),e.next=5,this._loader.cancel();case 5:this.vid=this.url="",this.meta={},this.downloadInfo=[],this.videoSegments=[],this.audioSegments=[],this._currentSegmentIndex=-1,this._currentLoadingSegmentIndex=-1,null!==(t=this._config)&&void 0!==t&&t.memoryOpt&&(delete this.buffer,this.bufferDataLen=0);case 13:case"end":return e.stop()}}),e,this)}))),function(){return r.apply(this,arguments)})},{key:"destroy",value:(i=Ii(Di().mark((function e(){return Di().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.reset();case 2:this.cache.clear();case 3:case"end":return e.stop()}}),e,this)}))),function(){return i.apply(this,arguments)})},{key:"_loadSegment",value:(n=Ii(Di().mark((function e(t,n,i,r,a){var l,U;return Di().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t||n){e.next=2;break}return e.abrupt("return");case 2:return l=(null==t?void 0:t.index)||(null==n?void 0:n.index)||0,this._currentLoadingSegmentIndex=l,e.prev=4,e.next=7,this.loadData([Math.min((null==t?void 0:t.range[0])||1/0,(null==n?void 0:n.range[0])||1/0),Math.max((null==t?void 0:t.range[1])||0,(null==n?void 0:n.range[1])||0)],i,a);case 7:U=e.sent;case 8:return e.prev=8,this._currentLoadingSegmentIndex=-1,e.finish(8);case 11:if(U){e.next=13;break}return e.abrupt("return");case 13:return r&&(this._currentSegmentIndex=l),U.video=t,U.audio=n,e.abrupt("return",U);case 17:case"end":return e.stop()}}),e,this,[[4,,8,11]])}))),function(e,t,i,r,a){return n.apply(this,arguments)})},{key:"loadData",value:(t=Ii(Di().mark((function e(t,n){var i,r,a,l,U,F=arguments;return Di().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return i=F.length>2&&void 0!==F[2]?F[2]:{},r=this._getCacheKey(t),e.next=4,this.cache.get(r);case 4:if(a=e.sent){e.next=12;break}return U=null!=i&&i.url?i.url:this.url,e.next=9,this._loader.load(U,Xi({range:t,vid:this.vid},i));case 9:l=e.sent,e.next=13;break;case 12:l={data:a,state:!0,options:{fromCache:!0,range:t,vid:this.vid}};case 13:if(l){e.next=15;break}return e.abrupt("return");case 15:return a||(l.data&&this.downloadInfo.push({startTime:l.startTime,endTime:l.endTime,size:l.data.byteLength,range:t}),this.downloadInfo&&this.downloadInfo.length>this._config.maxDownloadInfoSize&&(this.downloadInfo=this.downloadInfo.slice(-this._config.maxDownloadInfoSize))),e.abrupt("return",l);case 18:case"end":return e.stop()}}),e,this)}))),function(e,n){return t.apply(this,arguments)})},{key:"_getCacheKey",value:function(e){return(this.vid||this.url)+":"+e}}]),c}(it),oU=[{range:[0,90],size:614400},{range:[90,120],size:819200},{range:[120,Number.MAX_VALUE],size:1024e3}];function dU(e,t,n){var i=n>51200?Math.min(n,t):t;if(!e)return i||oU[0].size;var r=oU.find((function(t){return e>=t.range[0]&&e<t.range[1]}));return r&&(i=Math.min(r.size,n>0?n:t)),i||oU[0].size}var QU={playBtnClick:function(e,t,n,i){e.paused||e.waitingMoreBuffer&&(e.waitingMoreBuffer=!1),i.call(e,t,n)}},sU={waiting:function(e,t){var n=e.player,i=e.eventName;n.waitingMoreBuffer=!0,t(i,e)},play:function(e,t){var n=e.player,i=e.eventName;n.waitingMoreBuffer||t(i,e)},pause:function(e,t){var n=e.player,i=e.eventName;n.waitingMoreBuffer||t(i,e)},seeking:function(e,t){var n=e.player,i=e.eventName;n.isSeekingStart=!0,t(i,e)},progress:function(e,t){ai(">>>>progress");var n=e.player,i=e.eventName;if(n.waitingMoreBuffer){var r=n.getBufferedRange(n.buffered2);0===r[0]&&0===r[1]||(void 0===n.inWaitingStart||n.isSeekingStart?(ai("progress startplay or seek ended"),r[1]-n.currentTime>=(n.config.canplayWaterLevel||1)||r[1]>n.duration-1?(ai("progress out bufferWaterLevel"),n.play()):(ai("progress not out bufferWaterLevel"),n.emit("waiting"))):(ai("progress video waiting end"),r[1]-n.currentTime>=(n.config.bufferWaterLevel||5)||r[1]>n.duration-1?(ai("progress out bufferWaterLevel"),n.play()):(ai("progress not out bufferWaterLevel"),n.emit("waiting"))))}t(i,e)},playing:function(e,t){var n=e.player,i=e.eventName;ai("playing");var r=n.getBufferedRange(n.buffered2);if(0===r[0]&&0===r[1])return ai("playing currentTime no buffer, not out bufferWaterLevel"),n.waitingMoreBuffer=!0,n.pause(),void t.call("waiting",e);void 0===n.inWaitingStart||n.isSeekingStart?(ai("playing startplay or seek ended"),r[1]-n.currentTime>=(n.config.canplayWaterLevel||1)||r[1]>n.duration-1?(ai("playing out bufferWaterLevel"),n.waitingMoreBuffer=!1,n.isSeekingStart=!1,t(i,e)):(ai("playing not out bufferWaterLevel"),n.waitingMoreBuffer=!0,n.pause(),t.call("waiting",e))):(ai("playing video waiting ended"),r[1]-n.currentTime>=(n.config.bufferWaterLevel||5)||r[1]>n.duration-1?(ai("playing out bufferWaterLevel"),n.waitingMoreBuffer=!1,t(i,e)):(ai("playing not out bufferWaterLevel"),n.waitingMoreBuffer=!0,n.pause(),t.call("waiting",e)))}};function cU(e){return/^http(s)?:\/\/.+/.test(e)}function uU(e,t){return Math.round(8*e*1e3/t/1024)}function BU(e){var t,n;return!((null==e||null===(t=e.message)||void 0===t?void 0:t.indexOf("Failed to fetch"))>=0||null!=e&&e.isTimeout||null!=e&&e.response&&(null===(n=e.response)||void 0===n?void 0:n.status)>=400&&e.response.status<=599)}function RU(e){var t,n;return!((null==e||null===(t=e.message)||void 0===t?void 0:t.indexOf("Failed to fetch"))>=0||null!=e&&e.response&&(null===(n=e.response)||void 0===n?void 0:n.status)>=400&&e.response.status<=599)}function hU(e){return e.preLoadMeta||{}}var VU={findBox:function e(t,n){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];if(t.type!==n){if(t&&t.subBox){var r=t.subBox.filter((function(e){return e.type===n}));r.length?r.forEach((function(e){return i.push(e)})):t.subBox.forEach((function(t){return e(t,n,i)}))}}else i.push(t);return(i=_(i)).length>1?i:i[0]},padStart:pU,toHex:function(){for(var e=[],t=arguments.length,n=new Array(t),i=0;i<t;i++)n[i]=arguments[i];return n.forEach((function(t){var n=Number(t).toString(16);e.push(pU(n,2,0))})),e},fromHex:function(e){for(var t=new Uint8Array(e.length/2),n=0;n<e.length;n+=2)t[n/2]=window.parseInt(e.substr(n,2),16);return t},sum:function(){for(var e=0,t=arguments.length,n=new Array(t),i=0;i<t;i++)n[i]=arguments[i];return n.forEach((function(t){e+=t})),e},StringToArrayBuffer:function(e){for(var t=new ArrayBuffer(e.length),n=new Uint8Array(t),i=0;i<e.length;i++)n[i]=e.charCodeAt(i);return t},ArrayBufferToString:function(e){for(var t="",n=new Uint8Array(e),i=0;i<n.length;i++)t+=String.fromCharCode(n[i]);return t},fromCharCode:mU,Base64ToHex:function(e){for(var t=window.atob(e.replace(/-/g,"+").replace(/_/g,"/")),n="",i=0;i<t.length;i++)n+="0".concat(t.charCodeAt(i).toString(16)).substr(-2);return n},toBase64:function(e,t){var n=mU(e);t=void 0===t||t;var i=window.btoa(n).replace(/\+/g,"-").replace(/\//g,"_");return t?i:i.replace(/=*$/,"")},toUTF8:function(e){for(var t=encodeURIComponent(e),n=unescape(t),i=new Uint8Array(n.length),r=0;r<n.length;++r)i[r]=n.charCodeAt(r);return i.buffer},strToBuf:function(e){for(var t=[],n=0;n<e.length;n+=2)t.push(parseInt(e[n]+e[n+1],16));return new Uint8Array(t)},str2hex:function(e){if(""===e)return"";for(var t=[],n=0;n<e.length;n++)t.push(e.charCodeAt(n));return t},formatIV:function(e){if(e.length>=16)return e;for(var t=new Uint8Array(16),n=0;n<t.length;n++)t[n]=n<e.length?e[n]:0;return t},parse:function(e){if(!Array.isArray(e)){for(var t=[],n="",i=0;i<e.length;i++)i%2&&(n=e[i-1]+e[i],t.push(parseInt(n,16)),n="");return t}return e.map((function(e){return parseInt(e,16)}))},generateUniqueKey:function(e){var t=e.vid,n=e.mediaType,i=e.definition;if(n=n||"video",i=i||-1,!t)return null;return"".concat(t,"#").concat(n,"#").concat(i,"#mp4")},validateFragment:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];if(e instanceof ArrayBuffer){try{if(2===t.length){var n=t[1]-t[0]+1;if(!(e.byteLength===n))return}}catch(i){return console.error(i),!1}return!0}return!1},typeOf:ZU,nowTime:function(){try{return parseInt("".concat(performance.now()),10)}catch(e){return(new Date).getTime()}},extUrl:function(e,t){try{if(!t||e.startsWith("blob"))return e;var n=e.indexOf("?"),i=n<0,r=n===e.length-1,a="";return Object.keys(t).forEach((function(e){var n=t[e];null!=n&&""!==n&&(a+="".concat(a?"&":"").concat(e,"=").concat(t[e]))})),e+=(i?"?":r?"":"&")+a}catch(l){return e}},deepMerge:function e(t,n){return Object.keys(n).forEach((function(i){var r,a=ZU(n[i]),l=ZU(t[i]);"Array"===a?("Array"!==l&&(t[i]=[]),(r=t[i]).push.apply(r,_(n[i]))):"Object"===a?("Object"!==l&&(t[i]={}),e(t[i],n[i])):t[i]=n[i]})),t},getFileSize:function(e,t){try{return e&&t?parseInt("".concat(t*e/8),10):0}catch(n){return 0}},hashVal:function(e){var t,n=0;if(0===e.length)return n;for(t=0;t<e.length;t++)n=(n<<5)-n+e.charCodeAt(t),n|=0;return n},ArrayCopy:function(e){var t=[];if(!e||!e.length||0===e.length)return t;for(var n=0;n<e.length;n++){var i=e[n],r={};for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(r[a]=i[a]);t.push(r)}return t},concatData:function(e,t){var n=[],i=0;e&&n.push(e);t&&n.push(t);n.every((function(e){return e&&(i+=e.byteLength),!0}));var r=new Uint8Array(i),a=0;return n.every((function(e){return e&&(r.set(e,a),a+=e.byteLength),!0})),r},getFragRange:function(e,t,n){var i,r,a,l,U=null,F=null;U=e<t.length-1?t[e]:t[t.length-1];F=e<n.length-1?n[e]:n[n.length-1];return[Math.min((null===(i=U)||void 0===i?void 0:i.range[0])||1/0,(null===(r=F)||void 0===r?void 0:r.range[0])||1/0),Math.max(null===(a=U)||void 0===a?void 0:a.range[1],null===(l=F)||void 0===l?void 0:l.range[1])]},getHostFromUrl:function(e){if("String"!==ZU(e)||!e)return"";var t=e.split("/"),n="";t.length>3&&t[2]&&(n=t[2]);return n},newUint8Array:function(e){var t,n=0;for(;n<10;)try{if((t=new Uint8Array(e))&&t.byteLength>0)break;n++}catch(i){n<10?n++:console.error("repeat data cache new array failed final",10)}return t},checkUrlIsExpired:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;if(!e||"String"!==ZU(e))return 0;var n=0;try{var i=new RegExp("(\\?|&)x-tos-expires=([^&]*)(&|$)"),r=e.match(i);if(null!==r)n=parseInt(r[2],10);else{var a=e.split("/");a.length>5&&8===a[4].length&&(n=parseInt(a[4],16))}return n>0?n<parseInt("".concat(t&&"number"==typeof t?(new Date).getTime()/1e3+t:(new Date).getTime()/1e3),10)?1:2:0}catch(l){return 0}},getBufferSplits:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:5e5;if(t-e-n<n/2||!t)return[[e,t]];var i=[];for(;e<t;){var r=e+n;(r>t||t-r<n/2)&&(r=t),i.push([e,r]),e=r+1}return i},getFirstFrameStartRange:function(e,t){var n,i,r=Number.MAX_VALUE,a=Number.MAX_VALUE;e&&(r=(null===(n=e[0])||void 0===n||null===(n=n.range)||void 0===n?void 0:n[0])||Number.MAX_VALUE);t&&(a=(null===(i=t[0])||void 0===i||null===(i=i.range)||void 0===i?void 0:i[0])||Number.MAX_VALUE);return Math.min(r,a)},getEndFramePos:function(e,t){var n,i,r=0,a=0;e&&(r=(null===(n=e[e.length-1])||void 0===n||null===(n=n.range)||void 0===n?void 0:n[1])||0);t&&(a=(null===(i=t[t.length-1])||void 0===i||null===(i=i.range)||void 0===i?void 0:i[1])||0);return Math.max(r,a)}};function pU(e,t,n){for(var i=String(n),r=t|0,a=Math.ceil(r/i.length),l=[],U=String(e);a--;)l.push(i);return l.join("").substring(0,r-U.length)+U}function mU(e){for(var t="",n=0;n<e.length;n+=16e3){var i=e.subarray(n,n+16e3);t+=String.fromCharCode.apply(null,i)}return t}function ZU(e){return Object.prototype.toString.call(e).match(/([^\s.*]+)(?=]$)/g)[0]}var SU={"x-cache":"x_cache","x-response-sinfo":"server_ip","x-response-cinfo":"x-response-cinfo","content-range":"content-range","content-length":"content-length","content-type":"content-type"};function JU(e){var t={};return Object.keys(SU).forEach((function(n){var i,r=null==e||null===(i=e.get)||void 0===i?void 0:i.call(e,n);r&&(t[SU[n]]=r)})),t}function WU(e){var t,n=SU["content-range"],i=null==e||null===(t=e.get)||void 0===t?void 0:t.call(e,n);if(i){var r=i.split("/");if(Array.isArray(r)&&2===r.length)return r[1]}return null}var fU="IWZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIEEoQSxnKXsobnVsbD09Z3x8Zz5BLmxlbmd0aCkmJihnPUEubGVuZ3RoKTtmb3IodmFyIEk9MCxCPUFycmF5KGcpO0k8ZztJKyspQltJXT1BW0ldO3JldHVybiBCfWZ1bmN0aW9uIGcoQSxnLEksQixRLEUsQyl7dHJ5e3ZhciB0PUFbRV0oQyksaT10LnZhbHVlfWNhdGNoKGUpe3JldHVybiB2b2lkIEkoZSl9dC5kb25lP2coaSk6UHJvbWlzZS5yZXNvbHZlKGkpLnRoZW4oQixRKX1mdW5jdGlvbiBJKEEsZyxJKXtyZXR1cm4gZz1pKGcpLGZ1bmN0aW9uKEEsZyl7aWYoZyYmKCJvYmplY3QiPT10eXBlb2YgZ3x8ImZ1bmN0aW9uIj09dHlwZW9mIGcpKXJldHVybiBnO2lmKHZvaWQgMCE9PWcpdGhyb3cgbmV3IFR5cGVFcnJvcigiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWQiKTtyZXR1cm4gZnVuY3Rpb24oQSl7aWYodm9pZCAwPT09QSl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiBBfShBKX0oQSxvKCk/UmVmbGVjdC5jb25zdHJ1Y3QoZyxJfHxbXSxpKEEpLmNvbnN0cnVjdG9yKTpnLmFwcGx5KEEsSSkpfWZ1bmN0aW9uIEIoQSxnKXtpZighKEEgaW5zdGFuY2VvZiBnKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX1mdW5jdGlvbiBRKEEsZyl7Zm9yKHZhciBJPTA7STxnLmxlbmd0aDtJKyspe3ZhciBCPWdbSV07Qi5lbnVtZXJhYmxlPUIuZW51bWVyYWJsZXx8ITEsQi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIEImJihCLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoQSxmKEIua2V5KSxCKX19ZnVuY3Rpb24gRShBLGcsSSl7cmV0dXJuIGcmJlEoQS5wcm90b3R5cGUsZyksSSYmUShBLEkpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShBLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLEF9ZnVuY3Rpb24gQyhBLGcsSSl7cmV0dXJuKGc9ZihnKSlpbiBBP09iamVjdC5kZWZpbmVQcm9wZXJ0eShBLGcse3ZhbHVlOkksZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTpBW2ddPUksQX1mdW5jdGlvbiB0KCl7cmV0dXJuIHQ9InVuZGVmaW5lZCIhPXR5cGVvZiBSZWZsZWN0JiZSZWZsZWN0LmdldD9SZWZsZWN0LmdldC5iaW5kKCk6ZnVuY3Rpb24oQSxnLEkpe3ZhciBCPWZ1bmN0aW9uKEEsZyl7Zm9yKDshe30uaGFzT3duUHJvcGVydHkuY2FsbChBLGcpJiZudWxsIT09KEE9aShBKSk7KTtyZXR1cm4gQX0oQSxnKTtpZihCKXt2YXIgUT1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEIsZyk7cmV0dXJuIFEuZ2V0P1EuZ2V0LmNhbGwoYXJndW1lbnRzLmxlbmd0aDwzP0E6SSk6US52YWx1ZX19LHQuYXBwbHkobnVsbCxhcmd1bWVudHMpfWZ1bmN0aW9uIGkoQSl7cmV0dXJuKGk9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oQSl7cmV0dXJuIEEuX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YoQSl9KShBKX1mdW5jdGlvbiBlKEEsZyl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGcmJm51bGwhPT1nKXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7QS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShnJiZnLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOkEsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShBLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLGcmJnMoQSxnKX1mdW5jdGlvbiBvKCl7dHJ5e3ZhciBBPSFCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbixbXSwoZnVuY3Rpb24oKXt9KSkpfWNhdGNoKGcpe31yZXR1cm4obz1mdW5jdGlvbigpe3JldHVybiEhQX0pKCl9ZnVuY3Rpb24gcihBLGcpe3ZhciBJPU9iamVjdC5rZXlzKEEpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBCPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoQSk7ZyYmKEI9Qi5maWx0ZXIoKGZ1bmN0aW9uKGcpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEEsZykuZW51bWVyYWJsZX0pKSksSS5wdXNoLmFwcGx5KEksQil9cmV0dXJuIEl9ZnVuY3Rpb24gbihBKXtmb3IodmFyIGc9MTtnPGFyZ3VtZW50cy5sZW5ndGg7ZysrKXt2YXIgST1udWxsIT1hcmd1bWVudHNbZ10/YXJndW1lbnRzW2ddOnt9O2clMj9yKE9iamVjdChJKSwhMCkuZm9yRWFjaCgoZnVuY3Rpb24oZyl7QyhBLGcsSVtnXSl9KSk6T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoQSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhJKSk6cihPYmplY3QoSSkpLmZvckVhY2goKGZ1bmN0aW9uKGcpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShBLGcsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihJLGcpKX0pKX1yZXR1cm4gQX1mdW5jdGlvbiBhKCl7YT1mdW5jdGlvbigpe3JldHVybiBnfTt2YXIgQSxnPXt9LEk9T2JqZWN0LnByb3RvdHlwZSxCPUkuaGFzT3duUHJvcGVydHksUT1PYmplY3QuZGVmaW5lUHJvcGVydHl8fGZ1bmN0aW9uKEEsZyxJKXtBW2ddPUkudmFsdWV9LEU9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbD9TeW1ib2w6e30sQz1FLml0ZXJhdG9yfHwiQEBpdGVyYXRvciIsdD1FLmFzeW5jSXRlcmF0b3J8fCJAQGFzeW5jSXRlcmF0b3IiLGk9RS50b1N0cmluZ1RhZ3x8IkBAdG9TdHJpbmdUYWciO2Z1bmN0aW9uIGUoQSxnLEkpe3JldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoQSxnLHt2YWx1ZTpJLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSksQVtnXX10cnl7ZSh7fSwiIil9Y2F0Y2goWSl7ZT1mdW5jdGlvbihBLGcsSSl7cmV0dXJuIEFbZ109SX19ZnVuY3Rpb24gbyhBLGcsSSxCKXt2YXIgRT1nJiZnLnByb3RvdHlwZSBpbnN0YW5jZW9mIHk/Zzp5LEM9T2JqZWN0LmNyZWF0ZShFLnByb3RvdHlwZSksdD1uZXcgTihCfHxbXSk7cmV0dXJuIFEoQywiX2ludm9rZSIse3ZhbHVlOlUoQSxJLHQpfSksQ31mdW5jdGlvbiByKEEsZyxJKXt0cnl7cmV0dXJue3R5cGU6Im5vcm1hbCIsYXJnOkEuY2FsbChnLEkpfX1jYXRjaChCKXtyZXR1cm57dHlwZToidGhyb3ciLGFyZzpCfX19Zy53cmFwPW87dmFyIG49InN1c3BlbmRlZFN0YXJ0IixzPSJzdXNwZW5kZWRZaWVsZCIsYz0iZXhlY3V0aW5nIixoPSJjb21wbGV0ZWQiLGY9e307ZnVuY3Rpb24geSgpe31mdW5jdGlvbiB1KCl7fWZ1bmN0aW9uIEQoKXt9dmFyIHc9e307ZSh3LEMsKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSk7dmFyIGw9T2JqZWN0LmdldFByb3RvdHlwZU9mLGQ9bCYmbChsKE0oW10pKSk7ZCYmZCE9PUkmJkIuY2FsbChkLEMpJiYodz1kKTt2YXIgRj1ELnByb3RvdHlwZT15LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHcpO2Z1bmN0aW9uIEcoQSl7WyJuZXh0IiwidGhyb3ciLCJyZXR1cm4iXS5mb3JFYWNoKChmdW5jdGlvbihnKXtlKEEsZywoZnVuY3Rpb24oQSl7cmV0dXJuIHRoaXMuX2ludm9rZShnLEEpfSkpfSkpfWZ1bmN0aW9uIFIoQSxnKXtmdW5jdGlvbiBJKFEsRSxDLHQpe3ZhciBpPXIoQVtRXSxBLEUpO2lmKCJ0aHJvdyIhPT1pLnR5cGUpe3ZhciBlPWkuYXJnLG89ZS52YWx1ZTtyZXR1cm4gbyYmIm9iamVjdCI9PXR5cGVvZiBvJiZCLmNhbGwobywiX19hd2FpdCIpP2cucmVzb2x2ZShvLl9fYXdhaXQpLnRoZW4oKGZ1bmN0aW9uKEEpe0koIm5leHQiLEEsQyx0KX0pLChmdW5jdGlvbihBKXtJKCJ0aHJvdyIsQSxDLHQpfSkpOmcucmVzb2x2ZShvKS50aGVuKChmdW5jdGlvbihBKXtlLnZhbHVlPUEsQyhlKX0pLChmdW5jdGlvbihBKXtyZXR1cm4gSSgidGhyb3ciLEEsQyx0KX0pKX10KGkuYXJnKX12YXIgRTtRKHRoaXMsIl9pbnZva2UiLHt2YWx1ZTpmdW5jdGlvbihBLEIpe2Z1bmN0aW9uIFEoKXtyZXR1cm4gbmV3IGcoKGZ1bmN0aW9uKGcsUSl7SShBLEIsZyxRKX0pKX1yZXR1cm4gRT1FP0UudGhlbihRLFEpOlEoKX19KX1mdW5jdGlvbiBVKGcsSSxCKXt2YXIgUT1uO3JldHVybiBmdW5jdGlvbihFLEMpe2lmKFE9PT1jKXRocm93IEVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBydW5uaW5nIik7aWYoUT09PWgpe2lmKCJ0aHJvdyI9PT1FKXRocm93IEM7cmV0dXJue3ZhbHVlOkEsZG9uZTohMH19Zm9yKEIubWV0aG9kPUUsQi5hcmc9Qzs7KXt2YXIgdD1CLmRlbGVnYXRlO2lmKHQpe3ZhciBpPWsodCxCKTtpZihpKXtpZihpPT09Ziljb250aW51ZTtyZXR1cm4gaX19aWYoIm5leHQiPT09Qi5tZXRob2QpQi5zZW50PUIuX3NlbnQ9Qi5hcmc7ZWxzZSBpZigidGhyb3ciPT09Qi5tZXRob2Qpe2lmKFE9PT1uKXRocm93IFE9aCxCLmFyZztCLmRpc3BhdGNoRXhjZXB0aW9uKEIuYXJnKX1lbHNlInJldHVybiI9PT1CLm1ldGhvZCYmQi5hYnJ1cHQoInJldHVybiIsQi5hcmcpO1E9Yzt2YXIgZT1yKGcsSSxCKTtpZigibm9ybWFsIj09PWUudHlwZSl7aWYoUT1CLmRvbmU/aDpzLGUuYXJnPT09Ziljb250aW51ZTtyZXR1cm57dmFsdWU6ZS5hcmcsZG9uZTpCLmRvbmV9fSJ0aHJvdyI9PT1lLnR5cGUmJihRPWgsQi5tZXRob2Q9InRocm93IixCLmFyZz1lLmFyZyl9fX1mdW5jdGlvbiBrKGcsSSl7dmFyIEI9SS5tZXRob2QsUT1nLml0ZXJhdG9yW0JdO2lmKFE9PT1BKXJldHVybiBJLmRlbGVnYXRlPW51bGwsInRocm93Ij09PUImJmcuaXRlcmF0b3IucmV0dXJuJiYoSS5tZXRob2Q9InJldHVybiIsSS5hcmc9QSxrKGcsSSksInRocm93Ij09PUkubWV0aG9kKXx8InJldHVybiIhPT1CJiYoSS5tZXRob2Q9InRocm93IixJLmFyZz1uZXcgVHlwZUVycm9yKCJUaGUgaXRlcmF0b3IgZG9lcyBub3QgcHJvdmlkZSBhICciK0IrIicgbWV0aG9kIikpLGY7dmFyIEU9cihRLGcuaXRlcmF0b3IsSS5hcmcpO2lmKCJ0aHJvdyI9PT1FLnR5cGUpcmV0dXJuIEkubWV0aG9kPSJ0aHJvdyIsSS5hcmc9RS5hcmcsSS5kZWxlZ2F0ZT1udWxsLGY7dmFyIEM9RS5hcmc7cmV0dXJuIEM/Qy5kb25lPyhJW2cucmVzdWx0TmFtZV09Qy52YWx1ZSxJLm5leHQ9Zy5uZXh0TG9jLCJyZXR1cm4iIT09SS5tZXRob2QmJihJLm1ldGhvZD0ibmV4dCIsSS5hcmc9QSksSS5kZWxlZ2F0ZT1udWxsLGYpOkM6KEkubWV0aG9kPSJ0aHJvdyIsSS5hcmc9bmV3IFR5cGVFcnJvcigiaXRlcmF0b3IgcmVzdWx0IGlzIG5vdCBhbiBvYmplY3QiKSxJLmRlbGVnYXRlPW51bGwsZil9ZnVuY3Rpb24gUyhBKXt2YXIgZz17dHJ5TG9jOkFbMF19OzEgaW4gQSYmKGcuY2F0Y2hMb2M9QVsxXSksMiBpbiBBJiYoZy5maW5hbGx5TG9jPUFbMl0sZy5hZnRlckxvYz1BWzNdKSx0aGlzLnRyeUVudHJpZXMucHVzaChnKX1mdW5jdGlvbiBwKEEpe3ZhciBnPUEuY29tcGxldGlvbnx8e307Zy50eXBlPSJub3JtYWwiLGRlbGV0ZSBnLmFyZyxBLmNvbXBsZXRpb249Z31mdW5jdGlvbiBOKEEpe3RoaXMudHJ5RW50cmllcz1be3RyeUxvYzoicm9vdCJ9XSxBLmZvckVhY2goUyx0aGlzKSx0aGlzLnJlc2V0KCEwKX1mdW5jdGlvbiBNKGcpe2lmKGd8fCIiPT09Zyl7dmFyIEk9Z1tDXTtpZihJKXJldHVybiBJLmNhbGwoZyk7aWYoImZ1bmN0aW9uIj09dHlwZW9mIGcubmV4dClyZXR1cm4gZztpZighaXNOYU4oZy5sZW5ndGgpKXt2YXIgUT0tMSxFPWZ1bmN0aW9uIEkoKXtmb3IoOysrUTxnLmxlbmd0aDspaWYoQi5jYWxsKGcsUSkpcmV0dXJuIEkudmFsdWU9Z1tRXSxJLmRvbmU9ITEsSTtyZXR1cm4gSS52YWx1ZT1BLEkuZG9uZT0hMCxJfTtyZXR1cm4gRS5uZXh0PUV9fXRocm93IG5ldyBUeXBlRXJyb3IodHlwZW9mIGcrIiBpcyBub3QgaXRlcmFibGUiKX1yZXR1cm4gdS5wcm90b3R5cGU9RCxRKEYsImNvbnN0cnVjdG9yIix7dmFsdWU6RCxjb25maWd1cmFibGU6ITB9KSxRKEQsImNvbnN0cnVjdG9yIix7dmFsdWU6dSxjb25maWd1cmFibGU6ITB9KSx1LmRpc3BsYXlOYW1lPWUoRCxpLCJHZW5lcmF0b3JGdW5jdGlvbiIpLGcuaXNHZW5lcmF0b3JGdW5jdGlvbj1mdW5jdGlvbihBKXt2YXIgZz0iZnVuY3Rpb24iPT10eXBlb2YgQSYmQS5jb25zdHJ1Y3RvcjtyZXR1cm4hIWcmJihnPT09dXx8IkdlbmVyYXRvckZ1bmN0aW9uIj09PShnLmRpc3BsYXlOYW1lfHxnLm5hbWUpKX0sZy5tYXJrPWZ1bmN0aW9uKEEpe3JldHVybiBPYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mKEEsRCk6KEEuX19wcm90b19fPUQsZShBLGksIkdlbmVyYXRvckZ1bmN0aW9uIikpLEEucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoRiksQX0sZy5hd3JhcD1mdW5jdGlvbihBKXtyZXR1cm57X19hd2FpdDpBfX0sRyhSLnByb3RvdHlwZSksZShSLnByb3RvdHlwZSx0LChmdW5jdGlvbigpe3JldHVybiB0aGlzfSkpLGcuQXN5bmNJdGVyYXRvcj1SLGcuYXN5bmM9ZnVuY3Rpb24oQSxJLEIsUSxFKXt2b2lkIDA9PT1FJiYoRT1Qcm9taXNlKTt2YXIgQz1uZXcgUihvKEEsSSxCLFEpLEUpO3JldHVybiBnLmlzR2VuZXJhdG9yRnVuY3Rpb24oSSk/QzpDLm5leHQoKS50aGVuKChmdW5jdGlvbihBKXtyZXR1cm4gQS5kb25lP0EudmFsdWU6Qy5uZXh0KCl9KSl9LEcoRiksZShGLGksIkdlbmVyYXRvciIpLGUoRixDLChmdW5jdGlvbigpe3JldHVybiB0aGlzfSkpLGUoRiwidG9TdHJpbmciLChmdW5jdGlvbigpe3JldHVybiJbb2JqZWN0IEdlbmVyYXRvcl0ifSkpLGcua2V5cz1mdW5jdGlvbihBKXt2YXIgZz1PYmplY3QoQSksST1bXTtmb3IodmFyIEIgaW4gZylJLnB1c2goQik7cmV0dXJuIEkucmV2ZXJzZSgpLGZ1bmN0aW9uIEEoKXtmb3IoO0kubGVuZ3RoOyl7dmFyIEI9SS5wb3AoKTtpZihCIGluIGcpcmV0dXJuIEEudmFsdWU9QixBLmRvbmU9ITEsQX1yZXR1cm4gQS5kb25lPSEwLEF9fSxnLnZhbHVlcz1NLE4ucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpOLHJlc2V0OmZ1bmN0aW9uKGcpe2lmKHRoaXMucHJldj0wLHRoaXMubmV4dD0wLHRoaXMuc2VudD10aGlzLl9zZW50PUEsdGhpcy5kb25lPSExLHRoaXMuZGVsZWdhdGU9bnVsbCx0aGlzLm1ldGhvZD0ibmV4dCIsdGhpcy5hcmc9QSx0aGlzLnRyeUVudHJpZXMuZm9yRWFjaChwKSwhZylmb3IodmFyIEkgaW4gdGhpcykidCI9PT1JLmNoYXJBdCgwKSYmQi5jYWxsKHRoaXMsSSkmJiFpc05hTigrSS5zbGljZSgxKSkmJih0aGlzW0ldPUEpfSxzdG9wOmZ1bmN0aW9uKCl7dGhpcy5kb25lPSEwO3ZhciBBPXRoaXMudHJ5RW50cmllc1swXS5jb21wbGV0aW9uO2lmKCJ0aHJvdyI9PT1BLnR5cGUpdGhyb3cgQS5hcmc7cmV0dXJuIHRoaXMucnZhbH0sZGlzcGF0Y2hFeGNlcHRpb246ZnVuY3Rpb24oZyl7aWYodGhpcy5kb25lKXRocm93IGc7dmFyIEk9dGhpcztmdW5jdGlvbiBRKEIsUSl7cmV0dXJuIHQudHlwZT0idGhyb3ciLHQuYXJnPWcsSS5uZXh0PUIsUSYmKEkubWV0aG9kPSJuZXh0IixJLmFyZz1BKSwhIVF9Zm9yKHZhciBFPXRoaXMudHJ5RW50cmllcy5sZW5ndGgtMTtFPj0wOy0tRSl7dmFyIEM9dGhpcy50cnlFbnRyaWVzW0VdLHQ9Qy5jb21wbGV0aW9uO2lmKCJyb290Ij09PUMudHJ5TG9jKXJldHVybiBRKCJlbmQiKTtpZihDLnRyeUxvYzw9dGhpcy5wcmV2KXt2YXIgaT1CLmNhbGwoQywiY2F0Y2hMb2MiKSxlPUIuY2FsbChDLCJmaW5hbGx5TG9jIik7aWYoaSYmZSl7aWYodGhpcy5wcmV2PEMuY2F0Y2hMb2MpcmV0dXJuIFEoQy5jYXRjaExvYywhMCk7aWYodGhpcy5wcmV2PEMuZmluYWxseUxvYylyZXR1cm4gUShDLmZpbmFsbHlMb2MpfWVsc2UgaWYoaSl7aWYodGhpcy5wcmV2PEMuY2F0Y2hMb2MpcmV0dXJuIFEoQy5jYXRjaExvYywhMCl9ZWxzZXtpZighZSl0aHJvdyBFcnJvcigidHJ5IHN0YXRlbWVudCB3aXRob3V0IGNhdGNoIG9yIGZpbmFsbHkiKTtpZih0aGlzLnByZXY8Qy5maW5hbGx5TG9jKXJldHVybiBRKEMuZmluYWxseUxvYyl9fX19LGFicnVwdDpmdW5jdGlvbihBLGcpe2Zvcih2YXIgST10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7ST49MDstLUkpe3ZhciBRPXRoaXMudHJ5RW50cmllc1tJXTtpZihRLnRyeUxvYzw9dGhpcy5wcmV2JiZCLmNhbGwoUSwiZmluYWxseUxvYyIpJiZ0aGlzLnByZXY8US5maW5hbGx5TG9jKXt2YXIgRT1RO2JyZWFrfX1FJiYoImJyZWFrIj09PUF8fCJjb250aW51ZSI9PT1BKSYmRS50cnlMb2M8PWcmJmc8PUUuZmluYWxseUxvYyYmKEU9bnVsbCk7dmFyIEM9RT9FLmNvbXBsZXRpb246e307cmV0dXJuIEMudHlwZT1BLEMuYXJnPWcsRT8odGhpcy5tZXRob2Q9Im5leHQiLHRoaXMubmV4dD1FLmZpbmFsbHlMb2MsZik6dGhpcy5jb21wbGV0ZShDKX0sY29tcGxldGU6ZnVuY3Rpb24oQSxnKXtpZigidGhyb3ciPT09QS50eXBlKXRocm93IEEuYXJnO3JldHVybiJicmVhayI9PT1BLnR5cGV8fCJjb250aW51ZSI9PT1BLnR5cGU/dGhpcy5uZXh0PUEuYXJnOiJyZXR1cm4iPT09QS50eXBlPyh0aGlzLnJ2YWw9dGhpcy5hcmc9QS5hcmcsdGhpcy5tZXRob2Q9InJldHVybiIsdGhpcy5uZXh0PSJlbmQiKToibm9ybWFsIj09PUEudHlwZSYmZyYmKHRoaXMubmV4dD1nKSxmfSxmaW5pc2g6ZnVuY3Rpb24oQSl7Zm9yKHZhciBnPXRoaXMudHJ5RW50cmllcy5sZW5ndGgtMTtnPj0wOy0tZyl7dmFyIEk9dGhpcy50cnlFbnRyaWVzW2ddO2lmKEkuZmluYWxseUxvYz09PUEpcmV0dXJuIHRoaXMuY29tcGxldGUoSS5jb21wbGV0aW9uLEkuYWZ0ZXJMb2MpLHAoSSksZn19LGNhdGNoOmZ1bmN0aW9uKEEpe2Zvcih2YXIgZz10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7Zz49MDstLWcpe3ZhciBJPXRoaXMudHJ5RW50cmllc1tnXTtpZihJLnRyeUxvYz09PUEpe3ZhciBCPUkuY29tcGxldGlvbjtpZigidGhyb3ciPT09Qi50eXBlKXt2YXIgUT1CLmFyZztwKEkpfXJldHVybiBRfX10aHJvdyBFcnJvcigiaWxsZWdhbCBjYXRjaCBhdHRlbXB0Iil9LGRlbGVnYXRlWWllbGQ6ZnVuY3Rpb24oZyxJLEIpe3JldHVybiB0aGlzLmRlbGVnYXRlPXtpdGVyYXRvcjpNKGcpLHJlc3VsdE5hbWU6SSxuZXh0TG9jOkJ9LCJuZXh0Ij09PXRoaXMubWV0aG9kJiYodGhpcy5hcmc9QSksZn19LGd9ZnVuY3Rpb24gcyhBLGcpe3JldHVybihzPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKEEsZyl7cmV0dXJuIEEuX19wcm90b19fPWcsQX0pKEEsZyl9ZnVuY3Rpb24gYyhBLGcsSSxCKXt2YXIgUT10KGkoMSZCP0EucHJvdG90eXBlOkEpLGcsSSk7cmV0dXJuIDImQiYmImZ1bmN0aW9uIj09dHlwZW9mIFE/ZnVuY3Rpb24oQSl7cmV0dXJuIFEuYXBwbHkoSSxBKX06UX1mdW5jdGlvbiBoKGcpe3JldHVybiBmdW5jdGlvbihnKXtpZihBcnJheS5pc0FycmF5KGcpKXJldHVybiBBKGcpfShnKXx8ZnVuY3Rpb24oQSl7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJm51bGwhPUFbU3ltYm9sLml0ZXJhdG9yXXx8bnVsbCE9QVsiQEBpdGVyYXRvciJdKXJldHVybiBBcnJheS5mcm9tKEEpfShnKXx8ZnVuY3Rpb24oZyxJKXtpZihnKXtpZigic3RyaW5nIj09dHlwZW9mIGcpcmV0dXJuIEEoZyxJKTt2YXIgQj17fS50b1N0cmluZy5jYWxsKGcpLnNsaWNlKDgsLTEpO3JldHVybiJPYmplY3QiPT09QiYmZy5jb25zdHJ1Y3RvciYmKEI9Zy5jb25zdHJ1Y3Rvci5uYW1lKSwiTWFwIj09PUJ8fCJTZXQiPT09Qj9BcnJheS5mcm9tKGcpOiJBcmd1bWVudHMiPT09Qnx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QoQik/QShnLEkpOnZvaWQgMH19KGcpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBzcHJlYWQgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfSgpfWZ1bmN0aW9uIGYoQSl7dmFyIGc9ZnVuY3Rpb24oQSxnKXtpZigib2JqZWN0IiE9dHlwZW9mIEF8fCFBKXJldHVybiBBO3ZhciBJPUFbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1JKXt2YXIgQj1JLmNhbGwoQSxnfHwiZGVmYXVsdCIpO2lmKCJvYmplY3QiIT10eXBlb2YgQilyZXR1cm4gQjt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybigic3RyaW5nIj09PWc/U3RyaW5nOk51bWJlcikoQSl9KEEsInN0cmluZyIpO3JldHVybiJzeW1ib2wiPT10eXBlb2YgZz9nOmcrIiJ9ZnVuY3Rpb24geShBKXtyZXR1cm4oeT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihBKXtyZXR1cm4gdHlwZW9mIEF9OmZ1bmN0aW9uKEEpe3JldHVybiBBJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZBLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZBIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgQX0pKEEpfXZhciB1PSJ1bmRlZmluZWQiIT10eXBlb2YgZ2xvYmFsVGhpcz9nbG9iYWxUaGlzOiJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93P3dpbmRvdzoidW5kZWZpbmVkIiE9dHlwZW9mIGdsb2JhbD9nbG9iYWw6InVuZGVmaW5lZCIhPXR5cGVvZiBzZWxmP3NlbGY6e30sRD1mdW5jdGlvbihBKXt0cnl7cmV0dXJuISFBKCl9Y2F0Y2goZyl7cmV0dXJuITB9fSx3PXt9LnRvU3RyaW5nLGw9ZnVuY3Rpb24oQSl7cmV0dXJuIHcuY2FsbChBKS5zbGljZSg4LC0xKX0sZD1sLEY9IiIuc3BsaXQsRz1EKChmdW5jdGlvbigpe3JldHVybiFPYmplY3QoInoiKS5wcm9wZXJ0eUlzRW51bWVyYWJsZSgwKX0pKT9mdW5jdGlvbihBKXtyZXR1cm4iU3RyaW5nIj09ZChBKT9GLmNhbGwoQSwiIik6T2JqZWN0KEEpfTpPYmplY3QsUj1mdW5jdGlvbihBKXtpZihudWxsPT1BKXRocm93IFR5cGVFcnJvcigiQ2FuJ3QgY2FsbCBtZXRob2Qgb24gIitBKTtyZXR1cm4gQX0sVT1HLGs9UixTPWZ1bmN0aW9uKEEpe3JldHVybiBVKGsoQSkpfSxwPWZ1bmN0aW9uKEEpe3JldHVybiBBJiZBLk1hdGg9PU1hdGgmJkF9LE49cCgib2JqZWN0Ij09dHlwZW9mIGdsb2JhbFRoaXMmJmdsb2JhbFRoaXMpfHxwKCJvYmplY3QiPT10eXBlb2Ygd2luZG93JiZ3aW5kb3cpfHxwKCJvYmplY3QiPT10eXBlb2Ygc2VsZiYmc2VsZil8fHAoIm9iamVjdCI9PXR5cGVvZiB1JiZ1KXx8ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30oKXx8RnVuY3Rpb24oInJldHVybiB0aGlzIikoKSxNPXtleHBvcnRzOnt9fSxZPSFEKChmdW5jdGlvbigpe3JldHVybiA3IT1PYmplY3QuZGVmaW5lUHJvcGVydHkoe30sMSx7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIDd9fSlbMV19KSksSD17fSx2PWZ1bmN0aW9uKEEpe3JldHVybiJvYmplY3QiPT10eXBlb2YgQT9udWxsIT09QToiZnVuY3Rpb24iPT10eXBlb2YgQX0sTD12LEo9Ti5kb2N1bWVudCxtPUwoSikmJkwoSi5jcmVhdGVFbGVtZW50KSxLPWZ1bmN0aW9uKEEpe3JldHVybiBtP0ouY3JlYXRlRWxlbWVudChBKTp7fX0seD1LLHE9IVkmJiFEKChmdW5jdGlvbigpe3JldHVybiA3IT1PYmplY3QuZGVmaW5lUHJvcGVydHkoeCgiZGl2IiksImEiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gN319KS5hfSkpLGI9dixUPWZ1bmN0aW9uKEEpe2lmKCFiKEEpKXRocm93IFR5cGVFcnJvcihTdHJpbmcoQSkrIiBpcyBub3QgYW4gb2JqZWN0Iik7cmV0dXJuIEF9LE89dixQPWZ1bmN0aW9uKEEsZyl7aWYoIU8oQSkpcmV0dXJuIEE7dmFyIEksQjtpZihnJiYiZnVuY3Rpb24iPT10eXBlb2YoST1BLnRvU3RyaW5nKSYmIU8oQj1JLmNhbGwoQSkpKXJldHVybiBCO2lmKCJmdW5jdGlvbiI9PXR5cGVvZihJPUEudmFsdWVPZikmJiFPKEI9SS5jYWxsKEEpKSlyZXR1cm4gQjtpZighZyYmImZ1bmN0aW9uIj09dHlwZW9mKEk9QS50b1N0cmluZykmJiFPKEI9SS5jYWxsKEEpKSlyZXR1cm4gQjt0aHJvdyBUeXBlRXJyb3IoIkNhbid0IGNvbnZlcnQgb2JqZWN0IHRvIHByaW1pdGl2ZSB2YWx1ZSIpfSxXPVksWj1xLGo9VCxYPVAsVj1PYmplY3QuZGVmaW5lUHJvcGVydHk7SC5mPVc/VjpmdW5jdGlvbihBLGcsSSl7aWYoaihBKSxnPVgoZywhMCksaihJKSxaKXRyeXtyZXR1cm4gVihBLGcsSSl9Y2F0Y2goQil7fWlmKCJnZXQiaW4gSXx8InNldCJpbiBJKXRocm93IFR5cGVFcnJvcigiQWNjZXNzb3JzIG5vdCBzdXBwb3J0ZWQiKTtyZXR1cm4idmFsdWUiaW4gSSYmKEFbZ109SS52YWx1ZSksQX07dmFyIHo9ZnVuY3Rpb24oQSxnKXtyZXR1cm57ZW51bWVyYWJsZTohKDEmQSksY29uZmlndXJhYmxlOiEoMiZBKSx3cml0YWJsZTohKDQmQSksdmFsdWU6Z319LF89SCwkPXosQUE9WT9mdW5jdGlvbihBLGcsSSl7cmV0dXJuIF8uZihBLGcsJCgxLEkpKX06ZnVuY3Rpb24oQSxnLEkpe3JldHVybiBBW2ddPUksQX0sZ0E9TixJQT1BQSxCQT1mdW5jdGlvbihBLGcpe3RyeXtJQShnQSxBLGcpfWNhdGNoKEkpe2dBW0FdPWd9cmV0dXJuIGd9LFFBPUJBLEVBPSJfX2NvcmUtanNfc2hhcmVkX18iLENBPU5bRUFdfHxRQShFQSx7fSksdEE9Q0E7KE0uZXhwb3J0cz1mdW5jdGlvbihBLGcpe3JldHVybiB0QVtBXXx8KHRBW0FdPXZvaWQgMCE9PWc/Zzp7fSl9KSgidmVyc2lvbnMiLFtdKS5wdXNoKHt2ZXJzaW9uOiIzLjEyLjEiLG1vZGU6Imdsb2JhbCIsY29weXJpZ2h0OiLCqSAyMDIxIERlbmlzIFB1c2hrYXJldiAoemxvaXJvY2sucnUpIn0pO3ZhciBpQSxlQSxvQT1NLmV4cG9ydHMsckE9UixuQT1mdW5jdGlvbihBKXtyZXR1cm4gT2JqZWN0KHJBKEEpKX0sYUE9bkEsc0E9e30uaGFzT3duUHJvcGVydHksY0E9ZnVuY3Rpb24oQSxnKXtyZXR1cm4gc0EuY2FsbChhQShBKSxnKX0saEE9MCxmQT1NYXRoLnJhbmRvbSgpLHlBPWZ1bmN0aW9uKEEpe3JldHVybiJTeW1ib2woIitTdHJpbmcodm9pZCAwPT09QT8iIjpBKSsiKV8iKygrK2hBK2ZBKS50b1N0cmluZygzNil9LHVBPU4sREE9Tix3QT1mdW5jdGlvbihBKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgQT9BOnZvaWQgMH0sbEE9ZnVuY3Rpb24oQSxnKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aDwyP3dBKHVBW0FdKXx8d0EoREFbQV0pOnVBW0FdJiZ1QVtBXVtnXXx8REFbQV0mJkRBW0FdW2ddfSxkQT1sQSgibmF2aWdhdG9yIiwidXNlckFnZW50Iil8fCIiLEZBPWRBLEdBPU4ucHJvY2VzcyxSQT1HQSYmR0EudmVyc2lvbnMsVUE9UkEmJlJBLnY4O1VBP2VBPShpQT1VQS5zcGxpdCgiLiIpKVswXTw0PzE6aUFbMF0raUFbMV06RkEmJighKGlBPUZBLm1hdGNoKC9FZGdlXC8oXGQrKS8pKXx8aUFbMV0+PTc0KSYmKGlBPUZBLm1hdGNoKC9DaHJvbWVcLyhcZCspLykpJiYoZUE9aUFbMV0pO3ZhciBrQSxTQT1lQSYmK2VBLHBBPVNBLE5BPUQsTUE9ISFPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzJiYhTkEoKGZ1bmN0aW9uKCl7cmV0dXJuIVN0cmluZyhTeW1ib2woKSl8fCFTeW1ib2wuc2hhbSYmcEEmJnBBPDQxfSkpLFlBPU1BJiYhU3ltYm9sLnNoYW0mJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yLEhBPU4sdkE9Y0EsTEE9eUEsSkE9TUEsbUE9WUEsS0E9b0EoIndrcyIpLHhBPUhBLlN5bWJvbCxxQT1tQT94QTp4QSYmeEEud2l0aG91dFNldHRlcnx8TEEsYkE9ZnVuY3Rpb24oQSl7cmV0dXJuIHZBKEtBLEEpJiYoSkF8fCJzdHJpbmciPT10eXBlb2YgS0FbQV0pfHwoSkEmJnZBKHhBLEEpP0tBW0FdPXhBW0FdOktBW0FdPXFBKCJTeW1ib2wuIitBKSksS0FbQV19LFRBPU1hdGguY2VpbCxPQT1NYXRoLmZsb29yLFBBPWZ1bmN0aW9uKEEpe3JldHVybiBpc05hTihBPStBKT8wOihBPjA/T0E6VEEpKEEpfSxXQT1QQSxaQT1NYXRoLm1pbixqQT1mdW5jdGlvbihBKXtyZXR1cm4gQT4wP1pBKFdBKEEpLDkwMDcxOTkyNTQ3NDA5OTEpOjB9LFhBPVBBLFZBPU1hdGgubWF4LHpBPU1hdGgubWluLF9BPWZ1bmN0aW9uKEEsZyl7dmFyIEk9WEEoQSk7cmV0dXJuIEk8MD9WQShJK2csMCk6ekEoSSxnKX0sJEE9UyxBZz1qQSxnZz1fQSxJZz1mdW5jdGlvbihBKXtyZXR1cm4gZnVuY3Rpb24oZyxJLEIpe3ZhciBRLEU9JEEoZyksQz1BZyhFLmxlbmd0aCksdD1nZyhCLEMpO2lmKEEmJkkhPUkpe2Zvcig7Qz50OylpZigoUT1FW3QrK10pIT1RKXJldHVybiEwfWVsc2UgZm9yKDtDPnQ7dCsrKWlmKChBfHx0IGluIEUpJiZFW3RdPT09SSlyZXR1cm4gQXx8dHx8MDtyZXR1cm4hQSYmLTF9fSxCZz17aW5jbHVkZXM6SWcoITApLGluZGV4T2Y6SWcoITEpfSxRZz17fSxFZz1jQSxDZz1TLHRnPUJnLmluZGV4T2YsaWc9UWcsZWc9ZnVuY3Rpb24oQSxnKXt2YXIgSSxCPUNnKEEpLFE9MCxFPVtdO2ZvcihJIGluIEIpIUVnKGlnLEkpJiZFZyhCLEkpJiZFLnB1c2goSSk7Zm9yKDtnLmxlbmd0aD5ROylFZyhCLEk9Z1tRKytdKSYmKH50ZyhFLEkpfHxFLnB1c2goSSkpO3JldHVybiBFfSxvZz1bImNvbnN0cnVjdG9yIiwiaGFzT3duUHJvcGVydHkiLCJpc1Byb3RvdHlwZU9mIiwicHJvcGVydHlJc0VudW1lcmFibGUiLCJ0b0xvY2FsZVN0cmluZyIsInRvU3RyaW5nIiwidmFsdWVPZiJdLHJnPWVnLG5nPW9nLGFnPU9iamVjdC5rZXlzfHxmdW5jdGlvbihBKXtyZXR1cm4gcmcoQSxuZyl9LHNnPUgsY2c9VCxoZz1hZyxmZz1ZP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzOmZ1bmN0aW9uKEEsZyl7Y2coQSk7Zm9yKHZhciBJLEI9aGcoZyksUT1CLmxlbmd0aCxFPTA7UT5FOylzZy5mKEEsST1CW0UrK10sZ1tJXSk7cmV0dXJuIEF9LHlnPWxBKCJkb2N1bWVudCIsImRvY3VtZW50RWxlbWVudCIpLHVnPXlBLERnPW9BKCJrZXlzIiksd2c9ZnVuY3Rpb24oQSl7cmV0dXJuIERnW0FdfHwoRGdbQV09dWcoQSkpfSxsZz1ULGRnPWZnLEZnPW9nLEdnPVFnLFJnPXlnLFVnPUssa2c9InByb3RvdHlwZSIsU2c9InNjcmlwdCIscGc9d2coIklFX1BST1RPIiksTmc9ZnVuY3Rpb24oKXt9LE1nPWZ1bmN0aW9uKEEpe3JldHVybiI8IitTZysiPiIrQSsiPC8iK1NnKyI+In0sWWc9ZnVuY3Rpb24oKXt0cnl7a0E9ZG9jdW1lbnQuZG9tYWluJiZuZXcgQWN0aXZlWE9iamVjdCgiaHRtbGZpbGUiKX1jYXRjaChRKXt9dmFyIEEsZyxJO1lnPWtBP2Z1bmN0aW9uKEEpe0Eud3JpdGUoTWcoIiIpKSxBLmNsb3NlKCk7dmFyIGc9QS5wYXJlbnRXaW5kb3cuT2JqZWN0O3JldHVybiBBPW51bGwsZ30oa0EpOihnPVVnKCJpZnJhbWUiKSxJPSJqYXZhIitTZysiOiIsZy5zdHlsZS5kaXNwbGF5PSJub25lIixSZy5hcHBlbmRDaGlsZChnKSxnLnNyYz1TdHJpbmcoSSksKEE9Zy5jb250ZW50V2luZG93LmRvY3VtZW50KS5vcGVuKCksQS53cml0ZShNZygiZG9jdW1lbnQuRj1PYmplY3QiKSksQS5jbG9zZSgpLEEuRik7Zm9yKHZhciBCPUZnLmxlbmd0aDtCLS07KWRlbGV0ZSBZZ1trZ11bRmdbQl1dO3JldHVybiBZZygpfTtHZ1twZ109ITA7dmFyIEhnPU9iamVjdC5jcmVhdGV8fGZ1bmN0aW9uKEEsZyl7dmFyIEk7cmV0dXJuIG51bGwhPT1BPyhOZ1trZ109bGcoQSksST1uZXcgTmcsTmdba2ddPW51bGwsSVtwZ109QSk6ST1ZZygpLHZvaWQgMD09PWc/STpkZyhJLGcpfSx2Zz1IZyxMZz1ILEpnPWJBKCJ1bnNjb3BhYmxlcyIpLG1nPUFycmF5LnByb3RvdHlwZTtudWxsPT1tZ1tKZ10mJkxnLmYobWcsSmcse2NvbmZpZ3VyYWJsZTohMCx2YWx1ZTp2ZyhudWxsKX0pO3ZhciBLZz1mdW5jdGlvbihBKXttZ1tKZ11bQV09ITB9LHhnPXt9LHFnPUNBLGJnPUZ1bmN0aW9uLnRvU3RyaW5nOyJmdW5jdGlvbiIhPXR5cGVvZiBxZy5pbnNwZWN0U291cmNlJiYocWcuaW5zcGVjdFNvdXJjZT1mdW5jdGlvbihBKXtyZXR1cm4gYmcuY2FsbChBKX0pO3ZhciBUZyxPZyxQZyxXZz1xZy5pbnNwZWN0U291cmNlLFpnPVdnLGpnPU4uV2Vha01hcCxYZz0iZnVuY3Rpb24iPT10eXBlb2YgamcmJi9uYXRpdmUgY29kZS8udGVzdChaZyhqZykpLFZnPXYsemc9QUEsX2c9Y0EsJGc9Q0EsQUk9d2csZ0k9UWcsSUk9Ik9iamVjdCBhbHJlYWR5IGluaXRpYWxpemVkIixCST1OLldlYWtNYXA7aWYoWGd8fCRnLnN0YXRlKXt2YXIgUUk9JGcuc3RhdGV8fCgkZy5zdGF0ZT1uZXcgQkkpLEVJPVFJLmdldCxDST1RSS5oYXMsdEk9UUkuc2V0O1RnPWZ1bmN0aW9uKEEsZyl7aWYoQ0kuY2FsbChRSSxBKSl0aHJvdyBuZXcgVHlwZUVycm9yKElJKTtyZXR1cm4gZy5mYWNhZGU9QSx0SS5jYWxsKFFJLEEsZyksZ30sT2c9ZnVuY3Rpb24oQSl7cmV0dXJuIEVJLmNhbGwoUUksQSl8fHt9fSxQZz1mdW5jdGlvbihBKXtyZXR1cm4gQ0kuY2FsbChRSSxBKX19ZWxzZXt2YXIgaUk9QUkoInN0YXRlIik7Z0lbaUldPSEwLFRnPWZ1bmN0aW9uKEEsZyl7aWYoX2coQSxpSSkpdGhyb3cgbmV3IFR5cGVFcnJvcihJSSk7cmV0dXJuIGcuZmFjYWRlPUEsemcoQSxpSSxnKSxnfSxPZz1mdW5jdGlvbihBKXtyZXR1cm4gX2coQSxpSSk/QVtpSV06e319LFBnPWZ1bmN0aW9uKEEpe3JldHVybiBfZyhBLGlJKX19dmFyIGVJPXtzZXQ6VGcsZ2V0Ok9nLGhhczpQZyxlbmZvcmNlOmZ1bmN0aW9uKEEpe3JldHVybiBQZyhBKT9PZyhBKTpUZyhBLHt9KX0sZ2V0dGVyRm9yOmZ1bmN0aW9uKEEpe3JldHVybiBmdW5jdGlvbihnKXt2YXIgSTtpZighVmcoZyl8fChJPU9nKGcpKS50eXBlIT09QSl0aHJvdyBUeXBlRXJyb3IoIkluY29tcGF0aWJsZSByZWNlaXZlciwgIitBKyIgcmVxdWlyZWQiKTtyZXR1cm4gSX19fSxvST17fSxyST17fSxuST17fS5wcm9wZXJ0eUlzRW51bWVyYWJsZSxhST1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLHNJPWFJJiYhbkkuY2FsbCh7MToyfSwxKTtySS5mPXNJP2Z1bmN0aW9uKEEpe3ZhciBnPWFJKHRoaXMsQSk7cmV0dXJuISFnJiZnLmVudW1lcmFibGV9Om5JO3ZhciBjST1ZLGhJPXJJLGZJPXoseUk9Uyx1ST1QLERJPWNBLHdJPXEsbEk9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjtvSS5mPWNJP2xJOmZ1bmN0aW9uKEEsZyl7aWYoQT15SShBKSxnPXVJKGcsITApLHdJKXRyeXtyZXR1cm4gbEkoQSxnKX1jYXRjaChJKXt9aWYoREkoQSxnKSlyZXR1cm4gZkkoIWhJLmYuY2FsbChBLGcpLEFbZ10pfTt2YXIgZEk9e2V4cG9ydHM6e319LEZJPU4sR0k9QUEsUkk9Y0EsVUk9QkEsa0k9V2csU0k9ZUkuZ2V0LHBJPWVJLmVuZm9yY2UsTkk9U3RyaW5nKFN0cmluZykuc3BsaXQoIlN0cmluZyIpOyhkSS5leHBvcnRzPWZ1bmN0aW9uKEEsZyxJLEIpe3ZhciBRLEU9ISFCJiYhIUIudW5zYWZlLEM9ISFCJiYhIUIuZW51bWVyYWJsZSx0PSEhQiYmISFCLm5vVGFyZ2V0R2V0OyJmdW5jdGlvbiI9PXR5cGVvZiBJJiYoInN0cmluZyIhPXR5cGVvZiBnfHxSSShJLCJuYW1lIil8fEdJKEksIm5hbWUiLGcpLChRPXBJKEkpKS5zb3VyY2V8fChRLnNvdXJjZT1OSS5qb2luKCJzdHJpbmciPT10eXBlb2YgZz9nOiIiKSkpLEEhPT1GST8oRT8hdCYmQVtnXSYmKEM9ITApOmRlbGV0ZSBBW2ddLEM/QVtnXT1JOkdJKEEsZyxJKSk6Qz9BW2ddPUk6VUkoZyxJKX0pKEZ1bmN0aW9uLnByb3RvdHlwZSwidG9TdHJpbmciLChmdW5jdGlvbigpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiB0aGlzJiZTSSh0aGlzKS5zb3VyY2V8fGtJKHRoaXMpfSkpO3ZhciBNST1kSS5leHBvcnRzLFlJPXt9LEhJPWVnLHZJPW9nLmNvbmNhdCgibGVuZ3RoIiwicHJvdG90eXBlIik7WUkuZj1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lc3x8ZnVuY3Rpb24oQSl7cmV0dXJuIEhJKEEsdkkpfTt2YXIgTEk9e307TEkuZj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzO3ZhciBKSSxtSSxLSSx4ST1ZSSxxST1MSSxiST1ULFRJPWxBKCJSZWZsZWN0Iiwib3duS2V5cyIpfHxmdW5jdGlvbihBKXt2YXIgZz14SS5mKGJJKEEpKSxJPXFJLmY7cmV0dXJuIEk/Zy5jb25jYXQoSShBKSk6Z30sT0k9Y0EsUEk9VEksV0k9b0ksWkk9SCxqST1ELFhJPS8jfFwucHJvdG90eXBlXC4vLFZJPWZ1bmN0aW9uKEEsZyl7dmFyIEk9X0lbekkoQSldO3JldHVybiBJPT1BQnx8SSE9JEkmJigiZnVuY3Rpb24iPT10eXBlb2YgZz9qSShnKTohIWcpfSx6ST1WSS5ub3JtYWxpemU9ZnVuY3Rpb24oQSl7cmV0dXJuIFN0cmluZyhBKS5yZXBsYWNlKFhJLCIuIikudG9Mb3dlckNhc2UoKX0sX0k9VkkuZGF0YT17fSwkST1WSS5OQVRJVkU9Ik4iLEFCPVZJLlBPTFlGSUxMPSJQIixnQj1WSSxJQj1OLEJCPW9JLmYsUUI9QUEsRUI9TUksQ0I9QkEsdEI9ZnVuY3Rpb24oQSxnKXtmb3IodmFyIEk9UEkoZyksQj1aSS5mLFE9V0kuZixFPTA7RTxJLmxlbmd0aDtFKyspe3ZhciBDPUlbRV07T0koQSxDKXx8QihBLEMsUShnLEMpKX19LGlCPWdCLGVCPWZ1bmN0aW9uKEEsZyl7dmFyIEksQixRLEUsQyx0PUEudGFyZ2V0LGk9QS5nbG9iYWwsZT1BLnN0YXQ7aWYoST1pP0lCOmU/SUJbdF18fENCKHQse30pOihJQlt0XXx8e30pLnByb3RvdHlwZSlmb3IoQiBpbiBnKXtpZihFPWdbQl0sUT1BLm5vVGFyZ2V0R2V0PyhDPUJCKEksQikpJiZDLnZhbHVlOklbQl0sIWlCKGk/Qjp0KyhlPyIuIjoiIyIpK0IsQS5mb3JjZWQpJiZ2b2lkIDAhPT1RKXtpZih0eXBlb2YgRT09dHlwZW9mIFEpY29udGludWU7dEIoRSxRKX0oQS5zaGFtfHxRJiZRLnNoYW0pJiZRQihFLCJzaGFtIiwhMCksRUIoSSxCLEUsQSl9fSxvQj0hRCgoZnVuY3Rpb24oKXtmdW5jdGlvbiBBKCl7fXJldHVybiBBLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1udWxsLE9iamVjdC5nZXRQcm90b3R5cGVPZihuZXcgQSkhPT1BLnByb3RvdHlwZX0pKSxyQj1jQSxuQj1uQSxhQj1vQixzQj13ZygiSUVfUFJPVE8iKSxjQj1PYmplY3QucHJvdG90eXBlLGhCPWFCP09iamVjdC5nZXRQcm90b3R5cGVPZjpmdW5jdGlvbihBKXtyZXR1cm4gQT1uQihBKSxyQihBLHNCKT9BW3NCXToiZnVuY3Rpb24iPT10eXBlb2YgQS5jb25zdHJ1Y3RvciYmQSBpbnN0YW5jZW9mIEEuY29uc3RydWN0b3I/QS5jb25zdHJ1Y3Rvci5wcm90b3R5cGU6QSBpbnN0YW5jZW9mIE9iamVjdD9jQjpudWxsfSxmQj1ELHlCPWhCLHVCPUFBLERCPWNBLHdCPWJBKCJpdGVyYXRvciIpLGxCPSExO1tdLmtleXMmJigibmV4dCJpbihLST1bXS5rZXlzKCkpPyhtST15Qih5QihLSSkpKSE9PU9iamVjdC5wcm90b3R5cGUmJihKST1tSSk6bEI9ITApLChudWxsPT1KSXx8ZkIoKGZ1bmN0aW9uKCl7dmFyIEE9e307cmV0dXJuIEpJW3dCXS5jYWxsKEEpIT09QX0pKSkmJihKST17fSksREIoSkksd0IpfHx1QihKSSx3QiwoZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pKTt2YXIgZEI9e0l0ZXJhdG9yUHJvdG90eXBlOkpJLEJVR0dZX1NBRkFSSV9JVEVSQVRPUlM6bEJ9LEZCPUguZixHQj1jQSxSQj1iQSgidG9TdHJpbmdUYWciKSxVQj1mdW5jdGlvbihBLGcsSSl7QSYmIUdCKEE9ST9BOkEucHJvdG90eXBlLFJCKSYmRkIoQSxSQix7Y29uZmlndXJhYmxlOiEwLHZhbHVlOmd9KX0sa0I9ZEIuSXRlcmF0b3JQcm90b3R5cGUsU0I9SGcscEI9eixOQj1VQixNQj14ZyxZQj1mdW5jdGlvbigpe3JldHVybiB0aGlzfSxIQj12LHZCPVQsTEI9ZnVuY3Rpb24oQSl7aWYoIUhCKEEpJiZudWxsIT09QSl0aHJvdyBUeXBlRXJyb3IoIkNhbid0IHNldCAiK1N0cmluZyhBKSsiIGFzIGEgcHJvdG90eXBlIik7cmV0dXJuIEF9LEpCPU9iamVjdC5zZXRQcm90b3R5cGVPZnx8KCJfX3Byb3RvX18iaW57fT9mdW5jdGlvbigpe3ZhciBBLGc9ITEsST17fTt0cnl7KEE9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihPYmplY3QucHJvdG90eXBlLCJfX3Byb3RvX18iKS5zZXQpLmNhbGwoSSxbXSksZz1JIGluc3RhbmNlb2YgQXJyYXl9Y2F0Y2goQil7fXJldHVybiBmdW5jdGlvbihJLEIpe3JldHVybiB2QihJKSxMQihCKSxnP0EuY2FsbChJLEIpOkkuX19wcm90b19fPUIsSX19KCk6dm9pZCAwKSxtQj1lQixLQj1mdW5jdGlvbihBLGcsSSl7dmFyIEI9ZysiIEl0ZXJhdG9yIjtyZXR1cm4gQS5wcm90b3R5cGU9U0Ioa0Ise25leHQ6cEIoMSxJKX0pLE5CKEEsQiwhMSksTUJbQl09WUIsQX0seEI9aEIscUI9SkIsYkI9VUIsVEI9QUEsT0I9TUksUEI9eGcsV0I9ZEIuSXRlcmF0b3JQcm90b3R5cGUsWkI9ZEIuQlVHR1lfU0FGQVJJX0lURVJBVE9SUyxqQj1iQSgiaXRlcmF0b3IiKSxYQj0ia2V5cyIsVkI9InZhbHVlcyIsekI9ImVudHJpZXMiLF9CPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9LCRCPVMsQVE9S2csZ1E9eGcsSVE9ZUksQlE9ZnVuY3Rpb24oQSxnLEksQixRLEUsQyl7S0IoSSxnLEIpO3ZhciB0LGksZSxvPWZ1bmN0aW9uKEEpe2lmKEE9PT1RJiZjKXJldHVybiBjO2lmKCFaQiYmQSBpbiBhKXJldHVybiBhW0FdO3N3aXRjaChBKXtjYXNlIFhCOmNhc2UgVkI6Y2FzZSB6QjpyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gbmV3IEkodGhpcyxBKX19cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBJKHRoaXMpfX0scj1nKyIgSXRlcmF0b3IiLG49ITEsYT1BLnByb3RvdHlwZSxzPWFbakJdfHxhWyJAQGl0ZXJhdG9yIl18fFEmJmFbUV0sYz0hWkImJnN8fG8oUSksaD0iQXJyYXkiPT1nJiZhLmVudHJpZXN8fHM7aWYoaCYmKHQ9eEIoaC5jYWxsKG5ldyBBKSksV0IhPT1PYmplY3QucHJvdG90eXBlJiZ0Lm5leHQmJih4Qih0KSE9PVdCJiYocUI/cUIodCxXQik6ImZ1bmN0aW9uIiE9dHlwZW9mIHRbakJdJiZUQih0LGpCLF9CKSksYkIodCxyLCEwKSkpLFE9PVZCJiZzJiZzLm5hbWUhPT1WQiYmKG49ITAsYz1mdW5jdGlvbigpe3JldHVybiBzLmNhbGwodGhpcyl9KSxhW2pCXSE9PWMmJlRCKGEsakIsYyksUEJbZ109YyxRKWlmKGk9e3ZhbHVlczpvKFZCKSxrZXlzOkU/YzpvKFhCKSxlbnRyaWVzOm8oekIpfSxDKWZvcihlIGluIGkpKFpCfHxufHwhKGUgaW4gYSkpJiZPQihhLGUsaVtlXSk7ZWxzZSBtQih7dGFyZ2V0OmcscHJvdG86ITAsZm9yY2VkOlpCfHxufSxpKTtyZXR1cm4gaX0sUVE9IkFycmF5IEl0ZXJhdG9yIixFUT1JUS5zZXQsQ1E9SVEuZ2V0dGVyRm9yKFFRKSx0UT1CUShBcnJheSwiQXJyYXkiLChmdW5jdGlvbihBLGcpe0VRKHRoaXMse3R5cGU6UVEsdGFyZ2V0OiRCKEEpLGluZGV4OjAsa2luZDpnfSl9KSwoZnVuY3Rpb24oKXt2YXIgQT1DUSh0aGlzKSxnPUEudGFyZ2V0LEk9QS5raW5kLEI9QS5pbmRleCsrO3JldHVybiFnfHxCPj1nLmxlbmd0aD8oQS50YXJnZXQ9dm9pZCAwLHt2YWx1ZTp2b2lkIDAsZG9uZTohMH0pOiJrZXlzIj09ST97dmFsdWU6Qixkb25lOiExfToidmFsdWVzIj09ST97dmFsdWU6Z1tCXSxkb25lOiExfTp7dmFsdWU6W0IsZ1tCXV0sZG9uZTohMX19KSwidmFsdWVzIik7Z1EuQXJndW1lbnRzPWdRLkFycmF5LEFRKCJrZXlzIiksQVEoInZhbHVlcyIpLEFRKCJlbnRyaWVzIik7dmFyIGlRPSJ1bmRlZmluZWQiIT10eXBlb2YgQXJyYXlCdWZmZXImJiJ1bmRlZmluZWQiIT10eXBlb2YgRGF0YVZpZXcsZVE9TUksb1E9ZnVuY3Rpb24oQSxnLEkpe2Zvcih2YXIgQiBpbiBnKWVRKEEsQixnW0JdLEkpO3JldHVybiBBfSxyUT1mdW5jdGlvbihBLGcsSSl7aWYoIShBIGluc3RhbmNlb2YgZykpdGhyb3cgVHlwZUVycm9yKCJJbmNvcnJlY3QgIisoST9JKyIgIjoiIikrImludm9jYXRpb24iKTtyZXR1cm4gQX0sblE9UEEsYVE9akEsc1E9ZnVuY3Rpb24oQSl7aWYodm9pZCAwPT09QSlyZXR1cm4gMDt2YXIgZz1uUShBKSxJPWFRKGcpO2lmKGchPT1JKXRocm93IFJhbmdlRXJyb3IoIldyb25nIGxlbmd0aCBvciBpbmRleCIpO3JldHVybiBJfSxjUT1NYXRoLmFicyxoUT1NYXRoLnBvdyxmUT1NYXRoLmZsb29yLHlRPU1hdGgubG9nLHVRPU1hdGguTE4yLERRPW5BLHdRPV9BLGxRPWpBLGRRPWZ1bmN0aW9uKEEpe2Zvcih2YXIgZz1EUSh0aGlzKSxJPWxRKGcubGVuZ3RoKSxCPWFyZ3VtZW50cy5sZW5ndGgsUT13UShCPjE/YXJndW1lbnRzWzFdOnZvaWQgMCxJKSxFPUI+Mj9hcmd1bWVudHNbMl06dm9pZCAwLEM9dm9pZCAwPT09RT9JOndRKEUsSSk7Qz5ROylnW1ErK109QTtyZXR1cm4gZ30sRlE9TixHUT1ZLFJRPWlRLFVRPUFBLGtRPW9RLFNRPUQscFE9clEsTlE9UEEsTVE9akEsWVE9c1EsSFE9e3BhY2s6ZnVuY3Rpb24oQSxnLEkpe3ZhciBCLFEsRSxDPW5ldyBBcnJheShJKSx0PTgqSS1nLTEsaT0oMTw8dCktMSxlPWk+PjEsbz0yMz09PWc/aFEoMiwtMjQpLWhRKDIsLTc3KTowLHI9QTwwfHwwPT09QSYmMS9BPDA/MTowLG49MDtmb3IoKEE9Y1EoQSkpIT1BfHxBPT09MS8wPyhRPUEhPUE/MTowLEI9aSk6KEI9ZlEoeVEoQSkvdVEpLEEqKEU9aFEoMiwtQikpPDEmJihCLS0sRSo9MiksKEErPUIrZT49MT9vL0U6bypoUSgyLDEtZSkpKkU+PTImJihCKyssRS89MiksQitlPj1pPyhRPTAsQj1pKTpCK2U+PTE/KFE9KEEqRS0xKSpoUSgyLGcpLEIrPWUpOihRPUEqaFEoMixlLTEpKmhRKDIsZyksQj0wKSk7Zz49ODtDW24rK109MjU1JlEsUS89MjU2LGctPTgpO2ZvcihCPUI8PGd8USx0Kz1nO3Q+MDtDW24rK109MjU1JkIsQi89MjU2LHQtPTgpO3JldHVybiBDWy0tbl18PTEyOCpyLEN9LHVucGFjazpmdW5jdGlvbihBLGcpe3ZhciBJLEI9QS5sZW5ndGgsUT04KkItZy0xLEU9KDE8PFEpLTEsQz1FPj4xLHQ9US03LGk9Qi0xLGU9QVtpLS1dLG89MTI3JmU7Zm9yKGU+Pj03O3Q+MDtvPTI1NipvK0FbaV0saS0tLHQtPTgpO2ZvcihJPW8mKDE8PC10KS0xLG8+Pj0tdCx0Kz1nO3Q+MDtJPTI1NipJK0FbaV0saS0tLHQtPTgpO2lmKDA9PT1vKW89MS1DO2Vsc2V7aWYobz09PUUpcmV0dXJuIEk/TmFOOmU/LTEvMDoxLzA7SSs9aFEoMixnKSxvLT1DfXJldHVybihlPy0xOjEpKkkqaFEoMixvLWcpfX0sdlE9aEIsTFE9SkIsSlE9WUkuZixtUT1ILmYsS1E9ZFEseFE9VUIscVE9ZUkuZ2V0LGJRPWVJLnNldCxUUT0iQXJyYXlCdWZmZXIiLE9RPSJEYXRhVmlldyIsUFE9InByb3RvdHlwZSIsV1E9Ildyb25nIGluZGV4IixaUT1GUVtUUV0salE9WlEsWFE9RlFbT1FdLFZRPVhRJiZYUVtQUV0selE9T2JqZWN0LnByb3RvdHlwZSxfUT1GUS5SYW5nZUVycm9yLCRRPUhRLnBhY2ssQUU9SFEudW5wYWNrLGdFPWZ1bmN0aW9uKEEpe3JldHVyblsyNTUmQV19LElFPWZ1bmN0aW9uKEEpe3JldHVyblsyNTUmQSxBPj44JjI1NV19LEJFPWZ1bmN0aW9uKEEpe3JldHVyblsyNTUmQSxBPj44JjI1NSxBPj4xNiYyNTUsQT4+MjQmMjU1XX0sUUU9ZnVuY3Rpb24oQSl7cmV0dXJuIEFbM108PDI0fEFbMl08PDE2fEFbMV08PDh8QVswXX0sRUU9ZnVuY3Rpb24oQSl7cmV0dXJuICRRKEEsMjMsNCl9LENFPWZ1bmN0aW9uKEEpe3JldHVybiAkUShBLDUyLDgpfSx0RT1mdW5jdGlvbihBLGcpe21RKEFbUFFdLGcse2dldDpmdW5jdGlvbigpe3JldHVybiBxUSh0aGlzKVtnXX19KX0saUU9ZnVuY3Rpb24oQSxnLEksQil7dmFyIFE9WVEoSSksRT1xUShBKTtpZihRK2c+RS5ieXRlTGVuZ3RoKXRocm93IF9RKFdRKTt2YXIgQz1xUShFLmJ1ZmZlcikuYnl0ZXMsdD1RK0UuYnl0ZU9mZnNldCxpPUMuc2xpY2UodCx0K2cpO3JldHVybiBCP2k6aS5yZXZlcnNlKCl9LGVFPWZ1bmN0aW9uKEEsZyxJLEIsUSxFKXt2YXIgQz1ZUShJKSx0PXFRKEEpO2lmKEMrZz50LmJ5dGVMZW5ndGgpdGhyb3cgX1EoV1EpO2Zvcih2YXIgaT1xUSh0LmJ1ZmZlcikuYnl0ZXMsZT1DK3QuYnl0ZU9mZnNldCxvPUIoK1EpLHI9MDtyPGc7cisrKWlbZStyXT1vW0U/cjpnLXItMV19O2lmKFJRKXtpZighU1EoKGZ1bmN0aW9uKCl7WlEoMSl9KSl8fCFTUSgoZnVuY3Rpb24oKXtuZXcgWlEoLTEpfSkpfHxTUSgoZnVuY3Rpb24oKXtyZXR1cm4gbmV3IFpRLG5ldyBaUSgxLjUpLG5ldyBaUShOYU4pLFpRLm5hbWUhPVRRfSkpKXtmb3IodmFyIG9FLHJFPShqUT1mdW5jdGlvbihBKXtyZXR1cm4gcFEodGhpcyxqUSksbmV3IFpRKFlRKEEpKX0pW1BRXT1aUVtQUV0sbkU9SlEoWlEpLGFFPTA7bkUubGVuZ3RoPmFFOykob0U9bkVbYUUrK10paW4galF8fFVRKGpRLG9FLFpRW29FXSk7ckUuY29uc3RydWN0b3I9alF9TFEmJnZRKFZRKSE9PXpRJiZMUShWUSx6USk7dmFyIHNFPW5ldyBYUShuZXcgalEoMikpLGNFPVZRLnNldEludDg7c0Uuc2V0SW50OCgwLDIxNDc0ODM2NDgpLHNFLnNldEludDgoMSwyMTQ3NDgzNjQ5KSwhc0UuZ2V0SW50OCgwKSYmc0UuZ2V0SW50OCgxKXx8a1EoVlEse3NldEludDg6ZnVuY3Rpb24oQSxnKXtjRS5jYWxsKHRoaXMsQSxnPDwyND4+MjQpfSxzZXRVaW50ODpmdW5jdGlvbihBLGcpe2NFLmNhbGwodGhpcyxBLGc8PDI0Pj4yNCl9fSx7dW5zYWZlOiEwfSl9ZWxzZSBqUT1mdW5jdGlvbihBKXtwUSh0aGlzLGpRLFRRKTt2YXIgZz1ZUShBKTtiUSh0aGlzLHtieXRlczpLUS5jYWxsKG5ldyBBcnJheShnKSwwKSxieXRlTGVuZ3RoOmd9KSxHUXx8KHRoaXMuYnl0ZUxlbmd0aD1nKX0sWFE9ZnVuY3Rpb24oQSxnLEkpe3BRKHRoaXMsWFEsT1EpLHBRKEEsalEsT1EpO3ZhciBCPXFRKEEpLmJ5dGVMZW5ndGgsUT1OUShnKTtpZihRPDB8fFE+Qil0aHJvdyBfUSgiV3Jvbmcgb2Zmc2V0Iik7aWYoUSsoST12b2lkIDA9PT1JP0ItUTpNUShJKSk+Qil0aHJvdyBfUSgiV3JvbmcgbGVuZ3RoIik7YlEodGhpcyx7YnVmZmVyOkEsYnl0ZUxlbmd0aDpJLGJ5dGVPZmZzZXQ6UX0pLEdRfHwodGhpcy5idWZmZXI9QSx0aGlzLmJ5dGVMZW5ndGg9SSx0aGlzLmJ5dGVPZmZzZXQ9USl9LEdRJiYodEUoalEsImJ5dGVMZW5ndGgiKSx0RShYUSwiYnVmZmVyIiksdEUoWFEsImJ5dGVMZW5ndGgiKSx0RShYUSwiYnl0ZU9mZnNldCIpKSxrUShYUVtQUV0se2dldEludDg6ZnVuY3Rpb24oQSl7cmV0dXJuIGlFKHRoaXMsMSxBKVswXTw8MjQ+PjI0fSxnZXRVaW50ODpmdW5jdGlvbihBKXtyZXR1cm4gaUUodGhpcywxLEEpWzBdfSxnZXRJbnQxNjpmdW5jdGlvbihBKXt2YXIgZz1pRSh0aGlzLDIsQSxhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCk7cmV0dXJuKGdbMV08PDh8Z1swXSk8PDE2Pj4xNn0sZ2V0VWludDE2OmZ1bmN0aW9uKEEpe3ZhciBnPWlFKHRoaXMsMixBLGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwKTtyZXR1cm4gZ1sxXTw8OHxnWzBdfSxnZXRJbnQzMjpmdW5jdGlvbihBKXtyZXR1cm4gUUUoaUUodGhpcyw0LEEsYXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDApKX0sZ2V0VWludDMyOmZ1bmN0aW9uKEEpe3JldHVybiBRRShpRSh0aGlzLDQsQSxhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCkpPj4+MH0sZ2V0RmxvYXQzMjpmdW5jdGlvbihBKXtyZXR1cm4gQUUoaUUodGhpcyw0LEEsYXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDApLDIzKX0sZ2V0RmxvYXQ2NDpmdW5jdGlvbihBKXtyZXR1cm4gQUUoaUUodGhpcyw4LEEsYXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDApLDUyKX0sc2V0SW50ODpmdW5jdGlvbihBLGcpe2VFKHRoaXMsMSxBLGdFLGcpfSxzZXRVaW50ODpmdW5jdGlvbihBLGcpe2VFKHRoaXMsMSxBLGdFLGcpfSxzZXRJbnQxNjpmdW5jdGlvbihBLGcpe2VFKHRoaXMsMixBLElFLGcsYXJndW1lbnRzLmxlbmd0aD4yP2FyZ3VtZW50c1syXTp2b2lkIDApfSxzZXRVaW50MTY6ZnVuY3Rpb24oQSxnKXtlRSh0aGlzLDIsQSxJRSxnLGFyZ3VtZW50cy5sZW5ndGg+Mj9hcmd1bWVudHNbMl06dm9pZCAwKX0sc2V0SW50MzI6ZnVuY3Rpb24oQSxnKXtlRSh0aGlzLDQsQSxCRSxnLGFyZ3VtZW50cy5sZW5ndGg+Mj9hcmd1bWVudHNbMl06dm9pZCAwKX0sc2V0VWludDMyOmZ1bmN0aW9uKEEsZyl7ZUUodGhpcyw0LEEsQkUsZyxhcmd1bWVudHMubGVuZ3RoPjI/YXJndW1lbnRzWzJdOnZvaWQgMCl9LHNldEZsb2F0MzI6ZnVuY3Rpb24oQSxnKXtlRSh0aGlzLDQsQSxFRSxnLGFyZ3VtZW50cy5sZW5ndGg+Mj9hcmd1bWVudHNbMl06dm9pZCAwKX0sc2V0RmxvYXQ2NDpmdW5jdGlvbihBLGcpe2VFKHRoaXMsOCxBLENFLGcsYXJndW1lbnRzLmxlbmd0aD4yP2FyZ3VtZW50c1syXTp2b2lkIDApfX0pO3hRKGpRLFRRKSx4UShYUSxPUSk7dmFyIGhFPXtBcnJheUJ1ZmZlcjpqUSxEYXRhVmlldzpYUX0sZkU9bEEseUU9SCx1RT1ZLERFPWJBKCJzcGVjaWVzIiksd0U9ZnVuY3Rpb24oQSl7dmFyIGc9ZkUoQSksST15RS5mO3VFJiZnJiYhZ1tERV0mJkkoZyxERSx7Y29uZmlndXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzfX0pfSxsRT13RSxkRT0iQXJyYXlCdWZmZXIiLEZFPWhFW2RFXTtlQih7Z2xvYmFsOiEwLGZvcmNlZDpOW2RFXSE9PUZFfSx7QXJyYXlCdWZmZXI6RkV9KSxsRShkRSk7dmFyIEdFPXt9O0dFW2JBKCJ0b1N0cmluZ1RhZyIpXT0ieiI7dmFyIFJFPSJbb2JqZWN0IHpdIj09PVN0cmluZyhHRSksVUU9UkUsa0U9bCxTRT1iQSgidG9TdHJpbmdUYWciKSxwRT0iQXJndW1lbnRzIj09a0UoZnVuY3Rpb24oKXtyZXR1cm4gYXJndW1lbnRzfSgpKSxORT1VRT9rRTpmdW5jdGlvbihBKXt2YXIgZyxJLEI7cmV0dXJuIHZvaWQgMD09PUE/IlVuZGVmaW5lZCI6bnVsbD09PUE/Ik51bGwiOiJzdHJpbmciPT10eXBlb2YoST1mdW5jdGlvbihBLGcpe3RyeXtyZXR1cm4gQVtnXX1jYXRjaChJKXt9fShnPU9iamVjdChBKSxTRSkpP0k6cEU/a0UoZyk6Ik9iamVjdCI9PShCPWtFKGcpKSYmImZ1bmN0aW9uIj09dHlwZW9mIGcuY2FsbGVlPyJBcmd1bWVudHMiOkJ9LE1FPU5FLFlFPVJFP3t9LnRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIltvYmplY3QgIitNRSh0aGlzKSsiXSJ9O1JFfHxNSShPYmplY3QucHJvdG90eXBlLCJ0b1N0cmluZyIsWUUse3Vuc2FmZTohMH0pO3ZhciBIRT17ZXhwb3J0czp7fX0sdkU9YkEoIml0ZXJhdG9yIiksTEU9ITE7dHJ5e3ZhciBKRT0wLG1FPXtuZXh0OmZ1bmN0aW9uKCl7cmV0dXJue2RvbmU6ISFKRSsrfX0scmV0dXJuOmZ1bmN0aW9uKCl7TEU9ITB9fTttRVt2RV09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30sQXJyYXkuZnJvbShtRSwoZnVuY3Rpb24oKXt0aHJvdyAyfSkpfWNhdGNoKFN5KXt9dmFyIEtFLHhFPWZ1bmN0aW9uKEEsZyl7aWYoIWcmJiFMRSlyZXR1cm4hMTt2YXIgST0hMTt0cnl7dmFyIEI9e307Qlt2RV09ZnVuY3Rpb24oKXtyZXR1cm57bmV4dDpmdW5jdGlvbigpe3JldHVybntkb25lOkk9ITB9fX19LEEoQil9Y2F0Y2goU3kpe31yZXR1cm4gSX0scUU9aVEsYkU9WSxURT1OLE9FPXYsUEU9Y0EsV0U9TkUsWkU9QUEsakU9TUksWEU9SC5mLFZFPWhCLHpFPUpCLF9FPWJBLCRFPXlBLEFDPVRFLkludDhBcnJheSxnQz1BQyYmQUMucHJvdG90eXBlLElDPVRFLlVpbnQ4Q2xhbXBlZEFycmF5LEJDPUlDJiZJQy5wcm90b3R5cGUsUUM9QUMmJlZFKEFDKSxFQz1nQyYmVkUoZ0MpLENDPU9iamVjdC5wcm90b3R5cGUsdEM9Q0MuaXNQcm90b3R5cGVPZixpQz1fRSgidG9TdHJpbmdUYWciKSxlQz0kRSgiVFlQRURfQVJSQVlfVEFHIiksb0M9cUUmJiEhekUmJiJPcGVyYSIhPT1XRShURS5vcGVyYSksckM9ITEsbkM9e0ludDhBcnJheToxLFVpbnQ4QXJyYXk6MSxVaW50OENsYW1wZWRBcnJheToxLEludDE2QXJyYXk6MixVaW50MTZBcnJheToyLEludDMyQXJyYXk6NCxVaW50MzJBcnJheTo0LEZsb2F0MzJBcnJheTo0LEZsb2F0NjRBcnJheTo4fSxhQz17QmlnSW50NjRBcnJheTo4LEJpZ1VpbnQ2NEFycmF5Ojh9LHNDPWZ1bmN0aW9uKEEpe2lmKCFPRShBKSlyZXR1cm4hMTt2YXIgZz1XRShBKTtyZXR1cm4gUEUobkMsZyl8fFBFKGFDLGcpfTtmb3IoS0UgaW4gbkMpVEVbS0VdfHwob0M9ITEpO2lmKCghb0N8fCJmdW5jdGlvbiIhPXR5cGVvZiBRQ3x8UUM9PT1GdW5jdGlvbi5wcm90b3R5cGUpJiYoUUM9ZnVuY3Rpb24oKXt0aHJvdyBUeXBlRXJyb3IoIkluY29ycmVjdCBpbnZvY2F0aW9uIil9LG9DKSlmb3IoS0UgaW4gbkMpVEVbS0VdJiZ6RShURVtLRV0sUUMpO2lmKCghb0N8fCFFQ3x8RUM9PT1DQykmJihFQz1RQy5wcm90b3R5cGUsb0MpKWZvcihLRSBpbiBuQylURVtLRV0mJnpFKFRFW0tFXS5wcm90b3R5cGUsRUMpO2lmKG9DJiZWRShCQykhPT1FQyYmekUoQkMsRUMpLGJFJiYhUEUoRUMsaUMpKWZvcihLRSBpbiByQz0hMCxYRShFQyxpQyx7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIE9FKHRoaXMpP3RoaXNbZUNdOnZvaWQgMH19KSxuQylURVtLRV0mJlpFKFRFW0tFXSxlQyxLRSk7dmFyIGNDPXtOQVRJVkVfQVJSQVlfQlVGRkVSX1ZJRVdTOm9DLFRZUEVEX0FSUkFZX1RBRzpyQyYmZUMsYVR5cGVkQXJyYXk6ZnVuY3Rpb24oQSl7aWYoc0MoQSkpcmV0dXJuIEE7dGhyb3cgVHlwZUVycm9yKCJUYXJnZXQgaXMgbm90IGEgdHlwZWQgYXJyYXkiKX0sYVR5cGVkQXJyYXlDb25zdHJ1Y3RvcjpmdW5jdGlvbihBKXtpZih6RSl7aWYodEMuY2FsbChRQyxBKSlyZXR1cm4gQX1lbHNlIGZvcih2YXIgZyBpbiBuQylpZihQRShuQyxLRSkpe3ZhciBJPVRFW2ddO2lmKEkmJihBPT09SXx8dEMuY2FsbChJLEEpKSlyZXR1cm4gQX10aHJvdyBUeXBlRXJyb3IoIlRhcmdldCBpcyBub3QgYSB0eXBlZCBhcnJheSBjb25zdHJ1Y3RvciIpfSxleHBvcnRUeXBlZEFycmF5TWV0aG9kOmZ1bmN0aW9uKEEsZyxJKXtpZihiRSl7aWYoSSlmb3IodmFyIEIgaW4gbkMpe3ZhciBRPVRFW0JdO2lmKFEmJlBFKFEucHJvdG90eXBlLEEpKXRyeXtkZWxldGUgUS5wcm90b3R5cGVbQV19Y2F0Y2goU3kpe319RUNbQV0mJiFJfHxqRShFQyxBLEk/ZzpvQyYmZ0NbQV18fGcpfX0sZXhwb3J0VHlwZWRBcnJheVN0YXRpY01ldGhvZDpmdW5jdGlvbihBLGcsSSl7dmFyIEIsUTtpZihiRSl7aWYoekUpe2lmKEkpZm9yKEIgaW4gbkMpaWYoKFE9VEVbQl0pJiZQRShRLEEpKXRyeXtkZWxldGUgUVtBXX1jYXRjaChTeSl7fWlmKFFDW0FdJiYhSSlyZXR1cm47dHJ5e3JldHVybiBqRShRQyxBLEk/ZzpvQyYmUUNbQV18fGcpfWNhdGNoKFN5KXt9fWZvcihCIGluIG5DKSEoUT1URVtCXSl8fFFbQV0mJiFJfHxqRShRLEEsZyl9fSxpc1ZpZXc6ZnVuY3Rpb24oQSl7aWYoIU9FKEEpKXJldHVybiExO3ZhciBnPVdFKEEpO3JldHVybiJEYXRhVmlldyI9PT1nfHxQRShuQyxnKXx8UEUoYUMsZyl9LGlzVHlwZWRBcnJheTpzQyxUeXBlZEFycmF5OlFDLFR5cGVkQXJyYXlQcm90b3R5cGU6RUN9LGhDPU4sZkM9RCx5Qz14RSx1Qz1jQy5OQVRJVkVfQVJSQVlfQlVGRkVSX1ZJRVdTLERDPWhDLkFycmF5QnVmZmVyLHdDPWhDLkludDhBcnJheSxsQz0hdUN8fCFmQygoZnVuY3Rpb24oKXt3QygxKX0pKXx8IWZDKChmdW5jdGlvbigpe25ldyB3QygtMSl9KSl8fCF5QygoZnVuY3Rpb24oQSl7bmV3IHdDLG5ldyB3QyhudWxsKSxuZXcgd0MoMS41KSxuZXcgd0MoQSl9KSwhMCl8fGZDKChmdW5jdGlvbigpe3JldHVybiAxIT09bmV3IHdDKG5ldyBEQygyKSwxLHZvaWQgMCkubGVuZ3RofSkpLGRDPVBBLEZDPWZ1bmN0aW9uKEEpe3ZhciBnPWRDKEEpO2lmKGc8MCl0aHJvdyBSYW5nZUVycm9yKCJUaGUgYXJndW1lbnQgY2FuJ3QgYmUgbGVzcyB0aGFuIDAiKTtyZXR1cm4gZ30sR0M9ZnVuY3Rpb24oQSxnKXt2YXIgST1GQyhBKTtpZihJJWcpdGhyb3cgUmFuZ2VFcnJvcigiV3Jvbmcgb2Zmc2V0Iik7cmV0dXJuIEl9LFJDPU5FLFVDPXhnLGtDPWJBKCJpdGVyYXRvciIpLFNDPWZ1bmN0aW9uKEEpe2lmKG51bGwhPUEpcmV0dXJuIEFba0NdfHxBWyJAQGl0ZXJhdG9yIl18fFVDW1JDKEEpXX0scEM9eGcsTkM9YkEoIml0ZXJhdG9yIiksTUM9QXJyYXkucHJvdG90eXBlLFlDPWZ1bmN0aW9uKEEpe3JldHVybiB2b2lkIDAhPT1BJiYocEMuQXJyYXk9PT1BfHxNQ1tOQ109PT1BKX0sSEM9ZnVuY3Rpb24oQSl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIEEpdGhyb3cgVHlwZUVycm9yKFN0cmluZyhBKSsiIGlzIG5vdCBhIGZ1bmN0aW9uIik7cmV0dXJuIEF9LHZDPUhDLExDPWZ1bmN0aW9uKEEsZyxJKXtpZih2QyhBKSx2b2lkIDA9PT1nKXJldHVybiBBO3N3aXRjaChJKXtjYXNlIDA6cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIEEuY2FsbChnKX07Y2FzZSAxOnJldHVybiBmdW5jdGlvbihJKXtyZXR1cm4gQS5jYWxsKGcsSSl9O2Nhc2UgMjpyZXR1cm4gZnVuY3Rpb24oSSxCKXtyZXR1cm4gQS5jYWxsKGcsSSxCKX07Y2FzZSAzOnJldHVybiBmdW5jdGlvbihJLEIsUSl7cmV0dXJuIEEuY2FsbChnLEksQixRKX19cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIEEuYXBwbHkoZyxhcmd1bWVudHMpfX0sSkM9bkEsbUM9akEsS0M9U0MseEM9WUMscUM9TEMsYkM9Y0MuYVR5cGVkQXJyYXlDb25zdHJ1Y3RvcixUQz1sLE9DPUFycmF5LmlzQXJyYXl8fGZ1bmN0aW9uKEEpe3JldHVybiJBcnJheSI9PVRDKEEpfSxQQz12LFdDPU9DLFpDPWJBKCJzcGVjaWVzIiksakM9ZnVuY3Rpb24oQSxnKXt2YXIgSTtyZXR1cm4gV0MoQSkmJigiZnVuY3Rpb24iIT10eXBlb2YoST1BLmNvbnN0cnVjdG9yKXx8SSE9PUFycmF5JiYhV0MoSS5wcm90b3R5cGUpP1BDKEkpJiZudWxsPT09KEk9SVtaQ10pJiYoST12b2lkIDApOkk9dm9pZCAwKSxuZXcodm9pZCAwPT09ST9BcnJheTpJKSgwPT09Zz8wOmcpfSxYQz1MQyxWQz1HLHpDPW5BLF9DPWpBLCRDPWpDLEF0PVtdLnB1c2gsZ3Q9ZnVuY3Rpb24oQSl7dmFyIGc9MT09QSxJPTI9PUEsQj0zPT1BLFE9ND09QSxFPTY9PUEsQz03PT1BLHQ9NT09QXx8RTtyZXR1cm4gZnVuY3Rpb24oaSxlLG8scil7Zm9yKHZhciBuLGEscz16QyhpKSxjPVZDKHMpLGg9WEMoZSxvLDMpLGY9X0MoYy5sZW5ndGgpLHk9MCx1PXJ8fCRDLEQ9Zz91KGksZik6SXx8Qz91KGksMCk6dm9pZCAwO2Y+eTt5KyspaWYoKHR8fHkgaW4gYykmJihhPWgobj1jW3ldLHkscyksQSkpaWYoZylEW3ldPWE7ZWxzZSBpZihhKXN3aXRjaChBKXtjYXNlIDM6cmV0dXJuITA7Y2FzZSA1OnJldHVybiBuO2Nhc2UgNjpyZXR1cm4geTtjYXNlIDI6QXQuY2FsbChELG4pfWVsc2Ugc3dpdGNoKEEpe2Nhc2UgNDpyZXR1cm4hMTtjYXNlIDc6QXQuY2FsbChELG4pfXJldHVybiBFPy0xOkJ8fFE/UTpEfX0sSXQ9e2ZvckVhY2g6Z3QoMCksbWFwOmd0KDEpLGZpbHRlcjpndCgyKSxzb21lOmd0KDMpLGV2ZXJ5Omd0KDQpLGZpbmQ6Z3QoNSksZmluZEluZGV4Omd0KDYpLGZpbHRlck91dDpndCg3KX0sQnQ9dixRdD1KQixFdD1mdW5jdGlvbihBLGcsSSl7dmFyIEIsUTtyZXR1cm4gUXQmJiJmdW5jdGlvbiI9PXR5cGVvZihCPWcuY29uc3RydWN0b3IpJiZCIT09SSYmQnQoUT1CLnByb3RvdHlwZSkmJlEhPT1JLnByb3RvdHlwZSYmUXQoQSxRKSxBfSxDdD1lQix0dD1OLGl0PVksZXQ9bEMsb3Q9Y0MscnQ9aEUsbnQ9clEsYXQ9eixzdD1BQSxjdD1qQSxodD1zUSxmdD1HQyx5dD1QLHV0PWNBLER0PU5FLHd0PXYsbHQ9SGcsZHQ9SkIsRnQ9WUkuZixHdD1mdW5jdGlvbihBKXt2YXIgZyxJLEIsUSxFLEMsdD1KQyhBKSxpPWFyZ3VtZW50cy5sZW5ndGgsZT1pPjE/YXJndW1lbnRzWzFdOnZvaWQgMCxvPXZvaWQgMCE9PWUscj1LQyh0KTtpZihudWxsIT1yJiYheEMocikpZm9yKEM9KEU9ci5jYWxsKHQpKS5uZXh0LHQ9W107IShRPUMuY2FsbChFKSkuZG9uZTspdC5wdXNoKFEudmFsdWUpO2ZvcihvJiZpPjImJihlPXFDKGUsYXJndW1lbnRzWzJdLDIpKSxJPW1DKHQubGVuZ3RoKSxCPW5ldyhiQyh0aGlzKSkoSSksZz0wO0k+ZztnKyspQltnXT1vP2UodFtnXSxnKTp0W2ddO3JldHVybiBCfSxSdD1JdC5mb3JFYWNoLFV0PXdFLGt0PUgsU3Q9b0kscHQ9RXQsTnQ9ZUkuZ2V0LE10PWVJLnNldCxZdD1rdC5mLEh0PVN0LmYsdnQ9TWF0aC5yb3VuZCxMdD10dC5SYW5nZUVycm9yLEp0PXJ0LkFycmF5QnVmZmVyLG10PXJ0LkRhdGFWaWV3LEt0PW90Lk5BVElWRV9BUlJBWV9CVUZGRVJfVklFV1MseHQ9b3QuVFlQRURfQVJSQVlfVEFHLHF0PW90LlR5cGVkQXJyYXksYnQ9b3QuVHlwZWRBcnJheVByb3RvdHlwZSxUdD1vdC5hVHlwZWRBcnJheUNvbnN0cnVjdG9yLE90PW90LmlzVHlwZWRBcnJheSxQdD0iQllURVNfUEVSX0VMRU1FTlQiLFd0PSJXcm9uZyBsZW5ndGgiLFp0PWZ1bmN0aW9uKEEsZyl7Zm9yKHZhciBJPTAsQj1nLmxlbmd0aCxRPW5ldyhUdChBKSkoQik7Qj5JOylRW0ldPWdbSSsrXTtyZXR1cm4gUX0sanQ9ZnVuY3Rpb24oQSxnKXtZdChBLGcse2dldDpmdW5jdGlvbigpe3JldHVybiBOdCh0aGlzKVtnXX19KX0sWHQ9ZnVuY3Rpb24oQSl7dmFyIGc7cmV0dXJuIEEgaW5zdGFuY2VvZiBKdHx8IkFycmF5QnVmZmVyIj09KGc9RHQoQSkpfHwiU2hhcmVkQXJyYXlCdWZmZXIiPT1nfSxWdD1mdW5jdGlvbihBLGcpe3JldHVybiBPdChBKSYmInN5bWJvbCIhPXR5cGVvZiBnJiZnIGluIEEmJlN0cmluZygrZyk9PVN0cmluZyhnKX0senQ9ZnVuY3Rpb24oQSxnKXtyZXR1cm4gVnQoQSxnPXl0KGcsITApKT9hdCgyLEFbZ10pOkh0KEEsZyl9LF90PWZ1bmN0aW9uKEEsZyxJKXtyZXR1cm4hKFZ0KEEsZz15dChnLCEwKSkmJnd0KEkpJiZ1dChJLCJ2YWx1ZSIpKXx8dXQoSSwiZ2V0Iil8fHV0KEksInNldCIpfHxJLmNvbmZpZ3VyYWJsZXx8dXQoSSwid3JpdGFibGUiKSYmIUkud3JpdGFibGV8fHV0KEksImVudW1lcmFibGUiKSYmIUkuZW51bWVyYWJsZT9ZdChBLGcsSSk6KEFbZ109SS52YWx1ZSxBKX07aXQ/KEt0fHwoU3QuZj16dCxrdC5mPV90LGp0KGJ0LCJidWZmZXIiKSxqdChidCwiYnl0ZU9mZnNldCIpLGp0KGJ0LCJieXRlTGVuZ3RoIiksanQoYnQsImxlbmd0aCIpKSxDdCh7dGFyZ2V0OiJPYmplY3QiLHN0YXQ6ITAsZm9yY2VkOiFLdH0se2dldE93blByb3BlcnR5RGVzY3JpcHRvcjp6dCxkZWZpbmVQcm9wZXJ0eTpfdH0pLEhFLmV4cG9ydHM9ZnVuY3Rpb24oQSxnLEkpe3ZhciBCPUEubWF0Y2goL1xkKyQvKVswXS84LFE9QSsoST8iQ2xhbXBlZCI6IiIpKyJBcnJheSIsRT0iZ2V0IitBLEM9InNldCIrQSx0PXR0W1FdLGk9dCxlPWkmJmkucHJvdG90eXBlLG89e30scj1mdW5jdGlvbihBLGcpe1l0KEEsZyx7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKEEsZyl7dmFyIEk9TnQoQSk7cmV0dXJuIEkudmlld1tFXShnKkIrSS5ieXRlT2Zmc2V0LCEwKX0odGhpcyxnKX0sc2V0OmZ1bmN0aW9uKEEpe3JldHVybiBmdW5jdGlvbihBLGcsUSl7dmFyIEU9TnQoQSk7SSYmKFE9KFE9dnQoUSkpPDA/MDpRPjI1NT8yNTU6MjU1JlEpLEUudmlld1tDXShnKkIrRS5ieXRlT2Zmc2V0LFEsITApfSh0aGlzLGcsQSl9LGVudW1lcmFibGU6ITB9KX07S3Q/ZXQmJihpPWcoKGZ1bmN0aW9uKEEsZyxJLEUpe3JldHVybiBudChBLGksUSkscHQod3QoZyk/WHQoZyk/dm9pZCAwIT09RT9uZXcgdChnLGZ0KEksQiksRSk6dm9pZCAwIT09ST9uZXcgdChnLGZ0KEksQikpOm5ldyB0KGcpOk90KGcpP1p0KGksZyk6R3QuY2FsbChpLGcpOm5ldyB0KGh0KGcpKSxBLGkpfSkpLGR0JiZkdChpLHF0KSxSdChGdCh0KSwoZnVuY3Rpb24oQSl7QSBpbiBpfHxzdChpLEEsdFtBXSl9KSksaS5wcm90b3R5cGU9ZSk6KGk9ZygoZnVuY3Rpb24oQSxnLEksRSl7bnQoQSxpLFEpO3ZhciBDLHQsZSxvPTAsbj0wO2lmKHd0KGcpKXtpZighWHQoZykpcmV0dXJuIE90KGcpP1p0KGksZyk6R3QuY2FsbChpLGcpO0M9ZyxuPWZ0KEksQik7dmFyIGE9Zy5ieXRlTGVuZ3RoO2lmKHZvaWQgMD09PUUpe2lmKGElQil0aHJvdyBMdChXdCk7aWYoKHQ9YS1uKTwwKXRocm93IEx0KFd0KX1lbHNlIGlmKCh0PWN0KEUpKkIpK24+YSl0aHJvdyBMdChXdCk7ZT10L0J9ZWxzZSBlPWh0KGcpLEM9bmV3IEp0KHQ9ZSpCKTtmb3IoTXQoQSx7YnVmZmVyOkMsYnl0ZU9mZnNldDpuLGJ5dGVMZW5ndGg6dCxsZW5ndGg6ZSx2aWV3Om5ldyBtdChDKX0pO288ZTspcihBLG8rKyl9KSksZHQmJmR0KGkscXQpLGU9aS5wcm90b3R5cGU9bHQoYnQpKSxlLmNvbnN0cnVjdG9yIT09aSYmc3QoZSwiY29uc3RydWN0b3IiLGkpLHh0JiZzdChlLHh0LFEpLG9bUV09aSxDdCh7Z2xvYmFsOiEwLGZvcmNlZDppIT10LHNoYW06IUt0fSxvKSxQdCBpbiBpfHxzdChpLFB0LEIpLFB0IGluIGV8fHN0KGUsUHQsQiksVXQoUSl9KTpIRS5leHBvcnRzPWZ1bmN0aW9uKCl7fTt2YXIgJHQ9SEUuZXhwb3J0czskdCgiVWludDgiLChmdW5jdGlvbihBKXtyZXR1cm4gZnVuY3Rpb24oZyxJLEIpe3JldHVybiBBKHRoaXMsZyxJLEIpfX0pKTt2YXIgQWk9bkEsZ2k9X0EsSWk9akEsQmk9TWF0aC5taW4sUWk9W10uY29weVdpdGhpbnx8ZnVuY3Rpb24oQSxnKXt2YXIgST1BaSh0aGlzKSxCPUlpKEkubGVuZ3RoKSxRPWdpKEEsQiksRT1naShnLEIpLEM9YXJndW1lbnRzLmxlbmd0aD4yP2FyZ3VtZW50c1syXTp2b2lkIDAsdD1CaSgodm9pZCAwPT09Qz9COmdpKEMsQikpLUUsQi1RKSxpPTE7Zm9yKEU8USYmUTxFK3QmJihpPS0xLEUrPXQtMSxRKz10LTEpO3QtLSA+MDspRSBpbiBJP0lbUV09SVtFXTpkZWxldGUgSVtRXSxRKz1pLEUrPWk7cmV0dXJuIEl9LEVpPVFpLENpPWNDLmFUeXBlZEFycmF5OygwLGNDLmV4cG9ydFR5cGVkQXJyYXlNZXRob2QpKCJjb3B5V2l0aGluIiwoZnVuY3Rpb24oQSxnKXtyZXR1cm4gRWkuY2FsbChDaSh0aGlzKSxBLGcsYXJndW1lbnRzLmxlbmd0aD4yP2FyZ3VtZW50c1syXTp2b2lkIDApfSkpO3ZhciB0aT1JdC5ldmVyeSxpaT1jQy5hVHlwZWRBcnJheTsoMCxjQy5leHBvcnRUeXBlZEFycmF5TWV0aG9kKSgiZXZlcnkiLChmdW5jdGlvbihBKXtyZXR1cm4gdGkoaWkodGhpcyksQSxhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCl9KSk7dmFyIGVpPWRRLG9pPWNDLmFUeXBlZEFycmF5OygwLGNDLmV4cG9ydFR5cGVkQXJyYXlNZXRob2QpKCJmaWxsIiwoZnVuY3Rpb24oQSl7cmV0dXJuIGVpLmFwcGx5KG9pKHRoaXMpLGFyZ3VtZW50cyl9KSk7dmFyIHJpPVQsbmk9SEMsYWk9YkEoInNwZWNpZXMiKSxzaT1mdW5jdGlvbihBLGcpe3ZhciBJLEI9cmkoQSkuY29uc3RydWN0b3I7cmV0dXJuIHZvaWQgMD09PUJ8fG51bGw9PShJPXJpKEIpW2FpXSk/ZzpuaShJKX0sY2k9Y0MuYVR5cGVkQXJyYXlDb25zdHJ1Y3RvcixoaT1zaSxmaT1JdC5maWx0ZXIseWk9ZnVuY3Rpb24oQSxnKXtmb3IodmFyIEk9aGkoQSxBLmNvbnN0cnVjdG9yKSxCPTAsUT1nLmxlbmd0aCxFPW5ldyhjaShJKSkoUSk7UT5COylFW0JdPWdbQisrXTtyZXR1cm4gRX0sdWk9Y0MuYVR5cGVkQXJyYXk7KDAsY0MuZXhwb3J0VHlwZWRBcnJheU1ldGhvZCkoImZpbHRlciIsKGZ1bmN0aW9uKEEpe3ZhciBnPWZpKHVpKHRoaXMpLEEsYXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDApO3JldHVybiB5aSh0aGlzLGcpfSkpO3ZhciBEaT1JdC5maW5kLHdpPWNDLmFUeXBlZEFycmF5OygwLGNDLmV4cG9ydFR5cGVkQXJyYXlNZXRob2QpKCJmaW5kIiwoZnVuY3Rpb24oQSl7cmV0dXJuIERpKHdpKHRoaXMpLEEsYXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDApfSkpO3ZhciBsaT1JdC5maW5kSW5kZXgsZGk9Y0MuYVR5cGVkQXJyYXk7KDAsY0MuZXhwb3J0VHlwZWRBcnJheU1ldGhvZCkoImZpbmRJbmRleCIsKGZ1bmN0aW9uKEEpe3JldHVybiBsaShkaSh0aGlzKSxBLGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwKX0pKTt2YXIgRmk9SXQuZm9yRWFjaCxHaT1jQy5hVHlwZWRBcnJheTsoMCxjQy5leHBvcnRUeXBlZEFycmF5TWV0aG9kKSgiZm9yRWFjaCIsKGZ1bmN0aW9uKEEpe0ZpKEdpKHRoaXMpLEEsYXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDApfSkpO3ZhciBSaT1CZy5pbmNsdWRlcyxVaT1jQy5hVHlwZWRBcnJheTsoMCxjQy5leHBvcnRUeXBlZEFycmF5TWV0aG9kKSgiaW5jbHVkZXMiLChmdW5jdGlvbihBKXtyZXR1cm4gUmkoVWkodGhpcyksQSxhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCl9KSk7dmFyIGtpPUJnLmluZGV4T2YsU2k9Y0MuYVR5cGVkQXJyYXk7KDAsY0MuZXhwb3J0VHlwZWRBcnJheU1ldGhvZCkoImluZGV4T2YiLChmdW5jdGlvbihBKXtyZXR1cm4ga2koU2kodGhpcyksQSxhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCl9KSk7dmFyIHBpPU4sTmk9Y0MsTWk9dFEsWWk9YkEoIml0ZXJhdG9yIiksSGk9cGkuVWludDhBcnJheSx2aT1NaS52YWx1ZXMsTGk9TWkua2V5cyxKaT1NaS5lbnRyaWVzLG1pPU5pLmFUeXBlZEFycmF5LEtpPU5pLmV4cG9ydFR5cGVkQXJyYXlNZXRob2QseGk9SGkmJkhpLnByb3RvdHlwZVtZaV0scWk9ISF4aSYmKCJ2YWx1ZXMiPT14aS5uYW1lfHxudWxsPT14aS5uYW1lKSxiaT1mdW5jdGlvbigpe3JldHVybiB2aS5jYWxsKG1pKHRoaXMpKX07S2koImVudHJpZXMiLChmdW5jdGlvbigpe3JldHVybiBKaS5jYWxsKG1pKHRoaXMpKX0pKSxLaSgia2V5cyIsKGZ1bmN0aW9uKCl7cmV0dXJuIExpLmNhbGwobWkodGhpcykpfSkpLEtpKCJ2YWx1ZXMiLGJpLCFxaSksS2koWWksYmksIXFpKTt2YXIgVGk9Y0MuYVR5cGVkQXJyYXksT2k9W10uam9pbjsoMCxjQy5leHBvcnRUeXBlZEFycmF5TWV0aG9kKSgiam9pbiIsKGZ1bmN0aW9uKEEpe3JldHVybiBPaS5hcHBseShUaSh0aGlzKSxhcmd1bWVudHMpfSkpO3ZhciBQaT1ELFdpPWZ1bmN0aW9uKEEsZyl7dmFyIEk9W11bQV07cmV0dXJuISFJJiZQaSgoZnVuY3Rpb24oKXtJLmNhbGwobnVsbCxnfHxmdW5jdGlvbigpe3Rocm93IDF9LDEpfSkpfSxaaT1TLGppPVBBLFhpPWpBLFZpPVdpLHppPU1hdGgubWluLF9pPVtdLmxhc3RJbmRleE9mLCRpPSEhX2kmJjEvWzFdLmxhc3RJbmRleE9mKDEsLTApPDAsQWU9VmkoImxhc3RJbmRleE9mIiksZ2U9JGl8fCFBZT9mdW5jdGlvbihBKXtpZigkaSlyZXR1cm4gX2kuYXBwbHkodGhpcyxhcmd1bWVudHMpfHwwO3ZhciBnPVppKHRoaXMpLEk9WGkoZy5sZW5ndGgpLEI9SS0xO2Zvcihhcmd1bWVudHMubGVuZ3RoPjEmJihCPXppKEIsamkoYXJndW1lbnRzWzFdKSkpLEI8MCYmKEI9SStCKTtCPj0wO0ItLSlpZihCIGluIGcmJmdbQl09PT1BKXJldHVybiBCfHwwO3JldHVybi0xfTpfaSxJZT1nZSxCZT1jQy5hVHlwZWRBcnJheTsoMCxjQy5leHBvcnRUeXBlZEFycmF5TWV0aG9kKSgibGFzdEluZGV4T2YiLChmdW5jdGlvbihBKXtyZXR1cm4gSWUuYXBwbHkoQmUodGhpcyksYXJndW1lbnRzKX0pKTt2YXIgUWU9SXQubWFwLEVlPXNpLENlPWNDLmFUeXBlZEFycmF5LHRlPWNDLmFUeXBlZEFycmF5Q29uc3RydWN0b3I7KDAsY0MuZXhwb3J0VHlwZWRBcnJheU1ldGhvZCkoIm1hcCIsKGZ1bmN0aW9uKEEpe3JldHVybiBRZShDZSh0aGlzKSxBLGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwLChmdW5jdGlvbihBLGcpe3JldHVybiBuZXcodGUoRWUoQSxBLmNvbnN0cnVjdG9yKSkpKGcpfSkpfSkpO3ZhciBpZT1IQyxlZT1uQSxvZT1HLHJlPWpBLG5lPWZ1bmN0aW9uKEEpe3JldHVybiBmdW5jdGlvbihnLEksQixRKXtpZShJKTt2YXIgRT1lZShnKSxDPW9lKEUpLHQ9cmUoRS5sZW5ndGgpLGk9QT90LTE6MCxlPUE/LTE6MTtpZihCPDIpZm9yKDs7KXtpZihpIGluIEMpe1E9Q1tpXSxpKz1lO2JyZWFrfWlmKGkrPWUsQT9pPDA6dDw9aSl0aHJvdyBUeXBlRXJyb3IoIlJlZHVjZSBvZiBlbXB0eSBhcnJheSB3aXRoIG5vIGluaXRpYWwgdmFsdWUiKX1mb3IoO0E/aT49MDp0Pmk7aSs9ZSlpIGluIEMmJihRPUkoUSxDW2ldLGksRSkpO3JldHVybiBRfX0sYWU9e2xlZnQ6bmUoITEpLHJpZ2h0Om5lKCEwKX0sc2U9YWUubGVmdCxjZT1jQy5hVHlwZWRBcnJheTsoMCxjQy5leHBvcnRUeXBlZEFycmF5TWV0aG9kKSgicmVkdWNlIiwoZnVuY3Rpb24oQSl7cmV0dXJuIHNlKGNlKHRoaXMpLEEsYXJndW1lbnRzLmxlbmd0aCxhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCl9KSk7dmFyIGhlPWFlLnJpZ2h0LGZlPWNDLmFUeXBlZEFycmF5OygwLGNDLmV4cG9ydFR5cGVkQXJyYXlNZXRob2QpKCJyZWR1Y2VSaWdodCIsKGZ1bmN0aW9uKEEpe3JldHVybiBoZShmZSh0aGlzKSxBLGFyZ3VtZW50cy5sZW5ndGgsYXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDApfSkpO3ZhciB5ZT1jQy5hVHlwZWRBcnJheSx1ZT1jQy5leHBvcnRUeXBlZEFycmF5TWV0aG9kLERlPU1hdGguZmxvb3I7dWUoInJldmVyc2UiLChmdW5jdGlvbigpe2Zvcih2YXIgQSxnPXRoaXMsST15ZShnKS5sZW5ndGgsQj1EZShJLzIpLFE9MDtRPEI7KUE9Z1tRXSxnW1ErK109Z1stLUldLGdbSV09QTtyZXR1cm4gZ30pKTt2YXIgd2U9akEsbGU9R0MsZGU9bkEsRmU9Y0MuYVR5cGVkQXJyYXk7KDAsY0MuZXhwb3J0VHlwZWRBcnJheU1ldGhvZCkoInNldCIsKGZ1bmN0aW9uKEEpe0ZlKHRoaXMpO3ZhciBnPWxlKGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwLDEpLEk9dGhpcy5sZW5ndGgsQj1kZShBKSxRPXdlKEIubGVuZ3RoKSxFPTA7aWYoUStnPkkpdGhyb3cgUmFuZ2VFcnJvcigiV3JvbmcgbGVuZ3RoIik7Zm9yKDtFPFE7KXRoaXNbZytFXT1CW0UrK119KSxEKChmdW5jdGlvbigpe25ldyBJbnQ4QXJyYXkoMSkuc2V0KHt9KX0pKSk7dmFyIEdlPXNpLFJlPWNDLmFUeXBlZEFycmF5LFVlPWNDLmFUeXBlZEFycmF5Q29uc3RydWN0b3Isa2U9W10uc2xpY2U7KDAsY0MuZXhwb3J0VHlwZWRBcnJheU1ldGhvZCkoInNsaWNlIiwoZnVuY3Rpb24oQSxnKXtmb3IodmFyIEk9a2UuY2FsbChSZSh0aGlzKSxBLGcpLEI9R2UodGhpcyx0aGlzLmNvbnN0cnVjdG9yKSxRPTAsRT1JLmxlbmd0aCxDPW5ldyhVZShCKSkoRSk7RT5ROylDW1FdPUlbUSsrXTtyZXR1cm4gQ30pLEQoKGZ1bmN0aW9uKCl7bmV3IEludDhBcnJheSgxKS5zbGljZSgpfSkpKTt2YXIgU2U9SXQuc29tZSxwZT1jQy5hVHlwZWRBcnJheTsoMCxjQy5leHBvcnRUeXBlZEFycmF5TWV0aG9kKSgic29tZSIsKGZ1bmN0aW9uKEEpe3JldHVybiBTZShwZSh0aGlzKSxBLGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwKX0pKTt2YXIgTmU9Y0MuYVR5cGVkQXJyYXksTWU9W10uc29ydDsoMCxjQy5leHBvcnRUeXBlZEFycmF5TWV0aG9kKSgic29ydCIsKGZ1bmN0aW9uKEEpe3JldHVybiBNZS5jYWxsKE5lKHRoaXMpLEEpfSkpO3ZhciBZZT1qQSxIZT1fQSx2ZT1zaSxMZT1jQy5hVHlwZWRBcnJheTsoMCxjQy5leHBvcnRUeXBlZEFycmF5TWV0aG9kKSgic3ViYXJyYXkiLChmdW5jdGlvbihBLGcpe3ZhciBJPUxlKHRoaXMpLEI9SS5sZW5ndGgsUT1IZShBLEIpO3JldHVybiBuZXcodmUoSSxJLmNvbnN0cnVjdG9yKSkoSS5idWZmZXIsSS5ieXRlT2Zmc2V0K1EqSS5CWVRFU19QRVJfRUxFTUVOVCxZZSgodm9pZCAwPT09Zz9COkhlKGcsQikpLVEpKX0pKTt2YXIgSmU9Y0MsbWU9RCxLZT1OLkludDhBcnJheSx4ZT1KZS5hVHlwZWRBcnJheSxxZT1KZS5leHBvcnRUeXBlZEFycmF5TWV0aG9kLGJlPVtdLnRvTG9jYWxlU3RyaW5nLFRlPVtdLnNsaWNlLE9lPSEhS2UmJm1lKChmdW5jdGlvbigpe2JlLmNhbGwobmV3IEtlKDEpKX0pKTtxZSgidG9Mb2NhbGVTdHJpbmciLChmdW5jdGlvbigpe3JldHVybiBiZS5hcHBseShPZT9UZS5jYWxsKHhlKHRoaXMpKTp4ZSh0aGlzKSxhcmd1bWVudHMpfSksbWUoKGZ1bmN0aW9uKCl7cmV0dXJuWzEsMl0udG9Mb2NhbGVTdHJpbmcoKSE9bmV3IEtlKFsxLDJdKS50b0xvY2FsZVN0cmluZygpfSkpfHwhbWUoKGZ1bmN0aW9uKCl7S2UucHJvdG90eXBlLnRvTG9jYWxlU3RyaW5nLmNhbGwoWzEsMl0pfSkpKTt2YXIgUGU9Y0MuZXhwb3J0VHlwZWRBcnJheU1ldGhvZCxXZT1ELFplPU4uVWludDhBcnJheSxqZT1aZSYmWmUucHJvdG90eXBlfHx7fSxYZT1bXS50b1N0cmluZyxWZT1bXS5qb2luO1dlKChmdW5jdGlvbigpe1hlLmNhbGwoe30pfSkpJiYoWGU9ZnVuY3Rpb24oKXtyZXR1cm4gVmUuY2FsbCh0aGlzKX0pO3ZhciB6ZT1qZS50b1N0cmluZyE9WGU7UGUoInRvU3RyaW5nIixYZSx6ZSk7dmFyIF9lPVAsJGU9SCxBbz16LGdvPWZ1bmN0aW9uKEEsZyxJKXt2YXIgQj1fZShnKTtCIGluIEE/JGUuZihBLEIsQW8oMCxJKSk6QVtCXT1JfSxJbz1ELEJvPVNBLFFvPWJBKCJzcGVjaWVzIiksRW89ZnVuY3Rpb24oQSl7cmV0dXJuIEJvPj01MXx8IUlvKChmdW5jdGlvbigpe3ZhciBnPVtdO3JldHVybihnLmNvbnN0cnVjdG9yPXt9KVtRb109ZnVuY3Rpb24oKXtyZXR1cm57Zm9vOjF9fSwxIT09Z1tBXShCb29sZWFuKS5mb299KSl9LENvPWVCLHRvPXYsaW89T0MsZW89X0Esb289akEscm89Uyxubz1nbyxhbz1iQSxzbz1Fbygic2xpY2UiKSxjbz1hbygic3BlY2llcyIpLGhvPVtdLnNsaWNlLGZvPU1hdGgubWF4O0NvKHt0YXJnZXQ6IkFycmF5Iixwcm90bzohMCxmb3JjZWQ6IXNvfSx7c2xpY2U6ZnVuY3Rpb24oQSxnKXt2YXIgSSxCLFEsRT1ybyh0aGlzKSxDPW9vKEUubGVuZ3RoKSx0PWVvKEEsQyksaT1lbyh2b2lkIDA9PT1nP0M6ZyxDKTtpZihpbyhFKSYmKCJmdW5jdGlvbiIhPXR5cGVvZihJPUUuY29uc3RydWN0b3IpfHxJIT09QXJyYXkmJiFpbyhJLnByb3RvdHlwZSk/dG8oSSkmJm51bGw9PT0oST1JW2NvXSkmJihJPXZvaWQgMCk6ST12b2lkIDAsST09PUFycmF5fHx2b2lkIDA9PT1JKSlyZXR1cm4gaG8uY2FsbChFLHQsaSk7Zm9yKEI9bmV3KHZvaWQgMD09PUk/QXJyYXk6SSkoZm8oaS10LDApKSxRPTA7dDxpO3QrKyxRKyspdCBpbiBFJiZubyhCLFEsRVt0XSk7cmV0dXJuIEIubGVuZ3RoPVEsQn19KTt2YXIgeW89Uix1bz0iW1x0XG5cdlxmXHIgwqDhmoDigIDigIHigILigIPigITigIXigIbigIfigIjigInigIrigK/igZ/jgIBcdTIwMjhcdTIwMjlcdWZlZmZdIixEbz1SZWdFeHAoIl4iK3VvK3VvKyIqIiksd289UmVnRXhwKHVvK3VvKyIqJCIpLGxvPWZ1bmN0aW9uKEEpe3JldHVybiBmdW5jdGlvbihnKXt2YXIgST1TdHJpbmcoeW8oZykpO3JldHVybiAxJkEmJihJPUkucmVwbGFjZShEbywiIikpLDImQSYmKEk9SS5yZXBsYWNlKHdvLCIiKSksSX19LEZvPXtzdGFydDpsbygxKSxlbmQ6bG8oMiksdHJpbTpsbygzKX0sR289WSxSbz1OLFVvPWdCLGtvPU1JLFNvPWNBLHBvPWwsTm89RXQsTW89UCxZbz1ELEhvPUhnLHZvPVlJLmYsTG89b0kuZixKbz1ILmYsbW89Rm8udHJpbSxLbz0iTnVtYmVyIix4bz1Sb1tLb10scW89eG8ucHJvdG90eXBlLGJvPXBvKEhvKHFvKSk9PUtvLFRvPWZ1bmN0aW9uKEEpe3ZhciBnLEksQixRLEUsQyx0LGksZT1NbyhBLCExKTtpZigic3RyaW5nIj09dHlwZW9mIGUmJmUubGVuZ3RoPjIpaWYoNDM9PT0oZz0oZT1tbyhlKSkuY2hhckNvZGVBdCgwKSl8fDQ1PT09Zyl7aWYoODg9PT0oST1lLmNoYXJDb2RlQXQoMikpfHwxMjA9PT1JKXJldHVybiBOYU59ZWxzZSBpZig0OD09PWcpe3N3aXRjaChlLmNoYXJDb2RlQXQoMSkpe2Nhc2UgNjY6Y2FzZSA5ODpCPTIsUT00OTticmVhaztjYXNlIDc5OmNhc2UgMTExOkI9OCxRPTU1O2JyZWFrO2RlZmF1bHQ6cmV0dXJuK2V9Zm9yKEM9KEU9ZS5zbGljZSgyKSkubGVuZ3RoLHQ9MDt0PEM7dCsrKWlmKChpPUUuY2hhckNvZGVBdCh0KSk8NDh8fGk+USlyZXR1cm4gTmFOO3JldHVybiBwYXJzZUludChFLEIpfXJldHVybitlfTtpZihVbyhLbywheG8oIiAwbzEiKXx8IXhvKCIwYjEiKXx8eG8oIisweDEiKSkpe2Zvcih2YXIgT28sUG89ZnVuY3Rpb24oQSl7dmFyIGc9YXJndW1lbnRzLmxlbmd0aDwxPzA6QSxJPXRoaXM7cmV0dXJuIEkgaW5zdGFuY2VvZiBQbyYmKGJvP1lvKChmdW5jdGlvbigpe3FvLnZhbHVlT2YuY2FsbChJKX0pKTpwbyhJKSE9S28pP05vKG5ldyB4byhUbyhnKSksSSxQbyk6VG8oZyl9LFdvPUdvP3ZvKHhvKToiTUFYX1ZBTFVFLE1JTl9WQUxVRSxOYU4sTkVHQVRJVkVfSU5GSU5JVFksUE9TSVRJVkVfSU5GSU5JVFksRVBTSUxPTixpc0Zpbml0ZSxpc0ludGVnZXIsaXNOYU4saXNTYWZlSW50ZWdlcixNQVhfU0FGRV9JTlRFR0VSLE1JTl9TQUZFX0lOVEVHRVIscGFyc2VGbG9hdCxwYXJzZUludCxpc0ludGVnZXIsZnJvbVN0cmluZyxyYW5nZSIuc3BsaXQoIiwiKSxabz0wO1dvLmxlbmd0aD5abztabysrKVNvKHhvLE9vPVdvW1pvXSkmJiFTbyhQbyxPbykmJkpvKFBvLE9vLExvKHhvLE9vKSk7UG8ucHJvdG90eXBlPXFvLHFvLmNvbnN0cnVjdG9yPVBvLGtvKFJvLEtvLFBvKX12YXIgam89S2c7ZUIoe3RhcmdldDoiQXJyYXkiLHByb3RvOiEwfSx7Y29weVdpdGhpbjpRaX0pLGpvKCJjb3B5V2l0aGluIik7dmFyIFhvPUJnLmluY2x1ZGVzLFZvPUtnO2VCKHt0YXJnZXQ6IkFycmF5Iixwcm90bzohMH0se2luY2x1ZGVzOmZ1bmN0aW9uKEEpe3JldHVybiBYbyh0aGlzLEEsYXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDApfX0pLFZvKCJpbmNsdWRlcyIpO3ZhciB6bz1ZLF9vPUQsJG89YWcsQXI9TEksZ3I9ckksSXI9bkEsQnI9RyxRcj1PYmplY3QuYXNzaWduLEVyPU9iamVjdC5kZWZpbmVQcm9wZXJ0eSxDcj0hUXJ8fF9vKChmdW5jdGlvbigpe2lmKHpvJiYxIT09UXIoe2I6MX0sUXIoRXIoe30sImEiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe0VyKHRoaXMsImIiLHt2YWx1ZTozLGVudW1lcmFibGU6ITF9KX19KSx7YjoyfSkpLmIpcmV0dXJuITA7dmFyIEE9e30sZz17fSxJPVN5bWJvbCgpLEI9ImFiY2RlZmdoaWprbG1ub3BxcnN0IjtyZXR1cm4gQVtJXT03LEIuc3BsaXQoIiIpLmZvckVhY2goKGZ1bmN0aW9uKEEpe2dbQV09QX0pKSw3IT1Rcih7fSxBKVtJXXx8JG8oUXIoe30sZykpLmpvaW4oIiIpIT1CfSkpP2Z1bmN0aW9uKEEsZyl7Zm9yKHZhciBJPUlyKEEpLEI9YXJndW1lbnRzLmxlbmd0aCxRPTEsRT1Bci5mLEM9Z3IuZjtCPlE7KWZvcih2YXIgdCxpPUJyKGFyZ3VtZW50c1tRKytdKSxlPUU/JG8oaSkuY29uY2F0KEUoaSkpOiRvKGkpLG89ZS5sZW5ndGgscj0wO28+cjspdD1lW3IrK10sem8mJiFDLmNhbGwoaSx0KXx8KElbdF09aVt0XSk7cmV0dXJuIEl9OlFyLHRyPUNyO2VCKHt0YXJnZXQ6Ik9iamVjdCIsc3RhdDohMCxmb3JjZWQ6T2JqZWN0LmFzc2lnbiE9PXRyfSx7YXNzaWduOnRyfSk7dmFyIGlyLGVyLG9yLHJyPU4uUHJvbWlzZSxucj1ULGFyPVQsc3I9WUMsY3I9akEsaHI9TEMsZnI9U0MseXI9ZnVuY3Rpb24oQSl7dmFyIGc9QS5yZXR1cm47aWYodm9pZCAwIT09ZylyZXR1cm4gbnIoZy5jYWxsKEEpKS52YWx1ZX0sdXI9ZnVuY3Rpb24oQSxnKXt0aGlzLnN0b3BwZWQ9QSx0aGlzLnJlc3VsdD1nfSxEcj0vKD86aXBob25lfGlwb2R8aXBhZCkuKmFwcGxld2Via2l0L2kudGVzdChkQSksd3I9InByb2Nlc3MiPT1sKE4ucHJvY2VzcyksbHI9Tixkcj1ELEZyPUxDLEdyPXlnLFJyPUssVXI9RHIsa3I9d3IsU3I9bHIubG9jYXRpb24scHI9bHIuc2V0SW1tZWRpYXRlLE5yPWxyLmNsZWFySW1tZWRpYXRlLE1yPWxyLnByb2Nlc3MsWXI9bHIuTWVzc2FnZUNoYW5uZWwsSHI9bHIuRGlzcGF0Y2gsdnI9MCxMcj17fSxKcj0ib25yZWFkeXN0YXRlY2hhbmdlIixtcj1mdW5jdGlvbihBKXtpZihMci5oYXNPd25Qcm9wZXJ0eShBKSl7dmFyIGc9THJbQV07ZGVsZXRlIExyW0FdLGcoKX19LEtyPWZ1bmN0aW9uKEEpe3JldHVybiBmdW5jdGlvbigpe21yKEEpfX0seHI9ZnVuY3Rpb24oQSl7bXIoQS5kYXRhKX0scXI9ZnVuY3Rpb24oQSl7bHIucG9zdE1lc3NhZ2UoQSsiIixTci5wcm90b2NvbCsiLy8iK1NyLmhvc3QpfTtwciYmTnJ8fChwcj1mdW5jdGlvbihBKXtmb3IodmFyIGc9W10sST0xO2FyZ3VtZW50cy5sZW5ndGg+STspZy5wdXNoKGFyZ3VtZW50c1tJKytdKTtyZXR1cm4gTHJbKyt2cl09ZnVuY3Rpb24oKXsoImZ1bmN0aW9uIj09dHlwZW9mIEE/QTpGdW5jdGlvbihBKSkuYXBwbHkodm9pZCAwLGcpfSxpcih2ciksdnJ9LE5yPWZ1bmN0aW9uKEEpe2RlbGV0ZSBMcltBXX0sa3I/aXI9ZnVuY3Rpb24oQSl7TXIubmV4dFRpY2soS3IoQSkpfTpIciYmSHIubm93P2lyPWZ1bmN0aW9uKEEpe0hyLm5vdyhLcihBKSl9OllyJiYhVXI/KG9yPShlcj1uZXcgWXIpLnBvcnQyLGVyLnBvcnQxLm9ubWVzc2FnZT14cixpcj1Gcihvci5wb3N0TWVzc2FnZSxvciwxKSk6bHIuYWRkRXZlbnRMaXN0ZW5lciYmImZ1bmN0aW9uIj09dHlwZW9mIHBvc3RNZXNzYWdlJiYhbHIuaW1wb3J0U2NyaXB0cyYmU3ImJiJmaWxlOiIhPT1Tci5wcm90b2NvbCYmIWRyKHFyKT8oaXI9cXIsbHIuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIseHIsITEpKTppcj1KciBpbiBScigic2NyaXB0Iik/ZnVuY3Rpb24oQSl7R3IuYXBwZW5kQ2hpbGQoUnIoInNjcmlwdCIpKVtKcl09ZnVuY3Rpb24oKXtHci5yZW1vdmVDaGlsZCh0aGlzKSxtcihBKX19OmZ1bmN0aW9uKEEpe3NldFRpbWVvdXQoS3IoQSksMCl9KTt2YXIgYnIsVHIsT3IsUHIsV3IsWnIsanIsWHIsVnI9e3NldDpwcixjbGVhcjpOcn0senI9L3dlYjBzKD8hLipjaHJvbWUpL2kudGVzdChkQSksX3I9Tiwkcj1vSS5mLEFuPVZyLnNldCxnbj1EcixJbj16cixCbj13cixRbj1fci5NdXRhdGlvbk9ic2VydmVyfHxfci5XZWJLaXRNdXRhdGlvbk9ic2VydmVyLEVuPV9yLmRvY3VtZW50LENuPV9yLnByb2Nlc3MsdG49X3IuUHJvbWlzZSxlbj0kcihfciwicXVldWVNaWNyb3Rhc2siKSxvbj1lbiYmZW4udmFsdWU7b258fChicj1mdW5jdGlvbigpe3ZhciBBLGc7Zm9yKEJuJiYoQT1Dbi5kb21haW4pJiZBLmV4aXQoKTtUcjspe2c9VHIuZm4sVHI9VHIubmV4dDt0cnl7ZygpfWNhdGNoKFN5KXt0aHJvdyBUcj9QcigpOk9yPXZvaWQgMCxTeX19T3I9dm9pZCAwLEEmJkEuZW50ZXIoKX0sZ258fEJufHxJbnx8IVFufHwhRW4/dG4mJnRuLnJlc29sdmU/KChqcj10bi5yZXNvbHZlKHZvaWQgMCkpLmNvbnN0cnVjdG9yPXRuLFhyPWpyLnRoZW4sUHI9ZnVuY3Rpb24oKXtYci5jYWxsKGpyLGJyKX0pOlByPUJuP2Z1bmN0aW9uKCl7Q24ubmV4dFRpY2soYnIpfTpmdW5jdGlvbigpe0FuLmNhbGwoX3IsYnIpfTooV3I9ITAsWnI9RW4uY3JlYXRlVGV4dE5vZGUoIiIpLG5ldyBRbihicikub2JzZXJ2ZShacix7Y2hhcmFjdGVyRGF0YTohMH0pLFByPWZ1bmN0aW9uKCl7WnIuZGF0YT1Xcj0hV3J9KSk7dmFyIHJuPW9ufHxmdW5jdGlvbihBKXt2YXIgZz17Zm46QSxuZXh0OnZvaWQgMH07T3ImJihPci5uZXh0PWcpLFRyfHwoVHI9ZyxQcigpKSxPcj1nfSxubj17fSxhbj1IQyxzbj1mdW5jdGlvbihBKXt2YXIgZyxJO3RoaXMucHJvbWlzZT1uZXcgQSgoZnVuY3Rpb24oQSxCKXtpZih2b2lkIDAhPT1nfHx2b2lkIDAhPT1JKXRocm93IFR5cGVFcnJvcigiQmFkIFByb21pc2UgY29uc3RydWN0b3IiKTtnPUEsST1CfSkpLHRoaXMucmVzb2x2ZT1hbihnKSx0aGlzLnJlamVjdD1hbihJKX07bm4uZj1mdW5jdGlvbihBKXtyZXR1cm4gbmV3IHNuKEEpfTt2YXIgY24saG4sZm4seW4sdW49VCxEbj12LHduPW5uLGxuPU4sZG49Im9iamVjdCI9PXR5cGVvZiB3aW5kb3csRm49ZUIsR249TixSbj1sQSxVbj1ycixrbj1NSSxTbj1vUSxwbj1KQixObj1VQixNbj13RSxZbj12LEhuPUhDLHZuPXJRLExuPVdnLEpuPWZ1bmN0aW9uKEEsZyxJKXt2YXIgQixRLEUsQyx0LGksZSxvPUkmJkkudGhhdCxyPSEoIUl8fCFJLkFTX0VOVFJJRVMpLG49ISghSXx8IUkuSVNfSVRFUkFUT1IpLGE9ISghSXx8IUkuSU5URVJSVVBURUQpLHM9aHIoZyxvLDErcithKSxjPWZ1bmN0aW9uKEEpe3JldHVybiBCJiZ5cihCKSxuZXcgdXIoITAsQSl9LGg9ZnVuY3Rpb24oQSl7cmV0dXJuIHI/KGFyKEEpLGE/cyhBWzBdLEFbMV0sYyk6cyhBWzBdLEFbMV0pKTphP3MoQSxjKTpzKEEpfTtpZihuKUI9QTtlbHNle2lmKCJmdW5jdGlvbiIhPXR5cGVvZihRPWZyKEEpKSl0aHJvdyBUeXBlRXJyb3IoIlRhcmdldCBpcyBub3QgaXRlcmFibGUiKTtpZihzcihRKSl7Zm9yKEU9MCxDPWNyKEEubGVuZ3RoKTtDPkU7RSsrKWlmKCh0PWgoQVtFXSkpJiZ0IGluc3RhbmNlb2YgdXIpcmV0dXJuIHQ7cmV0dXJuIG5ldyB1cighMSl9Qj1RLmNhbGwoQSl9Zm9yKGk9Qi5uZXh0OyEoZT1pLmNhbGwoQikpLmRvbmU7KXt0cnl7dD1oKGUudmFsdWUpfWNhdGNoKFN5KXt0aHJvdyB5cihCKSxTeX1pZigib2JqZWN0Ij09dHlwZW9mIHQmJnQmJnQgaW5zdGFuY2VvZiB1cilyZXR1cm4gdH1yZXR1cm4gbmV3IHVyKCExKX0sbW49eEUsS249c2kseG49VnIuc2V0LHFuPXJuLGJuPWZ1bmN0aW9uKEEsZyl7aWYodW4oQSksRG4oZykmJmcuY29uc3RydWN0b3I9PT1BKXJldHVybiBnO3ZhciBJPXduLmYoQSk7cmV0dXJuKDAsSS5yZXNvbHZlKShnKSxJLnByb21pc2V9LFRuPWZ1bmN0aW9uKEEsZyl7dmFyIEk9bG4uY29uc29sZTtJJiZJLmVycm9yJiYoMT09PWFyZ3VtZW50cy5sZW5ndGg/SS5lcnJvcihBKTpJLmVycm9yKEEsZykpfSxPbj1ubixQbj1mdW5jdGlvbihBKXt0cnl7cmV0dXJue2Vycm9yOiExLHZhbHVlOkEoKX19Y2F0Y2goU3kpe3JldHVybntlcnJvcjohMCx2YWx1ZTpTeX19fSxXbj1lSSxabj1nQixqbj1kbixYbj13cixWbj1TQSx6bj1iQSgic3BlY2llcyIpLF9uPSJQcm9taXNlIiwkbj1Xbi5nZXQsQWE9V24uc2V0LGdhPVduLmdldHRlckZvcihfbiksSWE9VW4mJlVuLnByb3RvdHlwZSxCYT1VbixRYT1JYSxFYT1Hbi5UeXBlRXJyb3IsQ2E9R24uZG9jdW1lbnQsdGE9R24ucHJvY2VzcyxpYT1Pbi5mLGVhPWlhLG9hPSEhKENhJiZDYS5jcmVhdGVFdmVudCYmR24uZGlzcGF0Y2hFdmVudCkscmE9ImZ1bmN0aW9uIj09dHlwZW9mIFByb21pc2VSZWplY3Rpb25FdmVudCxuYT0idW5oYW5kbGVkcmVqZWN0aW9uIixhYT0hMSxzYT1abihfbiwoZnVuY3Rpb24oKXt2YXIgQT1MbihCYSkhPT1TdHJpbmcoQmEpO2lmKCFBJiY2Nj09PVZuKXJldHVybiEwO2lmKFZuPj01MSYmL25hdGl2ZSBjb2RlLy50ZXN0KEJhKSlyZXR1cm4hMTt2YXIgZz1uZXcgQmEoKGZ1bmN0aW9uKEEpe0EoMSl9KSksST1mdW5jdGlvbihBKXtBKChmdW5jdGlvbigpe30pLChmdW5jdGlvbigpe30pKX07cmV0dXJuKGcuY29uc3RydWN0b3I9e30pW3puXT1JLCEoYWE9Zy50aGVuKChmdW5jdGlvbigpe30pKWluc3RhbmNlb2YgSSl8fCFBJiZqbiYmIXJhfSkpLGNhPXNhfHwhbW4oKGZ1bmN0aW9uKEEpe0JhLmFsbChBKS5jYXRjaCgoZnVuY3Rpb24oKXt9KSl9KSksaGE9ZnVuY3Rpb24oQSl7dmFyIGc7cmV0dXJuISghWW4oQSl8fCJmdW5jdGlvbiIhPXR5cGVvZihnPUEudGhlbikpJiZnfSxmYT1mdW5jdGlvbihBLGcpe2lmKCFBLm5vdGlmaWVkKXtBLm5vdGlmaWVkPSEwO3ZhciBJPUEucmVhY3Rpb25zO3FuKChmdW5jdGlvbigpe2Zvcih2YXIgQj1BLnZhbHVlLFE9MT09QS5zdGF0ZSxFPTA7SS5sZW5ndGg+RTspe3ZhciBDLHQsaSxlPUlbRSsrXSxvPVE/ZS5vazplLmZhaWwscj1lLnJlc29sdmUsbj1lLnJlamVjdCxhPWUuZG9tYWluO3RyeXtvPyhRfHwoMj09PUEucmVqZWN0aW9uJiZ3YShBKSxBLnJlamVjdGlvbj0xKSwhMD09PW8/Qz1COihhJiZhLmVudGVyKCksQz1vKEIpLGEmJihhLmV4aXQoKSxpPSEwKSksQz09PWUucHJvbWlzZT9uKEVhKCJQcm9taXNlLWNoYWluIGN5Y2xlIikpOih0PWhhKEMpKT90LmNhbGwoQyxyLG4pOnIoQykpOm4oQil9Y2F0Y2goU3kpe2EmJiFpJiZhLmV4aXQoKSxuKFN5KX19QS5yZWFjdGlvbnM9W10sQS5ub3RpZmllZD0hMSxnJiYhQS5yZWplY3Rpb24mJnVhKEEpfSkpfX0seWE9ZnVuY3Rpb24oQSxnLEkpe3ZhciBCLFE7b2E/KChCPUNhLmNyZWF0ZUV2ZW50KCJFdmVudCIpKS5wcm9taXNlPWcsQi5yZWFzb249SSxCLmluaXRFdmVudChBLCExLCEwKSxHbi5kaXNwYXRjaEV2ZW50KEIpKTpCPXtwcm9taXNlOmcscmVhc29uOkl9LCFyYSYmKFE9R25bIm9uIitBXSk/UShCKTpBPT09bmEmJlRuKCJVbmhhbmRsZWQgcHJvbWlzZSByZWplY3Rpb24iLEkpfSx1YT1mdW5jdGlvbihBKXt4bi5jYWxsKEduLChmdW5jdGlvbigpe3ZhciBnLEk9QS5mYWNhZGUsQj1BLnZhbHVlO2lmKERhKEEpJiYoZz1QbigoZnVuY3Rpb24oKXtYbj90YS5lbWl0KCJ1bmhhbmRsZWRSZWplY3Rpb24iLEIsSSk6eWEobmEsSSxCKX0pKSxBLnJlamVjdGlvbj1Ybnx8RGEoQSk/MjoxLGcuZXJyb3IpKXRocm93IGcudmFsdWV9KSl9LERhPWZ1bmN0aW9uKEEpe3JldHVybiAxIT09QS5yZWplY3Rpb24mJiFBLnBhcmVudH0sd2E9ZnVuY3Rpb24oQSl7eG4uY2FsbChHbiwoZnVuY3Rpb24oKXt2YXIgZz1BLmZhY2FkZTtYbj90YS5lbWl0KCJyZWplY3Rpb25IYW5kbGVkIixnKTp5YSgicmVqZWN0aW9uaGFuZGxlZCIsZyxBLnZhbHVlKX0pKX0sbGE9ZnVuY3Rpb24oQSxnLEkpe3JldHVybiBmdW5jdGlvbihCKXtBKGcsQixJKX19LGRhPWZ1bmN0aW9uKEEsZyxJKXtBLmRvbmV8fChBLmRvbmU9ITAsSSYmKEE9SSksQS52YWx1ZT1nLEEuc3RhdGU9MixmYShBLCEwKSl9LEZhPWZ1bmN0aW9uKEEsZyxJKXtpZighQS5kb25lKXtBLmRvbmU9ITAsSSYmKEE9SSk7dHJ5e2lmKEEuZmFjYWRlPT09Zyl0aHJvdyBFYSgiUHJvbWlzZSBjYW4ndCBiZSByZXNvbHZlZCBpdHNlbGYiKTt2YXIgQj1oYShnKTtCP3FuKChmdW5jdGlvbigpe3ZhciBJPXtkb25lOiExfTt0cnl7Qi5jYWxsKGcsbGEoRmEsSSxBKSxsYShkYSxJLEEpKX1jYXRjaChTeSl7ZGEoSSxTeSxBKX19KSk6KEEudmFsdWU9ZyxBLnN0YXRlPTEsZmEoQSwhMSkpfWNhdGNoKFN5KXtkYSh7ZG9uZTohMX0sU3ksQSl9fX07aWYoc2EmJihRYT0oQmE9ZnVuY3Rpb24oQSl7dm4odGhpcyxCYSxfbiksSG4oQSksY24uY2FsbCh0aGlzKTt2YXIgZz0kbih0aGlzKTt0cnl7QShsYShGYSxnKSxsYShkYSxnKSl9Y2F0Y2goU3kpe2RhKGcsU3kpfX0pLnByb3RvdHlwZSwoY249ZnVuY3Rpb24oQSl7QWEodGhpcyx7dHlwZTpfbixkb25lOiExLG5vdGlmaWVkOiExLHBhcmVudDohMSxyZWFjdGlvbnM6W10scmVqZWN0aW9uOiExLHN0YXRlOjAsdmFsdWU6dm9pZCAwfSl9KS5wcm90b3R5cGU9U24oUWEse3RoZW46ZnVuY3Rpb24oQSxnKXt2YXIgST1nYSh0aGlzKSxCPWlhKEtuKHRoaXMsQmEpKTtyZXR1cm4gQi5vaz0iZnVuY3Rpb24iIT10eXBlb2YgQXx8QSxCLmZhaWw9ImZ1bmN0aW9uIj09dHlwZW9mIGcmJmcsQi5kb21haW49WG4/dGEuZG9tYWluOnZvaWQgMCxJLnBhcmVudD0hMCxJLnJlYWN0aW9ucy5wdXNoKEIpLDAhPUkuc3RhdGUmJmZhKEksITEpLEIucHJvbWlzZX0sY2F0Y2g6ZnVuY3Rpb24oQSl7cmV0dXJuIHRoaXMudGhlbih2b2lkIDAsQSl9fSksaG49ZnVuY3Rpb24oKXt2YXIgQT1uZXcgY24sZz0kbihBKTt0aGlzLnByb21pc2U9QSx0aGlzLnJlc29sdmU9bGEoRmEsZyksdGhpcy5yZWplY3Q9bGEoZGEsZyl9LE9uLmY9aWE9ZnVuY3Rpb24oQSl7cmV0dXJuIEE9PT1CYXx8QT09PWZuP25ldyBobihBKTplYShBKX0sImZ1bmN0aW9uIj09dHlwZW9mIFVuJiZJYSE9PU9iamVjdC5wcm90b3R5cGUpKXt5bj1JYS50aGVuLGFhfHwoa24oSWEsInRoZW4iLChmdW5jdGlvbihBLGcpe3ZhciBJPXRoaXM7cmV0dXJuIG5ldyBCYSgoZnVuY3Rpb24oQSxnKXt5bi5jYWxsKEksQSxnKX0pKS50aGVuKEEsZyl9KSx7dW5zYWZlOiEwfSksa24oSWEsImNhdGNoIixRYS5jYXRjaCx7dW5zYWZlOiEwfSkpO3RyeXtkZWxldGUgSWEuY29uc3RydWN0b3J9Y2F0Y2goU3kpe31wbiYmcG4oSWEsUWEpfUZuKHtnbG9iYWw6ITAsd3JhcDohMCxmb3JjZWQ6c2F9LHtQcm9taXNlOkJhfSksTm4oQmEsX24sITEpLE1uKF9uKSxmbj1SbihfbiksRm4oe3RhcmdldDpfbixzdGF0OiEwLGZvcmNlZDpzYX0se3JlamVjdDpmdW5jdGlvbihBKXt2YXIgZz1pYSh0aGlzKTtyZXR1cm4gZy5yZWplY3QuY2FsbCh2b2lkIDAsQSksZy5wcm9taXNlfX0pLEZuKHt0YXJnZXQ6X24sc3RhdDohMCxmb3JjZWQ6c2F9LHtyZXNvbHZlOmZ1bmN0aW9uKEEpe3JldHVybiBibih0aGlzLEEpfX0pLEZuKHt0YXJnZXQ6X24sc3RhdDohMCxmb3JjZWQ6Y2F9LHthbGw6ZnVuY3Rpb24oQSl7dmFyIGc9dGhpcyxJPWlhKGcpLEI9SS5yZXNvbHZlLFE9SS5yZWplY3QsRT1QbigoZnVuY3Rpb24oKXt2YXIgST1IbihnLnJlc29sdmUpLEU9W10sQz0wLHQ9MTtKbihBLChmdW5jdGlvbihBKXt2YXIgaT1DKyssZT0hMTtFLnB1c2godm9pZCAwKSx0KyssSS5jYWxsKGcsQSkudGhlbigoZnVuY3Rpb24oQSl7ZXx8KGU9ITAsRVtpXT1BLC0tdHx8QihFKSl9KSxRKX0pKSwtLXR8fEIoRSl9KSk7cmV0dXJuIEUuZXJyb3ImJlEoRS52YWx1ZSksSS5wcm9taXNlfSxyYWNlOmZ1bmN0aW9uKEEpe3ZhciBnPXRoaXMsST1pYShnKSxCPUkucmVqZWN0LFE9UG4oKGZ1bmN0aW9uKCl7dmFyIFE9SG4oZy5yZXNvbHZlKTtKbihBLChmdW5jdGlvbihBKXtRLmNhbGwoZyxBKS50aGVuKEkucmVzb2x2ZSxCKX0pKX0pKTtyZXR1cm4gUS5lcnJvciYmQihRLnZhbHVlKSxJLnByb21pc2V9fSk7dmFyIEdhPXYsUmE9bCxVYT1iQSgibWF0Y2giKSxrYT1mdW5jdGlvbihBKXt2YXIgZztyZXR1cm4gR2EoQSkmJih2b2lkIDAhPT0oZz1BW1VhXSk/ISFnOiJSZWdFeHAiPT1SYShBKSl9LFNhPVQscGE9ZnVuY3Rpb24oKXt2YXIgQT1TYSh0aGlzKSxnPSIiO3JldHVybiBBLmdsb2JhbCYmKGcrPSJnIiksQS5pZ25vcmVDYXNlJiYoZys9ImkiKSxBLm11bHRpbGluZSYmKGcrPSJtIiksQS5kb3RBbGwmJihnKz0icyIpLEEudW5pY29kZSYmKGcrPSJ1IiksQS5zdGlja3kmJihnKz0ieSIpLGd9LE5hPXt9LE1hPUQ7ZnVuY3Rpb24gWWEoQSxnKXtyZXR1cm4gUmVnRXhwKEEsZyl9TmEuVU5TVVBQT1JURURfWT1NYSgoZnVuY3Rpb24oKXt2YXIgQT1ZYSgiYSIsInkiKTtyZXR1cm4gQS5sYXN0SW5kZXg9MixudWxsIT1BLmV4ZWMoImFiY2QiKX0pKSxOYS5CUk9LRU5fQ0FSRVQ9TWEoKGZ1bmN0aW9uKCl7dmFyIEE9WWEoIl5yIiwiZ3kiKTtyZXR1cm4gQS5sYXN0SW5kZXg9MixudWxsIT1BLmV4ZWMoInN0ciIpfSkpO3ZhciBIYT1ZLHZhPU4sTGE9Z0IsSmE9RXQsbWE9SC5mLEthPVlJLmYseGE9a2EscWE9cGEsYmE9TmEsVGE9TUksT2E9RCxQYT1lSS5lbmZvcmNlLFdhPXdFLFphPWJBKCJtYXRjaCIpLGphPXZhLlJlZ0V4cCxYYT1qYS5wcm90b3R5cGUsVmE9L2EvZyx6YT0vYS9nLF9hPW5ldyBqYShWYSkhPT1WYSwkYT1iYS5VTlNVUFBPUlRFRF9ZO2lmKEhhJiZMYSgiUmVnRXhwIiwhX2F8fCRhfHxPYSgoZnVuY3Rpb24oKXtyZXR1cm4gemFbWmFdPSExLGphKFZhKSE9VmF8fGphKHphKT09emF8fCIvYS9pIiE9amEoVmEsImkiKX0pKSkpe2Zvcih2YXIgQXM9ZnVuY3Rpb24oQSxnKXt2YXIgSSxCPXRoaXMgaW5zdGFuY2VvZiBBcyxRPXhhKEEpLEU9dm9pZCAwPT09ZztpZighQiYmUSYmQS5jb25zdHJ1Y3Rvcj09PUFzJiZFKXJldHVybiBBO19hP1EmJiFFJiYoQT1BLnNvdXJjZSk6QSBpbnN0YW5jZW9mIEFzJiYoRSYmKGc9cWEuY2FsbChBKSksQT1BLnNvdXJjZSksJGEmJihJPSEhZyYmZy5pbmRleE9mKCJ5Iik+LTEpJiYoZz1nLnJlcGxhY2UoL3kvZywiIikpO3ZhciBDPUphKF9hP25ldyBqYShBLGcpOmphKEEsZyksQj90aGlzOlhhLEFzKTskYSYmSSYmKFBhKEMpLnN0aWNreT0hMCk7cmV0dXJuIEN9LGdzPWZ1bmN0aW9uKEEpe0EgaW4gQXN8fG1hKEFzLEEse2NvbmZpZ3VyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gamFbQV19LHNldDpmdW5jdGlvbihnKXtqYVtBXT1nfX0pfSxJcz1LYShqYSksQnM9MDtJcy5sZW5ndGg+QnM7KWdzKElzW0JzKytdKTtYYS5jb25zdHJ1Y3Rvcj1BcyxBcy5wcm90b3R5cGU9WGEsVGEodmEsIlJlZ0V4cCIsQXMpfVdhKCJSZWdFeHAiKTt2YXIgUXMsRXMsQ3M9cGEsdHM9TmEsaXM9b0EsZXM9UmVnRXhwLnByb3RvdHlwZS5leGVjLG9zPWlzKCJuYXRpdmUtc3RyaW5nLXJlcGxhY2UiLFN0cmluZy5wcm90b3R5cGUucmVwbGFjZSkscnM9ZXMsbnM9KFFzPS9hLyxFcz0vYiovZyxlcy5jYWxsKFFzLCJhIiksZXMuY2FsbChFcywiYSIpLDAhPT1Rcy5sYXN0SW5kZXh8fDAhPT1Fcy5sYXN0SW5kZXgpLGFzPXRzLlVOU1VQUE9SVEVEX1l8fHRzLkJST0tFTl9DQVJFVCxzcz12b2lkIDAhPT0vKCk/Py8uZXhlYygiIilbMV07KG5zfHxzc3x8YXMpJiYocnM9ZnVuY3Rpb24oQSl7dmFyIGcsSSxCLFEsRT10aGlzLEM9YXMmJkUuc3RpY2t5LHQ9Q3MuY2FsbChFKSxpPUUuc291cmNlLGU9MCxvPUE7cmV0dXJuIEMmJigtMT09PSh0PXQucmVwbGFjZSgieSIsIiIpKS5pbmRleE9mKCJnIikmJih0Kz0iZyIpLG89U3RyaW5nKEEpLnNsaWNlKEUubGFzdEluZGV4KSxFLmxhc3RJbmRleD4wJiYoIUUubXVsdGlsaW5lfHxFLm11bHRpbGluZSYmIlxuIiE9PUFbRS5sYXN0SW5kZXgtMV0pJiYoaT0iKD86ICIraSsiKSIsbz0iICIrbyxlKyspLEk9bmV3IFJlZ0V4cCgiXig/OiIraSsiKSIsdCkpLHNzJiYoST1uZXcgUmVnRXhwKCJeIitpKyIkKD8hXFxzKSIsdCkpLG5zJiYoZz1FLmxhc3RJbmRleCksQj1lcy5jYWxsKEM/STpFLG8pLEM/Qj8oQi5pbnB1dD1CLmlucHV0LnNsaWNlKGUpLEJbMF09QlswXS5zbGljZShlKSxCLmluZGV4PUUubGFzdEluZGV4LEUubGFzdEluZGV4Kz1CWzBdLmxlbmd0aCk6RS5sYXN0SW5kZXg9MDpucyYmQiYmKEUubGFzdEluZGV4PUUuZ2xvYmFsP0IuaW5kZXgrQlswXS5sZW5ndGg6Zyksc3MmJkImJkIubGVuZ3RoPjEmJm9zLmNhbGwoQlswXSxJLChmdW5jdGlvbigpe2ZvcihRPTE7UTxhcmd1bWVudHMubGVuZ3RoLTI7USsrKXZvaWQgMD09PWFyZ3VtZW50c1tRXSYmKEJbUV09dm9pZCAwKX0pKSxCfSk7dmFyIGNzPXJzO2VCKHt0YXJnZXQ6IlJlZ0V4cCIscHJvdG86ITAsZm9yY2VkOi8uLy5leGVjIT09Y3N9LHtleGVjOmNzfSk7dmFyIGhzPU1JLGZzPVQseXM9RCx1cz1wYSxEcz0idG9TdHJpbmciLHdzPVJlZ0V4cC5wcm90b3R5cGUsbHM9d3NbRHNdLGRzPXlzKChmdW5jdGlvbigpe3JldHVybiIvYS9iIiE9bHMuY2FsbCh7c291cmNlOiJhIixmbGFnczoiYiJ9KX0pKSxGcz1scy5uYW1lIT1EczsoZHN8fEZzKSYmaHMoUmVnRXhwLnByb3RvdHlwZSxEcywoZnVuY3Rpb24oKXt2YXIgQT1mcyh0aGlzKSxnPVN0cmluZyhBLnNvdXJjZSksST1BLmZsYWdzO3JldHVybiIvIitnKyIvIitTdHJpbmcodm9pZCAwPT09SSYmQSBpbnN0YW5jZW9mIFJlZ0V4cCYmISgiZmxhZ3MiaW4gd3MpP3VzLmNhbGwoQSk6SSl9KSx7dW5zYWZlOiEwfSk7dmFyIEdzPWthLFJzPWZ1bmN0aW9uKEEpe2lmKEdzKEEpKXRocm93IFR5cGVFcnJvcigiVGhlIG1ldGhvZCBkb2Vzbid0IGFjY2VwdCByZWd1bGFyIGV4cHJlc3Npb25zIik7cmV0dXJuIEF9LFVzPWJBKCJtYXRjaCIpLGtzPWZ1bmN0aW9uKEEpe3ZhciBnPS8uLzt0cnl7Ii8uLyJbQV0oZyl9Y2F0Y2goSSl7dHJ5e3JldHVybiBnW1VzXT0hMSwiLy4vIltBXShnKX1jYXRjaChCKXt9fXJldHVybiExfSxTcz1Scyxwcz1SO2VCKHt0YXJnZXQ6IlN0cmluZyIscHJvdG86ITAsZm9yY2VkOiFrcygiaW5jbHVkZXMiKX0se2luY2x1ZGVzOmZ1bmN0aW9uKEEpe3JldHVybiEhflN0cmluZyhwcyh0aGlzKSkuaW5kZXhPZihTcyhBKSxhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCl9fSk7dmFyIE5zPU1JLE1zPWNzLFlzPUQsSHM9YkEsdnM9QUEsTHM9SHMoInNwZWNpZXMiKSxKcz1SZWdFeHAucHJvdG90eXBlLG1zPSFZcygoZnVuY3Rpb24oKXt2YXIgQT0vLi87cmV0dXJuIEEuZXhlYz1mdW5jdGlvbigpe3ZhciBBPVtdO3JldHVybiBBLmdyb3Vwcz17YToiNyJ9LEF9LCI3IiE9PSIiLnJlcGxhY2UoQSwiJDxhPiIpfSkpLEtzPSIkMCI9PT0iYSIucmVwbGFjZSgvLi8sIiQwIikseHM9SHMoInJlcGxhY2UiKSxxcz0hIS8uL1t4c10mJiIiPT09Ly4vW3hzXSgiYSIsIiQwIiksYnM9IVlzKChmdW5jdGlvbigpe3ZhciBBPS8oPzopLyxnPUEuZXhlYztBLmV4ZWM9ZnVuY3Rpb24oKXtyZXR1cm4gZy5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O3ZhciBJPSJhYiIuc3BsaXQoQSk7cmV0dXJuIDIhPT1JLmxlbmd0aHx8ImEiIT09SVswXXx8ImIiIT09SVsxXX0pKSxUcz1mdW5jdGlvbihBLGcsSSxCKXt2YXIgUT1IcyhBKSxFPSFZcygoZnVuY3Rpb24oKXt2YXIgZz17fTtyZXR1cm4gZ1tRXT1mdW5jdGlvbigpe3JldHVybiA3fSw3IT0iIltBXShnKX0pKSxDPUUmJiFZcygoZnVuY3Rpb24oKXt2YXIgZz0hMSxJPS9hLztyZXR1cm4ic3BsaXQiPT09QSYmKChJPXt9KS5jb25zdHJ1Y3Rvcj17fSxJLmNvbnN0cnVjdG9yW0xzXT1mdW5jdGlvbigpe3JldHVybiBJfSxJLmZsYWdzPSIiLElbUV09Ly4vW1FdKSxJLmV4ZWM9ZnVuY3Rpb24oKXtyZXR1cm4gZz0hMCxudWxsfSxJW1FdKCIiKSwhZ30pKTtpZighRXx8IUN8fCJyZXBsYWNlIj09PUEmJighbXN8fCFLc3x8cXMpfHwic3BsaXQiPT09QSYmIWJzKXt2YXIgdD0vLi9bUV0saT1JKFEsIiJbQV0sKGZ1bmN0aW9uKEEsZyxJLEIsUSl7dmFyIEM9Zy5leGVjO3JldHVybiBDPT09TXN8fEM9PT1Kcy5leGVjP0UmJiFRP3tkb25lOiEwLHZhbHVlOnQuY2FsbChnLEksQil9Ontkb25lOiEwLHZhbHVlOkEuY2FsbChJLGcsQil9Ontkb25lOiExfX0pLHtSRVBMQUNFX0tFRVBTXyQwOktzLFJFR0VYUF9SRVBMQUNFX1NVQlNUSVRVVEVTX1VOREVGSU5FRF9DQVBUVVJFOnFzfSksZT1pWzBdLG89aVsxXTtOcyhTdHJpbmcucHJvdG90eXBlLEEsZSksTnMoSnMsUSwyPT1nP2Z1bmN0aW9uKEEsZyl7cmV0dXJuIG8uY2FsbChBLHRoaXMsZyl9OmZ1bmN0aW9uKEEpe3JldHVybiBvLmNhbGwoQSx0aGlzKX0pfUImJnZzKEpzW1FdLCJzaGFtIiwhMCl9LE9zPVBBLFBzPVIsV3M9ZnVuY3Rpb24oQSl7cmV0dXJuIGZ1bmN0aW9uKGcsSSl7dmFyIEIsUSxFPVN0cmluZyhQcyhnKSksQz1PcyhJKSx0PUUubGVuZ3RoO3JldHVybiBDPDB8fEM+PXQ/QT8iIjp2b2lkIDA6KEI9RS5jaGFyQ29kZUF0KEMpKTw1NTI5Nnx8Qj41NjMxOXx8QysxPT09dHx8KFE9RS5jaGFyQ29kZUF0KEMrMSkpPDU2MzIwfHxRPjU3MzQzP0E/RS5jaGFyQXQoQyk6QjpBP0Uuc2xpY2UoQyxDKzIpOlEtNTYzMjArKEItNTUyOTY8PDEwKSs2NTUzNn19LFpzPXtjb2RlQXQ6V3MoITEpLGNoYXJBdDpXcyghMCl9LmNoYXJBdCxqcz1mdW5jdGlvbihBLGcsSSl7cmV0dXJuIGcrKEk/WnMoQSxnKS5sZW5ndGg6MSl9LFhzPW5BLFZzPU1hdGguZmxvb3IsenM9IiIucmVwbGFjZSxfcz0vXCQoWyQmJ2BdfFxkezEsMn18PFtePl0qPikvZywkcz0vXCQoWyQmJ2BdfFxkezEsMn0pL2csQWM9bCxnYz1jcyxJYz1mdW5jdGlvbihBLGcpe3ZhciBJPUEuZXhlYztpZigiZnVuY3Rpb24iPT10eXBlb2YgSSl7dmFyIEI9SS5jYWxsKEEsZyk7aWYoIm9iamVjdCIhPXR5cGVvZiBCKXRocm93IFR5cGVFcnJvcigiUmVnRXhwIGV4ZWMgbWV0aG9kIHJldHVybmVkIHNvbWV0aGluZyBvdGhlciB0aGFuIGFuIE9iamVjdCBvciBudWxsIik7cmV0dXJuIEJ9aWYoIlJlZ0V4cCIhPT1BYyhBKSl0aHJvdyBUeXBlRXJyb3IoIlJlZ0V4cCNleGVjIGNhbGxlZCBvbiBpbmNvbXBhdGlibGUgcmVjZWl2ZXIiKTtyZXR1cm4gZ2MuY2FsbChBLGcpfSxCYz1UcyxRYz1ULEVjPWpBLENjPVBBLHRjPVIsaWM9anMsZWM9ZnVuY3Rpb24oQSxnLEksQixRLEUpe3ZhciBDPUkrQS5sZW5ndGgsdD1CLmxlbmd0aCxpPSRzO3JldHVybiB2b2lkIDAhPT1RJiYoUT1YcyhRKSxpPV9zKSx6cy5jYWxsKEUsaSwoZnVuY3Rpb24oRSxpKXt2YXIgZTtzd2l0Y2goaS5jaGFyQXQoMCkpe2Nhc2UiJCI6cmV0dXJuIiQiO2Nhc2UiJiI6cmV0dXJuIEE7Y2FzZSJgIjpyZXR1cm4gZy5zbGljZSgwLEkpO2Nhc2UiJyI6cmV0dXJuIGcuc2xpY2UoQyk7Y2FzZSI8IjplPVFbaS5zbGljZSgxLC0xKV07YnJlYWs7ZGVmYXVsdDp2YXIgbz0raTtpZigwPT09bylyZXR1cm4gRTtpZihvPnQpe3ZhciByPVZzKG8vMTApO3JldHVybiAwPT09cj9FOnI8PXQ/dm9pZCAwPT09QltyLTFdP2kuY2hhckF0KDEpOkJbci0xXStpLmNoYXJBdCgxKTpFfWU9QltvLTFdfXJldHVybiB2b2lkIDA9PT1lPyIiOmV9KSl9LG9jPUljLHJjPU1hdGgubWF4LG5jPU1hdGgubWluO0JjKCJyZXBsYWNlIiwyLChmdW5jdGlvbihBLGcsSSxCKXt2YXIgUT1CLlJFR0VYUF9SRVBMQUNFX1NVQlNUSVRVVEVTX1VOREVGSU5FRF9DQVBUVVJFLEU9Qi5SRVBMQUNFX0tFRVBTXyQwLEM9UT8iJCI6IiQwIjtyZXR1cm5bZnVuY3Rpb24oSSxCKXt2YXIgUT10Yyh0aGlzKSxFPW51bGw9PUk/dm9pZCAwOklbQV07cmV0dXJuIHZvaWQgMCE9PUU/RS5jYWxsKEksUSxCKTpnLmNhbGwoU3RyaW5nKFEpLEksQil9LGZ1bmN0aW9uKEEsQil7aWYoIVEmJkV8fCJzdHJpbmciPT10eXBlb2YgQiYmLTE9PT1CLmluZGV4T2YoQykpe3ZhciB0PUkoZyxBLHRoaXMsQik7aWYodC5kb25lKXJldHVybiB0LnZhbHVlfXZhciBpPVFjKEEpLGU9U3RyaW5nKHRoaXMpLG89ImZ1bmN0aW9uIj09dHlwZW9mIEI7b3x8KEI9U3RyaW5nKEIpKTt2YXIgcj1pLmdsb2JhbDtpZihyKXt2YXIgbj1pLnVuaWNvZGU7aS5sYXN0SW5kZXg9MH1mb3IodmFyIGE9W107Oyl7dmFyIHM9b2MoaSxlKTtpZihudWxsPT09cylicmVhaztpZihhLnB1c2gocyksIXIpYnJlYWs7IiI9PT1TdHJpbmcoc1swXSkmJihpLmxhc3RJbmRleD1pYyhlLEVjKGkubGFzdEluZGV4KSxuKSl9Zm9yKHZhciBjLGg9IiIsZj0wLHk9MDt5PGEubGVuZ3RoO3krKyl7cz1hW3ldO2Zvcih2YXIgdT1TdHJpbmcoc1swXSksRD1yYyhuYyhDYyhzLmluZGV4KSxlLmxlbmd0aCksMCksdz1bXSxsPTE7bDxzLmxlbmd0aDtsKyspdy5wdXNoKHZvaWQgMD09PShjPXNbbF0pP2M6U3RyaW5nKGMpKTt2YXIgZD1zLmdyb3VwcztpZihvKXt2YXIgRj1bdV0uY29uY2F0KHcsRCxlKTt2b2lkIDAhPT1kJiZGLnB1c2goZCk7dmFyIEc9U3RyaW5nKEIuYXBwbHkodm9pZCAwLEYpKX1lbHNlIEc9ZWModSxlLEQsdyxkLEIpO0Q+PWYmJihoKz1lLnNsaWNlKGYsRCkrRyxmPUQrdS5sZW5ndGgpfXJldHVybiBoK2Uuc2xpY2UoZil9XX0pKTt2YXIgYWMsc2M9ZUIsY2M9b0kuZixoYz1qQSxmYz1Scyx5Yz1SLHVjPWtzLERjPSIiLnN0YXJ0c1dpdGgsd2M9TWF0aC5taW4sbGM9dWMoInN0YXJ0c1dpdGgiKTtzYyh7dGFyZ2V0OiJTdHJpbmciLHByb3RvOiEwLGZvcmNlZDohIShsY3x8KGFjPWNjKFN0cmluZy5wcm90b3R5cGUsInN0YXJ0c1dpdGgiKSwhYWN8fGFjLndyaXRhYmxlKSkmJiFsY30se3N0YXJ0c1dpdGg6ZnVuY3Rpb24oQSl7dmFyIGc9U3RyaW5nKHljKHRoaXMpKTtmYyhBKTt2YXIgST1oYyh3Yyhhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCxnLmxlbmd0aCkpLEI9U3RyaW5nKEEpO3JldHVybiBEYz9EYy5jYWxsKGcsQixJKTpnLnNsaWNlKEksSStCLmxlbmd0aCk9PT1CfX0pLCR0KCJGbG9hdDMyIiwoZnVuY3Rpb24oQSl7cmV0dXJuIGZ1bmN0aW9uKGcsSSxCKXtyZXR1cm4gQSh0aGlzLGcsSSxCKX19KSksJHQoIkZsb2F0NjQiLChmdW5jdGlvbihBKXtyZXR1cm4gZnVuY3Rpb24oZyxJLEIpe3JldHVybiBBKHRoaXMsZyxJLEIpfX0pKSwkdCgiSW50OCIsKGZ1bmN0aW9uKEEpe3JldHVybiBmdW5jdGlvbihnLEksQil7cmV0dXJuIEEodGhpcyxnLEksQil9fSkpLCR0KCJJbnQxNiIsKGZ1bmN0aW9uKEEpe3JldHVybiBmdW5jdGlvbihnLEksQil7cmV0dXJuIEEodGhpcyxnLEksQil9fSkpLCR0KCJJbnQzMiIsKGZ1bmN0aW9uKEEpe3JldHVybiBmdW5jdGlvbihnLEksQil7cmV0dXJuIEEodGhpcyxnLEksQil9fSkpLCR0KCJVaW50MTYiLChmdW5jdGlvbihBKXtyZXR1cm4gZnVuY3Rpb24oZyxJLEIpe3JldHVybiBBKHRoaXMsZyxJLEIpfX0pKSwkdCgiVWludDMyIiwoZnVuY3Rpb24oQSl7cmV0dXJuIGZ1bmN0aW9uKGcsSSxCKXtyZXR1cm4gQSh0aGlzLGcsSSxCKX19KSk7dmFyIGRjPUl0LmZvckVhY2gsRmM9V2koImZvckVhY2giKT9bXS5mb3JFYWNoOmZ1bmN0aW9uKEEpe3JldHVybiBkYyh0aGlzLEEsYXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDApfSxHYz1OLFJjPXtDU1NSdWxlTGlzdDowLENTU1N0eWxlRGVjbGFyYXRpb246MCxDU1NWYWx1ZUxpc3Q6MCxDbGllbnRSZWN0TGlzdDowLERPTVJlY3RMaXN0OjAsRE9NU3RyaW5nTGlzdDowLERPTVRva2VuTGlzdDoxLERhdGFUcmFuc2Zlckl0ZW1MaXN0OjAsRmlsZUxpc3Q6MCxIVE1MQWxsQ29sbGVjdGlvbjowLEhUTUxDb2xsZWN0aW9uOjAsSFRNTEZvcm1FbGVtZW50OjAsSFRNTFNlbGVjdEVsZW1lbnQ6MCxNZWRpYUxpc3Q6MCxNaW1lVHlwZUFycmF5OjAsTmFtZWROb2RlTWFwOjAsTm9kZUxpc3Q6MSxQYWludFJlcXVlc3RMaXN0OjAsUGx1Z2luOjAsUGx1Z2luQXJyYXk6MCxTVkdMZW5ndGhMaXN0OjAsU1ZHTnVtYmVyTGlzdDowLFNWR1BhdGhTZWdMaXN0OjAsU1ZHUG9pbnRMaXN0OjAsU1ZHU3RyaW5nTGlzdDowLFNWR1RyYW5zZm9ybUxpc3Q6MCxTb3VyY2VCdWZmZXJMaXN0OjAsU3R5bGVTaGVldExpc3Q6MCxUZXh0VHJhY2tDdWVMaXN0OjAsVGV4dFRyYWNrTGlzdDowLFRvdWNoTGlzdDowfSxVYz1GYyxrYz1BQTtmb3IodmFyIFNjIGluIFJjKXt2YXIgcGM9R2NbU2NdLE5jPXBjJiZwYy5wcm90b3R5cGU7aWYoTmMmJk5jLmZvckVhY2ghPT1VYyl0cnl7a2MoTmMsImZvckVhY2giLFVjKX1jYXRjaChTeSl7TmMuZm9yRWFjaD1VY319dmFyIE1jPUE9PmZ1bmN0aW9uKEEsZyl7aWYoZy5zdGFydHNXaXRoKCJkYXRhOiIpKXt2YXIgSSxCPWcucmVwbGFjZSgvXmRhdGE6Lio/YmFzZTY0LC8sIiIpO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBCdWZmZXImJiJmdW5jdGlvbiI9PXR5cGVvZiBCdWZmZXIuZnJvbSlJPUJ1ZmZlci5mcm9tKEIsImJhc2U2NCIpO2Vsc2V7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGF0b2IpdGhyb3cgbmV3IEVycm9yKCJGYWlsZWQgdG8gZGVjb2RlIGJhc2U2NC1lbmNvZGVkIGRhdGEgVVJMLCBCdWZmZXIgYW5kIGF0b2IgYXJlIG5vdCBzdXBwb3J0ZWQiKTt2YXIgUT1hdG9iKEIpO0k9bmV3IFVpbnQ4QXJyYXkoUS5sZW5ndGgpO2Zvcih2YXIgRT0wO0U8US5sZW5ndGg7RSsrKUlbRV09US5jaGFyQ29kZUF0KEUpfXJldHVybiBXZWJBc3NlbWJseS5pbnN0YW50aWF0ZShJLEEpLnRoZW4oKGZ1bmN0aW9uKEEpe3JldHVybiBBLmluc3RhbmNlfSkpfXZhciBDPXZvaWQgMCx0PXZvaWQgMDtyZXR1cm4gZmV0Y2goZykudGhlbigoZnVuY3Rpb24oZyl7cmV0dXJuIHQ9KEM9ZykuaGVhZGVycy5nZXQoIkNvbnRlbnQtVHlwZSIpfHwiIiwiaW5zdGFudGlhdGVTdHJlYW1pbmciaW4gV2ViQXNzZW1ibHkmJnQuc3RhcnRzV2l0aCgiYXBwbGljYXRpb24vd2FzbSIpP1dlYkFzc2VtYmx5Lmluc3RhbnRpYXRlU3RyZWFtaW5nKEMsQSk6Qy5hcnJheUJ1ZmZlcigpfSkpLnRoZW4oKGZ1bmN0aW9uKGcpe3JldHVybiBnIGluc3RhbmNlb2YgQXJyYXlCdWZmZXI/V2ViQXNzZW1ibHkuaW5zdGFudGlhdGUoZyxBKTpnfSkpLnRoZW4oKGZ1bmN0aW9uKEEpe3JldHVybiBBLmluc3RhbmNlfSkpfShBLCJkYXRhOmFwcGxpY2F0aW9uL3dhc207YmFzZTY0LEFHRnpiUUVBQUFBQi9BSXVZQUYvQVg5Z0FYOEFZQUovZndGL1lBSi9md0JnQTM5L2Z3Ri9ZQVovZjM5L2YzOEJmMkFGZjM5L2YzOEJmMkFEZjM5L0FHQUVmMzkvZndCZ0JuOS9mMzkvZndCZ0JYOS9mMzkvQUdBRWYzOS9md0YvWUFoL2YzOS9mMzkvZndGL1lBZC9mMzkvZjM5L0FYOWdCWDkrZm41K0FHQUFBR0FIZjM5L2YzOS9md0JnQkg5L2YzOEJmbUFGZjM5L2YzNEJmMkFBQVg5Z0JIOStmbjhBWUFKL2ZnQmdCWDkvZm45L0FHQUtmMzkvZjM5L2YzOS9md0YvWUF4L2YzOS9mMzkvZjM5L2YzOEJmMkFJZjM5L2YzOS9mMzhBWUE5L2YzOS9mMzkvZjM5L2YzOS9mMzhBWUFwL2YzOS9mMzkvZjM5L0FHQUxmMzkvZjM5L2YzOS9mMzhCZjJBR2YzeC9mMzkvQVg5Z0IzOS9mMzkvZm40QmYyQUdmMzkvZjM1K0FYOWdCWDkvZjM5OEFYOWdBbjk4QUdBRWZuNStmZ0YvWUFKK2Z3Ri9ZQUorZmdGOFlBRi9BWHhnQTM1K2ZnRi9ZQU4vZjM4QmZHQURmMzkvQVgxZ0JIOS9mMzRCZm1BQ2ZIOEJmR0FEZjM5K0FHQUNmbjRCZldBQ2YzOEJmZ0l4Q0FGaEFXRUFEd0ZoQVdJQUJnRmhBV01BQWdGaEFXUUFBZ0ZoQVdVQUFBRmhBV1lBQkFGaEFXY0FCd0ZoQVdnQUFBUExCTWtFQWdBQUFnTUFBUU1CQUFBQUF3TVREdzRBQUFFREFRUUFBUUFBQVFBQUFnTUNBZ2NPQmdnS0ZBTUNBQU1EQUFJREFBTURBQTRDQkFRQUF3UUFCQUFFQUFBQUF3TURBd1FBQUFFQ0ZRSUhCUU1HQmdzQ0FDRUNBQXdNQlFnQ0FBQUFBd01EQXdBSUFBZ0FCd0FBQUFNQ0FnTURBaUlVQUFBRUF3SUFBQU1BQndJQ0FBQVhBQmNBSXdNQUFBTUFBUUFCQndJSENBQURBZ0lLQXdJQkJBTUFCd0lEQUFBREF4QUVFQUlOQWcwTEFnc0FBQUlWQUFBRUNBSUFDUWNJQWdjRENnRUFCQVlEQVFBQUF3UVlDZ1FZQ2dnUkFnQUVKQTRsSmdBQkFRQUFDZzhBQUFjQkF4VUJCQWdDQWdvWkFBY0hHUUFCQXdjQ0F3RUNFd0VJQndvQUFBQUJBQVlIREFBQkF3RUFBQU1CQVFFQUJCb2JHaHNBQWdBQUFnTWNBd0lBQUFjREhBTURBZ0lEQ1FjS0NRa0tDUWtBRUFRUUF3SUZCd1FBQ0Njb0VRc0ZDeEVMQUFJSEVTa0FDd0FCQXdJQ0FnY0VBQVlxQWdBQ0FnUXJMQzBJRGdJT0ZBNEFBUUlDQUFBQUJ3TURCd01EQVFBQUFnTUNBQUFDQVFBQ0FBRUJBZ1FBQUFRSUZnUUJBUUFBQVJNQkFRQUpDUWtLQ2dvQUNBZ0lCQThCQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFNREF3TURBd0FBQVFFR0RBd0dEQXdBQmdBR0RBd0JCZ1lFQ3dRQ0JBSUJCZ1FMQkFJRUFnc0xDd1FCQVFFQkNRa0ZIZ1VlRFEwTkRRME5EQVVGQlFVRkJ3d0ZCUVVGQlFZZklCSUdFZ2NHQmdZZklCSUdFZ2tHQmdVRkJRVUZCUVVGQlFVRkJRVUZBQVVGQlFrRkJBZ0dCQWdJQmdRREhRUUJBUUFCQUFnQkZnSUNBQUFCQVFBQUFRQUJBUUFFQkFjQmNBSEJBc0VDQlFZQkFUQ0FnQUlHQ0FGL0FVR2cxd0VMQjBnUEFXa0NBQUZxQU9jQkFXc0FHUUZzQUJBQmJRRGFBZ0Z1QUxRRUFXOEFyZ1FCY0FDWkJBRnhBSkFFQVhJQXJBRUJjd0NEQkFGMEFRQUJkUUNWQXdGMkFKUURBWGNBa3dNSnh3UUJBRUVCQzhBQ3pRU3FCTUVCdkFHUUE2d0Jqd09PQTQwRFQwK01BNHNEaWdPSUE5QUVpQVBsQVljRHp3VE9CT1FCK1FMTUJNc0V1QUhqQWNvRXlBVEpCTWNFMEFIQkJNSUV3QVRGQk1RRXd3UitrUU9LQWVJQnZ3UytCTDBFdkFUaEFic0V1Z1M1QkxnRXR3UVF5UUh2QSswRHdBTytBN3dEdWdPNEE3WUR0QU95QTdBRHJnT3NBNm9EcUFPbUE1TUM4QVB1QTQ0QzRRUGdBOThEM2dQZEE2OEMzQVBiQTlvRG1BTFlBOWNEMWdQVkE5UURUOU1EMGdPSEFzc0R5UVBJQThjRHhRUERBNFlDeWdQR0JKSUR4Z1BFQThJRFppQWc3QVByQStvRDZRUG9BK2NENWdQbEE2OEM1QVBqQStJRElJMENqUUxNQWIwQnZRSFpBNzBCSU5FRDBBUE1BVTlQendPSUFpRE9BODBEekFGUFQ4d0RpQUptSUxZRXRRU3pCR1lnc2dTeEJMQUVJSzhFclFTc0JLc0V5QUxJQXFrRXFBU25CS1lFcFFRZ3BBU2pCS0lFb1FTL0FyOENvQVNmQko0RW5RU2NCQ0NiQkpvRW1BU1hCSllFbFFTVUJKTUVJSklFa1FTUEJJNEVqUVNNQklzRWlnUm1JTGtDaVFTSUJJY0VoZ1NGQklRRXdRTzlBN2tEclFPcEE3VURzUU5tSUxrQ2dnU0JCSUFFL3dQK0EvMER2d083QTdjRHF3T25BN01EcndQS0FZSUMvQVBLQVlJQyt3TWdxd0dyQVd0cmE2MENUMnBxSUtzQnF3RnJhMnV0QWs5cWFpQ3FBYW9CYTZrQnFRR3NBazlxYWlDcUFhb0JhNmtCcVFHc0FrOXFhaUQ2QS9rRElQZ0Q5d01nOWdQMUF5RDBBL01ESUprQzhnT3NBU0NaQXZFRHJBRm1wUU9rQTJZZ3lRSEpBYU1EbVFPY0E2SURJSm9EblFPaEF5Q2JBNTREb0FObUlKZ0Rsd09mQTVZRENxVGZCOGtFQndBZ0FDQUJlQXNVQUNBQUVEVUVRQ0FBS0FJRUR3c2dBQzBBQ3dzZEFRRi9JQUFRTlFSQUlBQW9BZ0FoQVNBQUVIMGFJQUVRRUFzZ0FBc0pBQ0FBRUEwZ0FXb0wwZ0VCQkg4Q1FDQUJJQUFRQ1NJRFN3UkFJd0JCRUdzaUFpUUFJQUVnQTJzaUF3UkFJQUFRRXlFRUlBQVFDU0lCSUFOcUlRVWdBeUFFSUFGclN3UkFJQUFnQkNBRklBUnJJQUVnQVJESUFRc2dBU0FBRUEwaUJHb2dBMEVBRVBjQklBQWdCUkI0SUFKQkFEb0FEeUFFSUFWcUlBSkJEMm9RTkFzTUFRc2pBRUVRYXlJQ0pBQUNRQ0FBRURVRVFDQUFLQUlBSVFNZ0FrRUFPZ0FQSUFFZ0Eyb2dBa0VQYWhBMElBQWdBUkE1REFFTElBSkJBRG9BRGlBQUlBRnFJQUpCRG1vUU5DQUFJQUVRT2dzTElBSkJFR29rQUFzUkFDQUFFRFVFUUNBQUtBSUFEd3NnQUFzS0FDQUFLQUlBRUtNQkN3d0FJQUFnQVVFY2FoQ1FBZ3ZNREFFSGZ3SkFJQUJGRFFBZ0FFRUlheUlESUFCQkJHc29BZ0FpQVVGNGNTSUFhaUVGQWtBZ0FVRUJjUTBBSUFGQkEzRkZEUUVnQXlBREtBSUFJZ0ZySWdOQjZJRUJLQUlBU1EwQklBQWdBV29oQUNBRFFleUJBU2dDQUVjRVFDQUJRZjhCVFFSQUlBTW9BZ2dpQWlBQlFRTjJJZ1JCQTNSQmdJSUJha1lhSUFJZ0F5Z0NEQ0lCUmdSQVFkaUJBVUhZZ1FFb0FnQkJmaUFFZDNFMkFnQU1Bd3NnQWlBQk5nSU1JQUVnQWpZQ0NBd0NDeUFES0FJWUlRWUNRQ0FESUFNb0Fnd2lBVWNFUUNBREtBSUlJZ0lnQVRZQ0RDQUJJQUkyQWdnTUFRc0NRQ0FEUVJScUlnSW9BZ0FpQkEwQUlBTkJFR29pQWlnQ0FDSUVEUUJCQUNFQkRBRUxBMEFnQWlFSElBUWlBVUVVYWlJQ0tBSUFJZ1FOQUNBQlFSQnFJUUlnQVNnQ0VDSUVEUUFMSUFkQkFEWUNBQXNnQmtVTkFRSkFJQU1nQXlnQ0hDSUNRUUowUVlpRUFXb2lCQ2dDQUVZRVFDQUVJQUUyQWdBZ0FRMEJRZHlCQVVIY2dRRW9BZ0JCZmlBQ2QzRTJBZ0FNQXdzZ0JrRVFRUlFnQmlnQ0VDQURSaHRxSUFFMkFnQWdBVVVOQWdzZ0FTQUdOZ0lZSUFNb0FoQWlBZ1JBSUFFZ0FqWUNFQ0FDSUFFMkFoZ0xJQU1vQWhRaUFrVU5BU0FCSUFJMkFoUWdBaUFCTmdJWURBRUxJQVVvQWdRaUFVRURjVUVEUncwQVFlQ0JBU0FBTmdJQUlBVWdBVUYrY1RZQ0JDQURJQUJCQVhJMkFnUWdBQ0FEYWlBQU5nSUFEd3NnQXlBRlR3MEFJQVVvQWdRaUFVRUJjVVVOQUFKQUlBRkJBbkZGQkVBZ0JVSHdnUUVvQWdCR0JFQkI4SUVCSUFNMkFnQkI1SUVCUWVTQkFTZ0NBQ0FBYWlJQU5nSUFJQU1nQUVFQmNqWUNCQ0FEUWV5QkFTZ0NBRWNOQTBIZ2dRRkJBRFlDQUVIc2dRRkJBRFlDQUE4TElBVkI3SUVCS0FJQVJnUkFRZXlCQVNBRE5nSUFRZUNCQVVIZ2dRRW9BZ0FnQUdvaUFEWUNBQ0FESUFCQkFYSTJBZ1FnQUNBRGFpQUFOZ0lBRHdzZ0FVRjRjU0FBYWlFQUFrQWdBVUgvQVUwRVFDQUZLQUlJSWdJZ0FVRURkaUlFUVFOMFFZQ0NBV3BHR2lBQ0lBVW9BZ3dpQVVZRVFFSFlnUUZCMklFQktBSUFRWDRnQkhkeE5nSUFEQUlMSUFJZ0FUWUNEQ0FCSUFJMkFnZ01BUXNnQlNnQ0dDRUdBa0FnQlNBRktBSU1JZ0ZIQkVBZ0JTZ0NDQ0lDUWVpQkFTZ0NBRWthSUFJZ0FUWUNEQ0FCSUFJMkFnZ01BUXNDUUNBRlFSUnFJZ0lvQWdBaUJBMEFJQVZCRUdvaUFpZ0NBQ0lFRFFCQkFDRUJEQUVMQTBBZ0FpRUhJQVFpQVVFVWFpSUNLQUlBSWdRTkFDQUJRUkJxSVFJZ0FTZ0NFQ0lFRFFBTElBZEJBRFlDQUFzZ0JrVU5BQUpBSUFVZ0JTZ0NIQ0lDUVFKMFFZaUVBV29pQkNnQ0FFWUVRQ0FFSUFFMkFnQWdBUTBCUWR5QkFVSGNnUUVvQWdCQmZpQUNkM0UyQWdBTUFnc2dCa0VRUVJRZ0JpZ0NFQ0FGUmh0cUlBRTJBZ0FnQVVVTkFRc2dBU0FHTmdJWUlBVW9BaEFpQWdSQUlBRWdBallDRUNBQ0lBRTJBaGdMSUFVb0FoUWlBa1VOQUNBQklBSTJBaFFnQWlBQk5nSVlDeUFESUFCQkFYSTJBZ1FnQUNBRGFpQUFOZ0lBSUFOQjdJRUJLQUlBUncwQlFlQ0JBU0FBTmdJQUR3c2dCU0FCUVg1eE5nSUVJQU1nQUVFQmNqWUNCQ0FBSUFOcUlBQTJBZ0FMSUFCQi93Rk5CRUFnQUVFRGRpSUJRUU4wUVlDQ0FXb2hBQUovUWRpQkFTZ0NBQ0lDUVFFZ0FYUWlBWEZGQkVCQjJJRUJJQUVnQW5JMkFnQWdBQXdCQ3lBQUtBSUlDeUVDSUFBZ0F6WUNDQ0FDSUFNMkFnd2dBeUFBTmdJTUlBTWdBallDQ0E4TFFSOGhBaUFEUWdBM0FoQWdBRUgvLy84SFRRUkFJQUJCQ0hZaUFTQUJRWUQrUDJwQkVIWkJDSEVpQVhRaUFpQUNRWURnSDJwQkVIWkJCSEVpQW5RaUJDQUVRWUNBRDJwQkVIWkJBbkVpQkhSQkQzWWdBU0FDY2lBRWNtc2lBVUVCZENBQUlBRkJGV3AyUVFGeGNrRWNhaUVDQ3lBRElBSTJBaHdnQWtFQ2RFR0loQUZxSVFFQ1FBSkFBa0JCM0lFQktBSUFJZ1JCQVNBQ2RDSUhjVVVFUUVIY2dRRWdCQ0FIY2pZQ0FDQUJJQU0yQWdBZ0F5QUJOZ0lZREFFTElBQkJBRUVaSUFKQkFYWnJJQUpCSDBZYmRDRUNJQUVvQWdBaEFRTkFJQUVpQkNnQ0JFRjRjU0FBUmcwQ0lBSkJIWFloQVNBQ1FRRjBJUUlnQkNBQlFRUnhhaUlIUVJCcUtBSUFJZ0VOQUFzZ0J5QUROZ0lRSUFNZ0JEWUNHQXNnQXlBRE5nSU1JQU1nQXpZQ0NBd0JDeUFFS0FJSUlnQWdBellDRENBRUlBTTJBZ2dnQTBFQU5nSVlJQU1nQkRZQ0RDQURJQUEyQWdnTFFmaUJBVUg0Z1FFb0FnQkJBV3NpQUVGL0lBQWJOZ0lBQ3dza0FRRi9Jd0JCRUdzaUFTUUFJQUJDQURjQ0FDQUFRUUEyQWdnZ0FVRVFhaVFBSUFBTGl3SUNBMzhDZmdKQUlBQXBBM0FpQkZCRklBUWdBQ2tEZUNBQUtBSUVJZ0VnQUNnQ0xDSUNhNng4SWdWWGNVVUVRQ01BUVJCcklnSWtBRUYvSVFFQ1FDQUFFT2tCRFFBZ0FDQUNRUTlxUVFFZ0FDZ0NJQkVFQUVFQlJ3MEFJQUl0QUE4aEFRc2dBa0VRYWlRQUlBRWlBMEVBVGcwQklBQW9BZ1FoQVNBQUtBSXNJUUlMSUFCQ2Z6Y0RjQ0FBSUFFMkFtZ2dBQ0FGSUFJZ0FXdXNmRGNEZUVGL0R3c2dCVUlCZkNFRklBQW9BZ1FoQVNBQUtBSUlJUUlDUUNBQUtRTndJZ1JRRFFBZ0JDQUZmU0lFSUFJZ0FXdXNXUTBBSUFFZ0JLZHFJUUlMSUFBZ0FqWUNhQ0FBSUFVZ0FDZ0NMQ0lBSUFGcnJIdzNBM2dnQUNBQlR3UkFJQUZCQVdzZ0F6b0FBQXNnQXdzWkFRRi9RUW9oQVNBQUVEVUVmeUFBRUgxQkFXc0ZJQUVMQytNQkFRWi9JQUVRMHdJaEF5TUFRUkJySWdVa0FBSkFJQU1nQUNJRUVNOEJJZ0JOQkVBZ0JCQU5JZ1loQWlBRElnQUVmd0pBSUFFZ0FrWU5BQ0FDSUFGcklBQkJBblJQQkVBZ0FFVU5BUU5BSUFJZ0FTZ0NBRFlDQUNBQ1FRUnFJUUlnQVVFRWFpRUJJQUJCQVdzaUFBMEFDd3dCQ3lBQVJRMEFBMEFnQWlBQVFRRnJJZ0JCQW5RaUIyb2dBU0FIYWlnQ0FEWUNBQ0FBRFFBTEMwRUFCU0FDQ3hvZ0JVRUFOZ0lNSUFZZ0EwRUNkR29nQlVFTWFoQXpJQVFnQXhCNERBRUxJQVFnQUNBRElBQnJJQVFRQ1NJQVFRQWdBQ0FESUFFUTlBRUxJQVZCRUdva0FBdHpBUU4vSUFFUWtnRWhBaU1BUVJCcklnUWtBQUpBSUFJZ0FCQVRJZ05OQkVBZ0FCQU5JUU1nQWdSQUlBTWdBU0FDRU9vQkN5QUVRUUE2QUE4Z0FpQURhaUFFUVE5cUVEUWdBQ0FDRUhnTUFRc2dBQ0FESUFJZ0Eyc2dBQkFKSWdCQkFDQUFJQUlnQVJENEFRc2dCRUVRYWlRQUMrMENBUVIvQWtCQjNJZ0JMUUFBUVFGeERRQkIzSWdCRUNSRkRRQWpBRUVnYXlJQ0pBQUNRQUpBQTBBZ0FrRUlhaUFBUVFKMGFnSi9RUUVnQUhSQi8vLy8vd2R4SWdOQkFYSkZCRUFnQUVFQ2RDZ0NBQXdCQ3lBQVFab2VRYVFmSUFNYkVPQUNDeUlETmdJQUlBTkJmMGNFUUNBQVFRRnFJZ0JCQmtZTkFnd0JDd3NNQVF0QkFCRGZBa1VFUUVISUxTRUJJQUpCQ0dwQnlDMFFud0ZGRFFGQjRDMGhBU0FDUVFocVFlQXRFSjhCUlEwQlFRQWhBRUd3aHdFdEFBQkZCRUFEUUNBQVFRSjBRWUNIQVdvZ0FFR2tIeERnQWpZQ0FDQUFRUUZxSWdCQkJrY05BQXRCc0ljQlFRRTZBQUJCbUljQlFZQ0hBU2dDQURZQ0FBdEJnSWNCSVFFZ0FrRUlha0dBaHdFUW53RkZEUUZCbUljQklRRWdBa0VJYWtHWWh3RVFud0ZGRFFGQkdCQVpJZ0ZGRFFFTElBRWdBaWtEQ0RjQ0FDQUJJQUlwQXhnM0FoQWdBU0FDS1FNUU53SUlDeUFDUVNCcUpBQkIySWdCSUFFMkFnQkIzSWdCRUNNTFFkaUlBU2dDQUFzRkFCQUFBQXZmQ2dJRmZ3OStJd0JCNEFCcklnVWtBQ0FFUXYvLy8vLy8veitESWcxQ0Q0WWdBMEl4aUlRaERpQUNJQVNGUW9DQWdJQ0FnSUNBZ0grRElRb2dBa0wvLy8vLy8vOC9neUlMUWlDSUlROGdEVUlSaUNFUUlBUkNNSWluUWYvL0FYRWhCd0pBQWtBZ0FrSXdpS2RCLy84QmNTSUpRUUZyUWYzL0FVMEVRQ0FIUVFGclFmNy9BVWtOQVFzZ0FWQWdBa0wvLy8vLy8vLy8vLzhBZ3lJTVFvQ0FnSUNBZ01ELy93QlVJQXhDZ0lDQWdJQ0F3UC8vQUZFYlJRUkFJQUpDZ0lDQWdJQ0FJSVFoQ2d3Q0N5QURVQ0FFUXYvLy8vLy8vLy8vL3dDRElnSkNnSUNBZ0lDQXdQLy9BRlFnQWtLQWdJQ0FnSURBLy84QVVSdEZCRUFnQkVLQWdJQ0FnSUFnaENFS0lBTWhBUXdDQ3lBQklBeENnSUNBZ0lDQXdQLy9BSVdFVUFSQUlBSWdBNFJRQkVCQ2dJQ0FnSUNBNFAvL0FDRUtRZ0FoQVF3REN5QUtRb0NBZ0lDQWdNRC8vd0NFSVFwQ0FDRUJEQUlMSUFNZ0FrS0FnSUNBZ0lEQS8vOEFoWVJRQkVBZ0FTQU1oQ0VDUWdBaEFTQUNVQVJBUW9DQWdJQ0FnT0QvL3dBaENnd0RDeUFLUW9DQWdJQ0FnTUQvL3dDRUlRb01BZ3NnQVNBTWhGQUVRRUlBSVFFTUFnc2dBaUFEaEZBRVFFSUFJUUVNQWdzZ0RFTC8vLy8vLy84L1dBUkFJQVZCMEFCcUlBRWdDeUFCSUFzZ0MxQWlCaHQ1SUFaQkJuU3RmS2NpQmtFUGF4QXZRUkFnQm1zaEJpQUZLUU5ZSWd0Q0lJZ2hEeUFGS1FOUUlRRUxJQUpDLy8vLy8vLy9QMVlOQUNBRlFVQnJJQU1nRFNBRElBMGdEVkFpQ0J0NUlBaEJCblN0ZktjaUNFRVBheEF2SUFZZ0NHdEJFR29oQmlBRktRTklJZ0pDRDRZZ0JTa0RRQ0lEUWpHSWhDRU9JQUpDRVlnaEVBc2dBMElQaGtLQWdQNy9ENE1pQWlBQlFpQ0lJZ1IrSWhJZ0EwSVJpRUwvLy8vL0Q0TWlEQ0FCUXYvLy8vOFBneUlCZm53aUVVSWdoaUlOSUFFZ0FuNThJZ01nRFZTdElBSWdDMEwvLy8vL0Q0TWlDMzRpRlNBRUlBeCtmQ0lUSUE1Qy8vLy8vdytESWcwZ0FYNThJaFFnRVNBU1ZLMUNJSVlnRVVJZ2lJUjhJaEVnQWlBUFFvQ0FCSVFpRG40aUZpQUxJQXgrZkNJUElBUWdEWDU4SWhJZ0VFTC8vLy8vQjROQ2dJQ0FnQWlFSWdJZ0FYNThJaEJDSUlaOEloZDhJUUVnQnlBSmFpQUdha0gvL3dCcklRWUNRQ0FMSUExK0loZ2dEQ0FPZm53aURDQVlWSzBnRENBQ0lBUitmQ0lFSUF4VXJYd2dBaUFPZm53Z0JDQUVJQk1nRlZTdElCTWdGRmF0Zkh3aUJGYXRmQ0FDSUF0K0lnc2dEU0FPZm53aUFpQUxWSzFDSUlZZ0FrSWdpSVI4SUFRZ0FrSWdobndpQWlBRVZLMThJQUlnQWlBUUlCSlVyU0FQSUJaVXJTQVBJQkpXclh4OFFpQ0dJQkJDSUlpRWZDSUNWcTE4SUFJZ0FpQVJJQlJVclNBUklCZFdyWHg4SWdKV3JYd2lCRUtBZ0lDQWdJREFBSU5RUlFSQUlBWkJBV29oQmd3QkN5QURRaitJSVFzZ0JFSUJoaUFDUWorSWhDRUVJQUpDQVlZZ0FVSS9pSVFoQWlBRFFnR0dJUU1nQ3lBQlFnR0doQ0VCQ3lBR1FmLy9BVTRFUUNBS1FvQ0FnSUNBZ01ELy93Q0VJUXBDQUNFQkRBRUxBbjRnQmtFQVRBUkFRUUVnQm1zaUIwR0FBVThFUUVJQUlRRU1Bd3NnQlVFd2FpQURJQUVnQmtIL0FHb2lCaEF2SUFWQklHb2dBaUFFSUFZUUx5QUZRUkJxSUFNZ0FTQUhFSHdnQlNBQ0lBUWdCeEI4SUFVcEF6QWdCU2tET0lSQ0FGS3RJQVVwQXlBZ0JTa0RFSVNFSVFNZ0JTa0RLQ0FGS1FNWWhDRUJJQVVwQXdBaEFpQUZLUU1JREFFTElBUkMvLy8vLy8vL1A0TWdCcTFDTUlhRUN5QUtoQ0VLSUFOUUlBRkNBRmtnQVVLQWdJQ0FnSUNBZ0lCL1VSdEZCRUFnQ2lBQ1FnRjhJZ0VnQWxTdGZDRUtEQUVMSUFNZ0FVS0FnSUNBZ0lDQWdJQi9oWVJRUlFSQUlBSWhBUXdCQ3lBS0lBSWdBa0lCZzN3aUFTQUNWSzE4SVFvTElBQWdBVGNEQUNBQUlBbzNBd2dnQlVIZ0FHb2tBQXVBTGdFTGZ5TUFRUkJySWdza0FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FnQUVIMEFVMEVRRUhZZ1FFb0FnQWlCa0VRSUFCQkMycEJlSEVnQUVFTFNSc2lCMEVEZGlJQ2RpSUJRUU54QkVBZ0FVRi9jMEVCY1NBQ2FpSURRUU4wSWdGQmlJSUJhaWdDQUNJRVFRaHFJUUFDUUNBRUtBSUlJZ0lnQVVHQWdnRnFJZ0ZHQkVCQjJJRUJJQVpCZmlBRGQzRTJBZ0FNQVFzZ0FpQUJOZ0lNSUFFZ0FqWUNDQXNnQkNBRFFRTjBJZ0ZCQTNJMkFnUWdBU0FFYWlJQklBRW9BZ1JCQVhJMkFnUU1EQXNnQjBIZ2dRRW9BZ0FpQ2swTkFTQUJCRUFDUUVFQ0lBSjBJZ0JCQUNBQWEzSWdBU0FDZEhFaUFFRUFJQUJyY1VFQmF5SUFJQUJCREhaQkVIRWlBbllpQVVFRmRrRUljU0lBSUFKeUlBRWdBSFlpQVVFQ2RrRUVjU0lBY2lBQklBQjJJZ0ZCQVhaQkFuRWlBSElnQVNBQWRpSUJRUUYyUVFGeElnQnlJQUVnQUhacUlnTkJBM1FpQUVHSWdnRnFLQUlBSWdRb0FnZ2lBU0FBUVlDQ0FXb2lBRVlFUUVIWWdRRWdCa0YrSUFOM2NTSUdOZ0lBREFFTElBRWdBRFlDRENBQUlBRTJBZ2dMSUFSQkNHb2hBQ0FFSUFkQkEzSTJBZ1FnQkNBSGFpSUNJQU5CQTNRaUFTQUhheUlEUVFGeU5nSUVJQUVnQkdvZ0F6WUNBQ0FLQkVBZ0NrRURkaUlCUVFOMFFZQ0NBV29oQlVIc2dRRW9BZ0FoQkFKL0lBWkJBU0FCZENJQmNVVUVRRUhZZ1FFZ0FTQUdjallDQUNBRkRBRUxJQVVvQWdnTElRRWdCU0FFTmdJSUlBRWdCRFlDRENBRUlBVTJBZ3dnQkNBQk5nSUlDMEhzZ1FFZ0FqWUNBRUhnZ1FFZ0F6WUNBQXdNQzBIY2dRRW9BZ0FpQ1VVTkFTQUpRUUFnQ1d0eFFRRnJJZ0FnQUVFTWRrRVFjU0lDZGlJQlFRVjJRUWh4SWdBZ0FuSWdBU0FBZGlJQlFRSjJRUVJ4SWdCeUlBRWdBSFlpQVVFQmRrRUNjU0lBY2lBQklBQjJJZ0ZCQVhaQkFYRWlBSElnQVNBQWRtcEJBblJCaUlRQmFpZ0NBQ0lCS0FJRVFYaHhJQWRySVFNZ0FTRUNBMEFDUUNBQ0tBSVFJZ0JGQkVBZ0FpZ0NGQ0lBUlEwQkN5QUFLQUlFUVhoeElBZHJJZ0lnQXlBQ0lBTkpJZ0liSVFNZ0FDQUJJQUliSVFFZ0FDRUNEQUVMQ3lBQktBSVlJUWdnQVNBQktBSU1JZ1JIQkVBZ0FTZ0NDQ0lBUWVpQkFTZ0NBRWthSUFBZ0JEWUNEQ0FFSUFBMkFnZ01Dd3NnQVVFVWFpSUNLQUlBSWdCRkJFQWdBU2dDRUNJQVJRMERJQUZCRUdvaEFnc0RRQ0FDSVFVZ0FDSUVRUlJxSWdJb0FnQWlBQTBBSUFSQkVHb2hBaUFFS0FJUUlnQU5BQXNnQlVFQU5nSUFEQW9MUVg4aEJ5QUFRYjkvU3cwQUlBQkJDMm9pQUVGNGNTRUhRZHlCQVNnQ0FDSUpSUTBBUVFBZ0Iyc2hBd0pBQWtBQ1FBSi9RUUFnQjBHQUFra05BQnBCSHlBSFFmLy8vd2RMRFFBYUlBQkJDSFlpQUNBQVFZRCtQMnBCRUhaQkNIRWlBblFpQUNBQVFZRGdIMnBCRUhaQkJIRWlBWFFpQUNBQVFZQ0FEMnBCRUhaQkFuRWlBSFJCRDNZZ0FTQUNjaUFBY21zaUFFRUJkQ0FISUFCQkZXcDJRUUZ4Y2tFY2Fnc2lCa0VDZEVHSWhBRnFLQUlBSWdKRkJFQkJBQ0VBREFFTFFRQWhBQ0FIUVFCQkdTQUdRUUYyYXlBR1FSOUdHM1FoQVFOQUFrQWdBaWdDQkVGNGNTQUhheUlGSUFOUERRQWdBaUVFSUFVaUF3MEFRUUFoQXlBQ0lRQU1Bd3NnQUNBQ0tBSVVJZ1VnQlNBQ0lBRkJIWFpCQkhGcUtBSVFJZ0pHR3lBQUlBVWJJUUFnQVVFQmRDRUJJQUlOQUFzTElBQWdCSEpGQkVCQkFDRUVRUUlnQm5RaUFFRUFJQUJyY2lBSmNTSUFSUTBESUFCQkFDQUFhM0ZCQVdzaUFDQUFRUXgyUVJCeElnSjJJZ0ZCQlhaQkNIRWlBQ0FDY2lBQklBQjJJZ0ZCQW5aQkJIRWlBSElnQVNBQWRpSUJRUUYyUVFKeElnQnlJQUVnQUhZaUFVRUJka0VCY1NJQWNpQUJJQUIyYWtFQ2RFR0loQUZxS0FJQUlRQUxJQUJGRFFFTEEwQWdBQ2dDQkVGNGNTQUhheUlCSUFOSklRSWdBU0FESUFJYklRTWdBQ0FFSUFJYklRUWdBQ2dDRUNJQkJIOGdBUVVnQUNnQ0ZBc2lBQTBBQ3dzZ0JFVU5BQ0FEUWVDQkFTZ0NBQ0FIYTA4TkFDQUVLQUlZSVFZZ0JDQUVLQUlNSWdGSEJFQWdCQ2dDQ0NJQVFlaUJBU2dDQUVrYUlBQWdBVFlDRENBQklBQTJBZ2dNQ1FzZ0JFRVVhaUlDS0FJQUlnQkZCRUFnQkNnQ0VDSUFSUTBESUFSQkVHb2hBZ3NEUUNBQ0lRVWdBQ0lCUVJScUlnSW9BZ0FpQUEwQUlBRkJFR29oQWlBQktBSVFJZ0FOQUFzZ0JVRUFOZ0lBREFnTElBZEI0SUVCS0FJQUlnSk5CRUJCN0lFQktBSUFJUU1DUUNBQ0lBZHJJZ0ZCRUU4RVFFSGdnUUVnQVRZQ0FFSHNnUUVnQXlBSGFpSUFOZ0lBSUFBZ0FVRUJjallDQkNBQ0lBTnFJQUUyQWdBZ0F5QUhRUU55TmdJRURBRUxRZXlCQVVFQU5nSUFRZUNCQVVFQU5nSUFJQU1nQWtFRGNqWUNCQ0FDSUFOcUlnQWdBQ2dDQkVFQmNqWUNCQXNnQTBFSWFpRUFEQW9MSUFkQjVJRUJLQUlBSWdoSkJFQkI1SUVCSUFnZ0Iyc2lBVFlDQUVId2dRRkI4SUVCS0FJQUlnSWdCMm9pQURZQ0FDQUFJQUZCQVhJMkFnUWdBaUFIUVFOeU5nSUVJQUpCQ0dvaEFBd0tDMEVBSVFBZ0IwRXZhaUlKQW45QnNJVUJLQUlBQkVCQnVJVUJLQUlBREFFTFFieUZBVUovTndJQVFiU0ZBVUtBb0lDQWdJQUVOd0lBUWJDRkFTQUxRUXhxUVhCeFFkaXExYW9GY3pZQ0FFSEVoUUZCQURZQ0FFR1VoUUZCQURZQ0FFR0FJQXNpQVdvaUJrRUFJQUZySWdWeElnSWdCMDBOQ1VHUWhRRW9BZ0FpQkFSQVFZaUZBU2dDQUNJRElBSnFJZ0VnQTAwZ0FTQUVTM0lOQ2d0QmxJVUJMUUFBUVFSeERRUUNRQUpBUWZDQkFTZ0NBQ0lEQkVCQm1JVUJJUUFEUUNBRElBQW9BZ0FpQVU4RVFDQUJJQUFvQWdScUlBTkxEUU1MSUFBb0FnZ2lBQTBBQ3d0QkFCQnlJZ0ZCZjBZTkJTQUNJUVpCdElVQktBSUFJZ05CQVdzaUFDQUJjUVJBSUFJZ0FXc2dBQ0FCYWtFQUlBTnJjV29oQmdzZ0JpQUhUU0FHUWY3Ly8vOEhTM0lOQlVHUWhRRW9BZ0FpQkFSQVFZaUZBU2dDQUNJRElBWnFJZ0FnQTAwZ0FDQUVTM0lOQmdzZ0JoQnlJZ0FnQVVjTkFRd0hDeUFHSUFocklBVnhJZ1pCL3YvLy93ZExEUVFnQmhCeUlnRWdBQ2dDQUNBQUtBSUVha1lOQXlBQklRQUxJQUJCZjBZZ0IwRXdhaUFHVFhKRkJFQkJ1SVVCS0FJQUlnRWdDU0FHYTJwQkFDQUJhM0VpQVVIKy8vLy9CMHNFUUNBQUlRRU1Cd3NnQVJCeVFYOUhCRUFnQVNBR2FpRUdJQUFoQVF3SEMwRUFJQVpyRUhJYURBUUxJQUFpQVVGL1J3MEZEQU1MUVFBaEJBd0hDMEVBSVFFTUJRc2dBVUYvUncwQ0MwR1VoUUZCbElVQktBSUFRUVJ5TmdJQUN5QUNRZjcvLy84SFN3MEJJQUlRY2lJQlFYOUdRUUFRY2lJQVFYOUdjaUFBSUFGTmNnMEJJQUFnQVdzaUJpQUhRU2hxVFEwQkMwR0loUUZCaUlVQktBSUFJQVpxSWdBMkFnQkJqSVVCS0FJQUlBQkpCRUJCaklVQklBQTJBZ0FMQWtBQ1FBSkFRZkNCQVNnQ0FDSUZCRUJCbUlVQklRQURRQ0FCSUFBb0FnQWlBeUFBS0FJRUlnSnFSZzBDSUFBb0FnZ2lBQTBBQ3d3Q0MwSG9nUUVvQWdBaUFFRUFJQUFnQVUwYlJRUkFRZWlCQVNBQk5nSUFDMEVBSVFCQm5JVUJJQVkyQWdCQm1JVUJJQUUyQWdCQitJRUJRWDgyQWdCQi9JRUJRYkNGQVNnQ0FEWUNBRUdraFFGQkFEWUNBQU5BSUFCQkEzUWlBMEdJZ2dGcUlBTkJnSUlCYWlJQ05nSUFJQU5CaklJQmFpQUNOZ0lBSUFCQkFXb2lBRUVnUncwQUMwSGtnUUVnQmtFb2F5SURRWGdnQVd0QkIzRkJBQ0FCUVFocVFRZHhHeUlBYXlJQ05nSUFRZkNCQVNBQUlBRnFJZ0EyQWdBZ0FDQUNRUUZ5TmdJRUlBRWdBMnBCS0RZQ0JFSDBnUUZCd0lVQktBSUFOZ0lBREFJTElBQXRBQXhCQ0hFZ0F5QUZTM0lnQVNBRlRYSU5BQ0FBSUFJZ0JtbzJBZ1JCOElFQklBVkJlQ0FGYTBFSGNVRUFJQVZCQ0dwQkIzRWJJZ0JxSWdJMkFnQkI1SUVCUWVTQkFTZ0NBQ0FHYWlJQklBQnJJZ0EyQWdBZ0FpQUFRUUZ5TmdJRUlBRWdCV3BCS0RZQ0JFSDBnUUZCd0lVQktBSUFOZ0lBREFFTFFlaUJBU2dDQUNBQlN3UkFRZWlCQVNBQk5nSUFDeUFCSUFacUlRSkJtSVVCSVFBQ1FBSkFBa0FDUUFKQUFrQURRQ0FDSUFBb0FnQkhCRUFnQUNnQ0NDSUFEUUVNQWdzTElBQXRBQXhCQ0hGRkRRRUxRWmlGQVNFQUEwQWdCU0FBS0FJQUlnSlBCRUFnQWlBQUtBSUVhaUlFSUFWTERRTUxJQUFvQWdnaEFBd0FDd0FMSUFBZ0FUWUNBQ0FBSUFBb0FnUWdCbW8yQWdRZ0FVRjRJQUZyUVFkeFFRQWdBVUVJYWtFSGNSdHFJZ2tnQjBFRGNqWUNCQ0FDUVhnZ0FtdEJCM0ZCQUNBQ1FRaHFRUWR4RzJvaUJpQUhJQWxxSWdocklRSWdCU0FHUmdSQVFmQ0JBU0FJTmdJQVFlU0JBVUhrZ1FFb0FnQWdBbW9pQURZQ0FDQUlJQUJCQVhJMkFnUU1Bd3NnQmtIc2dRRW9BZ0JHQkVCQjdJRUJJQWcyQWdCQjRJRUJRZUNCQVNnQ0FDQUNhaUlBTmdJQUlBZ2dBRUVCY2pZQ0JDQUFJQWhxSUFBMkFnQU1Bd3NnQmlnQ0JDSUFRUU54UVFGR0JFQWdBRUY0Y1NFRkFrQWdBRUgvQVUwRVFDQUdLQUlJSWdNZ0FFRURkaUlBUVFOMFFZQ0NBV3BHR2lBRElBWW9BZ3dpQVVZRVFFSFlnUUZCMklFQktBSUFRWDRnQUhkeE5nSUFEQUlMSUFNZ0FUWUNEQ0FCSUFNMkFnZ01BUXNnQmlnQ0dDRUhBa0FnQmlBR0tBSU1JZ0ZIQkVBZ0JpZ0NDQ0lBSUFFMkFnd2dBU0FBTmdJSURBRUxBa0FnQmtFVWFpSUFLQUlBSWdNTkFDQUdRUkJxSWdBb0FnQWlBdzBBUVFBaEFRd0JDd05BSUFBaEJDQURJZ0ZCRkdvaUFDZ0NBQ0lERFFBZ0FVRVFhaUVBSUFFb0FoQWlBdzBBQ3lBRVFRQTJBZ0FMSUFkRkRRQUNRQ0FHSUFZb0Fod2lBMEVDZEVHSWhBRnFJZ0FvQWdCR0JFQWdBQ0FCTmdJQUlBRU5BVUhjZ1FGQjNJRUJLQUlBUVg0Z0EzZHhOZ0lBREFJTElBZEJFRUVVSUFjb0FoQWdCa1liYWlBQk5nSUFJQUZGRFFFTElBRWdCellDR0NBR0tBSVFJZ0FFUUNBQklBQTJBaEFnQUNBQk5nSVlDeUFHS0FJVUlnQkZEUUFnQVNBQU5nSVVJQUFnQVRZQ0dBc2dCU0FHYWlFR0lBSWdCV29oQWdzZ0JpQUdLQUlFUVg1eE5nSUVJQWdnQWtFQmNqWUNCQ0FDSUFocUlBSTJBZ0FnQWtIL0FVMEVRQ0FDUVFOMklnQkJBM1JCZ0lJQmFpRUNBbjlCMklFQktBSUFJZ0ZCQVNBQWRDSUFjVVVFUUVIWWdRRWdBQ0FCY2pZQ0FDQUNEQUVMSUFJb0FnZ0xJUUFnQWlBSU5nSUlJQUFnQ0RZQ0RDQUlJQUkyQWd3Z0NDQUFOZ0lJREFNTFFSOGhBQ0FDUWYvLy93ZE5CRUFnQWtFSWRpSUFJQUJCZ1A0L2FrRVFka0VJY1NJRGRDSUFJQUJCZ09BZmFrRVFka0VFY1NJQmRDSUFJQUJCZ0lBUGFrRVFka0VDY1NJQWRFRVBkaUFCSUFOeUlBQnlheUlBUVFGMElBSWdBRUVWYW5aQkFYRnlRUnhxSVFBTElBZ2dBRFlDSENBSVFnQTNBaEFnQUVFQ2RFR0loQUZxSVFRQ1FFSGNnUUVvQWdBaUEwRUJJQUIwSWdGeFJRUkFRZHlCQVNBQklBTnlOZ0lBSUFRZ0NEWUNBQ0FJSUFRMkFoZ01BUXNnQWtFQVFSa2dBRUVCZG1zZ0FFRWZSaHQwSVFBZ0JDZ0NBQ0VCQTBBZ0FTSURLQUlFUVhoeElBSkdEUU1nQUVFZGRpRUJJQUJCQVhRaEFDQURJQUZCQkhGcUlnUW9BaEFpQVEwQUN5QUVJQWcyQWhBZ0NDQUROZ0lZQ3lBSUlBZzJBZ3dnQ0NBSU5nSUlEQUlMUWVTQkFTQUdRU2hySWdOQmVDQUJhMEVIY1VFQUlBRkJDR3BCQjNFYklnQnJJZ0kyQWdCQjhJRUJJQUFnQVdvaUFEWUNBQ0FBSUFKQkFYSTJBZ1FnQVNBRGFrRW9OZ0lFUWZTQkFVSEFoUUVvQWdBMkFnQWdCU0FFUVNjZ0JHdEJCM0ZCQUNBRVFTZHJRUWR4RzJwQkwyc2lBQ0FBSUFWQkVHcEpHeUlDUVJzMkFnUWdBa0dnaFFFcEFnQTNBaEFnQWtHWWhRRXBBZ0EzQWdoQm9JVUJJQUpCQ0dvMkFnQkJuSVVCSUFZMkFnQkJtSVVCSUFFMkFnQkJwSVVCUVFBMkFnQWdBa0VZYWlFQUEwQWdBRUVITmdJRUlBQkJDR29oQVNBQVFRUnFJUUFnQVNBRVNRMEFDeUFDSUFWR0RRTWdBaUFDS0FJRVFYNXhOZ0lFSUFVZ0FpQUZheUlFUVFGeU5nSUVJQUlnQkRZQ0FDQUVRZjhCVFFSQUlBUkJBM1lpQUVFRGRFR0FnZ0ZxSVFJQ2YwSFlnUUVvQWdBaUFVRUJJQUIwSWdCeFJRUkFRZGlCQVNBQUlBRnlOZ0lBSUFJTUFRc2dBaWdDQ0FzaEFDQUNJQVUyQWdnZ0FDQUZOZ0lNSUFVZ0FqWUNEQ0FGSUFBMkFnZ01CQXRCSHlFQUlBVkNBRGNDRUNBRVFmLy8vd2ROQkVBZ0JFRUlkaUlBSUFCQmdQNC9ha0VRZGtFSWNTSUNkQ0lBSUFCQmdPQWZha0VRZGtFRWNTSUJkQ0lBSUFCQmdJQVBha0VRZGtFQ2NTSUFkRUVQZGlBQklBSnlJQUJ5YXlJQVFRRjBJQVFnQUVFVmFuWkJBWEZ5UVJ4cUlRQUxJQVVnQURZQ0hDQUFRUUowUVlpRUFXb2hBd0pBUWR5QkFTZ0NBQ0lDUVFFZ0FIUWlBWEZGQkVCQjNJRUJJQUVnQW5JMkFnQWdBeUFGTmdJQUlBVWdBellDR0F3QkN5QUVRUUJCR1NBQVFRRjJheUFBUVI5R0czUWhBQ0FES0FJQUlRRURRQ0FCSWdJb0FnUkJlSEVnQkVZTkJDQUFRUjEySVFFZ0FFRUJkQ0VBSUFJZ0FVRUVjV29pQXlnQ0VDSUJEUUFMSUFNZ0JUWUNFQ0FGSUFJMkFoZ0xJQVVnQlRZQ0RDQUZJQVUyQWdnTUF3c2dBeWdDQ0NJQUlBZzJBZ3dnQXlBSU5nSUlJQWhCQURZQ0dDQUlJQU0yQWd3Z0NDQUFOZ0lJQ3lBSlFRaHFJUUFNQlFzZ0FpZ0NDQ0lBSUFVMkFnd2dBaUFGTmdJSUlBVkJBRFlDR0NBRklBSTJBZ3dnQlNBQU5nSUlDMEhrZ1FFb0FnQWlBQ0FIVFEwQVFlU0JBU0FBSUFkcklnRTJBZ0JCOElFQlFmQ0JBU2dDQUNJQ0lBZHFJZ0EyQWdBZ0FDQUJRUUZ5TmdJRUlBSWdCMEVEY2pZQ0JDQUNRUWhxSVFBTUF3dEIxSUVCUVRBMkFnQkJBQ0VBREFJTEFrQWdCa1VOQUFKQUlBUW9BaHdpQWtFQ2RFR0loQUZxSWdBb0FnQWdCRVlFUUNBQUlBRTJBZ0FnQVEwQlFkeUJBU0FKUVg0Z0FuZHhJZ2syQWdBTUFnc2dCa0VRUVJRZ0JpZ0NFQ0FFUmh0cUlBRTJBZ0FnQVVVTkFRc2dBU0FHTmdJWUlBUW9BaEFpQUFSQUlBRWdBRFlDRUNBQUlBRTJBaGdMSUFRb0FoUWlBRVVOQUNBQklBQTJBaFFnQUNBQk5nSVlDd0pBSUFOQkQwMEVRQ0FFSUFNZ0Iyb2lBRUVEY2pZQ0JDQUFJQVJxSWdBZ0FDZ0NCRUVCY2pZQ0JBd0JDeUFFSUFkQkEzSTJBZ1FnQkNBSGFpSUZJQU5CQVhJMkFnUWdBeUFGYWlBRE5nSUFJQU5CL3dGTkJFQWdBMEVEZGlJQVFRTjBRWUNDQVdvaEFnSi9RZGlCQVNnQ0FDSUJRUUVnQUhRaUFIRkZCRUJCMklFQklBQWdBWEkyQWdBZ0Fnd0JDeUFDS0FJSUN5RUFJQUlnQlRZQ0NDQUFJQVUyQWd3Z0JTQUNOZ0lNSUFVZ0FEWUNDQXdCQzBFZklRQWdBMEgvLy84SFRRUkFJQU5CQ0hZaUFDQUFRWUQrUDJwQkVIWkJDSEVpQW5RaUFDQUFRWURnSDJwQkVIWkJCSEVpQVhRaUFDQUFRWUNBRDJwQkVIWkJBbkVpQUhSQkQzWWdBU0FDY2lBQWNtc2lBRUVCZENBRElBQkJGV3AyUVFGeGNrRWNhaUVBQ3lBRklBQTJBaHdnQlVJQU53SVFJQUJCQW5SQmlJUUJhaUVCQWtBQ1FDQUpRUUVnQUhRaUFuRkZCRUJCM0lFQklBSWdDWEkyQWdBZ0FTQUZOZ0lBREFFTElBTkJBRUVaSUFCQkFYWnJJQUJCSDBZYmRDRUFJQUVvQWdBaEJ3TkFJQWNpQVNnQ0JFRjRjU0FEUmcwQ0lBQkJIWFloQWlBQVFRRjBJUUFnQVNBQ1FRUnhhaUlDS0FJUUlnY05BQXNnQWlBRk5nSVFDeUFGSUFFMkFoZ2dCU0FGTmdJTUlBVWdCVFlDQ0F3QkN5QUJLQUlJSWdBZ0JUWUNEQ0FCSUFVMkFnZ2dCVUVBTmdJWUlBVWdBVFlDRENBRklBQTJBZ2dMSUFSQkNHb2hBQXdCQ3dKQUlBaEZEUUFDUUNBQktBSWNJZ0pCQW5SQmlJUUJhaUlBS0FJQUlBRkdCRUFnQUNBRU5nSUFJQVFOQVVIY2dRRWdDVUYrSUFKM2NUWUNBQXdDQ3lBSVFSQkJGQ0FJS0FJUUlBRkdHMm9nQkRZQ0FDQUVSUTBCQ3lBRUlBZzJBaGdnQVNnQ0VDSUFCRUFnQkNBQU5nSVFJQUFnQkRZQ0dBc2dBU2dDRkNJQVJRMEFJQVFnQURZQ0ZDQUFJQVEyQWhnTEFrQWdBMEVQVFFSQUlBRWdBeUFIYWlJQVFRTnlOZ0lFSUFBZ0FXb2lBQ0FBS0FJRVFRRnlOZ0lFREFFTElBRWdCMEVEY2pZQ0JDQUJJQWRxSWdJZ0EwRUJjallDQkNBQ0lBTnFJQU0yQWdBZ0NnUkFJQXBCQTNZaUFFRURkRUdBZ2dGcUlRVkI3SUVCS0FJQUlRUUNmMEVCSUFCMElnQWdCbkZGQkVCQjJJRUJJQUFnQm5JMkFnQWdCUXdCQ3lBRktBSUlDeUVBSUFVZ0JEWUNDQ0FBSUFRMkFnd2dCQ0FGTmdJTUlBUWdBRFlDQ0F0QjdJRUJJQUkyQWdCQjRJRUJJQU0yQWdBTElBRkJDR29oQUFzZ0MwRVFhaVFBSUFBTHB3RUJCSDhqQUVFZ2F5SUJKQUFnQVVFQU5nSU1JQUZCTnpZQ0NDQUJJQUVwQXdnM0F3QWdBVUVRYWlJRElBRXBBZ0EzQWdRZ0F5QUFOZ0lBSXdCQkVHc2lBaVFBSUFBb0FnQkJmMGNFUUNBQ1FRaHFJZ1FnQXhCNkdpQUNJQVFRZWhvRFFDQUFLQUlBUVFGR0RRQUxJQUFvQWdCRkJFQWdBRUVCTmdJQUlBSkJPQkVCQUNBQVFYODJBZ0FMQ3lBQ1FSQnFKQUFnQUNnQ0JDRUFJQUZCSUdva0FDQUFRUUZyQ3hzQUlBQkJBRFlDQkNBQVFkajhBRFlDQUNBQVFaaldBRFlDQUF1WUJnRUpmeU1BUVJCcklnZ2tBQ0FBRU00Qkl3QkJFR3NpQWlRQUlBSWdBRFlDRENBSVFRaHFJZ1VnQWtFTWFoQXpJQUpCRUdva0FFR3dsUUVRVUNBQlRRUkFBa0JCc0pVQkVGQWlBaUFCUVFGcUlnQkpCRUFqQUVFZ2F5SUpKQUFDUUNBQUlBSnJJZ1pCc0pVQkVFTW9BZ0JCdEpVQktBSUFhMEVDZFUwRVFDQUdFSmNDREFFTFFiQ1ZBUkIwSVFjZ0NVRUlhaUVDQW45QnNKVUJFRkFnQm1vaEJDTUFRUkJySWdBa0FDQUFJQVEyQWd3Z0JCQ0JBaUlEVFFSQVFiQ1ZBUkJ6SWdRZ0EwRUJka2tFUUNBQUlBUkJBWFEyQWdnZ0FFRUlhaUFBUVF4cUVIWW9BZ0FoQXdzZ0FFRVFhaVFBSUFNTUFRc1FGd0FMSVFCQnNKVUJFRkFoQ2tFQUlRTWpBRUVRYXlJRUpBQWdCRUVBTmdJTUlBSkJER29nQkVFTWFpQUhFSVFDSUFBRVFDQUNLQUlRSUFBUWdBSWhBd3NnQWlBRE5nSUFJQUlnQXlBS1FRSjBhaUlITmdJSUlBSWdCellDQkNBQ0VJTUJJQU1nQUVFQ2RHbzJBZ0FnQkVFUWFpUUFJd0JCRUdzaUFDUUFJQUFnQWlnQ0NEWUNBQ0FDS0FJSUlRTWdBQ0FDUVFocU5nSUlJQUFnQXlBR1FRSjBhallDQkNBQUtBSUFJUU1EUUNBQUtBSUVJQU5IQkVBZ0FpZ0NFQ0FBS0FJQUVQNEJJQUFnQUNnQ0FFRUVhaUlETmdJQURBRUxDeUFBS0FJSUlBQW9BZ0EyQWdBZ0FFRVFhaVFBUWJDVkFSQ1JBa0d3bFFFUWRFR3dsUUVvQWdCQnRKVUJLQUlBSUFKQkJHb2lBQkNEQWtHd2xRRWdBQkIxUWJTVkFTQUNRUWhxRUhWQnNKVUJFRU1nQWhDREFSQjFJQUlnQWlnQ0JEWUNBRUd3bFFFUVVCRC9BU0FDS0FJRUlRQURRQ0FBSUFJb0FnaEhCRUFnQWlnQ0VCb2dBaUFDS0FJSVFRUnJOZ0lJREFFTEN5QUNLQUlBQkVBZ0FpZ0NFQ0FDS0FJQUlBSVFnd0VvQWdBZ0FpZ0NBR3RCQW5VUS9BRUxDeUFKUVNCcUpBQU1BUXNnQUNBQ1NRUkFRYkNWQVNnQ0FDQUFRUUowYWlFQVFiQ1ZBUkJRSVFKQnNKVUJJQUFRK3dGQnNKVUJJQUlRbEFJTEN3dEJzSlVCSUFFUWR5Z0NBQVJBUWJDVkFTQUJFSGNvQWdBUW93RUxJQVVRcGdFaEFFR3dsUUVnQVJCM0lBQTJBZ0FnQlNnQ0FDRUFJQVZCQURZQ0FDQUFCRUFnQUJDakFRc2dDRUVRYWlRQUN3Z0FJQUJCQUJBbkN5OEJBWDhqQUVFUWF5SURKQUFnQXlBQk5nSU1JQUFnQTBFTWFoQXpJQUJCQkdvZ0FoQXpJQU5CRUdva0FDQUFDeEFBSUFBb0FnQVFnQU5CR0hSQkdIVUxCZ0FnQUJBUUN3b0FJQUFvQWdBUSt3SUxEUUFnQUNnQ0FCRC9BaG9nQUF0TEFRSi9Jd0JCRUdzaUFTUUFJQUVnQUJEeUFTRUFJd0JCRUdzaUFpUUFJQUpCQ0dvZ0FDZ0NCQkI2S0FJQVFRRTZBQUFnQUNnQ0NFRUJPZ0FBSUFKQkVHb2tBQ0FCUVJCcUpBQUxkd0VEZnlNQVFSQnJJZ0lrQUNBQ0lBQVE4Z0VoQUNNQVFSQnJJZ01rQUNBRFFRaHFJQUFvQWdRUWVpZ0NBQzBBQUVVRVFBSi9Ba0FnQUNnQ0NDSUFMUUFBSWdGQkFVY0VmeUFCUVFKeERRRWdBRUVDT2dBQVFRRUZRUUFMREFFTEVCY0FDeUVCQ3lBRFFSQnFKQUFnQWtFUWFpUUFJQUVMRFFBZ0FDZ0NBQkQ2QWhvZ0FBc0pBQ0FBSUFFUWdRTUxKQUVCZnlBQUtBSUFJUUlnQUNBQk5nSUFJQUlFUUNBQ0lBQVFsZ0VvQWdBUkFRQUxDd2tBSUFBZ0FSRDhBZ3NSQUNBQUlBRWdBQ2dDQUNnQ0hCRUNBQXUvQVFFRGZ5QUFMUUFBUVNCeFJRUkFBa0FnQVNFREFrQWdBaUFBSWdFb0FoQWlBQVIvSUFBRklBRVE2QUVOQVNBQktBSVFDeUFCS0FJVUlnVnJTd1JBSUFFZ0F5QUNJQUVvQWlRUkJBQWFEQUlMQWtBZ0FTZ0NVRUVBU0EwQUlBSWhBQU5BSUFBaUJFVU5BU0FESUFSQkFXc2lBR290QUFCQkNrY05BQXNnQVNBRElBUWdBU2dDSkJFRUFDQUVTUTBCSUFNZ0JHb2hBeUFDSUFScklRSWdBU2dDRkNFRkN5QUZJQU1nQWhCQ0dpQUJJQUVvQWhRZ0FtbzJBaFFMQ3dzTGRRRUJmaUFBSUFFZ0JINGdBaUFEZm53Z0EwSWdpQ0lDSUFGQ0lJZ2lCSDU4SUFOQy8vLy8vdytESWdNZ0FVTC8vLy8vRDRNaUFYNGlCVUlnaUNBRElBUitmQ0lEUWlDSWZDQUJJQUorSUFOQy8vLy8vdytEZkNJQlFpQ0lmRGNEQ0NBQUlBVkMvLy8vL3crRElBRkNJSWFFTndNQUMwTUJBWDhqQUVFUWF5SUZKQUFnQlNBQ05nSU1JQVVnQkRZQ0NDQUZJQVZCREdvUVVpRUNJQUFnQVNBRElBVW9BZ2dRdFFFaEFDQUNFRkVnQlVFUWFpUUFJQUFMb1FFQkFuOENRQ0FBRUFsRklBSWdBV3RCQlVoeURRQWdBU0FDRUswQklBSkJCR3NoQkNBQUVBMGlBaUFBRUFscUlRVUNRQU5BQWtBZ0Fpd0FBQ0VBSUFFZ0JFOE5BQ0FBUVFCTUlBQkIvd0JPY2tVRVFDQUJLQUlBSUFJc0FBQkhEUU1MSUFGQkJHb2hBU0FDSUFVZ0FtdEJBVXBxSVFJTUFRc0xJQUJCQUV3Z0FFSC9BRTV5RFFFZ0Fpd0FBQ0FFS0FJQVFRRnJTdzBCQ3lBRFFRUTJBZ0FMQzIwQkFYOGpBRUdBQW1zaUJTUUFJQVJCZ01BRWNTQUNJQU5NY2tVRVFDQUZJQUZCL3dGeElBSWdBMnNpQWtHQUFpQUNRWUFDU1NJQkd4QkdHaUFCUlFSQUEwQWdBQ0FGUVlBQ0VDb2dBa0dBQW1zaUFrSC9BVXNOQUFzTElBQWdCU0FDRUNvTElBVkJnQUpxSkFBTFVBRUJmZ0pBSUFOQndBQnhCRUFnQVNBRFFVQnFyWVloQWtJQUlRRU1BUXNnQTBVTkFDQUNJQU90SWdTR0lBRkJ3QUFnQTJ1dGlJUWhBaUFCSUFTR0lRRUxJQUFnQVRjREFDQUFJQUkzQXdnTFZRRUNmeU1BUVJCcklnSWtBQ0FBRURVRVFDQUFLQUlBSVFNZ0FCQjlHaUFERUJBTElBQWdBU2dDQ0RZQ0NDQUFJQUVwQWdBM0FnQWdBVUVBRURvZ0FrRUFPZ0FQSUFFZ0FrRVBhaEEwSUFKQkVHb2tBQXNNQUNBQUlBRVFnUU5CQVhNTENnQWdBRUdFaVFFUVpBc01BQ0FBSUFFb0FnQTJBZ0FMREFBZ0FDQUJMUUFBT2dBQUN3b0FJQUF0QUF0QkIzWUxEQUFnQUNBQkVQd0NRUUZ6Q3hFQUlBQWdBU0FCS0FJQUtBSVVFUU1BQ3c4QUlBQWdBQ2dDQUNnQ0VCRUFBQXNKQUNBQUlBRTJBZ1FMQ1FBZ0FDQUJPZ0FMQ3dvQUlBQkIvSWdCRUdRTDBRa0NCSDhFZmlNQVFmQUFheUlGSkFBZ0JFTC8vLy8vLy8vLy8vOEFneUVLQWtBQ1FDQUJRZ0Y5SWd0Q2YxRWdBa0wvLy8vLy8vLy8vLzhBZ3lJSklBRWdDMWF0ZkVJQmZTSUxRdi8vLy8vLy83Ly8vd0JXSUF0Qy8vLy8vLy8vdi8vL0FGRWJSUVJBSUFOQ0FYMGlDMEovVWlBS0lBTWdDMWF0ZkVJQmZTSUxRdi8vLy8vLy83Ly8vd0JVSUF0Qy8vLy8vLy8vdi8vL0FGRWJEUUVMSUFGUUlBbENnSUNBZ0lDQXdQLy9BRlFnQ1VLQWdJQ0FnSURBLy84QVVSdEZCRUFnQWtLQWdJQ0FnSUFnaENFRUlBRWhBd3dDQ3lBRFVDQUtRb0NBZ0lDQWdNRC8vd0JVSUFwQ2dJQ0FnSUNBd1AvL0FGRWJSUVJBSUFSQ2dJQ0FnSUNBSUlRaEJBd0NDeUFCSUFsQ2dJQ0FnSUNBd1AvL0FJV0VVQVJBUW9DQWdJQ0FnT0QvL3dBZ0FpQUJJQU9GSUFJZ0JJVkNnSUNBZ0lDQWdJQ0FmNFdFVUNJR0d5RUVRZ0FnQVNBR0d5RUREQUlMSUFNZ0NrS0FnSUNBZ0lEQS8vOEFoWVJRRFFFZ0FTQUpoRkFFUUNBRElBcUVRZ0JTRFFJZ0FTQURneUVESUFJZ0JJTWhCQXdDQ3lBRElBcUVVRVVOQUNBQklRTWdBaUVFREFFTElBTWdBU0FCSUFOVUlBa2dDbFFnQ1NBS1VSc2lCeHNoQ2lBRUlBSWdCeHNpQzBMLy8vLy8vLzgvZ3lFSklBSWdCQ0FIR3lJQ1FqQ0lwMEgvL3dGeElRZ2dDMEl3aUtkQi8vOEJjU0lHUlFSQUlBVkI0QUJxSUFvZ0NTQUtJQWtnQ1ZBaUJodDVJQVpCQm5TdGZLY2lCa0VQYXhBdklBVXBBMmdoQ1NBRktRTmdJUXBCRUNBR2F5RUdDeUFCSUFNZ0J4c2hBeUFDUXYvLy8vLy8veitESVFRZ0NFVUVRQ0FGUWRBQWFpQURJQVFnQXlBRUlBUlFJZ2NiZVNBSFFRWjByWHluSWdkQkQyc1FMMEVRSUFkcklRZ2dCU2tEV0NFRUlBVXBBMUFoQXdzZ0JFSURoaUFEUWoySWhFS0FnSUNBZ0lDQUJJUWhCQ0FKUWdPR0lBcENQWWlFSVFrZ0FpQUxoU0VNQW40Z0EwSURoaUlCSUFZZ0NHc2lCMFVOQUJvZ0IwSC9BRXNFUUVJQUlRUkNBUXdCQ3lBRlFVQnJJQUVnQkVHQUFTQUhheEF2SUFWQk1Hb2dBU0FFSUFjUWZDQUZLUU00SVFRZ0JTa0RNQ0FGS1FOQUlBVXBBMGlFUWdCU3JZUUxJUUlnQ1VLQWdJQ0FnSUNBQklRaENTQUtRZ09HSVFNQ1FDQU1RZ0JUQkVBZ0F5QUNmU0lCSUFrZ0JIMGdBaUFEVnExOUlnU0VVQVJBUWdBaEEwSUFJUVFNQXdzZ0JFTC8vLy8vLy8vL0ExWU5BU0FGUVNCcUlBRWdCQ0FCSUFRZ0JGQWlCeHQ1SUFkQkJuU3RmS2RCREdzaUJ4QXZJQVlnQjJzaEJpQUZLUU1vSVFRZ0JTa0RJQ0VCREFFTElBSWdBM3dpQVNBQ1ZLMGdCQ0FKZkh3aUJFS0FnSUNBZ0lDQUNJTlFEUUFnQVVJQmd5QUVRaitHSUFGQ0FZaUVoQ0VCSUFaQkFXb2hCaUFFUWdHSUlRUUxJQXRDZ0lDQWdJQ0FnSUNBZjRNaEFpQUdRZi8vQVU0RVFDQUNRb0NBZ0lDQWdNRC8vd0NFSVFSQ0FDRUREQUVMUVFBaEJ3SkFJQVpCQUVvRVFDQUdJUWNNQVFzZ0JVRVFhaUFCSUFRZ0JrSC9BR29RTHlBRklBRWdCRUVCSUFackVId2dCU2tEQUNBRktRTVFJQVVwQXhpRVFnQlNyWVFoQVNBRktRTUlJUVFMSUFHblFRZHhJZ1pCQkV1dElBUkNQWVlnQVVJRGlJUWlBWHdpQXlBQlZLMGdCRUlEaUVMLy8vLy8vLzgvZ3lBSHJVSXdob1FnQW9SOElRUUNRQ0FHUVFSR0JFQWdCQ0FEUWdHRElnRWdBM3dpQXlBQlZLMThJUVFNQVFzZ0JrVU5BUXNMSUFBZ0F6Y0RBQ0FBSUFRM0F3Z2dCVUh3QUdva0FBc1JBQ0FBSUFFZ0FDZ0NBQ2dDTEJFQ0FBc3RBQ0FDUlFSQUlBQW9BZ1FnQVNnQ0JFWVBDeUFBSUFGR0JFQkJBUThMSUFBb0FnUWdBU2dDQkJDMkFVVUxZd0FnQWlnQ0JFR3dBWEVpQWtFZ1JnUkFJQUVQQ3dKQUlBSkJFRWNOQUFKQUFrQWdBQzBBQUNJQ1FTdHJEZ01BQVFBQkN5QUFRUUZxRHdzZ0FrRXdSeUFCSUFCclFRSkljZzBBSUFBdEFBRkJJSEpCK0FCSERRQWdBRUVDYWlFQUN5QUFDeVlCQVg4akFFRVFheUlCSkFBZ0FVRUlhaUFBRUEwUWVpZ0NBQ0VBSUFGQkVHb2tBQ0FBQzM0Q0FuOEJmaU1BUVJCcklnTWtBQ0FBQW40Z0FVVUVRRUlBREFFTElBTWdBU0FCUVI5MUlnSnFJQUp6SWdLdFFnQWdBbWNpQWtIUkFHb1FMeUFES1FNSVFvQ0FnSUNBZ01BQWhVR2VnQUVnQW11dFFqQ0dmQ0FCUVlDQWdJQjRjYTFDSUlhRUlRUWdBeWtEQUFzM0F3QWdBQ0FFTndNSUlBTkJFR29rQUF1REJBRURmeUFDUVlBRVR3UkFJQUFnQVNBQ0VBVWFJQUFQQ3lBQUlBSnFJUU1DUUNBQUlBRnpRUU54UlFSQUFrQWdBRUVEY1VVRVFDQUFJUUlNQVFzZ0FrRUFUQVJBSUFBaEFnd0JDeUFBSVFJRFFDQUNJQUV0QUFBNkFBQWdBVUVCYWlFQklBSkJBV29pQWtFRGNVVU5BU0FDSUFOSkRRQUxDd0pBSUFOQmZIRWlCRUhBQUVrTkFDQUNJQVJCUUdvaUJVc05BQU5BSUFJZ0FTZ0NBRFlDQUNBQ0lBRW9BZ1EyQWdRZ0FpQUJLQUlJTmdJSUlBSWdBU2dDRERZQ0RDQUNJQUVvQWhBMkFoQWdBaUFCS0FJVU5nSVVJQUlnQVNnQ0dEWUNHQ0FDSUFFb0FodzJBaHdnQWlBQktBSWdOZ0lnSUFJZ0FTZ0NKRFlDSkNBQ0lBRW9BaWcyQWlnZ0FpQUJLQUlzTmdJc0lBSWdBU2dDTURZQ01DQUNJQUVvQWpRMkFqUWdBaUFCS0FJNE5nSTRJQUlnQVNnQ1BEWUNQQ0FCUVVCcklRRWdBa0ZBYXlJQ0lBVk5EUUFMQ3lBQ0lBUlBEUUVEUUNBQ0lBRW9BZ0EyQWdBZ0FVRUVhaUVCSUFKQkJHb2lBaUFFU1EwQUN3d0JDeUFEUVFSSkJFQWdBQ0VDREFFTElBQWdBMEVFYXlJRVN3UkFJQUFoQWd3QkN5QUFJUUlEUUNBQ0lBRXRBQUE2QUFBZ0FpQUJMUUFCT2dBQklBSWdBUzBBQWpvQUFpQUNJQUV0QUFNNkFBTWdBVUVFYWlFQklBSkJCR29pQWlBRVRRMEFDd3NnQWlBRFNRUkFBMEFnQWlBQkxRQUFPZ0FBSUFGQkFXb2hBU0FDUVFGcUlnSWdBMGNOQUFzTElBQUxCd0FnQUVFSWFnc25BUUYvSUFKQkFFNEVmeUFBS0FJSUlBSkIvd0Z4UVFGMGFpOEJBQ0FCY1VFQVJ3VWdBd3NMQ2dBZ0FFRXdhMEVLU1F2eUFnSUNmd0YrQWtBZ0FrVU5BQ0FBSUFFNkFBQWdBQ0FDYWlJRFFRRnJJQUU2QUFBZ0FrRURTUTBBSUFBZ0FUb0FBaUFBSUFFNkFBRWdBMEVEYXlBQk9nQUFJQU5CQW1zZ0FUb0FBQ0FDUVFkSkRRQWdBQ0FCT2dBRElBTkJCR3NnQVRvQUFDQUNRUWxKRFFBZ0FFRUFJQUJyUVFOeElnUnFJZ01nQVVIL0FYRkJnWUtFQ0d3aUFUWUNBQ0FESUFJZ0JHdEJmSEVpQkdvaUFrRUVheUFCTmdJQUlBUkJDVWtOQUNBRElBRTJBZ2dnQXlBQk5nSUVJQUpCQ0dzZ0FUWUNBQ0FDUVF4cklBRTJBZ0FnQkVFWlNRMEFJQU1nQVRZQ0dDQURJQUUyQWhRZ0F5QUJOZ0lRSUFNZ0FUWUNEQ0FDUVJCcklBRTJBZ0FnQWtFVWF5QUJOZ0lBSUFKQkdHc2dBVFlDQUNBQ1FSeHJJQUUyQWdBZ0JDQURRUVJ4UVJoeUlnUnJJZ0pCSUVrTkFDQUJyVUtCZ0lDQUVINGhCU0FESUFScUlRRURRQ0FCSUFVM0F4Z2dBU0FGTndNUUlBRWdCVGNEQ0NBQklBVTNBd0FnQVVFZ2FpRUJJQUpCSUdzaUFrRWZTdzBBQ3dzZ0FBczNBUUovSXdCQkVHc2lBaVFBQTBBZ0FVRURSd1JBSUFBZ0FVRUNkR3BCQURZQ0FDQUJRUUZxSVFFTUFRc0xJQUpCRUdva0FDQUFDdzhBSUFBZ0FDZ0NBQ2dDREJFQUFBc0hBQ0FBRUFsRkN4RUFJQUFnQVNBQktBSUFLQUljRVFNQUN4RUFJQUFnQVNBQktBSUFLQUlZRVFNQUN4QUFJQUFnQVVHQWdJQ0FlSEkyQWdnTENRQWdBQ0FCTmdJQUN4TUFJQUFnQVNBQ0lBQW9BZ0FvQWd3UkJBQUxCQUJCQUFzUUFDQUFLQUlFSUFBb0FnQnJRUUoxQ3hJQUlBQW9BZ0FpQUFSQUlBQVEwUUlhQ3dzUkFDQUFJQUVvQWdBUTBRSTJBZ0FnQUF0QkFRRi9JQUFnQVRjRGNDQUFJQUFvQWl3Z0FDZ0NCQ0lDYTZ3M0EzZ2dBQ0FCVUNBQUtBSUlJZ0FnQW11c0lBRlhjZ1IvSUFBRklBSWdBYWRxQ3pZQ2FBc2lBUUYvSXdCQkVHc2lBaVFBSUFBZ0FTQUJFSklCRVBZQklBSkJFR29rQUNBQUN4QUFJQUlFUUNBQUlBRWdBaEJDR2dzTG5RRUJCSDhqQUVFUWF5SUhKQUFDUUNBQVJRMEFJQVFvQWd3aEJpQUNJQUZySWdoQkFFb0VRQ0FBSUFFZ0NCQi9JQWhIRFFFTElBWWdBeUFCYXlJQmEwRUFJQUVnQmtnYklnRkJBRW9FUUNBQUlBY2dBU0FGRU84QklnVVFEU0FCRUg4aEJpQUZFQW9hSUFFZ0JrY05BUXNnQXlBQ2F5SUJRUUJLQkVBZ0FDQUNJQUVRZnlBQlJ3MEJDeUFFRU80QklBQWhDUXNnQjBFUWFpUUFJQWtMVlFFQ2Z5TUFRUkJySWdJa0FDQUFFRFVFUUNBQUtBSUFJUU1nQUJCOUdpQURFQkFMSUFBZ0FTZ0NDRFlDQ0NBQUlBRXBBZ0EzQWdBZ0FVRUFFRG9nQWtFQU5nSU1JQUVnQWtFTWFoQXpJQUpCRUdva0FBdThBUUVEZnlNQVFSQnJJZ1VrQUNBRklBRTJBZ2hCQUNFQlFRWWhCZ0pBQWtBZ0FDQUZRUWhxRUNnTkFFRUVJUVlnQTBHQUVDQUFFQ0VpQnhCT1JRMEFJQU1nQnhDSEFTRUJBMEFDUUNBQUVDVWFJQUZCTUdzaEFTQUFJQVZCQ0dvUU5rVWdCRUVDU0hJTkFDQURRWUFRSUFBUUlTSUdFRTVGRFFNZ0JFRUJheUVFSUFNZ0JoQ0hBU0FCUVFwc2FpRUJEQUVMQzBFQ0lRWWdBQ0FGUVFocUVDaEZEUUVMSUFJZ0FpZ0NBQ0FHY2pZQ0FBc2dCVUVRYWlRQUlBRUx2QUVCQTM4akFFRVFheUlGSkFBZ0JTQUJOZ0lJUVFBaEFVRUdJUVlDUUFKQUlBQWdCVUVJYWhBbURRQkJCQ0VHSUFOQmdCQWdBQkFmSWdjUVJFVU5BQ0FESUFjUWlBRWhBUU5BQWtBZ0FCQWlHaUFCUVRCcklRRWdBQ0FGUVFocUVERkZJQVJCQWtoeURRQWdBMEdBRUNBQUVCOGlCaEJFUlEwRElBUkJBV3NoQkNBRElBWVFpQUVnQVVFS2JHb2hBUXdCQ3d0QkFpRUdJQUFnQlVFSWFoQW1SUTBCQ3lBQ0lBSW9BZ0FnQm5JMkFnQUxJQVZCRUdva0FDQUJDNW9CQVFOL0l3QkJFR3NpQkNRQUlBUWdBVFlDRENBRUlBTTJBZ2dnQkNBRVFReHFFRkloQmlBRUtBSUlJUU1qQUVFUWF5SUJKQUFnQVNBRE5nSU1JQUVnQXpZQ0NFRi9JUVVDUUVFQVFRQWdBaUFERUxVQklnTkJBRWdOQUNBQUlBTkJBV29pQXhBWklnQTJBZ0FnQUVVTkFDQUFJQU1nQWlBQktBSU1FTFVCSVFVTElBRkJFR29rQUNBRklRQWdCaEJSSUFSQkVHb2tBQ0FBQ3cwQUlBQW9BZ0FnQVNnQ0FFY0xMZ0FDUUNBQUtBSUVRY29BY1NJQUJFQWdBRUhBQUVZRVFFRUlEd3NnQUVFSVJ3MEJRUkFQQzBFQUR3dEJDZ3Y1QVFJRGZnSi9Jd0JCRUdzaUJTUUFBbjRnQWIwaUEwTC8vLy8vLy8vLy8vOEFneUlDUW9DQWdJQ0FnSUFJZlVMLy8vLy8vLy8vNy84QVdBUkFJQUpDUElZaEJDQUNRZ1NJUW9DQWdJQ0FnSUNBUEh3TUFRc2dBa0tBZ0lDQWdJQ0ErUDhBV2dSQUlBTkNQSVloQkNBRFFnU0lRb0NBZ0lDQWdNRC8vd0NFREFFTElBSlFCRUJDQUF3QkN5QUZJQUpDQUNBRHAyZEJJR29nQWtJZ2lLZG5JQUpDZ0lDQWdCQlVHeUlHUVRGcUVDOGdCU2tEQUNFRUlBVXBBd2hDZ0lDQWdJQ0F3QUNGUVl6NEFDQUdhNjFDTUlhRUN5RUNJQUFnQkRjREFDQUFJQUlnQTBLQWdJQ0FnSUNBZ0lCL2c0UTNBd2dnQlVFUWFpUUFDd2NBSUFBZ0FVWUxNd0VCZnlBQVFRRWdBQnNoQUFKQUEwQWdBQkFaSWdFTkFVR1lsd0VvQWdBaUFRUkFJQUVSRHdBTUFRc0xFQUFBQ3lBQkM4UURBUU4vSXdCQklHc2lDQ1FBSUFnZ0FqWUNFQ0FJSUFFMkFoZ2dDRUVJYWlJQklBTVFEeUFCRURzaENTQUJFQTRnQkVFQU5nSUFRUUFoQWdKQUEwQWdCaUFIUmlBQ2NnMEJBa0FnQ0VFWWFpQUlRUkJxRUNnTkFBSkFJQWtnQmlnQ0FCQ0hBVUVsUmdSQUlBWkJCR29pQWlBSFJnMENRUUFoQ2dKL0lBa2dBaWdDQUJDSEFTSUJRY1VBUmlBQlFmOEJjVUV3Um5KRkJFQWdCaUVDSUFFTUFRc2dCa0VJYWlBSFJnMERJQUVoQ2lBSklBWW9BZ2dRaHdFTElRRWdDQ0FBSUFnb0FoZ2dDQ2dDRUNBRElBUWdCU0FCSUFvZ0FDZ0NBQ2dDSkJFTUFEWUNHQ0FDUVFocUlRWU1BUXNnQ1VHQXdBQWdCaWdDQUJCT0JFQURRQUpBSUFjZ0JrRUVhaUlHUmdSQUlBY2hCZ3dCQ3lBSlFZREFBQ0FHS0FJQUVFNE5BUXNMQTBBZ0NFRVlhaUFJUVJCcUVEWkZEUUlnQ1VHQXdBQWdDRUVZYWhBaEVFNUZEUUlnQ0VFWWFoQWxHZ3dBQ3dBTElBa2dDRUVZYWhBaEVDa2dDU0FHS0FJQUVDbEdCRUFnQmtFRWFpRUdJQWhCR0dvUUpSb01BUXNnQkVFRU5nSUFDeUFFS0FJQUlRSU1BUXNMSUFSQkJEWUNBQXNnQ0VFWWFpQUlRUkJxRUNnRVFDQUVJQVFvQWdCQkFuSTJBZ0FMSUFnb0FoZ2hBQ0FJUVNCcUpBQWdBQXZHQXdFRGZ5TUFRU0JySWdna0FDQUlJQUkyQWhBZ0NDQUJOZ0lZSUFoQkNHb2lBU0FERUE4Z0FSQXlJUWtnQVJBT0lBUkJBRFlDQUVFQUlRSUNRQU5BSUFZZ0IwWWdBbklOQVFKQUlBaEJHR29nQ0VFUWFoQW1EUUFDUUNBSklBWXNBQUFRaUFGQkpVWUVRQ0FHUVFGcUlnSWdCMFlOQWtFQUlRb0NmeUFKSUFJc0FBQVFpQUVpQVVIRkFFWWdBVUgvQVhGQk1FWnlSUVJBSUFZaEFpQUJEQUVMSUFaQkFtb2dCMFlOQXlBQklRb2dDU0FHTEFBQ0VJZ0JDeUVCSUFnZ0FDQUlLQUlZSUFnb0FoQWdBeUFFSUFVZ0FTQUtJQUFvQWdBb0FpUVJEQUEyQWhnZ0FrRUNhaUVHREFFTElBbEJnTUFBSUFZc0FBQVFSQVJBQTBBQ1FDQUhJQVpCQVdvaUJrWUVRQ0FISVFZTUFRc2dDVUdBd0FBZ0Jpd0FBQkJFRFFFTEN3TkFJQWhCR0dvZ0NFRVFhaEF4UlEwQ0lBbEJnTUFBSUFoQkdHb1FIeEJFUlEwQ0lBaEJHR29RSWhvTUFBc0FDeUFKSUFoQkdHb1FIeEN6QVNBSklBWXNBQUFRc3dGR0JFQWdCa0VCYWlFR0lBaEJHR29RSWhvTUFRc2dCRUVFTmdJQUN5QUVLQUlBSVFJTUFRc0xJQVJCQkRZQ0FBc2dDRUVZYWlBSVFSQnFFQ1lFUUNBRUlBUW9BZ0JCQW5JMkFnQUxJQWdvQWhnaEFDQUlRU0JxSkFBZ0FBdXFBUUVFZnlNQVFSQnJJZ2drQUFKQUlBQkZEUUFnQkNnQ0RDRUdJQUlnQVdzaUIwRUFTZ1JBSUFBZ0FTQUhRUUoxSWdjUWZ5QUhSdzBCQ3lBR0lBTWdBV3RCQW5VaUFXdEJBQ0FCSUFaSUd5SUJRUUJLQkVBZ0FDQUlJQUVnQlJDN0FpSUZFQTBnQVJCL0lRWWdCUkFLR2lBQklBWkhEUUVMSUFNZ0Ftc2lBVUVBU2dSQUlBQWdBaUFCUVFKMUlnRVFmeUFCUncwQkN5QUVFTzRCSUFBaENRc2dDRUVRYWlRQUlBa0xGZ0FnQUNBQklBSWdBeUFBS0FJQUtBSXdFUXNBR2d0Q0FRRi9JQUFvQWdBaEFpQUJFQm9oQUNBQ1FRaHFJZ0VRVUNBQVN3Ui9JQUVnQUJCM0tBSUFRUUJIQlVFQUMwVUVRQkFYQUFzZ0FrRUlhaUFBRUhjb0FnQUxDQUFnQUVIL0FYRUxCQUFnQUFzUEFDQUFJQUFvQWdBb0FpUVJBQUFMRVFBZ0FDQUJJQUVvQWdBb0FpQVJBd0FMRVFBZ0FDQUJJQUVvQWdBb0Fpd1JBd0FMREFBZ0FFR0Nob0FnTmdBQUN3Y0FJQUFRRVJvTExnRUJmeU1BUVJCcklnRWtBQ0FCUVFocUlBQVFEU0FBRUFsQkFuUnFFSG9vQWdBaEFDQUJRUkJxSkFBZ0FBdXFBUUVCZndKQUlBTkJnQkJ4UlEwQUlBSkZJQU5CeWdCeElnUkJDRVlnQkVIQUFFWnljZzBBSUFCQkt6b0FBQ0FBUVFGcUlRQUxJQU5CZ0FSeEJFQWdBRUVqT2dBQUlBQkJBV29oQUFzRFFDQUJMUUFBSWdRRVFDQUFJQVE2QUFBZ0FFRUJhaUVBSUFGQkFXb2hBUXdCQ3dzZ0FBSi9RZThBSUFOQnlnQnhJZ0ZCd0FCR0RRQWFRZGdBUWZnQUlBTkJnSUFCY1JzZ0FVRUlSZzBBR2tIa0FFSDFBQ0FDR3dzNkFBQUxLd0VCZnlNQVFSQnJJZ0VrQUNBQlFRaHFJQUFRRFNBQUVBbHFFSG9vQWdBaEFDQUJRUkJxSkFBZ0FBc1dBQ0FBSUFFZ0FpQURJQUFvQWdBb0FpQVJDd0FhQ3hBQUlBQkJJRVlnQUVFSmEwRUZTWElMTmdBZ0FnUi9JQUlFUUFOQUlBQWdBU2dDQURZQ0FDQUFRUVJxSVFBZ0FVRUVhaUVCSUFKQkFXc2lBZzBBQ3d0QkFBVWdBQXNhQzFJQkFuOUI4SUFCS0FJQUlnRWdBRUVEYWtGOGNTSUNhaUVBQWtBZ0FrRUFJQUFnQVUwYkRRQWdBRDhBUVJCMFN3UkFJQUFRQkVVTkFRdEI4SUFCSUFBMkFnQWdBUThMUWRTQkFVRXdOZ0lBUVg4TEVnQWdBQkJES0FJQUlBQW9BZ0JyUVFKMUN3Y0FJQUJCRUdvTE5RRUJmeU1BUVJCcklnSWtBQ0FDSUFBb0FnQTJBZ3dnQUNBQktBSUFOZ0lBSUFFZ0FrRU1haWdDQURZQ0FDQUNRUkJxSkFBTEpBRUNmeU1BUVJCcklnSWtBQ0FBSUFFUThRRWhBeUFDUVJCcUpBQWdBU0FBSUFNYkN3MEFJQUFvQWdBZ0FVRUNkR29MRmdBZ0FCQTFCRUFnQUNBQkVEa1BDeUFBSUFFUU9nc3NBQUpBSUFBZ0FVWU5BQU5BSUFBZ0FVRUJheUlCVHcwQklBQWdBUkN3QWlBQVFRRnFJUUFNQUFzQUN3c0xBQ0FBSUFFMkFnQWdBQXZiQVFJQmZ3SitRUUVoQkFKQUlBQkNBRklnQVVMLy8vLy8vLy8vLy84QWd5SUZRb0NBZ0lDQWdNRC8vd0JXSUFWQ2dJQ0FnSUNBd1AvL0FGRWJEUUFnQWtJQVVpQURRdi8vLy8vLy8vLy8vd0NESWdaQ2dJQ0FnSUNBd1AvL0FGWWdCa0tBZ0lDQWdJREEvLzhBVVJzTkFDQUFJQUtFSUFVZ0JvU0VVQVJBUVFBUEN5QUJJQU9EUWdCWkJFQkJmeUVFSUFBZ0FsUWdBU0FEVXlBQklBTlJHdzBCSUFBZ0FvVWdBU0FEaFlSQ0FGSVBDMEYvSVFRZ0FDQUNWaUFCSUFOVklBRWdBMUViRFFBZ0FDQUNoU0FCSUFPRmhFSUFVaUVFQ3lBRUMxQUJBWDRDUUNBRFFjQUFjUVJBSUFJZ0EwRkFhcTJJSVFGQ0FDRUNEQUVMSUFORkRRQWdBa0hBQUNBRGE2MkdJQUVnQTYwaUJJaUVJUUVnQWlBRWlDRUNDeUFBSUFFM0F3QWdBQ0FDTndNSUN3NEFJQUFvQWdoQi8vLy8vd2R4Q3dvQUlBQVE0UUVhSUFBTEV3QWdBQ0FCSUFJZ0FDZ0NBQ2dDTUJFRUFBc21BQ0FBSUFBb0FoaEZJQUFvQWhBZ0FYSnlJZ0UyQWhBZ0FDZ0NGQ0FCY1FSQUVCY0FDd3NKQUNBQUlBRVEvUUVMSkFBZ0FFRUNUd1IvSUFCQkJHcEJmSEVpQUNBQVFRRnJJZ0FnQUVFQ1Joc0ZRUUVMQ3djQUlBQkJER29MbFFFQkJYOGpBRUVRYXlJRkpBQWdBUkRUQWlFQ0l3QkJFR3NpQXlRQUFrQWdBa0h2Ly8vL0EwMEVRQUpBSUFKQkFVMEVRQ0FBSUFJUU9pQUFJUVFNQVFzZ0FDQUFJQUlRZ2dGQkFXb2lCaENCQVNJRUVFMGdBQ0FHRUV3Z0FDQUNFRGtMSUFRZ0FTQUNFSEVnQTBFQU5nSU1JQVFnQWtFQ2RHb2dBMEVNYWhBeklBTkJFR29rQUF3QkN4QVhBQXNnQlVFUWFpUUFDdzhBSUFBUVF5Z0NBQ0FBS0FJQWF3dkVBUUVHZnlNQVFSQnJJZ1FrQUNBQUVKWUJLQUlBSVFVQ2Z5QUNLQUlBSUFBb0FnQnJJZ05CLy8vLy93ZEpCRUFnQTBFQmRBd0JDMEYvQ3lJRFFRUWdBeHNoQXlBQktBSUFJUVlnQUNnQ0FDRUhJQVZCTmtZRWYwRUFCU0FBS0FJQUN5QURFSjRCSWdnRVFDQUZRVFpIQkVBZ0FCQ21BUm9MSUFSQk5UWUNCQ0FBSUFSQkNHb2dDQ0FFUVFScUVCNGlCUkNsQWlBRkVCMGdBU0FBS0FJQUlBWWdCMnRxTmdJQUlBSWdBQ2dDQUNBRFFYeHhhallDQUNBRVFSQnFKQUFQQ3hBWEFBc1RBQ0FBSUFGQkFDQUFLQUlBS0FJMEVRUUFDeE1BSUFBZ0FVRUFJQUFvQWdBb0FpUVJCQUFMRFFBZ0FDZ0NCQ0FBS0FJQWF3dERBUUYvSUFCQnJDWW9BZ0FpQVRZQ0FDQUFJQUZCREdzb0FnQnFRY3dtS0FJQU5nSUFJQUJCMENZb0FnQTJBZ2dnQUVFTWFoRFFBUm9nQUVGQWF4QitHaUFBQy9JQ0FRSi9Jd0JCRUdzaUNpUUFJQW9nQURZQ0RBSkFBa0FDUUNBREtBSUFJQUpIRFFCQkt5RUxJQUFnQ1NnQ1lFY0VRRUV0SVFzZ0NTZ0NaQ0FBUncwQkN5QURJQUpCQVdvMkFnQWdBaUFMT2dBQURBRUxJQVlRQ1VVZ0FDQUZSM0pGQkVCQkFDRUFJQWdvQWdBaUFTQUhhMEdmQVVvTkFpQUVLQUlBSVFBZ0NDQUJRUVJxTmdJQUlBRWdBRFlDQUF3QkMwRi9JUUFnQ1NBSlFlZ0FhaUFLUVF4cUVOSUJJQWxySWdaQjNBQktEUUVnQmtFQ2RTRUZBa0FDUUFKQUlBRkJDR3NPQXdBQ0FBRUxJQUVnQlVvTkFRd0RDeUFCUVJCSElBWkIyQUJJY2cwQUlBTW9BZ0FpQVNBQ1JpQUJJQUpyUVFKS2NnMENJQUZCQVdzdEFBQkJNRWNOQWtFQUlRQWdCRUVBTmdJQUlBTWdBVUVCYWpZQ0FDQUJJQVZCNE5BQWFpMEFBRG9BQUF3Q0N5QURJQU1vQWdBaUFFRUJhallDQUNBQUlBVkI0TkFBYWkwQUFEb0FBQ0FFSUFRb0FnQkJBV28yQWdCQkFDRUFEQUVMUVFBaEFDQUVRUUEyQWdBTElBcEJFR29rQUNBQUN3b0FJQUJCdElrQkVHUUw3Z0lCQTM4akFFRVFheUlLSkFBZ0NpQUFPZ0FQQWtBQ1FBSkFJQU1vQWdBZ0FrY05BRUVySVFzZ0FFSC9BWEVpRENBSkxRQVlSd1JBUVMwaEN5QUpMUUFaSUF4SERRRUxJQU1nQWtFQmFqWUNBQ0FDSUFzNkFBQU1BUXNnQmhBSlJTQUFJQVZIY2tVRVFFRUFJUUFnQ0NnQ0FDSUJJQWRyUVo4QlNnMENJQVFvQWdBaEFDQUlJQUZCQkdvMkFnQWdBU0FBTmdJQURBRUxRWDhoQUNBSklBbEJHbW9nQ2tFUGFoRFZBU0FKYXlJRlFSZEtEUUVDUUFKQUFrQWdBVUVJYXc0REFBSUFBUXNnQVNBRlNnMEJEQU1MSUFGQkVFY2dCVUVXU0hJTkFDQURLQUlBSWdFZ0FrWWdBU0FDYTBFQ1NuSU5BaUFCUVFGckxRQUFRVEJIRFFKQkFDRUFJQVJCQURZQ0FDQURJQUZCQVdvMkFnQWdBU0FGUWVEUUFHb3RBQUE2QUFBTUFnc2dBeUFES0FJQUlnQkJBV28yQWdBZ0FDQUZRZURRQUdvdEFBQTZBQUFnQkNBRUtBSUFRUUZxTmdJQVFRQWhBQXdCQzBFQUlRQWdCRUVBTmdJQUN5QUtRUkJxSkFBZ0FBc0tBQ0FBUWF5SkFSQmtDNE1CQWdOL0FYNENRQ0FBUW9DQWdJQVFWQVJBSUFBaEJRd0JDd05BSUFGQkFXc2lBU0FBSUFCQ0NvQWlCVUlLZm4yblFUQnlPZ0FBSUFCQy8vLy8vNThCVmlFQ0lBVWhBQ0FDRFFBTEN5QUZweUlDQkVBRFFDQUJRUUZySWdFZ0FpQUNRUXB1SWdOQkNteHJRVEJ5T2dBQUlBSkJDVXNoQkNBRElRSWdCQTBBQ3dzZ0FRdGpBZ0YvQVg0akFFRVFheUlDSkFBZ0FBSitJQUZGQkVCQ0FBd0JDeUFDSUFHdFFnQWdBV2NpQVVIUkFHb1FMeUFDS1FNSVFvQ0FnSUNBZ01BQWhVR2VnQUVnQVd1dFFqQ0dmQ0VESUFJcEF3QUxOd01BSUFBZ0F6Y0RDQ0FDUVJCcUpBQUxKQUFnQUVFTFR3Ui9JQUJCRUdwQmNIRWlBQ0FBUVFGcklnQWdBRUVMUmhzRlFRb0xDMzhCQTM4Z0FDRUJBa0FnQUVFRGNRUkFBMEFnQVMwQUFFVU5BaUFCUVFGcUlnRkJBM0VOQUFzTEEwQWdBU0lDUVFScUlRRWdBaWdDQUNJRFFYOXpJQU5CZ1lLRUNHdHhRWUNCZ29SNGNVVU5BQXNnQTBIL0FYRkZCRUFnQWlBQWF3OExBMEFnQWkwQUFTRURJQUpCQVdvaUFTRUNJQU1OQUFzTElBRWdBR3NMS1FBZ0FDQUJRUWgwUVlDQS9BZHhJQUZCR0hSeUlBRkJDSFpCZ1A0RGNTQUJRUmgyY25JMkFBQUxLUUFnQUNnQUFDSUFRUmgwSUFCQkNIUkJnSUQ4QjNGeUlBQkJDSFpCZ1A0RGNTQUFRUmgyY25JTER3QWdBQ0FBS0FJQVFRUnFOZ0lBQ3djQUlBQkJCR29MRHdBZ0FDQUFLQUlBUVFGcU5nSUFDemNCQW44akFFRVFheUlESkFBZ0EwRUlhaUlFSUFFUUR5QUNJQVFRakFFaUFSQTROZ0lBSUFBZ0FSQTNJQVFRRGlBRFFSQnFKQUFMTlFFQ2Z5TUFRUkJySWdJa0FDQUNRUWhxSWdNZ0FCQVBJQU1RTzBIZzBBQkIrdEFBSUFFUVl5QURFQTRnQWtFUWFpUUFJQUVMTndFQ2Z5TUFRUkJySWdNa0FDQURRUWhxSWdRZ0FSQVBJQUlnQkJDT0FTSUJFRGc2QUFBZ0FDQUJFRGNnQkJBT0lBTkJFR29rQUFzWEFDQUFJQU0yQWhBZ0FDQUNOZ0lNSUFBZ0FUWUNDQXNLQUNBQVFSaDBRUmgxQzBJQUlBQWdBQ2dDQUNBQktBSUFjellDQUNBQUlBQW9BZ1FnQVNnQ0JITTJBZ1FnQUNBQUtBSUlJQUVvQWdoek5nSUlJQUFnQUNnQ0RDQUJLQUlNY3pZQ0RBdWNDQUVMZnlBQVJRUkFJQUVRR1E4TElBRkJRRThFUUVIVWdRRkJNRFlDQUVFQUR3c0NmMEVRSUFGQkMycEJlSEVnQVVFTFNSc2hCaUFBUVFocklnVW9BZ1FpQ1VGNGNTRUVBa0FnQ1VFRGNVVUVRRUVBSUFaQmdBSkpEUUlhSUFaQkJHb2dCRTBFUUNBRklRSWdCQ0FHYTBHNGhRRW9BZ0JCQVhSTkRRSUxRUUFNQWdzZ0JDQUZhaUVIQWtBZ0JDQUdUd1JBSUFRZ0Jtc2lBMEVRU1EwQklBVWdDVUVCY1NBR2NrRUNjallDQkNBRklBWnFJZ0lnQTBFRGNqWUNCQ0FISUFjb0FnUkJBWEkyQWdRZ0FpQURFT3dCREFFTElBZEI4SUVCS0FJQVJnUkFRZVNCQVNnQ0FDQUVhaUlFSUFaTkRRSWdCU0FKUVFGeElBWnlRUUp5TmdJRUlBVWdCbW9pQXlBRUlBWnJJZ0pCQVhJMkFnUkI1SUVCSUFJMkFnQkI4SUVCSUFNMkFnQU1BUXNnQjBIc2dRRW9BZ0JHQkVCQjRJRUJLQUlBSUFScUlnTWdCa2tOQWdKQUlBTWdCbXNpQWtFUVR3UkFJQVVnQ1VFQmNTQUdja0VDY2pZQ0JDQUZJQVpxSWdRZ0FrRUJjallDQkNBRElBVnFJZ01nQWpZQ0FDQURJQU1vQWdSQmZuRTJBZ1FNQVFzZ0JTQUpRUUZ4SUFOeVFRSnlOZ0lFSUFNZ0JXb2lBaUFDS0FJRVFRRnlOZ0lFUVFBaEFrRUFJUVFMUWV5QkFTQUVOZ0lBUWVDQkFTQUNOZ0lBREFFTElBY29BZ1FpQTBFQ2NRMEJJQU5CZUhFZ0JHb2lDaUFHU1EwQklBb2dCbXNoREFKQUlBTkIvd0ZOQkVBZ0J5Z0NDQ0lFSUFOQkEzWWlBa0VEZEVHQWdnRnFSaG9nQkNBSEtBSU1JZ05HQkVCQjJJRUJRZGlCQVNnQ0FFRitJQUozY1RZQ0FBd0NDeUFFSUFNMkFnd2dBeUFFTmdJSURBRUxJQWNvQWhnaEN3SkFJQWNnQnlnQ0RDSUlSd1JBSUFjb0FnZ2lBa0hvZ1FFb0FnQkpHaUFDSUFnMkFnd2dDQ0FDTmdJSURBRUxBa0FnQjBFVWFpSUVLQUlBSWdJTkFDQUhRUkJxSWdRb0FnQWlBZzBBUVFBaENBd0JDd05BSUFRaEF5QUNJZ2hCRkdvaUJDZ0NBQ0lDRFFBZ0NFRVFhaUVFSUFnb0FoQWlBZzBBQ3lBRFFRQTJBZ0FMSUF0RkRRQUNRQ0FISUFjb0Fod2lBMEVDZEVHSWhBRnFJZ0lvQWdCR0JFQWdBaUFJTmdJQUlBZ05BVUhjZ1FGQjNJRUJLQUlBUVg0Z0EzZHhOZ0lBREFJTElBdEJFRUVVSUFzb0FoQWdCMFliYWlBSU5nSUFJQWhGRFFFTElBZ2dDellDR0NBSEtBSVFJZ0lFUUNBSUlBSTJBaEFnQWlBSU5nSVlDeUFIS0FJVUlnSkZEUUFnQ0NBQ05nSVVJQUlnQ0RZQ0dBc2dERUVQVFFSQUlBVWdDVUVCY1NBS2NrRUNjallDQkNBRklBcHFJZ0lnQWlnQ0JFRUJjallDQkF3QkN5QUZJQWxCQVhFZ0JuSkJBbkkyQWdRZ0JTQUdhaUlESUF4QkEzSTJBZ1FnQlNBS2FpSUNJQUlvQWdSQkFYSTJBZ1FnQXlBTUVPd0JDeUFGSVFJTElBSUxJZ0lFUUNBQ1FRaHFEd3NnQVJBWklnVkZCRUJCQUE4TElBVWdBRUY4UVhnZ0FFRUVheWdDQUNJQ1FRTnhHeUFDUVhoeGFpSUNJQUVnQVNBQ1N4c1FRaG9nQUJBUUlBVUxmUUVEZjBFWUlRSUNRQUpBSUFBZ0FYSkJBM0VOQUFOQUlBQW9BZ0FnQVNnQ0FFY05BU0FCUVFScUlRRWdBRUVFYWlFQUlBSkJCR3NpQWtFRFN3MEFDeUFDUlEwQkN3TkFJQUF0QUFBaUF5QUJMUUFBSWdSR0JFQWdBVUVCYWlFQklBQkJBV29oQUNBQ1FRRnJJZ0lOQVF3Q0N3c2dBeUFFYXc4TFFRQUxTUUVDZnlBQUtBSUVJZ1pCQ0hVaEJTQUdRUUZ4QkVBZ0FpZ0NBQ0FGRU1VQklRVUxJQUFvQWdBaUFDQUJJQUlnQldvZ0EwRUNJQVpCQW5FYklBUWdBQ2dDQUNnQ0dCRUtBQXUyQVFFRGZ5TUFRUkJySWdNa0FDQURJQUU2QUE4Q1FBSkFBa0FDUUNBQUVEVUVRQ0FBRUgwaEFTQUFLQUlFSWdRZ0FVRUJheUlDUmcwQkRBTUxRUW9oQkVFS0lRSWdBQzBBQ3lJQlFRcEhEUUVMSUFBZ0FrRUJJQUlnQWhESUFTQUVJUUVnQUJBMURRRUxJQUFoQWlBQUlBRkJBV29RT2d3QkN5QUFLQUlBSVFJZ0FDQUVRUUZxRURrZ0JDRUJDeUFCSUFKcUlnQWdBMEVQYWhBMElBTkJBRG9BRGlBQVFRRnFJQU5CRG1vUU5DQURRUkJxSkFBTEpBRUNmeU1BUVJCcklnSWtBQ0FCSUFBUThRRWhBeUFDUVJCcUpBQWdBU0FBSUFNYkN4MEFJQUJCQkdvUWtnSkJmMFlFUUNBQUlBQW9BZ0FvQWdnUkFRQUxDeVFBSUFBUStRRWhBQ0FCRVBrQklBQnJJZ0VFUUNBQ0lBQWdBUkRxQVFzZ0FTQUNhZ3NSQUNBQUlBRWdBU2dDQUNnQ0tCRURBQXNVQVFGL0lBQW9BZ0FoQVNBQVFRQTJBZ0FnQVF1ckxBRVJmeUFBS0FMd0FTRVNJQUFvQWdRZ0FTZ0FCQ0lFUVJoMElBUkJDSFJCZ0lEOEIzRnlJQVJCQ0haQmdQNERjU0FFUVJoMmNuSnpJZ1JCRG5aQi9BZHhRWUFJYWlnQ0FFRUlFQWdoQmlBQUtBSUlJQUVvQUFnaUJVRVlkQ0FGUVFoMFFZQ0EvQWR4Y2lBRlFRaDJRWUQrQTNFZ0JVRVlkbkp5Y3lJRlFRWjJRZndIY1VHQUNHb29BZ0JCRUJBSUlRZ2dBQ2dDRENBQktBQU1JZ05CR0hRZ0EwRUlkRUdBZ1B3SGNYSWdBMEVJZGtHQS9nTnhJQU5CR0haeWNuTWlBMEgvQVhGQkFuUkJnQWhxS0FJQVFSZ1FDQ0VISUFWQkRuWkIvQWR4UVlBSWFpZ0NBRUVJRUFnaENTQURRUVoyUWZ3SGNVR0FDR29vQWdCQkVCQUlJUW9nQUNnQ0FDQUJLQUFBSWdGQkdIUWdBVUVJZEVHQWdQd0hjWElnQVVFSWRrR0EvZ054SUFGQkdIWnljbk1pQVVIL0FYRkJBblJCZ0FocUtBSUFRUmdRQ0NFTElBTkJEblpCL0FkeFFZQUlhaWdDQUVFSUVBZ2hEQ0FCUVFaMlFmd0hjVUdBQ0dvb0FnQkJFQkFJSVEwZ0JFSC9BWEZCQW5SQmdBaHFLQUlBUVJnUUNDRU9JQUZCRG5aQi9BZHhRWUFJYWlnQ0FFRUlFQWdoRHlBRVFRWjJRZndIY1VHQUNHb29BZ0JCRUJBSUlSQWdCVUgvQVhGQkFuUkJnQWhxS0FJQVFSZ1FDQ0VSSUFBb0FoUWdDeUFLSUFrZ0JFRVdka0g4QjNGQmdBaHFLQUlBYzNOemN5SUVRUTUyUWZ3SGNVR0FDR29vQWdCQkNCQUlJUWtnQUNnQ0dDQU9JQTBnRENBRlFSWjJRZndIY1VHQUNHb29BZ0J6YzNOeklnVkJCblpCL0FkeFFZQUlhaWdDQUVFUUVBZ2hDaUFBS0FJY0lCRWdFQ0FQSUFOQkZuWkIvQWR4UVlBSWFpZ0NBSE56YzNNaUEwSC9BWEZCQW5SQmdBaHFLQUlBUVJnUUNDRUxJQVZCRG5aQi9BZHhRWUFJYWlnQ0FFRUlFQWdoRENBRFFRWjJRZndIY1VHQUNHb29BZ0JCRUJBSUlRMGdBQ2dDRUNBSElBZ2dCaUFCUVJaMlFmd0hjVUdBQ0dvb0FnQnpjM056SWdGQi93RnhRUUowUVlBSWFpZ0NBRUVZRUFnaEJpQURRUTUyUWZ3SGNVR0FDR29vQWdCQkNCQUlJUWdnQVVFR2RrSDhCM0ZCZ0FocUtBSUFRUkFRQ0NFSElBUkIvd0Z4UVFKMFFZQUlhaWdDQUVFWUVBZ2hEaUFCUVE1MlFmd0hjVUdBQ0dvb0FnQkJDQkFJSVE4Z0JFRUdka0g4QjNGQmdBaHFLQUlBUVJBUUNDRVFJQVZCL3dGeFFRSjBRWUFJYWlnQ0FFRVlFQWdoRVNBQUtBSWtJQVlnRFNBTUlBUkJGblpCL0FkeFFZQUlhaWdDQUhOemMzTWlCRUVPZGtIOEIzRkJnQWhxS0FJQVFRZ1FDQ0VHSUFBb0FpZ2dEaUFISUFnZ0JVRVdka0g4QjNGQmdBaHFLQUlBYzNOemN5SUZRUVoyUWZ3SGNVR0FDR29vQWdCQkVCQUlJUWdnQUNnQ0xDQVJJQkFnRHlBRFFSWjJRZndIY1VHQUNHb29BZ0J6YzNOeklnTkIvd0Z4UVFKMFFZQUlhaWdDQUVFWUVBZ2hCeUFGUVE1MlFmd0hjVUdBQ0dvb0FnQkJDQkFJSVF3Z0EwRUdka0g4QjNGQmdBaHFLQUlBUVJBUUNDRU5JQUFvQWlBZ0N5QUtJQWtnQVVFV2RrSDhCM0ZCZ0FocUtBSUFjM056Y3lJQlFmOEJjVUVDZEVHQUNHb29BZ0JCR0JBSUlRa2dBMEVPZGtIOEIzRkJnQWhxS0FJQVFRZ1FDQ0VLSUFGQkJuWkIvQWR4UVlBSWFpZ0NBRUVRRUFnaEN5QUVRZjhCY1VFQ2RFR0FDR29vQWdCQkdCQUlJUTRnQVVFT2RrSDhCM0ZCZ0FocUtBSUFRUWdRQ0NFUElBUkJCblpCL0FkeFFZQUlhaWdDQUVFUUVBZ2hFQ0FGUWY4QmNVRUNkRUdBQ0dvb0FnQkJHQkFJSVJFZ0FDZ0NOQ0FKSUEwZ0RDQUVRUloyUWZ3SGNVR0FDR29vQWdCemMzTnpJZ1JCRG5aQi9BZHhRWUFJYWlnQ0FFRUlFQWdoQ1NBQUtBSTRJQTRnQ3lBS0lBVkJGblpCL0FkeFFZQUlhaWdDQUhOemMzTWlCVUVHZGtIOEIzRkJnQWhxS0FJQVFSQVFDQ0VLSUFBb0Fqd2dFU0FRSUE4Z0EwRVdka0g4QjNGQmdBaHFLQUlBYzNOemN5SURRZjhCY1VFQ2RFR0FDR29vQWdCQkdCQUlJUXNnQlVFT2RrSDhCM0ZCZ0FocUtBSUFRUWdRQ0NFTUlBTkJCblpCL0FkeFFZQUlhaWdDQUVFUUVBZ2hEU0FBS0FJd0lBY2dDQ0FHSUFGQkZuWkIvQWR4UVlBSWFpZ0NBSE56YzNNaUFVSC9BWEZCQW5SQmdBaHFLQUlBUVJnUUNDRUdJQU5CRG5aQi9BZHhRWUFJYWlnQ0FFRUlFQWdoQ0NBQlFRWjJRZndIY1VHQUNHb29BZ0JCRUJBSUlRY2dCRUgvQVhGQkFuUkJnQWhxS0FJQVFSZ1FDQ0VPSUFGQkRuWkIvQWR4UVlBSWFpZ0NBRUVJRUFnaER5QUVRUVoyUWZ3SGNVR0FDR29vQWdCQkVCQUlJUkFnQlVIL0FYRkJBblJCZ0FocUtBSUFRUmdRQ0NFUklBQW9Ba1FnQmlBTklBd2dCRUVXZGtIOEIzRkJnQWhxS0FJQWMzTnpjeUlFUVE1MlFmd0hjVUdBQ0dvb0FnQkJDQkFJSVFZZ0FDZ0NTQ0FPSUFjZ0NDQUZRUloyUWZ3SGNVR0FDR29vQWdCemMzTnpJZ1ZCQm5aQi9BZHhRWUFJYWlnQ0FFRVFFQWdoQ0NBQUtBSk1JQkVnRUNBUElBTkJGblpCL0FkeFFZQUlhaWdDQUhOemMzTWlBMEgvQVhGQkFuUkJnQWhxS0FJQVFSZ1FDQ0VISUFWQkRuWkIvQWR4UVlBSWFpZ0NBRUVJRUFnaERDQURRUVoyUWZ3SGNVR0FDR29vQWdCQkVCQUlJUTBnQUNnQ1FDQUxJQW9nQ1NBQlFSWjJRZndIY1VHQUNHb29BZ0J6YzNOeklnRkIvd0Z4UVFKMFFZQUlhaWdDQUVFWUVBZ2hDU0FEUVE1MlFmd0hjVUdBQ0dvb0FnQkJDQkFJSVFvZ0FVRUdka0g4QjNGQmdBaHFLQUlBUVJBUUNDRUxJQVJCL3dGeFFRSjBRWUFJYWlnQ0FFRVlFQWdoRGlBQlFRNTJRZndIY1VHQUNHb29BZ0JCQ0JBSUlROGdCRUVHZGtIOEIzRkJnQWhxS0FJQVFSQVFDQ0VRSUFWQi93RnhRUUowUVlBSWFpZ0NBRUVZRUFnaEVTQUFLQUpVSUFrZ0RTQU1JQVJCRm5aQi9BZHhRWUFJYWlnQ0FITnpjM01pQkVFT2RrSDhCM0ZCZ0FocUtBSUFRUWdRQ0NFSklBQW9BbGdnRGlBTElBb2dCVUVXZGtIOEIzRkJnQWhxS0FJQWMzTnpjeUlGUVFaMlFmd0hjVUdBQ0dvb0FnQkJFQkFJSVFvZ0FDZ0NYQ0FSSUJBZ0R5QURRUloyUWZ3SGNVR0FDR29vQWdCemMzTnpJZ05CL3dGeFFRSjBRWUFJYWlnQ0FFRVlFQWdoQ3lBRlFRNTJRZndIY1VHQUNHb29BZ0JCQ0JBSUlRd2dBMEVHZGtIOEIzRkJnQWhxS0FJQVFSQVFDQ0VOSUFBb0FsQWdCeUFJSUFZZ0FVRVdka0g4QjNGQmdBaHFLQUlBYzNOemN5SUJRZjhCY1VFQ2RFR0FDR29vQWdCQkdCQUlJUVlnQTBFT2RrSDhCM0ZCZ0FocUtBSUFRUWdRQ0NFSUlBRkJCblpCL0FkeFFZQUlhaWdDQUVFUUVBZ2hCeUFFUWY4QmNVRUNkRUdBQ0dvb0FnQkJHQkFJSVE0Z0FVRU9ka0g4QjNGQmdBaHFLQUlBUVFnUUNDRVBJQVJCQm5aQi9BZHhRWUFJYWlnQ0FFRVFFQWdoRUNBRlFmOEJjVUVDZEVHQUNHb29BZ0JCR0JBSUlSRWdBQ2dDWkNBR0lBMGdEQ0FFUVJaMlFmd0hjVUdBQ0dvb0FnQnpjM056SWdSQkRuWkIvQWR4UVlBSWFpZ0NBRUVJRUFnaEJpQUFLQUpvSUE0Z0J5QUlJQVZCRm5aQi9BZHhRWUFJYWlnQ0FITnpjM01pQlVFR2RrSDhCM0ZCZ0FocUtBSUFRUkFRQ0NFSUlBQW9BbXdnRVNBUUlBOGdBMEVXZGtIOEIzRkJnQWhxS0FJQWMzTnpjeUlEUWY4QmNVRUNkRUdBQ0dvb0FnQkJHQkFJSVFjZ0JVRU9ka0g4QjNGQmdBaHFLQUlBUVFnUUNDRU1JQU5CQm5aQi9BZHhRWUFJYWlnQ0FFRVFFQWdoRFNBQUtBSmdJQXNnQ2lBSklBRkJGblpCL0FkeFFZQUlhaWdDQUhOemMzTWlBVUgvQVhGQkFuUkJnQWhxS0FJQVFSZ1FDQ0VKSUFOQkRuWkIvQWR4UVlBSWFpZ0NBRUVJRUFnaENpQUJRUVoyUWZ3SGNVR0FDR29vQWdCQkVCQUlJUXNnQkVIL0FYRkJBblJCZ0FocUtBSUFRUmdRQ0NFT0lBRkJEblpCL0FkeFFZQUlhaWdDQUVFSUVBZ2hEeUFFUVFaMlFmd0hjVUdBQ0dvb0FnQkJFQkFJSVJBZ0JVSC9BWEZCQW5SQmdBaHFLQUlBUVJnUUNDRVJJQUFvQW5RZ0NTQU5JQXdnQkVFV2RrSDhCM0ZCZ0FocUtBSUFjM056Y3lJRVFRNTJRZndIY1VHQUNHb29BZ0JCQ0JBSUlRa2dBQ2dDZUNBT0lBc2dDaUFGUVJaMlFmd0hjVUdBQ0dvb0FnQnpjM056SWdWQkJuWkIvQWR4UVlBSWFpZ0NBRUVRRUFnaENpQUFLQUo4SUJFZ0VDQVBJQU5CRm5aQi9BZHhRWUFJYWlnQ0FITnpjM01pQTBIL0FYRkJBblJCZ0FocUtBSUFRUmdRQ0NFTElBVkJEblpCL0FkeFFZQUlhaWdDQUVFSUVBZ2hEQ0FEUVFaMlFmd0hjVUdBQ0dvb0FnQkJFQkFJSVEwZ0FDZ0NjQ0FISUFnZ0JpQUJRUloyUWZ3SGNVR0FDR29vQWdCemMzTnpJZ0ZCL3dGeFFRSjBRWUFJYWlnQ0FFRVlFQWdoQmlBRFFRNTJRZndIY1VHQUNHb29BZ0JCQ0JBSUlRY2dBVUVHZGtIOEIzRkJnQWhxS0FJQVFSQVFDQ0VPSUFSQi93RnhRUUowUVlBSWFpZ0NBRUVZRUFnaER5QUJRUTUyUWZ3SGNVR0FDR29vQWdCQkNCQUlJUkFnQkVFR2RrSDhCM0ZCZ0FocUtBSUFRUkFRQ0NFUklBVkIvd0Z4UVFKMFFZQUlhaWdDQUVFWUVBZ2hFeUFBS0FLRUFTQUdJQTBnRENBRVFSWjJRZndIY1VHQUNHb29BZ0J6YzNOeklnWkJEblpCL0FkeFFZQUlhaWdDQUVFSUVBZ2dBQ2dDZ0FFZ0N5QUtJQWtnQVVFV2RrSDhCM0ZCZ0FocUtBSUFjM056Y3lJSVFSWjJRZndIY1VHQUNHb29BZ0J6SUFBb0FvZ0JJQThnRGlBSElBVkJGblpCL0FkeFFZQUlhaWdDQUhOemMzTWlCMEVHZGtIOEIzRkJnQWhxS0FJQVFSQVFDSE1nQUNnQ2pBRWdFeUFSSUJBZ0EwRVdka0g4QjNGQmdBaHFLQUlBYzNOemN5SURRZjhCY1VFQ2RFR0FDR29vQWdCQkdCQUljeUFBS0FLUUFYTWhBU0FIUVE1MlFmd0hjVUdBQ0dvb0FnQkJDQkFJSUFaQkZuWkIvQWR4UVlBSWFpZ0NBSE1nQTBFR2RrSDhCM0ZCZ0FocUtBSUFRUkFRQ0hNZ0NFSC9BWEZCQW5SQmdBaHFLQUlBUVJnUUNITWdBQ2dDbEFGeklRUWdBMEVPZGtIOEIzRkJnQWhxS0FJQVFRZ1FDQ0FIUVJaMlFmd0hjVUdBQ0dvb0FnQnpJQWhCQm5aQi9BZHhRWUFJYWlnQ0FFRVFFQWh6SUFaQi93RnhRUUowUVlBSWFpZ0NBRUVZRUFoeklBQW9BcGdCY3lFRkFuOGdDRUVPZGtIOEIzRkJnQWhxS0FJQVFRZ1FDQ0FEUVJaMlFmd0hjVUdBQ0dvb0FnQnpJQVpCQm5aQi9BZHhRWUFJYWlnQ0FFRVFFQWh6SUFkQi93RnhRUUowUVlBSWFpZ0NBRUVZRUFoeklBQW9BcHdCY3lJRElCSkJDMGdOQUJvZ0JFRU9ka0g4QjNGQmdBaHFLQUlBUVFnUUNDRUlJQVZCQm5aQi9BZHhRWUFJYWlnQ0FFRVFFQWdoQnlBRFFmOEJjVUVDZEVHQUNHb29BZ0JCR0JBSUlRa2dCVUVPZGtIOEIzRkJnQWhxS0FJQVFRZ1FDQ0VHSUFOQkJuWkIvQWR4UVlBSWFpZ0NBRUVRRUFnaENpQUJRZjhCY1VFQ2RFR0FDR29vQWdCQkdCQUlJUXNnQTBFT2RrSDhCM0ZCZ0FocUtBSUFRUWdRQ0NFTUlBRkJCblpCL0FkeFFZQUlhaWdDQUVFUUVBZ2hEU0FFUWY4QmNVRUNkRUdBQ0dvb0FnQkJHQkFJSVE0Z0FVRU9ka0g4QjNGQmdBaHFLQUlBUVFnUUNDRVBJQVJCQm5aQi9BZHhRWUFJYWlnQ0FFRVFFQWdoRUNBRlFmOEJjVUVDZEVHQUNHb29BZ0JCR0JBSUlSRWdBQ2dDcEFFZ0N5QUtJQVlnQkVFV2RrSDhCM0ZCZ0FocUtBSUFjM056Y3lJR1FRNTJRZndIY1VHQUNHb29BZ0JCQ0JBSUlBQW9BcUFCSUFrZ0J5QUlJQUZCRm5aQi9BZHhRWUFJYWlnQ0FITnpjM01pQ0VFV2RrSDhCM0ZCZ0FocUtBSUFjeUFBS0FLb0FTQU9JQTBnRENBRlFSWjJRZndIY1VHQUNHb29BZ0J6YzNOeklnZEJCblpCL0FkeFFZQUlhaWdDQUVFUUVBaHpJQUFvQXF3QklCRWdFQ0FQSUFOQkZuWkIvQWR4UVlBSWFpZ0NBSE56YzNNaUEwSC9BWEZCQW5SQmdBaHFLQUlBUVJnUUNITWdBQ2dDc0FGeklRRWdCMEVPZGtIOEIzRkJnQWhxS0FJQVFRZ1FDQ0FHUVJaMlFmd0hjVUdBQ0dvb0FnQnpJQU5CQm5aQi9BZHhRWUFJYWlnQ0FFRVFFQWh6SUFoQi93RnhRUUowUVlBSWFpZ0NBRUVZRUFoeklBQW9BclFCY3lFRUlBTkJEblpCL0FkeFFZQUlhaWdDQUVFSUVBZ2dCMEVXZGtIOEIzRkJnQWhxS0FJQWN5QUlRUVoyUWZ3SGNVR0FDR29vQWdCQkVCQUljeUFHUWY4QmNVRUNkRUdBQ0dvb0FnQkJHQkFJY3lBQUtBSzRBWE1oQlNBSVFRNTJRZndIY1VHQUNHb29BZ0JCQ0JBSUlBTkJGblpCL0FkeFFZQUlhaWdDQUhNZ0JrRUdka0g4QjNGQmdBaHFLQUlBUVJBUUNITWdCMEgvQVhGQkFuUkJnQWhxS0FJQVFSZ1FDSE1nQUNnQ3ZBRnpJZ01nRWtFTlNBMEFHaUFFUVE1MlFmd0hjVUdBQ0dvb0FnQkJDQkFJSVFnZ0JVRUdka0g4QjNGQmdBaHFLQUlBUVJBUUNDRUhJQU5CL3dGeFFRSjBRWUFJYWlnQ0FFRVlFQWdoQ1NBRlFRNTJRZndIY1VHQUNHb29BZ0JCQ0JBSUlRWWdBMEVHZGtIOEIzRkJnQWhxS0FJQVFSQVFDQ0VLSUFGQi93RnhRUUowUVlBSWFpZ0NBRUVZRUFnaEN5QURRUTUyUWZ3SGNVR0FDR29vQWdCQkNCQUlJUXdnQVVFR2RrSDhCM0ZCZ0FocUtBSUFRUkFRQ0NFTklBUkIvd0Z4UVFKMFFZQUlhaWdDQUVFWUVBZ2hEaUFCUVE1MlFmd0hjVUdBQ0dvb0FnQkJDQkFJSVE4Z0JFRUdka0g4QjNGQmdBaHFLQUlBUVJBUUNDRVFJQVZCL3dGeFFRSjBRWUFJYWlnQ0FFRVlFQWdoRVNBQUtBTEVBU0FMSUFvZ0JpQUVRUloyUWZ3SGNVR0FDR29vQWdCemMzTnpJZ1pCRG5aQi9BZHhRWUFJYWlnQ0FFRUlFQWdnQUNnQ3dBRWdDU0FISUFnZ0FVRVdka0g4QjNGQmdBaHFLQUlBYzNOemN5SUlRUloyUWZ3SGNVR0FDR29vQWdCeklBQW9Bc2dCSUE0Z0RTQU1JQVZCRm5aQi9BZHhRWUFJYWlnQ0FITnpjM01pQjBFR2RrSDhCM0ZCZ0FocUtBSUFRUkFRQ0hNZ0FDZ0N6QUVnRVNBUUlBOGdBMEVXZGtIOEIzRkJnQWhxS0FJQWMzTnpjeUlEUWY4QmNVRUNkRUdBQ0dvb0FnQkJHQkFJY3lBQUtBTFFBWE1oQVNBSFFRNTJRZndIY1VHQUNHb29BZ0JCQ0JBSUlBWkJGblpCL0FkeFFZQUlhaWdDQUhNZ0EwRUdka0g4QjNGQmdBaHFLQUlBUVJBUUNITWdDRUgvQVhGQkFuUkJnQWhxS0FJQVFSZ1FDSE1nQUNnQzFBRnpJUVFnQTBFT2RrSDhCM0ZCZ0FocUtBSUFRUWdRQ0NBSFFSWjJRZndIY1VHQUNHb29BZ0J6SUFoQkJuWkIvQWR4UVlBSWFpZ0NBRUVRRUFoeklBWkIvd0Z4UVFKMFFZQUlhaWdDQUVFWUVBaHpJQUFvQXRnQmN5RUZJQWhCRG5aQi9BZHhRWUFJYWlnQ0FFRUlFQWdnQTBFV2RrSDhCM0ZCZ0FocUtBSUFjeUFHUVFaMlFmd0hjVUdBQ0dvb0FnQkJFQkFJY3lBSFFmOEJjVUVDZEVHQUNHb29BZ0JCR0JBSWN5QUFLQUxjQVhNTElRTWdBaUFBSUJKQkJIUnFJZ0FvQWdBZ0EwSC9BWEZCQW5SQmdBaHFMUUFCSUFGQkZuWkIvQWR4UVlBSWFpZ0NBRUVJZEVHQWdJQjRjU0FFUVE1MlFmd0hjVUdBQ0dvdEFBSkJFSFJ5SUFWQkJuWkIvQWR4UVlBSWFpMEFBVUVJZEhKeWN5SVNRUmgwSUJKQkNIUkJnSUQ4QjNGeUlCSkJDSFpCZ1A0RGNTQVNRUmgyY25JMkFBQWdBaUFBS0FJRUlBRkIvd0Z4UVFKMFFZQUlhaTBBQVNBRVFSWjJRZndIY1VHQUNHb29BZ0JCQ0hSQmdJQ0FlSEVnQlVFT2RrSDhCM0ZCZ0FocUxRQUNRUkIwY2lBRFFRWjJRZndIY1VHQUNHb3RBQUZCQ0hSeWNuTWlFa0VZZENBU1FRaDBRWUNBL0FkeGNpQVNRUWgyUVlEK0EzRWdFa0VZZG5KeU5nQUVJQUlnQUNnQ0NDQUVRZjhCY1VFQ2RFR0FDR290QUFFZ0JVRVdka0g4QjNGQmdBaHFLQUlBUVFoMFFZQ0FnSGh4SUFOQkRuWkIvQWR4UVlBSWFpMEFBa0VRZEhJZ0FVRUdka0g4QjNGQmdBaHFMUUFCUVFoMGNuSnpJaEpCR0hRZ0VrRUlkRUdBZ1B3SGNYSWdFa0VJZGtHQS9nTnhJQkpCR0haeWNqWUFDQ0FDSUFBb0Fnd2dCVUgvQVhGQkFuUkJnQWhxTFFBQklBTkJGblpCL0FkeFFZQUlhaWdDQUVFSWRFR0FnSUI0Y1NBQlFRNTJRZndIY1VHQUNHb3RBQUpCRUhSeUlBUkJCblpCL0FkeFFZQUlhaTBBQVVFSWRISnljeUlBUVJoMElBQkJDSFJCZ0lEOEIzRnlJQUJCQ0haQmdQNERjU0FBUVJoMmNuSTJBQXdMRGdBZ0FDQUJLQUlBTmdJQUlBQUxCd0FnQUJCSEdnc0lBRUgvLy8vL0J3c0ZBRUgvQUFzREFBRUxLd0FDUUNBQUlBRkdEUUFEUUNBQUlBRkJCR3NpQVU4TkFTQUFJQUVRZFNBQVFRUnFJUUFNQUFzQUN3dlVBd0VJZnlNQVFSQnJJZ29rQUNBR0VEc2hDeUFLSUFZUWpBRWlCaEEzQWtBZ0NoQkpCRUFnQ3lBQUlBSWdBeEJqSUFVZ0F5QUNJQUJyUVFKMGFpSUdOZ0lBREFFTElBVWdBellDQUFKQUFrQWdBQ0lJTFFBQUlnZEJLMnNPQXdBQkFBRUxJQXNnQjBFWWRFRVlkUkE5SVFnZ0JTQUZLQUlBSWdkQkJHbzJBZ0FnQnlBSU5nSUFJQUJCQVdvaENBc0NRQ0FDSUFoclFRSklEUUFnQ0MwQUFFRXdSdzBBSUFndEFBRkJJSEpCK0FCSERRQWdDMEV3RUQwaEJ5QUZJQVVvQWdBaUNVRUVhallDQUNBSklBYzJBZ0FnQ3lBSUxBQUJFRDBoQnlBRklBVW9BZ0FpQ1VFRWFqWUNBQ0FKSUFjMkFnQWdDRUVDYWlFSUN5QUlJQUlRZVVFQUlRa2dCaEE0SVF4QkFDRUhJQWdoQmdOL0lBSWdCazBFZnlBRElBZ2dBR3RCQW5ScUlBVW9BZ0FRclFFZ0JTZ0NBQVVDUUNBS0lBY1FDeTBBQUVVTkFDQUpJQW9nQnhBTExBQUFSdzBBSUFVZ0JTZ0NBQ0lKUVFScU5nSUFJQWtnRERZQ0FDQUhJQWNnQ2hBSlFRRnJTV29oQjBFQUlRa0xJQXNnQml3QUFCQTlJUTBnQlNBRktBSUFJZzVCQkdvMkFnQWdEaUFOTmdJQUlBWkJBV29oQmlBSlFRRnFJUWtNQVFzTElRWUxJQVFnQmlBRElBRWdBR3RCQW5ScUlBRWdBa1liTmdJQUlBb1FDaG9nQ2tFUWFpUUFDOUFCQVFKL0lBSkJnQkJ4QkVBZ0FFRXJPZ0FBSUFCQkFXb2hBQXNnQWtHQUNIRUVRQ0FBUVNNNkFBQWdBRUVCYWlFQUN5QUNRWVFDY1NJRFFZUUNSd1JBSUFCQnJ0UUFPd0FBSUFCQkFtb2hBQXNnQWtHQWdBRnhJUUlEUUNBQkxRQUFJZ1FFUUNBQUlBUTZBQUFnQUVFQmFpRUFJQUZCQVdvaEFRd0JDd3NnQUFKL0FrQWdBMEdBQWtjRVFDQURRUVJIRFFGQnhnQkI1Z0FnQWhzTUFndEJ4UUJCNVFBZ0Foc01BUXRCd1FCQjRRQWdBaHNnQTBHRUFrWU5BQnBCeHdCQjV3QWdBaHNMT2dBQUlBTkJoQUpIQzhvREFRaC9Jd0JCRUdzaUNpUUFJQVlRTWlFTElBb2dCaENPQVNJR0VEY0NRQ0FLRUVrRVFDQUxJQUFnQWlBREVHOGdCU0FESUFJZ0FHdHFJZ1kyQWdBTUFRc2dCU0FETmdJQUFrQUNRQ0FBSWdndEFBQWlCMEVyYXc0REFBRUFBUXNnQ3lBSFFSaDBRUmgxRUNraENDQUZJQVVvQWdBaUIwRUJhallDQUNBSElBZzZBQUFnQUVFQmFpRUlDd0pBSUFJZ0NHdEJBa2dOQUNBSUxRQUFRVEJIRFFBZ0NDMEFBVUVnY2tINEFFY05BQ0FMUVRBUUtTRUhJQVVnQlNnQ0FDSUpRUUZxTmdJQUlBa2dCem9BQUNBTElBZ3NBQUVRS1NFSElBVWdCU2dDQUNJSlFRRnFOZ0lBSUFrZ0J6b0FBQ0FJUVFKcUlRZ0xJQWdnQWhCNVFRQWhDU0FHRURnaERFRUFJUWNnQ0NFR0EzOGdBaUFHVFFSL0lBTWdDQ0FBYTJvZ0JTZ0NBQkI1SUFVb0FnQUZBa0FnQ2lBSEVBc3RBQUJGRFFBZ0NTQUtJQWNRQ3l3QUFFY05BQ0FGSUFVb0FnQWlDVUVCYWpZQ0FDQUpJQXc2QUFBZ0J5QUhJQW9RQ1VFQmEwbHFJUWRCQUNFSkN5QUxJQVlzQUFBUUtTRU5JQVVnQlNnQ0FDSU9RUUZxTmdJQUlBNGdEVG9BQUNBR1FRRnFJUVlnQ1VFQmFpRUpEQUVMQ3lFR0N5QUVJQVlnQXlBQklBQnJhaUFCSUFKR0d6WUNBQ0FLRUFvYUlBcEJFR29rQUFzTUFDQUFFQTBnQVVFQ2RHb0xxZ1FCQzM4akFFR0FBV3NpQ2lRQUlBb2dBVFlDZUNBQ0lBTVF6UUloQ0NBS1FUVTJBaEFnQ2tFSWFrRUFJQXBCRUdvaUNSQWVJUkFDUUNBSVFlVUFUd1JBSUFnUUdTSUpSUTBCSUJBZ0NSQW5DeUFKSVFjZ0FpRUJBMEFnQVNBRFJnUkFBMEFDUUNBQUlBcEIrQUJxRURaQkFDQUlHMFVFUUNBQUlBcEIrQUJxRUNnRVFDQUZJQVVvQWdCQkFuSTJBZ0FMREFFTElBQVFJU0VPSUFaRkJFQWdCQ0FPRUNraERnc2dERUVCYWlFTlFRQWhEeUFKSVFjZ0FpRUJBMEFnQVNBRFJnUkFJQTBoRENBUFJRMERJQUFRSlJvZ0NTRUhJQUloQVNBSUlBdHFRUUpKRFFNRFFDQUJJQU5HQkVBTUJRVUNRQ0FITFFBQVFRSkhEUUFnQVJBSklBMUdEUUFnQjBFQU9nQUFJQXRCQVdzaEN3c2dCMEVCYWlFSElBRkJER29oQVF3QkN3QUxBQVVDUUNBSExRQUFRUUZIRFFBZ0FTQU1FTEVCS0FJQUlSRUNRQ0FHQkg4Z0VRVWdCQ0FSRUNrTElBNUdCRUJCQVNFUElBRVFDU0FOUncwQ0lBZEJBam9BQUNBTFFRRnFJUXNNQVFzZ0IwRUFPZ0FBQ3lBSVFRRnJJUWdMSUFkQkFXb2hCeUFCUVF4cUlRRU1BUXNBQ3dBTEN3SkFBa0FEUUNBQ0lBTkdEUUVnQ1MwQUFFRUNSd1JBSUFsQkFXb2hDU0FDUVF4cUlRSU1BUXNMSUFJaEF3d0JDeUFGSUFVb0FnQkJCSEkyQWdBTElCQVFIU0FLUVlBQmFpUUFJQU1QQlFKQUlBRVFTVVVFUUNBSFFRRTZBQUFNQVFzZ0IwRUNPZ0FBSUF0QkFXb2hDeUFJUVFGcklRZ0xJQWRCQVdvaEJ5QUJRUXhxSVFFTUFRc0FDd0FMRUJjQUN4RUFJQUFnQVNBQUtBSUFLQUlNRVFJQUM3TUVBUXQvSXdCQmdBRnJJZ29rQUNBS0lBRTJBbmdnQWlBREVNMENJUWdnQ2tFMU5nSVFJQXBCQ0dwQkFDQUtRUkJxSWdrUUhpRVFBa0FnQ0VIbEFFOEVRQ0FJRUJraUNVVU5BU0FRSUFrUUp3c2dDU0VISUFJaEFRTkFJQUVnQTBZRVFBTkFBa0FnQUNBS1FmZ0FhaEF4UVFBZ0NCdEZCRUFnQUNBS1FmZ0FhaEFtQkVBZ0JTQUZLQUlBUVFKeU5nSUFDd3dCQ3lBQUVCOGhEaUFHUlFSQUlBUWdEaEN6QVNFT0N5QU1RUUZxSVExQkFDRVBJQWtoQnlBQ0lRRURRQ0FCSUFOR0JFQWdEU0VNSUE5RkRRTWdBQkFpR2lBSklRY2dBaUVCSUFnZ0MycEJBa2tOQXdOQUlBRWdBMFlFUUF3RkJRSkFJQWN0QUFCQkFrY05BQ0FCRUFrZ0RVWU5BQ0FIUVFBNkFBQWdDMEVCYXlFTEN5QUhRUUZxSVFjZ0FVRU1haUVCREFFTEFBc0FCUUpBSUFjdEFBQkJBVWNOQUNBQklBd1FDeXdBQUNFUkFrQWdEa0gvQVhFZ0JnUi9JQkVGSUFRZ0VSQ3pBUXRCL3dGeFJnUkFRUUVoRHlBQkVBa2dEVWNOQWlBSFFRSTZBQUFnQzBFQmFpRUxEQUVMSUFkQkFEb0FBQXNnQ0VFQmF5RUlDeUFIUVFGcUlRY2dBVUVNYWlFQkRBRUxBQXNBQ3dzQ1FBSkFBMEFnQWlBRFJnMEJJQWt0QUFCQkFrY0VRQ0FKUVFGcUlRa2dBa0VNYWlFQ0RBRUxDeUFDSVFNTUFRc2dCU0FGS0FJQVFRUnlOZ0lBQ3lBUUVCMGdDa0dBQVdva0FDQUREd1VDUUNBQkVFbEZCRUFnQjBFQk9nQUFEQUVMSUFkQkFqb0FBQ0FMUVFGcUlRc2dDRUVCYXlFSUN5QUhRUUZxSVFjZ0FVRU1haUVCREFFTEFBc0FDeEFYQUF2bEF3RURmeU1BUWFBQmF5SUVKQUJCZnlFRklBUWdBVUVCYTBFQUlBRWJOZ0tVQVNBRUlBQWdCRUdlQVdvZ0FSc2lCallDa0FFZ0JFRUFRWkFCRUVZaUFFRi9OZ0pNSUFCQk5EWUNKQ0FBUVg4MkFsQWdBQ0FBUVo4QmFqWUNMQ0FBSUFCQmtBRnFOZ0pVQWtBZ0FVRUFTQVJBUWRTQkFVRTlOZ0lBREFFTElBWkJBRG9BQUVFQUlRUWpBRUhRQVdzaUFTUUFJQUVnQXpZQ3pBRWdBVUdnQVdvaUEwRUFRU2dRUmhvZ0FTQUJLQUxNQVRZQ3lBRUNRRUVBSUFJZ0FVSElBV29nQVVIUUFHb2dBeERjQWtFQVNBUkFRWDhoQWd3QkN5QUFLQUpNUVFCT0lRVWdBQ2dDQUNFRElBQW9Ba2hCQUV3RVFDQUFJQU5CWDNFMkFnQUxBbjhDUUFKQUlBQW9BakJGQkVBZ0FFSFFBRFlDTUNBQVFRQTJBaHdnQUVJQU53TVFJQUFvQWl3aEJDQUFJQUUyQWl3TUFRc2dBQ2dDRUEwQkMwRi9JQUFRNkFFTkFSb0xJQUFnQWlBQlFjZ0JhaUFCUWRBQWFpQUJRYUFCYWhEY0Fnc2hBaUFFQkVBZ0FFRUFRUUFnQUNnQ0pCRUVBQm9nQUVFQU5nSXdJQUFnQkRZQ0xDQUFRUUEyQWh3Z0FFRUFOZ0lRSUFBb0FoUWhCQ0FBUVFBMkFoUWdBa0YvSUFRYklRSUxJQUFnQUNnQ0FDSUVJQU5CSUhGeU5nSUFRWDhnQWlBRVFTQnhHeUVDSUFWRkRRQUxJQUZCMEFGcUpBQWdBaUVGQ3lBQVFhQUJhaVFBSUFVTFNnRUNmd0pBSUFBdEFBQWlBa1VnQWlBQkxRQUFJZ05IY2cwQUEwQWdBUzBBQVNFRElBQXRBQUVpQWtVTkFTQUJRUUZxSVFFZ0FFRUJhaUVBSUFJZ0EwWU5BQXNMSUFJZ0Eyc0w1QUlCQm44akFFRVFheUlISkFBZ0EwSHdoZ0VnQXhzaUJTZ0NBQ0VEQWtBQ1FBSkFJQUZGQkVBZ0F3MEJEQU1MUVg0aEJDQUNSUTBDSUFBZ0IwRU1haUFBR3lFR0FrQWdBd1JBSUFJaEFBd0JDeUFCTFFBQUlnQkJHSFJCR0hVaUEwRUFUZ1JBSUFZZ0FEWUNBQ0FEUVFCSElRUU1CQXNnQVN3QUFDRUFRZGlHQVNnQ0FDZ0NBRVVFUUNBR0lBQkIvNzhEY1RZQ0FFRUJJUVFNQkFzZ0FFSC9BWEZCd2dGcklnQkJNa3NOQVNBQVFRSjBRY0FyYWlnQ0FDRURJQUpCQVdzaUFFVU5BaUFCUVFGcUlRRUxJQUV0QUFBaUNFRURkaUlKUVJCcklBTkJHblVnQ1dweVFRZExEUUFEUUNBQVFRRnJJUUFnQ0VHQUFXc2dBMEVHZEhJaUEwRUFUZ1JBSUFWQkFEWUNBQ0FHSUFNMkFnQWdBaUFBYXlFRURBUUxJQUJGRFFJZ0FVRUJhaUlCTFFBQUlnaEJ3QUZ4UVlBQlJnMEFDd3NnQlVFQU5nSUFRZFNCQVVFWk5nSUFRWDhoQkF3QkN5QUZJQU0yQWdBTElBZEJFR29rQUNBRUN3d0FJQUJCREdvUWZob2dBQXNJQUNBQUtBSVFSUXNvQVFKL0l3QkJFR3NpQWlRQUlBRW9BZ0FnQUNnQ0FFZ2hBeUFDUVJCcUpBQWdBU0FBSUFNYkN4QUFJQUFnQVRjRENDQUFRZ0EzQXdBTEV3QWdBRUc4SHpZQ0FDQUFRUVJxRUE0Z0FBc0VBRUVCQzJVQkEzOGdBa1VFUUVFQUR3c0NRQ0FBTFFBQUlnTkZEUUFEUUFKQUlBRXRBQUFpQlVVTkFDQUNRUUZySWdKRklBTWdCVWR5RFFBZ0FVRUJhaUVCSUFBdEFBRWhBeUFBUVFGcUlRQWdBdzBCREFJTEN5QURJUVFMSUFSQi93RnhJQUV0QUFCckM2NEJBUVIvSXdCQkVHc2lCU1FBSUFFaEJDQUNRUkJQQkVBZ0FrRUVkaUVIQTBBZ0F5QUVFSjBCSUFNZ0FDQUZFTElDSUFNZ0JTa0RDRGNBQ0NBRElBVXBBd0EzQUFBZ0JFRVFhaUVFSUFaQkFXb2lCaUFIUncwQUN3c2dCQ0FCSUFKcUlnRkpCRUFnQlNBRUlBRWdCR3NpQWhCQ0lnRWdBbXBCQUVFUUlBSnJFRVlhSUFNZ0FSQ2RBU0FESUFBZ0FSQ3lBaUFESUFFcEF3ZzNBQWdnQXlBQktRTUFOd0FBQ3lBRlFSQnFKQUFMR2dBZ0FDQUJJQUVvQWdCQkRHc29BZ0JxS0FJWU5nSUFJQUFMS3dFQmZ5QUFRZnovQURZQ0FBSkFJQUFvQWdSQkRHc2lBVUVJYWhDU0FrRUFUZzBBSUFFUUVBc2dBQXRMQVFKL0lBQW9BZ1FpQjBFSWRTRUdJQWRCQVhFRVFDQURLQUlBSUFZUXhRRWhCZ3NnQUNnQ0FDSUFJQUVnQWlBRElBWnFJQVJCQWlBSFFRSnhHeUFGSUFBb0FnQW9BaFFSQ1FBTElBQUNRQ0FBS0FJRUlBRkhEUUFnQUNnQ0hFRUJSZzBBSUFBZ0FqWUNIQXNMbWdFQUlBQkJBVG9BTlFKQUlBQW9BZ1FnQWtjTkFDQUFRUUU2QURRQ1FDQUFLQUlRSWdKRkJFQWdBRUVCTmdJa0lBQWdBellDR0NBQUlBRTJBaEFnQUNnQ01FRUJSdzBDSUFOQkFVWU5BUXdDQ3lBQklBSkdCRUFnQUNnQ0dDSUNRUUpHQkVBZ0FDQUROZ0lZSUFNaEFnc2dBQ2dDTUVFQlJ3MENJQUpCQVVZTkFRd0NDeUFBSUFBb0FpUkJBV28yQWlRTElBQkJBVG9BTmdzTENnQWdBQ0FCYWlnQ0FBdGRBUUYvSUFBb0FoQWlBMFVFUUNBQVFRRTJBaVFnQUNBQ05nSVlJQUFnQVRZQ0VBOExBa0FnQVNBRFJnUkFJQUFvQWhoQkFrY05BU0FBSUFJMkFoZ1BDeUFBUVFFNkFEWWdBRUVDTmdJWUlBQWdBQ2dDSkVFQmFqWUNKQXNMdVFFQkEzOGpBRUVRYXlJREpBQWdBeUFCTmdJTUFrQUNRQUpBQWtBZ0FCQTFCRUFnQUJCOUlRRWdBQ2dDQkNJRUlBRkJBV3NpQWtZTkFRd0RDMEVCSVFSQkFTRUNJQUF0QUFzaUFVRUJSdzBCQ3lBQUlBSkJBU0FDSUFJUTh3RWdCQ0VCSUFBUU5RMEJDeUFBSVFJZ0FDQUJRUUZxRURvTUFRc2dBQ2dDQUNFQ0lBQWdCRUVCYWhBNUlBUWhBUXNnQWlBQlFRSjBhaUlBSUFOQkRHb1FNeUFEUVFBMkFnZ2dBRUVFYWlBRFFRaHFFRE1nQTBFUWFpUUFDNjhCQVFOL0l3QkJFR3NpQlNRQUlBSkJieUlHSUFGclRRUkFJQUFRRFNFSEFuOGdBU0FHUVFGMlFSQnJTUVJBSUFVZ0FVRUJkRFlDQ0NBRklBRWdBbW8yQWd3Z0JVRU1haUFGUVFocUVIWW9BZ0FRa1FFTUFRc2dCa0VCYXd0QkFXb2lCaEJmSVFJZ0JBUkFJQUlnQnlBRUVGVUxJQU1nQkdzaUF3UkFJQUlnQkdvZ0JDQUhhaUFERUZVTElBRkJDa2NFUUNBSEVCQUxJQUFnQWhCTklBQWdCaEJNSUFWQkVHb2tBQThMRUJjQUN3TUFBUXNYQUNBQUtBSUlFQlpIQkVBZ0FDZ0NDQkRVQWdzZ0FBczRBUUYvSXdCQkVHc2lBeVFBSUFNZ0FqWUNEQ0FEUVFocUlBTkJER29RVWlFQ0lBQWdBUkRhQVNFQUlBSVFVU0FEUVJCcUpBQWdBQXNMQUNBRUlBSTJBZ0JCQXdzSkFDQUFRUUEyQWdBTER3QWdBQ0FBS0FJRVFRRnFOZ0lFQ3hrQkFYOUJBU0VCSUFBUU5RUi9JQUFRZlVFQmF3VWdBUXNMR2dBZ0FFRzBJVFlDQUNBQVFTQnFFQW9hSUFBUXZBRWFJQUFMa3dFQkJIOGpBRUVRYXlJREpBQUNRQ0FCRURWRkJFQWdBQ0FCS0FJSU5nSUlJQUFnQVNrQ0FEY0NBQXdCQ3lBQktBSUFJUVFDUUFKQUFrQWdBU2dDQkNJQ1FRcE5CRUFnQUNFQklBQWdBaEE2REFFTElBSkJiMHNOQVNBQUlBSVFrUUZCQVdvaUJSQmZJZ0VRVFNBQUlBVVFUQ0FBSUFJUU9Rc2dBU0FFSUFKQkFXb1FWUXdCQ3hBWEFBc0xJQU5CRUdva0FBc3hBQ0FDS0FJQUlRSURRQUpBSUFBZ0FVY0VmeUFBS0FJQUlBSkhEUUVnQUFVZ0FRc1BDeUFBUVFScUlRQU1BQXNBQy9rREFRRi9Jd0JCRUdzaURDUUFJQXdnQURZQ0RBSkFBa0FnQUNBRlJnUkFJQUV0QUFCRkRRRkJBQ0VBSUFGQkFEb0FBQ0FFSUFRb0FnQWlBVUVCYWpZQ0FDQUJRUzQ2QUFBZ0J4QUpSUTBDSUFrb0FnQWlBU0FJYTBHZkFVb05BaUFLS0FJQUlRSWdDU0FCUVFScU5nSUFJQUVnQWpZQ0FBd0NDd0pBSUFBZ0JrY05BQ0FIRUFsRkRRQWdBUzBBQUVVTkFVRUFJUUFnQ1NnQ0FDSUJJQWhyUVo4QlNnMENJQW9vQWdBaEFDQUpJQUZCQkdvMkFnQWdBU0FBTmdJQVFRQWhBQ0FLUVFBMkFnQU1BZ3RCZnlFQUlBc2dDMEdBQVdvZ0RFRU1haERTQVNBTGF5SUZRZndBU2cwQklBVkJBblZCNE5BQWFpMEFBQ0VHQWtBQ1FDQUZRWHR4SWdCQjJBQkhCRUFnQUVIZ0FFY05BU0FESUFRb0FnQWlBVWNFUUVGL0lRQWdBVUVCYXkwQUFFSGZBSEVnQWkwQUFFSC9BSEZIRFFVTElBUWdBVUVCYWpZQ0FDQUJJQVk2QUFCQkFDRUFEQVFMSUFKQjBBQTZBQUFNQVFzZ0Fpd0FBQ0lBSUFaQjN3QnhSdzBBSUFJZ0FFR0FBWEk2QUFBZ0FTMEFBRVVOQUNBQlFRQTZBQUFnQnhBSlJRMEFJQWtvQWdBaUFDQUlhMEdmQVVvTkFDQUtLQUlBSVFFZ0NTQUFRUVJxTmdJQUlBQWdBVFlDQUFzZ0JDQUVLQUlBSWdCQkFXbzJBZ0FnQUNBR09nQUFRUUFoQUNBRlFkUUFTZzBCSUFvZ0NpZ0NBRUVCYWpZQ0FBd0JDMEYvSVFBTElBeEJFR29rQUNBQUMxQUJBbjhqQUVFUWF5SUdKQUFnQmtFSWFpSUZJQUVRRHlBRkVEdEI0TkFBUVlEUkFDQUNFR01nQXlBRkVJd0JJZ0VRU0RZQ0FDQUVJQUVRT0RZQ0FDQUFJQUVRTnlBRkVBNGdCa0VRYWlRQUN6RUFJQUl0QUFBaEFnTkFBa0FnQUNBQlJ3Ui9JQUF0QUFBZ0FrY05BU0FBQlNBQkN3OExJQUJCQVdvaEFBd0FDd0FMN1FNQkFYOGpBRUVRYXlJTUpBQWdEQ0FBT2dBUEFrQUNRQ0FBSUFWR0JFQWdBUzBBQUVVTkFVRUFJUUFnQVVFQU9nQUFJQVFnQkNnQ0FDSUJRUUZxTmdJQUlBRkJMam9BQUNBSEVBbEZEUUlnQ1NnQ0FDSUJJQWhyUVo4QlNnMENJQW9vQWdBaEFpQUpJQUZCQkdvMkFnQWdBU0FDTmdJQURBSUxBa0FnQUNBR1J3MEFJQWNRQ1VVTkFDQUJMUUFBUlEwQlFRQWhBQ0FKS0FJQUlnRWdDR3RCbndGS0RRSWdDaWdDQUNFQUlBa2dBVUVFYWpZQ0FDQUJJQUEyQWdCQkFDRUFJQXBCQURZQ0FBd0NDMEYvSVFBZ0N5QUxRU0JxSUF4QkQyb1ExUUVnQzJzaUJVRWZTZzBCSUFWQjROQUFhaTBBQUNFR0FrQUNRQUpBQWtBZ0JVRitjVUVXYXc0REFRSUFBZ3NnQXlBRUtBSUFJZ0ZIQkVBZ0FVRUJheTBBQUVIZkFIRWdBaTBBQUVIL0FIRkhEUVVMSUFRZ0FVRUJhallDQUNBQklBWTZBQUJCQUNFQURBUUxJQUpCMEFBNkFBQU1BUXNnQWl3QUFDSUFJQVpCM3dCeFJ3MEFJQUlnQUVHQUFYSTZBQUFnQVMwQUFFVU5BQ0FCUVFBNkFBQWdCeEFKUlEwQUlBa29BZ0FpQUNBSWEwR2ZBVW9OQUNBS0tBSUFJUUVnQ1NBQVFRUnFOZ0lBSUFBZ0FUWUNBQXNnQkNBRUtBSUFJZ0JCQVdvMkFnQWdBQ0FHT2dBQVFRQWhBQ0FGUVJWS0RRRWdDaUFLS0FJQVFRRnFOZ0lBREFFTFFYOGhBQXNnREVFUWFpUUFJQUFMVUFFQ2Z5TUFRUkJySWdZa0FDQUdRUWhxSWdVZ0FSQVBJQVVRTWtIZzBBQkJnTkVBSUFJUWJ5QURJQVVRamdFaUFSQklPZ0FBSUFRZ0FSQTRPZ0FBSUFBZ0FSQTNJQVVRRGlBR1FSQnFKQUFMZmdJQ2Z3SitJd0JCb0FGcklnUWtBQ0FFSUFFMkFqd2dCQ0FCTmdJVUlBUkJmellDR0NBRVFSQnFJZ1ZDQUJCVElBUWdCU0FEUVFFUTVnSWdCQ2tEQ0NFR0lBUXBBd0FoQnlBQ0JFQWdBaUFCSUFRb0FoUWdCQ2dDaUFGcUlBUW9BanhyYWpZQ0FBc2dBQ0FITndNQUlBQWdCamNEQ0NBRVFhQUJhaVFBQ3cwQUlBQWdBU0FDUW44UTBBSUxpUUlBQWtBZ0FBUi9JQUZCL3dCTkRRRUNRRUhZaGdFb0FnQW9BZ0JGQkVBZ0FVR0FmM0ZCZ0w4RFJnMEREQUVMSUFGQi93OU5CRUFnQUNBQlFUOXhRWUFCY2pvQUFTQUFJQUZCQm5aQndBRnlPZ0FBUVFJUEN5QUJRWUJBY1VHQXdBTkhJQUZCZ0xBRFQzRkZCRUFnQUNBQlFUOXhRWUFCY2pvQUFpQUFJQUZCREhaQjRBRnlPZ0FBSUFBZ0FVRUdka0UvY1VHQUFYSTZBQUZCQXc4TElBRkJnSUFFYTBILy96OU5CRUFnQUNBQlFUOXhRWUFCY2pvQUF5QUFJQUZCRW5aQjhBRnlPZ0FBSUFBZ0FVRUdka0UvY1VHQUFYSTZBQUlnQUNBQlFReDJRVDl4UVlBQmNqb0FBVUVFRHdzTFFkU0JBVUVaTmdJQVFYOEZRUUVMRHdzZ0FDQUJPZ0FBUVFFTHJ3SUJCSDhDZndKQUlBQWlBVUVEY1FSQUEwQWdBUzBBQUNJQ1JTQUNRVDFHY2cwQ0lBRkJBV29pQVVFRGNRMEFDd3NDUUNBQktBSUFJZ0pCZjNNZ0FrR0Jnb1FJYTNGQmdJR0NoSGh4RFFBRFFDQUNRYjM2OU9rRGN5SUNRWDl6SUFKQmdZS0VDR3R4UVlDQmdvUjRjUTBCSUFFb0FnUWhBaUFCUVFScUlRRWdBa0dCZ29RSWF5QUNRWDl6Y1VHQWdZS0VlSEZGRFFBTEN3TkFJQUVpQWkwQUFDSURCRUFnQWtFQmFpRUJJQU5CUFVjTkFRc0xJQUlNQVFzZ0FRc2dBR3NpQWtVRVFFRUFEd3NDUUNBQUlBSnFMUUFBRFFCQjlJWUJLQUlBSWdGRkRRQWdBU2dDQUNJRFJRMEFBMEFDUUNBQUlBTWdBaEMrQVVVRVFDQUJLQUlBSUFKcUlnTXRBQUJCUFVZTkFRc2dBU2dDQkNFRElBRkJCR29oQVNBRERRRU1BZ3NMSUFOQkFXb2hCQXNnQkF2aEFRRUNmeUFDUVFCSElRTUNRQUpBQWtBZ0FFRURjVVVnQWtWeURRQWdBVUgvQVhFaEJBTkFJQUF0QUFBZ0JFWU5BaUFDUVFGcklnSkJBRWNoQXlBQVFRRnFJZ0JCQTNGRkRRRWdBZzBBQ3dzZ0EwVU5BUXNDUUNBQUxRQUFJQUZCL3dGeFJpQUNRUVJKY2cwQUlBRkIvd0Z4UVlHQ2hBaHNJUU1EUUNBQUtBSUFJQU56SWdSQmYzTWdCRUdCZ29RSWEzRkJnSUdDaEhoeERRRWdBRUVFYWlFQUlBSkJCR3NpQWtFRFN3MEFDd3NnQWtVTkFDQUJRZjhCY1NFQkEwQWdBU0FBTFFBQVJnUkFJQUFQQ3lBQVFRRnFJUUFnQWtFQmF5SUNEUUFMQzBFQUM5Y0RBZ0orQW44akFFRWdheUlFSkFBQ1FDQUJRdi8vLy8vLy8vLy8vd0NESWdOQ2dJQ0FnSUNBd0lBOGZTQURRb0NBZ0lDQWdNRC93d0I5VkFSQUlBRkNCSVlnQUVJOGlJUWhBeUFBUXYvLy8vLy8vLy8vRDRNaUFFS0JnSUNBZ0lDQWdBaGFCRUFnQTBLQmdJQ0FnSUNBZ01BQWZDRUNEQUlMSUFOQ2dJQ0FnSUNBZ0lCQWZTRUNJQUJDZ0lDQWdJQ0FnSUFJaFVJQVVnMEJJQUlnQTBJQmczd2hBZ3dCQ3lBQVVDQURRb0NBZ0lDQWdNRC8vd0JVSUFOQ2dJQ0FnSUNBd1AvL0FGRWJSUVJBSUFGQ0JJWWdBRUk4aUlSQy8vLy8vLy8vL3dPRFFvQ0FnSUNBZ0lEOC93Q0VJUUlNQVF0Q2dJQ0FnSUNBZ1BqL0FDRUNJQU5DLy8vLy8vLy92Ly9EQUZZTkFFSUFJUUlnQTBJd2lLY2lCVUdSOXdCSkRRQWdCRUVRYWlBQUlBRkMvLy8vLy8vL1A0TkNnSUNBZ0lDQXdBQ0VJZ0lnQlVHQjl3QnJFQzhnQkNBQUlBSkJnZmdBSUFWckVId2dCQ2tEQ0VJRWhpQUVLUU1BSWdCQ1BJaUVJUUlnQkNrREVDQUVLUU1ZaEVJQVVxMGdBRUwvLy8vLy8vLy8vdytEaENJQVFvR0FnSUNBZ0lDQUNGb0VRQ0FDUWdGOElRSU1BUXNnQUVLQWdJQ0FnSUNBZ0FpRlFnQlNEUUFnQWtJQmd5QUNmQ0VDQ3lBRVFTQnFKQUFnQWlBQlFvQ0FnSUNBZ0lDQWdIK0RoTDhMUkFFQmZ5TUFRUkJySWdVa0FDQUZJQUVnQWlBRElBUkNnSUNBZ0lDQWdJQ0FmNFVRUENBRktRTUFJUUVnQUNBRktRTUlOd01JSUFBZ0FUY0RBQ0FGUVJCcUpBQUxxUUVCQVh4RUFBQUFBQUFBOEQ4aEFRSkFJQUJCZ0FoT0JFQkVBQUFBQUFBQTRIOGhBU0FBUWY4UFNBUkFJQUJCL3dkcklRQU1BZ3RFQUFBQUFBQUE4SDhoQVNBQVFmMFhJQUJCL1JkSUcwSCtEMnNoQUF3QkN5QUFRWUY0U2cwQVJBQUFBQUFBQUdBRElRRWdBRUc0Y0VvRVFDQUFRY2tIYWlFQURBRUxSQUFBQUFBQUFBQUFJUUVnQUVId2FDQUFRZkJvU2h0QmtnOXFJUUFMSUFFZ0FFSC9CMnF0UWpTR3Y2SUx4QUVDQVg4Q2ZrRi9JUU1DUUNBQVFnQlNJQUZDLy8vLy8vLy8vLy8vQUlNaUJFS0FnSUNBZ0lEQS8vOEFWaUFFUW9DQWdJQ0FnTUQvL3dCUkd3MEFRUUFnQWtMLy8vLy8vLy8vLy84QWd5SUZRb0NBZ0lDQWdNRC8vd0JXSUFWQ2dJQ0FnSUNBd1AvL0FGRWJEUUFnQUNBRUlBV0VoRkFFUUVFQUR3c2dBU0FDZzBJQVdRUkFRUUFnQVNBQ1V5QUJJQUpSR3cwQklBQWdBU0FDaFlSQ0FGSVBDeUFBUWdCU0lBRWdBbFVnQVNBQ1VSc05BQ0FBSUFFZ0FvV0VRZ0JTSVFNTElBTUxhUUVDZnlBQVFid29OZ0lBSUFBb0FpZ2hBUU5BSUFFRVFFRUFJQUFnQVVFQmF5SUJRUUowSWdJZ0FDZ0NKR29vQWdBZ0FDZ0NJQ0FDYWlnQ0FCRUhBQXdCQ3dzZ0FFRWNhaEFPSUFBb0FpQVFFQ0FBS0FJa0VCQWdBQ2dDTUJBUUlBQW9BandRRUNBQUN3a0FJQUFRaWdFUUVBc0pBQ0FBRUxnQkVCQUxEQUFnQUVFRWFoQitHaUFBQ3d3QUlBQkJDR29RZmhvZ0FBdi9Md0VSZnlNQVFTQnJJaE1rQUFKL1FmUUJFQmtpQ0FSL0FrQWdDQ0lHSUFBZ0FVRURkQkNKQXlJQVFRQk1EUUFnQUVFQ2RDRVBBMEFnQmlBUlFRSjBJZ2RxSWdFb0FnQWhDaUFCSUFZZ0QwRUNkQ0lRYWlJQktBSUFOZ0lBSUFFZ0NqWUNBQ0FHSUFkQkJISnFJZ0VvQWdBaENpQUJJQVlnRUVFRWNtb2lBU2dDQURZQ0FDQUJJQW8yQWdBZ0JpQUhRUWh5YWlJQktBSUFJUW9nQVNBR0lCQkJDSEpxSWdFb0FnQTJBZ0FnQVNBS05nSUFJQVlnQjBFTWNtb2lBU2dDQUNFS0lBRWdCaUFRUVF4eWFpSUJLQUlBTmdJQUlBRWdDallDQUNBUlFRUnFJaEVnRDBFRWF5SVBTQTBBQzBFQklSRWdBRUVCVEEwQUEwQWdCa0VRYWlFR1FRQWhEd05BSUFZZ0QwRUNkR29pQVNBQktBSUFJZ0ZCRG5aQi9BZHhRWUFJYWlnQ0FFRUdka0g4QjNGQmdCQnFLQUlBUVFnUUNDQUJRUloyUWZ3SGNVR0FDR29vQWdCQkJuWkIvQWR4UVlBUWFpZ0NBSE1nQVVFR2RrSDhCM0ZCZ0FocUtBSUFRUVoyUWZ3SGNVR0FFR29vQWdCQkVCQUljeUFCUWY4QmNVRUNkRUdBQ0dvb0FnQkJCblpCL0FkeFFZQVFhaWdDQUVFWUVBaHpOZ0lBSUE5QkFXb2lEMEVFUncwQUN5QVJRUUZxSWhFZ0FFY05BQXNMSUFCQkFFZ0VRQ0FJRUJCQkFBd0NDeUFJSUFBMkF2QUJJQWdGUVFBTEN5SUFCSDhnRXlBQ0tRQUFOd01RSUJNZ0Fpa0FDRGNER0NBRVFSQlBCRUFnQkVFRWRpRVZRUUFoQVFOQUlCTWdBeWtBQURjREFDQVRJQU1wQUFnM0F3Z2dBQ2dDOEFFaEZDQUFLQUlNSUFNb0FBd2lBa0VZZENBQ1FRaDBRWUNBL0FkeGNpQUNRUWgyUVlEK0EzRWdBa0VZZG5KeWN5SVBRUTUyUWZ3SGNVR0FFR29vQWdCQkNCQUlJUklnQUNnQ0NDQURLQUFJSWdKQkdIUWdBa0VJZEVHQWdQd0hjWElnQWtFSWRrR0EvZ054SUFKQkdIWnljbk1pRVVFR2RrSDhCM0ZCZ0JCcUtBSUFRUkFRQ0NFT0lBQW9BZ1FnQXlnQUJDSUNRUmgwSUFKQkNIUkJnSUQ4QjNGeUlBSkJDSFpCZ1A0RGNTQUNRUmgyY25KeklnZEIvd0Z4UVFKMFFZQVFhaWdDQUVFWUVBZ2hDU0FBS0FJQUlBTW9BQUFpQWtFWWRDQUNRUWgwUVlDQS9BZHhjaUFDUVFoMlFZRCtBM0VnQWtFWWRuSnljeUlMUVE1MlFmd0hjVUdBRUdvb0FnQkJDQkFJSVJBZ0QwRUdka0g4QjNGQmdCQnFLQUlBUVJBUUNDRUtJQkZCL3dGeFFRSjBRWUFRYWlnQ0FFRVlFQWdoQmlBSFFRNTJRZndIY1VHQUVHb29BZ0JCQ0JBSUlRZ2dDMEVHZGtIOEIzRkJnQkJxS0FJQVFSQVFDQ0VFSUE5Qi93RnhRUUowUVlBUWFpZ0NBRUVZRUFnaEFpQVJRUTUyUWZ3SGNVR0FFR29vQWdCQkNCQUlJQTlCRm5aQi9BZHhRWUFRYWlnQ0FITWdCMEVHZGtIOEIzRkJnQkJxS0FJQVFSQVFDSE1nQzBIL0FYRkJBblJCZ0JCcUtBSUFRUmdRQ0hNZ0FDZ0NISE1pREVFT2RrSDhCM0ZCZ0JCcUtBSUFRUWdRQ0NFUElBQW9BaGdnQWlBRUlBZ2dFVUVXZGtIOEIzRkJnQkJxS0FJQWMzTnpjeUlOUVFaMlFmd0hjVUdBRUdvb0FnQkJFQkFJSVJFZ0FDZ0NGQ0FHSUFvZ0VDQUhRUloyUWZ3SGNVR0FFR29vQWdCemMzTnpJZ1ZCL3dGeFFRSjBRWUFRYWlnQ0FFRVlFQWdoQnlBQUtBSVFJQWtnRGlBU0lBdEJGblpCL0FkeFFZQVFhaWdDQUhOemMzTWlDMEVPZGtIOEIzRkJnQkJxS0FJQVFRZ1FDQ0VRSUF4QkJuWkIvQWR4UVlBUWFpZ0NBRUVRRUFnaENpQU5RZjhCY1VFQ2RFR0FFR29vQWdCQkdCQUlJUVlnQlVFT2RrSDhCM0ZCZ0JCcUtBSUFRUWdRQ0NFSUlBdEJCblpCL0FkeFFZQVFhaWdDQUVFUUVBZ2hCQ0FNUWY4QmNVRUNkRUdBRUdvb0FnQkJHQkFJSVFJZ0RVRU9ka0g4QjNGQmdCQnFLQUlBUVFnUUNDQU1RUloyUWZ3SGNVR0FFR29vQWdCeklBVkJCblpCL0FkeFFZQVFhaWdDQUVFUUVBaHpJQXRCL3dGeFFRSjBRWUFRYWlnQ0FFRVlFQWh6SUFBb0FpeHpJZ3hCRG5aQi9BZHhRWUFRYWlnQ0FFRUlFQWdoRWlBQUtBSW9JQUlnQkNBSUlBMUJGblpCL0FkeFFZQVFhaWdDQUhOemMzTWlEVUVHZGtIOEIzRkJnQkJxS0FJQVFSQVFDQ0VPSUFBb0FpUWdCaUFLSUJBZ0JVRVdka0g4QjNGQmdCQnFLQUlBYzNOemN5SUZRZjhCY1VFQ2RFR0FFR29vQWdCQkdCQUlJUWtnQUNnQ0lDQUhJQkVnRHlBTFFSWjJRZndIY1VHQUVHb29BZ0J6YzNOeklndEJEblpCL0FkeFFZQVFhaWdDQUVFSUVBZ2hFQ0FNUVFaMlFmd0hjVUdBRUdvb0FnQkJFQkFJSVFvZ0RVSC9BWEZCQW5SQmdCQnFLQUlBUVJnUUNDRUdJQVZCRG5aQi9BZHhRWUFRYWlnQ0FFRUlFQWdoQ0NBTFFRWjJRZndIY1VHQUVHb29BZ0JCRUJBSUlRUWdERUgvQVhGQkFuUkJnQkJxS0FJQVFSZ1FDQ0VDSUExQkRuWkIvQWR4UVlBUWFpZ0NBRUVJRUFnZ0RFRVdka0g4QjNGQmdCQnFLQUlBY3lBRlFRWjJRZndIY1VHQUVHb29BZ0JCRUJBSWN5QUxRZjhCY1VFQ2RFR0FFR29vQWdCQkdCQUljeUFBS0FJOGN5SU1RUTUyUWZ3SGNVR0FFR29vQWdCQkNCQUlJUThnQUNnQ09DQUNJQVFnQ0NBTlFSWjJRZndIY1VHQUVHb29BZ0J6YzNOeklnMUJCblpCL0FkeFFZQVFhaWdDQUVFUUVBZ2hFU0FBS0FJMElBWWdDaUFRSUFWQkZuWkIvQWR4UVlBUWFpZ0NBSE56YzNNaUJVSC9BWEZCQW5SQmdCQnFLQUlBUVJnUUNDRUhJQUFvQWpBZ0NTQU9JQklnQzBFV2RrSDhCM0ZCZ0JCcUtBSUFjM056Y3lJTFFRNTJRZndIY1VHQUVHb29BZ0JCQ0JBSUlSQWdERUVHZGtIOEIzRkJnQkJxS0FJQVFSQVFDQ0VLSUExQi93RnhRUUowUVlBUWFpZ0NBRUVZRUFnaEJpQUZRUTUyUWZ3SGNVR0FFR29vQWdCQkNCQUlJUWdnQzBFR2RrSDhCM0ZCZ0JCcUtBSUFRUkFRQ0NFRUlBeEIvd0Z4UVFKMFFZQVFhaWdDQUVFWUVBZ2hBaUFOUVE1MlFmd0hjVUdBRUdvb0FnQkJDQkFJSUF4QkZuWkIvQWR4UVlBUWFpZ0NBSE1nQlVFR2RrSDhCM0ZCZ0JCcUtBSUFRUkFRQ0hNZ0MwSC9BWEZCQW5SQmdCQnFLQUlBUVJnUUNITWdBQ2dDVEhNaURFRU9ka0g4QjNGQmdCQnFLQUlBUVFnUUNDRVNJQUFvQWtnZ0FpQUVJQWdnRFVFV2RrSDhCM0ZCZ0JCcUtBSUFjM056Y3lJTlFRWjJRZndIY1VHQUVHb29BZ0JCRUJBSUlRNGdBQ2dDUkNBR0lBb2dFQ0FGUVJaMlFmd0hjVUdBRUdvb0FnQnpjM056SWdWQi93RnhRUUowUVlBUWFpZ0NBRUVZRUFnaENTQUFLQUpBSUFjZ0VTQVBJQXRCRm5aQi9BZHhRWUFRYWlnQ0FITnpjM01pQzBFT2RrSDhCM0ZCZ0JCcUtBSUFRUWdRQ0NFUUlBeEJCblpCL0FkeFFZQVFhaWdDQUVFUUVBZ2hDaUFOUWY4QmNVRUNkRUdBRUdvb0FnQkJHQkFJSVFZZ0JVRU9ka0g4QjNGQmdCQnFLQUlBUVFnUUNDRUlJQXRCQm5aQi9BZHhRWUFRYWlnQ0FFRVFFQWdoQkNBTVFmOEJjVUVDZEVHQUVHb29BZ0JCR0JBSUlRSWdEVUVPZGtIOEIzRkJnQkJxS0FJQVFRZ1FDQ0FNUVJaMlFmd0hjVUdBRUdvb0FnQnpJQVZCQm5aQi9BZHhRWUFRYWlnQ0FFRVFFQWh6SUF0Qi93RnhRUUowUVlBUWFpZ0NBRUVZRUFoeklBQW9BbHh6SWd4QkRuWkIvQWR4UVlBUWFpZ0NBRUVJRUFnaER5QUFLQUpZSUFJZ0JDQUlJQTFCRm5aQi9BZHhRWUFRYWlnQ0FITnpjM01pRFVFR2RrSDhCM0ZCZ0JCcUtBSUFRUkFRQ0NFUklBQW9BbFFnQmlBS0lCQWdCVUVXZGtIOEIzRkJnQkJxS0FJQWMzTnpjeUlGUWY4QmNVRUNkRUdBRUdvb0FnQkJHQkFJSVFjZ0FDZ0NVQ0FKSUE0Z0VpQUxRUloyUWZ3SGNVR0FFR29vQWdCemMzTnpJZ3RCRG5aQi9BZHhRWUFRYWlnQ0FFRUlFQWdoRUNBTVFRWjJRZndIY1VHQUVHb29BZ0JCRUJBSUlRb2dEVUgvQVhGQkFuUkJnQkJxS0FJQVFSZ1FDQ0VHSUFWQkRuWkIvQWR4UVlBUWFpZ0NBRUVJRUFnaENDQUxRUVoyUWZ3SGNVR0FFR29vQWdCQkVCQUlJUVFnREVIL0FYRkJBblJCZ0JCcUtBSUFRUmdRQ0NFQ0lBMUJEblpCL0FkeFFZQVFhaWdDQUVFSUVBZ2dERUVXZGtIOEIzRkJnQkJxS0FJQWN5QUZRUVoyUWZ3SGNVR0FFR29vQWdCQkVCQUljeUFMUWY4QmNVRUNkRUdBRUdvb0FnQkJHQkFJY3lBQUtBSnNjeUlNUVE1MlFmd0hjVUdBRUdvb0FnQkJDQkFJSVJJZ0FDZ0NhQ0FDSUFRZ0NDQU5RUloyUWZ3SGNVR0FFR29vQWdCemMzTnpJZzFCQm5aQi9BZHhRWUFRYWlnQ0FFRVFFQWdoRGlBQUtBSmtJQVlnQ2lBUUlBVkJGblpCL0FkeFFZQVFhaWdDQUhOemMzTWlCVUgvQVhGQkFuUkJnQkJxS0FJQVFSZ1FDQ0VKSUFBb0FtQWdCeUFSSUE4Z0MwRVdka0g4QjNGQmdCQnFLQUlBYzNOemN5SUxRUTUyUWZ3SGNVR0FFR29vQWdCQkNCQUlJUkFnREVFR2RrSDhCM0ZCZ0JCcUtBSUFRUkFRQ0NFS0lBMUIvd0Z4UVFKMFFZQVFhaWdDQUVFWUVBZ2hCaUFGUVE1MlFmd0hjVUdBRUdvb0FnQkJDQkFJSVFnZ0MwRUdka0g4QjNGQmdCQnFLQUlBUVJBUUNDRUVJQXhCL3dGeFFRSjBRWUFRYWlnQ0FFRVlFQWdoQWlBTlFRNTJRZndIY1VHQUVHb29BZ0JCQ0JBSUlBeEJGblpCL0FkeFFZQVFhaWdDQUhNZ0JVRUdka0g4QjNGQmdCQnFLQUlBUVJBUUNITWdDMEgvQVhGQkFuUkJnQkJxS0FJQVFSZ1FDSE1nQUNnQ2ZITWlERUVPZGtIOEIzRkJnQkJxS0FJQVFRZ1FDQ0VQSUFBb0FuZ2dBaUFFSUFnZ0RVRVdka0g4QjNGQmdCQnFLQUlBYzNOemN5SU5RUVoyUWZ3SGNVR0FFR29vQWdCQkVCQUlJUkVnQUNnQ2RDQUdJQW9nRUNBRlFSWjJRZndIY1VHQUVHb29BZ0J6YzNOeklnVkIvd0Z4UVFKMFFZQVFhaWdDQUVFWUVBZ2hCeUFBS0FKd0lBa2dEaUFTSUF0QkZuWkIvQWR4UVlBUWFpZ0NBSE56YzNNaURrRU9ka0g4QjNGQmdCQnFLQUlBUVFnUUNDRVFJQXhCQm5aQi9BZHhRWUFRYWlnQ0FFRVFFQWdoQ2lBTlFmOEJjVUVDZEVHQUVHb29BZ0JCR0JBSUlRWWdCVUVPZGtIOEIzRkJnQkJxS0FJQVFRZ1FDQ0VJSUE1QkJuWkIvQWR4UVlBUWFpZ0NBRUVRRUFnaEJDQU1RZjhCY1VFQ2RFR0FFR29vQWdCQkdCQUlJUUlnRFVFT2RrSDhCM0ZCZ0JCcUtBSUFRUWdRQ0NBTVFSWjJRZndIY1VHQUVHb29BZ0J6SUFWQkJuWkIvQWR4UVlBUWFpZ0NBRUVRRUFoeklBNUIvd0Z4UVFKMFFZQVFhaWdDQUVFWUVBaHpJQUFvQW93QmN5SUpRUTUyUWZ3SGNVR0FFR29vQWdCQkNCQUlJQUFvQW9BQklBY2dFU0FQSUE1QkZuWkIvQWR4UVlBUWFpZ0NBSE56YzNNaUIwRVdka0g4QjNGQmdCQnFLQUlBY3lBQUtBS0lBU0FDSUFRZ0NDQU5RUloyUWZ3SGNVR0FFR29vQWdCemMzTnpJZ1JCQm5aQi9BZHhRWUFRYWlnQ0FFRVFFQWh6SUFBb0FvUUJJQVlnQ2lBUUlBVkJGblpCL0FkeFFZQVFhaWdDQUhOemMzTWlBa0gvQVhGQkFuUkJnQkJxS0FJQVFSZ1FDSE1nQUNnQ2tBRnpJUVVnQjBFT2RrSDhCM0ZCZ0JCcUtBSUFRUWdRQ0NBQ1FSWjJRZndIY1VHQUVHb29BZ0J6SUFsQkJuWkIvQWR4UVlBUWFpZ0NBRUVRRUFoeklBUkIvd0Z4UVFKMFFZQVFhaWdDQUVFWUVBaHpJQUFvQXBRQmN5RVNJQUpCRG5aQi9BZHhRWUFRYWlnQ0FFRUlFQWdnQkVFV2RrSDhCM0ZCZ0JCcUtBSUFjeUFIUVFaMlFmd0hjVUdBRUdvb0FnQkJFQkFJY3lBSlFmOEJjVUVDZEVHQUVHb29BZ0JCR0JBSWN5QUFLQUtZQVhNaERnSi9JQVJCRG5aQi9BZHhRWUFRYWlnQ0FFRUlFQWdnQ1VFV2RrSDhCM0ZCZ0JCcUtBSUFjeUFDUVFaMlFmd0hjVUdBRUdvb0FnQkJFQkFJY3lBSFFmOEJjVUVDZEVHQUVHb29BZ0JCR0JBSWN5QUFLQUtjQVhNaUNTQVVRUXRJRFFBYUlBbEJEblpCL0FkeFFZQVFhaWdDQUVFSUVBZ2hEeUFPUVFaMlFmd0hjVUdBRUdvb0FnQkJFQkFJSVJFZ0VrSC9BWEZCQW5SQmdCQnFLQUlBUVJnUUNDRUhJQVZCRG5aQi9BZHhRWUFRYWlnQ0FFRUlFQWdoRUNBSlFRWjJRZndIY1VHQUVHb29BZ0JCRUJBSUlRb2dEa0gvQVhGQkFuUkJnQkJxS0FJQVFSZ1FDQ0VHSUJKQkRuWkIvQWR4UVlBUWFpZ0NBRUVJRUFnaENDQUZRUVoyUWZ3SGNVR0FFR29vQWdCQkVCQUlJUVFnQ1VIL0FYRkJBblJCZ0JCcUtBSUFRUmdRQ0NFQ0lBNUJEblpCL0FkeFFZQVFhaWdDQUVFSUVBZ2dDVUVXZGtIOEIzRkJnQkJxS0FJQWN5QVNRUVoyUWZ3SGNVR0FFR29vQWdCQkVCQUljeUFGUWY4QmNVRUNkRUdBRUdvb0FnQkJHQkFJY3lBQUtBS3NBWE1pQ1VFT2RrSDhCM0ZCZ0JCcUtBSUFRUWdRQ0NBQUtBS2dBU0FISUJFZ0R5QUZRUloyUWZ3SGNVR0FFR29vQWdCemMzTnpJZ2RCRm5aQi9BZHhRWUFRYWlnQ0FITWdBQ2dDcUFFZ0FpQUVJQWdnRGtFV2RrSDhCM0ZCZ0JCcUtBSUFjM056Y3lJRVFRWjJRZndIY1VHQUVHb29BZ0JCRUJBSWN5QUFLQUtrQVNBR0lBb2dFQ0FTUVJaMlFmd0hjVUdBRUdvb0FnQnpjM056SWdKQi93RnhRUUowUVlBUWFpZ0NBRUVZRUFoeklBQW9BckFCY3lFRklBZEJEblpCL0FkeFFZQVFhaWdDQUVFSUVBZ2dBa0VXZGtIOEIzRkJnQkJxS0FJQWN5QUpRUVoyUWZ3SGNVR0FFR29vQWdCQkVCQUljeUFFUWY4QmNVRUNkRUdBRUdvb0FnQkJHQkFJY3lBQUtBSzBBWE1oRWlBQ1FRNTJRZndIY1VHQUVHb29BZ0JCQ0JBSUlBUkJGblpCL0FkeFFZQVFhaWdDQUhNZ0IwRUdka0g4QjNGQmdCQnFLQUlBUVJBUUNITWdDVUgvQVhGQkFuUkJnQkJxS0FJQVFSZ1FDSE1nQUNnQ3VBRnpJUTRnQkVFT2RrSDhCM0ZCZ0JCcUtBSUFRUWdRQ0NBSlFSWjJRZndIY1VHQUVHb29BZ0J6SUFKQkJuWkIvQWR4UVlBUWFpZ0NBRUVRRUFoeklBZEIvd0Z4UVFKMFFZQVFhaWdDQUVFWUVBaHpJQUFvQXJ3QmN5SUpJQlJCRFVnTkFCb2dDVUVPZGtIOEIzRkJnQkJxS0FJQVFRZ1FDQ0VQSUE1QkJuWkIvQWR4UVlBUWFpZ0NBRUVRRUFnaEVTQVNRZjhCY1VFQ2RFR0FFR29vQWdCQkdCQUlJUWNnQlVFT2RrSDhCM0ZCZ0JCcUtBSUFRUWdRQ0NFUUlBbEJCblpCL0FkeFFZQVFhaWdDQUVFUUVBZ2hDaUFPUWY4QmNVRUNkRUdBRUdvb0FnQkJHQkFJSVFZZ0VrRU9ka0g4QjNGQmdCQnFLQUlBUVFnUUNDRUlJQVZCQm5aQi9BZHhRWUFRYWlnQ0FFRVFFQWdoQkNBSlFmOEJjVUVDZEVHQUVHb29BZ0JCR0JBSUlRSWdEa0VPZGtIOEIzRkJnQkJxS0FJQVFRZ1FDQ0FKUVJaMlFmd0hjVUdBRUdvb0FnQnpJQkpCQm5aQi9BZHhRWUFRYWlnQ0FFRVFFQWh6SUFWQi93RnhRUUowUVlBUWFpZ0NBRUVZRUFoeklBQW9Bc3dCY3lJSlFRNTJRZndIY1VHQUVHb29BZ0JCQ0JBSUlBQW9Bc0FCSUFjZ0VTQVBJQVZCRm5aQi9BZHhRWUFRYWlnQ0FITnpjM01pQjBFV2RrSDhCM0ZCZ0JCcUtBSUFjeUFBS0FMSUFTQUNJQVFnQ0NBT1FSWjJRZndIY1VHQUVHb29BZ0J6YzNOeklnUkJCblpCL0FkeFFZQVFhaWdDQUVFUUVBaHpJQUFvQXNRQklBWWdDaUFRSUJKQkZuWkIvQWR4UVlBUWFpZ0NBSE56YzNNaUFrSC9BWEZCQW5SQmdCQnFLQUlBUVJnUUNITWdBQ2dDMEFGeklRVWdCMEVPZGtIOEIzRkJnQkJxS0FJQVFRZ1FDQ0FDUVJaMlFmd0hjVUdBRUdvb0FnQnpJQWxCQm5aQi9BZHhRWUFRYWlnQ0FFRVFFQWh6SUFSQi93RnhRUUowUVlBUWFpZ0NBRUVZRUFoeklBQW9BdFFCY3lFU0lBSkJEblpCL0FkeFFZQVFhaWdDQUVFSUVBZ2dCRUVXZGtIOEIzRkJnQkJxS0FJQWN5QUhRUVoyUWZ3SGNVR0FFR29vQWdCQkVCQUljeUFKUWY4QmNVRUNkRUdBRUdvb0FnQkJHQkFJY3lBQUtBTFlBWE1oRGlBRVFRNTJRZndIY1VHQUVHb29BZ0JCQ0JBSUlBbEJGblpCL0FkeFFZQVFhaWdDQUhNZ0FrRUdka0g4QjNGQmdCQnFLQUlBUVJBUUNITWdCMEgvQVhGQkFuUkJnQkJxS0FJQVFSZ1FDSE1nQUNnQzNBRnpDeUVJSUFNZ0FDQVVRUVIwYWlJRUtBSUFJQkpCL3dGeFFZQVlhaTBBQUNBSVFSQjJRZjhCY1VHQUdHb3RBQUJCRUhRZ0JVRVlka0dBR0dvdEFBQkJHSFJ5SUE1QkNIWkIvd0Z4UVlBWWFpMEFBRUVJZEhKeWN5SUNRUmgwSUFKQkNIUkJnSUQ4QjNGeUlBSkJDSFpCZ1A0RGNTQUNRUmgyY25JMkFBQWdBeUFFS0FJRUlBNUIvd0Z4UVlBWWFpMEFBQ0FGUVJCMlFmOEJjVUdBR0dvdEFBQkJFSFFnRWtFWWRrR0FHR290QUFCQkdIUnlJQWhCQ0haQi93RnhRWUFZYWkwQUFFRUlkSEp5Y3lJQ1FSaDBJQUpCQ0hSQmdJRDhCM0Z5SUFKQkNIWkJnUDREY1NBQ1FSaDJjbkkyQUFRZ0F5QUVLQUlJSUFoQi93RnhRWUFZYWkwQUFDQVNRUkIyUWY4QmNVR0FHR290QUFCQkVIUWdEa0VZZGtHQUdHb3RBQUJCR0hSeUlBVkJDSFpCL3dGeFFZQVlhaTBBQUVFSWRISnljeUlDUVJoMElBSkJDSFJCZ0lEOEIzRnlJQUpCQ0haQmdQNERjU0FDUVJoMmNuSTJBQWdnQXlBRUtBSU1JQVZCL3dGeFFZQVlhaTBBQUNBT1FSQjJRZjhCY1VHQUdHb3RBQUJCRUhRZ0NFRVlka0dBR0dvdEFBQkJHSFJ5SUJKQkNIWkIvd0Z4UVlBWWFpMEFBRUVJZEhKeWN5SUNRUmgwSUFKQkNIUkJnSUQ4QjNGeUlBSkJDSFpCZ1A0RGNTQUNRUmgyY25JMkFBeEJBQ0VDQTBBZ0FpQURhaUlFSUFRdEFBQWdFMEVRYWlBQ2FpMEFBSE02QUFBZ0FrRUJhaUlDUVJCSERRQUxJQk1nRXlrRENEY0RHQ0FUSUJNcEF3QTNBeEFnQTBFUWFpRURJQUZCQVdvaUFTQVZSdzBBQ3dzZ0FCQVFRUUFGUVg4TEdpQVRRU0JxSkFBTGxnRUJBbjhqQUVFUWF5SUFKQUFDUUNBQVFReHFJQUJCQ0dvUUF3MEFRZlNHQVNBQUtBSU1RUUowUVFScUVCa2lBVFlDQUNBQlJRMEFJQUFvQWdnUUdTSUJCRUJCOUlZQktBSUFJQUFvQWd4QkFuUnFRUUEyQWdCQjlJWUJLQUlBSUFFUUFrVU5BUXRCOUlZQlFRQTJBZ0FMSUFCQkVHb2tBRUhJZ1FGQnZSNFFWQnBCMklZQlFlaUZBVFlDQUVHUWhnRkJLallDQUF0WkFRRi9JQUFnQUNnQ1NDSUJRUUZySUFGeU5nSklJQUFvQWdBaUFVRUljUVJBSUFBZ0FVRWdjallDQUVGL0R3c2dBRUlBTndJRUlBQWdBQ2dDTENJQk5nSWNJQUFnQVRZQ0ZDQUFJQUVnQUNnQ01HbzJBaEJCQUF0OEFRSi9JQUFnQUNnQ1NDSUJRUUZySUFGeU5nSklJQUFvQWhRZ0FDZ0NIRWNFUUNBQVFRQkJBQ0FBS0FJa0VRUUFHZ3NnQUVFQU5nSWNJQUJDQURjREVDQUFLQUlBSWdGQkJIRUVRQ0FBSUFGQklISTJBZ0JCZnc4TElBQWdBQ2dDTENBQUtBSXdhaUlDTmdJSUlBQWdBallDQkNBQlFSdDBRUjkxQzlVQ0FRSi9Ba0FnQUNBQlJnMEFJQUVnQUNBQ2FpSUVhMEVBSUFKQkFYUnJUUVJBSUFBZ0FTQUNFRUlhRHdzZ0FDQUJjMEVEY1NFREFrQUNRQ0FBSUFGSkJFQWdBdzBDSUFCQkEzRkZEUUVEUUNBQ1JRMEVJQUFnQVMwQUFEb0FBQ0FCUVFGcUlRRWdBa0VCYXlFQ0lBQkJBV29pQUVFRGNRMEFDd3dCQ3dKQUlBTU5BQ0FFUVFOeEJFQURRQ0FDUlEwRklBQWdBa0VCYXlJQ2FpSURJQUVnQW1vdEFBQTZBQUFnQTBFRGNRMEFDd3NnQWtFRFRRMEFBMEFnQUNBQ1FRUnJJZ0pxSUFFZ0Ftb29BZ0EyQWdBZ0FrRURTdzBBQ3dzZ0FrVU5BZ05BSUFBZ0FrRUJheUlDYWlBQklBSnFMUUFBT2dBQUlBSU5BQXNNQWdzZ0FrRURUUTBBQTBBZ0FDQUJLQUlBTmdJQUlBRkJCR29oQVNBQVFRUnFJUUFnQWtFRWF5SUNRUU5MRFFBTEN5QUNSUTBBQTBBZ0FDQUJMUUFBT2dBQUlBQkJBV29oQUNBQlFRRnFJUUVnQWtFQmF5SUNEUUFMQ3dzVUFDQUFRUXhxSWdBZ0FCQ1VBVUVCYWhDVEFRdUxEQUVHZnlBQUlBRnFJUVVDUUFKQUlBQW9BZ1FpQWtFQmNRMEFJQUpCQTNGRkRRRWdBQ2dDQUNJQ0lBRnFJUUVDUUNBQUlBSnJJZ0JCN0lFQktBSUFSd1JBSUFKQi93Rk5CRUFnQUNnQ0NDSUVJQUpCQTNZaUFrRURkRUdBZ2dGcVJob2dBQ2dDRENJRElBUkhEUUpCMklFQlFkaUJBU2dDQUVGK0lBSjNjVFlDQUF3REN5QUFLQUlZSVFZQ1FDQUFJQUFvQWd3aUEwY0VRQ0FBS0FJSUlnSkI2SUVCS0FJQVNSb2dBaUFETmdJTUlBTWdBallDQ0F3QkN3SkFJQUJCRkdvaUFpZ0NBQ0lFRFFBZ0FFRVFhaUlDS0FJQUlnUU5BRUVBSVFNTUFRc0RRQ0FDSVFjZ0JDSURRUlJxSWdJb0FnQWlCQTBBSUFOQkVHb2hBaUFES0FJUUlnUU5BQXNnQjBFQU5nSUFDeUFHUlEwQ0FrQWdBQ0FBS0FJY0lnUkJBblJCaUlRQmFpSUNLQUlBUmdSQUlBSWdBellDQUNBRERRRkIzSUVCUWR5QkFTZ0NBRUYrSUFSM2NUWUNBQXdFQ3lBR1FSQkJGQ0FHS0FJUUlBQkdHMm9nQXpZQ0FDQURSUTBEQ3lBRElBWTJBaGdnQUNnQ0VDSUNCRUFnQXlBQ05nSVFJQUlnQXpZQ0dBc2dBQ2dDRkNJQ1JRMENJQU1nQWpZQ0ZDQUNJQU0yQWhnTUFnc2dCU2dDQkNJQ1FRTnhRUU5IRFFGQjRJRUJJQUUyQWdBZ0JTQUNRWDV4TmdJRUlBQWdBVUVCY2pZQ0JDQUZJQUUyQWdBUEN5QUVJQU0yQWd3Z0F5QUVOZ0lJQ3dKQUlBVW9BZ1FpQWtFQ2NVVUVRQ0FGUWZDQkFTZ0NBRVlFUUVId2dRRWdBRFlDQUVIa2dRRkI1SUVCS0FJQUlBRnFJZ0UyQWdBZ0FDQUJRUUZ5TmdJRUlBQkI3SUVCS0FJQVJ3MERRZUNCQVVFQU5nSUFRZXlCQVVFQU5nSUFEd3NnQlVIc2dRRW9BZ0JHQkVCQjdJRUJJQUEyQWdCQjRJRUJRZUNCQVNnQ0FDQUJhaUlCTmdJQUlBQWdBVUVCY2pZQ0JDQUFJQUZxSUFFMkFnQVBDeUFDUVhoeElBRnFJUUVDUUNBQ1FmOEJUUVJBSUFVb0FnZ2lCQ0FDUVFOMklnSkJBM1JCZ0lJQmFrWWFJQVFnQlNnQ0RDSURSZ1JBUWRpQkFVSFlnUUVvQWdCQmZpQUNkM0UyQWdBTUFnc2dCQ0FETmdJTUlBTWdCRFlDQ0F3QkN5QUZLQUlZSVFZQ1FDQUZJQVVvQWd3aUEwY0VRQ0FGS0FJSUlnSkI2SUVCS0FJQVNSb2dBaUFETmdJTUlBTWdBallDQ0F3QkN3SkFJQVZCRkdvaUJDZ0NBQ0lDRFFBZ0JVRVFhaUlFS0FJQUlnSU5BRUVBSVFNTUFRc0RRQ0FFSVFjZ0FpSURRUlJxSWdRb0FnQWlBZzBBSUFOQkVHb2hCQ0FES0FJUUlnSU5BQXNnQjBFQU5nSUFDeUFHUlEwQUFrQWdCU0FGS0FJY0lnUkJBblJCaUlRQmFpSUNLQUlBUmdSQUlBSWdBellDQUNBRERRRkIzSUVCUWR5QkFTZ0NBRUYrSUFSM2NUWUNBQXdDQ3lBR1FSQkJGQ0FHS0FJUUlBVkdHMm9nQXpZQ0FDQURSUTBCQ3lBRElBWTJBaGdnQlNnQ0VDSUNCRUFnQXlBQ05nSVFJQUlnQXpZQ0dBc2dCU2dDRkNJQ1JRMEFJQU1nQWpZQ0ZDQUNJQU0yQWhnTElBQWdBVUVCY2pZQ0JDQUFJQUZxSUFFMkFnQWdBRUhzZ1FFb0FnQkhEUUZCNElFQklBRTJBZ0FQQ3lBRklBSkJmbkUyQWdRZ0FDQUJRUUZ5TmdJRUlBQWdBV29nQVRZQ0FBc2dBVUgvQVUwRVFDQUJRUU4ySWdKQkEzUkJnSUlCYWlFQkFuOUIySUVCS0FJQUlnTkJBU0FDZENJQ2NVVUVRRUhZZ1FFZ0FpQURjallDQUNBQkRBRUxJQUVvQWdnTElRSWdBU0FBTmdJSUlBSWdBRFlDRENBQUlBRTJBZ3dnQUNBQ05nSUlEd3RCSHlFQ0lBQkNBRGNDRUNBQlFmLy8vd2ROQkVBZ0FVRUlkaUlDSUFKQmdQNC9ha0VRZGtFSWNTSUVkQ0lDSUFKQmdPQWZha0VRZGtFRWNTSURkQ0lDSUFKQmdJQVBha0VRZGtFQ2NTSUNkRUVQZGlBRElBUnlJQUp5YXlJQ1FRRjBJQUVnQWtFVmFuWkJBWEZ5UVJ4cUlRSUxJQUFnQWpZQ0hDQUNRUUowUVlpRUFXb2hCd0pBQWtCQjNJRUJLQUlBSWdSQkFTQUNkQ0lEY1VVRVFFSGNnUUVnQXlBRWNqWUNBQ0FISUFBMkFnQWdBQ0FITmdJWURBRUxJQUZCQUVFWklBSkJBWFpySUFKQkgwWWJkQ0VDSUFjb0FnQWhBd05BSUFNaUJDZ0NCRUY0Y1NBQlJnMENJQUpCSFhZaEF5QUNRUUYwSVFJZ0JDQURRUVJ4YWlJSFFSQnFLQUlBSWdNTkFBc2dCeUFBTmdJUUlBQWdCRFlDR0FzZ0FDQUFOZ0lNSUFBZ0FEWUNDQThMSUFRb0FnZ2lBU0FBTmdJTUlBUWdBRFlDQ0NBQVFRQTJBaGdnQUNBRU5nSU1JQUFnQVRZQ0NBc0xaQUFnQUNBQlFpaUdRb0NBZ0lDQWdNRC9BSU1nQVVJNGhvUWdBVUlZaGtLQWdJQ0FnT0EvZ3lBQlFnaUdRb0NBZ0lEd0g0T0VoQ0FCUWdpSVFvQ0FnUGdQZ3lBQlFoaUlRb0NBL0FlRGhDQUJRaWlJUW9EK0E0TWdBVUk0aUlTRWhEY0FBQXNQQUNBQUtBSU1HaUFBUVFBMkFnd0xod0VCQkg4akFFRVFheUlGSkFBakFFRVFheUlESkFBQ1FDQUJRVzlOQkVBQ1FDQUJRUXBOQkVBZ0FDQUJFRG9nQUNFRURBRUxJQUFnQVJDUkFVRUJhaUlHRUY4aUJCQk5JQUFnQmhCTUlBQWdBUkE1Q3lBRUlBRWdBaEQzQVNBRFFRQTZBQThnQVNBRWFpQURRUTlxRURRZ0EwRVFhaVFBREFFTEVCY0FDeUFGUVJCcUpBQWdBQXRWQVFKL0lBQW9BZ1FoQkFKL1FRQWdBa1VOQUJvZ0JFRUlkU0lGSUFSQkFYRkZEUUFhSUFJb0FnQWdCUkRGQVFzaEJTQUFLQUlBSWdBZ0FTQUNJQVZxSUFOQkFpQUVRUUp4R3lBQUtBSUFLQUljRVFnQUN3MEFJQUFvQWdBZ0FTZ0NBRWtMSXdBZ0FFRUFOZ0lNSUFBZ0FUWUNCQ0FBSUFFMkFnQWdBQ0FCUVFGcU5nSUlJQUFMdXdFQkEzOGpBRUVRYXlJRkpBQWdBa0h2Ly8vL0F5SUdJQUZyVFFSQUlBQVFEU0VISUFBQ2Z5QUJJQVpCQVhaQkVHdEpCRUFnQlNBQlFRRjBOZ0lJSUFVZ0FTQUNhallDRENBRlFReHFJQVZCQ0dvUWRpZ0NBQkNDQVF3QkN5QUdRUUZyQzBFQmFpSUdFSUVCSVFJZ0JBUkFJQUlnQnlBRUVIRUxJQU1nQkdzaUF3UkFJQVJCQW5RaUJDQUNhaUFFSUFkcUlBTVFjUXNnQVVFQlJ3UkFJQWNRRUFzZ0FDQUNFRTBnQUNBR0VFd2dCVUVRYWlRQUR3c1FGd0FMaEFJQkEzOGpBRUVRYXlJSUpBQWdBa0h2Ly8vL0F5SUpJQUZCZjNOcVRRUkFJQUFRRFNFS0lBQUNmeUFCSUFsQkFYWkJFR3RKQkVBZ0NDQUJRUUYwTmdJSUlBZ2dBU0FDYWpZQ0RDQUlRUXhxSUFoQkNHb1FkaWdDQUJDQ0FRd0JDeUFKUVFGckMwRUJhaUlKRUlFQklRSWdCQVJBSUFJZ0NpQUVFSEVMSUFZRVFDQUVRUUowSUFKcUlBY2dCaEJ4Q3lBRElBUWdCV3BySWdNRVFDQUVRUUowSWdjZ0Ftb2dCa0VDZEdvZ0J5QUthaUFGUVFKMGFpQURFSEVMSUFGQkFVY0VRQ0FLRUJBTElBQWdBaEJOSUFBZ0NSQk1JQUFnQkNBR2FpQURhaUlBRURrZ0NFRUFOZ0lFSUFJZ0FFRUNkR29nQ0VFRWFoQXpJQWhCRUdva0FBOExFQmNBQzFnQkEzOUJ5SUVCRUEwaEEwSElnUUVRQ1NFQkl3QkJFR3NpQWlRQUlBSWdBRG9BRDBGL0lRQWdBUVJBSUFFRWZ5QURJQUlzQUE4UVpTQUJFTndCQlVFQUN5SUFJQU5yUVg4Z0FCc2hBQXNnQWtFUWFpUUFJQUFMY0FFRGZ5TUFRUkJySWdNa0FDQUNRVzlOQkVBQ1FDQUNRUXBOQkVBZ0FDQUNFRG9nQUNFRURBRUxJQUFnQWhDUkFVRUJhaUlGRUY4aUJCQk5JQUFnQlJCTUlBQWdBaEE1Q3lBRUlBRWdBaEJWSUFOQkFEb0FEeUFDSUFScUlBTkJEMm9RTkNBRFFSQnFKQUFQQ3hBWEFBc1NBQ0FCQkVBZ0FDQUNFR1VnQVJCR0dnc0w3QUVCQTM4akFFRVFheUlJSkFBZ0FrRnZJZ2tnQVVGL2MycE5CRUFnQUJBTklRb0NmeUFCSUFsQkFYWkJFR3RKQkVBZ0NDQUJRUUYwTmdJSUlBZ2dBU0FDYWpZQ0RDQUlRUXhxSUFoQkNHb1FkaWdDQUJDUkFRd0JDeUFKUVFGckMwRUJhaUlKRUY4aEFpQUVCRUFnQWlBS0lBUVFWUXNnQmdSQUlBSWdCR29nQnlBR0VGVUxJQU1nQkNBRmFtc2lBd1JBSUFJZ0JHb2dCbW9nQkNBS2FpQUZhaUFERUZVTElBRkJDa2NFUUNBS0VCQUxJQUFnQWhCTklBQWdDUkJNSUFBZ0JDQUdhaUFEYWlJQUVEa2dDRUVBT2dBSElBQWdBbW9nQ0VFSGFoQTBJQWhCRUdva0FBOExFQmNBQ3lRQkFYOGpBRUVRYXlJQkpBQWdBU0FBTmdJSUlBRW9BZ2doQUNBQlFSQnFKQUFnQUFzSkFDQUFFQlkyQWdBTEt3RUJmeUFBS0FJRUlRSURRQ0FCSUFKSEJFQWdBQkIwR2lBQ1FRUnJJUUlNQVFzTElBQWdBVFlDQkFzcUFDTUFRUkJySWdJa0FBSkFJQUFnQVVZRVFDQUFRUUE2QUhnTUFRc2dBUkFRQ3lBQ1FSQnFKQUFMSEFBZ0FVSC8vLy8vQTBzRVFFSDRIQkNXQWdBTElBRkJBblFRWHdzSkFDQUJRUUEyQWdBTE5nQkJzSlVCS0FJQUdrR3dsUUVvQWdCQnNKVUJFSE5CQW5ScUdrR3dsUUVvQWdCQnNKVUJFSE5CQW5ScUdrR3dsUUVvQWdBYUN6MEJBWDhqQUVFUWF5SUNKQUFDUUNBQUxRQjRJQUZCSGt0eVJRUkFJQUJCQVRvQWVBd0JDeUFDUVFocUlBRVEvUUVoQUFzZ0FrRVFhaVFBSUFBTFJRRUNmeU1BUVJCcklnQWtBRUd3bFFFUWRCb2dBRUgvLy8vL0F6WUNEQ0FBUWYvLy8vOEhOZ0lJSUFCQkRHb2dBRUVJYWhDaUFTZ0NBQ0VCSUFCQkVHb2tBQ0FCQ3drQUlBQVF5Z0VRRUFzbkFDQURJQU1vQWdBZ0FpQUJheUlBYXlJQ05nSUFJQUJCQUVvRVFDQUNJQUVnQUJCQ0dnc0xFQUFnQUNBQkVNMEJJQUFnQWpZQ0JBdklBUUVFZnlNQVFTQnJJZ1VrQUNBRklBRXBBQUEzQXhBZ0JTQUJLUUFJTndNWUFrQWdBMEVRU1FSQUlBSWhBUXdCQ3lBRFFRUjJJUWNnQWlFQkEwQWdBQ0FGUVJCcUlnZ2dCQkNuQVNBRUlBRVFuUUVnQkVFUWFpRUVJQUZCRUdvaEFTQUlFT3NCSUFaQkFXb2lCaUFIUncwQUN3c2dBaUFEYWlBQmF5SUNCRUFnQUNBRlFSQnFJQVVRcHdGQkFDRUdBMEFnQkNBRklBWnFMUUFBSUFFdEFBQnpPZ0FBSUFSQkFXb2hCQ0FCUVFGcUlRRWdCa0VCYWlJR0lBSkhEUUFMQ3lBRlFTQnFKQUFMRlFBZ0FFSDQwd0EyQWdBZ0FFRVFhaEFLR2lBQUN4VUFJQUJCME5NQU5nSUFJQUJCREdvUUNob2dBQXNFQUVFRUN3OEFJQUFvQWdBZ0FDZ0NCRFlDQkF0QUFRSi9Jd0JCRUdzaUFTUUFJQUVnQURZQ0RDQUJRUWhxSUFGQkRHb1FVaUVBUVFSQkFVSFloZ0VvQWdBb0FnQWJJUUlnQUJCUklBRkJFR29rQUNBQ0N6d0JBWDhqQUVFUWF5SUZKQUFnQlNBRU5nSU1JQVZCQ0dvZ0JVRU1haEJTSVFRZ0FDQUJJQUlnQXhDM0FTRUFJQVFRVVNBRlFSQnFKQUFnQUFzTUFDQUJJQUl0QUFBNkFBQUxFZ0FnQkNBQ05nSUFJQWNnQlRZQ0FFRURDeWdCQVg4Z0FFSHMwZ0EyQWdBQ1FDQUFLQUlJSWdGRkRRQWdBQzBBREVVTkFDQUJFQkFMSUFBTDVBa0JBWDhDUUVIMGlBRXRBQUJCQVhFTkFFSDBpQUVRSkVVTkFBSkFRZWlJQVMwQUFFRUJjUTBBUWVpSUFSQWtSUTBBUWFpVkFSQWJRYWlWQVVIWTBnQTJBZ0FqQUVFUWF5SUJKQUJCc0pVQlFnQTNBd0FnQVVFQU5nSU1RYmlWQVNBQlFReHFFTTBCUWJpV0FVRUFPZ0FBSUFGQkVHb2tBQkNCQWtFZVNRUkFFQmNBQzBHd2xRRkJzSlVCRUhSQkhoQ0FBaUlCTmdJQVFiU1ZBU0FCTmdJQVFiQ1ZBUkJESUFGQitBQnFOZ0lBUVFBUS93RkJIaENYQWtIQWxnRkJtaDRRVkJwQnNKVUJFRkFoQVVHd2xRRVFsUUpCc0pVQklBRVFsQUpCOEpJQkVCdEI4SklCUVlUZEFEWUNBRUh3a2dGQnVJY0JFQm9RSEVINGtnRVFHMEg0a2dGQnBOMEFOZ0lBUWZpU0FVSEFod0VRR2hBY1FZQ1RBUkFiUVl5VEFVRUFPZ0FBUVlpVEFVRUFOZ0lBUVlDVEFVSHMwZ0EyQWdCQmlKTUJRYkF5S0FJQU5nSUFRWUNUQVVHRWlRRVFHaEFjUVpDVEFSQWJRWkNUQVVIUTFnQTJBZ0JCa0pNQlFmeUlBUkFhRUJ4Qm1KTUJFQnRCbUpNQlFlVFhBRFlDQUVHWWt3RkJqSWtCRUJvUUhFR2drd0VRRzBHZ2t3RkJvTk1BTmdJQVFhaVRBUkFXTmdJQVFhQ1RBVUdVaVFFUUdoQWNRYkNUQVJBYlFiQ1RBVUg0MkFBMkFnQkJzSk1CUVp5SkFSQWFFQnhCdUpNQkVCdEJ1Sk1CUWV6WkFEWUNBRUc0a3dGQnBJa0JFQm9RSEVIQWt3RVFHMEhJa3dGQnJ0Z0FPd0VBUWNDVEFVSFEwd0EyQWdCQnpKTUJFQkVhUWNDVEFVR3NpUUVRR2hBY1FkaVRBUkFiUWVDVEFVS3VnSUNBd0FVM0FnQkIySk1CUWZqVEFEWUNBRUhva3dFUUVScEIySk1CUWJTSkFSQWFFQnhCK0pNQkVCdEIrSk1CUWNUZEFEWUNBRUg0a3dGQnlJY0JFQm9RSEVHQWxBRVFHMEdBbEFGQnVOOEFOZ0lBUVlDVUFVSFFod0VRR2hBY1FZaVVBUkFiUVlpVUFVR000UUEyQWdCQmlKUUJRZGlIQVJBYUVCeEJrSlFCRUJ0QmtKUUJRZlRpQURZQ0FFR1FsQUZCNEljQkVCb1FIRUdZbEFFUUcwR1lsQUZCek9vQU5nSUFRWmlVQVVHSWlBRVFHaEFjUWFDVUFSQWJRYUNVQVVIZzZ3QTJBZ0JCb0pRQlFaQ0lBUkFhRUJ4QnFKUUJFQnRCcUpRQlFkVHNBRFlDQUVHb2xBRkJtSWdCRUJvUUhFR3dsQUVRRzBHd2xBRkJ5TzBBTmdJQVFiQ1VBVUdnaUFFUUdoQWNRYmlVQVJBYlFiaVVBVUc4N2dBMkFnQkJ1SlFCUWFpSUFSQWFFQnhCd0pRQkVCdEJ3SlFCUWVEdkFEWUNBRUhBbEFGQnNJZ0JFQm9RSEVISWxBRVFHMEhJbEFGQmhQRUFOZ0lBUWNpVUFVRzRpQUVRR2hBY1FkQ1VBUkFiUWRDVUFVR284Z0EyQWdCQjBKUUJRY0NJQVJBYUVCeEIySlFCRUJ0QjRKUUJRWkQ4QURZQ0FFSFlsQUZCdk9RQU5nSUFRZUNVQVVIczVBQTJBZ0JCMkpRQlFlaUhBUkFhRUJ4QjZKUUJFQnRCOEpRQlFiVDhBRFlDQUVIb2xBRkJ4T1lBTmdJQVFmQ1VBVUgwNWdBMkFnQkI2SlFCUWZDSEFSQWFFQnhCK0pRQkVCdEJnSlVCRVBvQlFmaVVBVUd3NkFBMkFnQkIrSlFCUWZpSEFSQWFFQnhCaUpVQkVCdEJrSlVCRVBvQlFZaVZBVUhNNlFBMkFnQkJpSlVCUVlDSUFSQWFFQnhCbUpVQkVCdEJtSlVCUWN6ekFEWUNBRUdZbFFGQnlJZ0JFQm9RSEVHZ2xRRVFHMEdnbFFGQnhQUUFOZ0lBUWFDVkFVSFFpQUVRR2hBY1FlQ0lBVUdvbFFFMkFnQkI1SWdCUWVDSUFUWUNBRUhvaUFFUUl3dEI3SWdCUWVTSUFTZ0NBQkNRQWtId2lBRkI3SWdCTmdJQVFmU0lBUkFqQ3lBQVFmQ0lBU2dDQUNnQ0FDSUFOZ0lBSUFBUXpnRUxFd0FnQUNBQktBSUFJZ0EyQWdBZ0FCRE9BUXN5QUNBQUtBSUFHaUFBS0FJQUlBQVFjMEVDZEdvYUlBQW9BZ0FnQUJCUVFRSjBhaG9nQUNnQ0FDQUFFSE5CQW5ScUdnc1RBQ0FBSUFBb0FnQkJBV3NpQURZQ0FDQUFDMjhCQW44Z0FFSFkwZ0EyQWdBZ0FFRUlhaUVCQTBBZ0FSQlFJQUpMQkVBZ0FTQUNFSGNvQWdBRVFDQUJJQUlRZHlnQ0FCQ2pBUXNnQWtFQmFpRUNEQUVMQ3lBQVFaZ0JhaEFLR2lBQkVKRUNJQUVvQWdBRVFDQUJFSlVDSUFFUWRDQUJLQUlBSUFFUWN4RDhBUXNnQUFzcUFDQUFLQUlBR2lBQUtBSUFJQUFRYzBFQ2RHb2FJQUFvQWdBYUlBQW9BZ0FnQUJCUVFRSjBhaG9MREFBZ0FDQUFLQUlBRVBzQkMySUJBMzlCQ0JBSElnRkIwUDhBTmdJQUlBRkIvUDhBTmdJQUlBQVFrZ0VpQWtFTmFoQmZJZ05CQURZQ0NDQURJQUkyQWdRZ0F5QUNOZ0lBSUFFZ0EwRU1haUFBSUFKQkFXb1FRallDQkNBQlFheUFBVFlDQUNBQlFjeUFBVUVERUFZQUMzSUJBMzhqQUVFUWF5SUJKQUFnQVVHd2xRRTJBZ0FnQVVHMGxRRW9BZ0FpQWpZQ0JDQUJJQUlnQUVFQ2RHbzJBZ2dnQVNJREtBSUVJUUFnQXlnQ0NDRUNBMEFnQUNBQ1JnUkFJQU1RaVFJZ0FVRVFhaVFBQlVHd2xRRVFkQ0FBRVA0QklBTWdBRUVFYWlJQU5nSUVEQUVMQ3dzZ0FDQUFRYURUQURZQ0FDQUFLQUlJRUJaSEJFQWdBQ2dDQ0JEVUFnc2dBQXNFQUVGL0MrSUZBUXAvSXdCQkVHc2lFeVFBSUFJZ0FEWUNBQ0FEUVlBRWNTRVZJQWRCQW5RaEZnTkFJQlJCQkVZRVFDQU5FQWxCQVVzRVFDQVRJQTBRUURZQ0NDQUNJQk5CQ0dwQkFSQ2ZBaUFORUd3Z0FpZ0NBQkNrQVRZQ0FBc2dBMEd3QVhFaUEwRVFSd1JBSUFFZ0EwRWdSZ1IvSUFJb0FnQUZJQUFMTmdJQUN5QVRRUkJxSkFBRkFrQUNRQUpBQWtBQ1FBSkFJQWdnRkdvc0FBQU9CUUFCQXdJRUJRc2dBU0FDS0FJQU5nSUFEQVFMSUFFZ0FpZ0NBRFlDQUNBR1FTQVFQU0VISUFJZ0FpZ0NBQ0lQUVFScU5nSUFJQThnQnpZQ0FBd0RDeUFORUVrTkFpQU5RUUFRc1FFb0FnQWhCeUFDSUFJb0FnQWlEMEVFYWpZQ0FDQVBJQWMyQWdBTUFnc2dEQkJKSUJWRmNnMEJJQUlnREJCQUlBd1FiQ0FDS0FJQUVLUUJOZ0lBREFFTElBSW9BZ0FoRnlBRUlCWnFJZ1FoQndOQUFrQWdCU0FIVFEwQUlBWkJnQkFnQnlnQ0FCQk9SUTBBSUFkQkJHb2hCd3dCQ3dzZ0RpSVBRUUJLQkVBRFFDQVBRUUJNSUFRZ0IwOXlSUVJBSUFkQkJHc2lCeWdDQUNFUUlBSWdBaWdDQUNJUlFRUnFOZ0lBSUJFZ0VEWUNBQ0FQUVFGcklROE1BUXNMSUE5QkFFd0VmMEVBQlNBR1FUQVFQUXNoRVFOQUlBSWdBaWdDQUNJUVFRUnFOZ0lBSUE5QkFFb0VRQ0FRSUJFMkFnQWdEMEVCYXlFUERBRUxDeUFRSUFrMkFnQUxBa0FnQkNBSFJnUkFJQVpCTUJBOUlROGdBaUFDS0FJQUloQkJCR29pQnpZQ0FDQVFJQTgyQWdBTUFRc2dDeEJKQkg5QmZ3VWdDMEVBRUFzc0FBQUxJUkJCQUNFUFFRQWhFZ05BSUFRZ0IwY0VRQUpBSUE4Z0VFY0VRQ0FQSVJFTUFRc2dBaUFDS0FJQUloQkJCR28yQWdBZ0VDQUtOZ0lBUVFBaEVTQUxFQWtnRWtFQmFpSVNUUVJBSUE4aEVBd0JDeUFMSUJJUUN5MEFBRUgvQUVZRVFFRi9JUkFNQVFzZ0N5QVNFQXNzQUFBaEVBc2dCMEVFYXlJSEtBSUFJUThnQWlBQ0tBSUFJaGhCQkdvMkFnQWdHQ0FQTmdJQUlCRkJBV29oRHd3QkN3c2dBaWdDQUNFSEN5QVhJQWNRclFFTElCUkJBV29oRkF3QkN3c0xwUUlCQVg4akFFRVFheUlLSkFBZ0NRSi9JQUFFUUNBQ0VLRUNJUUFDUUNBQkJFQWdDaUFBRUdrZ0F5QUtLQUlBTmdBQUlBb2dBQkJvREFFTElBb2dBQkNsQVNBRElBb29BZ0EyQUFBZ0NpQUFFRW9MSUFnZ0NoQlhJQW9RQ2hvZ0JDQUFFRWcyQWdBZ0JTQUFFRGcyQWdBZ0NpQUFFRGNnQmlBS0VEQWdDaEFLR2lBS0lBQVFTeUFISUFvUVZ5QUtFQW9hSUFBUVp3d0JDeUFDRUtBQ0lRQUNRQ0FCQkVBZ0NpQUFFR2tnQXlBS0tBSUFOZ0FBSUFvZ0FCQm9EQUVMSUFvZ0FCQ2xBU0FESUFvb0FnQTJBQUFnQ2lBQUVFb0xJQWdnQ2hCWElBb1FDaG9nQkNBQUVFZzJBZ0FnQlNBQUVEZzJBZ0FnQ2lBQUVEY2dCaUFLRURBZ0NoQUtHaUFLSUFBUVN5QUhJQW9RVnlBS0VBb2FJQUFRWndzMkFnQWdDa0VRYWlRQUM5UUZBUXAvSXdCQkVHc2lGQ1FBSUFJZ0FEWUNBQ0FEUVlBRWNTRVdBMEFnRlVFRVJnUkFJQTBRQ1VFQlN3UkFJQlFnRFJCQU5nSUlJQUlnRkVFSWFrRUJFS1lDSUEwUWJpQUNLQUlBRUtRQk5nSUFDeUFEUWJBQmNTSURRUkJIQkVBZ0FTQURRU0JHQkg4Z0FpZ0NBQVVnQUFzMkFnQUxJQlJCRUdva0FBOExBa0FDUUFKQUFrQUNRQUpBSUFnZ0ZXb3NBQUFPQlFBQkF3SUVCUXNnQVNBQ0tBSUFOZ0lBREFRTElBRWdBaWdDQURZQ0FDQUdRU0FRS1NFUElBSWdBaWdDQUNJUVFRRnFOZ0lBSUJBZ0R6b0FBQXdEQ3lBTkVFa05BaUFOUVFBUUN5MEFBQ0VQSUFJZ0FpZ0NBQ0lRUVFGcU5nSUFJQkFnRHpvQUFBd0NDeUFNRUVrZ0ZrVnlEUUVnQWlBTUVFQWdEQkJ1SUFJb0FnQVFwQUUyQWdBTUFRc2dBaWdDQUNFWElBUWdCMm9pQkNFUkEwQUNRQ0FGSUJGTkRRQWdCa0dBRUNBUkxBQUFFRVJGRFFBZ0VVRUJhaUVSREFFTEN5QU9JZzlCQUVvRVFBTkFJQTlCQUV3Z0JDQVJUM0pGQkVBZ0VVRUJheUlSTFFBQUlSQWdBaUFDS0FJQUloSkJBV28yQWdBZ0VpQVFPZ0FBSUE5QkFXc2hEd3dCQ3dzZ0QwRUFUQVIvUVFBRklBWkJNQkFwQ3lFU0EwQWdBaUFDS0FJQUloQkJBV28yQWdBZ0QwRUFTZ1JBSUJBZ0Vqb0FBQ0FQUVFGcklROE1BUXNMSUJBZ0NUb0FBQXNDUUNBRUlCRkdCRUFnQmtFd0VDa2hEeUFDSUFJb0FnQWlFRUVCYWpZQ0FDQVFJQTg2QUFBTUFRc2dDeEJKQkg5QmZ3VWdDMEVBRUFzc0FBQUxJUkJCQUNFUFFRQWhFd05BSUFRZ0VVWU5BUUpBSUE4Z0VFY0VRQ0FQSVJJTUFRc2dBaUFDS0FJQUloQkJBV28yQWdBZ0VDQUtPZ0FBUVFBaEVpQUxFQWtnRTBFQmFpSVRUUVJBSUE4aEVBd0JDeUFMSUJNUUN5MEFBRUgvQUVZRVFFRi9JUkFNQVFzZ0N5QVRFQXNzQUFBaEVBc2dFVUVCYXlJUkxRQUFJUThnQWlBQ0tBSUFJaGhCQVdvMkFnQWdHQ0FQT2dBQUlCSkJBV29oRHd3QUN3QUxJQmNnQWlnQ0FCQjVDeUFWUVFGcUlSVU1BQXNBQzZVQ0FRRi9Jd0JCRUdzaUNpUUFJQWtDZnlBQUJFQWdBaENvQWlFQUFrQWdBUVJBSUFvZ0FCQnBJQU1nQ2lnQ0FEWUFBQ0FLSUFBUWFBd0JDeUFLSUFBUXBRRWdBeUFLS0FJQU5nQUFJQW9nQUJCS0N5QUlJQW9RTUNBS0VBb2FJQVFnQUJCSU9nQUFJQVVnQUJBNE9nQUFJQW9nQUJBM0lBWWdDaEF3SUFvUUNob2dDaUFBRUVzZ0J5QUtFREFnQ2hBS0dpQUFFR2NNQVFzZ0FoQ25BaUVBQWtBZ0FRUkFJQW9nQUJCcElBTWdDaWdDQURZQUFDQUtJQUFRYUF3QkN5QUtJQUFRcFFFZ0F5QUtLQUlBTmdBQUlBb2dBQkJLQ3lBSUlBb1FNQ0FLRUFvYUlBUWdBQkJJT2dBQUlBVWdBQkE0T2dBQUlBb2dBQkEzSUFZZ0NoQXdJQW9RQ2hvZ0NpQUFFRXNnQnlBS0VEQWdDaEFLR2lBQUVHY0xOZ0lBSUFwQkVHb2tBQXNJQUNBQUtBSUFSUXMzQVFGL0l3QkJFR3NpQWlRQUlBSWdBQ2dDQURZQ0NDQUNJQUlvQWdnZ0FVRUNkR28yQWdnZ0FpZ0NDQ0VBSUFKQkVHb2tBQ0FBQ3dvQUlBQkJtSWdCRUdRTENnQWdBRUdnaUFFUVpBc0pBQ0FBSUFFUXJnSUxId0VCZnlBQktBSUFFUG9DSVFJZ0FDQUJLQUlBTmdJRUlBQWdBallDQUF2eER3RUtmeU1BUWJBRWF5SUxKQUFnQ3lBS05nS2tCQ0FMSUFFMkFxZ0VJQXRCTmpZQ1lDQUxJQXRCaUFGcUlBdEJrQUZxSUF0QjRBQnFJZ0VRSGlJUEtBSUFJZ28yQW9RQklBc2dDa0dRQTJvMkFvQUJJQUVRRVNFUklBdEIwQUJxRUVjaERpQUxRVUJyRUVjaERDQUxRVEJxRUVjaERTQUxRU0JxRUVjaEVDTUFRUkJySWdFa0FDQUxBbjhnQWdSQUlBRWdBeENoQWlJQ0VHa2dDeUFCS0FJQU5nQjRJQUVnQWhCb0lBMGdBUkJYSUFFUUNob2dBU0FDRUVvZ0RDQUJFRmNnQVJBS0dpQUxJQUlRU0RZQ2RDQUxJQUlRT0RZQ2NDQUJJQUlRTnlBUklBRVFNQ0FCRUFvYUlBRWdBaEJMSUE0Z0FSQlhJQUVRQ2hvZ0FoQm5EQUVMSUFFZ0F4Q2dBaUlDRUdrZ0N5QUJLQUlBTmdCNElBRWdBaEJvSUEwZ0FSQlhJQUVRQ2hvZ0FTQUNFRW9nRENBQkVGY2dBUkFLR2lBTElBSVFTRFlDZENBTElBSVFPRFlDY0NBQklBSVFOeUFSSUFFUU1DQUJFQW9hSUFFZ0FoQkxJQTRnQVJCWElBRVFDaG9nQWhCbkN6WUNIQ0FCUVJCcUpBQWdDU0FJS0FJQU5nSUFJQVJCZ0FSeEloSkJDWFloRTBFQUlRRkJBQ0VDQTBBZ0FpRUtBa0FDUUFKQUFrQWdBVUVFUmcwQUlBQWdDMEdvQkdvUU5rVU5BRUVBSVFRQ1FBSkFBa0FDUUFKQUFrQWdDMEg0QUdvZ0FXb3NBQUFPQlFFQUJBTUZDUXNnQVVFRFJnMEhJQWRCZ01BQUlBQVFJUkJPQkVBZ0MwRVFhaUFBRUtNQ0lCQWdDeWdDRUJESEFRd0NDeUFGSUFVb0FnQkJCSEkyQWdCQkFDRUFEQVlMSUFGQkEwWU5CZ3NEUUNBQUlBdEJxQVJxRURaRkRRWWdCMEdBd0FBZ0FCQWhFRTVGRFFZZ0MwRVFhaUFBRUtNQ0lCQWdDeWdDRUJESEFRd0FDd0FMSUF3UUNVRUFJQTBRQ1d0R0RRUUNRQ0FNRUFrRVFDQU5FQWtOQVFzZ0RCQUpJUU1nQUJBaElRSWdBd1JBSUF3UURTZ0NBQ0FDUmdSQUlBQVFKUm9nRENBS0lBd1FDVUVCU3hzaEFnd0lDeUFHUVFFNkFBQU1CZ3NnQWlBTkVBMG9BZ0JIRFFVZ0FCQWxHaUFHUVFFNkFBQWdEU0FLSUEwUUNVRUJTeHNoQWd3R0N5QUFFQ0VnREJBTktBSUFSZ1JBSUFBUUpSb2dEQ0FLSUF3UUNVRUJTeHNoQWd3R0N5QUFFQ0VnRFJBTktBSUFSZ1JBSUFBUUpSb2dCa0VCT2dBQUlBMGdDaUFORUFsQkFVc2JJUUlNQmdzZ0JTQUZLQUlBUVFSeU5nSUFRUUFoQUF3REN5QUtJQUZCQWtseVJRUkFRUUFoQWlBVElBRkJBa1lnQ3kwQWUwRUFSM0Z5UlEwRkN5QUxJQTRRUURZQ0NDQUxRUkJxSUF0QkNHb1FxQUVoQWdKQUlBRkZEUUFnQVNBTGFpMEFkMEVCU3cwQUEwQUNRQ0FMSUE0UWJEWUNDQ0FDSUF0QkNHb1FXMFVOQUNBSFFZREFBQ0FDS0FJQUtBSUFFRTVGRFFBZ0FoQ1ZBUXdCQ3dzZ0N5QU9FRUEyQWdnZ0FpZ0NBQ0FMS0FJSWEwRUNkU0lDSUJBUUNVMEVRQ0FMSUJBUWJEWUNDQ0FMUVFocVFRQWdBbXNRbndJaEF5QVFFR3doQkNBT0VFQWhGQ01BUVNCcklnSWtBQ0FDSUFRMkFoQWdBaUFETmdJWUlBSWdGRFlDQ0FOQUFrQWdBa0VZYWlBQ1FSQnFFRnNpQTBVTkFDQUNLQUlZS0FJQUlBSW9BZ2dvQWdCSERRQWdBa0VZYWhDVkFTQUNRUWhxRUpVQkRBRUxDeUFDUVNCcUpBQWdBMEVCY3cwQkN5QUxJQTRRUURZQ0FDQUxRUWhxSUFzUXFBRWFJQXNnQ3lnQ0NEWUNFQXNnQ3lBTEtBSVFOZ0lJQTBBQ1FDQUxJQTRRYkRZQ0FDQUxRUWhxSUFzUVcwVU5BQ0FBSUF0QnFBUnFFRFpGRFFBZ0FCQWhJQXNvQWdnb0FnQkhEUUFnQUJBbEdpQUxRUWhxRUpVQkRBRUxDeUFTUlEwRElBc2dEaEJzTmdJQUlBdEJDR29nQ3hCYlJRMERJQVVnQlNnQ0FFRUVjallDQUVFQUlRQU1BZ3NEUUFKQUlBQWdDMEdvQkdvUU5rVU5BQUovSUFkQmdCQWdBQkFoSWdJUVRnUkFJQWtvQWdBaUF5QUxLQUtrQkVZRVFDQUlJQWtnQzBHa0JHb1FoZ0VnQ1NnQ0FDRURDeUFKSUFOQkJHbzJBZ0FnQXlBQ05nSUFJQVJCQVdvTUFRc2dFUkFKUlNBRVJYSU5BU0FDSUFzb0FuQkhEUUVnQ3lnQ2hBRWlBaUFMS0FLQUFVWUVRQ0FQSUF0QmhBRnFJQXRCZ0FGcUVJWUJJQXNvQW9RQklRSUxJQXNnQWtFRWFqWUNoQUVnQWlBRU5nSUFRUUFMSVFRZ0FCQWxHZ3dCQ3dzZ0JFVWdDeWdDaEFFaUFpQVBLQUlBUm5KRkJFQWdDeWdDZ0FFZ0FrWUVRQ0FQSUF0QmhBRnFJQXRCZ0FGcUVJWUJJQXNvQW9RQklRSUxJQXNnQWtFRWFqWUNoQUVnQWlBRU5nSUFDd0pBSUFzb0FoeEJBRXdOQUFKQUlBQWdDMEdvQkdvUUtFVUVRQ0FBRUNFZ0N5Z0NkRVlOQVFzZ0JTQUZLQUlBUVFSeU5nSUFRUUFoQUF3REN3TkFJQUFRSlJvZ0N5Z0NIRUVBVEEwQkFrQWdBQ0FMUWFnRWFoQW9SUVJBSUFkQmdCQWdBQkFoRUU0TkFRc2dCU0FGS0FJQVFRUnlOZ0lBUVFBaEFBd0VDeUFKS0FJQUlBc29BcVFFUmdSQUlBZ2dDU0FMUWFRRWFoQ0dBUXNnQUJBaElRSWdDU0FKS0FJQUlnTkJCR28yQWdBZ0F5QUNOZ0lBSUFzZ0N5Z0NIRUVCYXpZQ0hBd0FDd0FMSUFvaEFpQUlLQUlBSUFrb0FnQkhEUU1nQlNBRktBSUFRUVJ5TmdJQVFRQWhBQXdCQ3dKQUlBcEZEUUJCQVNFRUEwQWdDaEFKSUFSTkRRRUNRQ0FBSUF0QnFBUnFFQ2hGQkVBZ0FCQWhJQW9nQkJDeEFTZ0NBRVlOQVFzZ0JTQUZLQUlBUVFSeU5nSUFRUUFoQUF3REN5QUFFQ1VhSUFSQkFXb2hCQXdBQ3dBTFFRRWhBQ0FQS0FJQUlBc29Bb1FCUmcwQVFRQWhBQ0FMUVFBMkFoQWdFU0FQS0FJQUlBc29Bb1FCSUF0QkVHb1FMU0FMS0FJUUJFQWdCU0FGS0FJQVFRUnlOZ0lBREFFTFFRRWhBQXNnRUJBS0dpQU5FQW9hSUF3UUNob2dEaEFLR2lBUkVBb2FJQThRSFNBTFFiQUVhaVFBSUFBUEN5QUtJUUlMSUFGQkFXb2hBUXdBQ3dBTEh3QWdBQ0FCRUtZQkVDY2dBUkNXQVNnQ0FDRUJJQUFRbGdFZ0FUWUNBQXMwQVFGL0l3QkJFR3NpQWlRQUlBSWdBQ2dDQURZQ0NDQUNJQUlvQWdnZ0FXbzJBZ2dnQWlnQ0NDRUFJQUpCRUdva0FDQUFDd29BSUFCQmlJZ0JFR1FMQ2dBZ0FFR1FpQUVRWkF2QkFRRUdmeU1BUVJCcklnUWtBQ0FBRUpZQktBSUFJUVVDZnlBQ0tBSUFJQUFvQWdCcklnTkIvLy8vL3dkSkJFQWdBMEVCZEF3QkMwRi9DeUlEUVFFZ0F4c2hBeUFCS0FJQUlRWWdBQ2dDQUNFSElBVkJOa1lFZjBFQUJTQUFLQUlBQ3lBREVKNEJJZ2dFUUNBRlFUWkhCRUFnQUJDbUFSb0xJQVJCTlRZQ0JDQUFJQVJCQ0dvZ0NDQUVRUVJxRUI0aUJSQ2xBaUFGRUIwZ0FTQUFLQUlBSUFZZ0IydHFOZ0lBSUFJZ0F5QUFLQUlBYWpZQ0FDQUVRUkJxSkFBUEN4QVhBQXNsQVFGL0lBRW9BZ0FRL3dKQkdIUkJHSFVoQWlBQUlBRW9BZ0EyQWdRZ0FDQUNPZ0FBQzU4UUFRcC9Jd0JCc0FScklnc2tBQ0FMSUFvMkFxUUVJQXNnQVRZQ3FBUWdDMEUyTmdKb0lBc2dDMEdJQVdvZ0MwR1FBV29nQzBIb0FHb2lBUkFlSWc4b0FnQWlDallDaEFFZ0N5QUtRWkFEYWpZQ2dBRWdBUkFSSVJFZ0MwSFlBR29RRVNFT0lBdEJ5QUJxRUJFaERDQUxRVGhxRUJFaERTQUxRU2hxRUJFaEVDTUFRUkJySWdFa0FDQUxBbjhnQWdSQUlBRWdBeENvQWlJQ0VHa2dDeUFCS0FJQU5nQjRJQUVnQWhCb0lBMGdBUkF3SUFFUUNob2dBU0FDRUVvZ0RDQUJFREFnQVJBS0dpQUxJQUlRU0RvQWR5QUxJQUlRT0RvQWRpQUJJQUlRTnlBUklBRVFNQ0FCRUFvYUlBRWdBaEJMSUE0Z0FSQXdJQUVRQ2hvZ0FoQm5EQUVMSUFFZ0F4Q25BaUlDRUdrZ0N5QUJLQUlBTmdCNElBRWdBaEJvSUEwZ0FSQXdJQUVRQ2hvZ0FTQUNFRW9nRENBQkVEQWdBUkFLR2lBTElBSVFTRG9BZHlBTElBSVFPRG9BZGlBQklBSVFOeUFSSUFFUU1DQUJFQW9hSUFFZ0FoQkxJQTRnQVJBd0lBRVFDaG9nQWhCbkN6WUNKQ0FCUVJCcUpBQWdDU0FJS0FJQU5nSUFJQVJCZ0FSeEloSkJDWFloRTBFQUlRRkJBQ0VDQTBBZ0FpRUtBa0FDUUFKQUFrQWdBVUVFUmcwQUlBQWdDMEdvQkdvUU1VVU5BRUVBSVFRQ1FBSkFBa0FDUUFKQUFrQWdDMEg0QUdvZ0FXb3NBQUFPQlFFQUJBTUZDUXNnQVVFRFJnMEhJQWRCZ01BQUlBQVFIeEJFQkVBZ0MwRVlhaUFBRUtvQ0lCQWdDeXdBR0JDaEFRd0NDeUFGSUFVb0FnQkJCSEkyQWdCQkFDRUFEQVlMSUFGQkEwWU5CZ3NEUUNBQUlBdEJxQVJxRURGRkRRWWdCMEdBd0FBZ0FCQWZFRVJGRFFZZ0MwRVlhaUFBRUtvQ0lCQWdDeXdBR0JDaEFRd0FDd0FMSUF3UUNVRUFJQTBRQ1d0R0RRUUNRQ0FNRUFrRVFDQU5FQWtOQVFzZ0RCQUpJUU1nQUJBZklRSWdBd1JBSUF4QkFCQUxMUUFBSUFKQi93RnhSZ1JBSUFBUUlob2dEQ0FLSUF3UUNVRUJTeHNoQWd3SUN5QUdRUUU2QUFBTUJnc2dEVUVBRUFzdEFBQWdBa0gvQVhGSERRVWdBQkFpR2lBR1FRRTZBQUFnRFNBS0lBMFFDVUVCU3hzaEFnd0dDeUFBRUI5Qi93RnhJQXhCQUJBTExRQUFSZ1JBSUFBUUlob2dEQ0FLSUF3UUNVRUJTeHNoQWd3R0N5QUFFQjlCL3dGeElBMUJBQkFMTFFBQVJnUkFJQUFRSWhvZ0JrRUJPZ0FBSUEwZ0NpQU5FQWxCQVVzYklRSU1CZ3NnQlNBRktBSUFRUVJ5TmdJQVFRQWhBQXdEQ3lBS0lBRkJBa2x5UlFSQVFRQWhBaUFUSUFGQkFrWWdDeTBBZTBFQVIzRnlSUTBGQ3lBTElBNFFRRFlDRUNBTFFSaHFJQXRCRUdvUXFBRWhBZ0pBSUFGRkRRQWdBU0FMYWkwQWQwRUJTdzBBQTBBQ1FDQUxJQTRRYmpZQ0VDQUNJQXRCRUdvUVcwVU5BQ0FIUVlEQUFDQUNLQUlBTEFBQUVFUkZEUUFnQWhDWEFRd0JDd3NnQ3lBT0VFQTJBaEFnQWlnQ0FDQUxLQUlRYXlJQ0lCQVFDVTBFUUNBTElCQVFiallDRUNBTFFSQnFRUUFnQW1zUXBnSWhBeUFRRUc0aEJDQU9FRUFoRkNNQVFTQnJJZ0lrQUNBQ0lBUTJBaEFnQWlBRE5nSVlJQUlnRkRZQ0NBTkFBa0FnQWtFWWFpQUNRUkJxRUZzaUEwVU5BQ0FDS0FJWUxRQUFJQUlvQWdndEFBQkhEUUFnQWtFWWFoQ1hBU0FDUVFocUVKY0JEQUVMQ3lBQ1FTQnFKQUFnQTBFQmN3MEJDeUFMSUE0UVFEWUNDQ0FMUVJCcUlBdEJDR29RcUFFYUlBc2dDeWdDRURZQ0dBc2dDeUFMS0FJWU5nSVFBMEFDUUNBTElBNFFiallDQ0NBTFFSQnFJQXRCQ0dvUVcwVU5BQ0FBSUF0QnFBUnFFREZGRFFBZ0FCQWZRZjhCY1NBTEtBSVFMUUFBUncwQUlBQVFJaG9nQzBFUWFoQ1hBUXdCQ3dzZ0VrVU5BeUFMSUE0UWJqWUNDQ0FMUVJCcUlBdEJDR29RVzBVTkF5QUZJQVVvQWdCQkJISTJBZ0JCQUNFQURBSUxBMEFDUUNBQUlBdEJxQVJxRURGRkRRQUNmeUFIUVlBUUlBQVFIeUlDRUVRRVFDQUpLQUlBSWdNZ0N5Z0NwQVJHQkVBZ0NDQUpJQXRCcEFScUVLa0NJQWtvQWdBaEF3c2dDU0FEUVFGcU5nSUFJQU1nQWpvQUFDQUVRUUZxREFFTElCRVFDVVVnQkVWeURRRWdDeTBBZGlBQ1FmOEJjVWNOQVNBTEtBS0VBU0lDSUFzb0FvQUJSZ1JBSUE4Z0MwR0VBV29nQzBHQUFXb1FoZ0VnQ3lnQ2hBRWhBZ3NnQ3lBQ1FRUnFOZ0tFQVNBQ0lBUTJBZ0JCQUFzaEJDQUFFQ0lhREFFTEN5QUVSU0FMS0FLRUFTSUNJQThvQWdCR2NrVUVRQ0FMS0FLQUFTQUNSZ1JBSUE4Z0MwR0VBV29nQzBHQUFXb1FoZ0VnQ3lnQ2hBRWhBZ3NnQ3lBQ1FRUnFOZ0tFQVNBQ0lBUTJBZ0FMQWtBZ0N5Z0NKRUVBVEEwQUFrQWdBQ0FMUWFnRWFoQW1SUVJBSUFBUUgwSC9BWEVnQ3kwQWQwWU5BUXNnQlNBRktBSUFRUVJ5TmdJQVFRQWhBQXdEQ3dOQUlBQVFJaG9nQ3lnQ0pFRUFUQTBCQWtBZ0FDQUxRYWdFYWhBbVJRUkFJQWRCZ0JBZ0FCQWZFRVFOQVFzZ0JTQUZLQUlBUVFSeU5nSUFRUUFoQUF3RUN5QUpLQUlBSUFzb0FxUUVSZ1JBSUFnZ0NTQUxRYVFFYWhDcEFnc2dBQkFmSVFJZ0NTQUpLQUlBSWdOQkFXbzJBZ0FnQXlBQ09nQUFJQXNnQ3lnQ0pFRUJhellDSkF3QUN3QUxJQW9oQWlBSUtBSUFJQWtvQWdCSERRTWdCU0FGS0FJQVFRUnlOZ0lBUVFBaEFBd0JDd0pBSUFwRkRRQkJBU0VFQTBBZ0NoQUpJQVJORFFFQ1FDQUFJQXRCcUFScUVDWkZCRUFnQUJBZlFmOEJjU0FLSUFRUUN5MEFBRVlOQVFzZ0JTQUZLQUlBUVFSeU5nSUFRUUFoQUF3REN5QUFFQ0lhSUFSQkFXb2hCQXdBQ3dBTFFRRWhBQ0FQS0FJQUlBc29Bb1FCUmcwQVFRQWhBQ0FMUVFBMkFoZ2dFU0FQS0FJQUlBc29Bb1FCSUF0QkdHb1FMU0FMS0FJWUJFQWdCU0FGS0FJQVFRUnlOZ0lBREFFTFFRRWhBQXNnRUJBS0dpQU5FQW9hSUF3UUNob2dEaEFLR2lBUkVBb2FJQThRSFNBTFFiQUVhaVFBSUFBUEN5QUtJUUlMSUFGQkFXb2hBUXdBQ3dBTERBQWdBRUVCUVMwUXV3SWFDd3dBSUFCQkFVRXRFTzhCR2dzS0FDQUJJQUJyUVFKMUN3UUFJQUVMTlFFQmZ5TUFRUkJySWdJa0FDQUNJQUF0QUFBNkFBOGdBQ0FCTFFBQU9nQUFJQUVnQWtFUGFpMEFBRG9BQUNBQ1FSQnFKQUFMWkFFQmZ5TUFRUkJySWdZa0FDQUdRUUE2QUE4Z0JpQUZPZ0FPSUFZZ0JEb0FEU0FHUVNVNkFBd2dCUVJBSUFaQkRXb2dCa0VPYWhDd0Fnc2dBaUFCSUFFZ0FpZ0NBQkR1QWlBR1FReHFJQU1nQUNnQ0FCQUJJQUZxTmdJQUlBWkJFR29rQUF2eUFRRUZmeU1BUVJCcklnTWtBQ0FDUWdBM0FBQWdBa0lBTndBSUlBTWdBU2tBQ0RjRENDQURJQUVwQUFBM0F3QURRQ0FBSUFWcUlRWkJBQ0VCQTBBZ0JpMEFBRUVISUFGcmRrRUJjUVJBSUFJZ0F4Q2RBUXNnQXkwQUR5RUhJQU5CREdvaUJDQURMUUFMUVI5MElBUVFsQUZCQVhaeUVKTUJJQU5CQ0dvaUJDQURMUUFIUVI5MElBUVFsQUZCQVhaeUVKTUJJQU5CQkdvaUJDQURMUUFEUVI5MElBUVFsQUZCQVhaeUVKTUJJQU1nQXhDVUFVRUJkaENUQVNBSFFRRnhCRUFnQXlBRExRQUFRZUVCY3pvQUFBc2dBVUVCYWlJQlFRaEhEUUFMSUFWQkFXb2lCVUVRUncwQUN5QURRUkJxSkFBTFFRQWdBU0FDSUFNZ0JFRUVFRmdoQVNBRExRQUFRUVJ4UlFSQUlBQWdBVUhRRDJvZ0FVSHNEbW9nQVNBQlFlUUFTQnNnQVVIRkFFZ2JRZXdPYXpZQ0FBc0xRQUFnQWlBRElBQkJDR29nQUNnQ0NDZ0NCQkVBQUNJQUlBQkJvQUpxSUFVZ0JFRUFFTElCSUFCcklnQkJud0pNQkVBZ0FTQUFRUXh0UVF4dk5nSUFDd3RBQUNBQ0lBTWdBRUVJYWlBQUtBSUlLQUlBRVFBQUlnQWdBRUdvQVdvZ0JTQUVRUUFRc2dFZ0FHc2lBRUduQVV3RVFDQUJJQUJCREcxQkIyODJBZ0FMQzBFQUlBRWdBaUFESUFSQkJCQlpJUUVnQXkwQUFFRUVjVVVFUUNBQUlBRkIwQTlxSUFGQjdBNXFJQUVnQVVIa0FFZ2JJQUZCeFFCSUcwSHNEbXMyQWdBTEMwQUFJQUlnQXlBQVFRaHFJQUFvQWdnb0FnUVJBQUFpQUNBQVFhQUNhaUFGSUFSQkFCQzBBU0FBYXlJQVFaOENUQVJBSUFFZ0FFRU1iVUVNYnpZQ0FBc0xRQUFnQWlBRElBQkJDR29nQUNnQ0NDZ0NBQkVBQUNJQUlBQkJxQUZxSUFVZ0JFRUFFTFFCSUFCcklnQkJwd0ZNQkVBZ0FTQUFRUXh0UVFkdk5nSUFDd3NFQUVFQ0M2OEZBUXAvSXdCQkVHc2lDU1FBSUFZUU95RUtJQWtnQmhDTUFTSU5FRGNnQlNBRE5nSUFBa0FDUUNBQUlnY3RBQUFpQmtFcmF3NERBQUVBQVFzZ0NpQUdRUmgwUVJoMUVEMGhCaUFGSUFVb0FnQWlCMEVFYWpZQ0FDQUhJQVkyQWdBZ0FFRUJhaUVIQ3dKQUFrQWdBaUFISWdaclFRRk1EUUFnQnkwQUFFRXdSdzBBSUFjdEFBRkJJSEpCK0FCSERRQWdDa0V3RUQwaEJpQUZJQVVvQWdBaUNFRUVhallDQUNBSUlBWTJBZ0FnQ2lBSExBQUJFRDBoQmlBRklBVW9BZ0FpQ0VFRWFqWUNBQ0FJSUFZMkFnQWdCMEVDYWlJSElRWURRQ0FDSUFaTkRRSWdCaXdBQUJBV0VOZ0NSUTBDSUFaQkFXb2hCZ3dBQ3dBTEEwQWdBaUFHVFEwQklBWXNBQUFoQ0JBV0dpQUlFRVZGRFFFZ0JrRUJhaUVHREFBTEFBc0NRQ0FKRUVrRVFDQUtJQWNnQmlBRktBSUFFR01nQlNBRktBSUFJQVlnQjJ0QkFuUnFOZ0lBREFFTElBY2dCaEI1SUEwUU9DRU9JQWNoQ0FOQUlBWWdDRTBFUUNBRElBY2dBR3RCQW5ScUlBVW9BZ0FRclFFRkFrQWdDU0FMRUFzc0FBQkJBRXdOQUNBTUlBa2dDeEFMTEFBQVJ3MEFJQVVnQlNnQ0FDSU1RUVJxTmdJQUlBd2dEallDQUNBTElBc2dDUkFKUVFGclNXb2hDMEVBSVF3TElBb2dDQ3dBQUJBOUlROGdCU0FGS0FJQUloQkJCR28yQWdBZ0VDQVBOZ0lBSUFoQkFXb2hDQ0FNUVFGcUlRd01BUXNMQ3dKQUFrQURRQ0FDSUFaTkRRRWdCaTBBQUNJSFFTNUhCRUFnQ2lBSFFSaDBRUmgxRUQwaEJ5QUZJQVVvQWdBaUNFRUVhallDQUNBSUlBYzJBZ0FnQmtFQmFpRUdEQUVMQ3lBTkVFZ2hCeUFGSUFVb0FnQWlDMEVFYWlJSU5nSUFJQXNnQnpZQ0FDQUdRUUZxSVFZTUFRc2dCU2dDQUNFSUN5QUtJQVlnQWlBSUVHTWdCU0FGS0FJQUlBSWdCbXRCQW5ScUlnVTJBZ0FnQkNBRklBTWdBU0FBYTBFQ2RHb2dBU0FDUmhzMkFnQWdDUkFLR2lBSlFSQnFKQUFMdUFFQkJYOGpBRUVRYXlJSEpBQWpBRUVRYXlJRkpBQUNRQ0FCUWUvLy8vOERUUVJBQWtBZ0FVRUJUUVJBSUFBZ0FSQTZJQUFoQmd3QkN5QUFJQUFnQVJDQ0FVRUJhaUlERUlFQklnWVFUU0FBSUFNUVRDQUFJQUVRT1FzZ0JpRUVJQUVpQXdSL0lBTUVRQU5BSUFRZ0FqWUNBQ0FFUVFScUlRUWdBMEVCYXlJRERRQUxDMEVBQlNBRUN4b2dCVUVBTmdJTUlBWWdBVUVDZEdvZ0JVRU1haEF6SUFWQkVHb2tBQXdCQ3hBWEFBc2dCMEVRYWlRQUlBQUxtUVVCQ244akFFRVFheUlKSkFBZ0JoQXlJUW9nQ1NBR0VJNEJJZzBRTnlBRklBTTJBZ0FDUUFKQUlBQWlCeTBBQUNJR1FTdHJEZ01BQVFBQkN5QUtJQVpCR0hSQkdIVVFLU0VHSUFVZ0JTZ0NBQ0lIUVFGcU5nSUFJQWNnQmpvQUFDQUFRUUZxSVFjTEFrQUNRQ0FDSUFjaUJtdEJBVXdOQUNBSExRQUFRVEJIRFFBZ0J5MEFBVUVnY2tINEFFY05BQ0FLUVRBUUtTRUdJQVVnQlNnQ0FDSUlRUUZxTmdJQUlBZ2dCam9BQUNBS0lBY3NBQUVRS1NFR0lBVWdCU2dDQUNJSVFRRnFOZ0lBSUFnZ0Jqb0FBQ0FIUVFKcUlnY2hCZ05BSUFJZ0JrME5BaUFHTEFBQUVCWVEyQUpGRFFJZ0JrRUJhaUVHREFBTEFBc0RRQ0FDSUFaTkRRRWdCaXdBQUNFSUVCWWFJQWdRUlVVTkFTQUdRUUZxSVFZTUFBc0FDd0pBSUFrUVNRUkFJQW9nQnlBR0lBVW9BZ0FRYnlBRklBVW9BZ0FnQmlBSGEybzJBZ0FNQVFzZ0J5QUdFSGtnRFJBNElRNGdCeUVJQTBBZ0JpQUlUUVJBSUFNZ0J5QUFhMm9nQlNnQ0FCQjVCUUpBSUFrZ0RCQUxMQUFBUVFCTURRQWdDeUFKSUF3UUN5d0FBRWNOQUNBRklBVW9BZ0FpQzBFQmFqWUNBQ0FMSUE0NkFBQWdEQ0FNSUFrUUNVRUJhMGxxSVF4QkFDRUxDeUFLSUFnc0FBQVFLU0VQSUFVZ0JTZ0NBQ0lRUVFGcU5nSUFJQkFnRHpvQUFDQUlRUUZxSVFnZ0MwRUJhaUVMREFFTEN3c0RRQUpBSUFJZ0Jrc0VRQ0FHTFFBQUlnZEJMa2NOQVNBTkVFZ2hCeUFGSUFVb0FnQWlDRUVCYWpZQ0FDQUlJQWM2QUFBZ0JrRUJhaUVHQ3lBS0lBWWdBaUFGS0FJQUVHOGdCU0FGS0FJQUlBSWdCbXRxSWdVMkFnQWdCQ0FGSUFNZ0FTQUFhMm9nQVNBQ1JoczJBZ0FnQ1JBS0dpQUpRUkJxSkFBUEN5QUtJQWRCR0hSQkdIVVFLU0VISUFVZ0JTZ0NBQ0lJUVFGcU5nSUFJQWdnQnpvQUFDQUdRUUZxSVFZTUFBc0FDL1FCQVFsL0lBRVFEU0VFSUFFUUNTRUhJd0JCSUdzaUFTUUFBa0FnQVVFWWFpQUFFSVFESWdndEFBQkZEUUFnQVVFSWFpQUFFTUFCSVFrZ0FDQUFLQUlBUVF4cktBSUFhaUlGS0FJRUlRb0NRRUYvSUFVaUFpZ0NUQkJlUlFSQUlBSW9Ba3doQWd3QkN5QUNBbjhqQUVFUWF5SURKQUFnQTBFSWFpSUdJQUlRRHlBR0VESkJJQkFwSVFJZ0JoQU9JQU5CRUdva0FDQUNDellDVEFzZ0FrRVlkRUVZZFNFQ0lBRWdDU2dDQUNBRUlBUWdCMm9pQXlBRUlBcEJzQUZ4UVNCR0d5QURJQVVnQWhCV05nSVFJQUVvQWhBTkFDQUFJQUFvQWdCQkRHc29BZ0JxUVFVUWdBRUxJQWdRZ2dNZ0FVRWdhaVFBQ3pZQkFuOUI5QUVRR1NJQ0JIOGdBaUFBSUFGQkEzUVFpUU1pQUVFQVNBUkFJQUlRRUVFQUR3c2dBaUFBTmdMd0FTQUNCU0FEQ3d1ZEF3RUNmeU1BUWVBQ2F5SUFKQUFnQUNBQ05nTFFBaUFBSUFFMkF0Z0NJQU1RWENFR0lBTWdBRUhnQVdvUW1RRWhCeUFBUWRBQmFpQURJQUJCekFKcUVKZ0JJQUJCd0FGcUVCRWlBU0FCRUJNUURDQUFJQUZCQUJBTElnSTJBcndCSUFBZ0FFRVFhallDRENBQVFRQTJBZ2dEUUFKQUlBQkIyQUpxSUFCQjBBSnFFRFpGRFFBZ0FDZ0N2QUVnQVJBSklBSnFSZ1JBSUFFUUNTRURJQUVnQVJBSlFRRjBFQXdnQVNBQkVCTVFEQ0FBSUFNZ0FVRUFFQXNpQW1vMkFyd0JDeUFBUWRnQ2FoQWhJQVlnQWlBQVFid0JhaUFBUVFocUlBQW9Bc3dDSUFCQjBBRnFJQUJCRUdvZ0FFRU1haUFIRUlzQkRRQWdBRUhZQW1vUUpSb01BUXNMQWtBZ0FFSFFBV29RQ1VVTkFDQUFLQUlNSWdNZ0FFRVFhbXRCbndGS0RRQWdBQ0FEUVFScU5nSU1JQU1nQUNnQ0NEWUNBQXNnQlNBQ0lBQW9BcndCSUFRZ0JoREhBallDQUNBQVFkQUJhaUFBUVJCcUlBQW9BZ3dnQkJBdElBQkIyQUpxSUFCQjBBSnFFQ2dFUUNBRUlBUW9BZ0JCQW5JMkFnQUxJQUFvQXRnQ0lRSWdBUkFLR2lBQVFkQUJhaEFLR2lBQVFlQUNhaVFBSUFJTFZBRUNmeU1BUVJCcklnTWtBQ0FEUVFJMkFnd2dBaUFCRUFraUJFc0VRQkFYQUFzZ0FSQU5JUUVnQXlBRUlBSnJOZ0lFSUFBZ0FTQUNhaUFEUVF4cUlBTkJCR29Rb2dFb0FnQVE5Z0VnQTBFUWFpUUFDMElCQVg4akFFRVFheUlESkFBZ0F5QUJOZ0lNSUFNZ0FqWUNDQ0FESUFOQkRHb1FVaUVCSUFCQjh4c2dBeWdDQ0JEaUFpRUFJQUVRVVNBRFFSQnFKQUFnQUFzWUFDQUFJQUFvQWdCQkRHc29BZ0JxUVFJUkFBQWFJQUFMc1FJQ0JINEZmeU1BUVNCcklnZ2tBQUpBQWtBQ1FDQUJJQUpIQkVCQjFJRUJLQUlBSVF4QjFJRUJRUUEyQWdBakFFRVFheUlKSkFBUUZob2pBRUVRYXlJS0pBQWpBRUVRYXlJTEpBQWdDeUFCSUFoQkhHcEJBaERZQVNBTEtRTUFJUVFnQ2lBTEtRTUlOd01JSUFvZ0JEY0RBQ0FMUVJCcUpBQWdDaWtEQUNFRUlBa2dDaWtEQ0RjRENDQUpJQVEzQXdBZ0NrRVFhaVFBSUFrcEF3QWhCQ0FJSUFrcEF3ZzNBeEFnQ0NBRU53TUlJQWxCRUdva0FDQUlLUU1RSVFRZ0NDa0RDQ0VGUWRTQkFTZ0NBQ0lCUlEwQklBZ29BaHdnQWtjTkFpQUZJUVlnQkNFSElBRkJ4QUJIRFFNTUFnc2dBMEVFTmdJQURBSUxRZFNCQVNBTU5nSUFJQWdvQWh3Z0FrWU5BUXNnQTBFRU5nSUFJQVloQlNBSElRUUxJQUFnQlRjREFDQUFJQVEzQXdnZ0NFRWdhaVFBQzdZQkFnSjhBMzhqQUVFUWF5SUZKQUFDUUFKQUFrQWdBQ0FCUndSQVFkU0JBU2dDQUNFSFFkU0JBVUVBTmdJQUVCWWFJd0JCRUdzaUJpUUFJQVlnQUNBRlFReHFRUUVRMkFFZ0Jpa0RBQ0FHS1FNSUVOMEJJUU1nQmtFUWFpUUFRZFNCQVNnQ0FDSUFSUTBCSUFVb0Fnd2dBVWNOQWlBRElRUWdBRUhFQUVjTkF3d0NDeUFDUVFRMkFnQU1BZ3RCMUlFQklBYzJBZ0FnQlNnQ0RDQUJSZzBCQ3lBQ1FRUTJBZ0FnQkNFREN5QUZRUkJxSkFBZ0F3dTJBUUlDZlFOL0l3QkJFR3NpQlNRQUFrQUNRQUpBSUFBZ0FVY0VRRUhVZ1FFb0FnQWhCMEhVZ1FGQkFEWUNBQkFXR2lNQVFSQnJJZ1lrQUNBR0lBQWdCVUVNYWtFQUVOZ0JJQVlwQXdBZ0Jpa0RDQkRrQWlFRElBWkJFR29rQUVIVWdRRW9BZ0FpQUVVTkFTQUZLQUlNSUFGSERRSWdBeUVFSUFCQnhBQkhEUU1NQWdzZ0FrRUVOZ0lBREFJTFFkU0JBU0FITmdJQUlBVW9BZ3dnQVVZTkFRc2dBa0VFTmdJQUlBUWhBd3NnQlVFUWFpUUFJQU1MeGdFQ0EzOEJmaU1BUVJCcklnUWtBQUorQWtBQ1FDQUFJQUZIQkVBQ1FBSkFJQUF0QUFBaUJVRXRSdzBBSUFCQkFXb2lBQ0FCUncwQURBRUxRZFNCQVNnQ0FDRUdRZFNCQVVFQU5nSUFJQUFnQkVFTWFpQURFQllRMlFFaEJ3SkFRZFNCQVNnQ0FDSUFCRUFnQkNnQ0RDQUJSdzBCSUFCQnhBQkdEUVFNQlF0QjFJRUJJQVkyQWdBZ0JDZ0NEQ0FCUmcwRUN3c0xJQUpCQkRZQ0FFSUFEQUlMSUFKQkJEWUNBRUovREFFTFFnQWdCMzBnQnlBRlFTMUdHd3NoQnlBRVFSQnFKQUFnQnd2WEFRSURmd0YrSXdCQkVHc2lCQ1FBQW44Q1FBSkFBa0FnQUNBQlJ3UkFBa0FDUUNBQUxRQUFJZ1ZCTFVjTkFDQUFRUUZxSWdBZ0FVY05BQXdCQzBIVWdRRW9BZ0FoQmtIVWdRRkJBRFlDQUNBQUlBUkJER29nQXhBV0VOa0JJUWNDUUVIVWdRRW9BZ0FpQUFSQUlBUW9BZ3dnQVVjTkFTQUFRY1FBUmcwRkRBUUxRZFNCQVNBR05nSUFJQVFvQWd3Z0FVWU5Bd3NMQ3lBQ1FRUTJBZ0JCQUF3REN5QUhRdi8vLy84UFdBMEJDeUFDUVFRMkFnQkJmd3dCQzBFQUlBZW5JZ0JySUFBZ0JVRXRSaHNMSVFBZ0JFRVFhaVFBSUFBTGtnTUJBWDhqQUVHUUFtc2lBQ1FBSUFBZ0FqWUNnQUlnQUNBQk5nS0lBaUFERUZ3aEJpQUFRZEFCYWlBRElBQkIvd0ZxRUpvQklBQkJ3QUZxRUJFaUFTQUJFQk1RRENBQUlBRkJBQkFMSWdJMkFyd0JJQUFnQUVFUWFqWUNEQ0FBUVFBMkFnZ0RRQUpBSUFCQmlBSnFJQUJCZ0FKcUVERkZEUUFnQUNnQ3ZBRWdBUkFKSUFKcVJnUkFJQUVRQ1NFRElBRWdBUkFKUVFGMEVBd2dBU0FCRUJNUURDQUFJQU1nQVVFQUVBc2lBbW8yQXJ3QkN5QUFRWWdDYWhBZklBWWdBaUFBUWJ3QmFpQUFRUWhxSUFBc0FQOEJJQUJCMEFGcUlBQkJFR29nQUVFTWFrSGcwQUFRalFFTkFDQUFRWWdDYWhBaUdnd0JDd3NDUUNBQVFkQUJhaEFKUlEwQUlBQW9BZ3dpQXlBQVFSQnFhMEdmQVVvTkFDQUFJQU5CQkdvMkFnd2dBeUFBS0FJSU5nSUFDeUFGSUFJZ0FDZ0N2QUVnQkNBR0VNY0NOZ0lBSUFCQjBBRnFJQUJCRUdvZ0FDZ0NEQ0FFRUMwZ0FFR0lBbW9nQUVHQUFtb1FKZ1JBSUFRZ0JDZ0NBRUVDY2pZQ0FBc2dBQ2dDaUFJaEFpQUJFQW9hSUFCQjBBRnFFQW9hSUFCQmtBSnFKQUFnQWd2Y0FRSURmd0YrSXdCQkVHc2lCQ1FBQW44Q1FBSkFBa0FnQUNBQlJ3UkFBa0FDUUNBQUxRQUFJZ1ZCTFVjTkFDQUFRUUZxSWdBZ0FVY05BQXdCQzBIVWdRRW9BZ0FoQmtIVWdRRkJBRFlDQUNBQUlBUkJER29nQXhBV0VOa0JJUWNDUUVIVWdRRW9BZ0FpQUFSQUlBUW9BZ3dnQVVjTkFTQUFRY1FBUmcwRkRBUUxRZFNCQVNBR05nSUFJQVFvQWd3Z0FVWU5Bd3NMQ3lBQ1FRUTJBZ0JCQUF3REN5QUhRdi8vQTFnTkFRc2dBa0VFTmdJQVFmLy9Bd3dCQzBFQUlBZW5JZ0JySUFBZ0JVRXRSaHNMSVFBZ0JFRVFhaVFBSUFCQi8vOERjUXUyQVFJQmZnSi9Jd0JCRUdzaUJTUUFBa0FDUUNBQUlBRkhCRUJCMUlFQktBSUFJUVpCMUlFQlFRQTJBZ0FnQUNBRlFReHFJQU1RRmhEUEFpRUVBa0JCMUlFQktBSUFJZ0FFUUNBRktBSU1JQUZIRFFFZ0FFSEVBRVlOQXd3RUMwSFVnUUVnQmpZQ0FDQUZLQUlNSUFGR0RRTUxDeUFDUVFRMkFnQkNBQ0VFREFFTElBSkJCRFlDQUNBRVFnQlZCRUJDLy8vLy8vLy8vLy8vQUNFRURBRUxRb0NBZ0lDQWdJQ0FnSDhoQkFzZ0JVRVFhaVFBSUFRTHd3RUNBbjhCZmlNQVFSQnJJZ1FrQUFKL0FrQUNRQ0FBSUFGSEJFQkIxSUVCS0FJQUlRVkIxSUVCUVFBMkFnQWdBQ0FFUVF4cUlBTVFGaERQQWlFR0FrQkIxSUVCS0FJQUlnQUVRQ0FFS0FJTUlBRkhEUUVnQUVIRUFFWU5CQXdEQzBIVWdRRWdCVFlDQUNBRUtBSU1JQUZHRFFJTEN5QUNRUVEyQWdCQkFBd0NDeUFHUW9DQWdJQjRVeUFHUXYvLy8vOEhWWElOQUNBR3B3d0JDeUFDUVFRMkFnQkIvLy8vL3djZ0JrSUFWUTBBR2tHQWdJQ0FlQXNoQUNBRVFSQnFKQUFnQUF2bUFnRUVmeUFBUVVCcklnTkJ2Q2cyQWdBZ0EwSDBJVFlDQUNBQVFmd2xOZ0lBSUFOQnBDWTJBZ0FnQUVHUUpqWUNDQ0FBUWJRbUtBSUFJZ0UyQWdBZ0FDQUJRUXhyS0FJQWFrRzRKaWdDQURZQ0FDQUFRUUEyQWdRZ0FDQUFLQUlBUVF4cktBSUFhaUlDUVFBMkFoUWdBaUFBUVF4cUlnRTJBaGdnQWtFQU5nSU1JQUpDZ3FDQWdPQUFOd0lFSUFJZ0FVVTJBaEFnQWtFZ2FrRUFRU2dRUmhvZ0FrRWNhaENQQWlBQ1FRQTJBa2dnQWtGL05nSk1JQUJCQ0dvaUFrRzhKaWdDQUNJRU5nSUFJQUlnQkVFTWF5Z0NBR3BCd0NZb0FnQTJBZ0FnQUVHd0ppZ0NBQ0lDTmdJQUlBQWdBa0VNYXlnQ0FHcEJ4Q1lvQWdBMkFnQWdBRUhJSmlnQ0FEWUNDQ0FBUWZ3bE5nSUFJQU5CcENZMkFnQWdBRUdRSmpZQ0NDQUJRYndmTmdJQUlBRkJCR29RandJZ0FVSUFOd0lZSUFGQ0FEY0NFQ0FCUWdBM0FnZ2dBVUcwSVRZQ0FDQUJRU0JxRUJFYUlBRkJHRFlDTUNBQlFRQTJBaXdnQUFzS0FDQUJJQUJyUVF4dEM1UUJBUVIvSXdCQkVHc2lCU1FBSUFFZ0FoQ2lBaUlFUWUvLy8vOERUUVJBQWtBZ0JFRUJUUVJBSUFBZ0JCQTZJQUFoQXd3QkN5QUFJQUFnQkJDQ0FVRUJhaUlHRUlFQklnTVFUU0FBSUFZUVRDQUFJQVFRT1FzRFFDQUJJQUpIQkVBZ0F5QUJFRE1nQTBFRWFpRURJQUZCQkdvaEFRd0JDd3NnQlVFQU5nSU1JQU1nQlVFTWFoQXpJQVZCRUdva0FBOExFQmNBQ3hZQUlBQWdBU0FDUW9DQWdJQ0FnSUNBZ0g4UTBBSUxrZ1FDQjM4RWZpTUFRUkJySWdna0FBSkFBa0FDUUNBQ1FTUk1CRUFnQUMwQUFDSUZEUUVnQUNFRURBSUxRZFNCQVVFY05nSUFRZ0FoQXd3Q0N5QUFJUVFDUUFOQUlBVkJHSFJCR0hVUWNFVU5BU0FFTFFBQklRVWdCRUVCYWlFRUlBVU5BQXNNQVFzQ1FDQUVMUUFBSWdWQksyc09Bd0FCQUFFTFFYOUJBQ0FGUVMxR0d5RUhJQVJCQVdvaEJBc0Nmd0pBSUFKQmIzRU5BQ0FFTFFBQVFUQkhEUUJCQVNFSklBUXRBQUZCM3dGeFFkZ0FSZ1JBSUFSQkFtb2hCRUVRREFJTElBUkJBV29oQkNBQ1FRZ2dBaHNNQVFzZ0FrRUtJQUliQ3lJS3JDRU1RUUFoQWdOQUFrQkJVQ0VGQWtBZ0JDd0FBQ0lHUVRCclFmOEJjVUVLU1EwQVFhbC9JUVVnQmtIaEFHdEIvd0Z4UVJwSkRRQkJTU0VGSUFaQndRQnJRZjhCY1VFWlN3MEJDeUFGSUFacUlnWWdDazROQUNBSUlBeENBQ0FMUWdBUUswRUJJUVVDUUNBSUtRTUlRZ0JTRFFBZ0N5QU1maUlOSUFhc0lnNUNmNFZXRFFBZ0RTQU9mQ0VMUVFFaENTQUNJUVVMSUFSQkFXb2hCQ0FGSVFJTUFRc0xJQUVFUUNBQklBUWdBQ0FKR3pZQ0FBc0NRQUpBSUFJRVFFSFVnUUZCeEFBMkFnQWdCMEVBSUFOQ0FZTWlERkFiSVFjZ0F5RUxEQUVMSUFNZ0MxWU5BU0FEUWdHRElRd0xJQXluSUFkeVJRUkFRZFNCQVVIRUFEWUNBQ0FEUWdGOUlRTU1BZ3NnQXlBTFdnMEFRZFNCQVVIRUFEWUNBQXdCQ3lBTElBZXNJZ09GSUFOOUlRTUxJQWhCRUdva0FDQURDekVCQVg5QjJJWUJLQUlBSVFFZ0FBUkFRZGlHQVVIb2hRRWdBQ0FBUVg5R0d6WUNBQXRCZnlBQklBRkI2SVVCUmhzTHJRZ0JCWDhnQVNnQ0FDRUVBa0FDUUFKQUFrQUNRQUpBQWtBQ2Z3SkFBa0FDUUFKQUlBTkZEUUFnQXlnQ0FDSUdSUTBBSUFCRkJFQWdBaUVEREFNTElBTkJBRFlDQUNBQ0lRTU1BUXNDUUVIWWhnRW9BZ0FvQWdCRkJFQWdBRVVOQVNBQ1JRME1JQUloQmdOQUlBUXNBQUFpQXdSQUlBQWdBMEgvdndOeE5nSUFJQUJCQkdvaEFDQUVRUUZxSVFRZ0JrRUJheUlHRFFFTURnc0xJQUJCQURZQ0FDQUJRUUEyQWdBZ0FpQUdhdzhMSUFJaEF5QUFSUTBEREFVTElBUVFrZ0VQQzBFQklRVU1Bd3RCQUF3QkMwRUJDeUVGQTBBZ0JVVUVRQ0FFTFFBQVFRTjJJZ1ZCRUdzZ0JrRWFkU0FGYW5KQkIwc05Bd0ovSUFSQkFXb2lCU0FHUVlDQWdCQnhSUTBBR2lBRkxRQUFRY0FCY1VHQUFVY0VRQ0FFUVFGcklRUU1Cd3NnQkVFQ2FpSUZJQVpCZ0lBZ2NVVU5BQm9nQlMwQUFFSEFBWEZCZ0FGSEJFQWdCRUVCYXlFRURBY0xJQVJCQTJvTElRUWdBMEVCYXlFRFFRRWhCUXdCQ3dOQUFrQWdCRUVEY1NBRUxRQUFJZ1pCQVd0Qi9nQkxjZzBBSUFRb0FnQWlCa0dCZ29RSWF5QUdja0dBZ1lLRWVIRU5BQU5BSUFOQkJHc2hBeUFFS0FJRUlRWWdCRUVFYWlFRUlBWWdCa0dCZ29RSWEzSkJnSUdDaEhoeFJRMEFDd3NnQmtIL0FYRWlCVUVCYTBIK0FFMEVRQ0FEUVFGcklRTWdCRUVCYWlFRURBRUxDeUFGUWNJQmF5SUZRVEpMRFFNZ0JFRUJhaUVFSUFWQkFuUkJ3Q3RxS0FJQUlRWkJBQ0VGREFBTEFBc0RRQ0FGUlFSQUlBTkZEUWNEUUFKQUFrQUNRQ0FFTFFBQUlnVkJBV3NpQjBIK0FFc0VRQ0FGSVFZTUFRc2dCRUVEY1NBRFFRVkpjZzBCQWtBRFFDQUVLQUlBSWdaQmdZS0VDR3NnQm5KQmdJR0NoSGh4RFFFZ0FDQUdRZjhCY1RZQ0FDQUFJQVF0QUFFMkFnUWdBQ0FFTFFBQ05nSUlJQUFnQkMwQUF6WUNEQ0FBUVJCcUlRQWdCRUVFYWlFRUlBTkJCR3NpQTBFRVN3MEFDeUFFTFFBQUlRWUxJQVpCL3dGeElnVkJBV3NoQndzZ0IwSCtBRXNOQVFzZ0FDQUZOZ0lBSUFCQkJHb2hBQ0FFUVFGcUlRUWdBMEVCYXlJRERRRU1DUXNMSUFWQndnRnJJZ1ZCTWtzTkF5QUVRUUZxSVFRZ0JVRUNkRUhBSzJvb0FnQWhCa0VCSVFVTUFRc2dCQzBBQUNJRlFRTjJJZ2RCRUdzZ0J5QUdRUnAxYW5KQkIwc05BUUpBQWtBQ2Z5QUVRUUZxSWdjZ0JVR0FBV3NnQmtFR2RISWlCVUVBVGcwQUdpQUhMUUFBUVlBQmF5SUhRVDlMRFFFZ0JFRUNhaUlJSUFjZ0JVRUdkSElpQlVFQVRnMEFHaUFJTFFBQVFZQUJheUlIUVQ5TERRRWdCeUFGUVFaMGNpRUZJQVJCQTJvTElRUWdBQ0FGTmdJQUlBTkJBV3NoQXlBQVFRUnFJUUFNQVF0QjFJRUJRUmsyQWdBZ0JFRUJheUVFREFVTFFRQWhCUXdBQ3dBTElBUkJBV3NoQkNBR0RRRWdCQzBBQUNFR0N5QUdRZjhCY1EwQUlBQUVRQ0FBUVFBMkFnQWdBVUVBTmdJQUN5QUNJQU5yRHd0QjFJRUJRUmsyQWdBZ0FFVU5BUXNnQVNBRU5nSUFDMEYvRHdzZ0FTQUVOZ0lBSUFJTEl3RUNmeUFBSVFFRFFDQUJJZ0pCQkdvaEFTQUNLQUlBRFFBTElBSWdBR3RCQW5VTERnQWdBQkRmQWdSQUlBQVFFQXNMVXdFRWZ3SkFJQUZCQUV3TkFDQUJRUUZySWdSRkRRQURRQ0FBSUFKcUlnTXRBQUFoQlNBRElBQWdBa0VCY21vaUF5MEFBRG9BQUNBRElBVTZBQUFnQWtFQ2FpSUNJQUZPRFFFZ0FpQUVSdzBBQ3dzTExBRUJmeU1BUVJCcklnSWtBQ0FDSUFFMkFnd2dBRUhrQUVIdUhDQUJFTFVCSVFBZ0FrRVFhaVFBSUFBTEtRRUJmeU1BUVJCcklnSWtBQ0FDSUFFMkFnd2dBRUgwSENBQkVPSUNJUUFnQWtFUWFpUUFJQUFMRmdBZ0FCQkZRUUJISUFCQklISkI0UUJyUVFaSmNndThBZ0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUlBRkJDV3NPRWdBSUNRb0lDUUVDQXdRS0NRb0tDQWtGQmdjTElBSWdBaWdDQUNJQlFRUnFOZ0lBSUFBZ0FTZ0NBRFlDQUE4TElBSWdBaWdDQUNJQlFRUnFOZ0lBSUFBZ0FUSUJBRGNEQUE4TElBSWdBaWdDQUNJQlFRUnFOZ0lBSUFBZ0FUTUJBRGNEQUE4TElBSWdBaWdDQUNJQlFRUnFOZ0lBSUFBZ0FUQUFBRGNEQUE4TElBSWdBaWdDQUNJQlFRUnFOZ0lBSUFBZ0FURUFBRGNEQUE4TElBSWdBaWdDQUVFSGFrRjRjU0lCUVFocU5nSUFJQUFnQVNzREFEa0RBQThMSUFBZ0FrRXpFUU1BQ3c4TElBSWdBaWdDQUNJQlFRUnFOZ0lBSUFBZ0FUUUNBRGNEQUE4TElBSWdBaWdDQUNJQlFRUnFOZ0lBSUFBZ0FUVUNBRGNEQUE4TElBSWdBaWdDQUVFSGFrRjRjU0lCUVFocU5nSUFJQUFnQVNrREFEY0RBQXYrRkFFT2Z5TUFRVUJxSWdNa0FDQURRUUEyQWhBZ0EwRUFOZ0lNSUFOQkFEWUNDQ0FEUVFBMkFnUWdBeUFEUVJCcUlnUTJBaFFnQXlBRFFReHFJZ2cyQWhnZ0F5Z0NGQm9nQXlBRFFRaHFJZ28yQWh3Z0F5Z0NHQm9nQXlBRFFRUnFJZ1kyQWlBZ0F5Z0NIQm9nQXlnQ0lCb2pBRUVRYXlJSEpBQWdCaUFBTFFBQ0lBQXRBQUVnQUMwQUFITnpRUmgwUVJoMUlnVkJNSE1nQlVFQmRFR2ZmM0pxUVFGcUlnVTJBZ0FnQ2lBRlFYOXpJQUZ4SUFVZ0FVRi9jeUlNY1dzaUJVRitjaUFGUVg1eGFrRUJhaUlGTmdJQUlBUWdCUkFaTmdJQUlBZ2dCaWdDQUNJSkVCazJBZ0FEUUFKQVFiM3UrYUYrSVFVRFFBSkFBa0FnQlVHODd2bWhma3dFUUNBRlFlM3NoT041UmcwQklBVkJpYTNOMjN4R0RRSWdCVUdJaFlMY2ZFY05BeUFIUVJCcUpBQU1CQXNnQlVIMmpvYlZCRWNFUUNBRlFacWVvOGtEUmdSQVFRQWhDMEh0N0lUamVTRUZEQVFMSUFWQnZlNzVvWDVIRFFNZ0J5QUpOZ0lJUWZhT2h0VUVRWnFlbzhrRElBY29BZ2hCQUVvYklRVU1Bd3NnQmlnQ0FDSUZRWDl6SUFGeElBVWdESEZySWdsQmZuTWdDVUVCZEVGOGNXb2dBR290QUFFaERTQUlLQUlBSUFVZ0J5Z0NDR3RxSUFBZ0J5Z0NDQ0lGUVg5eklBRnhRUUYwSUFFZ0JYTnJhaTBBQUNBQUlBbHFRUUpyTFFBQUlBMXpjem9BQUNBSEtBSUlRUUZySVFrTUJBc2dCeUFMTmdJTVFZbXR6ZHQ4UVlpRmd0eDhJQW9vQWdBZ0J5Z0NERW9iSVFVTUFRc2dCQ2dDQUNBSEtBSU1haUFBSUFjb0FneEJBV29pQzJvdEFBQTZBQUJCN2V5RTQza2hCUXdBQ3dBTEN5QURJQU1vQWd4QnJ4NGdBeWdDQkJDK0FUWUNKRUhOdXZhZUJTRUFBMEFDUUFKQUFrQUNRQUpBQWtBQ1FDQUFRY3J3cWFJQlRBUkFJQUJCL2JYYTczNU1CRUFnQUVHUjFZdVVlMFlOQnlBQVFjMlY2OXA3UmcwRElBQkJnTkhuL1h4SERRbEJrZFdMbEhzaEFFRUFJUUVNQ1FzZ0FFSCt0ZHJ2ZmtZTkJDQUFRYTZtMC9ZQVJnMEJJQUJCMGFDNUdFY05DQ0FES0FJUUVCQWdBeWdDREJBUUlBTW9BaUFhSUFNb0Fod2FJQU1vQWhnYUlBTW9BaFFhSUFNb0Fpd2hBQ0FEUVVCckpBQWdBQThMSUFCQjc0VHI5UUpNQkVBZ0FFSEw4S21pQVVZTkJ5QUFRWXpBeW9BQ1J3MElJQU1vQWhBaENDQURLQUlJSVE1QkFDRUpRUUFoQ2tFQUlRVkJBQ0VIUVFBaEN5TUFRUkJySWdRa0FFR1NtT3pEQlVHNzdMeUlCQ0FDR3lFR1FkVUFJUXhCK2dFaERRTkFBa0JCNXFxZmVpRUFBMEFDUUFKQUFrQUNRQUpBSUFCQnBOV0Q5Z0ZNQkVBZ0FFSG95cEM1ZkV3RVFDQUFRZmkxK1B0NVJnMEdJQUJCNU5DV3QzcEdEUVVnQUVHWTllM09lVWNOQnlBRVFSQnFKQUFNQ0FzZ0FFSHB5cEM1ZkVZTkFTQUFRZWFxbjNwSERRWWdCQ0FKTmdJRUlBUWdEVG9BQ3lBRUlBdzZBQXhCNmNxUXVYeEJtUFh0em5rZ0JDZ0NCQ0FPU0JzaEFBd0dDeUFBUWJEdGlya0VUQVJBSUFCQnBkV0Q5Z0ZHRFFJZ0FFRzc3THlJQkVjTkJrSDR0Zmo3ZVNFQUlBUXNBQTBnQkNnQ0JCRG9BaUVLREFZTElBQkJzZTJLdVFSR0RRSWdBRUdTbU96REJVY05CVUg0dGZqN2VTRUFJQVFzQUEwZ0JDZ0NCQkRoQWlFS0RBVUxRYVhWZy9ZQlFiSHRpcmtFSUFRb0FnUkJBbTlCQVVZYklRQU1CQXNnQ0NBRUtBSUVhaTBBQUNJRklBUXRBQXh6SVFkQjVOQ1d0M29oQUNBRUxRQUxJUXNNQXdzZ0NDQUVLQUlFYWkwQUFDSUxJQVF0QUF0eklRZEI1TkNXdDNvaEFDQUVMUUFNSVFVTUFnc2dCQ0FMT2dBT0lBUWdCem9BRFNBRUlBVTZBQThnQmlFQURBRUxDeUFJSUFRb0FnUnFJQW82QUFBZ0JDZ0NCRUVCYWlFSklBUXRBQThoRENBRUxRQU9JUTBNQVFzTFFmQ0U2L1VDSVFBTUNBc2dBRUh3aE92MUFrWU5BaUFBUVpqWHFwRURSZzBFSUFCQnpicjJuZ1ZIRFFkQnJxYlQ5Z0JCelpYcjJuc2dBeWdDSkJzaEFBd0hDMEdNd01xQUFrSE5sZXZhZXlBREtBSU1RYlllSUFNb0FnUVF2Z0ViSVFBTUJnc2dBeWdDRUNFSUlBTW9BZ2doQlVFQUlRcEJBQ0VOUVFBaEIwRUFJUXRCQUNFSlFRQWhEQ01BUVJCcklnUWtBQ0FJSUFVUTFRSkJzcWJiaXdSQnV2K0RvbmtnQWhzaEJrSFZBQ0VPUWZvQklROERRQUpBUWJTVzBib0NJUUFEUUFKQUFrQUNRQ0FBUWJPVzBib0NUQVJBSUFCQnBmSGEyMzFNQkVBZ0FFRzYvNE9pZVVZTkJDQUFRWi9VbnBoN1JnMERJQUJCMCtpNjQzaEhEUVVnQ0NBRkVOVUNJQVJCRUdva0FBd0dDeUFBUWFieDJ0dDlSZzBCSUFCQmc2YVpyUUZIRFFSQmw0WGN2Z1JCcHZIYTIzMGdCQ2dDQkVFQ2IwRUJSaHNoQUF3RUN3SkFBa0FnQUVHV2hkeStCRXdFUUNBQVFiU1cwYm9DUmcwQklBQkJzcWJiaXdSSERRWkIvN0xsbHdVaEFDQUVMQUFOSUFRb0FnUVE0UUloQ2d3R0N5QUFRWmVGM0w0RVJnMEJJQUJCLzdMbGx3VkhEUVVnQ0NBRUtBSUVhaUFFTFFBTUlnQWdDbk1nQUNBS1FYOXpjVUVCZEdzNkFBQWdCQ2dDQkVFQmFpRU5JQVF0QUE4aERpQUVMUUFPSVE4TUJ3c2dCQ0FOTmdJRUlBUWdEem9BQ2lBRUlBNDZBQXRCZzZhWnJRRkIwK2k2NDNnZ0JDZ0NCQ0FGU0JzaEFBd0VDeUFJSUFRb0FnUnFMUUFBSWdjZ0JDMEFDM01oQzBHZjFKNllleUVBSUFRdEFBb2hDU0FFTFFBS0lRd01Bd3NnQ0NBRUtBSUVhaTBBQUNJSklBUXRBQXB6SVF0Qm45U2VtSHNoQUNBRUxRQUxJUWNnQkMwQUN5RU1EQUlMSUFRZ0N6b0FEU0FFSUF3NkFBd2dCQ0FKT2dBT0lBUWdCem9BRHlBR0lRQU1BUXRCLzdMbGx3VWhBQ0FFTEFBTklBUW9BZ1FRNkFJaENnd0FDd0FMQzBId2hPdjFBaUVBREFVTElBTUNmMEVBSVFRakFFRVFheUlHSUFNb0FoQXNBQUEyQWdnZ0JpQUdLQUlJUVM5S09nQU9JQVlnQmlnQ0NFRTZTRG9BRDBHTTRKU0NlaUVBQTBBQ1FDQUFRYXpjaDRoN1RBUkFJQUJCbGVyQnVuaEdCRUJCL3dFaEJFR3QzSWVJZXlFQURBTUxJQUJCak9DVWducEdEUUVnQUVHOG9PZkxla2NOQWlBR0tBSUlJZ0JCNFFCeklBQkJBWFJCdlg1eWFrRUJhaUlBUVFGMFFSUnhJQUJCQ25OcUlRUkJyZHlIaUhzaEFBd0NDeUFBUWEzY2g0aDdSd1JBSUFCQm1xWDQ2d0pIQkVBZ0FFSEE0ckRDQTBjTkF5QUdLQUlJSWdCQnp3RnlJQUJCendGeGFrRUJhaUVFUWEzY2g0aDdJUUFNQXd0QnZLRG55M3BCbGVyQnVuZ2dCaWdDQ0VIN0FFZ2JRWlhxd2JwNElBWW9BZ2hCNEFCS0d5RUFEQUlMSUFSQkdIUkJHSFVNQWd0QndPS3d3Z05CbXFYNDZ3SWdCaTBBRDBFQmNSdEJtcVg0NndJZ0JpMEFEa0VCY1JzaEFBd0FDd0FMSWdBMkFnUWdBeUFES0FJSUlnWWdBRUYvYzNFZ0FDQUdRWDl6Y1dzaUJrRitjaUFHUVg1eGFrRUJhallDS0NBRElBWVFHVFlDTENBRElBQkJBWFJCQW5FZ0FFRUJjMm9RR1RZQ01FRUFJUkFnQXlnQ0tDQURLQUlzYWtFQU9nQUFJQU1vQWdRZ0F5Z0NNR3BCQURvQUFFSCt0ZHJ2ZmlFQURBUUxJQU1nRURZQ09FR1kxNnFSQTBHQTBlZjlmQ0FES0FJb0lBTW9BamhLR3lFQURBTUxJQU1vQWl3Z0F5Z0NPR29nQXlnQ09DSUFRUUYwUVFKeUlBQkJmbk5xUVFGcUloQWdBeWdDRUdvdEFBQTZBQUJCL3JYYTczNGhBQXdDQ3lBRElBTW9BZ1EyQWpRZ0F5QUJOZ0k4UWN2d3FhSUJRZEdndVJnZ0F5Z0NOQ0FES0FJOFNoc2hBQXdCQ3lBREtBSXdJQU1vQWp4cUlBTW9BaEFnQXlnQ0NDQURLQUkwYXlJQUlBTW9BandpQVhKQkFYUWdBQ0FCYzJ0cUxRQUFPZ0FBSUFNb0FqeEJBV29oQVVHUjFZdVVleUVBREFBTEFBdHJBUVIvSUFBb0FnQXNBQUFRUlVVRVFFRUFEd3NEUUNBQUtBSUFJUU5CZnlFQklBSkJ6Sm16NWdCTkJFQkJmeUFETEFBQVFUQnJJZ1FnQWtFS2JDSUJhaUFFUWYvLy8vOEhJQUZyU2hzaEFRc2dBQ0FEUVFGcU5nSUFJQUVoQWlBRExBQUJFRVVOQUFzZ0FRdjBFZ0lSZndGK0l3QkIwQUJySWdVa0FDQUZJQUUyQWt3Z0JVRTNhaUVVSUFWQk9Hb2hFRUVBSVFFQ1FBSkFBa0FDUUFOQUlBRkIvLy8vL3djZ0MydEtEUUVnQVNBTGFpRUxJQVVvQWt3aUNpRUJBa0FDUUFKQUlBb3RBQUFpQ1FSQUEwQUNRQUpBSUFsQi93RnhJZ1pGQkVBZ0FTRUpEQUVMSUFaQkpVY05BU0FCSVFrRFFDQUJMUUFCUVNWSERRRWdCU0FCUVFKcUlnWTJBa3dnQ1VFQmFpRUpJQUV0QUFJaENDQUdJUUVnQ0VFbFJnMEFDd3NnQ1NBS2F5SUJRZi8vLy84SElBdHJJaFZLRFFjZ0FBUkFJQUFnQ2lBQkVDb0xJQUVOQmtGL0lRNUJBU0VHSUFVb0Frd3NBQUVRUlNFQklBVW9Ba3doQ0FKQUlBRkZEUUFnQ0MwQUFrRWtSdzBBSUFnc0FBRkJNR3NoRGtFQklSSkJBeUVHQ3lBRklBWWdDR29pQVRZQ1RFRUFJUXdDUUNBQkxBQUFJaEZCSUdzaUNFRWZTd1JBSUFFaEJnd0JDeUFCSVFaQkFTQUlkQ0lIUVluUkJIRkZEUUFEUUNBRklBRkJBV29pQmpZQ1RDQUhJQXh5SVF3Z0FTd0FBU0lSUVNCcklnaEJJRThOQVNBR0lRRkJBU0FJZENJSFFZblJCSEVOQUFzTEFrQWdFVUVxUmdSQUlBVUNmd0pBSUFZc0FBRVFSVVVOQUNBRktBSk1JZ0V0QUFKQkpFY05BQ0FCTEFBQlFRSjBJQVJxUWNBQmEwRUtOZ0lBSUFFc0FBRkJBM1FnQTJwQmdBTnJLQUlBSVExQkFTRVNJQUZCQTJvTUFRc2dFZzBHUVFBaEVrRUFJUTBnQUFSQUlBSWdBaWdDQUNJQlFRUnFOZ0lBSUFFb0FnQWhEUXNnQlNnQ1RFRUJhZ3NpQVRZQ1RDQU5RUUJPRFFGQkFDQU5heUVOSUF4QmdNQUFjaUVNREFFTElBVkJ6QUJxRU5zQ0lnMUJBRWdOQ0NBRktBSk1JUUVMUVFBaEJrRi9JUWNDZjBFQUlBRXRBQUJCTGtjTkFCb2dBUzBBQVVFcVJnUkFJQVVDZndKQUlBRXNBQUlRUlVVTkFDQUZLQUpNSWdFdEFBTkJKRWNOQUNBQkxBQUNRUUowSUFScVFjQUJhMEVLTmdJQUlBRXNBQUpCQTNRZ0EycEJnQU5yS0FJQUlRY2dBVUVFYWd3QkN5QVNEUVlnQUFSL0lBSWdBaWdDQUNJQlFRUnFOZ0lBSUFFb0FnQUZRUUFMSVFjZ0JTZ0NURUVDYWdzaUFUWUNUQ0FIUVg5elFSOTJEQUVMSUFVZ0FVRUJhallDVENBRlFjd0FhaERiQWlFSElBVW9Ba3doQVVFQkN5RVRBMEFnQmlFUFFSd2hDU0FCTEFBQVFjRUFhMEU1U3cwSklBVWdBVUVCYWlJUk5nSk1JQUVzQUFBaEJpQVJJUUVnQmlBUFFUcHNha0dQTG1vdEFBQWlCa0VCYTBFSVNRMEFDd0pBQWtBZ0JrRWJSd1JBSUFaRkRRc2dEa0VBVGdSQUlBUWdEa0VDZEdvZ0JqWUNBQ0FGSUFNZ0RrRURkR29wQXdBM0EwQU1BZ3NnQUVVTkNDQUZRVUJySUFZZ0FoRFpBaUFGS0FKTUlSRU1BZ3NnRGtFQVRnMEtDMEVBSVFFZ0FFVU5Cd3NnREVILy8zdHhJZ2dnRENBTVFZREFBSEViSVFaQkFDRU1RZThhSVE0Z0VDRUpBa0FDUUFKQUFuOENRQUpBQWtBQ1FBSi9Ba0FDUUFKQUFrQUNRQUpBQWtBZ0VVRUJheXdBQUNJQlFWOXhJQUVnQVVFUGNVRURSaHNnQVNBUEd5SUJRZGdBYXc0aEJCUVVGQlFVRkJRVURoUVBCZzRPRGhRR0ZCUVVGQUlGQXhRVUNSUUJGQlFFQUFzQ1FDQUJRY0VBYXc0SERoUUxGQTRPRGdBTElBRkIwd0JHRFFrTUV3c2dCU2tEUUNFV1FlOGFEQVVMUVFBaEFRSkFBa0FDUUFKQUFrQUNRQUpBSUE5Qi93RnhEZ2dBQVFJREJCb0ZCaG9MSUFVb0FrQWdDellDQUF3WkN5QUZLQUpBSUFzMkFnQU1HQXNnQlNnQ1FDQUxyRGNEQUF3WEN5QUZLQUpBSUFzN0FRQU1GZ3NnQlNnQ1FDQUxPZ0FBREJVTElBVW9Ba0FnQ3pZQ0FBd1VDeUFGS0FKQUlBdXNOd01BREJNTElBZEJDQ0FIUVFoTEd5RUhJQVpCQ0hJaEJrSDRBQ0VCQ3lBUUlRZ2dBVUVnY1NFUElBVXBBMEFpRmxCRkJFQURRQ0FJUVFGcklnZ2dGcWRCRDNGQm9ESnFMUUFBSUE5eU9nQUFJQlpDRDFZaENpQVdRZ1NJSVJZZ0NnMEFDd3NnQ0NFS0lBWkJDSEZGSUFVcEEwQlFjZzBESUFGQkJIWkI3eHBxSVE1QkFpRU1EQU1MSUJBaEFTQUZLUU5BSWhaUVJRUkFBMEFnQVVFQmF5SUJJQmFuUVFkeFFUQnlPZ0FBSUJaQ0IxWWhDQ0FXUWdPSUlSWWdDQTBBQ3dzZ0FTRUtJQVpCQ0hGRkRRSWdCeUFRSUFwcklnRkJBV29nQVNBSFNCc2hCd3dDQ3lBRktRTkFJaFpDQUZNRVFDQUZRZ0FnRm4waUZqY0RRRUVCSVF4Qjd4b01BUXNnQmtHQUVIRUVRRUVCSVF4QjhCb01BUXRCOFJwQjd4b2dCa0VCY1NJTUd3c2hEaUFXSUJBUWp3RWhDZ3NnRTBFQUlBZEJBRWdiRFE0Z0JrSC8vM3R4SUFZZ0V4c2hCaUFGS1FOQUloWkNBRklnQjNKRkJFQWdFQ0VLUVFBaEJ3d01DeUFISUJaUUlCQWdDbXRxSWdFZ0FTQUhTQnNoQnd3TEN5QUZLQUpBSWdGQmdCOGdBUnNpQ2lJSlFRQkIvLy8vL3djZ0J5QUhRUUJJR3lJR0VOd0JJZ0VnQ1dzZ0JpQUJHeUlCSUFwcUlRa2dCMEVBVGdSQUlBZ2hCaUFCSVFjTUN3c2dDQ0VHSUFFaEJ5QUpMUUFBRFEwTUNnc2dCd1JBSUFVb0FrQU1BZ3RCQUNFQklBQkJJQ0FOUVFBZ0JoQXVEQUlMSUFWQkFEWUNEQ0FGSUFVcEEwQStBZ2dnQlNBRlFRaHFJZ0UyQWtCQmZ5RUhJQUVMSVFsQkFDRUJBa0FEUUNBSktBSUFJZ2hGRFFFZ0JVRUVhaUFJRU40Q0lncEJBRWdpQ0NBS0lBY2dBV3RMY2tVRVFDQUpRUVJxSVFrZ0J5QUJJQXBxSWdGTERRRU1BZ3NMSUFnTkRRdEJQU0VKSUFGQkFFZ05DeUFBUVNBZ0RTQUJJQVlRTGlBQlJRUkFRUUFoQVF3QkMwRUFJUWNnQlNnQ1FDRUpBMEFnQ1NnQ0FDSUlSUTBCSUFWQkJHb2dDQkRlQWlJSUlBZHFJZ2NnQVVzTkFTQUFJQVZCQkdvZ0NCQXFJQWxCQkdvaENTQUJJQWRMRFFBTEN5QUFRU0FnRFNBQklBWkJnTUFBY3hBdUlBMGdBU0FCSUExSUd5RUJEQWdMSUJOQkFDQUhRUUJJR3cwSVFUMGhDU0FBSUFVckEwQWdEU0FISUFZZ0FVRXlFUjBBSWdGQkFFNE5Cd3dKQ3lBRklBVXBBMEE4QURkQkFTRUhJQlFoQ2lBSUlRWU1CQXNnQlNBQlFRRnFJZ1kyQWt3Z0FTMEFBU0VKSUFZaEFRd0FDd0FMSUFBTkJ5QVNSUTBDUVFFaEFRTkFJQVFnQVVFQ2RHb29BZ0FpQUFSQUlBTWdBVUVEZEdvZ0FDQUNFTmtDUVFFaEN5QUJRUUZxSWdGQkNrY05BUXdKQ3d0QkFTRUxJQUZCQ2s4TkJ3TkFJQVFnQVVFQ2RHb29BZ0FOQVNBQlFRRnFJZ0ZCQ2tjTkFBc01Cd3RCSENFSkRBUUxJQWtnQ21zaUR5QUhJQWNnRDBnYklnaEIvLy8vL3djZ0RHdEtEUUpCUFNFSklBZ2dER29pQnlBTklBY2dEVW9iSWdFZ0ZVb05BeUFBUVNBZ0FTQUhJQVlRTGlBQUlBNGdEQkFxSUFCQk1DQUJJQWNnQmtHQWdBUnpFQzRnQUVFd0lBZ2dEMEVBRUM0Z0FDQUtJQThRS2lBQVFTQWdBU0FISUFaQmdNQUFjeEF1REFFTEMwRUFJUXNNQXd0QlBTRUpDMEhVZ1FFZ0NUWUNBQXRCZnlFTEN5QUZRZEFBYWlRQUlBc0xmd0lCZndGK0lBQzlJZ05DTklpblFmOFBjU0lDUWY4UFJ3UjhJQUpGQkVBZ0FTQUFSQUFBQUFBQUFBQUFZUVIvUVFBRklBQkVBQUFBQUFBQThFT2lJQUVRM1FJaEFDQUJLQUlBUVVCcUN6WUNBQ0FBRHdzZ0FTQUNRZjRIYXpZQ0FDQURRdi8vLy8vLy8vK0hnSCtEUW9DQWdJQ0FnSUR3UDRTL0JTQUFDd3NTQUNBQVJRUkFRUUFQQ3lBQUlBRVEyZ0VMSlFBZ0FFRUFSeUFBUWNndFIzRWdBRUhnTFVkeElBQkJnSWNCUjNFZ0FFR1lod0ZIY1F2b0FnRURmd0pBSUFFdEFBQU5BRUdLSGhEYkFTSUJCRUFnQVMwQUFBMEJDeUFBUVF4c1FZQXVhaERiQVNJQkJFQWdBUzBBQUEwQkMwR1JIaERiQVNJQkJFQWdBUzBBQUEwQkMwR25IaUVCQ3dKQUEwQWdBU0FDYWkwQUFDSUVSU0FFUVM5R2NrVUVRRUVYSVFRZ0FrRUJhaUlDUVJkSERRRU1BZ3NMSUFJaEJBdEJweDRoQXdKQUFrQUNRQUpBQWtBZ0FTMEFBQ0lDUVM1R0RRQWdBU0FFYWkwQUFBMEFJQUVoQXlBQ1FjTUFSdzBCQ3lBRExRQUJSUTBCQ3lBRFFhY2VFTFlCUlEwQUlBTkI4UjBRdGdFTkFRc2dBRVVFUUVHa0xTRUNJQU10QUFGQkxrWU5BZ3RCQUE4TFFRQWhBVUg4aGdFb0FnQWlBZ1JBQTBBZ0F5QUNRUWhxRUxZQlJRMENJQUlvQWlBaUFnMEFDd3RCSkJBWklnSUVRQ0FDUWFRdEtRSUFOd0lBSUFKQkNHb2lBU0FESUFRUVFob2dBU0FFYWtFQU9nQUFJQUpCL0lZQktBSUFOZ0lnUWZ5R0FTQUNOZ0lBSUFJaEFRc2dBVUdrTFNBQUlBRnlHeUVDQ3lBQ0N5OEFJQUVRN0FJaUFTQUFRZjhCY1NJQWNVRUJkQ0FBSUFGemFpSUFRUlZ5UVFGMElBQkJGWE5yUVJoMFFSaDFDNDBlQWc5L0JYNGpBRUdRQVdzaUJDUUFJQVJCQUVHUUFSQkdJZ05CZnpZQ1RDQURJQUEyQWl3Z0EwRXhOZ0lnSUFNZ0FEWUNWQ0FCSVFRZ0FpRU9Jd0JCc0FKcklnWWtBQ0FES0FKTUdnSkFBa0FDUUFKQUlBTW9BZ1FOQUNBREVPa0JHaUFES0FJRURRQU1BUXNnQkMwQUFDSUFSUTBDQWtBRFFBSkFBa0FnQUVIL0FYRVFjQVJBQTBBZ0JDSUFRUUZxSVFRZ0FDMEFBUkJ3RFFBTElBTkNBQkJUQTBBQ2Z5QURLQUlFSWdFZ0F5Z0NhRWNFUUNBRElBRkJBV28yQWdRZ0FTMEFBQXdCQ3lBREVCSUxFSEFOQUFzZ0F5Z0NCQ0VFSUFNcEEzQkNBRmtFUUNBRElBUkJBV3NpQkRZQ0JBc2dCQ0FES0FJc2E2d2dBeWtEZUNBVWZId2hGQXdCQ3dKL0FrQUNRQ0FFTFFBQVFTVkdCRUFnQkMwQUFTSUFRU3BHRFFFZ0FFRWxSdzBDQ3lBRFFnQVFVd0pBSUFRdEFBQkJKVVlFUUFOQUFuOGdBeWdDQkNJQUlBTW9BbWhIQkVBZ0F5QUFRUUZxTmdJRUlBQXRBQUFNQVFzZ0F4QVNDeUlBRUhBTkFBc2dCRUVCYWlFRURBRUxJQU1vQWdRaUFDQURLQUpvUndSQUlBTWdBRUVCYWpZQ0JDQUFMUUFBSVFBTUFRc2dBeEFTSVFBTElBUXRBQUFnQUVjRVFDQURLUU53UWdCWkJFQWdBeUFES0FJRVFRRnJOZ0lFQ3lBQVFRQk9EUXBCQUNFTUlBMUZEUWdNQ2dzZ0F5Z0NCQ0FES0FJc2E2d2dBeWtEZUNBVWZId2hGQ0FFSVFBTUF3dEJBQ0VDSUFSQkFtb01BUXNDUUNBQUVFVkZEUUFnQkMwQUFrRWtSdzBBSUFRdEFBRkJNR3NoQUNNQVFSQnJJZ0VnRGpZQ0RDQUJJQTRnQUVFQ2RFRUVhMEVBSUFCQkFVc2JhaUlBUVFScU5nSUlJQUFvQWdBaEFpQUVRUU5xREFFTElBNG9BZ0FoQWlBT1FRUnFJUTRnQkVFQmFnc2hBRUVBSVF4QkFDRUVJQUF0QUFBUVJRUkFBMEFnQUMwQUFDQUVRUXBzYWtFd2F5RUVJQUF0QUFFaEFTQUFRUUZxSVFBZ0FSQkZEUUFMQ3lBQUxRQUFJZ1ZCN1FCSEJIOGdBQVZCQUNFSklBSkJBRWNoRENBQUxRQUJJUVZCQUNFS0lBQkJBV29MSWdGQkFXb2hBRUVESVFjQ1FBSkFBa0FDUUFKQUFrQWdCVUhCQUdzT09nUUpCQWtFQkFRSkNRa0pBd2tKQ1FrSkNRUUpDUWtKQkFrSkJBa0pDUWtKQkFrRUJBUUVCQUFFQlFrQkNRUUVCQWtKQkFJRUNRa0VDUUlKQ3lBQlFRSnFJQUFnQVMwQUFVSG9BRVlpQVJzaEFFRitRWDhnQVJzaEJ3d0VDeUFCUVFKcUlBQWdBUzBBQVVIc0FFWWlBUnNoQUVFRFFRRWdBUnNoQnd3REMwRUJJUWNNQWd0QkFpRUhEQUVMUVFBaEJ5QUJJUUFMUVFFZ0J5QUFMUUFBSWdGQkwzRkJBMFlpQlJzaER3SkFJQUZCSUhJZ0FTQUZHeUlMUWRzQVJnMEFBa0FnQzBIdUFFY0VRQ0FMUWVNQVJ3MEJJQVJCQVNBRVFRRktHeUVFREFJTElBSWdEeUFVRU9NQ0RBSUxJQU5DQUJCVEEwQUNmeUFES0FJRUlnRWdBeWdDYUVjRVFDQURJQUZCQVdvMkFnUWdBUzBBQUF3QkN5QURFQklMRUhBTkFBc2dBeWdDQkNFQklBTXBBM0JDQUZrRVFDQURJQUZCQVdzaUFUWUNCQXNnQVNBREtBSXNhNndnQXlrRGVDQVVmSHdoRkFzZ0F5QUVyQ0lTRUZNQ1FDQURLQUlFSWdFZ0F5Z0NhRWNFUUNBRElBRkJBV28yQWdRTUFRc2dBeEFTUVFCSURRUUxJQU1wQTNCQ0FGa0VRQ0FESUFNb0FnUkJBV3MyQWdRTFFSQWhBUUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FDQUxRZGdBYXc0aEJnc0xBZ3NMQ3dzTEFRc0NCQUVCQVFzRkN3c0xDd3NEQmdzTEFnc0VDd3NHQUFzZ0MwSEJBR3NpQVVFR1MwRUJJQUYwUWZFQWNVVnlEUW9MSUFaQkNHb2dBeUFQUVFBUTVnSWdBeWtEZUVJQUlBTW9BZ1FnQXlnQ0xHdXNmVkVORHlBQ1JRMEpJQVlwQXhBaEVpQUdLUU1JSVJNZ0R3NERCUVlIQ1FzZ0MwSHZBWEZCNHdCR0JFQWdCa0VnYWtGL1FZRUNFRVlhSUFaQkFEb0FJQ0FMUWZNQVJ3MElJQVpCQURvQVFTQUdRUUE2QUM0Z0JrRUFOZ0VxREFnTElBWkJJR29nQUMwQUFTSUJRZDRBUmlJRlFZRUNFRVlhSUFaQkFEb0FJQ0FBUVFKcUlBQkJBV29nQlJzaENBSi9Ba0FDUUNBQVFRSkJBU0FGRzJvdEFBQWlBRUV0UndSQUlBQkIzUUJHRFFFZ0FVSGVBRWNoQnlBSURBTUxJQVlnQVVIZUFFY2lCem9BVGd3QkN5QUdJQUZCM2dCSElnYzZBSDRMSUFoQkFXb0xJUUFEUUFKQUlBQXRBQUFpQVVFdFJ3UkFJQUZGRFE4Z0FVSGRBRWNOQVF3S0MwRXRJUUVnQUMwQUFTSUZSU0FGUWQwQVJuSU5BQ0FBUVFGcUlRZ0NRQ0FGSUFCQkFXc3RBQUFpQUUwRVFDQUZJUUVNQVFzRFFDQUFRUUZxSWdBZ0JrRWdhbW9nQnpvQUFDQUFJQWd0QUFBaUFVa05BQXNMSUFnaEFBc2dBU0FHYWlBSE9nQWhJQUJCQVdvaEFBd0FDd0FMUVFnaEFRd0NDMEVLSVFFTUFRdEJBQ0VCQzBJQUlSSkJBQ0VGUVFBaENFRUFJUWNqQUVFUWF5SVFKQUFDUUNBQlFRRkhJQUZCSkUxeFJRUkFRZFNCQVVFY05nSUFEQUVMQTBBQ2Z5QURLQUlFSWdRZ0F5Z0NhRWNFUUNBRElBUkJBV28yQWdRZ0JDMEFBQXdCQ3lBREVCSUxJZ1FRY0EwQUN3SkFBa0FnQkVFcmF3NERBQUVBQVF0QmYwRUFJQVJCTFVZYklRY2dBeWdDQkNJRUlBTW9BbWhIQkVBZ0F5QUVRUUZxTmdJRUlBUXRBQUFoQkF3QkN5QURFQkloQkFzQ1FBSkFBa0FDUUNBQlFXOXhJQVJCTUVkeVJRUkFBbjhnQXlnQ0JDSUVJQU1vQW1oSEJFQWdBeUFFUVFGcU5nSUVJQVF0QUFBTUFRc2dBeEFTQ3lJRVFWOXhRZGdBUmdSQVFSQWhBUUovSUFNb0FnUWlCQ0FES0FKb1J3UkFJQU1nQkVFQmFqWUNCQ0FFTFFBQURBRUxJQU1RRWdzaUJFR3hLV290QUFCQkVFa05BeUFES1FOd1FnQlpCRUFnQXlBREtBSUVRUUZyTmdJRUN5QURRZ0FRVXd3R0N5QUJEUUZCQ0NFQkRBSUxJQUZCQ2lBQkd5SUJJQVJCc1NscUxRQUFTdzBBSUFNcEEzQkNBRmtFUUNBRElBTW9BZ1JCQVdzMkFnUUxJQU5DQUJCVFFkU0JBVUVjTmdJQURBUUxJQUZCQ2tjTkFDQUVRVEJySWdWQkNVMEVRRUVBSVFFRFFDQUJRUXBzSUFWcUlnRkJtYlBtekFGSkFuOGdBeWdDQkNJRUlBTW9BbWhIQkVBZ0F5QUVRUUZxTmdJRUlBUXRBQUFNQVFzZ0F4QVNDeUlFUVRCcklnVkJDVTF4RFFBTElBR3RJUklMQWtBZ0JVRUpTdzBBSUJKQ0NuNGhFeUFGclNFVkEwQUNmeUFES0FJRUlnRWdBeWdDYUVjRVFDQURJQUZCQVdvMkFnUWdBUzBBQUF3QkN5QURFQklMSWdSQk1Hc2lCVUVKU3lBVElCVjhJaEpDbXJQbXpKbXo1c3daV25JTkFTQVNRZ3ArSWhNZ0JhMGlGVUovaFZnTkFBdEJDaUVCREFJTFFRb2hBU0FGUVFsTkRRRU1BZ3NnQVNBQlFRRnJjUVJBSUFSQnNTbHFMUUFBSWdnZ0FVa0VRQU5BSUFFZ0JXd2dDR29pQlVISDQvRTRTUUovSUFNb0FnUWlCQ0FES0FKb1J3UkFJQU1nQkVFQmFqWUNCQ0FFTFFBQURBRUxJQU1RRWdzaUJFR3hLV290QUFBaUNDQUJTWEVOQUFzZ0JhMGhFZ3NnQVNBSVRRMEJJQUd0SVJNRFFDQVNJQk4rSWhVZ0NLMUMvd0dESWhaQ2Y0VldEUUlnRlNBV2ZDRVNJQUVDZnlBREtBSUVJZ1FnQXlnQ2FFY0VRQ0FESUFSQkFXbzJBZ1FnQkMwQUFBd0JDeUFERUJJTElnUkJzU2xxTFFBQUlnaE5EUUlnRUNBVFFnQWdFa0lBRUNzZ0VDa0RDRkFOQUFzTUFRc2dBVUVYYkVFRmRrRUhjVUd4SzJvc0FBQWhFU0FFUWJFcGFpMEFBQ0lGSUFGSkJFQURRQ0FJSUJGMElBVnlJZ2hCZ0lDQXdBQkpBbjhnQXlnQ0JDSUVJQU1vQW1oSEJFQWdBeUFFUVFGcU5nSUVJQVF0QUFBTUFRc2dBeEFTQ3lJRVFiRXBhaTBBQUNJRklBRkpjUTBBQ3lBSXJTRVNDeUFCSUFWTkRRQkNmeUFSclNJVGlDSVZJQkpVRFFBRFFDQUZyVUwvQVlNZ0VpQVRob1FoRWlBQkFuOGdBeWdDQkNJRUlBTW9BbWhIQkVBZ0F5QUVRUUZxTmdJRUlBUXRBQUFNQVFzZ0F4QVNDeUlFUWJFcGFpMEFBQ0lGVFEwQklCSWdGVmdOQUFzTElBRWdCRUd4S1dvdEFBQk5EUUFEUUNBQkFuOGdBeWdDQkNJRUlBTW9BbWhIQkVBZ0F5QUVRUUZxTmdJRUlBUXRBQUFNQVFzZ0F4QVNDMEd4S1dvdEFBQkxEUUFMUWRTQkFVSEVBRFlDQUVFQUlRZENmeUVTQ3lBREtRTndRZ0JaQkVBZ0F5QURLQUlFUVFGck5nSUVDMEVBSUJKQ2YxRWdCMEVCY2hzRVFFSFVnUUZCeEFBMkFnQkNmaUVTREFFTElCSWdCNndpRTRVZ0UzMGhFZ3NnRUVFUWFpUUFJQU1wQTNoQ0FDQURLQUlFSUFNb0FpeHJySDFSRFFvZ0FrVWdDMEh3QUVkeVJRUkFJQUlnRWo0Q0FBd0ZDeUFDSUE4Z0VoRGpBZ3dFQ3lBQ0lCTWdFaERrQWpnQ0FBd0RDeUFDSUJNZ0VoRGRBVGtEQUF3Q0N5QUNJQk0zQXdBZ0FpQVNOd01JREFFTElBUkJBV3BCSHlBTFFlTUFSaUlGR3lFSEFrQUNRQ0FQUVFGSElnaEZCRUFnQWlFQklBd0VRQ0FIUVFKMEVCa2lBVVVOQmdzZ0JrSUFOd09vQWtFQUlRUURRQ0FCSVFvRFFBSi9JQU1vQWdRaUFTQURLQUpvUndSQUlBTWdBVUVCYWpZQ0JDQUJMUUFBREFFTElBTVFFZ3NpQVNBR2FpMEFJVVVOQXlBR0lBRTZBQnNnQmtFY2FpQUdRUnRxUVFFZ0JrR29BbW9RdHdFaUFVRitSZzBBUVFBaENTQUJRWDlHRFFrZ0NnUkFJQW9nQkVFQ2RHb2dCaWdDSERZQ0FDQUVRUUZxSVFRTElBd2dCQ0FIUm5GRkRRQUxJQW9nQjBFQmRFRUJjaUlIUVFKMEVKNEJJZ0VOQUFzTUJ3c2dEQVJBUVFBaEJDQUhFQmtpQVVVTkJRTkFJQUVoQ1FOQUFuOGdBeWdDQkNJQklBTW9BbWhIQkVBZ0F5QUJRUUZxTmdJRUlBRXRBQUFNQVFzZ0F4QVNDeUlCSUFacUxRQWhSUVJBUVFBaENnd0ZDeUFFSUFscUlBRTZBQUFnQkVFQmFpSUVJQWRIRFFBTFFRQWhDaUFKSUFkQkFYUkJBWElpQnhDZUFTSUJEUUFMREFjTFFRQWhCQ0FDQkVBRFFBSi9JQU1vQWdRaUFTQURLQUpvUndSQUlBTWdBVUVCYWpZQ0JDQUJMUUFBREFFTElBTVFFZ3NpQVNBR2FpMEFJUVJBSUFJZ0JHb2dBVG9BQUNBRVFRRnFJUVFNQVFWQkFDRUtJQUloQ1F3RUN3QUxBQXNEUUFKL0lBTW9BZ1FpQVNBREtBSm9Sd1JBSUFNZ0FVRUJhallDQkNBQkxRQUFEQUVMSUFNUUVnc2dCbW90QUNFTkFBdEJBQ0VKUVFBaENnd0JDMEVBSVFrZ0JrR29BbW9FZnlBR0tBS29BZ1ZCQUFzTkJRc2dBeWdDQkNFQklBTXBBM0JDQUZrRVFDQURJQUZCQVdzaUFUWUNCQXNnQXlrRGVDQUJJQU1vQWl4cnJId2lFMUFnQzBIakFFWWdFaUFUVW5GeURRWUNRQ0FNUlEwQUlBaEZCRUFnQWlBS05nSUFEQUVMSUFJZ0NUWUNBQXNnQlEwQUlBb0VRQ0FLSUFSQkFuUnFRUUEyQWdBTElBbEZCRUJCQUNFSkRBRUxJQVFnQ1dwQkFEb0FBQXNnQXlnQ0JDQURLQUlzYTZ3Z0F5a0RlQ0FVZkh3aEZDQU5JQUpCQUVkcUlRMExJQUJCQVdvaEJDQUFMUUFCSWdBTkFRd0ZDd3RCQUNFSlFRQWhDZ3NnRFEwQkMwRi9JUTBMSUF4RkRRQWdDUkFRSUFvUUVBc2dCa0d3QW1va0FDQU5JUUFnQTBHUUFXb2tBQ0FBQzBNQUFrQWdBRVVOQUFKQUFrQUNRQUpBSUFGQkFtb09CZ0FCQWdJRUF3UUxJQUFnQWp3QUFBOExJQUFnQWowQkFBOExJQUFnQWo0Q0FBOExJQUFnQWpjREFBc0x0QU1DQTM4QmZpTUFRU0JySWdNa0FBSkFJQUZDLy8vLy8vLy8vLy8vQUlNaUJVS0FnSUNBZ0lEQXdEOTlJQVZDZ0lDQWdJQ0F3TC9BQUgxVUJFQWdBVUlaaUtjaEJDQUFVQ0FCUXYvLy93K0RJZ1ZDZ0lDQUNGUWdCVUtBZ0lBSVVSdEZCRUFnQkVHQmdJQ0FCR29oQWd3Q0N5QUVRWUNBZ0lBRWFpRUNJQUFnQlVLQWdJQUloWVJDQUZJTkFTQUNJQVJCQVhGcUlRSU1BUXNnQUZBZ0JVS0FnSUNBZ0lEQS8vOEFWQ0FGUW9DQWdJQ0FnTUQvL3dCUkcwVUVRQ0FCUWhtSXAwSC8vLzhCY1VHQWdJRCtCM0loQWd3QkMwR0FnSUQ4QnlFQ0lBVkMvLy8vLy8vL3Y3L0FBRllOQUVFQUlRSWdCVUl3aUtjaUJFR1IvZ0JKRFFBZ0EwRVFhaUFBSUFGQy8vLy8vLy8vUDROQ2dJQ0FnSUNBd0FDRUlnVWdCRUdCL2dCckVDOGdBeUFBSUFWQmdmOEFJQVJyRUh3Z0F5a0RDQ0lBUWhtSXB5RUNJQU1wQXdBZ0F5a0RFQ0FES1FNWWhFSUFVcTJFSWdWUUlBQkMvLy8vRDRNaUFFS0FnSUFJVkNBQVFvQ0FnQWhSRzBVRVFDQUNRUUZxSVFJTUFRc2dCU0FBUW9DQWdBaUZoRUlBVWcwQUlBSkJBWEVnQW1vaEFnc2dBMEVnYWlRQUlBSWdBVUlnaUtkQmdJQ0FnSGh4Y3I0TGdRUUNBMzhCZmdKQUFrQUNRQUovSUFBb0FnUWlBaUFBS0FKb1J3UkFJQUFnQWtFQmFqWUNCQ0FDTFFBQURBRUxJQUFRRWdzaUEwRXJhdzREQVFBQkFBc2dBMEV3YXlFQkRBRUxJQU5CTFVZaEJBSkFJQUZGQW44Z0FDZ0NCQ0lDSUFBb0FtaEhCRUFnQUNBQ1FRRnFOZ0lFSUFJdEFBQU1BUXNnQUJBU0N5SUNRVEJySWdGQkNrbHlEUUFnQUNrRGNFSUFVdzBBSUFBZ0FDZ0NCRUVCYXpZQ0JBc2dBaUVEQ3dKQUlBRkJDa2tFUUVFQUlRSURRQ0FESUFKQkNteHFJUUVDZnlBQUtBSUVJZ0lnQUNnQ2FFY0VRQ0FBSUFKQkFXbzJBZ1FnQWkwQUFBd0JDeUFBRUJJTElRTWdBVUV3YXlFQ0lBSkJ6Sm16NWdCSUlBTkJNR3NpQVVFSlRYRU5BQXNnQXF3aEJRSkFJQUZCQ2s4TkFBTkFJQU90SUFWQ0NuNThRakI5SVFVQ2Z5QUFLQUlFSWdFZ0FDZ0NhRWNFUUNBQUlBRkJBV28yQWdRZ0FTMEFBQXdCQ3lBQUVCSUxJZ05CTUdzaUFVRUpTdzBCSUFWQ3JvK0YxOGZDNjZNQlV3MEFDd3NnQVVFS1NRUkFBMEFDZnlBQUtBSUVJZ0VnQUNnQ2FFY0VRQ0FBSUFGQkFXbzJBZ1FnQVMwQUFBd0JDeUFBRUJJTFFUQnJRUXBKRFFBTEN5QUFLUU53UWdCWkJFQWdBQ0FBS0FJRVFRRnJOZ0lFQzBJQUlBVjlJQVVnQkJzaEJRd0JDMEtBZ0lDQWdJQ0FnSUIvSVFVZ0FDa0RjRUlBVXcwQUlBQWdBQ2dDQkVFQmF6WUNCRUtBZ0lDQWdJQ0FnSUIvRHdzZ0JRdWdNZ01RZndkK0FYd2pBRUV3YXlJTUpBQUNRQ0FDUVFKTkJFQWdBa0VDZENJQ1Fad3BhaWdDQUNFUElBSkJrQ2xxS0FJQUlRNERRQUovSUFFb0FnUWlBaUFCS0FKb1J3UkFJQUVnQWtFQmFqWUNCQ0FDTFFBQURBRUxJQUVRRWdzaUFoQndEUUFMUVFFaEJnSkFBa0FnQWtFcmF3NERBQUVBQVF0QmYwRUJJQUpCTFVZYklRWWdBU2dDQkNJQ0lBRW9BbWhIQkVBZ0FTQUNRUUZxTmdJRUlBSXRBQUFoQWd3QkN5QUJFQkloQWdzQ1FBSkFBMEFnQlVHS0dtb3NBQUFnQWtFZ2NrWUVRQUpBSUFWQkJrc05BQ0FCS0FJRUlnSWdBU2dDYUVjRVFDQUJJQUpCQVdvMkFnUWdBaTBBQUNFQ0RBRUxJQUVRRWlFQ0N5QUZRUUZxSWdWQkNFY05BUXdDQ3dzZ0JVRURSd1JBSUFWQkNFWU5BU0FEUlNBRlFRUkpjZzBDSUFWQkNFWU5BUXNnQVNrRGNDSVVRZ0JaQkVBZ0FTQUJLQUlFUVFGck5nSUVDeUFEUlNBRlFRUkpjZzBBSUJSQ0FGTWhBZ05BSUFKRkJFQWdBU0FCS0FJRVFRRnJOZ0lFQ3lBRlFRRnJJZ1ZCQTBzTkFBc0xRZ0FoRkNNQVFSQnJJZ0lrQUFKK0lBYXlRd0FBZ0grVXZDSURRZi8vLy84SGNTSUJRWUNBZ0FSclFmLy8vL2NIVFFSQUlBR3RRaG1HUW9DQWdJQ0FnSURBUDN3TUFRc2dBNjFDR1laQ2dJQ0FnSUNBd1AvL0FJUWdBVUdBZ0lEOEIwOE5BQnBDQUNBQlJRMEFHaUFDSUFHdFFnQWdBV2NpQVVIUkFHb1FMeUFDS1FNQUlSUWdBaWtEQ0VLQWdJQ0FnSURBQUlWQmlmOEFJQUZyclVJd2hvUUxJUlVnRENBVU53TUFJQXdnRlNBRFFZQ0FnSUI0Y2ExQ0lJYUVOd01JSUFKQkVHb2tBQ0FNS1FNSUlSUWdEQ2tEQUNFVkRBSUxBa0FDUUFKQUlBVU5BRUVBSVFVRFFDQUZRY2NjYWl3QUFDQUNRU0J5UncwQkFrQWdCVUVCU3cwQUlBRW9BZ1FpQWlBQktBSm9Sd1JBSUFFZ0FrRUJhallDQkNBQ0xRQUFJUUlNQVFzZ0FSQVNJUUlMSUFWQkFXb2lCVUVEUncwQUN3d0JDd0pBQWtBZ0JRNEVBQUVCQWdFTEFrQWdBa0V3UncwQUFuOGdBU2dDQkNJRklBRW9BbWhIQkVBZ0FTQUZRUUZxTmdJRUlBVXRBQUFNQVFzZ0FSQVNDMEZmY1VIWUFFWUVRQ01BUWJBRGF5SUNKQUFDZnlBQktBSUVJZ1VnQVNnQ2FFY0VRQ0FCSUFWQkFXbzJBZ1FnQlMwQUFBd0JDeUFCRUJJTElRVUNRQUovQTBBZ0JVRXdSd1JBQWtBZ0JVRXVSdzBFSUFFb0FnUWlCU0FCS0FKb1JnMEFJQUVnQlVFQmFqWUNCQ0FGTFFBQURBTUxCU0FCS0FJRUlnVWdBU2dDYUVjRWYwRUJJUW9nQVNBRlFRRnFOZ0lFSUFVdEFBQUZRUUVoQ2lBQkVCSUxJUVVNQVFzTElBRVFFZ3NoQlVFQklRUWdCVUV3UncwQUEwQWdGMElCZlNFWEFuOGdBU2dDQkNJRklBRW9BbWhIQkVBZ0FTQUZRUUZxTmdJRUlBVXRBQUFNQVFzZ0FSQVNDeUlGUVRCR0RRQUxRUUVoQ2d0Q2dJQ0FnSUNBd1A4L0lSVUNRQU5BQWtBZ0JVRWdjaUVMQWtBQ1FDQUZRVEJySWdoQkNra05BQ0FGUVM1SElBdEI0UUJyUVFaUGNRMEVJQVZCTGtjTkFDQUVEUUpCQVNFRUlCUWhGd3dCQ3lBTFFkY0FheUFJSUFWQk9Vb2JJUVVDUUNBVVFnZFhCRUFnQlNBSlFRUjBhaUVKREFFTElCUkNIRmNFUUNBQ1FUQnFJQVVRUVNBQ1FTQnFJQmtnRlVJQVFvQ0FnSUNBZ01EOVB4QVlJQUpCRUdvZ0Fpa0RJQ0laSUFJcEF5Z2lGU0FDS1FNd0lBSXBBemdRR0NBQ0lCWWdHQ0FDS1FNUUlBSXBBeGdRUENBQ0tRTUlJUmdnQWlrREFDRVdEQUVMSUFWRklBZHlEUUFnQWtIUUFHb2dHU0FWUWdCQ2dJQ0FnSUNBZ1A4L0VCZ2dBa0ZBYXlBV0lCZ2dBaWtEVUNBQ0tRTllFRHdnQWlrRFNDRVlRUUVoQnlBQ0tRTkFJUllMSUJSQ0FYd2hGRUVCSVFvTElBRW9BZ1FpQlNBQktBSm9Sd1IvSUFFZ0JVRUJhallDQkNBRkxRQUFCU0FCRUJJTElRVU1BUXNMUVM0aEJRc0NmaUFLUlFSQUFrQUNRQ0FCS1FOd1FnQlpCRUFnQVNBQktBSUVJZ1ZCQVdzMkFnUWdBMFVOQVNBQklBVkJBbXMyQWdRZ0JFVU5BaUFCSUFWQkEyczJBZ1FNQWdzZ0F3MEJDeUFCUWdBUVV3c2dBa0hnQUdvZ0JyZEVBQUFBQUFBQUFBQ2lFRjBnQWlrRFlDRVdJQUlwQTJnTUFRc2dGRUlIVndSQUlCUWhGUU5BSUFsQkJIUWhDU0FWUWdGOEloVkNDRklOQUFzTEFrQUNRQUpBSUFWQlgzRkIwQUJHQkVBZ0FTQURFT1VDSWhWQ2dJQ0FnSUNBZ0lDQWYxSU5BeUFEQkVBZ0FTa0RjRUlBV1EwQ0RBTUxRZ0FoRmlBQlFnQVFVMElBREFRTFFnQWhGU0FCS1FOd1FnQlREUUlMSUFFZ0FTZ0NCRUVCYXpZQ0JBdENBQ0VWQ3lBSlJRUkFJQUpCOEFCcUlBYTNSQUFBQUFBQUFBQUFvaEJkSUFJcEEzQWhGaUFDS1FONERBRUxJQmNnRkNBRUcwSUNoaUFWZkVJZ2ZTSVVRUUFnRDJ1dFZRUkFRZFNCQVVIRUFEWUNBQ0FDUWFBQmFpQUdFRUVnQWtHUUFXb2dBaWtEb0FFZ0Fpa0RxQUZDZjBMLy8vLy8vLysvLy84QUVCZ2dBa0dBQVdvZ0Fpa0RrQUVnQWlrRG1BRkNmMEwvLy8vLy8vKy8vLzhBRUJnZ0Fpa0RnQUVoRmlBQ0tRT0lBUXdCQ3lBUFFlSUJhNndnRkZjRVFDQUpRUUJPQkVBRFFDQUNRYUFEYWlBV0lCaENBRUtBZ0lDQWdJREEvNzkvRUR3Z0ZpQVlRb0NBZ0lDQWdJRC9QeERnQVNFQklBSkJrQU5xSUJZZ0dDQVdJQUlwQTZBRElBRkJBRWdpQXhzZ0dDQUNLUU9vQXlBREd4QThJQlJDQVgwaEZDQUNLUU9ZQXlFWUlBSXBBNUFESVJZZ0NVRUJkQ0FCUVFCT2NpSUpRUUJPRFFBTEN3SitJQlFnRDZ4OVFpQjhJaFduSWdGQkFDQUJRUUJLR3lBT0lCVWdEcTFUR3lJQlFmRUFUZ1JBSUFKQmdBTnFJQVlRUVNBQ0tRT0lBeUVYSUFJcEE0QURJUmxDQUF3QkN5QUNRZUFDYWtHUUFTQUJheERmQVJCZElBSkIwQUpxSUFZUVFTQUNRZkFDYWlBQ0tRUGdBaUFDS1FQb0FpQUNLUVBRQWlJWklBSXBBOWdDSWhjUTZ3SWdBaWtEK0FJaEdpQUNLUVB3QWdzaEZTQUNRY0FDYWlBSklBbEJBWEZGSUJZZ0dFSUFRZ0FRZTBFQVJ5QUJRU0JJY1hFaUFXb1FrQUVnQWtHd0Ftb2dHU0FYSUFJcEE4QUNJQUlwQThnQ0VCZ2dBa0dRQW1vZ0Fpa0RzQUlnQWlrRHVBSWdGU0FhRUR3Z0FrR2dBbXBDQUNBV0lBRWJRZ0FnR0NBQkd5QVpJQmNRR0NBQ1FZQUNhaUFDS1FPZ0FpQUNLUU9vQWlBQ0tRT1FBaUFDS1FPWUFoQThJQUpCOEFGcUlBSXBBNEFDSUFJcEE0Z0NJQlVnR2hEZUFTQUNLUVB3QVNJVklBSXBBL2dCSWhkQ0FFSUFFSHRGQkVCQjFJRUJRY1FBTmdJQUN5QUNRZUFCYWlBVklCY2dGS2NRNmdJZ0Fpa0Q0QUVoRmlBQ0tRUG9BUXdCQzBIVWdRRkJ4QUEyQWdBZ0FrSFFBV29nQmhCQklBSkJ3QUZxSUFJcEE5QUJJQUlwQTlnQlFnQkNnSUNBZ0lDQXdBQVFHQ0FDUWJBQmFpQUNLUVBBQVNBQ0tRUElBVUlBUW9DQWdJQ0FnTUFBRUJnZ0Fpa0RzQUVoRmlBQ0tRTzRBUXNoRkNBTUlCWTNBeEFnRENBVU53TVlJQUpCc0FOcUpBQWdEQ2tER0NFVUlBd3BBeEFoRlF3R0N5QUJLUU53UWdCVERRQWdBU0FCS0FJRVFRRnJOZ0lFQ3lBQklRVWdCaUVKSUFNaENrRUFJUVpCQUNFREl3QkJrTVlBYXlJRUpBQkJBQ0FPSUE5cUloSnJJUk1DUUFKL0EwQWdBa0V3UndSQUFrQWdBa0V1UncwRUlBVW9BZ1FpQVNBRktBSm9SZzBBSUFVZ0FVRUJhallDQkNBQkxRQUFEQU1MQlNBRktBSUVJZ0VnQlNnQ2FFY0VmMEVCSVFZZ0JTQUJRUUZxTmdJRUlBRXRBQUFGUVFFaEJpQUZFQklMSVFJTUFRc0xJQVVRRWdzaEFrRUJJUWNnQWtFd1J3MEFBMEFnRkVJQmZTRVVBbjhnQlNnQ0JDSUJJQVVvQW1oSEJFQWdCU0FCUVFGcU5nSUVJQUV0QUFBTUFRc2dCUkFTQ3lJQ1FUQkdEUUFMUVFFaEJnc2dCRUVBTmdLUUJnSitBa0FDUUFKQUFrQUNRQ0FDUVM1R0lnRkZJQUpCTUdzaUNFRUpTM0ZGQkVBRFFBSkFJQUZCQVhFRVFDQUhSUVJBSUJVaEZFRUJJUWNNQWdzZ0JrVWhBUXdFQ3lBVlFnRjhJUlVnQTBIOEQwd0VRQ0FOSUJXbklBSkJNRVliSVEwZ0JFR1FCbW9nQTBFQ2RHb2lBU0FMQkg4Z0FpQUJLQUlBUVFwc2FrRXdhd1VnQ0FzMkFnQkJBU0VHUVFBZ0MwRUJhaUlCSUFGQkNVWWlBUnNoQ3lBQklBTnFJUU1NQVFzZ0FrRXdSZzBBSUFRZ0JDZ0NnRVpCQVhJMkFvQkdRZHlQQVNFTkN3Si9JQVVvQWdRaUFTQUZLQUpvUndSQUlBVWdBVUVCYWpZQ0JDQUJMUUFBREFFTElBVVFFZ3NpQWtFdVJpSUJJQUpCTUdzaUNFRUtTWElOQUFzTElCUWdGU0FIR3lFVUlBWkZJQUpCWDNGQnhRQkhja1VFUUFKQUlBVWdDaERsQWlJV1FvQ0FnSUNBZ0lDQWdIOVNEUUFnQ2tVTkJVSUFJUllnQlNrRGNFSUFVdzBBSUFVZ0JTZ0NCRUVCYXpZQ0JBc2dCa1VOQXlBVUlCWjhJUlFNQlFzZ0JrVWhBU0FDUVFCSURRRUxJQVVwQTNCQ0FGTU5BQ0FGSUFVb0FnUkJBV3MyQWdRTElBRkZEUUlMUWRTQkFVRWNOZ0lBQzBJQUlSVWdCVUlBRUZOQ0FBd0JDeUFFS0FLUUJpSUJSUVJBSUFRZ0NiZEVBQUFBQUFBQUFBQ2lFRjBnQkNrREFDRVZJQVFwQXdnTUFRc2dGQ0FWVWlBVlFnbFZjaUFPUVI1TVFRQWdBU0FPZGh0eVJRUkFJQVJCTUdvZ0NSQkJJQVJCSUdvZ0FSQ1FBU0FFUVJCcUlBUXBBekFnQkNrRE9DQUVLUU1nSUFRcEF5Z1FHQ0FFS1FNUUlSVWdCQ2tER0F3QkN5QVBRWDV0clNBVVV3UkFRZFNCQVVIRUFEWUNBQ0FFUWVBQWFpQUpFRUVnQkVIUUFHb2dCQ2tEWUNBRUtRTm9RbjlDLy8vLy8vLy92Ly8vQUJBWUlBUkJRR3NnQkNrRFVDQUVLUU5ZUW45Qy8vLy8vLy8vdi8vL0FCQVlJQVFwQTBBaEZTQUVLUU5JREFFTElBOUI0Z0ZyckNBVVZRUkFRZFNCQVVIRUFEWUNBQ0FFUVpBQmFpQUpFRUVnQkVHQUFXb2dCQ2tEa0FFZ0JDa0RtQUZDQUVLQWdJQ0FnSURBQUJBWUlBUkI4QUJxSUFRcEE0QUJJQVFwQTRnQlFnQkNnSUNBZ0lDQXdBQVFHQ0FFS1FOd0lSVWdCQ2tEZUF3QkN5QUxCRUFnQzBFSVRBUkFJQVJCa0FacUlBTkJBblJxSWdFb0FnQWhCUU5BSUFWQkNtd2hCU0FMUVFGcUlndEJDVWNOQUFzZ0FTQUZOZ0lBQ3lBRFFRRnFJUU1MQWtBZ0RTQVVweUlIU2lBTlFRbE9jaUFIUVJGS2NnMEFJQWRCQ1VZRVFDQUVRY0FCYWlBSkVFRWdCRUd3QVdvZ0JDZ0NrQVlRa0FFZ0JFR2dBV29nQkNrRHdBRWdCQ2tEeUFFZ0JDa0RzQUVnQkNrRHVBRVFHQ0FFS1FPZ0FTRVZJQVFwQTZnQkRBSUxJQWRCQ0V3RVFDQUVRWkFDYWlBSkVFRWdCRUdBQW1vZ0JDZ0NrQVlRa0FFZ0JFSHdBV29nQkNrRGtBSWdCQ2tEbUFJZ0JDa0RnQUlnQkNrRGlBSVFHQ0FFUWVBQmFrRUFJQWRyUVFKMFFaQXBhaWdDQUJCQklBUkIwQUZxSUFRcEEvQUJJQVFwQS9nQklBUXBBK0FCSUFRcEErZ0JFT2tDSUFRcEE5QUJJUlVnQkNrRDJBRU1BZ3NnRGlBSFFYMXNha0ViYWlJQlFSNU1RUUFnQkNnQ2tBWWlBaUFCZGhzTkFDQUVRZUFDYWlBSkVFRWdCRUhRQW1vZ0FoQ1FBU0FFUWNBQ2FpQUVLUVBnQWlBRUtRUG9BaUFFS1FQUUFpQUVLUVBZQWhBWUlBUkJzQUpxSUFkQkFuUkJ5Q2hxS0FJQUVFRWdCRUdnQW1vZ0JDa0R3QUlnQkNrRHlBSWdCQ2tEc0FJZ0JDa0R1QUlRR0NBRUtRT2dBaUVWSUFRcEE2Z0NEQUVMQTBBZ0JFR1FCbW9nQXlJQ1FRRnJJZ05CQW5ScUtBSUFSUTBBQzBFQUlRc0NRQ0FIUVFsdklnRkZCRUJCQUNFQkRBRUxJQUVnQVVFSmFpQUhRUUJPR3lFREFrQWdBa1VFUUVFQUlRRkJBQ0VDREFFTFFZQ1U2OXdEUVFBZ0EydEJBblJCa0NscUtBSUFJZ1p0SVFwQkFDRUlRUUFoQlVFQUlRRURRQ0FFUVpBR2FpQUZRUUowYWlJTklBZ2dEU2dDQUNJTklBWnVJaEJxSWdnMkFnQWdBVUVCYWtIL0QzRWdBU0FJUlNBQklBVkdjU0lJR3lFQklBZEJDV3NnQnlBSUd5RUhJQW9nRFNBR0lCQnNhMndoQ0NBRlFRRnFJZ1VnQWtjTkFBc2dDRVVOQUNBRVFaQUdhaUFDUVFKMGFpQUlOZ0lBSUFKQkFXb2hBZ3NnQnlBRGEwRUphaUVIQ3dOQUFrQWdCMEVrVGdSQUlBZEJKRWNOQVNBRVFaQUdhaUFCUVFKMGFpZ0NBRUhSNmZrRVR3MEJDeUFDUWY4UGFpRUdRUUFoQ0FOQUlBaXRJQVJCa0FacUlBWkIvdzl4SWdOQkFuUnFJZ1kxQWdCQ0hZWjhJaFJDZ1pUcjNBTlVCSDlCQUFVZ0ZDQVVRb0NVNjl3RGdDSVZRb0NVNjl3RGZuMGhGQ0FWcHdzaENDQUdJQlNuSWdZMkFnQWdBaUFDSUFJZ0F5QUdHeUFCSUFOR0d5QURJQUpCQVd0Qi93OXhSeHNoQWlBRFFRRnJJUVlnQVNBRFJ3MEFDeUFMUVIxcklRc2dDRVVOQVNBQ0lBRkJBV3RCL3c5eElnRkdCRUFnQkVHUUJtb2lBeUFDUWY0UGFrSC9EM0ZCQW5ScUlnWWdCaWdDQUNBQ1FRRnJRZjhQY1NJQ1FRSjBJQU5xS0FJQWNqWUNBQXNnQjBFSmFpRUhJQVJCa0FacUlBRkJBblJxSUFnMkFnQU1BUXNMQWtBRFFDQUNRUUZxUWY4UGNTRURJQVJCa0FacUlBSkJBV3RCL3c5eFFRSjBhaUVJQTBBZ0FTRUdRUUFoQlFKQUFrQURRQUpBSUFVZ0JtcEIvdzl4SWdFZ0FrWU5BQ0FFUVpBR2FpQUJRUUowYWlnQ0FDSUJJQVZCQW5SQjRDaHFLQUlBSWdwSkRRQWdBU0FLU3cwQ0lBVkJBV29pQlVFRVJ3MEJDd3NnQjBFa1J3MEFRZ0FoRkVFQUlRVkNBQ0VWQTBBZ0FpQUZJQVpxUWY4UGNTSUJSZ1JBSUFKQkFXcEIvdzl4SWdKQkFuUWdCR3BCQURZQ2pBWUxJQVJCZ0FacUlCUWdGVUlBUW9DQWdJRGxtcmVPd0FBUUdDQUVRZkFGYWlBRVFaQUdhaUFCUVFKMGFpZ0NBQkNRQVNBRVFlQUZhaUFFS1FPQUJpQUVLUU9JQmlBRUtRUHdCU0FFS1FQNEJSQThJQVFwQStnRklSVWdCQ2tENEFVaEZDQUZRUUZxSWdWQkJFY05BQXNnQkVIUUJXb2dDUkJCSUFSQndBVnFJQlFnRlNBRUtRUFFCU0FFS1FQWUJSQVlJQVFwQThnRklSVkNBQ0VVSUFRcEE4QUZJUllnQzBIeEFHb2lCeUFQYXlJRFFRQWdBMEVBU2hzZ0RpQURJQTVJSWdVYklnRkI4QUJNRFFFTUJBdEJDVUVCSUFkQkxVb2JJZ29nQzJvaEN5QUdJQUlpQVVZTkFVR0FsT3ZjQXlBS2RpRU5RWDhnQ25SQmYzTWhFRUVBSVFVZ0JpRUJBMEFnQkVHUUJtb2dCa0VDZEdvaUVTQUZJQkVvQWdBaUVTQUtkbW9pQlRZQ0FDQUJRUUZxUWY4UGNTQUJJQVZGSUFFZ0JrWnhJZ1ViSVFFZ0IwRUpheUFISUFVYklRY2dFQ0FSY1NBTmJDRUZJQVpCQVdwQi93OXhJZ1lnQWtjTkFBc2dCVVVOQVNBQklBTkhCRUFnQkVHUUJtb2dBa0VDZEdvZ0JUWUNBQ0FESVFJTUF3c2dDQ0FJS0FJQVFRRnlOZ0lBSUFNaEFRd0JDd3NMSUFSQmtBVnFRZUVCSUFGckVOOEJFRjBnQkVHd0JXb2dCQ2tEa0FVZ0JDa0RtQVVnRmlBVkVPc0NJQVFwQTdnRklSa2dCQ2tEc0FVaEdDQUVRWUFGYWtIeEFDQUJheERmQVJCZElBUkJvQVZxSUJZZ0ZTQUVLUU9BQlNBRUtRT0lCUkRuQWlBRVFmQUVhaUFXSUJVZ0JDa0RvQVVpRkNBRUtRT29CU0lYRU40QklBUkI0QVJxSUJnZ0dTQUVLUVB3QkNBRUtRUDRCQkE4SUFRcEErZ0VJUlVnQkNrRDRBUWhGZ3NDUUNBR1FRUnFRZjhQY1NJS0lBSkdEUUFDUUNBRVFaQUdhaUFLUVFKMGFpZ0NBQ0lLUWYvSnRlNEJUUVJBSUFwRklBWkJCV3BCL3c5eElBSkdjUTBCSUFSQjhBTnFJQW0zUkFBQUFBQUFBTkEvb2hCZElBUkI0QU5xSUJRZ0Z5QUVLUVB3QXlBRUtRUDRBeEE4SUFRcEErZ0RJUmNnQkNrRDRBTWhGQXdCQ3lBS1FZREt0ZTRCUndSQUlBUkIwQVJxSUFtM1JBQUFBQUFBQU9nL29oQmRJQVJCd0FScUlCUWdGeUFFS1FQUUJDQUVLUVBZQkJBOElBUXBBOGdFSVJjZ0JDa0R3QVFoRkF3QkN5QUp0eUViSUFJZ0JrRUZha0gvRDNGR0JFQWdCRUdRQkdvZ0cwUUFBQUFBQUFEZ1A2SVFYU0FFUVlBRWFpQVVJQmNnQkNrRGtBUWdCQ2tEbUFRUVBDQUVLUU9JQkNFWElBUXBBNEFFSVJRTUFRc2dCRUd3QkdvZ0cwUUFBQUFBQUFEb1A2SVFYU0FFUWFBRWFpQVVJQmNnQkNrRHNBUWdCQ2tEdUFRUVBDQUVLUU9vQkNFWElBUXBBNkFFSVJRTElBRkI3d0JLRFFBZ0JFSFFBMm9nRkNBWFFnQkNnSUNBZ0lDQXdQOC9FT2NDSUFRcEE5QURJQVFwQTlnRFFnQkNBQkI3RFFBZ0JFSEFBMm9nRkNBWFFnQkNnSUNBZ0lDQXdQOC9FRHdnQkNrRHlBTWhGeUFFS1FQQUF5RVVDeUFFUWJBRGFpQVdJQlVnRkNBWEVEd2dCRUdnQTJvZ0JDa0RzQU1nQkNrRHVBTWdHQ0FaRU40QklBUXBBNmdESVJVZ0JDa0RvQU1oRmdKQVFYNGdFbXNnQjBILy8vLy9CM0ZPRFFBZ0JDQVZRdi8vLy8vLy8vLy8vd0NETndPWUF5QUVJQlkzQTVBRElBUkJnQU5xSUJZZ0ZVSUFRb0NBZ0lDQWdJRC9QeEFZSUFRcEE1QURJaGdnQkNrRG1BTWlHVUtBZ0lDQWdJQ0F1TUFBRU9BQklRSWdGU0FFS1FPSUF5QUNRUUJJSWdZYklSVWdGaUFFS1FPQUF5QUdHeUVXSUJNZ0N5QUNRUUJPYWlJTFFlNEFhazRFUUNBRklBVWdBU0FEUjNFZ0dDQVpRb0NBZ0lDQWdJQzR3QUFRNEFGQkFFZ2JRUUZIRFFFZ0ZDQVhRZ0JDQUJCN1JRMEJDMEhVZ1FGQnhBQTJBZ0FMSUFSQjhBSnFJQllnRlNBTEVPb0NJQVFwQS9BQ0lSVWdCQ2tEK0FJTElSUWdEQ0FWTndNZ0lBd2dGRGNES0NBRVFaREdBR29rQUNBTUtRTW9JUlFnRENrRElDRVZEQVFMSUFFcEEzQkNBRmtFUUNBQklBRW9BZ1JCQVdzMkFnUUxEQUVMQWtBQ2Z5QUJLQUlFSWdJZ0FTZ0NhRWNFUUNBQklBSkJBV28yQWdRZ0FpMEFBQXdCQ3lBQkVCSUxRU2hHQkVCQkFTRUZEQUVMUW9DQWdJQ0FnT0QvL3dBaEZDQUJLUU53UWdCVERRTWdBU0FCS0FJRVFRRnJOZ0lFREFNTEEwQUNmeUFCS0FJRUlnSWdBU2dDYUVjRVFDQUJJQUpCQVdvMkFnUWdBaTBBQUF3QkN5QUJFQklMSWdKQk1HdEJDa2tnQWtIQkFHdEJHa2x5SUFKQjN3Qkdja1VnQWtIaEFHdEJHazl4UlFSQUlBVkJBV29oQlF3QkN3dENnSUNBZ0lDQTRQLy9BQ0VVSUFKQktVWU5BaUFCS1FOd0loZENBRmtFUUNBQklBRW9BZ1JCQVdzMkFnUUxBa0FnQXdSQUlBVU5BUXdFQ3d3QkN3TkFJQVZCQVdzaEJTQVhRZ0JaQkVBZ0FTQUJLQUlFUVFGck5nSUVDeUFGRFFBTERBSUxRZFNCQVVFY05nSUFJQUZDQUJCVEMwSUFJUlFMSUFBZ0ZUY0RBQ0FBSUJRM0F3Z2dERUV3YWlRQUM4b0dBZ1IvQTM0akFFR0FBV3NpQlNRQUFrQUNRQUpBSUFNZ0JFSUFRZ0FRZTBVTkFBSi9JQVJDLy8vLy8vLy9QNE1oQ1FKL0lBUkNNSWluUWYvL0FYRWlCa0gvL3dGSEJFQkJCQ0FHRFFFYVFRSkJBeUFESUFtRVVCc01BZ3NnQXlBSmhGQUxDMFVOQUNBQ1FqQ0lweUlJUWYvL0FYRWlCa0gvL3dGSERRRUxJQVZCRUdvZ0FTQUNJQU1nQkJBWUlBVWdCU2tERUNJQklBVXBBeGdpQWlBQklBSVE2UUlnQlNrRENDRUNJQVVwQXdBaEJBd0JDeUFCSUFKQy8vLy8vLy8vUDRNZ0JxMUNNSWFFSWdvZ0F5QUVRdi8vLy8vLy96K0RJQVJDTUlpblFmLy9BWEVpQjYxQ01JYUVJZ2tRZTBFQVRBUkFJQUVnQ2lBRElBa1Fld1JBSUFFaEJBd0NDeUFGUWZBQWFpQUJJQUpDQUVJQUVCZ2dCU2tEZUNFQ0lBVXBBM0FoQkF3QkN5QUdCSDRnQVFVZ0JVSGdBR29nQVNBS1FnQkNnSUNBZ0lDQXdMdkFBQkFZSUFVcEEyZ2lDa0l3aUtkQitBQnJJUVlnQlNrRFlBc2hCQ0FIUlFSQUlBVkIwQUJxSUFNZ0NVSUFRb0NBZ0lDQWdNQzd3QUFRR0NBRktRTllJZ2xDTUlpblFmZ0FheUVISUFVcEExQWhBd3NnQ1VMLy8vLy8vLzgvZzBLQWdJQ0FnSURBQUlRaENTQUtRdi8vLy8vLy96K0RRb0NBZ0lDQWdNQUFoQ0VLSUFZZ0Iwb0VRQU5BQW40Z0NpQUpmU0FESUFSV3JYMGlDMElBV1FSQUlBc2dCQ0FEZlNJRWhGQUVRQ0FGUVNCcUlBRWdBa0lBUWdBUUdDQUZLUU1vSVFJZ0JTa0RJQ0VFREFVTElBdENBWVlnQkVJL2lJUU1BUXNnQ2tJQmhpQUVRaitJaEFzaENpQUVRZ0dHSVFRZ0JrRUJheUlHSUFkS0RRQUxJQWNoQmdzQ1FDQUtJQWw5SUFNZ0JGYXRmU0lKUWdCVEJFQWdDaUVKREFFTElBa2dCQ0FEZlNJRWhFSUFVZzBBSUFWQk1Hb2dBU0FDUWdCQ0FCQVlJQVVwQXpnaEFpQUZLUU13SVFRTUFRc2dDVUwvLy8vLy8vOC9XQVJBQTBBZ0JFSS9pQ0VCSUFaQkFXc2hCaUFFUWdHR0lRUWdBU0FKUWdHR2hDSUpRb0NBZ0lDQWdNQUFWQTBBQ3dzZ0NFR0FnQUp4SVFjZ0JrRUFUQVJBSUFWQlFHc2dCQ0FKUXYvLy8vLy8veitESUFaQitBQnFJQWR5clVJd2hvUkNBRUtBZ0lDQWdJREF3ejhRR0NBRktRTklJUUlnQlNrRFFDRUVEQUVMSUFsQy8vLy8vLy8vUDRNZ0JpQUhjcTFDTUlhRUlRSUxJQUFnQkRjREFDQUFJQUkzQXdnZ0JVR0FBV29rQUFzeUFDQUFRZjhCY1NJQUlBRVE3QUlpQVVGL2MzRkJBWFFnQUNBQmMyc2lBRUZxY1VFQmRDQUFRUlZ6YTBFWWRFRVlkUXVxRHdJRmZ3NStJd0JCMEFKcklnVWtBQ0FFUXYvLy8vLy8veitESVFzZ0FrTC8vLy8vLy84L2d5RUtJQUlnQklWQ2dJQ0FnSUNBZ0lDQWY0TWhEU0FFUWpDSXAwSC8vd0Z4SVFnQ1FBSkFJQUpDTUlpblFmLy9BWEVpQ1VFQmEwSDkvd0ZOQkVBZ0NFRUJhMEgrL3dGSkRRRUxJQUZRSUFKQy8vLy8vLy8vLy8vL0FJTWlERUtBZ0lDQWdJREEvLzhBVkNBTVFvQ0FnSUNBZ01ELy93QlJHMFVFUUNBQ1FvQ0FnSUNBZ0NDRUlRME1BZ3NnQTFBZ0JFTC8vLy8vLy8vLy8vOEFneUlDUW9DQWdJQ0FnTUQvL3dCVUlBSkNnSUNBZ0lDQXdQLy9BRkViUlFSQUlBUkNnSUNBZ0lDQUlJUWhEU0FESVFFTUFnc2dBU0FNUW9DQWdJQ0FnTUQvL3dDRmhGQUVRQ0FESUFKQ2dJQ0FnSUNBd1AvL0FJV0VVQVJBUWdBaEFVS0FnSUNBZ0lEZy8vOEFJUTBNQXdzZ0RVS0FnSUNBZ0lEQS8vOEFoQ0VOUWdBaEFRd0NDeUFESUFKQ2dJQ0FnSUNBd1AvL0FJV0VVQVJBUWdBaEFRd0NDeUFCSUF5RVVBUkFRb0NBZ0lDQWdPRC8vd0FnRFNBQ0lBT0VVQnNoRFVJQUlRRU1BZ3NnQWlBRGhGQUVRQ0FOUW9DQWdJQ0FnTUQvL3dDRUlRMUNBQ0VCREFJTElBeEMvLy8vLy8vL1AxZ0VRQ0FGUWNBQ2FpQUJJQW9nQVNBS0lBcFFJZ1liZVNBR1FRWjByWHluSWdaQkQyc1FMMEVRSUFacklRWWdCU2tEeUFJaENpQUZLUVBBQWlFQkN5QUNRdi8vLy8vLy96OVdEUUFnQlVHd0Ftb2dBeUFMSUFNZ0N5QUxVQ0lIRzNrZ0IwRUdkSzE4cHlJSFFROXJFQzhnQmlBSGFrRVFheUVHSUFVcEE3Z0NJUXNnQlNrRHNBSWhBd3NnQlVHZ0Ftb2dDMEtBZ0lDQWdJREFBSVFpRWtJUGhpQURRakdJaENJQ1FnQkNnSUNBZ0xEbXZJTDFBQ0FDZlNJRVFnQVFLeUFGUVpBQ2FrSUFJQVVwQTZnQ2ZVSUFJQVJDQUJBcklBVkJnQUpxSUFVcEE1Z0NRZ0dHSUFVcEE1QUNRaitJaENJRVFnQWdBa0lBRUNzZ0JVSHdBV29nQkVJQVFnQWdCU2tEaUFKOVFnQVFLeUFGUWVBQmFpQUZLUVA0QVVJQmhpQUZLUVB3QVVJL2lJUWlCRUlBSUFKQ0FCQXJJQVZCMEFGcUlBUkNBRUlBSUFVcEErZ0JmVUlBRUNzZ0JVSEFBV29nQlNrRDJBRkNBWVlnQlNrRDBBRkNQNGlFSWdSQ0FDQUNRZ0FRS3lBRlFiQUJhaUFFUWdCQ0FDQUZLUVBJQVgxQ0FCQXJJQVZCb0FGcUlBSkNBQ0FGS1FPNEFVSUJoaUFGS1FPd0FVSS9pSVJDQVgwaUFrSUFFQ3NnQlVHUUFXb2dBMElQaGtJQUlBSkNBQkFySUFWQjhBQnFJQUpDQUVJQUlBVXBBNmdCSUFVcEE2QUJJZ3dnQlNrRG1BRjhJZ1FnREZTdGZDQUVRZ0ZXclh4OVFnQVFLeUFGUVlBQmFrSUJJQVI5UWdBZ0FrSUFFQ3NnQmlBSklBaHJhaUVHQW44Z0JTa0RjQ0lUUWdHR0lnNGdCU2tEaUFFaUQwSUJoaUFGS1FPQUFVSS9pSVI4SWhCQzUrd0FmU0lVUWlDSUlnSWdDa0tBZ0lDQWdJREFBSVFpRlVJZmlFTC8vLy8vRDRNaUJINGlFU0FCUWdHR0lneENJSWdpQ3lBUUlCUldyU0FPSUJCV3JTQUZLUU40UWdHR0lCTkNQNGlFSUE5Q1A0aDhmSHhDQVgwaUUwSWdpQ0lRZm53aURpQVJWSzBnRGlBT0lCTkMvLy8vL3crREloTWdBVUkvaUNJV0lBcENBWWFFUXYvLy8vOFBneUlLZm53aURsYXRmQ0FFSUJCK2ZDQUVJQk4rSWhFZ0NpQVFmbndpRHlBUlZLMUNJSVlnRDBJZ2lJUjhJQTRnRGlBUFFpQ0dmQ0lPVnExOElBNGdEaUFVUXYvLy8vOFBneUlVSUFwK0loRWdBaUFMZm53aUR5QVJWSzBnRHlBUElCTWdERUwrLy8vL0Q0TWlFWDU4SWc5V3JYeDhJZzVXclh3Z0RpQUVJQlIrSWhjZ0VDQVJmbndpQkNBQ0lBcCtmQ0lLSUFzZ0UzNThJaEJDSUlnZ0NpQVFWcTBnQkNBWFZLMGdCQ0FLVnExOGZFSWdob1I4SWdRZ0RsU3RmQ0FFSUE4Z0FpQVJmaUlDSUFzZ0ZINThJZ3RDSUlnZ0FpQUxWcTFDSUlhRWZDSUNJQTlVclNBQ0lCQkNJSVo4SUFKVXJYeDhJZ0lnQkZTdGZDSUVRdi8vLy8vLy8vOEFXQVJBSUJWQ0FZWWdGb1FoRlNBRlFkQUFhaUFDSUFRZ0F5QVNFQ3NnQVVJeGhpQUZLUU5ZZlNBRktRTlFJZ0ZDQUZLdGZTRUtRZ0FnQVgwaEN5QUdRZjcvQUdvTUFRc2dCVUhnQUdvZ0JFSS9oaUFDUWdHSWhDSUNJQVJDQVlnaUJDQURJQklRS3lBQlFqQ0dJQVVwQTJoOUlBVXBBMkFpREVJQVVxMTlJUXBDQUNBTWZTRUxJQUVoRENBR1FmLy9BR29MSWdaQi8vOEJUZ1JBSUExQ2dJQ0FnSUNBd1AvL0FJUWhEVUlBSVFFTUFRc0NmaUFHUVFCS0JFQWdDa0lCaGlBTFFqK0loQ0VLSUFSQy8vLy8vLy8vUDRNZ0JxMUNNSWFFSVF3Z0MwSUJoZ3dCQ3lBR1FZOS9UQVJBUWdBaEFRd0NDeUFGUVVCcklBSWdCRUVCSUFackVId2dCVUV3YWlBTUlCVWdCa0h3QUdvUUx5QUZRU0JxSUFNZ0VpQUZLUU5BSWdJZ0JTa0RTQ0lNRUNzZ0JTa0RPQ0FGS1FNb1FnR0dJQVVwQXlBaUFVSS9pSVI5SUFVcEF6QWlCQ0FCUWdHR0lnRlVyWDBoQ2lBRUlBRjlDeUVFSUFWQkVHb2dBeUFTUWdOQ0FCQXJJQVVnQXlBU1FnVkNBQkFySUF3Z0FpQUNJQU1nQWtJQmd5SUJJQVI4SWdOVUlBb2dBU0FEVnExOElnRWdFbFlnQVNBU1VSdXRmQ0lDVnExOElnUWdBaUFDSUFSQ2dJQ0FnSUNBd1AvL0FGUWdBeUFGS1FNUVZpQUJJQVVwQXhnaUJGWWdBU0FFVVJ0eHJYd2lBbGF0ZkNJRUlBSWdCRUtBZ0lDQWdJREEvLzhBVkNBRElBVXBBd0JXSUFFZ0JTa0RDQ0lEVmlBQklBTlJHM0d0ZkNJQklBSlVyWHdnRFlRaERRc2dBQ0FCTndNQUlBQWdEVGNEQ0NBRlFkQUNhaVFBQzc4Q0FRRi9Jd0JCMEFCcklnUWtBQUpBSUFOQmdJQUJUZ1JBSUFSQklHb2dBU0FDUWdCQ2dJQ0FnSUNBZ1AvL0FCQVlJQVFwQXlnaEFpQUVLUU1nSVFFZ0EwSC8vd0ZJQkVBZ0EwSC8vd0JySVFNTUFnc2dCRUVRYWlBQklBSkNBRUtBZ0lDQWdJQ0EvLzhBRUJnZ0EwSDkvd0lnQTBIOS93SklHMEgrL3dGcklRTWdCQ2tER0NFQ0lBUXBBeEFoQVF3QkN5QURRWUdBZjBvTkFDQUVRVUJySUFFZ0FrSUFRb0NBZ0lDQWdJQTVFQmdnQkNrRFNDRUNJQVFwQTBBaEFTQURRZlNBZmtvRVFDQURRWTMvQUdvaEF3d0JDeUFFUVRCcUlBRWdBa0lBUW9DQWdJQ0FnSUE1RUJnZ0EwSG9nWDBnQTBIb2dYMUtHMEdhL2dGcUlRTWdCQ2tET0NFQ0lBUXBBekFoQVFzZ0JDQUJJQUpDQUNBRFFmLy9BR3F0UWpDR0VCZ2dBQ0FFS1FNSU53TUlJQUFnQkNrREFEY0RBQ0FFUWRBQWFpUUFDelVBSUFBZ0FUY0RBQ0FBSUFKQy8vLy8vLy8vUDRNZ0JFSXdpS2RCZ0lBQ2NTQUNRakNJcDBILy93RnhjcTFDTUlhRU53TUlDNDRCQVFOL0l3QkJFR3NoQVFOQVFleWNyOThESVFJQ1FBTkFJQUpCM2JiaHZBWkdEUUVnQWtHV3o4SytCRWNFUUNBQ1FleWNyOThEUncwQklBRWdBRFlDRENBQklBTTJBZ2hCbHMvQ3ZnUkIzYmJodkFZZ0FTZ0NEQnNoQWd3QkN3c2dBU2dDQ0NJQVFRRjBRUUp4SUFCQkFYTnFJUU1nQVNnQ0RDQUJLQUlNUVFGcmNTRUFEQUVMQ3lBQktBSUlDeXdBSUFBb0FnQWFJQUFvQWdBZ0FCQ0ZBV29hSUFBb0FnQWdBQkNKQVdvYUlBQW9BZ0FnQUJDRkFXb2FDd2NBSUFFZ0FHc0xDUUFnQUNBQkVPNENDeXNCQVg4Z0FDZ0NBQ0lCQkVBZ0FSRDdBa0YvRUY1RkJFQWdBQ2dDQUVVUEN5QUFRUUEyQWdBTFFRRUxLd0VCZnlBQUtBSUFJZ0VFUUNBQkVJQURRWDhRWGtVRVFDQUFLQUlBUlE4TElBQkJBRFlDQUF0QkFRc05BRUVBSUFBZ0FFRi9FRjRiQzQwQkFRUi9Jd0JCRUdzaUJTUUFJQUVnQWhEdkFpSUVRVzlOQkVBQ1FDQUVRUXBOQkVBZ0FDQUVFRG9nQUNFRERBRUxJQUFnQkJDUkFVRUJhaUlHRUY4aUF4Qk5JQUFnQmhCTUlBQWdCQkE1Q3dOQUlBRWdBa2NFUUNBRElBRVFOQ0FEUVFGcUlRTWdBVUVCYWlFQkRBRUxDeUFGUVFBNkFBOGdBeUFGUVE5cUVEUWdCVUVRYWlRQUR3c1FGd0FMNVFRQkIzOGdBQ2dDQkNBQUVFTW9BZ0JIQkVBakFFRVFheUlDSkFBZ0FpQUFOZ0lBSUFJZ0FDZ0NCQ0lETmdJRUlBSWdBMEVCYWpZQ0NDQUFFRU1nQWlnQ0JDQUJFSXdDSUFJZ0FpZ0NCRUVCYWpZQ0JDQUNFSWtDSUFKQkVHb2tBQThMSXdCQklHc2lCeVFBSUFBUVF5SUlBbjhnQjBFSWFpRUNBbjhnQUJDSkFVRUJhaUVHSXdCQkVHc2lCU1FBSUFVZ0JqWUNEQ01BUVJCcklnUWtBQ0FBRUVNYUlBUkJmellDRENBRVFmLy8vLzhITmdJSUlBUkJER29nQkVFSWFoQ2lBU2dDQUNFRElBUkJFR29rQUNBRElBWlBCRUFnQUJDRkFTSUVJQU5CQVhaSkJFQWdCU0FFUVFGME5nSUlJQVZCQ0dvZ0JVRU1haEIyS0FJQUlRTUxJQVZCRUdva0FDQUREQUVMUWFjYkVKWUNBQXNoQlNBQUVJa0JJUVpCQUNFREl3QkJFR3NpQkNRQUlBUkJBRFlDRENBQ1FReHFJQVJCREdvZ0NCQ0VBaUFGQkVBZ0FpZ0NFQm9nQlJCZklRTUxJQUlnQXpZQ0FDQUNJQU1nQm1vaUJqWUNDQ0FDSUFZMkFnUWdBaENEQVNBRElBVnFOZ0lBSUFSQkVHb2tBQ0FDS0FJSUN5QUJFSXdDSUFJZ0FpZ0NDRUVCYWpZQ0NDQUFFTzBDSUFBUVF5QUFLQUlBSUFBb0FnUWdBa0VFYWlJQkVJTUNJQUFnQVJCMUlBQkJCR29nQWtFSWFoQjFJQUFRUXlBQ0VJTUJFSFVnQWlBQ0tBSUVOZ0lBSUFBUWlRRWFJQUFvQWdBYUlBQW9BZ0FnQUJDRkFXb2FJQUFvQWdBZ0FCQ0ZBV29hSUFBb0FnQWFJQUlvQWdRaUFDQUNLQUlJUndSQUEwQWdBaWdDRUJvZ0FpQUNLQUlJUVFGck5nSUlJQUlvQWdnZ0FFY05BQXNMSUFJb0FnQUVRQ0FDS0FJUUdpQUNLQUlBSVFBZ0FoQ0RBU2dDQUNBQ0tBSUFheG9nQUJBUUN5QUhRU0JxSkFBTER3QWdBQ0FBS0FJWUlBRnFOZ0lZQ3hjQUlBQWdBallDSENBQUlBRTJBaFFnQUNBQk5nSVlDMVlCQW44Q1FDQUFLQUlBSWdKRkRRQUNmeUFDS0FJWUlnTWdBaWdDSEVZRVFDQUNJQUVnQWlnQ0FDZ0NOQkVDQUF3QkN5QUNJQU5CQkdvMkFoZ2dBeUFCTmdJQUlBRUxRWDhRWGtVTkFDQUFRUUEyQWdBTEN5WUJBWDhDUUNBQUtBSUFJZ0pGRFFBZ0FpQUJFUDRDUVg4UVhrVU5BQ0FBUVFBMkFnQUxDd2tBSUFBUTVBRVFFQXN4QVFGL0lBQW9BZ3dpQVNBQUtBSVFSZ1JBSUFBZ0FDZ0NBQ2dDS0JFQUFBOExJQUFnQVVFRWFqWUNEQ0FCS0FJQUN5Y0JBWDhnQUNnQ0RDSUJJQUFvQWhCR0JFQWdBQ0FBS0FJQUtBSWtFUUFBRHdzZ0FTZ0NBQXNRQUNBQUVQQUNJQUVROEFKelFRRnpDNHNFQVFaL0l3QkJJR3NpQWlRQUlBSkJBRFlDSENNQVFTQnJJZ1FrQUNBQ1FSaHFJZ1pCQURvQUFDQUFJQUFvQWdCQkRHc29BZ0JxRUxrQklRVWdBQ0FBS0FJQVFReHJLQUlBYWlFREFrQWdCUVJBSUFNb0FrZ0VRQ0FBSUFBb0FnQkJER3NvQWdCcUtBSklFSVlEQ3dKQUlBQWdBQ2dDQUVFTWF5Z0NBR29vQWdSQmdDQnhSUTBBSUFSQkdHb2lBeUFBSUFBb0FnQkJER3NvQWdCcUVBOGdBeEF5SVFjZ0F4QU9JQVJCRUdvZ0FCREFBU0VESUFSQkNHb1FoUU1oQlFOQUFrQWdBeUFGRURGRkRRQWdCMEdBd0FBZ0F4QWZFRVJGRFFBZ0F4QWlHZ3dCQ3dzZ0F5QUZFQ1pGRFFBZ0FDQUFLQUlBUVF4cktBSUFha0VHRUlBQkN5QUdJQUFnQUNnQ0FFRU1heWdDQUdvUXVRRTZBQUFNQVFzZ0EwRUVFSUFCQ3lBRVFTQnFKQUFnQmkwQUFBUkFJQUpCRUdvaUJDQUFJQUFvQWdCQkRHc29BZ0JxRUE4Z0JFSElod0VRWkNFRElBSkJDR29nQUJEQUFTRUdJQUlRaFFNaEJTQURJQVlvQWdBZ0JTZ0NBQ0FBSUFBb0FnQkJER3NvQWdCcUlBSkJIR29nQWtFVWFpQURLQUlBS0FJUUVRVUFHaUFFRUE0Z0FRSi9JQUlvQWhSQmdJQ0FnSGhJQkVBZ0FpQUNLQUljUVFSeU5nSWNRWUNBZ0lCNERBRUxJQUlvQWhSQi8vLy8vd2RLQkVBZ0FpQUNLQUljUVFSeU5nSWNRZi8vLy84SERBRUxJQUlvQWhRTE5nSUFJQUFnQUNnQ0FFRU1heWdDQUdvZ0FpZ0NIQkNBQVFzZ0FrRWdhaVFBQ3pzQkFYOGdBQ2dDR0NJQ0lBQW9BaHhHQkVBZ0FDQUJFR1VnQUNnQ0FDZ0NOQkVDQUE4TElBQWdBa0VCYWpZQ0dDQUNJQUU2QUFBZ0FSQmxDek1CQVg4Z0FDZ0NEQ0lCSUFBb0FoQkdCRUFnQUNBQUtBSUFLQUlvRVFBQUR3c2dBQ0FCUVFGcU5nSU1JQUVzQUFBUVpRc3BBUUYvSUFBb0Fnd2lBU0FBS0FJUVJnUkFJQUFnQUNnQ0FDZ0NKQkVBQUE4TElBRXNBQUFRWlFzUUFDQUFFUEVDSUFFUThRSnpRUUZ6QzQwQkFRRi9Ba0FnQUNnQ0JDSUJJQUVvQWdCQkRHc29BZ0JxS0FJWVJRMEFJQUFvQWdRaUFTQUJLQUlBUVF4cktBSUFhaEM1QVVVTkFDQUFLQUlFSWdFZ0FTZ0NBRUVNYXlnQ0FHb29BZ1JCZ01BQWNVVU5BQ0FBS0FJRUlnRWdBU2dDQUVFTWF5Z0NBR29vQWhnUWd3TkJmMGNOQUNBQUtBSUVJZ0FnQUNnQ0FFRU1heWdDQUdwQkFSQ0FBUXNMRHdBZ0FDQUFLQUlBS0FJWUVRQUFDMVVBSUFBZ0FUWUNCQ0FBUVFBNkFBQWdBU0FCS0FJQVFReHJLQUlBYWhDNUFRUkFJQUVnQVNnQ0FFRU1heWdDQUdvb0FrZ0VRQ0FCSUFFb0FnQkJER3NvQWdCcUtBSklFSVlEQ3lBQVFRRTZBQUFMSUFBTEN3QWdBRUVBTmdJQUlBQUxiZ0VDZnlNQVFSQnJJZ0VrQUNBQUlBQW9BZ0JCREdzb0FnQnFLQUlZQkVBQ1FDQUJRUWhxSUFBUWhBTWlBaTBBQUVVTkFDQUFJQUFvQWdCQkRHc29BZ0JxS0FJWUVJTURRWDlIRFFBZ0FDQUFLQUlBUVF4cktBSUFha0VCRUlBQkN5QUNFSUlEQ3lBQlFSQnFKQUFMQ1FBZ0FCRGxBUkFRQ3dRQVFYOEx4Z2dCQm44Z0FDQUJLQUFBSWdOQkdIUWdBMEVJZEVHQWdQd0hjWElnQTBFSWRrR0EvZ054SUFOQkdIWnljaUlGTmdJQUlBQWdBU2dBQkNJRFFSaDBJQU5CQ0hSQmdJRDhCM0Z5SUFOQkNIWkJnUDREY1NBRFFSaDJjbklpQmpZQ0JDQUFJQUVvQUFnaUEwRVlkQ0FEUVFoMFFZQ0EvQWR4Y2lBRFFRaDJRWUQrQTNFZ0EwRVlkbkp5SWdjMkFnZ2dBQ0FCS0FBTUlnTkJHSFFnQTBFSWRFR0FnUHdIY1hJZ0EwRUlka0dBL2dOeElBTkJHSFp5Y2lJRU5nSU1Ba0FnQWtHQUFVWUVRRUVBSVFNRFFDQUFJQVJCRm5aQi9BZHhRWUFJYWkwQUFTQUVRUTUyUWZ3SGNVR0FDR29vQWdCQkNIUkJnSUNBZUhFZ0JYTWdCRUVHZGtIOEIzRkJnQWhxTFFBQ1FSQjBjeUFFUWY4QmNVRUNkRUdBQ0dvdEFBRkJDSFJ6Y3lBRFFZQWFhaTBBQUVFWWRITWlCVFlDRUNBQUlBVWdCbk1pQmpZQ0ZDQUFJQVlnQjNNaUJ6WUNHQ0FBSUFRZ0IzTWlCRFlDSENBQVFSQnFJUUJCQ2lFQklBTkJBV29pQTBFS1J3MEFDd3dCQ3lBQUlBRW9BQkFpQTBFWWRDQURRUWgwUVlDQS9BZHhjaUFEUVFoMlFZRCtBM0VnQTBFWWRuSnlOZ0lRSUFBZ0FTZ0FGQ0lEUVJoMElBTkJDSFJCZ0lEOEIzRnlJQU5CQ0haQmdQNERjU0FEUVJoMmNuSWlBellDRkNBQ1FjQUJSZ1JBUVFBaEFRTkFJQUFnQTBFV2RrSDhCM0ZCZ0FocUxRQUJJQU5CRG5aQi9BZHhRWUFJYWlnQ0FFRUlkRUdBZ0lCNGNTQUZjeUFEUVFaMlFmd0hjVUdBQ0dvdEFBSkJFSFJ6SUFOQi93RnhRUUowUVlBSWFpMEFBVUVJZEhOeklBRkJnQnBxTFFBQVFSaDBjeUlGTmdJWUlBQWdCU0FHY3lJR05nSWNJQUFnQmlBSGN5SUhOZ0lnSUFBZ0JDQUhjeUlFTmdJa0lBRkJCMFlFUUVFTUR3VWdBQ0FBS0FJUUlBUnpJZ0kyQWlnZ0FDQUNJQU56SWdNMkFpd2dBVUVCYWlFQklBQkJHR29oQUF3QkN3QUxBQXNnQUNBQktBQVlJZ05CR0hRZ0EwRUlkRUdBZ1B3SGNYSWdBMEVJZGtHQS9nTnhJQU5CR0haeWNqWUNHQ0FBSUFFb0FCd2lBVUVZZENBQlFRaDBRWUNBL0FkeGNpQUJRUWgyUVlEK0EzRWdBVUVZZG5KeUlnTTJBaHhCZnlFQklBSkJnQUpIRFFCQkFDRUNRUTRoQVFOQUlBQWdBMEVXZGtIOEIzRkJnQWhxTFFBQklBTkJEblpCL0FkeFFZQUlhaWdDQUVFSWRFR0FnSUI0Y1NBRmN5QURRUVoyUWZ3SGNVR0FDR290QUFKQkVIUnpJQU5CL3dGeFFRSjBRWUFJYWkwQUFVRUlkSE56SUFKQmdCcHFMUUFBUVJoMGN5SUZOZ0lnSUFBZ0JTQUdjeUlHTmdJa0lBQWdCaUFIY3lJSE5nSW9JQUFnQkNBSGN5SUVOZ0lzSUFKQkJrWU5BU0FBSUFSQi93RnhRUUowUVlBSWFpMEFBU0FBS0FJUUlBUkJGblpCL0FkeFFZQUlhaWdDQUVFSWRFR0FnSUI0Y1hNZ0JFRU9ka0g4QjNGQmdBaHFMUUFDUVJCMGN5QUVRUVoyUWZ3SGNVR0FDR290QUFGQkNIUnpjeUlJTmdJd0lBQWdDQ0FBS0FJVWN5SUlOZ0kwSUFBZ0FDZ0NHQ0FJY3lJSU5nSTRJQUFnQXlBSWN5SUROZ0k4SUFKQkFXb2hBaUFBUVNCcUlRQU1BQXNBQ3lBQkN5NEFJQUFnQUNnQ0FDZ0NKQkVBQUVGL1JnUkFRWDhQQ3lBQUlBQW9BZ3dpQUVFQmFqWUNEQ0FBTEFBQUVHVUxCQUJCZnd1L0FRRUVmeU1BUVJCcklnUWtBQU5BQWtBZ0FpQUZUQTBBQWtBZ0FDZ0NEQ0lESUFBb0FoQWlCa2tFUUNBRVFmLy8vLzhITmdJTUlBUWdCaUFEYXpZQ0NDQUVJQUlnQldzMkFnUWdCRUVNYWlBRVFRaHFJQVJCQkdvUXVnRVF1Z0VoQXlBQklBQW9BZ3dnQXlnQ0FDSURFRlVnQUNBQUtBSU1JQU5xTmdJTURBRUxJQUFnQUNnQ0FDZ0NLQkVBQUNJRFFYOUdEUUVnQVNBREVKd0JPZ0FBUVFFaEF3c2dBU0FEYWlFQklBTWdCV29oQlF3QkN3c2dCRUVRYWlRQUlBVUxDUUFnQUVKL0VMc0JDd2tBSUFCQ2Z4QzdBUXNFQUNBQUN3a0FJQUFRdkFFUUVBc0lBQ0FBRUg0UUVBc0hBQ0FBS0FJTUN4QUFJd0FnQUd0QmNIRWlBQ1FBSUFBTEJnQWdBQ1FBQ3dRQUl3QUxEQUFnQUJEQkFSb2dBQkFRQ3drQUlBQVF3UUVRRUFzRkFFSCtHd3NiQUNBQUlBRW9BZ2dnQlJBK0JFQWdBU0FDSUFNZ0JCREVBUXNMT0FBZ0FDQUJLQUlJSUFVUVBnUkFJQUVnQWlBRElBUVF4QUVQQ3lBQUtBSUlJZ0FnQVNBQ0lBTWdCQ0FGSUFBb0FnQW9BaFFSQ1FBTGxnSUJCbjhnQUNBQktBSUlJQVVRUGdSQUlBRWdBaUFESUFRUXhBRVBDeUFCTFFBMUlRY2dBQ2dDRENFR0lBRkJBRG9BTlNBQkxRQTBJUWdnQVVFQU9nQTBJQUJCRUdvaUNTQUJJQUlnQXlBRUlBVVF3Z0VnQnlBQkxRQTFJZ3B5SVFjZ0NDQUJMUUEwSWd0eUlRZ0NRQ0FHUVFKSURRQWdDU0FHUVFOMGFpRUpJQUJCR0dvaEJnTkFJQUV0QURZTkFRSkFJQXNFUUNBQktBSVlRUUZHRFFNZ0FDMEFDRUVDY1EwQkRBTUxJQXBGRFFBZ0FDMEFDRUVCY1VVTkFnc2dBVUVBT3dFMElBWWdBU0FDSUFNZ0JDQUZFTUlCSUFFdEFEVWlDaUFIY2lFSElBRXRBRFFpQ3lBSWNpRUlJQVpCQ0dvaUJpQUpTUTBBQ3dzZ0FTQUhRZjhCY1VFQVJ6b0FOU0FCSUFoQi93RnhRUUJIT2dBMEM1SUJBQ0FBSUFFb0FnZ2dCQkErQkVBZ0FTQUNJQU1Rd3dFUEN3SkFJQUFnQVNnQ0FDQUVFRDVGRFFBQ1FDQUNJQUVvQWhCSEJFQWdBU2dDRkNBQ1J3MEJDeUFEUVFGSERRRWdBVUVCTmdJZ0R3c2dBU0FDTmdJVUlBRWdBellDSUNBQklBRW9BaWhCQVdvMkFpZ0NRQ0FCS0FJa1FRRkhEUUFnQVNnQ0dFRUNSdzBBSUFGQkFUb0FOZ3NnQVVFRU5nSXNDd3Z6QVFBZ0FDQUJLQUlJSUFRUVBnUkFJQUVnQWlBREVNTUJEd3NDUUNBQUlBRW9BZ0FnQkJBK0JFQUNRQ0FDSUFFb0FoQkhCRUFnQVNnQ0ZDQUNSdzBCQ3lBRFFRRkhEUUlnQVVFQk5nSWdEd3NnQVNBRE5nSWdBa0FnQVNnQ0xFRUVSZzBBSUFGQkFEc0JOQ0FBS0FJSUlnQWdBU0FDSUFKQkFTQUVJQUFvQWdBb0FoUVJDUUFnQVMwQU5RUkFJQUZCQXpZQ0xDQUJMUUEwUlEwQkRBTUxJQUZCQkRZQ0xBc2dBU0FDTmdJVUlBRWdBU2dDS0VFQmFqWUNLQ0FCS0FJa1FRRkhEUUVnQVNnQ0dFRUNSdzBCSUFGQkFUb0FOZzhMSUFBb0FnZ2lBQ0FCSUFJZ0F5QUVJQUFvQWdBb0FoZ1JDZ0FMQzUwRUFRTi9JQUFnQVNnQ0NDQUVFRDRFUUNBQklBSWdBeEREQVE4TEFrQWdBQ0FCS0FJQUlBUVFQZ1JBQWtBZ0FpQUJLQUlRUndSQUlBRW9BaFFnQWtjTkFRc2dBMEVCUncwQ0lBRkJBVFlDSUE4TElBRWdBellDSUNBQktBSXNRUVJIQkVBZ0FFRVFhaUlGSUFBb0FneEJBM1JxSVFkQkFDRURJQUVDZndKQUEwQUNRQ0FGSUFkUERRQWdBVUVBT3dFMElBVWdBU0FDSUFKQkFTQUVFTUlCSUFFdEFEWU5BQUpBSUFFdEFEVkZEUUFnQVMwQU5BUkFRUUVoQXlBQktBSVlRUUZHRFFSQkFTRUdJQUF0QUFoQkFuRU5BUXdFQzBFQklRWWdBQzBBQ0VFQmNVVU5Bd3NnQlVFSWFpRUZEQUVMQzBFRUlBWkZEUUVhQzBFREN6WUNMQ0FEUVFGeERRSUxJQUVnQWpZQ0ZDQUJJQUVvQWloQkFXbzJBaWdnQVNnQ0pFRUJSdzBCSUFFb0FoaEJBa2NOQVNBQlFRRTZBRFlQQ3lBQUtBSU1JUVVnQUVFUWFpSUdJQUVnQWlBRElBUVFvQUVnQlVFQ1NBMEFJQVlnQlVFRGRHb2hCaUFBUVJocUlRVUNRQ0FBS0FJSUlnQkJBbkZGQkVBZ0FTZ0NKRUVCUncwQkN3TkFJQUV0QURZTkFpQUZJQUVnQWlBRElBUVFvQUVnQlVFSWFpSUZJQVpKRFFBTERBRUxJQUJCQVhGRkJFQURRQ0FCTFFBMkRRSWdBU2dDSkVFQlJnMENJQVVnQVNBQ0lBTWdCQkNnQVNBRlFRaHFJZ1VnQmtrTkFBd0NDd0FMQTBBZ0FTMEFOZzBCSUFFb0FpUkJBVVlFUUNBQktBSVlRUUZHRFFJTElBVWdBU0FDSUFNZ0JCQ2dBU0FGUVFocUlnVWdCa2tOQUFzTEN3Y0FJQUFvQWdRTGJ3RUNmeUFBSUFFb0FnaEJBQkErQkVBZ0FTQUNJQU1ReGdFUEN5QUFLQUlNSVFRZ0FFRVFhaUlGSUFFZ0FpQURFUEFCQWtBZ0JFRUNTQTBBSUFVZ0JFRURkR29oQkNBQVFSaHFJUUFEUUNBQUlBRWdBaUFERVBBQklBRXRBRFlOQVNBQVFRaHFJZ0FnQkVrTkFBc0xDeklBSUFBZ0FTZ0NDRUVBRUQ0RVFDQUJJQUlnQXhER0FROExJQUFvQWdnaUFDQUJJQUlnQXlBQUtBSUFLQUljRVFnQUN4a0FJQUFnQVNnQ0NFRUFFRDRFUUNBQklBSWdBeERHQVFzTHVnTUJCWDhqQUVGQWFpSUVKQUFDZjBFQklBQWdBVUVBRUQ0TkFCcEJBQ0FCUlEwQUdpTUFRVUJxSWdNa0FDQUJLQUlBSWdWQkJHc29BZ0FoQmlBRlFRaHJLQUlBSVFjZ0EwRUFOZ0lVSUFOQnJQMEFOZ0lRSUFNZ0FUWUNEQ0FEUWR6OUFEWUNDRUVBSVFVZ0EwRVlha0VBUVNjUVJob2dBU0FIYWlFQkFrQWdCa0hjL1FCQkFCQStCRUFnQTBFQk5nSTRJQVlnQTBFSWFpQUJJQUZCQVVFQUlBWW9BZ0FvQWhRUkNRQWdBVUVBSUFNb0FpQkJBVVliSVFVTUFRc2dCaUFEUVFocUlBRkJBVUVBSUFZb0FnQW9BaGdSQ2dBQ1FBSkFJQU1vQWl3T0FnQUJBZ3NnQXlnQ0hFRUFJQU1vQWloQkFVWWJRUUFnQXlnQ0pFRUJSaHRCQUNBREtBSXdRUUZHR3lFRkRBRUxJQU1vQWlCQkFVY0VRQ0FES0FJd0RRRWdBeWdDSkVFQlJ3MEJJQU1vQWloQkFVY05BUXNnQXlnQ0dDRUZDeUFEUVVCckpBQkJBQ0FGSWdGRkRRQWFJQVJCQ0dvaUEwRUVja0VBUVRRUVJob2dCRUVCTmdJNElBUkJmellDRkNBRUlBQTJBaEFnQkNBQk5nSUlJQUVnQXlBQ0tBSUFRUUVnQVNnQ0FDZ0NIQkVJQUNBRUtBSWdJZ0JCQVVZRVFDQUNJQVFvQWhnMkFnQUxJQUJCQVVZTElRQWdCRUZBYXlRQUlBQUxCUUFRRndBTEF3QUFDd2tBUWR5S0FSQUtHZ3N2QUFKQVFlaUtBUzBBQUVFQmNRMEFRZWlLQVJBa1JRMEFRZHlLQVVIZzFRQVFoQUZCNklvQkVDTUxRZHlLQVFzSkFFSE1pZ0VRQ2hvTExnQUNRRUhZaWdFdEFBQkJBWEVOQUVIWWlnRVFKRVVOQUVITWlnRkI2aHNRVkJwQjJJb0JFQ01MUWN5S0FRc0pBRUc4aWdFUUNob0xMd0FDUUVISWlnRXRBQUJCQVhFTkFFSElpZ0VRSkVVTkFFRzhpZ0ZCak5VQUVJUUJRY2lLQVJBakMwRzhpZ0VMQ1FCQnJJb0JFQW9hQ3k0QUFrQkJ1SW9CTFFBQVFRRnhEUUJCdUlvQkVDUkZEUUJCcklvQlFkd2RFRlFhUWJpS0FSQWpDMEdzaWdFTENRQkJuSW9CRUFvYUN5OEFBa0JCcUlvQkxRQUFRUUZ4RFFCQnFJb0JFQ1JGRFFCQm5Jb0JRZWpVQUJDRUFVR29pZ0VRSXd0Qm5Jb0JDd2tBUVl5S0FSQUtHZ3N1QUFKQVFaaUtBUzBBQUVFQmNRMEFRWmlLQVJBa1JRMEFRWXlLQVVIM0hSQlVHa0dZaWdFUUl3dEJqSW9CQ3drQVFmeUpBUkFLR2dzdkFBSkFRWWlLQVMwQUFFRUJjUTBBUVlpS0FSQWtSUTBBUWZ5SkFVSEUxQUFRaEFGQmlJb0JFQ01MUWZ5SkFRc0pBRUhzaVFFUUNob0xMZ0FDUUVINGlRRXRBQUJCQVhFTkFFSDRpUUVRSkVVTkFFSHNpUUZCNWhvUVZCcEIrSWtCRUNNTFFleUpBUXNiQUVIb2tnRWhBQU5BSUFCQkRHc1FDaUlBUWRDU0FVY05BQXNMZlFBQ1FFSG9pUUV0QUFCQkFYRU5BRUhvaVFFUUpFVU5BQUpBUWVpU0FTMEFBRUVCY1EwQVFlaVNBUkFrUlEwQVFkQ1NBU0VBQTBBZ0FCQkhRUXhxSWdCQjZKSUJSdzBBQzBIb2tnRVFJd3RCMEpJQlFmRDdBQkFVUWR5U0FVSDgrd0FRRkVIa2lRRkIwSklCTmdJQVFlaUpBUkFqQzBIa2lRRW9BZ0FMR3dCQnlKSUJJUUFEUUNBQVFReHJFQW9pQUVHd2tnRkhEUUFMQzNzQUFrQkI0SWtCTFFBQVFRRnhEUUJCNElrQkVDUkZEUUFDUUVISWtnRXRBQUJCQVhFTkFFSElrZ0VRSkVVTkFFR3drZ0VoQUFOQUlBQVFFVUVNYWlJQVFjaVNBVWNOQUF0QnlKSUJFQ01MUWJDU0FVR0hIaEFWUWJ5U0FVR0VIaEFWUWR5SkFVR3drZ0UyQWdCQjRJa0JFQ01MUWR5SkFTZ0NBQXNiQUVHZ2tnRWhBQU5BSUFCQkRHc1FDaUlBUVlDUUFVY05BQXNMMlFJQUFrQkIySWtCTFFBQVFRRnhEUUJCMklrQkVDUkZEUUFDUUVHZ2tnRXRBQUJCQVhFTkFFR2drZ0VRSkVVTkFFR0FrQUVoQUFOQUlBQVFSMEVNYWlJQVFhQ1NBVWNOQUF0Qm9KSUJFQ01MUVlDUUFVSG85d0FRRkVHTWtBRkJpUGdBRUJSQm1KQUJRYXo0QUJBVVFhU1FBVUhFK0FBUUZFR3drQUZCM1BnQUVCUkJ2SkFCUWV6NEFCQVVRY2lRQVVHQStRQVFGRUhVa0FGQmxQa0FFQlJCNEpBQlFiRDVBQkFVUWV5UUFVSFkrUUFRRkVINGtBRkIrUGtBRUJSQmhKRUJRWno2QUJBVVFaQ1JBVUhBK2dBUUZFR2NrUUZCMFBvQUVCUkJxSkVCUWVENkFCQVVRYlNSQVVIdytnQVFGRUhBa1FGQjNQZ0FFQlJCekpFQlFZRDdBQkFVUWRpUkFVR1Erd0FRRkVIa2tRRkJvUHNBRUJSQjhKRUJRYkQ3QUJBVVFmeVJBVUhBK3dBUUZFR0lrZ0ZCMFBzQUVCUkJsSklCUWVEN0FCQVVRZFNKQVVHQWtBRTJBZ0JCMklrQkVDTUxRZFNKQVNnQ0FBc2JBRUh3andFaEFBTkFJQUJCREdzUUNpSUFRZENOQVVjTkFBc0x3UUlBQWtCQjBJa0JMUUFBUVFGeERRQkIwSWtCRUNSRkRRQUNRRUh3andFdEFBQkJBWEVOQUVId2p3RVFKRVVOQUVIUWpRRWhBQU5BSUFBUUVVRU1haUlBUWZDUEFVY05BQXRCOEk4QkVDTUxRZENOQVVHY0doQVZRZHlOQVVHVEdoQVZRZWlOQVVIZ0hCQVZRZlNOQVVIV0hCQVZRWUNPQVVIaUdoQVZRWXlPQVVITEhSQVZRWmlPQVVHa0doQVZRYVNPQVVHVUd4QVZRYkNPQVVHL0d4QVZRYnlPQVVHdUd4QVZRY2lPQVVHMkd4QVZRZFNPQVVISkd4QVZRZUNPQVVITEhCQVZRZXlPQVVIWUhSQVZRZmlPQVVIaUd4QVZRWVNQQVVHakd4QVZRWkNQQVVIaUdoQVZRWnlQQVVINkd4QVZRYWlQQVVIUEhCQVZRYlNQQVVIbUhCQVZRY0NQQVVIbUd4QVZRY3lQQVVHYkd4QVZRZGlQQVVHTUd4QVZRZVNQQVVIVUhSQVZRY3lKQVVIUWpRRTJBZ0JCMElrQkVDTUxRY3lKQVNnQ0FBc2JBRUhJalFFaEFBTkFJQUJCREdzUUNpSUFRYUNNQVVjTkFBc0w5UUVBQWtCQnlJa0JMUUFBUVFGeERRQkJ5SWtCRUNSRkRRQUNRRUhJalFFdEFBQkJBWEVOQUVISWpRRVFKRVVOQUVHZ2pBRWhBQU5BSUFBUVIwRU1haUlBUWNpTkFVY05BQXRCeUkwQkVDTUxRYUNNQVVHVTlRQVFGRUdzakFGQnNQVUFFQlJCdUl3QlFjejFBQkFVUWNTTUFVSHM5UUFRRkVIUWpBRkJsUFlBRUJSQjNJd0JRYmoyQUJBVVFlaU1BVUhVOWdBUUZFSDBqQUZCK1BZQUVCUkJnSTBCUVlqM0FCQVVRWXlOQVVHWTl3QVFGRUdZalFGQnFQY0FFQlJCcEkwQlFiajNBQkFVUWJDTkFVSEk5d0FRRkVHOGpRRkIyUGNBRUJSQnhJa0JRYUNNQVRZQ0FFSElpUUVRSXd0QnhJa0JLQUlBQ3hzQVFaaU1BU0VBQTBBZ0FFRU1heEFLSWdCQjhJb0JSdzBBQ3d2bkFRQUNRRUhBaVFFdEFBQkJBWEVOQUVIQWlRRVFKRVVOQUFKQVFaaU1BUzBBQUVFQmNRMEFRWmlNQVJBa1JRMEFRZkNLQVNFQUEwQWdBQkFSUVF4cUlnQkJtSXdCUncwQUMwR1lqQUVRSXd0QjhJb0JRYzBhRUJWQi9Jb0JRZFFhRUJWQmlJc0JRYklhRUJWQmxJc0JRYm9hRUJWQm9Jc0JRYWthRUJWQnJJc0JRZHNhRUJWQnVJc0JRY1FhRUJWQnhJc0JRZlliRUJWQjBJc0JRY01jRUJWQjNJc0JRY0VkRUJWQjZJc0JRZEFkRUJWQjlJc0JRWkFiRUJWQmdJd0JRZHdjRUJWQmpJd0JRWjhiRUJWQnZJa0JRZkNLQVRZQ0FFSEFpUUVRSXd0QnZJa0JLQUlBQ3dzQUlBQkJyTlFBRUlRQkN3b0FJQUJCeFIwUVZCb0xDd0FnQUVHWTFBQVFoQUVMQ2dBZ0FFRzhIUkJVR2dzTUFDQUFJQUZCRUdvUTBRRUxEQUFnQUNBQlFReHFFTkVCQ3djQUlBQXNBQWtMQndBZ0FDd0FDQXNKQUNBQUVJWUNFQkFMQ1FBZ0FCQ0hBaEFRQytZREFRVi9JQUloQUFOQUFrQWdCQ0FJVFNBQUlBTlBjZzBBSUFBc0FBQWlCa0gvQVhFaEFRSkFJQVpCQUU0RVFFRUJJUVlnQVVILy84TUFUUTBCREFJTElBRkJ3Z0ZKRFFFZ0FVSGZBVTBFUUNBRElBQnJRUUpJRFFJZ0FDMEFBU0lGUWNBQmNVR0FBVWNOQWtFQ0lRWWdCVUUvY1NBQlFRWjBRY0FQY1hKQi8vL0RBRTBOQVF3Q0N3SkFBa0FnQVVIdkFVMEVRQ0FESUFCclFRTklEUVFnQUMwQUFpRUhJQUF0QUFFaEJTQUJRZTBCUmcwQklBRkI0QUZHQkVBZ0JVSGdBWEZCb0FGR0RRTU1CUXNnQlVIQUFYRkJnQUZIRFFRTUFnc2dBeUFBYTBFRVNDQUJRZlFCUzNJTkF5QUFMUUFESVFjZ0FDMEFBaUVKSUFBdEFBRWhCUUpBQWtBQ1FBSkFJQUZCOEFGckRnVUFBZ0lDQVFJTElBVkI4QUJxUWY4QmNVRXdTUTBDREFZTElBVkI4QUZ4UVlBQlJnMEJEQVVMSUFWQndBRnhRWUFCUncwRUN5QUpRY0FCY1VHQUFVY2dCMEhBQVhGQmdBRkhjZzBEUVFRaEJpQUhRVDl4SUFsQkJuUkJ3Qjl4SUFGQkVuUkJnSUR3QUhFZ0JVRS9jVUVNZEhKeWNrSC8vOE1BU3cwRERBSUxJQVZCNEFGeFFZQUJSdzBDQ3lBSFFjQUJjVUdBQVVjTkFVRURJUVlnQjBFL2NTQUJRUXgwUVlEZ0EzRWdCVUUvY1VFR2RISnlRZi8vd3dCTERRRUxJQWhCQVdvaENDQUFJQVpxSVFBTUFRc0xJQUFnQW1zTDRnUUJCWDhqQUVFUWF5SUFKQUFnQUNBQ05nSU1JQUFnQlRZQ0NBSi9JQUFnQWpZQ0RDQUFJQVUyQWdnQ1FBSkFBMEFDUUNBQUtBSU1JZ0lnQTA4TkFDQUFLQUlJSWd3Z0JrOE5BQ0FDTEFBQUlnVkIvd0Z4SVFFQ1FDQUZRUUJPQkVBZ0FVSC8vOE1BVFFSQVFRRWhCUXdDQzBFQ0RBWUxRUUloQ2lBQlFjSUJTUTBESUFGQjN3Rk5CRUFnQXlBQ2EwRUNTQTBGSUFJdEFBRWlDRUhBQVhGQmdBRkhEUVJCQWlFRklBaEJQM0VnQVVFR2RFSEFEM0Z5SWdGQi8vL0RBRTBOQVF3RUN5QUJRZThCVFFSQUlBTWdBbXRCQTBnTkJTQUNMUUFDSVFrZ0FpMEFBU0VJQWtBQ1FDQUJRZTBCUndSQUlBRkI0QUZIRFFFZ0NFSGdBWEZCb0FGR0RRSU1Cd3NnQ0VIZ0FYRkJnQUZHRFFFTUJnc2dDRUhBQVhGQmdBRkhEUVVMSUFsQndBRnhRWUFCUncwRVFRTWhCU0FKUVQ5eElBRkJESFJCZ09BRGNTQUlRVDl4UVFaMGNuSWlBVUgvLzhNQVRRMEJEQVFMSUFGQjlBRkxEUU1nQXlBQ2EwRUVTQTBFSUFJdEFBTWhDU0FDTFFBQ0lRc2dBaTBBQVNFSUFrQUNRQUpBQWtBZ0FVSHdBV3NPQlFBQ0FnSUJBZ3NnQ0VId0FHcEIvd0Z4UVRCSkRRSU1CZ3NnQ0VId0FYRkJnQUZHRFFFTUJRc2dDRUhBQVhGQmdBRkhEUVFMSUF0QndBRnhRWUFCUnlBSlFjQUJjVUdBQVVkeURRTkJCQ0VGSUFsQlAzRWdDMEVHZEVIQUgzRWdBVUVTZEVHQWdQQUFjU0FJUVQ5eFFReDBjbkp5SWdGQi8vL0RBRXNOQXdzZ0RDQUJOZ0lBSUFBZ0FpQUZhallDRENBQUlBQW9BZ2hCQkdvMkFnZ01BUXNMSUFJZ0Ewa2hDZ3NnQ2d3QkMwRUJDeUVCSUFRZ0FDZ0NERFlDQUNBSElBQW9BZ2cyQWdBZ0FFRVFhaVFBSUFFTGpnUUFJd0JCRUdzaUFDUUFJQUFnQWpZQ0RDQUFJQVUyQWdnQ2Z5QUFJQUkyQWd3Z0FDQUZOZ0lJSUFBb0Fnd2hBUUpBQTBBZ0FTQURUd1JBUVFBaEFnd0NDMEVDSVFJZ0FTZ0NBQ0lCUVlCd2NVR0FzQU5HSUFGQi8vL0RBRXR5RFFFQ1FBSkFJQUZCL3dCTkJFQkJBU0VDSUFZZ0FDZ0NDQ0lGYTBFQVRBMEVJQUFnQlVFQmFqWUNDQ0FGSUFFNkFBQU1BUXNnQVVIL0QwMEVRQ0FHSUFBb0FnZ2lBbXRCQWtnTkFpQUFJQUpCQVdvMkFnZ2dBaUFCUVFaMlFjQUJjam9BQUNBQUlBQW9BZ2dpQWtFQmFqWUNDQ0FDSUFGQlAzRkJnQUZ5T2dBQURBRUxJQVlnQUNnQ0NDSUNheUVGSUFGQi8vOERUUVJBSUFWQkEwZ05BaUFBSUFKQkFXbzJBZ2dnQWlBQlFReDJRZUFCY2pvQUFDQUFJQUFvQWdnaUFrRUJhallDQ0NBQ0lBRkJCblpCUDNGQmdBRnlPZ0FBSUFBZ0FDZ0NDQ0lDUVFGcU5nSUlJQUlnQVVFL2NVR0FBWEk2QUFBTUFRc2dCVUVFU0EwQklBQWdBa0VCYWpZQ0NDQUNJQUZCRW5aQjhBRnlPZ0FBSUFBZ0FDZ0NDQ0lDUVFGcU5nSUlJQUlnQVVFTWRrRS9jVUdBQVhJNkFBQWdBQ0FBS0FJSUlnSkJBV28yQWdnZ0FpQUJRUVoyUVQ5eFFZQUJjam9BQUNBQUlBQW9BZ2dpQWtFQmFqWUNDQ0FDSUFGQlAzRkJnQUZ5T2dBQUN5QUFJQUFvQWd4QkJHb2lBVFlDREF3QkN3dEJBUXdCQ3lBQ0N5RUJJQVFnQUNnQ0REWUNBQ0FISUFBb0FnZzJBZ0FnQUVFUWFpUUFJQUVMN2dNQkJIOGdBaUVBQTBBQ1FDQUVJQVpOSUFBZ0EwOXlEUUFnQUMwQUFDSUJRZi8vd3dCTERRQUNmeUFBUVFGcUlBRkJHSFJCR0hWQkFFNE5BQm9nQVVIQ0FVa05BU0FCUWQ4QlRRUkFJQU1nQUd0QkFrZ05BaUFBTFFBQklnVkJ3QUZ4UVlBQlJ5QUZRVDl4SUFGQkJuUkJ3QTl4Y2tILy84TUFTM0lOQWlBQVFRSnFEQUVMQWtBQ1FDQUJRZThCVFFSQUlBTWdBR3RCQTBnTkJDQUFMUUFDSVFjZ0FDMEFBU0VGSUFGQjdRRkdEUUVnQVVIZ0FVWUVRQ0FGUWVBQmNVR2dBVVlOQXd3RkN5QUZRY0FCY1VHQUFVY05CQXdDQ3lBRElBQnJRUVJJSUFGQjlBRkxjaUFFSUFaclFRSkpjZzBESUFBdEFBTWhCeUFBTFFBQ0lRZ2dBQzBBQVNFRkFrQUNRQUpBQWtBZ0FVSHdBV3NPQlFBQ0FnSUJBZ3NnQlVId0FHcEIvd0Z4UVRCSkRRSU1CZ3NnQlVId0FYRkJnQUZHRFFFTUJRc2dCVUhBQVhGQmdBRkhEUVFMSUFoQndBRnhRWUFCUnlBSFFjQUJjVUdBQVVkeUlBZEJQM0VnQ0VFR2RFSEFIM0VnQVVFU2RFR0FnUEFBY1NBRlFUOXhRUXgwY25KeVFmLy93d0JMY2cwRElBWkJBV29oQmlBQVFRUnFEQUlMSUFWQjRBRnhRWUFCUncwQ0N5QUhRY0FCY1VHQUFVY2dCMEUvY1NBQlFReDBRWURnQTNFZ0JVRS9jVUVHZEhKeVFmLy93d0JMY2cwQklBQkJBMm9MSVFBZ0JrRUJhaUVHREFFTEN5QUFJQUpyQzlNRkFRUi9Jd0JCRUdzaUFDUUFJQUFnQWpZQ0RDQUFJQVUyQWdnQ2Z5QUFJQUkyQWd3Z0FDQUZOZ0lJQWtBQ1FBSkFBMEFDUUNBQUtBSU1JZ0VnQTA4TkFDQUFLQUlJSWdVZ0JrOE5BRUVDSVFvZ0FTMEFBQ0lDUWYvL3d3QkxEUVFnQUFKL0lBSkJHSFJCR0hWQkFFNEVRQ0FGSUFJN0FRQWdBVUVCYWd3QkN5QUNRY0lCU1EwRklBSkIzd0ZOQkVBZ0F5QUJhMEVDU0EwRklBRXRBQUVpQ0VIQUFYRkJnQUZIRFFRZ0NFRS9jU0FDUVFaMFFjQVBjWElpQWtILy84TUFTdzBFSUFVZ0Fqc0JBQ0FCUVFKcURBRUxJQUpCN3dGTkJFQWdBeUFCYTBFRFNBMEZJQUV0QUFJaENTQUJMUUFCSVFnQ1FBSkFJQUpCN1FGSEJFQWdBa0hnQVVjTkFTQUlRZUFCY1VHZ0FVWU5BZ3dIQ3lBSVFlQUJjVUdBQVVZTkFRd0dDeUFJUWNBQmNVR0FBVWNOQlFzZ0NVSEFBWEZCZ0FGSERRUWdDVUUvY1NBSVFUOXhRUVowSUFKQkRIUnljaUlDUWYvL0EzRkIvLy9EQUVzTkJDQUZJQUk3QVFBZ0FVRURhZ3dCQ3lBQ1FmUUJTdzBGUVFFaENpQURJQUZyUVFSSURRTWdBUzBBQXlFSklBRXRBQUloQ0NBQkxRQUJJUUVDUUFKQUFrQUNRQ0FDUWZBQmF3NEZBQUlDQWdFQ0N5QUJRZkFBYWtIL0FYRkJNRThOQ0F3Q0N5QUJRZkFCY1VHQUFVY05Cd3dCQ3lBQlFjQUJjVUdBQVVjTkJnc2dDRUhBQVhGQmdBRkhJQWxCd0FGeFFZQUJSM0lOQlNBR0lBVnJRUVJJRFFOQkFpRUtJQWxCUDNFaUNTQUlRUVowSWd0QndCOXhJQUZCREhSQmdPQVBjU0FDUVFkeElnSkJFblJ5Y25KQi8vL0RBRXNOQXlBRklBaEJCSFpCQTNFZ0FVRUNkQ0lCUWNBQmNTQUNRUWgwY2lBQlFUeHhjbkpCd1A4QWFrR0FzQU55T3dFQUlBQWdCVUVDYWpZQ0NDQUZJQXRCd0FkeElBbHlRWUM0QTNJN0FRSWdBQ2dDREVFRWFnczJBZ3dnQUNBQUtBSUlRUUpxTmdJSURBRUxDeUFCSUFOSklRb0xJQW9NQWd0QkFRd0JDMEVDQ3lFQklBUWdBQ2dDRERZQ0FDQUhJQUFvQWdnMkFnQWdBRUVRYWlRQUlBRUwrZ1VCQVg4akFFRVFheUlBSkFBZ0FDQUNOZ0lNSUFBZ0JUWUNDQUovSUFBZ0FqWUNEQ0FBSUFVMkFnZ2dBQ2dDRENFQ0FrQUNRQU5BSUFJZ0EwOEVRRUVBSVFVTUF3dEJBaUVGSUFJdkFRQWlBVUgvLzhNQVN3MENBa0FDUUNBQlFmOEFUUVJBUVFFaEJTQUdJQUFvQWdnaUFtdEJBRXdOQlNBQUlBSkJBV28yQWdnZ0FpQUJPZ0FBREFFTElBRkIvdzlOQkVBZ0JpQUFLQUlJSWdKclFRSklEUVFnQUNBQ1FRRnFOZ0lJSUFJZ0FVRUdka0hBQVhJNkFBQWdBQ0FBS0FJSUlnSkJBV28yQWdnZ0FpQUJRVDl4UVlBQmNqb0FBQXdCQ3lBQlFmK3ZBMDBFUUNBR0lBQW9BZ2dpQW10QkEwZ05CQ0FBSUFKQkFXbzJBZ2dnQWlBQlFReDJRZUFCY2pvQUFDQUFJQUFvQWdnaUFrRUJhallDQ0NBQ0lBRkJCblpCUDNGQmdBRnlPZ0FBSUFBZ0FDZ0NDQ0lDUVFGcU5nSUlJQUlnQVVFL2NVR0FBWEk2QUFBTUFRc2dBVUgvdHdOTkJFQkJBU0VGSUFNZ0FtdEJCRWdOQlNBQ0x3RUNJZ2hCZ1BnRGNVR0F1QU5IRFFJZ0JpQUFLQUlJYTBFRVNBMEZJQWhCL3dkeElBRkJDblJCZ1BnRGNTQUJRY0FIY1NJRlFRcDBjbkpCZ0lBRWFrSC8vOE1BU3cwQ0lBQWdBa0VDYWpZQ0RDQUFJQUFvQWdnaUFrRUJhallDQ0NBQ0lBVkJCblpCQVdvaUFrRUNka0h3QVhJNkFBQWdBQ0FBS0FJSUlnVkJBV28yQWdnZ0JTQUNRUVIwUVRCeElBRkJBblpCRDNGeVFZQUJjam9BQUNBQUlBQW9BZ2dpQWtFQmFqWUNDQ0FDSUFoQkJuWkJEM0VnQVVFRWRFRXdjWEpCZ0FGeU9nQUFJQUFnQUNnQ0NDSUJRUUZxTmdJSUlBRWdDRUUvY1VHQUFYSTZBQUFNQVFzZ0FVR0F3QU5KRFFRZ0JpQUFLQUlJSWdKclFRTklEUU1nQUNBQ1FRRnFOZ0lJSUFJZ0FVRU1ka0hnQVhJNkFBQWdBQ0FBS0FJSUlnSkJBV28yQWdnZ0FpQUJRUVoyUVQ5eFFZQUJjam9BQUNBQUlBQW9BZ2dpQWtFQmFqWUNDQ0FDSUFGQlAzRkJnQUZ5T2dBQUN5QUFJQUFvQWd4QkFtb2lBallDREF3QkN3dEJBZ3dDQzBFQkRBRUxJQVVMSVFFZ0JDQUFLQUlNTmdJQUlBY2dBQ2dDQ0RZQ0FDQUFRUkJxSkFBZ0FRc1ZBQ0FBS0FJSUlnQkZCRUJCQVE4TElBQVFpZ0lMa0FFQkJuOERRQUpBSUFJZ0EwWWdCQ0FJVFhJTkFFRUJJUWNnQUNnQ0NDRUZJd0JCRUdzaUJpUUFJQVlnQlRZQ0RDQUdRUWhxSUFaQkRHb1FVaUVLUVFBZ0FpQURJQUpySUFGQnRJY0JJQUViRUxjQklRVWdDaEJSSUFaQkVHb2tBQUpBQWtBZ0JVRUNhZzREQWdJQkFBc2dCU0VIQ3lBSVFRRnFJUWdnQnlBSmFpRUpJQUlnQjJvaEFnd0JDd3NnQ1F0bUFRTi9JQUFvQWdnaEFpTUFRUkJySWdFa0FDQUJJQUkyQWd3Z0FVRUlhaUFCUVF4cUVGSWhBaU1BUVJCcklnTWtBQ0FEUVJCcUpBQkJBQ0VESUFJUVVTQUJRUkJxSkFBZ0F3Ui9RWDhGSUFBb0FnZ2lBRVVFUUVFQkR3c2dBQkNLQWtFQlJnc0xrZ0VCQVg4akFFRVFheUlGSkFBZ0JDQUNOZ0lBQW45QkFpQUZRUXhxUVFBZ0FDZ0NDQkRMQVNJQVFRRnFRUUpKRFFBYVFRRWdBRUVCYXlJQklBTWdCQ2dDQUd0TERRQWFJQVZCREdvaEFnTi9JQUVFZnlBQ0xRQUFJUUFnQkNBRUtBSUFJZ05CQVdvMkFnQWdBeUFBT2dBQUlBRkJBV3NoQVNBQ1FRRnFJUUlNQVFWQkFBc0xDeUVDSUFWQkVHb2tBQ0FDQzhzR0FReC9Jd0JCRUdzaUVTUUFJQUloQ0FOQUFrQWdBeUFJUmdSQUlBTWhDQXdCQ3lBSUxRQUFSUTBBSUFoQkFXb2hDQXdCQ3dzZ0J5QUZOZ0lBSUFRZ0FqWUNBQU5BQWtBQ2Z3SkFJQUlnQTBZZ0JTQUdSbklOQUNBUklBRXBBZ0EzQXdnZ0FDZ0NDQ0VKSXdCQkVHc2lFQ1FBSUJBZ0NUWUNEQ0FRUVFocUlCQkJER29RVWlFVElBZ2dBbXNoRFVFQUlRb2pBRUdRQ0dzaUN5UUFJQXNnQkNnQ0FDSU9OZ0lNSUFVZ0MwRVFhaUFGR3lFUEFrQUNRQUpBSUE1RklBWWdCV3RCQW5WQmdBSWdCUnNpREVWeURRQURRQ0FOUVFKMklna2dERWtnRFVHREFVMXhEUUlnRHlBTFFReHFJQXdnQ1NBSklBeFBHeUFCRU5JQ0loSkJmMFlFUUVGL0lRcEJBQ0VNSUFzb0Fnd2hEZ3dDQ3lBTVFRQWdFaUFQSUF0QkVHcEdHeUlKYXlFTUlBOGdDVUVDZEdvaER5QU5JQTVxSUFzb0Fnd2lEbXRCQUNBT0d5RU5JQW9nRW1vaENpQU9SUTBCSUF3TkFBc0xJQTVGRFFFTElBeEZJQTFGY2cwQUlBb2hDUU5BQWtBQ1FDQVBJQTRnRFNBQkVMY0JJZ3BCQW1wQkFrMEVRQUpBQWtBZ0NrRUJhZzRDQmdBQkN5QUxRUUEyQWd3TUFnc2dBVUVBTmdJQURBRUxJQXNnQ3lnQ0RDQUthaUlPTmdJTUlBbEJBV29oQ1NBTVFRRnJJZ3dOQVFzZ0NTRUtEQUlMSUE5QkJHb2hEeUFOSUFwcklRMGdDU0VLSUEwTkFBc0xJQVVFUUNBRUlBc29BZ3cyQWdBTElBdEJrQWhxSkFBZ0NpRUpJQk1RVVNBUVFSQnFKQUFDUUFKQUFrQUNRQ0FKUVg5R0JFQURRQUpBSUFjZ0JUWUNBQ0FDSUFRb0FnQkdEUUJCQVNFR0FrQUNRQUpBSUFVZ0FpQUlJQUpySUJGQkNHb2dBQ2dDQ0JDTEFpSUJRUUpxRGdNSUFBSUJDeUFFSUFJMkFnQU1CUXNnQVNFR0N5QUNJQVpxSVFJZ0J5Z0NBRUVFYWlFRkRBRUxDeUFFSUFJMkFnQU1CUXNnQnlBSEtBSUFJQWxCQW5ScUlnVTJBZ0FnQlNBR1JnMERJQVFvQWdBaEFpQURJQWhHQkVBZ0F5RUlEQWdMSUFVZ0FrRUJJQUVnQUNnQ0NCQ0xBa1VOQVF0QkFnd0VDeUFISUFjb0FnQkJCR28yQWdBZ0JDQUVLQUlBUVFGcUlnSTJBZ0FnQWlFSUEwQWdBeUFJUmdSQUlBTWhDQXdHQ3lBSUxRQUFSUTBGSUFoQkFXb2hDQXdBQ3dBTElBUWdBallDQUVFQkRBSUxJQVFvQWdBaEFnc2dBaUFEUndzaEFDQVJRUkJxSkFBZ0FBOExJQWNvQWdBaEJRd0FDd0FMc3dVQkRIOGpBRUVRYXlJTkpBQWdBaUVJQTBBQ1FDQURJQWhHQkVBZ0F5RUlEQUVMSUFnb0FnQkZEUUFnQ0VFRWFpRUlEQUVMQ3lBSElBVTJBZ0FnQkNBQ05nSUFBMEFDUUFKQUlBSWdBMFlnQlNBR1JuSUVmeUFDQlNBTklBRXBBZ0EzQXdoQkFTRVFJQUFvQWdnaENTTUFRUkJySWc0a0FDQU9JQWsyQWd3Z0RrRUlhaUFPUVF4cUVGSWhFeUFHSUFVaUNXc2hDa0VBSVE4akFFRVFheUlSSkFBQ1FDQUVLQUlBSWd0RklBZ2dBbXRCQW5VaUVrVnlEUUFnQ2tFQUlBa2JJUW9EUUNBUlFReHFJQWtnQ2tFRVNSc2dDeWdDQUJEYUFTSU1RWDlHQkVCQmZ5RVBEQUlMSUFrRWZ5QUtRUU5OQkVBZ0NpQU1TUTBESUFrZ0VVRU1haUFNRUVJYUN5QUtJQXhySVFvZ0NTQU1hZ1ZCQUFzaENTQUxLQUlBUlFSQVFRQWhDd3dDQ3lBTUlBOXFJUThnQzBFRWFpRUxJQkpCQVdzaUVnMEFDd3NnQ1FSQUlBUWdDellDQUFzZ0VVRVFhaVFBSUE4aENTQVRFRkVnRGtFUWFpUUFBa0FDUUFKQUFrQUNRQ0FKUVFGcURnSUFCZ0VMSUFjZ0JUWUNBQU5BQWtBZ0FpQUVLQUlBUmcwQUlBVWdBaWdDQUNBQUtBSUlFTXNCSWdGQmYwWU5BQ0FISUFjb0FnQWdBV29pQlRZQ0FDQUNRUVJxSVFJTUFRc0xJQVFnQWpZQ0FBd0JDeUFISUFjb0FnQWdDV29pQlRZQ0FDQUZJQVpHRFFJZ0F5QUlSZ1JBSUFRb0FnQWhBaUFESVFnTUJ3c2dEVUVFYWtFQUlBQW9BZ2dReXdFaUNFRi9SdzBCQzBFQ0lSQU1Bd3NnRFVFRWFpRUNJQVlnQnlnQ0FHc2dDRWtOQWdOQUlBZ0VRQ0FDTFFBQUlRVWdCeUFIS0FJQUlnbEJBV28yQWdBZ0NTQUZPZ0FBSUFoQkFXc2hDQ0FDUVFGcUlRSU1BUXNMSUFRZ0JDZ0NBRUVFYWlJQ05nSUFJQUloQ0FOQUlBTWdDRVlFUUNBRElRZ01CUXNnQ0NnQ0FFVU5CQ0FJUVFScUlRZ01BQXNBQ3lBRUtBSUFDeUFEUnlFUUN5QU5RUkJxSkFBZ0VBOExJQWNvQWdBaEJRd0FDd0FMQ1FBZ0FCQ1lBaEFRQ3pjQUl3QkJFR3NpQUNRQUlBQWdCRFlDRENBQUlBTWdBbXMyQWdnZ0FFRU1haUFBUVFocUVLSUJLQUlBSVFFZ0FFRVFhaVFBSUFFTE5BQURRQ0FCSUFKR1JRUkFJQVFnQVN3QUFDSUFJQU1nQUVFQVRoczZBQUFnQkVFQmFpRUVJQUZCQVdvaEFRd0JDd3NnQWdzTUFDQUJJQUlnQVVFQVRoc0xLZ0FEUUNBQklBSkdSUVJBSUFNZ0FTMEFBRG9BQUNBRFFRRnFJUU1nQVVFQmFpRUJEQUVMQ3lBQ0MwQUFBMEFnQVNBQ1J3UkFJQUVnQVN3QUFDSUFRUUJPQkg5QjBNUUFLQUlBSUFFc0FBQkJBblJxS0FJQUJTQUFDem9BQUNBQlFRRnFJUUVNQVFzTElBSUxKd0FnQVVFQVRnUi9RZERFQUNnQ0FDQUJRZjhCY1VFQ2RHb29BZ0FGSUFFTFFSaDBRUmgxQ3o4QUEwQWdBU0FDUndSQUlBRWdBU3dBQUNJQVFRQk9CSDlCd0Rnb0FnQWdBU3dBQUVFQ2RHb29BZ0FGSUFBTE9nQUFJQUZCQVdvaEFRd0JDd3NnQWdzbUFDQUJRUUJPQkg5QndEZ29BZ0FnQVVIL0FYRkJBblJxS0FJQUJTQUJDMEVZZEVFWWRRc0pBQ0FBRUk0Q0VCQUxOUUFEUUNBQklBSkdSUVJBSUFRZ0FTZ0NBQ0lBSUFNZ0FFR0FBVWtiT2dBQUlBUkJBV29oQkNBQlFRUnFJUUVNQVFzTElBSUxFd0FnQVNBQ0lBRkJnQUZKRzBFWWRFRVlkUXNxQUFOQUlBRWdBa1pGQkVBZ0F5QUJMQUFBTmdJQUlBTkJCR29oQXlBQlFRRnFJUUVNQVFzTElBSUxRUUFEUUNBQklBSkhCRUFnQVNBQktBSUFJZ0JCL3dCTkJIOUIwTVFBS0FJQUlBRW9BZ0JCQW5ScUtBSUFCU0FBQ3pZQ0FDQUJRUVJxSVFFTUFRc0xJQUlMSGdBZ0FVSC9BRTBFZjBIUXhBQW9BZ0FnQVVFQ2RHb29BZ0FGSUFFTEMwQUFBMEFnQVNBQ1J3UkFJQUVnQVNnQ0FDSUFRZjhBVFFSL1FjQTRLQUlBSUFFb0FnQkJBblJxS0FJQUJTQUFDellDQUNBQlFRUnFJUUVNQVFzTElBSUxIUUFnQVVIL0FFMEVmMEhBT0NnQ0FDQUJRUUowYWlnQ0FBVWdBUXNMUkFBQ1FBTkFJQUlnQTBZTkFRSkFJQUlvQWdCQi93QkxEUUJCc0RJb0FnQWdBaWdDQUVFQmRHb3ZBUUFnQVhGRkRRQWdBa0VFYWlFQ0RBRUxDeUFDSVFNTElBTUxRd0FEUUFKQUlBSWdBMGNFZnlBQ0tBSUFRZjhBU3cwQlFiQXlLQUlBSUFJb0FnQkJBWFJxTHdFQUlBRnhSUTBCSUFJRklBTUxEd3NnQWtFRWFpRUNEQUFMQUF0RkFBTkFJQUVnQWtjRVFDQURJQUVvQWdCQi93Qk5CSDlCc0RJb0FnQWdBU2dDQUVFQmRHb3ZBUUFGUVFBTE93RUFJQU5CQW1vaEF5QUJRUVJxSVFFTUFRc0xJQUlMSXdBZ0FrSC9BRTBFZjBHd01pZ0NBQ0FDUVFGMGFpOEJBQ0FCY1VFQVJ3VkJBQXNMUUFFQ2Z5QUFLQUlBS0FJQUlnQW9BZ0FnQUNnQ0NDSUNRUUYxYWlFQklBQW9BZ1FoQUNBQklBSkJBWEVFZnlBQktBSUFJQUJxS0FJQUJTQUFDeEVCQUFzUEFDQUFJQUFvQWdBb0FnUVJBUUFMSHdBZ0FBSi9RZmlJQVVINGlBRW9BZ0JCQVdvaUFEWUNBQ0FBQ3pZQ0JBc0pBQ0FBRUpNQ0VCQUxtQUVBSXdCQkVHc2lBeVFBQWtBZ0JSQTFSUVJBSUFBZ0JTZ0NDRFlDQ0NBQUlBVXBBZ0EzQWdBTUFRc2dCU2dDQUNFRUFrQUNRQUpBSUFVb0FnUWlBa0VCVFFSQUlBQWhBU0FBSUFJUU9nd0JDeUFDUWUvLy8vOERTdzBCSUFBZ0FDQUNFSUlCUVFGcUlnVVFnUUVpQVJCTklBQWdCUkJNSUFBZ0FoQTVDeUFCSUFRZ0FrRUJhaEJ4REFFTEVCY0FDd3NnQTBFUWFpUUFDd2tBSUFBZ0JSRFJBUXVHQXdFSWZ5TUFRZkFEYXlJQUpBQWdBRUhvQTJvaUJpQURFQThnQmhBN0lRb2dCUkFKQkVBZ0JVRUFFTEVCS0FJQUlBcEJMUkE5UmlFTEN5QUNJQXNnQUVIb0Eyb2dBRUhnQTJvZ0FFSGNBMm9nQUVIWUEyb2dBRUhJQTJvUUVTSU1JQUJCdUFOcUVFY2lCaUFBUWFnRGFoQkhJZ2NnQUVHa0Eyb1Ftd0lnQUVFMU5nSVFJQUJCQ0dwQkFDQUFRUkJxSWdJUUhpRUlBa0FDZnlBRkVBa2dBQ2dDcEFOS0JFQWdCUkFKSVFrZ0FDZ0NwQU1oRFNBSEVBa2dDU0FOYTBFQmRHb2dCaEFKYWlBQUtBS2tBMnBCQVdvTUFRc2dCeEFKSUFZUUNXb2dBQ2dDcEFOcVFRSnFDeUlKUWVVQVNRMEFJQWdnQ1VFQ2RCQVpFQ2NnQ0NnQ0FDSUNEUUFRRndBTElBSWdBRUVFYWlBQUlBTW9BZ1FnQlJBTklBVVFEU0FGRUFsQkFuUnFJQW9nQ3lBQVFlQURhaUFBS0FMY0F5QUFLQUxZQXlBTUlBWWdCeUFBS0FLa0F4Q2FBaUFCSUFJZ0FDZ0NCQ0FBS0FJQUlBTWdCQkJpSVFFZ0NCQWRJQWNRQ2hvZ0JoQUtHaUFNRUFvYUlBQkI2QU5xRUE0Z0FFSHdBMm9rQUNBQkM3c0VBUXQvSXdCQnNBaHJJZ0FrQUNBQUlBVTNBeEFnQUNBR053TVlJQUFnQUVIQUIyb2lCellDdkFjZ0J5QUFRUkJxRU5ZQ0lRY2dBRUUxTmdLZ0JDQUFRWmdFYWtFQUlBQkJvQVJxSWdrUUhpRU9JQUJCTlRZQ29BUWdBRUdRQkdwQkFDQUpFQjRoQ2dKQUlBZEI1QUJQQkVBUUZpRUhJQUFnQlRjREFDQUFJQVkzQXdnZ0FFRzhCMm9nQjBIdUhDQUFFRm9pQjBGL1JnMEJJQTRnQUNnQ3ZBY1FKeUFLSUFkQkFuUVFHUkFuSUFvUW5nSU5BU0FLS0FJQUlRa0xJQUJCaUFScUlnZ2dBeEFQSUFnUU95SVJJQUFvQXJ3SElnZ2dCeUFJYWlBSkVHTWdCMEVBU2dSQUlBQW9BcndITFFBQVFTMUdJUThMSUFJZ0R5QUFRWWdFYWlBQVFZQUVhaUFBUWZ3RGFpQUFRZmdEYWlBQVFlZ0RhaEFSSWhBZ0FFSFlBMm9RUnlJSUlBQkJ5QU5xRUVjaUN5QUFRY1FEYWhDYkFpQUFRVFUyQWpBZ0FFRW9ha0VBSUFCQk1Hb2lBaEFlSVF3Q2Z5QUFLQUxFQXlJTklBZElCRUFnQ3hBSklBY2dEV3RCQVhScUlBZ1FDV29nQUNnQ3hBTnFRUUZxREFFTElBc1FDU0FJRUFscUlBQW9Bc1FEYWtFQ2Fnc2lEVUhsQUU4RVFDQU1JQTFCQW5RUUdSQW5JQXdvQWdBaUFrVU5BUXNnQWlBQVFTUnFJQUJCSUdvZ0F5Z0NCQ0FKSUFrZ0IwRUNkR29nRVNBUElBQkJnQVJxSUFBb0F2d0RJQUFvQXZnRElCQWdDQ0FMSUFBb0FzUURFSm9DSUFFZ0FpQUFLQUlrSUFBb0FpQWdBeUFFRUdJaEFTQU1FQjBnQ3hBS0dpQUlFQW9hSUJBUUNob2dBRUdJQkdvUURpQUtFQjBnRGhBZElBQkJzQWhxSkFBZ0FROExFQmNBQy80Q0FRaC9Jd0JCd0FGcklnQWtBQ0FBUWJnQmFpSUdJQU1RRHlBR0VESWhDaUFGRUFrRVFDQUZRUUFRQ3kwQUFDQUtRUzBRS1VIL0FYRkdJUXNMSUFJZ0N5QUFRYmdCYWlBQVFiQUJhaUFBUWE4QmFpQUFRYTRCYWlBQVFhQUJhaEFSSWd3Z0FFR1FBV29RRVNJR0lBQkJnQUZxRUJFaUJ5QUFRZndBYWhDZEFpQUFRVFUyQWhBZ0FFRUlha0VBSUFCQkVHb2lBaEFlSVFnQ1FBSi9JQVVRQ1NBQUtBSjhTZ1JBSUFVUUNTRUpJQUFvQW53aERTQUhFQWtnQ1NBTmEwRUJkR29nQmhBSmFpQUFLQUo4YWtFQmFnd0JDeUFIRUFrZ0JoQUphaUFBS0FKOGFrRUNhZ3NpQ1VIbEFFa05BQ0FJSUFrUUdSQW5JQWdvQWdBaUFnMEFFQmNBQ3lBQ0lBQkJCR29nQUNBREtBSUVJQVVRRFNBRkVBMGdCUkFKYWlBS0lBc2dBRUd3QVdvZ0FDd0Fyd0VnQUN3QXJnRWdEQ0FHSUFjZ0FDZ0NmQkNjQWlBQklBSWdBQ2dDQkNBQUtBSUFJQU1nQkJCV0lRRWdDQkFkSUFjUUNob2dCaEFLR2lBTUVBb2FJQUJCdUFGcUVBNGdBRUhBQVdva0FDQUJDN0lFQVF0L0l3QkIwQU5ySWdBa0FDQUFJQVUzQXhBZ0FDQUdOd01ZSUFBZ0FFSGdBbW9pQnpZQzNBSWdCeUFBUVJCcUVOWUNJUWNnQUVFMU5nTHdBU0FBUWVnQmFrRUFJQUJCOEFGcUlna1FIaUVPSUFCQk5UWUM4QUVnQUVIZ0FXcEJBQ0FKRUI0aENnSkFJQWRCNUFCUEJFQVFGaUVISUFBZ0JUY0RBQ0FBSUFZM0F3Z2dBRUhjQW1vZ0IwSHVIQ0FBRUZvaUIwRi9SZzBCSUE0Z0FDZ0MzQUlRSnlBS0lBY1FHUkFuSUFvUW5nSU5BU0FLS0FJQUlRa0xJQUJCMkFGcUlnZ2dBeEFQSUFnUU1pSVJJQUFvQXR3Q0lnZ2dCeUFJYWlBSkVHOGdCMEVBU2dSQUlBQW9BdHdDTFFBQVFTMUdJUThMSUFJZ0R5QUFRZGdCYWlBQVFkQUJhaUFBUWM4QmFpQUFRYzRCYWlBQVFjQUJhaEFSSWhBZ0FFR3dBV29RRVNJSUlBQkJvQUZxRUJFaUN5QUFRWndCYWhDZEFpQUFRVFUyQWpBZ0FFRW9ha0VBSUFCQk1Hb2lBaEFlSVF3Q2Z5QUFLQUtjQVNJTklBZElCRUFnQ3hBSklBY2dEV3RCQVhScUlBZ1FDV29nQUNnQ25BRnFRUUZxREFFTElBc1FDU0FJRUFscUlBQW9BcHdCYWtFQ2Fnc2lEVUhsQUU4RVFDQU1JQTBRR1JBbklBd29BZ0FpQWtVTkFRc2dBaUFBUVNScUlBQkJJR29nQXlnQ0JDQUpJQWNnQ1dvZ0VTQVBJQUJCMEFGcUlBQXNBTThCSUFBc0FNNEJJQkFnQ0NBTElBQW9BcHdCRUp3Q0lBRWdBaUFBS0FJa0lBQW9BaUFnQXlBRUVGWWhBU0FNRUIwZ0N4QUtHaUFJRUFvYUlCQVFDaG9nQUVIWUFXb1FEaUFLRUIwZ0RoQWRJQUJCMEFOcUpBQWdBUThMRUJjQUM2Y0ZBUU4vSXdCQndBTnJJZ0FrQUNBQUlBSTJBckFESUFBZ0FUWUN1QU1nQUVFMk5nSVVJQUJCR0dvZ0FFRWdhaUFBUVJScUlnY1FIaUVKSUFCQkVHb2lBU0FFRUE4Z0FSQTdJUWdnQUVFQU9nQVBJQUJCdUFOcUlBSWdBeUFCSUFRb0FnUWdCU0FBUVE5cUlBZ2dDU0FISUFCQnNBTnFFS1FDQkVBakFFRVFheUlCSkFBQ1FDQUdFRFVFUUNBR0tBSUFJUUlnQVVFQU5nSU1JQUlnQVVFTWFoQXpJQVpCQUJBNURBRUxJQUZCQURZQ0NDQUdJQUZCQ0dvUU15QUdRUUFRT2dzZ0FVRVFhaVFBSUFBdEFBOEVRQ0FHSUFoQkxSQTlFTWNCQ3lBSVFUQVFQU0VCSUFrb0FnQWhCQ0FBS0FJVUlnaEJCR3NoQWdOQUFrQWdBaUFFVFEwQUlBUW9BZ0FnQVVjTkFDQUVRUVJxSVFRTUFRc0xJd0JCRUdzaUFTUUFJQVlRQ1NFQ0lBWVF6d0VoQXdKQUlBUWdDQkNpQWlJSFJRMEFJQVlRRFNBRVRRUi9JQVFnQmhBTklBWVFDVUVDZEdwTkJVRUFDMFVFUUNBSElBTWdBbXRMQkVBZ0JpQURJQUlnQjJvZ0Eyc2dBaUFDRVBNQkN5QUdFQTBnQWtFQ2RHb2hBd05BSUFRZ0NFY0VRQ0FESUFRUU15QUVRUVJxSVFRZ0EwRUVhaUVEREFFTEN5QUJRUUEyQWdBZ0F5QUJFRE1nQmlBQ0lBZHFFSGdNQVFzakFFRVFheUlDSkFBZ0FTQUVJQWdRemdJZ0FrRVFhaVFBSUFFUURTRUlJQUVRQ1NFQ0l3QkJFR3NpQkNRQUFrQWdBaUFHRU04QklnY2dCaEFKSWdOclRRUkFJQUpGRFFFZ0JoQU5JZ2NnQTBFQ2RHb2dDQ0FDRUhFZ0JpQUNJQU5xSWdJUWVDQUVRUUEyQWd3Z0J5QUNRUUowYWlBRVFReHFFRE1NQVFzZ0JpQUhJQUlnQTJvZ0Iyc2dBeUFEUVFBZ0FpQUlFUFFCQ3lBRVFSQnFKQUFnQVJBS0dnc2dBVUVRYWlRQUN5QUFRYmdEYWlBQVFiQURhaEFvQkVBZ0JTQUZLQUlBUVFKeU5nSUFDeUFBS0FLNEF5RUJJQUJCRUdvUURpQUpFQjBnQUVIQUEyb2tBQ0FCQzljREFRSi9Jd0JCOEFScklnQWtBQ0FBSUFJMkF1QUVJQUFnQVRZQzZBUWdBRUUyTmdJUUlBQkJ5QUZxSUFCQjBBRnFJQUJCRUdvUUhpRUJJQUJCd0FGcUlnY2dCQkFQSUFjUU95RUlJQUJCQURvQXZ3RUNRQ0FBUWVnRWFpQUNJQU1nQnlBRUtBSUVJQVVnQUVHL0FXb2dDQ0FCSUFCQnhBRnFJQUJCNEFScUVLUUNSUTBBSUFCQm94NG9BQUEyQUxjQklBQkJuQjRwQUFBM0E3QUJJQWdnQUVHd0FXb2dBRUc2QVdvZ0FFR0FBV29RWXlBQVFUVTJBaEFnQUVFSWFrRUFJQUJCRUdvaUFoQWVJUU1DUUNBQUtBTEVBU0FCS0FJQWEwR0pBMDRFUUNBRElBQW9Bc1FCSUFFb0FnQnJRUUoxUVFKcUVCa1FKeUFES0FJQVJRMEJJQU1vQWdBaEFnc2dBQzBBdndFRVFDQUNRUzA2QUFBZ0FrRUJhaUVDQ3lBQktBSUFJUVFEUUNBQUtBTEVBU0FFVFFSQUFrQWdBa0VBT2dBQUlBQWdCallDQUNBQVFSQnFJQUFRMXdKQkFVY05BQ0FERUIwTUJBc0ZJQUlnQUVHd0FXb2dBRUdBQVdvaUJ5QUhRU2hxSUFRUTBnRWdCMnRCQW5WcUxRQUFPZ0FBSUFKQkFXb2hBaUFFUVFScUlRUU1BUXNMRUJjQUN4QVhBQXNnQUVIb0JHb2dBRUhnQkdvUUtBUkFJQVVnQlNnQ0FFRUNjallDQUFzZ0FDZ0M2QVFoQWlBQVFjQUJhaEFPSUFFUUhTQUFRZkFFYWlRQUlBSUxwQVVCQTM4akFFR2dBV3NpQUNRQUlBQWdBallDa0FFZ0FDQUJOZ0tZQVNBQVFUWTJBaFFnQUVFWWFpQUFRU0JxSUFCQkZHb2lCeEFlSVFrZ0FFRVFhaUlCSUFRUUR5QUJFREloQ0NBQVFRQTZBQThnQUVHWUFXb2dBaUFESUFFZ0JDZ0NCQ0FGSUFCQkQyb2dDQ0FKSUFjZ0FFR0VBV29RcXdJRVFDTUFRUkJySWdFa0FBSkFJQVlRTlFSQUlBWW9BZ0FoQWlBQlFRQTZBQThnQWlBQlFROXFFRFFnQmtFQUVEa01BUXNnQVVFQU9nQU9JQVlnQVVFT2FoQTBJQVpCQUJBNkN5QUJRUkJxSkFBZ0FDMEFEd1JBSUFZZ0NFRXRFQ2tRb1FFTElBaEJNQkFwSVFFZ0NTZ0NBQ0VFSUFBb0FoUWlDRUVCYXlFQ0lBRkIvd0Z4SVFFRFFBSkFJQUlnQkUwTkFDQUVMUUFBSUFGSERRQWdCRUVCYWlFRURBRUxDeU1BUVJCcklnRWtBQ0FHRUFraEFpQUdFQk1oQXdKQUlBUWdDQkR2QWlJSFJRMEFJQVlRRFNBRVRRUi9JQVFnQmhBTklBWVFDV3BOQlVFQUMwVUVRQ0FISUFNZ0FtdExCRUFnQmlBRElBSWdCMm9nQTJzZ0FpQUNFTWdCQ3lBR0VBMGdBbW9oQXdOQUlBUWdDRWNFUUNBRElBUVFOQ0FFUVFGcUlRUWdBMEVCYWlFRERBRUxDeUFCUVFBNkFBOGdBeUFCUVE5cUVEUWdCaUFDSUFkcUVIZ01BUXNqQUVFUWF5SUNKQUFnQVNBRUlBZ1E4d0lnQWtFUWFpUUFJQUVRRFNFSUlBRVFDU0VDSXdCQkVHc2lCQ1FBQWtBZ0FpQUdFQk1pQnlBR0VBa2lBMnROQkVBZ0FrVU5BU0FHRUEwaUJ5QURhaUFJSUFJUVZTQUdJQUlnQTJvaUFoQjRJQVJCQURvQUR5QUNJQWRxSUFSQkQyb1FOQXdCQ3lBR0lBY2dBaUFEYWlBSGF5QURJQU5CQUNBQ0lBZ1ErQUVMSUFSQkVHb2tBQ0FCRUFvYUN5QUJRUkJxSkFBTElBQkJtQUZxSUFCQmtBRnFFQ1lFUUNBRklBVW9BZ0JCQW5JMkFnQUxJQUFvQXBnQklRRWdBRUVRYWhBT0lBa1FIU0FBUWFBQmFpUUFJQUVMelFNQkFuOGpBRUdnQW1zaUFDUUFJQUFnQWpZQ2tBSWdBQ0FCTmdLWUFpQUFRVFkyQWhBZ0FFR1lBV29nQUVHZ0FXb2dBRUVRYWhBZUlRRWdBRUdRQVdvaUJ5QUVFQThnQnhBeUlRZ2dBRUVBT2dDUEFRSkFJQUJCbUFKcUlBSWdBeUFISUFRb0FnUWdCU0FBUVk4QmFpQUlJQUVnQUVHVUFXb2dBRUdFQW1vUXF3SkZEUUFnQUVHakhpZ0FBRFlBaHdFZ0FFR2NIaWtBQURjRGdBRWdDQ0FBUVlBQmFpQUFRWW9CYWlBQVFmWUFhaEJ2SUFCQk5UWUNFQ0FBUVFocVFRQWdBRUVRYWlJQ0VCNGhBd0pBSUFBb0FwUUJJQUVvQWdCclFlTUFUZ1JBSUFNZ0FDZ0NsQUVnQVNnQ0FHdEJBbW9RR1JBbklBTW9BZ0JGRFFFZ0F5Z0NBQ0VDQ3lBQUxRQ1BBUVJBSUFKQkxUb0FBQ0FDUVFGcUlRSUxJQUVvQWdBaEJBTkFJQUFvQXBRQklBUk5CRUFDUUNBQ1FRQTZBQUFnQUNBR05nSUFJQUJCRUdvZ0FCRFhBa0VCUncwQUlBTVFIUXdFQ3dVZ0FpQUFRZllBYWlJSElBZEJDbW9nQkJEVkFTQUFheUFBYWkwQUNqb0FBQ0FDUVFGcUlRSWdCRUVCYWlFRURBRUxDeEFYQUFzUUZ3QUxJQUJCbUFKcUlBQkJrQUpxRUNZRVFDQUZJQVVvQWdCQkFuSTJBZ0FMSUFBb0FwZ0NJUUlnQUVHUUFXb1FEaUFCRUIwZ0FFR2dBbW9rQUNBQ0M1Z0NBUUovSXdCQm9BTnJJZ2drQUNBSUlBaEJvQU5xSWdNMkFnd2pBRUdRQVdzaUJ5UUFJQWNnQjBHRUFXbzJBaHdnQUVFSWFpQUhRU0JxSWdJZ0IwRWNhaUFFSUFVZ0JoQ3hBaUFIUWdBM0F4QWdCeUFDTmdJTUlBaEJFR29pQWlBSUtBSU1FSzRDSVFRZ0FDZ0NDQ0VGSXdCQkVHc2lBQ1FBSUFBZ0JUWUNEQ0FBUVFocUlBQkJER29RVWlFRklBSWdCMEVNYWlBRUlBZEJFR29RMGdJaEJDQUZFRkVnQUVFUWFpUUFJQVJCZjBZRVFCQVhBQXNnQ0NBQ0lBUkJBblJxTmdJTUlBZEJrQUZxSkFBZ0NDZ0NEQ0VFSXdCQkVHc2lBQ1FBSUFBZ0FUWUNDQU5BSUFJZ0JFY0VRQ0FBUVFocUlBSW9BZ0FROXdJZ0FrRUVhaUVDREFFTEN5QUFLQUlJSVFFZ0FFRVFhaVFBSUFNa0FDQUJDNFVCQUNNQVFZQUJheUlDSkFBZ0FpQUNRZlFBYWpZQ0RDQUFRUWhxSUFKQkVHb2lBQ0FDUVF4cUlBUWdCU0FHRUxFQ0lBQWhCQ0FDS0FJTUlRTWpBRUVRYXlJQUpBQWdBQ0FCTmdJSUEwQWdBeUFFUndSQUlBQkJDR29nQkN3QUFCRDRBaUFFUVFGcUlRUU1BUXNMSUFBb0FnZ2hBU0FBUVJCcUpBQWdBa0dBQVdva0FDQUJDK0FNQVFGL0l3QkJRR29pQnlRQUlBY2dBVFlDT0NBRVFRQTJBZ0FnQnlBREVBOGdCeEE3SVFnZ0J4QU9BbjhDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFJQVpCd1FCckRqa0FBUmNFRndVWEJnY1hGeGNLRnhjWEZ3NFBFQmNYRnhNVkZ4Y1hGeGNYRndBQkFnTURGeGNCRndnWEZ3a0xGd3dYRFJjTEZ4Y1JFaFFXQ3lBQUlBVkJHR29nQjBFNGFpQUNJQVFnQ0JDMUFnd1lDeUFBSUFWQkVHb2dCMEU0YWlBQ0lBUWdDQkMwQWd3WEN5QUhJQUFnQVNBQ0lBTWdCQ0FGSUFCQkNHb2dBQ2dDQ0NnQ0RCRUFBQ0lBRUEwZ0FCQU5JQUFRQ1VFQ2RHb1FZRFlDT0F3V0N5QUhRVGhxSUFJZ0JDQUlRUUlRV0NFQUFrQWdCQ2dDQUNJQlFRUnhJQUJCQUV4eUlBQkJIMHB5UlFSQUlBVWdBRFlDREF3QkN5QUVJQUZCQkhJMkFnQUxEQlVMSUFkQnVORUFLUU1BTndNWUlBZEJzTkVBS1FNQU53TVFJQWRCcU5FQUtRTUFOd01JSUFkQm9ORUFLUU1BTndNQUlBY2dBQ0FCSUFJZ0F5QUVJQVVnQnlBSFFTQnFFR0EyQWpnTUZBc2dCMEhZMFFBcEF3QTNBeGdnQjBIUTBRQXBBd0EzQXhBZ0IwSEkwUUFwQXdBM0F3Z2dCMEhBMFFBcEF3QTNBd0FnQnlBQUlBRWdBaUFESUFRZ0JTQUhJQWRCSUdvUVlEWUNPQXdUQ3lBSFFUaHFJQUlnQkNBSVFRSVFXQ0VBQWtBZ0JDZ0NBQ0lCUVFSeElBQkJGMHB5UlFSQUlBVWdBRFlDQ0F3QkN5QUVJQUZCQkhJMkFnQUxEQklMSUFkQk9Hb2dBaUFFSUFoQkFoQllJUUFDUUNBRUtBSUFJZ0ZCQkhFZ0FFRUFUSElnQUVFTVNuSkZCRUFnQlNBQU5nSUlEQUVMSUFRZ0FVRUVjallDQUFzTUVRc2dCMEU0YWlBQ0lBUWdDRUVERUZnaEFBSkFJQVFvQWdBaUFVRUVjU0FBUWUwQ1NuSkZCRUFnQlNBQU5nSWNEQUVMSUFRZ0FVRUVjallDQUFzTUVBc2dCMEU0YWlBQ0lBUWdDRUVDRUZnaEFBSkFJQVFvQWdBaUFVRUVjU0FBUVF4S2NrVUVRQ0FGSUFCQkFXczJBaEFNQVFzZ0JDQUJRUVJ5TmdJQUN3d1BDeUFIUVRocUlBSWdCQ0FJUVFJUVdDRUFBa0FnQkNnQ0FDSUJRUVJ4SUFCQk8wcHlSUVJBSUFVZ0FEWUNCQXdCQ3lBRUlBRkJCSEkyQWdBTERBNExJQWRCT0dvaEFDTUFRUkJySWdFa0FDQUJJQUkyQWdnRFFBSkFJQUFnQVVFSWFoQTJSUTBBSUFoQmdNQUFJQUFRSVJCT1JRMEFJQUFRSlJvTUFRc0xJQUFnQVVFSWFoQW9CRUFnQkNBRUtBSUFRUUp5TmdJQUN5QUJRUkJxSkFBTURRc2dCMEU0YWlFQkFrQWdBRUVJYWlBQUtBSUlLQUlJRVFBQUlnQVFDVUVBSUFCQkRHb1FDV3RHQkVBZ0JDQUVLQUlBUVFSeU5nSUFEQUVMSUFFZ0FpQUFJQUJCR0dvZ0NDQUVRUUFRc2dFZ0FHc2lBU0FGS0FJSUlnQkJERWR5UlFSQUlBVkJBRFlDQ0F3QkN5QUJRUXhISUFCQkMwcHlSUVJBSUFVZ0FFRU1hallDQ0FzTERBd0xJQWRCNE5FQVFTd1FRaUlHSUFBZ0FTQUNJQU1nQkNBRklBWWdCa0VzYWhCZ05nSTREQXNMSUFkQm9OSUFLQUlBTmdJUUlBZEJtTklBS1FNQU53TUlJQWRCa05JQUtRTUFOd01BSUFjZ0FDQUJJQUlnQXlBRUlBVWdCeUFIUVJScUVHQTJBamdNQ2dzZ0IwRTRhaUFDSUFRZ0NFRUNFRmdoQUFKQUlBUW9BZ0FpQVVFRWNTQUFRVHhLY2tVRVFDQUZJQUEyQWdBTUFRc2dCQ0FCUVFSeU5nSUFDd3dKQ3lBSFFjalNBQ2tEQURjREdDQUhRY0RTQUNrREFEY0RFQ0FIUWJqU0FDa0RBRGNEQ0NBSFFiRFNBQ2tEQURjREFDQUhJQUFnQVNBQ0lBTWdCQ0FGSUFjZ0IwRWdhaEJnTmdJNERBZ0xJQWRCT0dvZ0FpQUVJQWhCQVJCWUlRQUNRQ0FFS0FJQUlnRkJCSEVnQUVFR1NuSkZCRUFnQlNBQU5nSVlEQUVMSUFRZ0FVRUVjallDQUFzTUJ3c2dBQ0FCSUFJZ0F5QUVJQVVnQUNnQ0FDZ0NGQkVGQUF3SEN5QUhJQUFnQVNBQ0lBTWdCQ0FGSUFCQkNHb2dBQ2dDQ0NnQ0dCRUFBQ0lBRUEwZ0FCQU5JQUFRQ1VFQ2RHb1FZRFlDT0F3RkN5QUZRUlJxSUFkQk9Hb2dBaUFFSUFnUXN3SU1CQXNnQjBFNGFpQUNJQVFnQ0VFRUVGZ2hBQ0FFTFFBQVFRUnhSUVJBSUFVZ0FFSHNEbXMyQWhRTERBTUxJQVpCSlVZTkFRc2dCQ0FFS0FJQVFRUnlOZ0lBREFFTEl3QkJFR3NpQUNRQUlBQWdBallDQ0VFR0lRRUNRQUpBSUFkQk9Hb2lBaUFBUVFocUVDZ05BRUVFSVFFZ0NDQUNFQ0VRaHdGQkpVY05BRUVDSVFFZ0FoQWxJQUJCQ0dvUUtFVU5BUXNnQkNBRUtBSUFJQUZ5TmdJQUN5QUFRUkJxSkFBTElBY29BamdMSVFBZ0IwRkFheVFBSUFBTFJ3RUJmeU1BUVJCcklnWWtBQ0FHSUFFMkFnZ2dCaUFERUE4Z0JoQTdJUUVnQmhBT0lBVkJGR29nQmtFSWFpQUNJQVFnQVJDekFpQUdLQUlJSVFBZ0JrRVFhaVFBSUFBTFNRRUJmeU1BUVJCcklnWWtBQ0FHSUFFMkFnZ2dCaUFERUE4Z0JoQTdJUUVnQmhBT0lBQWdCVUVRYWlBR1FRaHFJQUlnQkNBQkVMUUNJQVlvQWdnaEFDQUdRUkJxSkFBZ0FBdEpBUUYvSXdCQkVHc2lCaVFBSUFZZ0FUWUNDQ0FHSUFNUUR5QUdFRHNoQVNBR0VBNGdBQ0FGUVJocUlBWkJDR29nQWlBRUlBRVF0UUlnQmlnQ0NDRUFJQVpCRUdva0FDQUFDekFBSUFBZ0FTQUNJQU1nQkNBRklBQkJDR29nQUNnQ0NDZ0NGQkVBQUNJQUVBMGdBQkFOSUFBUUNVRUNkR29RWUF0Y0FRRi9Jd0JCSUdzaUJpUUFJQVpCeU5JQUtRTUFOd01ZSUFaQndOSUFLUU1BTndNUUlBWkJ1TklBS1FNQU53TUlJQVpCc05JQUtRTUFOd01BSUFBZ0FTQUNJQU1nQkNBRklBWWdCa0VnYWlJQkVHQWhBQ0FCSkFBZ0FBdE1BUUYvUWNTQkFVSEFnUUVnQWhzZ0FUWUNBQ0FCUVFCS0JFQkJvSUVCUVlDQkFTQUNHeUVEUVFBaEFnTkFJQUlnQTJvZ0FDQUNhaTBBQURvQUFDQUNRUUZxSWdJZ0FVY05BQXNMQzVBTUFRSi9Jd0JCSUdzaUJ5UUFJQWNnQVRZQ0dDQUVRUUEyQWdBZ0IwRUlhaUlKSUFNUUR5QUpFREloQ0NBSkVBNENmd0pBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQWdCa0hCQUdzT09RQUJGd1FYQlJjR0J4Y1hGd29YRnhjWERnOFFGeGNYRXhVWEZ4Y1hGeGNYQUFFQ0F3TVhGd0VYQ0JjWENRc1hEQmNORndzWEZ4RVNGQllMSUFBZ0JVRVlhaUFIUVJocUlBSWdCQ0FJRUxnQ0RCZ0xJQUFnQlVFUWFpQUhRUmhxSUFJZ0JDQUlFTGNDREJjTElBY2dBQ0FCSUFJZ0F5QUVJQVVnQUVFSWFpQUFLQUlJS0FJTUVRQUFJZ0FRRFNBQUVBMGdBQkFKYWhCaE5nSVlEQllMSUFkQkdHb2dBaUFFSUFoQkFoQlpJUUFDUUNBRUtBSUFJZ0ZCQkhFZ0FFRUFUSElnQUVFZlNuSkZCRUFnQlNBQU5nSU1EQUVMSUFRZ0FVRUVjallDQUFzTUZRc2dCMEtsMnIycHd1ekxrdmtBTndNSUlBY2dBQ0FCSUFJZ0F5QUVJQVVnQjBFSWFpQUhRUkJxRUdFMkFoZ01GQXNnQjBLbHNyV3AwcTNMa3VRQU53TUlJQWNnQUNBQklBSWdBeUFFSUFVZ0IwRUlhaUFIUVJCcUVHRTJBaGdNRXdzZ0IwRVlhaUFDSUFRZ0NFRUNFRmtoQUFKQUlBUW9BZ0FpQVVFRWNTQUFRUmRLY2tVRVFDQUZJQUEyQWdnTUFRc2dCQ0FCUVFSeU5nSUFDd3dTQ3lBSFFSaHFJQUlnQkNBSVFRSVFXU0VBQWtBZ0JDZ0NBQ0lCUVFSeElBQkJBRXh5SUFCQkRFcHlSUVJBSUFVZ0FEWUNDQXdCQ3lBRUlBRkJCSEkyQWdBTERCRUxJQWRCR0dvZ0FpQUVJQWhCQXhCWklRQUNRQ0FFS0FJQUlnRkJCSEVnQUVIdEFrcHlSUVJBSUFVZ0FEWUNIQXdCQ3lBRUlBRkJCSEkyQWdBTERCQUxJQWRCR0dvZ0FpQUVJQWhCQWhCWklRQUNRQ0FFS0FJQUlnRkJCSEVnQUVFTVNuSkZCRUFnQlNBQVFRRnJOZ0lRREFFTElBUWdBVUVFY2pZQ0FBc01Ed3NnQjBFWWFpQUNJQVFnQ0VFQ0VGa2hBQUpBSUFRb0FnQWlBVUVFY1NBQVFUdEtja1VFUUNBRklBQTJBZ1FNQVFzZ0JDQUJRUVJ5TmdJQUN3d09DeUFIUVJocUlRQWpBRUVRYXlJQkpBQWdBU0FDTmdJSUEwQUNRQ0FBSUFGQkNHb1FNVVVOQUNBSVFZREFBQ0FBRUI4UVJFVU5BQ0FBRUNJYURBRUxDeUFBSUFGQkNHb1FKZ1JBSUFRZ0JDZ0NBRUVDY2pZQ0FBc2dBVUVRYWlRQURBMExJQWRCR0dvaEFRSkFJQUJCQ0dvZ0FDZ0NDQ2dDQ0JFQUFDSUFFQWxCQUNBQVFReHFFQWxyUmdSQUlBUWdCQ2dDQUVFRWNqWUNBQXdCQ3lBQklBSWdBQ0FBUVJocUlBZ2dCRUVBRUxRQklBQnJJZ0VnQlNnQ0NDSUFRUXhIY2tVRVFDQUZRUUEyQWdnTUFRc2dBVUVNUnlBQVFRdEtja1VFUUNBRklBQkJER28yQWdnTEN3d01DeUFIUVpUUkFDZ0FBRFlBRHlBSFFZM1JBQ2tBQURjRENDQUhJQUFnQVNBQ0lBTWdCQ0FGSUFkQkNHb2dCMEVUYWhCaE5nSVlEQXNMSUFkQm5ORUFMUUFBT2dBTUlBZEJtTkVBS0FBQU5nSUlJQWNnQUNBQklBSWdBeUFFSUFVZ0IwRUlhaUFIUVExcUVHRTJBaGdNQ2dzZ0IwRVlhaUFDSUFRZ0NFRUNFRmtoQUFKQUlBUW9BZ0FpQVVFRWNTQUFRVHhLY2tVRVFDQUZJQUEyQWdBTUFRc2dCQ0FCUVFSeU5nSUFDd3dKQ3lBSFFxV1E2YW5TeWM2UzB3QTNBd2dnQnlBQUlBRWdBaUFESUFRZ0JTQUhRUWhxSUFkQkVHb1FZVFlDR0F3SUN5QUhRUmhxSUFJZ0JDQUlRUUVRV1NFQUFrQWdCQ2dDQUNJQlFRUnhJQUJCQmtweVJRUkFJQVVnQURZQ0dBd0JDeUFFSUFGQkJISTJBZ0FMREFjTElBQWdBU0FDSUFNZ0JDQUZJQUFvQWdBb0FoUVJCUUFNQndzZ0J5QUFJQUVnQWlBRElBUWdCU0FBUVFocUlBQW9BZ2dvQWhnUkFBQWlBQkFOSUFBUURTQUFFQWxxRUdFMkFoZ01CUXNnQlVFVWFpQUhRUmhxSUFJZ0JDQUlFTFlDREFRTElBZEJHR29nQWlBRUlBaEJCQkJaSVFBZ0JDMEFBRUVFY1VVRVFDQUZJQUJCN0E1ck5nSVVDd3dEQ3lBR1FTVkdEUUVMSUFRZ0JDZ0NBRUVFY2pZQ0FBd0JDeU1BUVJCcklnQWtBQ0FBSUFJMkFnaEJCaUVCQWtBQ1FDQUhRUmhxSWdJZ0FFRUlhaEFtRFFCQkJDRUJJQWdnQWhBZkVJZ0JRU1ZIRFFCQkFpRUJJQUlRSWlBQVFRaHFFQ1pGRFFFTElBUWdCQ2dDQUNBQmNqWUNBQXNnQUVFUWFpUUFDeUFIS0FJWUN5RUFJQWRCSUdva0FDQUFDMGNCQVg4akFFRVFheUlHSkFBZ0JpQUJOZ0lJSUFZZ0F4QVBJQVlRTWlFQklBWVFEaUFGUVJScUlBWkJDR29nQWlBRUlBRVF0Z0lnQmlnQ0NDRUFJQVpCRUdva0FDQUFDMGtCQVg4akFFRVFheUlHSkFBZ0JpQUJOZ0lJSUFZZ0F4QVBJQVlRTWlFQklBWVFEaUFBSUFWQkVHb2dCa0VJYWlBQ0lBUWdBUkMzQWlBR0tBSUlJUUFnQmtFUWFpUUFJQUFMU1FFQmZ5TUFRUkJySWdZa0FDQUdJQUUyQWdnZ0JpQURFQThnQmhBeUlRRWdCaEFPSUFBZ0JVRVlhaUFHUVFocUlBSWdCQ0FCRUxnQ0lBWW9BZ2doQUNBR1FSQnFKQUFnQUFzdEFDQUFJQUVnQWlBRElBUWdCU0FBUVFocUlBQW9BZ2dvQWhRUkFBQWlBQkFOSUFBUURTQUFFQWxxRUdFTFB3RUJmeU1BUVJCcklnWWtBQ0FHUXFXUTZhblN5YzZTMHdBM0F3Z2dBQ0FCSUFJZ0F5QUVJQVVnQmtFSWFpQUdRUkJxSWdFUVlTRUFJQUVrQUNBQUM2NEJBUVYvSXdCQjBBRnJJZ0FrQUNBQVFZdlJBQzhBQURzQnpBRWdBRUdIMFFBb0FBQTJBc2dCRUJZaEJpQUFJQVEyQWdBZ0FFR3dBV29pQnlBSElBZEJGQ0FHSUFCQnlBRnFJQUFRTENJSWFpSUVJQUlRUHlFR0lBQkJFR29pQlNBQ0VBOGdCUkE3SVFrZ0JSQU9JQWtnQnlBRUlBVVFZeUFCSUFVZ0NFRUNkQ0FGYWlJQklBWWdBR3RCQW5RZ0FHcEJzQVZySUFRZ0JrWWJJQUVnQWlBREVHSWhBU0FBUWRBQmFpUUFJQUVMZ0FRQkIzOGpBRUd3QTJzaUFDUUFJQUJDSlRjRHFBTWdBRUdvQTJwQkFYSkJqeDRnQWlnQ0JCQ3ZBU0VJSUFBZ0FFR0FBMm8yQXZ3Q0VCWWhCZ0ovSUFnRVFDQUNLQUlJSVFjZ0FFRkFheUFGTndNQUlBQWdCRGNET0NBQUlBYzJBakFnQUVHQUEycEJIaUFHSUFCQnFBTnFJQUJCTUdvUUxBd0JDeUFBSUFRM0ExQWdBQ0FGTndOWUlBQkJnQU5xUVI0Z0JpQUFRYWdEYWlBQVFkQUFhaEFzQ3lFR0lBQkJOVFlDZ0FFZ0FFSHdBbXBCQUNBQVFZQUJhaEFlSVFrZ0FFR0FBMm9pQ2lFSEFrQWdCa0VlVGdSQUVCWWhCZ0ovSUFnRVFDQUNLQUlJSVFjZ0FDQUZOd01RSUFBZ0JEY0RDQ0FBSUFjMkFnQWdBRUg4QW1vZ0JpQUFRYWdEYWlBQUVGb01BUXNnQUNBRU53TWdJQUFnQlRjREtDQUFRZndDYWlBR0lBQkJxQU5xSUFCQklHb1FXZ3NpQmtGL1JnMEJJQWtnQUNnQy9BSVFKeUFBS0FMOEFpRUhDeUFISUFZZ0Iyb2lDeUFDRUQ4aERDQUFRVFUyQW9BQklBQkIrQUJxUVFBZ0FFR0FBV29RSGlFSEFrQWdBQ2dDL0FJZ0FFR0FBMnBHQkVBZ0FFR0FBV29oQmd3QkN5QUdRUU4wRUJraUJrVU5BU0FISUFZUUp5QUFLQUw4QWlFS0N5QUFRZWdBYWlJSUlBSVFEeUFLSUF3Z0N5QUdJQUJCOUFCcUlBQkI4QUJxSUFnUXVnSWdDQkFPSUFFZ0JpQUFLQUowSUFBb0FuQWdBaUFERUdJaEFTQUhFQjBnQ1JBZElBQkJzQU5xSkFBZ0FROExFQmNBQzl3REFRZC9Jd0JCZ0FOcklnQWtBQ0FBUWlVM0EvZ0NJQUJCK0FKcVFRRnlRYVFmSUFJb0FnUVFyd0VoQnlBQUlBQkIwQUpxTmdMTUFoQVdJUVVDZnlBSEJFQWdBaWdDQ0NFR0lBQWdCRGtES0NBQUlBWTJBaUFnQUVIUUFtcEJIaUFGSUFCQitBSnFJQUJCSUdvUUxBd0JDeUFBSUFRNUF6QWdBRUhRQW1wQkhpQUZJQUJCK0FKcUlBQkJNR29RTEFzaEJTQUFRVFUyQWxBZ0FFSEFBbXBCQUNBQVFkQUFhaEFlSVFnZ0FFSFFBbW9pQ1NFR0FrQWdCVUVlVGdSQUVCWWhCUUovSUFjRVFDQUNLQUlJSVFZZ0FDQUVPUU1JSUFBZ0JqWUNBQ0FBUWN3Q2FpQUZJQUJCK0FKcUlBQVFXZ3dCQ3lBQUlBUTVBeEFnQUVITUFtb2dCU0FBUWZnQ2FpQUFRUkJxRUZvTElnVkJmMFlOQVNBSUlBQW9Bc3dDRUNjZ0FDZ0N6QUloQmdzZ0JpQUZJQVpxSWdvZ0FoQS9JUXNnQUVFMU5nSlFJQUJCeUFCcVFRQWdBRUhRQUdvUUhpRUdBa0FnQUNnQ3pBSWdBRUhRQW1wR0JFQWdBRUhRQUdvaEJRd0JDeUFGUVFOMEVCa2lCVVVOQVNBR0lBVVFKeUFBS0FMTUFpRUpDeUFBUVRocUlnY2dBaEFQSUFrZ0N5QUtJQVVnQUVIRUFHb2dBRUZBYXlBSEVMb0NJQWNRRGlBQklBVWdBQ2dDUkNBQUtBSkFJQUlnQXhCaUlRRWdCaEFkSUFnUUhTQUFRWUFEYWlRQUlBRVBDeEFYQUF1aUFRRUVmeU1BUVlBQ2F5SUFKQUFnQUVJbE53UDRBU0FBUWZnQmFpSUdRUUZ5UWRNY1FRQWdBaWdDQkJCdEVCWWhCeUFBSUFRM0F3QWdBRUhnQVdvaUJTQUZRUmdnQnlBR0lBQVFMQ0FGYWlJSElBSVFQeUVJSUFCQkVHb2lCaUFDRUE4Z0JTQUlJQWNnQUVFZ2FpSUZJQUJCSEdvZ0FFRVlhaUFHRUs0QklBWVFEaUFCSUFVZ0FDZ0NIQ0FBS0FJWUlBSWdBeEJpSVFFZ0FFR0FBbW9rQUNBQkM3UUJBUU4vSXdCQm9BRnJJZ0FrQUNBQVFZWFJBQzhBQURzQm5BRWdBRUdCMFFBb0FBQTJBcGdCSUFCQm1BRnFJZ1ZCQVhKQjJoeEJBQ0FDS0FJRUVHMFFGaUVHSUFBZ0JEWUNBQ0FBUVlzQmFpSUVJQVJCRFNBR0lBVWdBQkFzSUFScUlnWWdBaEEvSVFjZ0FFRVFhaUlGSUFJUUR5QUVJQWNnQmlBQVFTQnFJZ1FnQUVFY2FpQUFRUmhxSUFVUXJnRWdCUkFPSUFFZ0JDQUFLQUljSUFBb0FoZ2dBaUFERUdJaEFTQUFRYUFCYWlRQUlBRUxvZ0VCQkg4akFFR0FBbXNpQUNRQUlBQkNKVGNEK0FFZ0FFSDRBV29pQmtFQmNrSFRIRUVCSUFJb0FnUVFiUkFXSVFjZ0FDQUVOd01BSUFCQjRBRnFJZ1VnQlVFWUlBY2dCaUFBRUN3Z0JXb2lCeUFDRUQ4aENDQUFRUkJxSWdZZ0FoQVBJQVVnQ0NBSElBQkJJR29pQlNBQVFSeHFJQUJCR0dvZ0JoQ3VBU0FHRUE0Z0FTQUZJQUFvQWh3Z0FDZ0NHQ0FDSUFNUVlpRUJJQUJCZ0FKcUpBQWdBUXNXQUVHZ2dRRkJ4SUVCS0FJQUlBSWdBQ0FCRU9ZQkM3UUJBUU4vSXdCQm9BRnJJZ0FrQUNBQVFZWFJBQzhBQURzQm5BRWdBRUdCMFFBb0FBQTJBcGdCSUFCQm1BRnFJZ1ZCQVhKQjJoeEJBU0FDS0FJRUVHMFFGaUVHSUFBZ0JEWUNBQ0FBUVlzQmFpSUVJQVJCRFNBR0lBVWdBQkFzSUFScUlnWWdBaEEvSVFjZ0FFRVFhaUlGSUFJUUR5QUVJQWNnQmlBQVFTQnFJZ1FnQUVFY2FpQUFRUmhxSUFVUXJnRWdCUkFPSUFFZ0JDQUFLQUljSUFBb0FoZ2dBaUFERUdJaEFTQUFRYUFCYWlRQUlBRUx6UUVCQVg4akFFRXdheUlGSkFBZ0JTQUJOZ0lvQWtBZ0FpZ0NCRUVCY1VVRVFDQUFJQUVnQWlBRElBUWdBQ2dDQUNnQ0dCRUdBQ0VDREFFTElBVkJHR29pQUNBQ0VBOGdBQkNNQVNFQklBQVFEZ0pBSUFRRVFDQUZRUmhxSUFFUVN3d0JDeUFGUVJocUlBRVFTZ3NnQlNBRlFSaHFFRUEyQWhBRFFDQUZJQVZCR0dvUWJEWUNDQ0FGUVJCcUlBVkJDR29RV3dSQUlBVkJLR29nQlVFUWFpSUFLQUlBS0FJQUVQY0NJQUFRbFFFTUFRVWdCU2dDS0NFQ0lBVkJHR29RQ2hvTEN3c2dCVUV3YWlRQUlBSUxwQUVCQlg4akFFSGdBR3NpQUNRQUlBQkJpOUVBTHdBQU93RmNJQUJCaDlFQUtBQUFOZ0pZRUJZaEJpQUFJQVEyQWdBZ0FFRkFheUlISUFjZ0IwRVVJQVlnQUVIWUFHb2dBQkFzSWdocUlnUWdBaEEvSVFZZ0FFRVFhaUlGSUFJUUR5QUZFREloQ1NBRkVBNGdDU0FISUFRZ0JSQnZJQUVnQlNBRklBaHFJZ0VnQmlBQWF5QUFha0V3YXlBRUlBWkdHeUFCSUFJZ0F4QldJUUVnQUVIZ0FHb2tBQ0FCQzRBRUFRZC9Jd0JCZ0FKcklnQWtBQ0FBUWlVM0EvZ0JJQUJCK0FGcVFRRnlRWThlSUFJb0FnUVFyd0VoQ0NBQUlBQkIwQUZxTmdMTUFSQVdJUVlDZnlBSUJFQWdBaWdDQ0NFSElBQkJRR3NnQlRjREFDQUFJQVEzQXpnZ0FDQUhOZ0l3SUFCQjBBRnFRUjRnQmlBQVFmZ0JhaUFBUVRCcUVDd01BUXNnQUNBRU53TlFJQUFnQlRjRFdDQUFRZEFCYWtFZUlBWWdBRUg0QVdvZ0FFSFFBR29RTEFzaEJpQUFRVFUyQW9BQklBQkJ3QUZxUVFBZ0FFR0FBV29RSGlFSklBQkIwQUZxSWdvaEJ3SkFJQVpCSGs0RVFCQVdJUVlDZnlBSUJFQWdBaWdDQ0NFSElBQWdCVGNERUNBQUlBUTNBd2dnQUNBSE5nSUFJQUJCekFGcUlBWWdBRUg0QVdvZ0FCQmFEQUVMSUFBZ0JEY0RJQ0FBSUFVM0F5Z2dBRUhNQVdvZ0JpQUFRZmdCYWlBQVFTQnFFRm9MSWdaQmYwWU5BU0FKSUFBb0Fzd0JFQ2NnQUNnQ3pBRWhCd3NnQnlBR0lBZHFJZ3NnQWhBL0lRd2dBRUUxTmdLQUFTQUFRZmdBYWtFQUlBQkJnQUZxRUI0aEJ3SkFJQUFvQXN3QklBQkIwQUZxUmdSQUlBQkJnQUZxSVFZTUFRc2dCa0VCZEJBWklnWkZEUUVnQnlBR0VDY2dBQ2dDekFFaENnc2dBRUhvQUdvaUNDQUNFQThnQ2lBTUlBc2dCaUFBUWZRQWFpQUFRZkFBYWlBSUVMd0NJQWdRRGlBQklBWWdBQ2dDZENBQUtBSndJQUlnQXhCV0lRRWdCeEFkSUFrUUhTQUFRWUFDYWlRQUlBRVBDeEFYQUF2Y0F3RUhmeU1BUWRBQmF5SUFKQUFnQUVJbE53UElBU0FBUWNnQmFrRUJja0drSHlBQ0tBSUVFSzhCSVFjZ0FDQUFRYUFCYWpZQ25BRVFGaUVGQW44Z0J3UkFJQUlvQWdnaEJpQUFJQVE1QXlnZ0FDQUdOZ0lnSUFCQm9BRnFRUjRnQlNBQVFjZ0JhaUFBUVNCcUVDd01BUXNnQUNBRU9RTXdJQUJCb0FGcVFSNGdCU0FBUWNnQmFpQUFRVEJxRUN3TElRVWdBRUUxTmdKUUlBQkJrQUZxUVFBZ0FFSFFBR29RSGlFSUlBQkJvQUZxSWdraEJnSkFJQVZCSGs0RVFCQVdJUVVDZnlBSEJFQWdBaWdDQ0NFR0lBQWdCRGtEQ0NBQUlBWTJBZ0FnQUVHY0FXb2dCU0FBUWNnQmFpQUFFRm9NQVFzZ0FDQUVPUU1RSUFCQm5BRnFJQVVnQUVISUFXb2dBRUVRYWhCYUN5SUZRWDlHRFFFZ0NDQUFLQUtjQVJBbklBQW9BcHdCSVFZTElBWWdCU0FHYWlJS0lBSVFQeUVMSUFCQk5UWUNVQ0FBUWNnQWFrRUFJQUJCMEFCcUVCNGhCZ0pBSUFBb0Fwd0JJQUJCb0FGcVJnUkFJQUJCMEFCcUlRVU1BUXNnQlVFQmRCQVpJZ1ZGRFFFZ0JpQUZFQ2NnQUNnQ25BRWhDUXNnQUVFNGFpSUhJQUlRRHlBSklBc2dDaUFGSUFCQnhBQnFJQUJCUUdzZ0J4QzhBaUFIRUE0Z0FTQUZJQUFvQWtRZ0FDZ0NRQ0FDSUFNUVZpRUJJQVlRSFNBSUVCMGdBRUhRQVdva0FDQUJEd3NRRndBTG9RRUJCSDhqQUVId0FHc2lBQ1FBSUFCQ0pUY0RhQ0FBUWVnQWFpSUdRUUZ5UWRNY1FRQWdBaWdDQkJCdEVCWWhCeUFBSUFRM0F3QWdBRUhRQUdvaUJTQUZRUmdnQnlBR0lBQVFMQ0FGYWlJSElBSVFQeUVJSUFCQkVHb2lCaUFDRUE4Z0JTQUlJQWNnQUVFZ2FpSUZJQUJCSEdvZ0FFRVlhaUFHRUxBQklBWVFEaUFCSUFVZ0FDZ0NIQ0FBS0FJWUlBSWdBeEJXSVFFZ0FFSHdBR29rQUNBQkM3RUJBUU4vSXdCQjBBQnJJZ0FrQUNBQVFZWFJBQzhBQURzQlRDQUFRWUhSQUNnQUFEWUNTQ0FBUWNnQWFpSUZRUUZ5UWRvY1FRQWdBaWdDQkJCdEVCWWhCaUFBSUFRMkFnQWdBRUU3YWlJRUlBUkJEU0FHSUFVZ0FCQXNJQVJxSWdZZ0FoQS9JUWNnQUVFUWFpSUZJQUlRRHlBRUlBY2dCaUFBUVNCcUlnUWdBRUVjYWlBQVFSaHFJQVVRc0FFZ0JSQU9JQUVnQkNBQUtBSWNJQUFvQWhnZ0FpQURFRlloQVNBQVFkQUFhaVFBSUFFTG9RRUJCSDhqQUVId0FHc2lBQ1FBSUFCQ0pUY0RhQ0FBUWVnQWFpSUdRUUZ5UWRNY1FRRWdBaWdDQkJCdEVCWWhCeUFBSUFRM0F3QWdBRUhRQUdvaUJTQUZRUmdnQnlBR0lBQVFMQ0FGYWlJSElBSVFQeUVJSUFCQkVHb2lCaUFDRUE4Z0JTQUlJQWNnQUVFZ2FpSUZJQUJCSEdvZ0FFRVlhaUFHRUxBQklBWVFEaUFCSUFVZ0FDZ0NIQ0FBS0FJWUlBSWdBeEJXSVFFZ0FFSHdBR29rQUNBQkMrMFJBUTUvSXdCQndBSnJJZ1lrQUNBR0lBRWdBa0VCRU5vQ05nS1VBaUFHSUFZb0FwUUNFSklCTmdLWUFrR2orSWFyZjBHY2xNTGxmU0FFR3lFT0lBQkZJUTlCc1pmWHVub2hBUU5BQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUlBRWlBRUh3dXQ3ZUFVd0VRQ0FBUWNpeXRkSjdUQVJBSUFCQnhzdXJpSHBNQkVBZ0FFSHQ1TEdqZUVZTkN5QUFRWXlHcDd4NVJnMEtJQUJCbDh6ZzlYbEhEUklnQmlnQ3RBSkJnSUVCYWlBR0xRQ2ZBam9BQUVHWHJNd3BJUUVNRWdzZ0FFR3hsOWU2ZWtZTkFpQUFRZXlacHVKNlJnMExJQUJCeDh1cmlIcEhEUkVnQmtIQUFtb2tBQThMSUFCQjlMZTE0bjVNQkVBZ0FFSEpzclhTZTBZTkJDQUFRWnlVd3VWOVJnMEdJQUJCalB5cnhINUhEUkVNRUFzZ0FFSDF0N1hpZmtZTkJDQUFRYVA0aHF0L1JnMEdJQUJCbDZ6TUtVY05FQ0FHS0FLMEFrRUJhaUVOUVlTMTQ4VUhJUUVNRUFzZ0FFR3UwOHpEQlV3RVFDQUFRZlRIdnRnQ1RBUkFJQTRoQVNBQVFmRzYzdDRCUmcwUklBQWhBU0FBUWVQMnJwNENSdzBSSUFaQm9BRnFFQW9hSUFZb0FxQUNHZ3dRQ3lBQVFmWEh2dGdDUmcwTUlBQkIwT0RWaHdOR0RRY2dBRUhrM2ZPM0JFY05FQ0FHS0FLMEFrR2dnUUZxSUFZdEFKOENPZ0FBUVplc3pDa2hBUXdRQ3lBQVFkeUFoTE1HVEFSQUlBQkJyOVBNd3dWR0RRc2dBRUcwMjVITUJVWU5EaUFBUVpYZytONEZSdzBRUWNTQkFTQUROZ0lBUWZHNjN0NEJJUUVNRUFzZ0FFSGRnSVN6QmtZTkRDQUFRZFhmd2ZNR1JnMEJJQUJCaExYanhRZEhEUThnQmlBTk5nSzBBa0dNaHFlOGVVR00vS3ZFZmlBR0tBSzBBaUFEU0JzaEFRd1BDMEVBSVFjZ0JpQUVRUUJLT2dDZEFrSFYzOEh6QmtISnNyWFNleUFHTFFDZEFrRUJjUnNoQVNBR0tBS1VBaUVLREE0TElBWkJpQUpxSUFZb0FwUUNFRlFpRUNFS1FRQWhDRUVBSVFrakFFRVFheUlCSkFBZ0NoQUpJUXNqQUVFUWF5SUhKQUFnQmtINEFXb2lBRUlBTndJQUlBZEJBRFlDRENBQVFRaHFJQWRCREdvUXpRRWdCMEVRYWlRQUFrQWdDMFVOQUFOQUFrQWdDaUFKRUFzdEFBQkJQVVlOQUNBS0lBa1FDeTBBQUNJSFFTdEdJQWRCSUhKQjRRQnJRUnBKQkg5QkFRVWdCeEJGUVFCSEMwRUFSM0lnQjBFdlJuSkZEUUFnQzBFQmF5RUxJQUZCREdvZ0NHb2dDaUFKRUFzdEFBQTZBQUJCQUNFSElBaEJBV29pQ0VFRVJnUkFBMEFnQVVFTWFpQUhhaUlJSUFnc0FBQVE5UUU2QUFBZ0IwRUJhaUlIUVFSSERRQUxJQUVnQVMwQUR5QUJMUUFPSWdkQkJuUnFPZ0FMSUFFZ0FTMEFEU0lJUVFSMlFRTnhJQUV0QUF4QkFuUnlPZ0FKSUFFZ0IwRUNka0VQY1NBSVFRUjBjam9BQ2tFQUlRaEJBQ0VIQTBBZ0FDQUJRUWxxSUFkcUVQUUNJQWRCQVdvaUIwRURSdzBBQ3dzZ0NVRUJhaUVKSUFzTkFRc0xJQWhGRFFBZ0NFRURUQVJBSUFGQkRHb2dDR3BCQUVFRUlBaHJFRVlhQzBFQUlRY0RRQ0FCUVF4cUlBZHFJZ2tnQ1N3QUFCRDFBVG9BQUNBSFFRRnFJZ2RCQkVjTkFBc2dBU0FCTFFBUElBRXRBQTRpQjBFR2RHbzZBQXNnQVNBQkxRQU5JZ2xCQkhaQkEzRWdBUzBBREVFQ2RISTZBQWtnQVNBSFFRSjJRUTl4SUFsQkJIUnlPZ0FLSUFoQkFrZ05BQ0FJUVFGcklRaEJBQ0VIQTBBZ0FDQUJRUWxxSUFkcUVQUUNJQWRCQVdvaUJ5QUlSdzBBQ3dzZ0FVRVFhaVFBSUFBUWlRRWhFU0FBS0FJQUlRd2dCa0d0SHlnQUFEWUM4QUVnQmtHbEh5a0FBRGNENkFFZ0JrSUFOd1BZQVNBR1FnQTNBOUFCSUFaQ0FEY0R5QUVnQmtJQU53UEFBU0FHUWdBM0E3Z0JJQVpDQURjRHNBRWdBQkNKQVNFTElBWkJzQUZxSVFvakFFRXdheUlCSkFBZ0FVRWdhaUVJSUFVZ0JCQytBaUlIQkVBZ0NFSUFOd0FBSUFoQ0FEY0FDQ0FISUFnZ0NCQ25BUXNnQmtHL0Ftb2hFaUFHUWRBQmFpRVRJQWNFZnlNQVFSQnJJZ2trQUNBQlFSQnFJZ2dnQmlrQTZBRTNBQUFnQ0NBR0tBRHdBVFlBQ0NBSVFZQ0FnQWcyQUF3Z0NVRVFhaVFBSXdCQkVHc2lDU1FBSUFzRVFDQUpJQWdwQUFBM0F3QWdDU0FJS1FBSU53TUlJQWtRNndFZ0J5QUpJQXdnQ3lBS0VJVUNDeUFKUVJCcUpBQWpBRUVRYXlJSkpBQWdBVUlBTndBQUlBRkNBRGNBQ0NBQlFTQnFJZ3dnRWtFQUlBRVF2d0VnRENBS0lBc2dBUkMvQVNBSlFnQVE3UUVnQ1VFSWNpQUxRUU4wclJEdEFTQU1JQWxCRUNBQkVMOEJJQWxCRUdva0FDQUhJQWdnQVVFUUlCTVFoUUlnQnhBUVFRQUZRWDhMR2lBQlFUQnFKQUFnQUJEdEFpQUFLQUlBQkVBZ0FDZ0NCQ0lCSUFBb0FnQWlCMGNFUUFOQUlBQVFReG9nQnlBQlFRRnJJZ0ZIRFFBTEN5QUFJQWMyQWdRZ0FCQkRHaUFBS0FJQUlRRWdBQkNGQVJvZ0FSQVFDeUFRRUFvYVFTQkJFQ0FSUVRCR0d5RUhRY215dGRKN0lRRU1EUXNnQmlBUE9nQ2VBaUFHSUFjMkFyQUNJQVlnQ2pZQ3JBSkI5YmUxNG41QmxlRDQzZ1VnQmkwQW5nSkJBWEViSVFFTURBdEJ3SUVCSUFNMkFnQkI4YnJlM2dFaEFRd0xDMEhRNE5XSEEwR2orSWFyZnlBR0tBS1lBaUFEUmhzaEFRd0tDMEhRNE5XSEEwSHQ1TEdqZUNBR0tBS3dBa0VRUmh0QjdlU3hvM2dnQmkwQW5RSkJBWEViSVFFTUNRdEJoTFhqeFFjaEFVRUFJUTBNQ0FzZ0JpQUdLQUtzQWlBR0tBSzBBbW90QUFBNkFKOENJQVl0QUo4Q0drR1h6T0QxZVVIazNmTzNCQ0FHTFFDZUFrRUJjUnNoQVF3SEN5QUdJQVpCb0FGcUlnQTJBcUFDSUFZb0FxQUNHaUFBSUFZb0Fxd0NFRlFhUWV5WnB1SjZJUUZCQUNFQ0RBWUxJQVlnQWpZQ3VBSkJyOVBNd3dWQjQvYXVuZ0lnQmlnQ3VBSWdBMGdiSVFFTUJRc2dCaUFHUVJCcUlnQTJBcVFDSUFZb0FxUUNHaUFBRU13Q0dpQUdJQVpCREdvaUNEWUNxQUlnQmlnQ3FBSWFJQVlvQXFRQ1FRaHFFTUlDSVFrZ0JrR3dBV29pQVNBR1FhQUJhaUFHS0FLNEFrRUJkQkRBQWlBSklBRVF2UUlnQVJBS0dpQUFJQWdRL1FKQjljZSsyQUpCM1lDRXN3WWdCaTBBbmdKQkFYRWJJUUVNQkFzZ0JpZ0N1QUpCZ0lFQmFpQUdLQUlNT2dBQVFiVGJrY3dGSVFFTUF3c2dCaWdDdUFKQm9JRUJhaUFHS0FJTU9nQUFRYlRia2N3RklRRU1BZ3NnQmlnQ3FBSWFJQVpCRUdvUWlnRWFJQVlvQXFRQ0dpQUdLQUs0QWlJQVFRRjBRUUp4SUFCQkFYTnFJUUpCN0ptbTRub2hBUXdCQzBISHk2dUllaUVCREFBTEFBdXhBUUVEZnlNQVFkQUFheUlBSkFBZ0FFR0YwUUF2QUFBN0FVd2dBRUdCMFFBb0FBQTJBa2dnQUVISUFHb2lCVUVCY2tIYUhFRUJJQUlvQWdRUWJSQVdJUVlnQUNBRU5nSUFJQUJCTzJvaUJDQUVRUTBnQmlBRklBQVFMQ0FFYWlJR0lBSVFQeUVISUFCQkVHb2lCU0FDRUE4Z0JDQUhJQVlnQUVFZ2FpSUVJQUJCSEdvZ0FFRVlhaUFGRUxBQklBVVFEaUFCSUFRZ0FDZ0NIQ0FBS0FJWUlBSWdBeEJXSVFFZ0FFSFFBR29rQUNBQkM4MEJBUUYvSXdCQk1Hc2lCU1FBSUFVZ0FUWUNLQUpBSUFJb0FnUkJBWEZGQkVBZ0FDQUJJQUlnQXlBRUlBQW9BZ0FvQWhnUkJnQWhBZ3dCQ3lBRlFSaHFJZ0FnQWhBUElBQVFqZ0VoQVNBQUVBNENRQ0FFQkVBZ0JVRVlhaUFCRUVzTUFRc2dCVUVZYWlBQkVFb0xJQVVnQlVFWWFoQkFOZ0lRQTBBZ0JTQUZRUmhxRUc0MkFnZ2dCVUVRYWlBRlFRaHFFRnNFUUNBRlFTaHFJQVZCRUdvaUFDZ0NBQ3dBQUJENEFpQUFFSmNCREFFRklBVW9BaWdoQWlBRlFSaHFFQW9hQ3dzTElBVkJNR29rQUNBQ0MvSUNBUUYvSXdCQjRBSnJJZ0FrQUNBQUlBSTJBdEFDSUFBZ0FUWUMyQUlnQUVIUUFXb1FFU0VHSUFCQkVHb2lBaUFERUE4Z0FoQTdRZURRQUVINjBBQWdBRUhnQVdvUVl5QUNFQTRnQUVIQUFXb1FFU0lESUFNUUV4QU1JQUFnQTBFQUVBc2lBVFlDdkFFZ0FDQUNOZ0lNSUFCQkFEWUNDQU5BQWtBZ0FFSFlBbW9nQUVIUUFtb1FOa1VOQUNBQUtBSzhBU0FERUFrZ0FXcEdCRUFnQXhBSklRSWdBeUFERUFsQkFYUVFEQ0FESUFNUUV4QU1JQUFnQWlBRFFRQVFDeUlCYWpZQ3ZBRUxJQUJCMkFKcUVDRkJFQ0FCSUFCQnZBRnFJQUJCQ0dwQkFDQUdJQUJCRUdvZ0FFRU1haUFBUWVBQmFoQ0xBUTBBSUFCQjJBSnFFQ1VhREFFTEN5QURJQUFvQXJ3QklBRnJFQXdnQXhBTklRSVFGaUVCSUFBZ0JUWUNBQ0FDSUFFZ0FCREJBa0VCUndSQUlBUkJCRFlDQUFzZ0FFSFlBbW9nQUVIUUFtb1FLQVJBSUFRZ0JDZ0NBRUVDY2pZQ0FBc2dBQ2dDMkFJaEFTQURFQW9hSUFZUUNob2dBRUhnQW1va0FDQUJDOUlEQVFGK0l3QkJnQU5ySWdBa0FDQUFJQUkyQXZBQ0lBQWdBVFlDK0FJZ0FFSFlBV29nQXlBQVFmQUJhaUFBUWV3QmFpQUFRZWdCYWhEVUFTQUFRY2dCYWhBUklnRWdBUkFURUF3Z0FDQUJRUUFRQ3lJQ05nTEVBU0FBSUFCQklHbzJBaHdnQUVFQU5nSVlJQUJCQVRvQUZ5QUFRY1VBT2dBV0EwQUNRQ0FBUWZnQ2FpQUFRZkFDYWhBMlJRMEFJQUFvQXNRQklBRVFDU0FDYWtZRVFDQUJFQWtoQXlBQklBRVFDVUVCZEJBTUlBRWdBUkFURUF3Z0FDQURJQUZCQUJBTElnSnFOZ0xFQVFzZ0FFSDRBbW9RSVNBQVFSZHFJQUJCRm1vZ0FpQUFRY1FCYWlBQUtBTHNBU0FBS0FMb0FTQUFRZGdCYWlBQVFTQnFJQUJCSEdvZ0FFRVlhaUFBUWZBQmFoRFRBUTBBSUFCQitBSnFFQ1VhREFFTEN3SkFJQUJCMkFGcUVBbEZEUUFnQUMwQUYwVU5BQ0FBS0FJY0lnTWdBRUVnYW10Qm53RktEUUFnQUNBRFFRUnFOZ0ljSUFNZ0FDZ0NHRFlDQUFzZ0FDQUNJQUFvQXNRQklBUVF3d0lnQUNrREFDRUdJQVVnQUNrRENEY0RDQ0FGSUFZM0F3QWdBRUhZQVdvZ0FFRWdhaUFBS0FJY0lBUVFMU0FBUWZnQ2FpQUFRZkFDYWhBb0JFQWdCQ0FFS0FJQVFRSnlOZ0lBQ3lBQUtBTDRBaUVDSUFFUUNob2dBRUhZQVdvUUNob2dBRUdBQTJva0FDQUNDN3NEQUNNQVFmQUNheUlBSkFBZ0FDQUNOZ0xnQWlBQUlBRTJBdWdDSUFCQnlBRnFJQU1nQUVIZ0FXb2dBRUhjQVdvZ0FFSFlBV29RMUFFZ0FFRzRBV29RRVNJQklBRVFFeEFNSUFBZ0FVRUFFQXNpQWpZQ3RBRWdBQ0FBUVJCcU5nSU1JQUJCQURZQ0NDQUFRUUU2QUFjZ0FFSEZBRG9BQmdOQUFrQWdBRUhvQW1vZ0FFSGdBbW9RTmtVTkFDQUFLQUswQVNBQkVBa2dBbXBHQkVBZ0FSQUpJUU1nQVNBQkVBbEJBWFFRRENBQklBRVFFeEFNSUFBZ0F5QUJRUUFRQ3lJQ2FqWUN0QUVMSUFCQjZBSnFFQ0VnQUVFSGFpQUFRUVpxSUFJZ0FFRzBBV29nQUNnQzNBRWdBQ2dDMkFFZ0FFSElBV29nQUVFUWFpQUFRUXhxSUFCQkNHb2dBRUhnQVdvUTB3RU5BQ0FBUWVnQ2FoQWxHZ3dCQ3dzQ1FDQUFRY2dCYWhBSlJRMEFJQUF0QUFkRkRRQWdBQ2dDRENJRElBQkJFR3ByUVo4QlNnMEFJQUFnQTBFRWFqWUNEQ0FESUFBb0FnZzJBZ0FMSUFVZ0FpQUFLQUswQVNBRUVNUUNPUU1BSUFCQnlBRnFJQUJCRUdvZ0FDZ0NEQ0FFRUMwZ0FFSG9BbW9nQUVIZ0Ftb1FLQVJBSUFRZ0JDZ0NBRUVDY2pZQ0FBc2dBQ2dDNkFJaEFpQUJFQW9hSUFCQnlBRnFFQW9hSUFCQjhBSnFKQUFnQWd1N0F3QWpBRUh3QW1zaUFDUUFJQUFnQWpZQzRBSWdBQ0FCTmdMb0FpQUFRY2dCYWlBRElBQkI0QUZxSUFCQjNBRnFJQUJCMkFGcUVOUUJJQUJCdUFGcUVCRWlBU0FCRUJNUURDQUFJQUZCQUJBTElnSTJBclFCSUFBZ0FFRVFhallDRENBQVFRQTJBZ2dnQUVFQk9nQUhJQUJCeFFBNkFBWURRQUpBSUFCQjZBSnFJQUJCNEFKcUVEWkZEUUFnQUNnQ3RBRWdBUkFKSUFKcVJnUkFJQUVRQ1NFRElBRWdBUkFKUVFGMEVBd2dBU0FCRUJNUURDQUFJQU1nQVVFQUVBc2lBbW8yQXJRQkN5QUFRZWdDYWhBaElBQkJCMm9nQUVFR2FpQUNJQUJCdEFGcUlBQW9BdHdCSUFBb0F0Z0JJQUJCeUFGcUlBQkJFR29nQUVFTWFpQUFRUWhxSUFCQjRBRnFFTk1CRFFBZ0FFSG9BbW9RSlJvTUFRc0xBa0FnQUVISUFXb1FDVVVOQUNBQUxRQUhSUTBBSUFBb0Fnd2lBeUFBUVJCcWEwR2ZBVW9OQUNBQUlBTkJCR28yQWd3Z0F5QUFLQUlJTmdJQUN5QUZJQUlnQUNnQ3RBRWdCQkRGQWpnQ0FDQUFRY2dCYWlBQVFSQnFJQUFvQWd3Z0JCQXRJQUJCNkFKcUlBQkI0QUpxRUNnRVFDQUVJQVFvQWdCQkFuSTJBZ0FMSUFBb0F1Z0NJUUlnQVJBS0dpQUFRY2dCYWhBS0dpQUFRZkFDYWlRQUlBSUxuUU1CQW44akFFSGdBbXNpQUNRQUlBQWdBallDMEFJZ0FDQUJOZ0xZQWlBREVGd2hCaUFESUFCQjRBRnFFSmtCSVFjZ0FFSFFBV29nQXlBQVFjd0NhaENZQVNBQVFjQUJhaEFSSWdFZ0FSQVRFQXdnQUNBQlFRQVFDeUlDTmdLOEFTQUFJQUJCRUdvMkFnd2dBRUVBTmdJSUEwQUNRQ0FBUWRnQ2FpQUFRZEFDYWhBMlJRMEFJQUFvQXJ3QklBRVFDU0FDYWtZRVFDQUJFQWtoQXlBQklBRVFDVUVCZEJBTUlBRWdBUkFURUF3Z0FDQURJQUZCQUJBTElnSnFOZ0s4QVFzZ0FFSFlBbW9RSVNBR0lBSWdBRUc4QVdvZ0FFRUlhaUFBS0FMTUFpQUFRZEFCYWlBQVFSQnFJQUJCREdvZ0J4Q0xBUTBBSUFCQjJBSnFFQ1VhREFFTEN3SkFJQUJCMEFGcUVBbEZEUUFnQUNnQ0RDSURJQUJCRUdwclFaOEJTZzBBSUFBZ0EwRUVhallDRENBRElBQW9BZ2cyQWdBTElBVWdBaUFBS0FLOEFTQUVJQVlReGdJM0F3QWdBRUhRQVdvZ0FFRVFhaUFBS0FJTUlBUVFMU0FBUWRnQ2FpQUFRZEFDYWhBb0JFQWdCQ0FFS0FJQVFRSnlOZ0lBQ3lBQUtBTFlBaUVDSUFFUUNob2dBRUhRQVdvUUNob2dBRUhnQW1va0FDQUNDNTBEQVFKL0l3QkI0QUpySWdBa0FDQUFJQUkyQXRBQ0lBQWdBVFlDMkFJZ0F4QmNJUVlnQXlBQVFlQUJhaENaQVNFSElBQkIwQUZxSUFNZ0FFSE1BbW9RbUFFZ0FFSEFBV29RRVNJQklBRVFFeEFNSUFBZ0FVRUFFQXNpQWpZQ3ZBRWdBQ0FBUVJCcU5nSU1JQUJCQURZQ0NBTkFBa0FnQUVIWUFtb2dBRUhRQW1vUU5rVU5BQ0FBS0FLOEFTQUJFQWtnQW1wR0JFQWdBUkFKSVFNZ0FTQUJFQWxCQVhRUURDQUJJQUVRRXhBTUlBQWdBeUFCUVFBUUN5SUNhallDdkFFTElBQkIyQUpxRUNFZ0JpQUNJQUJCdkFGcUlBQkJDR29nQUNnQ3pBSWdBRUhRQVdvZ0FFRVFhaUFBUVF4cUlBY1Fpd0VOQUNBQVFkZ0NhaEFsR2d3QkN3c0NRQ0FBUWRBQmFoQUpSUTBBSUFBb0Fnd2lBeUFBUVJCcWEwR2ZBVW9OQUNBQUlBTkJCR28yQWd3Z0F5QUFLQUlJTmdJQUN5QUZJQUlnQUNnQ3ZBRWdCQ0FHRU1rQ093RUFJQUJCMEFGcUlBQkJFR29nQUNnQ0RDQUVFQzBnQUVIWUFtb2dBRUhRQW1vUUtBUkFJQVFnQkNnQ0FFRUNjallDQUFzZ0FDZ0MyQUloQWlBQkVBb2FJQUJCMEFGcUVBb2FJQUJCNEFKcUpBQWdBZ3VkQXdFQ2Z5TUFRZUFDYXlJQUpBQWdBQ0FDTmdMUUFpQUFJQUUyQXRnQ0lBTVFYQ0VHSUFNZ0FFSGdBV29RbVFFaEJ5QUFRZEFCYWlBRElBQkJ6QUpxRUpnQklBQkJ3QUZxRUJFaUFTQUJFQk1RRENBQUlBRkJBQkFMSWdJMkFyd0JJQUFnQUVFUWFqWUNEQ0FBUVFBMkFnZ0RRQUpBSUFCQjJBSnFJQUJCMEFKcUVEWkZEUUFnQUNnQ3ZBRWdBUkFKSUFKcVJnUkFJQUVRQ1NFRElBRWdBUkFKUVFGMEVBd2dBU0FCRUJNUURDQUFJQU1nQVVFQUVBc2lBbW8yQXJ3QkN5QUFRZGdDYWhBaElBWWdBaUFBUWJ3QmFpQUFRUWhxSUFBb0Fzd0NJQUJCMEFGcUlBQkJFR29nQUVFTWFpQUhFSXNCRFFBZ0FFSFlBbW9RSlJvTUFRc0xBa0FnQUVIUUFXb1FDVVVOQUNBQUtBSU1JZ01nQUVFUWFtdEJud0ZLRFFBZ0FDQURRUVJxTmdJTUlBTWdBQ2dDQ0RZQ0FBc2dCU0FDSUFBb0Fyd0JJQVFnQmhES0FqY0RBQ0FBUWRBQmFpQUFRUkJxSUFBb0Fnd2dCQkF0SUFCQjJBSnFJQUJCMEFKcUVDZ0VRQ0FFSUFRb0FnQkJBbkkyQWdBTElBQW9BdGdDSVFJZ0FSQUtHaUFBUWRBQmFoQUtHaUFBUWVBQ2FpUUFJQUlMblFNQkFuOGpBRUhnQW1zaUFDUUFJQUFnQWpZQzBBSWdBQ0FCTmdMWUFpQURFRndoQmlBRElBQkI0QUZxRUprQklRY2dBRUhRQVdvZ0F5QUFRY3dDYWhDWUFTQUFRY0FCYWhBUklnRWdBUkFURUF3Z0FDQUJRUUFRQ3lJQ05nSzhBU0FBSUFCQkVHbzJBZ3dnQUVFQU5nSUlBMEFDUUNBQVFkZ0NhaUFBUWRBQ2FoQTJSUTBBSUFBb0Fyd0JJQUVRQ1NBQ2FrWUVRQ0FCRUFraEF5QUJJQUVRQ1VFQmRCQU1JQUVnQVJBVEVBd2dBQ0FESUFGQkFCQUxJZ0pxTmdLOEFRc2dBRUhZQW1vUUlTQUdJQUlnQUVHOEFXb2dBRUVJYWlBQUtBTE1BaUFBUWRBQmFpQUFRUkJxSUFCQkRHb2dCeENMQVEwQUlBQkIyQUpxRUNVYURBRUxDd0pBSUFCQjBBRnFFQWxGRFFBZ0FDZ0NEQ0lESUFCQkVHcHJRWjhCU2cwQUlBQWdBMEVFYWpZQ0RDQURJQUFvQWdnMkFnQUxJQVVnQWlBQUtBSzhBU0FFSUFZUXl3STJBZ0FnQUVIUUFXb2dBRUVRYWlBQUtBSU1JQVFRTFNBQVFkZ0NhaUFBUWRBQ2FoQW9CRUFnQkNBRUtBSUFRUUp5TmdJQUN5QUFLQUxZQWlFQ0lBRVFDaG9nQUVIUUFXb1FDaG9nQUVIZ0Ftb2tBQ0FDQyt3QkFRRi9Jd0JCSUdzaUJpUUFJQVlnQVRZQ0dBSkFJQU1vQWdSQkFYRkZCRUFnQmtGL05nSUFJQVlnQUNBQklBSWdBeUFFSUFZZ0FDZ0NBQ2dDRUJFRkFDSUJOZ0lZQWtBQ1FBSkFJQVlvQWdBT0FnQUJBZ3NnQlVFQU9nQUFEQU1MSUFWQkFUb0FBQXdDQ3lBRlFRRTZBQUFnQkVFRU5nSUFEQUVMSUFZZ0F4QVBJQVlRT3lFQklBWVFEaUFHSUFNUUR5QUdFSXdCSVFBZ0JoQU9JQVlnQUJCTElBWkJESElnQUJCS0lBVWdCa0VZYWlJRElBSWdCaUFESUFFZ0JFRUJFTElCSUFaR09nQUFJQVlvQWhnaEFRTkFJQU5CREdzUUNpSURJQVpIRFFBTEN5QUdRU0JxSkFBZ0FRdnlBZ0VCZnlNQVFaQUNheUlBSkFBZ0FDQUNOZ0tBQWlBQUlBRTJBb2dDSUFCQjBBRnFFQkVoQmlBQVFSQnFJZ0lnQXhBUElBSVFNa0hnMEFCQit0QUFJQUJCNEFGcUVHOGdBaEFPSUFCQndBRnFFQkVpQXlBREVCTVFEQ0FBSUFOQkFCQUxJZ0UyQXJ3QklBQWdBallDRENBQVFRQTJBZ2dEUUFKQUlBQkJpQUpxSUFCQmdBSnFFREZGRFFBZ0FDZ0N2QUVnQXhBSklBRnFSZ1JBSUFNUUNTRUNJQU1nQXhBSlFRRjBFQXdnQXlBREVCTVFEQ0FBSUFJZ0EwRUFFQXNpQVdvMkFyd0JDeUFBUVlnQ2FoQWZRUkFnQVNBQVFid0JhaUFBUVFocVFRQWdCaUFBUVJCcUlBQkJER29nQUVIZ0FXb1FqUUVOQUNBQVFZZ0NhaEFpR2d3QkN3c2dBeUFBS0FLOEFTQUJheEFNSUFNUURTRUNFQlloQVNBQUlBVTJBZ0FnQWlBQklBQVF3UUpCQVVjRVFDQUVRUVEyQWdBTElBQkJpQUpxSUFCQmdBSnFFQ1lFUUNBRUlBUW9BZ0JCQW5JMkFnQUxJQUFvQW9nQ0lRRWdBeEFLR2lBR0VBb2FJQUJCa0FKcUpBQWdBUXZTQXdFQmZpTUFRYUFDYXlJQUpBQWdBQ0FDTmdLUUFpQUFJQUUyQXBnQ0lBQkI0QUZxSUFNZ0FFSHdBV29nQUVIdkFXb2dBRUh1QVdvUTF3RWdBRUhRQVdvUUVTSUJJQUVRRXhBTUlBQWdBVUVBRUFzaUFqWUN6QUVnQUNBQVFTQnFOZ0ljSUFCQkFEWUNHQ0FBUVFFNkFCY2dBRUhGQURvQUZnTkFBa0FnQUVHWUFtb2dBRUdRQW1vUU1VVU5BQ0FBS0FMTUFTQUJFQWtnQW1wR0JFQWdBUkFKSVFNZ0FTQUJFQWxCQVhRUURDQUJJQUVRRXhBTUlBQWdBeUFCUVFBUUN5SUNhallDekFFTElBQkJtQUpxRUI4Z0FFRVhhaUFBUVJacUlBSWdBRUhNQVdvZ0FDd0E3d0VnQUN3QTdnRWdBRUhnQVdvZ0FFRWdhaUFBUVJ4cUlBQkJHR29nQUVId0FXb1ExZ0VOQUNBQVFaZ0NhaEFpR2d3QkN3c0NRQ0FBUWVBQmFoQUpSUTBBSUFBdEFCZEZEUUFnQUNnQ0hDSURJQUJCSUdwclFaOEJTZzBBSUFBZ0EwRUVhallDSENBRElBQW9BaGcyQWdBTElBQWdBaUFBS0FMTUFTQUVFTU1DSUFBcEF3QWhCaUFGSUFBcEF3ZzNBd2dnQlNBR053TUFJQUJCNEFGcUlBQkJJR29nQUNnQ0hDQUVFQzBnQUVHWUFtb2dBRUdRQW1vUUpnUkFJQVFnQkNnQ0FFRUNjallDQUFzZ0FDZ0NtQUloQWlBQkVBb2FJQUJCNEFGcUVBb2FJQUJCb0FKcUpBQWdBZ3U3QXdBakFFR1FBbXNpQUNRQUlBQWdBallDZ0FJZ0FDQUJOZ0tJQWlBQVFkQUJhaUFESUFCQjRBRnFJQUJCM3dGcUlBQkIzZ0ZxRU5jQklBQkJ3QUZxRUJFaUFTQUJFQk1RRENBQUlBRkJBQkFMSWdJMkFyd0JJQUFnQUVFUWFqWUNEQ0FBUVFBMkFnZ2dBRUVCT2dBSElBQkJ4UUE2QUFZRFFBSkFJQUJCaUFKcUlBQkJnQUpxRURGRkRRQWdBQ2dDdkFFZ0FSQUpJQUpxUmdSQUlBRVFDU0VESUFFZ0FSQUpRUUYwRUF3Z0FTQUJFQk1RRENBQUlBTWdBVUVBRUFzaUFtbzJBcndCQ3lBQVFZZ0NhaEFmSUFCQkIyb2dBRUVHYWlBQ0lBQkJ2QUZxSUFBc0FOOEJJQUFzQU40QklBQkIwQUZxSUFCQkVHb2dBRUVNYWlBQVFRaHFJQUJCNEFGcUVOWUJEUUFnQUVHSUFtb1FJaG9NQVFzTEFrQWdBRUhRQVdvUUNVVU5BQ0FBTFFBSFJRMEFJQUFvQWd3aUF5QUFRUkJxYTBHZkFVb05BQ0FBSUFOQkJHbzJBZ3dnQXlBQUtBSUlOZ0lBQ3lBRklBSWdBQ2dDdkFFZ0JCREVBamtEQUNBQVFkQUJhaUFBUVJCcUlBQW9BZ3dnQkJBdElBQkJpQUpxSUFCQmdBSnFFQ1lFUUNBRUlBUW9BZ0JCQW5JMkFnQUxJQUFvQW9nQ0lRSWdBUkFLR2lBQVFkQUJhaEFLR2lBQVFaQUNhaVFBSUFJTHV3TUFJd0JCa0FKcklnQWtBQ0FBSUFJMkFvQUNJQUFnQVRZQ2lBSWdBRUhRQVdvZ0F5QUFRZUFCYWlBQVFkOEJhaUFBUWQ0QmFoRFhBU0FBUWNBQmFoQVJJZ0VnQVJBVEVBd2dBQ0FCUVFBUUN5SUNOZ0s4QVNBQUlBQkJFR28yQWd3Z0FFRUFOZ0lJSUFCQkFUb0FCeUFBUWNVQU9nQUdBMEFDUUNBQVFZZ0NhaUFBUVlBQ2FoQXhSUTBBSUFBb0Fyd0JJQUVRQ1NBQ2FrWUVRQ0FCRUFraEF5QUJJQUVRQ1VFQmRCQU1JQUVnQVJBVEVBd2dBQ0FESUFGQkFCQUxJZ0pxTmdLOEFRc2dBRUdJQW1vUUh5QUFRUWRxSUFCQkJtb2dBaUFBUWJ3QmFpQUFMQURmQVNBQUxBRGVBU0FBUWRBQmFpQUFRUkJxSUFCQkRHb2dBRUVJYWlBQVFlQUJhaERXQVEwQUlBQkJpQUpxRUNJYURBRUxDd0pBSUFCQjBBRnFFQWxGRFFBZ0FDMEFCMFVOQUNBQUtBSU1JZ01nQUVFUWFtdEJud0ZLRFFBZ0FDQURRUVJxTmdJTUlBTWdBQ2dDQ0RZQ0FBc2dCU0FDSUFBb0Fyd0JJQVFReFFJNEFnQWdBRUhRQVdvZ0FFRVFhaUFBS0FJTUlBUVFMU0FBUVlnQ2FpQUFRWUFDYWhBbUJFQWdCQ0FFS0FJQVFRSnlOZ0lBQ3lBQUtBS0lBaUVDSUFFUUNob2dBRUhRQVdvUUNob2dBRUdRQW1va0FDQUNDNUlEQVFGL0l3QkJrQUpySWdBa0FDQUFJQUkyQW9BQ0lBQWdBVFlDaUFJZ0F4QmNJUVlnQUVIUUFXb2dBeUFBUWY4QmFoQ2FBU0FBUWNBQmFoQVJJZ0VnQVJBVEVBd2dBQ0FCUVFBUUN5SUNOZ0s4QVNBQUlBQkJFR28yQWd3Z0FFRUFOZ0lJQTBBQ1FDQUFRWWdDYWlBQVFZQUNhaEF4UlEwQUlBQW9BcndCSUFFUUNTQUNha1lFUUNBQkVBa2hBeUFCSUFFUUNVRUJkQkFNSUFFZ0FSQVRFQXdnQUNBRElBRkJBQkFMSWdKcU5nSzhBUXNnQUVHSUFtb1FIeUFHSUFJZ0FFRzhBV29nQUVFSWFpQUFMQUQvQVNBQVFkQUJhaUFBUVJCcUlBQkJER3BCNE5BQUVJMEJEUUFnQUVHSUFtb1FJaG9NQVFzTEFrQWdBRUhRQVdvUUNVVU5BQ0FBS0FJTUlnTWdBRUVRYW10Qm53RktEUUFnQUNBRFFRUnFOZ0lNSUFNZ0FDZ0NDRFlDQUFzZ0JTQUNJQUFvQXJ3QklBUWdCaERHQWpjREFDQUFRZEFCYWlBQVFSQnFJQUFvQWd3Z0JCQXRJQUJCaUFKcUlBQkJnQUpxRUNZRVFDQUVJQVFvQWdCQkFuSTJBZ0FMSUFBb0FvZ0NJUUlnQVJBS0dpQUFRZEFCYWhBS0dpQUFRWkFDYWlRQUlBSUxKUUFnQUNnQ0JCb2dBQ0FBS0FJRVFiVi9jVFlDQkNBQUlBQW9BZ1JCQ0hJMkFnUWdBQXVTQXdFQmZ5TUFRWkFDYXlJQUpBQWdBQ0FDTmdLQUFpQUFJQUUyQW9nQ0lBTVFYQ0VHSUFCQjBBRnFJQU1nQUVIL0FXb1FtZ0VnQUVIQUFXb1FFU0lCSUFFUUV4QU1JQUFnQVVFQUVBc2lBallDdkFFZ0FDQUFRUkJxTmdJTUlBQkJBRFlDQ0FOQUFrQWdBRUdJQW1vZ0FFR0FBbW9RTVVVTkFDQUFLQUs4QVNBQkVBa2dBbXBHQkVBZ0FSQUpJUU1nQVNBQkVBbEJBWFFRRENBQklBRVFFeEFNSUFBZ0F5QUJRUUFRQ3lJQ2FqWUN2QUVMSUFCQmlBSnFFQjhnQmlBQ0lBQkJ2QUZxSUFCQkNHb2dBQ3dBL3dFZ0FFSFFBV29nQUVFUWFpQUFRUXhxUWVEUUFCQ05BUTBBSUFCQmlBSnFFQ0lhREFFTEN3SkFJQUJCMEFGcUVBbEZEUUFnQUNnQ0RDSURJQUJCRUdwclFaOEJTZzBBSUFBZ0EwRUVhallDRENBRElBQW9BZ2cyQWdBTElBVWdBaUFBS0FLOEFTQUVJQVlReVFJN0FRQWdBRUhRQVdvZ0FFRVFhaUFBS0FJTUlBUVFMU0FBUVlnQ2FpQUFRWUFDYWhBbUJFQWdCQ0FFS0FJQVFRSnlOZ0lBQ3lBQUtBS0lBaUVDSUFFUUNob2dBRUhRQVdvUUNob2dBRUdRQW1va0FDQUNDNUlEQVFGL0l3QkJrQUpySWdBa0FDQUFJQUkyQW9BQ0lBQWdBVFlDaUFJZ0F4QmNJUVlnQUVIUUFXb2dBeUFBUWY4QmFoQ2FBU0FBUWNBQmFoQVJJZ0VnQVJBVEVBd2dBQ0FCUVFBUUN5SUNOZ0s4QVNBQUlBQkJFR28yQWd3Z0FFRUFOZ0lJQTBBQ1FDQUFRWWdDYWlBQVFZQUNhaEF4UlEwQUlBQW9BcndCSUFFUUNTQUNha1lFUUNBQkVBa2hBeUFCSUFFUUNVRUJkQkFNSUFFZ0FSQVRFQXdnQUNBRElBRkJBQkFMSWdKcU5nSzhBUXNnQUVHSUFtb1FIeUFHSUFJZ0FFRzhBV29nQUVFSWFpQUFMQUQvQVNBQVFkQUJhaUFBUVJCcUlBQkJER3BCNE5BQUVJMEJEUUFnQUVHSUFtb1FJaG9NQVFzTEFrQWdBRUhRQVdvUUNVVU5BQ0FBS0FJTUlnTWdBRUVRYW10Qm53RktEUUFnQUNBRFFRUnFOZ0lNSUFNZ0FDZ0NDRFlDQUFzZ0JTQUNJQUFvQXJ3QklBUWdCaERLQWpjREFDQUFRZEFCYWlBQVFSQnFJQUFvQWd3Z0JCQXRJQUJCaUFKcUlBQkJnQUpxRUNZRVFDQUVJQVFvQWdCQkFuSTJBZ0FMSUFBb0FvZ0NJUUlnQVJBS0dpQUFRZEFCYWhBS0dpQUFRWkFDYWlRQUlBSUxrZ01CQVg4akFFR1FBbXNpQUNRQUlBQWdBallDZ0FJZ0FDQUJOZ0tJQWlBREVGd2hCaUFBUWRBQmFpQURJQUJCL3dGcUVKb0JJQUJCd0FGcUVCRWlBU0FCRUJNUURDQUFJQUZCQUJBTElnSTJBcndCSUFBZ0FFRVFhallDRENBQVFRQTJBZ2dEUUFKQUlBQkJpQUpxSUFCQmdBSnFFREZGRFFBZ0FDZ0N2QUVnQVJBSklBSnFSZ1JBSUFFUUNTRURJQUVnQVJBSlFRRjBFQXdnQVNBQkVCTVFEQ0FBSUFNZ0FVRUFFQXNpQW1vMkFyd0JDeUFBUVlnQ2FoQWZJQVlnQWlBQVFid0JhaUFBUVFocUlBQXNBUDhCSUFCQjBBRnFJQUJCRUdvZ0FFRU1ha0hnMEFBUWpRRU5BQ0FBUVlnQ2FoQWlHZ3dCQ3dzQ1FDQUFRZEFCYWhBSlJRMEFJQUFvQWd3aUF5QUFRUkJxYTBHZkFVb05BQ0FBSUFOQkJHbzJBZ3dnQXlBQUtBSUlOZ0lBQ3lBRklBSWdBQ2dDdkFFZ0JDQUdFTXNDTmdJQUlBQkIwQUZxSUFCQkVHb2dBQ2dDRENBRUVDMGdBRUdJQW1vZ0FFR0FBbW9RSmdSQUlBUWdCQ2dDQUVFQ2NqWUNBQXNnQUNnQ2lBSWhBaUFCRUFvYUlBQkIwQUZxRUFvYUlBQkJrQUpxSkFBZ0FndlZCUUVJZnlNQVFkQUJheUlHSkFBZ0F4QVpJUWNnQmlBQ05nSzhBU0FHSUFjMkFyZ0JRYmVwbXVaOFFlbjM4dko1SUFWQkVFWWJRZW4zOHZKNUlBTkJJRVliSVFzZ0JrRWdhaUVNQTBCQnl2Zm05d0loQWdOQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUNBQ1FidlRxYkI5VEFSQUlBSkJnc09vam54TUJFQWdBa0huK0llNWVFWU5BaUFDUWRTMytzQjRSZzBGSUFKQjZmZnk4bmxIRFFwQmc4T29qbndoQWtFQUlRY01DZ3NnQWtHRHc2aU9mRVlOQnlBQ1FZNkZzdVI4UmcwRklBSkJ0Nm1hNW54SERRa2dCaUFHUWFnQmFpSUNOZ0xBQVNBR0tBTEFBUm9nQWlBR0tBSzRBUkJVR2tHT2hiTGtmQ0VDUVFBaENBd0pDeUFDUVltQ3RPNENTZzBCSUFKQnZOT3BzSDFHRFFJZ0FrSFM0N3lTQWtZTkJTQUNRZVcvK0o4Q1J3MElJQVpCcUFGcUVBb2FJQVlvQXNBQkdndEJpb0swN2dJaEFnd0hDeUFDUWNyMzV2Y0NSd1JBSUFKQnBzZlZwZ1JHRFFZZ0FrR0tnclR1QWtjTkJ5QUdLQUs0QVJBUUlBWkIwQUZxSkFBUEN5QUdJQW8yQXNRQlFkUzMrc0I0UWJ6VHFiQjlJQVlvQXNRQklBTklHeUVDREFZTFFjU0JBU0FGTmdJQUlBQWdBU0FFSUFZb0FyZ0JJQU1RNWdFZ0N5RUNEQVVMSUFZb0FyZ0JJQVlvQXNRQmFpQUdLQUs4QVNBR0tBTEVBV290QUFBNkFBQWdCaWdDeEFGQkFXb2hDZ3dGQ3lBR0lBZzJBc2dCUWRManZKSUNRZVcvK0o4Q0lBWW9Bc2dCSUFWSUd5RUNEQU1MSUFaQkdHb2lEUkRNQWlFQ0lBd1F3Z0loQ0NBR1FRaHFJZ2tnQmtHb0FXb2dCaWdDeUFGQkFYUVF3QUlnQ0NBSkVMMENJQWtRQ2hvZ0RTQUpFUDBDSUFZb0FzZ0JRYUNCQVdvZ0JpZ0NDRG9BQUNBQ0VJb0JHaUFHS0FMSUFVRUJhaUVJUVk2RnN1UjhJUUlNQWdzZ0JpQUhOZ0xNQVVHbXg5V21CRUhuK0llNWVDQUdLQUxNQVNBRlNCc2hBZ3dCQ3lBR0tBTE1BVUdnZ1FGcUlBWW9BcmdCSUFZb0Fzd0JhaTBBQURvQUFDQUdLQUxNQVVFQmFpRUhRWVBEcUk1OElRSU1BQXNBQ3dBTDdBRUJBWDhqQUVFZ2F5SUdKQUFnQmlBQk5nSVlBa0FnQXlnQ0JFRUJjVVVFUUNBR1FYODJBZ0FnQmlBQUlBRWdBaUFESUFRZ0JpQUFLQUlBS0FJUUVRVUFJZ0UyQWhnQ1FBSkFBa0FnQmlnQ0FBNENBQUVDQ3lBRlFRQTZBQUFNQXdzZ0JVRUJPZ0FBREFJTElBVkJBVG9BQUNBRVFRUTJBZ0FNQVFzZ0JpQURFQThnQmhBeUlRRWdCaEFPSUFZZ0F4QVBJQVlRamdFaEFDQUdFQTRnQmlBQUVFc2dCa0VNY2lBQUVFb2dCU0FHUVJocUlnTWdBaUFHSUFNZ0FTQUVRUUVRdEFFZ0JrWTZBQUFnQmlnQ0dDRUJBMEFnQTBFTWF4QUtJZ01nQmtjTkFBc0xJQVpCSUdva0FDQUJDMEFCQVg5QkFDRUFBMzhnQVNBQ1JnUi9JQUFGSUFFb0FnQWdBRUVFZEdvaUFFR0FnSUNBZjNFaUEwRVlkaUFEY2lBQWN5RUFJQUZCQkdvaEFRd0JDd3NMR3dBakFFRVFheUlCSkFBZ0FDQUNJQU1RemdJZ0FVRVFhaVFBQzFRQkFuOENRQU5BSUFNZ0JFY0VRRUYvSVFBZ0FTQUNSZzBDSUFFb0FnQWlCU0FES0FJQUlnWklEUUlnQlNBR1NnUkFRUUVQQlNBRFFRUnFJUU1nQVVFRWFpRUJEQUlMQUFzTElBRWdBa2NoQUFzZ0FBdEFBUUYvUVFBaEFBTi9JQUVnQWtZRWZ5QUFCU0FCTEFBQUlBQkJCSFJxSWdCQmdJQ0FnSDl4SWdOQkdIWWdBM0lnQUhNaEFDQUJRUUZxSVFFTUFRc0xDL2NCQVFOL0lBQkZCRUJCd0lFQktBSUFJUUFqQUVFZ2F5SUVKQUJCZ0lFQklBQVF2Z0lpQlFSL0lBUWdBeWtBQURjREVDQUVJQU1wQUFnM0F4Z2dBZ1JBQTBBZ0JTQUVRUkJxSUFRUXB3RWdBa0VRSUFKQkVFa2JJUU5CQUNFQUEwQWdBQ0FCYWlJR0lBWXRBQUFnQUNBRWFpMEFBSE02QUFBZ0FFRUJhaUlBSUFOSERRQUxJQUlnQTJzaEFpQUJJQU5xSVFGQkR5RUFBMEFDUUNBQUlnTWdCRUVRYW1vaUFDQUFMUUFBUVFGcUlnQTZBQUFnQUVIL0FYRU5BQ0FEUVFGcklRQWdBdzBCQ3dzZ0FnMEFDd3NnQlJBUVFRQUZRWDhMR2lBRVFTQnFKQUFQQzBHZ2dRRkJ4SUVCS0FJQUlBTWdBU0FDRU9ZQkN4c0FJd0JCRUdzaUFTUUFJQUFnQWlBREVQTUNJQUZCRUdva0FBdGVBUU4vSUFFZ0JDQURhMm9oQlFKQUEwQWdBeUFFUndSQVFYOGhBQ0FCSUFKR0RRSWdBU3dBQUNJR0lBTXNBQUFpQjBnTkFpQUdJQWRLQkVCQkFROEZJQU5CQVdvaEF5QUJRUUZxSVFFTUFnc0FDd3NnQWlBRlJ5RUFDeUFBQzZrQkFRUi9JQUFvQWxRaUF5Z0NCQ0lGSUFBb0FoUWdBQ2dDSENJR2F5SUVJQVFnQlVzYklnUUVRQ0FES0FJQUlBWWdCQkJDR2lBRElBTW9BZ0FnQkdvMkFnQWdBeUFES0FJRUlBUnJJZ1UyQWdRTElBTW9BZ0FoQkNBRklBSWdBaUFGU3hzaUJRUkFJQVFnQVNBRkVFSWFJQU1nQXlnQ0FDQUZhaUlFTmdJQUlBTWdBeWdDQkNBRmF6WUNCQXNnQkVFQU9nQUFJQUFnQUNnQ0xDSUJOZ0ljSUFBZ0FUWUNGQ0FDQ3lrQUlBRWdBU2dDQUVFSGFrRjRjU0lCUVJCcU5nSUFJQUFnQVNrREFDQUJLUU1JRU4wQk9RTUFDN1FZQXhKL0FYd0NmaU1BUWJBRWF5SUxKQUFnQzBFQU5nSXNBa0FnQWIwaUdVSUFVd1JBUVFFaEVFSDVHaUVUSUFHYUlnRzlJUmtNQVFzZ0JFR0FFSEVFUUVFQklSQkIvQm9oRXd3QkMwSC9Ha0g2R2lBRVFRRnhJaEFiSVJNZ0VFVWhGQXNDUUNBWlFvQ0FnSUNBZ0lENC93Q0RRb0NBZ0lDQWdJRDQvd0JSQkVBZ0FFRWdJQUlnRUVFRGFpSURJQVJCLy85N2NSQXVJQUFnRXlBUUVDb2dBRUhISEVHQUhpQUZRU0J4SWdVYlFlb2NRWlllSUFVYklBRWdBV0liUVFNUUtpQUFRU0FnQWlBRElBUkJnTUFBY3hBdUlBSWdBeUFDSUFOS0d5RUpEQUVMSUF0QkVHb2hFUUpBQW44Q1FDQUJJQXRCTEdvUTNRSWlBU0FCb0NJQlJBQUFBQUFBQUFBQVlnUkFJQXNnQ3lnQ0xDSUdRUUZyTmdJc0lBVkJJSElpRGtIaEFFY05BUXdEQ3lBRlFTQnlJZzVCNFFCR0RRSWdDeWdDTENFS1FRWWdBeUFEUVFCSUd3d0JDeUFMSUFaQkhXc2lDallDTENBQlJBQUFBQUFBQUxCQm9pRUJRUVlnQXlBRFFRQklHd3NoRENBTFFUQnFJQXRCMEFKcUlBcEJBRWdiSWcwaEJ3TkFJQWNDZnlBQlJBQUFBQUFBQVBCQll5QUJSQUFBQUFBQUFBQUFabkVFUUNBQnF3d0JDMEVBQ3lJRE5nSUFJQWRCQkdvaEJ5QUJJQU80b1VRQUFBQUFaYzNOUWFJaUFVUUFBQUFBQUFBQUFHSU5BQXNDUUNBS1FRQk1CRUFnQ2lFRElBY2hCaUFOSVFnTUFRc2dEU0VJSUFvaEF3TkFJQU5CSFNBRFFSMUlHeUVEQWtBZ0IwRUVheUlHSUFoSkRRQWdBNjBoR2tJQUlSa0RRQ0FHSUJsQy8vLy8vdytESUFZMUFnQWdHb1o4SWhrZ0dVS0FsT3ZjQTRBaUdVS0FsT3ZjQTM1OVBnSUFJQVpCQkdzaUJpQUlUdzBBQ3lBWnB5SUdSUTBBSUFoQkJHc2lDQ0FHTmdJQUN3TkFJQWdnQnlJR1NRUkFJQVpCQkdzaUJ5Z0NBRVVOQVFzTElBc2dDeWdDTENBRGF5SUROZ0lzSUFZaEJ5QURRUUJLRFFBTEN5QU1RUmxxUVFsdUlRY2dBMEVBU0FSQUlBZEJBV29oRWlBT1FlWUFSaUVWQTBCQkFDQURheUlEUVFrZ0EwRUpTQnNoQ1FKQUlBWWdDRXNFUUVHQWxPdmNBeUFKZGlFV1FYOGdDWFJCZjNNaEQwRUFJUU1nQ0NFSEEwQWdCeUFESUFjb0FnQWlGeUFKZG1vMkFnQWdEeUFYY1NBV2JDRURJQWRCQkdvaUJ5QUdTUTBBQ3lBSUtBSUFJUWNnQTBVTkFTQUdJQU0yQWdBZ0JrRUVhaUVHREFFTElBZ29BZ0FoQndzZ0N5QUxLQUlzSUFscUlnTTJBaXdnRFNBSUlBZEZRUUowYWlJSUlCVWJJZ2NnRWtFQ2RHb2dCaUFHSUFkclFRSjFJQkpLR3lFR0lBTkJBRWdOQUFzTFFRQWhBd0pBSUFZZ0NFME5BQ0FOSUFoclFRSjFRUWxzSVFOQkNpRUhJQWdvQWdBaUNVRUtTUTBBQTBBZ0EwRUJhaUVESUFrZ0IwRUtiQ0lIVHcwQUN3c2dERUVBSUFNZ0RrSG1BRVliYXlBT1FlY0FSaUFNUVFCSGNXc2lCeUFHSUExclFRSjFRUWxzUVFsclNBUkFRUVJCcEFJZ0NrRUFTQnNnQzJvZ0IwR0F5QUJxSWdsQkNXMGlEMEVDZEdwQjBCOXJJUXBCQ2lFSElBa2dEMEVKYkdzaUNVRUhUQVJBQTBBZ0IwRUtiQ0VISUFsQkFXb2lDVUVJUncwQUN3c0NRQ0FLS0FJQUloSWdFaUFIYmlJVklBZHNheUlKUlNBS1FRUnFJZzhnQmtaeERRQUNRQ0FWUVFGeFJRUkFSQUFBQUFBQUFFQkRJUUVnQjBHQWxPdmNBMGNnQ0NBS1QzSU5BU0FLUVFSckxRQUFRUUZ4UlEwQkMwUUJBQUFBQUFCQVF5RUJDMFFBQUFBQUFBRGdQMFFBQUFBQUFBRHdQMFFBQUFBQUFBRDRQeUFHSUE5R0cwUUFBQUFBQUFENFB5QUpJQWRCQVhZaUQwWWJJQWtnRDBrYklSZ0NRQ0FVRFFBZ0V5MEFBRUV0UncwQUlCaWFJUmdnQVpvaEFRc2dDaUFTSUFscklnazJBZ0FnQVNBWW9DQUJZUTBBSUFvZ0J5QUphaUlETmdJQUlBTkJnSlRyM0FOUEJFQURRQ0FLUVFBMkFnQWdDQ0FLUVFScklncExCRUFnQ0VFRWF5SUlRUUEyQWdBTElBb2dDaWdDQUVFQmFpSUROZ0lBSUFOQi81UHIzQU5MRFFBTEN5QU5JQWhyUVFKMVFRbHNJUU5CQ2lFSElBZ29BZ0FpQ1VFS1NRMEFBMEFnQTBFQmFpRURJQWtnQjBFS2JDSUhUdzBBQ3dzZ0NrRUVhaUlISUFZZ0JpQUhTeHNoQmdzRFFDQUdJZ2NnQ0UwaUNVVUVRQ0FIUVFScklnWW9BZ0JGRFFFTEN3SkFJQTVCNXdCSEJFQWdCRUVJY1NFS0RBRUxJQU5CZjNOQmZ5QU1RUUVnREJzaUJpQURTaUFEUVh0S2NTSUtHeUFHYWlFTVFYOUJmaUFLR3lBRmFpRUZJQVJCQ0hFaUNnMEFRWGNoQmdKQUlBa05BQ0FIUVFScktBSUFJZzVGRFFCQkNpRUpRUUFoQmlBT1FRcHdEUUFEUUNBR0lncEJBV29oQmlBT0lBbEJDbXdpQ1hCRkRRQUxJQXBCZjNNaEJnc2dCeUFOYTBFQ2RVRUpiQ0VKSUFWQlgzRkJ4Z0JHQkVCQkFDRUtJQXdnQmlBSmFrRUpheUlHUVFBZ0JrRUFTaHNpQmlBR0lBeEtHeUVNREFFTFFRQWhDaUFNSUFNZ0NXb2dCbXBCQ1dzaUJrRUFJQVpCQUVvYklnWWdCaUFNU2hzaERBdEJmeUVKSUF4Qi9mLy8vd2RCL3YvLy93Y2dDaUFNY2lJR0cwb05BU0FNSUFaQkFFY2lFbXBCQVdvaERnSkFJQVZCWDNFaUZFSEdBRVlFUUNBRFFmLy8vLzhISUE1clNnMERJQU5CQUNBRFFRQktHeUVHREFFTElCRWdBeUFEUVI5MUlnWnFJQVp6clNBUkVJOEJJZ1pyUVFGTUJFQURRQ0FHUVFGcklnWkJNRG9BQUNBUklBWnJRUUpJRFFBTEN5QUdRUUpySWc4Z0JUb0FBQ0FHUVFGclFTMUJLeUFEUVFCSUd6b0FBQ0FSSUE5cklnWkIvLy8vL3djZ0RtdEtEUUlMSUFZZ0Rtb2lBeUFRUWYvLy8vOEhjMG9OQVNBQVFTQWdBaUFESUJCcUlnVWdCQkF1SUFBZ0V5QVFFQ29nQUVFd0lBSWdCU0FFUVlDQUJITVFMZ0pBQWtBQ1FDQVVRY1lBUmdSQUlBdEJFR29pQmtFSWNpRURJQVpCQ1hJaENpQU5JQWdnQ0NBTlN4c2lDU0VJQTBBZ0NEVUNBQ0FLRUk4QklRWUNRQ0FJSUFsSEJFQWdCaUFMUVJCcVRRMEJBMEFnQmtFQmF5SUdRVEE2QUFBZ0JpQUxRUkJxU3cwQUN3d0JDeUFHSUFwSERRQWdDMEV3T2dBWUlBTWhCZ3NnQUNBR0lBb2dCbXNRS2lBSVFRUnFJZ2dnRFUwTkFBdEJBQ0VHSUJKRkRRSWdBRUgrSGtFQkVDb2dERUVBVENBSElBaE5jZzBCQTBBZ0NEVUNBQ0FLRUk4QklnWWdDMEVRYWtzRVFBTkFJQVpCQVdzaUJrRXdPZ0FBSUFZZ0MwRVFha3NOQUFzTElBQWdCaUFNUVFrZ0RFRUpTQnNRS2lBTVFRbHJJUVlnQ0VFRWFpSUlJQWRQRFFNZ0RFRUpTaUVESUFZaERDQUREUUFMREFJTEFrQWdERUVBU0EwQUlBY2dDRUVFYWlBSElBaExHeUVKSUF0QkVHb2lBMEVKY2lFTklBTkJDSEloQXlBSUlRY0RRQ0FOSUFjMUFnQWdEUkNQQVNJR1JnUkFJQXRCTURvQUdDQURJUVlMQWtBZ0J5QUlSd1JBSUFZZ0MwRVFhazBOQVFOQUlBWkJBV3NpQmtFd09nQUFJQVlnQzBFUWFrc05BQXNNQVFzZ0FDQUdRUUVRS2lBR1FRRnFJUVpCQUNBTVFRQk1JQW9iRFFBZ0FFSCtIa0VCRUNvTElBQWdCaUFOSUFacklnWWdEQ0FHSUF4SUd4QXFJQXdnQm1zaERDQUhRUVJxSWdjZ0NVOE5BU0FNUVFCT0RRQUxDeUFBUVRBZ0RFRVNha0VTUVFBUUxpQUFJQThnRVNBUGF4QXFEQUlMSUF3aEJnc2dBRUV3SUFaQkNXcEJDVUVBRUM0TElBQkJJQ0FDSUFVZ0JFR0F3QUJ6RUM0Z0FpQUZJQUlnQlVvYklRa01BUXNnRXlBRlFScDBRUjkxUVFseGFpRU1Ba0FnQTBFTFN3MEFRUXdnQTJzaEJrUUFBQUFBQUFBd1FDRVlBMEFnR0VRQUFBQUFBQUF3UUtJaEdDQUdRUUZySWdZTkFBc2dEQzBBQUVFdFJnUkFJQmdnQVpvZ0dLR2dtaUVCREFFTElBRWdHS0FnR0tFaEFRc2dFU0FMS0FJc0lnWWdCa0VmZFNJR2FpQUdjNjBnRVJDUEFTSUdSZ1JBSUF0Qk1Eb0FEeUFMUVE5cUlRWUxJQkJCQW5JaENpQUZRU0J4SVFnZ0N5Z0NMQ0VISUFaQkFtc2lEU0FGUVE5cU9nQUFJQVpCQVd0QkxVRXJJQWRCQUVnYk9nQUFJQVJCQ0hFaEJpQUxRUkJxSVFjRFFDQUhJZ1VDZnlBQm1VUUFBQUFBQUFEZ1FXTUVRQ0FCcWd3QkMwR0FnSUNBZUFzaUIwR2dNbW90QUFBZ0NISTZBQUJCQVNBRFFRQktJQUVnQjdlaFJBQUFBQUFBQURCQW9pSUJSQUFBQUFBQUFBQUFZbklnQmh0RklBVkJBV29pQnlBTFFSQnFhMEVCUjNKRkJFQWdCVUV1T2dBQklBVkJBbW9oQndzZ0FVUUFBQUFBQUFBQUFHSU5BQXRCZnlFSlFmMy8vLzhISUFvZ0VTQU5heUlGYWlJR2F5QURTQTBBSUFCQklDQUNJQVlDZndKQUlBTkZEUUFnQnlBTFFSQnFheUlJUVFKcklBTk9EUUFnQTBFQ2Fnd0JDeUFISUF0QkVHcHJJZ2dMSWdkcUlnTWdCQkF1SUFBZ0RDQUtFQ29nQUVFd0lBSWdBeUFFUVlDQUJITVFMaUFBSUF0QkVHb2dDQkFxSUFCQk1DQUhJQWhyUVFCQkFCQXVJQUFnRFNBRkVDb2dBRUVnSUFJZ0F5QUVRWURBQUhNUUxpQUNJQU1nQWlBRFNoc2hDUXNnQzBHd0JHb2tBQ0FKQzFRQkFuOGdBU0FBS0FKVUlnRWdBVUVBSUFKQmdBSnFJZ01RM0FFaUJDQUJheUFESUFRYklnTWdBaUFDSUFOTEd5SUNFRUlhSUFBZ0FTQURhaUlETmdKVUlBQWdBellDQ0NBQUlBRWdBbW8yQWdRZ0Fnc0pBQ0FBRU9FQkVCQUxFd0FnQUNBQUtBSUFRUXhyS0FJQWFoRGlBUXNUQUNBQUlBQW9BZ0JCREdzb0FnQnFFSW9CQ3dvQUlBQkJDR3NRNGdFTENnQWdBRUVJYXhDS0FRc2FBQ0FBSUFFZ0Fpa0RDRUVBSUFNZ0FTZ0NBQ2dDRUJFV0FBc0pBQ0FBRU5BQkVCQUxsQUlDQVg4RGZpQUJLQUlZSUFFb0FpeExCRUFnQVNBQktBSVlOZ0lzQzBKL0lRZ0NRQ0FFUVJoeElnVkZJQVZCR0VZZ0EwRUJSbkZ5RFFBZ0FTZ0NMQ0lGQkVBZ0JTQUJRU0JxRUExcnJDRUdDd0pBQWtBQ1FDQUREZ01DQUFFREN5QUVRUWh4QkVBZ0FTZ0NEQ0FCS0FJSWE2d2hCd3dDQ3lBQktBSVlJQUVvQWhScnJDRUhEQUVMSUFZaEJ3c2dBaUFIZkNJQ1FnQlRJQUlnQmxWeURRQWdCRUVJY1NFREFrQWdBbEFOQUNBREJFQWdBU2dDREVVTkFnc2dCRUVRY1VVTkFDQUJLQUlZUlEwQkN5QURCRUFnQVNBQktBSUlJQUVvQWdnZ0FxZHFJQUVvQWl3UW13RUxJQVJCRUhFRVFDQUJJQUVvQWhRZ0FTZ0NIQkQyQWlBQklBS25FUFVDQ3lBQ0lRZ0xJQUFnQ0JDN0FRdURBZ0VKZnlNQVFSQnJJZ01rQUFKL0lBRkJmeEJlUlFSQUlBQW9BZ3doQkNBQUtBSUlJUVVnQUNnQ0dDQUFLQUljUmdSQVFYOGdBQzBBTUVFUWNVVU5BaG9nQUNnQ0dDRUdJQUFvQWhRaEJ5QUFLQUlzSVFnZ0FDZ0NGQ0VKSUFCQklHb2lBa0VBRUtFQklBSWdBaEFURUF3Z0FDQUNFQTBpQ2lBQ0VBa2dDbW9ROWdJZ0FDQUdJQWRyRVBVQ0lBQWdBQ2dDRkNBSUlBbHJhallDTEFzZ0F5QUFLQUlZUVFGcU5nSU1JQUFnQTBFTWFpQUFRU3hxRUhZb0FnQTJBaXdnQUMwQU1FRUljUVJBSUFBZ0FFRWdhaEFOSWdJZ0FpQUVJQVZyYWlBQUtBSXNFSnNCQ3lBQUlBRVFuQUVRL2dJTUFRc2dBUkR5QWdzaEFDQURRUkJxSkFBZ0FBdWdBUUVCZnlBQUtBSVlJQUFvQWl4TEJFQWdBQ0FBS0FJWU5nSXNDd0pBSUFBb0FnZ2dBQ2dDREU4TkFDQUJRWDhRWGdSQUlBQWdBQ2dDQ0NBQUtBSU1RUUZySUFBb0Fpd1Ftd0VnQVJEeUFnOExJQUF0QURCQkVIRkZCRUFnQVJDY0FTQUFLQUlNUVFGckxBQUFFRjVGRFFFTElBQWdBQ2dDQ0NBQUtBSU1RUUZySUFBb0Fpd1Ftd0VnQVJDY0FTRUNJQUFvQWd3Z0Fqb0FBQ0FCRHd0QmZ3dGtBQ0FBS0FJWUlBQW9BaXhMQkVBZ0FDQUFLQUlZTmdJc0N3SkFJQUF0QURCQkNIRkZEUUFnQUNnQ0VDQUFLQUlzU1FSQUlBQWdBQ2dDQ0NBQUtBSU1JQUFvQWl3UW13RUxJQUFvQWd3Z0FDZ0NFRThOQUNBQUtBSU1MQUFBRUdVUEMwRi9Dd2NBSUFBb0FnZ0xFd0FnQUNBQUtBSUFRUXhyS0FJQWFoRGpBUXNLQUNBQVFRaHJFT01CQ3hNQUlBQWdBQ2dDQUVFTWF5Z0NBR29RdUFFTENnQWdBRUVJYXhDNEFRc1RBQ0FBSUFBb0FnQkJER3NvQWdCcUVQa0NDeE1BSUFBZ0FDZ0NBRUVNYXlnQ0FHb1E1QUVMQ1FCQnlJRUJFQW9hQ3hNQUlBQWdBQ2dDQUVFTWF5Z0NBR29RaHdNTEV3QWdBQ0FBS0FJQVFReHJLQUlBYWhEbEFRdXRBUUVFZnlNQVFSQnJJZ1VrQUFOQUFrQWdBaUFFVEEwQUlBQW9BaGdpQXlBQUtBSWNJZ1pQQkVBZ0FDQUJMQUFBRUdVZ0FDZ0NBQ2dDTkJFQ0FFRi9SZzBCSUFSQkFXb2hCQ0FCUVFGcUlRRUZJQVVnQmlBRGF6WUNEQ0FGSUFJZ0JHczJBZ2dnQlVFTWFpQUZRUWhxRUxvQklRTWdBQ2dDR0NBQklBTW9BZ0FpQXhCVklBQWdBeUFBS0FJWWFqWUNHQ0FESUFScUlRUWdBU0FEYWlFQkN3d0JDd3NnQlVFUWFpUUFJQVFMQy9KaUlnQkJnQWdMc3lXbFkyUEdoSHg4K0psM2QrNk5lM3YyRGZMeS83MXJhOWF4YjIvZVZNWEZrVkF3TUdBREFRRUNxV2Ruem4wcksxWVovdjduWXRmWHRlYXJxMDJhZG5ic1JjcktqNTJDZ2g5QXljbUpoMzE5K2hYNit1L3JXVm15eVVkSGpndnc4UHZzcmExQlo5VFVzLzJpb2wvcXI2OUZ2NXljSS9la3BGT1djbkxrVzhEQW04SzN0M1VjL2YzaHJwT1RQV29tSmt4YU5qWnNRVDgvZmdMMzkvVlB6TXlEWERRMGFQU2xwVkUwNWVYUkNQSHgrWk54Y2VKejJOaXJVekV4WWo4VkZTb01CQVFJVXNmSGxXVWpJMFpldzhPZEtCZ1lNS0dXbGpjUEJRVUt0WnFhTHdrSEJ3NDJFaElrbTRDQUd6M2k0dDhtNit2TmFTY25UczJ5c24rZmRYWHFHd2tKRXA2RGd4MTBMQ3hZTGhvYU5DMGJHemF5Ym03YzdscGF0UHVnb0Z2MlVsS2tUVHM3ZG1IVzFyZk9zN045ZXlrcFVqN2o0OTF4THk5ZWw0U0VFL1ZUVTZabzBkRzVBQUFBQUN6dDdjRmdJQ0JBSC96ODQ4aXhzWG50VzF1MnZtcHExRWJMeTQzWnZyNW5Tems1Y3Q1S1NwVFVURXlZNkZoWXNFclB6NFZyME5DN0t1L3Z4ZVdxcWs4VysvdnR4VU5EaHRkTlRacFZNek5tbElXRkVjOUZSWW9RK2ZucEJnSUNCSUYvZi83d1VGQ2dSRHc4ZUxxZm55WGpxS2hMODFGUm92NmpvMTNBUUVDQWlvK1BCYTJTa2orOG5aMGhTRGc0Y0FUMTlmSGZ2THhqd2JhMmQzWGEycTlqSVNGQ01CQVFJQnIvLytVTzgvUDliZExTdjB6TnpZRVVEQXdZTlJNVEppL3M3TVBoWDErK29wZVhOY3hFUklnNUZ4Y3VWOFRFay9LbnAxV0Nmbjc4UnowOWVxeGtaTWpuWFYyNkt4a1pNcFZ6YythZ1lHREFtSUdCR2RGUFQ1NS8zTnlqWmlJaVJINHFLbFNya0pBN2c0aUlDOHBHUm93cDd1N0gwN2k0YXp3VUZDaDUzdDZuNGw1ZXZCMExDeFoyMjl1dE8rRGcyMVl5TW1ST09qcDBIZ29LRk50SlNaSUtCZ1lNYkNRa1NPUmNYTGhkd3NLZmJ0UFR2ZStzckVPbVltTEVxSkdST2FTVmxURTM1T1RUaTNsNThqTG41OVZEeU1pTFdUYzNicmR0YmRxTWpZMEJaTlhWc2RKT1RwemdxYWxKdEd4czJQcFdWcXdIOVBUekplcnF6NjlsWmNxT2VucjA2YTZ1UnhnSUNCRFZ1cnB2aUhoNDhHOGxKVXB5TGk1Y0pCd2NPUEdtcGxmSHRMUnpVY2JHbHlQbzZNdDgzZDJobkhSMDZDRWZIejdkUzB1VzNMMjlZWWFMaXcyRmlvb1BrSEJ3NEVJK1BuekV0YlZ4cW1abXpOaElTSkFGQXdNR0FmYjI5eElPRGh5allXSENYelUxYXZsWFY2N1F1Ymxwa1lhR0YxakJ3WmtuSFIwNnVaNmVKempoNGRrVCtQanJzNWlZS3pNUkVTSzdhV25TY05uWnFZbU9qZ2VubEpRenRwdWJMU0llSGp5U2g0Y1ZJT25weVVuT3pvZi9WVldxZUNnb1VIcmYzNldQakl3RCtLR2hXWUNKaVFrWERRMGEycisvWlRIbTV0ZkdRa0tFdUdobzBNTkJRWUt3bVprcGR5MHRXaEVQRHg3THNMQjcvRlJVcU5hN3UyMDZGaFlzVUtmMFVWTmxRWDdEcEJjYWxsNG5Pc3RycXp2eFJaMGZxMWo2ckpNRDQwdFYrakFnOW0xMnJaRjJ6SWdsVEFMMS9OZmxUOWZMS3NXQVJEVW1qNk5pdFVsYXNkNW5HN29sbUE3cVJlSEEvbDBDZFMvREV2Qk1nYU9YUm8zRytkTnI1MStQQTVXY2toWHJlbTIvMmxsU2xTMkR2dFRUSVhSWUtXbmdTVVRJeVk1cWljSjFlSG1POUdzK1dKbmRjYmtudGsvaHZoZXRpUEJtckNESnREck9mUmhLMzJPQ01ScmxZRE5SbDBWL1UyTGdkMlN4aEs1cnV4eWdnZjZVS3dqNVdHaEljQm45UlkrSGJONlV0L2g3VWlQVGM2dmlBa3R5VjQ4ZjR5cXJWV1lIS091eUE4SzFMNXA3eFlhbENEZlQ4b2NvTUxLbHZ5TzZhZ01DWElJVzdTc2N6NHFTdEhtbjhQSUg4NkhpYVU3TjlOcGwxYjRGQmg5aU5OR0svcWJFblZNdU5LQlY4Nkl5NFlvRmRldjJwRG5zZ3d1cTcyQkFCcDl4WGxFUWJyMzVpaUUrUFFiZGxxNEZQdDFHdmVaTnRZMVVrUVZkeEhGdjFBWUUveFZRWUNUN21CbVg2YjNXekVOQWlYZWUyV2U5UXVpd2lJdUpCemhiR2VmYjdzaDVSd3A4b2VrUFFuekpIb1Q0QUFBQUFJT0dnQWxJN1NzeXJIQVJIazV5V216Ny93NzlWamlGRHg3VnJqMG5PUzAyWk5rUENpR21YR2pSVkZ1Yk9pNDJKTEZuQ2d3UDUxZVQwcGJ1dEo2Um14dFB4Y0NBb2lEY1lXbExkMW9XR2hJY0NycVQ0dVVxb01CRDRDSThIUmNiRWdzTkNRNnR4NHZ5dWFpMkxjaXBIaFNGR2ZGWFRBZDFyN3ZkbWU3OVlIK2pueVlCOTd6MWNsekZPMlpFTkg3N1czWXBRNHZjeGlQTGFQenR0bVB4NUxqSzNESFhFSVZqUWtBaWx4TWdFY2FFZlNSS2hmZzl1OUlSTXZtdWJhRXB4MHN2bmgzek1MTGM3RktHRGREandYZHNGck1ybWJsd3FmcElsQkVpWk9sSHhJejhxQm8vOEtEWUxIMVc3NUF6SXNkT1NZZkIwVGpaL3FMS2pEWUwxSmpQZ2ZXbUtONTZwU2FPdDlxa3Y2MC81SjA2TEEyU2VGQ2J6RjlxWWtaK1ZNSVRqZmJvdU5pUVh2YzVMdld2dzRLK2dGMmZmSlBRYWFrdDFXK3pFaVhQTzVtc3lLZDlHQkJ1WTV6b2U3czcyd2w0SnMzMEdGbHVBYmVhN0tpYVQ0TmxicFhtZnViL3FnalB2Q0htNkJYdjJadm51czQyYjByVUNaL3Exbnl3S2EreXBERXhJejhxTUpTbHhzQm1valUzdkU1MHBzcUMvTERRa09BVjJLY3pTcGdFOGZmYTdFRU9VTTEvTC9hUkY0M1dUWFpOc085RFZFMnF6TjhFbHVUanRkR2VHNGhxVExnZkxNRi9VV1ZHQk9wZW5WMDFqQUZ6ZElmNkxrRUwrMW9kWjdOUzB0dVNNMVlRNlJOSDFtMk1ZZGVhZWd5aE40NFUrRm1KUEJQcjdpZXB6alhKWWJmdDVSemhQTEZIZWxuZjBwdy9jL0pWZWM0VUdMODN4M1BxemZkVFc2cjlYeFJ2UGQrRzIwUjRnZk92eWo3RWFMa3NOQ1E0WDBDanduTERIUllNSmVLOGkwazhLRUdWRGY5eEFhZzUzck1NQ0p6a3ROaVF3VlprWVlUTGUzQzJNdFYwWEd4SVFsZTQwRklKYXRVd05xVTR2MENqbm9IejEvdDg0em1DbXkvL2h6U09RMFRFM3VuTFZIdVVNcWJDSXozdVRKVUxRdnJEVGdndW9XWW8yU1N5ZGx1aVNXMkwwU1Z5K1Baa2htaVlGdFNrWE14ZFpiYVNiSEJJVVAzdHVkcGVGVVpYcDQyZGhKRFlxd0NNdk5NSzkrUllCYml6UlFiUUxCNlB5ajhQQXNHdnZRTUJFNHByT3BFUlFVOW4zT3FYOHMvTzhMVG1jNWFzZENMbnJUV0Y0dmszNkJ4MTMyNUg4UnB4SFNuRmlXKzNZZzZxR0w0Yi9GWStTOGJTZVNDYTI4RCtlTTFhOUIvZHFET0lCOGN4c1JJUVdTZUE3RjlnVVgrcEdiVktEUzNsZXArVHlaenZvT0E3VGE0cTliREk2N3M4ZzFPWllSY3JCSDY2ZDlZbTRXa1VZMVVoREgwQkFnUUlFQ0JBZ0JzMmFXNW1hVzVwZEhrQVJtVmljblZoY25rQVNtRnVkV0Z5ZVFCS2RXeDVBRlJvZFhKelpHRjVBRlIxWlhOa1lYa0FWMlZrYm1WelpHRjVBRk5oZEhWeVpHRjVBRk4xYm1SaGVRQk5iMjVrWVhrQVJuSnBaR0Y1QUUxaGVRQWxiUzhsWkM4bGVRQXRLeUFnSURCWU1IZ0FMVEJZS3pCWUlEQllMVEI0S3pCNElEQjRBRTV2ZGdCVWFIVUFRWFZuZFhOMEFFOWpkQUJUWVhRQVFYQnlBSFpsWTNSdmNnQlBZM1J2WW1WeUFFNXZkbVZ0WW1WeUFGTmxjSFJsYldKbGNnQkVaV05sYldKbGNnQnBiM05mWW1GelpUbzZZMnhsWVhJQVRXRnlBRk5sY0FBbFNUb2xUVG9sVXlBbGNBQlRkVzRBU25WdUFITjBaRG82WlhoalpYQjBhVzl1QUY5ZlkzaGhYMmQxWVhKa1gyRmpjWFZwY21VZ1pHVjBaV04wWldRZ2NtVmpkWEp6YVhabElHbHVhWFJwWVd4cGVtRjBhVzl1QUUxdmJnQnVZVzRBU21GdUFFcDFiQUJzYkFCQmNISnBiQUJHY21rQVRXRnlZMmdBUVhWbkFHbHVaZ0FsTGpCTVpnQWxUR1lBWVd4c2IyTmhkRzl5UEZRK09qcGhiR3h2WTJGMFpTaHphWHBsWDNRZ2Jpa2dKMjRuSUdWNFkyVmxaSE1nYldGNGFXMTFiU0J6ZFhCd2IzSjBaV1FnYzJsNlpRQjBjblZsQUZSMVpRQm1ZV3h6WlFCS2RXNWxBRmRsWkFCRVpXTUFSbVZpQUNWaElDVmlJQ1ZrSUNWSU9pVk5PaVZUSUNWWkFGQlBVMGxZQUNWSU9pVk5PaVZUQUU1QlRnQlFUUUJCVFFCTVExOUJURXdBVEVGT1J3QkpUa1lBUXdBd01USXpORFUyTnpnNUFFTXVWVlJHTFRnQVlYQndYM1l5QUhkbFlsOTJNZ0JCUWtORVJVWkhTRWxLUzB4TlRrOVFVVkpUVkZWV1YxaFpXbUZpWTJSbFptZG9hV3ByYkcxdWIzQnhjbk4wZFhaM2VIbDZNREV5TXpRMU5qYzRPU3N2QUM0QUtHNTFiR3dwQUZCMWNtVWdkbWx5ZEhWaGJDQm1kVzVqZEdsdmJpQmpZV3hzWldRaEFGdG9SVXVjcSs1SHlnVDBCUUFBQUFBQUFBQm9FUUFBQkFBQUFBVUFBQUFHQUFBQUJ3QUFBQWdBQUFBSkFBQUFDZ0FBQUFzQUFBQU1BQUFBRFFBQUFBNEFBQUFQQUFBQUVBQUFBQkVBQUFBSUFBQUFBQUFBQUtBUkFBQVNBQUFBRXdBQUFQai8vLy80Ly8vL29CRUFBQlFBQUFBVkFBQUFBQkFBQUJRUUFBQUVBQUFBQUFBQUFPZ1JBQUFXQUFBQUZ3QUFBUHovLy8vOC8vLy82QkVBQUJnQUFBQVpBQUFBTUJBQUFFUVFBQUFNQUFBQUFBQUFBSUFTQUFBYUFBQUFHd0FBQUFRQUFBRDQvLy8vZ0JJQUFCd0FBQUFkQUFBQTlQLy8vL1QvLy8rQUVnQUFIZ0FBQUI4QUFBQmdFQUFBREJJQUFDQVNBQUEwRWdBQVNCSUFBSWdRQUFCMEVBQUFBQUFBQU9RU0FBQWdBQUFBSVFBQUFBWUFBQUFIQUFBQUlnQUFBQ01BQUFBS0FBQUFDd0FBQUF3QUFBQWtBQUFBRGdBQUFDVUFBQUFRQUFBQUpnQUFBQUFBQUFBb0VRQUFKd0FBQUNnQUFBQk9VM1F6WDE4eU9XSmhjMmxqWDJsdmMwbGpUbE5mTVRGamFHRnlYM1J5WVdsMGMwbGpSVVZGUlFBQUFCZy9BQUQ4RUFBQVdCUUFBRTVUZEROZlh6SXhOV0poYzJsalgzTjBjbVZoYldKMVprbGpUbE5mTVRGamFHRnlYM1J5WVdsMGMwbGpSVVZGUlFBQUFBRHdQZ0FBTkJFQUFFNVRkRE5mWHpJeE0ySmhjMmxqWDJsemRISmxZVzFKWTA1VFh6RXhZMmhoY2w5MGNtRnBkSE5KWTBWRlJVVUFBSFEvQUFCd0VRQUFBQUFBQUFFQUFBQW9FUUFBQS9ULy8wNVRkRE5mWHpJeE0ySmhjMmxqWDI5emRISmxZVzFKWTA1VFh6RXhZMmhoY2w5MGNtRnBkSE5KWTBWRlJVVUFBSFEvQUFDNEVRQUFBQUFBQUFFQUFBQW9FUUFBQS9ULy93d0FBQUFBQUFBQW9CRUFBQklBQUFBVEFBQUE5UC8vLy9ULy8vK2dFUUFBRkFBQUFCVUFBQUFFQUFBQUFBQUFBT2dSQUFBV0FBQUFGd0FBQVB6Ly8vLzgvLy8vNkJFQUFCZ0FBQUFaQUFBQVRsTjBNMTlmTWpFMFltRnphV05mYVc5emRISmxZVzFKWTA1VFh6RXhZMmhoY2w5MGNtRnBkSE5KWTBWRlJVVUFkRDhBQUZBU0FBQURBQUFBQWdBQUFLQVJBQUFDQUFBQTZCRUFBQUlJQUFCT1UzUXpYMTh5TVRWaVlYTnBZMTl6ZEhKcGJtZGlkV1pKWTA1VFh6RXhZMmhoY2w5MGNtRnBkSE5KWTBWRlRsTmZPV0ZzYkc5allYUnZja2xqUlVWRlJRQUFBQmcvQUFDZ0VnQUFhQkVBQUVBQUFBQUFBQUFBS0JRQUFDa0FBQUFxQUFBQU9BQUFBUGovLy84b0ZBQUFLd0FBQUN3QUFBREEvLy8vd1AvLy95Z1VBQUF0QUFBQUxnQUFBUHdTQUFCZ0V3QUFuQk1BQUxBVEFBREVFd0FBMkJNQUFJZ1RBQUIwRXdBQUpCTUFBQkFUQUFCQUFBQUFBQUFBQUlBU0FBQWFBQUFBR3dBQUFEZ0FBQUQ0Ly8vL2dCSUFBQndBQUFBZEFBQUF3UC8vLzhELy8vK0FFZ0FBSGdBQUFCOEFBQUJBQUFBQUFBQUFBS0FSQUFBU0FBQUFFd0FBQU1ELy8vL0EvLy8vb0JFQUFCUUFBQUFWQUFBQU9BQUFBQUFBQUFEb0VRQUFGZ0FBQUJjQUFBREkvLy8veVAvLy8rZ1JBQUFZQUFBQUdRQUFBRTVUZEROZlh6SXhPR0poYzJsalgzTjBjbWx1WjNOMGNtVmhiVWxqVGxOZk1URmphR0Z5WDNSeVlXbDBjMGxqUlVWT1UxODVZV3hzYjJOaGRHOXlTV05GUlVWRkFBQUFBQmcvQUFEZ0V3QUFnQklBQUFBQUFBQllGQUFBTHdBQUFEQUFBQUJPVTNRelgxOHlPR2x2YzE5aVlYTmxSUUFBQVBBK0FBQkVGQUFBMFhTZUFGZWR2U3FBY0ZJUC8vOCtKd29BQUFCa0FBQUE2QU1BQUJBbkFBQ2doZ0VBUUVJUEFJQ1dtQUFBNGZVRkdBQUFBRFVBQUFCeEFBQUFhLy8vLzg3Ny8vK1N2Ly8vQUFBQUFBQUFBQUQvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL0FBRUNBd1FGQmdjSUNmLy8vLy8vLy84S0N3d05EZzhRRVJJVEZCVVdGeGdaR2hzY0hSNGZJQ0VpSS8vLy8vLy8vd29MREEwT0R4QVJFaE1VRlJZWEdCa2FHeHdkSGg4Z0lTSWovLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy93QUJBZ1FIQXdZRkFBQUFBQUFBQUFJQUFNQURBQURBQkFBQXdBVUFBTUFHQUFEQUJ3QUF3QWdBQU1BSkFBREFDZ0FBd0FzQUFNQU1BQURBRFFBQXdBNEFBTUFQQUFEQUVBQUF3QkVBQU1BU0FBREFFd0FBd0JRQUFNQVZBQURBRmdBQXdCY0FBTUFZQUFEQUdRQUF3Qm9BQU1BYkFBREFIQUFBd0IwQUFNQWVBQURBSHdBQXdBQUFBTE1CQUFEREFnQUF3d01BQU1NRUFBRERCUUFBd3dZQUFNTUhBQUREQ0FBQXd3a0FBTU1LQUFEREN3QUF3d3dBQU1NTkFBRFREZ0FBd3c4QUFNTUFBQXk3QVFBTXd3SUFETU1EQUF6REJBQU0yd0FBQUFEZUVnU1ZBQUFBQVAvLy8vLy8vLy8vLy8vLy81QVdBQUFVQUFBQVF5NVZWRVl0T0FCQjRDMExBcVFXQUVHQUxndEhURU5mUTFSWlVFVUFBQUFBVEVOZlRsVk5SVkpKUXdBQVRFTmZWRWxOUlFBQUFBQUFURU5mUTA5TVRFRlVSUUFBVEVOZlRVOU9SVlJCVWxrQVRFTmZUVVZUVTBGSFJWTUFRZEF1QzBFWkFBb0FHUmtaQUFBQUFBVUFBQUFBQUFBSkFBQUFBQXNBQUFBQUFBQUFBQmtBRVFvWkdSa0RDZ2NBQVFBSkN4Z0FBQWtHQ3dBQUN3QUdHUUFBQUJrWkdRQkJvUzhMSVE0QUFBQUFBQUFBQUJrQUNnMFpHUmtBRFFBQUFnQUpEZ0FBQUFrQURnQUFEZ0JCMnk4TEFRd0FRZWN2Q3hVVEFBQUFBQk1BQUFBQUNRd0FBQUFBQUF3QUFBd0FRWlV3Q3dFUUFFR2hNQXNWRHdBQUFBUVBBQUFBQUFrUUFBQUFBQUFRQUFBUUFFSFBNQXNCRWdCQjJ6QUxIaEVBQUFBQUVRQUFBQUFKRWdBQUFBQUFFZ0FBRWdBQUdnQUFBQm9hR2dCQmtqRUxEaG9BQUFBYUdob0FBQUFBQUFBSkFFSERNUXNCRkFCQnp6RUxGUmNBQUFBQUZ3QUFBQUFKRkFBQUFBQUFGQUFBRkFCQi9URUxBUllBUVlreUN5a1ZBQUFBQUJVQUFBQUFDUllBQUFBQUFCWUFBQllBQURBeE1qTTBOVFkzT0RsQlFrTkVSVVpBR2dCQndEUUwvd0VDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FESUFJZ0FpQUNJQUlnQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQVdBRXdBVEFCTUFFd0FUQUJNQUV3QVRBQk1BRXdBVEFCTUFFd0FUQUJNQUkyQWpZQ05nSTJBallDTmdJMkFqWUNOZ0kyQVRBQk1BRXdBVEFCTUFFd0FUQUNOVUkxUWpWQ05VSTFRalZDTVVJeFFqRkNNVUl4UWpGQ01VSXhRakZDTVVJeFFqRkNNVUl4UWpGQ01VSXhRakZDTVVJeFFUQUJNQUV3QVRBQk1BRXdBaldDTllJMWdqV0NOWUkxZ2pHQ01ZSXhnakdDTVlJeGdqR0NNWUl4Z2pHQ01ZSXhnakdDTVlJeGdqR0NNWUl4Z2pHQ01ZRXdBVEFCTUFFd0FJQVFjQTRDd0pRSGdCQjFEd0wrUU1CQUFBQUFnQUFBQU1BQUFBRUFBQUFCUUFBQUFZQUFBQUhBQUFBQ0FBQUFBa0FBQUFLQUFBQUN3QUFBQXdBQUFBTkFBQUFEZ0FBQUE4QUFBQVFBQUFBRVFBQUFCSUFBQUFUQUFBQUZBQUFBQlVBQUFBV0FBQUFGd0FBQUJnQUFBQVpBQUFBR2dBQUFCc0FBQUFjQUFBQUhRQUFBQjRBQUFBZkFBQUFJQUFBQUNFQUFBQWlBQUFBSXdBQUFDUUFBQUFsQUFBQUpnQUFBQ2NBQUFBb0FBQUFLUUFBQUNvQUFBQXJBQUFBTEFBQUFDMEFBQUF1QUFBQUx3QUFBREFBQUFBeEFBQUFNZ0FBQURNQUFBQTBBQUFBTlFBQUFEWUFBQUEzQUFBQU9BQUFBRGtBQUFBNkFBQUFPd0FBQUR3QUFBQTlBQUFBUGdBQUFEOEFBQUJBQUFBQVFRQUFBRUlBQUFCREFBQUFSQUFBQUVVQUFBQkdBQUFBUndBQUFFZ0FBQUJKQUFBQVNnQUFBRXNBQUFCTUFBQUFUUUFBQUU0QUFBQlBBQUFBVUFBQUFGRUFBQUJTQUFBQVV3QUFBRlFBQUFCVkFBQUFWZ0FBQUZjQUFBQllBQUFBV1FBQUFGb0FBQUJiQUFBQVhBQUFBRjBBQUFCZUFBQUFYd0FBQUdBQUFBQkJBQUFBUWdBQUFFTUFBQUJFQUFBQVJRQUFBRVlBQUFCSEFBQUFTQUFBQUVrQUFBQktBQUFBU3dBQUFFd0FBQUJOQUFBQVRnQUFBRThBQUFCUUFBQUFVUUFBQUZJQUFBQlRBQUFBVkFBQUFGVUFBQUJXQUFBQVZ3QUFBRmdBQUFCWkFBQUFXZ0FBQUhzQUFBQjhBQUFBZlFBQUFINEFBQUIvQUVIUXhBQUxBbUFrQUVIa3lBQUwrUU1CQUFBQUFnQUFBQU1BQUFBRUFBQUFCUUFBQUFZQUFBQUhBQUFBQ0FBQUFBa0FBQUFLQUFBQUN3QUFBQXdBQUFBTkFBQUFEZ0FBQUE4QUFBQVFBQUFBRVFBQUFCSUFBQUFUQUFBQUZBQUFBQlVBQUFBV0FBQUFGd0FBQUJnQUFBQVpBQUFBR2dBQUFCc0FBQUFjQUFBQUhRQUFBQjRBQUFBZkFBQUFJQUFBQUNFQUFBQWlBQUFBSXdBQUFDUUFBQUFsQUFBQUpnQUFBQ2NBQUFBb0FBQUFLUUFBQUNvQUFBQXJBQUFBTEFBQUFDMEFBQUF1QUFBQUx3QUFBREFBQUFBeEFBQUFNZ0FBQURNQUFBQTBBQUFBTlFBQUFEWUFBQUEzQUFBQU9BQUFBRGtBQUFBNkFBQUFPd0FBQUR3QUFBQTlBQUFBUGdBQUFEOEFBQUJBQUFBQVlRQUFBR0lBQUFCakFBQUFaQUFBQUdVQUFBQm1BQUFBWndBQUFHZ0FBQUJwQUFBQWFnQUFBR3NBQUFCc0FBQUFiUUFBQUc0QUFBQnZBQUFBY0FBQUFIRUFBQUJ5QUFBQWN3QUFBSFFBQUFCMUFBQUFkZ0FBQUhjQUFBQjRBQUFBZVFBQUFIb0FBQUJiQUFBQVhBQUFBRjBBQUFCZUFBQUFYd0FBQUdBQUFBQmhBQUFBWWdBQUFHTUFBQUJrQUFBQVpRQUFBR1lBQUFCbkFBQUFhQUFBQUdrQUFBQnFBQUFBYXdBQUFHd0FBQUJ0QUFBQWJnQUFBRzhBQUFCd0FBQUFjUUFBQUhJQUFBQnpBQUFBZEFBQUFIVUFBQUIyQUFBQWR3QUFBSGdBQUFCNUFBQUFlZ0FBQUhzQUFBQjhBQUFBZlFBQUFINEFBQUIvQUVIZzBBQUx3UUV3TVRJek5EVTJOemc1WVdKalpHVm1RVUpEUkVWR2VGZ3JMWEJRYVVsdVRnQWxBQUFBQUFBbGNBQUFBQUFsU1RvbFRUb2xVeUFsY0NWSU9pVk5BQUFBSlFBQUFHMEFBQUF2QUFBQUpRQUFBR1FBQUFBdkFBQUFKUUFBQUhrQUFBQWxBQUFBV1FBQUFDMEFBQUFsQUFBQWJRQUFBQzBBQUFBbEFBQUFaQUFBQUNVQUFBQkpBQUFBT2dBQUFDVUFBQUJOQUFBQU9nQUFBQ1VBQUFCVEFBQUFJQUFBQUNVQUFBQndBQUFBQUFBQUFDVUFBQUJJQUFBQU9nQUFBQ1VBQUFCTkFFR3cwZ0FMMlFNbEFBQUFTQUFBQURvQUFBQWxBQUFBVFFBQUFEb0FBQUFsQUFBQVV3QUFBQUFBQUFDMExRQUFSd0FBQUVnQUFBQkpBQUFBQUFBQUFCUXVBQUJLQUFBQVN3QUFBRWtBQUFCTUFBQUFUUUFBQUU0QUFBQlBBQUFBVUFBQUFGRUFBQUJTQUFBQVV3QUFBQUFBQUFCOExRQUFWQUFBQUZVQUFBQkpBQUFBVmdBQUFGY0FBQUJZQUFBQVdRQUFBRm9BQUFCYkFBQUFYQUFBQUFBQUFBQk1MZ0FBWFFBQUFGNEFBQUJKQUFBQVh3QUFBR0FBQUFCaEFBQUFZZ0FBQUdNQUFBQUFBQUFBY0M0QUFHUUFBQUJsQUFBQVNRQUFBR1lBQUFCbkFBQUFhQUFBQUdrQUFBQnFBQUFBZEFBQUFISUFBQUIxQUFBQVpRQUFBQUFBQUFCbUFBQUFZUUFBQUd3QUFBQnpBQUFBWlFBQUFBQUFBQUFsQUFBQWJRQUFBQzhBQUFBbEFBQUFaQUFBQUM4QUFBQWxBQUFBZVFBQUFBQUFBQUFsQUFBQVNBQUFBRG9BQUFBbEFBQUFUUUFBQURvQUFBQWxBQUFBVXdBQUFBQUFBQUFsQUFBQVlRQUFBQ0FBQUFBbEFBQUFZZ0FBQUNBQUFBQWxBQUFBWkFBQUFDQUFBQUFsQUFBQVNBQUFBRG9BQUFBbEFBQUFUUUFBQURvQUFBQWxBQUFBVXdBQUFDQUFBQUFsQUFBQVdRQUFBQUFBQUFBbEFBQUFTUUFBQURvQUFBQWxBQUFBVFFBQUFEb0FBQUFsQUFBQVV3QUFBQ0FBQUFBbEFBQUFjQUJCbE5ZQUM1WUpQQ3NBQUdzQUFBQnNBQUFBU1FBQUFFNVRkRE5mWHpJMmJHOWpZV3hsTldaaFkyVjBSUUFBQUJnL0FBQWtLd0FBZ0Q0QUFBQUFBQUM4S3dBQWF3QUFBRzBBQUFCSkFBQUFiZ0FBQUc4QUFBQndBQUFBY1FBQUFISUFBQUJ6QUFBQWRBQUFBSFVBQUFCMkFBQUFkd0FBQUhnQUFBQjVBQUFBVGxOME0xOWZNalZqZEhsd1pVbDNSVVVBVGxOME0xOWZNakV3WTNSNWNHVmZZbUZ6WlVVQUFQQStBQUNlS3dBQWREOEFBSXdyQUFBQUFBQUFBZ0FBQUR3ckFBQUNBQUFBdENzQUFBSUFBQUFBQUFBQVVDd0FBR3NBQUFCNkFBQUFTUUFBQUhzQUFBQjhBQUFBZlFBQUFINEFBQUIvQUFBQWdBQUFBSUVBQUFCT1UzUXpYMTh5TjJOdlpHVmpkblJKWTJNeE1WOWZiV0p6ZEdGMFpWOTBSVVVBVGxOME0xOWZNakV5WTI5a1pXTjJkRjlpWVhObFJRQUFBQUR3UGdBQUxpd0FBSFEvQUFBTUxBQUFBQUFBQUFJQUFBQThLd0FBQWdBQUFFZ3NBQUFDQUFBQUFBQUFBTVFzQUFCckFBQUFnZ0FBQUVrQUFBQ0RBQUFBaEFBQUFJVUFBQUNHQUFBQWh3QUFBSWdBQUFDSkFBQUFUbE4wTTE5Zk1qZGpiMlJsWTNaMFNVUnpZekV4WDE5dFluTjBZWFJsWDNSRlJRQUFkRDhBQUtBc0FBQUFBQUFBQWdBQUFEd3JBQUFDQUFBQVNDd0FBQUlBQUFBQUFBQUFPQzBBQUdzQUFBQ0tBQUFBU1FBQUFJc0FBQUNNQUFBQWpRQUFBSTRBQUFDUEFBQUFrQUFBQUpFQUFBQk9VM1F6WDE4eU4yTnZaR1ZqZG5SSlJHbGpNVEZmWDIxaWMzUmhkR1ZmZEVWRkFBQjBQd0FBRkMwQUFBQUFBQUFDQUFBQVBDc0FBQUlBQUFCSUxBQUFBZ0FBQUU1VGRETmZYekkzWTI5a1pXTjJkRWwzWXpFeFgxOXRZbk4wWVhSbFgzUkZSUUFBQUhRL0FBQllMUUFBQUFBQUFBSUFBQUE4S3dBQUFnQUFBRWdzQUFBQ0FBQUFUbE4wTTE5Zk1qWnNiMk5oYkdVMVgxOXBiWEJGQUFBQUdEOEFBSnd0QUFBOEt3QUFUbE4wTTE5Zk1qZGpiMnhzWVhSbFNXTkZSUUFZUHdBQXdDMEFBRHdyQUFCT1UzUXpYMTh5TjJOdmJHeGhkR1ZKZDBWRkFCZy9BQURnTFFBQVBDc0FBRTVUZEROZlh6STFZM1I1Y0dWSlkwVkZBQUFBZEQ4QUFBQXVBQUFBQUFBQUFnQUFBRHdyQUFBQ0FBQUF0Q3NBQUFJQUFBQk9VM1F6WDE4eU9HNTFiWEIxYm1OMFNXTkZSUUFBQUFBWVB3QUFOQzRBQUR3ckFBQk9VM1F6WDE4eU9HNTFiWEIxYm1OMFNYZEZSUUFBQUFBWVB3QUFXQzRBQUR3ckFBQUFBQUFBMUMwQUFKSUFBQUNUQUFBQVNRQUFBSlFBQUFDVkFBQUFsZ0FBQUFBQUFBRDBMUUFBbHdBQUFKZ0FBQUJKQUFBQW1RQUFBSm9BQUFDYkFBQUFBQUFBQUpBdkFBQnJBQUFBbkFBQUFFa0FBQUNkQUFBQW5nQUFBSjhBQUFDZ0FBQUFvUUFBQUtJQUFBQ2pBQUFBcEFBQUFLVUFBQUNtQUFBQXB3QUFBRTVUZEROZlh6STNiblZ0WDJkbGRFbGpUbE5mTVRscGMzUnlaV0Z0WW5WbVgybDBaWEpoZEc5eVNXTk9VMTh4TVdOb1lYSmZkSEpoYVhSelNXTkZSVVZGUlVVQVRsTjBNMTlmTWpsZlgyNTFiVjluWlhSSlkwVkZBRTVUZEROZlh6SXhORjlmYm5WdFgyZGxkRjlpWVhObFJRQUE4RDRBQUZZdkFBQjBQd0FBUUM4QUFBQUFBQUFCQUFBQWNDOEFBQUFBQUFCMFB3QUEvQzRBQUFBQUFBQUNBQUFBUENzQUFBSUFBQUI0THdCQnROOEFDOG9CWkRBQUFHc0FBQUNvQUFBQVNRQUFBS2tBQUFDcUFBQUFxd0FBQUt3QUFBQ3RBQUFBcmdBQUFLOEFBQUN3QUFBQXNRQUFBTElBQUFDekFBQUFUbE4wTTE5Zk1qZHVkVzFmWjJWMFNYZE9VMTh4T1dsemRISmxZVzFpZFdaZmFYUmxjbUYwYjNKSmQwNVRYekV4WTJoaGNsOTBjbUZwZEhOSmQwVkZSVVZGUlFCT1UzUXpYMTh5T1Y5ZmJuVnRYMmRsZEVsM1JVVUFBQUIwUHdBQU5EQUFBQUFBQUFBQkFBQUFjQzhBQUFBQUFBQjBQd0FBOEM4QUFBQUFBQUFDQUFBQVBDc0FBQUlBQUFCTU1BQkJpT0VBQzk0QlRERUFBR3NBQUFDMEFBQUFTUUFBQUxVQUFBQzJBQUFBdHdBQUFMZ0FBQUM1QUFBQXVnQUFBTHNBQUFDOEFBQUFUbE4wTTE5Zk1qZHVkVzFmY0hWMFNXTk9VMTh4T1c5emRISmxZVzFpZFdaZmFYUmxjbUYwYjNKSlkwNVRYekV4WTJoaGNsOTBjbUZwZEhOSlkwVkZSVVZGUlFCT1UzUXpYMTh5T1Y5ZmJuVnRYM0IxZEVsalJVVUFUbE4wTTE5Zk1qRTBYMTl1ZFcxZmNIVjBYMkpoYzJWRkFBRHdQZ0FBRWpFQUFIUS9BQUQ4TUFBQUFBQUFBQUVBQUFBc01RQUFBQUFBQUhRL0FBQzRNQUFBQUFBQUFBSUFBQUE4S3dBQUFnQUFBRFF4QUVIdzRnQUx2Z0VVTWdBQWF3QUFBTDBBQUFCSkFBQUF2Z0FBQUw4QUFBREFBQUFBd1FBQUFNSUFBQUREQUFBQXhBQUFBTVVBQUFCT1UzUXpYMTh5TjI1MWJWOXdkWFJKZDA1VFh6RTViM04wY21WaGJXSjFabDlwZEdWeVlYUnZja2wzVGxOZk1URmphR0Z5WDNSeVlXbDBjMGwzUlVWRlJVVkZBRTVUZEROZlh6STVYMTl1ZFcxZmNIVjBTWGRGUlFBQUFIUS9BQURrTVFBQUFBQUFBQUVBQUFBc01RQUFBQUFBQUhRL0FBQ2dNUUFBQUFBQUFBSUFBQUE4S3dBQUFnQUFBUHd4QUVHNDVBQUxtZ3NVTXdBQXhnQUFBTWNBQUFCSkFBQUF5QUFBQU1rQUFBREtBQUFBeXdBQUFNd0FBQUROQUFBQXpnQUFBUGovLy84VU13QUF6d0FBQU5BQUFBRFJBQUFBMGdBQUFOTUFBQURVQUFBQTFRQUFBRTVUZEROZlh6STRkR2x0WlY5blpYUkpZMDVUWHpFNWFYTjBjbVZoYldKMVpsOXBkR1Z5WVhSdmNrbGpUbE5mTVRGamFHRnlYM1J5WVdsMGMwbGpSVVZGUlVWRkFFNVRkRE5mWHpJNWRHbHRaVjlpWVhObFJRRHdQZ0FBelRJQUFFNVRkRE5mWHpJeU1GOWZkR2x0WlY5blpYUmZZMTl6ZEc5eVlXZGxTV05GUlFBQUFQQStBQURvTWdBQWREOEFBSWd5QUFBQUFBQUFBd0FBQUR3ckFBQUNBQUFBNERJQUFBSUFBQUFNTXdBQUFBZ0FBQUFBQUFBQU5BQUExZ0FBQU5jQUFBQkpBQUFBMkFBQUFOa0FBQURhQUFBQTJ3QUFBTndBQUFEZEFBQUEzZ0FBQVBqLy8vOEFOQUFBM3dBQUFPQUFBQURoQUFBQTRnQUFBT01BQUFEa0FBQUE1UUFBQUU1VGRETmZYekk0ZEdsdFpWOW5aWFJKZDA1VFh6RTVhWE4wY21WaGJXSjFabDlwZEdWeVlYUnZja2wzVGxOZk1URmphR0Z5WDNSeVlXbDBjMGwzUlVWRlJVVkZBRTVUZEROZlh6SXlNRjlmZEdsdFpWOW5aWFJmWTE5emRHOXlZV2RsU1hkRlJRQUE4RDRBQU5VekFBQjBQd0FBa0RNQUFBQUFBQUFEQUFBQVBDc0FBQUlBQUFEZ01nQUFBZ0FBQVBnekFBQUFDQUFBQUFBQUFLUTBBQURtQUFBQTV3QUFBRWtBQUFEb0FBQUFUbE4wTTE5Zk1qaDBhVzFsWDNCMWRFbGpUbE5mTVRsdmMzUnlaV0Z0WW5WbVgybDBaWEpoZEc5eVNXTk9VMTh4TVdOb1lYSmZkSEpoYVhSelNXTkZSVVZGUlVVQVRsTjBNMTlmTWpFd1gxOTBhVzFsWDNCMWRFVUFBQUR3UGdBQWhUUUFBSFEvQUFCQU5BQUFBQUFBQUFJQUFBQThLd0FBQWdBQUFKdzBBQUFBQ0FBQUFBQUFBQ1ExQUFEcEFBQUE2Z0FBQUVrQUFBRHJBQUFBVGxOME0xOWZNamgwYVcxbFgzQjFkRWwzVGxOZk1UbHZjM1J5WldGdFluVm1YMmwwWlhKaGRHOXlTWGRPVTE4eE1XTm9ZWEpmZEhKaGFYUnpTWGRGUlVWRlJVVUFBQUFBZEQ4QUFOdzBBQUFBQUFBQUFnQUFBRHdyQUFBQ0FBQUFuRFFBQUFBSUFBQUFBQUFBdURVQUFHc0FBQURzQUFBQVNRQUFBTzBBQUFEdUFBQUE3d0FBQVBBQUFBRHhBQUFBOGdBQUFQTUFBQUQwQUFBQTlRQUFBRTVUZEROZlh6SXhNRzF2Ym1WNWNIVnVZM1JKWTB4aU1FVkZSUUJPVTNRelgxOHlNVEJ0YjI1bGVWOWlZWE5sUlFBQUFBRHdQZ0FBbURVQUFIUS9BQUI4TlFBQUFBQUFBQUlBQUFBOEt3QUFBZ0FBQUxBMUFBQUNBQUFBQUFBQUFDdzJBQUJyQUFBQTlnQUFBRWtBQUFEM0FBQUErQUFBQVBrQUFBRDZBQUFBK3dBQUFQd0FBQUQ5QUFBQS9nQUFBUDhBQUFCT1UzUXpYMTh5TVRCdGIyNWxlWEIxYm1OMFNXTk1ZakZGUlVVQWREOEFBQkEyQUFBQUFBQUFBZ0FBQUR3ckFBQUNBQUFBc0RVQUFBSUFBQUFBQUFBQW9EWUFBR3NBQUFBQUFRQUFTUUFBQUFFQkFBQUNBUUFBQXdFQUFBUUJBQUFGQVFBQUJnRUFBQWNCQUFBSUFRQUFDUUVBQUU1VGRETmZYekl4TUcxdmJtVjVjSFZ1WTNSSmQweGlNRVZGUlFCMFB3QUFoRFlBQUFBQUFBQUNBQUFBUENzQUFBSUFBQUN3TlFBQUFnQUFBQUFBQUFBVU53QUFhd0FBQUFvQkFBQkpBQUFBQ3dFQUFBd0JBQUFOQVFBQURnRUFBQThCQUFBUUFRQUFFUUVBQUJJQkFBQVRBUUFBVGxOME0xOWZNakV3Ylc5dVpYbHdkVzVqZEVsM1RHSXhSVVZGQUhRL0FBRDROZ0FBQUFBQUFBSUFBQUE4S3dBQUFnQUFBTEExQUFBQ0FBQUFBQUFBQUxnM0FBQnJBQUFBRkFFQUFFa0FBQUFWQVFBQUZnRUFBRTVUZEROZlh6STViVzl1WlhsZloyVjBTV05PVTE4eE9XbHpkSEpsWVcxaWRXWmZhWFJsY21GMGIzSkpZMDVUWHpFeFkyaGhjbDkwY21GcGRITkpZMFZGUlVWRlJRQk9VM1F6WDE4eU1URmZYMjF2Ym1WNVgyZGxkRWxqUlVVQUFQQStBQUNXTndBQWREOEFBRkEzQUFBQUFBQUFBZ0FBQUR3ckFBQUNBQUFBc0RjQVFkenZBQXVhQVZ3NEFBQnJBQUFBRndFQUFFa0FBQUFZQVFBQUdRRUFBRTVUZEROZlh6STViVzl1WlhsZloyVjBTWGRPVTE4eE9XbHpkSEpsWVcxaWRXWmZhWFJsY21GMGIzSkpkMDVUWHpFeFkyaGhjbDkwY21GcGRITkpkMFZGUlVWRlJRQk9VM1F6WDE4eU1URmZYMjF2Ym1WNVgyZGxkRWwzUlVVQUFQQStBQUE2T0FBQWREOEFBUFEzQUFBQUFBQUFBZ0FBQUR3ckFBQUNBQUFBVkRnQVFZSHhBQXVaQVRrQUFHc0FBQUFhQVFBQVNRQUFBQnNCQUFBY0FRQUFUbE4wTTE5Zk1qbHRiMjVsZVY5d2RYUkpZMDVUWHpFNWIzTjBjbVZoYldKMVpsOXBkR1Z5WVhSdmNrbGpUbE5mTVRGamFHRnlYM1J5WVdsMGMwbGpSVVZGUlVWRkFFNVRkRE5mWHpJeE1WOWZiVzl1WlhsZmNIVjBTV05GUlFBQThENEFBTjQ0QUFCMFB3QUFtRGdBQUFBQUFBQUNBQUFBUENzQUFBSUFBQUQ0T0FCQnBQSUFDNW9CcERrQUFHc0FBQUFkQVFBQVNRQUFBQjRCQUFBZkFRQUFUbE4wTTE5Zk1qbHRiMjVsZVY5d2RYUkpkMDVUWHpFNWIzTjBjbVZoYldKMVpsOXBkR1Z5WVhSdmNrbDNUbE5mTVRGamFHRnlYM1J5WVdsMGMwbDNSVVZGUlVWRkFFNVRkRE5mWHpJeE1WOWZiVzl1WlhsZmNIVjBTWGRGUlFBQThENEFBSUk1QUFCMFB3QUFQRGtBQUFBQUFBQUNBQUFBUENzQUFBSUFBQUNjT1FCQnlQTUFDN2tJSERvQUFHc0FBQUFnQVFBQVNRQUFBQ0VCQUFBaUFRQUFJd0VBQUU1VGRETmZYekk0YldWemMyRm5aWE5KWTBWRkFFNVRkRE5mWHpJeE0yMWxjM05oWjJWelgySmhjMlZGQUFBQUFQQStBQUQ1T1FBQWREOEFBT1E1QUFBQUFBQUFBZ0FBQUR3ckFBQUNBQUFBRkRvQUFBSUFBQUFBQUFBQWREb0FBR3NBQUFBa0FRQUFTUUFBQUNVQkFBQW1BUUFBSndFQUFFNVRkRE5mWHpJNGJXVnpjMkZuWlhOSmQwVkZBQUFBQUhRL0FBQmNPZ0FBQUFBQUFBSUFBQUE4S3dBQUFnQUFBQlE2QUFBQ0FBQUFVd0FBQUhVQUFBQnVBQUFBWkFBQUFHRUFBQUI1QUFBQUFBQUFBRTBBQUFCdkFBQUFiZ0FBQUdRQUFBQmhBQUFBZVFBQUFBQUFBQUJVQUFBQWRRQUFBR1VBQUFCekFBQUFaQUFBQUdFQUFBQjVBQUFBQUFBQUFGY0FBQUJsQUFBQVpBQUFBRzRBQUFCbEFBQUFjd0FBQUdRQUFBQmhBQUFBZVFBQUFBQUFBQUJVQUFBQWFBQUFBSFVBQUFCeUFBQUFjd0FBQUdRQUFBQmhBQUFBZVFBQUFBQUFBQUJHQUFBQWNnQUFBR2tBQUFCa0FBQUFZUUFBQUhrQUFBQUFBQUFBVXdBQUFHRUFBQUIwQUFBQWRRQUFBSElBQUFCa0FBQUFZUUFBQUhrQUFBQUFBQUFBVXdBQUFIVUFBQUJ1QUFBQUFBQUFBRTBBQUFCdkFBQUFiZ0FBQUFBQUFBQlVBQUFBZFFBQUFHVUFBQUFBQUFBQVZ3QUFBR1VBQUFCa0FBQUFBQUFBQUZRQUFBQm9BQUFBZFFBQUFBQUFBQUJHQUFBQWNnQUFBR2tBQUFBQUFBQUFVd0FBQUdFQUFBQjBBQUFBQUFBQUFFb0FBQUJoQUFBQWJnQUFBSFVBQUFCaEFBQUFjZ0FBQUhrQUFBQUFBQUFBUmdBQUFHVUFBQUJpQUFBQWNnQUFBSFVBQUFCaEFBQUFjZ0FBQUhrQUFBQUFBQUFBVFFBQUFHRUFBQUJ5QUFBQVl3QUFBR2dBQUFBQUFBQUFRUUFBQUhBQUFBQnlBQUFBYVFBQUFHd0FBQUFBQUFBQVRRQUFBR0VBQUFCNUFBQUFBQUFBQUVvQUFBQjFBQUFBYmdBQUFHVUFBQUFBQUFBQVNnQUFBSFVBQUFCc0FBQUFlUUFBQUFBQUFBQkJBQUFBZFFBQUFHY0FBQUIxQUFBQWN3QUFBSFFBQUFBQUFBQUFVd0FBQUdVQUFBQndBQUFBZEFBQUFHVUFBQUJ0QUFBQVlnQUFBR1VBQUFCeUFBQUFBQUFBQUU4QUFBQmpBQUFBZEFBQUFHOEFBQUJpQUFBQVpRQUFBSElBQUFBQUFBQUFUZ0FBQUc4QUFBQjJBQUFBWlFBQUFHMEFBQUJpQUFBQVpRQUFBSElBQUFBQUFBQUFSQUFBQUdVQUFBQmpBQUFBWlFBQUFHMEFBQUJpQUFBQVpRQUFBSElBQUFBQUFBQUFTZ0FBQUdFQUFBQnVBQUFBQUFBQUFFWUFBQUJsQUFBQVlnQUFBQUFBQUFCTkFBQUFZUUFBQUhJQUFBQUFBQUFBUVFBQUFIQUFBQUJ5QUFBQUFBQUFBRW9BQUFCMUFBQUFiZ0FBQUFBQUFBQktBQUFBZFFBQUFHd0FBQUFBQUFBQVFRQUFBSFVBQUFCbkFBQUFBQUFBQUZNQUFBQmxBQUFBY0FBQUFBQUFBQUJQQUFBQVl3QUFBSFFBQUFBQUFBQUFUZ0FBQUc4QUFBQjJBQUFBQUFBQUFFUUFBQUJsQUFBQVl3QUFBQUFBQUFCQkFBQUFUUUFBQUFBQUFBQlFBQUFBVFFCQmpQd0FDK0lFRERNQUFNOEFBQURRQUFBQTBRQUFBTklBQUFEVEFBQUExQUFBQU5VQUFBQUFBQUFBK0RNQUFOOEFBQURnQUFBQTRRQUFBT0lBQUFEakFBQUE1QUFBQU9VQUFBQUFBQUFBZ0Q0QUFDZ0JBQUFwQVFBQUtnRUFBRTVUZEROZlh6SXhORjlmYzJoaGNtVmtYMk52ZFc1MFJRQUFBQUR3UGdBQVpENEFBRTR4TUY5ZlkzaDRZV0pwZGpFeE5sOWZjMmhwYlY5MGVYQmxYMmx1Wm05RkFBQUFBQmcvQUFDSVBnQUFhRUFBQUU0eE1GOWZZM2g0WVdKcGRqRXhOMTlmWTJ4aGMzTmZkSGx3WlY5cGJtWnZSUUFBQUJnL0FBQzRQZ0FBckQ0QUFBQUFBQURjUGdBQUt3RUFBQ3dCQUFBdEFRQUFMZ0VBQUM4QkFBQXdBUUFBTVFFQUFESUJBQUFBQUFBQVlEOEFBQ3NCQUFBekFRQUFMUUVBQUM0QkFBQXZBUUFBTkFFQUFEVUJBQUEyQVFBQVRqRXdYMTlqZUhoaFltbDJNVEl3WDE5emFWOWpiR0Z6YzE5MGVYQmxYMmx1Wm05RkFBQUFBQmcvQUFBNFB3QUEzRDRBQUFBQUFBQzhQd0FBS3dFQUFEY0JBQUF0QVFBQUxnRUFBQzhCQUFBNEFRQUFPUUVBQURvQkFBQk9NVEJmWDJONGVHRmlhWFl4TWpGZlgzWnRhVjlqYkdGemMxOTBlWEJsWDJsdVptOUZBQUFBR0Q4QUFKUS9BQURjUGdBQUFBQUFBT3cvQUFBN0FRQUFQQUVBQUQwQkFBQlRkRGxsZUdObGNIUnBiMjRBQUFBQThENEFBTncvQUFBQUFBQUFHRUFBQUFNQUFBQStBUUFBUHdFQUFGTjBNVEZzYjJkcFkxOWxjbkp2Y2dBWVB3QUFDRUFBQU93L0FBQUFBQUFBVEVBQUFBTUFBQUJBQVFBQVB3RUFBRk4wTVRKc1pXNW5kR2hmWlhKeWIzSUFBQUFBR0Q4QUFEaEFBQUFZUUFBQVUzUTVkSGx3WlY5cGJtWnZBQUFBQVBBK0FBQllRQUJCOElBQkN3S2dhdz09IiksWWM9ZnVuY3Rpb24oQSl7KEE9QXx8e30pLmluc3RhbnRpYXRlV2FzbT1mdW5jdGlvbihBLGcpe01jKEEpLnRoZW4oKGZ1bmN0aW9uKEEpe2coe2V4cG9ydHM6QS5leHBvcnRzfSl9KSl9O3ZhciBnLEk9dm9pZCAwIT09QT9BOnt9LEI9T2JqZWN0LmFzc2lnbixRPUIoe30sSSksRT0iLi90aGlzLnByb2dyYW0iLEM9IiI7Qz0wIT09KEM9c2VsZi5sb2NhdGlvbi5ocmVmKS5pbmRleE9mKCJibG9iOiIpP0Muc3Vic3RyKDAsQy5yZXBsYWNlKC9bPyNdLiovLCIiKS5sYXN0SW5kZXhPZigiLyIpKzEpOiIiLGc9ZnVuY3Rpb24oQSl7dmFyIGc9bmV3IFhNTEh0dHBSZXF1ZXN0O3JldHVybiBnLm9wZW4oIkdFVCIsQSwhMSksZy5yZXNwb25zZVR5cGU9ImFycmF5YnVmZmVyIixnLnNlbmQobnVsbCksbmV3IFVpbnQ4QXJyYXkoZy5yZXNwb25zZSl9LEkucHJpbnR8fGNvbnNvbGUubG9nLmJpbmQoY29uc29sZSk7dmFyIHQsaSxlPUkucHJpbnRFcnJ8fGNvbnNvbGUud2Fybi5iaW5kKGNvbnNvbGUpO0IoSSxRKSxRPW51bGwsSS5hcmd1bWVudHMmJkkuYXJndW1lbnRzLEkudGhpc1Byb2dyYW0mJihFPUkudGhpc1Byb2dyYW0pLEkucXVpdCYmSS5xdWl0LEkud2FzbUJpbmFyeSYmKHQ9SS53YXNtQmluYXJ5KSxJLm5vRXhpdFJ1bnRpbWUsIm9iamVjdCIhPT0oInVuZGVmaW5lZCI9PXR5cGVvZiBXZWJBc3NlbWJseT8idW5kZWZpbmVkIjp5KFdlYkFzc2VtYmx5KSkmJnAoIm5vIG5hdGl2ZSB3YXNtIHN1cHBvcnQgZGV0ZWN0ZWQiKTt2YXIgbyxyLG4sYSxzLGM9ITEsaD0idW5kZWZpbmVkIiE9dHlwZW9mIFRleHREZWNvZGVyP25ldyBUZXh0RGVjb2RlcigidXRmOCIpOnZvaWQgMDtmdW5jdGlvbiBmKEEsZyl7cmV0dXJuIEE/ZnVuY3Rpb24oQSxnLEkpe2Zvcih2YXIgQj1nK0ksUT1nO0FbUV0mJiEoUT49Qik7KSsrUTtpZihRLWc+MTYmJkEuc3ViYXJyYXkmJmgpcmV0dXJuIGguZGVjb2RlKEEuc3ViYXJyYXkoZyxRKSk7Zm9yKHZhciBFPSIiO2c8UTspe3ZhciBDPUFbZysrXTtpZigxMjgmQyl7dmFyIHQ9NjMmQVtnKytdO2lmKDE5MiE9KDIyNCZDKSl7dmFyIGk9NjMmQVtnKytdO2lmKChDPTIyND09KDI0MCZDKT8oMTUmQyk8PDEyfHQ8PDZ8aTooNyZDKTw8MTh8dDw8MTJ8aTw8Nnw2MyZBW2crK10pPDY1NTM2KUUrPVN0cmluZy5mcm9tQ2hhckNvZGUoQyk7ZWxzZXt2YXIgZT1DLTY1NTM2O0UrPVN0cmluZy5mcm9tQ2hhckNvZGUoNTUyOTZ8ZT4+MTAsNTYzMjB8MTAyMyZlKX19ZWxzZSBFKz1TdHJpbmcuZnJvbUNoYXJDb2RlKCgzMSZDKTw8Nnx0KX1lbHNlIEUrPVN0cmluZy5mcm9tQ2hhckNvZGUoQyl9cmV0dXJuIEV9KG4sQSxnKToiIn1mdW5jdGlvbiB1KEEsZyxJLEIpe2lmKCEoQj4wKSlyZXR1cm4gMDtmb3IodmFyIFE9SSxFPUkrQi0xLEM9MDtDPEEubGVuZ3RoOysrQyl7dmFyIHQ9QS5jaGFyQ29kZUF0KEMpO2lmKHQ+PTU1Mjk2JiZ0PD01NzM0MyYmKHQ9NjU1MzYrKCgxMDIzJnQpPDwxMCl8MTAyMyZBLmNoYXJDb2RlQXQoKytDKSksdDw9MTI3KXtpZihJPj1FKWJyZWFrO2dbSSsrXT10fWVsc2UgaWYodDw9MjA0Nyl7aWYoSSsxPj1FKWJyZWFrO2dbSSsrXT0xOTJ8dD4+NixnW0krK109MTI4fDYzJnR9ZWxzZSBpZih0PD02NTUzNSl7aWYoSSsyPj1FKWJyZWFrO2dbSSsrXT0yMjR8dD4+MTIsZ1tJKytdPTEyOHx0Pj42JjYzLGdbSSsrXT0xMjh8NjMmdH1lbHNle2lmKEkrMz49RSlicmVhaztnW0krK109MjQwfHQ+PjE4LGdbSSsrXT0xMjh8dD4+MTImNjMsZ1tJKytdPTEyOHx0Pj42JjYzLGdbSSsrXT0xMjh8NjMmdH19cmV0dXJuIGdbSV09MCxJLVF9ZnVuY3Rpb24gRChBKXtmb3IodmFyIGc9MCxJPTA7STxBLmxlbmd0aDsrK0kpe3ZhciBCPUEuY2hhckNvZGVBdChJKTtCPj01NTI5NiYmQjw9NTczNDMmJihCPTY1NTM2KygoMTAyMyZCKTw8MTApfDEwMjMmQS5jaGFyQ29kZUF0KCsrSSkpLEI8PTEyNz8rK2c6Zys9Qjw9MjA0Nz8yOkI8PTY1NTM1PzM6NH1yZXR1cm4gZ31mdW5jdGlvbiB3KEEsZyl7ci5zZXQoQSxnKX1mdW5jdGlvbiBsKEEpe289QSxJLkhFQVA4PXI9bmV3IEludDhBcnJheShBKSxJLkhFQVAxNj1uZXcgSW50MTZBcnJheShBKSxJLkhFQVAzMj1hPW5ldyBJbnQzMkFycmF5KEEpLEkuSEVBUFU4PW49bmV3IFVpbnQ4QXJyYXkoQSksSS5IRUFQVTE2PW5ldyBVaW50MTZBcnJheShBKSxJLkhFQVBVMzI9bmV3IFVpbnQzMkFycmF5KEEpLEkuSEVBUEYzMj1uZXcgRmxvYXQzMkFycmF5KEEpLEkuSEVBUEY2ND1uZXcgRmxvYXQ2NEFycmF5KEEpfUkuSU5JVElBTF9NRU1PUlk7dmFyIGQsRixHPVtdLFI9W10sVT1bXSxrPTAsUz1udWxsO2Z1bmN0aW9uIHAoQSl7dGhyb3cgSS5vbkFib3J0JiZJLm9uQWJvcnQoQSksZShBPSJBYm9ydGVkKCIrQSsiKSIpLGM9ITAsQSs9Ii4gQnVpbGQgd2l0aCAtcyBBU1NFUlRJT05TPTEgZm9yIG1vcmUgaW5mby4iLG5ldyBXZWJBc3NlbWJseS5SdW50aW1lRXJyb3IoQSl9ZnVuY3Rpb24gTihBKXtyZXR1cm4gQS5zdGFydHNXaXRoKCJkYXRhOmFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbTtiYXNlNjQsIil9ZnVuY3Rpb24gTShBKXt0cnl7aWYoQT09ZCYmdClyZXR1cm4gbmV3IFVpbnQ4QXJyYXkodCk7aWYoZylyZXR1cm4gZyhBKTt0aHJvdyJib3RoIGFzeW5jIGFuZCBzeW5jIGZldGNoaW5nIG9mIHRoZSB3YXNtIGZhaWxlZCJ9Y2F0Y2goSSl7cChJKX19ZnVuY3Rpb24gWShBKXtmb3IoO0EubGVuZ3RoPjA7KXt2YXIgZz1BLnNoaWZ0KCk7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGcpe3ZhciBCPWcuZnVuYzsibnVtYmVyIj09dHlwZW9mIEI/dm9pZCAwPT09Zy5hcmc/SChCKSgpOkgoQikoZy5hcmcpOkIodm9pZCAwPT09Zy5hcmc/bnVsbDpnLmFyZyl9ZWxzZSBnKEkpfX1mdW5jdGlvbiBIKEEpe3JldHVybiBzLmdldChBKX1mdW5jdGlvbiB2KEEpe3RoaXMuZXhjUHRyPUEsdGhpcy5wdHI9QS0xNix0aGlzLnNldF90eXBlPWZ1bmN0aW9uKEEpe2FbdGhpcy5wdHIrND4+Ml09QX0sdGhpcy5nZXRfdHlwZT1mdW5jdGlvbigpe3JldHVybiBhW3RoaXMucHRyKzQ+PjJdfSx0aGlzLnNldF9kZXN0cnVjdG9yPWZ1bmN0aW9uKEEpe2FbdGhpcy5wdHIrOD4+Ml09QX0sdGhpcy5nZXRfZGVzdHJ1Y3Rvcj1mdW5jdGlvbigpe3JldHVybiBhW3RoaXMucHRyKzg+PjJdfSx0aGlzLnNldF9yZWZjb3VudD1mdW5jdGlvbihBKXthW3RoaXMucHRyPj4yXT1BfSx0aGlzLnNldF9jYXVnaHQ9ZnVuY3Rpb24oQSl7QT1BPzE6MCxyW3RoaXMucHRyKzEyfDBdPUF9LHRoaXMuZ2V0X2NhdWdodD1mdW5jdGlvbigpe3JldHVybiAwIT1yW3RoaXMucHRyKzEyfDBdfSx0aGlzLnNldF9yZXRocm93bj1mdW5jdGlvbihBKXtBPUE/MTowLHJbdGhpcy5wdHIrMTN8MF09QX0sdGhpcy5nZXRfcmV0aHJvd249ZnVuY3Rpb24oKXtyZXR1cm4gMCE9clt0aGlzLnB0cisxM3wwXX0sdGhpcy5pbml0PWZ1bmN0aW9uKEEsZyl7dGhpcy5zZXRfdHlwZShBKSx0aGlzLnNldF9kZXN0cnVjdG9yKGcpLHRoaXMuc2V0X3JlZmNvdW50KDApLHRoaXMuc2V0X2NhdWdodCghMSksdGhpcy5zZXRfcmV0aHJvd24oITEpfSx0aGlzLmFkZF9yZWY9ZnVuY3Rpb24oKXt2YXIgQT1hW3RoaXMucHRyPj4yXTthW3RoaXMucHRyPj4yXT1BKzF9LHRoaXMucmVsZWFzZV9yZWY9ZnVuY3Rpb24oKXt2YXIgQT1hW3RoaXMucHRyPj4yXTtyZXR1cm4gYVt0aGlzLnB0cj4+Ml09QS0xLDE9PT1BfX1mdW5jdGlvbiBMKEEpe3RyeXtyZXR1cm4gaS5ncm93KEEtby5ieXRlTGVuZ3RoKzY1NTM1Pj4+MTYpLGwoaS5idWZmZXIpLDF9Y2F0Y2goZyl7fX1JLnByZWxvYWRlZEltYWdlcz17fSxJLnByZWxvYWRlZEF1ZGlvcz17fSxOKGQ9ImF3Lndhc20iKXx8KEY9ZCxkPUkubG9jYXRlRmlsZT9JLmxvY2F0ZUZpbGUoRixDKTpDK0YpO3ZhciBKPXt9O2Z1bmN0aW9uIG0oKXtpZighbS5zdHJpbmdzKXt2YXIgQT17VVNFUjoid2ViX3VzZXIiLExPR05BTUU6IndlYl91c2VyIixQQVRIOiIvIixQV0Q6Ii8iLEhPTUU6Ii9ob21lL3dlYl91c2VyIixMQU5HOigib2JqZWN0Ij09PSgidW5kZWZpbmVkIj09dHlwZW9mIG5hdmlnYXRvcj8idW5kZWZpbmVkIjp5KG5hdmlnYXRvcikpJiZuYXZpZ2F0b3IubGFuZ3VhZ2VzJiZuYXZpZ2F0b3IubGFuZ3VhZ2VzWzBdfHwiQyIpLnJlcGxhY2UoIi0iLCJfIikrIi5VVEYtOCIsXzpFfHwiLi90aGlzLnByb2dyYW0ifTtmb3IodmFyIGcgaW4gSil2b2lkIDA9PT1KW2ddP2RlbGV0ZSBBW2ddOkFbZ109SltnXTt2YXIgST1bXTtmb3IodmFyIGcgaW4gQSlJLnB1c2goZysiPSIrQVtnXSk7bS5zdHJpbmdzPUl9cmV0dXJuIG0uc3RyaW5nc31mdW5jdGlvbiBLKEEpe3JldHVybiBBJTQ9PTAmJihBJTEwMCE9MHx8QSU0MDA9PTApfWZ1bmN0aW9uIHgoQSxnKXtmb3IodmFyIEk9MCxCPTA7Qjw9ZztJKz1BW0IrK10pO3JldHVybiBJfXZhciBxPVszMSwyOSwzMSwzMCwzMSwzMCwzMSwzMSwzMCwzMSwzMCwzMV0sYj1bMzEsMjgsMzEsMzAsMzEsMzAsMzEsMzEsMzAsMzEsMzAsMzFdO2Z1bmN0aW9uIFQoQSxnKXtmb3IodmFyIEk9bmV3IERhdGUoQS5nZXRUaW1lKCkpO2c+MDspe3ZhciBCPUsoSS5nZXRGdWxsWWVhcigpKSxRPUkuZ2V0TW9udGgoKSxFPShCP3E6YilbUV07aWYoIShnPkUtSS5nZXREYXRlKCkpKXJldHVybiBJLnNldERhdGUoSS5nZXREYXRlKCkrZyksSTtnLT1FLUkuZ2V0RGF0ZSgpKzEsSS5zZXREYXRlKDEpLFE8MTE/SS5zZXRNb250aChRKzEpOihJLnNldE1vbnRoKDApLEkuc2V0RnVsbFllYXIoSS5nZXRGdWxsWWVhcigpKzEpKX1yZXR1cm4gSX1mdW5jdGlvbiBPKEEsZyxJKXt2YXIgQj1JPjA/STpEKEEpKzEsUT1uZXcgQXJyYXkoQiksRT11KEEsUSwwLFEubGVuZ3RoKTtyZXR1cm4gZyYmKFEubGVuZ3RoPUUpLFF9dmFyIFA9e2g6ZnVuY3Rpb24oQSl7cmV0dXJuIFcoQSsxNikrMTZ9LGc6ZnVuY3Rpb24oQSxnLEkpe3Rocm93IG5ldyB2KEEpLmluaXQoZyxJKSxBfSxhOmZ1bmN0aW9uKCl7cCgiIil9LGY6ZnVuY3Rpb24oQSxnLEkpe24uY29weVdpdGhpbihBLGcsZytJKX0sZTpmdW5jdGlvbihBKXt2YXIgZyxJLEI9bi5sZW5ndGgsUT0yMTQ3NDgzNjQ4O2lmKChBPj4+PTApPlEpcmV0dXJuITE7Zm9yKHZhciBFPTE7RTw9NDtFKj0yKXt2YXIgQz1CKigxKy4yL0UpO2lmKEM9TWF0aC5taW4oQyxBKzEwMDY2MzI5NiksTChNYXRoLm1pbihRLCgoZz1NYXRoLm1heChBLEMpKSUoST02NTUzNik+MCYmKGcrPUktZyVJKSxnKSkpKXJldHVybiEwfXJldHVybiExfSxjOmZ1bmN0aW9uKEEsZyl7dmFyIEk9MDtyZXR1cm4gbSgpLmZvckVhY2goKGZ1bmN0aW9uKEIsUSl7dmFyIEU9ZytJO2FbQSs0KlE+PjJdPUUsZnVuY3Rpb24oQSxnLEkpe2Zvcih2YXIgQj0wO0I8QS5sZW5ndGg7KytCKXJbMHxnKytdPUEuY2hhckNvZGVBdChCKTtJfHwoclswfGddPTApfShCLEUpLEkrPUIubGVuZ3RoKzF9KSksMH0sZDpmdW5jdGlvbihBLGcpe3ZhciBJPW0oKTthW0E+PjJdPUkubGVuZ3RoO3ZhciBCPTA7cmV0dXJuIEkuZm9yRWFjaCgoZnVuY3Rpb24oQSl7Qis9QS5sZW5ndGgrMX0pKSxhW2c+PjJdPUIsMH0sYjpmdW5jdGlvbihBLGcsSSxCKXtyZXR1cm4gZnVuY3Rpb24oQSxnLEksQil7dmFyIFE9YVtCKzQwPj4yXSxFPXt0bV9zZWM6YVtCPj4yXSx0bV9taW46YVtCKzQ+PjJdLHRtX2hvdXI6YVtCKzg+PjJdLHRtX21kYXk6YVtCKzEyPj4yXSx0bV9tb246YVtCKzE2Pj4yXSx0bV95ZWFyOmFbQisyMD4+Ml0sdG1fd2RheTphW0IrMjQ+PjJdLHRtX3lkYXk6YVtCKzI4Pj4yXSx0bV9pc2RzdDphW0IrMzI+PjJdLHRtX2dtdG9mZjphW0IrMzY+PjJdLHRtX3pvbmU6UT9mKFEpOiIifSxDPWYoSSksdD17IiVjIjoiJWEgJWIgJWQgJUg6JU06JVMgJVkiLCIlRCI6IiVtLyVkLyV5IiwiJUYiOiIlWS0lbS0lZCIsIiVoIjoiJWIiLCIlciI6IiVJOiVNOiVTICVwIiwiJVIiOiIlSDolTSIsIiVUIjoiJUg6JU06JVMiLCIleCI6IiVtLyVkLyV5IiwiJVgiOiIlSDolTTolUyIsIiVFYyI6IiVjIiwiJUVDIjoiJUMiLCIlRXgiOiIlbS8lZC8leSIsIiVFWCI6IiVIOiVNOiVTIiwiJUV5IjoiJXkiLCIlRVkiOiIlWSIsIiVPZCI6IiVkIiwiJU9lIjoiJWUiLCIlT0giOiIlSCIsIiVPSSI6IiVJIiwiJU9tIjoiJW0iLCIlT00iOiIlTSIsIiVPUyI6IiVTIiwiJU91IjoiJXUiLCIlT1UiOiIlVSIsIiVPViI6IiVWIiwiJU93IjoiJXciLCIlT1ciOiIlVyIsIiVPeSI6IiV5In07Zm9yKHZhciBpIGluIHQpQz1DLnJlcGxhY2UobmV3IFJlZ0V4cChpLCJnIiksdFtpXSk7dmFyIGU9WyJTdW5kYXkiLCJNb25kYXkiLCJUdWVzZGF5IiwiV2VkbmVzZGF5IiwiVGh1cnNkYXkiLCJGcmlkYXkiLCJTYXR1cmRheSJdLG89WyJKYW51YXJ5IiwiRmVicnVhcnkiLCJNYXJjaCIsIkFwcmlsIiwiTWF5IiwiSnVuZSIsIkp1bHkiLCJBdWd1c3QiLCJTZXB0ZW1iZXIiLCJPY3RvYmVyIiwiTm92ZW1iZXIiLCJEZWNlbWJlciJdO2Z1bmN0aW9uIHIoQSxnLEkpe2Zvcih2YXIgQj0ibnVtYmVyIj09dHlwZW9mIEE/QS50b1N0cmluZygpOkF8fCIiO0IubGVuZ3RoPGc7KUI9SVswXStCO3JldHVybiBCfWZ1bmN0aW9uIG4oQSxnKXtyZXR1cm4gcihBLGcsIjAiKX1mdW5jdGlvbiBzKEEsZyl7ZnVuY3Rpb24gSShBKXtyZXR1cm4gQTwwPy0xOkE+MD8xOjB9dmFyIEI7cmV0dXJuIDA9PT0oQj1JKEEuZ2V0RnVsbFllYXIoKS1nLmdldEZ1bGxZZWFyKCkpKSYmMD09PShCPUkoQS5nZXRNb250aCgpLWcuZ2V0TW9udGgoKSkpJiYoQj1JKEEuZ2V0RGF0ZSgpLWcuZ2V0RGF0ZSgpKSksQn1mdW5jdGlvbiBjKEEpe3N3aXRjaChBLmdldERheSgpKXtjYXNlIDA6cmV0dXJuIG5ldyBEYXRlKEEuZ2V0RnVsbFllYXIoKS0xLDExLDI5KTtjYXNlIDE6cmV0dXJuIEE7Y2FzZSAyOnJldHVybiBuZXcgRGF0ZShBLmdldEZ1bGxZZWFyKCksMCwzKTtjYXNlIDM6cmV0dXJuIG5ldyBEYXRlKEEuZ2V0RnVsbFllYXIoKSwwLDIpO2Nhc2UgNDpyZXR1cm4gbmV3IERhdGUoQS5nZXRGdWxsWWVhcigpLDAsMSk7Y2FzZSA1OnJldHVybiBuZXcgRGF0ZShBLmdldEZ1bGxZZWFyKCktMSwxMSwzMSk7Y2FzZSA2OnJldHVybiBuZXcgRGF0ZShBLmdldEZ1bGxZZWFyKCktMSwxMSwzMCl9fWZ1bmN0aW9uIGgoQSl7dmFyIGc9VChuZXcgRGF0ZShBLnRtX3llYXIrMTkwMCwwLDEpLEEudG1feWRheSksST1uZXcgRGF0ZShnLmdldEZ1bGxZZWFyKCksMCw0KSxCPW5ldyBEYXRlKGcuZ2V0RnVsbFllYXIoKSsxLDAsNCksUT1jKEkpLEU9YyhCKTtyZXR1cm4gcyhRLGcpPD0wP3MoRSxnKTw9MD9nLmdldEZ1bGxZZWFyKCkrMTpnLmdldEZ1bGxZZWFyKCk6Zy5nZXRGdWxsWWVhcigpLTF9dmFyIHk9eyIlYSI6ZnVuY3Rpb24oQSl7cmV0dXJuIGVbQS50bV93ZGF5XS5zdWJzdHJpbmcoMCwzKX0sIiVBIjpmdW5jdGlvbihBKXtyZXR1cm4gZVtBLnRtX3dkYXldfSwiJWIiOmZ1bmN0aW9uKEEpe3JldHVybiBvW0EudG1fbW9uXS5zdWJzdHJpbmcoMCwzKX0sIiVCIjpmdW5jdGlvbihBKXtyZXR1cm4gb1tBLnRtX21vbl19LCIlQyI6ZnVuY3Rpb24oQSl7cmV0dXJuIG4oKEEudG1feWVhcisxOTAwKS8xMDB8MCwyKX0sIiVkIjpmdW5jdGlvbihBKXtyZXR1cm4gbihBLnRtX21kYXksMil9LCIlZSI6ZnVuY3Rpb24oQSl7cmV0dXJuIHIoQS50bV9tZGF5LDIsIiAiKX0sIiVnIjpmdW5jdGlvbihBKXtyZXR1cm4gaChBKS50b1N0cmluZygpLnN1YnN0cmluZygyKX0sIiVHIjpmdW5jdGlvbihBKXtyZXR1cm4gaChBKX0sIiVIIjpmdW5jdGlvbihBKXtyZXR1cm4gbihBLnRtX2hvdXIsMil9LCIlSSI6ZnVuY3Rpb24oQSl7dmFyIGc9QS50bV9ob3VyO3JldHVybiAwPT1nP2c9MTI6Zz4xMiYmKGctPTEyKSxuKGcsMil9LCIlaiI6ZnVuY3Rpb24oQSl7cmV0dXJuIG4oQS50bV9tZGF5K3goSyhBLnRtX3llYXIrMTkwMCk/cTpiLEEudG1fbW9uLTEpLDMpfSwiJW0iOmZ1bmN0aW9uKEEpe3JldHVybiBuKEEudG1fbW9uKzEsMil9LCIlTSI6ZnVuY3Rpb24oQSl7cmV0dXJuIG4oQS50bV9taW4sMil9LCIlbiI6ZnVuY3Rpb24oKXtyZXR1cm4iXG4ifSwiJXAiOmZ1bmN0aW9uKEEpe3JldHVybiBBLnRtX2hvdXI+PTAmJkEudG1faG91cjwxMj8iQU0iOiJQTSJ9LCIlUyI6ZnVuY3Rpb24oQSl7cmV0dXJuIG4oQS50bV9zZWMsMil9LCIldCI6ZnVuY3Rpb24oKXtyZXR1cm4iXHQifSwiJXUiOmZ1bmN0aW9uKEEpe3JldHVybiBBLnRtX3dkYXl8fDd9LCIlVSI6ZnVuY3Rpb24oQSl7dmFyIGc9bmV3IERhdGUoQS50bV95ZWFyKzE5MDAsMCwxKSxJPTA9PT1nLmdldERheSgpP2c6VChnLDctZy5nZXREYXkoKSksQj1uZXcgRGF0ZShBLnRtX3llYXIrMTkwMCxBLnRtX21vbixBLnRtX21kYXkpO2lmKHMoSSxCKTwwKXt2YXIgUT14KEsoQi5nZXRGdWxsWWVhcigpKT9xOmIsQi5nZXRNb250aCgpLTEpLTMxLEU9MzEtSS5nZXREYXRlKCkrUStCLmdldERhdGUoKTtyZXR1cm4gbihNYXRoLmNlaWwoRS83KSwyKX1yZXR1cm4gMD09PXMoSSxnKT8iMDEiOiIwMCJ9LCIlViI6ZnVuY3Rpb24oQSl7dmFyIGcsST1uZXcgRGF0ZShBLnRtX3llYXIrMTkwMCwwLDQpLEI9bmV3IERhdGUoQS50bV95ZWFyKzE5MDEsMCw0KSxRPWMoSSksRT1jKEIpLEM9VChuZXcgRGF0ZShBLnRtX3llYXIrMTkwMCwwLDEpLEEudG1feWRheSk7cmV0dXJuIHMoQyxRKTwwPyI1MyI6cyhFLEMpPD0wPyIwMSI6KGc9US5nZXRGdWxsWWVhcigpPEEudG1feWVhcisxOTAwP0EudG1feWRheSszMi1RLmdldERhdGUoKTpBLnRtX3lkYXkrMS1RLmdldERhdGUoKSxuKE1hdGguY2VpbChnLzcpLDIpKX0sIiV3IjpmdW5jdGlvbihBKXtyZXR1cm4gQS50bV93ZGF5fSwiJVciOmZ1bmN0aW9uKEEpe3ZhciBnPW5ldyBEYXRlKEEudG1feWVhciwwLDEpLEk9MT09PWcuZ2V0RGF5KCk/ZzpUKGcsMD09PWcuZ2V0RGF5KCk/MTo3LWcuZ2V0RGF5KCkrMSksQj1uZXcgRGF0ZShBLnRtX3llYXIrMTkwMCxBLnRtX21vbixBLnRtX21kYXkpO2lmKHMoSSxCKTwwKXt2YXIgUT14KEsoQi5nZXRGdWxsWWVhcigpKT9xOmIsQi5nZXRNb250aCgpLTEpLTMxLEU9MzEtSS5nZXREYXRlKCkrUStCLmdldERhdGUoKTtyZXR1cm4gbihNYXRoLmNlaWwoRS83KSwyKX1yZXR1cm4gMD09PXMoSSxnKT8iMDEiOiIwMCJ9LCIleSI6ZnVuY3Rpb24oQSl7cmV0dXJuKEEudG1feWVhcisxOTAwKS50b1N0cmluZygpLnN1YnN0cmluZygyKX0sIiVZIjpmdW5jdGlvbihBKXtyZXR1cm4gQS50bV95ZWFyKzE5MDB9LCIleiI6ZnVuY3Rpb24oQSl7dmFyIGc9QS50bV9nbXRvZmYsST1nPj0wO3JldHVybiBnPShnPU1hdGguYWJzKGcpLzYwKS82MCoxMDArZyU2MCwoST8iKyI6Ii0iKStTdHJpbmcoIjAwMDAiK2cpLnNsaWNlKC00KX0sIiVaIjpmdW5jdGlvbihBKXtyZXR1cm4gQS50bV96b25lfSwiJSUiOmZ1bmN0aW9uKCl7cmV0dXJuIiUifX07Zm9yKHZhciBpIGluIHkpQy5pbmNsdWRlcyhpKSYmKEM9Qy5yZXBsYWNlKG5ldyBSZWdFeHAoaSwiZyIpLHlbaV0oRSkpKTt2YXIgdT1PKEMsITEpO3JldHVybiB1Lmxlbmd0aD5nPzA6KHcodSxBKSx1Lmxlbmd0aC0xKX0oQSxnLEksQil9fTshZnVuY3Rpb24oKXt2YXIgQT17YTpQfTtmdW5jdGlvbiBnKEEsZyl7dmFyIEIsUT1BLmV4cG9ydHM7SS5hc209USxsKChpPUkuYXNtLmkpLmJ1ZmZlcikscz1JLmFzbS50LEI9SS5hc20uaixSLnVuc2hpZnQoQiksZnVuY3Rpb24oKXtpZihrLS0sSS5tb25pdG9yUnVuRGVwZW5kZW5jaWVzJiZJLm1vbml0b3JSdW5EZXBlbmRlbmNpZXMoayksMD09ayYmUyl7dmFyIEE9UztTPW51bGwsQSgpfX0oKX1mdW5jdGlvbiBCKEEpe2coQS5pbnN0YW5jZSl9ZnVuY3Rpb24gUShnKXtyZXR1cm4odHx8ImZ1bmN0aW9uIiE9dHlwZW9mIGZldGNoP1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKGZ1bmN0aW9uKCl7cmV0dXJuIE0oZCl9KSk6ZmV0Y2goZCx7Y3JlZGVudGlhbHM6InNhbWUtb3JpZ2luIn0pLnRoZW4oKGZ1bmN0aW9uKEEpe2lmKCFBLm9rKXRocm93ImZhaWxlZCB0byBsb2FkIHdhc20gYmluYXJ5IGZpbGUgYXQgJyIrZCsiJyI7cmV0dXJuIEEuYXJyYXlCdWZmZXIoKX0pKS5jYXRjaCgoZnVuY3Rpb24oKXtyZXR1cm4gTShkKX0pKSkudGhlbigoZnVuY3Rpb24oZyl7cmV0dXJuIFdlYkFzc2VtYmx5Lmluc3RhbnRpYXRlKGcsQSl9KSkudGhlbigoZnVuY3Rpb24oQSl7cmV0dXJuIEF9KSkudGhlbihnLChmdW5jdGlvbihBKXtlKCJmYWlsZWQgdG8gYXN5bmNocm9ub3VzbHkgcHJlcGFyZSB3YXNtOiAiK0EpLHAoQSl9KSl9aWYoaysrLEkubW9uaXRvclJ1bkRlcGVuZGVuY2llcyYmSS5tb25pdG9yUnVuRGVwZW5kZW5jaWVzKGspLEkuaW5zdGFudGlhdGVXYXNtKXRyeXtyZXR1cm4gSS5pbnN0YW50aWF0ZVdhc20oQSxnKX1jYXRjaChFKXtyZXR1cm4gZSgiTW9kdWxlLmluc3RhbnRpYXRlV2FzbSBjYWxsYmFjayBmYWlsZWQgd2l0aCBlcnJvcjogIitFKSwhMX10fHwiZnVuY3Rpb24iIT10eXBlb2YgV2ViQXNzZW1ibHkuaW5zdGFudGlhdGVTdHJlYW1pbmd8fE4oZCl8fCJmdW5jdGlvbiIhPXR5cGVvZiBmZXRjaD9RKEIpOmZldGNoKGQse2NyZWRlbnRpYWxzOiJzYW1lLW9yaWdpbiJ9KS50aGVuKChmdW5jdGlvbihnKXtyZXR1cm4gV2ViQXNzZW1ibHkuaW5zdGFudGlhdGVTdHJlYW1pbmcoZyxBKS50aGVuKEIsKGZ1bmN0aW9uKEEpe3JldHVybiBlKCJ3YXNtIHN0cmVhbWluZyBjb21waWxlIGZhaWxlZDogIitBKSxlKCJmYWxsaW5nIGJhY2sgdG8gQXJyYXlCdWZmZXIgaW5zdGFudGlhdGlvbiIpLFEoQil9KSl9KSl9KCksSS5fX193YXNtX2NhbGxfY3RvcnM9ZnVuY3Rpb24oKXtyZXR1cm4oSS5fX193YXNtX2NhbGxfY3RvcnM9SS5hc20uaikuYXBwbHkobnVsbCxhcmd1bWVudHMpfTt2YXIgVz1JLl9tYWxsb2M9ZnVuY3Rpb24oKXtyZXR1cm4oVz1JLl9tYWxsb2M9SS5hc20uaykuYXBwbHkobnVsbCxhcmd1bWVudHMpfTtJLl9mcmVlPWZ1bmN0aW9uKCl7cmV0dXJuKEkuX2ZyZWU9SS5hc20ubCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxJLl9vcGVuQm94PWZ1bmN0aW9uKCl7cmV0dXJuKEkuX29wZW5Cb3g9SS5hc20ubSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxJLl9kZXNjcnlwdD1mdW5jdGlvbigpe3JldHVybihJLl9kZXNjcnlwdD1JLmFzbS5uKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LEkuX2Rlc2NyeXB0S2RzS2V5PWZ1bmN0aW9uKCl7cmV0dXJuKEkuX2Rlc2NyeXB0S2RzS2V5PUkuYXNtLm8pLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sSS5fZGVjcnlwdEtleT1mdW5jdGlvbigpe3JldHVybihJLl9kZWNyeXB0S2V5PUkuYXNtLnApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sSS5fZGVzY3J5cHRDQkM9ZnVuY3Rpb24oKXtyZXR1cm4oSS5fZGVzY3J5cHRDQkM9SS5hc20ucSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxJLl9yZWxlYXNlPWZ1bmN0aW9uKCl7cmV0dXJuKEkuX3JlbGVhc2U9SS5hc20ucikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxJLl9zZXRSYXc9ZnVuY3Rpb24oKXtyZXR1cm4oSS5fc2V0UmF3PUkuYXNtLnMpLmFwcGx5KG51bGwsYXJndW1lbnRzKX07dmFyIFosaj1JLnN0YWNrU2F2ZT1mdW5jdGlvbigpe3JldHVybihqPUkuc3RhY2tTYXZlPUkuYXNtLnUpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sWD1JLnN0YWNrUmVzdG9yZT1mdW5jdGlvbigpe3JldHVybihYPUkuc3RhY2tSZXN0b3JlPUkuYXNtLnYpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sVj1JLnN0YWNrQWxsb2M9ZnVuY3Rpb24oKXtyZXR1cm4oVj1JLnN0YWNrQWxsb2M9SS5hc20udykuYXBwbHkobnVsbCxhcmd1bWVudHMpfTtmdW5jdGlvbiB6KEEpe2Z1bmN0aW9uIGcoKXtafHwoWj0hMCxJLmNhbGxlZFJ1bj0hMCxjfHwoWShSKSxJLm9uUnVudGltZUluaXRpYWxpemVkJiZJLm9uUnVudGltZUluaXRpYWxpemVkKCksZnVuY3Rpb24oKXtpZihJLnBvc3RSdW4pZm9yKCJmdW5jdGlvbiI9PXR5cGVvZiBJLnBvc3RSdW4mJihJLnBvc3RSdW49W0kucG9zdFJ1bl0pO0kucG9zdFJ1bi5sZW5ndGg7KUE9SS5wb3N0UnVuLnNoaWZ0KCksVS51bnNoaWZ0KEEpO3ZhciBBO1koVSl9KCkpKX1rPjB8fChmdW5jdGlvbigpe2lmKEkucHJlUnVuKWZvcigiZnVuY3Rpb24iPT10eXBlb2YgSS5wcmVSdW4mJihJLnByZVJ1bj1bSS5wcmVSdW5dKTtJLnByZVJ1bi5sZW5ndGg7KUE9SS5wcmVSdW4uc2hpZnQoKSxHLnVuc2hpZnQoQSk7dmFyIEE7WShHKX0oKSxrPjB8fChJLnNldFN0YXR1cz8oSS5zZXRTdGF0dXMoIlJ1bm5pbmcuLi4iKSxzZXRUaW1lb3V0KChmdW5jdGlvbigpe3NldFRpbWVvdXQoKGZ1bmN0aW9uKCl7SS5zZXRTdGF0dXMoIiIpfSksMSksZygpfSksMSkpOmcoKSkpfWlmKEkuaW50QXJyYXlGcm9tU3RyaW5nPU8sSS5jY2FsbD1mdW5jdGlvbihBLGcsQixRLEUpe3ZhciBDPXtzdHJpbmc6ZnVuY3Rpb24oQSl7dmFyIGc9MDtpZihudWxsIT1BJiYwIT09QSl7dmFyIEk9MSsoQS5sZW5ndGg8PDIpOyFmdW5jdGlvbihBLGcsSSl7dShBLG4sZyxJKX0oQSxnPVYoSSksSSl9cmV0dXJuIGd9LGFycmF5OmZ1bmN0aW9uKEEpe3ZhciBnPVYoQS5sZW5ndGgpO3JldHVybiB3KEEsZyksZ319LHQ9ZnVuY3Rpb24oQSl7cmV0dXJuIElbIl8iK0FdfShBKSxpPVtdLGU9MDtpZihRKWZvcih2YXIgbz0wO288US5sZW5ndGg7bysrKXt2YXIgcj1DW0Jbb11dO3I/KDA9PT1lJiYoZT1qKCkpLGlbb109cihRW29dKSk6aVtvXT1RW29dfXZhciBhLHM9dC5hcHBseShudWxsLGkpO3JldHVybiBhPXMsMCE9PWUmJlgoZSkscz1mdW5jdGlvbihBKXtyZXR1cm4ic3RyaW5nIj09PWc/ZihBKToiYm9vbGVhbiI9PT1nP0Jvb2xlYW4oQSk6QX0oYSl9LEkuVVRGOFRvU3RyaW5nPWYsSS5hbGxvY2F0ZVVURjg9ZnVuY3Rpb24oQSl7dmFyIGc9RChBKSsxLEk9VyhnKTtyZXR1cm4gSSYmdShBLHIsSSxnKSxJfSxTPWZ1bmN0aW9uIEEoKXtafHx6KCksWnx8KFM9QSl9LEkucnVuPXosSS5wcmVJbml0KWZvcigiZnVuY3Rpb24iPT10eXBlb2YgSS5wcmVJbml0JiYoSS5wcmVJbml0PVtJLnByZUluaXRdKTtJLnByZUluaXQubGVuZ3RoPjA7KUkucHJlSW5pdC5wb3AoKSgpO3JldHVybiB6KCksQS5yZWFkeX0sSGM9WWM7dmFyIHZjPWVCLExjPVMsSmM9W10uam9pbixtYz1HIT1PYmplY3QsS2M9V2koImpvaW4iLCIsIik7dmMoe3RhcmdldDoiQXJyYXkiLHByb3RvOiEwLGZvcmNlZDptY3x8IUtjfSx7am9pbjpmdW5jdGlvbihBKXtyZXR1cm4gSmMuY2FsbChMYyh0aGlzKSx2b2lkIDA9PT1BPyIsIjpBKX19KTt2YXIgeGM9ZnVuY3Rpb24oKXtyZXR1cm4gRSgoZnVuY3Rpb24gQSgpe3ZhciBnLEk7Qih0aGlzLEEpO3ZhciBRPW5ldyBQcm9taXNlKChmdW5jdGlvbihBLEIpe2c9QSxJPUJ9KSk7cmV0dXJuIFEucmVzb2x2ZT1nLFEucmVqZWN0PUksUX0pLFt7a2V5OiJyZXNvbHZlIix2YWx1ZTpmdW5jdGlvbihBKXt9fSx7a2V5OiJyZWplY3QiLHZhbHVlOmZ1bmN0aW9uKEEpe319XSl9KCkscWM9ZUIsYmM9RCxUYz1PQyxPYz12LFBjPW5BLFdjPWpBLFpjPWdvLGpjPWpDLFhjPUVvLFZjPVNBLHpjPWJBKCJpc0NvbmNhdFNwcmVhZGFibGUiKSxfYz05MDA3MTk5MjU0NzQwOTkxLCRjPSJNYXhpbXVtIGFsbG93ZWQgaW5kZXggZXhjZWVkZWQiLEFoPVZjPj01MXx8IWJjKChmdW5jdGlvbigpe3ZhciBBPVtdO3JldHVybiBBW3pjXT0hMSxBLmNvbmNhdCgpWzBdIT09QX0pKSxnaD1YYygiY29uY2F0IiksSWg9ZnVuY3Rpb24oQSl7aWYoIU9jKEEpKXJldHVybiExO3ZhciBnPUFbemNdO3JldHVybiB2b2lkIDAhPT1nPyEhZzpUYyhBKX07cWMoe3RhcmdldDoiQXJyYXkiLHByb3RvOiEwLGZvcmNlZDohQWh8fCFnaH0se2NvbmNhdDpmdW5jdGlvbihBKXt2YXIgZyxJLEIsUSxFLEM9UGModGhpcyksdD1qYyhDLDApLGk9MDtmb3IoZz0tMSxCPWFyZ3VtZW50cy5sZW5ndGg7ZzxCO2crKylpZihJaChFPS0xPT09Zz9DOmFyZ3VtZW50c1tnXSkpe2lmKGkrKFE9V2MoRS5sZW5ndGgpKT5fYyl0aHJvdyBUeXBlRXJyb3IoJGMpO2ZvcihJPTA7STxRO0krKyxpKyspSSBpbiBFJiZaYyh0LGksRVtJXSl9ZWxzZXtpZihpPj1fYyl0aHJvdyBUeXBlRXJyb3IoJGMpO1pjKHQsaSsrLEUpfXJldHVybiB0Lmxlbmd0aD1pLHR9fSksUHJvbWlzZS53aXRoUmVzb2x2ZXJzfHwoUHJvbWlzZS53aXRoUmVzb2x2ZXJzPWZ1bmN0aW9uKCl7dmFyIEE9e307cmV0dXJuIEEucHJvbWlzZT1uZXcgUHJvbWlzZSgoZnVuY3Rpb24oZyxJKXtBLnJlc29sdmU9ZyxBLnJlamVjdD1JfSkpLEF9KTt2YXIgQmg9MCxRaD0xLEVoPWZ1bmN0aW9uKCl7cmV0dXJuIEUoKGZ1bmN0aW9uIEEoKXtCKHRoaXMsQSl9KSxbe2tleToiaW5pdCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgQT1uZXcgeGM7cmV0dXJuIHRoaXMubW9kdWxlPXtvblJ1bnRpbWVJbml0aWFsaXplZDpmdW5jdGlvbigpe0EucmVzb2x2ZSgpfSxvbkFib3J0OmZ1bmN0aW9uKGcpe0EucmVqZWN0KGcpfX0sSGModGhpcy5tb2R1bGUpLEF9fSx7a2V5OiJkZXNjcnlwdEtleSIsdmFsdWU6ZnVuY3Rpb24oQSxnKXt2YXIgSSxCLFE9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOjE2LEU9YXJndW1lbnRzLmxlbmd0aD4zJiZ2b2lkIDAhPT1hcmd1bWVudHNbM10/YXJndW1lbnRzWzNdOkJoO3RyeXt2YXIgQz1mdW5jdGlvbihBKXtpZigiIj09PUEpcmV0dXJuIiI7Zm9yKHZhciBnPVtdLEk9MDtJPEEubGVuZ3RoO0krKylnLnB1c2goQS5jaGFyQ29kZUF0KEkpKTtyZXR1cm4gZ30oc2VsZi5hdG9iKEEpKTtJPXRoaXMubW9kdWxlLl9tYWxsb2MoTnVtYmVyKEMubGVuZ3RoKSksdGhpcy5tb2R1bGUuSEVBUDguc2V0KEMsSSksZz1nfHxuZXcgVWludDhBcnJheSxnPW5ldyBVaW50OEFycmF5KGcpLEI9dGhpcy5tb2R1bGUuX21hbGxvYyhnLmJ5dGVMZW5ndGgpLHRoaXMubW9kdWxlLkhFQVA4LnNldChnLEIpLHRoaXMubW9kdWxlLl9kZWNyeXB0S2V5KEUsSSxDLmxlbmd0aCxRLGcuYnl0ZUxlbmd0aCxCKX1jYXRjaCh0KXtjb25zb2xlLmxvZyh0KX1maW5hbGx5e3RoaXMubW9kdWxlLl9mcmVlKEkpLHRoaXMubW9kdWxlLl9mcmVlKEIpfX19LHtrZXk6ImRlc2NyeXB0Iix2YWx1ZTpmdW5jdGlvbihBLGcpe3ZhciBJLEIsUT1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06Qmg7dHJ5e3ZhciBFPW5ldyBVaW50OEFycmF5KGcpO0k9dGhpcy5tb2R1bGUuX21hbGxvYyhBLmJ5dGVMZW5ndGgpLHRoaXMubW9kdWxlLkhFQVA4LnNldChBLEkpLEI9dGhpcy5tb2R1bGUuX21hbGxvYyhFLmJ5dGVMZW5ndGgpLHRoaXMubW9kdWxlLkhFQVA4LnNldChFLEIpLHRoaXMubW9kdWxlLl9kZXNjcnlwdChRLEksQS5ieXRlTGVuZ3RoLEIpO3ZhciBDPXRoaXMubW9kdWxlLkhFQVBVOC5zbGljZShJLEkrQS5ieXRlTGVuZ3RoKTtyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoQyl9Y2F0Y2goU3kpe2NvbnNvbGUubG9nKFN5KX1maW5hbGx5e3RoaXMubW9kdWxlLl9mcmVlKEkpLHRoaXMubW9kdWxlLl9mcmVlKEIpfX19LHtrZXk6ImRlc2NyeXB0S2RzS2V5Iix2YWx1ZTpmdW5jdGlvbihBLGcsSSl7dmFyIEIsUSxFLEM9YXJndW1lbnRzLmxlbmd0aD4zJiZ2b2lkIDAhPT1hcmd1bWVudHNbM10/YXJndW1lbnRzWzNdOjE2O3RyeXt2YXIgdD1uZXcgVWludDhBcnJheShnKSxpPW5ldyBVaW50OEFycmF5KEkpO0I9dGhpcy5tb2R1bGUuX21hbGxvYyh0LmJ5dGVMZW5ndGgpLHRoaXMubW9kdWxlLkhFQVA4LnNldCh0LEIpLFE9dGhpcy5tb2R1bGUuX21hbGxvYyhBLmJ5dGVMZW5ndGgpLHRoaXMubW9kdWxlLkhFQVA4LnNldChBLFEpLEU9dGhpcy5tb2R1bGUuX21hbGxvYyhpLmJ5dGVMZW5ndGgpLHRoaXMubW9kdWxlLkhFQVA4LnNldChpLEUpLHRoaXMubW9kdWxlLl9kZXNjcnlwdEtkc0tleShCLHQuYnl0ZUxlbmd0aCxRLEEuYnl0ZUxlbmd0aCxFLEMpfWNhdGNoKFN5KXtjb25zb2xlLmxvZyhTeSl9ZmluYWxseXt0aGlzLm1vZHVsZS5fZnJlZShRKSx0aGlzLm1vZHVsZS5fZnJlZShFKSx0aGlzLm1vZHVsZS5fZnJlZShCKX19fSx7a2V5OiJkZXNjcnlwdENCQyIsdmFsdWU6ZnVuY3Rpb24oQSxnKXt2YXIgSSxCO3RyeXt2YXIgUT1uZXcgVWludDhBcnJheShnKTtyZXR1cm4gST10aGlzLm1vZHVsZS5fbWFsbG9jKEEuYnl0ZUxlbmd0aCksdGhpcy5tb2R1bGUuSEVBUDguc2V0KEEsSSksQj10aGlzLm1vZHVsZS5fbWFsbG9jKFEuYnl0ZUxlbmd0aCksdGhpcy5tb2R1bGUuSEVBUDguc2V0KFEsQiksdGhpcy5tb2R1bGUuX2Rlc2NyeXB0Q0JDKEksQS5ieXRlTGVuZ3RoLEIpLHRoaXMubW9kdWxlLkhFQVBVOC5zbGljZShJLEkrQS5ieXRlTGVuZ3RoKX1jYXRjaChTeSl7Y29uc29sZS5sb2coU3kpfWZpbmFsbHl7dGhpcy5tb2R1bGUuX2ZyZWUoSSksdGhpcy5tb2R1bGUuX2ZyZWUoQil9fX0se2tleToic2V0UmF3Iix2YWx1ZTpmdW5jdGlvbihBKXt2YXIgZyxJPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTpRaDt0cnl7dmFyIEI9bmV3IFVpbnQ4QXJyYXkoQSk7Zz10aGlzLm1vZHVsZS5fbWFsbG9jKEIuYnl0ZUxlbmd0aCksdGhpcy5tb2R1bGUuSEVBUDguc2V0KEIsZyksdGhpcy5tb2R1bGUuX3NldFJhdyhnLEIuYnl0ZUxlbmd0aCxJKX1jYXRjaChTeSl7Y29uc29sZS5sb2coU3kpfWZpbmFsbHl7dGhpcy5tb2R1bGUuX2ZyZWUoZyl9fX0se2tleToiZGVzdHJveSIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLm1vZHVsZSYmKHRoaXMubW9kdWxlPW51bGwpfX1dKX0oKTtmdW5jdGlvbiBDaChBLGcpe2lmKCEoQSBpbnN0YW5jZW9mIGcpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfWZ1bmN0aW9uIHRoKEEsZyl7Zm9yKHZhciBJPTA7STxnLmxlbmd0aDtJKyspe3ZhciBCPWdbSV07Qi5lbnVtZXJhYmxlPUIuZW51bWVyYWJsZXx8ITEsQi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIEImJihCLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoQSxzaChCLmtleSksQil9fWZ1bmN0aW9uIGloKEEsZyxJKXtyZXR1cm4gZyYmdGgoQS5wcm90b3R5cGUsZyksSSYmdGgoQSxJKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoQSwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxBfWZ1bmN0aW9uIGVoKEEsZyxJKXtyZXR1cm4oZz1zaChnKSlpbiBBP09iamVjdC5kZWZpbmVQcm9wZXJ0eShBLGcse3ZhbHVlOkksZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTpBW2ddPUksQX1mdW5jdGlvbiBvaChBLGcpe3JldHVybiBmdW5jdGlvbihBKXtpZihBcnJheS5pc0FycmF5KEEpKXJldHVybiBBfShBKXx8ZnVuY3Rpb24oQSxnKXt2YXIgST1udWxsPT1BP251bGw6InVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJkFbU3ltYm9sLml0ZXJhdG9yXXx8QVsiQEBpdGVyYXRvciJdO2lmKG51bGwhPUkpe3ZhciBCLFEsRSxDLHQ9W10saT0hMCxlPSExO3RyeXtpZihFPShJPUkuY2FsbChBKSkubmV4dCwwPT09Zyl7aWYoT2JqZWN0KEkpIT09SSlyZXR1cm47aT0hMX1lbHNlIGZvcig7IShpPShCPUUuY2FsbChJKSkuZG9uZSkmJih0LnB1c2goQi52YWx1ZSksdC5sZW5ndGghPT1nKTtpPSEwKTt9Y2F0Y2gobyl7ZT0hMCxRPW99ZmluYWxseXt0cnl7aWYoIWkmJm51bGwhPUkucmV0dXJuJiYoQz1JLnJldHVybigpLE9iamVjdChDKSE9PUMpKXJldHVybn1maW5hbGx5e2lmKGUpdGhyb3cgUX19cmV0dXJuIHR9fShBLGcpfHxuaChBLGcpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9ZnVuY3Rpb24gcmgoQSl7cmV0dXJuIGZ1bmN0aW9uKEEpe2lmKEFycmF5LmlzQXJyYXkoQSkpcmV0dXJuIGFoKEEpfShBKXx8ZnVuY3Rpb24oQSl7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJm51bGwhPUFbU3ltYm9sLml0ZXJhdG9yXXx8bnVsbCE9QVsiQEBpdGVyYXRvciJdKXJldHVybiBBcnJheS5mcm9tKEEpfShBKXx8bmgoQSl8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9ZnVuY3Rpb24gbmgoQSxnKXtpZihBKXtpZigic3RyaW5nIj09dHlwZW9mIEEpcmV0dXJuIGFoKEEsZyk7dmFyIEk9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKEEpLnNsaWNlKDgsLTEpO3JldHVybiJPYmplY3QiPT09SSYmQS5jb25zdHJ1Y3RvciYmKEk9QS5jb25zdHJ1Y3Rvci5uYW1lKSwiTWFwIj09PUl8fCJTZXQiPT09ST9BcnJheS5mcm9tKEEpOiJBcmd1bWVudHMiPT09SXx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QoSSk/YWgoQSxnKTp2b2lkIDB9fWZ1bmN0aW9uIGFoKEEsZyl7KG51bGw9PWd8fGc+QS5sZW5ndGgpJiYoZz1BLmxlbmd0aCk7Zm9yKHZhciBJPTAsQj1uZXcgQXJyYXkoZyk7STxnO0krKylCW0ldPUFbSV07cmV0dXJuIEJ9ZnVuY3Rpb24gc2goQSl7dmFyIGc9ZnVuY3Rpb24oQSxnKXtpZigib2JqZWN0IiE9dHlwZW9mIEF8fG51bGw9PT1BKXJldHVybiBBO3ZhciBJPUFbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1JKXt2YXIgQj1JLmNhbGwoQSxnfHwiZGVmYXVsdCIpO2lmKCJvYmplY3QiIT10eXBlb2YgQilyZXR1cm4gQjt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybigic3RyaW5nIj09PWc/U3RyaW5nOk51bWJlcikoQSl9KEEsInN0cmluZyIpO3JldHVybiJzeW1ib2wiPT10eXBlb2YgZz9nOlN0cmluZyhnKX12YXIgY2g9InZpZGVvIixoaD0iYXVkaW8iLGZoPSJtZXRhZGF0YSIseWg9ImF2YyIsdWg9ImhldmMiLERoPSJ2dmNDIix3aD0iYWFjIixsaD0iZzcxMTBhIixkaD0iZzcxMTBtIixGaD1mdW5jdGlvbigpe2Z1bmN0aW9uIEEoKXtDaCh0aGlzLEEpLGVoKHRoaXMsImlkIiwxKSxlaCh0aGlzLCJ0eXBlIixjaCksZWgodGhpcywiY29kZWNUeXBlIix5aCksZWgodGhpcywicGlkIiwtMSksZWgodGhpcywiaHZjQyIsdm9pZCAwKSxlaCh0aGlzLCJjb2RlYyIsIiIpLGVoKHRoaXMsInRpbWVzY2FsZSIsMCksZWgodGhpcywiZm9ybWF0VGltZXNjYWxlIiwwKSxlaCh0aGlzLCJzZXF1ZW5jZU51bWJlciIsMCksZWgodGhpcywiYmFzZU1lZGlhRGVjb2RlVGltZSIsMCksZWgodGhpcywiYmFzZUR0cyIsMCksZWgodGhpcywiZHVyYXRpb24iLDApLGVoKHRoaXMsIndhcm5pbmdzIixbXSksZWgodGhpcywic2FtcGxlcyIsW10pLGVoKHRoaXMsInBwcyIsW10pLGVoKHRoaXMsInNwcyIsW10pLGVoKHRoaXMsInZwcyIsW10pLGVoKHRoaXMsImZwc051bSIsMCksZWgodGhpcywiZnBzRGVuIiwwKSxlaCh0aGlzLCJzYXJSYXRpbyIsW10pLGVoKHRoaXMsIndpZHRoIiwwKSxlaCh0aGlzLCJoZWlnaHQiLDApLGVoKHRoaXMsIm5hbFVuaXRTaXplIiw0KSxlaCh0aGlzLCJwcmVzZW50IiwhMSksZWgodGhpcywiaXNWaWRlb0VuY3J5cHRpb24iLCExKSxlaCh0aGlzLCJpc0F1ZGlvRW5jcnlwdGlvbiIsITEpLGVoKHRoaXMsImlzVmlkZW8iLCEwKSxlaCh0aGlzLCJraWQiLG51bGwpLGVoKHRoaXMsInBzc2giLG51bGwpLGVoKHRoaXMsImV4dCIsdm9pZCAwKX1yZXR1cm4gaWgoQSxbe2tleToicmVzZXQiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5zZXF1ZW5jZU51bWJlcj10aGlzLndpZHRoPXRoaXMuaGVpZ2h0PXRoaXMuZnBzRGVuPXRoaXMuZnBzTnVtPXRoaXMuZHVyYXRpb249dGhpcy5iYXNlTWVkaWFEZWNvZGVUaW1lPXRoaXMudGltZXNjYWxlPTAsdGhpcy5jb2RlYz0iIix0aGlzLnByZXNlbnQ9ITEsdGhpcy5waWQ9LTEsdGhpcy5wcHM9W10sdGhpcy5zcHM9W10sdGhpcy52cHM9W10sdGhpcy5zYXJSYXRpbz1bXSx0aGlzLnNhbXBsZXM9W10sdGhpcy53YXJuaW5ncz1bXSx0aGlzLmh2Y0M9bnVsbH19LHtrZXk6ImV4aXN0Iix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiEhKHRoaXMucHBzLmxlbmd0aCYmdGhpcy5zcHMubGVuZ3RoJiZ0aGlzLmNvZGVjKX19LHtrZXk6Imhhc1NhbXBsZSIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4hIXRoaXMuc2FtcGxlcy5sZW5ndGh9fSx7a2V5OiJpc0VuY3J5cHRpb24iLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmlzVmlkZW9FbmNyeXB0aW9ufX1dKSxBfSgpLEdoPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gQSgpe0NoKHRoaXMsQSksZWgodGhpcywiaWQiLDIpLGVoKHRoaXMsInR5cGUiLGhoKSxlaCh0aGlzLCJjb2RlY1R5cGUiLHdoKSxlaCh0aGlzLCJwaWQiLC0xKSxlaCh0aGlzLCJjb2RlYyIsIiIpLGVoKHRoaXMsInNlcXVlbmNlTnVtYmVyIiwwKSxlaCh0aGlzLCJzYW1wbGVEdXJhdGlvbiIsMCksZWgodGhpcywidGltZXNjYWxlIiwwKSxlaCh0aGlzLCJmb3JtYXRUaW1lc2NhbGUiLDApLGVoKHRoaXMsImJhc2VNZWRpYURlY29kZVRpbWUiLDApLGVoKHRoaXMsImR1cmF0aW9uIiwwKSxlaCh0aGlzLCJ3YXJuaW5ncyIsW10pLGVoKHRoaXMsInNhbXBsZXMiLFtdKSxlaCh0aGlzLCJiYXNlRHRzIiwwKSxlaCh0aGlzLCJzYW1wbGVTaXplIiwxNiksZWgodGhpcywic2FtcGxlUmF0ZSIsMCksZWgodGhpcywiY2hhbm5lbENvdW50IiwwKSxlaCh0aGlzLCJvYmplY3RUeXBlIiwwKSxlaCh0aGlzLCJzYW1wbGVSYXRlSW5kZXgiLDApLGVoKHRoaXMsImNvbmZpZyIsW10pLGVoKHRoaXMsInByZXNlbnQiLCExKSxlaCh0aGlzLCJpc1ZpZGVvRW5jcnlwdGlvbiIsITEpLGVoKHRoaXMsImlzQXVkaW9FbmNyeXB0aW9uIiwhMSksZWgodGhpcywia2lkIixudWxsKSxlaCh0aGlzLCJleHQiLHZvaWQgMCl9cmV0dXJuIGloKEEsW3trZXk6InJlc2V0Iix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuc2VxdWVuY2VOdW1iZXI9MCx0aGlzLnRpbWVzY2FsZT0wLHRoaXMuc2FtcGxlRHVyYXRpb249MCx0aGlzLnNhbXBsZVJhdGU9MCx0aGlzLmNoYW5uZWxDb3VudD0wLHRoaXMuYmFzZU1lZGlhRGVjb2RlVGltZT0wLHRoaXMucHJlc2VudD0hMSx0aGlzLnBpZD0tMSx0aGlzLmNvZGVjPSIiLHRoaXMuc2FtcGxlcz1bXSx0aGlzLmNvbmZpZz1bXSx0aGlzLndhcm5pbmdzPVtdfX0se2tleToiZXhpc3QiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuISEodGhpcy5zYW1wbGVSYXRlJiZ0aGlzLmNoYW5uZWxDb3VudCYmdGhpcy5jb2RlYyYmdGhpcy5jb2RlY1R5cGU9PT13aCl9fSx7a2V5OiJoYXNTYW1wbGUiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuISF0aGlzLnNhbXBsZXMubGVuZ3RofX0se2tleToiaXNFbmNyeXB0aW9uIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pc0F1ZGlvRW5jcnlwdGlvbn19XSksQX0oKSxSaD1mdW5jdGlvbigpe2Z1bmN0aW9uIEEoZyxJLEIpe0NoKHRoaXMsQSksZWgodGhpcywiZmxhZyIse30pLGVoKHRoaXMsImtleWZyYW1lIiwhMSksZWgodGhpcywiZ29wSWQiLDApLGVoKHRoaXMsImR1cmF0aW9uIiwwKSxlaCh0aGlzLCJzaXplIiwwKSxlaCh0aGlzLCJ1bml0cyIsW10pLGVoKHRoaXMsImNocm9tYUZvcm1hdCIsNDIwKSx0aGlzLm9yaWdpblB0cz10aGlzLnB0cz1nLHRoaXMub3JpZ2luRHRzPXRoaXMuZHRzPUksQiYmKHRoaXMudW5pdHM9Qil9cmV0dXJuIGloKEEsW3trZXk6ImN0cyIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHRzLXRoaXMuZHRzfX0se2tleToic2V0VG9LZXlmcmFtZSIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmtleWZyYW1lPSEwLHRoaXMuZmxhZy5kZXBlbmRzT249Mix0aGlzLmZsYWcuaXNOb25TeW5jU2FtcGxlPTB9fV0pLEF9KCksVWg9aWgoKGZ1bmN0aW9uIEEoZyxJLEIsUSl7Q2godGhpcyxBKSxlaCh0aGlzLCJkdXJhdGlvbiIsMTAyNCksZWgodGhpcywiZmxhZyIse2RlcGVuZHNPbjoyLGlzTm9uU3luY1NhbXBsZTowfSksZWgodGhpcywia2V5ZnJhbWUiLCEwKSx0aGlzLm9yaWdpblB0cz10aGlzLnB0cz10aGlzLmR0cz1nLHRoaXMuZGF0YT1JLHRoaXMuc2l6ZT1JLmJ5dGVMZW5ndGgsdGhpcy5zYW1wbGVPZmZzZXQ9USxCJiYodGhpcy5kdXJhdGlvbj1CKX0pKSxraD1mdW5jdGlvbigpe2Z1bmN0aW9uIEEoKXtDaCh0aGlzLEEpLGVoKHRoaXMsImlkIiwzKSxlaCh0aGlzLCJ0eXBlIixmaCksZWgodGhpcywidGltZXNjYWxlIiwwKSxlaCh0aGlzLCJmbHZTY3JpcHRTYW1wbGVzIixbXSksZWgodGhpcywic2VpU2FtcGxlcyIsW10pfXJldHVybiBpaChBLFt7a2V5OiJleGlzdCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4hKCF0aGlzLmZsdlNjcmlwdFNhbXBsZXMubGVuZ3RoJiYhdGhpcy5zZWlTYW1wbGVzLmxlbmd0aHx8IXRoaXMudGltZXNjYWxlKX19LHtrZXk6InJlc2V0Iix2YWx1ZTpmdW5jdGlvbigpe3RoaXMudGltZXNjYWxlPTAsdGhpcy5mbHZTY3JpcHRTYW1wbGVzPVtdLHRoaXMuc2VpU2FtcGxlcz1bXX19LHtrZXk6Imhhc1NhbXBsZSIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4hKCF0aGlzLmZsdlNjcmlwdFNhbXBsZXMubGVuZ3RoJiYhdGhpcy5zZWlTYW1wbGVzLmxlbmd0aCl9fV0pLEF9KCksU2g9InVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3cscGg9U2gmJm5hdmlnYXRvci51c2VyQWdlbnQudG9Mb2NhbGVMb3dlckNhc2UoKSxOaD1TaCYmcGguaW5jbHVkZXMoImZpcmVmb3giKSxNaD1TaCYmcGguaW5jbHVkZXMoImFuZHJvaWQiKSxZaD1mdW5jdGlvbigpe2Z1bmN0aW9uIEEoKXtDaCh0aGlzLEEpfXJldHVybiBpaChBLG51bGwsW3trZXk6ImdldFJhdGVJbmRleEJ5UmF0ZSIsdmFsdWU6ZnVuY3Rpb24oZyl7cmV0dXJuIEEuRlJFUS5pbmRleE9mKGcpfX0se2tleToicGFyc2VBRFRTIix2YWx1ZTpmdW5jdGlvbihnLEkpe2Zvcih2YXIgQj1nLmxlbmd0aCxRPTA7USsyPEImJigyNTUhPT1nW1FdfHwyNDAhPSgyNDYmZ1tRKzFdKSk7KVErKztpZighKFE+PUIpKXt2YXIgRT1RLEM9W10sdD0oNjAmZ1tRKzJdKT4+PjIsaT1BLkZSRVFbdF07aWYoIWkpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIHNhbXBsaW5nIGluZGV4OiAiLmNvbmNhdCh0KSk7Zm9yKHZhciBlLG8scj0xKygoMTkyJmdbUSsyXSk+Pj42KSxuPSgxJmdbUSsyXSk8PDJ8KDE5MiZnW1ErM10pPj4+NixhPUEuX2dldENvbmZpZyh0LG4scikscz1hLmNvbmZpZyxjPWEuY29kZWMsaD0wLGY9QS5nZXRGcmFtZUR1cmF0aW9uKGkpO1ErNzxCOylpZigyNTU9PT1nW1FdJiYyNDA9PSgyNDYmZ1tRKzFdKSl7aWYoQi1RPChvPSgzJmdbUSszXSk8PDExfGdbUSs0XTw8M3woMjI0JmdbUSs1XSk+PjUpKWJyZWFrO2U9MiooMSZ+Z1tRKzFdKSxDLnB1c2goe3B0czpJK2gqZixkYXRhOmcuc3ViYXJyYXkoUSs3K2UsUStvKX0pLGgrKyxRKz1vfWVsc2UgUSsrO3JldHVybntza2lwOkUscmVtYWluaW5nOlE+PUI/dm9pZCAwOmcuc3ViYXJyYXkoUSksZnJhbWVzOkMsc2FtcGxpbmdGcmVxdWVuY3lJbmRleDp0LHNhbXBsZVJhdGU6aSxvYmplY3RUeXBlOnIsY2hhbm5lbENvdW50Om4sY29kZWM6Yyxjb25maWc6cyxvcmlnaW5Db2RlYzoibXA0YS40MC4iLmNvbmNhdChyKX19fX0se2tleToicGFyc2VBdWRpb1NwZWNpZmljQ29uZmlnIix2YWx1ZTpmdW5jdGlvbihnKXtpZihnLmxlbmd0aCl7dmFyIEk9Z1swXT4+PjMsQj0oNyZnWzBdKTw8MXxnWzFdPj4+NyxRPSgxMjAmZ1sxXSk+Pj4zLEU9QS5GUkVRW0JdO2lmKEUpe3ZhciBDPUEuX2dldENvbmZpZyhCLFEsSSk7cmV0dXJue3NhbXBsaW5nRnJlcXVlbmN5SW5kZXg6QixzYW1wbGVSYXRlOkUsb2JqZWN0VHlwZTpJLGNoYW5uZWxDb3VudDpRLGNvbmZpZzpDLmNvbmZpZyxjb2RlYzpDLmNvZGVjLG9yaWdpbkNvZGVjOiJtcDRhLjQwLiIuY29uY2F0KEkpfX19fX0se2tleToiZ2V0RnJhbWVEdXJhdGlvbiIsdmFsdWU6ZnVuY3Rpb24oQSl7cmV0dXJuIDEwMjQqKGFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTo5ZTQpL0F9fSx7a2V5OiJfZ2V0Q29uZmlnIix2YWx1ZTpmdW5jdGlvbihBLGcsSSl7dmFyIEIsUSxFPVtdO3JldHVybiBOaD9BPj02PyhCPTUsUT1BLTMpOihCPTIsUT1BKTpNaD8oQj0yLFE9QSk6KEI9Mj09PUl8fDU9PT1JP0k6NSxRPUEsQT49Nj9RPUEtMzoxPT09ZyYmKEI9MixRPUEpKSxFWzBdPUI8PDMsRVswXXw9KDE0JkEpPj4xLEVbMV09KDEmQSk8PDcsRVsxXXw9Zzw8Myw1PT09QiYmKEVbMV18PSgxNCZRKT4+MSxFWzJdPSgxJlEpPDw3LEVbMl18PTgsRVszXT0wKSx7Y29uZmlnOkUsY29kZWM6Im1wNGEuNDAuIi5jb25jYXQoQil9fX0se2tleToiZ2V0U2lsZW50RnJhbWUiLHZhbHVlOmZ1bmN0aW9uKEEsZyl7aWYoIm1wNGEuNDAuMiI9PT1BKXtpZigxPT09ZylyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoWzAsMjAwLDAsMTI4LDM1LDEyOF0pO2lmKDI9PT1nKXJldHVybiBuZXcgVWludDhBcnJheShbMzMsMCw3MywxNDQsMiwyNSwwLDM1LDEyOF0pO2lmKDM9PT1nKXJldHVybiBuZXcgVWludDhBcnJheShbMCwyMDAsMCwxMjgsMzIsMTMyLDEsMzgsNjQsOCwxMDAsMCwxNDJdKTtpZig0PT09ZylyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoWzAsMjAwLDAsMTI4LDMyLDEzMiwxLDM4LDY0LDgsMTAwLDAsMTI4LDQ0LDEyOCw4LDIsNTZdKTtpZig1PT09ZylyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoWzAsMjAwLDAsMTI4LDMyLDEzMiwxLDM4LDY0LDgsMTAwLDAsMTMwLDQ4LDQsMTUzLDAsMzMsMTQ0LDIsNTZdKTtpZig2PT09ZylyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoWzAsMjAwLDAsMTI4LDMyLDEzMiwxLDM4LDY0LDgsMTAwLDAsMTMwLDQ4LDQsMTUzLDAsMzMsMTQ0LDIsMCwxNzgsMCwzMiw4LDIyNF0pfWVsc2V7aWYoMT09PWcpcmV0dXJuIG5ldyBVaW50OEFycmF5KFsxLDY0LDM0LDEyOCwxNjMsNzgsMjMwLDEyOCwxODYsOCwwLDAsMCwyOCw2LDI0MSwxOTMsMTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTRdKTtpZigyPT09ZylyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoWzEsNjQsMzQsMTI4LDE2Myw5NCwyMzAsMTI4LDE4Niw4LDAsMCwwLDAsMTQ5LDAsNiwyNDEsMTYxLDEwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDk0XSk7aWYoMz09PWcpcmV0dXJuIG5ldyBVaW50OEFycmF5KFsxLDY0LDM0LDEyOCwxNjMsOTQsMjMwLDEyOCwxODYsOCwwLDAsMCwwLDE0OSwwLDYsMjQxLDE2MSwxMCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5NF0pfX19XSksQX0oKTtmdW5jdGlvbiBIaCgpe2Zvcih2YXIgQT1hcmd1bWVudHMubGVuZ3RoLGc9bmV3IEFycmF5KEEpLEk9MDtJPEE7SSsrKWdbSV09YXJndW1lbnRzW0ldO2c9Zy5maWx0ZXIoQm9vbGVhbik7dmFyIEI9bmV3IFVpbnQ4QXJyYXkoZy5yZWR1Y2UoKGZ1bmN0aW9uKEEsZyl7cmV0dXJuIEErZy5ieXRlTGVuZ3RofSksMCkpLFE9MDtyZXR1cm4gZy5mb3JFYWNoKChmdW5jdGlvbihBKXtCLnNldChBLFEpLFErPUEuYnl0ZUxlbmd0aH0pKSxCfWVoKFloLCJGUkVRIixbOTZlMyw4ODIwMCw2NGUzLDQ4ZTMsNDQxMDAsMzJlMywyNGUzLDIyMDUwLDE2ZTMsMTJlMywxMTAyNSw4ZTMsNzM1MF0pO3ZhciB2aD1NYXRoLnBvdygyLDMyKTtmdW5jdGlvbiBMaChBKXt2YXIgZz1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06MDtyZXR1cm4oQVtnXTw8OCkrKEFbZysxXXx8MCl9ZnVuY3Rpb24gSmgoQSl7dmFyIGc9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOjA7cmV0dXJuKEFbZ108PDI0Pj4+MCkrKEFbZysxXTw8MTYpKyhBW2crMl08PDgpKyhBW2crM118fDApfWZ1bmN0aW9uIG1oKEEpe3ZhciBnPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTowO3JldHVybiBuZXcgRGF0YVZpZXcoQS5idWZmZXIsQS5ieXRlT2Zmc2V0LEEuYnl0ZUxlbmd0aCkuZ2V0SW50MzIoZyl9ZnVuY3Rpb24gS2goQSl7dmFyIGc9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOjA7cmV0dXJuIEpoKEEsZykqdmgrSmgoQSxnKzQpfWZ1bmN0aW9uIHhoKEEpe3ZhciBnPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTowLEk9bmV3IERhdGFWaWV3KEEuYnVmZmVyLEEuYnl0ZU9mZnNldCxBLmJ5dGVMZW5ndGgpO3JldHVybiBJLmdldFVpbnQzMihnKTw8MzJ8SS5nZXRVaW50MzIoZys0KX1mdW5jdGlvbiBxaChBKXt2YXIgZz0iIjtpZihBLmZvckVhY2goKGZ1bmN0aW9uKEEpe2crPWZ1bmN0aW9uKEEpe3JldHVybigiMCIrTnVtYmVyKEEpLnRvU3RyaW5nKDE2KSkuc2xpY2UoLTIpLnRvVXBwZXJDYXNlKCl9KEEpfSkpLGcubGVuZ3RoPD0zMilmb3IodmFyIEk9MzItZy5sZW5ndGgsQj0wO0I8STtCKyspZys9IjAiO3JldHVybiBnfWZ1bmN0aW9uIGJoKEEpe2lmKCFBcnJheS5pc0FycmF5KEEpKXtmb3IodmFyIGc9W10sST0iIixCPTA7QjxBLmxlbmd0aDtCKyspQiUyJiYoST1BW0ItMV0rQVtCXSxnLnB1c2gocGFyc2VJbnQoSSwxNikpLEk9IiIpO3JldHVybiBnfXJldHVybiBBLm1hcCgoZnVuY3Rpb24oQSl7cmV0dXJuIHBhcnNlSW50KEEsMTYpfSkpfXZhciBUaD1mdW5jdGlvbigpe2Z1bmN0aW9uIEEoZyl7aWYoQ2godGhpcyxBKSxlaCh0aGlzLCJfYnl0ZXNBdmFpbGFibGUiLHZvaWQgMCksZWgodGhpcywiX2JpdHNBdmFpbGFibGUiLDApLGVoKHRoaXMsIl93b3JkIiwwKSwhZyl0aHJvdyBuZXcgRXJyb3IoIkV4cEdvbG9tYiBkYXRhIHBhcmFtcyBpcyByZXF1aXJlZCIpO3RoaXMuX2RhdGE9Zyx0aGlzLl9ieXRlc0F2YWlsYWJsZT1nLmJ5dGVMZW5ndGgsdGhpcy5fYnl0ZXNBdmFpbGFibGUmJnRoaXMuX2xvYWRXb3JkKCl9cmV0dXJuIGloKEEsW3trZXk6Il9sb2FkV29yZCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgQT10aGlzLl9kYXRhLmJ5dGVMZW5ndGgtdGhpcy5fYnl0ZXNBdmFpbGFibGUsZz1NYXRoLm1pbig0LHRoaXMuX2J5dGVzQXZhaWxhYmxlKTtpZigwPT09Zyl0aHJvdyBuZXcgRXJyb3IoIk5vIGJ5dGVzIGF2YWlsYWJsZSIpO3ZhciBJPW5ldyBVaW50OEFycmF5KDQpO0kuc2V0KHRoaXMuX2RhdGEuc3ViYXJyYXkoQSxBK2cpKSx0aGlzLl93b3JkPW5ldyBEYXRhVmlldyhJLmJ1ZmZlcikuZ2V0VWludDMyKDApLHRoaXMuX2JpdHNBdmFpbGFibGU9OCpnLHRoaXMuX2J5dGVzQXZhaWxhYmxlLT1nfX0se2tleToiYml0c1BvcyIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gOCp0aGlzLl9ieXRlc0F2YWlsYWJsZS10aGlzLl9iaXRzQXZhaWxhYmxlfX0se2tleToiYml0c0xlZnQiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIDgqdGhpcy5fZGF0YS5sZW5ndGgtdGhpcy5iaXRzUG9zKCl9fSx7a2V5OiJieXRlQWxpZ25lZCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gMD09PXRoaXMuYml0c1BvcygpfHx0aGlzLmJpdHNQb3MoKSU4PT0wfX0se2tleToic2tpcEJpdHMiLHZhbHVlOmZ1bmN0aW9uKEEpe2lmKHRoaXMuX2JpdHNBdmFpbGFibGU+QSl0aGlzLl93b3JkPDw9QSx0aGlzLl9iaXRzQXZhaWxhYmxlLT1BO2Vsc2V7QS09dGhpcy5fYml0c0F2YWlsYWJsZTt2YXIgZz1NYXRoLmZsb29yKEEvOCk7QS09OCpnLHRoaXMuX2J5dGVzQXZhaWxhYmxlLT1nLHRoaXMuX2xvYWRXb3JkKCksdGhpcy5fd29yZDw8PUEsdGhpcy5fYml0c0F2YWlsYWJsZS09QX19fSx7a2V5OiJyZWFkQml0cyIsdmFsdWU6ZnVuY3Rpb24oQSl7aWYoQT4zMil0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCByZWFkIG1vcmUgdGhhbiAzMiBiaXRzIik7dmFyIGc9TWF0aC5taW4odGhpcy5fYml0c0F2YWlsYWJsZSxBKSxJPXRoaXMuX3dvcmQ+Pj4zMi1nO3JldHVybiB0aGlzLl9iaXRzQXZhaWxhYmxlLT1nLHRoaXMuX2JpdHNBdmFpbGFibGU+MD90aGlzLl93b3JkPDw9Zzp0aGlzLl9ieXRlc0F2YWlsYWJsZT4wJiZ0aGlzLl9sb2FkV29yZCgpLChnPUEtZyk+MCYmdGhpcy5fYml0c0F2YWlsYWJsZT9JPDxnfHRoaXMucmVhZEJpdHMoZyk6SX19LHtrZXk6InNraXBMWiIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgQTtmb3IoQT0wO0E8dGhpcy5fYml0c0F2YWlsYWJsZTsrK0EpaWYodGhpcy5fd29yZCYyMTQ3NDgzNjQ4Pj4+QSlyZXR1cm4gdGhpcy5fd29yZDw8PUEsdGhpcy5fYml0c0F2YWlsYWJsZS09QSxBO3JldHVybiB0aGlzLl9sb2FkV29yZCgpLEErdGhpcy5za2lwTFooKX19LHtrZXk6InNraXBVRUciLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5za2lwQml0cygxK3RoaXMuc2tpcExaKCkpfX0se2tleToicmVhZFVFRyIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgQT10aGlzLnNraXBMWigpO3JldHVybiB0aGlzLnJlYWRCaXRzKEErMSktMX19LHtrZXk6InJlYWRFRyIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgQT10aGlzLnJlYWRVRUcoKTtyZXR1cm4gMSZBPzErQT4+PjE6LTEqKEE+Pj4xKX19LHtrZXk6InJlYWRCb29sIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiAxPT09dGhpcy5yZWFkQml0cygxKX19LHtrZXk6InJlYWRVQnl0ZSIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yZWFkQml0cyg4KX19LHtrZXk6InNraXBTY2FsaW5nTGlzdCIsdmFsdWU6ZnVuY3Rpb24oQSl7Zm9yKHZhciBnPTgsST04LEI9MDtCPEE7QisrKTAhPT1JJiYoST0oZyt0aGlzLnJlYWRFRygpKzI1NiklMjU2KSxnPTA9PT1JP2c6SX19XSksQX0oKSxPaD1mdW5jdGlvbigpe2Z1bmN0aW9uIEEoZyl7Q2godGhpcyxBKSx0aGlzLl9idWZmZXI9Zyx0aGlzLl9vZmZzZXQ9MCx0aGlzLl9oZWxkQml0cz0wLHRoaXMuX251bUhlbGRCaXRzPTB9cmV0dXJuIGloKEEsW3trZXk6InJlYWRVaW50OCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYnVmZmVyW3RoaXMuX29mZnNldCsrXX19LHtrZXk6InJlYWRVaW50MTYiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2J1ZmZlclt0aGlzLl9vZmZzZXQrK108PDh8dGhpcy5fYnVmZmVyW3RoaXMuX29mZnNldCsrXX19LHtrZXk6InJlYWRVaW50MzIiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2J1ZmZlclt0aGlzLl9vZmZzZXQrK108PDI0fHRoaXMuX2J1ZmZlclt0aGlzLl9vZmZzZXQrK108PDE2fHRoaXMuX2J1ZmZlclt0aGlzLl9vZmZzZXQrK108PDh8dGhpcy5fYnVmZmVyW3RoaXMuX29mZnNldCsrXX19LHtrZXk6InJlYWRVaW50OEFycmF5Iix2YWx1ZTpmdW5jdGlvbihBKXt2YXIgZz10aGlzLl9idWZmZXIuc2xpY2UodGhpcy5fb2Zmc2V0LHRoaXMuX29mZnNldCtBKTtyZXR1cm4gdGhpcy5fb2Zmc2V0Kz1BLGd9fSx7a2V5OiJzdHJlYW1SZWFkMUJ5dGVzIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuX2hlbGRCaXRzPXRoaXMucmVhZFVpbnQ4KCksdGhpcy5fbnVtSGVsZEJpdHM9OH19LHtrZXk6InN0cmVhbVJlYWQyQnl0ZXMiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5faGVsZEJpdHM9dGhpcy5yZWFkVWludDE2KCksdGhpcy5fbnVtSGVsZEJpdHM9MTZ9fSx7a2V5OiJleHRyYWN0Qml0cyIsdmFsdWU6ZnVuY3Rpb24oQSl7dmFyIGc9dGhpcy5faGVsZEJpdHM+PnRoaXMuX251bUhlbGRCaXRzLUEmKDE8PEEpLTE7cmV0dXJuIHRoaXMuX251bUhlbGRCaXRzLT1BLGd9fV0pLEF9KCksUGg9ZnVuY3Rpb24oKXtmdW5jdGlvbiBBKCl7Q2godGhpcyxBKX1yZXR1cm4gaWgoQSxudWxsLFt7a2V5OiJwYXJzZVZWQ0RlY29kZXJDb25maWd1cmF0aW9uUmVjb3JkIix2YWx1ZTpmdW5jdGlvbihnKXt2YXIgST1uZXcgT2goZyksQj1JLnJlYWRVaW50OCgpO0kuc3RyZWFtUmVhZDFCeXRlcygpLEkuZXh0cmFjdEJpdHMoNSk7dmFyIFEsRSxDLHQsaSxlLG8scixuPUkuZXh0cmFjdEJpdHMoMikrMSxhPUkuZXh0cmFjdEJpdHMoMSkscz17fTthJiYoSS5zdHJlYW1SZWFkMkJ5dGVzKCksdD1JLmV4dHJhY3RCaXRzKDIpLGk9SS5leHRyYWN0Qml0cygzKSxFPUkuZXh0cmFjdEJpdHMoMyksQz1JLmV4dHJhY3RCaXRzKDIpLEkuZXh0cmFjdEJpdHMoNikscz1BLnBhcnNlVlZDUFRMUmVjb3JkKEksRSksUT1JLnJlYWRVaW50MTYoKSxlPUkucmVhZFVpbnQxNigpLG89SS5yZWFkVWludDE2KCkscj1JLnJlYWRVaW50MTYoKSk7Zm9yKHZhciBjPUkucmVhZFVpbnQ4KCksaD1bXSxmPVtdLHk9W10sdT1udWxsLEQ9MDtEPGM7RCsrKXtJLnN0cmVhbVJlYWQxQnl0ZXMoKSxJLmV4dHJhY3RCaXRzKDEpLEkuZXh0cmFjdEJpdHMoMik7dmFyIHc9SS5leHRyYWN0Qml0cyg1KSxsPTE7MTMhPT13JiYxMiE9PXcmJihsPUkucmVhZFVpbnQxNigpKTtmb3IodmFyIGQ9MDtkPGw7ZCsrKXt2YXIgRj1JLnJlYWRVaW50MTYoKTtzd2l0Y2godyl7Y2FzZSAxNDpoLnB1c2goSS5yZWFkVWludDhBcnJheShGKSk7YnJlYWs7Y2FzZSAxNTp2YXIgRz1JLnJlYWRVaW50OEFycmF5KEYpO3V8fCh1PUEucGFyc2VTUFMoQS5yZW1vdmVFUEIoRykpKSxmLnB1c2goRyk7YnJlYWs7Y2FzZSAxNjp5LnB1c2goSS5yZWFkVWludDhBcnJheShGKSl9fX1yZXR1cm57ZGF0YTpnLGNvbmZpZ3VyYXRpb25WZXJzaW9uOkIsY29kZWM6ImJ2YzIuMS42Lkw5My5CMCIsbmFsVW5pdFNpemU6bixwdGxQcmVzZW50RmxhZzphLG9sc0lkeDpRLG51bVN1YmxheWVyczpFLGNvbnN0YW50RnJhbWVSYXRlOkMsY2hyb21hRm9ybWF0SWRjOnQsYml0RGVwdGhMdW1hTWludXM4OmkscHRsUmVjb3JkOnMsd2lkdGg6ZSxoZWlnaHQ6byxzYW1wbGVSYXRlOnIsbnVtT2ZBcnJheXM6Yyx2cHM6aCxzcHM6ZixwcHM6eSxzcHNQYXJzZWQ6dX19fSx7a2V5OiJwYXJzZVZWQ1BUTFJlY29yZCIsdmFsdWU6ZnVuY3Rpb24oQSxnKXtBLnN0cmVhbVJlYWQyQnl0ZXMoKSxBLmV4dHJhY3RCaXRzKDIpO3ZhciBJPUEuZXh0cmFjdEJpdHMoNiksQj1BLmV4dHJhY3RCaXRzKDcpLFE9QS5leHRyYWN0Qml0cygxKSxFPUEucmVhZFVpbnQ4KCk7QS5zdHJlYW1SZWFkMUJ5dGVzKCk7dmFyIEM9QS5leHRyYWN0Qml0cygxKSx0PUEuZXh0cmFjdEJpdHMoMSksaT1uZXcgVWludDhBcnJheShJKTtpZihJKXtmb3IodmFyIGU9MDtlPEktMTtlKyspe3ZhciBvPUEuZXh0cmFjdEJpdHMoNik7QS5zdHJlYW1SZWFkMUJ5dGVzKCk7dmFyIHI9QS5leHRyYWN0Qml0cygyKTtpW2VdPW88PDJ8cn1pW0ktMV09QS5leHRyYWN0Qml0cyg2KX1lbHNlIEEuZXh0cmFjdEJpdHMoNik7dmFyIG49W107aWYoZz4xKXtBLnN0cmVhbVJlYWQxQnl0ZXMoKTtmb3IodmFyIGE9MCxzPWctMjtzPj0wOy0tcyl7YXw9QS5leHRyYWN0Qml0cygxKTw8c31mb3IodmFyIGM9ZztjPD04JiZnPjE7KytjKUEuZXh0cmFjdEJpdHMoMSk7Zm9yKHZhciBoPWctMjtoPj0wOy0taClhJjE8PGgmJihuW2hdPUEucmVhZFVpbnQ4KCkpfXZhciBmPUEucmVhZFVpbnQ4KCkseT1bXTtpZihmKWZvcih2YXIgdT0wO3U8Zjt1KyspeS5wdXNoKEEucmVhZFVpbnQzMigpKTtyZXR1cm57Z2VuZXJhbFByb2ZpbGVJZGM6QixnZW5lcmFsVGllckZsYWc6USxnZW5lcmFsTGV2ZWxJZGM6RSxwdGxGcmFtZU9ubHlDb25zdHJhaW50RmxhZzpDLHB0bE11bHRpbGF5ZXJFbmFibGVkRmxhZzp0LGdlbmVyYWxDb25zdHJhaW50SW5mbzppLHN1YkxheWVyTGV2ZWxJZGM6bixnZW5lcmFsU3ViUHJvZmlsZUlkYzp5LHB0bE51bVN1YlByb2ZpbGVzOmYsbnVtQnl0ZXNDb25zdHJhaW50SW5mbzpJfX19LHtrZXk6ImdldEF2Y2NOYWxzIix2YWx1ZTpmdW5jdGlvbihBKXtmb3IodmFyIGc9W107QS5wb3NpdGlvbjxBLmxlbmd0aC00Oyl7dmFyIEk9QS5kYXRhdmlldy5nZXRJbnQzMihBLmRhdGF2aWV3LnBvc2l0aW9uKTtpZighKEEubGVuZ3RoLUEucG9zaXRpb24+PUkpKWJyZWFrO3ZhciBCPUEuYnVmZmVyLnNsaWNlKEEucG9zaXRpb24sQS5wb3NpdGlvbis0KTtBLnNraXAoNCk7dmFyIFE9bmV3IFVpbnQ4QXJyYXkoQS5idWZmZXIuc2xpY2UoQS5wb3NpdGlvbixBLnBvc2l0aW9uK0kpKTtBLnNraXAoSSksZy5wdXNoKHtoZWFkZXI6Qixib2R5OlF9KX1yZXR1cm4gZ319LHtrZXk6ImFuYWx5c2VOYWwiLHZhbHVlOmZ1bmN0aW9uKEEpe3ZhciBnPSgyNDgmQS5ib2R5WzFdKT4+Mztzd2l0Y2goQS50eXBlPWcsZyl7Y2FzZSAyMzpjYXNlIDI0OmJyZWFrO2Nhc2UgNzpjYXNlIDg6QS5rZXk9ITA7YnJlYWs7Y2FzZSAxNDpBLnZwcz0hMDticmVhaztjYXNlIDE1OkEuc3BzPSEwO2JyZWFrO2Nhc2UgMTY6QS5wcHM9ITA7YnJlYWs7Y2FzZSAxNzpBLmFwcz0hMH19fSx7a2V5OiJyZW1vdmVFUEIiLHZhbHVlOmZ1bmN0aW9uKEEpe2Zvcih2YXIgZz1BLmJ5dGVMZW5ndGgsST1bXSxCPTE7QjxnLTI7KTA9PT1BW0JdJiYwPT09QVtCKzFdJiYzPT09QVtCKzJdPyhJLnB1c2goQisyKSxCKz0yKTpCKys7aWYoIUkubGVuZ3RoKXJldHVybiBBO3ZhciBRPWctSS5sZW5ndGgsRT1uZXcgVWludDhBcnJheShRKSxDPTA7Zm9yKEI9MDtCPFE7QysrLEIrKylDPT09SVswXSYmKEMrKyxJLnNoaWZ0KCkpLEVbQl09QVtDXTtyZXR1cm4gRX19LHtrZXk6InBhcnNlVnBzIix2YWx1ZTpmdW5jdGlvbigpe319LHtrZXk6InBhcnNlU1BTIix2YWx1ZTpmdW5jdGlvbihnKXt2YXIgST1uZXcgVGgoZyk7SS5yZWFkVUJ5dGUoKSxJLnJlYWRVQnl0ZSgpLEkuc2tpcEJpdHMoNCk7dmFyIEI9SS5yZWFkQml0cyg0KSxRPUkucmVhZEJpdHMoMyksRT1JLnJlYWRCaXRzKDIpLEM9NDIwO0U8PTMmJihDPVswLDQyMCw0MjIsNDQ0XVtFXSksSS5yZWFkQml0cygyKSxJLnJlYWRCaXRzKDEpO3ZhciB0PUEuX3BhcnNlUHJvZmlsZVRpZXJMZXZlbChJLDEsUSk7cmV0dXJuIEkucmVhZEJpdHMoMSksSS5yZWFkQml0cygxKSYmSS5yZWFkQml0cygxKSx7d2lkdGg6SS5yZWFkVUVHKCksaGVpZ2h0OkkucmVhZFVFRygpLHNwc01heFN1YkxheWVyTWludXMxOlEsc3BzVmlkZW9QYXJhbWV0ZXJTZXRJZDpCLGNocm9tYUZvcm1hdElkYzpFLGNocm9tYUZvcm1hdDpDLHB0bEluZm86dH19fSx7a2V5OiJfcGFyc2VQcm9maWxlVGllckxldmVsIix2YWx1ZTpmdW5jdGlvbihnLEksQil7dmFyIFEsRT1nLnJlYWRCaXRzKDcpLEM9Zy5yZWFkQml0cygxKSx0PWcucmVhZEJpdHMoOCksaT1nLnJlYWRCaXRzKDEpLGU9Zy5yZWFkQml0cygxKTtJJiYoUT1BLl9wYXJzZUdlbmVyYWxDb25zdHJhaW50c0luZm8oZykpO2Zvcih2YXIgbz1CLTEscj1bXSxuPVtdLGE9W10scz1vO3M+PTA7LS1zKXJbc109Zy5yZWFkQml0cygxKTtmb3IoOyFnLmJ5dGVBbGlnbmVkKCk7KWcucmVhZEJpdHMoMSk7Zm9yKHZhciBjPW87Yz49MDstLWMpcltjXSYmKG5bY109Zy5yZWFkVUJ5dGUoKSk7aWYoSSlmb3IodmFyIGg9Zy5yZWFkVUJ5dGUoKSxmPTA7ZjxoO2YrKylhW2ZdPWcucmVhZEJpdHMoMzIpO3JldHVybntnZW5lcmFsUHJvZmlsZUlkYzpFLGdlbmVyYWxUaWVyRmxhZzpDLGdlbmVyYWxMZXZlbElkYzp0LHB0bEZyYW1lT25seUNvbnN0cmFpbnRGbGFnOmkscHRsTXVsdGlsYXllckVuYWJsZWRGbGFnOmUscHRsU3VibGF5ZXJMZXZlbFByZXNlbnRGbGFnczpyLHB0bFN1YmxheWVyTGV2ZWxJZGNzOm4scHRsU3ViUHJvZmlsZUlkY3M6YSxnY2lJbmZvOlF9fX0se2tleToiX3BhcnNlR2VuZXJhbENvbnN0cmFpbnRzSW5mbyIsdmFsdWU6ZnVuY3Rpb24oQSl7dmFyIGc9QS5yZWFkQml0cygxKTtpZihnKXtBLnNraXBCaXRzKDcxKTt2YXIgST1BLnJlYWRCaXRzKDgpO0kmJkEuc2tpcEJpdHMoSSl9dmFyIEI9OC1BLmJpdHNQb3MoKSU4O3JldHVybiBBLnNraXBCaXRzKEIpLHtnY2lQcmVzZW50RmxhZzpnfX19XSksQX0oKSxXaD1mdW5jdGlvbigpe2Z1bmN0aW9uIEEoKXtDaCh0aGlzLEEpfXJldHVybiBpaChBLG51bGwsW3trZXk6ImZpbmRCb3giLHZhbHVlOmZ1bmN0aW9uKGcsSSl7dmFyIEI9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOjAsUT1bXTtpZighZylyZXR1cm4gUTtmb3IodmFyIEU9MCxDPSIiLHQ9MDtnLmxlbmd0aD43Oyl7aWYoRT1KaChnKSxDPVN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkobnVsbCxnLnN1YmFycmF5KDQsOCkpLHQ9OCwxPT09RT8oRT1LaChnLDgpLHQrPTgpOkV8fChFPWcubGVuZ3RoKSwhSVswXXx8Qz09PUlbMF0pe3ZhciBpPWcuc3ViYXJyYXkoMCxFKTtpZighKEkubGVuZ3RoPDIpKXJldHVybiBBLmZpbmRCb3goaS5zdWJhcnJheSh0KSxJLnNsaWNlKDEpLEIrdCk7US5wdXNoKHtzdGFydDpCLHNpemU6RSxoZWFkZXJTaXplOnQsdHlwZTpDLGRhdGE6aX0pfUIrPUUsZz1nLnN1YmFycmF5KEUpfXJldHVybiBRfX0se2tleToidGZoZCIsdmFsdWU6ZnVuY3Rpb24oQSl7cmV0dXJuIFZoKEEsITAsKGZ1bmN0aW9uKEEsZyl7QS50cmFja0lkPUpoKGcpO3ZhciBJPTQsQj0xJkEuZmxhZ3MsUT0yJkEuZmxhZ3MsRT04JkEuZmxhZ3MsQz0xNiZBLmZsYWdzLHQ9MzImQS5mbGFncztCJiYoSSs9NCxBLmJhc2VEYXRhT2Zmc2V0PUpoKGcsSSksSSs9NCksUSYmKEEuc2FtcGxlRGVzY3JpcHRpb25JbmRleD1KaChnLEkpLEkrPTQpLEUmJihBLmRlZmF1bHRTYW1wbGVEdXJhdGlvbj1KaChnLEkpLEkrPTQpLEMmJihBLmRlZmF1bHRTYW1wbGVTaXplPUpoKGcsSSksSSs9NCksdCYmKEEuZGVmYXVsdFNhbXBsZUZsYWdzPUpoKGcsSSkpfSkpfX0se2tleToic2lkeCIsdmFsdWU6ZnVuY3Rpb24oQSl7cmV0dXJuIFZoKEEsITAsKGZ1bmN0aW9uKEEsZyl7dmFyIEk9MDtBLnJlZmVyZW5jZV9JRD1KaChnLEkpLEkrPTQsQS50aW1lc2NhbGU9SmgoZyxJKSxJKz00LDA9PT1BLnZlcnNpb24/KEEuZWFybGllc3RfcHJlc2VudGF0aW9uX3RpbWU9SmgoZyxJKSxJKz00LEEuZmlyc3Rfb2Zmc2V0PUpoKGcsSSksSSs9NCk6KEEuZWFybGllc3RfcHJlc2VudGF0aW9uX3RpbWU9S2goZyxJKSxJKz04LEEuZmlyc3Rfb2Zmc2V0PUtoKGcsSSksSSs9OCksSSs9MixBLnJlZmVyZW5jZXM9W107dmFyIEI9TGgoZyxJKTtJKz0yO2Zvcih2YXIgUT0wO1E8QjtRKyspe3ZhciBFPXt9O0EucmVmZXJlbmNlcy5wdXNoKEUpO3ZhciBDPUpoKGcsSSk7SSs9NCxFLnJlZmVyZW5jZV90eXBlPUM+PjMxJjEsRS5yZWZlcmVuY2VkX3NpemU9MjE0NzQ4MzY0NyZDLEUuc3Vic2VnbWVudF9kdXJhdGlvbj1KaChnLEkpLEM9SmgoZyxJKz00KSxJKz00LEUuc3RhcnRzX3dpdGhfU0FQPUM+PjMxJjEsRS5TQVBfdHlwZT1DPj4yOCY3LEUuU0FQX2RlbHRhX3RpbWU9MjY4NDM1NDU1JkN9fSkpfX0se2tleToibW9vdiIsdmFsdWU6ZnVuY3Rpb24oZyl7cmV0dXJuIFZoKGcsITEsKGZ1bmN0aW9uKGcsSSxCKXtnLm12aGQ9QS5tdmhkKEEuZmluZEJveChJLFsibXZoZCJdLEIpWzBdKSxnLnRyYWs9QS5maW5kQm94KEksWyJ0cmFrIl0sQikubWFwKChmdW5jdGlvbihnKXtyZXR1cm4gQS50cmFrKGcpfSkpLGcucHNzaD1BLnBzc2goQS5maW5kQm94KEksWyJwc3NoIl0sQilbMF0pfSkpfX0se2tleToibXZoZCIsdmFsdWU6ZnVuY3Rpb24oQSl7cmV0dXJuIFZoKEEsITAsKGZ1bmN0aW9uKEEsZyl7dmFyIEk9MDsxPT09QS52ZXJzaW9uPyhBLnRpbWVzY2FsZT1KaChnLDE2KSxBLmR1cmF0aW9uPUtoKGcsMjApLEkrPTI4KTooQS50aW1lc2NhbGU9SmgoZyw4KSxBLmR1cmF0aW9uPUpoKGcsMTIpLEkrPTE2KSxBLm5leHRUcmFja0lkPUpoKGcsSSs3Nil9KSl9fSx7a2V5OiJ0cmFrIix2YWx1ZTpmdW5jdGlvbihnKXtyZXR1cm4gVmgoZywhMSwoZnVuY3Rpb24oZyxJLEIpe2cudGtoZD1BLnRraGQoQS5maW5kQm94KEksWyJ0a2hkIl0sQilbMF0pLGcubWRpYT1BLm1kaWEoQS5maW5kQm94KEksWyJtZGlhIl0sQilbMF0pLGcuZWR0cz1BLmVkdHMoQS5maW5kQm94KEksWyJlZHRzIl0sQilbMF0pfSkpfX0se2tleToidGtoZCIsdmFsdWU6ZnVuY3Rpb24oQSl7cmV0dXJuIFZoKEEsITAsKGZ1bmN0aW9uKEEsZyl7dmFyIEk9MDsxPT09QS52ZXJzaW9uPyhBLnRyYWNrSWQ9SmgoZywxNiksQS5kdXJhdGlvbj1LaChnLDI0KSxJKz0zMik6KEEudHJhY2tJZD1KaChnLDgpLEEuZHVyYXRpb249SmgoZywxNiksSSs9MjApLEEud2lkdGg9SmgoZyxJKzUyKSxBLmhlaWdodD1KaChnLEkrNTYpfSkpfX0se2tleToibWRpYSIsdmFsdWU6ZnVuY3Rpb24oZyl7cmV0dXJuIFZoKGcsITEsKGZ1bmN0aW9uKGcsSSxCKXtnLm1kaGQ9QS5tZGhkKEEuZmluZEJveChJLFsibWRoZCJdLEIpWzBdKSxnLmhkbHI9QS5oZGxyKEEuZmluZEJveChJLFsiaGRsciJdLEIpWzBdKSxnLm1pbmY9QS5taW5mKEEuZmluZEJveChJLFsibWluZiJdLEIpWzBdKX0pKX19LHtrZXk6ImVkdHMiLHZhbHVlOmZ1bmN0aW9uKGcpe3JldHVybiBWaChnLCExLChmdW5jdGlvbihnLEksQil7Zy5lbHN0PUEuZWxzdChBLmZpbmRCb3goSSxbImVsc3QiXSxCKVswXSl9KSl9fSx7a2V5OiJlbHN0Iix2YWx1ZTpmdW5jdGlvbihBKXtyZXR1cm4gVmgoQSwhMCwoZnVuY3Rpb24oQSxnLEkpe0EuZW50cmllcz1bXSxBLmVudHJpZXNEYXRhPWc7dmFyIEI9MCxRPUpoKGcsQik7Qis9NDtmb3IodmFyIEU9MDtFPFE7RSsrKXt2YXIgQz17fTtBLmVudHJpZXMucHVzaChDKSwxPT09QS52ZXJzaW9uPyhDLnNlZ21lbnRfZHVyYXRpb249S2goZyxCKSxCKz04LEMubWVkaWFfdGltZT14aChnLEIpLEIrPTgpOihDLnNlZ21lbnRfZHVyYXRpb249SmgoZyxCKSxCKz00LEMubWVkaWFfdGltZT1taChnLEIpLEIrPTQpLEMubWVkaWFfcmF0ZV9pbnRlZ2VyPUxoKGcsQiksQis9MixDLm1lZGlhX3JhdGVfZnJhY3Rpb249TGgoZyxJKSxCKz0yfX0pKX19LHtrZXk6Im1kaGQiLHZhbHVlOmZ1bmN0aW9uKEEpe3JldHVybiBWaChBLCEwLChmdW5jdGlvbihBLGcpe3ZhciBJPTA7MT09PUEudmVyc2lvbj8oQS50aW1lc2NhbGU9SmgoZywxNiksQS5kdXJhdGlvbj1LaChnLDIwKSxJKz0yOCk6KEEudGltZXNjYWxlPUpoKGcsOCksQS5kdXJhdGlvbj1KaChnLDEyKSxJKz0xNik7dmFyIEI9TGgoZyxJKTtBLmxhbmd1YWdlPVN0cmluZy5mcm9tQ2hhckNvZGUoOTYrKEI+PjEwJjMxKSw5NisoQj4+NSYzMSksOTYrKDMxJkIpKX0pKX19LHtrZXk6ImhkbHIiLHZhbHVlOmZ1bmN0aW9uKEEpe3JldHVybiBWaChBLCEwLChmdW5jdGlvbihBLGcpezA9PT1BLnZlcnNpb24mJihBLmhhbmRsZXJUeXBlPVN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkobnVsbCxnLnN1YmFycmF5KDQsOCkpKX0pKX19LHtrZXk6Im1pbmYiLHZhbHVlOmZ1bmN0aW9uKGcpe3JldHVybiBWaChnLCExLChmdW5jdGlvbihnLEksQil7Zy52bWhkPUEudm1oZChBLmZpbmRCb3goSSxbInZtaGQiXSxCKVswXSksZy5zbWhkPUEuc21oZChBLmZpbmRCb3goSSxbInNtaGQiXSxCKVswXSksZy5zdGJsPUEuc3RibChBLmZpbmRCb3goSSxbInN0YmwiXSxCKVswXSl9KSl9fSx7a2V5OiJ2bWhkIix2YWx1ZTpmdW5jdGlvbihBKXtyZXR1cm4gVmgoQSwhMCwoZnVuY3Rpb24oQSxnKXtBLmdyYXBoaWNzbW9kZT1MaChnKSxBLm9wY29sb3I9W0xoKGcsMiksTGgoZyw0KSxMaChnLDYpXX0pKX19LHtrZXk6InNtaGQiLHZhbHVlOmZ1bmN0aW9uKEEpe3JldHVybiBWaChBLCEwLChmdW5jdGlvbihBLGcpe0EuYmFsYW5jZT1MaChnKX0pKX19LHtrZXk6InN0YmwiLHZhbHVlOmZ1bmN0aW9uKGcpe3JldHVybiBWaChnLCExLChmdW5jdGlvbihnLEksQil7dmFyIFEsRSxDO2cuc3RzZD1BLnN0c2QoQS5maW5kQm94KEksWyJzdHNkIl0sQilbMF0pLGcuc3R0cz1BLnN0dHMoQS5maW5kQm94KEksWyJzdHRzIl0sQilbMF0pLGcuY3R0cz1BLmN0dHMoQS5maW5kQm94KEksWyJjdHRzIl0sQilbMF0pLGcuc3RzYz1BLnN0c2MoQS5maW5kQm94KEksWyJzdHNjIl0sQilbMF0pLGcuc3Rzej1BLnN0c3ooQS5maW5kQm94KEksWyJzdHN6Il0sQilbMF0pLGcuc3Rjbz1BLnN0Y28oQS5maW5kQm94KEksWyJzdGNvIl0sQilbMF0pLGcuc3Rjb3x8KGcuY282ND1BLmNvNjQoQS5maW5kQm94KEksWyJjbzY0Il0sQilbMF0pLGcuc3Rjbz1nLmNvNjQpO3ZhciB0PW51bGw9PT0oUT1nLnN0c2QuZW50cmllc1swXSl8fHZvaWQgMD09PVF8fG51bGw9PT0oRT1RLnNpbmYpfHx2b2lkIDA9PT1FfHxudWxsPT09KEM9RS5zY2hpKXx8dm9pZCAwPT09Qz92b2lkIDA6Qy50ZW5jLmRlZmF1bHRfSVZfc2l6ZTtnLnN0c3M9QS5zdHNzKEEuZmluZEJveChJLFsic3RzcyJdLEIpWzBdKSxnLnNlbmM9QS5zZW5jKEEuZmluZEJveChJLFsic2VuYyJdLEIpWzBdLHQpfSkpfX0se2tleToic2VuYyIsdmFsdWU6ZnVuY3Rpb24oQSl7dmFyIGc9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOjg7cmV0dXJuIFZoKEEsITAsKGZ1bmN0aW9uKEEsSSl7dmFyIEI9MCxRPUpoKEksQik7Qis9NCxBLnNhbXBsZXM9W107Zm9yKHZhciBFPTA7RTxRO0UrKyl7Zm9yKHZhciBDPXtJbml0aWFsaXphdGlvblZlY3RvcjpbXX0sdD0wO3Q8Zzt0KyspQy5Jbml0aWFsaXphdGlvblZlY3Rvclt0XT1JW0IrdF07aWYoQis9ZywyJkEuZmxhZ3Mpe0Muc3Vic2FtcGxlcz1bXTt2YXIgaT1MaChJLEIpO0IrPTI7Zm9yKHZhciBlPTA7ZTxpO2UrKyl7dmFyIG89e307by5CeXRlc09mQ2xlYXJEYXRhPUxoKEksQiksQis9MixvLkJ5dGVzT2ZQcm90ZWN0ZWREYXRhPUpoKEksQiksQis9NCxDLnN1YnNhbXBsZXMucHVzaChvKX19QS5zYW1wbGVzLnB1c2goQyl9fSkpfX0se2tleToicHNzaCIsdmFsdWU6ZnVuY3Rpb24oQSl7cmV0dXJuIFZoKEEsITAsKGZ1bmN0aW9uKEEsZyl7Zm9yKHZhciBJPVtdLEI9W10sUT0wLEU9MDtFPDE2O0UrKylCLnB1c2goemgoZ1tRK0VdKSk7aWYoUSs9MTYsQS52ZXJzaW9uPjApe3ZhciBDPUpoKGcsUSk7USs9NDtmb3IodmFyIHQ9MDt0PCgiIitDKS5sZW5ndGg7dCsrKWZvcih2YXIgaT0wO2k8MTY7aSsrKXt2YXIgZT1nW1FdO1ErPTEsSS5wdXNoKHpoKGUpKX19dmFyIG89SmgoZyxRKTtBLmRhdGFfc2l6ZT1vLFErPTQsQS5raWQ9SSxBLnN5c3RlbV9pZD1CLEEuYnVmZmVyPWd9KSl9fSx7a2V5OiJidmMyIix2YWx1ZTpmdW5jdGlvbihnKXtyZXR1cm4gVmgoZywhMSwoZnVuY3Rpb24oZyxJLEIpe3ZhciBRPWpoKGcsSSksRT1JLnN1YmFycmF5KFEpO0IrPVEsZy52dmNDPUEuYnYyQyhBLmZpbmRCb3goRSxbImJ2MkMiXSxCKVswXSksZy5wYXNwPUEucGFzcChBLmZpbmRCb3goRSxbInBhc3AiXSxCKVswXSl9KSl9fSx7a2V5OiJidjJDIix2YWx1ZTpmdW5jdGlvbihBKXtyZXR1cm4gVmgoQSwhMSwoZnVuY3Rpb24oQSxnLEkpe3ZhciBCPVBoLnBhcnNlVlZDRGVjb2RlckNvbmZpZ3VyYXRpb25SZWNvcmQoZyk7Zm9yKHZhciBRIGluIEIpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKEIsUSkmJihBW1FdPUJbUV0pfSkpfX0se2tleToic3RzZCIsdmFsdWU6ZnVuY3Rpb24oZyl7cmV0dXJuIFZoKGcsITAsKGZ1bmN0aW9uKGcsSSxCKXtnLmVudHJ5Q291bnQ9SmgoSSksZy5lbnRyaWVzPUEuZmluZEJveChJLnN1YmFycmF5KDQpLFtdLEIrNCkubWFwKChmdW5jdGlvbihnKXtzd2l0Y2goZy50eXBlKXtjYXNlImF2YzEiOmNhc2UiYXZjMiI6Y2FzZSJhdmMzIjpjYXNlImF2YzQiOnJldHVybiBBLmF2YzEoZyk7Y2FzZSJodmMxIjpjYXNlImhldjEiOnJldHVybiBBLmh2YzEoZyk7Y2FzZSJidmMyIjpyZXR1cm4gQS5idmMyKGcpO2Nhc2UibXA0YSI6cmV0dXJuIEEubXA0YShnKTtjYXNlImFsYXciOmNhc2UidWxhdyI6cmV0dXJuIEEuYWxhdyhnKTtjYXNlImVuY2EiOnJldHVybiBWaChnLCExLChmdW5jdGlvbihnLEksQil7Zy5jaGFubmVsQ291bnQ9TGgoSSwxNiksZy5zYW1wbGVzaXplPUxoKEksMTgpLGcuc2FtcGxlUmF0ZT1KaChJLDI0KS82NTUzNixJPUkuc3ViYXJyYXkoMjgpLGcuc2luZj1BLnNpbmYoQS5maW5kQm94KEksWyJzaW5mIl0sQilbMF0pLGcuZXNkcz1BLmVzZHMoQS5maW5kQm94KEksWyJlc2RzIl0sQilbMF0pfSkpO2Nhc2UiZW5jdiI6cmV0dXJuIFZoKGcsITEsKGZ1bmN0aW9uKGcsSSxCKXtnLndpZHRoPUxoKEksMjQpLGcuaGVpZ2h0PUxoKEksMjYpLGcuaG9yaXpyZXNvbHV0aW9uPUpoKEksMjgpLGcudmVydHJlc29sdXRpb249SmgoSSwzMiksST1JLnN1YmFycmF5KDc4KSxnLnNpbmY9QS5zaW5mKEEuZmluZEJveChJLFsic2luZiJdLEIpWzBdKSxnLmF2Y0M9QS5hdmNDKEEuZmluZEJveChJLFsiYXZjQyJdLEIpWzBdKSxnLmh2Y0M9QS5odmNDKEEuZmluZEJveChJLFsiaHZjQyJdLEIpWzBdKSxnLnBhc3A9QS5wYXNwKEEuZmluZEJveChJLFsicGFzcCJdLEIpWzBdKX0pKX19KSkuZmlsdGVyKEJvb2xlYW4pfSkpfX0se2tleToidGVuYyIsdmFsdWU6ZnVuY3Rpb24oQSl7cmV0dXJuIFZoKEEsITEsKGZ1bmN0aW9uKEEsZyl7dmFyIEk9NjtBLmRlZmF1bHRfSXNFbmNyeXB0ZWQ9Z1tJXSxJKz0xLEEuZGVmYXVsdF9JVl9zaXplPWdbSV0sSSs9MSxBLmRlZmF1bHRfS0lEPVtdO2Zvcih2YXIgQj0wO0I8MTY7QisrKUEuZGVmYXVsdF9LSUQucHVzaCh6aChnW0ldKSksSSs9MX0pKX19LHtrZXk6InNjaGkiLHZhbHVlOmZ1bmN0aW9uKGcpe3JldHVybiBWaChnLCExLChmdW5jdGlvbihnLEksQil7Zy50ZW5jPUEudGVuYyhBLmZpbmRCb3goSSxbInRlbmMiXSxCKVswXSl9KSl9fSx7a2V5OiJzaW5mIix2YWx1ZTpmdW5jdGlvbihnKXtyZXR1cm4gVmgoZywhMSwoZnVuY3Rpb24oZyxJLEIpe2cuc2NoaT1BLnNjaGkoQS5maW5kQm94KEksWyJzY2hpIl0sQilbMF0pLGcuZnJtYT1BLmZybWEoQS5maW5kQm94KEksWyJmcm1hIl0sQilbMF0pfSkpfX0se2tleToiZnJtYSIsdmFsdWU6ZnVuY3Rpb24oQSl7cmV0dXJuIFZoKEEsITEsKGZ1bmN0aW9uKEEsZyl7QS5kYXRhX2Zvcm1hdD0iIjtmb3IodmFyIEk9MDtJPDQ7SSsrKUEuZGF0YV9mb3JtYXQrPVN0cmluZy5mcm9tQ2hhckNvZGUoZ1tJXSl9KSl9fSx7a2V5OiJhdmMxIix2YWx1ZTpmdW5jdGlvbihnKXtyZXR1cm4gVmgoZywhMSwoZnVuY3Rpb24oZyxJLEIpe3ZhciBRPWpoKGcsSSksRT1JLnN1YmFycmF5KFEpO0IrPVEsZy5hdmNDPUEuYXZjQyhBLmZpbmRCb3goRSxbImF2Y0MiXSxCKVswXSksZy5wYXNwPUEucGFzcChBLmZpbmRCb3goRSxbInBhc3AiXSxCKVswXSl9KSl9fSx7a2V5OiJhdmNDIix2YWx1ZTpmdW5jdGlvbihBKXtyZXR1cm4gVmgoQSwhMSwoZnVuY3Rpb24oQSxnKXtBLmNvbmZpZ3VyYXRpb25WZXJzaW9uPWdbMF0sQS5BVkNQcm9maWxlSW5kaWNhdGlvbj1nWzFdLEEucHJvZmlsZUNvbXBhdGliaWxpdHk9Z1syXSxBLkFWQ0xldmVsSW5kaWNhdGlvbj1nWzNdLEEuY29kZWM9ZnVuY3Rpb24oQSl7Zm9yKHZhciBnLEk9ImF2YzEuIixCPTA7QjwzO0IrKykoZz1BW0JdLnRvU3RyaW5nKDE2KSkubGVuZ3RoPDImJihnPSIwIi5jb25jYXQoZykpLEkrPWc7cmV0dXJuIEl9KFtnWzFdLGdbMl0sZ1szXV0pLEEubGVuZ3RoU2l6ZU1pbnVzT25lPTMmZ1s0XSxBLnNwc0xlbmd0aD0zMSZnWzVdLEEuc3BzPVtdO2Zvcih2YXIgST02LEI9MDtCPEEuc3BzTGVuZ3RoO0IrKyl7dmFyIFE9TGgoZyxJKTtJKz0yLEEuc3BzLnB1c2goZy5zdWJhcnJheShJLEkrUSkpLEkrPVF9QS5wcHNMZW5ndGg9Z1tJXSxJKz0xLEEucHBzPVtdO2Zvcih2YXIgRT0wO0U8QS5wcHNMZW5ndGg7RSsrKXt2YXIgQz1MaChnLEkpO0krPTIsQS5wcHMucHVzaChnLnN1YmFycmF5KEksSSs9QykpLEkrPUN9fSkpfX0se2tleToiaHZjMSIsdmFsdWU6ZnVuY3Rpb24oZyl7cmV0dXJuIFZoKGcsITEsKGZ1bmN0aW9uKGcsSSxCKXt2YXIgUT1qaChnLEkpLEU9SS5zdWJhcnJheShRKTtCKz1RLGcuaHZjQz1BLmh2Y0MoQS5maW5kQm94KEUsWyJodmNDIl0sQilbMF0pLGcucGFzcD1BLnBhc3AoQS5maW5kQm94KEUsWyJwYXNwIl0sQilbMF0pfSkpfX0se2tleToiaHZjQyIsdmFsdWU6ZnVuY3Rpb24oQSl7cmV0dXJuIFZoKEEsITEsKGZ1bmN0aW9uKGcsSSl7Zy5kYXRhPUEuZGF0YSxnLmNvZGVjPSJoZXYxLjEuNi5MOTMuQjAiLGcuY29uZmlndXJhdGlvblZlcnNpb249SVswXTt2YXIgQj1JWzFdO2cuZ2VuZXJhbFByb2ZpbGVTcGFjZT1CPj42LGcuZ2VuZXJhbFRpZXJGbGFnPSgzMiZCKT4+NSxnLmdlbmVyYWxQcm9maWxlSWRjPTMxJkIsZy5nZW5lcmFsUHJvZmlsZUNvbXBhdGliaWxpdHk9SmgoSSwyKSxnLmdlbmVyYWxDb25zdHJhaW50SW5kaWNhdG9yRmxhZ3M9SS5zdWJhcnJheSg2LDEyKSxnLmdlbmVyYWxMZXZlbElkYz1JWzEyXSxnLmF2Z0ZyYW1lUmF0ZT1MaChJLDE5KSxnLm51bU9mQXJyYXlzPUlbMjJdLGcudnBzPVtdLGcuc3BzPVtdLGcucHBzPVtdO2Zvcih2YXIgUT0yMyxFPTAsQz0wLHQ9MCxpPTA7aTxnLm51bU9mQXJyYXlzO2krKyl7RT02MyZJW1FdLEM9TGgoSSxRKzEpLFErPTM7Zm9yKHZhciBlLG89W10scj0wO3I8QztyKyspdD1MaChJLFEpLFErPTIsby5wdXNoKEkuc3ViYXJyYXkoUSxRK3QpKSxRKz10O2lmKDMyPT09RSkoZT1nLnZwcykucHVzaC5hcHBseShlLG8pO2Vsc2UgaWYoMzM9PT1FKXt2YXIgbjsobj1nLnNwcykucHVzaC5hcHBseShuLG8pfWVsc2UgaWYoMzQ9PT1FKXt2YXIgYTsoYT1nLnBwcykucHVzaC5hcHBseShhLG8pfX19KSl9fSx7a2V5OiJwYXNwIix2YWx1ZTpmdW5jdGlvbihBKXtyZXR1cm4gVmgoQSwhMSwoZnVuY3Rpb24oQSxnKXtBLmhTcGFjaW5nPUpoKGcpLEEudlNwYWNpbmc9SmgoZyw0KX0pKX19LHtrZXk6Im1wNGEiLHZhbHVlOmZ1bmN0aW9uKGcpe3JldHVybiBWaChnLCExLChmdW5jdGlvbihnLEksQil7dmFyIFE9WGgoZyxJKTtnLmVzZHM9QS5lc2RzKEEuZmluZEJveChJLnN1YmFycmF5KFEpLFsiZXNkcyJdLEIrUSlbMF0pfSkpfX0se2tleToiZXNkcyIsdmFsdWU6ZnVuY3Rpb24oQSl7cmV0dXJuIFZoKEEsITAsKGZ1bmN0aW9uKEEsZyl7QS5jb2RlYz0ibXA0YS4iO2Zvcih2YXIgST0wLEI9MCxRPTAsRT0wO2cubGVuZ3RoOyl7Zm9yKEU9Z1tJPTBdLEI9Z1tJKzFdLEkrPTI7MTI4JkI7KVE9KDEyNyZCKTw8NyxCPWdbSV0sSSs9MTtpZihRKz0xMjcmQiwzPT09RSlnPWcuc3ViYXJyYXkoSSszKTtlbHNle2lmKDQhPT1FKXtpZig1PT09RSl7dmFyIEM9QS5jb25maWc9Zy5zdWJhcnJheShJLEkrUSksdD0oMjQ4JkNbMF0pPj4zO3JldHVybiAzMT09PXQmJkMubGVuZ3RoPj0yJiYodD0zMisoKDcmQ1swXSk8PDMpKygoMjI0JkNbMV0pPj41KSksQS5vYmplY3RUeXBlPXQsQS5jb2RlYys9dC50b1N0cmluZygxNiksdm9pZCgiLiI9PT1BLmNvZGVjW0EuY29kZWMubGVuZ3RoLTFdJiYoQS5jb2RlYz1BLmNvZGVjLnN1YnN0cmluZygwLEEuY29kZWMubGVuZ3RoLTEpKSl9cmV0dXJuIHZvaWQoIi4iPT09QS5jb2RlY1tBLmNvZGVjLmxlbmd0aC0xXSYmKEEuY29kZWM9QS5jb2RlYy5zdWJzdHJpbmcoMCxBLmNvZGVjLmxlbmd0aC0xKSkpfUEuY29kZWMrPShnW0ldLnRvU3RyaW5nKDE2KSsiLiIpLnBhZFN0YXJ0KDMsIjAiKSxnPWcuc3ViYXJyYXkoSSsxMyl9fX0pKX19LHtrZXk6ImFsYXciLHZhbHVlOmZ1bmN0aW9uKEEpe3JldHVybiBWaChBLCExLChmdW5jdGlvbihBLGcpe1hoKEEsZyl9KSl9fSx7a2V5OiJzdHRzIix2YWx1ZTpmdW5jdGlvbihBKXtyZXR1cm4gVmgoQSwhMCwoZnVuY3Rpb24oQSxnKXtmb3IodmFyIEk9SmgoZyksQj1bXSxRPTQsRT0wO0U8STtFKyspQi5wdXNoKHtjb3VudDpKaChnLFEpLGRlbHRhOkpoKGcsUSs0KX0pLFErPTg7QS5lbnRyeUNvdW50PUksQS5lbnRyaWVzPUJ9KSl9fSx7a2V5OiJjdHRzIix2YWx1ZTpmdW5jdGlvbihBKXtyZXR1cm4gVmgoQSwhMCwoZnVuY3Rpb24oQSxnKXt2YXIgST1KaChnKSxCPVtdLFE9NDtpZigxPT09QS52ZXJzaW9uKWZvcih2YXIgRT0wO0U8STtFKyspQi5wdXNoKHtjb3VudDpKaChnLFEpLG9mZnNldDpKaChnLFErNCl9KSxRKz04O2Vsc2UgZm9yKHZhciBDPTA7QzxJO0MrKylCLnB1c2goe2NvdW50OkpoKGcsUSksb2Zmc2V0Oi0oMSt+SmgoZyxRKzQpKX0pLFErPTg7QS5lbnRyeUNvdW50PUksQS5lbnRyaWVzPUJ9KSl9fSx7a2V5OiJzdHNjIix2YWx1ZTpmdW5jdGlvbihBKXtyZXR1cm4gVmgoQSwhMCwoZnVuY3Rpb24oQSxnKXtmb3IodmFyIEk9SmgoZyksQj1uZXcgQXJyYXkoSSksUT00LEU9MDtFPEk7RSsrKUJbRV09e2ZpcnN0Q2h1bms6SmgoZyxRKSxzYW1wbGVzUGVyQ2h1bms6SmgoZyxRKzQpLHNhbXBsZURlc2NyaXB0aW9uSW5kZXg6SmgoZyxRKzgpfSxRKz0xMjtBLmVudHJ5Q291bnQ9SSxBLmVudHJpZXM9Qn0pKX19LHtrZXk6InN0c3oiLHZhbHVlOmZ1bmN0aW9uKEEpe3JldHVybiBWaChBLCEwLChmdW5jdGlvbihBLGcpe3ZhciBJPUpoKGcpLEI9SmgoZyw0KSxRPW5ldyBBcnJheShCKTtpZighSSlmb3IodmFyIEU9OCxDPTA7QzxCO0MrKylRW0NdPUpoKGcsRSksRSs9NDtBLnNhbXBsZVNpemU9SSxBLnNhbXBsZUNvdW50PUIsQS5lbnRyeVNpemVzPVF9KSl9fSx7a2V5OiJzdGNvIix2YWx1ZTpmdW5jdGlvbihBKXtyZXR1cm4gVmgoQSwhMCwoZnVuY3Rpb24oQSxnKXtmb3IodmFyIEk9SmgoZyksQj1uZXcgQXJyYXkoSSksUT00LEU9MDtFPEk7RSsrKUJbRV09SmgoZyxRKSxRKz00O0EuZW50cnlDb3VudD1JLEEuZW50cmllcz1CfSkpfX0se2tleToiY282NCIsdmFsdWU6ZnVuY3Rpb24oQSl7cmV0dXJuIFZoKEEsITAsKGZ1bmN0aW9uKEEsZyl7Zm9yKHZhciBJPUpoKGcpLEI9bmV3IEFycmF5KEkpLFE9NCxFPTA7RTxJO0UrKylCW0VdPUtoKGcsUSksUSs9ODtBLmVudHJ5Q291bnQ9SSxBLmVudHJpZXM9Qn0pKX19LHtrZXk6InN0c3MiLHZhbHVlOmZ1bmN0aW9uKEEpe3JldHVybiBWaChBLCEwLChmdW5jdGlvbihBLGcpe2Zvcih2YXIgST1KaChnKSxCPW5ldyBBcnJheShJKSxRPTQsRT0wO0U8STtFKyspQltFXT1KaChnLFEpLFErPTQ7QS5lbnRyeUNvdW50PUksQS5lbnRyaWVzPUJ9KSl9fSx7a2V5OiJtb29mIix2YWx1ZTpmdW5jdGlvbihnKXtyZXR1cm4gVmgoZywhMSwoZnVuY3Rpb24oZyxJLEIpe2cubWZoZD1BLm1maGQoQS5maW5kQm94KEksWyJtZmhkIl0sQilbMF0pLGcudHJhZj1BLmZpbmRCb3goSSxbInRyYWYiXSxCKS5tYXAoKGZ1bmN0aW9uKGcpe3JldHVybiBBLnRyYWYoZyl9KSl9KSl9fSx7a2V5OiJtZmhkIix2YWx1ZTpmdW5jdGlvbihBKXtyZXR1cm4gVmgoQSwhMCwoZnVuY3Rpb24oQSxnKXtBLnNlcXVlbmNlTnVtYmVyPUpoKGcpfSkpfX0se2tleToidHJhZiIsdmFsdWU6ZnVuY3Rpb24oZyl7cmV0dXJuIFZoKGcsITEsKGZ1bmN0aW9uKGcsSSxCKXtnLnRmaGQ9QS50ZmhkKEEuZmluZEJveChJLFsidGZoZCJdLEIpWzBdKSxnLnRmZHQ9QS50ZmR0KEEuZmluZEJveChJLFsidGZkdCJdLEIpWzBdKSxnLnRydW49QS50cnVuKEEuZmluZEJveChJLFsidHJ1biJdLEIpWzBdKX0pKX19LHtrZXk6InRydW4iLHZhbHVlOmZ1bmN0aW9uKEEpe3JldHVybiBWaChBLCEwLChmdW5jdGlvbihBLGcpe3ZhciBJPUEudmVyc2lvbixCPUEuZmxhZ3MsUT1nLmxlbmd0aCxFPUEuc2FtcGxlQ291bnQ9SmgoZyksQz00O2lmKFE+QyYmMSZCJiYoQS5kYXRhT2Zmc2V0PS0oMSt+SmgoZyxDKSksQys9NCksUT5DJiY0JkImJihBLmZpcnN0U2FtcGxlRmxhZ3M9SmgoZyxDKSxDKz00KSxRPkMpe3ZhciB0O0Euc2FtcGxlcz1uZXcgQXJyYXkoRSk7Zm9yKHZhciBpPTA7aTxFO2krKyl0PXt9LDI1NiZCJiYodC5kdXJhdGlvbj1KaChnLEMpLEMrPTQpLDUxMiZCJiYodC5zaXplPUpoKGcsQyksQys9NCksMTAyNCZCJiYodC5mbGFncz1KaChnLEMpLEMrPTQpLDIwNDgmQiYmKHQuY3RzPUk/LSgxK35KaChnLEMrNCkpOkpoKGcsQyksQys9NCksQS5zYW1wbGVzW2ldPXR9fSkpfX0se2tleToidGZkdCIsdmFsdWU6ZnVuY3Rpb24oQSl7cmV0dXJuIFZoKEEsITAsKGZ1bmN0aW9uKEEsZyl7MT09PUEudmVyc2lvbj9BLmJhc2VNZWRpYURlY29kZVRpbWU9S2goZyk6QS5iYXNlTWVkaWFEZWNvZGVUaW1lPUpoKGcpfSkpfX0se2tleToicHJvYmUiLHZhbHVlOmZ1bmN0aW9uKGcpe3JldHVybiEhQS5maW5kQm94KGcsWyJmdHlwIl0pfX0se2tleToicGFyc2VTYW1wbGVGbGFncyIsdmFsdWU6ZnVuY3Rpb24oQSl7cmV0dXJue2lzTGVhZGluZzooMTImQVswXSk+Pj4yLGRlcGVuZHNPbjozJkFbMF0saXNEZXBlbmRlZE9uOigxOTImQVsxXSk+Pj42LGhhc1JlZHVuZGFuY3k6KDQ4JkFbMV0pPj4+NCxwYWRkaW5nVmFsdWU6KDE0JkFbMV0pPj4+MSxpc05vblN5bmNTYW1wbGU6MSZBWzFdLGRlZ3JhZGF0aW9uUHJpb3JpdHk6QVsyXTw8OHxBWzNdfX19LHtrZXk6Im1vb3ZUb1RyYWNrIix2YWx1ZTpmdW5jdGlvbihBLGcsSSl7dmFyIEIsUSxFPUEudHJhaztpZihFJiZFLmxlbmd0aCl7dmFyIEM9RS5maW5kKChmdW5jdGlvbihBKXt2YXIgZyxJO3JldHVybiJ2aWRlIj09PShudWxsPT09KGc9QS5tZGlhKXx8dm9pZCAwPT09Z3x8bnVsbD09PShJPWcuaGRscil8fHZvaWQgMD09PUk/dm9pZCAwOkkuaGFuZGxlclR5cGUpfSkpLHQ9RS5maW5kKChmdW5jdGlvbihBKXt2YXIgZyxJO3JldHVybiJzb3VuIj09PShudWxsPT09KGc9QS5tZGlhKXx8dm9pZCAwPT09Z3x8bnVsbD09PShJPWcuaGRscil8fHZvaWQgMD09PUk/dm9pZCAwOkkuaGFuZGxlclR5cGUpfSkpO2lmKEMmJmcpe3ZhciBpLGUsbyxyLG4sYSxzLGMsaD1nLGY9bnVsbD09PShpPUMudGtoZCl8fHZvaWQgMD09PWk/dm9pZCAwOmkudHJhY2tJZDtudWxsIT1mJiYoaC5pZD1DLnRraGQudHJhY2tJZCksaC50a2hkRHVyYXRpb249Qy50a2hkLmR1cmF0aW9uLGgubXZoZER1cnRpb249QS5tdmhkLmR1cmF0aW9uLGgubXZoZFRpbWVjYWxlPUEubXZoZC50aW1lc2NhbGUsaC50aW1lc2NhbGU9aC5mb3JtYXRUaW1lc2NhbGU9Qy5tZGlhLm1kaGQudGltZXNjYWxlLGguZHVyYXRpb249Qy5tZGlhLm1kaGQuZHVyYXRpb258fGgubXZoZER1cnRpb24vaC5tdmhkVGltZWNhbGUqaC50aW1lc2NhbGUsbnVsbCE9PShlPUMuZWR0cykmJnZvaWQgMCE9PWUmJmUuZWxzdCYmKGguZWRpdExpc3Q9Qy5lZHRzLmVsc3QsaC5lZGl0TGlzdEFwcGxpZWQ9Qy5lZGl0TGlzdEFwcGxpZWQpO3ZhciB5LHUsRCx3LGwsZCxGLEcsUj1DLm1kaWEubWluZi5zdGJsLnN0c2QuZW50cmllc1swXTtpZihoLndpZHRoPVIud2lkdGgsaC5oZWlnaHQ9Ui5oZWlnaHQsUi5wYXNwJiYoaC5zYXJSYXRpbz1bUi5wYXNwLmhTcGFjaW5nLFIucGFzcC52U3BhY2luZ10pLFIuaHZjQyloLmNvZGVjVHlwZT11aCxoLmNvZGVjPVIuaHZjQy5jb2RlYyxoLnZwcz1SLmh2Y0MudnBzLGguc3BzPVIuaHZjQy5zcHMsaC5wcHM9Ui5odmNDLnBwcyxoLmh2Y0M9Ui5odmNDLmRhdGE7ZWxzZSBpZihSLmF2Y0MpaC5jb2RlYz1SLmF2Y0MuY29kZWMsaC5zcHM9Ui5hdmNDLnNwcyxoLnBwcz1SLmF2Y0MucHBzO2Vsc2V7aWYoIVIudnZjQyl0aHJvdyBuZXcgRXJyb3IoInVua25vd24gdmlkZW8gc3RzZCBlbnRyeSIpO2guY29kZWNUeXBlPURoLGguY29kZWM9Ui52dmNDLmNvZGVjLGguc3BzPVIudnZjQy5zcHMsaC5wcHM9Ui52dmNDLnBwcyxoLnZwcz1SLnZ2Y0MudnBzLGgudnZjQz1SLnZ2Y0MuZGF0YX1pZihoLnByZXNlbnQ9ITAsaC5leHQ9e30saC5leHQuc3Rzcz1udWxsPT09KG89Qy5tZGlhKXx8dm9pZCAwPT09b3x8bnVsbD09PShyPW8ubWluZil8fHZvaWQgMD09PXJ8fG51bGw9PT0obj1yLnN0YmwpfHx2b2lkIDA9PT1uP3ZvaWQgMDpuLnN0c3MsaC5leHQuY3R0cz1udWxsPT09KGE9Qy5tZGlhKXx8dm9pZCAwPT09YXx8bnVsbD09PShzPWEubWluZil8fHZvaWQgMD09PXN8fG51bGw9PT0oYz1zLnN0YmwpfHx2b2lkIDA9PT1jP3ZvaWQgMDpjLmN0dHMsUiYmImVuY3YiPT09Ui50eXBlKWguaXNWaWRlb0VuY3J5cHRpb249ITAsUi5kZWZhdWx0X0tJRD1udWxsPT09KHk9Ui5zaW5mKXx8dm9pZCAwPT09eXx8bnVsbD09PSh1PXkuc2NoaSl8fHZvaWQgMD09PXU/dm9pZCAwOnUudGVuYy5kZWZhdWx0X0tJRCxSLmRlZmF1bHRfSXNFbmNyeXB0ZWQ9bnVsbD09PShEPVIuc2luZil8fHZvaWQgMD09PUR8fG51bGw9PT0odz1ELnNjaGkpfHx2b2lkIDA9PT13P3ZvaWQgMDp3LnRlbmMuZGVmYXVsdF9Jc0VuY3J5cHRlZCxSLmRlZmF1bHRfSVZfc2l6ZT1udWxsPT09KGw9Ui5zaW5mKXx8dm9pZCAwPT09bHx8bnVsbD09PShkPWwuc2NoaSl8fHZvaWQgMD09PWQ/dm9pZCAwOmQudGVuYy5kZWZhdWx0X0lWX3NpemUsaC52aWRlb1NlbmM9Qy5tZGlhLm1pbmYuc3RibC5zZW5jJiZDLm1kaWEubWluZi5zdGJsLnNlbmMuc2FtcGxlcyxSLmRhdGFfZm9ybWF0PW51bGw9PT0oRj1SLnNpbmYpfHx2b2lkIDA9PT1GfHxudWxsPT09KEc9Ri5mcm1hKXx8dm9pZCAwPT09Rz92b2lkIDA6Ry5kYXRhX2Zvcm1hdCxoLnVzZUVNRT1BLnVzZUVNRSxoLmtpZFZhbHVlPUEua2lkVmFsdWUsaC5wc3NoPUEucHNzaCxoLmVuY3Y9Un1pZih0JiZJKXt2YXIgVSxrLFMscCxOLE0sWSxILHYsTCxKPUksbT1udWxsPT09KFU9dC50a2hkKXx8dm9pZCAwPT09VT92b2lkIDA6VS50cmFja0lkO251bGwhPW0mJihKLmlkPXQudGtoZC50cmFja0lkKSxKLnRraGREdXJhdGlvbj10LnRraGQuZHVyYXRpb24sSi5tdmhkRHVydGlvbj1BLm12aGQuZHVyYXRpb24sSi5tdmhkVGltZWNhbGU9QS5tdmhkLnRpbWVzY2FsZSxKLnRpbWVzY2FsZT1KLmZvcm1hdFRpbWVzY2FsZT10Lm1kaWEubWRoZC50aW1lc2NhbGUsSi5kdXJhdGlvbj10Lm1kaWEubWRoZC5kdXJhdGlvbnx8Si5tdmhkRHVydGlvbi9KLm12aGRUaW1lY2FsZSpKLnRpbWVzY2FsZSxudWxsIT09KGs9dC5lZHRzKSYmdm9pZCAwIT09ayYmay5lbHN0JiYoSi5lZGl0TGlzdD10LmVkdHMuZWxzdCxKLmVkaXRMaXN0QXBwbGllZD10LmVkaXRMaXN0QXBwbGllZCk7dmFyIEsseCxxLGIsVCxPLFAsVyxaPXQubWRpYS5taW5mLnN0Ymwuc3RzZC5lbnRyaWVzWzBdO3N3aXRjaChKLnNhbXBsZVNpemU9Wi5zYW1wbGVTaXplLEouc2FtcGxlUmF0ZT1aLnNhbXBsZVJhdGUsSi5jaGFubmVsQ291bnQ9Wi5jaGFubmVsQ291bnQsSi5wcmVzZW50PSEwLFoudHlwZSl7Y2FzZSJhbGF3IjpKLmNvZGVjVHlwZT1KLmNvZGVjPWxoLEouc2FtcGxlUmF0ZT04ZTM7YnJlYWs7Y2FzZSJ1bGF3IjpKLmNvZGVjVHlwZT1KLmNvZGVjPWRoLEouc2FtcGxlUmF0ZT04ZTM7YnJlYWs7ZGVmYXVsdDpKLnNhbXBsZUR1cmF0aW9uPVloLmdldEZyYW1lRHVyYXRpb24oSi5zYW1wbGVSYXRlLEoudGltZXNjYWxlKSxKLnNhbXBsZVJhdGVJbmRleD1ZaC5nZXRSYXRlSW5kZXhCeVJhdGUoSi5zYW1wbGVSYXRlKSxKLm9iamVjdFR5cGU9KG51bGw9PT0oQj1aLmVzZHMpfHx2b2lkIDA9PT1CP3ZvaWQgMDpCLm9iamVjdFR5cGUpfHwyLFouZXNkcyYmKEouY29uZmlnPUFycmF5LmZyb20oWi5lc2RzLmNvbmZpZykpLEouY29kZWM9KG51bGw9PT0oUT1aLmVzZHMpfHx2b2lkIDA9PT1RP3ZvaWQgMDpRLmNvZGVjKXx8Im1wNGEuNDAuMiJ9aWYoSi5zYW1wbGVEdXJhdGlvbj1ZaC5nZXRGcmFtZUR1cmF0aW9uKEouc2FtcGxlUmF0ZSxKLnRpbWVzY2FsZSksSi5vYmplY3RUeXBlPShudWxsPT09KFM9Wi5lc2RzKXx8dm9pZCAwPT09Uz92b2lkIDA6Uy5vYmplY3RUeXBlKXx8MixaLmVzZHMmJihaLmVzZHMuY29uZmlnP0ouY29uZmlnPUFycmF5LmZyb20oWi5lc2RzLmNvbmZpZyk6Y29uc29sZS53YXJuKCJlc2RzIGNvbmZpZyBpcyBudWxsIikpLEouY29kZWM9KG51bGw9PT0ocD1aLmVzZHMpfHx2b2lkIDA9PT1wP3ZvaWQgMDpwLmNvZGVjKXx8Im1wNGEuNDAuMiIsSi5zYW1wbGVSYXRlSW5kZXg9WWguZ2V0UmF0ZUluZGV4QnlSYXRlKEouc2FtcGxlUmF0ZSksSi5leHQ9e30sSi5leHQuc3Rzcz1udWxsPT09KE49dC5tZGlhKXx8dm9pZCAwPT09Tnx8bnVsbD09PShNPU4ubWluZil8fHZvaWQgMD09PU18fG51bGw9PT0oWT1NLnN0YmwpfHx2b2lkIDA9PT1ZP3ZvaWQgMDpZLnN0c3MsSi5leHQuY3R0cz1udWxsPT09KEg9dC5tZGlhKXx8dm9pZCAwPT09SHx8bnVsbD09PSh2PUgubWluZil8fHZvaWQgMD09PXZ8fG51bGw9PT0oTD12LnN0YmwpfHx2b2lkIDA9PT1MP3ZvaWQgMDpMLmN0dHMsSi5wcmVzZW50PSEwLFomJiJlbmNhIj09PVoudHlwZSlKLmlzQXVkaW9FbmNyeXB0aW9uPSEwLFouZGF0YV9mb3JtYXQ9bnVsbD09PShLPVouc2luZil8fHZvaWQgMD09PUt8fG51bGw9PT0oeD1LLmZybWEpfHx2b2lkIDA9PT14P3ZvaWQgMDp4LmRhdGFfZm9ybWF0LFouZGVmYXVsdF9LSUQ9bnVsbD09PShxPVouc2luZil8fHZvaWQgMD09PXF8fG51bGw9PT0oYj1xLnNjaGkpfHx2b2lkIDA9PT1iP3ZvaWQgMDpiLnRlbmMuZGVmYXVsdF9LSUQsWi5kZWZhdWx0X0lzRW5jcnlwdGVkPW51bGw9PT0oVD1aLnNpbmYpfHx2b2lkIDA9PT1UfHxudWxsPT09KE89VC5zY2hpKXx8dm9pZCAwPT09Tz92b2lkIDA6Ty50ZW5jLmRlZmF1bHRfSXNFbmNyeXB0ZWQsWi5kZWZhdWx0X0lWX3NpemU9bnVsbD09PShQPVouc2luZil8fHZvaWQgMD09PVB8fG51bGw9PT0oVz1QLnNjaGkpfHx2b2lkIDA9PT1XP3ZvaWQgMDpXLnRlbmMuZGVmYXVsdF9JVl9zaXplLEouYXVkaW9TZW5jPXQubWRpYS5taW5mLnN0Ymwuc2VuYyYmdC5tZGlhLm1pbmYuc3RibC5zZW5jLnNhbXBsZXMsSi51c2VFTUU9QS51c2VFTUUsSi5raWRWYWx1ZT1BLmtpZFZhbHVlLEouZW5jYT1afWlmKEkmJihJLmlzVmlkZW9FbmNyeXB0aW9uPSEhZyYmZy5pc1ZpZGVvRW5jcnlwdGlvbiksZyYmKGcuaXNBdWRpb0VuY3J5cHRpb249ISFJJiZJLmlzQXVkaW9FbmNyeXB0aW9uKSxudWxsIT1nJiZnLmVuY3Z8fG51bGwhPUkmJkkuZW5jYSl7dmFyIGosWCxWPW51bGw9PWd8fG51bGw9PT0oaj1nLmVuY3YpfHx2b2lkIDA9PT1qP3ZvaWQgMDpqLmRlZmF1bHRfS0lELHo9bnVsbD09SXx8bnVsbD09PShYPUkuZW5jYSl8fHZvaWQgMD09PVg/dm9pZCAwOlguZGVmYXVsdF9LSUQsXz1WfHx6PyhWfHx6KS5qb2luKCIiKTpudWxsO2cmJihnLmtpZD1fKSxJJiYoSS5raWQ9Xyl9cmV0dXJuIGcmJihnLmZsYWdzPTM4NDEpLEkmJihJLmZsYWdzPTE3OTMpLHt2aWRlb1RyYWNrOmcsYXVkaW9UcmFjazpJfX19fSx7a2V5OiJldmFsdWF0ZURlZmF1bHREdXJhdGlvbiIsdmFsdWU6ZnVuY3Rpb24oQSxnLEkpe3ZhciBCLFE9bnVsbD09Z3x8bnVsbD09PShCPWcuc2FtcGxlcyl8fHZvaWQgMD09PUI/dm9pZCAwOkIubGVuZ3RoO3JldHVybiBRPzEwMjQqUS9nLnRpbWVzY2FsZSpBLnRpbWVzY2FsZS9JOjEwMjR9fSx7a2V5OiJtb29mVG9TYW1wbGVzIix2YWx1ZTpmdW5jdGlvbihnLEksQil7dmFyIFE9e307cmV0dXJuIGcubWZoZCYmKEkmJihJLnNlcXVlbmNlTnVtYmVyPWcubWZoZC5zZXF1ZW5jZU51bWJlciksQiYmKEIuc2VxdWVuY2VOdW1iZXI9Zy5tZmhkLnNlcXVlbmNlTnVtYmVyKSksZy50cmFmLmZvckVhY2goKGZ1bmN0aW9uKGcpe3ZhciBFPWcudGZoZCxDPWcudGZkdCx0PWcudHJ1bjtpZihFJiZ0KXtDJiYoSSYmSS5pZD09PUUudHJhY2tJZCYmKEkuYmFzZU1lZGlhRGVjb2RlVGltZT1DLmJhc2VNZWRpYURlY29kZVRpbWUpLEImJkIuaWQ9PT1FLnRyYWNrSWQmJihCLmJhc2VNZWRpYURlY29kZVRpbWU9Qy5iYXNlTWVkaWFEZWNvZGVUaW1lKSk7dmFyIGk9RS5kZWZhdWx0U2FtcGxlU2l6ZXx8MCxlPUUuZGVmYXVsdFNhbXBsZUR1cmF0aW9ufHxBLmV2YWx1YXRlRGVmYXVsdER1cmF0aW9uKEksQix0LnNhbXBsZXMubGVuZ3RofHx0LnNhbXBsZUNvdW50KSxvPXQuZGF0YU9mZnNldHx8MCxyPTAsbj0tMTtpZighdC5zYW1wbGVzLmxlbmd0aCYmdC5zYW1wbGVDb3VudCl7UVtFLnRyYWNrSWRdPW5ldyBBcnJheSh0LnNhbXBsZUNvdW50KTtmb3IodmFyIGE9MDthPHQuc2FtcGxlQ291bnQ7YSsrKVFbRS50cmFja0lkXVthXT17b2Zmc2V0Om8sZHRzOnIsZHVyYXRpb246ZSxzaXplOml9LHIrPWUsbys9aX1lbHNlIFFbRS50cmFja0lkXT10LnNhbXBsZXMubWFwKChmdW5jdGlvbihBLGcpe3JldHVybihBPXtvZmZzZXQ6byxkdHM6cixwdHM6cisoQS5jdHN8fDApLGR1cmF0aW9uOkEuZHVyYXRpb258fGUsc2l6ZTpBLnNpemV8fGksZ29wSWQ6bixrZXlmcmFtZTowPT09Z3x8bnVsbCE9PUEuZmxhZ3MmJnZvaWQgMCE9PUEuZmxhZ3MmJig2NTUzNiZBLmZsYWdzKT4+PjAhPTY1NTM2fSkua2V5ZnJhbWUmJihuKyssQS5nb3BJZD1uKSxyKz1BLmR1cmF0aW9uLG8rPUEuc2l6ZSxBfSkpfX0pKSxRfX0se2tleToibW9vdlRvU2FtcGxlcyIsdmFsdWU6ZnVuY3Rpb24oQSl7dmFyIGc9QS50cmFrO2lmKGcmJmcubGVuZ3RoKXt2YXIgST1nLmZpbmQoKGZ1bmN0aW9uKEEpe3ZhciBnLEk7cmV0dXJuInZpZGUiPT09KG51bGw9PT0oZz1BLm1kaWEpfHx2b2lkIDA9PT1nfHxudWxsPT09KEk9Zy5oZGxyKXx8dm9pZCAwPT09ST92b2lkIDA6SS5oYW5kbGVyVHlwZSl9KSksQj1nLmZpbmQoKGZ1bmN0aW9uKEEpe3ZhciBnLEk7cmV0dXJuInNvdW4iPT09KG51bGw9PT0oZz1BLm1kaWEpfHx2b2lkIDA9PT1nfHxudWxsPT09KEk9Zy5oZGxyKXx8dm9pZCAwPT09ST92b2lkIDA6SS5oYW5kbGVyVHlwZSl9KSk7aWYoSXx8Qil7dmFyIFEsRTtpZihJKXt2YXIgQyx0LGk9bnVsbD09PShDPUkubWRpYSl8fHZvaWQgMD09PUN8fG51bGw9PT0odD1DLm1pbmYpfHx2b2lkIDA9PT10P3ZvaWQgMDp0LnN0Ymw7aWYoIWkpcmV0dXJuO3ZhciBlPWkuc3R0cyxvPWkuc3RzYyxyPWkuc3RzeixuPWkuc3RjbyxhPWkuc3RzcyxzPWkuY3R0cztpZighKGUmJm8mJnImJm4mJmEpKXJldHVybjtRPVpoKGUsbyxyLG4scyxhKX1pZihCKXt2YXIgYyxoLGYseT1udWxsPT09KGM9Qi5tZGlhKXx8dm9pZCAwPT09Y3x8bnVsbD09PShoPWMubWluZil8fHZvaWQgMD09PWg/dm9pZCAwOmguc3RibDtpZigheSlyZXR1cm47dmFyIHU9bnVsbD09PShmPUIubWRpYS5tZGhkKXx8dm9pZCAwPT09Zj92b2lkIDA6Zi50aW1lc2NhbGUsRD15LnN0dHMsdz15LnN0c2MsbD15LnN0c3osZD15LnN0Y287aWYoISh1JiZEJiZ3JiZsJiZkKSlyZXR1cm47RT1aaChELHcsbCxkKX1yZXR1cm57dmlkZW9TYW1wbGVzOlEsYXVkaW9TYW1wbGVzOkV9fX19fV0pLEF9KCk7ZnVuY3Rpb24gWmgoQSxnLEksQixRLEUpe3ZhciBDLHQsaSxlPVtdLG89bnVsbD09UT92b2lkIDA6US5lbnRyaWVzLHI9Zy5lbnRyaWVzLG49Qi5lbnRyaWVzLGE9SS5lbnRyeVNpemVzLHM9bnVsbD09RT92b2lkIDA6RS5lbnRyaWVzO3MmJihDPXt9LHMuZm9yRWFjaCgoZnVuY3Rpb24oQSl7Q1tBLTFdPSEwfSkpKSxvJiYodD1bXSxvLmZvckVhY2goKGZ1bmN0aW9uKEEpe2Zvcih2YXIgZz1BLmNvdW50LEk9QS5vZmZzZXQsQj0wO0I8ZztCKyspdC5wdXNoKEkpfSkpKTt2YXIgYz0tMSxoPTAsZj0wLHk9MCx1PTAsRD0wLHc9clswXS5zYW1wbGVzUGVyQ2h1bmssbD1yWzFdP3JbMV0uZmlyc3RDaHVuay0xOjEvMDtyZXR1cm4gQS5lbnRyaWVzLmZvckVhY2goKGZ1bmN0aW9uKEEpe2Zvcih2YXIgZz1BLmNvdW50LEI9QS5kZWx0YSxRPTA7UTxnO1ErKylpPXtkdHM6aCxkdXJhdGlvbjpCLHNpemU6YVtmXXx8SS5zYW1wbGVTaXplLG9mZnNldDpuW3ldK0QsaW5kZXg6Zn0scyYmKGkua2V5ZnJhbWU9Q1tmXSxpLmtleWZyYW1lJiZjKyssaS5nb3BJZD1jKSx0JiZmPHQubGVuZ3RoJiYoaS5wdHM9aS5kdHMrdFtmXSksZS5wdXNoKGkpLGgrPUIsKytmPHc/RCs9aS5zaXplOih5KyssRD0wLHk+PWwmJih1KyssbD1yW3UrMV0/clt1KzFdLmZpcnN0Q2h1bmstMToxLzApLHcrPXJbdV0uc2FtcGxlc1BlckNodW5rKX0pKSxlfWZ1bmN0aW9uIGpoKEEsZyl7cmV0dXJuIEEuZGF0YVJlZmVyZW5jZUluZGV4PUxoKGcsNiksQS53aWR0aD1MaChnLDI0KSxBLmhlaWdodD1MaChnLDI2KSxBLmhvcml6cmVzb2x1dGlvbj1KaChnLDI4KSxBLnZlcnRyZXNvbHV0aW9uPUpoKGcsMzIpLEEuZnJhbWVDb3VudD1MaChnLDQwKSxBLmRlcHRoPUxoKGcsNzQpLDc4fWZ1bmN0aW9uIFhoKEEsZyl7cmV0dXJuIEEuZGF0YVJlZmVyZW5jZUluZGV4PUxoKGcsNiksQS5jaGFubmVsQ291bnQ9TGgoZywxNiksQS5zYW1wbGVTaXplPUxoKGcsMTgpLEEuc2FtcGxlUmF0ZT1KaChnLDI0KS82NTUzNiwyOH1mdW5jdGlvbiBWaChBLGcsSSl7aWYoQSl7aWYoQS5zaXplIT09QS5kYXRhLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoImJveCAiLmNvbmNhdChBLnR5cGUsIiBzaXplICE9PSBkYXRhLmxlbmd0aCIpKTt2YXIgQj17c3RhcnQ6QS5zdGFydCxzaXplOkEuc2l6ZSxoZWFkZXJTaXplOkEuaGVhZGVyU2l6ZSx0eXBlOkEudHlwZX07cmV0dXJuIGcmJihCLnZlcnNpb249QS5kYXRhW0EuaGVhZGVyU2l6ZV0sQi5mbGFncz1mdW5jdGlvbihBKXt2YXIgZz1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06MDtyZXR1cm4oQVtnXTw8MTYpKyhBW2crMV08PDgpKyhBW2crMl18fDApfShBLmRhdGEsQS5oZWFkZXJTaXplKzEpLEIuaGVhZGVyU2l6ZSs9NCksSShCLEEuZGF0YS5zdWJhcnJheShCLmhlYWRlclNpemUpLEIuc3RhcnQrQi5oZWFkZXJTaXplKSxCfX12YXIgemg9ZnVuY3Rpb24oKXtmb3IodmFyIEE9W10sZz1hcmd1bWVudHMubGVuZ3RoLEk9bmV3IEFycmF5KGcpLEI9MDtCPGc7QisrKUlbQl09YXJndW1lbnRzW0JdO3JldHVybiBJLmZvckVhY2goKGZ1bmN0aW9uKGcpe0EucHVzaChmdW5jdGlvbihBLGcsSSl7Zm9yKHZhciBCPVN0cmluZyhJKSxRPTB8ZyxFPU1hdGguY2VpbChRL0IubGVuZ3RoKSxDPVtdLHQ9U3RyaW5nKEEpO0UtLTspQy5wdXNoKEIpO3JldHVybiBDLmpvaW4oIiIpLnN1YnN0cmluZygwLFEtdC5sZW5ndGgpK3R9KE51bWJlcihnKS50b1N0cmluZygxNiksMiwwKSl9KSksQVswXX07dmFyIF9oPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gQSgpe0NoKHRoaXMsQSksdGhpcy5idWZmZXI9bmV3IFVpbnQ4QXJyYXkoMCl9cmV0dXJuIGloKEEsW3trZXk6IndyaXRlIix2YWx1ZTpmdW5jdGlvbigpe2Zvcih2YXIgQT10aGlzLGc9YXJndW1lbnRzLmxlbmd0aCxJPW5ldyBBcnJheShnKSxCPTA7QjxnO0IrKylJW0JdPWFyZ3VtZW50c1tCXTtJLmZvckVhY2goKGZ1bmN0aW9uKGcpe2c/QS5idWZmZXI9ZnVuY3Rpb24oQSl7Zm9yKHZhciBnPTAsST1hcmd1bWVudHMubGVuZ3RoLEI9bmV3IEFycmF5KEk+MT9JLTE6MCksUT0xO1E8STtRKyspQltRLTFdPWFyZ3VtZW50c1tRXTtCLmZvckVhY2goKGZ1bmN0aW9uKEEpe2crPUEubGVuZ3RofSkpO3ZhciBFPW5ldyBBKGcpLEM9MDtyZXR1cm4gQi5mb3JFYWNoKChmdW5jdGlvbihBKXtFLnNldChBLEMpLEMrPUEubGVuZ3RofSkpLEV9KFVpbnQ4QXJyYXksQS5idWZmZXIsZyk6d2luZG93LmNvbnNvbGUud2FybihnKX0pKX19XSxbe2tleToid3JpdGVVaW50MTYiLHZhbHVlOmZ1bmN0aW9uKEEpe3JldHVybiBuZXcgVWludDhBcnJheShbQT4+OCYyNTUsMjU1JkFdKX19LHtrZXk6IndyaXRlVWludDMyIix2YWx1ZTpmdW5jdGlvbihBKXtyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoW0E+PjI0LEE+PjE2JjI1NSxBPj44JjI1NSwyNTUmQV0pfX1dKSxBfSgpLCRoPU1hdGgucG93KDIsMzIpLTEsQWY9ZnVuY3Rpb24oKXtmdW5jdGlvbiBBKCl7Q2godGhpcyxBKX1yZXR1cm4gaWgoQSxudWxsLFt7a2V5OiJib3giLHZhbHVlOmZ1bmN0aW9uKEEpe2Zvcih2YXIgZz1hcmd1bWVudHMubGVuZ3RoLEk9bmV3IEFycmF5KGc+MT9nLTE6MCksQj0xO0I8ZztCKyspSVtCLTFdPWFyZ3VtZW50c1tCXTt2YXIgUT04KyhJPUkuZmlsdGVyKEJvb2xlYW4pKS5yZWR1Y2UoKGZ1bmN0aW9uKEEsZyl7cmV0dXJuIEErZy5ieXRlTGVuZ3RofSksMCksRT1uZXcgVWludDhBcnJheShRKTtFWzBdPVE+PjI0JjI1NSxFWzFdPVE+PjE2JjI1NSxFWzJdPVE+PjgmMjU1LEVbM109MjU1JlEsRS5zZXQoQSw0KTt2YXIgQz04O3JldHVybiBJLmZvckVhY2goKGZ1bmN0aW9uKEEpe0Uuc2V0KEEsQyksQys9QS5ieXRlTGVuZ3RofSkpLEV9fSx7a2V5OiJGdWxsQm94Iix2YWx1ZTpmdW5jdGlvbihnLEksQil7Zm9yKHZhciBRPWFyZ3VtZW50cy5sZW5ndGgsRT1uZXcgQXJyYXkoUT4zP1EtMzowKSxDPTM7QzxRO0MrKylFW0MtM109YXJndW1lbnRzW0NdO3JldHVybiBBLmJveC5hcHBseShBLFtnLG5ldyBVaW50OEFycmF5KFtJLEI+PjE2JjI1NSxCPj44JjI1NSwyNTUmQl0pXS5jb25jYXQoRSkpfX0se2tleToiZnR5cCIsdmFsdWU6ZnVuY3Rpb24oZyl7cmV0dXJuIGcuZmluZCgoZnVuY3Rpb24oQSl7cmV0dXJuIEEudHlwZT09PWNoJiZBLmNvZGVjVHlwZT09PXVofSkpP0EuRlRZUEhFVjE6QS5GVFlQQVZDMX19LHtrZXk6ImluaXRTZWdtZW50Iix2YWx1ZTpmdW5jdGlvbihnKXtyZXR1cm4gSGgoQS5mdHlwKGcpLEEubW9vdihnKSl9fSx7a2V5OiJwc3NoIix2YWx1ZTpmdW5jdGlvbihnKXt2YXIgST1uZXcgVWludDhBcnJheShbMSwwLDAsMF0uY29uY2F0KFsxNiwxMTksMjM5LDIzNiwxOTIsMTc4LDc3LDIsMTcyLDIyNyw2MCwzMCw4MiwyMjYsMjUxLDc1XSxbMCwwLDAsMV0sYmgoZy5raWQpLFswLDAsMCwwXSkpO3JldHVybiBBLmJveChBLnR5cGVzLnBzc2gsSSl9fSx7a2V5OiJtb292Iix2YWx1ZTpmdW5jdGlvbihnKXtpZihnWzBdLnVzZUVNRSYmKGdbMF0uZW5jdnx8Z1swXS5lbmNhKSl7Z1swXS5wc3NofHwoZ1swXS5wc3NoPXtraWQ6Z1swXS5raWR9KTt2YXIgST10aGlzLnBzc2goZ1swXS5wc3NoKTtyZXR1cm4gQS5ib3guYXBwbHkoQSxbQS50eXBlcy5tb292LEEubXZoZChnWzBdLm12aGREdXJ0aW9ufHxnWzBdLmR1cmF0aW9uLGdbMF0ubXZoZFRpbWVjYWxlfHxnWzBdLnRpbWVzY2FsZSksQS5tdmV4KGcpXS5jb25jYXQocmgoZy5tYXAoKGZ1bmN0aW9uKGcpe3JldHVybiBBLnRyYWsoZyl9KSkpLFtJXSkpfXJldHVybiBBLmJveC5hcHBseShBLFtBLnR5cGVzLm1vb3YsQS5tdmhkKGdbMF0ubXZoZER1cnRpb258fGdbMF0uZHVyYXRpb24sZ1swXS5tdmhkVGltZWNhbGV8fGdbMF0udGltZXNjYWxlKV0uY29uY2F0KHJoKGcubWFwKChmdW5jdGlvbihnKXtyZXR1cm4gQS50cmFrKGcpfSkpKSxbQS5tdmV4KGcpXSkpfX0se2tleToibXZoZCIsdmFsdWU6ZnVuY3Rpb24oZyl7dmFyIEk9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOjllNDtyZXR1cm4gQS5ib3goQS50eXBlcy5tdmhkLG5ldyBVaW50OEFycmF5KFswLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCxJPj4yNCYyNTUsST4+MTYmMjU1LEk+PjgmMjU1LDI1NSZJLGc+PjI0JjI1NSxnPj4xNiYyNTUsZz4+OCYyNTUsMjU1JmcsMCwxLDAsMCwxLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDEsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsNjQsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMjU1LDI1NSwyNTUsMjU1XSkpfX0se2tleToidHJhayIsdmFsdWU6ZnVuY3Rpb24oZyl7cmV0dXJuIEEuYm94KEEudHlwZXMudHJhayxBLnRraGQoZy5pZCxnLnRraGREdXJhdGlvbnx8MCxnLndpZHRoLGcuaGVpZ2h0KSxBLm1kaWEoZykpfX0se2tleToidGtoZCIsdmFsdWU6ZnVuY3Rpb24oZyxJKXt2YXIgQj1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06MCxRPWFyZ3VtZW50cy5sZW5ndGg+MyYmdm9pZCAwIT09YXJndW1lbnRzWzNdP2FyZ3VtZW50c1szXTowO3JldHVybiBBLmJveChBLnR5cGVzLnRraGQsbmV3IFVpbnQ4QXJyYXkoWzAsMCwwLDcsMCwwLDAsMCwwLDAsMCwwLGc+PjI0JjI1NSxnPj4xNiYyNTUsZz4+OCYyNTUsMjU1JmcsMCwwLDAsMCxJPj4yNCYyNTUsST4+MTYmMjU1LEk+PjgmMjU1LDI1NSZJLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDEsMCwwLDAsMCwxLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDEsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDY0LDAsMCwwLEI+PjgmMjU1LDI1NSZCLDAsMCxRPj44JjI1NSwyNTUmUSwwLDBdKSl9fSx7a2V5OiJlZHRzIix2YWx1ZTpmdW5jdGlvbihnKXtyZXR1cm4gQS5ib3goQS50eXBlcy5lZHRzLEEuZWxzdChnKSl9fSx7a2V5OiJlbHN0Iix2YWx1ZTpmdW5jdGlvbihnKXtnLmVudHJpZXM7dmFyIEk9Zy5lbnRyaWVzRGF0YSxCPWcudmVyc2lvbjtyZXR1cm4gQS5GdWxsQm94KEEudHlwZXMuZWxzdCxCLDAsSSl9fSx7a2V5OiJtZGlhIix2YWx1ZTpmdW5jdGlvbihnKXtyZXR1cm4gQS5ib3goQS50eXBlcy5tZGlhLEEubWRoZChnLmR1cmF0aW9uLGcudGltZXNjYWxlKSxBLmhkbHIoZy50eXBlKSxBLm1pbmYoZykpfX0se2tleToibWRoZCIsdmFsdWU6ZnVuY3Rpb24oZyl7dmFyIEk9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOjllNDtyZXR1cm4gQS5ib3goQS50eXBlcy5tZGhkLG5ldyBVaW50OEFycmF5KFswLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCxJPj4yNCYyNTUsST4+MTYmMjU1LEk+PjgmMjU1LDI1NSZJLGc+PjI0JjI1NSxnPj4xNiYyNTUsZz4+OCYyNTUsMjU1JmcsODUsMTk2LDAsMF0pKX19LHtrZXk6ImhkbHIiLHZhbHVlOmZ1bmN0aW9uKGcpe3JldHVybiBBLmJveChBLnR5cGVzLmhkbHIsQS5IRExSX1RZUEVTW2ddKX19LHtrZXk6Im1pbmYiLHZhbHVlOmZ1bmN0aW9uKGcpe3JldHVybiBBLmJveChBLnR5cGVzLm1pbmYsZy50eXBlPT09Y2g/QS5WTUhEOkEuU01IRCxBLkRJTkYsQS5zdGJsKGcpKX19LHtrZXk6InN0YmwiLHZhbHVlOmZ1bmN0aW9uKGcpe3JldHVybiBnJiZnLmV4dCxBLmJveChBLnR5cGVzLnN0YmwsQS5zdHNkKGcpLEEuU1RUUyxbXVswXSxBLlNUU0MsQS5TVFNaLEEuU1RDTyl9fSx7a2V5OiJzdHNkIix2YWx1ZTpmdW5jdGlvbihnKXt2YXIgSTtyZXR1cm4gST0iYXVkaW8iPT09Zy50eXBlP2cudXNlRU1FJiZnLmVuY2E/QS5lbmNhKGcpOkEubXA0YShnKTpnLnVzZUVNRSYmZy5lbmN2P0EuZW5jdihnKTpBLmF2YzFoZXYxdnZjMShnKSxBLmJveChBLnR5cGVzLnN0c2QsbmV3IFVpbnQ4QXJyYXkoWzAsMCwwLDAsMCwwLDAsMV0pLEkpfX0se2tleToiZW5jYSIsdmFsdWU6ZnVuY3Rpb24oZyl7dmFyIEk9Zy5lbmNhLmNoYW5uZWxDb3VudCxCPWcuZW5jYS5zYW1wbGVSYXRlLFE9bmV3IFVpbnQ4QXJyYXkoWzAsMCwwLDAsMCwwLDAsMSwwLDAsMCwwLDAsMCwwLDAsMCxJLDAsMTYsMCwwLDAsMCxCPj44JjI1NSwyNTUmQiwwLDBdKSxFPUEuZXNkcyhnLmNvbmZpZyksQz1BLnNpbmYoZy5lbmNhKTtyZXR1cm4gQS5ib3goQS50eXBlcy5lbmNhLFEsRSxDKX19LHtrZXk6ImVuY3YiLHZhbHVlOmZ1bmN0aW9uKGcpe3ZhciBJLEIsUT1nLnNwcy5sZW5ndGg+MD9nLnNwc1swXTpbXSxFPWcucHBzLmxlbmd0aD4wP2cucHBzWzBdOltdLEM9Zy53aWR0aCx0PWcuaGVpZ2h0LGk9Zy5zYXJSYXRpb1swXSxlPWcuc2FyUmF0aW9bMV0sbz1uZXcgVWludDhBcnJheShbMCwwLDAsMCwwLDAsMCwxLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsQz4+OCYyNTUsMjU1JkMsdD4+OCYyNTUsMjU1JnQsMCw3MiwwLDAsMCw3MiwwLDAsMCwwLDAsMCwwLDEsMTgsMTAwLDk3LDEwNSwxMDgsMTIxLDEwOSwxMTEsMTE2LDEwNSwxMTEsMTEwLDQ3LDEwNCwxMDgsMTE1LDQ2LDEwNiwxMTUsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDI0LDE3LDE3XSkscj1uZXcgVWludDhBcnJheSgoST0oQj1bMSxRWzFdLFFbMl0sUVszXSwyNTUsMjI1LFEubGVuZ3RoPj4+OCYyNTUsMjU1JlEubGVuZ3RoXSkuY29uY2F0LmFwcGx5KEIscmgoUSkpLmNvbmNhdChbMSxFLmxlbmd0aD4+PjgmMjU1LDI1NSZFLmxlbmd0aF0pKS5jb25jYXQuYXBwbHkoSSxyaChFKSkpLG49bmV3IFVpbnQ4QXJyYXkoWzAsMCw4OCw1NywwLDE1LDIwMCwxOTIsMCw0LDg2LDcyXSksYT1BLnNpbmYoZy5lbmN2KSxzPW5ldyBVaW50OEFycmF5KFtpPj4yNCxpPj4xNiYyNTUsaT4+OCYyNTUsMjU1JmksZT4+MjQsZT4+MTYmMjU1LGU+PjgmMjU1LDI1NSZlXSk7cmV0dXJuIEEuYm94KEEudHlwZXMuZW5jdixvLEEuYm94KEEudHlwZXMuYXZjQyxyKSxBLmJveChBLnR5cGVzLmJ0cnQsbiksYSxBLmJveChBLnR5cGVzLnBhc3AscykpfX0se2tleToic2NoaSIsdmFsdWU6ZnVuY3Rpb24oZyl7dmFyIEk9bmV3IFVpbnQ4QXJyYXkoW10pLEI9QS50ZW5jKGcpO3JldHVybiBBLmJveChBLnR5cGVzLnNjaGksSSxCKX19LHtrZXk6InRlbmMiLHZhbHVlOmZ1bmN0aW9uKGcpe3ZhciBJPW5ldyBVaW50OEFycmF5KFswLDAsMCwwLDAsMCwyNTUmZy5kZWZhdWx0X0lzRW5jcnlwdGVkLDI1NSZnLmRlZmF1bHRfSVZfc2l6ZV0uY29uY2F0KGJoKGcuZGVmYXVsdF9LSUQpKSk7cmV0dXJuIEEuYm94KEEudHlwZXMudGVuYyxJKX19LHtrZXk6InNpbmYiLHZhbHVlOmZ1bmN0aW9uKGcpe3ZhciBJPW5ldyBVaW50OEFycmF5KFtdKSxCPW5ldyBVaW50OEFycmF5KFtnLmRhdGFfZm9ybWF0LmNoYXJDb2RlQXQoMCksZy5kYXRhX2Zvcm1hdC5jaGFyQ29kZUF0KDEpLGcuZGF0YV9mb3JtYXQuY2hhckNvZGVBdCgyKSxnLmRhdGFfZm9ybWF0LmNoYXJDb2RlQXQoMyldKSxRPW5ldyBVaW50OEFycmF5KFswLDAsMCwwLDk5LDEwMSwxMTAsOTksMCwxLDAsMF0pLEU9QS5zY2hpKGcpO3JldHVybiBBLmJveChBLnR5cGVzLnNpbmYsSSxBLmJveChBLnR5cGVzLmZybWEsQiksQS5ib3goQS50eXBlcy5zY2htLFEpLEUpfX0se2tleToiYXZjMWhldjF2dmMxIix2YWx1ZTpmdW5jdGlvbihnKXt2YXIgSSxCO2cuY29kZWNUeXBlPT09dWg/KEk9QS5odmNDKGcpLEI9QS50eXBlcy5odmMxKTpnLmNvZGVjVHlwZT09PURoPyhJPUEudnZjQyhnKSxCPUEudHlwZXMuYnZjMik6KEk9QS5hdmNDKGcpLEI9QS50eXBlcy5hdmMxKTt2YXIgUT1bbmV3IFVpbnQ4QXJyYXkoWzAsMCwwLDAsMCwwLDAsMSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLGcud2lkdGg+PjgmMjU1LDI1NSZnLndpZHRoLGcuaGVpZ2h0Pj44JjI1NSwyNTUmZy5oZWlnaHQsMCw3MiwwLDAsMCw3MiwwLDAsMCwwLDAsMCwwLDEsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMjQsMTcsMTddKSxJXTtyZXR1cm4gZy5jb2RlY1R5cGU9PT11aD9RLnB1c2goQS5ib3goQS50eXBlcy5maWVsLG5ldyBVaW50OEFycmF5KFsxLDBdKSkpOmcuc2FyUmF0aW8mJmcuc2FyUmF0aW8ubGVuZ3RoPjEmJlEucHVzaChBLnBhc3AoZy5zYXJSYXRpbykpLEEuYm94LmFwcGx5KEEsW0JdLmNvbmNhdChRKSl9fSx7a2V5OiJhdmNDIix2YWx1ZTpmdW5jdGlvbihnKXt2YXIgSSxCLFEsRT1bXSxDPVtdO3JldHVybiBnLnNwcy5mb3JFYWNoKChmdW5jdGlvbihBKXtRPUEuYnl0ZUxlbmd0aCxFLnB1c2goUT4+PjgmMjU1KSxFLnB1c2goMjU1JlEpLEUucHVzaC5hcHBseShFLHJoKEEpKX0pKSxnLnBwcy5mb3JFYWNoKChmdW5jdGlvbihBKXtRPUEuYnl0ZUxlbmd0aCxDLnB1c2goUT4+PjgmMjU1KSxDLnB1c2goMjU1JlEpLEMucHVzaC5hcHBseShDLHJoKEEpKX0pKSxBLmJveChBLnR5cGVzLmF2Y0MsbmV3IFVpbnQ4QXJyYXkoKEk9KEI9WzEsRVszXSxFWzRdLEVbNV0sMjU1LDIyNHxnLnNwcy5sZW5ndGhdKS5jb25jYXQuYXBwbHkoQixFKS5jb25jYXQoW2cucHBzLmxlbmd0aF0pKS5jb25jYXQuYXBwbHkoSSxDKSkpfX0se2tleToidnZjQyIsdmFsdWU6ZnVuY3Rpb24oZyl7dmFyIEk9Zy52dmNDO3JldHVybiBBLmJveChBLnR5cGVzLmJ2MkMsbmV3IFVpbnQ4QXJyYXkoSSkpfX0se2tleToiaHZjQyIsdmFsdWU6ZnVuY3Rpb24oZyl7dmFyIEk9Zy5odmNDO2lmKEkgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcnx8SSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpcmV0dXJuIEk7dmFyIEIsUT1nLnZwcyxFPWcuc3BzLEM9Zy5wcHM7aWYoSSl7dmFyIHQ9SS5nZW5lcmFsUHJvZmlsZUNvbXBhdGliaWxpdHlGbGFncyxpPUkuZ2VuZXJhbENvbnN0cmFpbnRJbmRpY2F0b3JGbGFncyxlPShRLmxlbmd0aCYmMSkrKEUubGVuZ3RoJiYxKSsoQy5sZW5ndGgmJjEpO0I9WzEsSS5nZW5lcmFsUHJvZmlsZVNwYWNlPDw2fEkuZ2VuZXJhbFRpZXJGbGFnPDw1fEkuZ2VuZXJhbFByb2ZpbGVJZGMsdD4+PjI0LHQ+Pj4xNix0Pj4+OCx0LGlbMF0saVsxXSxpWzJdLGlbM10saVs0XSxpWzVdLEkuZ2VuZXJhbExldmVsSWRjLDI0MCwwLDI1MiwyNTJ8SS5jaHJvbWFGb3JtYXRJZGMsMjQ4fEkuYml0RGVwdGhMdW1hTWludXM4LDI0OHxJLmJpdERlcHRoQ2hyb21hTWludXM4LDAsMCxJLm51bVRlbXBvcmFsTGF5ZXJzPDwzfEkudGVtcG9yYWxJZE5lc3RlZDw8MnwzLGVdO3ZhciBvPWZ1bmN0aW9uKEEpe3ZhciBnO0IucHVzaChBLmxlbmd0aD4+OCxBLmxlbmd0aCksKGc9QikucHVzaC5hcHBseShnLHJoKEEpKX07US5sZW5ndGgmJihCLnB1c2goMTYwLDAsUS5sZW5ndGgpLFEuZm9yRWFjaChvKSksRS5sZW5ndGgmJihCLnB1c2goMTYxLDAsRS5sZW5ndGgpLEUuZm9yRWFjaChvKSksQy5sZW5ndGgmJihCLnB1c2goMTYyLDAsQy5sZW5ndGgpLEMuZm9yRWFjaChvKSl9ZWxzZSBCPVsxLDEsOTYsMCwwLDAsMTQ0LDAsMCwwLDAsMCw5MywyNDAsMCwyNTIsMjUzLDI0OCwyNDgsMCwwLDE1LDMsMTYwLDAsMSwwLDI0LDY0LDEsMTIsMSwyNTUsMjU1LDEsOTYsMCwwLDMsMCwxNDQsMCwwLDMsMCwwLDMsMCw5MywxNTMsMTUyLDksMTYxLDAsMSwwLDQ1LDY2LDEsMSwxLDk2LDAsMCwzLDAsMTQ0LDAsMCwzLDAsMCwzLDAsOTMsMTYwLDIsMTI4LDEyOCw0NSwyMiw4OSwxNTMsMTY0LDE0Nyw0MywxNTQsMTI4LDEyOCwxMjgsMTMwLDAsMCwzLDAsMiwwLDAsMywwLDUwLDE2LDE2MiwwLDEsMCw3LDY4LDEsMTkzLDExNCwxODAsOTgsNjRdO3JldHVybiBBLmJveChBLnR5cGVzLmh2Y0MsbmV3IFVpbnQ4QXJyYXkoQikpfX0se2tleToicGFzcCIsdmFsdWU6ZnVuY3Rpb24oZyl7dmFyIEk9b2goZywyKSxCPUlbMF0sUT1JWzFdO3JldHVybiBBLmJveChBLnR5cGVzLnBhc3AsbmV3IFVpbnQ4QXJyYXkoW0I+PjI0LEI+PjE2JjI1NSxCPj44JjI1NSwyNTUmQixRPj4yNCxRPj4xNiYyNTUsUT4+OCYyNTUsMjU1JlFdKSl9fSx7a2V5OiJtcDRhIix2YWx1ZTpmdW5jdGlvbihnKXtyZXR1cm4gQS5ib3goQS50eXBlcy5tcDRhLG5ldyBVaW50OEFycmF5KFswLDAsMCwwLDAsMCwwLDEsMCwwLDAsMCwwLDAsMCwwLDAsZy5jaGFubmVsQ291bnQsMCwxNiwwLDAsMCwwLGcuc2FtcGxlUmF0ZT4+OCYyNTUsMjU1Jmcuc2FtcGxlUmF0ZSwwLDBdKSxnLmNvbmZpZy5sZW5ndGg/QS5lc2RzKGcuY29uZmlnKTp2b2lkIDApfX0se2tleToiZXNkcyIsdmFsdWU6ZnVuY3Rpb24oZyl7dmFyIEk9Zy5sZW5ndGg7cmV0dXJuIEEuYm94KEEudHlwZXMuZXNkcyxuZXcgVWludDhBcnJheShbMCwwLDAsMCwzLDIzK0ksMCwwLDAsNCwxNStJLDY0LDIxLDAsNiwwLDAsMCwyMTgsMTkyLDAsMCwyMTgsMTkyLDVdLmNvbmNhdChbSV0pLmNvbmNhdChnKS5jb25jYXQoWzYsMSwyXSkpKX19LHtrZXk6Im12ZXgiLHZhbHVlOmZ1bmN0aW9uKGcpe3JldHVybiBBLmJveC5hcHBseShBLFtBLnR5cGVzLm12ZXhdLmNvbmNhdChyaChnLm1hcCgoZnVuY3Rpb24oZyl7cmV0dXJuIEEudHJleChnLmlkKX0pKSkpKX19LHtrZXk6InRyZXgiLHZhbHVlOmZ1bmN0aW9uKGcpe3JldHVybiBBLmJveChBLnR5cGVzLnRyZXgsbmV3IFVpbnQ4QXJyYXkoWzAsMCwwLDAsZz4+MjQsZz4+MTYmMjU1LGc+PjgmMjU1LDI1NSZnLDAsMCwwLDEsMCwwLDAsMCwwLDAsMCwwLDAsMSwwLDFdKSl9fSx7a2V5OiJ0cmV4MSIsdmFsdWU6ZnVuY3Rpb24oZyl7cmV0dXJuIEEuYm94KEEudHlwZXMudHJleCxuZXcgVWludDhBcnJheShbMCwwLDAsMCxnPj4yNCxnPj4xNiYyNTUsZz4+OCYyNTUsMjU1JmcsMCwwLDAsMSwwLDAsMiwwLDAsMCwwLDAsMCwxLDAsMF0pKX19LHtrZXk6InRyZXgyIix2YWx1ZTpmdW5jdGlvbihnKXtyZXR1cm4gQS5ib3goQS50eXBlcy50cmV4LG5ldyBVaW50OEFycmF5KFswLDAsMCwwLGc+PjI0LGc+PjE2JjI1NSxnPj44JjI1NSwyNTUmZywwLDAsMCwxLDAsMCw0LDAsMCwwLDAsMCwyLDAsMCwwXSkpfX0se2tleToibW9vZiIsdmFsdWU6ZnVuY3Rpb24oZyl7cmV0dXJuIEEuYm94LmFwcGx5KEEsW0EudHlwZXMubW9vZixBLm1maGQoZ1swXS5zYW1wbGVzP2dbMF0uc2FtcGxlc1swXS5nb3BJZDowKV0uY29uY2F0KHJoKGcubWFwKChmdW5jdGlvbihnKXtyZXR1cm4gQS50cmFmKGcpfSkpKSkpfX0se2tleToibWZoZCIsdmFsdWU6ZnVuY3Rpb24oZyl7cmV0dXJuIEEuYm94KEEudHlwZXMubWZoZCxuZXcgVWludDhBcnJheShbMCwwLDAsMCxnPj4yNCxnPj4xNiYyNTUsZz4+OCYyNTUsMjU1JmddKSl9fSx7a2V5OiJ0cmFmIix2YWx1ZTpmdW5jdGlvbihnKXt2YXIgST1BLnRmaGQoZy5pZCksQj1BLnRmZHQoZy5iYXNlTWVkaWFEZWNvZGVUaW1lKSxRPTA7aWYoZy5pc1ZpZGVvJiZnLnZpZGVvU2VuYyYmZy52aWRlb1NlbmMuZm9yRWFjaCgoZnVuY3Rpb24oQSl7USs9OCxBLnN1YnNhbXBsZXMmJkEuc3Vic2FtcGxlcy5sZW5ndGgmJihRKz0yLFErPTYqQS5zdWJzYW1wbGVzLmxlbmd0aCl9KSksZy52aWRlb1NlbmNMZW5ndGg9USxnLnVzZUVNRSYmKGcuaXNWaWRlb0VuY3J5cHRpb258fGcuaXNBdWRpb0VuY3J5cHRpb24pKXtpZihnLmlzVmlkZW9FbmNyeXB0aW9uKXtpZihnLmlzVmlkZW8pe3ZhciBFPUEuc2FpeihnKSxDPUEuc2FpbyhnKSx0PUEudHJ1bjEoZyksaT1BLnNlbmMoZyk7cmV0dXJuIEEuYm94KEEudHlwZXMudHJhZixJLEIsRSxDLHQsaSl9aWYoZy5pc0F1ZGlvRW5jcnlwdGlvbil7dmFyIGU9QS5zYmdwKCksbz1BLnNhaXooZykscj1BLnNhaW8oZyksbj1BLnNlbmMoZyksYT1BLnRydW4xKGcpO3JldHVybiBBLmJveChBLnR5cGVzLnRyYWYsSSxCLGUsbyxyLG4sYSl9dmFyIHM9QS5zYmdwKCksYz1BLnRydW4xKGcpO3JldHVybiBBLmJveChBLnR5cGVzLnRyYWYsSSxCLHMsYyl9aWYoZy5pc1ZpZGVvKXt2YXIgaD1BLnRydW4xKGcpO3JldHVybiBBLmJveChBLnR5cGVzLnRyYWYsSSxCLGgpfXZhciBmPUEuc2JncCgpLHk9QS5zYWl6KGcpLHU9QS5zYWlvKGcpLEQ9QS5zZW5jKGcpLHc9QS50cnVuMShnKTtyZXR1cm4gQS5ib3goQS50eXBlcy50cmFmLEksQixmLHksdSxELHcpfXZhciBsPUEuc2R0cChnKTtyZXR1cm4gQS5ib3goQS50eXBlcy50cmFmLEksQixsLEEudHJ1bihnLnNhbXBsZXMsbC5ieXRlTGVuZ3RoKzc2KSl9fSx7a2V5OiJzZHRwIix2YWx1ZTpmdW5jdGlvbihnKXt2YXIgST1uZXcgX2g7cmV0dXJuIGcuc2FtcGxlcy5mb3JFYWNoKChmdW5jdGlvbihBKXtJLndyaXRlKG5ldyBVaW50OEFycmF5KGcuaXNWaWRlbz9bQS5rZXlmcmFtZT8zMjoxNl06WzE2XSkpfSkpLEEuYm94KEEudHlwZXMuc2R0cCx0aGlzLmV4dGVuc2lvbigwLDApLEkuYnVmZmVyKX19LHtrZXk6InRydW4xIix2YWx1ZTpmdW5jdGlvbihnKXt2YXIgST1uZXcgX2gsQj1faC53cml0ZVVpbnQzMihnLnNhbXBsZXMubGVuZ3RoKSxRPW51bGw7aWYoZy5pc1ZpZGVvKXt2YXIgRT1nLnZpZGVvU2VuY0xlbmd0aDtRPV9oLndyaXRlVWludDMyKDc2KzE2Kmcuc2FtcGxlcy5sZW5ndGgrRSs3NyksIWcuaXNWaWRlb0VuY3J5cHRpb24mJmcuaXNBdWRpb0VuY3J5cHRpb24mJihRPV9oLndyaXRlVWludDMyKDc2KzE2Kmcuc2FtcGxlcy5sZW5ndGgrMjApKX1lbHNle3ZhciBDPTc2KzEyKmcuc2FtcGxlcy5sZW5ndGgrNTI7Zy5pc0F1ZGlvRW5jcnlwdGlvbiYmKEM9NzYrMTIqZy5zYW1wbGVzLmxlbmd0aCs4KmcuYXVkaW9TZW5jLmxlbmd0aCsxMDUpLFE9X2gud3JpdGVVaW50MzIoQyl9cmV0dXJuIGcuc2FtcGxlcy5mb3JFYWNoKChmdW5jdGlvbihBKXtJLndyaXRlKF9oLndyaXRlVWludDMyKEEuZHVyYXRpb24pKSxJLndyaXRlKF9oLndyaXRlVWludDMyKEEuc2l6ZSkpLEkud3JpdGUoX2gud3JpdGVVaW50MzIoQS5rZXlmcmFtZT8zMzU1NDQzMjo2NTUzNikpLGcuaXNWaWRlbyYmSS53cml0ZShfaC53cml0ZVVpbnQzMihBLmN0cz9BLmN0czowKSl9KSksQS5ib3goQS50eXBlcy50cnVuLHRoaXMuZXh0ZW5zaW9uKDAsZy5mbGFncyksQixRLEkuYnVmZmVyKX19LHtrZXk6InNlbmMiLHZhbHVlOmZ1bmN0aW9uKGcpe3ZhciBJPW5ldyBfaCxCPWcuc2FtcGxlcy5sZW5ndGgsUT1nLmlzVmlkZW8/MTY6OCxFPWcuaXNWaWRlbz8yOjAsQz1bXSx0PTA7cmV0dXJuIGcuaXNWaWRlbz8oQz1nLnZpZGVvU2VuYyx0PWcudmlkZW9TZW5jTGVuZ3RoKTpDPWcuYXVkaW9TZW5jLHQ9dHx8USpCLEkud3JpdGUoX2gud3JpdGVVaW50MzIoMTYrdCksQS50eXBlcy5zZW5jLHRoaXMuZXh0ZW5zaW9uKDAsRSkpLEkud3JpdGUoX2gud3JpdGVVaW50MzIoQikpLEMuZm9yRWFjaCgoZnVuY3Rpb24oQSl7Zm9yKHZhciBnPTA7ZzxBLkluaXRpYWxpemF0aW9uVmVjdG9yLmxlbmd0aDtnKyspSS53cml0ZShuZXcgVWludDhBcnJheShbQS5Jbml0aWFsaXphdGlvblZlY3RvcltnXV0pKTtBLnN1YnNhbXBsZXMmJkEuc3Vic2FtcGxlcy5sZW5ndGgmJihJLndyaXRlKF9oLndyaXRlVWludDE2KEEuc3Vic2FtcGxlcy5sZW5ndGgpKSxBLnN1YnNhbXBsZXMuZm9yRWFjaCgoZnVuY3Rpb24oQSl7SS53cml0ZShfaC53cml0ZVVpbnQxNihBLkJ5dGVzT2ZDbGVhckRhdGEpKSxJLndyaXRlKF9oLndyaXRlVWludDMyKEEuQnl0ZXNPZlByb3RlY3RlZERhdGEpKX0pKSl9KSksSS5idWZmZXJ9fSx7a2V5OiJzYWlvIix2YWx1ZTpmdW5jdGlvbihnKXt2YXIgST0xMipnLnNhbXBsZXMubGVuZ3RoKzE0MTshZy5pc1ZpZGVvJiZnLmlzQXVkaW9FbmNyeXB0aW9uJiYoST0xNDkpO3ZhciBCPW5ldyBVaW50OEFycmF5KFsxLDAsMCwwLDAsMCwwLDEsMCwwLDAsMCxJPj4yNCYyNTUsST4+MTYmMjU1LEk+PjgmMjU1LDI1NSZJXSk7cmV0dXJuIEEuYm94KEEudHlwZXMuc2FpbyxCKX19LHtrZXk6InNhaXoiLHZhbHVlOmZ1bmN0aW9uKGcpe3ZhciBJPWcuc2FtcGxlcy5sZW5ndGgsQj1uZXcgVWludDhBcnJheShbMCwwLDAsMCwxNixJPj4yNCYyNTUsST4+MTYmMjU1LEk+PjgmMjU1LDI1NSZJXSk7cmV0dXJuIEEuYm94KEEudHlwZXMuc2FpeixCKX19LHtrZXk6InNiZ3AiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGc9bmV3IFVpbnQ4QXJyYXkoWzExNCwxMTEsMTA4LDEwOCwwLDAsMCwxLDAsMCwxLDI1LDAsMCwwLDFdKTtyZXR1cm4gQS5ib3goQS50eXBlcy5zYmdwLHRoaXMuZXh0ZW5zaW9uKDAsMCksZyl9fSx7a2V5OiJleHRlbnNpb24iLHZhbHVlOmZ1bmN0aW9uKEEsZyl7cmV0dXJuIG5ldyBVaW50OEFycmF5KFtBLGc+PjE2JjI1NSxnPj44JjI1NSwyNTUmZ10pfX0se2tleToidGZoZCIsdmFsdWU6ZnVuY3Rpb24oZyl7cmV0dXJuIEEuYm94KEEudHlwZXMudGZoZCxuZXcgVWludDhBcnJheShbMCwwLDAsMCxnPj4yNCxnPj4xNiYyNTUsZz4+OCYyNTUsMjU1JmddKSl9fSx7a2V5OiJ0ZmR0Iix2YWx1ZTpmdW5jdGlvbihnKXt2YXIgST1NYXRoLmZsb29yKGcvKCRoKzEpKSxCPU1hdGguZmxvb3IoZyUoJGgrMSkpO3JldHVybiBBLmJveChBLnR5cGVzLnRmZHQsbmV3IFVpbnQ4QXJyYXkoWzEsMCwwLDAsST4+MjQsST4+MTYmMjU1LEk+PjgmMjU1LDI1NSZJLEI+PjI0LEI+PjE2JjI1NSxCPj44JjI1NSwyNTUmQl0pKX19LHtrZXk6InRydW4iLHZhbHVlOmZ1bmN0aW9uKGcsSSl7dmFyIEI9Zy5sZW5ndGgsUT0xMisxNipCO0krPTgrUTt2YXIgRT1uZXcgVWludDhBcnJheShRKTtFLnNldChbMCwwLDE1LDEsQj4+PjI0JjI1NSxCPj4+MTYmMjU1LEI+Pj44JjI1NSwyNTUmQixJPj4+MjQmMjU1LEk+Pj4xNiYyNTUsST4+PjgmMjU1LDI1NSZJXSwwKTtmb3IodmFyIEM9MDtDPEI7QysrKXt2YXIgdD1nW0NdLGk9dC5kdXJhdGlvbixlPXQuc2l6ZSxvPXQuZmxhZyxyPXZvaWQgMD09PW8/e306byxuPXQuY3RzLGE9dm9pZCAwPT09bj8wOm47RS5zZXQoW2k+Pj4yNCYyNTUsaT4+PjE2JjI1NSxpPj4+OCYyNTUsMjU1JmksZT4+PjI0JjI1NSxlPj4+MTYmMjU1LGU+Pj44JjI1NSwyNTUmZSxyLmlzTGVhZGluZzw8MnwobnVsbD09PXIuZGVwZW5kc09ufHx2b2lkIDA9PT1yLmRlcGVuZHNPbj8xOnIuZGVwZW5kc09uKSxyLmlzRGVwZW5kZWRPbjw8NnxyLmhhc1JlZHVuZGFuY3k8PDR8ci5wYWRkaW5nVmFsdWU8PDF8KG51bGw9PT1yLmlzTm9uU3luY1NhbXBsZXx8dm9pZCAwPT09ci5pc05vblN5bmNTYW1wbGU/MTpyLmlzTm9uU3luY1NhbXBsZSksNjE0NDAmci5kZWdyYWRhdGlvblByaW9yaXR5LDE1JnIuZGVncmFkYXRpb25Qcmlvcml0eSxhPj4+MjQmMjU1LGE+Pj4xNiYyNTUsYT4+PjgmMjU1LDI1NSZhXSwxMisxNipDKX1yZXR1cm4gQS5ib3goQS50eXBlcy50cnVuLEUpfX0se2tleToibW9vdk1QNCIsdmFsdWU6ZnVuY3Rpb24oZyl7cmV0dXJuIEEuYm94LmFwcGx5KEEsW0EudHlwZXMubW9vdixBLm12aGQoZ1swXS5kdXJhdGlvbixnWzBdLnRpbWVzY2FsZSldLmNvbmNhdChyaChnLm1hcCgoZnVuY3Rpb24oZyl7cmV0dXJuIEEudHJhY2tNUDQoZyl9KSkpKSl9fSx7a2V5OiJ0cmFja01QNCIsdmFsdWU6ZnVuY3Rpb24oZyl7cmV0dXJuIEEuYm94KEEudHlwZXMudHJhayxBLnRraGQoZy5pZCxnLmR1cmF0aW9uLGcud2lkdGgsZy5oZWlnaHQpLEEubWRpYU1QNChnKSl9fSx7a2V5OiJtZGlhTVA0Iix2YWx1ZTpmdW5jdGlvbihnKXtyZXR1cm4gQS5ib3goQS50eXBlcy5tZGlhLEEubWRoZChnLmR1cmF0aW9uLGcudGltZXNjYWxlKSxBLmhkbHIoZy50eXBlKSxBLm1pbmZNUDQoZykpfX0se2tleToibWluZk1QNCIsdmFsdWU6ZnVuY3Rpb24oZyl7cmV0dXJuIEEuYm94KEEudHlwZXMubWluZixnLnR5cGU9PT1jaD9BLlZNSEQ6QS5TTUhELEEuRElORixBLnN0YmxNUDQoZykpfX0se2tleToic3RibE1QNCIsdmFsdWU6ZnVuY3Rpb24oZyl7dmFyIEk9Zy5leHQsQj1bQS5zdHNkKGcpLEEuc3R0cyhJLnN0dHMpLEEuc3RzYyhJLnN0c2MpLEEuc3RzeihJLnN0c3opLEEuc3RjbyhJLnN0Y28pXTtyZXR1cm4gSS5zdHNzLmxlbmd0aCYmQi5wdXNoKEEuc3RzcyhJLnN0c3MpKSxJLmN0dHMubGVuZ3RoJiZCLnB1c2goQS5jdHRzKEkuY3R0cykpLEEuYm94LmFwcGx5KEEsW0EudHlwZXMuc3RibF0uY29uY2F0KEIpKX19LHtrZXk6InN0dHMiLHZhbHVlOmZ1bmN0aW9uKGcpe3ZhciBJPWcubGVuZ3RoLEI9bmV3IFVpbnQ4QXJyYXkoOCpJKSxRPTA7cmV0dXJuIGcuZm9yRWFjaCgoZnVuY3Rpb24oQSl7dmFyIGc9QS52YWx1ZSxJPUEuY291bnQ7Qi5zZXQoW0k+PjI0LEk+PjE2JjI1NSxJPj44JjI1NSwyNTUmSSxnPj4yNCxnPj4xNiYyNTUsZz4+OCYyNTUsMjU1JmddLFEpLFErPTh9KSksQS5ib3goQS50eXBlcy5zdHRzLEhoKG5ldyBVaW50OEFycmF5KFswLDAsMCwwLEk+PjI0LEk+PjE2JjI1NSxJPj44JjI1NSwyNTUmSV0pLEIpKX19LHtrZXk6InN0c2MiLHZhbHVlOmZ1bmN0aW9uKGcpe3ZhciBJPWcubGVuZ3RoLEI9bmV3IFVpbnQ4QXJyYXkoMTIqSSksUT0wO3JldHVybiBnLmZvckVhY2goKGZ1bmN0aW9uKEEpe3ZhciBnPUEuZmlyc3RDaHVuayxJPUEuc2FtcGxlc1BlckNodW5rLEU9QS5zYW1wbGVEZXNjSW5kZXg7Qi5zZXQoW2c+PjI0LGc+PjE2JjI1NSxnPj44JjI1NSwyNTUmZyxJPj4yNCxJPj4xNiYyNTUsST4+OCYyNTUsMjU1JkksRT4+MjQsRT4+MTYmMjU1LEU+PjgmMjU1LDI1NSZFXSxRKSxRKz0xMn0pKSxBLmJveChBLnR5cGVzLnN0c2MsSGgobmV3IFVpbnQ4QXJyYXkoWzAsMCwwLDAsST4+MjQsST4+MTYmMjU1LEk+PjgmMjU1LDI1NSZJXSksQikpfX0se2tleToic3RzeiIsdmFsdWU6ZnVuY3Rpb24oZyl7dmFyIEk9Zy5sZW5ndGgsQj1uZXcgVWludDhBcnJheSg0KkkpLFE9MDtyZXR1cm4gZy5mb3JFYWNoKChmdW5jdGlvbihBKXtCLnNldChbQT4+MjQsQT4+MTYmMjU1LEE+PjgmMjU1LDI1NSZBXSxRKSxRKz00fSkpLEEuYm94KEEudHlwZXMuc3RzeixIaChuZXcgVWludDhBcnJheShbMCwwLDAsMCwwLDAsMCwwLEk+PjI0LEk+PjE2JjI1NSxJPj44JjI1NSwyNTUmSV0pLEIpKX19LHtrZXk6InN0Y28iLHZhbHVlOmZ1bmN0aW9uKGcpe3ZhciBJPWcubGVuZ3RoLEI9bmV3IFVpbnQ4QXJyYXkoNCpJKSxRPTA7cmV0dXJuIGcuZm9yRWFjaCgoZnVuY3Rpb24oQSl7Qi5zZXQoW0E+PjI0LEE+PjE2JjI1NSxBPj44JjI1NSwyNTUmQV0sUSksUSs9NH0pKSxBLmJveChBLnR5cGVzLnN0Y28sSGgobmV3IFVpbnQ4QXJyYXkoWzAsMCwwLDAsST4+MjQsST4+MTYmMjU1LEk+PjgmMjU1LDI1NSZJXSksQikpfX0se2tleToic3RzcyIsdmFsdWU6ZnVuY3Rpb24oZyl7dmFyIEk9Zy5sZW5ndGgsQj1uZXcgVWludDhBcnJheSg0KkkpLFE9MDtyZXR1cm4gZy5mb3JFYWNoKChmdW5jdGlvbihBKXtCLnNldChbQT4+MjQsQT4+MTYmMjU1LEE+PjgmMjU1LDI1NSZBXSxRKSxRKz00fSkpLEEuYm94KEEudHlwZXMuc3RzcyxIaChuZXcgVWludDhBcnJheShbMCwwLDAsMCxJPj4yNCxJPj4xNiYyNTUsST4+OCYyNTUsMjU1JkldKSxCKSl9fSx7a2V5OiJjdHRzIix2YWx1ZTpmdW5jdGlvbihnKXt2YXIgST1nLmxlbmd0aCxCPW5ldyBVaW50OEFycmF5KDgqSSksUT0wO3JldHVybiBnLmZvckVhY2goKGZ1bmN0aW9uKEEpe3ZhciBnPUEudmFsdWUsST1BLmNvdW50O0Iuc2V0KFtJPj4yNCxJPj4xNiYyNTUsST4+OCYyNTUsMjU1JkksZz4+MjQsZz4+MTYmMjU1LGc+PjgmMjU1LDI1NSZnXSxRKSxRKz04fSkpLEEuYm94KEEudHlwZXMuY3R0cyxIaChuZXcgVWludDhBcnJheShbMCwwLDAsMCxJPj4yNCxJPj4xNiYyNTUsST4+OCYyNTUsMjU1JkldKSxCKSl9fSx7a2V5OiJzdHlwIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBBLmJveChBLnR5cGVzLnN0eXAsbmV3IFVpbnQ4QXJyYXkoWzEwOSwxMTUsMTAwLDEwNCwwLDAsMCwwLDEwOSwxMTUsMTAwLDEwNCwxMDksMTE1LDEwNSwxMjBdKSl9fSx7a2V5OiJzaWR4Iix2YWx1ZTpmdW5jdGlvbihnKXt2YXIgST1nLnRpbWVzY2FsZSxCPWcuc2FtcGxlc1swXS5kdXJhdGlvbixRPUIqZy5zYW1wbGVzLmxlbmd0aCxFPWcuc2FtcGxlc1swXS5zYW1wbGVPZmZzZXQqQixDPTg7Zy5zYW1wbGVzLmZvckVhY2goKGZ1bmN0aW9uKEEpe0MrPUEuc2l6ZX0pKTt2YXIgdD0wO2lmKGcuaXNWaWRlbyl7dmFyIGksZT0wO2cudmlkZW9TZW5jJiYoaT1nLnZpZGVvU2VuYyksZy5pc1ZpZGVvJiZpLmZvckVhY2goKGZ1bmN0aW9uKEEpe2UrPTgsQS5zdWJzYW1wbGVzJiZBLnN1YnNhbXBsZXMubGVuZ3RoJiYoZSs9MixlKz02KkEuc3Vic2FtcGxlcy5sZW5ndGgpfSkpLGcudmlkZW9TZW5jTGVuZ3RoPWUsdD1DKzE0MSsxNipnLnNhbXBsZXMubGVuZ3RoK2UsZy51c2VFTUUmJmcuaXNBdWRpb0VuY3J5cHRpb24mJiFnLmlzVmlkZW9FbmNyeXB0aW9uJiYodD1DKzE2Kmcuc2FtcGxlcy5sZW5ndGgrODQpfWVsc2UgdD1DKzExNisxMipnLnNhbXBsZXMubGVuZ3RoLGcudXNlRU1FJiZnLmlzQXVkaW9FbmNyeXB0aW9uJiYodD1DKzE2OSsxMipnLnNhbXBsZXMubGVuZ3RoKzgqZy5hdWRpb1NlbmMubGVuZ3RoKTt2YXIgbz1uZXcgVWludDhBcnJheShbMCwwLDAsMCwwLDAsMCwyNTUmZy5pZCxJPj4yNCYyNTUsST4+MTYmMjU1LEk+PjgmMjU1LDI1NSZJLEU+PjI0JjI1NSxFPj4xNiYyNTUsRT4+OCYyNTUsMjU1JkUsMCwwLDAsMCwwLDAsMCwxLDAsdD4+MTYmMjU1LHQ+PjgmMjU1LDI1NSZ0LFE+PjI0JjI1NSxRPj4xNiYyNTUsUT4+OCYyNTUsMjU1JlEsMTQ0LDAsMCwwXSk7cmV0dXJuIEEuYm94KEEudHlwZXMuc2lkeCxvKX19LHtrZXk6Im1kYXQiLHZhbHVlOmZ1bmN0aW9uKGcpe3JldHVybiBBLmJveChBLnR5cGVzLm1kYXQsZyl9fV0pLEF9KCk7ZWgoQWYsInR5cGVzIixbImF2YzEiLCJhdmNDIiwiaHZjMSIsImh2Y0MiLCJkaW5mIiwiZHJlZiIsImVkdHMiLCJlbHN0IiwiZXNkcyIsImZ0eXAiLCJoZGxyIiwibWRhdCIsIm1kaGQiLCJtZGlhIiwibWZoZCIsIm1pbmYiLCJtb29mIiwibW9vdiIsIm1wNGEiLCJtdmV4IiwibXZoZCIsInBhc3AiLCJzdGJsIiwic3RjbyIsInN0c2MiLCJzdHNkIiwic3RzeiIsInN0dHMiLCJ0ZmR0IiwidGZoZCIsInRyYWYiLCJ0cmFrIiwidHJleCIsInRraGQiLCJ2bWhkIiwic21oZCIsImN0dHMiLCJzdHNzIiwic3R5cCIsInBzc2giLCJzaWR4Iiwic2JncCIsInNhaXoiLCJzYWlvIiwic2VuYyIsInRydW4iLCJlbmN2IiwiZW5jYSIsInNpbmYiLCJidHJ0IiwiZnJtYSIsInRlbmMiLCJzY2htIiwic2NoaSIsIm1laGQiLCJmaWVsIiwic2R0cCIsImJ2YzIiLCJidjJDIl0ucmVkdWNlKChmdW5jdGlvbihBLGcpe3JldHVybiBBW2ddPVtnLmNoYXJDb2RlQXQoMCksZy5jaGFyQ29kZUF0KDEpLGcuY2hhckNvZGVBdCgyKSxnLmNoYXJDb2RlQXQoMyldLEF9KSxPYmplY3QuY3JlYXRlKG51bGwpKSksZWgoQWYsIkhETFJfVFlQRVMiLHt2aWRlbzpuZXcgVWludDhBcnJheShbMCwwLDAsMCwwLDAsMCwwLDExOCwxMDUsMTAwLDEwMSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw4NiwxMDUsMTAwLDEwMSwxMTEsNzIsOTcsMTEwLDEwMCwxMDgsMTAxLDExNCwwXSksYXVkaW86bmV3IFVpbnQ4QXJyYXkoWzAsMCwwLDAsMCwwLDAsMCwxMTUsMTExLDExNywxMTAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsODMsMTExLDExNywxMTAsMTAwLDcyLDk3LDExMCwxMDAsMTA4LDEwMSwxMTQsMF0pfSksZWgoQWYsIkZUWVBBVkMxIixBZi5ib3goQWYudHlwZXMuZnR5cCxuZXcgVWludDhBcnJheShbMTA1LDExNSwxMTEsMTA5LDAsMCwwLDEsMTA1LDExNSwxMTEsMTA5LDk3LDExOCw5OSw0OV0pKSksZWgoQWYsIkZUWVBIRVYxIixBZi5ib3goQWYudHlwZXMuZnR5cCxuZXcgVWludDhBcnJheShbMTA1LDExNSwxMTEsMTA5LDAsMCwwLDEsMTA1LDExNSwxMTEsMTA5LDEwNCwxMDEsMTE4LDQ5XSkpKSxlaChBZiwiRElORiIsQWYuYm94KEFmLnR5cGVzLmRpbmYsQWYuYm94KEFmLnR5cGVzLmRyZWYsbmV3IFVpbnQ4QXJyYXkoWzAsMCwwLDAsMCwwLDAsMSwwLDAsMCwxMiwxMTcsMTE0LDEwOCwzMiwwLDAsMCwxXSkpKSksZWgoQWYsIlZNSEQiLEFmLmJveChBZi50eXBlcy52bWhkLG5ldyBVaW50OEFycmF5KFswLDAsMCwxLDAsMCwwLDAsMCwwLDAsMF0pKSksZWgoQWYsIlNNSEQiLEFmLmJveChBZi50eXBlcy5zbWhkLG5ldyBVaW50OEFycmF5KFswLDAsMCwwLDAsMCwwLDBdKSkpLGVoKEFmLCJTdGJsVGFibGUiLG5ldyBVaW50OEFycmF5KFswLDAsMCwwLDAsMCwwLDBdKSksZWgoQWYsIlNUVFMiLEFmLmJveChBZi50eXBlcy5zdHRzLEFmLlN0YmxUYWJsZSkpLGVoKEFmLCJTVFNDIixBZi5ib3goQWYudHlwZXMuc3RzYyxBZi5TdGJsVGFibGUpKSxlaChBZiwiU1RTWiIsQWYuYm94KEFmLnR5cGVzLnN0c3osbmV3IFVpbnQ4QXJyYXkoWzAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwXSkpKSxlaChBZiwiU1RDTyIsQWYuYm94KEFmLnR5cGVzLnN0Y28sQWYuU3RibFRhYmxlKSk7dmFyIGdmPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gQShnLEkpe0NoKHRoaXMsQSksdGhpcy5uYW1lPWd8fCIiLHRoaXMuX3ByZWZpeD0iWyIuY29uY2F0KHRoaXMubmFtZSwiXSIpLEEuZGlzYWJsZWQ9SX1yZXR1cm4gaWgoQSxbe2tleToiZGVidWciLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGc7aWYoIUEuZGlzYWJsZWQpe2Zvcih2YXIgST1hcmd1bWVudHMubGVuZ3RoLEI9bmV3IEFycmF5KEkpLFE9MDtRPEk7USsrKUJbUV09YXJndW1lbnRzW1FdOyhnPWNvbnNvbGUpLmRlYnVnLmFwcGx5KGcsW3RoaXMuX3ByZWZpeF0uY29uY2F0KEIpKX19fSx7a2V5OiJsb2ciLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGc7aWYoIUEuZGlzYWJsZWQpe2Zvcih2YXIgST1hcmd1bWVudHMubGVuZ3RoLEI9bmV3IEFycmF5KEkpLFE9MDtRPEk7USsrKUJbUV09YXJndW1lbnRzW1FdOyhnPWNvbnNvbGUpLmxvZy5hcHBseShnLFt0aGlzLl9wcmVmaXhdLmNvbmNhdChCKSl9fX0se2tleToid2FybiIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZztpZighQS5kaXNhYmxlZCl7Zm9yKHZhciBJPWFyZ3VtZW50cy5sZW5ndGgsQj1uZXcgQXJyYXkoSSksUT0wO1E8STtRKyspQltRXT1hcmd1bWVudHNbUV07KGc9Y29uc29sZSkud2Fybi5hcHBseShnLFt0aGlzLl9wcmVmaXhdLmNvbmNhdChCKSl9fX0se2tleToiZXJyb3IiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGc7aWYoIUEuZGlzYWJsZWQpe2Zvcih2YXIgST1hcmd1bWVudHMubGVuZ3RoLEI9bmV3IEFycmF5KEkpLFE9MDtRPEk7USsrKUJbUV09YXJndW1lbnRzW1FdOyhnPWNvbnNvbGUpLmVycm9yLmFwcGx5KGcsW3RoaXMuX3ByZWZpeF0uY29uY2F0KEIpKX19fSx7a2V5OiJ0YWJsZSIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZztBLmRpc2FibGVkfHwoY29uc29sZS5ncm91cCh0aGlzLl9wcmVmaXgpLChnPWNvbnNvbGUpLnRhYmxlLmFwcGx5KGcsYXJndW1lbnRzKSxjb25zb2xlLmdyb3VwRW5kKCkpfX1dLFt7a2V5OiJlbmFibGUiLHZhbHVlOmZ1bmN0aW9uKCl7QS5kaXNhYmxlZD0hMX19LHtrZXk6ImRpc2FibGUiLHZhbHVlOmZ1bmN0aW9uKCl7QS5kaXNhYmxlZD0hMH19XSksQX0oKTtlaChnZiwiZGlzYWJsZWQiLCEwKTt2YXIgSWY9ZnVuY3Rpb24oKXtmdW5jdGlvbiBBKGcsSSxCKXtDaCh0aGlzLEEpLHRoaXMudmlkZW9UcmFjaz1nLHRoaXMuYXVkaW9UcmFjaz1JO3ZhciBRPS9DaHJvbWVcLyhbXi5dKykvLmV4ZWMobmF2aWdhdG9yLnVzZXJBZ2VudCk7dGhpcy5mb3JjZUZpcnN0SURSPVEmJk51bWJlcihRWzFdKTw1MCx0aGlzLmxvZz1uZXcgZ2YoIkZNUDRSZW11eGVyIiwhQnx8IUIub3BlbkxvZ3x8IUIub3BlbkxvZyl9cmV0dXJuIGloKEEsW3trZXk6InJlbXV4Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciBBLGcsSSxCLFEsRT1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXSYmYXJndW1lbnRzWzBdLEM9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOnt9LHQ9dGhpcy52aWRlb1RyYWNrLGk9dGhpcy5hdWRpb1RyYWNrLGU9dC5leGlzdCgpLG89aS5leGlzdCgpLHI9W107cmV0dXJuIEUmJihDJiZDLmluaXRNZXJnZT8oZSYmci5wdXNoKHRoaXMudmlkZW9UcmFjayksbyYmci5wdXNoKHRoaXMuYXVkaW9UcmFjayksST1BZi5pbml0U2VnbWVudChyKSk6KGUmJihBPUFmLmluaXRTZWdtZW50KFt0aGlzLnZpZGVvVHJhY2tdKSksbyYmKGc9QWYuaW5pdFNlZ21lbnQoW3RoaXMuYXVkaW9UcmFja10pKSkpLGUmJnQuaGFzU2FtcGxlKCkmJihCPXRoaXMuX3JlbXV4VmlkZW8oKSksbyYmaS5oYXNTYW1wbGUoKSYmKFE9dGhpcy5fcmVtdXhBdWRpbygpKSx0LnNhbXBsZXM9W10saS5zYW1wbGVzPVtdLHtpbml0U2VnbWVudDpJLHZpZGVvSW5pdFNlZ21lbnQ6QSxhdWRpb0luaXRTZWdtZW50OmcsdmlkZW9TZWdtZW50OkIsYXVkaW9TZWdtZW50OlF9fX0se2tleToiX3JlbXV4VmlkZW8iLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIEE9dGhpcy52aWRlb1RyYWNrO3RoaXMuZm9yY2VGaXJzdElEUiYmKEEuc2FtcGxlc1swXS5mbGFnPXtkZXBlbmRzT246Mixpc05vblN5bmNTYW1wbGU6MH0pO3ZhciBnPUEuc2FtcGxlcyxJPTA7Zy5mb3JFYWNoKChmdW5jdGlvbihBKXtJKz1BLnVuaXRzLnJlZHVjZSgoZnVuY3Rpb24oQSxnKXtyZXR1cm4gQStnLmJ5dGVMZW5ndGh9KSwwKSxJKz00KkEudW5pdHMubGVuZ3RofSkpO2Zvcih2YXIgQixRPW5ldyBVaW50OEFycmF5KEkpLEU9bmV3IERhdGFWaWV3KFEuYnVmZmVyKSxDPWZ1bmN0aW9uKEEsSSl7ST1nW3RdO3ZhciBDPTA7SS51bml0cy5mb3JFYWNoKChmdW5jdGlvbihnKXtFLnNldFVpbnQzMihBLGcuYnl0ZUxlbmd0aCksQSs9NCxRLnNldChnLEEpLEErPWcuYnl0ZUxlbmd0aCxDKz00K2cuYnl0ZUxlbmd0aH0pKSxJLnNpemU9QyxlPUEsQj1JfSx0PTAsaT1nLmxlbmd0aCxlPTA7dDxpO3QrKylDKGUsQik7dmFyIG89QWYubWRhdChRKTtyZXR1cm4gSGgoQWYubW9vZihbQV0pLG8pfX0se2tleToiX3JlbXV4QXVkaW8iLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIEE9dGhpcy5hdWRpb1RyYWNrLGc9bmV3IFVpbnQ4QXJyYXkoQS5zYW1wbGVzLnJlZHVjZSgoZnVuY3Rpb24oQSxnKXtyZXR1cm4gQStnLnNpemV9KSwwKSk7QS5zYW1wbGVzLnJlZHVjZSgoZnVuY3Rpb24oQSxJKXtyZXR1cm4gZy5zZXQoSS5kYXRhLEEpLEErSS5zaXplfSksMCk7dmFyIEk9QWYubWRhdChnKTtyZXR1cm4gSGgoQWYubW9vZihbQV0pLEkpfX0se2tleToicmVzZXQiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy52aWRlb1RyYWNrLnJlc2V0KCksdGhpcy5hdWRpb1RyYWNrLnJlc2V0KCl9fV0pLEF9KCksQmY9ZUIsUWY9X0EsRWY9UEEsQ2Y9akEsdGY9bkEsZWY9akMsb2Y9Z28scmY9RW8oInNwbGljZSIpLG5mPU1hdGgubWF4LGFmPU1hdGgubWluO0JmKHt0YXJnZXQ6IkFycmF5Iixwcm90bzohMCxmb3JjZWQ6IXJmfSx7c3BsaWNlOmZ1bmN0aW9uKEEsZyl7dmFyIEksQixRLEUsQyx0LGk9dGYodGhpcyksZT1DZihpLmxlbmd0aCksbz1RZihBLGUpLHI9YXJndW1lbnRzLmxlbmd0aDtpZigwPT09cj9JPUI9MDoxPT09cj8oST0wLEI9ZS1vKTooST1yLTIsQj1hZihuZihFZihnKSwwKSxlLW8pKSxlK0ktQj45MDA3MTk5MjU0NzQwOTkxKXRocm93IFR5cGVFcnJvcigiTWF4aW11bSBhbGxvd2VkIGxlbmd0aCBleGNlZWRlZCIpO2ZvcihRPWVmKGksQiksRT0wO0U8QjtFKyspKEM9bytFKWluIGkmJm9mKFEsRSxpW0NdKTtpZihRLmxlbmd0aD1CLEk8Qil7Zm9yKEU9bztFPGUtQjtFKyspdD1FK0ksKEM9RStCKWluIGk/aVt0XT1pW0NdOmRlbGV0ZSBpW3RdO2ZvcihFPWU7RT5lLUIrSTtFLS0pZGVsZXRlIGlbRS0xXX1lbHNlIGlmKEk+Qilmb3IoRT1lLUI7RT5vO0UtLSl0PUUrSS0xLChDPUUrQi0xKWluIGk/aVt0XT1pW0NdOmRlbGV0ZSBpW3RdO2ZvcihFPTA7RTxJO0UrKylpW0Urb109YXJndW1lbnRzW0UrMl07cmV0dXJuIGkubGVuZ3RoPWUtQitJLFF9fSksJHQoIlVpbnQ4IiwoZnVuY3Rpb24oQSl7cmV0dXJuIGZ1bmN0aW9uKGcsSSxCKXtyZXR1cm4gQSh0aGlzLGcsSSxCKX19KSwhMCk7Zm9yKHZhciBzZj1mdW5jdGlvbigpe3JldHVybiBFKChmdW5jdGlvbiBBKCl7Qih0aGlzLEEpfSksW3trZXk6Im1peEluIix2YWx1ZTpmdW5jdGlvbihBKXtyZXR1cm4gT2JqZWN0LmFzc2lnbih0aGlzLEEpfX0se2tleToiY2xvbmUiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIEE9bmV3IHRoaXMuY29uc3RydWN0b3I7cmV0dXJuIE9iamVjdC5hc3NpZ24oQSx0aGlzKSxBfX1dLFt7a2V5OiJjcmVhdGUiLHZhbHVlOmZ1bmN0aW9uKCl7Zm9yKHZhciBBPWFyZ3VtZW50cy5sZW5ndGgsZz1uZXcgQXJyYXkoQSksST0wO0k8QTtJKyspZ1tJXT1hcmd1bWVudHNbSV07cmV0dXJuIGZ1bmN0aW9uKEEsZyxJKXtpZihvKCkpcmV0dXJuIFJlZmxlY3QuY29uc3RydWN0LmFwcGx5KG51bGwsYXJndW1lbnRzKTt2YXIgQj1bbnVsbF07Qi5wdXNoLmFwcGx5KEIsZyk7dmFyIFE9bmV3KEEuYmluZC5hcHBseShBLEIpKTtyZXR1cm4gSSYmcyhRLEkucHJvdG90eXBlKSxRfSh0aGlzLGcpfX1dKX0oKSxjZj1mdW5jdGlvbihBKXtmdW5jdGlvbiBnKCl7dmFyIEEsUT1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06W10sRT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06NCpRLmxlbmd0aDtCKHRoaXMsZyksQT1JKHRoaXMsZyk7dmFyIEM9UTtpZihDIGluc3RhbmNlb2YgQXJyYXlCdWZmZXImJihDPW5ldyBVaW50OEFycmF5KEMpKSwoQyBpbnN0YW5jZW9mIEludDhBcnJheXx8QyBpbnN0YW5jZW9mIFVpbnQ4Q2xhbXBlZEFycmF5fHxDIGluc3RhbmNlb2YgSW50MTZBcnJheXx8QyBpbnN0YW5jZW9mIFVpbnQxNkFycmF5fHxDIGluc3RhbmNlb2YgSW50MzJBcnJheXx8QyBpbnN0YW5jZW9mIFVpbnQzMkFycmF5fHxDIGluc3RhbmNlb2YgRmxvYXQzMkFycmF5fHxDIGluc3RhbmNlb2YgRmxvYXQ2NEFycmF5KSYmKEM9bmV3IFVpbnQ4QXJyYXkoQy5idWZmZXIsQy5ieXRlT2Zmc2V0LEMuYnl0ZUxlbmd0aCkpLEMgaW5zdGFuY2VvZiBVaW50OEFycmF5KXtmb3IodmFyIHQ9Qy5ieXRlTGVuZ3RoLGk9W10sZT0wO2U8dDtlKz0xKWlbZT4+PjJdfD1DW2VdPDwyNC1lJTQqODtBLndvcmRzPWksQS5zaWdCeXRlcz10fWVsc2UgQS53b3Jkcz1RLEEuc2lnQnl0ZXM9RTtyZXR1cm4gQX1yZXR1cm4gZShnLEEpLEUoZyxbe2tleToidG9TdHJpbmciLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuKGFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTpoZikuc3RyaW5naWZ5KHRoaXMpfX0se2tleToiY29uY2F0Iix2YWx1ZTpmdW5jdGlvbihBKXt2YXIgZz10aGlzLndvcmRzLEk9QS53b3JkcyxCPXRoaXMuc2lnQnl0ZXMsUT1BLnNpZ0J5dGVzO2lmKHRoaXMuY2xhbXAoKSxCJTQpZm9yKHZhciBFPTA7RTxRO0UrPTEpe3ZhciBDPUlbRT4+PjJdPj4+MjQtRSU0KjgmMjU1O2dbQitFPj4+Ml18PUM8PDI0LShCK0UpJTQqOH1lbHNlIGZvcih2YXIgdD0wO3Q8UTt0Kz00KWdbQit0Pj4+Ml09SVt0Pj4+Ml07cmV0dXJuIHRoaXMuc2lnQnl0ZXMrPVEsdGhpc319LHtrZXk6ImNsYW1wIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBBPXRoaXMud29yZHMsZz10aGlzLnNpZ0J5dGVzO0FbZz4+PjJdJj00Mjk0OTY3Mjk1PDwzMi1nJTQqOCxBLmxlbmd0aD1NYXRoLmNlaWwoZy80KX19LHtrZXk6ImNsb25lIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBBPWMoZywiY2xvbmUiLHRoaXMsMSkuY2FsbCh0aGlzKTtyZXR1cm4gQS53b3Jkcz10aGlzLndvcmRzLnNsaWNlKDApLEF9fV0sW3trZXk6InJhbmRvbSIsdmFsdWU6ZnVuY3Rpb24oQSl7Zm9yKHZhciBJLEI9W10sUT1mdW5jdGlvbihBKXt2YXIgZz1BLEk9OTg3NjU0MzIxLEI9NDI5NDk2NzI5NTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgQT0oKEk9MzY5NjkqKDY1NTM1JkkpKyhJPj4xNikmQik8PDE2KSsoZz0xOGUzKig2NTUzNSZnKSsoZz4+MTYpJkIpJkI7cmV0dXJuIEEvPTQyOTQ5NjcyOTYsKEErPS41KSooTWF0aC5yYW5kb20oKT4uNT8xOi0xKX19LEU9MDtFPEE7RSs9NCl7dmFyIEM9USg0Mjk0OTY3Mjk2KihJfHxNYXRoLnJhbmRvbSgpKSk7ST05ODc2NTQwNzEqQygpLEIucHVzaCg0Mjk0OTY3Mjk2KkMoKXwwKX1yZXR1cm4gbmV3IGcoQixBKX19XSl9KHNmKSxoZj17c3RyaW5naWZ5OmZ1bmN0aW9uKEEpe2Zvcih2YXIgZz1BLndvcmRzLEk9QS5zaWdCeXRlcyxCPVtdLFE9MDtRPEk7USs9MSl7dmFyIEU9Z1tRPj4+Ml0+Pj4yNC1RJTQqOCYyNTU7Qi5wdXNoKChFPj4+NCkudG9TdHJpbmcoMTYpKSxCLnB1c2goKDE1JkUpLnRvU3RyaW5nKDE2KSl9cmV0dXJuIEIuam9pbigiIil9LHBhcnNlOmZ1bmN0aW9uKEEpe2Zvcih2YXIgZz1BLmxlbmd0aCxJPVtdLEI9MDtCPGc7Qis9MilJW0I+Pj4zXXw9cGFyc2VJbnQoQS5zdWJzdHIoQiwyKSwxNik8PDI0LUIlOCo0O3JldHVybiBuZXcgY2YoSSxnLzIpfX0sZmY9ZnVuY3Rpb24oQSl7Zm9yKHZhciBnPUEubGVuZ3RoLEk9W10sQj0wO0I8ZztCKz0xKUlbQj4+PjJdfD0oMjU1JkEuY2hhckNvZGVBdChCKSk8PDI0LUIlNCo4O3JldHVybiBuZXcgY2YoSSxnKX0seWY9ZnVuY3Rpb24oQSl7cmV0dXJuIGZmKHVuZXNjYXBlKGVuY29kZVVSSUNvbXBvbmVudChBKSkpfSx1Zj1mdW5jdGlvbihBKXtmdW5jdGlvbiBnKCl7dmFyIEE7cmV0dXJuIEIodGhpcyxnKSwoQT1JKHRoaXMsZykpLl9taW5CdWZmZXJTaXplPTAsQX1yZXR1cm4gZShnLEEpLEUoZyxbe2tleToicmVzZXQiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5fZGF0YT1uZXcgY2YsdGhpcy5fbkRhdGFCeXRlcz0wfX0se2tleToiX2FwcGVuZCIsdmFsdWU6ZnVuY3Rpb24oQSl7dmFyIGc9QTsic3RyaW5nIj09dHlwZW9mIGcmJihnPXlmKGcpKSx0aGlzLl9kYXRhLmNvbmNhdChnKSx0aGlzLl9uRGF0YUJ5dGVzKz1nLnNpZ0J5dGVzfX0se2tleToiX3Byb2Nlc3MiLHZhbHVlOmZ1bmN0aW9uKEEpe3ZhciBnLEk9dGhpcy5fZGF0YSxCPXRoaXMuYmxvY2tTaXplLFE9SS53b3JkcyxFPUkuc2lnQnl0ZXMsQz1FLyg0KkIpLHQ9KEM9QT9NYXRoLmNlaWwoQyk6TWF0aC5tYXgoKDB8QyktdGhpcy5fbWluQnVmZmVyU2l6ZSwwKSkqQixpPU1hdGgubWluKDQqdCxFKTtpZih0KXtmb3IodmFyIGU9MDtlPHQ7ZSs9Qil0aGlzLl9kb1Byb2Nlc3NCbG9jayhRLGUpO2c9US5zcGxpY2UoMCx0KSxJLnNpZ0J5dGVzLT1pfXJldHVybiBuZXcgY2YoZyxpKX19LHtrZXk6ImNsb25lIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBBPWMoZywiY2xvbmUiLHRoaXMsMSkuY2FsbCh0aGlzKTtyZXR1cm4gQS5fZGF0YT10aGlzLl9kYXRhLmNsb25lKCksQX19XSl9KHNmKSxEZj1mdW5jdGlvbihBKXtmdW5jdGlvbiBnKEEpe3ZhciBRO3JldHVybiBCKHRoaXMsZyksKFE9SSh0aGlzLGcpKS5ibG9ja1NpemU9MTYsUS5jZmc9T2JqZWN0LmFzc2lnbihuZXcgc2YsQSksUS5yZXNldCgpLFF9cmV0dXJuIGUoZyxBKSxFKGcsW3trZXk6InJlc2V0Iix2YWx1ZTpmdW5jdGlvbigpe2MoZywicmVzZXQiLHRoaXMsMSkuY2FsbCh0aGlzKSx0aGlzLl9kb1Jlc2V0KCl9fSx7a2V5OiJ1cGRhdGUiLHZhbHVlOmZ1bmN0aW9uKEEpe3JldHVybiB0aGlzLl9hcHBlbmQoQSksdGhpcy5fcHJvY2VzcygpLHRoaXN9fSx7a2V5OiJmaW5hbGl6ZSIsdmFsdWU6ZnVuY3Rpb24oQSl7cmV0dXJuIEEmJnRoaXMuX2FwcGVuZChBKSx0aGlzLl9kb0ZpbmFsaXplKCl9fV0sW3trZXk6Il9jcmVhdGVIZWxwZXIiLHZhbHVlOmZ1bmN0aW9uKEEpe3JldHVybiBmdW5jdGlvbihnLEkpe3JldHVybiBuZXcgQShJKS5maW5hbGl6ZShnKX19fSx7a2V5OiJfY3JlYXRlSG1hY0hlbHBlciIsdmFsdWU6ZnVuY3Rpb24oQSl7cmV0dXJuIGZ1bmN0aW9uKGcsSSl7cmV0dXJuIG5ldyB3ZihBLEkpLmZpbmFsaXplKGcpfX19XSl9KHVmKSx3Zj1mdW5jdGlvbihBKXtmdW5jdGlvbiBnKEEsUSl7dmFyIEU7Qih0aGlzLGcpLEU9SSh0aGlzLGcpO3ZhciBDPW5ldyBBO0UuX2hhc2hlcj1DO3ZhciB0PVE7InN0cmluZyI9PXR5cGVvZiB0JiYodD15Zih0KSk7dmFyIGk9Qy5ibG9ja1NpemUsZT00Kmk7dC5zaWdCeXRlcz5lJiYodD1DLmZpbmFsaXplKFEpKSx0LmNsYW1wKCk7dmFyIG89dC5jbG9uZSgpO0UuX29LZXk9bzt2YXIgcj10LmNsb25lKCk7RS5faUtleT1yO2Zvcih2YXIgbj1vLndvcmRzLGE9ci53b3JkcyxzPTA7czxpO3MrPTEpbltzXV49MTU0OTU1NjgyOCxhW3NdXj05MDk1MjI0ODY7cmV0dXJuIG8uc2lnQnl0ZXM9ZSxyLnNpZ0J5dGVzPWUsRS5yZXNldCgpLEV9cmV0dXJuIGUoZyxBKSxFKGcsW3trZXk6InJlc2V0Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciBBPXRoaXMuX2hhc2hlcjtBLnJlc2V0KCksQS51cGRhdGUodGhpcy5faUtleSl9fSx7a2V5OiJ1cGRhdGUiLHZhbHVlOmZ1bmN0aW9uKEEpe3JldHVybiB0aGlzLl9oYXNoZXIudXBkYXRlKEEpLHRoaXN9fSx7a2V5OiJmaW5hbGl6ZSIsdmFsdWU6ZnVuY3Rpb24oQSl7dmFyIGc9dGhpcy5faGFzaGVyLEk9Zy5maW5hbGl6ZShBKTtyZXR1cm4gZy5yZXNldCgpLGcuZmluYWxpemUodGhpcy5fb0tleS5jbG9uZSgpLmNvbmNhdChJKSl9fV0pfShzZiksbGY9e3N0cmluZ2lmeTpmdW5jdGlvbihBKXt2YXIgZz1BLndvcmRzLEk9QS5zaWdCeXRlcyxCPXRoaXMuX21hcDtBLmNsYW1wKCk7Zm9yKHZhciBRPVtdLEU9MDtFPEk7RSs9Mylmb3IodmFyIEM9KGdbRT4+PjJdPj4+MjQtRSU0KjgmMjU1KTw8MTZ8KGdbRSsxPj4+Ml0+Pj4yNC0oRSsxKSU0KjgmMjU1KTw8OHxnW0UrMj4+PjJdPj4+MjQtKEUrMiklNCo4JjI1NSx0PTA7dDw0JiZFKy43NSp0PEk7dCs9MSlRLnB1c2goQi5jaGFyQXQoQz4+PjYqKDMtdCkmNjMpKTt2YXIgaT1CLmNoYXJBdCg2NCk7aWYoaSlmb3IoO1EubGVuZ3RoJTQ7KVEucHVzaChpKTtyZXR1cm4gUS5qb2luKCIiKX0scGFyc2U6ZnVuY3Rpb24oQSl7dmFyIGc9QS5sZW5ndGgsST10aGlzLl9tYXAsQj10aGlzLl9yZXZlcnNlTWFwO2lmKCFCKXt0aGlzLl9yZXZlcnNlTWFwPVtdLEI9dGhpcy5fcmV2ZXJzZU1hcDtmb3IodmFyIFE9MDtRPEkubGVuZ3RoO1ErPTEpQltJLmNoYXJDb2RlQXQoUSldPVF9dmFyIEU9SS5jaGFyQXQoNjQpO2lmKEUpe3ZhciBDPUEuaW5kZXhPZihFKTstMSE9PUMmJihnPUMpfXJldHVybiBmdW5jdGlvbihBLGcsSSl7Zm9yKHZhciBCPVtdLFE9MCxFPTA7RTxnO0UrPTEpaWYoRSU0KXt2YXIgQz1JW0EuY2hhckNvZGVBdChFLTEpXTw8RSU0KjJ8SVtBLmNoYXJDb2RlQXQoRSldPj4+Ni1FJTQqMjtCW1E+Pj4yXXw9Qzw8MjQtUSU0KjgsUSs9MX1yZXR1cm4gY2YuY3JlYXRlKEIsUSl9KEEsZyxCKX0sX21hcDoiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLz0ifSxkZj1bXSxGZj0wO0ZmPDY0O0ZmKz0xKWRmW0ZmXT00Mjk0OTY3Mjk2Kk1hdGguYWJzKE1hdGguc2luKEZmKzEpKXwwO3ZhciBHZj1mdW5jdGlvbihBLGcsSSxCLFEsRSxDKXt2YXIgdD1BKyhnJkl8fmcmQikrUStDO3JldHVybih0PDxFfHQ+Pj4zMi1FKStnfSxSZj1mdW5jdGlvbihBLGcsSSxCLFEsRSxDKXt2YXIgdD1BKyhnJkJ8SSZ+QikrUStDO3JldHVybih0PDxFfHQ+Pj4zMi1FKStnfSxVZj1mdW5jdGlvbihBLGcsSSxCLFEsRSxDKXt2YXIgdD1BKyhnXkleQikrUStDO3JldHVybih0PDxFfHQ+Pj4zMi1FKStnfSxrZj1mdW5jdGlvbihBLGcsSSxCLFEsRSxDKXt2YXIgdD1BKyhJXihnfH5CKSkrUStDO3JldHVybih0PDxFfHQ+Pj4zMi1FKStnfSxTZj1mdW5jdGlvbihBKXtmdW5jdGlvbiBnKCl7cmV0dXJuIEIodGhpcyxnKSxJKHRoaXMsZyxhcmd1bWVudHMpfXJldHVybiBlKGcsQSksRShnLFt7a2V5OiJfZG9SZXNldCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLl9oYXNoPW5ldyBjZihbMTczMjU4NDE5Myw0MDIzMjMzNDE3LDI1NjIzODMxMDIsMjcxNzMzODc4XSl9fSx7a2V5OiJfZG9Qcm9jZXNzQmxvY2siLHZhbHVlOmZ1bmN0aW9uKEEsZyl7Zm9yKHZhciBJPUEsQj0wO0I8MTY7Qis9MSl7dmFyIFE9ZytCLEU9QVtRXTtJW1FdPTE2NzExOTM1JihFPDw4fEU+Pj4yNCl8NDI3ODI1NTM2MCYoRTw8MjR8RT4+PjgpfXZhciBDPXRoaXMuX2hhc2gud29yZHMsdD1JW2crMF0saT1JW2crMV0sZT1JW2crMl0sbz1JW2crM10scj1JW2crNF0sbj1JW2crNV0sYT1JW2crNl0scz1JW2crN10sYz1JW2crOF0saD1JW2crOV0sZj1JW2crMTBdLHk9SVtnKzExXSx1PUlbZysxMl0sRD1JW2crMTNdLHc9SVtnKzE0XSxsPUlbZysxNV0sZD1DWzBdLEY9Q1sxXSxHPUNbMl0sUj1DWzNdO2Q9R2YoZCxGLEcsUix0LDcsZGZbMF0pLFI9R2YoUixkLEYsRyxpLDEyLGRmWzFdKSxHPUdmKEcsUixkLEYsZSwxNyxkZlsyXSksRj1HZihGLEcsUixkLG8sMjIsZGZbM10pLGQ9R2YoZCxGLEcsUixyLDcsZGZbNF0pLFI9R2YoUixkLEYsRyxuLDEyLGRmWzVdKSxHPUdmKEcsUixkLEYsYSwxNyxkZls2XSksRj1HZihGLEcsUixkLHMsMjIsZGZbN10pLGQ9R2YoZCxGLEcsUixjLDcsZGZbOF0pLFI9R2YoUixkLEYsRyxoLDEyLGRmWzldKSxHPUdmKEcsUixkLEYsZiwxNyxkZlsxMF0pLEY9R2YoRixHLFIsZCx5LDIyLGRmWzExXSksZD1HZihkLEYsRyxSLHUsNyxkZlsxMl0pLFI9R2YoUixkLEYsRyxELDEyLGRmWzEzXSksRz1HZihHLFIsZCxGLHcsMTcsZGZbMTRdKSxGPUdmKEYsRyxSLGQsbCwyMixkZlsxNV0pLGQ9UmYoZCxGLEcsUixpLDUsZGZbMTZdKSxSPVJmKFIsZCxGLEcsYSw5LGRmWzE3XSksRz1SZihHLFIsZCxGLHksMTQsZGZbMThdKSxGPVJmKEYsRyxSLGQsdCwyMCxkZlsxOV0pLGQ9UmYoZCxGLEcsUixuLDUsZGZbMjBdKSxSPVJmKFIsZCxGLEcsZiw5LGRmWzIxXSksRz1SZihHLFIsZCxGLGwsMTQsZGZbMjJdKSxGPVJmKEYsRyxSLGQsciwyMCxkZlsyM10pLGQ9UmYoZCxGLEcsUixoLDUsZGZbMjRdKSxSPVJmKFIsZCxGLEcsdyw5LGRmWzI1XSksRz1SZihHLFIsZCxGLG8sMTQsZGZbMjZdKSxGPVJmKEYsRyxSLGQsYywyMCxkZlsyN10pLGQ9UmYoZCxGLEcsUixELDUsZGZbMjhdKSxSPVJmKFIsZCxGLEcsZSw5LGRmWzI5XSksRz1SZihHLFIsZCxGLHMsMTQsZGZbMzBdKSxGPVJmKEYsRyxSLGQsdSwyMCxkZlszMV0pLGQ9VWYoZCxGLEcsUixuLDQsZGZbMzJdKSxSPVVmKFIsZCxGLEcsYywxMSxkZlszM10pLEc9VWYoRyxSLGQsRix5LDE2LGRmWzM0XSksRj1VZihGLEcsUixkLHcsMjMsZGZbMzVdKSxkPVVmKGQsRixHLFIsaSw0LGRmWzM2XSksUj1VZihSLGQsRixHLHIsMTEsZGZbMzddKSxHPVVmKEcsUixkLEYscywxNixkZlszOF0pLEY9VWYoRixHLFIsZCxmLDIzLGRmWzM5XSksZD1VZihkLEYsRyxSLEQsNCxkZls0MF0pLFI9VWYoUixkLEYsRyx0LDExLGRmWzQxXSksRz1VZihHLFIsZCxGLG8sMTYsZGZbNDJdKSxGPVVmKEYsRyxSLGQsYSwyMyxkZls0M10pLGQ9VWYoZCxGLEcsUixoLDQsZGZbNDRdKSxSPVVmKFIsZCxGLEcsdSwxMSxkZls0NV0pLEc9VWYoRyxSLGQsRixsLDE2LGRmWzQ2XSksRj1VZihGLEcsUixkLGUsMjMsZGZbNDddKSxkPWtmKGQsRixHLFIsdCw2LGRmWzQ4XSksUj1rZihSLGQsRixHLHMsMTAsZGZbNDldKSxHPWtmKEcsUixkLEYsdywxNSxkZls1MF0pLEY9a2YoRixHLFIsZCxuLDIxLGRmWzUxXSksZD1rZihkLEYsRyxSLHUsNixkZls1Ml0pLFI9a2YoUixkLEYsRyxvLDEwLGRmWzUzXSksRz1rZihHLFIsZCxGLGYsMTUsZGZbNTRdKSxGPWtmKEYsRyxSLGQsaSwyMSxkZls1NV0pLGQ9a2YoZCxGLEcsUixjLDYsZGZbNTZdKSxSPWtmKFIsZCxGLEcsbCwxMCxkZls1N10pLEc9a2YoRyxSLGQsRixhLDE1LGRmWzU4XSksRj1rZihGLEcsUixkLEQsMjEsZGZbNTldKSxkPWtmKGQsRixHLFIsciw2LGRmWzYwXSksUj1rZihSLGQsRixHLHksMTAsZGZbNjFdKSxHPWtmKEcsUixkLEYsZSwxNSxkZls2Ml0pLEY9a2YoRixHLFIsZCxoLDIxLGRmWzYzXSksQ1swXT1DWzBdK2R8MCxDWzFdPUNbMV0rRnwwLENbMl09Q1syXStHfDAsQ1szXT1DWzNdK1J8MH19LHtrZXk6Il9kb0ZpbmFsaXplIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBBPXRoaXMuX2RhdGEsZz1BLndvcmRzLEk9OCp0aGlzLl9uRGF0YUJ5dGVzLEI9OCpBLnNpZ0J5dGVzO2dbQj4+PjVdfD0xMjg8PDI0LUIlMzI7dmFyIFE9TWF0aC5mbG9vcihJLzQyOTQ5NjcyOTYpLEU9STtnWzE1KyhCKzY0Pj4+OTw8NCldPTE2NzExOTM1JihRPDw4fFE+Pj4yNCl8NDI3ODI1NTM2MCYoUTw8MjR8UT4+PjgpLGdbMTQrKEIrNjQ+Pj45PDw0KV09MTY3MTE5MzUmKEU8PDh8RT4+PjI0KXw0Mjc4MjU1MzYwJihFPDwyNHxFPj4+OCksQS5zaWdCeXRlcz00KihnLmxlbmd0aCsxKSx0aGlzLl9wcm9jZXNzKCk7Zm9yKHZhciBDPXRoaXMuX2hhc2gsdD1DLndvcmRzLGk9MDtpPDQ7aSs9MSl7dmFyIGU9dFtpXTt0W2ldPTE2NzExOTM1JihlPDw4fGU+Pj4yNCl8NDI3ODI1NTM2MCYoZTw8MjR8ZT4+PjgpfXJldHVybiBDfX0se2tleToiY2xvbmUiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIEE9YyhnLCJjbG9uZSIsdGhpcywxKS5jYWxsKHRoaXMpO3JldHVybiBBLl9oYXNoPXRoaXMuX2hhc2guY2xvbmUoKSxBfX1dKX0oRGYpO0RmLl9jcmVhdGVIZWxwZXIoU2YpLERmLl9jcmVhdGVIbWFjSGVscGVyKFNmKTt2YXIgcGY9ZnVuY3Rpb24oQSl7ZnVuY3Rpb24gZyhBKXt2YXIgUTtyZXR1cm4gQih0aGlzLGcpLChRPUkodGhpcyxnKSkuY2ZnPU9iamVjdC5hc3NpZ24obmV3IHNmLHtrZXlTaXplOjQsaGFzaGVyOlNmLGl0ZXJhdGlvbnM6MX0sQSksUX1yZXR1cm4gZShnLEEpLEUoZyxbe2tleToiY29tcHV0ZSIsdmFsdWU6ZnVuY3Rpb24oQSxnKXtmb3IodmFyIEksQj10aGlzLmNmZyxRPUIuaGFzaGVyLmNyZWF0ZSgpLEU9Y2YuY3JlYXRlKCksQz1FLndvcmRzLHQ9Qi5rZXlTaXplLGk9Qi5pdGVyYXRpb25zO0MubGVuZ3RoPHQ7KXtJJiZRLnVwZGF0ZShJKSxJPVEudXBkYXRlKEEpLmZpbmFsaXplKGcpLFEucmVzZXQoKTtmb3IodmFyIGU9MTtlPGk7ZSs9MSlJPVEuZmluYWxpemUoSSksUS5yZXNldCgpO0UuY29uY2F0KEkpfXJldHVybiBFLnNpZ0J5dGVzPTQqdCxFfX1dKX0oc2YpLE5mPWZ1bmN0aW9uKEEpe2Z1bmN0aW9uIGcoQSxRLEUpe3ZhciBDO3JldHVybiBCKHRoaXMsZyksKEM9SSh0aGlzLGcpKS5jZmc9T2JqZWN0LmFzc2lnbihuZXcgc2YsRSksQy5feGZvcm1Nb2RlPUEsQy5fa2V5PVEsQy5yZXNldCgpLEN9cmV0dXJuIGUoZyxBKSxFKGcsW3trZXk6InJlc2V0Iix2YWx1ZTpmdW5jdGlvbigpe2MoZywicmVzZXQiLHRoaXMsMSkuY2FsbCh0aGlzKSx0aGlzLl9kb1Jlc2V0KCl9fSx7a2V5OiJwcm9jZXNzIix2YWx1ZTpmdW5jdGlvbihBKXtyZXR1cm4gdGhpcy5fYXBwZW5kKEEpLHRoaXMuX3Byb2Nlc3MoKX19LHtrZXk6ImZpbmFsaXplIix2YWx1ZTpmdW5jdGlvbihBKXtyZXR1cm4gQSYmdGhpcy5fYXBwZW5kKEEpLHRoaXMuX2RvRmluYWxpemUoKX19XSxbe2tleToiY3JlYXRlRW5jcnlwdG9yIix2YWx1ZTpmdW5jdGlvbihBLGcpe3JldHVybiB0aGlzLmNyZWF0ZSh0aGlzLl9FTkNfWEZPUk1fTU9ERSxBLGcpfX0se2tleToiY3JlYXRlRGVjcnlwdG9yIix2YWx1ZTpmdW5jdGlvbihBLGcpe3JldHVybiB0aGlzLmNyZWF0ZSh0aGlzLl9ERUNfWEZPUk1fTU9ERSxBLGcpfX0se2tleToiX2NyZWF0ZUhlbHBlciIsdmFsdWU6ZnVuY3Rpb24oQSl7dmFyIGc9ZnVuY3Rpb24oQSl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBBP3FmOktmfTtyZXR1cm57ZW5jcnlwdDpmdW5jdGlvbihJLEIsUSl7cmV0dXJuIGcoQikuZW5jcnlwdChBLEksQixRKX0sZGVjcnlwdDpmdW5jdGlvbihJLEIsUSl7cmV0dXJuIGcoQikuZGVjcnlwdChBLEksQixRKX19fX1dKX0odWYpO05mLl9FTkNfWEZPUk1fTU9ERT0xLE5mLl9ERUNfWEZPUk1fTU9ERT0yLE5mLmtleVNpemU9NCxOZi5pdlNpemU9NDt2YXIgTWY9ZnVuY3Rpb24oQSl7ZnVuY3Rpb24gZyhBLFEpe3ZhciBFO3JldHVybiBCKHRoaXMsZyksKEU9SSh0aGlzLGcpKS5fY2lwaGVyPUEsRS5faXY9USxFfXJldHVybiBlKGcsQSksRShnLG51bGwsW3trZXk6ImNyZWF0ZUVuY3J5cHRvciIsdmFsdWU6ZnVuY3Rpb24oQSxnKXtyZXR1cm4gdGhpcy5FbmNyeXB0b3IuY3JlYXRlKEEsZyl9fSx7a2V5OiJjcmVhdGVEZWNyeXB0b3IiLHZhbHVlOmZ1bmN0aW9uKEEsZyl7cmV0dXJuIHRoaXMuRGVjcnlwdG9yLmNyZWF0ZShBLGcpfX1dKX0oc2YpO2Z1bmN0aW9uIFlmKEEsZyxJKXt2YXIgQixRPUEsRT10aGlzLl9pdjtFPyhCPUUsdGhpcy5faXY9dm9pZCAwKTpCPXRoaXMuX3ByZXZCbG9jaztmb3IodmFyIEM9MDtDPEk7Qys9MSlRW2crQ11ePUJbQ119dmFyIEhmPWZ1bmN0aW9uKEEpe2Z1bmN0aW9uIGcoKXtyZXR1cm4gQih0aGlzLGcpLEkodGhpcyxnLGFyZ3VtZW50cyl9cmV0dXJuIGUoZyxBKSxFKGcpfShNZik7SGYuRW5jcnlwdG9yPWZ1bmN0aW9uKEEpe2Z1bmN0aW9uIGcoKXtyZXR1cm4gQih0aGlzLGcpLEkodGhpcyxnLGFyZ3VtZW50cyl9cmV0dXJuIGUoZyxBKSxFKGcsW3trZXk6InByb2Nlc3NCbG9jayIsdmFsdWU6ZnVuY3Rpb24oQSxnKXt2YXIgST10aGlzLl9jaXBoZXIsQj1JLmJsb2NrU2l6ZTtZZi5jYWxsKHRoaXMsQSxnLEIpLEkuZW5jcnlwdEJsb2NrKEEsZyksdGhpcy5fcHJldkJsb2NrPUEuc2xpY2UoZyxnK0IpfX1dKX0oSGYpLEhmLkRlY3J5cHRvcj1mdW5jdGlvbihBKXtmdW5jdGlvbiBnKCl7cmV0dXJuIEIodGhpcyxnKSxJKHRoaXMsZyxhcmd1bWVudHMpfXJldHVybiBlKGcsQSksRShnLFt7a2V5OiJwcm9jZXNzQmxvY2siLHZhbHVlOmZ1bmN0aW9uKEEsZyl7dmFyIEk9dGhpcy5fY2lwaGVyLEI9SS5ibG9ja1NpemUsUT1BLnNsaWNlKGcsZytCKTtJLmRlY3J5cHRCbG9jayhBLGcpLFlmLmNhbGwodGhpcyxBLGcsQiksdGhpcy5fcHJldkJsb2NrPVF9fV0pfShIZik7dmFyIHZmPXtwYWQ6ZnVuY3Rpb24oQSxnKXtmb3IodmFyIEk9NCpnLEI9SS1BLnNpZ0J5dGVzJUksUT1CPDwyNHxCPDwxNnxCPDw4fEIsRT1bXSxDPTA7QzxCO0MrPTQpRS5wdXNoKFEpO3ZhciB0PWNmLmNyZWF0ZShFLEIpO0EuY29uY2F0KHQpfSx1bnBhZDpmdW5jdGlvbihBKXt2YXIgZz1BLEk9MjU1Jmcud29yZHNbZy5zaWdCeXRlcy0xPj4+Ml07Zy5zaWdCeXRlcy09SX19LExmPWZ1bmN0aW9uKEEpe2Z1bmN0aW9uIGcoQSxRLEUpe3ZhciBDO3JldHVybiBCKHRoaXMsZyksKEM9SSh0aGlzLGcsW0EsUSxPYmplY3QuYXNzaWduKHttb2RlOkhmLHBhZGRpbmc6dmZ9LEUpXSkpLmJsb2NrU2l6ZT00LEN9cmV0dXJuIGUoZyxBKSxFKGcsW3trZXk6InJlc2V0Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciBBO2MoZywicmVzZXQiLHRoaXMsMSkuY2FsbCh0aGlzKTt2YXIgST10aGlzLmNmZyxCPUkuaXYsUT1JLm1vZGU7dGhpcy5feGZvcm1Nb2RlPT09dGhpcy5jb25zdHJ1Y3Rvci5fRU5DX1hGT1JNX01PREU/QT1RLmNyZWF0ZUVuY3J5cHRvcjooQT1RLmNyZWF0ZURlY3J5cHRvcix0aGlzLl9taW5CdWZmZXJTaXplPTEpLHRoaXMuX21vZGU9QS5jYWxsKFEsdGhpcyxCJiZCLndvcmRzKSx0aGlzLl9tb2RlLl9fY3JlYXRvcj1BfX0se2tleToiX2RvUHJvY2Vzc0Jsb2NrIix2YWx1ZTpmdW5jdGlvbihBLGcpe3RoaXMuX21vZGUucHJvY2Vzc0Jsb2NrKEEsZyl9fSx7a2V5OiJfZG9GaW5hbGl6ZSIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgQSxnPXRoaXMuY2ZnLnBhZGRpbmc7cmV0dXJuIHRoaXMuX3hmb3JtTW9kZT09PXRoaXMuY29uc3RydWN0b3IuX0VOQ19YRk9STV9NT0RFPyhnLnBhZCh0aGlzLl9kYXRhLHRoaXMuYmxvY2tTaXplKSxBPXRoaXMuX3Byb2Nlc3MoITApKTooQT10aGlzLl9wcm9jZXNzKCEwKSxnLnVucGFkKEEpKSxBfX1dKX0oTmYpLEpmPWZ1bmN0aW9uKEEpe2Z1bmN0aW9uIGcoQSl7dmFyIFE7cmV0dXJuIEIodGhpcyxnKSwoUT1JKHRoaXMsZykpLm1peEluKEEpLFF9cmV0dXJuIGUoZyxBKSxFKGcsW3trZXk6InRvU3RyaW5nIix2YWx1ZTpmdW5jdGlvbihBKXtyZXR1cm4oQXx8dGhpcy5mb3JtYXR0ZXIpLnN0cmluZ2lmeSh0aGlzKX19XSl9KHNmKSxtZj17c3RyaW5naWZ5OmZ1bmN0aW9uKEEpe3ZhciBnPUEuY2lwaGVydGV4dCxJPUEuc2FsdDtyZXR1cm4oST9jZi5jcmVhdGUoWzEzOTg4OTM2ODQsMTcwMTA3NjgzMV0pLmNvbmNhdChJKS5jb25jYXQoZyk6ZykudG9TdHJpbmcobGYpfSxwYXJzZTpmdW5jdGlvbihBKXt2YXIgZyxJPWxmLnBhcnNlKEEpLEI9SS53b3JkcztyZXR1cm4gMTM5ODg5MzY4ND09PUJbMF0mJjE3MDEwNzY4MzE9PT1CWzFdJiYoZz1jZi5jcmVhdGUoQi5zbGljZSgyLDQpKSxCLnNwbGljZSgwLDQpLEkuc2lnQnl0ZXMtPTE2KSxKZi5jcmVhdGUoe2NpcGhlcnRleHQ6SSxzYWx0Omd9KX19LEtmPWZ1bmN0aW9uKEEpe2Z1bmN0aW9uIGcoKXtyZXR1cm4gQih0aGlzLGcpLEkodGhpcyxnLGFyZ3VtZW50cyl9cmV0dXJuIGUoZyxBKSxFKGcsbnVsbCxbe2tleToiZW5jcnlwdCIsdmFsdWU6ZnVuY3Rpb24oQSxnLEksQil7dmFyIFE9T2JqZWN0LmFzc2lnbihuZXcgc2YsdGhpcy5jZmcsQiksRT1BLmNyZWF0ZUVuY3J5cHRvcihJLFEpLEM9RS5maW5hbGl6ZShnKSx0PUUuY2ZnO3JldHVybiBKZi5jcmVhdGUoe2NpcGhlcnRleHQ6QyxrZXk6SSxpdjp0Lml2LGFsZ29yaXRobTpBLG1vZGU6dC5tb2RlLHBhZGRpbmc6dC5wYWRkaW5nLGJsb2NrU2l6ZTpFLmJsb2NrU2l6ZSxmb3JtYXR0ZXI6US5mb3JtYXR9KX19LHtrZXk6ImRlY3J5cHQiLHZhbHVlOmZ1bmN0aW9uKEEsZyxJLEIpe3ZhciBRPWcsRT1PYmplY3QuYXNzaWduKG5ldyBzZix0aGlzLmNmZyxCKTtyZXR1cm4gUT10aGlzLl9wYXJzZShRLEUuZm9ybWF0KSxBLmNyZWF0ZURlY3J5cHRvcihJLEUpLmZpbmFsaXplKFEuY2lwaGVydGV4dCl9fSx7a2V5OiJfcGFyc2UiLHZhbHVlOmZ1bmN0aW9uKEEsZyl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBBP2cucGFyc2UoQSx0aGlzKTpBfX1dKX0oc2YpO0tmLmNmZz1PYmplY3QuYXNzaWduKG5ldyBzZix7Zm9ybWF0Om1mfSk7dmFyIHhmPXtleGVjdXRlOmZ1bmN0aW9uKEEsZyxJLEIpe3ZhciBRPUI7UXx8KFE9Y2YucmFuZG9tKDgpKTt2YXIgRT1wZi5jcmVhdGUoe2tleVNpemU6ZytJfSkuY29tcHV0ZShBLFEpLEM9Y2YuY3JlYXRlKEUud29yZHMuc2xpY2UoZyksNCpJKTtyZXR1cm4gRS5zaWdCeXRlcz00KmcsSmYuY3JlYXRlKHtrZXk6RSxpdjpDLHNhbHQ6UX0pfX0scWY9ZnVuY3Rpb24oQSl7ZnVuY3Rpb24gZygpe3JldHVybiBCKHRoaXMsZyksSSh0aGlzLGcsYXJndW1lbnRzKX1yZXR1cm4gZShnLEEpLEUoZyxudWxsLFt7a2V5OiJlbmNyeXB0Iix2YWx1ZTpmdW5jdGlvbihBLGcsSSxCKXt2YXIgUT1PYmplY3QuYXNzaWduKG5ldyBzZix0aGlzLmNmZyxCKSxFPVEua2RmLmV4ZWN1dGUoSSxBLmtleVNpemUsQS5pdlNpemUpO1EuaXY9RS5pdjt2YXIgQz1LZi5lbmNyeXB0LmNhbGwodGhpcyxBLGcsRS5rZXksUSk7cmV0dXJuIEMubWl4SW4oRSksQ319LHtrZXk6ImRlY3J5cHQiLHZhbHVlOmZ1bmN0aW9uKEEsZyxJLEIpe3ZhciBRPWcsRT1PYmplY3QuYXNzaWduKG5ldyBzZix0aGlzLmNmZyxCKTtRPXRoaXMuX3BhcnNlKFEsRS5mb3JtYXQpO3ZhciBDPUUua2RmLmV4ZWN1dGUoSSxBLmtleVNpemUsQS5pdlNpemUsUS5zYWx0KTtyZXR1cm4gRS5pdj1DLml2LEtmLmRlY3J5cHQuY2FsbCh0aGlzLEEsUSxDLmtleSxFKX19XSl9KEtmKTtxZi5jZmc9T2JqZWN0LmFzc2lnbihLZi5jZmcse2tkZjp4Zn0pO2Zvcih2YXIgYmY9W10sVGY9W10sT2Y9W10sUGY9W10sV2Y9W10sWmY9W10samY9W10sWGY9W10sVmY9W10semY9W10sX2Y9W10sJGY9MDskZjwyNTY7JGYrPTEpX2ZbJGZdPSRmPDEyOD8kZjw8MTokZjw8MV4yODM7Zm9yKHZhciBBeT0wLGd5PTAsSXk9MDtJeTwyNTY7SXkrPTEpe3ZhciBCeT1neV5neTw8MV5neTw8Ml5neTw8M15neTw8NDtCeT1CeT4+PjheMjU1JkJ5Xjk5LGJmW0F5XT1CeSxUZltCeV09QXk7dmFyIFF5PV9mW0F5XSxFeT1fZltReV0sQ3k9X2ZbRXldLHR5PTI1NypfZltCeV1eMTY4NDMwMDgqQnk7T2ZbQXldPXR5PDwyNHx0eT4+PjgsUGZbQXldPXR5PDwxNnx0eT4+PjE2LFdmW0F5XT10eTw8OHx0eT4+PjI0LFpmW0F5XT10eSx0eT0xNjg0MzAwOSpDeV42NTUzNypFeV4yNTcqUXleMTY4NDMwMDgqQXksamZbQnldPXR5PDwyNHx0eT4+PjgsWGZbQnldPXR5PDwxNnx0eT4+PjE2LFZmW0J5XT10eTw8OHx0eT4+PjI0LHpmW0J5XT10eSxBeT8oQXk9UXleX2ZbX2ZbX2ZbQ3leUXldXV0sZ3lePV9mW19mW2d5XV0pOkF5PWd5PTF9dmFyIGl5PVswLDEsMiw0LDgsMTYsMzIsNjQsMTI4LDI3LDU0XSxleT1mdW5jdGlvbihBKXtmdW5jdGlvbiBnKCl7cmV0dXJuIEIodGhpcyxnKSxJKHRoaXMsZyxhcmd1bWVudHMpfXJldHVybiBlKGcsQSksRShnLFt7a2V5OiJfZG9SZXNldCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgQTtpZighdGhpcy5fblJvdW5kc3x8dGhpcy5fa2V5UHJpb3JSZXNldCE9PXRoaXMuX2tleSl7dGhpcy5fa2V5UHJpb3JSZXNldD10aGlzLl9rZXk7dmFyIGc9dGhpcy5fa2V5UHJpb3JSZXNldCxJPWcud29yZHMsQj1nLnNpZ0J5dGVzLzQ7dGhpcy5fblJvdW5kcz1CKzY7dmFyIFE9NCoodGhpcy5fblJvdW5kcysxKTt0aGlzLl9rZXlTY2hlZHVsZT1bXTtmb3IodmFyIEU9dGhpcy5fa2V5U2NoZWR1bGUsQz0wO0M8UTtDKz0xKUM8Qj9FW0NdPUlbQ106KEE9RVtDLTFdLEMlQj9CPjYmJkMlQj09NCYmKEE9YmZbQT4+PjI0XTw8MjR8YmZbQT4+PjE2JjI1NV08PDE2fGJmW0E+Pj44JjI1NV08PDh8YmZbMjU1JkFdKTooQT1iZlsoQT1BPDw4fEE+Pj4yNCk+Pj4yNF08PDI0fGJmW0E+Pj4xNiYyNTVdPDwxNnxiZltBPj4+OCYyNTVdPDw4fGJmWzI1NSZBXSxBXj1peVtDL0J8MF08PDI0KSxFW0NdPUVbQy1CXV5BKTt0aGlzLl9pbnZLZXlTY2hlZHVsZT1bXTtmb3IodmFyIHQ9dGhpcy5faW52S2V5U2NoZWR1bGUsaT0wO2k8UTtpKz0xKXt2YXIgZT1RLWk7QT1pJTQ/RVtlXTpFW2UtNF0sdFtpXT1pPDR8fGU8PTQ/QTpqZltiZltBPj4+MjRdXV5YZltiZltBPj4+MTYmMjU1XV1eVmZbYmZbQT4+PjgmMjU1XV1eemZbYmZbMjU1JkFdXX19fX0se2tleToiZW5jcnlwdEJsb2NrIix2YWx1ZTpmdW5jdGlvbihBLGcpe3RoaXMuX2RvQ3J5cHRCbG9jayhBLGcsdGhpcy5fa2V5U2NoZWR1bGUsT2YsUGYsV2YsWmYsYmYpfX0se2tleToiZGVjcnlwdEJsb2NrIix2YWx1ZTpmdW5jdGlvbihBLGcpe3ZhciBJPUEsQj1JW2crMV07SVtnKzFdPUlbZyszXSxJW2crM109Qix0aGlzLl9kb0NyeXB0QmxvY2soSSxnLHRoaXMuX2ludktleVNjaGVkdWxlLGpmLFhmLFZmLHpmLFRmKSxCPUlbZysxXSxJW2crMV09SVtnKzNdLElbZyszXT1CfX0se2tleToiX2RvQ3J5cHRCbG9jayIsdmFsdWU6ZnVuY3Rpb24oQSxnLEksQixRLEUsQyx0KXtmb3IodmFyIGk9QSxlPXRoaXMuX25Sb3VuZHMsbz1pW2ddXklbMF0scj1pW2crMV1eSVsxXSxuPWlbZysyXV5JWzJdLGE9aVtnKzNdXklbM10scz00LGM9MTtjPGU7Yys9MSl7dmFyIGg9QltvPj4+MjRdXlFbcj4+PjE2JjI1NV1eRVtuPj4+OCYyNTVdXkNbMjU1JmFdXklbc107cys9MTt2YXIgZj1CW3I+Pj4yNF1eUVtuPj4+MTYmMjU1XV5FW2E+Pj44JjI1NV1eQ1syNTUmb11eSVtzXTtzKz0xO3ZhciB5PUJbbj4+PjI0XV5RW2E+Pj4xNiYyNTVdXkVbbz4+PjgmMjU1XV5DWzI1NSZyXV5JW3NdO3MrPTE7dmFyIHU9QlthPj4+MjRdXlFbbz4+PjE2JjI1NV1eRVtyPj4+OCYyNTVdXkNbMjU1Jm5dXklbc107cys9MSxvPWgscj1mLG49eSxhPXV9dmFyIEQ9KHRbbz4+PjI0XTw8MjR8dFtyPj4+MTYmMjU1XTw8MTZ8dFtuPj4+OCYyNTVdPDw4fHRbMjU1JmFdKV5JW3NdO3MrPTE7dmFyIHc9KHRbcj4+PjI0XTw8MjR8dFtuPj4+MTYmMjU1XTw8MTZ8dFthPj4+OCYyNTVdPDw4fHRbMjU1Jm9dKV5JW3NdO3MrPTE7dmFyIGw9KHRbbj4+PjI0XTw8MjR8dFthPj4+MTYmMjU1XTw8MTZ8dFtvPj4+OCYyNTVdPDw4fHRbMjU1JnJdKV5JW3NdO3MrPTE7dmFyIGQ9KHRbYT4+PjI0XTw8MjR8dFtvPj4+MTYmMjU1XTw8MTZ8dFtyPj4+OCYyNTVdPDw4fHRbMjU1Jm5dKV5JW3NdO3MrPTEsaVtnXT1ELGlbZysxXT13LGlbZysyXT1sLGlbZyszXT1kfX1dKX0oTGYpO2V5LmtleVNpemU9ODt2YXIgb3k9TGYuX2NyZWF0ZUhlbHBlcihleSkscnk9ZnVuY3Rpb24oQSl7ZnVuY3Rpb24gZygpe3JldHVybiBCKHRoaXMsZyksSSh0aGlzLGcsYXJndW1lbnRzKX1yZXR1cm4gZShnLEEpLEUoZyl9KE1mKTtyeS5FbmNyeXB0b3I9ZnVuY3Rpb24oQSl7ZnVuY3Rpb24gZygpe3JldHVybiBCKHRoaXMsZyksSSh0aGlzLGcsYXJndW1lbnRzKX1yZXR1cm4gZShnLEEpLEUoZyxbe2tleToicHJvY2Vzc0Jsb2NrIix2YWx1ZTpmdW5jdGlvbihBLGcpe3ZhciBJPUEsQj10aGlzLl9jaXBoZXIsUT1CLmJsb2NrU2l6ZSxFPXRoaXMuX2l2LEM9dGhpcy5fY291bnRlcjtFJiYodGhpcy5fY291bnRlcj1FLnNsaWNlKDApLEM9dGhpcy5fY291bnRlcix0aGlzLl9pdj12b2lkIDApO3ZhciB0PUMuc2xpY2UoMCk7Qi5lbmNyeXB0QmxvY2sodCwwKSxDW1EtMV09Q1tRLTFdKzF8MDtmb3IodmFyIGk9MDtpPFE7aSs9MSlJW2craV1ePXRbaV19fV0pfShyeSkscnkuRGVjcnlwdG9yPXJ5LkVuY3J5cHRvcjt2YXIgbnk9e3BhZDpmdW5jdGlvbigpe30sdW5wYWQ6ZnVuY3Rpb24oKXt9fSxheT17ZGVjcnlwdFdvcmRBcnJheTpmdW5jdGlvbihBLGcsSSl7dmFyIEI9aGYucGFyc2UoZyksUT1oZi5wYXJzZShxaChJKSksRT1jZi5jcmVhdGUobmV3IFVpbnQ4QXJyYXkoQSkpLEM9b3kuZGVjcnlwdChKZi5jcmVhdGUoe2NpcGhlcnRleHQ6RX0pLEIse2l2OlEsbW9kZTpyeSxwYWRkaW5nOm55fSk7cmV0dXJuIGF5LndvcmRBcnJheVRvVWludDhBcnJheShDKX0sd29yZEFycmF5VG9VaW50OEFycmF5OmZ1bmN0aW9uKEEpe2Zvcih2YXIgZz1BLnNpZ0J5dGVzLEk9QS53b3JkcyxCPW5ldyBVaW50OEFycmF5KGcpLFE9MCxFPTA7USE9PWc7KXt2YXIgQz1JW0UrK107aWYoQltRKytdPSg0Mjc4MTkwMDgwJkMpPj4+MjQsUT09PWcpYnJlYWs7aWYoQltRKytdPSgxNjcxMTY4MCZDKT4+PjE2LFE9PT1nKWJyZWFrO2lmKEJbUSsrXT0oNjUyODAmQyk+Pj44LFE9PT1nKWJyZWFrO0JbUSsrXT0yNTUmQ31yZXR1cm4gQn0sZGVjb2RlckFFU0NUUkRhdGE6ZnVuY3Rpb24oQSxnLEkpe2lmKEEudmlkZW9TZW5jKXt2YXIgQj1BLmtpZFZhbHVlLFE9QS52aWRlb1NlbmM7QS5zYW1wbGVzLmZvckVhY2goKGZ1bmN0aW9uKGcsRSl7dmFyIEM9UVtFXSx0PWcuZGF0YSxpPVtdLGU9W10sbz1DLkluaXRpYWxpemF0aW9uVmVjdG9yO2lmKEMuc3Vic2FtcGxlcyYmQy5zdWJzYW1wbGVzLmxlbmd0aClDLnN1YnNhbXBsZXMuZm9yRWFjaCgoZnVuY3Rpb24oQSl7dmFyIGc9QS5CeXRlc09mQ2xlYXJEYXRhK0EuQnl0ZXNPZlByb3RlY3RlZERhdGEsST10LnNsaWNlKDAsZyk7aS5wdXNoKEkuc2xpY2UoMCxBLkJ5dGVzT2ZDbGVhckRhdGEpKSxlLnB1c2goSS5zbGljZShBLkJ5dGVzT2ZDbGVhckRhdGEpKSx0PXQuc2xpY2UoZyl9KSk7ZWxzZXt2YXIgcj1nLnNpemU7aS5wdXNoKHQuc2xpY2UoMCwwKSksZS5wdXNoKHQuc2xpY2UoMCxyKSksdD10LnNsaWNlKHIpfXZhciBuPW5ldyBfaDtuLndyaXRlLmFwcGx5KG4sZSk7dmFyIGE9ST9JKG4uYnVmZmVyLEIsbyk6YXkuZGVjcnlwdFdvcmRBcnJheShuLmJ1ZmZlcixCLG8pLHM9bmV3IF9oO2kuZm9yRWFjaCgoZnVuY3Rpb24oQSxnKXt2YXIgST1lW2ddLmxlbmd0aCxCPWEuc2xpY2UoMCxJKTtzLndyaXRlKEEpLHMud3JpdGUoQiksYT1hLnNsaWNlKEkpfSkpLEEuc2FtcGxlc1tFXS5kYXRhPXMuYnVmZmVyfSkpfWlmKGcuYXVkaW9TZW5jKXt2YXIgRT1nLmtpZFZhbHVlLEM9Zy5hdWRpb1NlbmM7Zy5zYW1wbGVzLmZvckVhY2goKGZ1bmN0aW9uKEEsQil7dmFyIFE9Q1tCXSx0PUk/SShBLmRhdGEsRSxRLkluaXRpYWxpemF0aW9uVmVjdG9yKTpheS5kZWNyeXB0V29yZEFycmF5KEEuZGF0YSxFLFEuSW5pdGlhbGl6YXRpb25WZWN0b3IpO2cuc2FtcGxlc1tCXS5kYXRhPXR9KSl9fX0sc3k9WyJzdHRzIiwic3RzYyIsInN0c3oiLCJzdGNvIiwiY282NCIsInN0c3MiLCJjdHRzIl0sY3k9ZnVuY3Rpb24oKXtmdW5jdGlvbiBBKGcsSSxCLFEpe3ZhciBFLEMsdD10aGlzO2lmKENoKHRoaXMsQSksZWgodGhpcywiX3ZpZGVvU2FtcGxlcyIsW10pLGVoKHRoaXMsIl9hdWRpb1NhbXBsZXMiLFtdKSxlaCh0aGlzLCJfbGFzdFJlbWFpbkJ1ZmZlciIsW10pLGVoKHRoaXMsIl9sYXN0UmVtYWluQnVmZmVyU3RhcnRQb3MiLDApLGVoKHRoaXMsInZpZGVvTWF4RnJhbWVJZHgiLC0xKSxlaCh0aGlzLCJhdWRpb01heEZyYW1lSWR4IiwtMSksdGhpcy52aWRlb1RyYWNrPW5ldyBGaCx0aGlzLmF1ZGlvVHJhY2s9bmV3IEdoLHRoaXMubWV0YWRhdGFUcmFjaz1CfHxuZXcga2gsdGhpcy52aWRlb1NlZ21uZW50cz1nLHRoaXMuYXVkaW9TZWdtbmVudHM9SSx0aGlzLmxvZz1uZXcgZ2YoIk1QNERlbXV4ZXIiLCFRfHwhUS5vcGVuTG9nfHwhUS5vcGVuTG9nKSx0aGlzLm1lbW9yeU9wdD1udWxsPT1RP3ZvaWQgMDpRLm1lbW9yeU9wdCx0aGlzLm1lbW9yeU9wdHx8KGcmJmcuZm9yRWFjaCgoZnVuY3Rpb24oQSl7dmFyIGc7KGc9dC5fdmlkZW9TYW1wbGVzKS5wdXNoLmFwcGx5KGcscmgoQS5mcmFtZXMpKX0pKSxJJiZJLmZvckVhY2goKGZ1bmN0aW9uKEEpe3ZhciBnOyhnPXQuX2F1ZGlvU2FtcGxlcykucHVzaC5hcHBseShnLHJoKEEuZnJhbWVzKSl9KSkpLChudWxsPT09KEU9dGhpcy52aWRlb1NlZ21uZW50cyl8fHZvaWQgMD09PUU/dm9pZCAwOkUubGVuZ3RoKT4wKXt2YXIgaT10aGlzLnZpZGVvU2VnbW5lbnRzW3RoaXMudmlkZW9TZWdtbmVudHMubGVuZ3RoLTFdLmZyYW1lczt0aGlzLnZpZGVvTWF4RnJhbWVJZHg9aVtpLmxlbmd0aC0xXS5pbmRleH1pZigobnVsbD09PShDPXRoaXMuYXVkaW9TZWdtbmVudHMpfHx2b2lkIDA9PT1DP3ZvaWQgMDpDLmxlbmd0aCk+MCl7dmFyIGU9dGhpcy5hdWRpb1NlZ21uZW50c1t0aGlzLmF1ZGlvU2VnbW5lbnRzLmxlbmd0aC0xXS5mcmFtZXM7dGhpcy5hdWRpb01heEZyYW1lSWR4PWVbZS5sZW5ndGgtMV0uaW5kZXh9fXJldHVybiBpaChBLFt7a2V5OiJwYXJzZVNhbXBsZXMiLHZhbHVlOmZ1bmN0aW9uKEEpe2lmKCFBKXRocm93IG5ldyBFcnJvcigibW9vdiBpcyByZXF1aXJlZCIpO3RoaXMudmlkZW9UcmFjay5jb2RlY3x8dGhpcy5hdWRpb1RyYWNrLmNvZGVjfHwoV2gubW9vdlRvVHJhY2soQSx0aGlzLnZpZGVvVHJhY2ssdGhpcy5hdWRpb1RyYWNrKSx0aGlzLnZpZGVvU2VuYz10aGlzLnZpZGVvVHJhY2sudmlkZW9TZW5jLHRoaXMuYXVkaW9TZW5jPXRoaXMuYXVkaW9UcmFjay5hdWRpb1NlbmMsdGhpcy5tZW1vcnlPcHQmJnRoaXMuY2xlYXJCb3hFbnRyaWVzKEEpKX19LHtrZXk6ImRlbXV4Iix2YWx1ZTpmdW5jdGlvbihBLGcsSSxCLFEpe3RoaXMucGFyc2VTYW1wbGVzKFEpO3ZhciBFLEMsdCxpPXRoaXMudmlkZW9UcmFjayxlPXRoaXMuYXVkaW9UcmFjaztpLnNhbXBsZXM9W10sZS5zYW1wbGVzPVtdO3ZhciBvPXt9O2lmKEkpe3ZhciByLG49MDtpZih0aGlzLm1lbW9yeU9wdCYmdGhpcy52aWRlb1NlZ21uZW50cyYmIShvPXRoaXMuZ2V0RnJhbWVQb3NCeUlkeCgidmlkZW8iLElbMF0pKSl0aHJvdyBuZXcgRXJyb3IoImNhbm5vdCBmb3VuZCB2aWRlbyBmcmFtZSAjIi5jb25jYXQoSVswXSkpO2Zvcih2YXIgYT1vLHM9YS5mcmFtZUlkeCxjPWEuc2VnbWVudElkeCxoPUlbMF0sZj1JWzFdO2g8PWY7aCsrKXtpZighdGhpcy5fdmlkZW9TYW1wbGVzLmxlbmd0aCYmdGhpcy52aWRlb1NlZ21uZW50cyl7dmFyIHk9dGhpcy5nZXRGcmFtZUluZm8oInZpZGVvIixjLHMpO0U9eS5zYW1wbGUsYz15LnNlZ21lbnRJZHgscz15LmZyYW1lSWR4fWVsc2UgRT10aGlzLl92aWRlb1NhbXBsZXNbaF07aWYoIUUpdGhyb3cgbmV3IEVycm9yKCJjYW5ub3QgZm91bmQgdmlkZW8gZnJhbWUgIyIuY29uY2F0KGgpKTt0PUUub2Zmc2V0LWcsQz1BLnN1YmFycmF5KHQsdCtFLnNpemUpLChyPW5ldyBSaCgibnVtYmVyIj09dHlwZW9mIEUucHRzP0UucHRzOkUuZHRzLEUuZHRzKSkuZHVyYXRpb249RS5kdXJhdGlvbixyLmdvcElkPUUuZ29wSWQsRS5rZXlmcmFtZSYmci5zZXRUb0tleWZyYW1lKCk7Zm9yKHZhciB1PTAsRD1DLmxlbmd0aC0xO3U8RDspbj1KaChDLHUpLHUrPTQsci51bml0cy5wdXNoKEMuc3ViYXJyYXkodSx1K24pKSx1Kz1uO2kuc2FtcGxlcy5wdXNoKHIpfWkuYmFzZU1lZGlhRGVjb2RlVGltZT1pLnNhbXBsZXNbMF0uZHRzfWlmKG89e30sQil7aWYodGhpcy5tZW1vcnlPcHQmJnRoaXMuYXVkaW9TZWdtbmVudHMmJiEobz10aGlzLmdldEZyYW1lUG9zQnlJZHgoImF1ZGlvIixCWzBdKSkpdGhyb3cgbmV3IEVycm9yKCJjYW5ub3QgZm91bmQgdmlkZW8gZnJhbWUgIyIuY29uY2F0KEJbMF0pKTtmb3IodmFyIHc9byxsPXcuZnJhbWVJZHgsZD13LnNlZ21lbnRJZHgsRj1CWzBdLEc9QlsxXTtGPD1HO0YrKyl7aWYoIXRoaXMuX2F1ZGlvU2FtcGxlcy5sZW5ndGgmJnRoaXMuYXVkaW9TZWdtbmVudHMpe3ZhciBSPXRoaXMuZ2V0RnJhbWVJbmZvKCJhdWRpbyIsZCxsKTtFPVIuc2FtcGxlLGQ9Ui5zZWdtZW50SWR4LGw9Ui5mcmFtZUlkeH1lbHNlIEU9dGhpcy5fYXVkaW9TYW1wbGVzW0ZdO2lmKCFFKXRocm93IG5ldyBFcnJvcigiY2Fubm90IGZvdW5kIHZpZGVvIGZyYW1lICMiLmNvbmNhdChGKSk7dD1FLm9mZnNldC1nLEM9QS5zdWJhcnJheSh0LHQrRS5zaXplKSxlLnNhbXBsZXMucHVzaChuZXcgVWgoRS5kdHMsQyxFLmR1cmF0aW9uKSl9ZS5iYXNlTWVkaWFEZWNvZGVUaW1lPWUuc2FtcGxlc1swXS5kdHN9cmV0dXJue3ZpZGVvVHJhY2s6aSxhdWRpb1RyYWNrOmUsbWV0YWRhdGFUcmFjazp0aGlzLm1ldGFkYXRhVHJhY2t9fX0se2tleToiZGVtdXhQYXJ0Iix2YWx1ZTpmdW5jdGlvbihBLGcsSSxCLFEsRSxDLHQpe2lmKHRoaXMucGFyc2VTYW1wbGVzKFEpLHRoaXMudmlkZW9UcmFjay51c2VFTUU9RSx0aGlzLmF1ZGlvVHJhY2sudXNlRU1FPUUsdGhpcy5fbGFzdFJlbWFpbkJ1ZmZlciYmdGhpcy5fbGFzdFJlbWFpbkJ1ZmZlci5ieXRlTGVuZ3RoPjAmJmc+dGhpcy5fbGFzdFJlbWFpbkJ1ZmZlclN0YXJ0UG9zJiZnPD10aGlzLl9sYXN0UmVtYWluQnVmZmVyU3RhcnRQb3MrdGhpcy5fbGFzdFJlbWFpbkJ1ZmZlci5ieXRlTGVuZ3RoKWZvcih2YXIgaT0wO2k8MjA7KXRyeXt2YXIgZT10aGlzLl9sYXN0UmVtYWluQnVmZmVyLnN1YmFycmF5KDAsZy10aGlzLl9sYXN0UmVtYWluQnVmZmVyU3RhcnRQb3MpLG89bmV3IFVpbnQ4QXJyYXkoQS5ieXRlTGVuZ3RoK2UuYnl0ZUxlbmd0aCk7by5zZXQoZSwwKSxvLnNldChuZXcgVWludDhBcnJheShBKSxlLmJ5dGVMZW5ndGgpLEE9byxnLT1lLmJ5dGVMZW5ndGgsdGhpcy5fbGFzdFJlbWFpbkJ1ZmZlcj1udWxsLHRoaXMuX2xhc3RSZW1haW5CdWZmZXJTdGFydFBvcz0wO2JyZWFrfWNhdGNoKEope2lmKCEoaTwyMCkpdGhyb3cgbmV3IEVycm9yKCJuZXcgVWludDhBcnJheSBlcnJvcjosIitKLmVycm9yTWVzc2FnZSk7aSsrfXZhciByLG4sYSxzPXRoaXMudmlkZW9UcmFjayxjPXRoaXMuYXVkaW9UcmFjaztzLnNhbXBsZXM9W10sYy5zYW1wbGVzPVtdLHMudmlkZW9TZW5jPW51bGwsYy5hdWRpb1NlbmM9bnVsbCwobnVsbD09ST92b2lkIDA6SVsxXSk+dGhpcy52aWRlb01heEZyYW1lSWR4JiZ0aGlzLnZpZGVvTWF4RnJhbWVJZHg+MCYmKElbMV09dGhpcy52aWRlb01heEZyYW1lSWR4KSwobnVsbD09Qj92b2lkIDA6QlsxXSk+dGhpcy5hdWRpb01heEZyYW1lSWR4JiZ0aGlzLmF1ZGlvTWF4RnJhbWVJZHg+MCYmKEJbMV09dGhpcy5hdWRpb01heEZyYW1lSWR4KTt2YXIgaD0wLGY9MCx5PXt9LHU9QS5ieXRlTGVuZ3RoK2c7aWYoSS5sZW5ndGg+MCl7dmFyIEQ7aWYodGhpcy5tZW1vcnlPcHQmJnRoaXMudmlkZW9TZWdtbmVudHMmJiEoeT10aGlzLmdldEZyYW1lUG9zQnlJZHgoInZpZGVvIixJWzBdKSkpdGhyb3cgbmV3IEVycm9yKCJjYW5ub3QgZm91bmQgdmlkZW8gZnJhbWUgIyIuY29uY2F0KElbMF0pKTtmb3IodmFyIHc9eSxsPXcuZnJhbWVJZHgsZD13LnNlZ21lbnRJZHgsRj1JWzBdO0Y8PUlbMV07RisrKXtpZighdGhpcy5fdmlkZW9TYW1wbGVzLmxlbmd0aCYmdGhpcy52aWRlb1NlZ21uZW50cyl7dmFyIEc9dGhpcy5nZXRGcmFtZUluZm8oInZpZGVvIixkLGwpO3I9Ry5zYW1wbGUsZD1HLnNlZ21lbnRJZHgsbD1HLmZyYW1lSWR4fWVsc2Ugcj10aGlzLl92aWRlb1NhbXBsZXNbRl07aWYoIXIpdGhyb3cgbmV3IEVycm9yKCJjYW5ub3QgZm91bmQgdmlkZW8gZnJhbWUgIyIuY29uY2F0KEYpKTtpZih0aGlzLm1lbW9yeU9wdCYmci5vZmZzZXQrci5zaXplPnUpYnJlYWs7ci5vZmZzZXQ+PWcmJnIub2Zmc2V0K3Iuc2l6ZTw9dSYmKGg9KGE9ci5vZmZzZXQtZykrci5zaXplLG49QS5zdWJhcnJheShhLGgpLChEPW5ldyBSaCgibnVtYmVyIj09dHlwZW9mIHIucHRzP3IucHRzOnIuZHRzLHIuZHRzKSkuZHVyYXRpb249ci5kdXJhdGlvbixELmdvcElkPXIuZ29wSWQsRC5zYW1wbGVPZmZzZXQ9ci5pbmRleCxyLmtleWZyYW1lJiZELnNldFRvS2V5ZnJhbWUoKSxELmRhdGE9bixELnNpemU9ci5zaXplLHMuc2FtcGxlcy5wdXNoKEQpKX1zLnNhbXBsZXMubGVuZ3RoPjAmJihzLmdvcElkPXMuc2FtcGxlc1swXS5nb3BJZCxzLmJhc2VNZWRpYURlY29kZVRpbWU9cy5zYW1wbGVzWzBdLmR0cyxzLnN0YXJ0UHRzPXMuc2FtcGxlc1swXS5wdHMvcy50aW1lc2NhbGUscy5lbmRQdHM9cy5zYW1wbGVzW3Muc2FtcGxlcy5sZW5ndGgtMV0ucHRzL3MudGltZXNjYWxlLHMuc3RhcnREdHM9cy5zYW1wbGVzWzBdLmR0cy9zLnRpbWVzY2FsZSxzLmVuZER0cz1zLnNhbXBsZXNbcy5zYW1wbGVzLmxlbmd0aC0xXS5kdHMvcy50aW1lc2NhbGUsdGhpcy52aWRlb1NlbmMmJihzLnZpZGVvU2VuYz10aGlzLnZpZGVvU2VuYy5zbGljZShzLnNhbXBsZXNbMF0uc2FtcGxlT2Zmc2V0LHMuc2FtcGxlc1swXS5zYW1wbGVPZmZzZXQrcy5zYW1wbGVzLmxlbmd0aCkscy5raWRWYWx1ZT1DKSl9aWYoQi5sZW5ndGg+MCl7aWYodGhpcy5tZW1vcnlPcHQmJnRoaXMuYXVkaW9TZWdtbmVudHMmJiEoeT10aGlzLmdldEZyYW1lUG9zQnlJZHgoImF1ZGlvIixCWzBdKSkpdGhyb3cgbmV3IEVycm9yKCJjYW5ub3QgZm91bmQgdmlkZW8gZnJhbWUgIyIuY29uY2F0KEJbMF0pKTtmb3IodmFyIFI9eSxVPVIuZnJhbWVJZHgsaz1SLnNlZ21lbnRJZHgsUz1CWzBdO1M8PUJbMV07UysrKXtpZighdGhpcy5fYXVkaW9TYW1wbGVzLmxlbmd0aCYmdGhpcy5hdWRpb1NlZ21uZW50cyl7dmFyIHA9dGhpcy5nZXRGcmFtZUluZm8oImF1ZGlvIixrLFUpO3I9cC5zYW1wbGUsaz1wLnNlZ21lbnRJZHgsVT1wLmZyYW1lSWR4fWVsc2Ugcj10aGlzLl9hdWRpb1NhbXBsZXNbU107aWYoIXIpdGhyb3cgbmV3IEVycm9yKCJjYW5ub3QgZm91bmQgdmlkZW8gZnJhbWUgIyIuY29uY2F0KFMpKTtpZih0aGlzLm1lbW9yeU9wdCYmci5vZmZzZXQrci5zaXplPnUpYnJlYWs7ci5vZmZzZXQ+PWcmJnIub2Zmc2V0K3Iuc2l6ZTw9dSYmKGY9KGE9ci5vZmZzZXQtZykrci5zaXplLG49QS5zdWJhcnJheShhLGYpLGMuc2FtcGxlcy5wdXNoKG5ldyBVaChyLmR0cyxuLHIuZHVyYXRpb24sci5pbmRleCkpKX1jLnNhbXBsZXMubGVuZ3RoPjAmJihjLmdvcElkPWMuc2FtcGxlc1swXS5nb3BJZHx8cy5nb3BJZCxjLmJhc2VNZWRpYURlY29kZVRpbWU9Yy5zYW1wbGVzWzBdLmR0cyxjLnN0YXJ0UHRzPWMuc2FtcGxlc1swXS5wdHMvYy50aW1lc2NhbGUsYy5lbmRQdHM9Yy5zYW1wbGVzW2Muc2FtcGxlcy5sZW5ndGgtMV0ucHRzL2MudGltZXNjYWxlLHRoaXMuYXVkaW9TZW5jJiYoYy5hdWRpb1NlbmM9dGhpcy5hdWRpb1NlbmMuc2xpY2UoYy5zYW1wbGVzWzBdLnNhbXBsZU9mZnNldCxjLnNhbXBsZXNbMF0uc2FtcGxlT2Zmc2V0K2Muc2FtcGxlcy5sZW5ndGgpLGMua2lkVmFsdWU9QykpfXRoaXMuZGVjb2RlckRhdGEocyxjLHQpO2Zvcih2YXIgTj0wLE09MDtNPHMuc2FtcGxlcy5sZW5ndGg7TSsrKWZvcih2YXIgWT0wLEg9cy5zYW1wbGVzW01dLmRhdGEsdj1ILmxlbmd0aC0xO1k8djspTj1KaChILFkpLFkrPTQscy5zYW1wbGVzW01dLnVuaXRzLnB1c2goSC5zdWJhcnJheShZLFkrTikpLFkrPU47dmFyIEw9TWF0aC5tYXgoaCxmKTtyZXR1cm4gdGhpcy5fbGFzdFJlbWFpbkJ1ZmZlcj1BLnN1YmFycmF5KEwpLHRoaXMuX2xhc3RSZW1haW5CdWZmZXIuYnl0ZUxlbmd0aD4wP3RoaXMuX2xhc3RSZW1haW5CdWZmZXJTdGFydFBvcz1nK0EuYnl0ZUxlbmd0aC10aGlzLl9sYXN0UmVtYWluQnVmZmVyLmJ5dGVMZW5ndGg6dGhpcy5fbGFzdFJlbWFpbkJ1ZmZlclN0YXJ0UG9zPTAse3ZpZGVvVHJhY2s6cyxhdWRpb1RyYWNrOmMsbWV0YWRhdGFUcmFjazp0aGlzLm1ldGFkYXRhVHJhY2ssbGFzdFJlbWFpbkJ1ZmZlckluZm86e2RhdGE6dGhpcy5fbGFzdFJlbWFpbkJ1ZmZlcixwb3M6dGhpcy5fbGFzdFJlbWFpbkJ1ZmZlclN0YXJ0UG9zfX19fSx7a2V5OiJzZXRMYXN0UmVtYWluQnVmZmVySW5mbyIsdmFsdWU6ZnVuY3Rpb24oQSxnKXt0aGlzLl9sYXN0UmVtYWluQnVmZmVyPUEsdGhpcy5fbGFzdFJlbWFpbkJ1ZmZlclN0YXJ0UG9zPWd9fSx7a2V5OiJyZXNldCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLl9sYXN0UmVtYWluQnVmZmVyPW51bGwsdGhpcy5fbGFzdFJlbWFpbkJ1ZmZlclN0YXJ0UG9zPTAsdGhpcy52aWRlb1RyYWNrLnJlc2V0KCksdGhpcy5hdWRpb1RyYWNrLnJlc2V0KCksdGhpcy5tZXRhZGF0YVRyYWNrLnJlc2V0KCl9fSx7a2V5OiJkZWNvZGVyRGF0YSIsdmFsdWU6ZnVuY3Rpb24oQSxnLEkpe0EudXNlRU1FfHxnLnVzZUVNRXx8YXkuZGVjb2RlckFFU0NUUkRhdGEoQSxnLEkpfX0se2tleToiZ2V0RnJhbWVQb3NCeUlkeCIsdmFsdWU6ZnVuY3Rpb24oQSxnKXt2YXIgST0idmlkZW8iPT09QT90aGlzLnZpZGVvU2VnbW5lbnRzOnRoaXMuYXVkaW9TZWdtbmVudHM7aWYoIUl8fG51bGw9PUl8fCFJLmxlbmd0aClyZXR1cm4gbnVsbDtmb3IodmFyIEIsUT0wLEU9MDtFPEkubGVuZ3RoO0UrKyl7dmFyIEMsdDtpZihCPUlbRV0uZnJhbWVzLGc8PShudWxsPT09KEM9SVtFXS5mcmFtZXMpfHx2b2lkIDA9PT1DP3ZvaWQgMDpDWyhudWxsPT09KHQ9Qil8fHZvaWQgMD09PXQ/dm9pZCAwOnQubGVuZ3RoKS0xXS5pbmRleCkpe1E9RTticmVha319cmV0dXJue2ZyYW1lSWR4OkIuZmluZEluZGV4KChmdW5jdGlvbihBKXtyZXR1cm4gQS5pbmRleD09PWd9KSksc2VnbWVudElkeDpRfX19LHtrZXk6ImdldEZyYW1lSW5mbyIsdmFsdWU6ZnVuY3Rpb24oQSxnLEkpe3ZhciBCLFEsRSxDLHQ9InZpZGVvIj09PUE/dGhpcy52aWRlb1NlZ21uZW50czp0aGlzLmF1ZGlvU2VnbW5lbnRzO3JldHVybiB0P0k8KG51bGw9PT0oQj10W2ddKXx8dm9pZCAwPT09Qnx8bnVsbD09PShRPUIuZnJhbWVzKXx8dm9pZCAwPT09UT92b2lkIDA6US5sZW5ndGgpP3tzYW1wbGU6bnVsbD09PShFPXRbZ10pfHx2b2lkIDA9PT1FP3ZvaWQgMDpFLmZyYW1lc1tJXSxzZWdtZW50SWR4OmcsZnJhbWVJZHg6SSsxfTp7c2FtcGxlOm51bGw9PT0oQz10W2crMV0pfHx2b2lkIDA9PT1DP3ZvaWQgMDpDLmZyYW1lc1swXSxzZWdtZW50SWR4OmcrMSxmcmFtZUlkeDoxfTp7fX19LHtrZXk6ImNsZWFyQm94RW50cmllcyIsdmFsdWU6ZnVuY3Rpb24oQSl7dGhpcy5tZW1vcnlPcHQmJkEudHJhay5mb3JFYWNoKChmdW5jdGlvbihBKXtzeS5mb3JFYWNoKChmdW5jdGlvbihnKXt2YXIgST1BLm1kaWEubWluZi5zdGJsW2ddO0kmJihJLmVudHJpZXMmJihJLmVudHJpZXM9bnVsbCksSS5lbnRyeVNpemVzJiYoSS5lbnRyeVNpemVzPW51bGwpKX0pKX0pKX19XSxbe2tleToicHJvYmUiLHZhbHVlOmZ1bmN0aW9uKEEpe3JldHVybiBXaC5wcm9iZShBKX19XSksQX0oKSxoeT1JdC5maWx0ZXI7ZUIoe3RhcmdldDoiQXJyYXkiLHByb3RvOiEwLGZvcmNlZDohRW8oImZpbHRlciIpfSx7ZmlsdGVyOmZ1bmN0aW9uKEEpe3JldHVybiBoeSh0aGlzLEEsYXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDApfX0pO3ZhciBmeT1JdC5tYXA7ZUIoe3RhcmdldDoiQXJyYXkiLHByb3RvOiEwLGZvcmNlZDohRW8oIm1hcCIpfSx7bWFwOmZ1bmN0aW9uKEEpe3JldHVybiBmeSh0aGlzLEEsYXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDApfX0pO3ZhciB5eT1uQSx1eT1hZztlQih7dGFyZ2V0OiJPYmplY3QiLHN0YXQ6ITAsZm9yY2VkOkQoKGZ1bmN0aW9uKCl7dXkoMSl9KSl9LHtrZXlzOmZ1bmN0aW9uKEEpe3JldHVybiB1eSh5eShBKSl9fSk7dmFyIER5PVQsd3k9akEsbHk9UixkeT1qcyxGeT1JYztUcygibWF0Y2giLDEsKGZ1bmN0aW9uKEEsZyxJKXtyZXR1cm5bZnVuY3Rpb24oZyl7dmFyIEk9bHkodGhpcyksQj1udWxsPT1nP3ZvaWQgMDpnW0FdO3JldHVybiB2b2lkIDAhPT1CP0IuY2FsbChnLEkpOm5ldyBSZWdFeHAoZylbQV0oU3RyaW5nKEkpKX0sZnVuY3Rpb24oQSl7dmFyIEI9SShnLEEsdGhpcyk7aWYoQi5kb25lKXJldHVybiBCLnZhbHVlO3ZhciBRPUR5KEEpLEU9U3RyaW5nKHRoaXMpO2lmKCFRLmdsb2JhbClyZXR1cm4gRnkoUSxFKTt2YXIgQz1RLnVuaWNvZGU7US5sYXN0SW5kZXg9MDtmb3IodmFyIHQsaT1bXSxlPTA7bnVsbCE9PSh0PUZ5KFEsRSkpOyl7dmFyIG89U3RyaW5nKHRbMF0pO2lbZV09bywiIj09PW8mJihRLmxhc3RJbmRleD1keShFLHd5KFEubGFzdEluZGV4KSxDKSksZSsrfXJldHVybiAwPT09ZT9udWxsOml9XX0pKTt2YXIgR3k9e2ZpbmRCb3g6ZnVuY3Rpb24gQShnLEkpe3ZhciBCPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXTpbXTtpZihnLnR5cGUhPT1JKXtpZihnJiZnLnN1YkJveCl7dmFyIFE9Zy5zdWJCb3guZmlsdGVyKChmdW5jdGlvbihBKXtyZXR1cm4gQS50eXBlPT09SX0pKTtRLmxlbmd0aD9RLmZvckVhY2goKGZ1bmN0aW9uKEEpe3JldHVybiBCLnB1c2goQSl9KSk6Zy5zdWJCb3guZm9yRWFjaCgoZnVuY3Rpb24oZyl7cmV0dXJuIEEoZyxJLEIpfSkpfX1lbHNlIEIucHVzaChnKTtyZXR1cm4oQj1oKEIpKS5sZW5ndGg+MT9COkJbMF19LHBhZFN0YXJ0OlJ5LHRvSGV4OmZ1bmN0aW9uKCl7Zm9yKHZhciBBPVtdLGc9YXJndW1lbnRzLmxlbmd0aCxJPW5ldyBBcnJheShnKSxCPTA7QjxnO0IrKylJW0JdPWFyZ3VtZW50c1tCXTtyZXR1cm4gSS5mb3JFYWNoKChmdW5jdGlvbihnKXt2YXIgST1OdW1iZXIoZykudG9TdHJpbmcoMTYpO0EucHVzaChSeShJLDIsMCkpfSkpLEF9LGZyb21IZXg6ZnVuY3Rpb24oQSl7Zm9yKHZhciBnPW5ldyBVaW50OEFycmF5KEEubGVuZ3RoLzIpLEk9MDtJPEEubGVuZ3RoO0krPTIpZ1tJLzJdPXdpbmRvdy5wYXJzZUludChBLnN1YnN0cihJLDIpLDE2KTtyZXR1cm4gZ30sc3VtOmZ1bmN0aW9uKCl7Zm9yKHZhciBBPTAsZz1hcmd1bWVudHMubGVuZ3RoLEk9bmV3IEFycmF5KGcpLEI9MDtCPGc7QisrKUlbQl09YXJndW1lbnRzW0JdO3JldHVybiBJLmZvckVhY2goKGZ1bmN0aW9uKGcpe0ErPWd9KSksQX0sU3RyaW5nVG9BcnJheUJ1ZmZlcjpmdW5jdGlvbihBKXtmb3IodmFyIGc9bmV3IEFycmF5QnVmZmVyKEEubGVuZ3RoKSxJPW5ldyBVaW50OEFycmF5KGcpLEI9MDtCPEEubGVuZ3RoO0IrKylJW0JdPUEuY2hhckNvZGVBdChCKTtyZXR1cm4gZ30sQXJyYXlCdWZmZXJUb1N0cmluZzpmdW5jdGlvbihBKXtmb3IodmFyIGc9IiIsST1uZXcgVWludDhBcnJheShBKSxCPTA7QjxJLmxlbmd0aDtCKyspZys9U3RyaW5nLmZyb21DaGFyQ29kZShJW0JdKTtyZXR1cm4gZ30sZnJvbUNoYXJDb2RlOlV5LEJhc2U2NFRvSGV4OmZ1bmN0aW9uKEEpe2Zvcih2YXIgZz13aW5kb3cuYXRvYihBLnJlcGxhY2UoLy0vZywiKyIpLnJlcGxhY2UoL18vZywiLyIpKSxJPSIiLEI9MDtCPGcubGVuZ3RoO0IrKylJKz0iMCIuY29uY2F0KGcuY2hhckNvZGVBdChCKS50b1N0cmluZygxNikpLnN1YnN0cigtMik7cmV0dXJuIEl9LHRvQmFzZTY0OmZ1bmN0aW9uKEEsZyl7dmFyIEk9VXkoQSk7Zz12b2lkIDA9PT1nfHxnO3ZhciBCPXdpbmRvdy5idG9hKEkpLnJlcGxhY2UoL1wrL2csIi0iKS5yZXBsYWNlKC9cLy9nLCJfIik7cmV0dXJuIGc/QjpCLnJlcGxhY2UoLz0qJC8sIiIpfSx0b1VURjg6ZnVuY3Rpb24oQSl7Zm9yKHZhciBnPWVuY29kZVVSSUNvbXBvbmVudChBKSxJPXVuZXNjYXBlKGcpLEI9bmV3IFVpbnQ4QXJyYXkoSS5sZW5ndGgpLFE9MDtRPEkubGVuZ3RoOysrUSlCW1FdPUkuY2hhckNvZGVBdChRKTtyZXR1cm4gQi5idWZmZXJ9LHN0clRvQnVmOmZ1bmN0aW9uKEEpe2Zvcih2YXIgZz1bXSxJPTA7STxBLmxlbmd0aDtJKz0yKWcucHVzaChwYXJzZUludChBW0ldK0FbSSsxXSwxNikpO3JldHVybiBuZXcgVWludDhBcnJheShnKX0sc3RyMmhleDpmdW5jdGlvbihBKXtpZigiIj09PUEpcmV0dXJuIiI7Zm9yKHZhciBnPVtdLEk9MDtJPEEubGVuZ3RoO0krKylnLnB1c2goQS5jaGFyQ29kZUF0KEkpKTtyZXR1cm4gZ30sZm9ybWF0SVY6ZnVuY3Rpb24oQSl7aWYoQS5sZW5ndGg+PTE2KXJldHVybiBBO2Zvcih2YXIgZz1uZXcgVWludDhBcnJheSgxNiksST0wO0k8Zy5sZW5ndGg7SSsrKWdbSV09STxBLmxlbmd0aD9BW0ldOjA7cmV0dXJuIGd9LHBhcnNlOmZ1bmN0aW9uKEEpe2lmKCFBcnJheS5pc0FycmF5KEEpKXtmb3IodmFyIGc9W10sST0iIixCPTA7QjxBLmxlbmd0aDtCKyspQiUyJiYoST1BW0ItMV0rQVtCXSxnLnB1c2gocGFyc2VJbnQoSSwxNikpLEk9IiIpO3JldHVybiBnfXJldHVybiBBLm1hcCgoZnVuY3Rpb24oQSl7cmV0dXJuIHBhcnNlSW50KEEsMTYpfSkpfSxnZW5lcmF0ZVVuaXF1ZUtleTpmdW5jdGlvbihBKXt2YXIgZz1BLnZpZCxJPUEubWVkaWFUeXBlLEI9QS5kZWZpbml0aW9uO2lmKEk9SXx8InZpZGVvIixCPUJ8fC0xLCFnKXJldHVybiBudWxsO3JldHVybiIiLmNvbmNhdChnLCIjIikuY29uY2F0KEksIiMiKS5jb25jYXQoQiwiI21wNCIpfSx2YWxpZGF0ZUZyYWdtZW50OmZ1bmN0aW9uKEEpe3ZhciBnPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTpbXTtpZihBIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpe3RyeXtpZigyPT09Zy5sZW5ndGgpe3ZhciBJPWdbMV0tZ1swXSsxO2lmKCEoQS5ieXRlTGVuZ3RoPT09SSkpcmV0dXJufX1jYXRjaChCKXtyZXR1cm4gY29uc29sZS5lcnJvcihCKSwhMX1yZXR1cm4hMH1yZXR1cm4hMX0sdHlwZU9mOmt5LG5vd1RpbWU6ZnVuY3Rpb24oKXt0cnl7cmV0dXJuIHBhcnNlSW50KCIiLmNvbmNhdChwZXJmb3JtYW5jZS5ub3coKSksMTApfWNhdGNoKEEpe3JldHVybihuZXcgRGF0ZSkuZ2V0VGltZSgpfX0sZXh0VXJsOmZ1bmN0aW9uKEEsZyl7dHJ5e2lmKCFnfHxBLnN0YXJ0c1dpdGgoImJsb2IiKSlyZXR1cm4gQTt2YXIgST1BLmluZGV4T2YoIj8iKSxCPUk8MCxRPUk9PT1BLmxlbmd0aC0xLEU9IiI7cmV0dXJuIE9iamVjdC5rZXlzKGcpLmZvckVhY2goKGZ1bmN0aW9uKEEpe3ZhciBJPWdbQV07bnVsbCE9SSYmIiIhPT1JJiYoRSs9IiIuY29uY2F0KEU/IiYiOiIiKS5jb25jYXQoQSwiPSIpLmNvbmNhdChnW0FdKSl9KSksQSs9KEI/Ij8iOlE/IiI6IiYiKStFfWNhdGNoKEMpe3JldHVybiBBfX0sZGVlcE1lcmdlOmZ1bmN0aW9uIEEoZyxJKXtyZXR1cm4gT2JqZWN0LmtleXMoSSkuZm9yRWFjaCgoZnVuY3Rpb24oQil7dmFyIFEsRT1reShJW0JdKSxDPWt5KGdbQl0pOyJBcnJheSI9PT1FPygiQXJyYXkiIT09QyYmKGdbQl09W10pLChRPWdbQl0pLnB1c2guYXBwbHkoUSxoKElbQl0pKSk6Ik9iamVjdCI9PT1FPygiT2JqZWN0IiE9PUMmJihnW0JdPXt9KSxBKGdbQl0sSVtCXSkpOmdbQl09SVtCXX0pKSxnfSxnZXRGaWxlU2l6ZTpmdW5jdGlvbihBLGcpe3RyeXtyZXR1cm4gQSYmZz9wYXJzZUludCgiIi5jb25jYXQoZypBLzgpLDEwKTowfWNhdGNoKEkpe3JldHVybiAwfX0saGFzaFZhbDpmdW5jdGlvbihBKXt2YXIgZyxJPTA7aWYoMD09PUEubGVuZ3RoKXJldHVybiBJO2ZvcihnPTA7ZzxBLmxlbmd0aDtnKyspST0oSTw8NSktSStBLmNoYXJDb2RlQXQoZyksSXw9MDtyZXR1cm4gSX0sQXJyYXlDb3B5OmZ1bmN0aW9uKEEpe3ZhciBnPVtdO2lmKCFBfHwhQS5sZW5ndGh8fDA9PT1BLmxlbmd0aClyZXR1cm4gZztmb3IodmFyIEk9MDtJPEEubGVuZ3RoO0krKyl7dmFyIEI9QVtJXSxRPXt9O2Zvcih2YXIgRSBpbiBCKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChCLEUpJiYoUVtFXT1CW0VdKTtnLnB1c2goUSl9cmV0dXJuIGd9LGNvbmNhdERhdGE6ZnVuY3Rpb24oQSxnKXt2YXIgST1bXSxCPTA7QSYmSS5wdXNoKEEpO2cmJkkucHVzaChnKTtJLmV2ZXJ5KChmdW5jdGlvbihBKXtyZXR1cm4gQSYmKEIrPUEuYnl0ZUxlbmd0aCksITB9KSk7dmFyIFE9bmV3IFVpbnQ4QXJyYXkoQiksRT0wO3JldHVybiBJLmV2ZXJ5KChmdW5jdGlvbihBKXtyZXR1cm4gQSYmKFEuc2V0KEEsRSksRSs9QS5ieXRlTGVuZ3RoKSwhMH0pKSxRfSxnZXRGcmFnUmFuZ2U6ZnVuY3Rpb24oQSxnLEkpe3ZhciBCLFEsRSxDLHQ9bnVsbCxpPW51bGw7dD1BPGcubGVuZ3RoLTE/Z1tBXTpnW2cubGVuZ3RoLTFdO2k9QTxJLmxlbmd0aC0xP0lbQV06SVtJLmxlbmd0aC0xXTtyZXR1cm5bTWF0aC5taW4oKG51bGw9PT0oQj10KXx8dm9pZCAwPT09Qj92b2lkIDA6Qi5yYW5nZVswXSl8fDEvMCwobnVsbD09PShRPWkpfHx2b2lkIDA9PT1RP3ZvaWQgMDpRLnJhbmdlWzBdKXx8MS8wKSxNYXRoLm1heChudWxsPT09KEU9dCl8fHZvaWQgMD09PUU/dm9pZCAwOkUucmFuZ2VbMV0sbnVsbD09PShDPWkpfHx2b2lkIDA9PT1DP3ZvaWQgMDpDLnJhbmdlWzFdKV19LGdldEhvc3RGcm9tVXJsOmZ1bmN0aW9uKEEpe2lmKCJTdHJpbmciIT09a3koQSl8fCFBKXJldHVybiIiO3ZhciBnPUEuc3BsaXQoIi8iKSxJPSIiO2cubGVuZ3RoPjMmJmdbMl0mJihJPWdbMl0pO3JldHVybiBJfSxuZXdVaW50OEFycmF5OmZ1bmN0aW9uKEEpe3ZhciBnLEk9MDtmb3IoO0k8MTA7KXRyeXtpZigoZz1uZXcgVWludDhBcnJheShBKSkmJmcuYnl0ZUxlbmd0aD4wKWJyZWFrO0krK31jYXRjaChCKXtJPDEwP0krKzpjb25zb2xlLmVycm9yKCJyZXBlYXQgZGF0YSBjYWNoZSAgbmV3IGFycmF5IGZhaWxlZCBmaW5hbCIsMTApfXJldHVybiBnfSxjaGVja1VybElzRXhwaXJlZDpmdW5jdGlvbihBKXt2YXIgZz1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06MDtpZighQXx8IlN0cmluZyIhPT1reShBKSlyZXR1cm4gMDt2YXIgST0wO3RyeXt2YXIgQj1uZXcgUmVnRXhwKCIoXFw/fCYpeC10b3MtZXhwaXJlcz0oW14mXSopKCZ8JCkiKSxRPUEubWF0Y2goQik7aWYobnVsbCE9PVEpST1wYXJzZUludChRWzJdLDEwKTtlbHNle3ZhciBFPUEuc3BsaXQoIi8iKTtFLmxlbmd0aD41JiY4PT09RVs0XS5sZW5ndGgmJihJPXBhcnNlSW50KEVbNF0sMTYpKX1yZXR1cm4gST4wP0k8cGFyc2VJbnQoIiIuY29uY2F0KGcmJiJudW1iZXIiPT10eXBlb2YgZz8obmV3IERhdGUpLmdldFRpbWUoKS8xZTMrZzoobmV3IERhdGUpLmdldFRpbWUoKS8xZTMpLDEwKT8xOjI6MH1jYXRjaChDKXtyZXR1cm4gMH19LGdldEJ1ZmZlclNwbGl0czpmdW5jdGlvbihBLGcpe3ZhciBJPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXTo1ZTU7aWYoZy1BLUk8SS8yfHwhZylyZXR1cm5bW0EsZ11dO3ZhciBCPVtdO2Zvcig7QTxnOyl7dmFyIFE9QStJOyhRPmd8fGctUTxJLzIpJiYoUT1nKSxCLnB1c2goW0EsUV0pLEE9USsxfXJldHVybiBCfSxnZXRGaXJzdEZyYW1lU3RhcnRSYW5nZTpmdW5jdGlvbihBLGcpe3ZhciBJLEIsUT1OdW1iZXIuTUFYX1ZBTFVFLEU9TnVtYmVyLk1BWF9WQUxVRTtBJiYoUT0obnVsbD09PShJPUFbMF0pfHx2b2lkIDA9PT1JfHxudWxsPT09KEk9SS5yYW5nZSl8fHZvaWQgMD09PUk/dm9pZCAwOklbMF0pfHxOdW1iZXIuTUFYX1ZBTFVFKTtnJiYoRT0obnVsbD09PShCPWdbMF0pfHx2b2lkIDA9PT1CfHxudWxsPT09KEI9Qi5yYW5nZSl8fHZvaWQgMD09PUI/dm9pZCAwOkJbMF0pfHxOdW1iZXIuTUFYX1ZBTFVFKTtyZXR1cm4gTWF0aC5taW4oUSxFKX0sZ2V0RW5kRnJhbWVQb3M6ZnVuY3Rpb24oQSxnKXt2YXIgSSxCLFE9MCxFPTA7QSYmKFE9KG51bGw9PT0oST1BW0EubGVuZ3RoLTFdKXx8dm9pZCAwPT09SXx8bnVsbD09PShJPUkucmFuZ2UpfHx2b2lkIDA9PT1JP3ZvaWQgMDpJWzFdKXx8MCk7ZyYmKEU9KG51bGw9PT0oQj1nW2cubGVuZ3RoLTFdKXx8dm9pZCAwPT09Qnx8bnVsbD09PShCPUIucmFuZ2UpfHx2b2lkIDA9PT1CP3ZvaWQgMDpCWzFdKXx8MCk7cmV0dXJuIE1hdGgubWF4KFEsRSl9fTtmdW5jdGlvbiBSeShBLGcsSSl7Zm9yKHZhciBCPVN0cmluZyhJKSxRPWd8MCxFPU1hdGguY2VpbChRL0IubGVuZ3RoKSxDPVtdLHQ9U3RyaW5nKEEpO0UtLTspQy5wdXNoKEIpO3JldHVybiBDLmpvaW4oIiIpLnN1YnN0cmluZygwLFEtdC5sZW5ndGgpK3R9ZnVuY3Rpb24gVXkoQSl7Zm9yKHZhciBnPSIiLEk9MDtJPEEubGVuZ3RoO0krPTE2ZTMpe3ZhciBCPUEuc3ViYXJyYXkoSSxJKzE2ZTMpO2crPVN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkobnVsbCxCKX1yZXR1cm4gZ31mdW5jdGlvbiBreShBKXtyZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKEEpLm1hdGNoKC8oW15ccy4qXSspKD89XSQpL2cpWzBdfW9ubWVzc2FnZT1mdW5jdGlvbigpe3ZhciBBLEk9KEE9YSgpLm1hcmsoKGZ1bmN0aW9uIEEoZyl7dmFyIEksQixRLEUsQyx0LGksZSxvLHIscyxjLGgsZix5LHUsRCx3LGwsZCxGLEcsUixVLGssUyxwLE4sTSxZPXRoaXM7cmV0dXJuIGEoKS53cmFwKChmdW5jdGlvbihBKXtmb3IoOzspc3dpdGNoKEEucHJldj1BLm5leHQpe2Nhc2UgMDpJPWcuZGF0YSxBLnQwPUkubWV0aG9kLEEubmV4dD0iaW5pdCI9PT1BLnQwPzQ6InVwZGF0ZVZhbHVlIj09PUEudDA/MTM6InRyYW5zbXV4Ij09PUEudDA/MTg6InJlc2V0Ij09PUEudDA/NDQ6ImRlc3Ryb3kiPT09QS50MD81MDo1MjticmVhaztjYXNlIDQ6cmV0dXJuIHRoaXMuY29kZWNUeXBlPUkuYXJncy5jb2RlY1R5cGUsdGhpcy5vcGVuTG9nPUkuYXJncy5vcGVuTG9nLHRoaXMuTVA0RGVtdXhlcj1udWxsLHRoaXMuRk1QNFJlbXV4ZXI9bnVsbCx0aGlzLl9uZWVkSW5pdFNlZ21lbnQ9ITAsdGhpcy5zdXBwb3J0SGV2Yz1JLmFyZ3Muc3VwcG9ydEhldmMsdGhpcy5tZW1vcnlPcHQ9SS5hcmdzLm1lbW9yeU9wdCx0aGlzLmF3TWFuYWdlcj1udWxsLEEuYWJydXB0KCJicmVhayIsNTIpO2Nhc2UgMTM6cmV0dXJuIFE9bnVsbD09PShCPWcuZGF0YSl8fHZvaWQgMD09PUJ8fG51bGw9PT0oQj1CLmFyZ3MpfHx2b2lkIDA9PT1CP3ZvaWQgMDpCLnZhbHVlLHRoaXMuYXdNYW5hZ2VyPW5ldyBFaCxzZWxmLnA9dGhpcy5hd01hbmFnZXIuaW5pdCgpLHNlbGYucC50aGVuKChmdW5jdGlvbigpe1kuYXdNYW5hZ2VyLmRlc2NyeXB0S2V5KFEuc2VjcmV0S2V5LFEuZGVjcnlwdEtleSl9KSksQS5hYnJ1cHQoImJyZWFrIiw1Mik7Y2FzZSAxODpyZXR1cm4gRT1nLmRhdGEuYXJncyxDPW5ldyBVaW50OEFycmF5KGcuZGF0YS5idWZmZXIpLHQ9dGhpcy5vcGVuTG9nLGk9dGhpcy5tZW1vcnlPcHQsdGhpcy5NUDREZW11eGVyfHwodGhpcy5NUDREZW11eGVyPW5ldyBjeShFLnZpZGVvVHJhayxFLmF1ZGlvVHJhayxudWxsLHtvcGVuTG9nOnQsbWVtb3J5T3B0Oml9KSksRS5sYXN0VW5NdXhEYXRhJiZ0aGlzLk1QNERlbXV4ZXIuc2V0TGFzdFJlbWFpbkJ1ZmZlckluZm8oRS5sYXN0VW5NdXhEYXRhLEUucG9zKSxBLm5leHQ9MjUsc2VsZi5wO2Nhc2UgMjU6cmV0dXJuIGU9dGhpcy5NUDREZW11eGVyLmRlbXV4UGFydChDLEUuc3RhcnQsRS52aWRlb0lkeCxFLmF1ZGlvSWR4LEUubW9vdixFLnVzZUVNRSxFLmtpZFZhbHVlLChmdW5jdGlvbihBLGcsSSl7dmFyIEI9R3kuZm9ybWF0SVYoSSk7cmV0dXJuIFkuYXdNYW5hZ2VyLmRlc2NyeXB0KEEsQil9KSksdGhpcy5GTVA0UmVtdXhlcnx8ImgyNjUiPT09dGhpcy5jb2RlY1R5cGUmJiF0aGlzLnN1cHBvcnRIZXZjfHwodGhpcy5GTVA0UmVtdXhlcj1uZXcgSWYodGhpcy5NUDREZW11eGVyLnZpZGVvVHJhY2ssdGhpcy5NUDREZW11eGVyLmF1ZGlvVHJhY2sse29wZW5Mb2c6dGhpcy5vcGVuTG9nfSkpLG89ZS52aWRlb1RyYWNrLHI9ZS5hdWRpb1RyYWNrLHM9ZS5sYXN0UmVtYWluQnVmZmVySW5mbyxjPW51bGw9PW8/dm9pZCAwOm8uc2FtcGxlcyxoPShudWxsPT1jP3ZvaWQgMDpjLmxlbmd0aCk+MD9jWzBdLnNhbXBsZU9mZnNldDotMSxmPShudWxsPT1jP3ZvaWQgMDpjLmxlbmd0aCk+MD9jW2MubGVuZ3RoLTFdLnNhbXBsZU9mZnNldDotMSx5PW51bGw9PXI/dm9pZCAwOnIuc2FtcGxlcyx1PShudWxsPT15P3ZvaWQgMDp5Lmxlbmd0aCk+MD95WzBdLnNhbXBsZU9mZnNldDotMSxEPShudWxsPT15P3ZvaWQgMDp5Lmxlbmd0aCk+MD95W3kubGVuZ3RoLTFdLnNhbXBsZU9mZnNldDotMSx3PUUuY29udGV4dC5zdGF0ZS5zdGF0ZSxsPS0xLGQ9LTEsRj0tMSxHPS0xLCh3fHwobnVsbD09Yz92b2lkIDA6Yy5sZW5ndGgpPjApJiYobD1udWxsPT1lfHxudWxsPT09KFI9ZS52aWRlb1RyYWNrKXx8dm9pZCAwPT09Uj92b2lkIDA6Ui5zdGFydFB0cyxkPW51bGw9PWV8fG51bGw9PT0oVT1lLnZpZGVvVHJhY2spfHx2b2lkIDA9PT1VP3ZvaWQgMDpVLmVuZFB0cyksKHd8fChudWxsPT15P3ZvaWQgMDp5Lmxlbmd0aCk+MCkmJihGPW51bGw9PWV8fG51bGw9PT0oaz1lLmF1ZGlvVHJhY2spfHx2b2lkIDA9PT1rP3ZvaWQgMDprLnN0YXJ0UHRzLEc9bnVsbD09ZXx8bnVsbD09PShTPWUuYXVkaW9UcmFjayl8fHZvaWQgMD09PVM/dm9pZCAwOlMuZW5kUHRzKSx0aGlzLkZNUDRSZW11eGVyJiYoKE49dGhpcy5GTVA0UmVtdXhlci5yZW11eCh0aGlzLl9uZWVkSW5pdFNlZ21lbnQse2luaXRNZXJnZTohMH0pKS5pbml0U2VnbWVudCYmKHRoaXMuX25lZWRJbml0U2VnbWVudD0hMSksTT1HeS5jb25jYXREYXRhKE4uYXVkaW9TZWdtZW50LE4udmlkZW9TZWdtZW50KSxwPXtidWZmZXI6TSxyYW5nZTpFLmNvbnRleHQucmFuZ2Usc3RhdGU6RS5jb250ZXh0LnN0YXRlLGNvbnRleHQ6e3JhbmdlOkUuY29udGV4dC5yYW5nZSxmcmFnSW5kZXg6RS5jb250ZXh0LmZyYWdJbmRleCx2UHRzUmFuZ2U6W2wsZF0sYVB0c1JhbmdlOltGLEddLHZpZGVvU2FtcGxlSWR4UmFuZ2U6W2gsZl0sYXVkaW9TYW1wbGVJZHhSYW5nZTpbdSxEXX0saW5pdFNlZzpOLmluaXRTZWdtZW50LGxhc3RSZW1haW5CdWZmZXJJbmZvOnN9KSxwb3N0TWVzc2FnZSh7bWV0aG9kOiJ0cmFuc211eCIsaWQ6Zy5kYXRhLmlkLGFyZ3M6bih7fSxwKX0scC5pbml0U2VnP1twLmJ1ZmZlci5idWZmZXIscC5pbml0U2VnLmJ1ZmZlcl06W3AuYnVmZmVyLmJ1ZmZlcl0pLEEuYWJydXB0KCJicmVhayIsNTIpO2Nhc2UgNDQ6cmV0dXJuIHRoaXMuRk1QNFJlbXV4ZXImJnRoaXMuRk1QNFJlbXV4ZXIucmVzZXQoKSx0aGlzLk1QNERlbXV4ZXImJnRoaXMuTVA0RGVtdXhlci5yZXNldCgpLHRoaXMuRk1QNFJlbXV4ZXI9bnVsbCx0aGlzLk1QNERlbXV4ZXI9bnVsbCx0aGlzLl9uZWVkSW5pdFNlZ21lbnQ9ITAsQS5hYnJ1cHQoImJyZWFrIiw1Mik7Y2FzZSA1MDpyZXR1cm4gdGhpcy5hd01hbmFnZXImJih0aGlzLmF3TWFuYWdlci5kZXN0cm95KCksdGhpcy5hd01hbmFnZXI9bnVsbCksQS5hYnJ1cHQoImJyZWFrIiw1Mik7Y2FzZSA1MjpjYXNlImVuZCI6cmV0dXJuIEEuc3RvcCgpfX0pLEEsdGhpcyl9KSksZnVuY3Rpb24oKXt2YXIgST10aGlzLEI9YXJndW1lbnRzO3JldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24oUSxFKXt2YXIgQz1BLmFwcGx5KEksQik7ZnVuY3Rpb24gdChBKXtnKEMsUSxFLHQsaSwibmV4dCIsQSl9ZnVuY3Rpb24gaShBKXtnKEMsUSxFLHQsaSwidGhyb3ciLEEpfXQodm9pZCAwKX0pKX0pO3JldHVybiBmdW5jdGlvbihBKXtyZXR1cm4gSS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fSgpfSgpOwo=",yU="undefined"!=typeof window&&window.Blob&&new Blob([atob(fU)],{type:"text/javascript;charset=utf-8"});function kU(){var e;try{if(!(e=yU&&(window.URL||window.webkitURL).createObjectURL(yU)))throw"";return new Worker(e)}catch(t){return new Worker("data:application/javascript;base64,"+fU)}finally{!("undefined"!=typeof window&&navigator.userAgent.indexOf("Trident/")>0)&&e&&(window.URL||window.webkitlRL).revokeObjectURL(e)}}var EU=function(e){function t(){var e,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};b(this,t),(e=E(this,t)).options=n,e.worker=new kU,e.worker.onmessage=function(t){e.emit(t.data.method,t.data)};var i=e.options,r=i.memoryOpt,a=i.openLog,l=i.supportHevc,U=i.codecType;return e.worker.postMessage({method:"init",id:n.id||0,args:{memoryOpt:r,openLog:a,supportHevc:l,codecType:U}}),e}return x(t,e),N(t,[{key:"updateValue",value:function(e){var t,n;null===(t=this.worker)||void 0===t||t.postMessage({method:"updateValue",id:(null===(n=this.options)||void 0===n?void 0:n.id)||0,args:{value:e}})}},{key:"transmux",value:function(e,t,n,i,r,a,l,U,F,o,d,Q,s){var c,u=t.buffer;null===(c=this.worker)||void 0===c||c.postMessage({method:"transmux",id:e,buffer:u,args:{start:n,videoIdx:i,audioIdx:r,moov:a,useEME:l,kidValue:U,context:F,videoTrak:o,audioTrak:d,lastUnMuxData:Q,pos:s}},Q?[u,Q.buffer]:[u])}},{key:"reset",value:function(){this.worker&&this.worker.postMessage({method:"reset"})}},{key:"destroy",value:function(){this.worker&&this.worker.postMessage({method:"destroy"}),this.worker&&this.worker.terminate()}}])}(it),bU="error",vU="metaReady",NU="meta_request_done",gU="moov_request_progress",TU="progress_event",CU="update_eme",LU="init_mse",xU="change_url",XU="update_load_fragmentIdx",DU="remove_pcdn_node",GU="load_error",IU="cancel_loaded_len",MU="cdn",YU="pcdn",wU="close",KU="open",_U="forbidden",PU={},jU=function(e){function t(e,n,i,r){var a,l;return b(this,t),T(l=E(this,t),"markErrHost",(function(e){e&&(PU[e]=!0,l.log(_t.WARN,"[mp4loader markErrHost]",e))})),T(l,"onprogressDataArrive",function(){var e=k(M().mark((function e(t,n,i,r){var a,U,F,o,d,Q,s,c,u;return M().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(F=null===(a=i.priOptions)||void 0===a?void 0:a.range,o=(null===(U=i.priOptions)||void 0===U?void 0:U.type)||MU,l.checkResPonse(r,i.priOptions)){e.next=7;break}return e.next=6,l.notVailRangeResError(r,i.priOptions,i.index);case 6:return e.abrupt("return");case 7:if(d=t&&t.byteLength>0,l.log(_t.LOG,"[DataArrive] rev data","index: ".concat(i.index,", range: ").concat(JSON.stringify(i.range),", dataLen: ").concat(null==t?void 0:t.byteLength),"loadType: ".concat(o,", state: ").concat(n)),!n){e.next=29;break}if(l._optionDataLenInfo[o]=0,!((null==F?void 0:F.length)>=0&&(!Number(F[1])||Number(F[1])&&(null==i?void 0:i.range[1])===F[1]+1))){e.next=17;break}l.adaptTimeRange[i.index].downloaded=!0,l.log(_t.LOG,"[FragLoadDowned],fragmentIdx,",i.index,",rangeEnd,",i.range[1]),e.next=29;break;case 17:return Q=JU(r.headers),e.next=20,l.cancelLoading();case 20:if(s=o===MU?l.url:l._pcdnNodeList[0].url,c=VU.getHostFromUrl(s),l.emit(GU,{src:s,host:c,errorCode:gi.lenNotMatch,message:ki,range:JSON.stringify(F),headers:Q}),u=[null==i?void 0:i.range[1],F[1]],l.log(_t.LOG,"".concat(ki),"fragmentIdx: ".concat(i.index),"rangeEnd: ".concat(i.range[1],", ").concat(JSON.stringify(F)),"headers: ".concat(JSON.stringify(Q),", url: ").concat(s,", ").concat(null==r?void 0:r.url),"retryRange: ".concat(JSON.stringify(u))),!((null==i?void 0:i.range[1])<F[1]+1)){e.next=29;break}return l.startMux(t,o,i,n),e.next=29,l.loadAllFragmentData(l._curLoadSegIdx,l._loadSuccessCallBack,null,!1,u);case 29:d&&l.startMux(t,o,i,n);case 30:case"end":return e.stop()}}),e)})));return function(t,n,i,r){return e.apply(this,arguments)}}()),r=r||[],l.updateUrl(e,r||[]),l._bitRate=n||0,l.options=t.getDefaultConfig(),Object.keys(i).map((function(e){void 0!==i[e]&&null!==i[e]&&(l.options[e]=i[e])})),l.logger=i.logger,l.timeRange=[],l.adaptTimeRange=[],l.fileSize=null==i?void 0:i.fileSize,l.CHUNK_SIZE=(null===(a=l.options)||void 0===a?void 0:a.firstLoadSize)||dU(i.duration,l.options.chunkSize,l.fileSize),l._firstLoadSize=l.CHUNK_SIZE,l.log(_t.LOG,"[getFirstLoadSize], firstLoadSize ".concat(l._firstLoadSize),"dur ".concat(i.duration,", chunkSize ").concat(l.CHUNK_SIZE,",fileSize ").concat(l.fileSize)),l.repeatInfo={startPos:-1,curDataPos:0,usedPos:0,data:VU.newUint8Array(1048576)},l.meta=null,l.preloadCache=null,l.videoTrak=null,l.audioTrak=null,l._loadSuccessCallBack=null,l._isPending=!1,l.metaLoading=!1,l.MP4Loader=new FU(G(G({url:e,vid:"".concat(i.vid,"-").concat(n),retry:i.retryCount,retryDelay:i.retryDelay,timeout:i.timeout,segmentDuration:i.segmentDuration,audioGroupingStrategy:i.audioGroupingStrategy,fixEditListOffset:i.fixEditListOffset,fixEditListOffsetThreshold:i.fixEditListOffsetThreshold},i.reqOptions),{},{memoryOpt:i.memoryOpt,loaderType:i.loaderType,retryCheckFunc:i.loadRangeType===Ri.SIZE?BU:RU,openLog:ni,processMaxGapTime:i.processMaxGapTime})),l.MP4Demuxer=null,l.FMP4Remuxer=null,l._needInitSegment=!0,l._bitRateInfoMap=new Map,l._switchBitRate=!1,l._segmentToBitRateMap=new Map,l.useEME=!1,l.secretKey=null,l.decryptKey=null,l.keyValue=null,l.initTransMuxWorker(),l.seekTime=-1,l.changeBitRateTime=-1,l._PCDNState=wU,l._pcdnNodeList=[],l.loadInfo={},l.pcdnTraceInfo=null,l._loadedDataState=!1,l._PCDNSwitchCnt=0,l._isUseCDN=!0,l._curLoadSegIdx=0,l._receiveDataPos=-1,l._optionDataLenInfo={},l._lastPCDNUrl="",l.lastTargetDur=0,l.pcdnVVStat=l.resetPcdnVVStat(),l.pSCCancelCnt=0,l.lastDemuxSampleIdxRange={video:-1,audio:-1},l._mediaEndTime=-1,l.lastMuxRemainBufferInfo=null,l}return x(t,e),N(t,[{key:"size",get:function(){return this.fileSize}},{key:"bufferTimeFuncCallBack",set:function(e){this.getbufferTimeFunc=e}},{key:"fillFirSeg",set:function(e){this.fillFirstSegment=e}},{key:"setLastMuxRemainBufferInfo",value:function(e,t){this.lastMuxRemainBufferInfo={data:e,pos:t}}},{key:"initTransMuxWorker",value:function(){var e=this,t=this.options;if(this.enableWorker=t.enableWorker&&("h265"!==t.codecType||t.supportHevc),this.enableWorker&&"undefined"!=typeof Worker){try{this.workerSequence=0,this.transmuxerWorkerControl=new EU({id:this.workerSequence,codecType:t.codecType,supportHevc:this.options.supportHevc,openLog:ni,memoryOpt:t.memoryOpt}),this.transmuxerWorkerControl.on("transmux",(function(t){var n=t.args,i=n.context;e.log(_t.LOG,"[transmuxerWorker end], range: ".concat(JSON.stringify(n.range)),"dataLen: ".concat(n.buffer.byteLength),JSON.stringify(n.context)),e.updateDemuxSampleIdxRange(null==i?void 0:i.videoSampleIdxRange,null==i?void 0:i.audioSampleIdxRange),e._loadSuccessCallBack&&e._loadSuccessCallBack(n)}))}catch(n){this.log(_t.ERROR,"Error in worker:",n),this.enableWorker=!1,this.transmuxerWorkerControl=null}this.enableWorker||(this.MP4Demuxer=null,this.FMP4Remuxer=null)}}},{key:"updateSecretKey",value:function(e,t,n,i){var r;this.useEME=e,!e&&t?(this.log(_t.LOG,"[updateSecretKey] ,force enableWorker"),this.options.enableWorker=!0,this.transmuxerWorkerControl||this.initTransMuxWorker()):!e&&i&&(this.keyValue=i),this.log(_t.LOG,"[updateSecretKey] ,useEME, ",e,",secretKey,",t,",decryptKey",n),null===(r=this.transmuxerWorkerControl)||void 0===r||r.updateValue({secretKey:t,decryptKey:n})}},{key:"updateLoadedDataDone",value:function(){this._loadedDataState=!0}},{key:"PCDNSwitchCnt",get:function(){return this._PCDNSwitchCnt}},{key:"updateLoadInfo",value:function(e,t){this.loadInfo||(this.loadInfo={}),this.loadInfo[e]||(this.loadInfo[e]={},this.loadInfo[e].loadLen=0),this.loadInfo[e].loadLen+=t}},{key:"updatePCDNState",value:(u=k(M().mark((function e(t){var n,i,r;return M().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this._PCDNState!==_U&&this._PCDNState!==t&&this.log(_t.LOG,"[pcdn state update]",this._PCDNState," - ",t),t!==_U){e.next=5;break}this._PCDNState=t,e.next=25;break;case 5:if(this._PCDNState===_U||this._PCDNState===t){e.next=25;break}if(this._isUseCDN||t!==wU){e.next=23;break}if(this._PCDNState=t,!this.adaptTimeRange[this._curLoadSegIdx].downloaded&&!this._switchBitRate){e.next=11;break}return this.log(_t.LOG,"[pcdn] switch cdn ",this._curLoadSegIdx,"downloaded",",switchBitRate, ",this._switchBitRate),e.abrupt("return");case 11:return e.next=13,this.cancelLoading();case 13:return this.pSCCancelCnt++,n=this._curLoadSegIdx,this.log(_t.LOG,"[pcdn] cancelLoading ",n,"switch cdn load"),i=this.getFragRange(n),this._receiveDataPos&&this._receiveDataPos>=i[0]&&this._receiveDataPos<=i[1]&&(r=[this._receiveDataPos,i[1]],this.log(_t.LOG,"[pcdn] switch cdn, adjust range",n,JSON.stringify(r),",oldRange,","".concat(i[0]," - ").concat(i[1]))),this._receiveDataPos=-1,e.next=21,this.startLoad(r||i,n);case 21:e.next=24;break;case 23:this._PCDNState=t;case 24:this.log(_t.LOG,"[pcdn] openPCDN ",t);case 25:case"end":return e.stop()}}),e,this)}))),function(e){return u.apply(this,arguments)})},{key:"updateNode",value:function(e){if(e&&e.length>0){var t=e.filter((function(e){if(!Object.prototype.hasOwnProperty.call(PU,VU.getHostFromUrl(null==e?void 0:e.url)))return e}));this._pcdnNodeList=t}}},{key:"clearPCDNNodeList",value:function(){this.log(_t.LOG,"[pcdn] clearPCDNNodeList"),this._pcdnNodeList=[]}},{key:"isUpdateNode",get:function(){return!this._pcdnNodeList||!this._pcdnNodeList.length}},{key:"isUsePCDN",value:function(){var e;return this._PCDNState===KU&&(null===(e=this._pcdnNodeList)||void 0===e?void 0:e.length)>0}},{key:"readyToChangeBitrate",value:function(e){this._switchBitRate=!0,this.changeBitrateInfo=e}},{key:"changeBitRate",value:(c=k(M().mark((function e(){var t;return M().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if((t=this.changeBitrateInfo).bitrate===this._bitRate){e.next=11;break}return this.updateUrl(t._mainURL,t._backupURL),this._bitRate=t.bitrate,this._receiveDataPos=-1,e.next=7,this.MP4Loader.changeUrl(this.url,"".concat(this.options.vid,"-").concat(this._bitRate),this.CHUNK_SIZE);case 7:this._pcdnNodeList=null,this.emit(xU,this.url),this._mediaEndTime=-1,this.log(_t.LOG,"[switchBitrate] changeUrl, bitRate,",this._bitRate,"url",this.url);case 11:case"end":return e.stop()}}),e,this)}))),function(){return c.apply(this,arguments)})},{key:"_getByPreload",value:function(e,t,n,i){try{if(e&&e.byteLength>=t){var r={endTime:(new Date).getTime(),startTime:(new Date).getTime(),index:i,range:[],vid:this.options.vid,from:"local"};if(n<=e.byteLength){var a=e.slice(t,n);return r.range=[t,n],r.state=!0,{buffer:a,context:r,state:!0}}var l=e.byteLength-1,U=e.slice(t,l);return r.range=[t,l],{context:r,buffer:U,state:!1}}return null}catch(F){return console.error("[MP4] _getByPreload",t,n,F),null}}},{key:"log",value:function(e,t){for(var n=this.options,i=n&&n.vid?"[MP4]".concat(this.logTag," ").concat(n.vid," ").concat(t):"[MP4]".concat(this.logTag," ").concat(t),r=arguments.length,a=new Array(r>2?r-2:0),l=2;l<r;l++)a[l-2]=arguments[l];ai.apply(void 0,[this.logger,e,i].concat(a))}},{key:"errorHandler",value:(s=k(M().mark((function e(t,n){var i,r,a,l,U,F,o,d,Q,s,c,u,B,R=arguments;return M().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(i=R.length>2&&void 0!==R[2]?R[2]:{},r=t.response,a=t.message,l=t.headers,U=this.options?this.options.vid:"",F=null,this._isPending=!0,!r){e.next=38;break}if(F=new Ci("network",r.status,{httpText:r.httpText,message:a,url:r.url,range:i.range,headers:l}),this.log(_t.LOG,"[MP4] [".concat(U,"] errorHandler error state:[").concat(n,"],\n _isPending:[").concat(this._isPending,"] "),null==r?void 0:r.status,a),!(1e3*(Q=null===(o=this.getbufferTimeFunc)||void 0===o?void 0:o.call(this))>=this.options.timeout||(null===(d=this.backUrl)||void 0===d?void 0:d.length)>0)){e.next=32;break}if(!((null===(c=this.backUrl)||void 0===c?void 0:c.length)>0)){e.next=19;break}return s=this.backUrl.shift(),e.next=14,this.updateUrl(s,this.backUrl);case 14:if(this._isPending=!1,!this.MP4Loader){e.next=19;break}return e.next=18,this.MP4Loader.changeUrl(this.url,"".concat(this.url,"-").concat(this._bitRate),this.CHUNK_SIZE);case 18:this.emit(xU,this.url);case 19:if(this._isPending=!1,this.log(_t.LOG,"[".concat(U,"] errorHandler retry,backUrlLen:").concat(this.backUrl.length,", buffer:").concat(Q,",").concat(s)),this.emit(TU,{type:"error",error:t}),"getMetaInfo"!==n){e.next=27;break}return this.getMetaInfo(),e.abrupt("return");case 27:if("loadFragment"!==n){e.next=32;break}if(u=i.fragIndex,B=i.range,!(null!==u&&u>=0&&B)){e.next=32;break}return this.startLoad(B,u),e.abrupt("return");case 32:F.context=i,F.response=r,this.log(_t.LOG,"errorHandler end, ".concat(JSON.stringify(i))),this.emit(bU,F,n),e.next=42;break;case 38:this.log(_t.LOG,"errorHandler other end, ".concat(n,",").concat(null==r?void 0:r.status,", ").concat(a)),(F=t).context=i,this.emit(bU,F,n);case 42:case"end":return e.stop()}}),e,this)}))),function(e,t){return s.apply(this,arguments)})},{key:"init",value:(Q=k(M().mark((function e(t){var n,i,r,a,l,U,F,o,d,Q,s,c,u,B,R,h,V;return M().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t||(t={}),this.options.loadRangeType!==Ri.SIZE||this.MP4Loader.url===this.url){e.next=4;break}return e.next=4,this.MP4Loader.changeUrl(this.url,"".concat(this.options.vid,"-").concat(this._bitRate),this.CHUNK_SIZE);case 4:if(this.emit(xU,this.url),this.meta=null,i=(n=t).meta,r=n.mediaSegList,a=n.buffer,l=n.fileSize,U=n.initSeg,F=n.bitrate,o=n.adaptTimeRange,d=n.repeatData,Q=n.repeatDataStartPos,s=n.generateBy,!i||!i.ext){e.next=24;break}for(l&&(this.fileSize=l),this.meta=i,this.videoTrak=i.ext.videoTrak,this.audioTrak=i.ext.audioTrak,this._bitRate=F,this.timeRange=this.getTimeRange(),this.adaptTimeRange=VU.ArrayCopy(o),r?(this.preloadCache={segList:r||[],initSeg:U},(null===(c=this.adaptTimeRange)||void 0===c?void 0:c.length)>0&&(null==d?void 0:d.byteLength)>0&&this.cacheRepeatData(this.adaptTimeRange[0].repeatRange,this.adaptTimeRange[0].repeatRange,d),Q>0&&(null==d?void 0:d.byteLength)>0&&(this.lastMuxRemainBufferInfo={data:d,pos:Q})):a&&(null===(u=this.adaptTimeRange)||void 0===u?void 0:u.length)>0&&(null==a?void 0:a.byteLength)>0&&this.cacheRepeatData(this.adaptTimeRange[0].range,this.adaptTimeRange[0].range,a),"preloader"!==s&&(this.adaptTimeRange.map((function(e){e.downloaded=!1,e.isLoading=!1})),this.log(_t.LOG,"[mp4.init] reset adaptTimeRange")),B=0;B<(null===(R=this.adaptTimeRange)||void 0===R?void 0:R.length);B++)null===(h=this.updateTimeRangeInAdaptTimeRangeIdx)||void 0===h||h.call(this,this.adaptTimeRange[B].timeRangeIdx,B);V={meta:i,videoSegments:i.ext.videoTrak,audioSegments:i.ext.audioTrak,bufferLoaded:a||null},this.log(_t.LOG,"preloadCache init done, emit meta ready"),this._bitRateInfoMap.set(this._bitRate,V),this.emit(vU,this.meta,this),e.next=26;break;case 24:return e.next=26,this.getMetaInfo();case 26:case"end":return e.stop()}}),e,this)}))),function(e){return Q.apply(this,arguments)})},{key:"getTimeRange",value:function(){for(var e,t=[],n=null,i=0;this.videoTrak&&i<this.videoTrak.length;i++){var r=this.videoTrak[i].startTime,a=this.videoTrak[i].endTime;n={startTime:r,endTime:a,duration:a-r,downloaded:!1,isLoading:!1},t.push(n)}if(this.audioTrak&&this.audioTrak.length>t.length)for(var l=t.length;l<this.audioTrak.length;l++){var U=Math.max(this.audioTrak[l].startTime,n?n.endTime:0),F=Math.max(this.audioTrak[l].endTime,n?n.endTime:0);n={startTime:U,endTime:F,duration:F-U,downloaded:!1,isLoading:!1},t.push(n)}return null!==(e=this.options)&&void 0!==e&&e.emitMediaListControl&&this._emitMediaList(t),t}},{key:"_emitMediaList",value:function(e){if(this.videoTrak||this.audioTrak){for(var t=[],n=0;n<e.length;n++){var i=e[n].startTime,r=this.getFragmentIdx(i),a=VU.getFragRange(r,this.videoTrak,this.audioTrak);t.push(G(G({},e[n]),{},{range:a,url:this._addRangeToUrl(this.url,a)}))}this.emit(oi.MEDIA_LIST,t)}}},{key:"_addRangeToUrl",value:function(e,t){return this.options.isAddRange?VU.extUrl(e,{range:"".concat(t[0],"-").concat(t[1])}):e}},{key:"getMetaInfo",value:(d=k(M().mark((function e(){var t,n,i,r,a=this,l=arguments;return M().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t=!(l.length>0&&void 0!==l[0])||l[0],e.prev=1,n=-1,this.metaLoading=!0,this.log(_t.LOG,"getMetaInfo start, bitRate: ".concat(this._bitRate,", firstLoadSize: ").concat(this._firstLoadSize),"url: ".concat(this.MP4Loader.url)),this.resetRepeatInfo(),i=function(){var e=k(M().mark((function e(i,r,l,U,F){var o,d,Q,s,c,u,B;return M().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!U){e.next=6;break}return e.next=3,a.cancelLoading();case 3:return d=new Li(Ti.DEMUX,gi.metaError,{msg:JSON.stringify(U)}),a.errorHandler(d,"getMetaInfo",{range:[0,a._firstLoadSize]}),e.abrupt("return");case 6:Q=(null==l||null===(o=l.priOptions)||void 0===o?void 0:o.type)||MU,i&&(null!==(s=a.options)&&void 0!==s&&s.memoryOpt?n>0?(a.partCacheRepeatData(n),a.cacheRepeatData([n,a._firstLoadSize],l.range,i)):(a.resetRepeatInfo(),a.cacheRepeatData(l.range,l.range,i)):a.cacheRepeatData([0,a._firstLoadSize],l.range,i),!a._optionDataLenInfo[Q]&&(a._optionDataLenInfo[Q]=0),a._optionDataLenInfo[Q]+=i.byteLength),l.meta&&!a.meta&&(u=l.meta,a.videoTrak=u.videoSegments,a.audioTrak=u.audioSegments,null!==(c=a.options)&&void 0!==c&&c.memoryOpt&&(n=VU.getFirstFrameStartRange(a.videoTrak,a.audioTrak)),a.fileSize=Number(WU(null==F?void 0:F.headers)),a.fileSize||(a.fileSize=VU.getEndFramePos(a.videoTrak,a.audioTrak)),a.log(_t.LOG," getFirstFrameStartRange ".concat(n)),a.timeRange=a.getTimeRange(),a.meta=G(G({},u.meta),{},{ext:{videoTrak:a.videoTrak,audioTrak:a.audioTrak},fileSize:a.fileSize}),a._bitRateInfoMap.set(a._bitRate,G(G({},u),{},{fileSize:a.fileSize})),a.log(_t.LOG,"meta reach, bitRate,",a._bitRate,a.repeatInfo.curDataPos),t&&a.emit(vU,a.meta,a)),a.meta&&r&&(a.log(_t.LOG,"[getMetaInfo req end]",a.repeatInfo.curDataPos),a.metaLoading=!1),r&&(a._optionDataLenInfo[Q]&&(a._optionDataLenInfo[Q]=0),a.emit(NU,a)),a._loadedDataState?(B=!1,a.repeatInfo.curDataPos-a.repeatInfo.usedPos>=a.options.afterLoadeddataCallBackLen&&(B=!0),a.meta&&(B||r)&&(a.log(_t.LOG,"emit moov_req_progress loadeddata after",JSON.stringify(l.range)),a.emit(gU))):a.meta&&(i||r)&&(a.log(_t.LOG,"emit moov_req_progress loadeddata before",JSON.stringify(l.range)),a.emit(gU));case 12:case"end":return e.stop()}}),e)})));return function(t,n,i,r,a){return e.apply(this,arguments)}}(),e.next=9,this.MP4Loader.loadMetaProcess(this.MP4Loader.cache,[0,this._firstLoadSize],i);case 9:e.next=15;break;case 11:e.prev=11,e.t0=e.catch(1),this.log(_t.ERROR,"[MP4] trigger errorHandler getMetaInfo",null===e.t0||void 0===e.t0||null===(r=e.t0.response)||void 0===r?void 0:r.status,null===e.t0||void 0===e.t0?void 0:e.t0.message),this.loadError(e.t0,"getMetaInfo",!1,{url:e.t0.url||this.url,range:[0,this._firstLoadSize]});case 15:case"end":return e.stop()}}),e,this,[[1,11]])}))),function(){return d.apply(this,arguments)})},{key:"getFragmentIdx",value:function(e){var t,n;if(this.videoTrak.length){if(t=this.videoTrak.find((function(t){return t.startTime<=e&&t.endTime>e})),n=this.audioTrak.find((function(t){return t.startTime<=e&&t.endTime>e})),t&&n)return Math.min(t.index,n.index);if(t||n)return t?t.index:n.index;var i=Number.MAX_VALUE;return this.videoTrak&&this.videoTrak.length>0&&(i=this.videoTrak.length-1),this.audioTrak&&this.audioTrak.length>0&&(i=Math.min(this.audioTrak.length-1,i)),i}return(n=this.audioTrak.find((function(t){return t.startTime<=e&&t.endTime>e})))?n.index:0}},{key:"_checkHasMeta",value:(o=k(M().mark((function e(){var t,n,i,r,a,l,U,F;return M().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t=this._bitRateInfoMap.get(this._bitRate)){e.next=20;break}return this.log(_t.LOG,"[switchBitrate], need load InitSegment, bitRate, ",this._bitRate),this.metaLoading=!0,e.next=6,this.MP4Loader.loadMeta(this.MP4Loader.cache,Math.round(this.CHUNK_SIZE/2));case 6:i=e.sent,this.log(_t.LOG,"[switchBitrate], loadMeta end, ",this._bitRate),this.metaLoading=!1,r=Number(WU(null==i||null===(n=i.responses)||void 0===n||null===(n=n[0])||void 0===n||null===(n=n.response)||void 0===n?void 0:n.headers)),this.fileSize=r,a=i.videoSegments,l=i.audioSegments,this.fileSize||(this.fileSize=VU.getEndFramePos(a,l)),this.log(_t.LOG,"[switchBitrate], fileSize set , ",r),this.meta=G(G({},i.meta),{},{ext:{videoTrak:a,audioTrak:l},fileSize:this.fileSize}),(t=i).fileSize=this.fileSize,this._bitRateInfoMap.set(this._bitRate,i),e.next=22;break;case 20:this.log(_t.LOG,"[switchBitrate], not need load InitSegment, bitRate, ",this._bitRate),this.meta=t.meta;case 22:for(this.videoTrak=t.videoSegments,this.audioTrak=t.audioSegments,this.fileSize=t.fileSize,this.emit(CU,this.meta),this.emit(LU,this.meta),this.timeRange=this.getTimeRange(),U=0;U<this.adaptTimeRange.length;U++)null===(F=this.updateTimeRangeInAdaptTimeRangeIdx)||void 0===F||F.call(this,this.adaptTimeRange[U].timeRangeIdx,U);return this._firstLoadSize=0,e.abrupt("return",!0);case 31:case"end":return e.stop()}}),e,this)}))),function(){return o.apply(this,arguments)})},{key:"load",value:(F=k(M().mark((function e(t,n){var i,r,a,l,U,F,o,d,Q,s,c;return M().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this._loadSuccessCallBack=n,!this._switchBitRate||this.metaLoading){e.next=29;break}if(this.log(_t.LOG,"[switchBitrate], switch bitRate start load, bitRate,",this._bitRate,", fragIndex,",t),this.fillGopDataInfo){e.next=29;break}return this.log(_t.LOG,"[switchBitrate] changeBitrate~~"),e.next=7,this.changeBitRate();case 7:return e.next=9,this._checkHasMeta();case 9:if(i=e.sent,!(this.changeBitRateTime>0)){e.next=26;break}if(this.resetFragmentLoadState(t,!0),this.resetRepeatInfo(),this.resetDemuxSampleIdx(this.changeBitRateTime),r=this.getFragmentIdx(this.changeBitRateTime),a=t,!((t=this.getAdaptIdxBySrcIdx(r))<0)){e.next=20;break}return this.log(_t.ERROR,"[switchBitrate] start new bitrate fragIndex error"),e.abrupt("return");case 20:a!==t&&this.resetFragmentLoadState(t),this._curLoadSegIdx=t,this.log(_t.LOG,"[switchBitrate], need update load fragIndex: ".concat(t,"/").concat(a),"stTime: ".concat(this.changeBitRateTime),"adaptTimeRange: ".concat(this.adaptTimeRange[t].startTime,"-").concat(this.adaptTimeRange[t].endTime)),this.emit(XU,t),this.seekTime=this.changeBitRateTime,this.changeBitRateTime=-1;case 26:this._needInitSegment=!0,this.resetTransmuxer(),i&&(this._switchBitRate=!1);case 29:if(this.fillGopDataInfo||!this._switchBitRate||!this.metaLoading){e.next=31;break}return e.abrupt("return");case 31:l=this.getFragRange(t),(U=this.getFragmentFromCache(t,l))&&this._needInitSegment&&!U.initSeg&&(U=null,this.log(_t.LOG,"[mp4.load] fragIndex ".concat(t,", Data In Cache but not has init, so not use cacheData"))),(this.seekTime<0||this.options.loadRangeType===Ri.GOP)&&U?(F=U.muxSampleIdxRange,o=F.video,d=F.audio,this.lastDemuxSampleIdxRange.video=o,this.lastDemuxSampleIdxRange.audio=d,this.log(_t.LOG,"[mp4.load] fragIndex: ".concat(t," Data In Cache"),"needInit: ".concat(this._needInitSegment,", muxSampleIdxRange: ").concat(JSON.stringify(U.muxSampleIdxRange)),JSON.stringify(l)),this.adaptTimeRange[t].downloaded=!0,this.adaptTimeRange[t].isLoading=!0,this._needInitSegment=!1,this._loadSuccessCallBack&&this._loadSuccessCallBack(U)):(Q=[l[0],l[1]],this.fillGopDataInfo&&l[0]<this.fillGopDataInfo.endRange&&(l[1]=this.fillGopDataInfo.endRange,this.log(_t.LOG,"[switchBitrate] fillGopDataInfo fix load range ~~")),this.log(_t.LOG,"loadFragment ".concat(t),"bitRate: ".concat(this._bitRate,", range: ").concat(JSON.stringify(l)),"fillGopDataInfo: ".concat(JSON.stringify(this.fillGopDataInfo),", srcRange: ").concat(Q)),this.seekTime>=0?(c=this.getSubRange(t,this.seekTime,l),null===(s=this.resetDemuxSampleIdx)||void 0===s||s.call(this,this.seekTime,c),this.repeatInfo.usedPos=0,this.loadFragment(t,c),this.repeatInfo.curDataPos=0,this.seekTime=-1):this.loadFragment(t,l));case 35:case"end":return e.stop()}}),e,this)}))),function(e,t){return F.apply(this,arguments)})},{key:"getFragmentFromCache",value:function(e,t){var n=this.preloadCache;if(!n||!n.segList)return null;for(var i=-1,r=n.segList,a=n.initSeg,l=0;l<r.length;l++)if(r[l].index===e){i=l;break}if(i<0)return null;var U=r[i];if(U.range[1]>=t[1]){var F=[this.adaptTimeRange[e].startTime,this.adaptTimeRange[e].endTime];return{buffer:U.buffer,range:t,muxSampleIdxRange:U.muxSampleIdxRange,context:{range:t,fragIndex:e,state:!0,adaptTimeRange:[F[0],F[1]]},state:!0,initSeg:this._needInitSegment?a:void 0}}return null}},{key:"notVailRangeResError",value:(U=k(M().mark((function e(t,n,i,r){var a;return M().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r){e.next=3;break}return e.next=3,this.cancelLoading();case 3:a=(null==n?void 0:n.load_type)===YU,this.loadError({response:t,message:206!==(null==t?void 0:t.status)?"responseCode not 206":"datalen not match"},"loadFragment",a,{range:null==n?void 0:n.range,fragIndex:i});case 5:case"end":return e.stop()}}),e,this)}))),function(e,t,n,i){return U.apply(this,arguments)})},{key:"checkResPonse",value:function(e,t){if(e.hasCheck)return!0;e.hasCheck=!0;var n,i,r,a=t.range?t.range[1]-t.range[0]+1:-1,l=Number((n=e.headers,r=SU["content-length"],(null==n||null===(i=n.get)||void 0===i?void 0:i.call(n,r))||null));return!(206!==(null==e?void 0:e.status)||a>0&&l>0&&a!==l)||(this.log(_t.LOG,"[DataArrive] response code, ".concat(e.status,",\n contentLength: ").concat(l,",\n reqLen: ").concat(a)),!1)}},{key:"startMux",value:function(e,t,n,i){null!=e&&e.byteLength&&(!this._optionDataLenInfo[t]&&(this._optionDataLenInfo[t]=0),this._optionDataLenInfo[t]+=e.byteLength,this._receiveDataPos=null==n?void 0:n.range[1],this.cacheRepeatData(this.adaptTimeRange[n.index].repeatRange,n.range,e),this._mux(e,n.range[0],n.index,i))}},{key:"partCacheRepeatData",value:function(e){if(this.repeatInfo){var t=this.repeatInfo,n=t.curDataPos,i=t.startPos,r=t.usedPos;n<=0||i>e||i+n<i||e===i||(this.log(_t.LOG,"[partCacheRepeatData bebore],startPos: ".concat(i),",usedPos: ".concat(this.repeatInfo.usedPos),"curDataPos: ".concat(n)),this.repeatInfo.data.set(this.repeatInfo.data.subarray(e-i,i+n),0),this.repeatInfo.usedPos=Math.max(i+r-e,0),this.repeatInfo.curDataPos=i+n-e,this.repeatInfo.startPos=e,this.log(_t.LOG,"[partCacheRepeatData after],startPos: ".concat(this.repeatInfo.startPos),",usedPos: ".concat(this.repeatInfo.usedPos),"curDataPos: ".concat(this.repeatInfo.curDataPos)))}}},{key:"cacheRepeatData",value:function(e,t,n){var i;if(e&&null!=e&&e.length&&null!==(i=this.repeatInfo.data)&&void 0!==i&&i.byteLength&&!this.options.disableRepeatRange&&(this.repeatInfo.startPos<0&&t[0]+n.byteLength>=e[0]&&t[0]+n.byteLength<=e[1]+1&&(this.repeatInfo.startPos=e[0]),this.repeatInfo.startPos>=0&&t[0]+n.byteLength>=e[0]&&t[0]+n.byteLength<=e[1]+1)){var r=this.repeatInfo.startPos+this.repeatInfo.curDataPos-t[0];if(r<0)return;var a=n.subarray(r);if(this.repeatInfo.curDataPos+a.byteLength<this.repeatInfo.data.byteLength){try{this.repeatInfo.data.set(a,this.repeatInfo.curDataPos),this.repeatInfo.curDataPos+=a.byteLength}catch(o){}this.log(_t.LOG,"repeatInfo pos: ".concat(this.repeatInfo.startPos,"-").concat(this.repeatInfo.startPos+this.repeatInfo.curDataPos),"curAppendLen: ".concat(a.byteLength))}else try{var l=2*n.byteLength,U=Math.max(this.repeatInfo.data.byteLength+l,e[1]-e[0]+l),F=VU.newUint8Array(U);if(!F)return;F.set(this.repeatInfo.data.slice(0,this.repeatInfo.curDataPos),0),F.set(a,this.repeatInfo.curDataPos),this.repeatInfo.curDataPos+=a.byteLength,delete this.repeatInfo.data,this.repeatInfo.data=F,this.log(_t.LOG,"exp repeatInfo pos: ".concat(this.repeatInfo.startPos,", curDataPos: ").concat(this.repeatInfo.curDataPos,", capacity: ").concat(U))}catch(o){console.error("repeat data cache new array failed")}}}},{key:"_mux",value:function(e,t,n,i){var r=this.getSamplesRange(n,"video"),a=this.getSamplesRange(n,"audio");if(this.log(_t.LOG,"mux sampleRange src",JSON.stringify(r),JSON.stringify(a)),this.fillFirstSegment&&(r[1]=1/0,a[1]=1/0),this.fillFirstSegment&&i&&(this.fillFirstSegment=!1),this.fillGopDataInfo){this.log(_t.LOG,"mux sampleRange, fillGopDataInfo",JSON.stringify(this.fillGopDataInfo));var l=this.fillGopDataInfo,U=l.endVFrameIdx,F=l.endAFrameIdx;U>=0&&(null==r?void 0:r[1])>U&&(null==r?void 0:r[0])<=U&&r[1]&&(r[1]=U),F>=0&&(null==a?void 0:a[1])>F&&(null==a?void 0:a[0])<=F&&a[1]&&(a[1]=F)}this.log(_t.LOG,"mux sampleRange,",JSON.stringify(r),JSON.stringify(a));var o=[t,t+e.byteLength];if(this.transmuxerWorkerControl){var d,Q,s={range:o,state:i,fragIndex:n};this.log(_t.LOG,"[transmuxerWorker start] range: ".concat(JSON.stringify(o)),",dataLen: ".concat(e.byteLength),s);var c=null!==(d=this.lastMuxRemainBufferInfo)&&void 0!==d&&d.data?new Uint8Array(this.lastMuxRemainBufferInfo.data):null,u=null===(Q=this.lastMuxRemainBufferInfo)||void 0===Q?void 0:Q.pos;this.lastMuxRemainBufferInfo=null;var B=this.transmuxerWorkerHasTrak;this.transmuxerWorkerHasTrak||(this.transmuxerWorkerHasTrak=!0),this.transmuxerWorkerControl.transmux(this.workerSequence,e,t,r,a,this.meta.moov,this.useEME,this.secretKey,s,B?null:this.videoTrak,B?null:this.audioTrak,c,u)}else{var R=this.options,h=R.memoryOpt,V=R.softDecode;try{var p,m,Z;this.MP4Demuxer||(this.MP4Demuxer=new Al(this.videoTrak,this.audioTrak,null,{openLog:ni,memoryOpt:h})),this.lastMuxRemainBufferInfo&&(this.MP4Demuxer.setLastRemainBufferInfo(this.lastMuxRemainBufferInfo.data,this.lastMuxRemainBufferInfo.pos),this.lastMuxRemainBufferInfo=null);var S=this.MP4Demuxer.demuxPart(e,t,r,a,this.meta.moov,this.useEME,this.keyValue);this.FMP4Remuxer||V||this.checkCodecH265()&&!this.options.supportHevc||(this.FMP4Remuxer=new Oa(this.MP4Demuxer.videoTrack,this.MP4Demuxer.audioTrack,{openLog:ni}));var J=S.videoTrack,W=S.audioTrack,f=S.lastRemainBufferInfo,y=null==J?void 0:J.samples,k=(null==y?void 0:y.length)>0?y[0].sampleOffset:-1,E=(null==y?void 0:y.length)>0?y[y.length-1].sampleOffset:-1,b=null==W?void 0:W.samples,v=(null==b?void 0:b.length)>0?b[0].sampleOffset:-1,N=(null==b?void 0:b.length)>0?b[b.length-1].sampleOffset:-1,g=this.meta.videoTimescale,T=(null==y?void 0:y.length)>0?y[0].dts/g:-1,C=(null==y?void 0:y.length)>0?y[y.length-1].dts/g:-1,L=i||(null==b?void 0:b.length)>0?null==S||null===(p=S.audioTrack)||void 0===p?void 0:p.startPts:-1,x=i||(null==b?void 0:b.length)>0?null==S||null===(m=S.audioTrack)||void 0===m?void 0:m.endPts:-1;if(this.log(_t.LOG,"[mux] ".concat(n),",videoTimeRange: ".concat(T,"-").concat(C),",videoSampleIdx: ".concat(k,"-").concat(E),",audioTimeRange: ".concat(L,"-").concat(x),",audioSampleIdx: ".concat(v,"-").concat(N),JSON.stringify(o),i),k>=0&&k!==(null==r?void 0:r[0])||v>=0&&v!==(null==a?void 0:a[0]))return void this.log(_t.LOG,"mux sample is not continue, so abandon");this.updateDemuxSampleIdxRange([k,E],[v,N]);var X,D=[Math.min.apply(Math,_([T,L].filter((function(e){return-1!==e})))),Math.max.apply(Math,_([C,x].filter((function(e){return-1!==e}))))];if(this.FMP4Remuxer){var G=this.FMP4Remuxer.remux(this._needInitSegment,{initMerge:!0,range:o});G.initSegment&&(this._needInitSegment=!1),X={buffer:VU.concatData(G.audioSegment,G.videoSegment),range:o,state:i,context:{range:o,fragIndex:n,timeRange:D},initSeg:G.initSegment,lastRemainBufferInfo:f,mp4:this}}else X={videoTrack:S.videoTrack,audioTrack:S.audioTrack,buffer:null,range:o,state:i,context:{range:o,fragIndex:n,timeRange:D},lastRemainBufferInfo:f,mp4:this};(null==o?void 0:o[1])>=(null===(Z=this.fillGopDataInfo)||void 0===Z?void 0:Z.endRange)&&(this.fillGopDataInfo=null,this.log(_t.LOG,"clear fillGopDataInfo")),this._loadSuccessCallBack&&this._loadSuccessCallBack(X)}catch(Y){var I=null==Y?void 0:Y.message;this.log(_t.ERROR,"mux err:",I);var M=new Li(Ti.REMUX,gi.muxError,{msg:I});this.errorHandler(M,"mux",{fragIndex:n,range:[t,t+e.byteLength]})}}}},{key:"updateDemuxSampleIdxRange",value:function(e,t){(null==e?void 0:e[1])>=0&&(this.lastDemuxSampleIdxRange.video=e[1]),(null==t?void 0:t[1])>=0&&(this.lastDemuxSampleIdxRange.audio=t[1]),this.log(_t.LOG,"updateDemuxSampleIdxRange",JSON.stringify(this.lastDemuxSampleIdxRange))}},{key:"loadFragment",value:(l=k(M().mark((function e(t,n){var i,r,a,l,U,F,o,d,Q,s,c,u,B,R,h,V,p;return M().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this._curLoadSegIdx=t,!this._isPending&&0!==(null==n?void 0:n[1])&&this.adaptTimeRange[t]&&!this.adaptTimeRange[t].isLoading&&0!==(null==n?void 0:n.length)){e.next=3;break}return e.abrupt("return");case 3:if(this.log(_t.LOG,"[MP4.loadFragment] fragIndex: ".concat(t),",range: ".concat(JSON.stringify(n),", len: ").concat(n[1]-n[0],","),"repeatInfo: ".concat(this.repeatInfo.startPos,"-").concat(this.repeatInfo.startPos+this.repeatInfo.curDataPos)),this._segmentToBitRateMap.set(t,this._bitRate),!(n.length>=2&&n[1]&&n[1]>0&&n[0]>=this.repeatInfo.startPos&&n[1]<this.repeatInfo.startPos+this.repeatInfo.curDataPos)){e.next=15;break}this.adaptTimeRange[t].isLoading=!0,i=Math.max(n[0],this.repeatInfo.startPos+this.repeatInfo.usedPos),r=new Uint8Array(this.repeatInfo.data.slice(i-this.repeatInfo.startPos,n[1]-this.repeatInfo.startPos+1)),this.log(_t.LOG,"[mp4.loadFragment] fragIndex: ".concat(t),"has all data: ".concat(i,", ").concat(n[1]),"repeatInfo: ".concat(this.repeatInfo.startPos,"-").concat(this.repeatInfo.startPos+this.repeatInfo.usedPos),"curDataPos: ".concat(this.repeatInfo.startPos+this.repeatInfo.curDataPos)),this.adaptTimeRange[t].downloaded=!0,this.metaLoading||0===this.repeatInfo.startPos?(this.repeatInfo.usedPos=0,this.log(_t.LOG,"[mp4.loadFragment] has all data set repeatInfo.usedPos = 0")):(a=this.adaptTimeRange[t].range[0]-this.repeatInfo.startPos,l=this.adaptTimeRange[t].range[1]+1-this.repeatInfo.startPos,U=new Uint8Array(this.repeatInfo.data.slice(a,l)),this.resetRepeatInfo(),this.cacheRepeatData(this.adaptTimeRange[t].repeatRange,this.adaptTimeRange[t].range,U)),this._mux(r,i,t,!0),e.next=42;break;case 15:if(!(n.length>=2&&n[0]&&n[0]>=this.repeatInfo.startPos&&n[0]<=this.repeatInfo.startPos+this.repeatInfo.curDataPos)){e.next=36;break}if(this.adaptTimeRange[t].isLoading){e.next=34;break}if(F=Math.max(n[0],this.repeatInfo.startPos+this.repeatInfo.usedPos),o=Math.min(n[1]+1,this.repeatInfo.startPos+this.repeatInfo.curDataPos),!((d=new Uint8Array(this.repeatInfo.data.slice(F-this.repeatInfo.startPos,o-this.repeatInfo.startPos))).byteLength>0)){e.next=26;break}return this.repeatInfo.usedPos=o-this.repeatInfo.startPos,this.log(_t.LOG,"[mp4.loadFragment] has part data: ",F,F+d.byteLength),this.log(_t.LOG,"[mp4.loadFragment] ","repeatInfo, pos: ".concat(this.repeatInfo.startPos,"-").concat(this.repeatInfo.startPos+this.repeatInfo.usedPos),",curDataPos: ".concat(this.repeatInfo.startPos+this.repeatInfo.curDataPos,", usedPos: ").concat(this.repeatInfo.usedPos)),this._mux(d,F,t,n[1]<=this.repeatInfo.startPos+this.repeatInfo.usedPos),e.abrupt("return");case 26:if(this.metaLoading||this.adaptTimeRange[t].isLoading){e.next=34;break}return this.log(_t.LOG,"[mp4.loadFragment] load part data >>> ",this.repeatInfo.startPos+this.repeatInfo.curDataPos,n[1]),this.adaptTimeRange[t].isLoading=!0,s=[this.repeatInfo.startPos+this.repeatInfo.usedPos,n[1]],(c=null===(Q=this.adaptTimeRange[t])||void 0===Q?void 0:Q.repeatRange)&&c[0]<s[0]?(u=[this.adaptTimeRange[t].repeatRange[0],s[0]],B=this.repeatInfo,R=B.startPos,h=B.curDataPos,V=B.data,p=V.slice(u[0]-R,h),this.resetRepeatInfo(),this.cacheRepeatData(this.adaptTimeRange[t].repeatRange,u,p)):this.resetRepeatInfo(),e.next=34,this.startLoad(s,t);case 34:e.next=42;break;case 36:if(this.metaLoading&&!(n[0]>this.repeatInfo.startPos)||this.adaptTimeRange[t].isLoading){e.next=42;break}return this.adaptTimeRange[t].isLoading=!0,this.log(_t.LOG,"[mp4.loadFragment] ready to load all data ,fragIdx: ".concat(t,", range: ").concat(n)),this.resetRepeatInfo(),e.next=42,this.startLoad(n,t);case 42:case"end":return e.stop()}}),e,this)}))),function(e,t){return l.apply(this,arguments)})},{key:"resetRepeatInfo",value:function(){this.log(_t.LOG,", resetRepeatInfo"),this.repeatInfo.startPos=-1,this.repeatInfo.curDataPos=0,this.repeatInfo.usedPos=0}},{key:"setSwitchPCDNCallBack",value:function(e){this._switchPCDNCallBack=e}},{key:"updateChangeBitRateTime",value:function(e){this.changeBitRateTime=e}},{key:"startLoad",value:(a=k(M().mark((function e(n,i){var r,a,l,U,F,o,d,Q,s,c,u=arguments;return M().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=u.length>2&&void 0!==u[2]&&u[2],a=this.selectedPCDN(r),l=a||this.url,l=this._addRangeToUrl(l,n),this.log(_t.LOG,"[startLoad], ",i,JSON.stringify(n),l),e.prev=5,U={index:i,onProgress:this.onprogressDataArrive,onProcessMinLen:this.options.onProcessMinLen,url:l,priOptions:{type:a?YU:MU,range:n}},a&&(U.headers={"X-Origin-Server-Host":this._domain}),e.next=10,this.MP4Loader.loadData(n,this.MP4Loader.cache,U);case 10:e.next=29;break;case 12:if(e.prev=12,e.t0=e.catch(5),o=(null===e.t0||void 0===e.t0||null===(F=e.t0.options)||void 0===F||null===(F=F.priOptions)||void 0===F?void 0:F.type)===YU||!!a,Q=e.t0.url||(o?a:this.url),!o){e.next=27;break}return this.pcdnVVStat.conn_fail_num++,t.pcdn_download_failed_cnt++,d=this._pcdnNodeList.shift(),this.emit(DU,d),this.log(_t.ERROR,"pcdn load err, retry use cdn, fragIndex: ".concat(i),"range: ".concat(JSON.stringify(n),", err: ").concat(null===e.t0||void 0===e.t0?void 0:e.t0.message,", ").concat((null===e.t0||void 0===e.t0?void 0:e.t0.isTimeout)||(null===e.t0||void 0===e.t0||null===(s=e.t0.response)||void 0===s?void 0:s.status)),"url: ".concat(Q)),e.next=25,this.startLoad(n,i,!0);case 25:e.next=28;break;case 27:this.log(_t.ERROR,"cdn load err, fragIndex: ".concat(i),"range: ".concat(JSON.stringify(n),", err: ").concat(null===e.t0||void 0===e.t0?void 0:e.t0.message,", ").concat((null===e.t0||void 0===e.t0?void 0:e.t0.isTimeout)||(null===e.t0||void 0===e.t0||null===(c=e.t0.response)||void 0===c?void 0:c.status)),"url: ".concat(Q));case 28:this.loadError(e.t0,"loadFragment",o,{range:n,fragIndex:i,url:Q});case 29:case"end":return e.stop()}}),e,this,[[5,12]])}))),function(e,t){return a.apply(this,arguments)})},{key:"loadError",value:function(e,t,n,i){var r,a,l;!e.response&&(e.response={}),e.isTimeout?e.response.status=gi.timeout:null!=e&&null!==(r=e.response)&&void 0!==r&&r.status||(e.response.status=gi.networkError);var U=VU.getHostFromUrl(null==i?void 0:i.url);this.markErrHost(U);var F=e.response.headers?JU(e.response.headers):null;F&&(e.headers=F),this.log(_t.ERROR,"load err, headers: ".concat(JSON.stringify(F),",\n errC: ").concat(null==e||null===(a=e.response)||void 0===a?void 0:a.status,",\n errM: ").concat(null==e?void 0:e.message)),this.emit(GU,{src:null==i?void 0:i.url,host:U,errorCode:null==e||null===(l=e.response)||void 0===l?void 0:l.status,message:null==e?void 0:e.message,range:(null==i?void 0:i.range)&&JSON.stringify(i.range),headers:F}),n||this.errorHandler(e,t,i)}},{key:"loadAllFragmentData",value:(r=k(M().mark((function e(n,i,r){var a,l,U,F,o,d,Q,s,c,u,B,R,h,V,p,m,Z=arguments;return M().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(l=Z.length>3&&void 0!==Z[3]&&Z[3],U=Z.length>4&&void 0!==Z[4]?Z[4]:null,!this.hasDestroyed){e.next=4;break}return e.abrupt("return");case 4:return this.resetRepeatInfo(),F=U||(null===(a=this.adaptTimeRange[n])||void 0===a?void 0:a.range)||this.getFragRange(n),this._curLoadSegIdx=n,o=this.selectedPCDN(l),d=VU.extUrl(o||this.url,G({__rand:(new Date).getTime()},this.options.reqParams)),e.prev=9,this.log(_t.LOG,"loadAllFragmentData before, index: ".concat(n),"range: ".concat(JSON.stringify(F)),"use-pcdn: ".concat(!!o)),Q={index:n,url:d,priOptions:{type:o?YU:MU,range:F}},o&&(Q.headers={"X-Origin-Server-Host":this._domain}),e.next=15,this.MP4Loader.loadData(F,this.MP4Loader.cache,Q);case 15:if(s=e.sent,this.log(_t.LOG,"loadAllFragmentData after, index: ".concat(n),"range: ".concat(JSON.stringify(F))),c=s.options.priOptions,this.checkResPonse(null==s?void 0:s.response,c)){e.next=22;break}return this.notVailRangeResError(null==s?void 0:s.response,c,null===(u=s.options)||void 0===u?void 0:u.index,!0),e.abrupt("return");case 22:if(this.log(_t.LOG,"loadAllFragmentData after, index: ".concat(n),"range: ".concat(JSON.stringify(F))),s&&s.data){e.next=27;break}return B=new Error("response null"),r?r(B):this.loadError(B,"loadFragment",!!o,{range:F,fragIndex:n,url:o||this.url}),e.abrupt("return");case 27:(R=s.data)&&F&&F.length>=2&&(null==R?void 0:R.byteLength)===F[1]-F[0]+1&&(this._receiveDataPos=F[0]+(null==R?void 0:R.byteLength),this._loadSuccessCallBack=i,this.adaptTimeRange[n].downloaded=!0,this.cacheRepeatData(this.adaptTimeRange[n].repeatRange,F,R),this._mux(R,F[0],n,!0)),e.next=44;break;case 31:if(e.prev=31,e.t0=e.catch(9),!(V=(null===e.t0||void 0===e.t0||null===(h=e.t0.options)||void 0===h||null===(h=h.priOptions)||void 0===h?void 0:h.type)===YU||!!o)){e.next=42;break}return t.pcdn_download_failed_cnt++,this._pcdnNodeList.shift(),this.log(_t.ERROR,"[loadAllFragmentData], pcdn load err, retry use cdn","fragIndex: ".concat(n,", ").concat((null===e.t0||void 0===e.t0?void 0:e.t0.isTimeout)||(null===e.t0||void 0===e.t0||null===(p=e.t0.response)||void 0===p?void 0:p.status),", ").concat(null===e.t0||void 0===e.t0?void 0:e.t0.message)),e.next=40,this.loadAllFragmentData(n,i,r,!0);case 40:e.next=43;break;case 42:this.log(_t.ERROR,"[MP4] loadAllFragmentData error: ".concat(JSON.stringify({fragIndex:n,range:F})),(null===e.t0||void 0===e.t0?void 0:e.t0.isTimeout)||(null===e.t0||void 0===e.t0||null===(m=e.t0.response)||void 0===m?void 0:m.status),null===e.t0||void 0===e.t0?void 0:e.t0.message);case 43:this.loadError(e.t0,"loadFragment",V,{range:F,fragIndex:n,url:e.t0.url||(V?o:this.url)});case 44:case"end":return e.stop()}}),e,this,[[9,31]])}))),function(e,t,n){return r.apply(this,arguments)})},{key:"currentLoadUseUrl",value:function(){return this._isUseCDN?this.url:(null===(e=this._pcdnNodeList)||void 0===e?void 0:e.length)>0?this._pcdnNodeList[0].url:"";var e}},{key:"getCurSwitchPCDNCnt",value:function(){return this._PCDNSwitchCnt}},{key:"selectedPCDN",value:function(e){if(this._PCDNState!==_U&&!e){var n;if(this.isUsePCDN()){if(this._isUseCDN){if(this._switchPCDNCallBack){var i=this._switchPCDNCallBack();i>0&&(this.options.switchPCDNMaxCnt=i)}if(this._PCDNSwitchCnt>=this.options.switchPCDNMaxCnt)return this._isUseCDN=!0,this.log(_t.LOG,"cdn switch pcdn out limit, curSwitchCnt: ".concat(this._PCDNSwitchCnt,", maxCnt: ").concat(this.options.switchPCDNMaxCnt)),null;this._PCDNSwitchCnt++,this.log(_t.LOG,"cdn switch pcdn, curSwitchCnt: ".concat(this._PCDNSwitchCnt,", maxCnt: ").concat(this.options.switchPCDNMaxCnt))}this._isUseCDN=!1,n=VU.extUrl(this._pcdnNodeList[0].url,G({__vid:this.options.vid},this.options.reqParams)),this._lastPCDNUrl!==n&&(this.emit(xU,n),this._lastPCDNUrl=n,this.pcdnVVStat.conn_req_num+=1),t.pcdn_download_request_cnt++}else this._isUseCDN||(this.log(_t.LOG,"pcdn switch cdn PCDNSwitchCnt: ".concat(this._PCDNSwitchCnt,", maxCnt: ").concat(this.options.switchPCDNMaxCnt)),this.pcdnVVStat.conn_jump_num+=1),this._isUseCDN=!0;return n}this._isUseCDN=!0}},{key:"cancelLoading",value:(i=k(M().mark((function e(){return M().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!this.MP4Loader){e.next=3;break}return e.next=3,this.MP4Loader.cancel();case 3:this._optionDataLenInfo[YU]&&this._optionDataLenInfo[YU]>0&&(this.emit(IU,{load_type:YU,len:this._optionDataLenInfo[YU]}),this._optionDataLenInfo[YU]=0),this._optionDataLenInfo[MU]&&this._optionDataLenInfo[MU]>0&&(this.emit(IU,{load_type:MU,len:this._optionDataLenInfo[MU]}),this._optionDataLenInfo[MU]=0);case 5:case"end":return e.stop()}}),e,this)}))),function(){return i.apply(this,arguments)})},{key:"updateUrl",value:function(e,t){var n=VU.getHostFromUrl(e);this._defaultDomain||(this._defaultDomain=n),n.indexOf("www.")<0?this._domain=n:this._domain=this._defaultDomain,this.url=e,this.backUrl=t||[]}},{key:"getDataBitRate",value:function(e){return this._segmentToBitRateMap.get(e)}},{key:"checkCodecH265",value:function(){return this.meta&&(this.meta.videoCodec.indexOf("hvc1")>-1||this.meta.videoCodec.indexOf("hev1")>-1)}},{key:"checkCodecH266",value:function(){return this.meta&&this.meta.videoCodec.indexOf("bvc2")>-1}},{key:"destroy",value:(n=k(M().mark((function e(){return M().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!this.hasDestroyed){e.next=2;break}return e.abrupt("return");case 2:if(this.resetTransmuxer(),this.transmuxerWorkerControl&&this.transmuxerWorkerControl.destroy(),this.fileSize=0,this._isPending=!1,this.metaLoading=!1,this.resetRepeatInfo(),delete this.repeatInfo.data,this._bitRateInfoMap.clear(),this._segmentToBitRateMap.clear(),!this.MP4Loader){e.next=15;break}return e.next=14,this.MP4Loader.cancel();case 14:this.MP4Loader.destroy();case 15:this.removeAllListeners(),this.hasDestroyed=!0,this.pcdnVVStat=this.resetPcdnVVStat();case 18:case"end":return e.stop()}}),e,this)}))),function(){return n.apply(this,arguments)})},{key:"resetPcdnVVStat",value:function(){return{try_req_node:0,req_node_succ:0,has_ret_node:0,conn_req_num:0,conn_fail_num:0,conn_jump_num:0}}},{key:"resetTransmuxer",value:function(){this.MP4Demuxer&&this.MP4Demuxer.reset(),this.MP4Demuxer=null,this.FMP4Remuxer&&this.FMP4Remuxer.reset(),this.FMP4Remuxer=null,this.transmuxerWorkerControl&&this.transmuxerWorkerControl.reset()}},{key:"getMediaEndTime",value:function(){if(this._mediaEndTime>0)return this._mediaEndTime;var e=this.videoTrak,t=this.audioTrak;if((null==e?void 0:e.length)>0){var n=e[e.length-1].endTime;this._mediaEndTime=this._mediaEndTime<0?n:Math.min(n,this._mediaEndTime)}if((null==t?void 0:t.length)>0){var i=t[t.length-1].endTime;this._mediaEndTime=this._mediaEndTime<0?i:Math.min(i,this._mediaEndTime)}return this._mediaEndTime}},{key:"checkIsLoadEnd",value:function(e){var t=this.videoTrak,n=this.audioTrak;if(!t&&!n)return!1;var i=0,r=0;if((null==t?void 0:t.length)>0){var a=t[t.length-1].range;(null==a?void 0:a.length)>0&&(i=a[1])}if((null==n?void 0:n.length)>0){var l=n[n.length-1].range;(null==l?void 0:l.length)>0&&(r=l[1])}return e>=Math.max(i,r)}}],[{key:"pcdnDownLoadReqCnt",get:function(){var e=t.pcdn_download_request_cnt,n=t.pcdn_download_failed_cnt;return t.pcdn_download_request_cnt=0,t.pcdn_download_failed_cnt=0,{pcdn_download_request_cnt:e,pcdn_download_failed_cnt:n}}},{key:"getDefaultConfig",value:function(){return{onProcessMinLen:1024,xhrSetup:null,chunkSize:8e5,isCache:!1,playerId:"",vid:"",afterLoadeddataCallBackLen:0,ext:{}}}}]);var n,i,r,a,l,U,F,o,d,Q,s,c,u}(it);T(jU,"pcdn_download_request_cnt",0),T(jU,"pcdn_download_failed_cnt",0);var HU=function(e){function t(e,n,i,r,a){var l;return b(this,t),(l=E(this,t,[e,n,i,r,a])).logTag="".concat(a,"_").concat(Ri.GOP)||"",l.lastDemuxSampleIdxRange.video=-1,l.lastDemuxSampleIdxRange.audio=-1,l.adaptTimeRange=[],l}return x(t,e),N(t,[{key:"updateAdaptTimeRange",value:function(e,t){this.adaptTimeRange||(this.adaptTimeRange=[]),this.lastTargetDur=t;var n=this.adaptTimeRange;null===e&&(e=n.length>0?n[n.length-1].timeRangeIdx[1]:0);for(var i=0;i<(null==n?void 0:n.length);i++){var r=n[i].timeRangeIdx;if(e>=r[0]&&e<r[1])return this.log(_t.LOG,"has adaptTimeRange,startSrcIdx: ".concat(e,", adaptTimeRangeIdx: ").concat(i,", dur: ").concat(t),JSON.stringify(n[i])),i}var a=n.length>0?n[n.length-1].timeRangeIdx[1]:0;if(a>=this.timeRange.length)return n.length-1;for(;a<e;){var l=this.timeRange[a].startTime,U=this.timeRange[a].endTime,F={startTime:l,endTime:U,timeRangeIdx:[a,a+1],duration:U-l,downloaded:!1,isLoading:!1};this.adaptTimeRange.push(F),this.updateTimeRangeInAdaptTimeRangeIdx(F.timeRangeIdx,this.adaptTimeRange.length-1),this.log(_t.LOG,"gap adaptTimeRange,adaptTimeRangeIdx: ".concat(this.adaptTimeRange.length-1),JSON.stringify(F)),a++}for(var o=0,d=a,Q=a;Q<this.timeRange.length;Q++){if(!(o<t)){d=Q;break}o+=this.timeRange[Q].endTime-this.timeRange[Q].startTime}Q===this.timeRange.length&&(d=this.timeRange.length);var s=[a,d],c=this.timeRange[s[0]].startTime,u=s[1]===this.timeRange.length?this.timeRange[s[1]-1].endTime:this.timeRange[s[1]].startTime,B={startTime:c,endTime:u,timeRangeIdx:s,duration:u-c,downloaded:!1,isLoading:!1};return this.log(_t.LOG,"update adaptTimeRange,startIdx,",s[0],", dur,",t,JSON.stringify(B)),this.adaptTimeRange.push(B),this.updateTimeRangeInAdaptTimeRangeIdx(s,this.adaptTimeRange.length-1),this.adaptTimeRange.length-1}},{key:"updateTimeRangeInAdaptTimeRangeIdx",value:function(e,t){if(null!=e&&e.length)for(var n=e[0];n<e[1];n++)n<this.timeRange.length&&(this.timeRange[n].adaptTimeRangeIdx=t)}},{key:"getAdaptIdxBySrcIdx",value:function(e,t){var n,i=this.adaptTimeRange.length;if(!t&&e>=(null===(n=this.adaptTimeRange[i-1])||void 0===n?void 0:n.timeRangeIdx[1])){var r=this.lastTargetDur||5;this.updateAdaptTimeRange(e,r)}for(var a=0;a<this.adaptTimeRange.length;a++){var l=this.adaptTimeRange[a].timeRangeIdx;if(l&&e>=l[0]&&e<l[1])return a}return this.adaptTimeRange.length-1}},{key:"getFragmentIdx",value:function(e){var t,n,i,r;if(null!==(t=this.videoTrak)&&void 0!==t&&t.length){var a;if(n=this.videoTrak.find((function(t){return t.startTime<=e&&t.endTime>e})),i=null===(a=this.audioTrak)||void 0===a?void 0:a.find((function(t){return t.startTime<=e&&t.endTime>e})),n&&i)return Math.min(n.index,i.index);if(n||i)return n?n.index:i.index;var l=Number.MAX_VALUE;return this.videoTrak.length>0&&(l=this.videoTrak.length-1),this.audioTrak&&this.audioTrak.length>0&&(l=Math.min(this.audioTrak.length-1,l)),l}return(i=null===(r=this.audioTrak)||void 0===r?void 0:r.find((function(t){return t.startTime<=e&&t.endTime>e})))?i.index:0}},{key:"resetFragmentLoadState",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];this.log(_t.LOG,", resetFragmentLoadState, fragIndex, ",e,",changeBitrate,",t);var n=this.adaptTimeRange.length;t&&(this.adaptTimeRange.splice(e+1,n-e-1),n=this.adaptTimeRange.length);for(var i=0;i<n;i++)if(i<e?(this.adaptTimeRange[i].downloaded=!0,this.adaptTimeRange[i].isLoading=!0):(this.adaptTimeRange[i].downloaded=!1,this.adaptTimeRange[i].isLoading=!1),t){this.adaptTimeRange[i].range=null;var r=this.adaptTimeRange[i].timeRangeIdx;if(r[0]>=this.timeRange.length){this.log(_t.WARN,"fix adaptTimeRange fragIndex ".concat(e)," ,timeRangeIdx[0] >= this.timeRange.length, so end",r[0],this.timeRange.length,",endFragment,",i),this.adaptTimeRange=this.adaptTimeRange.slice(0,i);break}r[1]>=this.timeRange.length&&(this.log(_t.WARN,"fix adaptTimeRange fragIndex",e," ,timeRangeIdx[1],",r[1],">>>>",this.timeRange.length,",endFragment,",i),r[1]=this.timeRange.length,this.adaptTimeRange=this.adaptTimeRange.slice(0,i+1)),this.adaptTimeRange[i].startTime=this.timeRange[r[0]].startTime,this.adaptTimeRange[i].endTime=r[1]>=this.timeRange.length?this.timeRange[this.timeRange.length-1].endTime:this.timeRange[r[1]].startTime,this.adaptTimeRange[i].range=this.getFragRange(i)}}},{key:"calculateRange",value:function(e){var t,n,i,r,a=null,l=null,U=null,F=null,o=e<this.adaptTimeRange.length?this.adaptTimeRange[e].timeRangeIdx:null;if(o){var d=o[0],Q=o[1];this.log(_t.LOG,"getFragRange, timeRangeIdx,",JSON.stringify(o));var s=this.videoTrak;s&&(a=d<s.length?s[d]:s[s.length-1],l=Q<s.length?s[Q-1]:s[s.length-1]);var c=this.audioTrak;c&&(U=d<c.length?c[d]:c[c.length-1],F=Q<c.length?c[Q-1]:c[c.length-1]);var u=[Math.min((null===(t=a)||void 0===t?void 0:t.range[0])||1/0,(null===(n=U)||void 0===n?void 0:n.range[0])||1/0),Math.max.apply(Math,_([null===(i=l)||void 0===i?void 0:i.range[1],null===(r=F)||void 0===r?void 0:r.range[1]].filter((function(e){return"number"==typeof e}))).concat([0]))];return this.log(_t.LOG,"calculateRange",e,u[0],"-",u[1]),u}this.log(_t.WARN,"calculateRange err",e,JSON.stringify(this.adaptTimeRange))}},{key:"getTimeRangeByIdx",value:function(e){var t,n,i,r=null,a=this.videoTrak;a&&(r=e<a.length?a[e]:a[a.length-1]);var l=null,U=this.audioTrak;return U&&(l=e<U.length?U[e]:U[U.length-1]),[Math.min((null===(t=r)||void 0===t?void 0:t.range[0])||1/0,(null===(n=l)||void 0===n?void 0:n.range[0])||1/0),Math.max(r?r.range[1]-1:0,l?(null===(i=l)||void 0===i?void 0:i.range[1])-1:0)]}},{key:"getFragRange",value:function(e){var t;if(e<this.adaptTimeRange.length&&null!==(t=this.adaptTimeRange[e])&&void 0!==t&&t.range)return this.log(_t.LOG,"getFragRange exist",e,JSON.stringify(this.adaptTimeRange[e].range)),this.adaptTimeRange[e].range;var n=this.calculateRange(e);if(n&&e<this.adaptTimeRange.length){this.adaptTimeRange[e].range=n;var i=this.adaptTimeRange[e].timeRangeIdx[1];if(i<this.timeRange.length){var r=this.getTimeRangeByIdx(i);(null==r?void 0:r.length)>1&&r[0]<r[1]&&n[1]>r[0]&&(this.adaptTimeRange[e].repeatRange=[r[0],n[1]])}}return n}},{key:"getSubRange",value:function(e,t,n){for(var i=this.adaptTimeRange[e].timeRangeIdx,r=i[0],a=i[0];a<i[1];a++)if(t>=this.timeRange[a].startTime&&t<this.timeRange[a].endTime){r=a;break}var l=[this.getSrcFragRange(r)[0],n[1]];return this.log(_t.LOG,">>>>>getSubRange finalRange ",JSON.stringify(l),",oldRange,",JSON.stringify(n)),l}},{key:"getSrcFragRange",value:function(e){var t,n,i,r=null,a=null;this.log(_t.LOG,"getFragRange, timeRangeIdx, srcFragment,",JSON.stringify(e));var l=this.videoTrak;l&&l.length>0&&(r=e<l.length?l[e]:l[l.length-1]);var U=this.audioTrak;U&&U.length>0&&(a=e<U.length?U[e]:U[U.length-1]);var F=[Math.min((null===(t=r)||void 0===t?void 0:t.range[0])||1/0,(null===(n=a)||void 0===n?void 0:n.range[0])||1/0),Math.max(r&&(null===(i=r)||void 0===i?void 0:i.range[1])-1||0,a&&a.range[1]-1||0)];return this.log(_t.LOG,",getSrcFragRange",e,F),F}},{key:"getSamplesRange",value:function(e,t){var n=[],i="video"===t?this.videoTrak:this.audioTrak,r=this.lastDemuxSampleIdxRange[t],a=this.adaptTimeRange[e].timeRangeIdx;if(i&&i.length>0){n.push(r+1);var l=a[1]-1,U=i.length,F=l<U?i[l].frames:i[U-1].frames;n.push(F[F.length-1].index)}return n}},{key:"resetDemuxSampleIdx",value:function(e){if(e){var t=this.videoTrak,n=this.audioTrak;if(t){var i=t.find((function(t){return t.startTime<=e&&t.endTime>e}));if(i){var r=i.frames;this.lastDemuxSampleIdxRange.video=r[0].index-1}}if(n){var a=n.find((function(t){return t.startTime<=e&&t.endTime>e}));if(a){var l=a.frames;this.lastDemuxSampleIdxRange.audio=l[0].index-1}}}else this.lastDemuxSampleIdxRange={video:-1,audio:-1};this.log(_t.LOG,"resetDemuxSampleIdx",JSON.stringify(this.lastDemuxSampleIdxRange))}}])}(jU),OU=function(e){function t(e,n,i,r,a){var l;return b(this,t),(l=E(this,t,[e,n,i,r,a])).logTag="".concat(a,"_").concat(Ri.SIZE)||"",l.fillGopDataInfo=null,l}return x(t,e),N(t,[{key:"updateAdaptTimeRange",value:function(e,t){this.lastTargetDur=t,this.adaptTimeRange||(this.adaptTimeRange=[]);var n=this.adaptTimeRange,i=this.timeRange;if(null!==e&&e>=0){var r=this.getAdaptIdxBySrcIdx(e,!0);if(null!==r&&r>=0)return this.log(_t.LOG," adaptTimeRange find range of timeRange,timeRangeIdx,",e,JSON.stringify(i[e])," ,addaptIdx,",r,JSON.stringify(n[r])),r}this.fillAdadptTimeRange(e,t);var a=this.createAdaptTimeRange(t);return a&&(n.push(a),this.log(_t.LOG,"update adaptTimeRange,startIdx",this.adaptTimeRange.length-1,JSON.stringify(a))),this.adaptTimeRange.length-1}},{key:"fillAdadptTimeRange",value:function(e,t){var n=this.adaptTimeRange,i=this.timeRange;if(null!==e&&e>=0){var r,a;null!==(r=i[e])&&void 0!==r&&r.range||(i[e].range=this.calculateRange(e),this.log(_t.LOG,"adaptTimeRange update timeRange.range ,fragmentIdx",e,JSON.stringify(i[e])));for(var l=null===(a=n[n.length-1])||void 0===a?void 0:a.range,U=(null==l?void 0:l[1])||0;U<(null===(F=i[e])||void 0===F?void 0:F.range[0]);){var F,o=this.createAdaptTimeRange(t);if(o){var d;if((null==o?void 0:o.range[1])>=(null===(d=i[e])||void 0===d?void 0:d.range[0])){this.log(_t.LOG,"gap adaptTimeRange ignore,adaptTimeRangeIdx",JSON.stringify(o));break}n.push(o);var Q=n.length;n[Q-1].isLoading=!0,n[Q-1].downloaded=!0,U=n[n.length-1].range[1],this.log(_t.LOG,"gap adaptTimeRange,adaptTimeRangeIdx",this.adaptTimeRange.length-1,JSON.stringify(o))}}}}},{key:"calculateSize",value:function(e){var t,n,i,r=this.adaptTimeRange,a=this.timeRange,l=this.videoTrak,U=this.audioTrak;null!==(t=a[0])&&void 0!==t&&t.range||(a[0].range=this.calculateRange(0));var F=(null==r?void 0:r.length)||0,o=F>0&&r[F-1].range?r[r.length-1].range[1]:a[0].range[0],d=null;l&&l.length>0&&(d=this.getEndFrame("video",e));var Q=null===(n=d)||void 0===n?void 0:n.endFrame,s=null;U&&U.length>0&&(s=this.getEndFrame("audio",e));var c,u,B,R,h,V=null===(i=s)||void 0===i?void 0:i.endFrame;if(Q&&V){var p,m,Z=Q.offset+Q.size,S=V.offset+V.size;if(Z>S)(c=this.getFrameByPos("audio",null===(p=s)||void 0===p?void 0:p.newSegmentIdx,V.index,Z))&&(V=c);else(c=this.getFrameByPos("video",null===(m=d)||void 0===m?void 0:m.newSegmentIdx,Q.index,S))&&(Q=c)}return Q&&V?{endAudioFrame:V,endVideoFrame:Q,segmentIdx:Math.min(null===(u=d)||void 0===u?void 0:u.newSegmentIdx,null===(B=s)||void 0===B?void 0:B.newSegmentIdx),size:Math.max(Q.offset+Q.size,V.offset+V.size)-o}:Q?{segmentIdx:null===(R=d)||void 0===R?void 0:R.newSegmentIdx,size:Q.offset+Q.size-o,endVideoFrame:Q}:V?{segmentIdx:null===(h=s)||void 0===h?void 0:h.newSegmentIdx,endAudioFrame:V,size:V.offset+V.size-o}:void 0}},{key:"getFrameByPos",value:function(e,t,n,i){var r,a,l,U="video"===e?this.videoTrak:this.audioTrak;if(null==U||!U.length)return null;for(var F=!1,o=n+1,d=t;d<U.length;d++){for(var Q,s,c=(null===(s=r=(null===(Q=U[d])||void 0===Q?void 0:Q.frames)||[])||void 0===s||null===(s=s[0])||void 0===s?void 0:s.index)||0;o<=r[r.length-1].index;o++){if(!((a=r[o-c]).offset+a.size<=i)){F=!0;break}l=a}if(F)break}return l}},{key:"getEndFrame",value:function(e,t){var n,i,r,a,l;if("video"===e?(a=this.videoTrak,l=t*this.meta.videoTimescale):(a=this.audioTrak,l=t*this.meta.audioTimescale),null===(n=a)||void 0===n||!n.length)return null;for(var U=this.adaptTimeRange,F=null,o=-1,d=(null==U?void 0:U.length)>0?U[U.length-1]:null,Q=(null===(i="video"===e?null==d?void 0:d.endVideoFrame:null==d?void 0:d.endAudioFrame)||void 0===i?void 0:i.index)||0,s=(null==d?void 0:d.segmentIdx)||0,c=Math.round(l/a[0].frames[0].duration),u=s;u<a.length;u++){var B=a[u].frames;if((null==B?void 0:B.length)>0&&(B[B.length-1].index-Q>=c||u===a.length-1)){var R=a[a.length-1].frames;F=B[Math.min(R[R.length-1].index,Q+c)-B[0].index],o=o<0?u:Math.min(o,u);break}}return this.log(_t.LOG,"calculateSize, ".concat(e,", frameNum, ").concat(c,", \n idx: ").concat(Q," - ").concat(null===(r=F)||void 0===r?void 0:r.index)),{newSegmentIdx:o,endFrame:F}}},{key:"createAdaptTimeRange",value:function(e,t){var n,i,r,a=this.calculateSize(e,t),l=a.size-1;if(this.log(_t.LOG,"createAdaptTimeRange, \n mergeDuration: ".concat(e," \n adaptIdx:").concat(t," \n loadSize:").concat(l)),0!==l){var U=this.adaptTimeRange,F=!t||t<=0?U.length-1:t-1,o=F>=0?U[F]:null,d=(null==o||null===(n=o.range)||void 0===n?void 0:n[1])+1||this.timeRange[0].range[0];if(d>=this.fileSize)return null;var Q=Math.min(d+l-1,this.fileSize-1);return{startTime:(null==o?void 0:o.endTime)||this.timeRange[0].startTime,endTime:Math.min(null!=a&&null!==(i=a.endVideoFrame)&&void 0!==i&&i.pts?a.endVideoFrame.pts/this.meta.videoTimescale:Number.MAX_VALUE,null!=a&&null!==(r=a.endAudioFrame)&&void 0!==r&&r.pts?a.endAudioFrame.pts/this.meta.audioTimescale:Number.MAX_VALUE),range:[d,Q],duration:e,downloaded:!1,isLoading:!1,endAudioFrame:a.endAudioFrame,endVideoFrame:a.endVideoFrame,segmentIdx:a.segmentIdx}}}},{key:"getCurLoadSize",value:function(e){(!e||e<=0)&&(e=5);var t=Math.floor(this._bitRate/8||this.fileSize/this.meta.duration);return Math.ceil(e*t)}},{key:"getFragRange",value:function(e){var t,n=this.adaptTimeRange;if(e<n.length&&null!==(t=n[e])&&void 0!==t&&t.range)return this.log(_t.LOG,"getFragRange exist",e,JSON.stringify(n[e].range)),n[e].range;var i=this.updateAdaptTimeRange(null,n[e].duration);return this.adaptTimeRange[i].range}},{key:"getSamplesRange",value:function(e,t){var n=[],i="video"===t?this.videoTrak:this.audioTrak;if(null==i||!i.length)return n;var r=this.lastDemuxSampleIdxRange[t],a=this.adaptTimeRange[e],l=("video"===t?a.endVideoFrame:a.endAudioFrame).index;return n.push(r+1,l),n}},{key:"getAdaptIdxBySrcIdx",value:function(e,t){var n=this.adaptTimeRange,i=this.timeRange;if(null==n||!n.length||null==i||!i.length)return-1;var r=n.length;if(t)return this.getAdaptIdx(e);var a=this.getAdaptIdx(e);if(a>=0)return this.log(_t.LOG,",getAdaptIdxBySrcIdx, fragIndex, ",e,",adaptIdx,",a),a;if(n[r-1].range[1]<this.fileSize-1)for(;(null===(l=i[e].range)||void 0===l?void 0:l[1])>=(null===(U=n[n.length-1].range)||void 0===U?void 0:U[1]);){var l,U;this.updateAdaptTimeRange(e,this.lastTargetDur||5);var F=this.getAdaptIdx(e);if(F>0)return this.log(_t.LOG,"new make, getAdaptIdxBySrcIdx, fragIndex, ",e,",adaptIdx,",a),F}return this.adaptTimeRange.length-1}},{key:"getAdaptIdx",value:function(e){var t,n=this.adaptTimeRange,i=this.timeRange,r=null===(t=i[e])||void 0===t?void 0:t.range;r||(r=VU.getFragRange(e,this.videoTrak,this.audioTrak),i[e].range=r,this.log(_t.LOG,",updateTimeRange.range, fragIndex, ",e,JSON.stringify(i[e])));var a=n.findIndex((function(e){var t,n;return(null==e?void 0:e.range[0])<=(null===(t=r)||void 0===t?void 0:t[0])&&(null==e?void 0:e.range[1])>=(null===(n=r)||void 0===n?void 0:n[0])}));return this.log(_t.LOG,",getAdaptIdx, srcIdx, ",e,JSON.stringify(i[e]),", adaptIdx,",JSON.stringify(n[a])),a}},{key:"resetFragmentLoadState",value:function(e){var t,n=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(this.log(_t.LOG,", resetFragmentLoadState, fragIndex, ",e,",changeBitrate,",n),n){var i=this.adaptTimeRange.length;this.adaptTimeRange.splice(e+1,i-e-1),t=this.adaptTimeRange.map((function(e){return e.duration})),this.adaptTimeRange=[]}else t=this.adaptTimeRange;for(var r=this.adaptTimeRange,a=0;a<t.length;a++)if(r[a]&&(a<e?(r[a].downloaded=!0,r[a].isLoading=!0):(r[a].downloaded=!1,r[a].isLoading=!1)),n){var l=this.createAdaptTimeRange(t[a],a);l&&(a<e&&(l.downloaded=!0,l.isLoading=!0),this.adaptTimeRange.push(l))}}},{key:"getSubRange",value:function(e,t,n){var i,r,a=this.adaptTimeRange,l=this.timeRange,U=null===(i=a[e])||void 0===i?void 0:i.range,F=this.getFragmentIdx(t);null!==(r=l[F])&&void 0!==r&&r.range||(l[F].range=this.calculateRange(F));var o=[l[F].range[0],U[1]];return this.log(_t.LOG,">>>>>getSubRange finalRange ",JSON.stringify(o),",oldRange,",JSON.stringify(n),",adaptIdx,",e,",srcFragIndex,",F,JSON.stringify(l[F])),o}},{key:"resetDemuxSampleIdx",value:function(e){if(e){var t=this.videoTrak,n=this.audioTrak;if((null==t?void 0:t.length)>0){var i=t.find((function(t){return t.startTime<=e&&t.endTime>e}));if(i){var r=i.frames;this.lastDemuxSampleIdxRange.video=r[0].index-1}}if((null==n?void 0:n.length)>0){var a=n.find((function(t){return t.startTime<=e&&t.endTime>e}));if(a){var l=a.frames;this.lastDemuxSampleIdxRange.audio=l[0].index-1}}}else this.lastDemuxSampleIdxRange={video:-1,audio:-1};this.log(_t.LOG,"resetDemuxSampleIdx",JSON.stringify(this.lastDemuxSampleIdxRange))}},{key:"calculateRange",value:function(e){return VU.getFragRange(e,this.videoTrak,this.audioTrak)}},{key:"fillGopData",value:function(e){var t=-1,n=-1,i=-1;if(this.videoTrak.length){var r=this.getEndFrameByTime("video",e);t=(null==r?void 0:r.index)||-1,i=r.offset+r.size;var a=this.getEndFrameByTime("audio",e);n=(null==a?void 0:a.index)||-1,i=Math.max(i,a.offset+a.size)}else{var l=this.getEndFrameByTime("audio",e);n=(null==l?void 0:l.index)||-1,i=l.offset+l.size}this.fillGopDataInfo={endVFrameIdx:t,endAFrameIdx:n,endRange:i},this.log(_t.LOG,"fillGopDataInfo: ".concat(t,", ").concat(n,", ").concat(i))}},{key:"getEndFrameByTime",value:function(e,t){var n="video"===e?this.videoTrak:this.audioTrak;if(n){var i=n.find((function(e){return e.startTime<=t&&e.endTime>t}));if(i)return i.frames[i.frames.length-1]}}}])}(jU);function zU(){var e=window.navigator.userAgent,t=e.indexOf("MSIE "),n=e.indexOf("Trident/");return t>0||n>0}function AU(){return/Safari/.test(navigator.userAgent)&&!/Chrome/.test(navigator.userAgent)}function qU(){var e,t,n,i,r;return!(!navigator.requestMediaKeySystemAccess||(e=AU(),t=zU(),n=function(){var e=navigator.mimeTypes,t=navigator.userAgent,n=!1;return e&&t.indexOf("Chrome")>1&&(n=Object.keys(e).some((function(t){return!!(e[t].type&&e[t].type.indexOf("360")>-1)||!!(e[t].type&&e[t].type.indexOf("application/vnd.chromium.remoting-viewer")>-1)||!!(e[t].description&&e[t].description.indexOf("360")>-1)}))),n}(),i=navigator.userAgent.indexOf("Firefox")>0,r=navigator.userAgent.indexOf("Edge")>0,e||t||n||i||r))}function $U(){try{if("object"===("undefined"==typeof WebAssembly?"undefined":j(WebAssembly))&&"function"==typeof WebAssembly.instantiate){var e=new WebAssembly.Module(Uint8Array.of(0,97,115,109,1,0,0,0));if(e instanceof WebAssembly.Module)return new WebAssembly.Instance(e)instanceof WebAssembly.Instance}}catch(t){}return!1}function eF(){if("undefined"!=typeof self)return arguments.length>0&&void 0!==arguments[0]&&arguments[0]&&"undefined"!=typeof ManagedMediaSource?ManagedMediaSource:self.MediaSource||self.WebKitMediaSource}function tF(){if("undefined"==typeof self)return!1;var e=eF(!(arguments.length>0&&void 0!==arguments[0])||arguments[0]),t=!!e&&"function"==typeof e.isTypeSupported;return t&&void 0===self.MediaSource&&(self.MediaSource=e),t}var nF=function(){return N((function e(){var t,n;b(this,e);var i=new Promise((function(e,i){t=e,n=i}));return i.resolve=function(e){t(e),i.state="fulfilled"},i.reject=function(e){n(e),i.state="rejected",i.isBreak="DESTROYED"===e},i.state="pending",i}),[{key:"resolve",value:function(e){}},{key:"reject",value:function(e){}}])}(),iF="DESTROYED",rF="xglog_cache",aF="degrade",lF="UPDATE_URL",UF=null,FF=null,oF=null,dF=null,QF=0,sF=function(e){function t(e){var n,i;return b(this,t),T(i=E(this,t,[e]),"_onChangeConfig",(function(e){if(e){var t=e.nextBufferLength===i.config.minBufferLength;if(i.setConfig(e),e.nextBufferLength&&!t)try{i._onTimeUpdate()}catch(n){}}})),T(i,"fpsStuckHandle",(function(e){var t=i,n=t.player,r=t.mse;if(i.fpsStuckTime||(i.fpsStuckTime=e.currentTime,i.log(_t.LOG,"fpsStuckHandle, currentTime,",e.currentTime)),r&&i.fpsStuckTime>0){var a=n.bufferedPoint;r.clearOpQueues(ln.VIDEO),i.log(_t.LOG,"fpsStuckHandle, remove: ".concat(a.start,"-").concat(a.end,","),"stuckTime: ".concat(i.fpsStuckTime)),r.remove(ln.VIDEO,a.start,a.end).then((function(){n.currentTime=i.fpsStuckTime,i.fpsStuckTime=null}))}})),T(i,"_replayHook",(function(e){})),T(i,"_retryHook",(function(){var e=i,t=e.player,n=e.playerConfig,r=t.paused;i.softDecode?t.vtype=ne.MP4_MSE_SOFT:t.vtype=ne.MP4_MSE,i._defInited=!1,i._MSEError=!1,t.video.removeEventListener("loadedmetadata",i.__onmetadataHandle);var a=t.currentTime||0;return i.log(_t.LOG,"retryHook ",n.vid,i.codecType,a),i.__onmetadataHandle=function(){a&&(t.currentTime=a,i.log(_t.LOG,"retryHook update currentTime",n.vid,i.codecType,a)),r?t.pause():t.play(),t.video.removeEventListener("loadedmetadata",i.__onmetadataHandle),i.__onmetadataHandle=null},t.video.addEventListener("loadedmetadata",i.__onmetadataHandle),i.destroyMSE(),i._reset(),i.states=[],i.playerStartInit(n.url),!1})),T(i,"_playHook",(function(e){i._usePaused=!1,i._cancelLoading=!1,i.log(_t.LOG,"playHook"),i._startProgress()})),T(i,"_pauseHook",(function(e){var t;i._usePaused=!0;for(var n=arguments.length,r=new Array(n>1?n-1:0),a=1;a<n;a++)r[a-1]=arguments[a];i.log(_t.LOG,"pauseHook",r[0],null===(t=i.player)||void 0===t?void 0:t.currentTime),r.indexOf(null==hi?void 0:hi.BUFFER_CONTROLS)<0&&(clearTimeout(i.checkResumePlayTimer),i.checkResumePlayTimer=null,i.log(_t.LOG,"pause hook clear buffer_control state")),i._loadStuckCheck()})),T(i,"abrSwitchURL",function(){var e=k(M().mark((function e(t){var n,r,a,l,U;return M().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:n=i.playerConfig,r=n.definition.list,a=0,l=0;case 4:if(!(l<r.length)){e.next=11;break}if(t.definition!==r[l].definition){e.next=8;break}return a=l,e.abrupt("break",11);case 8:l++,e.next=4;break;case 11:U=i.player.curDefinition,i.changeDefinition(r[a],U,!0);case 13:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()),T(i,"timerHandle",(function(){i._requestTimer&&i._onTimeUpdate()})),T(i,"changeDefineCanPlay",(function(e,t,n,r){var a,l=i.player,U=i._changeDefState?i._changeDefState.currentTime:e;(i.needStarLoadFirstSegment=!0,l.changeDefinitionSeekState=1,i.log(_t.LOG,"changeDefineCanPlay seek changeBitrate point ".concat(U,", pause: ").concat(null===(a=i._changeDefState)||void 0===a?void 0:a.paused)),l.ended)?l.currentTime=0:(l.currentTime=U,!!i._changeDefState&&i._changeDefState.paused?l.pause():l.play(),i._changeDefState=null,l.emit(W.Events.AFTER_DEFINITION_CHANGE,{from:n,to:r}))})),T(i,"changeDefinition",(function(e,t,n){var r=i,a=r.player,l=r.playerConfig,U=r.mp4,F=r.config;if(t||(t=a.curDefinition),i._MSEError=!1,i._isReceiveEndedEvent=!1,i.useVideoLoad)return"__auto__"===e.url&&(e.url=a.config.definition.list[0].url),void oF.call(i.player,e,t);var o=a.definitionList.filter((function(t){return t.definition===e.definition}));if(o.length>0&&(e=o[0]),i._handlerUrl(e.url),e._mainURL=F._mainURL,e._backupURL=F._backupURL,!i._switchBitRateWay||n){var d="自动"===e.definition||"auto"===e.definition;if(n)i.log(_t.LOG,"[switchBitrate:ABR], ready to switch bitRate, ",e.bitrate,e.definition);else{var Q,s=!1;if(d){var c,u,B;null===(c=i._abrService)||void 0===c||c.updateCurrentHDRStatus(null===(u=t)||void 0===u?void 0:u.isHDR),null===(B=i._abrService)||void 0===B||B.enable(),s=!0}else{var R;i._abrService&&i._abrService.disable();var h=null===(R=l.definition)||void 0===R?void 0:R.list;if(h&&(!e.bitrate||!e.uri||!e.size||!e.duration))for(var V=0;V<h.length;V++)if(e.definition===h[V].definition){e.bitrate=h[V].bitrate,e.uri=h[V].uri||t.uri,e.size=h[V].size||VU.getFileSize(e.bitrate,l.duration),e.duration=h[V].duration||i.playerConfig.duration;break}}null===(Q=i.adaptRange)||void 0===Q||Q.updateBitrate(e.bitrate),a.oldBit=e.bitrate,a.emit(W.Events.DEFINITION_CHANGE,{from:t,to:e}),setTimeout((function(){i._abrService&&i._abrService.updateAutoDefiDesc(a.curDefinition.definition,!d)})),s&&(e=a.curDefinition),i.log(_t.LOG,"[switchBitrate:CBS],switch bitRate, ",e.bitrate,e.definition,a.currentTime)}if(a.curDefinition=e,i.mp4.clearPCDNNodeList(),i.checkPCDN(),U){["keyValue","kid","secretKey","drm","getLicenseUrl","drmKeyToken","sessionId"].forEach((function(t){F[t]=e[t]}));var p=i.config,m=p.kid,Z=p.drmKeyToken,S=p.secretKey,J=p.keyValue,f=p.drm,y=p.reuseSecretKey,E=null;if(m||Z||S||J||f)i._secretkey?y||i._secretkey.updateConfig(i.config):(i._secretkey=new ee.XGSecretKey(i.config),i._secretkey.on(ee.EVENT_EME.ERROR,i._errorHandler)),(E=i._secretkey.getLicenseSecret()).then((function(){if(i.player&&i._secretkey){var e=i.player.video||i.player.media;i._secretkey.setOptions(),i._secretkey.setupEME(e)}}));else{var b=Promise.withResolvers();E=b.promise,(0,b.resolve)()}E.then(function(){var n=k(M().mark((function n(r){var o,d,Q,s,c,u,B,R,h,V,p,m,Z,S;return M().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(null!=r&&r.secretKey&&(!F.keyValue&&(F.secretKey=r.secretKey),F.decryptKey=r.decryptKey),l.url=e.url,d=0,Q=!1,s=a.getBufferedRange(),i._abrService&&i._abrService.isCurrentInAbr()?(c=Math.max(s[1],a.currentTime),d=i.getCurGopEndTime(c)):(d=i.getCurGopEndTime(),Q=!0),!(d>=U.timeRange[U.timeRange.length-1].startTime)){n.next=9;break}return i.log(_t.LOG,"switch bitrate last segment, so return"),n.abrupt("return");case 9:if(u=null===(o=i._abrService)||void 0===o?void 0:o.isCurrentInAbr(),null==U||U.updateChangeBitRateTime(d),B=U.getFragmentIdx(d),!(s[1]<d)){n.next=16;break}U.fillGopData&&U.fillGopData(a.currentTime),n.next=20;break;case 16:return i.canDownload=!1,n.next=19,U.cancelLoading();case 19:U.metaLoading=!1;case 20:(R=i.getAdaptTimeRangeIdx(B))<0&&(R=i._curLoadSegmentIdx),i.log(_t.LOG,"switchBitrate point: ".concat(R),"currentTime: ".concat(a.currentTime,", timeStart: ").concat(d,", \n buffer: ").concat(s[0]," - ").concat(s[1])),Q&&a.emit("definitionSwitchTime",U.adaptTimeRange[R].startTime+1),i._definitionChangePointInfo={changeStartTime:d,changeInfo:{from:t,to:e}},i._removeBuffEndTime=d,!((h=a.getBufferedRange(a.buffered))[1]>0&&h[1]>d)||i._abrService&&u||(i.removeBuffer(ln.VIDEO,d,h[1]),i.log(_t.LOG,"switchBitrate: ready to remove buffer, ".concat(d," - ").concat(h[1]))),(V=U.getFragmentIdx(a.currentTime))>0&&(p=a.buffered.start(0),m=U.timeRange[V].startTime-1,i.removeBuffer(ln.VIDEO,p,m,(function(){i.log(_t.LOG,"switchBitrate: remove old bitrate buffer end",JSON.stringify(a.getBufferedRange(a.buffered)))})),i.log(_t.LOG,"switchBitrate: ready to remove pre buffer, ".concat(p," - ").concat(m))),Z=U.getAdaptIdxBySrcIdx(V)+1,i.log(_t.LOG,"switchBitrate: resetFragmentLoadState, ".concat(Z,", changeBitRateIdx: ").concat(R)),U.resetFragmentLoadState(Z),i._curLoadSegmentIdx=Z,i.mp4.readyToChangeBitrate(e),i._setCurrentDefinition(e),i._emitDefinitionChangeDetailEvent(d),i.canDownload=!0,i._onTimeUpdate(),S={width:e.width||e.vwidth,height:e.height||e.vheight},a.emit("RESOLUTION_UPDATE",S);case 41:case"end":return n.stop()}}),n)})));return function(e){return n.apply(this,arguments)}}()).catch((function(t){i.log(_t.ERROR,"switchBitrate: GET_LICENSE_ERROR, ".concat(null==t?void 0:t.message));var n=new W.Errors(i.player,{errorType:Ti.DRM,errorCode:gi.custom_drm,errorMessage:(null==t?void 0:t.message)||"GET_LICENSE_ERROR",vid:l.vid});t.errorType="GET_LICENSE_ERROR",i.emit("GET_LICENSE_ERROR",n),i.changeState("LICENSE_ERROR",{d:e.definition})}))}}else i.oldChangeDefinition(e,t)})),T(i,"_onVideoError",(function(e){var t,n,r=i.player;i.changeState("video_error",{code:e.code||(null==r||null===(t=r.video)||void 0===t||null===(t=t.error)||void 0===t?void 0:t.code),message:e.message||(null==r||null===(n=r.video)||void 0===n||null===(n=n.error)||void 0===n?void 0:n.message),videoType:i.useVideoLoad})})),T(i,"removeBuffer",(function(e,t,n,r){var a,l=i.getBufferDur();null===(a=i.mse)||void 0===a||a.remove(e,t,n).then((function(){var e=i.player,t=i.getBufferDur(),n=l-t;if(n>0){i.emit("removeBuffer",{removeDur:n});for(var a=[],U=0;U<e.buffered.length;U++)a.push([e.buffered.start(U),e.buffered.end(U)]);i.log(_t.LOG,"removeDur end,curBuffer:".concat(JSON.stringify(a),",\n currentTime:").concat(i.player.currentTime))}r&&r()}))})),T(i,"_onPlaying",(function(){i._waitAdjustTimeCnt>0&&i._waitInBufferTimer&&(i._waitAdjustTimeCnt-=1,i.log(_t.WARN,"[waitInBuffer resume play], waitAdjustTimeCnt,",i._waitAdjustTimeCnt)),clearTimeout(i._waitInBufferTimer),i._waitInBufferTimer=null;var e=i,t=e.mp4,n=e.player,r=i.config.resumePlayWaterLevel;if(t){if(!(t&&t.meta&&t.meta.duration-n.currentTime<=r)&&(i.waitLevelStartTime<0&&(i.waitLevelStartTime=n.currentTime),i.playFlag||(i.playFlag=!0),!(void 0===n.isBufferControlPaused||r<=0)&&r>0&&n.currentTime-i.waitLevelStartTime>=2)){var a=n.getBufferedRange(n.buffered2);a[1]>0&&a[1]-n.currentTime<r?(n.paused||(i.emit(si,{type:ci}),n.pause(null==hi?void 0:hi.BUFFER_CONTROLS),i.log(_t.LOG,"[!!!!!buffer not rich, pause],currentTime, ",n.currentTime,", bufferEnd,",a[1])),clearTimeout(i.checkResumePlayTimer),i.checkResumePlayTimer=setTimeout(i._onPlaying,r/2*1e3)):n.isBufferControlPaused&&n.paused&&(i.log(_t.LOG,"[!!!!!buffer rich, play],, currentTime, ",n.currentTime,", bufferEnd,",a[1]),clearTimeout(i.checkResumePlayTimer),i.checkResumePlayTimer=null,n.isBufferControlPaused=!1,i.emit(si,{type:ui}),n.play())}}else i.checkResumePlayTimer>0&&(clearTimeout(i.checkResumePlayTimer),i.checkResumePlayTimer=null,n.isBufferControlPaused&&(n.isBufferControlPaused=!1),n.paused&&n.play())})),T(i,"_lowDecoder",(function(){var e="function"==typeof i.player.video.getStats?i.player.video.getStats():null;i.log(_t.WARN,"H265 lowdecode: ".concat(i.playerConfig.vid," "),e,", h265Degrade, ",i.config.h265Degrade),i.config.h265Degrade&&i._onDegrade()})),T(i,"_onError",(function(e){i._onDegrade(e)})),T(i,"_onDegrade",(function(e){var t,n,r=i,a=r.player,l=r.playerConfig,U=r.config;a.video.removeEventListener("lowdecode",i._onDegrade),a.video.removeEventListener("error",i._onError),null===(t=i.mp4)||void 0===t||t.destroy();var F=a.currentTime;if(i.log(_t.WARN,"[h265 degrade], vid,",l.vid,",currtime,",F),i.emit(aF,{errc:null==e?void 0:e.errorCode,err_msg:(null==e?void 0:e.errorMessage)||(null==e?void 0:e.message),CodecTypes:i.codecType,media_type:l.mediaType}),null!=U&&U.H264Config){var o=U.H264Config;["drm","getLicenseUrl","kid","keyValue","secretKey","isEncrypt","useEME"].forEach((function(e){U[e]=o[e]||null}))}var d={mp4encryptplayer:U,mediaType:"video",codecType:re.H264};if((null==l||null===(n=l.H264DefinitionList)||void 0===n?void 0:n.length)>0){var Q=i._processArrayUrl(l.H264DefinitionList);l.H264DefinitionList=Q,a.config.definition.list=Q,a.config.url=Q[0].url,a.config.defaultBitrate=l.H264DefinitionList[0].bitrate,a.config.defaultDefinition=l.H264DefinitionList[0].definition,i.isH265DegradeH264=!0,a.playNext(d),i.__onmetadataHandle=function(){a.currentTime=F,i.isH265DegradeH264=!1,i.log(_t.LOG,"H265DegradeH264 update currentTime",F),a.video.removeEventListener("loadedmetadata",i.__onmetadataHandle),i.__onmetadataHandle=null},a.video.addEventListener("loadedmetadata",i.__onmetadataHandle)}else a.pause(),i._reset(),i.states=[],i.checkReUseMSE(!1),i.log(_t.ERROR,"H265 error,degrade h264 but no h264 url"),i.emit("error",e)})),T(i,"_onMp4MetaReady",(function(e,t){if(t&&!t.hasDestroyed){var n=i._checkMetaInfo(e);if(n)i._errorHandler(n);else{var r=e.videoCodec,a=e.audioCodec;i._mediaCodec.videoCodec=r,i._mediaCodec.audioCodec=a;try{i._initEME(e),i.softDecode?(i.log(_t.LOG,"initMseProxy"),i._initMseProxy()):i.player.video instanceof HTMLVideoElement&&(i.log(_t.LOG,"initMse"),i._initMse(e)),i._initPromise&&i._initPromise.resolve()}catch(U){return void i._errorHandler(new W.Errors(i.player,{errorType:Ti.MEDIA,errorCode:gi.eme_hijack,errorMessage:(null==U?void 0:U.message)||"eme or mse catch err",vid:i.playerConfig.vid}))}if(null!=t&&t.timeRange){var l=[];t.timeRange.every((function(e){return l.push({startTime:e.startTime,endTime:e.endTime}),!0})),i.emit("KEYFRAMETIME",l)}t===i.mp4&&i._loadData()}}else i.log(_t.LOG,"Mp4MetaReady but return, ".concat(!!t,", ").concat(null==t?void 0:t.hasDestroyed))})),T(i,"_onMp4Error",function(){var e=k(M().mark((function e(t){return M().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:i._errorHandler(t);case 1:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()),T(i,"_onMp4Progress",(function(e){i.emit("progress_event",e)})),T(i,"_onMp4DataCallBack",(function(){i._isMseInit&&i._onTimeUpdate()})),T(i,"_updateDrmConfig",(function(e){var t=i,n=t.config;t.mp4.updateSecretKey(n.useEME,n.secretKey,n.decryptKey,n.keyValue),i._secretkey&&e.kid&&i._secretkey.updateKid(e.kid)})),T(i,"_updateMSE",(function(e){i.player.video instanceof HTMLVideoElement&&(i.log(_t.LOG,"updateMse",e.videoCodec),i._initMse(e))})),T(i,"_onVideoTimeUpdate",(function(){var e,t,n,r,a,l,U,F,o=i,d=o.mse,Q=o.player;(i.waitLevelStartTime<0&&(i.waitLevelStartTime=Q.currentTime),i.checkReStartTimer(),i._isEnded(),Q.isSeeking&&(Q.isSeeking=!1),!i.useVideoLoad&&d&&i._removeBuffEndTime>0&&Q.currentTime>i._removeBuffEndTime+1&&(i.log(_t.LOG,"remove old bitrate buffer,0 - ".concat(i._removeBuffEndTime)),i.removeBuffer(ln.VIDEO,0,i._removeBuffEndTime-1),i._removeBuffEndTime=0),Q.currentTime>=(null===(e=i._definitionChangePointInfo)||void 0===e?void 0:e.changeStartTime)&&(i.needStarLoadFirstSegment=!0,t=window.chrome,n=window.navigator,r=n.vendor,a=void 0!==window.opr,l=n.userAgent.indexOf("Edge")>-1,(n.userAgent.match("CriOS")||null!=t&&"Google Inc."===r&&!1===a&&!1===l)&&(i.log(_t.LOG,"definitionChangePointInfo update\n changeDefinitionSeekState = 2\n ".concat(Q.currentTime)),Q.changeDefinitionSeekState=2)),i._definitionChangePointInfo&&Q.currentTime>i._definitionChangePointInfo.changeStartTime)&&(Q.emit(W.Events.AFTER_DEFINITION_CHANGE,i._definitionChangePointInfo.changeInfo),i.log(_t.LOG,W.Events.AFTER_DEFINITION_CHANGE,", currentTime,",Q.currentTime,",from ",null===(U=i._definitionChangePointInfo)||void 0===U||null===(U=U.changeInfo)||void 0===U||null===(U=U.from)||void 0===U?void 0:U.definition," to ",null===(F=i._definitionChangePointInfo)||void 0===F||null===(F=F.changeInfo)||void 0===F||null===(F=F.to)||void 0===F?void 0:F.definition),i._definitionChangePointInfo=null);i.useVideoLoad||null!==i._requestTimer||!i._offineLine&&!i._cancelLoading&&i._startProgress(),i._lastBufferPoint=Q.bufferedPoint})),T(i,"_onBufferedReset",(function(){i.mp4&&i.mp4.videoTrak&&i.mp4.resetFragmentLoadState(0)})),T(i,"_onOnlineHandler",(function(){i._offineLine=!1;var e=i,t=e.playerConfig,n=e.player,r=n.currentTime,a=n.paused;i.log(_t.LOG,"online useVideoLoad:",i.useVideoLoad,i._hasStartProgressBack),i.useVideoLoad?(i.__onmetadataHandle=function(){r&&(n.currentTime=r),i.log(_t.LOG,"onOnlineHandler update currentTime",t.vid,i.codecType,i._currentTime),a?n.pause():n.play(),n.video.removeEventListener("loadedmetadata",i.__onmetadataHandle),i.__onmetadataHandle=null},n.video.addEventListener("loadedmetadata",i.__onmetadataHandle),i._setPlayerSrc(t.url)):(i._hasStartProgressBack&&i._startProgress(),i._hasStartProgressBack=!1)})),T(i,"_onOfflineHandler",(function(){i._offineLine=!0,i.log(_t.LOG,"offline, ",i._hasStartProgress),i._hasStartProgress&&(i._stopProgress(),i._hasStartProgressBack=!0)})),T(i,"_loadDataSuccess",(function(e){if(!i.isDestroy&&(i.mse||i.mseProxy)){try{e.initSeg&&(i._appendInitSeg(e.initSeg),(!e.buffer||e.buffer.byteLength<1)&&i._onTimeUpdate());var t=e.buffer,n=e.state,r=e.context,a=e.videoTrack,l=e.audioTrack;if(i.debugInfo.loadIndx=r?r.fragIndex:-1,i.mse){var U,F;if(n&&(!t||(null==t?void 0:t.byteLength)<=0)&&null!==(U=i.mp4)&&void 0!==U&&U.checkIsLoadEnd(null===(F=r.range)||void 0===F?void 0:F[1])){var o=i.player.buffered;i._loadedEnd=!0;var d=0;o&&(null==o?void 0:o.length)>0&&(d=o.end(o.length-1)),i._isEnded(),i.log(_t.LOG,"loaded ended !!!==>>>","range: ".concat(JSON.stringify(r.range)),"fragIndex: ".concat(r.fragIndex),"bufferEndTime: ".concat(d),"meta_duration: ".concat(i.mp4.meta.duration))}if(t&&(null==t?void 0:t.byteLength)>0){i._appendBuffer(ln.VIDEO,t,r,n);var Q=i.getDataBitRate(r.fragIndex);i.player.emit("addVideoBufferEnd",{start:Math.floor(r.startPts),end:r.endPts,bandwidth:Q.bitrate})}}else if(i.mseProxy&&(a&&a.samples.length>0||l&&l.samples.length>0)){if(a.editListApplied){var s,c=a.editList,u=a.samples,B=0;(null==c||null===(s=c.entries)||void 0===s?void 0:s.length)>0&&(B=c.entries[0].media_time),u.forEach((function(e){e.dts+=B,e.pts+=B,e.originDts+=B,e.originPts+=B})),a.baseMediaDecodeTime+=B}i.log(_t.LOG,"[xgvideo] append","index: ".concat(r.fragIndex),"range: ".concat(JSON.stringify(e.context.range)),"timeRange: ".concat(r.timeRange)),i.mseProxy.appendBuffer(a,l)}}catch(h){i.changeState("APPEND_DATA_ERROR",{errMsg:null==h?void 0:h.message});var R=new W.Errors(i.player,{errorType:Ti.MEDIA,errorCode:gi.mseAppend,vid:i.playerConfig.vid,errorMessage:h.message,mediaError:{code:gi.mseAppend,message:h.message}});i._errorHandler(R)}null!=e&&e.state&&i._onTimeUpdate()}})),T(i,"_onResumePlaying",(function(){i._resumePlay=!0})),T(i,"_seekOnce",(function(e){var t=i.player;t&&(t.currentTime=e+.1*Math.pow(2,i._currentSeekTimes||0),i._currentSeekTimes++,i.log(_t.LOG,"当前第".concat(i._currentSeekTimes,"次Seek,currentTime=").concat(null==t?void 0:t.currentTime)))})),T(i,"_onWaiting",(function(){var e;i.checkReStartTimer(),i._isEnded();var t=JSON.stringify(i.getAllBufferRange());i.changeState("waiting",{curtime:i.player.currentTime,buffer:t});var n=i,r=n.player,a=n.config,l=n.playerConfig,U=n.mp4;clearTimeout(i._waitInBufferTimer),i._waitInBufferTimer=null;var F=r.currentTime;i.log(_t.LOG,",[onWaiting],curTime, ",F,",buffer,",t,",dur,",null==U||null===(e=U.meta)||void 0===e?void 0:e.duration);var o=r.bufferedPoint;o.end>0&&(o.end-F>=2||i._loadedEnd)?i._waitAdjustTimeCnt<a.waitJampBufferMaxCnt?i._waitInBufferTimer=setTimeout((function(){i._waitAdjustTimeCnt++,i.changeState("waitInBuffer_seek",{waitAdjustTimeCnt:i._waitAdjustTimeCnt,curTime:F}),r.currentTime=r.currentTime+.5}),a.waitingInBufferTimeOut):i._errorHandler(new W.Errors(i.player,{errorType:Ti.RUNTIME,errorCode:gi.waitTimeout,errorMessage:"onWaitTimeout_in_buffer",vid:l.vid})):i._loadStuckCheck()})),T(i,"_onEnded",(function(){i.log(_t.LOG,"[player.onEnded], stopProgress"),i._stopProgress()})),T(i,"_errorHandler",(function(e){var t;i._setPlayerError(e);var n=i,r=n.player,a=n.playerConfig,l=n.preLoadData;if(r&&!i.useVideoLoad){if(e.errorCode===gi[403]&&i._emitExpireEvent(e)&&i.config.urlExpireDisableErrorEvent)return i.log(_t.LOG,"_errorHandler urlExpireDisableErrorEvent",i.config.urlExpireDisableErrorEvent,",errorCode,",e.errorCode),i._stopProgress(),void i.emit(rF);if("object"!==j(e)){var U={};U.err=e,e=U}e.ext||(e.ext={});var F=r.paused;if(e.ext.vid=a.vid,e.ext.preloadHit=i.hitpreload?1:0,e.ext.preloadCached=l?l.duration:0,e.ext.timerStep=Math.max.apply(Math,_(i.timerStepList)),e.ext.codectype=i.codecType,e.message&&(e.errorMessage=e.message),e=new W.Errors(r,e),i.log(_t.ERROR,"_errorHandle","preState is ".concat(F),null===(t=e)||void 0===t?void 0:t.errorCode,e.errorMessage),!e.url&&(e.url=r.src),i.player.emit("playCatch",i.player.vtype,e),e.errd&&"object"===j(e.errd)&&i.mp4&&(e.errd.url=i.mp4.url,e.url=i.mp4.url),i.emit("DATA_REPORT",e),i.mp4&&i.mp4.cancelLoading(),i._abrService&&i._abrService.disable(),i.canDownload=!1,i.checkIsDegraded(e))i.player.vtype=ne.MP4_2,i._initPromise&&i.removeAndRejectInitPromise(e),i._startDegradedPlayback(e,F);else{var o,d,Q,s;i.log(_t.ERROR,"final error !!!!, ",a.vid,null===(o=e)||void 0===o?void 0:o.errorCode,null===(d=e)||void 0===d?void 0:d.errorMessage),i.player.pause(),i._reset(),i.states=[];var c=r.currentTime;i.destroyMSE(),r.currentTime=c,i.emit("error",e),i._setStartTimelines(le.PLAY_ERROR,{message:null===(Q=e)||void 0===Q?void 0:Q.message,httpCode:null===(s=e)||void 0===s?void 0:s.errorCode})}i.emit(rF)}})),T(i,"_onSourceError",(function(e){if(!i._hasFirstFramed){var t,n,r,a;if(null!==(t=e.message)&&void 0!==t&&t.includes("PCDN"))return;var l="".concat(i.player.vtype,"-host:").concat(null==e?void 0:e.host,"-").concat(null==e?void 0:e.errorCode,"-").concat(null!==(n=null==e||null===(r=e.mediaError)||void 0===r?void 0:r.message)&&void 0!==n?n:null==e?void 0:e.message);i._setStartTimelines(le.HTTP_ERROR,{message:l,httpCode:null==e?void 0:e.errorCode}),null===(a=i._startTimelines)||void 0===a||null===(a=a.httpError)||void 0===a||a.push({message:l,httpCode:null==e?void 0:e.errorCode})}})),T(i,"_onSeeking",k(M().mark((function e(){var t,n,r,a,l,U,F,o,d,Q,s,c,u,B,R,h;return M().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(i._isReceiveEndedEvent=!1,!i.useVideoLoad){e.next=3;break}return e.abrupt("return");case 3:if(r=(n=i).player,a=n.mp4,l=n.mse,U=n.config,3!==r.changeDefinitionSeekState){e.next=8;break}return r.changeDefinitionSeekState=void 0,i.log(_t.LOG,"[seeking] changeDefinitionSeekState clear"),e.abrupt("return");case 8:if(F=r.currentTime,o=r.bufferedPoint,i.waitLevelStartTime=F,i.changeState("seeking",{curTime:F,buffered:o,lastBuffered:i._lastBufferPoint}),i.log(_t.LOG,"[seeking], curTime: ".concat(F,", duration: ").concat(null==a||null===(t=a.meta)||void 0===t?void 0:t.duration),"buffer: ".concat(JSON.stringify(i.getAllBufferRange()))),a&&a.meta){e.next=15;break}return e.abrupt("return");case 15:if(i._startProgress(),a.bufferUsedPos=0,a.metaLoading=!1,i._loadedEnd=!1,i._definitionChangePointInfo&&(i._definitionChangePointInfo.changeStartTime=F,i.log(_t.LOG,"[seeking update definitionChangePointInfo]",F)),a.changeBitRateTime>0&&(a.updateChangeBitRateTime(F),i.log(_t.LOG,"[seeking update changeBitRateTime]",F)),d=0,!(o.end>0)){e.next=30;break}if(!i.isSeekingInSameBuffer(F,o)){e.next=26;break}return i.log(_t.LOG,"[seeking in buffered], linear buffer,",o.end),e.abrupt("return");case 26:a.seekTime=o.end,i.log(_t.LOG,"[seeking in buffered], but jump to another piece: ".concat(o.start,"-").concat(o.end)),e.next=32;break;case 30:a.seekTime=F,i.log(_t.LOG,"[seeking out buffered], seekTime: ".concat(F));case 32:return Q=a.getFragmentIdx(a.seekTime),s=i.getAdaptTimeRangeIdx(Q),d=s<0?i._curLoadSegmentIdx:s,a.seekTime===F&&null!=l&&l.isFull()&&(c=i.getAllBufferRange(),u=c[c.length-1],i._checkRemovePlayedBuffer([u.start,u.end],F,!0,!0)),i.log(_t.LOG,"[seekTime resetFragmentLoadState], adaptIdx: ".concat(d)),a.resetFragmentLoadState(d),null==l||l.clearOpQueues(ln.VIDEO),1===r.changeDefinitionSeekState?null===(B=i.mse)||void 0===B||B.remove(ln.VIDEO,0,1/0).then((function(){r.changeDefinitionSeekState=2,i.log(_t.LOG,"[seeking], changeDefinitionSeek remove buffer end, changeDefinitionSeekState = 2")})):U.removeBufferAtSeek&&(R=a.seekTime,h=1/0,i.log(_t.LOG,"[seeking mse remove], ".concat(R,"-").concat(h)),null==l||l.remove(ln.VIDEO,R,h)),i.canDownload=!1,e.next=43,a.cancelLoading();case 43:i.canDownload=!0,a.fillFirstSegment=!1,i._curLoadSegmentIdx=d,i._onTimeUpdate(),i._isEnded();case 48:case"end":return e.stop()}}),e)})))),i.initLog(null===(n=i.player.playerId)||void 0===n||null===(n=n.toString())||void 0===n?void 0:n.slice(-4)),i.log(_t.LOG,"plugin version: ".concat(Ni),"playerId: ".concat(i.playerId),"vid: ".concat(i.playerConfig.vid)),i._pendingPromises=[],i._allInitPromise=new nF,i._isInit=!1,i._isEventInit=!1,i.preloader=null,i._useVideoLoad=!1,i.mse=null,i.mp4=null,i.eme=null,i._isMseInit=!1,i._corePromise=null,i._initPromise=null,i._hasStartProgress=!1,i._hasStartProgressBack=!1,i._curLoadSegmentIdx=0,i._abrService=null,i._checkRemoveBufferLastTime=VU.nowTime(),i.playFlag=!1,i.config.resumePlayWaterLevel=Math.min(i.config.minBufferLength,i.config.resumePlayWaterLevel),i.config.preferMMS=!0,i.checkResumePlayTimer=null,i._MSEError=!1,i._waitAdjustTimeCnt=0,i._waitInBufferTimer=null,i.isActive=!0,i.debugInfo={},i.states=[],i.removeVideoList=[],i._lastCheckTime=VU.nowTime(),i._lastCheckLagTime=VU.nowTime(),i._changeDefState=null,i._defInited=!1,i._removeBuffEndTime=0,i._lastTimeupdateTime2=0,i.waitLevelStartTime=-1,i.preLoadData=null,i.forPreloadTimeCache=null,i._usePaused=!1,i.hitpreload=!1,i.isH265DegradeH264=!1,i.loadstartTimer=null,i.loadeddataTimer=null,i.canplayTimer=null,i.adaptRangeRes=[],i._isReceiveEndedEvent=!1,i._checkEndedTimer=null,i._definitionChangePointInfo=null,i._lastTimeupdateTime2=0,i.waitLevelStartTime=-1,i.timerStepList=[],i._isH265SoftDecoder=!1,i._beforeLoadStartCostTime=0,i._requestTimer=null,i.firstFrameCostTime={},i._mediaCodec={videoCodec:"",audioCodec:""},i._setTimelineData(),i._updatePropsByConfig(),i.player._customExpiryCheck=i.config.enableCusExpiryCheck,i._bindSrcTiming=Wi,i}return x(t,e),N(t,[{key:"_setTimelineData",value:function(){this._startTimelines={startstage:-1,startmessage:"",httpCode:-1,httpError:[],reqtime:-1,downgradetime:-1,fcost:-1,ffcost:-1,startbufferlength:-1,playerError:"",startdelta:-1,loadstarttime:-1,loadeddatatime:-1,loadstarttype:-1,loadeddatatype:-1,playtime:-1,playerstate:-1},this._hasFirstFramed=!1}},{key:"setConfig",value:function(e){this.config=Object.assign(this.config,e),this.config.preferMMS=!0,this._updatePropsByConfig()}},{key:"_updatePropsByConfig",value:function(){this._maxBufferLength=this.config.maxBufferLength,this._minBufferLength=this.config.minBufferLength,this._nextBufferLength=this.config.nextBufferLength,this._switchBitRateWay=this.config.switchBitRateWay,this._tickInSeconds=this.config.tickInSeconds||.2}},{key:"initLog",value:function(e){var n=this.config.logCacheConfig,i=n.logCacheLevel,r=n.logMaxSize;this.logger=new jt(t.pluginName+e,{logCacheLevel:i,logMaxSize:r}),ni&&jt.enable()}},{key:"playerlogger",value:function(e){e?jt.enable():jt.disable()}},{key:"_setStartTimelines",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!this._hasFirstFramed&&this._startTimelines){this._startTimelines.startstage=e,this._startTimelines.startmessage="".concat(Ue[e]||"","-").concat((null==t?void 0:t.message)||"");var n=this._startTimelines.httpCode;this._startTimelines.httpCode=-1!==n?n:(null==t?void 0:t.httpCode)||-1,e===le.PLAYER_ERROR&&(this._startTimelines.playerError=(null==t?void 0:t.message)||"")}}},{key:"afterCreate",value:function(){var e=this,t=this.playerConfig,n=this.config,i=this.player;n.width=t.width||0,n.height=t.height||0,t.vid=t.vid||n.vid,"object"!==j(n.reqParams)&&(n.reqParams={}),function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:'video/mp4; codecs="avc1.42E01E,mp4a.40.2"',t=eF(arguments.length>1&&void 0!==arguments[1]&&arguments[1]);if(!t)return!1;try{return t.isTypeSupported(e)}catch(n){return!1}}('video/mp4; codecs="avc1.64001E, mp4a.40.5"',this.config.preferMMS)?(void 0===n.supportHevc&&null!==W.Sniffer&&void 0!==W.Sniffer&&W.Sniffer.isHevcSupported&&W.Sniffer.isHevcSupported()&&this.player.video instanceof HTMLVideoElement&&(n.supportHevc=!0),void 0===n.supportVvcc&&(n.supportVvcc=!("undefined"==typeof MediaSource||!MediaSource.isTypeSupported)&&MediaSource.isTypeSupported("video/mp4;codecs=bvc2.1.6.L93.B0")),this.softDecode?i.vtype=ne.MP4_MSE_SOFT:i.vtype=ne.MP4_MSE,qU()&&!this.softDecode||(n.useEME=!1),n.useEME=!(!1===n.useEME),this.checkConfig(),n.onlyInit&&(t.autoplay=!1,t.videoInit=!1,this._hasStartProgress=!1,this._hasStartProgressBack=!1),t.useWaterLevel&&(!t.userGestureEventMiddleware&&(t.userGestureEventMiddleware=QU),!t.videoEventMiddleware&&i.setEventsMiddleware(sU)),this._proxyPlayer(),i.useHooks("replay",this._replayHook),i.useHooks("play",this._playHook),i.useHooks("pause",this._pauseHook),i.useHooks("retry",this._retryHook),this.on("source_error",this._onSourceError),this.on("error",this._onSourceError),i.video.addEventListener(oi.BUFFERED_RESET,this._onBufferedReset),this._bindNetworkStateChange(),this.on(W.Events.TIME_UPDATE,this._onVideoTimeUpdate),this.on(W.Events.LOADED_DATA,(function(){var t;-1===e._startTimelines.loadeddatatime&&(e._startTimelines.loadeddatatime=VU.nowTime(),e._startTimelines.loadeddatatype=i.vtype===ne.MP4_MSE?1:2),e.loadedDataEventRev=!0,e.changeState("LOADED_DATA"),e.deleteVideo(),e.mp4&&e.mp4.updateLoadedDataDone(),e._onTimeUpdate(),null!==(t=e.config)&&void 0!==t&&t.enableFPSStuckHandle&&e.on(W.Events.FPS_STUCK,e.fpsStuckHandle)})),this.on(W.Events.LOAD_START,(function(){e.changeState("LOAD_START"),e._bindSrcTiming===Wi?e._beforeLoadStartCostTime=(new Date).getTime()-e._tm:e._beforeLoadStartCostTime=0,e.log(_t.LOG,"mp4plugin loadstart",e._beforeLoadStartCostTime),-1===e._startTimelines.loadstarttime&&(e._startTimelines.loadstarttime=VU.nowTime(),e._startTimelines.loadstarttype=i.vtype===ne.MP4_MSE?1:2),e.codecType!==re.H265||e.config.supportHevc||(e._isMseInit=!0,e._onTimeUpdate())})),this.on(W.Events.ENDED,(function(){e.log(_t.LOG,"mp4plugin receive player video ended event"),e._onEnded()})),this.on(W.Events.PAUSE,(function(){e._usePaused=!0})),this.on(W.Events.PLAY,(function(){e._usePaused=!1})),this.on(W.Events.AUTOPLAY_STARTED,(function(){e._startTimelines&&(e._startTimelines.playtime=VU.nowTime())})),this.on("xglog",(function(t){if("firstFrame"===t.eventType){var n=e.preLoadData&&e.preLoadData.definition?e.preLoadData.definition:-1,i=e.player;e._startTimelines.fcost=VU.nowTime()-e._startTimelines.reqtime,e._startTimelines.ffcost=t.fvt,e._hasFirstFramed=!0,e.log(_t.DEBUG,"[xgplayer-encrypt-mp4]>>>>firstFrame ".concat(e.playerConfig.vid,", ").concat(t.fvt,", codecType: ").concat(e.codecType),"hitPreload: ".concat(e.hitpreload,", video: ").concat(e._useVideoLoad,", preloadBitrate: ").concat(n),"curDefinition: ".concat(i.curDefinition.definition))}})),i.mp4MseFlag=!0):this._setStartTimelines(le.NOT_SUPPORTED)}},{key:"_startBufferCheck",value:function(){var e=this.player;if(e.video){var t=[];if(e.video.buffered){for(var n=0,i=e.video.buffered.length;n<i;n++)t.push([e.video.buffered.start(n),e.video.buffered.end(n)]);t.toString()!==this.lastBuffer&&(this.lastBuffer=t.toString(),this._onBufferReachThreshold())}}}},{key:"_onBufferReachThreshold",value:function(){var e=this.player,t=this.config;if(e.video){for(var n=e.video.buffered,i=0,r=0,a=0;a<n.length&&(i=n.start(a),r=n.end(a),!(i<=e.video.currentTime&&e.video.currentTime<=r));a++);r-e.video.currentTime>=t.bufferThreshold&&!this._hasTriggerBufferThreshold&&(this._hasTriggerBufferThreshold=!0,e.emit("BUFFER_THRESHOLD",r-e.video.currentTime))}}},{key:"_startUrlExpiredCheck",value:function(){var e,t=this.player;if(null!==(e=this.expiryCheckPlugin)&&void 0!==e&&null!==(e=e.config)&&void 0!==e&&e.useCdnExpiryTime){var n,i;null===(n=(i=this.expiryCheckPlugin).handleUrlExpiryCheckByCdnPath)||void 0===n||n.call(i)}else{var r=t.config;r.definition&&r.definition.list&&r.definition.list.length>0&&(this.urlExpireTimestamp=r.definition.list[0].url_expire||0,this._handleUrlExpire())}}},{key:"cancelLoading",value:(o=k(M().mark((function e(){var t,n;return M().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this.mp4){e.next=2;break}return e.abrupt("return");case 2:return this._cancelLoading=!0,this.log(_t.LOG,"player cancelLoading",this.playerConfig.vid),this._stopProgress(),null===(t=this.preloader)||void 0===t||null===(n=t.cancelLoading)||void 0===n||n.call(t),e.next=8,this.mp4.cancelLoading();case 8:case"end":return e.stop()}}),e,this)}))),function(){return o.apply(this,arguments)})},{key:"checkConfig",value:function(){var e=this.playerConfig,t=this.config,n=e.defaultDefinition,i=e.defaultBitrate;if(!n){var r=this.playerConfig.definition;n=r&&r.defaultDefinition?r.defaultDefinition:t.definition}!i&&t.bitrate&&(i=t.bitrate),e.defaultDefinition=n,e.defaultBitrate=i}},{key:"beforePlayerInit",value:function(){var e=this,t=this.player,n=this;this._isInit||(W.BasePlugin.defineGetterOrSetter(t,{__url:{get:function(){return n.mse?n.mse.url:t.config.url},configurable:!0},downloadSpeed:{get:function(){return QF/8},configurable:!0},playerVersion:{get:function(){return Ni},configurable:!0},menuCodeType:{get:function(){return n.mp4&&n.mp4.meta?n.mp4.meta.videoCodec:n.codecType===re.H264?"avc":"hevc"},configurable:!0},playerType:{get:function(){return"MP4"},configurable:!0},supportMenus:{get:function(){return{speed:null==t?void 0:t.mp4MseFlag,cdn:null==t?void 0:t.mp4MseFlag,resolution:null==t?void 0:t.mp4MseFlag}},configurable:!0},preloadActive:{get:function(){return e.isActive},set:function(t){e.isActive=t,e.isActive&&e._startProgress()},configurable:!0},performance:{get:function(){var t={};return e.states.forEach((function(e){t[e.state.toLowerCase()]=e.t2})),t},configurable:!0},domain:{get:function(){return n.domain},configurable:!0},loadURL:{get:function(){return n.loadURL},configurable:!0},abrInstance:{get:function(){return n.abrInstance},configurable:!0},pcdnReq:{get:function(){var e=ct.pcdnReqCnt,t=jU.pcdnDownLoadReqCnt;return{pcdn_tracker_request_cnt:e.pcdn_tracker_request_cnt,pcdn_tracker_failed_cnt:e.pcdn_tracker_failed_cnt,pcdn_download_request_cnt:t.pcdn_download_request_cnt,pcdn_download_failed_cnt:t.pcdn_download_failed_cnt}},configurable:!0},retryInfo:{get:function(){return PU},configurable:!0},softDecoder:{get:function(){return e._isH265SoftDecoder},configurable:!0},logCache:{get:function(){var t,i,r;if(n.logger)return n.log(_t.LOG,"timerStepList, ".concat(JSON.stringify(e.timerStepList),",\n currentTime: ").concat(null===(t=n.player)||void 0===t?void 0:t.currentTime,"\n buffer, ").concat(JSON.stringify(n.getAllBufferRange()),",\n state: ").concat(JSON.stringify(n.states),",\n isActive:").concat(n.isActive,",\n preRangeType: ").concat(null===(i=n.player)||void 0===i||null===(i=i.preloader)||void 0===i||null===(i=i._config)||void 0===i?void 0:i.loadRangeType,",\n loadRangeType: ").concat(null===(r=n.config)||void 0===r?void 0:r.loadRangeType,",\n Mp4EncryptPlayer version, ").concat(Ni)),n.logger.getLogCache()},configurable:!0},pcdnVVStat:{get:function(){var e,t=n.mp4,i=n.pcdn;return t?G(G({},t.pcdnVVStat),{},{trace_id:null===(e=t.pcdnTraceInfo)||void 0===e?void 0:e.trace_id,cancelCnt:(null==t?void 0:t.pSCCancelCnt)||0,is_try_open:i?1:0}):null},configurable:!0},beforeLoadStartCostTime:{get:function(){return e.useVideoLoad?0:e._beforeLoadStartCostTime},configurable:!0},mediaCodec:{get:function(){return e._mediaCodec},configurable:!0},bandwidth:{get:function(){var e,t,i=n.mp4,r=i?i.loadInfo:null;return{vid:null===(e=n.playerConfig)||void 0===e?void 0:e.vid,cdn:{speed:null==r||null===(t=r[MU])||void 0===t?void 0:t.loadSpeed,size:r&&r[MU]?r[MU].loadLen:0},pcdn:G({size:r&&r[YU]?r[YU].loadLen:0},null==i?void 0:i.pcdnTraceInfo)}},configurable:!0},ext:{get:function(){var e,t,i,r,a,l,U,F,o=[];if((null===(e=n.player)||void 0===e||null===(e=e.video)||void 0===e||null===(e=e.buffered)||void 0===e?void 0:e.length)>0)for(var d=n.player.video.buffered,Q=0,s=(null==d?void 0:d.length)||0;Q<s;Q++)o.push([d.start(Q),d.end(Q)]);return{type:"MP4",version:Ni,usevideo:n.useVideoLoad?1:0,curTime:null===(t=n.player)||void 0===t?void 0:t.currentTime,duration:(null===(i=n.mp4)||void 0===i||null===(i=i.meta)||void 0===i?void 0:i.duration)||(null===(r=n.player)||void 0===r?void 0:r.duration),loadIdx:n._curLoadSegmentIdx,curload:null!==(a=n.mp4)&&void 0!==a&&a.adaptTimeRange?n.mp4.adaptTimeRange[n._curLoadSegmentIdx]:{},buffer:o,speed:null===(l=n.debugInfo)||void 0===l?void 0:l.speed,states:null==n?void 0:n.states,loadRangeType:null===(U=n.config)||void 0===U?void 0:U.loadRangeType,preRangeType:null===(F=n.player)||void 0===F||null===(F=F.preloader)||void 0===F||null===(F=F._config)||void 0===F?void 0:F.loadRangeType}},configurable:!0},currentDefinitionFromPlayer:{get:function(){return n.abrInstance&&n.abrInstance.isCurrentInAbr?t._currentDefinitionFromPlayer:t.curDefinition},configurable:!0},currentDefitionFromPlayer:{get:function(){return t.currentDefinitionFromPlayer},configurable:!0},startTimelines:{get:function(){if(e._startTimelines){var n=VU.nowTime();e._startTimelines.startuploadtime=n;var i=t.vtype!==ne.MP4_MSE?e._startTimelines.downgradetime:e._startTimelines.reqtime;if(e._startTimelines.startdelta=n-i,e._startTimelines.firstframedp=e._hasFirstFramed?1:0,e._startTimelines.playerstate=t.state,!e._hasFirstFramed){var r=t.getBufferedRange();e._startTimelines.startbufferlength=r[1]-r[0],e.emit(rF)}}return JSON.parse(JSON.stringify(e._startTimelines))},configurable:!0}}),this._isInit=!0)}},{key:"destroy",value:function(){var e,t,n=this.player;n.preloader&&n.preloader.removePlayingId(n.playerId),n.removeHooks("replay",this._replayHook),n.removeHooks("play",this._playHook),n.removeHooks("pause",this._pauseHook),n.removeHooks("retry",this._retryHook),null===(e=this._requestTimer)||void 0===e||e.destroy(),this._requestTimer=null,this._reset(),this.states=[],this.checkReUseMSE(!1),this._secretkey&&(this._secretkey.off(ee.EVENT_EME.ERROR,this._errorHandler),this._secretkey.destroy()),this.player.playNext=UF,this.player._startInit=FF,this.player.changeDefinition=oF,this.player.switchURL=dF,this._unbindNetworkStateChange(),this._unbindEvents(),n.video&&n.video.removeEventListener(oi.BUFFERED_RESET,this._onBufferedReset),this._bufferCheckTimer&&clearInterval(this._bufferCheckTimer),this._removeBufferTimer&&(clearTimeout(this._removeBufferTimer),this._removeBufferTimer=null),(null===(t=this.logger)||void 0===t?void 0:t.reset)&&this.logger.reset(),this.__onmetadataHandle&&n.video.removeEventListener("loadedmetadata",this.__onmetadataHandle),this.timerStepList=[]}},{key:"_proxyPlayer",value:function(){var e=this;"function"==typeof this.player.playNext&&(UF=this.player.playNext),this.player.playNext=function(){e.playNext.apply(e,arguments)},FF=this.player._startInit,dF=this.player.switchURL,oF=this.player.changeDefinition,this.player._startInit=this.playerStartInit.bind(this),this.player.switchURL=this.switchURL.bind(this),this.player.changeDefinition=this.changeDefinition.bind(this)}},{key:"getInitBitrate",value:function(){var e=this.player,t=this.playerConfig,n=null,i=e.definitionList;if(i&&i.length>0){var r={},a=e.preloader;if(a){var l=a.getPreloadMetaByVid(t.vid);if(l){var U=a.getDataUniqueKey(l),F=function(e,t){for(var n,i=e.vtype,r=e.codecType,a=e.definition,l=e.bitrate,U=null,F=0;n=t[F];F++){var o=n.vtype===i;if(o&&(o=n.codecType===r),o&&(o=n.definition===a||n.definition===Number(a)),o&&(o=!n.bitrate||!l||Number(n.bitrate)===Number(l)),o){U=n;break}}return U}(l,i);F?(F.cacheKey=U,(n=F).type="preload",n.preLoadMeta=l,r={m:1,t:2,ck:U}):r={m:0,t:1,ck:U}}}else r={t:0};if(this.changeState(mi,r),n&&t.userSelectDefinition&&t.focusUserDefinition){var o={m:1,ud:t.userSelectDefinition,d:n.definition};t.userSelectDefinition!==n.definition&&(n=null,o.m=1),this.changeState(Ji,o)}!n&&this.bitRateAdapter&&(this.bitRateAdapter.speed=jU.speed,(n=this.getDefinitonFromAdapter(i,t.userSelectDefinition))&&(n.type="bitRateAdapter"))}if(!n||!n.url){var d,Q=(null===(d=t.definition)||void 0===d?void 0:d.defaultDefinition)||t.defaultDefinition;if("Array"===W.Util.typeOf(t.url)&&t.url.length>0||"String"===W.Util.typeOf(t.url)&&t.url){var s=this._getDefinitionItem(Q),c=t.defaultBitrate||t.bitrate||(null==s?void 0:s.bitrate);n={url:t.url,definition:(null==s?void 0:s.definition)||Q||-1,duration:(null==s?void 0:s.duration)||t.duration||this.config.duration||0,bitrate:c,uri:t.uri||(null==s?void 0:s.uri),file_id:null==s?void 0:s.file_id,size:(null==s?void 0:s.size)||t.size,type:"default"}}else n=i[i.length-1]}return this.playerConfig.url=n.url,n.networkSpeed=jU.speed,e.curDefinition=n,n}},{key:"_setPlayerSrc",value:function(e){var t=this.player;this._removeVideoSource();var n="Array"===W.Util.typeOf(e);e=n?this._processArrayUrl(e):this._processUrl(e),n?(t.video.removeAttribute("src"),!t._detachSourceEvents&&e.forEach((function(e){t.video.appendChild(W.Util.createDom("source","",{src:"".concat(e.src),type:"".concat(e.type||"")}))})),t._attachSourceEvents(t.video,e),t.play()):(t.video.src=e,t.play()),t.mp4MseFlag=!1,t.emit("playertypechange"),this._startTimelines.downgradetime=VU.nowTime()}},{key:"_removeVideoSource",value:function(e){var t=this.player,n=(e=e||t.video).children;if(n.length>0)for(t._detachSourceEvents(e);n.length>0;)e.removeChild(n[0])}},{key:"_getDefinitionItem",value:function(e){var t=this.playerConfig;if(!t.definition||!t.definition.list)return null;for(var n=0;n<t.definition.list.length;n++){var i=t.definition.list[n];if(i.definition===e)return i}return null}},{key:"_initAbrDefinition",value:function(){var e=this.player,t=this.playerConfig;if(t.definition.list.length>0&&(e.curDefinition||(e.curDefinition=t.definition.list[0]),e.curDefinition.vwidth||Object.assign(e.curDefinition,this._getDefinitionItem(e.curDefinition.definition)),this._abrService.updateAbrCacheData()),this._abrService&&this._abrService.isCurrentAutoDefi){var n=t.definition.list.length;e.curDefinition=t.definition.list[n-1]}for(var i=0;i<t.definition.list.length;i++){var r=t.definition.list[i];e.curDefinition.definition===r.definition?r.selected=!0:r.selected=!1}this.player.emit("resourceReady",t.definition.list);var a=e.curDefinition.bitrate;if(!a)for(var l=0;l<t.definition.list.length;l++){var U=t.definition.list[l];U.definition===e.curDefinition.definition&&(a=U.bitrate)}this._abrService.updateBitrate(a)}},{key:"_initAbrService",value:(F=k(M().mark((function e(){var t,n;return M().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t=this.playerConfig,(n=this.config).autoBitrateOpts&&n.autoBitrateOpts.isOpenAutoDefi){e.next=3;break}return e.abrupt("return");case 3:return this._abrService=new Fi(this,this.abrSwitchURL),e.next=6,this._abrService.init({video:t.definition.list.concat()});case 6:this._initAbrDefinition();case 7:case"end":return e.stop()}}),e,this)}))),function(){return F.apply(this,arguments)})},{key:"_initMp4Kernel",value:function(){var e=this,t=this.playerConfig,n=this.config,i=new nF;try{var r=this.player.curDefinition;if(this.log(_t.LOG,"[_initMp4Kernel] ".concat(t.vid," curDefinition"),null==r?void 0:r.definition),!this._handlerUrl(t.url))return this.log(_t.LOG,"emptyUrl"),i.reject(new Error("emptyUrl")),i;if(n.forceVideoPlay&&(this.codecType===re.H264||n.supportHevc))return this.useVideoLoad=!0,this.log(_t.LOG,"forceVideoPlay"),i.reject(new Error("forceVideoPlay")),i;var a=[];this._secretkey&&a.push(this._secretkey.getLicenseSecret()),a.push(this._checkPreloader()),Promise.all(a).then((function(t){if(e.isDestroy)i.reject(new Error("destroy"));else{var a=null;if(t&&t.length>0&&(t.length>1&&(!n.keyValue&&t[0].secretKey&&(n.secretKey=t[0].secretKey),n.decryptKey=t[0].decryptKey),a=t[t.length-1].data),a||!n.needPreloadCheck||e.codecType===re.H265&&!n.supportHevc)if(e.vtype&&"MP3"===e.vtype)e.useVideoLoad=!0,e.log(_t.LOG,"vtype_not_MP4"),i.reject(new Error("vtype_not_MP4"));else{var l,U=n._mainURL;e._initMp4(U,a,{fileSize:r?r.size:0}),e.updateLoadInfo(null===(l=a)||void 0===l?void 0:l.cacheKey),e.checkPCDN(),e.initAdaptRange(),e._initAbrService()}else e.useVideoLoad=!0,e.log(_t.LOG,"no_preload"),i.reject(new Error("no_preload"))}})).catch((function(n){var a,l;e.log(_t.ERROR,"getLicense or checkPreloader reject",null==n?void 0:n.message,null==n?void 0:n.stack);var U,F=(null==n||null===(a=n.error)||void 0===a?void 0:a.code)||("getLicense"===n.method?gi.custom_drm:gi.other),o=(null==n?void 0:n.message)||(null==n||null===(l=n.error)||void 0===l?void 0:l.message)||"getLicense or checkPreloader reject";"getLicense"===n.method?(U=new W.Errors(e.player,{errorType:Ti.DRM,errorCode:F,errorMessage:o,vid:t.vid}),e.emit("GET_LICENSE_ERROR",U),e.changeState("LICENSE_ERROR",{d:r?r.definition:0})):U=new W.Errors(e.player,{errorType:Ti.OTHER,errorCode:F,errorMessage:o,vid:t.vid}),i.reject(U)}))}catch(l){i.reject(l)}return i}},{key:"updateLoadInfo",value:function(e){var t;e&&this.mp4&&(this.mp4.loadInfo=null===(t=this.preloader)||void 0===t?void 0:t.getLoadInfoAndDelete(e))}},{key:"initAdaptRange",value:function(){var e=this.config,t=this.player,n=this.playerConfig,i=t.curDefinition,r=i.bitrate,a=i.duration;null!=e&&e.adaptRange&&(this.adaptRange=new te(t,r,a||n.duration,e.adaptRange))}},{key:"getPCDNReqId",value:function(){var e=this.player.curDefinition,t=this.playerConfig.vid;return e.uri?e.uri.slice(-20)+e.bitrate:t?t.slice(-20)+e.bitrate:void 0}},{key:"checkPCDN",value:function(){var e,t=this,n=this.config,i=this.player,r=this.mp4,a=i.curDefinition;if(null!==(e=n.pcdnConfig)&&void 0!==e&&e.openPCDN&&a.duration>=n.pcdnConfig.minDuration){var l;n.pcdnConfig.app_id&&(Bi.app_id=n.pcdnConfig.app_id),n.pcdnConfig.sid&&(Bi.sid=n.pcdnConfig.sid);var U=n._mainURL;if(!a.uri||!a.bitrate||U.indexOf("video/")<=0)return this.log(_t.LOG,"uri null or bitrate null or url not contain video cannot use pcdn"),void(this.pcdn=null);if(!cU(U))U=document.location.protocol+U;var F={vid:a.uri,sfid:a.file_id,cdn_url:U,file_type:null===(l=this.vtype||"MP4")||void 0===l?void 0:l.toLowerCase(),bitrate:a.bitrate,duration:Math.floor((null==a?void 0:a.duration)||0),size:(null==a?void 0:a.size)||VU.getFileSize(a.bitrate,a.duration)};if(this.pcdn)this.pcdn.resetTrackeArgs();else{var o=Object.assign({},{productConfig:Bi},n.pcdnConfig),d=F.bitrate,Q=F.duration;this.pcdn=new ct(o,i,d,Q)}this.pcdn.fetchPCDNNode(null,F,this.getPCDNReqId()).then((function(e){var n,i,a=t.getPCDNReqId();null!=e&&e.req_id&&a!==e.req_id?t.log(_t.LOG,",fetchPCDNNode is not match curDefinition reqId",a,", pcdnRet.req_id",e.req_id):r&&e&&(t.log(_t.LOG,"".concat(t.playerConfig.vid," get peer end,pcdn node update,"),null==e||null===(n=e.nodes)||void 0===n?void 0:n.length),r.updateNode(null==e?void 0:e.nodes),r.pcdnTraceInfo={uri:e.vid,fid:e.fid,trace_id:null==e?void 0:e.trace_id},r.pcdnVVStat&&(r.pcdnVVStat.try_req_node+=1,r.pcdnVVStat.req_node_succ+=1,r.pcdnVVStat.has_ret_node+=(null==e||null===(i=e.nodes)||void 0===i?void 0:i.length)>0?1:0))})).catch((function(e){(null==r?void 0:r.pcdnVVStat)&&(r.pcdnVVStat.try_req_node+=1),t.checkURLExpired(e,"_fetchPCDNNode")}))}else this.pcdn=null}},{key:"initTimer",value:function(){if(!this._requestTimer){var e=this.config.timerInWorker;this._requestTimer=new vi({frequency:this._tickInSeconds,timerInWorker:e}),this._requestTimer.on(Vi,this.timerHandle)}}},{key:"playerStartInit",value:(U=k(M().mark((function e(t){var n,i,r,a,l,U,F,o,d,Q,s,c,u,B,R,h,V,p,m,Z,S,J,f,y,k,E,b,v,N=this;return M().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this.log(_t.LOG,"playerStartInit",this.player.hasStart,this.playerId,t),!this.isDestroy){e.next=4;break}return this._setStartTimelines(le.START_INIT_DESTROY),e.abrupt("return");case 4:if(r=this.playerConfig,a=this.player,l=this.config,this.states=[],this._sTime=VU.nowTime(),this._lastBufferPoint=void 0,this._usePaused=!1,this.isActive&&0!==(null==a?void 0:a.currentTime)&&(this.log(_t.LOG,"[playerStartInit] reset current = 0 ,buffer,",JSON.stringify(null==a||null===(U=a.buffered2)||void 0===U?void 0:U.bufferedList)),this.player.currentTime=0),this._isH265SoftDecoder=this.softDecode,l.reUseMSE&&this.mse&&"String"===W.Util.typeOf(t)&&/^blob/.test(t)&&t!==this.mse.url&&(t=r.url,this.destroyMSE()),t&&"__auto__"!==t&&"anytext"!==t||(F=r.definition)&&F.list&&F.list.length>0&&F.defaultDefinition&&(F.list.map((function(e){e.definition===F.defaultDefinition&&(r.url=e.url,N.player.curDefinition=e)})),r.url&&"__auto__"!==t&&"anytext"!==t||(o=F.list[0],t=o.url,r.url=o.url,F.defaultDefinition=o.definition,this.player.curDefinition=o)),this.initTimer(),d=a.oldBit,Q=this._defInited?null:this.getInitBitrate(),a.oldBit=null==a||null===(n=a.curDefinition)||void 0===n?void 0:n.bitrate,a.changeDefinitionFlag||!d||d===(null==a||null===(i=a.curDefinition)||void 0===i?void 0:i.bitrate)){e.next=23;break}if(!this.mp4){e.next=22;break}return this.canDownload=!1,e.next=22,this.mp4.cancelLoading();case 22:if(this.mse){this.once(W.Events.LOAD_START,(function(){N.log(_t.LOG,"playerStartInit changeBtrate changeDefinitionSeekState = 1, currentTime += 0.001"),a.changeDefinitionSeekState=1,N.player.currentTime+=.001}));try{this.mse.clearOpQueues(ln.VIDEO),this.mseAbort(),this.mse.remove(ln.VIDEO,0,1/0).then((function(){N.log(_t.LOG,"playerStartInit remove all buffer end")}))}catch(g){this.log(_t.LOG,"playerStartInit mse func err, ".concat(null==g?void 0:g.message))}}case 23:if(a.changeDefinitionFlag=void 0,s=this.config,c=s.kid,u=s.drmKeyToken,B=s.secretKey,R=s.keyValue,h=s.drm,c||u||B||R||h?this._secretkey?this._secretkey.updateConfig(this.config):(this._secretkey=new ee.XGSecretKey(this.config),this._secretkey.on(ee.EVENT_EME.ERROR,this._errorHandler)):this._secretkey=null,this._defInited=!0,this.log(_t.LOG,"[playerStartInit] ".concat(r.vid," curDefinition"),Q||this.player.curDefinition),V=this.player,p=V.preloader,m=V.playerId,p&&p.addPlayingId(r.vid,m),!l.needPreloadCheck||this.softDecode||this._secretkey||(Z=!1,S="",p&&(J=this.player.curDefinition,f=hU(J),y=p.hasItemSameVid(f),S=p.getDataUniqueKey(f),y&&(Z=!0)),Z||(k=p?"no preload data":"no preloader",this.useVideoLoad=!0,this.player.vtype=ne.MP4_0,this._setStartTimelines(le.NO_PRELOAD,{message:ne.MP4_0}),this.log(_t.LOG,"[playerStartInit] ".concat(r.vid," ").concat(k),!!p),E=new W.Errors(this.player,{errorType:"runtime",errorTypeCode:Ti.runtime,errorCode:gi.other,vid:this.playerConfig.vid,errorMessage:k}),this.changeState(Si,{m:0,ck:S}),this.player.emit("playCatch",this.player.vtype,E))),!this.useVideoLoad){e.next=39;break}if(t=this.playerConfig.url,!l.closeDowngrade){e.next=36;break}return this._setStartTimelines(le.CLOSE_DWNGRADE,{message:"isDestroy"}),e.abrupt("return");case 36:return this._playerStartInitCall(t),this._startProgress(),e.abrupt("return");case 39:if(!this.isDestroy){e.next=42;break}return this._setStartTimelines(le.START_INIT_DESTROY,{message:"isDestroy"}),e.abrupt("return");case 42:this.player.mp4MseFlag=!0,this._tm=(new Date).getTime(),this._reset(),b=this.playerConfig.vid,this.changeState("PLAYER_START_INIT"),this.mse||l.bindSrcTiming!==fi?this._bindSrcTiming=Wi:(this._bindSrcTiming=fi,this.log(_t.LOG,"playerStartInit new MSE",this._bindSrcTiming),this.mse=new ln(this.player.video,{preferMMS:this.config.preferMMS})),v=this._initMp4Kernel(),this._initPromise=v,this._addPendingPromise(this._initPromise),v.then((function(){N.isDestroy?N._setStartTimelines(le.START_INIT_DESTROY,{message:"then destroy"}):(N.mse&&(t=N.mse.url),N.changeState("PLAY_INIT_OK"),N._bindEvents(),N._startProgress())})).catch((function(e){var n,i,r=!!N._initPromise&&N._initPromise.isBreak;if(!N.isDestroy&&!r&&e!==iF){if(N.log(_t.LOG,"_initMp4Kernel.catch: ".concat(b," isDestroy:").concat(N.isDestroy,",\n errorCode:").concat((null==e?void 0:e.errorCode)||gi.other,",errMsg:").concat((null==e?void 0:e.errorMessage)||(null==e?void 0:e.message))),(null==e?void 0:e.errorCode)===gi[403]&&(N._setStartTimelines(le.HTTP_ERROR,{message:"request 403",httpCode:403}),N._emitExpireEvent(e)&&l.urlExpireDisableErrorEvent))return N._initPromise=null,N.log(_t.LOG,"initMp4Kernel urlExpireDisableErrorEvent",l.urlExpireDisableErrorEvent,",errorCode,",e.errorCode),N._stopProgress(),void N.emit(rF);var a=e;a.errorCode||((a=new W.Errors(N.player,{errorType:Ti.RUNTIME,errorCode:(null==e?void 0:e.errorCode)||gi.other,vid:N.playerConfig.vid,errorMessage:(null==e?void 0:e.errorMessage)||(null==e?void 0:e.message),mediaError:{code:(null==e?void 0:e.httpCode)||gi.other,message:(null==e?void 0:e.errorMessage)||(null==e?void 0:e.message),errorType:null==e?void 0:e.errorType}})).url=t),N._setStartTimelines(le.INIT_PROMISE_CATCH,{message:(null==e?void 0:e.errorMessage)||(null==e?void 0:e.message)}),N.changeState("PLAY_INIT_CATCH",{c:a.errorCode,m:(null==e?void 0:e.errorMessage)||(null==e?void 0:e.message),t:null==e?void 0:e.errorType}),N.useVideoLoad=!0,N.player.vtype=ne.MP4_1,N.player.emit("playCatch",N.player.vtype,a);var U=N.checkIsDegraded(a);return N.log(_t.WARN,"PLAY_INIT_CATCH final error !!!!, ",b,null===(n=a)||void 0===n?void 0:n.errorCode,null===(i=a)||void 0===i?void 0:i.errorMessage,",degrade:",U),N.emit(rF),U?void 0:(N.player.pause(),N._reset(),N.states=[],N.emit("error",a),void(N._initPromise=null))}var F="isDestroy:".concat(N.isDestroy,",isBreak:").concat(r,",e:").concat(e);N._setStartTimelines(le.INIT_PROMISE_CATCH,{message:F})})).finally((function(){var e;if(N._initPromise){var n=N._initPromise.isBreak;N._initPromise&&N._removePendingPromise(N._initPromise),N._initPromise=null,N._usePaused&&(N.playerConfig.autoplay=!1),N.softDecode&&"Array"===W.Util.typeOf(t)&&(t=t[0].src),"String"!==W.Util.typeOf(t)||/^blob/.test(t)||N.destroyMSE();var i=(null===(e=N.player)||void 0===e?void 0:e.currentSrc)===t;N.changeState("PLAY_INIT_FINALLY",{isDestroy:N.isDestroy,isBreak:n,reUseSrc:i}),!N.isDestroy&&!n&&N._playerStartInitCall(t),N._bindSrcTiming===Wi&&N.reUseMSEEmitEvents(i),N._abrService&&N._abrService.isCurrentInAbr()&&(N._abrService.enable(),N._abrService.execute())}}));case 52:case"end":return e.stop()}}),e,this)}))),function(e){return U.apply(this,arguments)})},{key:"_playerStartInitCall",value:function(e){e="Array"===W.Util.typeOf(e)?this._processArrayUrl(e):this._processUrl(e),FF.call(this.player,e),this._startTimelines.downgradetime=VU.nowTime()}},{key:"destroyMSE",value:function(){var e=this;if(this.mse)try{this.mse.clearOpQueues(ln.VIDEO);var t=this.mse.abort();if(!t)return;t.then(k(M().mark((function t(){var n,i;return M().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,null===(n=e.mse)||void 0===n?void 0:n.unbindMedia();case 2:e.mse&&e.log(_t.LOG,"destroyMSE ",null===(i=e.playerConfig)||void 0===i?void 0:i.vid),e.mse=null;case 4:case"end":return t.stop()}}),t)})))).catch((function(){}))}catch(n){}}},{key:"reUseMSEEmitEvents",value:function(e){var t,n=this;e&&/^blob/.test(null===(t=this.player)||void 0===t?void 0:t.currentSrc)&&(clearTimeout(this.loadstartTimer),clearTimeout(this.loadeddataTimer),clearTimeout(this.canplayTimer),this.loadstartTimer=setTimeout((function(){clearTimeout(n.loadstartTimer),n.loadstartTimer=null,n.emit(W.Events.LOAD_START),n.log(_t.LOG,"reUseMSE add emit loadstart event")}),10),this.loadeddataTimer=setTimeout((function(){clearTimeout(n.loadeddataTimer),n.loadeddataTimer=null,n.emit(W.Events.LOADED_DATA),n.log(_t.LOG,"reUseMSE add emit loadeddata event")}),50),this.canplayTimer=setTimeout((function(){clearTimeout(n.canplayTimer),n.canplayTimer=null,n.emit(W.Events.CANPLAY),n.log(_t.LOG,"reUseMSE add emit canplay event")}),90))}},{key:"playNext",value:function(e){var t=this,n=this.player;this._setTimelineData(),this._defInited=!1,this._hasTriggerBufferThreshold=!1,n.resetState(),n._currentTime=0,n._duration=0,n.isPlaying=!1,this._useVideoLoad=!1,this._MSEError=!1;var i=this.softDecode;n.pause(),this._reset(),this.states=[],e.vtype&&(this.vtype=e.vtype.toUpperCase()),n.setConfig(e),this.checkReUseMSE(this.config.reUseMSE,!0),this.softDecode?n.vtype=ne.MP4_MSE_SOFT:n.vtype=ne.MP4_MSE,this.codecType=this.playerConfig.codecType?this.playerConfig.codecType.toLowerCase():re.H264,i!==this.softDecode&&this.h265_h264_switch(this.playerConfig.mediaType||"video"),this.checkConfig(),this.log(_t.LOG,"[Index] playNext",e.vtype,e.vid),n.start(),this.config.reUseMSE&&(this.isH265DegradeH264||(this.__onmetadataHandle=function(){t.log(_t.LOG,"[Index] playNext metadata update currentTime = 0"),0!==n.currentTime&&(n.currentTime=0),n.video.removeEventListener("loadedmetadata",t.__onmetadataHandle),t.__onmetadataHandle=null},n.video.addEventListener("loadedmetadata",this.__onmetadataHandle))),this.emit("playnext")}},{key:"h265_h264_switch",value:function(e){this.log(_t.LOG,"[Index],h265_switch_h264",e);var t=this.player,n=W.Util.createDom(e,"",this.getVideoConfig(this.playerConfig),"xgplayer-".concat(e,"-img"));this.removeVideoList.push(t.video),n.muted=t.video.muted,n.volume=t.video.volume,t.media?t.media=n:t.video=n,t.attachVideoEvents(t.video)}},{key:"getVideoConfig",value:function(e){var t=Object.assign({},{controls:!1,autoplay:e.autoplay,playsinline:e.playsinline,"x5-playsinline":e.playsinline,"webkit-playsinline":e.playsinline,"x5-video-player-fullscreen":e["x5-video-player-fullscreen"]||e.x5VideoPlayerFullscreen,"x5-video-orientation":e["x5-video-orientation"]||e.x5VideoOrientation,airplay:e.airplay,"webkit-airplay":e.airplay,tabindex:2,mediaType:e.mediaType||"video"},e.videoConfig,e.videoAttributes);return e.loop&&(t.loop="loop"),t}},{key:"next",value:function(e){this.playNext(e)}},{key:"oldChangeDefinition",value:(l=k(M().mark((function e(t,n){var i,r,a,l,U,F,o,d,Q,s,c,u,B=this;return M().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(l=this.config,U=this.player,F=this.playerConfig,U.changeDefinitionFlag=!0,U.emit(W.Events.DEFINITION_CHANGE,{from:n,to:t}),U.emit(W.Events.WAITING),o=U.definitionList,d=o.filter((function(e){return e.definition===t.definition||e.definition===Number(t.definition)})),(Q=o.filter((function(e){return e.definition===n.definition||e.definition===Number(n.definition)}))).length>0&&(Q[0].selected=!1),!(d.length>0)){e.next=13;break}(t=d[0]).selected=!0,e.next=14;break;case 13:return e.abrupt("return");case 14:return U.curDefinition=t,this.log(_t.LOG,"[oldChangeDefinition],currentTime,",U.currentTime,",from,",n,",to,",t),s=U.currentTime,(c=U.paused)&&(this.config.autoplayBack=F.autoplay,F.autoplay=!1),this._changeDefState={currentTime:s,paused:c},l.definition=t.definition,["keyValue","kid","secretKey","drm","getLicenseUrl","drmKeyToken","sessionId"].forEach((function(e){l[e]=t[e]})),e.next=24,null===(i=this.mp4)||void 0===i?void 0:i.cancelLoading();case 24:if(null===(r=this.mse)||void 0===r||r.clearOpQueues(ln.VIDEO),u=null===(a=this.mse)||void 0===a?void 0:a.abort(ln.VIDEO)){e.next=28;break}return e.abrupt("return");case 28:u.then((function(){F.url=t.url,F.userSelectDefinition=t.definition,F.defaultDefinition=t.definition,U.currentTime=0,U.pause(),B._reset(),B.states=[],B.checkReUseMSE(!1),B._isMseInit=!1,B.eme=null,B._handlerUrl(t.url),B.once(W.Events.CANPLAY_THROUGH,(function(){void 0!==B.config.autoplayBack&&B.config.autoplayBack!==F.autoplay&&(F.autoplay=B.config.autoplayBack,B.config.autoplayBack=void 0)})),U.video.removeEventListener("loadedmetadata",B._changeDefineCanPlay),B._changeDefineCanPlay=function(){B.changeDefineCanPlay(s,c,n,t),U.video.removeEventListener("loadedmetadata",B._changeDefineCanPlay)},U.video.addEventListener("loadedmetadata",B._changeDefineCanPlay),U.video.load(),B.playerStartInit(F.url)})).catch((function(){}));case 29:case"end":return e.stop()}}),e,this)}))),function(e,t){return l.apply(this,arguments)})},{key:"_emitDefinitionChangeDetailEvent",value:function(e){var t=this._currDefinition,n=t.bitrate,i=t.definition,r=t.file_id,a=t.width,l=t.vwidth,U=t.height,F=t.vheight;this.player.emit("definitionChangeDetail",{start:e,bitrate:n,definition:i,mediaType:"video",url:this.config._mainURL,fileid:r});var o={width:a||l,height:U||F};this.player.emit("RESOLUTION_UPDATE",o)}},{key:"getCurGopEndTime",value:function(e){var t=this.player;if(!t)return 0;var n=this.mp4,i=n.getFragmentIdx(e||t.currentTime);return n.timeRange[i].endTime}},{key:"_setCurrentDefinition",value:function(e){var t=this.player.config;if(t.definition&&t.definition.list){var n=t.definition.list.filter((function(t){return t.bitrate===e.bitrate||t.definition===e.definition}));this._currDefinition=n&&n[0]}this._currDefinition||(this._currDefinition={})}},{key:"switchURL",value:function(e,t){var n=this;if(t&&"object"===j(t)&&t.action===lF)this._updateURL({url:null==e?void 0:e.url});else if(this.useVideoLoad)dF.call(this.player,e);else{var i=this.player,r=this.config;i.config.definition.list=[e],i.config.url=e.url,i.config.defaultBitrate=e.bitrate,i.config.defaultDefinition=e.definition;["keyValue","kid","secretKey","drm","getLicenseUrl","drmKeyToken","sessionId"].forEach((function(t){r[t]=e[t]})),this.__onmetadataHandle=function(){i.currentTime=0,i.video.removeEventListener("loadedmetadata",n.__onmetadataHandle),n.__onmetadataHandle=null},i.video.addEventListener("loadedmetadata",this.__onmetadataHandle),this.playNext(r)}}},{key:"_updateURL",value:function(e){var t=this.player,n=this.config,i=(e||{}).url;return!(!t||!i)&&(t.config.url=i,t.curDefinition&&(t.curDefinition.url=i),this._handlerUrl(i),!this.useVideoLoad&&this.mp4?(this.mp4.updateUrl(n._mainURL,n._backupURL),!0):!!this.useVideoLoad&&(dF.call(this.player,i),!0))}},{key:"_handlerUrl",value:function(e){var t,n=this.config,i=this.playerConfig;if(!e)return!1;var r=[];if("String"===W.Util.typeOf(e))t=e,i.backupURL&&r.push(i.backupURL);else if("Array"===W.Util.typeOf(e)&&e.length>0&&(t=e[0].src,e.length>1))for(var a=1;a<e.length;a++){var l=this._processUrl(e[a].src);r.push(l)}return!(!t&&0===r.length)&&(n._mainURL=this._processUrl(t),n._backupURL=r,!0)}},{key:"_processUrl",value:function(e){var t=this.config,n=this.playerConfig,i=VU.extUrl(e,G({__vid:n.vid},t.reqParams));if(n&&"function"==typeof n.preProcessUrl){var r=n.preProcessUrlOptions||{};i=n.preProcessUrl(i,r).url}return i}},{key:"_processArrayUrl",value:function(e){var t=this;return e.map((function(e){return G(G({},e),{},{src:t._processUrl(e.src)})}))}},{key:"_bindEvents",value:function(){var e=this;this.log(_t.LOG,"bindEvents,",this._isEventInit);var t=this.config,n=this.player;this._isEventInit||(this.on("seeking",this._onSeeking),this.on("waiting",this._onWaiting),this.on("error",this._onVideoError),this.on("playing",this._onPlaying),this.on("detectGap",(function(){t.gapDegrade&&t.useEME&&(t.useEME=!1,e._replay())})),this.on(Fe.CHANGE_FLYING_PLUGIN_CONFIG,this._onChangeConfig),n.setEventsMiddleware({error:function(t,i){var r,a,l,U,F,o,d={errorCode:null==t||null===(r=t.error)||void 0===r?void 0:r.code,errorMessage:null==t||null===(a=t.error)||void 0===a?void 0:a.message,videoType:e.useVideoLoad};(e.changeState("video_error.Middleware",d),e._setPlayerError(d),e.codecType===re.H265&&(null==t||null===(l=t.error)||void 0===l?void 0:l.message.indexOf("video decoder initialization failed"))>=0)&&e.emit("DECODER_FAILED",{codecType:e.config.codecType,vid:null===(U=e.playerConfig)||void 0===U?void 0:U.vid,message:null==t||null===(F=t.error)||void 0===F?void 0:F.message});if(e.log(_t.ERROR,"error middleware",JSON.stringify(d),", isDegrade,",!e._MSEError&&!e.useVideoLoad,n.currentTime),!e._MSEError&&!e.useVideoLoad)return n.vtype=ne.MP4_2,e._MSEError=!0,null===(o=e.mp4)||void 0===o||o.cancelLoading(),e._startDegradedPlayback(d,n.paused),void e.emit(rF);e.emit(rF),e.useVideoLoad&&i(t.eventName,null==t?void 0:t.error)}})),this._isEventInit=!0}},{key:"getBufferDur",value:function(){var e;if(null===(e=this.player)||void 0===e||!e.buffered)return 0;for(var t=this.player.buffered,n=0,i=0,r=t.length;i<r;i++)n+=t.end(i)-t.start(i);return n}},{key:"deleteVideo",value:function(){var e;if((null===(e=this.removeVideoList)||void 0===e?void 0:e.length)>0){for(var t=0;t<this.removeVideoList.length;t++){var n=this.removeVideoList[t],i=n.parentNode;i&&i.removeChild(n),this.log(_t.WARN,"[_removeVideoSource]")}this.removeVideoList=[]}}},{key:"_unbindEvents",value:function(){var e,t;this.log(_t.LOG,"unbindEvents,",this._isEventInit),this.off("seeking",this._onSeeking),this.off("waiting",this._onWaiting),this.off("ended",this._onEnded),this.off("error",this._onError),this.off("playing",this._onPlaying),this.off(Fe.CHANGE_FLYING_PLUGIN_CONFIG,this._onChangeConfig),this._isEventInit=!1,null!==(e=this.config)&&void 0!==e&&e.enableFPSStuckHandle&&this.off(W.Events.FPS_STUCK,this.fpsStuckHandle),null!==(t=this.playerConfig)&&void 0!==t&&t.fixOOM&&(this.off("source_error",this._onSourceError),this.off("error",this._onSourceError))}},{key:"changeState",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this._pTime||(this._pTime=VU.nowTime());var n=VU.nowTime()-this._pTime,i=VU.nowTime()-this._sTime;this.log(_t.LOG,">>>changeState[".concat(e,"]"),n,i,JSON.stringify(t)),this.states.push({state:e,t1:n,t2:i,data:t}),this._pTime=VU.nowTime()}},{key:"_initMseProxy",value:function(){var e,t=this.player.video||this.player.media;(t instanceof HTMLVideoElement&&this.h265_h264_switch(this.playerConfig.mediaType),this.softDecode&&t)&&(this.mseProxy=t,null===(e=t.setPlayMode)||void 0===e||e.call(t,"VOD"),t.addEventListener("lowdecode",this._lowDecoder),t.addEventListener("error",this._onError),this.player.forceDegradeToVideo=function(){})}},{key:"notSupportError",value:function(e){return this.log(_t.LOG,e,Qi),new W.Errors(this.player,{errorType:Ti.MEDIA,errorCode:gi.mse,errorMessage:"".concat(e," ").concat(Qi),vid:this.playerConfig.vid})}},{key:"removeAndRejectInitPromise",value:function(e){this._initPromise&&(this._removePendingPromise(this._initPromise),this._initPromise.reject(e))}},{key:"_initMp4",value:function(e,t){var n,i,r,a,l,U,F=this,o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},d=this.config,Q=this.player,s=this.playerConfig;this.mp4&&(this.mp4.destroy(),this.mp4=null),this._startTimelines.reqtime=VU.nowTime(),this.changeState("MP4_NEW",{});var c,u=0;null!=d&&null!==(n=d.pcdnConfig)&&void 0!==n&&n.openPCDN&&(u=(null==d||null===(c=d.pcdnConfig)||void 0===c?void 0:c.switchPCDNMaxCnt)||2);null!=d&&null!==(i=d.pcdnConfig)&&void 0!==i&&i.adaptPCDNConfig&&null!=d&&null!==(r=d.pcdnConfig)&&void 0!==r&&null!==(r=r.adaptPCDNConfig)&&void 0!==r&&r.PCDNBufferControl&&(u=0),this._setCurrentDefinition(Q.curDefinition);var B=HU;(null==d?void 0:d.loadRangeType)===Ri.SIZE&&(B=OU);var R,h=null===(a=Q.curDefinition)||void 0===a||null===(a=a.pktOffsetMap)||void 0===a?void 0:a.find((function(e){return(null==e?void 0:e.time)===((null==d?void 0:d.firstLoadTimePos)||5)})),V=d.enableWorker,p=d.useUrlRange,m=d.retryCount,Z=d.retryDelay,S=d.timeout,J=d.processMaxGapTime,W=d.onProcessMinLen,f=d.supportHevc,y=d.afterLoadeddataCallBackLen,E=d.firstLoadBuffer,b=d.memoryOpt,v=d.emitMediaListControl,N=d.reqOptions,g=d.audioGroupingStrategy,T=d.fixEditListOffset,C=d.fixEditListOffsetThreshold,L=d.isAddRange,x=d.disableRepeatRange,X=d.alwaysStreamingLoad,D=d.loadRangeType;(this.mp4=new B(e,Q.curDefinition.bitrate,{segmentDuration:d.segmentMinDuration,enableWorker:V,softDecode:this.softDecode,codecType:this.codecType,chunkSize:d.preloadSize,firstLoadSize:null==h?void 0:h.offset,duration:s.duration||0,fileSize:o.fileSize||0,playerId:this.playerId,vid:s.vid,useUrlRange:p,retryCount:m,retryDelay:Z,timeout:S,processMaxGapTime:J,onProcessMinLen:W,supportHevc:f,afterLoadeddataCallBackLen:y,firstLoadBuffer:E,logger:this.logger,memoryOpt:b,emitMediaListControl:v,switchPCDNMaxCnt:u,reqOptions:N,audioGroupingStrategy:g,fixEditListOffset:T,fixEditListOffsetThreshold:C,isAddRange:L,disableRepeatRange:x,alwaysStreamingLoad:X,loadRangeType:D},this.config._backupURL,""),this.mp4.once(vU,this._onMp4MetaReady),this.mp4.on(bU,this._onMp4Error),this.mp4.on(CU,this._updateDrmConfig),this.mp4.on(LU,this._updateMSE),this.mp4.on(TU,this._onMp4Progress),this.mp4.on(gU,this._onMp4DataCallBack),this.mp4.on(GU,(function(e){var t;null===(t=F.player)||void 0===t||t.emit("source_error",e)})),this.mp4.on(DU,(function(e){F.pcdn&&e&&F.pcdn.removePCDNNode(e.vid,e.bitrate,e.url)})),this.mp4.on(xU,(function(e){F.player&&(F.player.emit("initialUrl",{url:e}),F.player.emit("changeHost",VU.getHostFromUrl(e)))})),this.mp4.on(XU,function(){var e=k(M().mark((function e(t){var n;return M().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,null===(n=F.mp4)||void 0===n?void 0:n.cancelLoading();case 2:F._curLoadSegmentIdx=t,F.log(_t.LOG,"[update curLoadSegmentIdx]",t);case 4:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()),this.mp4.on(IU,(function(e){var t;if(F.player){var n,i=s.vid,r=(null==e?void 0:e.load_type)||MU,a=null===(t=F.mp4)||void 0===t?void 0:t.getCurSwitchPCDNCnt(),l=F._currDefinition,U=l.bitrate,o=l.definition,d=l.file_id;if(r===MU)F.player.emit("prf_data_size",{vid:i,task_type:1,cdn_size:e.len,change_cnt:a,definition:o,bitrate:U,fileid:d});else F.player.emit("prf_data_size",{vid:i,task_type:1,pcdn_size:e.len,trace_id:null===(n=F.mp4)||void 0===n||null===(n=n.pcdnTraceInfo)||void 0===n?void 0:n.trace_id,change_cnt:a,definition:o,bitrate:U,fileid:d});F.mp4&&F.mp4.updateLoadInfo(r,e.len),ii&&console.log("prf_data_size emit, vid,",i,",loadType,",r,", task_type, 1",",len,",e.len)}})),this.mp4.MP4Loader.on(di,(function(e){var t,n;QF=e.speed,F.debugInfo.speed||(F.debugInfo.speed=[]),F.debugInfo.speed.push(QF),F.debugInfo.speed.length>10&&F.debugInfo.speed.shift();var i=(null==e||null===(t=e.priOptions)||void 0===t?void 0:t.type)||MU;F.emit(di,G(G({},e),{},{type:i}));var r=(null===(n=F.playerConfig)||void 0===n?void 0:n.vid)||(null==e?void 0:e.vid);if((null==e?void 0:e.len)>0){var a,l,U,o;if(!F.player)return;var d=(null==e||null===(a=e.priOptions)||void 0===a?void 0:a.type)||MU,Q=uU(e.len,e.time),s=(null===(l=F.adaptRangeRes)||void 0===l?void 0:l.length)>0?F.adaptRangeRes.shift():{},c=s.cachedBufferDur,u=s.loadTarDuration,B=s.loadDuration,R=s.forceSetMin,h=s.idx,V=s.PCDNInBuffer,p=s.PCDNOutBuffer,m=s.loadSize,Z=null===(U=F.mp4)||void 0===U?void 0:U.getCurSwitchPCDNCnt(),S=F._currDefinition,J={vid:r,task_type:1,buffer_dur:c||-1,load_tar_dur:u||-1,load_dur:B||-1,force_set_min:R,in_buf:V||-1,out_buf:p||-1,change_cnt:Z,bitrate:S.bitrate,definition:S.definition,fileid:S.file_id,load_size:m||-1};d===MU?(J.cdn_size=e.len,J.cdn_speed=Q):(J.pcdn_size=e.len,J.pcdn_speed=Q),F.player.emit("prf_data_size",J),ii&&console.log("prf_data_size emit,",h,JSON.stringify(J));var W=e.index?null===(o=F.mp4)||void 0===o||null===(o=o.adaptTimeRange[e.index])||void 0===o||null===(o=o.timeRangeIdx)||void 0===o?void 0:o[1]:null;if(W&&W>=F.mp4.timeRange.length-1)for(;(null===(f=F.adaptRangeRes)||void 0===f?void 0:f.length)>0;){var f,y,k=F.adaptRangeRes.shift(),E=k.cachedBufferDur,b=k.loadTarDuration,v=k.loadDuration,N=k.forceSetMin,g=k.idx,T=k.loadSize,C=k.PCDNInBuffer,L=k.PCDNOutBuffer,x=null===(y=F.mp4)||void 0===y?void 0:y.getCurSwitchPCDNCnt();J.buffer_dur=E||-1,J.load_tar_dur=b||-1,J.load_dur=v||-1,J.force_set_min=N||-1,J.in_buf=C||-1,J.out_buf=L||-1,J.load_size=T||-1,J.change_cnt=x,F.player.emit("prf_data_size",J),ii&&console.log("prf_data_size emit,",g,JSON.stringify(J))}F.mp4&&F.mp4.updateLoadInfo(d,e.len)}})),this.mp4.on(oi.MEDIA_LIST,(function(e){var t;null===(t=F.player)||void 0===t||t.emit(oi.MEDIA_LIST,e)})),null!=d&&null!==(l=d.pcdnConfig)&&void 0!==l&&l.adaptPCDNConfig&&null!=d&&null!==(U=d.pcdnConfig)&&void 0!==U&&null!==(U=U.adaptPCDNConfig)&&void 0!==U&&U.PCDNBufferControl)&&(null===(R=this.mp4)||void 0===R||R.setSwitchPCDNCallBack((function(){var e=F.pcdn;if(!e)return-1;var t=e.getPCDNChangeCnt()||-1;return F.log(_t.LOG,"[updateSwitchPCDNMaxCnt]",t),t})));this.changeState("MP4_INIT",{destroy:this.mp4.hasDestroyed}),this.emit("loadstart_mse"),this.mp4.bufferTimeFuncCallBack=function(){return Q.bufferedPoint.end-Q.currentTime},this.mp4.init(t),this._emitDefinitionChangeDetailEvent(0)}},{key:"_checkPreloader",value:(a=k(M().mark((function e(){var t,n,i,r,a,l,U,F,o,d,Q,s,c;return M().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t=this.player,n=t.curDefinition,i=t.preloader,r=Promise.withResolvers(),a=r.promise,l=r.resolve,U={method:"checkPreloader",success:0,type:"error",cacheKey:""},i){e.next=9;break}return this.changeState(pi,{t:2}),U.success=0,U.error=new Error("no_preloader"),l(U),e.abrupt("return",a);case 9:if(F=hU(n),o=i.getDataUniqueKey(F),U.cacheKey=o,!o){e.next=46;break}return e.next=15,i.getPreLoadData(F);case 15:if(!(d=e.sent)){e.next=39;break}if(s=d.bitrate,c=d.orgDefinition,delete d.generateBy,!s||!n.bitrate||s===n.bitrate){e.next=27;break}return this.preLoadData=null,U.success=0,U.error=new Error("bitrate_not_match_cut_".concat(n.bitrate,"_cache_").concat(s)),this.changeState(pi,{t:1,bitrate:s,ck:o}),l(U),this.log(_t.LOG,">>>check Preloader bitrate_not_match cacheKey".concat(o,"\n curDefinition:").concat(n.bitrate," cache:").concat(s)),e.abrupt("return",a);case 27:n.orgDefinition=c,ni&&console.log(">>>>check Preloader result",o,d),this.preLoadData=d,this.emit("PRELOAD_INFO",this.preLoadData),U.success=1,U.data=d,null===(Q=this.preloader)||void 0===Q||Q.setUsePreloadInfo(o,!0),this.changeState(Zi,{t:4,l:this.preLoadData.byteLength,ck:o}),d.mediaSegList&&d.mediaSegList.length>0||d.buffer&&d.buffer.byteLength>0?this.hitpreload=!0:this.hitpreload=!1,l(U),e.next=44;break;case 39:this.preLoadData=null,this.changeState(pi,{t:0,ck:o}),U.success=0,U.error=new Error("none_preload"),l(U);case 44:e.next=50;break;case 46:this.changeState(pi,{t:3,ck:o}),U.success=0,U.error=new Error("none_preload"),l(U);case 50:return e.abrupt("return",a);case 51:case"end":return e.stop()}}),e,this)}))),function(){return a.apply(this,arguments)})},{key:"_initEME",value:function(e){var t,n,i=this.config,r=i.kid,a=i.drmKeyToken,l=i.secretKey,U=i.keyValue,F=i.drm,o=i.useEME;if((r||a||l||U||F)&&o&&!ee.checkEMEValid())return this.log(_t.ERROR,"checkEMEInValid"),void this._errorHandler(new W.Errors(this.player,{errorType:Ti.MEDIA,errorCode:gi.eme_hijack,errorMessage:"checkEMEInValid",vid:this.playerConfig.vid}));var d=this.player,Q=this.config;this._updateDrmConfig(e),this.log(_t.LOG,"useEME: ",Q.useEME),null===(t=this._secretkey)||void 0===t||t.setOptions('video/mp4; codecs="avc1.64001E"','audio/mp4; codecs="mp4a.40.2"'),null===(n=this._secretkey)||void 0===n||n.setupEME(d.video)}},{key:"_initMse",value:(r=k(M().mark((function e(t){var n,i,r,a,l,U,F,o,d,Q,s,c,u,B,R,h,V,p,m,Z,S=this,J=arguments;return M().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r=J.length>1&&void 0!==J[1]&&J[1],a=this.config,l=a.kid,U=a.drmKeyToken,F=a.secretKey,o=a.keyValue,d=a.drm,Q=a.useEME,!(l||U||F||o||d)||!Q||ee.checkMSEValid(this.config.preferMMS)){e.next=6;break}return this.log(_t.ERROR,"checkMSEInValid "),this._errorHandler(new W.Errors(this.player,{errorType:Ti.MEDIA,errorCode:gi.mse_hijack,errorMessage:"checkMSEInValid",vid:this.playerConfig.vid})),e.abrupt("return");case 6:null===(n=this.player)||void 0===n||n.emit("codecsupdate",t.videoCodec),this.updateMSEDuration(),s=this.mp4&&this.mp4.checkCodecH265(),c=this.mp4&&this.mp4.checkCodecH266(),u=!!t.videoCodec,B=!!t.audioCodec,R=u&&B?s?'video/mp4; codecs="hev1.1.6.L93.B0, mp4a.40.5"':c?'video/mp4; codecs="bvc2.1.6.L93.B0, mp4a.40.5"':'video/mp4; codecs="avc1.64001E, mp4a.40.5"':u?s?'video/mp4; codecs="hev1.1.6.L93.B0"':c?'video/mp4; codecs="bvc2.1.6.L93.B0"':'video/mp4; codecs="avc1.64001E"':'video/mp4; codecs="mp4a.40.5"',h=T({},ln.VIDEO,{mimeType:"video/mp4",codec:R}),this.mse?this._bindSrcTiming===fi?V=this.mse._openPromise:(this.log(_t.LOG,"MSE exist"),p=Promise.withResolvers(),m=p.promise,Z=p.resolve,V=m,Z()):(this.log(_t.LOG,"new MSE",this._bindSrcTiming),this.mse=new ln(null,{preferMMS:this.config.preferMMS}),V=this.mse.bindMedia(this.player.video)),null===(i=this.player)||void 0===i||i.emit("mseAttaching"),V.then((function(e){var t;S.changeState("MSE_OPEN"),null===(t=S.player)||void 0===t||t.emit("mseAttached");var n=Object.keys(h);try{for(var i=0;i<n.length;i++){var a,l=n[i];null===(a=S.mse)||void 0===a||a.createOrChangeSource(l,h[l].codec).then((function(){S.changeState("MSE_OPEN_DONE"),S._isMseInit=!0,S._onTimeUpdate()})).catch(function(){var e=k(M().mark((function e(t){var n;return M().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return S.config.reUseMSE=!1,S.log(_t.WARN,"MSE createOrChangeSource catch err: ",null==t?void 0:t.message),e.next=4,null===(n=S.mse)||void 0===n?void 0:n.unbindMedia();case 4:S.mse=null,S._isMseInit=!1,r?S.MSEErrorHandle(t):S._initMse(S.mp4.meta,!0);case 7:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}())}}catch(U){S.MSEErrorHandle(U)}})),this.changeState("MSE_INIT");case 18:case"end":return e.stop()}}),e,this)}))),function(e){return r.apply(this,arguments)})},{key:"MSEErrorHandle",value:function(e){var t=new W.Errors(this.player,{errorType:Ti.mse,errorCode:gi.mse,vid:this.playerConfig.vid,errorMessage:e.message,mediaError:{code:gi.mse,message:e.message}});this.log(_t.ERROR,"initMse error: ",null==e?void 0:e.message),this._errorHandler(t)}},{key:"_appendInitSeg",value:function(e){var t=this;this.mse&&!this._MSEError&&(this.changeState("MSE_INITSEG"),this.mse.append(ln.VIDEO,e,{vid:this.playerConfig.vid,range:null,dataLen:e.byteLength,isinit:!0}).then((function(e){t.changeState("MSE_INITSEG_OK",{costtime:null==e?void 0:e.costtime})})),this.config.useEME&&this._secretkey&&(this._secretkey.emit(ee.EVENT_EME.ENCRYPTED),this.player.emit(ee.EVENT_EME.ENCRYPTED)))}},{key:"_checkMetaInfo",value:function(e){if(!e)return new W.Errors(this.player,{errorType:Ti.DEMUX,errorCode:gi.metaError,errorMessage:"meta is null",vid:this.playerConfig.vid});var t,n=this.player.video||this.player.media,i=this.mp4.checkCodecH265(),r=this.mp4.checkCodecH266();if(this.changeState("MP4_META_READY",{isH265:i,isH266:r}),i&&(this.codecType!==re.H265&&(this.codecType=re.H265,this.log(_t.LOG,"codecType fix ".concat(this.codecType,", ").concat(e.videoCodec))),!this.softDecode&&!this.config.supportHevc))return this.notSupportError("".concat(this.codecType," - ").concat(e.videoCodec));if(r&&(this.codecType!==re.H266&&(this.codecType=re.H266,this.log(_t.LOG,"codecType fix ",this.codecType,e.videoCodec)),!(this.softDecode&&"probably"===(null===(t=n.canPlayType)||void 0===t?void 0:t.call(n,'video/mp4; codecs="'.concat(e.videoCodec,'"')))||this.config.supportVvcc)))return this.notSupportError("".concat(this.codecType," - ").concat(e.videoCodec));var a=this.config,l=a.enableCheckTrackGap,U=a.trackGap;if(e.videoCodec&&e.audioCodec&&l){var F=e.moov.trak,o=e.moov.mvhd.timescale,d=this._getTrakDuration(F[0],o),Q=this._getTrakDuration(F[1],o);if(Math.abs(d-Q)>U)return new W.Errors(this.player,{errorType:Ti.DEMUX,errorCode:gi.metaError,errorMessage:"video track and audio track duration long gap, mse cannot play to end",vid:this.playerConfig.vid})}return null}},{key:"_getTrakDuration",value:function(e,t){return e.tkhd.duration/t}},{key:"_stopProgress",value:function(){this.log(_t.LOG,"stopProgress",this._hasStartProgress),this._hasStartProgress=!1,this._requestTimer&&this._requestTimer.stop(),this._bufferBreakTimer&&(clearTimeout(this._bufferBreakTimer),this._bufferBreakTimer=null,this._bufferBreakFlag=void 0),this._seekResumTimer&&(clearTimeout(this._seekResumTimer),this._seekResumTimer=null)}},{key:"checkReStartTimer",value:function(){var e=VU.nowTime()-this._lastTimeupdateTime2;e>2*this._tickInSeconds*1e3&&!this._offineLine&&(this.log(_t.LOG,"checkReStartTimer reStart timer",e,VU.nowTime()),this._stopProgress(),this._startProgress(),this._lastTimeupdateTime2=VU.nowTime())}},{key:"_bindNetworkStateChange",value:function(){window.addEventListener("online",this._onOnlineHandler),window.addEventListener("offline",this._onOfflineHandler)}},{key:"_unbindNetworkStateChange",value:function(){window.removeEventListener("online",this._onOnlineHandler),window.removeEventListener("offline",this._onOfflineHandler)}},{key:"_onSuperStart",value:function(e){var t=this,n=this.player;ai("_onSuperStart:".concat(e),this.mse),n.video.src=e,this.once("canplay",(function(){n.play(),t.on("waiting",t._onWaiting)}))}},{key:"_appendBuffer",value:function(e,t,n,i){var r=this,a=this.mse,l=this.playerConfig,U=this.player,F=l.vid;n=n||{},this.log(_t.LOG,"appendStart",n.fragIndex,JSON.stringify(n.range)),this._MSEError?this.log(_t.ERROR,"_MSEError, not append return"):a.append(e,t,{vid:F,state:i,context:JSON.stringify(n)}).then((function(e){var t,a,l,F;2===U.changeDefinitionSeekState&&(U.changeDefinitionSeekState=3,r.log(_t.LOG,"appendEnd changeDefinitionSeekState += 0.001"),U.currentTime+=.001);var o=r.getAllBufferRange(),d=null!=e&&null!==(t=e.context)&&void 0!==t&&t.context?JSON.parse(null==e||null===(a=e.context)||void 0===a?void 0:a.context):{};if(r.log(_t.LOG,"appendEnd ",null==d?void 0:d.fragIndex,JSON.stringify(null==d?void 0:d.range),", costTime,",null==e?void 0:e.costtime,", opt,",null==e?void 0:e.name,",buffer,",JSON.stringify(o),U.currentTime),!r.loadedDataEventRev){var Q=(null==e?void 0:e.costtime)||0,s=r.states.findIndex((function(e){return"APPEND_DATA_OK"===e.state}));s>=0?(r.states[s].data.cnt+=1,r.states[s].data.costtime+=Q):r.changeState("APPEND_DATA_OK",{costtime:Q,cnt:1})}if(r.mse&&i&&(null!==(l=r.mp4)&&void 0!==l&&l.checkIsLoadEnd(null===(F=n.range)||void 0===F?void 0:F[1])||r._loadedEnd)){var c=r.player.buffered;r._loadedEnd=!0;var u=0;c&&(null==c?void 0:c.length)>0&&(u=c.end(c.length-1)),r._isEnded(),r.log(_t.LOG,"loaded ended !!!===>>>",JSON.stringify(n.range),", fragIndex,",n.fragIndex,", bufferEndTime,",u,",meta_duration,",r.mp4.meta.duration)}})).catch((function(e){var t=r.player,i=r.mse;if(r._hasFirstFramed||r._setStartTimelines(le.MSE_ERROR,{message:null==e?void 0:e.message}),!r._MSEError&&t){var a=t.media||t.video;if(e&&null!=i&&i.isFull()){r.log(_t.WARN,"[MSE is full]");var l=t.getBufferedRange();r._checkRemovePlayedBuffer(l,t.currentTime,!0)}else{var U,o,d,Q,s="".concat(null!=a&&a.error?[a.error.code,a.error.message].join("-"):"MEDIA_EMPTY"),c="".concat((null==e?void 0:e.errorCode)||"","-").concat((null==e?void 0:e.errorMessage)||(null==e?void 0:e.message)||"MSE_EMPTY"),u="".concat(c,"|").concat(s);r._MSEError=!0,r.changeState("_MSEError",{fragIndex:null===(U=n)||void 0===U?void 0:U.fragIndex,range:null===(o=n)||void 0===o?void 0:o.range}),r.log(_t.LOG,"MSE append error",null===(d=n)||void 0===d?void 0:d.fragIndex,JSON.stringify(null===(Q=n)||void 0===Q?void 0:Q.range));var B=new W.Errors(t,{errorType:Ti.MEDIA,errorCode:gi.mseAppend,vid:F,errorMessage:u,mediaError:{code:gi.mseAppend,message:u}});r._errorHandler(B)}}}))}},{key:"_loadData",value:(i=k(M().mark((function e(){var t,n;return M().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this.mp4&&(this._isMseInit||this.softDecode)){e.next=2;break}return e.abrupt("return");case 2:if(e.prev=2,t=this.player,n=It.info(It.get(t.media||t.video),t.currentTime),this.config.alwaysStreamingLoad||!(n.remaining>5)){e.next=10;break}return e.next=8,this.mp4.loadAllFragmentData(this._curLoadSegmentIdx,this._loadDataSuccess);case 8:e.next=12;break;case 10:return e.next=12,this.mp4.load(this._curLoadSegmentIdx,this._loadDataSuccess);case 12:e.next=17;break;case 14:e.prev=14,e.t0=e.catch(2),this.log(_t.ERROR,"[Index] _loadData error",this.playerConfig.vid,null===e.t0||void 0===e.t0?void 0:e.t0.message);case 17:case"end":return e.stop()}}),e,this,[[2,14]])}))),function(){return i.apply(this,arguments)})},{key:"getDataBitRate",value:function(e){var t=this.mp4,n=this.playerConfig;if(!t)return 0;for(var i=t.getDataBitRate(e),r=n.definition.list,a=0,l=0;r&&l<r.length;l++)if(r[l].bitrate===i){a=r[l];break}return a}},{key:"_loadStuckCheck",value:function(){var e=this,t=this.config,n=this.player;if(!t.disableBufferBreakCheck){if((!this.playerConfig.autoplay||this.softDecode)&&!this.playFlag)return;var i=n.isUserActive;if(n.currentTime-(this._lastCurrentTime||0)>.1||!i&&n.paused||i&&this.playFlag&&n.paused)1!==this._bufferBreakFlag&&2!==this._bufferBreakFlag||(this.log(_t.LOG,"视频没有卡死,重置卡死标记,curtime,",n.currentTime),this._bufferBreakFlag=0,clearTimeout(this._bufferBreakTimer),this._bufferBreakFlag=null);else if(!this._bufferBreakFlag){this._bufferBreakFlag=1;var r=JSON.stringify(this.getAllBufferRange()),a=this.getWaitingTimeOut();this.log(_t.LOG,"卡死计时开始! ".concat(a,"ms后确认卡死,"),n.currentTime,r),this._bufferBreakTimer=setTimeout((function(){if(!(e.isDestroy||t.disableInactiveWaitingCheck||!i&&n.paused||i&&e.playFlag&&n.paused)){if(1===e._bufferBreakFlag){var r=n.currentTime,a=n.bufferedPoint;if(a.end>0&&a.end-r>=2)return void e.retrySeekResum(r)}e._bufferBreakFlag=2,e.waitTimeoutDegrade()}}),a)}this._lastCurrentTime=n.currentTime}}},{key:"getWaitingTimeOut",value:function(){var e=this.player,t=this.config.waitingTimeOut;if(!this.playFlag){var n=e.curDefinition.duration;if(n>0){var i=yi.find((function(e){return n>=e.range[0]&&n<e.range[1]}));i&&(t=i.time)}}return t}},{key:"waitTimeoutDegrade",value:function(){var e,t=this.player;this.changeState("wait_timeout"),this.log(_t.LOG,"确认卡死!!!,curtime,",t.currentTime,JSON.stringify(this.getAllBufferRange()),",duration,",null===(e=this.mp4)||void 0===e||null===(e=e.meta)||void 0===e?void 0:e.duration),this.emit("waittimeout");var n=document.hidden||"hidden"===document.visibilityState,i=new W.Errors(this.player,{errorType:Ti.RUNTIME,errorCode:n?gi.waitTimeoutWithHidden:gi.waitTimeout,errorMessage:"wait_timeout",vid:this.playerConfig.vid});this._errorHandler(i)}},{key:"retrySeekResum",value:(n=k(M().mark((function e(t){var n,i,r,a,l=this;return M().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(n=this.player,i=this.config,this.changeState("retrySeek"),this.log(_t.LOG,"卡死但有超过2s的buffer,seek下!!!"),clearTimeout(this._seekResumTimer),this._resumePlay=!1,!(i.waitingRetrySeekTimes>0&&i.waitingRetryDuration)){e.next=14;break}return r=Math.min(i.waitingRetrySeekTimes,3),this._currentSeekTimes=0,this.off("playing",this._onResumePlaying),this.once("playing",this._onResumePlaying),a=function(){if(!n||l._resumePlay||n.paused)l.log(_t.LOG,"当前播放实例已恢复或处于暂停状态,退出重试 player=".concat(!!n,",_resumePlay=").concat(l._resumePlay,",paused=").concat(null==n?void 0:n.paused));else{if(l._currentSeekTimes<r)return l._seekOnce(t),void(l._seekResumTimer=setTimeout(a,i.waitingRetryDuration));l.waitTimeoutDegrade(),l._seekResumTimer=null}},this._seekOnce(t),this._seekResumTimer=setTimeout(a,i.waitingRetryDuration),e.abrupt("return");case 14:n.currentTime=t+1,this.once("playing",(function(){l._resumePlay=!0})),this._seekResumTimer=setTimeout((function(){l._resumePlay||l.waitTimeoutDegrade(),l._seekResumTimer=null}),Math.ceil(i.waitingTimeOut/2));case 17:case"end":return e.stop()}}),e,this)}))),function(e){return n.apply(this,arguments)})},{key:"_isInBuffer",value:function(e){for(var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=!1,i=this.player.video.buffered,r=0;r<i.length;r++){var a=i.start(r)-t,l=i.end(r)+t;if(a<=e.startTime&&e.endTime<=l){n=!0;break}}return n}},{key:"_doubleCheckBuffer",value:function(e){var t=this.player;return!(e.startTime>t.currentTime)||(!t.video||!t.video.buffered||(1===t.video.buffered.length||this._isInBuffer(e,.2)))}},{key:"isOpenPCDN",value:function(e){var t=this;if(this.pcdn&&this.mp4){var n=e-this.player.currentTime,i=this.pcdn,r=this.config,a=this.mp4,l=r.pcdnConfig,U=i.getPCDNInBuffer()||l.enterMinBuffer,F=i.getPCDNOutBuffer()||l.outMaxBuffer;if(n>=U){if(a.updatePCDNState(KU),a.isUpdateNode){var o=this.player.curDefinition,d=o.uri,Q=o.bitrate;this.pcdn.getPCDNNode(d,Q,this.getPCDNReqId()).then((function(e){if(a){var n,r=t.getPCDNReqId();if(null!=e&&e.req_id&&r!==e.req_id)t.log(_t.LOG,",getPCDNNode is not match curDefinition reqId",r,", pcdnRet.req_id",e.req_id);else if(a.updateNode(null==e?void 0:e.nodes),i.updatePCDNBitrate(Q),e&&(a.pcdnTraceInfo={uri:e.vid,fid:e.fid,trace_id:null==e?void 0:e.trace_id}),e&&a.pcdnVVStat)a.pcdnVVStat.try_req_node+=1,a.pcdnVVStat.req_node_succ+=1,a.pcdnVVStat.has_ret_node+=(null==e||null===(n=e.nodes)||void 0===n?void 0:n.length)>0?1:0}})).catch((function(e){(null==a?void 0:a.pcdnVVStat)&&(a.pcdnVVStat.try_req_node+=1),t.checkURLExpired(e,"_getPCDNNode")}))}}else n<F&&a.updatePCDNState(wU)}}},{key:"checkURLExpired",value:function(e,t){var n,i,r,a,l=VU.checkUrlIsExpired(this.config._mainURL);1===l&&this.pcdn&&(this.pcdn=null);var U=(null==e||null===(n=e.response)||void 0===n?void 0:n.url)||(null===(i=this.config.pcdnConfig)||void 0===i?void 0:i.trackerUrl);null===(r=this.player)||void 0===r||r.emit("source_error",{host:VU.getHostFromUrl(U),src:U,errorCode:null==e||null===(a=e.response)||void 0===a?void 0:a.status,message:"".concat(null==e?void 0:e.message,"-").concat(l).concat(t)})}},{key:"pushTimerStep",value:function(){var e;(null===(e=this.timerStepList)||void 0===e?void 0:e.length)>10&&this.timerStepList.shift(),this._lastTimeupdateTime2>0&&this.timerStepList.push(VU.nowTime()-this._lastTimeupdateTime2)}},{key:"_onTimeUpdate",value:function(){this.pushTimerStep(),this._lastTimeupdateTime2=VU.nowTime();var e=this.mse,t=this.mp4,n=this.player,i=this.config;if(n)if(AU()&&n.paused!==this._usePaused&&(this._usePaused?n.pause():n.play()),!this.useVideoLoad&&t){var r=n.getBufferedRange();VU.nowTime()-this._lastCheckTime>1e3&&(this._lastCheckTime=VU.nowTime(),this._loadStuckCheck(),this._startUrlExpiredCheck(),this._checkRemovePlayedBuffer(r,n.currentTime));var a=t.timeRange;if(a&&!(a.length<1)&&(e||this.mseProxy)&&this.canDownload){var l,U,F=this._maxBufferLength,o=!1;if((this.playFlag&&n.paused||!this.isActive)&&(o=!0),o)F=n.isInstNext&&this._nextBufferLength>=0?this._nextBufferLength:this._minBufferLength;else null!==(U=this.config)&&void 0!==U&&null!==(U=U.adaptRange)&&void 0!==U&&U.targetCacheControl&&(F=this.adaptRange.getAdaptCacheBuffer());!this.preLoadData&&null!==(l=this.config)&&void 0!==l&&null!==(l=l.adaptRange)&&void 0!==l&&l.targetCacheControl&&(F+=this.config.noPreloadAddBufferLen);var d=n.currentTime+F;r[1]-d<0&&(this.isOpenPCDN(r[1]),(null==i?void 0:i.loadRangeType)===Ri.SIZE?this.sizeRangeCheckLoad(o,F,r[1]-n.currentTime):this.gopRangeCheckLoad(o,F)),this.playFlag&&!this._hasTriggerBufferThreshold&&this._startBufferCheck()}}else{var Q;this.useVideoLoad&&null!==(Q=this.expiryCheckPlugin)&&void 0!==Q&&null!==(Q=Q.config)&&void 0!==Q&&Q.enableExpiryCheck&&VU.nowTime()-this._lastCheckTime>1e3&&(this._lastCheckTime=VU.nowTime(),this._startUrlExpiredCheck())}}},{key:"sizeRangeCheckLoad",value:function(e,t,n){var i,r=this.player,a=this.mp4,l=a.adaptTimeRange,U=l.length,F=a.size-1||r.curDefinition.size-1;if(null==l||!l.length||(null===(i=l[U-1])||void 0===i?void 0:i.range[1])<F||!l[U-1].isLoading||a.changeBitRateTime>0){var o=l.findIndex((function(e){return!e.downloaded}));if(null==l||!l.length||o>=0||l[U-1].downloaded){var d,Q=this.calculateAdaptRange(e,t),s=Q.adaptRangeRes,c=Q.loadDuration;if(s.loadDuration=c,o<0)a.changeBitRateTime>0&&(null===(d=l[U-1])||void 0===d?void 0:d.range[1])>=F?(this._curLoadSegmentIdx=l.length-1,this.log(_t.LOG,"changeBitRateTime> 0 and load last adaptTime")):this._curLoadSegmentIdx=a.updateAdaptTimeRange(null,c);else this._curLoadSegmentIdx=o;if(o>0&&a.changeBitRateTime<=0){var u=l[o-1];if(null!=u&&u.downloaded&&n>0&&(null==u?void 0:u.endTime)-r.currentTime>=t)return}var B=l[this._curLoadSegmentIdx];if(this._curLoadSegmentIdx>=0&&this._isInBuffer(B)&&this._removeBuffEndTime<=0&&this._curLoadSegmentIdx>=0&&B.endTime-B.startTime>1)return l[this._curLoadSegmentIdx].downloaded=!0,l[this._curLoadSegmentIdx].isLoading=!0,this.log(_t.LOG,"onTimeUpdate, ".concat(this._curLoadSegmentIdx," download segment, has buffer"),B.startTime,B.endTime,r.currentTime),void(a.seekTime<B.endTime&&(a.seekTime=B.endTime,this.log(_t.LOG,"".concat(this._curLoadSegmentIdx," download segment, has buffer adjust seekTime"))));s.idx=this._curLoadSegmentIdx,this.adaptRangeResPush(s),(!l[this._curLoadSegmentIdx].isLoading||a.changeBitRateTime>0)&&(this.log(_t.LOG,"[onTimeUpdate],load index==>>>, ",this._curLoadSegmentIdx,JSON.stringify(l[this._curLoadSegmentIdx])),this._loadData())}}}},{key:"adaptRangeResPush",value:function(e){var t;this.adaptRangeRes.length&&(null===(t=this.adaptRangeRes[e.length-1])||void 0===t?void 0:t.idx)===this._curLoadSegmentIdx||(this.adaptRangeRes.push(e),this.log(_t.LOG,"adaptRangeRes>>>>",e))}},{key:"gopRangeCheckLoad",value:function(e,t){var n=this,i=this.player,r=this.mp4,a=r.timeRange,l=r.adaptTimeRange,U=r.changeBitRateTime;a.every((function(r,a){if(void 0!==r.adaptTimeRangeIdx&&r.adaptTimeRangeIdx>=0&&l&&l[r.adaptTimeRangeIdx].downloaded&&!(U>0&&r.adaptTimeRangeIdx===l.length-1&&l[r.adaptTimeRangeIdx].downloaded))return!0;var F=n.mp4.getAdaptIdxBySrcIdx(a,!0),o=F>=0?l[F]:null,d=F>=0&&n._isInBuffer(o);if(n._removeBuffEndTime<=0&&F>=0&&o.endTime-o.startTime>1&&d)return l[F].downloaded=!0,l[F].isLoading=!0,n.log(_t.LOG,"onTimeUpdate, ".concat(F," download segment, has buffer"),o.startTime,o.endTime,i.currentTime),!0;if(r.startTime-i.currentTime<t){var Q,s=n.calculateAdaptRange(e,t),c=s.adaptRangeRes,u=s.loadDuration;n._curLoadSegmentIdx=n.mp4.updateAdaptTimeRange(a,u),c.idx=n._curLoadSegmentIdx,(null===(Q=n.config)||void 0===Q||null===(Q=Q.adaptRange)||void 0===Q?void 0:Q.rangeControl)&&(c.loadDuration=n.mp4.adaptTimeRange[n._curLoadSegmentIdx].duration),n.adaptRangeResPush(c);var B=l[n._curLoadSegmentIdx];if(n._isInBuffer(B))return B.downloaded=!0,B.isLoading=!0,n.log(_t.LOG,"onTimeUpdate_, ".concat(n._curLoadSegmentIdx," download segment, has buffer"),B.startTime,B.endTime,i.currentTime),!0;(!l[n._curLoadSegmentIdx].isLoading||U>0)&&(n.log(_t.LOG,"[onTimeUpdate],load index==>>>, ",n._curLoadSegmentIdx,JSON.stringify(l[n._curLoadSegmentIdx])),n._loadData())}}))}},{key:"calculateAdaptRange",value:function(e,t){var n,i,r,a,l,U={forceSetMin:e};(null!==(n=this.pcdn)&&void 0!==n&&n.isOpenAdaptPCDN&&(U.PCDNInBuffer=this.pcdn.curPCDNInBuffer,U.PCDNOutBuffer=this.pcdn.curPCDNOutBuffer),!this.playFlag||e)?a=this._minBufferLength:null!==(l=this.config)&&void 0!==l&&null!==(l=l.adaptRange)&&void 0!==l&&l.rangeControl?(a=this.adaptRange.getAdaptLoadDuration(),U.loadTarDuration=a):a=this.config.rangeMaxDuration;return(null===(i=this.config)||void 0===i||null===(i=i.adaptRange)||void 0===i?void 0:i.targetCacheControl)&&(U.cachedBufferDur=t),!this.playFlag&&null!==(r=this.config)&&void 0!==r&&null!==(r=r.adaptRange)&&void 0!==r&&r.rangeControl&&(U.loadTarDuration=a),{adaptRangeRes:U,loadDuration:a}}},{key:"checkReUseMSE",value:function(e,t){var n=this,i=this.mse;if(i)if(e||this.config.reUseMSE){var r;i.clearOpQueues(ln.VIDEO,t),this.mseAbort();var a=null===(r=this.player)||void 0===r?void 0:r.buffered;if((null==a?void 0:a.length)>0){var l=a.end(a.length-1);this.log(_t.LOG,"reUseMSE remove buffer, 0-",l),this._canUpdateDuration=!1,this.removeBuffer(ln.VIDEO,0,l,(function(){var e;n._canUpdateDuration=!0,(null===(e=n.mp4)||void 0===e||null===(e=e.meta)||void 0===e?void 0:e.duration)&&n.updateMSEDuration()}))}}else i.unbindMedia(),this.mse=null,this._unloadVideo()}},{key:"updateMSEDuration",value:function(){var e,t=this.mse,n=this.mp4;this._canUpdateDuration&&null!=n&&null!==(e=n.meta)&&void 0!==e&&e.duration&&n.meta.duration!==t.duration&&(this.log(_t.LOG,"updateMSEDuration ",n.meta.duration,",oldDuration,",t.duration),t.updateDuration(n.meta.duration),this._canUpdateDuration=null)}},{key:"_reset",value:function(){this._bindSrcTiming=Wi,this._definitionChangePointInfo=null,this._isReceiveEndedEvent=!1,this.adaptRangeRes=[],this.hitpreload=!1,this._sTime=VU.nowTime(),this._removeBuffEndTime=0,this._usePaused=!1,this.useVideoLoad=!1,this._isMseInit=!1,this.loadedDataEventRev=!1,this.needStarLoadFirstSegment=!1,this._curLoadSegmentIdx=0,this.emitExpireTimestamp=null,this.preLoadData=null,this.forPreloadTimeCache=null,this.playFlag=!1,this.waitLevelStartTime=-1,this._waitAdjustTimeCnt=0,this._initPromise&&"pending"===this._initPromise.state&&this._initPromise.reject(iF),clearTimeout(this.checkResumePlayTimer),this.checkResumePlayTimer=null,this._stopProgress(),this.mp4&&(this.mp4.destroy(),this.mp4=null),this.mseProxy&&(this.player.video.removeEventListener("lowdecode",this._onDegrade),this.player.video.removeEventListener("error",this._onError)),this._unloadVideo(),this._cancelPendingPromises(),this._abrService&&(this._abrService.destroy(),this._abrService=null),clearTimeout(this._waitInBufferTimer),this._waitInBufferTimer=null,this.canDownload=!0,this._mediaCodec={videoCodec:"",audioCodec:""}}},{key:"removeErrorUrls",value:function(e,t,n){return e.errorCode===gi[403]&&this._emitExpireEvent(e),n}},{key:"_setPlayerError",value:function(e){if(!this._hasFirstFramed){var t="".concat(this.player.vtype," ").concat(null==e?void 0:e.errorCode,"-").concat(null==e?void 0:e.errorMessage,"-").concat(null==e?void 0:e.rangeStart,"-").concat(null==e?void 0:e.rangeEnd);this._setStartTimelines(le.PLAYER_ERROR,{message:t,httpCode:null==e?void 0:e.errorCode})}}},{key:"checkIsDegraded",value:function(e){var t=this.config,n=t.notDegradeErrorList,i=t.drm,r=t.kid,a=t.drmKeyToken,l=t.keyValue,U=t.secretKey;return!(i||r||a||l||U||e.errorCode>=7e3&&e.errorCode<=7999)&&!((null==n?void 0:n.length)>0&&(e.errorCode===gi.timeout&&n.indexOf("timeout")>=0||e.errorCode===gi[403]&&(n.indexOf(403)>=0||n.indexOf("403")>=0)||e.errorCode===gi[404]&&(n.indexOf(404)>=0||n.indexOf("404")>=0)))}},{key:"_startDegradedPlayback",value:function(e,t){var n=this;this.canDownload=!1;var i=this.player,r=this.playerConfig,a=this.config;if(i){this.mse&&(this.mse.clearOpQueues(ln.VIDEO),this.mseAbort()),this._currentTime=i.currentTime||0,this.player.pause(),this._reset(),this.states=[],this._replay=null;var l=r.H264DefinitionList;if(this.codecType===re.H265&&this.softDecode)this.log(_t.LOG,"h265 softDecode err,degrade use 264 play",r.vid),this._onDegrade(e);else if(this.codecType===re.H264||a.supportHevc||a.supportVvcc||(null==l?void 0:l.length)>0){var U=a.drm,F=a.kid,o=a.drmKeyToken,d=a.keyValue,Q=a.secretKey;if(U||F||o||d||Q)U&&Object.keys(U).map((function(t){U&&(e[t]=U[t])})),this.log(_t.ERROR,"final error !!!!, ",r.vid,null==e?void 0:e.errorCode,null==e?void 0:e.errorMessage),this.emit("error",e);else{var s;this.log(_t.LOG,this.codecType,"MSE degrade video,",r.vid,i.currentTime),this.emit(aF,{errc:null==e?void 0:e.errorCode,err_msg:(null==e?void 0:e.errorMessage)||(null==e?void 0:e.message),CodecTypes:this.codecType,media_type:r.mediaType}),this.useVideoLoad=!0,this.__onmetadataHandle=function(){var e;n.player&&(n._currentTime&&(n.player.currentTime=n._currentTime),n.log(_t.LOG,"DegradedPlayback update currentTime",null===(e=n.playerConfig)||void 0===e?void 0:e.vid,n.codecType,n._currentTime),t?n.player.pause():n.player.play(),n.player.video.removeEventListener("loadedmetadata",n.__onmetadataHandle),n.__onmetadataHandle=null)},i.video.addEventListener("loadedmetadata",this.__onmetadataHandle);var c=r.url;if((null==e||null===(s=e.message)||void 0===s?void 0:s.indexOf(Qi))>=0&&(null==l?void 0:l.length)>0){var u=l.length,B=this.player.curDefinition.definition,R=B&&l.find((function(e){return e.definition===B}));R||(r.H264DefinitionList.sort((function(e,t){return e.bitrate-t.bitrate})),R=r.H264DefinitionList[Math.floor(u/2)]),R&&(c=R.url,this.playerConfig.codecType=re.H264,this.codecType=re.H264)}this._setPlayerSrc(c)}}else this.log(_t.ERROR,"degrade player failed"),this.emit("error",e)}else this._setStartTimelines(le.DESTROY,{message:"-degrade"})}},{key:"mseAbort",value:function(){var e;if(null!==(e=this.mse)&&void 0!==e&&e.abort){var t=this.mse.abort(ln.VIDEO);t&&t.catch((function(){}))}}},{key:"isSeekingInSameBuffer",value:function(e,t){var n=!1,i=this.mp4,r=this._lastBufferPoint;return i.meta&&i.meta.duration-t.end<.5&&(n=!0),r&&0!==e&&e>=r.start&&e<r.end&&(n=!0),this._lastBufferPoint=t,n}},{key:"getAdaptTimeRangeIdx",value:function(e){var t,n,i=this.config,r=this.adaptRange,a=i.segmentMinDuration;return r&&null!=i&&null!==(t=i.adaptRange)&&void 0!==t&&t.rangeControl&&(a=r.getAdaptLoadDuration()),null===(n=this.mp4)||void 0===n?void 0:n.updateAdaptTimeRange(e,a)}},{key:"_startProgress",value:function(){this.initTimer(),this._requestTimer.start(),this._hasStartProgress=!0}},{key:"_unloadVideo",value:function(){this.log(_t.LOG,"unloadVideo");var e=this.player;try{e.video&&e.video.src&&(/^blob/.test(e.currentSrc)||/^blob/.test(e.video.src)||(this.log(_t.LOG,"unloadVideo src"),e.video.removeAttribute("src"),e.video.load()))}catch(t){this.log(_t.ERROR,"unloadVideo error",null==t?void 0:t.message)}}},{key:"_addPendingPromise",value:function(e){this._pendingPromises.push(e)}},{key:"_removePendingPromise",value:function(e){this.log(_t.LOG,"removePendingPromise",null==e?void 0:e.id);var t=this._pendingPromises.indexOf(e);t>-1&&this._pendingPromises.splice(t,1)}},{key:"_cancelPendingPromises",value:function(){this._pendingPromises.length>0&&this._pendingPromises.forEach((function(e){e.reject(iF)})),this._pendingPromises=[]}},{key:"_onMediaExpired",value:function(){this.log(_t.LOG,"MediaExpired stopProgress"),this._stopProgress(),this.emit(oi.MEDIA_EXPIRED)}},{key:"_isEnded",value:function(){var e,t,n,i=this.player,r=this.mp4;if(!i)return!1;var a=i.bufferedPoint,l=a?a.end:0;this.checkStartLoadFirstSegment(l);var U,F=i.currentTime;F>1&&l>F&&(l-F>=2||i.duration-F<1)&&2===i.video.readyState?VU.nowTime()-this._lastCheckLagTime>=3e3&&(this.log(_t.LOG,"[has buffer but waiting,seek 0.2 adjust],curTime,",F,", bufferend,",l,", duration,",null==r||null===(U=r.meta)||void 0===U?void 0:U.duration),i.currentTime=F+.2,this._lastCheckLagTime=VU.nowTime()):this._lastCheckLagTime=VU.nowTime();var o=(null===(e=i.buffered)||void 0===e?void 0:e.length)||0;if(o<=0||!i.buffered)return!1;var d=(null===(t=i.buffered)||void 0===t?void 0:t.end(o-1))||0;return!!(null!=r&&null!==(n=r.meta)&&void 0!==n&&n.duration&&r.meta.duration-i.currentTime<1&&(this._loadedEnd||Math.abs(r.meta.duration-d)<1))&&(this._stopProgress(),this.log(_t.LOG,"[isEnded],stopProgress and endOfStream,curTime, ",i.currentTime,", bufferend,",d,", duration,",r.meta.duration),this.mse&&this.mse.endOfStream().then((function(){})),!0)}},{key:"checkStartLoadFirstSegment",value:function(e){var t,n,i=this.player,r=this.mp4,a=this.config;if(i&&a.loadFirstGopData&&null!=r&&null!==(t=r.meta)&&void 0!==t&&t.duration&&null!=i&&null!==(n=i.buffered)&&void 0!==n&&n.length&&this.needStarLoadFirstSegment&&(this._loadedEnd||Math.abs(e-this.mp4.meta.duration)<.5)&&i.buffered.start(0)>=r.timeRange[0].endTime){var l;this.log(_t.LOG,"changeBitrate load end, reload loadFirstSegment"),this.needStarLoadFirstSegment=!1,r.resetDemuxSampleIdx(0),r._loadSuccessCallBack=this._loadDataSuccess;var U=(null===(l=r.timeRange[0])||void 0===l?void 0:l.range)||r.calculateRange(0);r.fillFirstSegment=!0,r.startLoad(U,0)}}},{key:"emitVideoEvent",value:function(e){var t=this;if(!this._checkEndedTimer){var n=this.player,i=this.mp4;this._checkEndedTimer=setTimeout((function(){t._checkEndedTimer=null,!t._isReceiveEndedEvent&&i.meta.duration-n.currentTime<.5&&(t.log(_t.LOG,"[ do emit video ended event],curTime,",n.currentTime,", bufferend,",e,", duration,",i.meta.duration),t.emit("ended"))}),2e3)}}},{key:"_clearMediaKeys",value:function(){var e=this.player;e.video&&"function"==typeof e.video.setMediaKeys&&e.video.setMediaKeys(null).catch((function(){}))}},{key:"_checkRemovePlayedBuffer",value:function(e,t,n,i){var r=this,a=this.mse,l=this.mp4,U=this.player;if(a&&l&&U&&(n&&(clearTimeout(this._removeBufferTimer),this._removeBufferTimer=null),e||(e=U.getBufferedRange()),t||(t=U.currentTime),(n||!(VU.nowTime()-this._checkRemoveBufferLastTime<=this.config.removeBufferLen))&&(this._checkRemoveBufferLastTime=VU.nowTime(),e&&e[0]>=0&&(t-e[0]>this.config.removeBufferLen||a.isFull())))){var F=i?e[1]:t-(a.isFull()?0:15),o=l.getFragmentIdx(F);if(o>0&&(i||l.timeRange[o].startTime<t)){var d=Math.floor(Math.min(l.timeRange[o].startTime,e[1])),Q=Math.max(l.timeRange[0].endTime+1,e[0]);Q<d?(this.log(_t.LOG,"[checkremoveSourceBuffer], remove range==>>>",Q,d,t),this.removeBuffer(ln.VIDEO,Q,d)):a.isFull()&&!this._removeBufferTimer&&(this._removeBufferTimer=setTimeout((function(){r._checkRemovePlayedBuffer(null,null,!0)}),1e4))}}}},{key:"onMediaUpdate",value:function(e){var t=e.vid,n=e.kid,i=e.url,r=this.player,a=this.config;if(t===this.playerConfig.vid&&n===a.kid&&i){this.playerConfig.url=i,this._handlerUrl(i);var l=a._mainURL;return this.useVideoLoad?r.src=i:this.mp4&&this.mp4.updateUrl(l),!0}return!1}},{key:"enableAutoBuffer",value:function(e){var t=this;if(e){if(!this._allInitPromise)return void this.log(_t.LOG,"player destroyed!!");this._allInitPromise.then((function(){t.log(_t.LOG,"enableAutoBuffer true"),t._startProgress()}))}else this._stopProgress(),this.log(_t.LOG,"enableAutoBuffer false")}},{key:"bitRateAdapter",get:function(){return this.player&&this.player.plugins&&this.config.needAutoBitrate?this.player.plugins.bitrateselector:null}},{key:"getDefinitonFromAdapter",value:function(e,t){if(!this.bitRateAdapter)return null;var n=this.bitRateAdapter;return n.getSuitableBitrate?n.getSuitableBitrate(e,t):n.bitRateAdapter?n.bitRateAdapter.select(e):null}},{key:"log",value:function(e,t){for(var n=(this.playerConfig||{}).vid,i=n?"[Index]".concat(n," ").concat(t):"[Index] ".concat(t),r=arguments.length,a=new Array(r>2?r-2:0),l=2;l<r;l++)a[l-2]=arguments[l];ai.apply(void 0,[this.logger,e,i].concat(a))}},{key:"_emitInitFail",value:function(e){this.log(_t.ERROR,"initFail, reason:",e),this.emit(oi.INIT_FAIL,e)}},{key:"useVideoLoad",get:function(){return this._useVideoLoad},set:function(e){this._useVideoLoad=e}},{key:"ready",get:function(){return this._allInitPromise}},{key:"speed",get:function(){return parseInt(jU.speed,10)}},{key:"version",get:function(){return Ni}},{key:"realTimeSpeed",get:function(){return QF}},{key:"opQueueLen",get:function(){var e=this.mse&&this.mse._queue?this.mse._queue[ln.VIDEO]:[];return e?e.length:0}},{key:"loadSegmentTimeRange",get:function(){return[0,0,0,0]}},{key:"moovSize",get:function(){return 0}},{key:"isDestroy",get:function(){return!this.player}},{key:"domain",get:function(){return VU.getHostFromUrl(this.loadURL)}},{key:"loadURL",get:function(){var e=this.player,t=e.currentSrc;return/^blob/.test(e.currentSrc)&&(t=this.mp4.currentLoadUseUrl()),t}},{key:"abrInstance",get:function(){return this._abrService?this._abrService.abrInstance:null}},{key:"expiryCheckPlugin",get:function(){return this.player&&this.player.plugins&&this.player._customExpiryCheck?this.player.plugins.expirycheck:null}},{key:"_handleUrlExpire",value:function(){var e=this,t=this.config,n=this.player,i=n.paused;(new Date).getTime()/1e3>=this.urlExpireTimestamp&&this.urlExpireTimestamp>0&&!i&&t.getServerTime&&(n.serverTimeDiffPromise=n.serverTimeDiffPromise||t.getServerTime().catch((function(){return 0})),n.serverTimeDiffPromise.then((function(t){if(t&&(n.serverTimeDiff=(new Date).getTime()/1e3-t),(new Date).getTime()/1e3>=e.urlExpireTimestamp+n.serverTimeDiff){e.urlExpireTimestamp=(new Date).getTime()/1e3+86400;var i=new Ci("network",gi[403]);e._emitExpireEvent(i)}})))}},{key:"_emitExpireEvent",value:function(e){var t=this.player,n=(new Date).getTime()/1e3;return this.emitExpireTimestamp?n-this.emitExpireTimestamp>300&&(this.emitExpireTimestamp=n,t.emit("MEDIA_EXPIRED",e),!0):(this.emitExpireTimestamp=n,t.emit("MEDIA_EXPIRED",e),!0)}},{key:"reportBugPostPlayerLog",value:function(){this.log(_t.LOG,"reportBugPostPlayerLog"),this.emit(rF)}},{key:"getAllBufferRange",value:function(){var e=[],t=this.player;if(!t||null==t||!t.buffered)return e;var n=t.buffered;if(n)for(var i=0,r=n.length;i<r;i++)e.push([null==n?void 0:n.start(i),null==n?void 0:n.end(i)]);return e}}],[{key:"pluginName",get:function(){return"Mp4EncryptPlayer"}},{key:"defaultConfig",get:function(){return Ei}},{key:"speed",get:function(){return QF}},{key:"realTimeSpeed",get:function(){return QF}},{key:"version",get:function(){return Ni}}]);var n,i,r,a,l,U,F,o}(de);sF.isSupported=function(){return tF(!(arguments.length>0&&void 0!==arguments[0])||arguments[0])&&$U()&&!zU()},sF.isEMESupported=qU,sF.isSupportedWithXgmse=function(){return $U()&&!zU()},sF.isMediaSourceSupported=tF,sF.isWebAssemblySupported=$U,sF.CUSTOM_EVENTS=oi,sF.updateUnionInfo=ee.XGSecretKey.updateUnionInfo,sF.generateEncryptInfo=ee.XGSecretKey.generateEncryptInfo,sF.registerPreloader=de.registerPreloader;var cF=function(e){return e[e.DURATION=0]="DURATION",e[e.SIZE=1]="SIZE",e}(cF||{}),uF=function(e){return e[e.INDEXDB=0]="INDEXDB",e[e.MEMORY=1]="MEMORY",e}(uF||{}),BF=function(e){return e.PRELOAD_NEXT="PRELOAD_NEXT",e.PRELOAD_START="PRELOAD_START",e.PRELOAD_CANCEL="PRELOAD_CANCEL",e}(BF||{});var RF=function(){try{if("undefined"!=typeof indexedDB)return indexedDB}catch(e){}}();function hF(e,t){t&&e.then((function(e){t(null,e)}),(function(e){t(e)}))}function VF(e){return"string"!=typeof e&&(console.warn("".concat(e," used as a key, but it is not a string.")),e=String(e)),e}var pF={},mF="readonly",ZF="readwrite";function SF(e){var t=pF[e.name],n={};n.promise=new Promise((function(e,t){n.resolve=e,n.reject=t})),t.deferredOperations.push(n),t.dbReady?t.dbReady=t.dbReady.then((function(){return n.promise})):t.dbReady=n.promise}function JF(e,t){return new Promise((function(n,i){if(pF[e.name]=pF[e.name]||{forages:[],db:null,dbReady:null,deferredOperations:[]},e.db){if(!t)return n(e.db);SF(e),e.db.close()}var r=[e.name];t&&r.push(e.version);var a=null==RF?void 0:RF.open.apply(RF,r);t&&(a.onupgradeneeded=function(t){var n=a.result;try{n.createObjectStore(e.storeName)}catch(i){if("ConstraintError"!==i.name)throw i;console.warn('The database "'.concat(e.name,'" has been upgraded from version ').concat(t.oldVersion," to\n version ").concat(t.newVersion,', but the storage "').concat(e.storeName,'" already exists.'))}}),a.onerror=function(e){e.preventDefault(),i(a.error)},a.onsuccess=function(){n(a.result),function(e){var t=pF[e.name].deferredOperations.pop();if(t)t.resolve(),t.promise}(e)}}))}function WF(e){return JF(e,!1)}function fF(e){return JF(e,!0)}function yF(e,t){if(!e.db)return!0;var n=!e.db.objectStoreNames.contains(e.storeName),i=e.version<e.db.version,r=e.version>e.db.version;if(i&&(e.version!==t&&console.warn('The database "'.concat(e.name,"\" can't be downgraded from version ").concat(e.db.version," to\n version ").concat(e.version,".")),e.version=e.db.version),r||n){if(n){var a=e.db.version+1;a>e.version&&(e.version=a)}return!0}return!1}function kF(e){SF(e);for(var t=pF[e.name],n=t.forages,i=0;i<n.length;i++){var r=n[i];r._dbInfo.db&&(r._dbInfo.db.close(),r._dbInfo.db=null)}return e.db=null,WF(e).then((function(t){return e.db=t,yF(e)?fF(e):t})).then((function(i){e.db=t.db=i;for(var r=0;r<n.length;r++)n[r]._dbInfo.db=i})).catch((function(t){throw function(e,t){var n=pF[e.name].deferredOperations.pop();if(n)n.reject(t),n.promise}(e,t),t}))}function EF(e,t,n,i){void 0===i&&(i=1);try{var r=e.db.transaction(e.storeName,t);n(null,r)}catch(a){if(i>0&&(!e.db||"InvalidStateError"===a.name||"NotFoundError"===a.name))return Promise.resolve().then((function(){if(!e.db||"NotFoundError"===a.name&&!e.db.objectStoreNames.contains(e.storeName)&&e.version<=e.db.version)return e.db&&(e.version=e.db.version+1),fF(e)})).then((function(){return kF(e).then((function(){EF(e,t,n,i-1)}))})).catch(n);n(a)}}var bF=function(){return N((function e(){b(this,e)}),[{key:"ready",value:function(){return this._ready}},{key:"_initStorage",value:function(e){var t=this;t._defaultConfig=e;var n={db:null,name:"",version:""};if(e)for(var i in e)n[i]=e[i];var r=pF[n.name];r||(r={forages:[],db:null,dbReady:null,deferredOperations:[]},pF[n.name]=r),r.forages.push(t),t._initReady||(t._initReady=t.ready,t._ready=t._fullyReady);var a=[];function l(){return Promise.resolve()}for(var U=0;U<r.forages.length;U++){var F=r.forages[U];F!==t&&a.push(F._initReady().catch(l))}var o=r.forages.slice(0);return t._ready=Promise.all(a).then((function(){return n.db=r.db,WF(n)})).then((function(e){return n.db=e,yF(n,t._defaultConfig.version)?fF(n):e})).then((function(e){n.db=r.db=e,t._dbInfo=n;for(var i=0;i<o.length;i++){var a=o[i];a!==t&&(a._dbInfo.db=n.db,a._dbInfo.version=n.version)}})),t._ready}},{key:"probeSupport",get:function(){return function(){try{if(null==RF||!RF.open)return!1;var e=/(Safari|iPhone|iPad|iPod)/.test(navigator.userAgent)&&!/Chrome/.test(navigator.userAgent)&&!/BlackBerry/.test(navigator.platform),t="function"==typeof fetch&&-1!==fetch.toString().indexOf("[native code");return(!e||t)&&"undefined"!=typeof indexedDB&&"undefined"!=typeof IDBKeyRange}catch(n){return!1}}()}},{key:"getItem",value:function(e,t){var n=this;e=VF(e);var i=new Promise((function(t,i){n.ready().then((function(){EF(n._dbInfo,mF,(function(r,a){if(r)return i(r);try{var l=a.objectStore(n._dbInfo.storeName).get(e);l.onsuccess=function(){var e=l.result;void 0===e&&(e=null),t(e)},l.onerror=function(){i(l.error)}}catch(U){i(U)}}))})).catch(i)}));return hF(i,t),i}},{key:"setItem",value:function(e,t,n){var i=this;e=VF(e);var r=new Promise((function(n,r){i.ready().then((function(){return i._dbInfo,t})).then((function(t){EF(i._dbInfo,ZF,(function(a,l){if(a)return r(a);try{var U=l.objectStore(i._dbInfo.storeName);null===t&&(t=void 0);var F=U.put(t,e);l.oncomplete=function(){void 0===t&&(t=null),n(t)},l.onabort=l.onerror=function(){var e=F.error?F.error:F.transaction.error;r(e)}}catch(o){r(o)}}))})).catch(r)}));return hF(r,n),r}},{key:"removeItem",value:function(e,t){var n=this;e=VF(e);var i=new Promise((function(t,i){n.ready().then((function(){EF(n._dbInfo,ZF,(function(r,a){if(r)return i(r);try{var l=a.objectStore(n._dbInfo.storeName).delete(e);a.oncomplete=function(){t()},a.onerror=function(){i(l.error)},a.onabort=function(){var e=l.error?l.error:l.transaction.error;i(e)}}catch(U){i(U)}}))})).catch(i)}));return hF(i,t),i}},{key:"clear",value:function(e){var t=this,n=new Promise((function(e,n){t.ready().then((function(){EF(t._dbInfo,ZF,(function(i,r){if(i)return n(i);try{var a=r.objectStore(t._dbInfo.storeName).clear();r.oncomplete=function(){e()},r.onabort=r.onerror=function(){var e=a.error?a.error:a.transaction.error;n(e)}}catch(l){n(l)}}))})).catch(n)}));return hF(n,e),n}},{key:"length",value:function(e){var t=this,n=new Promise((function(e,n){t.ready().then((function(){EF(t._dbInfo,mF,(function(i,r){if(i)return n(i);try{var a=r.objectStore(t._dbInfo.storeName).count();a.onsuccess=function(){e(a.result)},a.onerror=function(){n(a.error)}}catch(l){n(l)}}))})).catch(n)}));return hF(n,e),n}},{key:"all",value:function(e){var t=this,n=new Promise((function(e,n){t.ready().then((function(){EF(t._dbInfo,mF,(function(i,r){if(i)return n(i);try{var a=r.objectStore(t._dbInfo.storeName).openCursor(),l=[];a.onsuccess=function(){var t=a.result;t?(l.push({key:t.key,value:t.value}),t.continue()):e(l)},a.onerror=function(){n(a.error)}}catch(U){n(U)}}))})).catch(n)}));return hF(n,e),n}},{key:"_fullyReady",value:function(e){var t=this,n=t._initReady().then((function(){var e=pF[t._dbInfo.name];if(null!=e&&e.dbReady)return e.dbReady}));return function(e,t,n){"function"==typeof t&&e.then(t),"function"==typeof n&&e.catch(n)}(n,e,e),n}},{key:"getItemSync",value:function(){throw new Error("NotSupported")}}])}(),vF=function(){return N((function e(){b(this,e)}),[{key:"_initStorage",value:function(e){var t=e.name,n=e.storeName,i="".concat(t,"_").concat(n);return this.key=i,window[i]&&"object"===j(window[i])||(window[i]={}),this.store=window[i],Promise.resolve()}},{key:"getItem",value:function(e,t){var n=this.store[e];return void 0===n&&(n=null),this._internalPromise(t,n)}},{key:"getItemSync",value:function(e,t){var n=this.store[e];return void 0===n&&(n=null),t&&t(n),n}},{key:"setItem",value:function(e,t,n){return this.store[e]=t,this._internalPromise(n)}},{key:"removeItem",value:function(e,t){return delete this.store[e],this._internalPromise(t)}},{key:"clear",value:function(e){return this.store={},window[this.key]={},this._internalPromise(e)}},{key:"length",value:function(e){var t=Object.keys(this.store).length;return this._internalPromise(e,t)}},{key:"_internalPromise",value:function(e,t){var n=t?Promise.resolve(t):Promise.resolve();return hF(n,e),n}},{key:"all",value:function(e){for(var t=[],n=Object.keys(this.store),i=0;i<n.length;i++){var r=n[i];t.push({key:r,value:this.store[r]})}return this._internalPromise(e,t)}},{key:"probeSupport",value:function(){return!0}}])}(),NF={description:"",name:"__PRE_CACHE__",storeName:"keyvaluepairs",version:1},gF="__PRE_CACHE__KEYS",TF=function(){return N((function e(t,n){b(this,e),this._allCachedKeyMap={},this._memory=0,this._cnt=0;var i=n===uF.MEMORY?vF:bF;this._cacheType=n,this._driver=new i,this._driver._initStorage(NF).catch((function(){})),this._hasIdbForbidden=!1,this._maxCache=!t||t<=0?200:t,this.setMaxCache(this._maxCache),this._allCachedKeys={},this._allCachedTimeKeys={},this.getCachedKeysFromLocal(),this._readyPromise=new Tn,this.init()}),[{key:"supportSync",value:function(){return this._cacheType===uF.MEMORY}},{key:"getCachedKeysFromLocal",value:function(){var e=gn.getItem(gF);if(e)for(var t=e.split("|"),n=0;n<t.length;n++){var i=t[n],r=this._getCacheKeyInfos(i),a=r.time,l=r.cachedKey;this._allCachedKeys[l]=1,this._allCachedTimeKeys[l]=a}}},{key:"_getCacheKeyInfos",value:function(e){var t,n=e.split("$");return 2===n.length&&(t=n[0],e=n[1]),{time:t,cachedKey:e}}},{key:"writeCachedKeysToLocal",value:function(e){var t=[];this._allCachedKeys={},this._allCachedTimeKeys={};for(var n=0;n<e.length;n++){var i=e[n].key,r=this._getCacheKeyInfos(i),a=r.time,l=r.cachedKey;this._allCachedKeys[l]=1,this._allCachedTimeKeys[l]=a,t.push(i)}var U=t.join("|");gn.setItem(gF,U)}},{key:"init",value:function(){var e=this;this._driver.setItem("test","test").then((function(){})).catch((function(){e._hasIdbForbidden=!0})).finally((function(){e._driver.removeItem("test").catch((function(){})),e._hasIdbForbidden&&(e._driver=new vF,e._driver._initStorage(NF)),e._getAll(),e._readyPromise.resolve()}))}},{key:"_getAll",value:function(){var e=this;this._memory=0,this._cnt=0,this._driver.all().then((function(t){e._cachedLength=t.length;var n=t.length-e._maxCache,i=t;if(n>0){var r=t.slice(0,n);i=t.slice(n);for(var a=0;a<r.length;a++)e.removeItem(r[a].key).then((function(){}))}e._cnt=i.length;for(var l=0;l<i.length;l++){var U=i[l];if("object"===j(U.value)){Object.values(U.value).forEach((function(t){e._memory+=(null==t?void 0:t.memory)||0}));var F=e._getCacheKeyInfos(U.key).cachedKey;e._allCachedKeyMap[F]=Object.keys(U.value)}}e.writeCachedKeysToLocal(i)})).catch((function(){}))}},{key:"getAllCachedDataKeys",value:function(){var e=[];return Object.values(this._allCachedKeyMap).forEach((function(t){e.push.apply(e,_(t))})),e}},{key:"getItem",value:(e=k(M().mark((function e(t,n,i){var r,a,l,U,F;return M().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if((r=this.hasItem(t))&&i&&(a=this._allCachedKeyMap[t],r=(null==a?void 0:a.includes(i))||!1),r){e.next=4;break}return e.abrupt("return",Promise.resolve(!1));case 4:return l=this._getTimeKey(t),U=l.timeKey,e.next=7,this._driver.getItem(U,n);case 7:if(F=e.sent,!i){e.next=10;break}return e.abrupt("return",F[i]);case 10:return e.abrupt("return",F);case 11:case"end":return e.stop()}}),e,this)}))),function(t,n,i){return e.apply(this,arguments)})},{key:"getItemSync",value:function(e,t,n){var i=this.hasItem(e);if(i&&n){var r=this._allCachedKeyMap[e];i=(null==r?void 0:r.includes(n))||!1}if(!i)return!1;var a=this._getTimeKey(e).timeKey,l=this._driver.getItemSync(a,t);return l&&n?l[n]:l}},{key:"setItem",value:function(e,t,n){var i=this;this._getTimeKey(e).timeKey&&this.removeItem(e);var r=(new Date).getTime();this._allCachedKeys[e]=1,this._allCachedTimeKeys[e]=r;var a=this._genTimeKey(e,r);return n=n?function(){i._getAll(),n()}:function(){i._getAll()},this._driver.setItem(a,t,n)}},{key:"_getTimeKey",value:function(e){var t=this._allCachedTimeKeys[e],n=e;return t&&(n=this._genTimeKey(e,t)),{timeKey:n,time:t}}},{key:"_genTimeKey",value:function(e,t){return"".concat(t).concat("$").concat(e)}},{key:"removeItem",value:function(e,t){var n=this._getTimeKey(e).timeKey,i=this._driver.removeItem(n,t);return delete this._allCachedKeys[e],delete this._allCachedTimeKeys[e],delete this._allCachedKeyMap[e],i}},{key:"hasItem",value:function(e){return!!this._allCachedKeys[e]}},{key:"clear",value:function(e){return this._driver.clear(e)}},{key:"length",value:function(e){return this._driver.length(e)}},{key:"setMaxCache",value:function(e){"number"==typeof e&&e>0&&(this._maxCache=e)}},{key:"getMemoryInfo",value:function(){return{memory:this._memory,cnt:this._cnt}}}]);var e}(),CF=TF,LF=["vid","loadType","size","speed","cacheKey","vtype","duration","bitrate"],xF=0,XF=function(){return N((function e(t){var n=this;b(this,e),this._preload_bandwith_map=new Map,this._usepreload_info=new Map,this._pcdn_info_map=new Map,this._updateRealTimeSpeed=function(e){xF=e.speed,n.emit("real_time_speed",e)},this._manager=t}),[{key:"setPreloadBandwidth",value:function(e,t){this._preload_bandwith_map.set(e,t)}},{key:"getPreloadBandwidth",value:function(e){return this._preload_bandwith_map.get(e)}},{key:"_updateLoadInfo",value:function(e,t,n){var i=this._pcdn_info_map.get(e);!i&&(i={}),i[t]||(i[t]={},i[t].loadLen=0),i[t].loadLen=i[t].loadLen+n,this._pcdn_info_map.set(e,i)}},{key:"getLoadInfoAndDelete",value:function(e){var t=this._pcdn_info_map.get(e);return this._pcdn_info_map.delete(e),t}},{key:"getPreloadUnuseInfo",value:function(){var e,t={},n=g(this._preload_bandwith_map);try{for(n.s();!(e=n.n()).done;){var i=w(e.value,2),r=i[0],a=i[1];if(this._usepreload_info.get(r))this._preload_bandwith_map.delete(r);else{var l=r.split("#"),U=l.length>0?l[0]:r;t[U]?(t[U].bw+=a.bw||0,t[U].pbw+=a.pbw||0):t[U]={vid:U,bw:a.bw||0,pbw:a.pbw||0,bitrate:a.bitrate||0,duration:a.duration||0}}}}catch(F){n.e(F)}finally{n.f()}return Object.values(t)}},{key:"bwEventEmit",value:function(e){var t=e.vid,n=e.loadType,i=e.size,r=e.speed,a=e.cacheKey,l=e.vtype,U=e.duration,F=e.bitrate,o=I(e,LF),d=this.getPreloadBandwidth(a)||{bw:0,pbw:0,vid:t,duration:U,bitrate:F};n&&n!==ae?(d.pbw=d.pbw+i,this.emit("prf_data_size",G({vid:t,task_type:2,pcdn_size:i,pcdn_speed:r,vtype:l,bitrate:F,duration:U},o))):(d.bw=d.bw+i,this.emit("prf_data_size",G({vid:t,task_type:2,cdn_size:i,cdn_speed:r,vtype:l,duration:U,bitrate:F},o))),this.setPreloadBandwidth(a,d),this._updateRealTimeSpeed({speed:r,type:n||ae}),this._updateLoadInfo(a,n,i)}},{key:"setUsePreloadInfo",value:function(e,t){this._usepreload_info.set(e,t)}},{key:"realTimeSpeed",get:function(){return xF}},{key:"emit",value:function(e,t){var n;null===(n=this._manager)||void 0===n||n.emit(e,t)}},{key:"destroy",value:function(){this._preload_bandwith_map=new Map,this._usepreload_info=new Map,this._pcdn_info_map=new Map,this._manager=null}}])}();function DF(e,t){var n=[0,0];if(e)for(var i=0,r=e.length;i<r&&(n[0]=e.start(i),n[1]=e.end(i),!(n[0]<=t&&t<=n[1]));i++);return n[0]-t<=0&&t-n[1]<=0?n:[0,0]}function GF(e,t,n){for(var i=0;i<e.length;i++)if(n===e[i][t])return i;return-1}var IF,MF=["vid","loadType","size","speed","cacheKey","vtype","duration","bitrate"],YF=!1,wF=function(e){function t(){var e;return b(this,t),(e=E(this,t))._loaders={},e._loaderInsts={},e._taskIntervalId=0,e._currentPreloadInst=null,e._preloadDataList=[],e._player=null,e._stepwise=!1,e._playingVids=[],e._isOpen=!0,e._userDefinition=null,e._startDefinition=null,e.onPreloadNext=k(M().mark((function t(){var n,i,r,a,l,U,F,o,d,Q,s,c,u,B;return M().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(a=(r=e)._preloadDataList,l=r._config,!(!e._isOpen||e._currentPreloadInst||e._preloadDataList.length<1)){t.next=3;break}return t.abrupt("return",!1);case 3:if(U=e.findPreloadItem(a,!1),F=null==U?void 0:U.data,U&&null!=F&&F.payload){t.next=7;break}return t.abrupt("return",!1);case 7:if(null,o=e.selectBeforeStart(F),e._filterMixPayload(F,o),e.setStartDefinition(null===(n=o)||void 0===n?void 0:n.definition),e.log("log","selectBeforeStart",null===(i=o)||void 0===i?void 0:i.vtype,o),d=e._getPreloaderKey(o||F)){t.next=17;break}return e.log("warn","need to set vtype, no preloader",F),l.autoPreload&&e.emit(BF.PRELOAD_NEXT),t.abrupt("return",!1);case 17:if(Q=e._getLoaderInst(d)){t.next=23;break}if(s=e._getLoader(d)){t.next=22;break}return t.abrupt("return",!1);case 22:Q=new s(e,e._config);case 23:return e._currentPreloadInst=Q,e._currentPreloadInst.setData(F),e._emitEvtByStart(F),t.prev=26,e.log("log","loaderInst.start",d,e.getStartDefinition(),F),t.next=30,Q.start(F,e.getStartDefinition());case 30:(c=t.sent)&&c.remove&&(u=a.indexOf(U))>-1&&a.splice(u,1),t.next=37;break;case 34:t.prev=34,t.t0=t.catch(26),e.log("error","preload data error!",t.t0);case 37:return t.prev=37,null===(B=e._currentPreloadInst)||void 0===B||B.setData(null),e._currentPreloadInst=null,e._config.autoPreload&&e.emit(BF.PRELOAD_NEXT),t.finish(37);case 42:return t.abrupt("return",!0);case 43:case"end":return t.stop()}}),t,null,[[26,34,37,42]])}))),e._stats=new XF(e),e}return x(t,e),N(t,[{key:"VTYPES",get:function(){return ne}},{key:"player",get:function(){return this._player}},{key:"stepwise",get:function(){return this._stepwise}},{key:"realTimeSpeed",get:function(){return this._stats.realTimeSpeed}},{key:"currentPreloadInst",get:function(){return this._currentPreloadInst}},{key:"cacheInst",get:function(){return this._cacheInst}},{key:"preloadDataList",get:function(){return this._preloadDataList}},{key:"log",value:function(e){for(var t,n=arguments.length,i=new Array(n>1?n-1:0),r=1;r<n;r++)i[r-1]=arguments[r];YF&&(t=console)[e].apply(t,["[PreloaderManager]"].concat(i))}},{key:"register",value:function(e){try{if("undefined"==typeof window)return void this.log("preloader in ssr");var n=t.getDefaultConfig();this._config=Object.assign({},n,e.config),this._options=e;var i=this._config,r=i.preloadMaxCacheCount,a=i.preloadCacheType;this._stepwise=!!this._config.stepwise,this._cacheInst=new CF(r,a),this._selector=e.BitrateSelector,this.on(BF.PRELOAD_NEXT,this.onPreloadNext);for(var l=e.loaders,U=0;U<l.length;U++)this.registerLoader(l[U].vtype,l[U])}catch(F){this.log("register error",F)}}},{key:"registerLoader",value:function(e,t){e&&(this._loaders[e]&&this.log("warn","vtype:".concat(e," Preloader already exist")),this._loaders[e]=t,this._loaderInsts[e]=new t(this,this._config))}},{key:"_checkIfCanPreload",value:function(){if(null===this._currentPreloadInst&&this._preloadDataList.length>0){var e=this.findPreloadItem(this._preloadDataList),t=null==e?void 0:e.data;if(this._wipPreloadTask=e,e&&null!=t&&t.payload){if(!this._getPreloaderKey(t))return this.log("warn","need to set vtype"),this.stopCheckTask(),!1;var n=this._config.checkIfCanPreload;return n&&"function"==typeof n?n(t):this._config.autoCheckPreload?this._autoCheckPreload(t,e):(this.stopCheckTask(),!1)}}return!1}},{key:"_autoCheckPreload",value:function(e,t){return this._player?function(e,t,n){if(!e)return!1;var i=DF(e.buffered,e.currentTime),r=t.startPreloadControl,a=t.startPreloadMinBuffer,l=t.startPreloadMinPosTime,U=t.minBufferLength;if(r){var F=Math.max(i[1]-e.currentTime,0);if("number"==typeof a&&F>a){if("number"==typeof l&&e.currentTime>l||e.currentTime>e.duration/2)return null==n||n("log","[checkIfStartPreload] hit buffer",F,"startPreloadMinBuffer",a),!0}else if(e.currentTime+a+1>e.duration&&e.currentTime+F>e.duration-1)return null==n||n("log","[checkIfStartPreload] hit end"),!0}else{var o="number"==typeof U&&e.duration>U+5?U:e.duration/2,d=Math.min(e.currentTime+U,e.duration),Q=i[1]-d;if(e.currentTime>o&&Q>-1)return null==n||n("log","[checkIfStartPreload] hit minPos",o,"minCacheTime",d),!0}return!1}(this._player,this._config,this.log):(this.log("warn","need set video"),!1)}},{key:"_getPreloaderKey",value:function(e){return e.vtype?e.vtype.toUpperCase():""}},{key:"_sort",value:function(e){e.sort((function(e,t){return void 0===e.order&&void 0===t.order||"number"==typeof e.order&&"number"==typeof t.order&&e.order<t.order?-1:1}))}},{key:"_addPlayingVid",value:function(e,t){var n=this._playingVids,i=GF(this._playingVids,"playerId",e);i>-1?n[i].vid=t:n.push({vid:t,playerId:e})}},{key:"selectBeforeStart",value:function(e){var t=e.targetDefinition,n=e.defaultDefinition;if(t)return G({},t);var i=this.getUserSelectDefinition(),r=this.selectBitrate(null==e?void 0:e.payload,n,i),a=(null==r?void 0:r.vtype)||e.vtype,l=G(G({},r),{},{vtype:a});return e.targetDefinition=l,this.log("log","selectBeforeStart",null==e?void 0:e.vid,a,null==r?void 0:r.definition,null==e?void 0:e.payload,r),l}},{key:"selectBitrate",value:function(e,t,n){if(e.length<1)return null;var i=null;if(this._selector){var r,a,l;i=this._selector.getSuitableBitrate(e,n),this.log("log","BitRateAdapter result",null===(r=i)||void 0===r?void 0:r.vtype,null===(a=i)||void 0===a?void 0:a.definition,null===(l=i)||void 0===l?void 0:l.bitrate)}else{for(var U=-1,F=-1,o=0;o<e.length;o++){var d=e[o];n&&d.definition===n?U=o:t&&d.definition===t&&(F=o)}i=e[U>=0?U:F>=0?F:0]}return G({},i)}},{key:"startCheckTask",value:function(){var e=this,t=this._preloadDataList,n=this._currentPreloadInst,i=this._config.autoCheck;(this._taskIntervalId&&(clearTimeout(this._taskIntervalId),this._taskIntervalId=0),null!=n&&n.taskInProgress&&function(e,t,n){var i=t.endPreloadControl,r=t.endPreloadMinBuffer,a=t.startPreloadMinBuffer;if(!e)return!1;if(i){if("number"==typeof a&&e.currentTime+a>=e.duration)return!1;var l=DF(e.buffered,e.currentTime),U=Math.max(l[1]-e.currentTime,0);if(U<=r)return null==n||n("log","[checkIfCancelPreload] hit buffer:",U,"endPreloadMinBuffer:",r,"video:","".concat(e.currentTime,"/").concat(e.duration)),!0}return!1}(this._player,this._config,this.log))?this.cancelPreloadingTask():0!==t.length&&(this._checkIfCanPreload()&&this.onPreloadNext(),this._taskIntervalId=setTimeout((function(){e.startCheckTask()}),i.interval))}},{key:"cancelPreloadingTask",value:function(){var e=this._preloadDataList,t=this._wipPreloadTask,n=this._config.endPreloadTaskStrategy;if(this.cancel(),t){var i;if(this.stepwise)"number"==typeof(null===(i=t.data)||void 0===i?void 0:i.stepIdx)&&t.data.stepIdx>-1&&t.data.stepIdx--;else 0!==n&&e.unshift(t);this._emitEvtByCancel(t.data),this._wipPreloadTask=void 0}}},{key:"stopCheckTask",value:function(){this._taskIntervalId&&(clearTimeout(this._taskIntervalId),this._taskIntervalId=-1)}},{key:"getPreloadMetaByVid",value:function(e,n){for(var i=this.getAllCachedDataKeys(),r=[],a="",l=0;l<i.length;l++){var U=i[l],F=t.parseKey(U);F.vid===e&&(a=F.vtype,null!=n&&n.vtype&&n.vtype!==a||r.push(U))}if(0===r.length)return null;var o=this._getLoaderInst(a);return o?o.parseKey(r):null}},{key:"preloadNext",value:function(){this.onPreloadNext()}},{key:"_filterMixPayload",value:function(e,t){var n=t.vtype;if(n&&Array.isArray(e.payload)){var i=e.vtype===n;e.vtype=n,e.payload=e.payload.filter((function(e){return e.vtype===n||i}))}}},{key:"_emitEvtByStart",value:function(e){var t=this._player;if(e&&t)try{this.emit(BF.PRELOAD_START,this._getEventPayload(e,t))}catch(n){this.log("warn","preload emit start error",null==n?void 0:n.stack)}}},{key:"_emitEvtByCancel",value:function(e){var t=this._player;if(e&&t)try{this.emit(BF.PRELOAD_CANCEL,this._getEventPayload(e,t))}catch(n){this.log("warn","preload emit cancel error",null==n?void 0:n.stack)}}},{key:"_getEventPayload",value:function(e,t){var n=t.config.vid,i=this._config,r=i.minBufferLength,a=i.startPreloadControl,l=i.startPreloadMinBuffer,U=i.startPreloadMinPosTime,F=i.endPreloadMinBuffer,o=i.endPreloadControl,d=DF(t.video.buffered,t.currentTime),Q=d[1]?d[1]-t.currentTime:0;return{vid:n,pid:e.vid,buffer:d,bufferHead:Q,currentTime:t.currentTime,minBufferLength:r,startPreloadControl:a,startPreloadMinBuffer:l,startPreloadMinPosTime:U,endPreloadControl:o,endPreloadMinBuffer:F}}},{key:"addPreloadList",value:(U=k(M().mark((function e(t){var n,i,r;return M().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:this._sort(t),n=g(t),e.prev=2,n.s();case 4:if((i=n.n()).done){e.next=10;break}return r=i.value,e.next=8,this._addData(r);case 8:e.next=4;break;case 10:e.next=15;break;case 12:e.prev=12,e.t0=e.catch(2),n.e(e.t0);case 15:return e.prev=15,n.f(),e.finish(15);case 18:this._checkAutoTask();case 19:case"end":return e.stop()}}),e,this,[[2,12,15,18]])}))),function(e){return U.apply(this,arguments)})},{key:"addPlayingId",value:function(e,t){for(var n=this._preloadDataList,i=-1,r=0;r<n.length;r++){if(e===n[r].data.vid){i=r;break}}if(i>-1){var a=n.splice(i,1);this.log("log","cancelPreloadByVid remove from list",a.length>0&&a[0].data.vid)}var l=this._currentPreloadInst,U=l?l.getData():null;this.log("log","_currentPreloadInst",U),U&&U.vid===e&&this.cancel(),t&&this._addPlayingVid(t,e)}},{key:"removePlayingId",value:function(e){var t=this._playingVids,n=GF(t,"playerId",e);if(n>-1){var i=t.splice(n,1);this.log("log","removePlayingId",i.length>0&&i[0].playerId)}}},{key:"addPreload",value:(l=k(M().mark((function e(t){return M().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._addData(t);case 2:if(e.sent){e.next=5;break}return e.abrupt("return");case 5:this._sort(this._preloadDataList),this._checkAutoTask();case 7:case"end":return e.stop()}}),e,this)}))),function(e){return l.apply(this,arguments)})},{key:"_addData",value:(a=k(M().mark((function e(t){var n,i,r,a,l,U,F,o,d,Q=this;return M().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t.data.vtype){e.next=3;break}return this.log("warn","vtype is null, can·t select loader"),e.abrupt("return",!1);case 3:if(n=t.data,i=this._getLoader(n.vtype)){e.next=8;break}return this.log("warn","the loader for ".concat(n.vtype," not registered")),e.abrupt("return",!1);case 8:if(r=this._playingVids,!((a=GF(r,"vid",t.data.vid))>=0)){e.next=14;break}return l=r[a],this.log("log","vid:".concat(l.vid," is already instantiated and loaded, playerId is ").concat(l.playerId)),e.abrupt("return");case 14:return U=this._getUniqueKey(t),e.next=17,this.getItem(t.data,!0);case 17:if(!(F=e.sent)){e.next=22;break}if(!i.isUniqueCache(F)){e.next=22;break}return this.log("log","".concat(U," already exist in cache")),e.abrupt("return",!1);case 22:if(!this._currentPreloadInst){e.next=29;break}if(!(o=this._currentPreloadInst.getData())){e.next=29;break}if(this._getUniqueKey({data:o,order:0})!==U){e.next=29;break}return this.log("log","currentKey repeat"),e.abrupt("return");case 29:if(d=this._preloadDataList.filter((function(e){return Q._getUniqueKey(e)===U})),this.log("log","addedItems",U,d),0!==d.length){e.next=35;break}return this._stepwise&&void 0===t.data.steps&&(t.data.steps=[0]),this._preloadDataList.push(t),e.abrupt("return",!0);case 35:return this.log("log","".concat(U," already exist in preloadList")),e.abrupt("return",!1);case 37:case"end":return e.stop()}}),e,this)}))),function(e){return a.apply(this,arguments)})},{key:"_getUniqueKey",value:function(e){return e.data.vtype?t.generateUniqueCacheKey(e.data):e.data.vid}},{key:"_checkAutoTask",value:function(){var e=this,t=this._config,n=t.autoCheck,i=t.autoPreload;Promise.resolve().then((function(){i&&e.emit(BF.PRELOAD_NEXT),null!=n&&n.enable&&!e._taskIntervalId&&e.startCheckTask()}))}},{key:"setItem",value:function(e,n,i,r){var a=t.generateUniqueCacheKey(e);if(!i){var l=this._getLoader(e.vtype);if(!l)return this.log("warn","no ".concat(e.vtype," preloader, register")),Promise.resolve(!1);n=T({},l.generateUniqueKey(e),n)}return this._cacheInst.setItem(a,n,r)}},{key:"getItem",value:function(e){var n=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,r=t.generateUniqueCacheKey(e),a=this._getLoader(e.vtype);if(!a)return this.log("warn","no ".concat(e.vtype," preloader, register")),Promise.resolve(!1);var l=n?"":a.generateUniqueKey(e);return this._cacheInst.getItem(r,i,l)}},{key:"getItemSync",value:function(e){var n=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,r=t.generateUniqueCacheKey(e),a=this._getLoader(e.vtype);if(!a)return this.log("warn","no ".concat(e.vtype," preloader, register")),!1;var l=n?"":a.generateUniqueKey(e);return this._cacheInst.getItemSync(r,i,l)}},{key:"supportSync",value:function(){return this._cacheInst.supportSync()}},{key:"removeItem",value:function(e,n){var i=t.generateUniqueCacheKey(e);return this._cacheInst.removeItem(i,n)}},{key:"getPreLoadData",value:(r=k(M().mark((function e(t){var n,i,r;return M().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(n=t.vtype,!(i=this._getLoaderInst(n))){e.next=7;break}return e.next=5,i.getPreLoadData(t);case 5:return r=e.sent,e.abrupt("return",r);case 7:return e.abrupt("return",null);case 8:case"end":return e.stop()}}),e,this)}))),function(e){return r.apply(this,arguments)})},{key:"getPreLoadDataSync",value:function(e){var t=e.vtype,n=this._getLoaderInst(t);return n?n.getPreLoadDataSync(e):null}},{key:"removeAll",value:function(){var e=this;this.getAllCachedDataKeys().forEach((function(t){var n=e.getPreloadMetaByVid(t.split("#")[0]);n&&e.removeItem(n,null)}))}},{key:"removeAllPreloadTask",value:function(){this.cancel(),this._preloadDataList=[],this._playingVids=[]}},{key:"disable",value:function(){this._isOpen=!1,this.stopCheckTask()}},{key:"enable",value:function(){this._isOpen=!0,this._config.autoCheck.enable&&!this._taskIntervalId&&this._preloadDataList.length>0&&this.startCheckTask()}},{key:"setUserSelectDefinition",value:function(e){this._userDefinition=e}},{key:"getUserSelectDefinition",value:function(){return this._userDefinition||null}},{key:"getStartDefinition",value:function(){return this._startDefinition}},{key:"setStartDefinition",value:function(e){this._startDefinition=e}},{key:"destroy",value:(i=k(M().mark((function e(){var t,n,i,r;return M().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:this._stats.destroy(),t=Object.keys(this._loaderInsts),n=0;case 3:if(!(n<t.length)){e.next=12;break}if(i=t[n],!(r=this._getLoaderInst(i))){e.next=9;break}return e.next=9,r.destroy();case 9:n++,e.next=3;break;case 12:this.removeAllListeners(),this._loaderInsts={},this._loaders={},this._playingVids=[],this.detachPlayer();case 17:case"end":return e.stop()}}),e,this)}))),function(){return i.apply(this,arguments)})},{key:"cancel",value:(n=k(M().mark((function e(){var t;return M().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!this._currentPreloadInst){e.next=4;break}return e.next=3,this._currentPreloadInst.cancel();case 3:null===(t=this._currentPreloadInst)||void 0===t||t.setData(null);case 4:this._currentPreloadInst=null;case 5:case"end":return e.stop()}}),e,this)}))),function(){return n.apply(this,arguments)})},{key:"removeByPlayInst",value:function(e,t){for(var n=this._preloadDataList.length-1;n>-1;n--){var i=this._preloadDataList[n];if(i.data.vid===e&&i.playerId===t){this._preloadDataList.splice(n,1);break}}}},{key:"getAllCachedDataKeys",value:function(){var e;return(null===(e=this._cacheInst)||void 0===e?void 0:e.getAllCachedDataKeys())||[]}},{key:"getDataUniqueKey",value:function(e){var t=this._getLoader(e.vtype);return!!t&&t.generateUniqueKey(e)}},{key:"hasItemSameVid",value:function(e){var t=this._getLoader(e.vtype),n=this._getLoaderInst(e.vtype);if(t&&n){var i=t.generateUniqueKey(e);return n.hasItemSameVid(i)}return!1}},{key:"_getLoader",value:function(e){e=e||"";var t=this._loaders[e]||this._loaders[e.toLocaleLowerCase()];return t||(this.log("warn","no ".concat(e," preloader, register")),null)}},{key:"_getLoaderInst",value:function(e){e=e||"";var t=this._loaderInsts[e]||this._loaderInsts[e.toLocaleLowerCase()];return t||(this.log("warn","no ".concat(e," preloader, register")),null)}},{key:"getPreloadMemoryInfo",value:function(){return this._cacheInst.getMemoryInfo()}},{key:"attachPlayer",value:function(e){this._player=e}},{key:"detachPlayer",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;e&&this._player!==e||(this._player=null)}},{key:"setPreloadBandwidth",value:function(e,t){this._stats.setPreloadBandwidth(e,t)}},{key:"getPreloadBandwidth",value:function(e){return this._stats.getPreloadBandwidth(e)}},{key:"getLoadInfoAndDelete",value:function(e){return this._stats.getLoadInfoAndDelete(e)}},{key:"getPreloadUnuseInfo",value:function(){return this._stats.getPreloadUnuseInfo()}},{key:"setUsePreloadInfo",value:function(e,t){this._stats.setUsePreloadInfo(e,t)}},{key:"bwEventEmit",value:function(e){var t=e.vid,n=e.loadType,i=e.size,r=e.speed,a=e.cacheKey,l=e.vtype,U=e.duration,F=e.bitrate,o=I(e,MF);this._stats.bwEventEmit(G({vid:t,loadType:n,size:i,speed:r,cacheKey:a,vtype:l,duration:U,bitrate:F},o))}},{key:"findPreloadItem",value:function(e){var t,n=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];if(this._stepwise){var i=e.reduce((function(e,t){return void 0===t.data.stepIdx||"number"==typeof t.data.stepIdx&&"number"==typeof e.data.stepIdx&&t.data.stepIdx<e.data.stepIdx?t:e})),r=e.filter((function(e){return e.data.stepIdx===i.data.stepIdx}));if(r.length>1&&this._sort(r),t=r[0],!n){if("number"!=typeof t.data.stepIdx&&(t.data.stepIdx=-1),t.data.stepIdx++,Array.isArray(t.data.steps)&&t.data.stepIdx>=t.data.steps.length-1){var a=e.indexOf(t);e.splice(a,1)}t.data.stepIdx===1/0&&(t=void 0)}}else t=n?e[0]:e.shift();return t}},{key:"updateConfig",value:function(e){arguments.length>1&&void 0!==arguments[1]&&arguments[1]?this._config=Object.assign({},t.getDefaultConfig(),e):Object.assign(this._config,e);var n=this._config.autoCheck;n&&!n.enable&&this.stopCheckTask(),n&&n.enable&&this.startCheckTask()}},{key:"preProcessUrl",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,n=this._config,i=n.preProcessUrl,r=n.preProcessUrlOptions;return"function"==typeof i?i(e,Object.assign({},r,t)):{url:e}}}],[{key:"getDefaultConfig",value:function(){return{autoPreload:!1,autoCheck:{enable:!1,interval:1e3},preloadMaxCacheCount:5,preloadCacheType:uF.MEMORY,autoCheckPreload:!0,startPreloadControl:!1,startPreloadMinBuffer:5,startPreloadMinPosTime:5,minBufferLength:5,endPreloadControl:!1,endPreloadTaskStrategy:0}}},{key:"generateUniqueCacheKey",value:function(e){var t=e.vid,n=e.codecType,i=e.vtype;return"".concat(t,"#").concat(n,"#").concat(i.toUpperCase())}},{key:"parseKey",value:function(e){if(!e)throw new Error("key ".concat(e," is empty"));var t=e.split("#");if(t.length<6)throw new Error("key ".concat(e," is not right format"));return{vid:t[0],mediaType:t[1],codecType:t[2],vtype:t[3],definition:t[4],bitrate:parseInt("".concat(t[5]||0),10)||0}}},{key:"debugger",set:function(e){YF=!!e}}]);var n,i,r,a,l,U}(it),KF=function(e){function t(e,n){var i;return b(this,t),(i=E(this,t))._data=null,i.preloadManager=e,i._config=n,i.promisePolyfill(),i}return x(t,e),N(t,[{key:"taskInProgress",get:function(){return!1}},{key:"stepwise",get:function(){return this.preloadManager.stepwise}},{key:"getRequestOption",value:function(e){var t=this._config,n=t.getRequestOptionsCallback,i=t.reqOptions,r={};return e?r=e.reqOptions?e.reqOptions:"function"==typeof n?n(e):i||{}:r}},{key:"getUserSelectDefinition",value:function(){return this.preloadManager.getUserSelectDefinition()}},{key:"selectBitrate",value:function(e,t,n){return this.preloadManager.selectBitrate(e,t,n)}},{key:"promisePolyfill",value:function(){Promise.prototype.finally||(Promise.prototype.finally={finally:function(e){var t=function(t){return Promise.resolve(e()).then(t)};return this.then((function(e){return t((function(){return e}))}),(function(e){return t((function(){return Promise.reject(e)}))}))}}.finally)}},{key:"getData",value:function(){return this._data}},{key:"setData",value:function(e){this._data=e}},{key:"start",value:(a=k(M().mark((function e(t,n){return M().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:throw new Error("start need implement, return Promise");case 1:case"end":return e.stop()}}),e)}))),function(e,t){return a.apply(this,arguments)})},{key:"cancel",value:(r=k(M().mark((function e(){return M().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:throw new Error("cancel need implement, cancel current preload request");case 1:case"end":return e.stop()}}),e)}))),function(){return r.apply(this,arguments)})},{key:"getPreLoadData",value:(i=k(M().mark((function e(t){return M().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:throw new Error("getPreLoadData not implement");case 1:case"end":return e.stop()}}),e)}))),function(e){return i.apply(this,arguments)})},{key:"getPreLoadDataSync",value:function(e){return null}},{key:"hasItemSameVid",value:function(e){return!0}},{key:"destroy",value:(n=k(M().mark((function e(){return M().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",Promise.resolve());case 1:case"end":return e.stop()}}),e)}))),function(){return n.apply(this,arguments)})},{key:"parseKey",value:function(e){return wF.parseKey(e[0])}}],[{key:"generateUniqueKey",value:function(e){throw new Error("generateUniqueCacheKey need implement, return string")}},{key:"vtype",get:function(){throw new Error("need vtype")}},{key:"isUniqueCache",value:function(e){return!0}}]);var n,i,r,a}(it),_F={};Object.defineProperty(_F,"__esModule",{value:!0}),_F.default=function(e){for(var t=0,n=arguments.length,i=Array(n>1?n-1:0),r=1;r<n;r++)i[r-1]=arguments[r];var a=!0,l=!1,U=void 0;try{for(var F,o=i[Symbol.iterator]();!(a=(F=o.next()).done);a=!0){t+=F.value.length}}catch(V){l=!0,U=V}finally{try{!a&&o.return&&o.return()}finally{if(l)throw U}}var d=new e(t),Q=0,s=!0,c=!1,u=void 0;try{for(var B,R=i[Symbol.iterator]();!(s=(B=R.next()).done);s=!0){var h=B.value;d.set(h,Q),Q+=h.length}}catch(V){c=!0,u=V}finally{try{!s&&R.return&&R.return()}finally{if(c)throw u}}return d};var PF=z(((IF=_F)&&IF.__esModule?IF:{default:IF}).default),jF=function(e){return e.H264="h264",e.H265="h265",e.H266="h266",e}(jF||{}),HF=8e5;var OF=0;var zF=function(e){function t(e,n){var i,r,a;b(this,t),(a=E(this,t,[e,n]))._pendingTask={resolve:void 0,data:void 0},a._nextPreloadCount=0,a._updateRealTimeSpeed=function(e){OF=e.speed,a.emit(di,e)};var l={supportHevc:!1,preloadTime:5,preloadSize:0,segmentMinDuration:5,vtype:"MP4",preloadCacheType:1,preloadMaxCacheCount:5,globalKey:null,autoPreload:!1,reqOptions:null,getRequestOptionsCallback:null,minBufferLength:5,timeout:3e3,autoCheck:{enable:!0,interval:1e3},logCacheConfig:{logCacheLevel:2,logMaxSize:204800},pcdnConfig:{openPreloadPCDN:!1,enterMinBuffer:10,outMaxBuffer:5,pcdn_duration:2,pcdn_open:!0,openPCDN:!0,minDuration:25,trackerUrl:""},switchPCDNMaxCnt:2,retryCount:1,retryDelay:1e3,loaderType:"fetch"};Object.keys(n).forEach((function(e){l[e]=n[e]})),a.options=l,a.playerId=(null===(i=e.player)||void 0===i?void 0:i.playerId)||"default";var U=a.options.logCacheConfig,F=U.logCacheLevel,o=U.logMaxSize;return a.logger=new jt("[Mp4Preloader]",{logCacheLevel:F,logMaxSize:o}),void 0===n.supportHevc&&"undefined"!=typeof MediaSource&&MediaSource.isTypeSupported&&(MediaSource.isTypeSupported('video/mp4;codecs="hev1.1.6.L120.90"')||MediaSource.isTypeSupported('video/mp4;codecs="hev1.2.4.L120.90"')||MediaSource.isTypeSupported('video/mp4;codecs="hev1.3.E.L120.90"')||MediaSource.isTypeSupported('video/mp4;codecs="hev1.4.10.L120.90"'))&&(a.options.supportHevc=!0),a.loadRangeType=(null===(r=a.options)||void 0===r?void 0:r.loadRangeType)||Ri.GOP,a.log(_t.DEBUG,"[Preloader] new preloader, playerId",a.playerId),a}return x(t,e),N(t,[{key:"currentPreloadInst",get:function(){return this.preloadManager.currentPreloadInst}},{key:"allCachedKeys",get:function(){return this.preloadManager.getAllCachedDataKeys()}},{key:"cacheInst",get:function(){return this.preloadManager.cacheInst}},{key:"realTimeSpeed",get:function(){return OF}},{key:"taskInProgress",get:function(){return!!this._pendingTask.resolve&&!!this._pendingTask.data}},{key:"log",value:function(e,t){for(var n=arguments.length,i=new Array(n>2?n-2:0),r=2;r<n;r++)i[r-2]=arguments[r];ai.apply(void 0,[this.logger,e,t].concat(i))}},{key:"getPreloadUnuseInfo",value:function(){return this.preloadManager.getPreloadUnuseInfo()}},{key:"generateUniqueKey",value:function(e){var n=e.vid,i=e.definition,r=e.mediaType,a=e.codecType,l=e.vtype;return t.generateUniqueKey({vid:n,mediaType:r,definition:i,codecType:a,vtype:l})}},{key:"_beforeStart",value:function(e,t){var n=e.payload||[];if(0===n.length)return this.log(_t.LOG,"preload_is_null"),null;var i=e.vid,r=e.steps,a=e.stepIdx,l=e.targetDefinition,U=e.vtype||ne.MP4,F=e.codecType||jF.H264,o=this.getUserSelectDefinition(),d=this.checkCacheKey(i,n,o,U,F);if(this.log(_t.LOG,"".concat(this.playerId," ").concat(i),"codecType:".concat(F," vtype:").concat(U," hasCache:").concat(d)),d&&!this.stepwise||"MP3"===U)return this.log(_t.LOG,"vtype_".concat(U)),null;var Q=l||this.getInitDefinition(n,t);if(this.log(_t.LOG," ".concat(this.playerId," ").concat(i," getInitDefinition"),null==Q?void 0:Q.definition),!Q)return this.log(_t.WARN,"definition_error"),null;var s=Q.definition,c=Q.orgDefinition,u=this.stepwise?r[e.stepIdx]:e.preloadTime||this.options.preloadTime,B=this.stepwise?r[e.stepIdx]*Math.floor(Q.bitrate/8):e.preloadSize||this.options.preloadSize||Math.pow(25,4)-1,R=this.generateUniqueKey({vid:i,definition:s,vtype:U,codecType:F});this._nextPreloadCount>0&&this._nextPreloadCount--,this.log(_t.LOG,"".concat(this.playerId," ").concat(i),"cacheKey:".concat(R," duration:").concat(Q.duration," preloadTime:").concat(u));var h=G({vid:i,definition:s,orgDefinition:c,preloadTime:u,preloadSize:B,cacheKey:R,codecType:F,vtype:U,steps:r,stepIdx:a,payload:e},Q);return e.reqOptions&&(h.reqOptions=e.reqOptions),this.log(_t.LOG,"start preload,".concat(i," playerId:").concat(this.playerId)),h}},{key:"start",value:(Q=k(M().mark((function e(t,n){var i,r,a,l,U,F,o,d,Q;return M().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r=this._beforeStart(t,n)){e.next=3;break}return e.abrupt("return",{remove:!0});case 3:if(a=Promise.withResolvers(),l=a.promise,U=a.resolve,F=r.codecType,this._pendingTask.resolve=U,this._pendingTask.data=r,null!==(i=this.options)&&void 0!==i&&null!==(i=i.pcdnConfig)&&void 0!==i&&i.openPreloadPCDN&&(o=Object.assign({},{productConfig:Bi},this.options.pcdnConfig),this._pcdn=new ct(o,void 0,void 0,void 0)),d=null,!this.stepwise){e.next=13;break}return e.next=12,this.getPreLoadData(r);case 12:d=e.sent;case 13:return Q=t.loadRangeType||this.loadRangeType,F===jF.H265&&!this.options.supportHevc||Q===Ri.UNMUX?this.loadByChunkSizeUnMux(r,d):Q===Ri.GOP?this.loadByPreloadTime(r,d):Q===Ri.SIZE?this.loadByChunkSize(r,d):Q===Ri.ONLY_SIZE&&this.loadByChunkSizeOnly(r,d),e.next=17,l;case 17:return e.abrupt("return",{remove:!this.stepwise});case 18:case"end":return e.stop()}}),e,this)}))),function(e,t){return Q.apply(this,arguments)})},{key:"_getRangeByOffsetMap",value:function(e,t){var n=this,i=null==e?void 0:e.find((function(e){var i;return(null==e?void 0:e.time)===((null===(i=n.options)||void 0===i?void 0:i.firstLoadTimePos)||t)}));return null==i?void 0:i.offset}},{key:"_decideRequestRange",value:function(e){var t=e.pktOffsetMap,n=e.bitrate,i=e.size,r=e.duration,a=[0,HF],l=this._getRangeByOffsetMap(t,5),U=0;if("number"==typeof l&&l>0)a[1]=l,U=5;else{var F=i||VU.getFileSize(n,r),o=dU(r,HF,F);a[1]=o,U=1}return{range:a,duration:U}}},{key:"loadByChunkSizeOnly",value:(d=k(M().mark((function e(t,n){var i,r,a,l,U,F,o,d,Q,s,c,u,B,R,h,V,p,m,Z,S,J,W,f,y,k,E;return M().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(i=t.vid,r=t.cacheKey,a=t.definition,l=t.orgDefinition,U=t.duration,F=t.bitrate,o=t.codecType,d=t.vtype,Q=t.size,s=this._getLoadUrl(t)){e.next=5;break}return this._endLoadFragments(!1),e.abrupt("return");case 5:return s=VU.extUrl(s,{__vid:i}),c=this._decideRequestRange({bitrate:F,size:Q,duration:U,pktOffsetMap:t.pktOffsetMap}),u=c.range,B=c.duration,this.log(_t.LOG,"".concat(i," loadByChunkSize ").concat(u[0],"-").concat(u[1]),t.cacheKey,t.definition,B),R={vid:i,definition:a,orgDefinition:l,cacheKey:r,codecType:o,vtype:d,fileSize:Q,bitrate:F||0,byteLength:0,preloadTime:B,buffer:new ArrayBuffer(0)},h=this.getRequestOption(G(G({},t),{},{url:s})),V=new kn({responseType:"arraybuffer"}),p=VU.nowTime(),e.prev=12,e.next=15,V.load(s,G({range:u},h));case 15:Z=e.sent,R.fileSize||(S=WU(Z.headers),R.fileSize=S),(null==Z||null===(m=Z.data)||void 0===m?void 0:m.byteLength)>0&&(W=Z.data,f=W.byteLength||0,(y={codecType:o,vtype:d,vid:i,definition:a,orgDefinition:l,cacheKey:r,bitrate:F,memory:0,byteLength:f,preloadSize:f,preloadTime:0,buffer:W,fileSize:R.fileSize}).preloadTime=B||0,y.buffer&&y.buffer.byteLength>0&&(y.memory+=(null==W?void 0:W.byteLength)||0,this.setItem(t,y)),k=(null==Z||null===(J=Z.options)||void 0===J||null===(J=J.priOptions)||void 0===J?void 0:J.type)||MU,E=uU(f,VU.nowTime()-p),this.bwEventEmit(i,k,f,E,r,!0)),e.next=23;break;case 20:e.prev=20,e.t0=e.catch(12),console.log("error",e.t0);case 23:this._endLoadFragments(!1);case 24:case"end":return e.stop()}}),e,this,[[12,20]])}))),function(e,t){return d.apply(this,arguments)})},{key:"getInitDefinition",value:function(e,t){for(var n=null,i=0,r=0;r<e.length;r++){if(e[r].definition===t){i=r;break}}return(n=e[i])||(n=e[0]),n}},{key:"getPreLoadData",value:function(e){var t=this,n=Promise.withResolvers(),i=n.promise,r=n.resolve,a=n.reject;return this.getItemSameVid(e).then((function(e){if(t.log(_t.DEBUG,"[Preloader] getPreLoadData",!!e.value),e.value){var n=e.value,i=n.mediaSegList,a=n.meta,l=n.type,U=n.buffer,F=n.preloadTime,o=n.vid,d=n.cacheKey,Q=n.definition,s=n.orgDefinition,c=n.byteLength,u=n.duration,B=n.fileSize,R=n.from,h=n.vtype,V=n.codecType,p=n.initSeg,m=G({generateBy:"preloader",vid:o,type:l,vtype:h,codecType:V,definition:Q,orgDefinition:s,bitrate:n.bitrate,cacheKey:d,duration:u||0,byteLength:c,from:R,adaptTimeRange:n.adaptTimeRange,repeatData:n.repeatData,repeatDataStartPos:n.repeatDataStartPos,memory:n.memory,meta:a,preloadTime:F,fileSize:B||0},l===cF.SIZE?{buffer:U}:{initSeg:p,mediaSegList:i});r(m)}else r(null)})).catch((function(e){a(e)})),i}},{key:"setPreLoadData",value:(o=k(M().mark((function e(t,n){var i,r,a,l,U,F,o,d,Q,s,c,u,B,R,h,V,p,m,Z,S,J,W,f,y,k=this;return M().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:i=n.mediaSegList,r=n.meta,a=n.vid,l=n.definition,U=n.orgDefinition,F=n.type,o=n.buffer,d=n.duration,Q=n.byteLength,s=n.preloadTime,c=n.fileSize,u=n.from,B=n.vtype,R=n.codecType,h=n.initSeg,V=n.bitrate,p=n.adaptTimeRange,m=n.repeatData,Z=n.repeatDataStartPos,S=n.cacheKey,(J={codecType:R,vtype:B,vid:a,definition:l,orgDefinition:U,cacheKey:S,type:F,from:u,meta:r,fileSize:c,adaptTimeRange:p,repeatData:m,repeatDataStartPos:Z,bitrate:V,memory:0}).memory+=(null==m?void 0:m.byteLength)||0,F===cF.SIZE?(J.buffer=o,J.byteLength=Q||0,J.preloadSize=Q||0,J.preloadTime=s||0,J.fileSize=c,J.buffer&&J.buffer.byteLength>0&&(J.memory+=(null==o?void 0:o.byteLength)||0,this.setItem(t,J))):(J.mediaSegList=[],J.duration=d,J.byteLength=Q||0,J.preloadTime=s||0,J.initSeg=h,J.memory+=(null==h?void 0:h.byteLength)||0,J.fileSize=c,null==i||i.forEach((function(e){var t;J.memory+=(null==e||null===(t=e.buffer)||void 0===t?void 0:t.byteLength)||0,J.mediaSegList.push(e)})),r&&0===i.length?(this.log(_t.LOG,"[Preloader] meta setPreLoadData1 success",S,null==J||null===(W=J.mediaSegList)||void 0===W?void 0:W.length),this.setItem(t,J)):(y=i.every((function(e){return!!e.buffer&&e.state})),this.log(_t.LOG,"[Preloader] mediaSegList setPreLoadData1 success",S,null==J||null===(f=J.mediaSegList)||void 0===f?void 0:f.length,y),y&&this.setItem(t,J).then((function(){k.log(_t.LOG,"[Preloader] setPreLoadData1 success",S)}))));case 4:case"end":return e.stop()}}),e,this)}))),function(e,t){return o.apply(this,arguments)})},{key:"getInitCacheData",value:function(e,t){var n={type:e,meta:null,byteLength:0,fileSize:0,bitrate:0,preloadTime:0};return e===cF.DURATION?(n.mediaSegList=[],n.initSeg=null,n.duration=0):n.buffer=null,Object.keys(t).map((function(e){n[e]=t[e]})),n}},{key:"updatePreCacheData",value:function(e,t,n,i,r,a,l,U,F,o){var d,Q=e.mediaSegList;if(e.type===cF.SIZE||-1===r)return e.buffer=PF(Uint8Array,(null===(d=e.buffer)||void 0===d?void 0:d.buffer)||[],new Uint8Array(t)),e;var s=-1;if(Q)for(var c=0;c<Q.length;c++)if(Q[c].index===r){s=c;break}var u=a||[0,0];if(s>-1&&Q)t&&(Q[s].buffer=PF(Uint8Array,Q[s].buffer||[],new Uint8Array(t))),n.length>1&&(Q[s].range.length>1?Q[s].range[1]=n[1]:Q[s].range=n),l&&-1!==l[1]&&(i=Q[s].range[1]>=l[1]),Q[s].state=i;else{e.duration=u[1],Q&&Q.push({buffer:t,range:n||[],index:r,totalRange:l||[],timeRange:[u[0],u[1]],muxSampleIdxRange:U,unMuxPos:F,state:i});var B="".concat(null==t?void 0:t.byteLength,",").concat(JSON.stringify(n),",").concat(r,",").concat(JSON.stringify(l),",").concat(JSON.stringify(a));this.log(_t.DEBUG,"[Preloader] ".concat(e.cacheKey," mediaSegList set, dataLen"),B)}return i&&(e.byteLength+=n[1]-n[0],e.preloadTime+=o),i}},{key:"checkCacheKey",value:function(e,t,n){var i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:ne.MP4,r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:re.H264;if(n){var a=this.generateUniqueKey({vid:e,definition:n,vtype:i,codecType:r});return a&&this.hasItemSameVid(a)?a:null}for(var l=0;l<t.length;l++){var U=this.generateUniqueKey({vid:e,definition:t[l].definition,vtype:i,codecType:r});if(U&&this.hasItemSameVid(U))return U}return null}},{key:"getRangeStartPos",value:function(e){var t,n=this,i=null==e||null===(t=e.pktOffsetMap)||void 0===t?void 0:t.find((function(e){var t;return(null==e?void 0:e.time)===((null===(t=n.options)||void 0===t?void 0:t.firstLoadTimePos)||5)}));return null==i?void 0:i.offset}},{key:"loadByChunkSizeUnMux",value:(F=k(M().mark((function e(t,n){var i,r,a,l,U,F,o,d,Q,s,c,u,B,R,h,V,p,m,Z,S,J,W,f,y,E,b,v,N=this;return M().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r=t.vid,a=t.cacheKey,l=t.definition,U=t.orgDefinition,F=t.duration,o=t.bitrate,d=t.codecType,Q=t.vtype,s=t.size,c=t.uri,u=t.file_id,B=this.options,R=this._getLoadUrl(t)){e.next=6;break}return this._endLoadFragments(!1),e.abrupt("return");case 6:if(R=VU.extUrl(R,{__vid:r}),h=s||VU.getFileSize(o,F),V=null==t||null===(i=t.pktOffsetMap)||void 0===i?void 0:i.find((function(e){return(null==e?void 0:e.time)===((null==B?void 0:B.firstLoadTimePos)||5)})),p=null==V?void 0:V.offset,m=dU(F,HF,h),this.log(_t.LOG,"".concat(r," loadByChunkSizeUnMux"),t.cacheKey,t.definition,p||m),Z=this.getInitCacheData(cF.SIZE,{vid:r,definition:l,orgDefinition:U,cacheKey:a,codecType:d,vtype:Q,fileSize:s,bitrate:o||0}),S=this.getRequestOption(G(G({},t),{},{url:R})),this.startPCDN(R,c,r,o,u,Q.toLowerCase()||"mp4",Math.floor(F),h),this.mp4Loader=new FU({url:R,vid:"".concat(r,"-").concat(o),retry:B.retryCount||2,retryDelay:B.retryDelay||1e3,timeout:B.timeout||3e3,reqOptions:S,loaderType:B.loaderType,retryCheckFunc:RU,openLog:ri(),memoryOpt:this.options.memoryOpt,audioGroupingStrategy:B.audioGroupingStrategy,fixEditListOffset:B.fixEditListOffset,fixEditListOffsetThreshold:B.fixEditListOffsetThreshold}),this.mp4Loader.on(di,(function(e){if((null==e?void 0:e.len)>0){var t,n=(null==e||null===(t=e.priOptions)||void 0===t?void 0:t.type)||MU,i=uU(e.len,e.time);N.bwEventEmit(r,n,e.len,i,a)}})),e.prev=17,J=new Uint8Array(3145728),W=0,f=0,y=-1,E=null,b=null,v=function(){var e=k(M().mark((function e(n,i,l,U,F){var o,d,Q,s,c,u,B,h,V,p,m,S,k,v,g,T;return M().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:Z.fileSize||(Z.fileSize=Number(WU(F.headers))),n&&(y>0?(o=J.slice(y-W,W+f),(null==n?void 0:n.byteLength)+f>J.byteLength?((d=VU.newUint8Array(J.byteLength+n.byteLength)).set(o,0),d.set(n,o.byteLength),J=d):(J.set(o,0),J.set(n,o.byteLength)),W=y,f=o.byteLength+n.byteLength):((null==n?void 0:n.byteLength)>(null===(Q=J)||void 0===Q?void 0:Q.byteLength)&&(J=VU.newUint8Array(J.byteLength+n.byteLength)),J.set(n,0),f+=(null==n?void 0:n.byteLength)||0,W=l.range[0])),l.meta&&(c=(null==n||null===(s=n.priOptions)||void 0===s?void 0:s.type)||MU,N.bwEventEmit(r,c,f,null,a),u=l.meta,B=u.videoSegments,h=u.audioSegments,Z.fileSize||(Z.fileSize=VU.getEndFramePos(B,h)),y=VU.getFirstFrameStartRange(B,h),b=G(G({},u.meta),{},{ext:{videoTrak:B,audioTrak:h}}),Z.meta=b,E=VU.getFragRange(0,B,h),Z.buffer=J.subarray(0,f),Z.byteLength=Z.buffer.byteLength,V=VU.getFragRange(1,B,h),p=[],V[0]<V[1]&&E[1]>V[0]&&(p=[V[0],E[1]]),m=(null==B?void 0:B.length)>0?B:h,S=m[0].startTime,k=m[0].endTime,v={startTime:S,endTime:k,range:_(E),repeatRange:p,duration:k-S,downloaded:!1,isLoading:!1,timeRangeIdx:[0,1]},Z.adaptTimeRange=[v],N.log(_t.LOG,"".concat(r," loadMetaProcess ret"),a,J.byteLength,JSON.stringify(E),Z.buffer.byteLength,JSON.stringify(p)),N.setPreLoadData(t,Z),T=[g=W+f,E[1]],N.log(_t.LOG,"".concat(a," loadMetaProcess end, loadOneChunk start"),i,JSON.stringify(T),g,J.byteLength),N.loadOneChunk(Z,T,R,v.duration,t));case 3:case"end":return e.stop()}}),e)})));return function(t,n,i,r,a){return e.apply(this,arguments)}}(),!this.mp4Loader){e.next=28;break}return e.next=28,this.mp4Loader.loadMetaProcess(this.mp4Loader.cache,[0,p||m],v,{});case 28:e.next=34;break;case 30:e.prev=30,e.t0=e.catch(17),console.error("[Preloader] ".concat(a," loadByChunkSizeUnMux error"),e.t0),this._endLoadFragments(!1);case 34:case"end":return e.stop()}}),e,this,[[17,30]])}))),function(e,t){return F.apply(this,arguments)})},{key:"loadOneChunk",value:(U=k(M().mark((function e(t,n,i,r,a){var l,U,F,o,d,Q,s,c,u,B,R;return M().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!((null==n?void 0:n.length)>0&&n[0]>=n[1])){e.next=3;break}return this._endLoadFragments(),e.abrupt("return");case 3:return(U=(null===(l=this._pcdnNodeList)||void 0===l?void 0:l.length)>0?VU.extUrl(this._pcdnNodeList[0].url,{__vid:t.vid}):null)&&jU.pcdn_download_request_cnt++,this.log(_t.LOG,"".concat(null==t?void 0:t.cacheKey," loadOneChunk start"),JSON.stringify(n),",loadType,",!!U),F=U||i,o=t.vid,d=t.cacheKey,Q=t.buffer,e.prev=8,e.next=11,null===(s=this.mp4Loader)||void 0===s?void 0:s.loadData(n,this.mp4Loader.cache,{index:0,url:F,headers:U?{"X-Origin-Server-Host":VU.getHostFromUrl(i)}:null,priOptions:{type:U?YU:MU}});case 11:c=e.sent,this.log(_t.LOG,"".concat(o," loadOneChunk"),JSON.stringify(n),d),u=c.response,(B=c.data)?(this._endLoadFragments(),u&&u.headers&&(R=Number(WU(u.headers)))&&(t.fileSize=R),t.buffer=VU.concatData(Q,B),t.byteLength=t.buffer.byteLength,t.preloadTime+=r,this.log(_t.LOG,"".concat(o," loadOneChunk ret"),d,t.buffer.byteLength,null==B?void 0:B.byteLength),t.from=4,this.setPreLoadData(a,t)):(jU.pcdn_download_failed_cnt++,this._endLoadFragments(!1)),e.next=21;break;case 17:e.prev=17,e.t0=e.catch(8),this.log(_t.ERROR,"[Preloader] ".concat(o," loadByChunkSize error"),null===e.t0||void 0===e.t0?void 0:e.t0.message),this._endLoadFragments(!1);case 21:case"end":return e.stop()}}),e,this,[[8,17]])}))),function(e,t,n,i,r){return U.apply(this,arguments)})},{key:"loadByPreloadTime",value:(l=k(M().mark((function e(t,n){var i,r,a,l,U,F,o,d,Q,s,c,u,B,R,h,V,p,m,Z,S,J,W=this;return M().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(a=t.vid,l=t.cacheKey,U=t.preloadTime,F=t.definition,o=t.orgDefinition,d=t.duration,Q=t.bitrate,s=t.codecType,c=t.vtype,u=t.size,B=t.uri,R=t.file_id,h=this._getLoadUrl(t)){e.next=6;break}return this._endLoadFragments(!1),e.abrupt("return");case 6:return h=VU.extUrl(h,{__vid:a}),V=U>=this.options.segmentMinDuration?this.options.segmentMinDuration:U,p=this.getRequestOption(G(G({},t),{},{_url:h})),this.log(_t.DEBUG,"[Preloader] loadByPreloadTime","".concat(t.cacheKey,", definition:").concat(t.definition,",segmentMinDuration:").concat(V),p),m=u||VU.getFileSize(Q,d),Z=this.getRangeStartPos(t),S=this.createConfig(t,p,Z,m,V),this.mp4=new HU(h,Q,S,[],"[Preloader]"),J=this.getInitCacheData(cF.DURATION,{vid:a,definition:F,orgDefinition:o,cacheKey:l,codecType:s,vtype:c,bitrate:Q||0}),this.startPCDN(h,B,a,Q,R,c.toLowerCase()||"mp4",Math.floor(d),m),null!=n&&null!==(i=n.meta)&&void 0!==i&&i.ext?(this.uddatePreCacheInfoByCache(n,J),this.updateMP4InfoByCache(n)):this.mp4.once(vU,function(){var e=k(M().mark((function e(n,i){var r;return M().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(i&&!i.hasDestroyed){e.next=2;break}return e.abrupt("return");case 2:return W.log(_t.DEBUG,"[Preloader] ".concat(t.vid," metaReady ").concat(null==J||null===(r=J.mediaSegList)||void 0===r?void 0:r.length)),J.meta=n,J.from=2,J.fileSize=i.size,e.next=8,i.cancelLoading();case 8:if(!i.hasDestroyed){e.next=10;break}return e.abrupt("return");case 10:return i.metaLoading=!1,e.next=13,W.setPreLoadData(t,J);case 13:if(!i.hasDestroyed){e.next=15;break}return e.abrupt("return");case 15:W.startLoadByFragments(J,t);case 16:case"end":return e.stop()}}),e)})));return function(t,n){return e.apply(this,arguments)}}()),this.mp4EventAdd(t.vid,J.cacheKey),e.next=20,this.mp4.init(n);case 20:if(this.mp4){e.next=22;break}return e.abrupt("return");case 22:null!=n&&null!==(r=n.meta)&&void 0!==r&&r.ext&&this.startLoadByFragments(J,t);case 23:case"end":return e.stop()}}),e,this)}))),function(e,t){return l.apply(this,arguments)})},{key:"bwEventEmit",value:function(e,t,n,i,r,a){var l,U,F=(null===(l=this._pendingTask.data)||void 0===l?void 0:l.duration)||0,o=(null===(U=this._pendingTask.data)||void 0===U?void 0:U.bitrate)||0;this.preloadManager.bwEventEmit({vid:e,loadType:t,size:n,speed:i,cacheKey:r,vtype:ne.MP4,duration:F,bitrate:o,isV2Player:a})}},{key:"startPCDN",value:function(e,t,n,i,r,a,l,U){var F=this;if(this._pcdn){var o;if(null===(o=this.mp4)||void 0===o||o.updatePCDNState(KU),!cU(e)){var d=document.location.protocol;e=d+e}this.curPCDNReqId=function(e,t){return e.slice(-20)+t}(t||n,i);var Q={vid:t,cdn_url:e,sfid:r,file_type:a,bitrate:i,duration:Math.floor(l),size:U};this.log(_t.DEBUG,"[Preloader] ".concat(n," get peer start")),this._pcdn.fetchPCDNNode(null,Q,this.curPCDNReqId).then((function(e){var t;null!=e&&e.req_id&&e.req_id!==F.curPCDNReqId?F.log(_t.LOG,",[Preloader] fetchPCDNNode not match reqId",F.curPCDNReqId,", pcdnRet.req_id",e.req_id):(F.log(_t.LOG,"[Preloader] ".concat(n," get peer end,pcdn node update,"),null==e||null===(t=e.nodes)||void 0===t?void 0:t.length),F.mp4?F.mp4.updateNode(null==e?void 0:e.nodes):F._pcdnNodeList=(null==e?void 0:e.nodes)||null)})).catch((function(t){var n,i,r,a=VU.checkUrlIsExpired(e);1===a&&F._pcdn&&(F._pcdn=void 0);var l=(null==t||null===(n=t.response)||void 0===n?void 0:n.url)||(null===(i=F.options)||void 0===i||null===(i=i.pcdnConfig)||void 0===i?void 0:i.trackerUrl);F.emit("source_error",{host:VU.getHostFromUrl(l),src:l,errorCode:null==t||null===(r=t.response)||void 0===r?void 0:r.status,message:"".concat(null==t?void 0:t.message,"-").concat(a,"_preload")})}))}}},{key:"_getLoadUrl",value:function(e){var t="Array"===VU.typeOf(e.url)?e.url[0].src:e.url;return this.preloadManager.preProcessUrl&&(t=this.preloadManager.preProcessUrl(t).url),t}},{key:"mp4EventAdd",value:function(e,t){var n,i=this;this.mp4.on(bU,(function(t){i.log(_t.ERROR,"[Preloader] ".concat(e," load error ").concat(null==t?void 0:t.errorCode,", ").concat((null==t?void 0:t.errorMessage)||(null==t?void 0:t.message)," ")),i._endLoadFragments(!1)})),this.mp4.on(DU,(function(e){i._pcdn&&e&&i._pcdn.removePCDNNode(e.vid,e.bitrate,e.url)})),this.mp4.on(IU,(function(n){i.bwEventEmit(e,n.load_type,n.len,null,t)})),null===(n=this.mp4.MP4Loader)||void 0===n||n.on(di,(function(n){if((null==n?void 0:n.len)>0){var r,a=(null==n||null===(r=n.priOptions)||void 0===r?void 0:r.type)||MU,l=uU(n.len,n.time);i.bwEventEmit(e,a,n.len,l,t)}}))}},{key:"createConfig",value:function(e,t,n,i,r){var a=e.vid,l=e.duration,U=this.options,F=U.preloadSize,o=U.memoryOpt,d=U.supportHevc,Q=U.emitMediaListControl,s=U.audioGroupingStrategy,c=U.fixEditListOffsetThreshold,u=U.fixEditListOffset,B=U.segmentMinDuration;return{segmentDuration:r||B,codecType:this.codecType,chunkSize:F,firstLoadSize:n,duration:l,fileSize:i,playerId:this.playerId,vid:a,useUrlRange:!1,retryCount:1,retryDelay:1e3,supportHevc:d,retryCheckFunc:RU,switchPCDNMaxCnt:Number.MAX_VALUE,logger:this.logger,reqOptions:t,memoryOpt:o,emitMediaListControl:Q,audioGroupingStrategy:s,fixEditListOffset:u,fixEditListOffsetThreshold:c,loadRangeType:this.loadRangeType}}},{key:"uddatePreCacheInfoByCache",value:function(e,t){t.meta=e.meta,t.from=5,t.fileSize=e.fileSize,t.mediaSegList=e.mediaSegList||t.mediaSegList||[],t.repeatData=e.repeatData,t.repeatDataStartPos=e.repeatDataStartPos,t.initSeg=e.initSeg,t.adaptTimeRange=e.adaptTimeRange,t.byteLength=e.byteLength}},{key:"updateMP4InfoByCache",value:function(e){var t;if(e.initSeg&&(this.mp4._needInitSegment=!1),e.adaptTimeRange&&(this.mp4.adaptTimeRange=e.adaptTimeRange),(null===(t=e.mediaSegList)||void 0===t?void 0:t.length)>0){var n=e.mediaSegList,i=n[n.length-1].muxSampleIdxRange,r=i.video,a=i.audio;this.mp4.lastDemuxSampleIdxRange.video=r,this.mp4.lastDemuxSampleIdxRange.audio=a}}},{key:"loadByChunkSize",value:(a=k(M().mark((function e(t,n){var i,r,a,l,U,F,o,d,Q,s,c,u,B,R,h,V,p,m,Z,S=this;return M().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(i=t.vid,r=t.cacheKey,a=t.definition,l=t.orgDefinition,U=t.duration,F=t.bitrate,o=t.codecType,d=t.vtype,Q=t.size,s=t.uri,c=t.file_id,this.options,u=this._getLoadUrl(t)){e.next=6;break}return this._endLoadFragments(!1),e.abrupt("return");case 6:if(u=VU.extUrl(u,{__vid:i}),B=Q||VU.getFileSize(F,U),R=this.getRangeStartPos(t),h=dU(U,HF,B),this.log(_t.LOG,"".concat(i," loadByChunkSize"),t.cacheKey,t.definition,R||h),V=this.getInitCacheData(cF.DURATION,{vid:i,definition:a,orgDefinition:l,cacheKey:r,codecType:o,vtype:d,fileSize:Q,bitrate:F||0}),p=this.getRequestOption(G(G({},t),{},{url:u})),this.startPCDN(u,s,i,F,c,d.toLowerCase()||"mp4",Math.floor(U),B),m=this.createConfig(t,p,R||h,B,null),this.mp4=new OU(u,F,m,[],"[Preloader]"),this.mp4EventAdd(t.vid,V.cacheKey),Z=-1,null==n||!n.meta){e.next=26;break}return this.uddatePreCacheInfoByCache(n,V),this.updateMP4InfoByCache(n),e.next=23,this.mp4.init(n);case 23:this.startLoadBySize(V,t),e.next=29;break;case 26:this.mp4.once(vU,function(){var e=k(M().mark((function e(n,i){return M().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(i&&!i.hasDestroyed){e.next=2;break}return e.abrupt("return");case 2:return S.log(_t.DEBUG,"[Preloader] ".concat(t.vid," metaReady, metaReq, ").concat(Z)),V.meta=n,V.from=2,V.fileSize=i.size,e.next=8,S.setPreLoadData(t,V);case 8:if(!i.hasDestroyed){e.next=10;break}return e.abrupt("return");case 10:1===Z&&(Z=2,S.startLoadBySize(V,t));case 11:case"end":return e.stop()}}),e)})));return function(t,n){return e.apply(this,arguments)}}()),this.mp4.once(NU,(function(e){if(e&&!e.hasDestroyed){S.log(_t.DEBUG,"[Preloader] ".concat(t.vid," metaReq done,meta:, ").concat(!!e.meta));var n=e.repeatInfo,i=n.curDataPos,r=n.startPos,a=n.data;i>0&&(V.repeatData=a.subarray(0,i),V.repeatDataStartPos=r),e.meta?(Z=2,S.startLoadBySize(V,t)):Z=1}})),this.mp4.init(n);case 29:case"end":return e.stop()}}),e,this)}))),function(e,t){return a.apply(this,arguments)})},{key:"findLoadAdaptTimeRangeIdx",value:function(e){var t,n,i=this,r=e.steps,a=e.stepIdx,l=e.preloadTime,U=0,F=null===(t=this.mp4)||void 0===t?void 0:t.adaptTimeRange,o=!(null!==(n=this.options)&&void 0!==n&&n.openStepwiseType)||this.options.openStepwiseType.toUpperCase()===ne.MP4;if(this.stepwise&&o&&Array.isArray(r)&&r.length>0&&"number"==typeof a){var d,Q=r[a];if((!F||(null==F?void 0:F.length)<(null==r?void 0:r.length))&&r.map((function(e,t,n){return e-(0===t?0:n[t-1])})).forEach((function(e){var t;(!Array.isArray(F)||0===F.length||F[F.length-1].endTime<r[r.length-1])&&(null===(t=i.mp4)||void 0===t||t.updateAdaptTimeRange(null,e||l||5))})),F)for(var s=0;s<F.length&&F[s].startTime<=Q;s++)U=s;null===(d=this.mp4)||void 0===d||d.getFragRange(U)}else if(!F||0===(null==F?void 0:F.length)){var c,u,B=null===(c=this.mp4)||void 0===c?void 0:c.updateAdaptTimeRange(null,l||5);null===(u=this.mp4)||void 0===u||u.getFragRange(B),U=B}return U}},{key:"updateAdaptTimeRangeState",value:function(e,t){var n=e.mediaSegList;!n||(null==n?void 0:n.length)<=0||n.forEach((function(e,n){var i;e.state&&(null==e||null===(i=e.buffer)||void 0===i?void 0:i.byteLength)>0&&n<(null==t?void 0:t.length)&&(t[n].downloaded=!0)}))}},{key:"startLoadBySize",value:(r=k(M().mark((function e(t,n){var i,r,a,l,U,F,o,d,Q,s,c,u,B=this;return M().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(i=n.vid,r=this.mp4,a=this.findLoadAdaptTimeRangeIdx(n),(l=null==r?void 0:r.adaptTimeRange)&&null!=l&&l.length){e.next=8;break}return this.log(_t.ERROR,"[Preloader] ".concat(i," adaptTimeRange is null")),this._endLoadFragments(!1),e.abrupt("return");case 8:if(this.updateAdaptTimeRangeState(t,l),(U=l.findIndex((function(e){return!e.downloaded})))>=0&&(a=Math.min(U,a)),F=l[a].range,this.log(_t.LOG,"[Preloader] ".concat(i,"$ startLoadBySize, loading ").concat(a),l?l[a].downloaded:"",l),!l||!l[a].downloaded){e.next=16;break}return this._endLoadFragments(),e.abrupt("return");case 16:if(e.prev=16,o=function(e){B.log(_t.ERROR,"[Preloader] ".concat(i," failedCallback error"),null==e?void 0:e.message),B._endLoadFragments(!1)},d=function(){var e=k(M().mark((function e(i){var r,a,U,F,Q,s,c,R,h,V,p,m,Z;return M().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(null!=i&&i.mp4&&(null==i||!i.mp4.hasDestroyed)){e.next=2;break}return e.abrupt("return");case 2:if(a=i.mp4,U=i.buffer,F=i.state,Q=i.context,s=i.initSeg,c=i.lastRemainBufferInfo,R=a.adaptTimeRange,h=Q.fragIndex,V=Q.timeRange,p=null===(r=R[h])||void 0===r?void 0:r.range,!t.initSeg&&s&&(t.initSeg=s,t.adaptTimeRange=R),m=a.lastDemuxSampleIdxRange,t.repeatData=c.data,t.repeatDataStartPos=c.pos,B.log(_t.LOG,"[Preloader] ".concat(t.cacheKey," lastUnMuxData, ").concat(h,", \n appendLastUnMuxData start: ").concat(t.repeatDataStartPos," \n end: ").concat(t.repeatDataStartPos+t.repeatData.byteLength)),Z=B.updatePreCacheData(t,U,p,F,h,V,p,m,c.pos,R[h].duration),B.log(_t.LOG,"[Preloader] ".concat(t.cacheKey," successCallback"),Q.fragIndex,F,Z),t.from=3,!Z){e.next=27;break}return e.next=18,B.setPreLoadData(n,t);case 18:if(!(l&&h>=l.length-1||B.stepwise)){e.next=24;break}return B.log(_t.LOG,"[Preloader] ".concat(t.cacheKey," mp4.load end"),h),B._endLoadFragments(!0),e.abrupt("return");case 24:return B.appendLastUnMuxData(h+1,t),e.next=27,a.loadAllFragmentData(h+1,d,o,!1,u);case 27:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),Q=t.repeatData,s=t.repeatDataStartPos,!this.checkCacheIsHasAllData(F,t)){e.next=26;break}return this.log(_t.LOG,"[Preloader] ".concat(i," startLoadBySize loadIdx:").concat(a," , cache has all data,loadIdx:").concat(a," range:").concat(F)),this.mp4._loadSuccessCallBack=d,this.mp4._mux(Q.subarray(F[0]-s),F[0],a,!0),e.abrupt("return");case 26:return c=(null==Q?void 0:Q.byteLength)>0&&s<=F[0]&&s+Q.byteLength<F[1]?s+Q.byteLength:F[0],u=[c,l[a].range[1]],this.appendLastUnMuxData(a,t),e.next=31,this.mp4.loadAllFragmentData(a,d,o,!1,u);case 31:e.next=37;break;case 33:e.prev=33,e.t0=e.catch(16),this.log(_t.ERROR,"[Preloader] ".concat(t.cacheKey," mp4.load error"),a),this._endLoadFragments(!1);case 37:case"end":return e.stop()}}),e,this,[[16,33]])}))),function(e,t){return r.apply(this,arguments)})},{key:"checkCacheIsHasAllData",value:function(e,t){var n=t.repeatData,i=t.repeatDataStartPos;return(null==n?void 0:n.byteLength)>0&&(null==e?void 0:e[0])>=i&&(null==e?void 0:e[1])<=i+(null==n?void 0:n.byteLength)}},{key:"appendLastUnMuxData",value:function(e,t){var n;(null===(n=t.repeatData)||void 0===n?void 0:n.byteLength)>0&&(this.log(_t.LOG,"[Preloader] ".concat(t.cacheKey," appendLastUnMuxData, ").concat(e,", \n appendLastUnMuxData start: ").concat(t.repeatDataStartPos," \n end: ").concat(t.repeatDataStartPos+t.repeatData.byteLength)),this.mp4.setLastMuxRemainBufferInfo(t.repeatData,t.repeatDataStartPos))}},{key:"startLoadByFragments",value:(i=k(M().mark((function e(t,n){var i,r,a,l,U,F,o,d=this;return M().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r=n.vid,this.log(_t.LOG,"[Preloader] ".concat(r," startLoadByFragments"),n),a=this.findLoadAdaptTimeRangeIdx(n),(l=null===(i=this.mp4)||void 0===i?void 0:i.adaptTimeRange)&&null!=l&&l.length){e.next=8;break}return this.log(_t.ERROR,"[Preloader] ".concat(r," adaptTimeRange is null")),this._endLoadFragments(!1),e.abrupt("return");case 8:if(this.updateAdaptTimeRangeState(t,l),(U=l.findIndex((function(e){return!e.downloaded})))>=0&&(a=Math.min(U,a)),this.log(_t.LOG,"[Preloader] loading ".concat(a),l?l[a].downloaded:"",l),!l||!l[a].downloaded){e.next=15;break}return this._endLoadFragments(),e.abrupt("return");case 15:if(F=function(e){d.log(_t.ERROR,"[Preloader] ".concat(r," failedCallback error"),null==e?void 0:e.message),d._endLoadFragments(!1)},o=function(){var e=k(M().mark((function e(i){var r,a,U,Q,s,c,u,B,R,h,V,p,m,Z,S,J;return M().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(null!=i&&i.mp4&&(null==i||null===(r=i.mp4)||void 0===r||!r.hasDestroyed)){e.next=2;break}return e.abrupt("return");case 2:if(Q=i.mp4,s=i.buffer,c=i.context,u=i.state,B=i.initSeg,R=c.fragIndex,h=c.range,V=c.timeRange,p=Q.repeatInfo,m=Q.adaptTimeRange,Z=null===(a=m[R])||void 0===a?void 0:a.range,!t.initSeg&&B&&(t.initSeg=B,t.adaptTimeRange=m),S=Q.lastDemuxSampleIdxRange,t.repeatData=(null===(U=p.data)||void 0===U?void 0:U.slice(0,p.curDataPos))||[],J=d.updatePreCacheData(t,s,h,u,R,V,Z,S,-1,m[R].duration),d.log(_t.LOG,"[Preloader] ".concat(t.cacheKey," successCallback"),R,u,J),t.from=3,!J){e.next=25;break}return e.next=16,d.setPreLoadData(n,t);case 16:if(!(l&&R>=l.length-1||d.stepwise)){e.next=22;break}return d.log(_t.LOG,"[Preloader] ".concat(t.cacheKey," mp4.load end"),R),d._endLoadFragments(!0),e.abrupt("return");case 22:return d.log(_t.LOG,"[Preloader] ".concat(t.cacheKey," mp4.load start"),R+1),e.next=25,Q.loadAllFragmentData(R+1,o,F);case 25:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),!this.mp4){e.next=20;break}return e.next=20,this.mp4.loadAllFragmentData(a,o,F);case 20:case"end":return e.stop()}}),e,this)}))),function(e,t){return i.apply(this,arguments)})},{key:"_endLoadFragments",value:function(e){var t,n,i,r;(this.log(_t.LOG,"[Preloader] _endLoadFragments ".concat(this.playerId)),null!==(t=this._pendingTask)&&void 0!==t&&t.resolve)&&(null===(r=this._pendingTask)||void 0===r||r.resolve(),this._pendingTask.resolve=void 0);var a=!(null!==(n=this.options)&&void 0!==n&&n.openStepwiseType)||this.options.openStepwiseType.toUpperCase()===ne.MP4;null!==(i=this._pendingTask)&&void 0!==i&&i.data&&(!this.stepwise||!1!==e&&a||this._pendingTask.data.payload&&(this._pendingTask.data.payload.stepIdx=1/0),this._pendingTask.data=void 0),this.mp4&&(this.mp4.destroy(),this.mp4.cancelLoading(),this.mp4=void 0),this.mp4Loader&&(this.mp4Loader.cancel(),this.mp4Loader.destroy(),this.mp4Loader=void 0)}},{key:"hasItemSameVid",value:function(e){if(!e)return null;for(var t=e.split("#"),n=this.allCachedKeys,i=0;i<n.length;i++){var r=n[i];if(r===e)return r;var a=r.split("#");if(a.length>=4&&t.length>=4&&a[0]===t[0]){if(0===a[2].indexOf("pretime")&&0===t[2].indexOf("pretime"))return r;var l=[parseInt(a[2]),parseInt(a[3])],U=[parseInt(t[2]),parseInt(t[3])];if(U[0]>=l[0]&&U[1]>U[0]&&U[1]<=l[1])return r}}return null}},{key:"getItemSameVid",value:(n=k(M().mark((function e(n){var i,r,a;return M().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(i=t.generateUniqueKey(n),r=i&&this.hasItemSameVid(i),this.log(_t.DEBUG,"getItemSameVid: key:".concat(i," checkResult:").concat(r)),r){e.next=5;break}return e.abrupt("return",{});case 5:return e.next=7,this.preloadManager.getItem(n);case 7:return a=e.sent,e.abrupt("return",{value:a,key:r});case 9:case"end":return e.stop()}}),e,this)}))),function(e){return n.apply(this,arguments)})},{key:"setItem",value:function(e,t){return this.preloadManager.setItem(e,t,!1)}},{key:"clearPreloaderList",value:function(){K(t,"clearPreloaderList",this,3)([])}},{key:"setUserSelectDefinition",value:function(e){this.preloadManager&&this.preloadManager.setUserSelectDefinition(e)}},{key:"getUserSelectDefinition",value:function(){return this.preloadManager.getUserSelectDefinition()}},{key:"cancel",value:function(){this.log(_t.LOG,"cancelLoading"),this._endLoadFragments()}},{key:"destroy",value:function(){this.cancel()}},{key:"on",value:function(e,n){for(var i=arguments.length,r=new Array(i>2?i-2:0),a=2;a<i;a++)r[a-2]=arguments[a];K(t,"on",this,3)([e,n].concat(r))}},{key:"off",value:function(e,n){for(var i=arguments.length,r=new Array(i>2?i-2:0),a=2;a<i;a++)r[a-2]=arguments[a];K(t,"off",this,3)([e,n].concat(r))}}],[{key:"vtype",get:function(){return ne.MP4}},{key:"PRELOAD_TYPES",get:function(){return cF}},{key:"getDefaultConfig",value:function(){return{supportHevc:!1,preloadTime:5,preloadSize:0,segmentMinDuration:5,vtype:"MP4",preloadCacheType:1,preloadMaxCacheCount:5,globalKey:null,autoPreload:!1,reqOptions:null,getRequestOptionsCallback:null,minBufferLength:5,timeout:3e3,autoCheck:{enable:!0,interval:1e3},logCacheConfig:{logCacheLevel:2,logMaxSize:204800},pcdnConfig:{openPreloadPCDN:!1,enterMinBuffer:10,outMaxBuffer:5,pcdn_duration:2,pcdn_open:!0,openPCDN:!0,minDuration:25,trackerUrl:""},switchPCDNMaxCnt:2,retryCount:1,retryDelay:1e3,loaderType:"fetch"}}},{key:"getInfoByUniqueKey",value:function(e){var t=e.split("#"),n=["vid","mediaType","codecType","vtype","definition"],i={};return t.forEach((function(e,t){i[n[t]]=e})),i}},{key:"generateUniqueKey",value:function(e){var t=e.vid,n=e.mediaType,i=e.definition,r=e.codecType,a=e.vtype,l=e.bitrate;return n=n||"video",i=i||"-1",r=r||re.H264,a=a||ne.MP4,l=l||0,t?"".concat(t,"#").concat(n,"#").concat(r,"#").concat(a,"#").concat(i,"#").concat(l):null}}]);var n,i,r,a,l,U,F,o,d,Q}(KF);return sF.Mp4Preloader=zF,sF}));